@fluentui/react-charts 9.3.6 → 9.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/dist/index.d.ts +17 -12
  3. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
  4. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  5. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
  6. package/lib/components/AreaChart/AreaChart.js +3 -16
  7. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  8. package/lib/components/ChartTable/ChartTable.js +2 -10
  9. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  10. package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
  11. package/lib/components/CommonComponents/CartesianChart.js +2 -0
  12. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  13. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  14. package/lib/components/CommonComponents/ChartPopover.js +1 -2
  15. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  16. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -2
  17. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  18. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -2
  19. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  20. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  21. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
  22. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  23. package/lib/components/DeclarativeChart/DeclarativeChart.js +48 -25
  24. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  25. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +48 -22
  26. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  27. package/lib/components/DonutChart/DonutChart.js +3 -12
  28. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  29. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  30. package/lib/components/DonutChart/Pie/Pie.js +4 -2
  31. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  32. package/lib/components/FunnelChart/FunnelChart.js +2 -10
  33. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  34. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
  35. package/lib/components/GanttChart/GanttChart.js +3 -16
  36. package/lib/components/GanttChart/GanttChart.js.map +1 -1
  37. package/lib/components/GaugeChart/GaugeChart.js +2 -10
  38. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  39. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  40. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +7 -19
  41. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  42. package/lib/components/HeatMapChart/HeatMapChart.js +3 -16
  43. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  44. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +3 -21
  45. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  46. package/lib/components/Legends/Legends.types.js.map +1 -1
  47. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  48. package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  49. package/lib/components/LineChart/LineChart.js +10 -19
  50. package/lib/components/LineChart/LineChart.js.map +1 -1
  51. package/lib/components/LineChart/LineChart.types.js +1 -1
  52. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  53. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +3 -4
  54. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  55. package/lib/components/SankeyChart/SankeyChart.js +3 -9
  56. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  57. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  58. package/lib/components/ScatterChart/ScatterChart.js +23 -23
  59. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  60. package/lib/components/Sparkline/Sparkline.js +11 -7
  61. package/lib/components/Sparkline/Sparkline.js.map +1 -1
  62. package/lib/components/VerticalBarChart/VerticalBarChart.js +2 -14
  63. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  64. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +7 -17
  65. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  66. package/lib/types/DataPoint.js.map +1 -1
  67. package/lib/utilities/FocusableTooltipText.js +1 -1
  68. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  69. package/lib/utilities/getWindow.js +0 -1
  70. package/lib/utilities/getWindow.js.map +1 -1
  71. package/lib/utilities/hooks.js +34 -0
  72. package/lib/utilities/hooks.js.map +1 -0
  73. package/lib/utilities/image-export-utils.js +115 -75
  74. package/lib/utilities/image-export-utils.js.map +1 -1
  75. package/lib/utilities/utilities.js +23 -24
  76. package/lib/utilities/utilities.js.map +1 -1
  77. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
  78. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  79. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
  80. package/lib-commonjs/components/AreaChart/AreaChart.js +2 -15
  81. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  82. package/lib-commonjs/components/ChartTable/ChartTable.js +3 -10
  83. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  84. package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
  85. package/lib-commonjs/components/CommonComponents/CartesianChart.js +2 -0
  86. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  87. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  88. package/lib-commonjs/components/CommonComponents/ChartPopover.js +1 -2
  89. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  90. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +4 -2
  91. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  92. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -2
  93. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  94. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  95. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
  96. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  97. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +48 -25
  98. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  99. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +48 -22
  100. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  101. package/lib-commonjs/components/DonutChart/DonutChart.js +2 -11
  102. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  103. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  104. package/lib-commonjs/components/DonutChart/Pie/Pie.js +4 -2
  105. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  106. package/lib-commonjs/components/FunnelChart/FunnelChart.js +2 -10
  107. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  108. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
  109. package/lib-commonjs/components/GanttChart/GanttChart.js +2 -15
  110. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
  111. package/lib-commonjs/components/GaugeChart/GaugeChart.js +2 -10
  112. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  113. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  114. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +7 -19
  115. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  116. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -15
  117. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  118. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -19
  119. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  120. package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
  121. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  122. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  123. package/lib-commonjs/components/LineChart/LineChart.js +10 -19
  124. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  125. package/lib-commonjs/components/LineChart/LineChart.types.js +1 -1
  126. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  127. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
  128. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  129. package/lib-commonjs/components/SankeyChart/SankeyChart.js +3 -9
  130. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  131. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  132. package/lib-commonjs/components/ScatterChart/ScatterChart.js +21 -21
  133. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  134. package/lib-commonjs/components/Sparkline/Sparkline.js +11 -7
  135. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
  136. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +2 -14
  137. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  138. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +6 -16
  139. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  140. package/lib-commonjs/types/DataPoint.js.map +1 -1
  141. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  142. package/lib-commonjs/utilities/getWindow.js +0 -1
  143. package/lib-commonjs/utilities/getWindow.js.map +1 -1
  144. package/lib-commonjs/utilities/hooks.js +45 -0
  145. package/lib-commonjs/utilities/hooks.js.map +1 -0
  146. package/lib-commonjs/utilities/image-export-utils.js +116 -76
  147. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  148. package/lib-commonjs/utilities/utilities.js +21 -20
  149. package/lib-commonjs/utilities/utilities.js.map +1 -1
  150. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/GroupedVerticalBarChart/GroupedVerticalBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { select as d3Select, pointer as d3Pointer } from 'd3-selection';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleBand, ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId, JSXElement } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n ChartPopoverProps,\n Chart,\n ImageExportOptions,\n LegendContainer,\n LineSeries,\n getColorFromToken,\n BarSeries,\n ChildProps,\n} from '../../index';\nimport { toImage } from '../../utilities/image-export-utils';\nimport { tokens } from '@fluentui/react-theme';\n\ntype NumericScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\ntype GVBCLineSeries = LineSeries<string, number>;\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((_props, forwardedRef) => {\n const props: GroupedVerticalBarChartProps = {\n xAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _tooltipId: string = useId('GVBCTooltipId_');\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSXElement[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n let _barLegends: string[] = [];\n let _lineLegends: string[] = [];\n let _legendColorMap: Record<string, [string, string]> = {};\n const cartesianChartRef = React.useRef<Chart>(null);\n const Y_ORIGIN: number = 0;\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _rectRef = React.useRef<SVGRectElement>(null);\n const _uniqDotId = useId('gvbc_dot_');\n\n const [color, setColor] = React.useState<string | undefined>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [popoverTarget, setPopoverTarget] = React.useState<SVGElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [activeLinePoint, setActiveLinePoint] = React.useState<string>('');\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _useRtl, opts);\n },\n }),\n [],\n );\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = _barLegends.length * bar_width + (_barLegends.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(_barLegends.length, X1_INNER_PADDING)),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, YValueHover[]> = {};\n const visitedX = new Set<string>();\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!linePointsByX[point.x]) {\n linePointsByX[point.x] = [];\n }\n linePointsByX[point.x].push({\n ...point,\n legend: series.legend,\n color: series.color,\n data: point.y,\n useSecondaryYScale: series.useSecondaryYScale,\n } as YValueHover);\n });\n });\n\n barData.forEach((point: GroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, GVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = [\n ...Object.values(legendToBarPoint),\n ...(linePointsByX[point.name] ?? []),\n ];\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n visitedX.add(point.name);\n });\n\n Object.keys(linePointsByX).forEach(xPoint => {\n if (!visitedX.has(xPoint)) {\n datasetForBars.push({\n xAxisPoint: xPoint,\n groupSeries: linePointsByX[xPoint],\n });\n }\n });\n\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: GroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = _getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = _createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const 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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n const _getLegendData = (): JSXElement => {\n const actions: Legend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n _lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n _barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n };\n\n const _processDataV2 = (dataV2: (BarSeries<string, number> | LineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, GroupedVerticalBarChartData> = {};\n const lineData: GVBCLineSeries[] = [];\n\n dataV2.forEach(series => {\n if (series.type === 'bar') {\n series.data.forEach(point => {\n if (!barPointsByX[point.x]) {\n barPointsByX[point.x] = { name: point.x, series: [] };\n }\n\n barPointsByX[point.x].series.push({\n key: series.key ?? series.legend,\n data: point.y,\n color: point.color ?? series.color,\n // gradient: series.gradient,\n legend: series.legend,\n xAxisCalloutData: point.xAxisCalloutData,\n yAxisCalloutData: point.yAxisCalloutData,\n onClick: point.onClick,\n useSecondaryYScale: series.useSecondaryYScale,\n });\n });\n } else if (series.type === 'line') {\n lineData!.push(series);\n }\n });\n\n return { barData: Object.values(barPointsByX), lineData };\n };\n\n const _prepareChartData = () => {\n let barData = props.data;\n let lineData: GVBCLineSeries[] | undefined;\n\n if (Array.isArray(props.dataV2) && props.dataV2.length > 0) {\n ({ barData, lineData } = _processDataV2(props.dataV2));\n }\n\n _legendColorMap = {};\n let colorIndex = 0;\n\n return {\n barData:\n barData?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n // TODO: Add support for gradient colors\n let startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n let endColor = startColor;\n if (!_legendColorMap[seriesPoint.legend]) {\n _legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? _legendColorMap[seriesPoint.legend][0],\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let lineColor: string;\n if (typeof series.color === 'undefined') {\n lineColor = getNextColor(colorIndex, 0);\n } else {\n lineColor = getColorFromToken(series.color);\n }\n\n if (!_legendColorMap[series.legend]) {\n _legendColorMap[series.legend] = [lineColor, lineColor];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: _legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n const _getOrderedXAxisLabels = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(barData, lineData), props.xAxisCategoryOrder);\n };\n\n const _mapCategoryToValues = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const categoryToValues: Record<string, number[]> = {};\n barData.forEach(point => {\n if (!categoryToValues[point.name]) {\n categoryToValues[point.name] = [];\n }\n point.series.forEach(seriesPoint => {\n categoryToValues[point.name].push(seriesPoint.data);\n });\n });\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!categoryToValues[point.x]) {\n categoryToValues[point.x] = [];\n }\n categoryToValues[point.x].push(point.y);\n });\n });\n return categoryToValues;\n };\n\n const { barData, lineData } = _prepareChartData();\n const _xAxisType: XAxisTypes = getTypeOfAxis(barData[0].name, true) as XAxisTypes;\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(barData, lineData);\n _barLegends = barLegends;\n _lineLegends = lineLegends;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const legendBars: JSXElement = _getLegendData();\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Add commentMore actions\n function _getMinMaxOfYAxis(datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: GVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _getDomainNRangeValues(\n points: GroupedVerticalBarChartData[],\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 || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = _getMinMaxOfYAxis(_datasetForBars).endValue;\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n positioning: { target: popoverTarget },\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: yValueHover,\n hoverXValue,\n culture: props.culture,\n isCartesian: true,\n isCalloutForStack: props.isCalloutForStack,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringScale | NumericScale,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), _barLegends.length, X1_INNER_PADDING),\n );\n _groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSXElement[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(\n _buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n _showCallout(mouseEvent.currentTarget, pointData, groupData);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n focusEvent: React.FocusEvent<SVGRectElement, Element>,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n ): void => {\n _showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ): JSXElement => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const singleGroup: JSXElement[] = [];\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = _barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(_barWidth, presentLegends.length, X1_INNER_PADDING);\n\n // For stacked bars, center the single bar group in the available space\n // Instead of using the global legend position, use the local position within present legends\n const localScale = d3ScaleBand()\n .domain(presentLegends)\n .range(_useRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n _barLegends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n const xPoint = (localScale(legendTitle) ?? 0) + (localScale.bandwidth() - _barWidth) / 2;\n const isLegendActive = _legendHighlighted(legendTitle) || _noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n barPoints.forEach((pointData: GVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n const pointColor = pointData.color; // Use the color of the current point\n\n if (pointData.data >= Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n opacity={barOpacity}\n fill={pointColor}\n rx={props.roundCorners ? 3 : 0}\n onMouseOver={event => onBarHover(pointData, singleSet, event)}\n onMouseMove={event => onBarHover(pointData, singleSet, event)}\n onMouseOut={_onBarLeave}\n onFocus={event => onBarFocus(event, pointData, singleSet)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"img\"\n />,\n );\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !props.hideLabels && Math.ceil(_barWidth) >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + _barWidth / 2}\n y={barTotalValue >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barTotalValue)\n : formatScientificLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\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 (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(_barLegends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n },\n [props.yMaxValue],\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 const _legendHighlighted = (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 const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\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 group and after the last group.\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 const groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, _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 groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, _barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, _barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, _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 }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (_barData: GroupedVerticalBarChartData[], _lineData: GVBCLineSeries[]): boolean => {\n return !(\n (_barData &&\n _barData.length > 0 &&\n _barData.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (_lineData && _lineData.length > 0 && _lineData.some(series => series.data.length > 0))\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_barLegends.length} grouped bar series` +\n (_lineLegends.length > 0 ? ` and ${_lineLegends.length} line series. ` : '. ')\n );\n };\n\n const _createLines = (\n _lineData: GVBCLineSeries[],\n xScale: StringScale,\n yScalePrimary: NumericScale,\n yScaleSecondary?: NumericScale,\n ): React.ReactNode => {\n const lineBorders: React.ReactNode[] = [];\n const lines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n\n const scaleLineX = (x: string) => xScale(x)! + xScale.bandwidth() / 2;\n\n _lineData.forEach((series, seriesIdx) => {\n const lineBorderGroup: React.ReactNode[] = [];\n const lineGroup: React.ReactNode[] = [];\n const dotGroup: React.ReactNode[] = [];\n const lineBorderWidth = series.lineOptions?.lineBorderWidth\n ? Number.parseFloat(series.lineOptions.lineBorderWidth.toString())\n : 0;\n const yScale = series.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const shouldHighlight = _legendHighlighted(series.legend) || _noLegendHighlighted();\n\n series.data.forEach((point, pointIdx) => {\n const x2 = scaleLineX(point.x);\n const y2 = yScale(point.y);\n\n if (pointIdx > 0) {\n const x1 = scaleLineX(series.data[pointIdx - 1].x);\n const y1 = yScale(series.data[pointIdx - 1].y);\n\n if (lineBorderWidth > 0) {\n lineBorderGroup.push(\n <line\n key={`lineBorder-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n fill=\"transparent\"\n stroke={series.lineOptions?.lineBorderColor ?? tokens.colorNeutralBackground1}\n strokeWidth={3 + lineBorderWidth * 2}\n strokeLinecap=\"round\"\n opacity={shouldHighlight ? 1 : 0.1}\n />,\n );\n }\n\n lineGroup.push(\n <line\n key={`line-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={series.color}\n strokeWidth={series.lineOptions?.strokeWidth ?? 3}\n strokeLinecap={series.lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={series.lineOptions?.strokeDasharray}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n />,\n );\n }\n\n const dotId = _getDotId(seriesIdx, pointIdx);\n const isLinePointActive = activeLinePoint === point.x || activeLinePoint === dotId;\n\n dotGroup.push(\n <circle\n key={dotId}\n id={dotId}\n cx={x2}\n cy={y2}\n r={shouldHighlight && isLinePointActive ? 8 : 0.3}\n fill={tokens.colorNeutralBackground1}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n data-is-focusable={shouldHighlight}\n onFocus={e => _onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={_onBarLeave}\n role=\"img\"\n aria-label={getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as GVBarChartSeriesPoint,\n point.x,\n )}\n />,\n );\n });\n\n lineBorders.push(<g key={`lineBorderGroup-${seriesIdx}`}>{lineBorderGroup}</g>);\n lines.push(<g key={`lineGroup-${seriesIdx}`}>{lineGroup}</g>);\n dots.push(<g key={`dotGroup-${seriesIdx}`}>{dotGroup}</g>);\n });\n\n return dots.length > 0 ? (\n <g>\n {lineBorders.length > 0 ? <g>{lineBorders}</g> : null}\n {lines.length > 0 ? <g>{lines}</g> : null}\n <g>{dots}</g>\n </g>\n ) : null;\n };\n\n const _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, _rectRef.current)[0];\n\n let closestPointIdx = pointIdx;\n if (pointIdx > 0) {\n const currPointPos = scaleLineX(series.data[pointIdx].x);\n const prevPointPos = scaleLineX(series.data[pointIdx - 1].x);\n\n if (Math.abs(prevPointPos - pointerX) < Math.abs(currPointPos - pointerX)) {\n closestPointIdx = pointIdx - 1;\n }\n }\n\n event.persist();\n _showCalloutForLines(event.currentTarget, series, seriesIdx, closestPointIdx);\n };\n\n const _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n _showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n const _showCalloutForLines = (target: SVGElement, series: GVBCLineSeries, seriesIdx: number, pointIdx: number) => {\n const point = series.data[pointIdx];\n const pointData = {\n ...point,\n legend: series.legend,\n color: series.color!,\n key: series.legend,\n data: point.y,\n yAxisCalloutData: point.yAxisCalloutData as string | undefined,\n };\n const groupData = _datasetForBars.find((singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x);\n\n _showCallout(target, pointData, groupData, _getDotId(seriesIdx, pointIdx));\n };\n\n const _showCallout = (\n target: SVGElement,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n _activeLinePoint = '',\n ) => {\n setPopoverTarget(target);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setYCalloutValue(pointData.yAxisCalloutData);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(\n groupData.groupSeries.filter((item: YValueHover) => _noLegendHighlighted() || _legendHighlighted(item.legend!)),\n );\n setHoverXValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setActiveLinePoint(props.isCalloutForStack ? groupData.xAxisPoint : _activeLinePoint);\n };\n\n const _getDotId = (seriesIdx: number, pointIdx: number) => {\n return _uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n return !_isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={_xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\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 barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(childProps: ChildProps) => {\n return (\n <>\n <rect ref={_rectRef} width=\"100%\" height=\"100%\" fill=\"transparent\" style={{ pointerEvents: 'none' }} />\n <g>{_groupedVerticalBarGraph}</g>\n {_createLines(lineData, childProps.xScale, childProps.yScalePrimary, childProps.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","select","d3Select","pointer","d3Pointer","max","d3Max","min","d3Min","scaleBand","d3ScaleBand","useId","ChartTypes","getAccessibleDataObject","tooltipOfAxislabels","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","calcRequiredWidth","calcTotalWidth","calcBandwidth","calcTotalBandUnits","sortAxisCategories","CartesianChart","Legends","getColorFromToken","toImage","tokens","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","GroupedVerticalBarChart","forwardRef","_props","forwardedRef","props","xAxisCategoryOrder","maxBarWidth","_tooltipId","_emptyChartId","_useRtl","_domainMargin","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","_barLegends","_lineLegends","_legendColorMap","cartesianChartRef","useRef","Y_ORIGIN","_legendsRef","_rectRef","_uniqDotId","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","yValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","popoverTarget","setPopoverTarget","isPopoverOpen","setPopoverOpen","activeLinePoint","setActiveLinePoint","classes","useEffect","useImperativeHandle","componentRef","chartContainer","current","opts","toSVG","_adjustProps","barWidth","xAxisInnerPadding","length","xAxisOuterPadding","_createDataset","barData","lineData","datasetForBars","linePointsByX","visitedX","Set","forEach","series","data","point","x","push","legend","y","useSecondaryYScale","index","singleDatasetPointForBars","legendToBarPoint","seriesPoint","xAxisPoint","name","indexNum","groupSeries","Object","values","stackCallOutAccessibilityData","add","keys","xPoint","has","_createDataSetOfGVBC","barLegends","lineLegends","map","xAxisLabels","_getOrderedXAxisLabels","Array","from","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","addLegendButton","legendTitle","isLineLegendInBarChart","title","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","legendRef","_processDataV2","dataV2","barPointsByX","type","key","xAxisCalloutData","yAxisCalloutData","onClick","_prepareChartData","isArray","colorIndex","startColor","endColor","lineColor","_xAxisType","StringAxis","_mapCategoryToValues","categoryToValues","legendBars","_getMinMaxOfYAxis","yAxisType","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","yMax","Math","yMaxValue","calloutProps","positioning","target","XValue","YValue","YValueHover","culture","isCartesian","isCalloutForStack","tickParams","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","onBarHover","pointData","groupData","mouseEvent","persist","_showCallout","currentTarget","_onBarLeave","onBarFocus","focusEvent","singleGroup","barLabelsForGroup","presentLegends","filter","effectiveGroupWidth","localScale","domain","range","paddingInner","legendIndex","barPoints","yBarScale","isLegendActive","_legendHighlighted","_noLegendHighlighted","barOpacity","barTotalValue","yBaseline","yPositiveStart","yNegativeStart","yPoint","pointIndex","barGap","height","abs","pointColor","rect","className","opacityChangeOnHover","opacity","fill","rx","roundCorners","onMouseOver","onMouseMove","onMouseOut","onFocus","onBlur","aria-label","getAriaLabel","tabIndex","role","hideLabels","ceil","text","textAnchor","barLabel","aria-hidden","style","direction","unicodeBidi","yAxisTickFormat","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","call","document","getElementById","remove","e","tooltipProps","tooltipCls","tooltip","id","axis","g","transform","x0Axis","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","margin2","Number","POSITIVE_INFINITY","hideTickOverlap","step","_isChartEmpty","_barData","_lineData","item","some","_getChartTitle","chartTitle","_createLines","lineBorders","lines","dots","scaleLineX","seriesIdx","lineBorderGroup","lineGroup","dotGroup","lineBorderWidth","lineOptions","parseFloat","toString","yScale","shouldHighlight","pointIdx","x2","y2","x1","y1","line","stroke","lineBorderColor","colorNeutralBackground1","strokeWidth","strokeLinecap","strokeDasharray","_onLineHover","onMouseLeave","dotId","_getDotId","isLinePointActive","circle","cx","cy","r","data-is-focusable","_onLineFocus","pointerX","closestPointIdx","currPointPos","prevPointPos","_showCalloutForLines","find","_activeLinePoint","getDomainNRangeValues","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","childProps","ref","pointerEvents","div","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/GroupedVerticalBarChart/GroupedVerticalBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { select as d3Select, pointer as d3Pointer } from 'd3-selection';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleBand, ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId, JSXElement } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n ChartPopoverProps,\n LineSeries,\n getColorFromToken,\n BarSeries,\n ChildProps,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport { useImageExport } from '../../utilities/hooks';\nimport { isInvalidValue } from '@fluentui/chart-utilities';\n\ntype NumericScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\ntype GVBCLineSeries = LineSeries<string, number>;\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((_props, forwardedRef) => {\n const props: GroupedVerticalBarChartProps = {\n xAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _tooltipId: string = useId('GVBCTooltipId_');\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSXElement[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n let _barLegends: string[] = [];\n let _lineLegends: string[] = [];\n let _legendColorMap: Record<string, [string, string]> = {};\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n const Y_ORIGIN: number = 0;\n const _rectRef = React.useRef<SVGRectElement>(null);\n const _uniqDotId = useId('gvbc_dot_');\n\n const [color, setColor] = React.useState<string | undefined>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [popoverTarget, setPopoverTarget] = React.useState<SVGElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [activeLinePoint, setActiveLinePoint] = React.useState<string>('');\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = _barLegends.length * bar_width + (_barLegends.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(_barLegends.length, X1_INNER_PADDING)),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, YValueHover[]> = {};\n const visitedX = new Set<string>();\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!linePointsByX[point.x]) {\n linePointsByX[point.x] = [];\n }\n linePointsByX[point.x].push({\n ...point,\n legend: series.legend,\n color: series.color,\n data: point.y,\n useSecondaryYScale: series.useSecondaryYScale,\n } as YValueHover);\n });\n });\n\n barData.forEach((point: GroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, GVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = [\n ...Object.values(legendToBarPoint),\n ...(linePointsByX[point.name] ?? []),\n ];\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n visitedX.add(point.name);\n });\n\n Object.keys(linePointsByX).forEach(xPoint => {\n if (!visitedX.has(xPoint)) {\n datasetForBars.push({\n xAxisPoint: xPoint,\n groupSeries: linePointsByX[xPoint],\n });\n }\n });\n\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: GroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = _getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = _createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const 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 const _getLegendData = (): JSXElement => {\n const actions: Legend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n _lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n _barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n };\n\n const _processDataV2 = (dataV2: (BarSeries<string, number> | LineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, GroupedVerticalBarChartData> = {};\n const lineData: GVBCLineSeries[] = [];\n\n dataV2.forEach(series => {\n if (series.type === 'bar') {\n series.data.forEach(point => {\n if (!barPointsByX[point.x]) {\n barPointsByX[point.x] = { name: point.x, series: [] };\n }\n\n barPointsByX[point.x].series.push({\n key: series.key ?? series.legend,\n data: point.y,\n color: point.color ?? series.color,\n // gradient: series.gradient,\n legend: series.legend,\n xAxisCalloutData: point.xAxisCalloutData,\n yAxisCalloutData: point.yAxisCalloutData,\n onClick: point.onClick,\n useSecondaryYScale: series.useSecondaryYScale,\n });\n });\n } else if (series.type === 'line') {\n lineData!.push(series);\n }\n });\n\n return { barData: Object.values(barPointsByX), lineData };\n };\n\n const _prepareChartData = () => {\n let barData = props.data;\n let lineData: GVBCLineSeries[] | undefined;\n\n if (Array.isArray(props.dataV2) && props.dataV2.length > 0) {\n ({ barData, lineData } = _processDataV2(props.dataV2));\n }\n\n _legendColorMap = {};\n let colorIndex = 0;\n\n return {\n barData:\n barData?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n // TODO: Add support for gradient colors\n let startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n let endColor = startColor;\n if (!_legendColorMap[seriesPoint.legend]) {\n _legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? _legendColorMap[seriesPoint.legend][0],\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let lineColor: string;\n if (typeof series.color === 'undefined') {\n lineColor = getNextColor(colorIndex, 0);\n } else {\n lineColor = getColorFromToken(series.color);\n }\n\n if (!_legendColorMap[series.legend]) {\n _legendColorMap[series.legend] = [lineColor, lineColor];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: _legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n const _getOrderedXAxisLabels = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(barData, lineData), props.xAxisCategoryOrder);\n };\n\n const _mapCategoryToValues = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const categoryToValues: Record<string, number[]> = {};\n barData.forEach(point => {\n if (!categoryToValues[point.name]) {\n categoryToValues[point.name] = [];\n }\n point.series.forEach(seriesPoint => {\n categoryToValues[point.name].push(seriesPoint.data);\n });\n });\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!categoryToValues[point.x]) {\n categoryToValues[point.x] = [];\n }\n categoryToValues[point.x].push(point.y);\n });\n });\n return categoryToValues;\n };\n\n const { barData, lineData } = _prepareChartData();\n const firstXValue = barData[0]?.name ?? lineData[0]?.data[0]?.x;\n const _xAxisType: XAxisTypes = isInvalidValue(firstXValue)\n ? XAxisTypes.StringAxis\n : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(barData, lineData);\n _barLegends = barLegends;\n _lineLegends = lineLegends;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const legendBars: JSXElement = _getLegendData();\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Add commentMore actions\n function _getMinMaxOfYAxis(datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: GVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _getDomainNRangeValues(\n points: GroupedVerticalBarChartData[],\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 || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const yMax = _getMinMaxOfYAxis(_datasetForBars).endValue;\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n positioning: { target: popoverTarget },\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: yValueHover,\n hoverXValue,\n culture: props.culture,\n isCartesian: true,\n isCalloutForStack: props.isCalloutForStack,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringScale | NumericScale,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), _barLegends.length, X1_INNER_PADDING),\n );\n _groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSXElement[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(\n _buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n _showCallout(mouseEvent.currentTarget, pointData, groupData);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n focusEvent: React.FocusEvent<SVGRectElement, Element>,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n ): void => {\n _showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n ): JSXElement => {\n const singleGroup: JSXElement[] = [];\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = _barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(_barWidth, presentLegends.length, X1_INNER_PADDING);\n\n // For stacked bars, center the single bar group in the available space\n // Instead of using the global legend position, use the local position within present legends\n const localScale = d3ScaleBand()\n .domain(presentLegends)\n .range(_useRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n _barLegends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n const xPoint = (localScale(legendTitle) ?? 0) + (localScale.bandwidth() - _barWidth) / 2;\n const isLegendActive = _legendHighlighted(legendTitle) || _noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n barPoints.forEach((pointData: GVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n const pointColor = pointData.color; // Use the color of the current point\n\n if (pointData.data >= Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n opacity={barOpacity}\n fill={pointColor}\n rx={props.roundCorners ? 3 : 0}\n onMouseOver={event => onBarHover(pointData, singleSet, event)}\n onMouseMove={event => onBarHover(pointData, singleSet, event)}\n onMouseOut={_onBarLeave}\n onFocus={event => onBarFocus(event, pointData, singleSet)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"img\"\n />,\n );\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !props.hideLabels && Math.ceil(_barWidth) >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + _barWidth / 2}\n y={barTotalValue >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barTotalValue)\n : formatScientificLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\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 (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(_barLegends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n },\n [props.yMaxValue],\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 const _legendHighlighted = (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 const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\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 group and after the last group.\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 const groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, _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 groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, _barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, _barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, _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 }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (_barData: GroupedVerticalBarChartData[], _lineData: GVBCLineSeries[]): boolean => {\n return !(\n (_barData &&\n _barData.length > 0 &&\n _barData.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (_lineData && _lineData.length > 0 && _lineData.some(series => series.data.length > 0))\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_barLegends.length} grouped bar series` +\n (_lineLegends.length > 0 ? ` and ${_lineLegends.length} line series. ` : '. ')\n );\n };\n\n const _createLines = (\n _lineData: GVBCLineSeries[],\n xScale: StringScale,\n yScalePrimary: NumericScale,\n yScaleSecondary?: NumericScale,\n ): React.ReactNode => {\n const lineBorders: React.ReactNode[] = [];\n const lines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n\n const scaleLineX = (x: string) => xScale(x)! + xScale.bandwidth() / 2;\n\n _lineData.forEach((series, seriesIdx) => {\n const lineBorderGroup: React.ReactNode[] = [];\n const lineGroup: React.ReactNode[] = [];\n const dotGroup: React.ReactNode[] = [];\n const lineBorderWidth = series.lineOptions?.lineBorderWidth\n ? Number.parseFloat(series.lineOptions.lineBorderWidth.toString())\n : 0;\n const yScale = series.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const shouldHighlight = _legendHighlighted(series.legend) || _noLegendHighlighted();\n\n series.data.forEach((point, pointIdx) => {\n const x2 = scaleLineX(point.x);\n const y2 = yScale(point.y);\n\n if (pointIdx > 0) {\n const x1 = scaleLineX(series.data[pointIdx - 1].x);\n const y1 = yScale(series.data[pointIdx - 1].y);\n\n if (lineBorderWidth > 0) {\n lineBorderGroup.push(\n <line\n key={`lineBorder-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n fill=\"transparent\"\n stroke={series.lineOptions?.lineBorderColor ?? tokens.colorNeutralBackground1}\n strokeWidth={3 + lineBorderWidth * 2}\n strokeLinecap=\"round\"\n opacity={shouldHighlight ? 1 : 0.1}\n />,\n );\n }\n\n lineGroup.push(\n <line\n key={`line-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={series.color}\n strokeWidth={series.lineOptions?.strokeWidth ?? 3}\n strokeLinecap={series.lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={series.lineOptions?.strokeDasharray}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n />,\n );\n }\n\n const dotId = _getDotId(seriesIdx, pointIdx);\n const isLinePointActive = activeLinePoint === point.x || activeLinePoint === dotId;\n\n dotGroup.push(\n <circle\n key={dotId}\n id={dotId}\n cx={x2}\n cy={y2}\n r={shouldHighlight && isLinePointActive ? 8 : 0.3}\n fill={tokens.colorNeutralBackground1}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n data-is-focusable={shouldHighlight}\n onFocus={e => _onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={_onBarLeave}\n role=\"img\"\n aria-label={getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as GVBarChartSeriesPoint,\n point.x,\n )}\n />,\n );\n });\n\n lineBorders.push(<g key={`lineBorderGroup-${seriesIdx}`}>{lineBorderGroup}</g>);\n lines.push(<g key={`lineGroup-${seriesIdx}`}>{lineGroup}</g>);\n dots.push(<g key={`dotGroup-${seriesIdx}`}>{dotGroup}</g>);\n });\n\n return dots.length > 0 ? (\n <g>\n {lineBorders.length > 0 ? <g>{lineBorders}</g> : null}\n {lines.length > 0 ? <g>{lines}</g> : null}\n <g>{dots}</g>\n </g>\n ) : null;\n };\n\n const _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, _rectRef.current)[0];\n\n let closestPointIdx = pointIdx;\n if (pointIdx > 0) {\n const currPointPos = scaleLineX(series.data[pointIdx].x);\n const prevPointPos = scaleLineX(series.data[pointIdx - 1].x);\n\n if (Math.abs(prevPointPos - pointerX) < Math.abs(currPointPos - pointerX)) {\n closestPointIdx = pointIdx - 1;\n }\n }\n\n event.persist();\n _showCalloutForLines(event.currentTarget, series, seriesIdx, closestPointIdx);\n };\n\n const _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n _showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n const _showCalloutForLines = (target: SVGElement, series: GVBCLineSeries, seriesIdx: number, pointIdx: number) => {\n const point = series.data[pointIdx];\n const pointData = {\n ...point,\n legend: series.legend,\n color: series.color!,\n key: series.legend,\n data: point.y,\n yAxisCalloutData: point.yAxisCalloutData as string | undefined,\n };\n const groupData = _datasetForBars.find((singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x);\n\n _showCallout(target, pointData, groupData, _getDotId(seriesIdx, pointIdx));\n };\n\n const _showCallout = (\n target: SVGElement,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n _activeLinePoint = '',\n ) => {\n setPopoverTarget(target);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setYCalloutValue(pointData.yAxisCalloutData);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(\n groupData.groupSeries.filter((item: YValueHover) => _noLegendHighlighted() || _legendHighlighted(item.legend!)),\n );\n setHoverXValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setActiveLinePoint(props.isCalloutForStack ? groupData.xAxisPoint : _activeLinePoint);\n };\n\n const _getDotId = (seriesIdx: number, pointIdx: number) => {\n return _uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n return !_isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={_xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\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 barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(childProps: ChildProps) => {\n return (\n <>\n <rect ref={_rectRef} width=\"100%\" height=\"100%\" fill=\"transparent\" style={{ pointerEvents: 'none' }} />\n <g>{_groupedVerticalBarGraph}</g>\n {_createLines(lineData, childProps.xScale, childProps.yScalePrimary, childProps.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","select","d3Select","pointer","d3Pointer","max","d3Max","min","d3Min","scaleBand","d3ScaleBand","useId","ChartTypes","getAccessibleDataObject","tooltipOfAxislabels","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","calcRequiredWidth","calcTotalWidth","calcBandwidth","calcTotalBandUnits","sortAxisCategories","CartesianChart","Legends","getColorFromToken","tokens","useImageExport","isInvalidValue","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","GroupedVerticalBarChart","forwardRef","_props","forwardedRef","props","barData","lineData","xAxisCategoryOrder","maxBarWidth","_tooltipId","_emptyChartId","_useRtl","_domainMargin","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","_barLegends","_lineLegends","_legendColorMap","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","Y_ORIGIN","_rectRef","useRef","_uniqDotId","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","yValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","popoverTarget","setPopoverTarget","isPopoverOpen","setPopoverOpen","activeLinePoint","setActiveLinePoint","classes","useEffect","_adjustProps","barWidth","xAxisInnerPadding","length","xAxisOuterPadding","_createDataset","datasetForBars","linePointsByX","visitedX","Set","forEach","series","data","point","x","push","legend","y","useSecondaryYScale","index","singleDatasetPointForBars","legendToBarPoint","seriesPoint","xAxisPoint","name","indexNum","groupSeries","Object","values","stackCallOutAccessibilityData","add","keys","xPoint","has","_createDataSetOfGVBC","barLegends","lineLegends","map","xAxisLabels","_getOrderedXAxisLabels","Array","from","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","addLegendButton","legendTitle","isLineLegendInBarChart","title","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","legendRef","_processDataV2","dataV2","barPointsByX","type","key","xAxisCalloutData","yAxisCalloutData","onClick","_prepareChartData","isArray","colorIndex","startColor","endColor","lineColor","_xAxisType","StringAxis","_mapCategoryToValues","categoryToValues","firstXValue","legendBars","_getMinMaxOfYAxis","yAxisType","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","yMax","Math","yMaxValue","calloutProps","positioning","target","XValue","YValue","YValueHover","culture","isCartesian","isCalloutForStack","tickParams","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","onBarHover","pointData","groupData","mouseEvent","persist","_showCallout","currentTarget","_onBarLeave","onBarFocus","focusEvent","singleGroup","barLabelsForGroup","presentLegends","filter","effectiveGroupWidth","localScale","domain","range","paddingInner","legendIndex","barPoints","yBarScale","isLegendActive","_legendHighlighted","_noLegendHighlighted","barOpacity","barTotalValue","yBaseline","yPositiveStart","yNegativeStart","yPoint","pointIndex","barGap","height","abs","pointColor","rect","className","opacityChangeOnHover","opacity","fill","rx","roundCorners","onMouseOver","onMouseMove","onMouseOut","onFocus","onBlur","aria-label","getAriaLabel","tabIndex","role","hideLabels","ceil","text","textAnchor","barLabel","aria-hidden","style","direction","unicodeBidi","yAxisTickFormat","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","call","document","getElementById","remove","e","tooltipProps","tooltipCls","tooltip","id","axis","g","transform","x0Axis","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","margin2","Number","POSITIVE_INFINITY","hideTickOverlap","step","_isChartEmpty","_barData","_lineData","item","some","_getChartTitle","chartTitle","_createLines","lineBorders","lines","dots","scaleLineX","seriesIdx","lineBorderGroup","lineGroup","dotGroup","lineBorderWidth","lineOptions","parseFloat","toString","yScale","shouldHighlight","pointIdx","x2","y2","x1","y1","line","stroke","lineBorderColor","colorNeutralBackground1","strokeWidth","strokeLinecap","strokeDasharray","_onLineHover","onMouseLeave","dotId","_getDotId","isLinePointActive","circle","cx","cy","r","data-is-focusable","_onLineFocus","pointerX","current","closestPointIdx","currPointPos","prevPointPos","_showCalloutForLines","find","_activeLinePoint","getDomainNRangeValues","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","childProps","ref","pointerEvents","div","displayName"],"mappings":"AAAA;;;;;+BA4Ea4C;;;;;;;iEA1EU,QAAQ;wDAC2B,4CAA4C;6BAC7C,eAAe;yBAC7B,WAAW;yBACW,WAAW;gCAE1C,4BAA4B;uBA0BvD,wBAAwB;wBAiBxB,cAAc;4BACE,wBAAwB;uBAChB,wBAAwB;gCACxB,4BAA4B;AAK3D,MAAMJ,oBAAoB;AAC1B,MAAMC,mBAAmB;AACzB,MAAMC,mBAAmB;AACzB,MAAMC,iBAAiB;AAchB,gCAAMC,WAAAA,GAAkE5C,OAAM6C,UAAU,CAG7F,CAACC,QAAQC;QA8B8DC,oBAmBnEA,qBAmQgBC,WAAoBC,kBAAAA;IAnTxC,MAAMF,QAAsC;QAC1CG,oBAAoB;QACpBC,aAAa;QACb,GAAGN,MAAM;IACX;IACA,MAAMO,iBAAqBzC,qBAAAA,EAAM;IACjC,MAAM0C,oBAAwB1C,qBAAAA,EAAM;IACpC,MAAM2C,cAAmB3B,aAAAA;IACzB,IAAI4B,gBAAwBhB;IAC5B,IAAIiB,eAAyB,EAAE;IAC/B,IAAIC,kBAAyB,EAAE;IAC/B,IAAIC,WAAoB;QAAEC,KAAK;QAAGC,OAAO;QAAGC,QAAQ;QAAGC,MAAM;IAAE;IAC/D,IAAIC,2BAAyC,EAAE;IAC/C,IAAIC,QAAgB;IACpB,IAAIC,sBAAoD;IACxD,IAAIC,YAAoB;IACxB,IAAIC,cAAsB;IAC1B,IAAIC,qBAA6B;IACjC,IAAIC,qBAA6B;IACjC,IAAIC,cAAwB,EAAE;IAC9B,IAAIC,eAAyB,EAAE;IAC/B,IAAIC,kBAAoD,CAAC;IACzD,MAAM,EAAEC,iBAAiB,EAAEC,YAAYC,WAAW,EAAE,GAAGtC,yBAAAA,EAAeU,MAAM6B,YAAY,EAAE7B,MAAM8B,UAAU;IAC1G,MAAMC,WAAmB;IACzB,MAAMC,WAAWhF,OAAMiF,MAAM,CAAiB;IAC9C,MAAMC,iBAAatE,qBAAAA,EAAM;IAEzB,MAAM,CAACuE,OAAOC,SAAS,GAAGpF,OAAMqF,QAAQ,CAAqB;IAC7D,MAAM,CAACC,kBAAkBC,oBAAoB,GAAGvF,OAAMqF,QAAQ,CAAS;IACvE,MAAM,CAACG,iBAAiBC,mBAAmB,GAAGzF,OAAMqF,QAAQ,CAAWrC,CAAAA,CAAAA,qBAAAA,MAAM0C,WAAW,AAAXA,MAAW,QAAjB1C,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBwC,eAAAA,AAAe,KAAI,EAAE;IAC/G,MAAM,CAACG,eAAeC,iBAAiB,GAAG5F,OAAMqF,QAAQ,CAAS;IACjE,MAAM,CAACQ,eAAeC,iBAAiB,GAAG9F,OAAMqF,QAAQ,CAAqB;IAC7E,MAAM,CAACU,aAAaC,eAAe,GAAGhG,OAAMqF,QAAQ,CAAgB,EAAE;IACtE,MAAM,CAACY,aAAaC,eAAe,GAAGlG,OAAMqF,QAAQ,CAAS;IAC7D,MAAM,CAACc,eAAeC,iBAAiB,GAAGpG,OAAMqF,QAAQ,CAAS;IACjE,MAAM,CAACgB,cAAcC,gBAAgB,GAAGtG,OAAMqF,QAAQ,CAAS;IAC/D,MAAM,CAACkB,0BAA0BC,4BAA4B,GAAGxG,OAAMqF,QAAQ,CAC5EoB;IAEF,MAAM,CAACC,eAAeC,iBAAiB,GAAG3G,OAAMqF,QAAQ,CAAoB;IAC5E,MAAM,CAACuB,eAAeC,eAAe,GAAG7G,OAAMqF,QAAQ,CAAU;IAChE,MAAM,CAACyB,iBAAiBC,mBAAmB,GAAG/G,OAAMqF,QAAQ,CAAS;IACrE,MAAM2B,cAAU/G,iFAAAA,EAA0C+C;IAE1DhD,OAAMiH,SAAS,CAAC;YACMjE;QAApB,IAAI,CAACtB,yBAAAA,EAAAA,CAAesB,qBAAAA,MAAM0C,WAAAA,AAAW,MAAA,QAAjB1C,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmBwC,eAAe,EAAEA,kBAAkB;gBACrDxC;YAAnByC,mBAAmBzC,CAAAA,CAAAA,sBAAAA,MAAM0C,WAAAA,AAAW,MAAA,QAAjB1C,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmBwC,eAAAA,AAAe,KAAI,EAAE;QAC7D;IACF,GAAG;SAACxC,sBAAAA,MAAM0C,WAAAA,AAAW,MAAA,QAAjB1C,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmBwC,eAAe;KAAC;IAEvC,MAAM0B,eAAe;QACnB/C,gBAAY/C,kBAAAA,EAAY4B,MAAMmE,QAAQ,EAAEnE,MAAMI,WAAW;QACzD,iFAAiF;QACjF,uCAAuC;QACvC,+FAA+F;QAC/FiB,yBAAqBlD,sBAAAA,EACnB6B,MAAMoE,iBAAiB,EACvBX,WACA,IAAK,CAAA,QAAIzE,yBAAAA,EAAmBuC,YAAY8C,MAAM,EAAE5E,iBAAAA,CAAgB;QAElE6B,qBAAqBnD,0BAAAA,EAAgB6B,MAAMsE,iBAAiB;IAC9D;IAEA,MAAMC,iBAAiB,CAACtE,SAAwCC;QAC9D,8DAA8D;QAC9D,MAAMsE,iBAAsB,EAAE;QAE9B,MAAMC,gBAA+C,CAAC;QACtD,MAAMC,WAAW,IAAIC;QACrBzE,SAAS0E,OAAO,CAACC,CAAAA;YACfA,OAAOC,IAAI,CAACF,OAAO,CAACG,CAAAA;gBAClB,IAAI,CAACN,aAAa,CAACM,MAAMC,CAAC,CAAC,EAAE;oBAC3BP,aAAa,CAACM,MAAMC,CAAC,CAAC,GAAG,EAAE;gBAC7B;gBACAP,aAAa,CAACM,MAAMC,CAAC,CAAC,CAACC,IAAI,CAAC;oBAC1B,GAAGF,KAAK;oBACRG,QAAQL,OAAOK,MAAM;oBACrB/C,OAAO0C,OAAO1C,KAAK;oBACnB2C,MAAMC,MAAMI,CAAC;oBACbC,oBAAoBP,OAAOO,kBAAkB;gBAC/C;YACF;QACF;QAEAnF,QAAQ2E,OAAO,CAAC,CAACG,OAAoCM;YACnD,8DAA8D;YAC9D,MAAMC,4BAAiC,CAAC;YACxC,MAAMC,mBAA0D,CAAC;YAEjER,MAAMF,MAAM,CAACD,OAAO,CAAC,CAACY;gBACpB,IAAI,CAACF,yBAAyB,CAACE,YAAYN,MAAM,CAAC,EAAE;oBAClDI,yBAAyB,CAACE,YAAYN,MAAM,CAAC,GAAG;wBAAC;4BAAE,GAAGM,WAAW;wBAAC;qBAAE;oBACpED,gBAAgB,CAACC,YAAYN,MAAM,CAAC,GAAG;wBAAE,GAAGM,WAAW;oBAAC;gBAC1D,OAAO;oBACLF,yBAAyB,CAACE,YAAYN,MAAM,CAAC,CAACD,IAAI,CAAC;wBAAE,GAAGO,WAAW;oBAAC;oBACpED,gBAAgB,CAACC,YAAYN,MAAM,CAAC,CAACJ,IAAI,IAAIU,YAAYV,IAAI;gBAC/D;YACF;YAEAQ,0BAA0BG,UAAU,GAAGV,MAAMW,IAAI;YACjDJ,0BAA0BK,QAAQ,GAAGN;gBAG/BZ;YAFNa,0BAA0BM,WAAW,GAAG;mBACnCC,OAAOC,MAAM,CAACP;mBACbd,CAAAA,4BAAAA,aAAa,CAACM,MAAMW,KAAI,AAAC,MAAA,QAAzBjB,8BAAAA,KAAAA,IAAAA,4BAA6B,EAAE;aACpC;YACDa,0BAA0BS,6BAA6B,GAAGhB,MAAMgB,6BAA6B;YAC7FvB,eAAeS,IAAI,CAACK;YACpBZ,SAASsB,GAAG,CAACjB,MAAMW,IAAI;QACzB;QAEAG,OAAOI,IAAI,CAACxB,eAAeG,OAAO,CAACsB,CAAAA;YACjC,IAAI,CAACxB,SAASyB,GAAG,CAACD,SAAS;gBACzB1B,eAAeS,IAAI,CAAC;oBAClBQ,YAAYS;oBACZN,aAAanB,aAAa,CAACyB,OAAO;gBACpC;YACF;QACF;QAEA,OAAO1B;IACT;IAEA,MAAM4B,uBAAuB,CAACnG,SAAwCC;QACpE,MAAMmG,aAAa,IAAI1B;QACvB1E,QAAQ2E,OAAO,CAAC,CAACG;YACfA,MAAMF,MAAM,CAACD,OAAO,CAAC,CAACY;gBACpBa,WAAWL,GAAG,CAACR,YAAYN,MAAM;YACnC;QACF;QACA,MAAMoB,cAAc,IAAI3B,IAAYzE,SAASqG,GAAG,CAAC1B,CAAAA,SAAUA,OAAOK,MAAM;QACxE,MAAMsB,cAAwBC,uBAAuBxG,SAASC;QAC9D,MAAMsE,iBAAiBD,eAAetE,SAASC;QAC/C,OAAO;YACLmG,YAAYK,MAAMC,IAAI,CAACN;YACvBC,aAAaI,MAAMC,IAAI,CAACL;YACxBE;YACAhC;QACF;IACF;IAEA,MAAMoC,0BAA0B,CAC9BpE,iBACAqE,OACAC;YAEI9G,oBAKAA;QALJ,IAAA,CAAIA,qBAAAA,MAAM0C,WAAAA,AAAW,MAAA,QAAjB1C,uBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,mBAAmB+G,wBAAwB,EAAE;YAC/CtE,mBAAmBD;QACrB,OAAO;YACLC,mBAAmBD,gBAAgBwE,KAAK,CAAC,CAAC;QAC5C;QACA,IAAA,CAAIhH,sBAAAA,MAAM0C,WAAAA,AAAW,MAAA,QAAjB1C,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAmBiH,QAAQ,EAAE;YAC/BjH,MAAM0C,WAAW,CAACuE,QAAQ,CAACzE,iBAAiBqE,OAAOC;QACrD;IACF;IAEA,MAAMI,iBAAiB;QACrB,MAAMC,UAAoB,EAAE;QAE5B,MAAMC,kBAAkB,CAACC,aAAqBC;YAC5C,MAAMpC,SAAiB;gBACrBqC,OAAOF;gBACPlF,OAAOV,eAAe,CAAC4F,YAAY,CAAC,EAAE;gBACtCC;gBACAE,aAAa;oBACXC;oBACAC,eAAeL;gBACjB;gBACAM,kBAAkB;oBAChBC;gBACF;YACF;YAEAT,QAAQlC,IAAI,CAACC;QACf;QAEA1D,aAAaoD,OAAO,CAACyC,CAAAA,cAAeD,gBAAgBC,aAAa;QACjE9F,YAAYqD,OAAO,CAACyC,CAAAA,cAAeD,gBAAgBC;QAEnD,OAAA,WAAA,GACE,OAAA,aAAA,CAAClI,eAAAA,EAAAA;YACC0I,SAASV;YACTW,kBAAkB9H,MAAM+H,uBAAuB;YAC/CC,cAAchI,MAAMiI,mBAAmB;YACtC,GAAGjI,MAAM0C,WAAW;YACrBuE,UAAUL;YACVsB,WAAWtG;;IAGjB;IAEA,MAAMuG,iBAAiB,CAACC;QACtB,MAAMC,eAA4D,CAAC;QACnE,MAAMnI,WAA6B,EAAE;QAErCkI,OAAOxD,OAAO,CAACC,CAAAA;YACb,IAAIA,OAAOyD,IAAI,KAAK,OAAO;gBACzBzD,OAAOC,IAAI,CAACF,OAAO,CAACG,CAAAA;oBAClB,IAAI,CAACsD,YAAY,CAACtD,MAAMC,CAAC,CAAC,EAAE;wBAC1BqD,YAAY,CAACtD,MAAMC,CAAC,CAAC,GAAG;4BAAEU,MAAMX,MAAMC,CAAC;4BAAEH,QAAQ,EAAE;wBAAC;oBACtD;wBAGOA,aAEEE;oBAHTsD,YAAY,CAACtD,MAAMC,CAAC,CAAC,CAACH,MAAM,CAACI,IAAI,CAAC;wBAChCsD,KAAK1D,eAAAA,OAAO0D,GAAAA,AAAG,MAAA,QAAV1D,gBAAAA,KAAAA,IAAAA,cAAcA,OAAOK,MAAM;wBAChCJ,MAAMC,MAAMI,CAAC;wBACbhD,OAAO4C,CAAAA,eAAAA,MAAM5C,KAAAA,AAAK,MAAA,QAAX4C,iBAAAA,KAAAA,IAAAA,eAAeF,OAAO1C,KAAK;wBAClC,6BAA6B;wBAC7B+C,QAAQL,OAAOK,MAAM;wBACrBsD,kBAAkBzD,MAAMyD,gBAAgB;wBACxCC,kBAAkB1D,MAAM0D,gBAAgB;wBACxCC,SAAS3D,MAAM2D,OAAO;wBACtBtD,oBAAoBP,OAAOO,kBAAkB;oBAC/C;gBACF;YACF,OAAO,IAAIP,OAAOyD,IAAI,KAAK,QAAQ;gBACjCpI,SAAU+E,IAAI,CAACJ;YACjB;QACF;QAEA,OAAO;YAAE5E,SAAS4F,OAAOC,MAAM,CAACuC;YAAenI;QAAS;IAC1D;IAEA,MAAMyI,oBAAoB;QACxB,IAAI1I,UAAUD,MAAM8E,IAAI;QACxB,IAAI5E;QAEJ,IAAIwG,MAAMkC,OAAO,CAAC5I,MAAMoI,MAAM,KAAKpI,MAAMoI,MAAM,CAAC/D,MAAM,GAAG,GAAG;aACzD,EAAEpE,OAAO,EAAEC,QAAQ,EAAE,GAAGiI,eAAenI,MAAMoI,OAAM,CAAA;QACtD;QAEA3G,kBAAkB,CAAC;QACnB,IAAIoH,aAAa;YAIb5I,cAsBAC;QAxBJ,OAAO;YACLD,SACEA,CAAAA,eAAAA,YAAAA,QAAAA,YAAAA,KAAAA,IAAAA,KAAAA,IAAAA,QAASsG,GAAG,CAACxB,CAAAA;oBAIPA;oBAAAA;gBAHJ,OAAO;oBACL,GAAGA,KAAK;oBACRF,QACEE,CAAAA,oBAAAA,CAAAA,gBAAAA,MAAMF,MAAAA,AAAM,MAAA,QAAZE,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcwB,GAAG,CAACf,CAAAA;wBAChB,wCAAwC;wBACxC,IAAIsD,aAAatD,YAAYrD,KAAK,GAAGqD,YAAYrD,KAAK,OAAG1D,mBAAAA,EAAaoK,YAAY;wBAClF,IAAIE,WAAWD;wBACf,IAAI,CAACrH,eAAe,CAAC+D,YAAYN,MAAM,CAAC,EAAE;4BACxCzD,eAAe,CAAC+D,YAAYN,MAAM,CAAC,GAAG;gCAAC4D;gCAAYC;6BAAS;wBAC9D;wBACAF,cAAc;4BAILrD;wBAFT,OAAO;4BACL,GAAGA,WAAW;4BACdrD,OAAOqD,CAAAA,qBAAAA,YAAYrD,KAAAA,AAAK,MAAA,QAAjBqD,uBAAAA,KAAAA,IAAAA,qBAAqB/D,eAAe,CAAC+D,YAAYN,MAAM,CAAC,CAAC,EAAE;wBACpE;oBACF,EAAA,MAAA,QAbAH,sBAAAA,KAAAA,IAAAA,oBAaM,EAAE;gBACZ;YACF,EAAA,MAAA,QAnBA9E,iBAAAA,KAAAA,IAAAA,eAmBM,EAAE;YAEVC,UACEA,CAAAA,gBAAAA,aAAAA,QAAAA,aAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAUqG,GAAG,CAAC1B,CAAAA;gBACZ,IAAImE;gBACJ,IAAI,OAAOnE,OAAO1C,KAAK,KAAK,aAAa;oBACvC6G,gBAAYvK,mBAAAA,EAAaoK,YAAY;gBACvC,OAAO;oBACLG,YAAY5J,6BAAAA,EAAkByF,OAAO1C,KAAK;gBAC5C;gBAEA,IAAI,CAACV,eAAe,CAACoD,OAAOK,MAAM,CAAC,EAAE;oBACnCzD,eAAe,CAACoD,OAAOK,MAAM,CAAC,GAAG;wBAAC8D;wBAAWA;qBAAU;gBACzD;gBACAH,cAAc;gBAEd,OAAO;oBACL,GAAGhE,MAAM;oBACT1C,OAAOV,eAAe,CAACoD,OAAOK,MAAM,CAAC,CAAC,EAAE;gBAC1C;YACF,EAAA,MAAA,QAjBAhF,kBAAAA,KAAAA,IAAAA,gBAiBM,EAAE;QACZ;IACF;IAEA,MAAMuG,yBAAyB,CAACxG,SAAwCC;QACtE,IAAI+I,eAAejL,iBAAAA,CAAWkL,UAAU,EAAE;YACxC,OAAO,EAAE;QACX;QAEA,WAAOjK,yBAAAA,EAAmBkK,qBAAqBlJ,SAASC,WAAWF,MAAMG,kBAAkB;IAC7F;IAEA,MAAMgJ,uBAAuB,CAAClJ,SAAwCC;QACpE,MAAMkJ,mBAA6C,CAAC;QACpDnJ,QAAQ2E,OAAO,CAACG,CAAAA;YACd,IAAI,CAACqE,gBAAgB,CAACrE,MAAMW,IAAI,CAAC,EAAE;gBACjC0D,gBAAgB,CAACrE,MAAMW,IAAI,CAAC,GAAG,EAAE;YACnC;YACAX,MAAMF,MAAM,CAACD,OAAO,CAACY,CAAAA;gBACnB4D,gBAAgB,CAACrE,MAAMW,IAAI,CAAC,CAACT,IAAI,CAACO,YAAYV,IAAI;YACpD;QACF;QACA5E,SAAS0E,OAAO,CAACC,CAAAA;YACfA,OAAOC,IAAI,CAACF,OAAO,CAACG,CAAAA;gBAClB,IAAI,CAACqE,gBAAgB,CAACrE,MAAMC,CAAC,CAAC,EAAE;oBAC9BoE,gBAAgB,CAACrE,MAAMC,CAAC,CAAC,GAAG,EAAE;gBAChC;gBACAoE,gBAAgB,CAACrE,MAAMC,CAAC,CAAC,CAACC,IAAI,CAACF,MAAMI,CAAC;YACxC;QACF;QACA,OAAOiE;IACT;IAEA,MAAM,EAAEnJ,OAAO,EAAEC,QAAQ,EAAE,GAAGyI;QACV1I;IAApB,MAAMoJ,cAAcpJ,CAAAA,iBAAAA,CAAAA,YAAAA,OAAO,CAAC,EAAA,AAAE,MAAA,QAAVA,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,UAAYyF,IAAAA,AAAI,MAAA,QAAhBzF,mBAAAA,KAAAA,IAAAA,iBAAAA,AAAoBC,cAAAA,QAAQ,CAAC,EAAA,AAAE,MAAA,QAAXA,eAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,mBAAAA,WAAa4E,IAAI,CAAC,EAAA,AAAE,MAAA,QAApB5E,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAsB8E,CAAC;IAC/D,MAAMiE,iBAAyB1J,8BAAAA,EAAe8J,eAC1CrL,iBAAAA,CAAWkL,UAAU,OACpBjL,oBAAAA,EAAcoL,aAAa;IAChC,MAAM,EAAEhD,UAAU,EAAEC,WAAW,EAAEE,WAAW,EAAEhC,cAAc,EAAE,GAAG4B,qBAAqBnG,SAASC;IAC/FqB,cAAc8E;IACd7E,eAAe8E;IACf7F,eAAe+F;IACf9F,kBAAkB8D;IAClB,MAAM8E,aAAyBpC;IAC/BhD;IAEA,yFAAyF;IACzF,SAASqF,kBAAkB/E,cAAmB,EAAEgF,SAAqB,EAAEpE,kBAA4B;QACjG,MAAMU,SAAmB,EAAE;QAC3B,8DAA8D;QAC9DtB,eAAeI,OAAO,CAAC,CAACE;YACtBA,KAAKc,WAAW,CAAChB,OAAO,CAAC,CAACG;gBACxB,IAAI,CAACK,uBAAuB,CAACL,MAAMK,kBAAkB,EAAE;oBACrDU,OAAOb,IAAI,CAACF,MAAMD,IAAI;gBACxB;YACF;QACF;QAEA,OAAO;YAAE2E,gBAAYhM,YAAAA,EAAMqI;YAAU4D,cAAUnM,YAAAA,EAAMuI;QAAS;IAChE;IAEA,SAAS6D,uBACPC,MAAqC,EACrCC,OAAgB,EAChBC,KAAa,EACbC,SAAqB,EACrBC,KAAc,EACdC,SAAqB,EACrB9F,QAAgB,EAChB+F,UAAyC;QAEzC,IAAIC;QACJ,IAAIF,cAAcjM,iBAAAA,CAAWoM,WAAW,IAAIH,cAAcjM,iBAAAA,CAAWqM,QAAQ,EAAE;YAC7EF,oBAAoB;gBAAEG,aAAa;gBAAGC,WAAW;gBAAGC,aAAa;gBAAGC,WAAW;YAAE;QACnF,OAAO;YACLN,wBAAoB5L,+BAAAA,EAAyBsL,SAASC,OAAOE;QAC/D;QACA,OAAOG;IACT;IAEA,2FAA2F;IAC3F,iEAAiE;IACjE,8DAA8D;IAC9D,MAAMO,OAAOnB,kBAAkB7I,iBAAiBgJ,QAAQ;IACxDzI,QAAQ0J,KAAKrN,GAAG,CAACoN,MAAM1K,MAAM4K,SAAS,IAAI;IAE1C,MAAMC,eAAkC;QACtCC,aAAa;YAAEC,QAAQrH;QAAc;QACrCE;QACAzB;QACA+C,QAAQ/B;QACR6H,QAAQrI;QACRsI,QAAQpI,gBAAgBA,gBAAgBP;QACxC4I,aAAanI;QACbE;QACAkI,SAASnL,MAAMmL,OAAO;QACtBC,aAAa;QACbC,mBAAmBrL,MAAMqL,iBAAiB;QAC1C,GAAGrL,MAAM6K,YAAY;QACrB,GAAG/M,kCAAAA,EAAwByF,0BAA0B,QAAQ,MAAM;IACrE;IACA,MAAM+H,aAAa;QACjBpB,YAAYlK,MAAMkK,UAAU;QAC5BqB,YAAYvL,MAAMuL,UAAU;IAC9B;IAEA,MAAMC,gBAAgB,CACpBC,QACAC,eACAC,iBACAC,gBACAC,UACAC,cACAC;QAEA,MAAMC,UAAUC,eAAeL;QAE/B,2FAA2F;QAC3F,4EAA4E;QAC5EzK,gBAAY/C,kBAAAA,EACV4B,MAAMmE,QAAQ,EACdnE,MAAMI,WAAW,MACjBrB,oBAAAA,EAAciN,QAAQE,SAAS,IAAI3K,YAAY8C,MAAM,EAAE5E;QAEzD2B,kBAAcvC,wBAAAA,EAAkBsC,WAAWI,YAAY8C,MAAM,EAAE5E;QAE/D,MAAM0M,UAAUC;QAChB,MAAMC,gBAA8B,EAAE;QACtC3L,gBAAgBkE,OAAO,CAAC,CAAC0H;YACvBD,cAAcpH,IAAI,CAChBsH,YAAYD,WAAWN,SAASG,SAAST,eAAeK,iBAAiBJ,iBAAiBE;QAE9F;QACA7K,2BAA2BqL;IAC7B;IAEA,MAAMG,cAAc,CAAC3C;QACnBlJ,WAAWkJ;IACb;IAEA,MAAM4C,aAAa,CACjBC,WAEAC,AADA,WAEAC,mDAF8D;QAI9DA,WAAWC,OAAO;QAClB,IAAI3L,wBAAwBwL,WAAW;YACrCxL,sBAAsBwL;YACtBI,aAAaF,WAAWG,aAAa,EAAEL,WAAWC;QACpD;IACF;IAEA,MAAMK,cAAc;IAClB,EAAE,GACJ;IAEA,MAAMvF,yBAAyB;QAC7BvG,sBAAsB;QACtB2C,eAAe;IACjB;IAEA,MAAMoJ,aAAa,CACjBC,YACAR,WAEAC,AADA,8DAA8D;QAG9DG,aAAaI,WAAWH,aAAa,EAAEL,WAAWC;IACpD;IAEA,MAAMJ,cAAc,CAClB,AACAD,WACA,AACAN,SACA,AACAG,SACAT,eACAK,iBACAJ,CAR8D,WAEA,KAO9DE,IAL8D;QAO9D,MAAMsB,cAA4B,EAAE;QACpC,MAAMC,oBAAkC,EAAE;QAE1C,sDAAsD;QACtD,MAAMC,iBAAiB9L,YAAY+L,MAAM,CAAC/E,CAAAA,MAAOA,OAAO+D;QACxD,MAAMiB,0BAAsB1O,wBAAAA,EAAkBsC,WAAWkM,eAAehJ,MAAM,EAAE5E;QAEhF,uEAAuE;QACvE,6FAA6F;QAC7F,MAAM+N,iBAAa7P,kBAAAA,IAChB8P,MAAM,CAACJ,gBACPK,KAAK,CAACnN,UAAU;YAACgN;YAAqB;SAAE,GAAG;YAAC;YAAGA;SAAoB,EACnEI,YAAY,CAAClO;QAChB8B,YAAYqD,OAAO,CAAC,CAACyC,aAAqBuG;YACxC,MAAMC,YAAYvB,SAAS,CAACjF,YAAY;YACxC,IAAIwG,WAAW;gBACb,MAAMC,YAAYD,SAAS,CAAC,EAAE,CAACzI,kBAAkB,IAAI2G,kBAAkBA,kBAAkBL;oBAEzE8B;gBAAhB,MAAMtH,SAAUsH,CAAAA,CAAAA,cAAAA,WAAWnG,YAAAA,MAAAA,QAAXmG,gBAAAA,KAAAA,IAAAA,eAA2B,CAAA,GAAMA,YAAWtB,SAAS,KAAK/K,SAAAA,CAAQ,GAAK;gBACvF,MAAM4M,iBAAiBC,mBAAmB3G,gBAAgB4G;gBAC1D,MAAMC,aAAaH,iBAAiB,KAAK;gBAEzC,IAAII,gBAAgB;gBACpB,MAAMC,YAAYN,UAAU/L;gBAC5B,IAAIsM,iBAAiBD;gBACrB,IAAIE,iBAAiBF;gBACrB,IAAIG,SAASxM;gBAEb8L,UAAUjJ,OAAO,CAAC,CAAC8H,WAAkC8B;oBACnD,IAAI,CAAC9B,UAAU5H,IAAI,EAAE;wBACnB,6BAA6B;wBAC7B;oBACF;oBACA,MAAM2J,SAAU/O,mBAAmB,IAAM8O,CAAAA,aAAa,IAAI,KAAI,CAAA;oBAC9D,MAAME,SAAS/D,KAAKrN,GAAG,CAACwQ,UAAU/L,YAAY+L,UAAUnD,KAAKgE,GAAG,CAACjC,UAAU5H,IAAI,IAAInF;oBACnF,MAAMiP,aAAalC,UAAUvK,KAAK,EAAE,qCAAqC;oBAEzE,IAAIuK,UAAU5H,IAAI,IAAI/C,UAAU;wBAC9BsM,kBAAkBK,SAASD;wBAC3BF,SAASF;oBACX,OAAO;wBACLE,SAASD,iBAAiBG;wBAC1BH,iBAAiBC,SAASG;oBAC5B;oBAEAvB,YAAYlI,IAAI,CAAA,WAAA,GACd,OAAA,aAAA,CAAC4J,QAAAA;wBACCtG,KAAK,GAAG+D,UAAU3G,QAAQ,CAAC,CAAC,EAAEiI,YAAY,CAAC,EAAEY,YAAY;wBACzDM,WAAW9K,QAAQ+K,oBAAoB;wBACvCL,QAAQA;wBACR5E,OAAO3I;wBACP6D,GAAGkB;wBACHf,GAAGoJ;wBACHS,SAASd;wBACTe,MAAML;wBACNM,IAAIlP,MAAMmP,YAAY,GAAG,IAAI;wBAC7BC,aAAavI,CAAAA,QAAS4F,WAAWC,WAAWJ,WAAWzF;wBACvDwI,aAAaxI,CAAAA,QAAS4F,WAAWC,WAAWJ,WAAWzF;wBACvDyI,YAAYtC;wBACZuC,SAAS1I,CAAAA,QAASoG,WAAWpG,OAAO6F,WAAWJ;wBAC/CkD,QAAQxC;wBACRtE,SAASgE,UAAUhE,OAAO;wBAC1B+G,cAAYC,aAAahD,WAAWJ,UAAU7G,UAAU;wBACxDkK,UAAU3B,mBAAmBtB,UAAUxH,MAAM,KAAK+I,yBAAyB,IAAIxK;wBAC/EmM,MAAK;;oBAITzB,iBAAiBzB,UAAU5H,IAAI;gBACjC;gBACA,IAAIqJ,kBAAkB,QAAQ,CAACnO,MAAM6P,UAAU,IAAIlF,KAAKmF,IAAI,CAAC3O,cAAc,MAAM4M,gBAAgB;oBAC/FX,kBAAkBnI,IAAI,CAAA,WAAA,GACpB,OAAA,aAAA,CAAC8K,QAAAA;wBACCxH,KAAK,GAAG+D,UAAU3G,QAAQ,CAAC,CAAC,EAAEiI,aAAa;wBAC3C5I,GAAGkB,SAAS/E,YAAY;wBACxBgE,GAAGgJ,iBAAiBpM,WAAWsM,iBAAiB,IAAIC,iBAAiB;wBACrE0B,YAAW;wBACXlB,WAAW9K,QAAQiM,QAAQ;wBAC3BC,eAAa;wBACbC,OAAO;4BAAEC,WAAW;4BAAOC,aAAa;wBAAU;uBAEjD,OAAOrQ,MAAMsQ,eAAe,KAAK,aAC9BtQ,MAAMsQ,eAAe,CAACnC,iBACtBjQ,qCAAAA,EAA2BiQ;gBAGrC;YACF;QACF;QACA,4CAA4C;QAC5C,IAAI,CAACnO,MAAMuQ,eAAe,IAAIvQ,MAAMwQ,sBAAsB,EAAE;YAC1D,MAAMC,mBAAetT,mBAAAA,EAAS0O,UAAU6E,IAAI,CAAC1E;YAC7C,IAAI;gBACF2E,SAASC,cAAc,CAACvQ,eAAesQ,SAASC,cAAc,CAACvQ,YAAawQ,MAAM;YAClF,oCAAoC;YACtC,EAAE,OAAOC,GAAG,CAAC;YACb,MAAMC,eAAe;gBACnBC,YAAYhN,QAAQiN,OAAO;gBAC3BC,IAAI7Q;gBACJ8Q,MAAMV;YACR;YACAA,gBAAgB1S,8BAAAA,EAAoBgT;QACtC;QACA,OAAA,WAAA,GACE,OAAA,aAAA,CAACK,KAAAA;YACC7I,KAAK+D,UAAU3G,QAAQ;YACvB0L,WAAW,CAAC,UAAU,EAAErF,QAAQM,UAAU7G,UAAU,IAAKuG,CAAAA,QAAQE,SAAS,KAAKqB,mBAAAA,CAAkB,GAAK,EAAE,IAAI,CAAC;WAE5GJ,aACAC;IAGP;IAEA,uFAAuF;IACvF,kFAAkF;IAClF,MAAMnB,iBAAiB,CAACL;QACtB,MAAM0F,aAAS3T,kBAAAA,IACZ8P,MAAM,CAACjH,aACPkH,KAAK,CACJnN,UACI;YAACqL,iBAAkBjL,SAASE,KAAK,GAAIL;YAAeG,SAASI,IAAI,GAAIP;SAAc,GACnF;YAACG,SAASI,IAAI,GAAIP;YAAeoL,iBAAkBjL,SAASE,KAAK,GAAIL;SAAc,EAExFmN,YAAY,CAACtM,oBACbkQ,YAAY,CAACjQ;QAChB,OAAOgQ;IACT;IAEA,8DAA8D;IAC9D,MAAMlF,iBAAiB;QACrB,WACEzO,kBAAAA,IACG8P,MAAM,CAAClM,aACR,gEAAgE;QAChE,uEAAuE;QACvE,qGAAqG;SACpGmM,KAAK,CAACnN,UAAU;YAACa;YAAa;SAAE,GAAG;YAAC;YAAGA;SAAY,EACnDuM,YAAY,CAAClO;IAEpB;IAEA,MAAMiI,iBAAiB,CAACL;QACtB/D,gBAAgB+D;IAClB;IAEA,MAAMO,iBAAiB;QACrBtE,gBAAgB;IAClB;IAEA,MAAMkO,eAAexU,OAAMyU,WAAW,CACpC,CAACC;QACC,IAAIA,aAAaA,UAAUC,iBAAiB,CAACtN,MAAM,EAAE;YACnD,MAAM,EAAEsN,mBAAmBC,WAAW,EAAE,GAAGF;YAC3CzQ,QAAQ0J,KAAKrN,GAAG,CAACsU,WAAW,CAACA,YAAYvN,MAAM,GAAG,EAAE,EAAErE,MAAM4K,SAAS,IAAI;QAC3E;IACF,GACA;QAAC5K,MAAM4K,SAAS;KAAC;IAGnB;;;;;GAKC,GACD,MAAMoD,qBAAqB,CAAC3G;QAC1B,OAAOwK,wBAAwBC,QAAQ,CAACzK;IAC1C;IAEA;;GAEC,GACD,MAAM4G,uBAAuB;QAC3B,OAAO4D,wBAAwBxN,MAAM,KAAK;IAC5C;IAEA,MAAMwN,wBAAwB;QAC5B,OAAOrP,gBAAgB6B,MAAM,GAAG,IAAI7B,kBAAkBa,eAAe;YAACA;SAAa,GAAG,EAAE;IAC1F;IAEA,MAAMqM,eAAe,CAAC3K,OAA8BU;YAI3CV;QAHP,MAAMgN,SAAShN,MAAMyD,gBAAgB,IAAI/C;QACzC,MAAMP,SAASH,MAAMG,MAAM;QAC3B,MAAM8M,SAASjN,MAAM0D,gBAAgB,IAAI1D,MAAMD,IAAI;QACnD,OAAOC,CAAAA,CAAAA,kCAAAA,MAAMxB,wBAAAA,AAAwB,MAAA,QAA9BwB,oCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gCAAgCkN,SAAAA,AAAS,KAAI,GAAGF,OAAO,EAAE,EAAE7M,OAAO,EAAE,EAAE8M,OAAO,CAAC,CAAC;IACxF;IAEA,MAAME,oBAAoB,CAACtG;QACzB,6CAA6C,GAC7C,MAAMuG,iBAAarT,qBAAAA,EAAe8M,gBAAgBjL,UAAUnB;QAE5D,IAAIyJ,eAAejL,iBAAAA,CAAWkL,UAAU,EAAE;YACxC,QAAI7K,4BAAAA,EAAsB2B,MAAMsE,iBAAiB,GAAG;gBAClD,uGAAuG;gBACvG,uEAAuE;gBACvE9D,gBAAgB;YAClB,OAAO,IAAIR,MAAMmE,QAAQ,KAAK,QAAQ;gBACpC,8DAA8D;gBAC9D,+DAA+D;gBAC/DhD,gBAAY/C,kBAAAA,EAAY4B,MAAMmE,QAAQ,EAAEnE,MAAMI,WAAW;gBACzD,MAAMgS,iBAAavT,wBAAAA,EAAkBsC,WAAWI,YAAY8C,MAAM,EAAE5E;gBACpE,oFAAoF,GACpF,MAAM4S,eAAWxT,wBAAAA,EAAkBuT,YAAY3R,aAAa4D,MAAM,EAAEhD;gBAEpE,IAAI8Q,cAAcE,UAAU;oBAC1B,4EAA4E;oBAC5E7R,gBAAgBhB,oBAAqB2S,CAAAA,aAAaE,QAAAA,CAAO,GAAK;gBAChE;YACF,OAAO,IAAIrS,MAAMsS,IAAI,KAAK,YAAY9L,YAAYnC,MAAM,GAAG,GAAG;gBAC5D,wFAAwF;gBACxF,MAAMkO,qBAAiBxT,oBAAAA,EAAcoT,YAAY1R,aAAa4D,MAAM,EAAEhD;gBACtE,MAAMmR,eAAezT,wBAAAA,EAAcwT,gBAAgBhR,YAAY8C,MAAM,EAAE5E;gBACvE,MAAM0E,eAAW/F,kBAAAA,EAAY4B,MAAMmE,QAAQ,EAAEnE,MAAMI,WAAW,EAAEoS;gBAChE,MAAMJ,iBAAavT,wBAAAA,EAAkBsF,UAAU5C,YAAY8C,MAAM,EAAE5E;gBACnE,IAAI4S,eAAWxT,wBAAAA,EAAkBuT,YAAY3R,aAAa4D,MAAM,EAAEhD;gBAClE,MAAMoR,UAAWN,CAAAA,aAAaE,QAAAA,CAAO,GAAK;gBAE1C,IAAIK,UAAUC,OAAOC,iBAAiB;gBACtC,IAAI,CAAC5S,MAAM6S,eAAe,EAAE;oBAC1B,gGAAgG;oBAChG,MAAMC,WAAOnU,iCAAAA,EAA2B8B,gBAAgB;oBACxD4R,WAAY5R,CAAAA,aAAa4D,MAAM,GAAGhD,kBAAAA,CAAiB,GAAKyR;oBACxDJ,UAAWP,CAAAA,aAAaE,QAAAA,CAAO,GAAK;gBACtC;gBAEA7R,gBAAgBhB,oBAAoBmL,KAAKrN,GAAG,CAAC,GAAGqN,KAAKnN,GAAG,CAACiV,SAASC;YACpE;QACF;QAEA,OAAO;YACL,GAAG/R,QAAQ;YACXI,MAAMJ,SAASI,IAAI,GAAIP;YACvBK,OAAOF,SAASE,KAAK,GAAIL;QAC3B;IACF;IAEA,MAAMuS,gBAAgB,CAACC,UAAyCC;QAC9D,OAAO,CACL,CAACD,YACCA,SAAS3O,MAAM,GAAG,KAClB2O,SAAS1F,MAAM,CAAC,CAAC4F,OAAsCA,KAAKrO,MAAM,CAACR,MAAM,EAAEA,MAAM,GAAG,KACrF4O,aAAaA,UAAU5O,MAAM,GAAG,KAAK4O,UAAUE,IAAI,CAACtO,CAAAA,SAAUA,OAAOC,IAAI,CAACT,MAAM,GAAG,EAAA,CAAE;IAE1F;IAEA,MAAM+O,iBAAiB;QACrB,OACGpT,CAAAA,MAAMqT,UAAU,GAAG,GAAGrT,MAAMqT,UAAU,CAAC,EAAE,CAAC,GAAG,EAAA,CAAC,GAC/C,CAAC,wBAAwB,EAAE9R,YAAY8C,MAAM,CAAC,mBAAmB,CAAC,GACjE7C,CAAAA,aAAa6C,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE7C,aAAa6C,MAAM,CAAC,cAAc,CAAC,GAAG,IAAA,CAAG;IAEhF;IAEA,MAAMiP,eAAe,CACnBL,WACAxH,QACAC,eACAK;QAEA,MAAMwH,cAAiC,EAAE;QACzC,MAAMC,QAA2B,EAAE;QACnC,MAAMC,OAA0B,EAAE;QAElC,MAAMC,aAAa,CAAC1O,IAAcyG,OAAOzG,KAAMyG,OAAOS,SAAS,KAAK;QAEpE+G,UAAUrO,OAAO,CAAC,CAACC,QAAQ8O;gBAID9O;YAHxB,MAAM+O,kBAAqC,EAAE;YAC7C,MAAMC,YAA+B,EAAE;YACvC,MAAMC,WAA8B,EAAE;YACtC,MAAMC,kBAAkBlP,CAAAA,CAAAA,sBAAAA,OAAOmP,WAAAA,AAAW,MAAA,QAAlBnP,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBkP,eAAAA,AAAe,IACvDpB,OAAOsB,UAAU,CAACpP,OAAOmP,WAAW,CAACD,eAAe,CAACG,QAAQ,MAC7D;YACJ,MAAMC,SAAStP,OAAOO,kBAAkB,IAAI2G,kBAAkBA,kBAAkBL;YAChF,MAAM0I,kBAAkBpG,mBAAmBnJ,OAAOK,MAAM,KAAK+I;YAE7DpJ,OAAOC,IAAI,CAACF,OAAO,CAAC,CAACG,OAAOsP;gBAC1B,MAAMC,KAAKZ,WAAW3O,MAAMC,CAAC;gBAC7B,MAAMuP,KAAKJ,OAAOpP,MAAMI,CAAC;gBAEzB,IAAIkP,WAAW,GAAG;wBA6BCxP,qBACEA,sBACEA;oBA9BrB,MAAM2P,KAAKd,WAAW7O,OAAOC,IAAI,CAACuP,WAAW,EAAE,CAACrP,CAAC;oBACjD,MAAMyP,KAAKN,OAAOtP,OAAOC,IAAI,CAACuP,WAAW,EAAE,CAAClP,CAAC;oBAE7C,IAAI4O,kBAAkB,GAAG;4BASXlP;4BAAAA;wBARZ+O,gBAAgB3O,IAAI,CAAA,WAAA,GAClB,OAAA,aAAA,CAACyP,QAAAA;4BACCnM,KAAK,CAAC,WAAW,EAAEoL,UAAU,CAAC,EAAEU,UAAU;4BAC1CG,IAAIA;4BACJC,IAAIA;4BACJH,IAAIA;4BACJC,IAAIA;4BACJtF,MAAK;4BACL0F,QAAQ9P,CAAAA,sCAAAA,CAAAA,uBAAAA,OAAOmP,WAAAA,AAAW,MAAA,QAAlBnP,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAoB+P,eAAAA,AAAe,MAAA,QAAnC/P,wCAAAA,KAAAA,IAAAA,sCAAuCxF,kBAAAA,CAAOwV,uBAAuB;4BAC7EC,aAAa,IAAIf,kBAAkB;4BACnCgB,eAAc;4BACd/F,SAASoF,kBAAkB,IAAI;;oBAGrC;wBAUiBvP,iCACEA;oBATnBgP,UAAU5O,IAAI,CAAA,WAAA,GACZ,OAAA,aAAA,CAACyP,QAAAA;wBACCnM,KAAK,CAAC,KAAK,EAAEoL,UAAU,CAAC,EAAEU,UAAU;wBACpCG,IAAIA;wBACJC,IAAIA;wBACJH,IAAIA;wBACJC,IAAIA;wBACJI,QAAQ9P,OAAO1C,KAAK;wBACpB2S,aAAajQ,mCAAAA,uBAAAA,OAAOmP,WAAAA,AAAW,MAAA,QAAlBnP,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAoBiQ,WAAAA,AAAW,MAAA,QAA/BjQ,oCAAAA,KAAAA,IAAAA,kCAAmC;wBAChDkQ,eAAelQ,CAAAA,oCAAAA,wBAAAA,OAAOmP,WAAAA,AAAW,MAAA,QAAlBnP,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAoBkQ,aAAa,AAAbA,MAAa,QAAjClQ,sCAAAA,KAAAA,IAAAA,oCAAqC;wBACpDmQ,eAAe,EAAA,CAAEnQ,uBAAAA,OAAOmP,WAAAA,AAAW,MAAA,QAAlBnP,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAoBmQ,eAAe;wBACpDhG,SAASoF,kBAAkB,IAAI;wBAC/BhF,aAAa0B,CAAAA,IAAKmE,aAAanE,GAAGjM,QAAQ8O,WAAWU,UAAUX;wBAC/DwB,cAAclI;;gBAGpB;gBAEA,MAAMmI,QAAQC,UAAUzB,WAAWU;gBACnC,MAAMgB,oBAAoBvR,oBAAoBiB,MAAMC,CAAC,IAAIlB,oBAAoBqR;gBAE7ErB,SAAS7O,IAAI,CAAA,WAAA,GACX,OAAA,aAAA,CAACqQ,UAAAA;oBACC/M,KAAK4M;oBACLjE,IAAIiE;oBACJI,IAAIjB;oBACJkB,IAAIjB;oBACJkB,GAAGrB,mBAAmBiB,oBAAoB,IAAI;oBAC9CpG,MAAM5P,kBAAAA,CAAOwV,uBAAuB;oBACpCF,QAAQ9P,OAAO1C,KAAK;oBACpB2S,aAAa;oBACb9F,SAASoF,kBAAkB,IAAI;oBAC/BhF,aAAa0B,CAAAA,IAAKmE,aAAanE,GAAGjM,QAAQ8O,WAAWU,UAAUX;oBAC/DwB,cAAclI;oBACd0I,qBAAmBtB;oBACnB7E,SAASuB,CAAAA,IAAK6E,aAAa7E,GAAGjM,QAAQ8O,WAAWU;oBACjD7E,QAAQxC;oBACR4C,MAAK;oBACLH,cAAYC,aACV;wBACElH,kBAAkBzD,MAAMyD,gBAAgB;wBACxCtD,QAAQL,OAAOK,MAAM;wBACrBuD,kBAAkB1D,MAAM0D,gBAAgB;wBACxC3D,MAAMC,MAAMI,CAAC;wBACb5B,0BAA0BwB,MAAMxB,wBAAwB;oBAC1D,GACAwB,MAAMC,CAAC;;YAIf;YAEAuO,YAAYtO,IAAI,CAAA,WAAA,GAAC,OAAA,aAAA,CAACmM,KAAAA;gBAAE7I,KAAK,CAAC,gBAAgB,EAAEoL,WAAW;eAAGC;YAC1DJ,MAAMvO,IAAI,CAAA,WAAA,GAAC,OAAA,aAAA,CAACmM,KAAAA;gBAAE7I,KAAK,CAAC,UAAU,EAAEoL,WAAW;eAAGE;YAC9CJ,KAAKxO,IAAI,CAAA,WAAA,GAAC,OAAA,aAAA,CAACmM,KAAAA;gBAAE7I,KAAK,CAAC,SAAS,EAAEoL,WAAW;eAAGG;QAC9C;QAEA,OAAOL,KAAKpP,MAAM,GAAG,IAAA,WAAA,GACnB,OAAA,aAAA,CAAC+M,KAAAA,MACEmC,YAAYlP,MAAM,GAAG,IAAA,WAAA,GAAI,OAAA,aAAA,CAAC+M,KAAAA,MAAGmC,eAAmB,MAChDC,MAAMnP,MAAM,GAAG,IAAA,WAAA,GAAI,OAAA,aAAA,CAAC+M,KAAAA,MAAGoC,SAAa,MAAA,WAAA,GACrC,OAAA,aAAA,CAACpC,KAAAA,MAAGqC,SAEJ;IACN;IAEA,MAAMwB,eAAe,CACnBpO,OACAhC,QACA8O,WACAU,UACAX;QAEA,MAAMkC,eAAWvY,oBAAAA,EAAUwJ,OAAO7E,SAAS6T,OAAO,CAAC,CAAC,EAAE;QAEtD,IAAIC,kBAAkBzB;QACtB,IAAIA,WAAW,GAAG;YAChB,MAAM0B,eAAerC,WAAW7O,OAAOC,IAAI,CAACuP,SAAS,CAACrP,CAAC;YACvD,MAAMgR,eAAetC,WAAW7O,OAAOC,IAAI,CAACuP,WAAW,EAAE,CAACrP,CAAC;YAE3D,IAAI2F,KAAKgE,GAAG,CAACqH,eAAeJ,YAAYjL,KAAKgE,GAAG,CAACoH,eAAeH,WAAW;gBACzEE,kBAAkBzB,WAAW;YAC/B;QACF;QAEAxN,MAAMgG,OAAO;QACboJ,qBAAqBpP,MAAMkG,aAAa,EAAElI,QAAQ8O,WAAWmC;IAC/D;IAEA,MAAMH,eAAe,CACnB9O,OACAhC,QACA8O,WACAU;QAEA4B,qBAAqBpP,MAAMkG,aAAa,EAAElI,QAAQ8O,WAAWU;IAC/D;IAEA,MAAM4B,uBAAuB,CAAClL,QAAoBlG,QAAwB8O,WAAmBU;QAC3F,MAAMtP,QAAQF,OAAOC,IAAI,CAACuP,SAAS;QACnC,MAAM3H,YAAY;YAChB,GAAG3H,KAAK;YACRG,QAAQL,OAAOK,MAAM;YACrB/C,OAAO0C,OAAO1C,KAAK;YACnBoG,KAAK1D,OAAOK,MAAM;YAClBJ,MAAMC,MAAMI,CAAC;YACbsD,kBAAkB1D,MAAM0D,gBAAgB;QAC1C;QACA,MAAMkE,YAAYjM,gBAAgBwV,IAAI,CAAC,CAAC5J,YAAsCA,UAAU7G,UAAU,KAAKV,MAAMC,CAAC;QAE9G8H,aAAa/B,QAAQ2B,WAAWC,WAAWyI,UAAUzB,WAAWU;IAClE;IAEA,MAAMvH,eAAe,CACnB/B,QACA2B,WACA,AACAC,WACAwJ,mBAAmB,EAAE,8BAFyC;QAI9DxS,iBAAiBoH;QACjBlH,eAAeoK,0BAA0BD,mBAAmBtB,UAAUxH,MAAM;QAC5E9B,iBAAiBsJ,UAAUxH,MAAM;QACjC3C,oBAAoBmK,UAAU5H,IAAI;QAClC1C,SAASsK,UAAUvK,KAAK;YACPuK;QAAjB9J,iBAAiB8J,+BAAAA,UAAUlE,gBAAAA,AAAgB,MAAA,QAA1BkE,gCAAAA,KAAAA,IAAAA,8BAA8BC,UAAUlH,UAAU;QACnE3C,iBAAiB4J,UAAUjE,gBAAgB;QAC3CjF,4BACExD,MAAMqL,iBAAiB,GAAGsB,UAAU5G,6BAA6B,GAAG2G,UAAUnJ,wBAAwB;QAExGP,eACE2J,UAAU/G,WAAW,CAAC0H,MAAM,CAAC,CAAC4F,OAAsBjF,0BAA0BD,mBAAmBkF,KAAKhO,MAAM;YAE/FwH;QAAfxJ,eAAewJ,CAAAA,+BAAAA,UAAUlE,gBAAAA,AAAgB,MAAA,QAA1BkE,iCAAAA,KAAAA,IAAAA,+BAA8BC,UAAUlH,UAAU;QACjE1B,mBAAmB/D,MAAMqL,iBAAiB,GAAGsB,UAAUlH,UAAU,GAAG0Q;IACtE;IAEA,MAAMf,YAAY,CAACzB,WAAmBU;QACpC,OAAOnS,aAAa,CAAC,CAAC,EAAEyR,UAAU,CAAC,EAAEU,UAAU;IACjD;IAEA,OAAO,CAACtB,cAAc9S,SAASC,YAAAA,WAAAA,GAC7B,OAAA,aAAA,CAAChB,sBAAAA,EAAAA;QACE,GAAGc,KAAK;QACTqT,YAAYD;QACZxJ,QAAQlJ;QACRqJ,WAAWlM,iBAAAA,CAAW+B,uBAAuB;QAC7CwW,uBAAuBzM;QACvB0M,kBAAkB9M;QAClB/K,mBAAmBA,wBAAAA;QACnBqM,cAAcA;QACdvB,YAAYA;QACZW,WAAWhB;QACXqN,aAAahY,yBAAAA;QACbiY,uBAAuB9V;QACvB6K,YAAYA;QACZkL,aAAaxW,MAAMwW,WAAW,IAAI;QAClCC,WAAWxV;QACXyV,YAAYlK;QACZmK,cAAcnL;QACdoL,aAAapF;QACbqF,mBAAmBpP;QACnBqP,kBAAkB5E;QACjB,GAAIjJ,eAAejL,iBAAAA,CAAWkL,UAAU,IAAI;YAC3C9E,mBAAmB/C;YACnBiD,mBAAmBhD;QACrB,CAAC;QACDyV,UAAU5V;QACVU,cAAcH;QACd,oCAAoC,GACpCsV,UAAU,CAACC;YACT,OAAA,WAAA,GACE,OAAA,aAAA,CAAA,OAAA,QAAA,EAAA,MAAA,WAAA,GACE,OAAA,aAAA,CAACpI,QAAAA;gBAAKqI,KAAKlV;gBAAU8H,OAAM;gBAAO4E,QAAO;gBAAOO,MAAK;gBAAckB,OAAO;oBAAEgH,eAAe;gBAAO;8BAClG,OAAA,aAAA,CAAC/F,KAAAA,MAAGpQ,2BACHsS,aAAapT,UAAU+W,WAAWxL,MAAM,EAAEwL,WAAWvL,aAAa,EAAEuL,WAAWlL,eAAe;QAGrG;uBAGF,OAAA,aAAA,CAACqL,OAAAA;QAAIlG,IAAI5Q;QAAesP,MAAM;QAASO,OAAO;YAAEnB,SAAS;QAAI;QAAGS,cAAY;;AAEhF,GAAG;AACH7P,wBAAwByX,WAAW,GAAG"}
@@ -21,7 +21,7 @@ const _index2 = require("../Legends/index");
21
21
  const _d3scale = require("d3-scale");
22
22
  const _d3format = require("d3-format");
23
23
  const _d3timeformat = require("d3-time-format");
24
- const _imageexportutils = require("../../utilities/image-export-utils");
24
+ const _hooks = require("../../utilities/hooks");
25
25
  const HeatMapChart = /*#__PURE__*/ _react.forwardRef((props = {
26
26
  xAxisCategoryOrder: 'default',
27
27
  yAxisCategoryOrder: 'default',
@@ -44,9 +44,7 @@ const HeatMapChart = /*#__PURE__*/ _react.forwardRef((props = {
44
44
  const _calloutAnchorPoint = _react.useRef(null);
45
45
  const _emptyChartId = (0, _reactutilities.useId)('_HeatMap_empty');
46
46
  const _margins = _react.useRef({});
47
- const cartesianChartRef = _react.useRef(null);
48
- const _legendsRef = _react.useRef(null);
49
- const _isRtl = (0, _index.useRtl)();
47
+ const { cartesianChartRef, legendsRef: _legendsRef } = (0, _hooks.useImageExport)(props.componentRef, props.hideLegend);
50
48
  const [selectedLegend, setSelectedLegend] = _react.useState('');
51
49
  const [activeLegend, setActiveLegend] = _react.useState('');
52
50
  const [isPopoverOpen, setPopoverOpen] = _react.useState(false);
@@ -60,17 +58,6 @@ const HeatMapChart = /*#__PURE__*/ _react.forwardRef((props = {
60
58
  x: 0,
61
59
  y: 0
62
60
  });
63
- _react.useImperativeHandle(props.componentRef, ()=>{
64
- var _cartesianChartRef_current;
65
- var _cartesianChartRef_current_chartContainer;
66
- return {
67
- chartContainer: (_cartesianChartRef_current_chartContainer = (_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer) !== null && _cartesianChartRef_current_chartContainer !== void 0 ? _cartesianChartRef_current_chartContainer : null,
68
- toImage: (opts)=>{
69
- var _cartesianChartRef_current, _legendsRef_current;
70
- return (0, _imageexportutils.toImage)((_cartesianChartRef_current = cartesianChartRef.current) === null || _cartesianChartRef_current === void 0 ? void 0 : _cartesianChartRef_current.chartContainer, (_legendsRef_current = _legendsRef.current) === null || _legendsRef_current === void 0 ? void 0 : _legendsRef_current.toSVG, _isRtl, opts);
71
- }
72
- };
73
- }, []);
74
61
  function _getMinMaxOfYAxis() {
75
62
  return {
76
63
  startValue: 0,