@fluentui/react-charts 9.3.7 → 9.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -2
- package/dist/index.d.ts +55 -7
- package/lib/components/AreaChart/AreaChart.js +1 -28
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +6 -1
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +50 -32
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -3
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +261 -187
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +6 -3
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +6 -3
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +1 -1
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +6 -3
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +17 -17
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -4
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/Legends/Legends.js +3 -4
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +66 -64
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +1 -1
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +18 -26
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +13 -78
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +21 -32
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/Common.styles.js +0 -1
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +0 -1
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/image-export-utils.js +4 -4
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +220 -78
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +0 -26
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +0 -2
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +6 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +49 -31
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +3 -4
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +3 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +261 -186
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +5 -2
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +5 -2
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +5 -2
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +15 -15
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -4
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js +3 -4
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +65 -63
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +0 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +0 -2
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +17 -25
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +0 -2
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +12 -77
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +20 -31
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +0 -1
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +0 -1
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +3 -3
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +232 -81
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +9 -9
- package/lib/components/DeclarativeChart/imageExporter.js +0 -223
- package/lib/components/DeclarativeChart/imageExporter.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +0 -233
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/VerticalStackedBarChart/VerticalStackedBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { select as d3Select } from 'd3-selection';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n ScaleBand,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n DataPoint,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n findVSBCNumericMinMaxOfY,\n YAxisType,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfDateForAreaLineScatterVerticalBarCharts,\n domainRangeOfVSBCNumeric,\n domainRangeOfXStringAxis,\n createStringYAxis,\n calcTotalWidth,\n calcBandwidth,\n calcRequiredWidth,\n sortAxisCategories,\n} from '../../utilities/index';\nimport { formatDateToLocaleString, isInvalidValue } from '@fluentui/chart-utilities';\nimport { useImageExport } from '../../utilities/hooks';\n\ntype NumericScale = D3ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = React.forwardRef<\n HTMLDivElement,\n VerticalStackedBarChartProps\n>((_props, forwardedRef) => {\n const props: VerticalStackedBarChartProps = {\n xAxisCategoryOrder: 'default',\n yAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _tooltipId: string = useId('VSBCTooltipId_');\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSXElement[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _yMin: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n const Y_ORIGIN: number = 0;\n let _yAxisType: YAxisType;\n let _yAxisLabels: string[] = [];\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSXElement {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = actions.concat(legendsOfLine);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverFocus(\n lineData: LinePoint,\n event: React.MouseEvent<SVGElement> | React.FocusEvent<SVGCircleElement, Element>,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n const boundingRect = event.target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_getHighlightedLegend().length === 1) {\n if (_noLegendHighlighted() || _isLegendHighlighted(lineData.legend)) {\n _updatePosition(clientX, clientY);\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n } else {\n _onStackHoverFocus(lineData.xItem, event as React.MouseEvent<SVGElement>);\n }\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(\n stack.xAxisPoint instanceof Date\n ? formatDateToLocaleString(stack.xAxisPoint, props.culture, props.useUTC as boolean)\n : stack.xAxisPoint,\n );\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n const firstXValue = _points[0]?.xAxisPoint;\n _xAxisType = isInvalidValue(firstXValue) ? XAxisTypes.StringAxis : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n props.xAxisPadding,\n _xAxisType === XAxisTypes.StringAxis ? 2 / 3 : 1 / 2,\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n _initYAxisParams();\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n if (_yAxisType === YAxisType.StringAxis) {\n return {\n x: singlePointData.xAxisPoint,\n y: 0,\n };\n }\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + (point.data as number);\n });\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = _getOrderedXAxisLabels();\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericScale | StringScale,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(\n xBarScale,\n _yAxisType === YAxisType.StringAxis ? yScale : yBarScale,\n containerHeight,\n xElement!,\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 || Y_ORIGIN);\n _yMin = Math.min(domainValue[0], props.yMinValue || Y_ORIGIN);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _isLegendHighlighted(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(\n singleChartData: VerticalStackedChartProps,\n point?: VSChartDataPoint | LineDataInVerticalStackedBarChart,\n isLinePoint?: boolean,\n ): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDateToLocaleString(singleChartData.xAxisPoint, props.culture, props.useUTC as boolean)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return _noLegendHighlighted() || _isLegendHighlighted(legend) ? `${legend}, ${yValue}.` : '';\n })\n .filter(str => str !== '')\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return _noLegendHighlighted() || _isLegendHighlighted(legend) ? `${legend}, ${yValue}.` : '';\n })\n .filter(str => str !== '')\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (!isLinePoint && (point as VSChartDataPoint).xAxisCalloutData) ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDateToLocaleString(singleChartData.xAxisPoint, props.culture, props.useUTC as boolean)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (isLinePoint ? point.data || (point as LineDataInVerticalStackedBarChart).y : point.data);\n return (\n (!isLinePoint && (point as VSChartDataPoint).callOutAccessibilityData?.ariaLabel) ||\n `${xValue}. ${legend}, ${yValue}.`\n );\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getDomainNRangeValues(\n points: DataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfVSBCNumeric(points, margins, width, isRTL, barWidth!);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineScatterVerticalBarCharts(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScalePrimary: NumericScale | StringScale,\n containerHeight: number,\n containerWidth: number,\n yScaleSecondary?: NumericScale,\n ): JSXElement {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && yScaleSecondary;\n const y1 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i - 1].y as number)\n : //eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(lineObject[item][i - 1].y as any);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i].y as number)\n : //eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(lineObject[item][i].y as any);\n const yScaleBandwidthTranslate =\n !useSecondaryYScale && _yAxisType === YAxisType.StringAxis\n ? (yScalePrimary as StringScale).bandwidth() / 2\n : 0;\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n onMouseOver={event => _lineHover(lineObject[item][i - 1], event)}\n onMouseLeave={_handleMouseOut}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n const noBarsAndLinesActive =\n circlePoint.xItem.chartData.filter(\n dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend),\n ).length === 0;\n const yScaleBandwidthTranslate =\n !circlePoint.useSecondaryYScale && _yAxisType === YAxisType.StringAxis\n ? (yScalePrimary as StringScale).bandwidth() / 2\n : 0;\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && yScaleSecondary\n ? yScaleSecondary(circlePoint.y as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(circlePoint.y as any)\n }\n onMouseOver={event => _lineHover(circlePoint, event)}\n onMouseLeave={_handleMouseOut}\n r={_getCircleOpacityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n // Elements with visibility: hidden cannot receive focus, so use opacity: 0 instead to hide them.\n // For more information, see https://fuzzbomb.github.io/accessibility-demos/visually-hidden-focus-test.html\n opacity={_getCircleOpacityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).opacity}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n ref={e => {\n circleRef.refElement = e;\n }}\n {...(noBarsAndLinesActive\n ? {\n tabIndex: !props.hideTooltip ? 0 : undefined,\n onFocus: event => _lineFocus(event, circlePoint, circleRef),\n onBlur: _handleMouseOut,\n role: 'img',\n 'aria-label': _getAriaLabel(circlePoint.xItem, circlePoint as VSChartDataPoint),\n }\n : {})}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleOpacityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { opacity: number; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { opacity: 1, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { opacity: 1, radius: 0.3 };\n } else {\n return { opacity: 0, radius: 0 };\n }\n } else {\n return {\n opacity: activeXAxisDataPoint === xAxisPoint ? 1 : 0,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSXElement | null {\n return props ? (\n <ChartPopover\n culture={props.culture}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint:\n xAxisPoint instanceof Date\n ? formatDateToLocaleString(xAxisPoint, props.culture, props.useUTC as boolean)\n : xAxisPoint.toString(),\n };\n const xCalloutValue =\n point.xAxisCalloutData ||\n (xAxisPoint instanceof Date\n ? formatDateToLocaleString(xAxisPoint, props.culture, props.useUTC as boolean)\n : xAxisPoint.toString());\n\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data as number);\n setColor(color);\n setXCalloutValue(xCalloutValue);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData, mouseEvent);\n }\n\n function _lineFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineData: LinePoint,\n ref: { refElement: SVGCircleElement | null },\n ) {\n if (ref.refElement) {\n _lineHoverFocus(lineData, event);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n /**/\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale | StringScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly absStackTotal: number;\n } {\n const { barGapMax = 0 } = props;\n let totalData = 0;\n let totalHeight: number;\n let sumOfPercent = 0;\n let scalingRatio: number;\n if (_yAxisType === YAxisType.StringAxis) {\n totalHeight =\n defaultTotalHeight ?? bars.reduce((total, bar) => total + (yBarScale as StringScale)(bar.data as string)!, 0);\n } else {\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n totalData = bars.reduce((iter, value) => iter + Math.abs(value.data as number), 0);\n totalHeight =\n defaultTotalHeight ?? Math.abs((yBarScale as NumericScale)(totalData) - (yBarScale as NumericScale)(Y_ORIGIN));\n bars.forEach(point => {\n let value = (Math.abs(point.data as number) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n }\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale =\n _yAxisType === YAxisType.StringAxis ? 0 : (totalHeight - gapHeight * gaps) / (totalData * scalingRatio!);\n return {\n gapHeight,\n heightValueScale,\n absStackTotal: totalData,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yDomain = [Math.min(Y_ORIGIN, _yMin), Math.max(Y_ORIGIN, _yMax)];\n const yBarScale = d3ScaleLinear()\n .domain(yDomain)\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n if (!isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding)) {\n xBarScale.nice();\n }\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\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 = calcRequiredWidth(_barWidth, _xAxisLabels.length, _xAxisInnerPadding);\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 = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = calcRequiredWidth(barWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!props.hideTickOverlap) {\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 margin2 = (totalWidth - reqWidth) / 2;\n }\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calculateAppropriateBarWidth(data, totalWidth, _xAxisInnerPadding),\n );\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale | StringScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSXElement[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(\n point =>\n point.data !== 0 &&\n point.data !== '' &&\n !(\n _yAxisType === YAxisType.StringAxis &&\n typeof (yBarScale as StringScale)(point.data as string) === 'undefined'\n ),\n );\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, absStackTotal } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const yBaseline =\n containerHeight -\n _margins.bottom! -\n (_yAxisType === YAxisType.StringAxis ? 0 : (yBarScale as NumericScale)(Y_ORIGIN));\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = 0;\n let heightOfLastBar = 0;\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack &&\n shouldHighlight && {\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,\n };\n\n let barHeight: number;\n const gapOffset = index ? gapHeight : 0;\n if (_yAxisType === YAxisType.StringAxis) {\n barHeight = Math.max(\n containerHeight -\n _margins.bottom! -\n ((yBarScale as StringScale)(point.data as string)! + (yBarScale as StringScale).bandwidth() / 2) -\n gapOffset,\n barMinimumHeight,\n 1,\n );\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n barHeight = Math.abs(heightValueScale * (point.data as number));\n // FIXME: The current scaling logic may produce different min and gap heights for each bar stack.\n const minHeight = Math.max((heightValueScale * absStackTotal) / 100.0, barMinimumHeight);\n if (barHeight < minHeight) {\n barHeight = minHeight;\n }\n if ((point.data as number) >= Y_ORIGIN) {\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + gapOffset;\n yNegativeStart = yPoint + barHeight;\n }\n\n barTotalValue += point.data as number;\n heightOfLastBar = index === barsToDisplay.length - 1 ? barHeight : 0;\n }\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => {\n ref.refElement = e;\n }}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => {\n ref.refElement = e;\n }}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const someBarsActive =\n singleChartData.chartData.filter(dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend))\n .length > 0;\n // FIXME: Making the entire stack focusable when stack callout is enabled adds unnecessary complexity\n // and can reduce usability in certain scenarios. Instead, each individual element within the stack\n // should be focusable on its own, with its own aria-label. This behavior is also seen in Highcharts.\n const stackFocusProps = shouldFocusWholeStack &&\n someBarsActive && {\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n tabIndex: !props.hideTooltip ? 0 : undefined,\n };\n let showLabel = false;\n let barLabel = 0;\n if (!props.hideLabels && _yAxisType !== YAxisType.StringAxis) {\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n barLabel += point.data as number;\n }\n });\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g\n id={`${indexNumber}-singleBar`}\n ref={e => {\n groupRef.refElement = e;\n }}\n {...stackFocusProps}\n >\n {singleBar}\n </g>\n {/*\n Note: No need to check hideLabels here, as showLabel is only set to true\n when hideLabels is false earlier in the code.\n */}\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n //if total bar value >=0, show label above top bar, otherwise below bottom bar\n y={barLabel >= Y_ORIGIN ? yPoint - 6 : yPoint + heightOfLastBar + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barLabel)\n : formatScientificLimitWidth(barLabel)}\n </text>\n )}\n </g>\n );\n });\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSXElement => !!bar);\n }\n\n function _getMinMaxOfYAxis(\n dataset: DataPoint[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n if (!useSecondaryYScale) {\n return findVSBCNumericMinMaxOfY(dataset);\n }\n\n const values: number[] = [];\n props.data.forEach(xPoint => {\n xPoint.lineData?.forEach(point => {\n // useSecondaryYScale is applicable only for lines in VSBC\n if (point.useSecondaryYScale) {\n values.push(point.y as number);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _initYAxisParams() {\n if (_points[0].chartData.length > 0) {\n _yAxisType = getTypeOfAxis(_points[0].chartData[0].data, false) as YAxisType;\n } else {\n Object.keys(_lineObject).forEach(lineLegend => {\n if (!_lineObject[lineLegend][0].useSecondaryYScale) {\n _yAxisType = getTypeOfAxis(_lineObject[lineLegend][0].y, false) as YAxisType;\n }\n });\n }\n\n _yAxisLabels = _getOrderedYAxisLabels();\n }\n\n function _getYDomainMargins(containerHeight: number): Margins {\n /**\n * Specifies the extra top margin to apply above the highest y-axis tick label.\n * Useful when stacked bars extend beyond the combined height of all y-axis labels (or categories).\n */\n let yAxisTickMarginTop = 0;\n\n /** Total height available to render the bars */\n const totalHeight = containerHeight - _margins.bottom! - _margins.top!;\n\n if (_yAxisType === YAxisType.StringAxis) {\n /** Maximum height of the stacked bars, expressed in multiples of the height of a y-axis label (or category) */\n let maxBarHeightInLabels = 0;\n _points.forEach(xPoint => {\n /** Height of the stacked bar, expressed in multiples of the height of a y-axis label (or category) */\n let barHeightInLabels = 0;\n xPoint.chartData.forEach(bar => {\n barHeightInLabels += _yAxisLabels.indexOf(`${bar.data}`) + 1;\n });\n maxBarHeightInLabels = Math.max(maxBarHeightInLabels, barHeightInLabels);\n });\n /** Height of a y-axis label (or category) */\n const yAxisLabelHeight = maxBarHeightInLabels === 0 ? 0 : totalHeight / maxBarHeightInLabels;\n yAxisTickMarginTop += yAxisLabelHeight * (maxBarHeightInLabels - _yAxisLabels.length);\n }\n\n return {\n ..._margins,\n top: _margins.top! + yAxisTickMarginTop,\n };\n }\n\n function _getOrderedXAxisLabels() {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(), props.xAxisCategoryOrder);\n }\n\n function _getOrderedYAxisLabels() {\n if (_yAxisType !== YAxisType.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(true), props.yAxisCategoryOrder);\n }\n\n function _mapCategoryToValues(isYAxis = false) {\n const categoryToValues: Record<string, number[]> = {};\n _points.forEach(point => {\n point.chartData.forEach(bar => {\n const category = (isYAxis ? bar.data : point.xAxisPoint) as string;\n const value = isYAxis ? point.xAxisPoint : bar.data;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n if (typeof value === 'number') {\n categoryToValues[category].push(value);\n }\n });\n point.lineData?.forEach(linePoint => {\n if (isYAxis && linePoint.useSecondaryYScale) {\n return;\n }\n const category = (isYAxis ? linePoint.y : point.xAxisPoint) as string;\n const value = isYAxis ? point.xAxisPoint : linePoint.y;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n if (typeof value === 'number') {\n categoryToValues[category].push(value);\n }\n });\n });\n return categoryToValues;\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSXElement = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n createYAxis={createNumericYAxis}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n showRoundOffXTickValues={!isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding)}\n yAxisType={_yAxisType!}\n stringDatasetForYAxisDomain={['', ..._yAxisLabels]}\n getYDomainMargins={_getYDomainMargins}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScalePrimary!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n});\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["React","max","d3Max","min","d3Min","select","d3Select","useVerticalStackedBarChartStyles","scaleLinear","d3ScaleLinear","scaleBand","d3ScaleBand","scaleUtc","d3ScaleUtc","scaleTime","d3ScaleTime","useId","tokens","CartesianChart","ChartPopover","Legends","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","tooltipOfAxislabels","formatScientificLimitWidth","getBarWidth","getScalePadding","isScalePaddingDefined","calculateAppropriateBarWidth","areArraysEqual","calculateLongestLabelWidth","useRtl","DataVizPalette","getColorFromToken","findVSBCNumericMinMaxOfY","YAxisType","createNumericYAxis","domainRangeOfDateForAreaLineScatterVerticalBarCharts","domainRangeOfVSBCNumeric","domainRangeOfXStringAxis","createStringYAxis","calcTotalWidth","calcBandwidth","calcRequiredWidth","sortAxisCategories","formatDateToLocaleString","isInvalidValue","useImageExport","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","VerticalStackedBarChart","forwardRef","_props","forwardedRef","props","xAxisCategoryOrder","yAxisCategoryOrder","maxBarWidth","_isRtl","_createLegendsForLine","data","_getLineLegends","_tooltipId","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","xAxisPoint","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_yMin","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","Y_ORIGIN","_yAxisType","_yAxisLabels","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useRef","useEffect","current","prevProps","height","width","_adjustProps","_createDataSetLayer","_getLegendData","lineLegends","defaultPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendRef","_getHighlightedLegend","_lineHoverFocus","lineData","event","clientX","clientY","boundingRect","target","getBoundingClientRect","left","top","_noLegendHighlighted","_isLegendHighlighted","_updatePosition","xItem","yAxisCalloutData","_onStackHoverFocus","stack","mouseEvent","dataPoint","isLinesPresent","item","shouldDrawBorderBottom","sort","a","b","slice","reverse","Date","culture","useUTC","stackCallOutAccessibilityData","_onClick","onBarClick","href","window","location","barWidth","defaultColors","firstXValue","_getFormattedLineData","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","_initYAxisParams","dataset","map","singlePointData","total","_getOrderedXAxisLabels","legendTitle","_selectedLegends","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","yMinValue","includes","_getAriaLabel","isLinePoint","xValue","xAxisCalloutData","pointValues","pt","yValue","str","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","yScalePrimary","yScaleSecondary","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","yScaleBandwidthTranslate","key","opacity","strokeWidth","fill","strokeLinecap","stroke","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","onMouseLeave","_handleMouseOut","circlePoint","subIndex","circleRef","refElement","noBarsAndLinesActive","circle","cx","cy","r","_getCircleOpacityAndRadius","radius","ref","e","tabIndex","hideTooltip","onFocus","_lineFocus","onBlur","role","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onStackHover","_onRectFocus","_onStackFocus","groupRef","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","totalHeight","sumOfPercent","scalingRatio","reduce","bar","iter","value","abs","gaps","gapHeight","heightValueScale","absStackTotal","yDomain","domain","range","bottom","xMax","xMin","right","nice","sDate","lDate","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","reqWidth","mode","margin1","margin2","POSITIVE_INFINITY","hideTickOverlap","step","_getChartTitle","chartTitle","numLines","classes","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","xPoint","barTotalValue","barsToDisplay","yBaseline","yPositiveStart","yNegativeStart","yPoint","heightOfLastBar","singleBar","startColor","rectFocusProps","onMouseMove","onClick","barHeight","gapOffset","minHeight","Fragment","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","someBarsActive","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","style","direction","unicodeBidi","yAxisTickFormat","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","_getMinMaxOfYAxis","yAxisType","values","startValue","endValue","lineLegend","_getOrderedYAxisLabels","_getYDomainMargins","yAxisTickMarginTop","maxBarHeightInLabels","barHeightInLabels","indexOf","yAxisLabelHeight","_mapCategoryToValues","isYAxis","categoryToValues","category","linePoint","legendBars","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickFormat","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","getDomainNRangeValues","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","showRoundOffXTickValues","stringDatasetForYAxisDomain","getYDomainMargins","children","div","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/VerticalStackedBarChart/VerticalStackedBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n ScaleBand,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n DataPoint,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n findVSBCNumericMinMaxOfY,\n YAxisType,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfDateForAreaLineScatterVerticalBarCharts,\n domainRangeOfVSBCNumeric,\n domainRangeOfXStringAxis,\n createStringYAxis,\n calcTotalWidth,\n calcBandwidth,\n calcRequiredWidth,\n sortAxisCategories,\n} from '../../utilities/index';\nimport { formatDateToLocaleString, isInvalidValue } from '@fluentui/chart-utilities';\nimport { useImageExport } from '../../utilities/hooks';\n\ntype NumericScale = D3ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = React.forwardRef<\n HTMLDivElement,\n VerticalStackedBarChartProps\n>((_props, forwardedRef) => {\n const props: VerticalStackedBarChartProps = {\n xAxisCategoryOrder: 'default',\n yAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSXElement[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _yMin: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n const Y_ORIGIN: number = 0;\n let _yAxisType: YAxisType;\n let _yAxisLabels: string[] = [];\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSXElement {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = actions.concat(legendsOfLine);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverFocus(\n lineData: LinePoint,\n event: React.MouseEvent<SVGElement> | React.FocusEvent<SVGElement, Element>,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n const boundingRect = event.target.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_getHighlightedLegend().length === 1) {\n if (_noLegendHighlighted() || _isLegendHighlighted(lineData.legend)) {\n _updatePosition(clientX, clientY);\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n } else {\n _onStackHoverFocus(lineData.xItem, event);\n }\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n event: React.MouseEvent<SVGElement> | React.FocusEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in event) {\n clientX = event.clientX;\n clientY = event.clientY;\n } else {\n // Handle React FocusEvent or SVGGElement\n const element = 'target' in event ? (event.target as SVGElement) : event;\n const boundingRect = element.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(\n stack.xAxisPoint instanceof Date\n ? formatDateToLocaleString(stack.xAxisPoint, props.culture, props.useUTC as boolean)\n : stack.xAxisPoint,\n );\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n const firstXValue = _points[0]?.xAxisPoint;\n _xAxisType = isInvalidValue(firstXValue) ? XAxisTypes.StringAxis : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n props.xAxisPadding,\n _xAxisType === XAxisTypes.StringAxis ? 2 / 3 : 1 / 2,\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n _initYAxisParams();\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n if (_yAxisType === YAxisType.StringAxis) {\n return {\n x: singlePointData.xAxisPoint,\n y: 0,\n };\n }\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + (point.data as number);\n });\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = _getOrderedXAxisLabels();\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericScale | StringScale,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(\n xBarScale,\n _yAxisType === YAxisType.StringAxis ? yScale : yBarScale,\n containerHeight,\n xElement!,\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 || Y_ORIGIN);\n _yMin = Math.min(domainValue[0], props.yMinValue || Y_ORIGIN);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _isLegendHighlighted(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(\n singleChartData: VerticalStackedChartProps,\n point?: VSChartDataPoint | LineDataInVerticalStackedBarChart,\n isLinePoint?: boolean,\n ): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDateToLocaleString(singleChartData.xAxisPoint, props.culture, props.useUTC as boolean)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return _noLegendHighlighted() || _isLegendHighlighted(legend) ? `${legend}, ${yValue}.` : '';\n })\n .filter(str => str !== '')\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return _noLegendHighlighted() || _isLegendHighlighted(legend) ? `${legend}, ${yValue}.` : '';\n })\n .filter(str => str !== '')\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (!isLinePoint && (point as VSChartDataPoint).xAxisCalloutData) ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDateToLocaleString(singleChartData.xAxisPoint, props.culture, props.useUTC as boolean)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue =\n point.yAxisCalloutData ||\n (isLinePoint ? point.data || (point as LineDataInVerticalStackedBarChart).y : point.data);\n return (\n (!isLinePoint && (point as VSChartDataPoint).callOutAccessibilityData?.ariaLabel) ||\n `${xValue}. ${legend}, ${yValue}.`\n );\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getDomainNRangeValues(\n points: DataPoint[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfVSBCNumeric(points, margins, width, isRTL, barWidth!);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineScatterVerticalBarCharts(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScalePrimary: NumericScale | StringScale,\n containerHeight: number,\n containerWidth: number,\n yScaleSecondary?: NumericScale,\n ): JSXElement {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && yScaleSecondary;\n const y1 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i - 1].y as number)\n : //eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(lineObject[item][i - 1].y as any);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale\n ? yScaleSecondary!(lineObject[item][i].y as number)\n : //eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(lineObject[item][i].y as any);\n const yScaleBandwidthTranslate =\n !useSecondaryYScale && _yAxisType === YAxisType.StringAxis\n ? (yScalePrimary as StringScale).bandwidth() / 2\n : 0;\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n onMouseOver={event => _lineHover(lineObject[item][i - 1], event)}\n onMouseLeave={_handleMouseOut}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n const noBarsAndLinesActive =\n circlePoint.xItem.chartData.filter(\n dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend),\n ).length === 0;\n const yScaleBandwidthTranslate =\n !circlePoint.useSecondaryYScale && _yAxisType === YAxisType.StringAxis\n ? (yScalePrimary as StringScale).bandwidth() / 2\n : 0;\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && yScaleSecondary\n ? yScaleSecondary(circlePoint.y as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary(circlePoint.y as any)\n }\n onMouseOver={event => _lineHover(circlePoint, event)}\n onMouseLeave={_handleMouseOut}\n r={_getCircleOpacityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n // Elements with visibility: hidden cannot receive focus, so use opacity: 0 instead to hide them.\n // For more information, see https://fuzzbomb.github.io/accessibility-demos/visually-hidden-focus-test.html\n opacity={_getCircleOpacityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).opacity}\n transform={`translate(${xScaleBandwidthTranslate}, ${yScaleBandwidthTranslate})`}\n ref={e => {\n circleRef.refElement = e;\n }}\n {...(noBarsAndLinesActive\n ? {\n tabIndex: !props.hideTooltip ? 0 : undefined,\n onFocus: event => _lineFocus(event, circlePoint, circleRef),\n onBlur: _handleMouseOut,\n role: 'img',\n 'aria-label': _getAriaLabel(circlePoint.xItem, circlePoint as VSChartDataPoint),\n }\n : {})}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleOpacityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { opacity: number; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { opacity: 1, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { opacity: 1, radius: 0.3 };\n } else {\n return { opacity: 0, radius: 0 };\n }\n } else {\n return {\n opacity: activeXAxisDataPoint === xAxisPoint ? 1 : 0,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSXElement | null {\n return props ? (\n <ChartPopover\n culture={props.culture}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint:\n xAxisPoint instanceof Date\n ? formatDateToLocaleString(xAxisPoint, props.culture, props.useUTC as boolean)\n : xAxisPoint.toString(),\n };\n const xCalloutValue =\n point.xAxisCalloutData ||\n (xAxisPoint instanceof Date\n ? formatDateToLocaleString(xAxisPoint, props.culture, props.useUTC as boolean)\n : xAxisPoint.toString());\n\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data as number);\n setColor(color);\n setXCalloutValue(xCalloutValue);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData, mouseEvent);\n }\n\n function _lineFocus(\n event: React.FocusEvent<SVGElement, Element>,\n lineData: LinePoint,\n ref: { refElement: SVGElement | null },\n ) {\n if (ref.refElement) {\n _lineHoverFocus(lineData, event);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n /**/\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale | StringScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly absStackTotal: number;\n } {\n const { barGapMax = 0 } = props;\n let totalData = 0;\n let totalHeight: number;\n let sumOfPercent = 0;\n let scalingRatio: number;\n if (_yAxisType === YAxisType.StringAxis) {\n totalHeight =\n defaultTotalHeight ?? bars.reduce((total, bar) => total + (yBarScale as StringScale)(bar.data as string)!, 0);\n } else {\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n totalData = bars.reduce((iter, value) => iter + Math.abs(value.data as number), 0);\n totalHeight =\n defaultTotalHeight ?? Math.abs((yBarScale as NumericScale)(totalData) - (yBarScale as NumericScale)(Y_ORIGIN));\n bars.forEach(point => {\n let value = (Math.abs(point.data as number) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n }\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale =\n _yAxisType === YAxisType.StringAxis ? 0 : (totalHeight - gapHeight * gaps) / (totalData * scalingRatio!);\n return {\n gapHeight,\n heightValueScale,\n absStackTotal: totalData,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yDomain = [Math.min(Y_ORIGIN, _yMin), Math.max(Y_ORIGIN, _yMax)];\n const yBarScale = d3ScaleLinear()\n .domain(yDomain)\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n if (!isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding)) {\n xBarScale.nice();\n }\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\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 = calcRequiredWidth(_barWidth, _xAxisLabels.length, _xAxisInnerPadding);\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 = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = calcRequiredWidth(barWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!props.hideTickOverlap) {\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 margin2 = (totalWidth - reqWidth) / 2;\n }\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calculateAppropriateBarWidth(data, totalWidth, _xAxisInnerPadding),\n );\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale | StringScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSXElement[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(\n point =>\n point.data !== 0 &&\n point.data !== '' &&\n !(\n _yAxisType === YAxisType.StringAxis &&\n typeof (yBarScale as StringScale)(point.data as string) === 'undefined'\n ),\n );\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, absStackTotal } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const yBaseline =\n containerHeight -\n _margins.bottom! -\n (_yAxisType === YAxisType.StringAxis ? 0 : (yBarScale as NumericScale)(Y_ORIGIN));\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = 0;\n let heightOfLastBar = 0;\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack &&\n shouldHighlight && {\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n tabIndex: !props.hideTooltip && shouldHighlight ? 0 : undefined,\n };\n\n let barHeight: number;\n const gapOffset = index ? gapHeight : 0;\n if (_yAxisType === YAxisType.StringAxis) {\n barHeight = Math.max(\n containerHeight -\n _margins.bottom! -\n ((yBarScale as StringScale)(point.data as string)! + (yBarScale as StringScale).bandwidth() / 2) -\n gapOffset,\n barMinimumHeight,\n 1,\n );\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n barHeight = Math.abs(heightValueScale * (point.data as number));\n // FIXME: The current scaling logic may produce different min and gap heights for each bar stack.\n const minHeight = Math.max((heightValueScale * absStackTotal) / 100.0, barMinimumHeight);\n if (barHeight < minHeight) {\n barHeight = minHeight;\n }\n if ((point.data as number) >= Y_ORIGIN) {\n yPositiveStart -= barHeight + gapOffset;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + gapOffset;\n yNegativeStart = yPoint + barHeight;\n }\n\n barTotalValue += point.data as number;\n heightOfLastBar = index === barsToDisplay.length - 1 ? barHeight : 0;\n }\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => {\n ref.refElement = e;\n }}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => {\n ref.refElement = e;\n }}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const someBarsActive =\n singleChartData.chartData.filter(dataPoint => _noLegendHighlighted() || _isLegendHighlighted(dataPoint.legend))\n .length > 0;\n // FIXME: Making the entire stack focusable when stack callout is enabled adds unnecessary complexity\n // and can reduce usability in certain scenarios. Instead, each individual element within the stack\n // should be focusable on its own, with its own aria-label. This behavior is also seen in Highcharts.\n const stackFocusProps = shouldFocusWholeStack &&\n someBarsActive && {\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n tabIndex: !props.hideTooltip ? 0 : undefined,\n };\n let showLabel = false;\n let barLabel: string | number = 0;\n let selectedBarTotalValue: number = 0;\n let customBarLabel: string | undefined = undefined;\n if (!props.hideLabels && _yAxisType !== YAxisType.StringAxis) {\n // Collect all bars with barLabel that match the legend filter\n const barLabelsToDisplay = barsToDisplay.filter(\n point => point.barLabel && (_noLegendHighlighted() || _isLegendHighlighted(point.legend)),\n );\n if (barLabelsToDisplay.length > 0) {\n customBarLabel = barLabelsToDisplay[barLabelsToDisplay.length - 1].barLabel!;\n }\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = customBarLabel ?? barTotalValue;\n selectedBarTotalValue = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n selectedBarTotalValue += point.data as number;\n }\n });\n barLabel = customBarLabel ?? selectedBarTotalValue;\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g\n id={`${indexNumber}-singleBar`}\n ref={e => {\n groupRef.refElement = e;\n }}\n {...stackFocusProps}\n >\n {singleBar}\n </g>\n {/*\n Note: No need to check hideLabels here, as showLabel is only set to true\n when hideLabels is false earlier in the code.\n */}\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n //if total bar value >=0, show label above top bar, otherwise below bottom bar\n y={selectedBarTotalValue >= Y_ORIGIN ? yPoint - 6 : yPoint + heightOfLastBar + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof barLabel === 'string'\n ? barLabel\n : typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barLabel)\n : formatScientificLimitWidth(barLabel)}\n </text>\n )}\n </g>\n );\n });\n return bars.filter((bar): bar is JSXElement => !!bar);\n }\n\n function _getMinMaxOfYAxis(\n dataset: DataPoint[],\n yAxisType?: YAxisType,\n useSecondaryYScale?: boolean,\n ): { startValue: number; endValue: number } {\n if (!useSecondaryYScale) {\n return findVSBCNumericMinMaxOfY(dataset);\n }\n\n const values: number[] = [];\n props.data.forEach(xPoint => {\n xPoint.lineData?.forEach(point => {\n // useSecondaryYScale is applicable only for lines in VSBC\n if (point.useSecondaryYScale) {\n values.push(point.y as number);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _initYAxisParams() {\n if (_points[0].chartData.length > 0) {\n _yAxisType = getTypeOfAxis(_points[0].chartData[0].data, false) as YAxisType;\n } else {\n Object.keys(_lineObject).forEach(lineLegend => {\n if (!_lineObject[lineLegend][0].useSecondaryYScale) {\n _yAxisType = getTypeOfAxis(_lineObject[lineLegend][0].y, false) as YAxisType;\n }\n });\n }\n\n _yAxisLabels = _getOrderedYAxisLabels();\n }\n\n function _getYDomainMargins(containerHeight: number): Margins {\n /**\n * Specifies the extra top margin to apply above the highest y-axis tick label.\n * Useful when stacked bars extend beyond the combined height of all y-axis labels (or categories).\n */\n let yAxisTickMarginTop = 0;\n\n /** Total height available to render the bars */\n const totalHeight = containerHeight - _margins.bottom! - _margins.top!;\n\n if (_yAxisType === YAxisType.StringAxis) {\n /** Maximum height of the stacked bars, expressed in multiples of the height of a y-axis label (or category) */\n let maxBarHeightInLabels = 0;\n _points.forEach(xPoint => {\n /** Height of the stacked bar, expressed in multiples of the height of a y-axis label (or category) */\n let barHeightInLabels = 0;\n xPoint.chartData.forEach(bar => {\n barHeightInLabels += _yAxisLabels.indexOf(`${bar.data}`) + 1;\n });\n maxBarHeightInLabels = Math.max(maxBarHeightInLabels, barHeightInLabels);\n });\n /** Height of a y-axis label (or category) */\n const yAxisLabelHeight = maxBarHeightInLabels === 0 ? 0 : totalHeight / maxBarHeightInLabels;\n yAxisTickMarginTop += yAxisLabelHeight * (maxBarHeightInLabels - _yAxisLabels.length);\n }\n\n return {\n ..._margins,\n top: _margins.top! + yAxisTickMarginTop,\n };\n }\n\n function _getOrderedXAxisLabels() {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(), props.xAxisCategoryOrder);\n }\n\n function _getOrderedYAxisLabels() {\n if (_yAxisType !== YAxisType.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(true), props.yAxisCategoryOrder);\n }\n\n function _mapCategoryToValues(isYAxis = false) {\n const categoryToValues: Record<string, number[]> = {};\n _points.forEach(point => {\n point.chartData.forEach(bar => {\n const category = (isYAxis ? bar.data : point.xAxisPoint) as string;\n const value = isYAxis ? point.xAxisPoint : bar.data;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n if (typeof value === 'number') {\n categoryToValues[category].push(value);\n }\n });\n point.lineData?.forEach(linePoint => {\n if (isYAxis && linePoint.useSecondaryYScale) {\n return;\n }\n const category = (isYAxis ? linePoint.y : point.xAxisPoint) as string;\n const value = isYAxis ? point.xAxisPoint : linePoint.y;\n if (!categoryToValues[category]) {\n categoryToValues[category] = [];\n }\n if (typeof value === 'number') {\n categoryToValues[category].push(value);\n }\n });\n });\n return categoryToValues;\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSXElement = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n createYAxis={createNumericYAxis}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n showRoundOffXTickValues={!isScalePaddingDefined(props.xAxisInnerPadding, props.xAxisPadding)}\n yAxisType={_yAxisType!}\n stringDatasetForYAxisDomain={['', ..._yAxisLabels]}\n getYDomainMargins={_getYDomainMargins}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScalePrimary!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n});\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["React","max","d3Max","min","d3Min","useVerticalStackedBarChartStyles","scaleLinear","d3ScaleLinear","scaleBand","d3ScaleBand","scaleUtc","d3ScaleUtc","scaleTime","d3ScaleTime","useId","tokens","CartesianChart","ChartPopover","Legends","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getBarWidth","getScalePadding","isScalePaddingDefined","calculateAppropriateBarWidth","areArraysEqual","calculateLongestLabelWidth","useRtl","DataVizPalette","getColorFromToken","findVSBCNumericMinMaxOfY","YAxisType","createNumericYAxis","domainRangeOfDateForAreaLineScatterVerticalBarCharts","domainRangeOfVSBCNumeric","domainRangeOfXStringAxis","createStringYAxis","calcTotalWidth","calcBandwidth","calcRequiredWidth","sortAxisCategories","formatDateToLocaleString","isInvalidValue","useImageExport","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","VerticalStackedBarChart","forwardRef","_props","forwardedRef","props","xAxisCategoryOrder","yAxisCategoryOrder","maxBarWidth","_isRtl","_createLegendsForLine","data","_getLineLegends","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","xAxisPoint","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_yMin","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","Y_ORIGIN","_yAxisType","_yAxisLabels","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useRef","useEffect","current","prevProps","height","width","_adjustProps","_createDataSetLayer","_getLegendData","lineLegends","defaultPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","legendRef","_getHighlightedLegend","_lineHoverFocus","lineData","event","clientX","clientY","boundingRect","target","getBoundingClientRect","left","top","_noLegendHighlighted","_isLegendHighlighted","_updatePosition","xItem","yAxisCalloutData","_onStackHoverFocus","stack","element","dataPoint","isLinesPresent","item","shouldDrawBorderBottom","sort","a","b","slice","reverse","Date","culture","useUTC","stackCallOutAccessibilityData","_onClick","mouseEvent","onBarClick","href","window","location","barWidth","defaultColors","firstXValue","_getFormattedLineData","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","_initYAxisParams","dataset","map","singlePointData","total","_getOrderedXAxisLabels","legendTitle","_selectedLegends","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","yMinValue","includes","_getAriaLabel","isLinePoint","xValue","xAxisCalloutData","pointValues","pt","yValue","str","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","_getDomainNRangeValues","points","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","yScalePrimary","yScaleSecondary","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","yScaleBandwidthTranslate","key","opacity","strokeWidth","fill","strokeLinecap","stroke","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","onMouseLeave","_handleMouseOut","circlePoint","subIndex","circleRef","refElement","noBarsAndLinesActive","circle","cx","cy","r","_getCircleOpacityAndRadius","radius","ref","e","tabIndex","hideTooltip","onFocus","_lineFocus","onBlur","role","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onStackHover","_onRectFocus","_onStackFocus","groupRef","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","totalHeight","sumOfPercent","scalingRatio","reduce","bar","iter","value","abs","gaps","gapHeight","heightValueScale","absStackTotal","yDomain","domain","range","bottom","xMax","xMin","right","nice","sDate","lDate","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","reqWidth","mode","margin1","margin2","POSITIVE_INFINITY","hideTickOverlap","step","_getChartTitle","chartTitle","numLines","classes","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","xPoint","barTotalValue","barsToDisplay","yBaseline","yPositiveStart","yNegativeStart","yPoint","heightOfLastBar","singleBar","startColor","rectFocusProps","onMouseMove","onClick","barHeight","gapOffset","minHeight","Fragment","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","someBarsActive","stackFocusProps","showLabel","barLabel","selectedBarTotalValue","customBarLabel","hideLabels","barLabelsToDisplay","g","id","text","textAnchor","aria-label","style","direction","unicodeBidi","yAxisTickFormat","_getMinMaxOfYAxis","yAxisType","values","startValue","endValue","lineLegend","_getOrderedYAxisLabels","_getYDomainMargins","yAxisTickMarginTop","maxBarHeightInLabels","barHeightInLabels","indexOf","yAxisLabelHeight","_mapCategoryToValues","isYAxis","categoryToValues","category","linePoint","legendBars","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickFormat","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","getDomainNRangeValues","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","showRoundOffXTickValues","stringDatasetForYAxisDomain","getYDomainMargins","children","div","displayName"],"mappings":"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"}
|
|
@@ -40,7 +40,6 @@ const useStyles = /*#__PURE__*/__styles({
|
|
|
40
40
|
B0ocmuz: "f1bnz8pu",
|
|
41
41
|
qhf8xq: "f1euv43f",
|
|
42
42
|
fsow6f: "f17mccla",
|
|
43
|
-
Bhzewxz: "fr6rvge",
|
|
44
43
|
De3pzq: "fxugw4r",
|
|
45
44
|
Beyfa6y: 0,
|
|
46
45
|
Bbmb7ep: 0,
|
|
@@ -61,7 +60,7 @@ const useStyles = /*#__PURE__*/__styles({
|
|
|
61
60
|
}, {
|
|
62
61
|
d: [".f158kwzp{cursor:default;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".f1vx9l62{flex-direction:column;}", [".f1bnz8pu{padding:var(--spacingHorizontalS);}", {
|
|
63
62
|
p: -1
|
|
64
|
-
}], ".f1euv43f{position:absolute;}", ".f17mccla{text-align:center;}", ".
|
|
63
|
+
}], ".f1euv43f{position:absolute;}", ".f17mccla{text-align:center;}", ".fxugw4r{background-color:var(--colorNeutralBackground1);}", [".fq9zq91{border-radius:var(--borderRadiusSmall);}", {
|
|
65
64
|
p: -1
|
|
66
65
|
}], ".f1aehjj5{pointer-events:none;}", ".f19n0e5{color:var(--colorNeutralForeground1);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".fl43uef{font-weight:var(--fontWeightSemibold);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".fhuob2q{fill:var(--colorNeutralForeground1);}", ".fhv2zbx{forced-color-adjust:auto;}"]
|
|
67
66
|
});
|
package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__styles","mergeClasses","getBarLabelStyle","getTooltipStyle","verticalstackedbarchartClassNames","opacityChangeOnHover","tooltip","barLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","plotContainer","annotationLayer","useStyles","Bceei9c","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","
|
|
1
|
+
{"version":3,"names":["__styles","mergeClasses","getBarLabelStyle","getTooltipStyle","verticalstackedbarchartClassNames","opacityChangeOnHover","tooltip","barLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","plotContainer","annotationLayer","useStyles","Bceei9c","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","De3pzq","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","sj55zd","Bkfmm31","Bvjb7m6","d","p","useVerticalStackedBarChartStyles","props","baseStyles","href"],"sources":["useVerticalStackedBarChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { getBarLabelStyle, getTooltipStyle } from '../../utilities/index';\nexport const verticalstackedbarchartClassNames = {\n opacityChangeOnHover: 'fui-vsbc__opacityChangeOnHover',\n tooltip: 'fui-vsbc__tooltip',\n barLabel: 'fui-vsbc__barLabel',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n axisAnnotation: '',\n plotContainer: '',\n annotationLayer: ''\n};\nconst useStyles = makeStyles({\n opacityChangeOnHover: {\n cursor: 'default'\n },\n tooltip: getTooltipStyle(),\n barLabel: getBarLabelStyle()\n});\nexport const useVerticalStackedBarChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n opacityChangeOnHover: mergeClasses(verticalstackedbarchartClassNames.opacityChangeOnHover, baseStyles.opacityChangeOnHover, props.href ? 'pointer' : 'default'),\n tooltip: mergeClasses(verticalstackedbarchartClassNames.tooltip, baseStyles.tooltip),\n barLabel: mergeClasses(verticalstackedbarchartClassNames.barLabel, baseStyles.barLabel)\n };\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,uBAAuB;AACzE,OAAO,MAAMC,iCAAiC,GAAG;EAC7CC,oBAAoB,EAAE,gCAAgC;EACtDC,OAAO,EAAE,mBAAmB;EAC5BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,EAAE;EACRC,KAAK,EAAE,EAAE;EACTC,KAAK,EAAE,EAAE;EACTC,eAAe,EAAE,EAAE;EACnBC,KAAK,EAAE,EAAE;EACTC,kBAAkB,EAAE,EAAE;EACtBC,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE,EAAE;EACdC,WAAW,EAAE,EAAE;EACfC,YAAY,EAAE,EAAE;EAChBC,UAAU,EAAE,EAAE;EACdC,KAAK,EAAE,EAAE;EACTC,cAAc,EAAE,EAAE;EAClBC,aAAa,EAAE,EAAE;EACjBC,eAAe,EAAE;AACrB,CAAC;AACD,MAAMC,SAAS,gBAAGvB,QAAA;EAAAK,oBAAA;IAAAmB,OAAA;EAAA;EAAAlB,OAAA;IAAAmB,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;EAAA;EAAAtC,QAAA;IAAAkB,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAkB,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAMjB,CAAC;AACF,OAAO,MAAMC,gCAAgC,GAAIC,KAAK,IAAG;EACrD,MAAMC,UAAU,GAAG7B,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHlB,oBAAoB,EAAEJ,YAAY,CAACG,iCAAiC,CAACC,oBAAoB,EAAE+C,UAAU,CAAC/C,oBAAoB,EAAE8C,KAAK,CAACE,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;IAC/J/C,OAAO,EAAEL,YAAY,CAACG,iCAAiC,CAACE,OAAO,EAAE8C,UAAU,CAAC9C,OAAO,CAAC;IACpFC,QAAQ,EAAEN,YAAY,CAACG,iCAAiC,CAACG,QAAQ,EAAE6C,UAAU,CAAC7C,QAAQ;EAC1F,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/ChartAnnotation.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ChartAnnotationCoordinate
|
|
1
|
+
{"version":3,"sources":["../src/types/ChartAnnotation.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type ChartAnnotationCoordinate =\n | {\n /** Cartesian data coordinates mapped through the chart scales */\n type: 'data';\n /** x-axis value in the data domain */\n x: number | string | Date;\n /** y-axis value in the data domain */\n y: number | string | Date;\n /** Use the secondary y scale when available */\n yAxis?: 'primary' | 'secondary';\n }\n | {\n /** Normalised coordinates within the plot area (0-1) */\n type: 'relative';\n /** Fractional x-position inside the plot area */\n x: number;\n /** Fractional y-position inside the plot area */\n y: number;\n }\n | {\n /** Absolute pixel position relative to the chart's plot origin */\n type: 'pixel';\n /** Horizontal pixel offset from the plot origin */\n x: number;\n /** Vertical pixel offset from the plot origin */\n y: number;\n }\n | {\n /** Mixed coordinate systems per axis (e.g., data X + relative Y) */\n type: 'mixed';\n xCoordinateType: 'data' | 'relative' | 'pixel';\n yCoordinateType: 'data' | 'relative' | 'pixel';\n x: number | string | Date;\n y: number | string | Date;\n /** Use the secondary y scale when the Y coordinate maps to data */\n yAxis?: 'primary' | 'secondary';\n };\n\nexport type ChartAnnotationHorizontalAlign = 'start' | 'center' | 'end';\nexport type ChartAnnotationVerticalAlign = 'top' | 'middle' | 'bottom';\n\nexport type ChartAnnotationArrowHead = 'none' | 'start' | 'end' | 'both';\n\nexport interface ChartAnnotationConnectorProps {\n /** Distance in pixels between the annotation element and the start of the connector. */\n startPadding?: number;\n /** Distance in pixels between the anchor point and the end of the connector. */\n endPadding?: number;\n /** Stroke colour for the connector. */\n strokeColor?: string;\n /** Stroke width in pixels. */\n strokeWidth?: number;\n /** SVG stroke dash array for dashed connectors. */\n dashArray?: string;\n /** Arrow head placement. Defaults to `'end'`. */\n arrow?: ChartAnnotationArrowHead;\n}\n\nexport interface ChartAnnotationLayoutProps {\n /** Horizontal alignment of the annotation relative to the anchor point */\n align?: ChartAnnotationHorizontalAlign;\n /** Vertical alignment of the annotation relative to the anchor point */\n verticalAlign?: ChartAnnotationVerticalAlign;\n /** Horizontal offset in pixels applied after alignment */\n offsetX?: number;\n /** Vertical offset in pixels applied after alignment */\n offsetY?: number;\n /** Optional maximum width for wrapped text */\n maxWidth?: number;\n /** Whether the annotation should remain inside the plot area */\n clipToBounds?: boolean;\n /** Additional CSS classes applied to the annotation wrapper */\n className?: string;\n}\n\nexport interface ChartAnnotationStyleProps {\n /** Text colour */\n textColor?: string;\n /** Background colour for the annotation container */\n backgroundColor?: string;\n /** Border colour */\n borderColor?: string;\n /** Border width */\n borderWidth?: number;\n /** Border style (solid, dashed, etc.) */\n borderStyle?: React.CSSProperties['borderStyle'];\n /** Border radius */\n borderRadius?: number;\n /** Box shadow applied to annotation */\n boxShadow?: string;\n /** Font size override */\n fontSize?: string;\n /** Font weight override */\n fontWeight?: React.CSSProperties['fontWeight'];\n /** Padding around the text. Accepts CSS shorthand notation */\n padding?: string;\n /** Opacity for the annotation container */\n opacity?: number;\n /** Optional class name applied to the annotation element */\n className?: string;\n /** Rotation, in degrees, applied to the annotation container */\n rotation?: number;\n}\n\nexport interface ChartAnnotationAccessibilityProps {\n /** Accessible label announced by assistive technologies */\n ariaLabel?: string;\n /** Accessible description id */\n ariaDescribedBy?: string;\n /** Custom role */\n role?: string;\n}\n\nexport interface ChartAnnotation {\n /** Optional id for React reconciliation */\n id?: string;\n /** Primary textual content */\n text: string;\n /** Coordinates describing where the annotation should be anchored */\n coordinates: ChartAnnotationCoordinate;\n /** Layout customisation */\n layout?: ChartAnnotationLayoutProps;\n /** Visual styling */\n style?: ChartAnnotationStyleProps;\n /** Optional connector line that links the annotation to its anchor. */\n connector?: ChartAnnotationConnectorProps;\n /** Accessibility metadata */\n accessibility?: ChartAnnotationAccessibilityProps;\n /** Optional application specific metadata */\n data?: Record<string, unknown>;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|