@fluentui/react-charts 0.0.0-nightly-20250627-0405.1 → 0.0.0-nightly-20250701-0405.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -15
- package/dist/index.d.ts +5 -0
- package/lib/components/AreaChart/AreaChart.js +3 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +41 -9
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +28 -3
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +8 -3
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +3 -3
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +4 -30
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +3 -3
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +13 -15
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +7 -7
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +3 -3
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/utilities/utilities.js +11 -5
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +2 -2
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +40 -8
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +45 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +8 -3
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +0 -61
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +3 -53
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +12 -14
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +6 -6
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +2 -2
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +16 -7
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["correctYearMonth","findArrayAttributes","getColor","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","min","max","yaxis2","range","secondaryYAxistitle","undefined","secondaryYScaleOptions","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","isYearArray","x","_series_x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","yValue","legendName","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","keys","isArrayOfType","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n // let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n // const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n"],"names":["correctYearMonth","findArrayAttributes","getColor","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","min","max","yaxis2","range","secondaryYAxistitle","undefined","secondaryYScaleOptions","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","isYearArray","x","_series_x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","barGapMax","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","enableReflow","yValue","legendName","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","keys","isArrayOfType","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -376,9 +376,9 @@ const GroupedVerticalBarChart = /*#__PURE__*/ _react.forwardRef((props = {
|
|
|
376
376
|
const tooltipProps = {
|
|
377
377
|
tooltipCls: classes.tooltip,
|
|
378
378
|
id: _tooltipId,
|
|
379
|
-
|
|
379
|
+
axis: xAxisElement
|
|
380
380
|
};
|
|
381
|
-
xAxisElement && (0, _index.
|
|
381
|
+
xAxisElement && (0, _index.tooltipOfAxislabels)(tooltipProps);
|
|
382
382
|
}
|
|
383
383
|
return /*#__PURE__*/ _react.createElement("g", {
|
|
384
384
|
key: singleSet.indexNum,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GroupedVerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfXAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n DataVizPalette,\n getColorFromToken,\n ChartPopoverProps,\n Chart,\n} from '../../index';\n\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\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\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((props = { maxBarWidth: 24 }, forwardedRef) => {\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 _keys: string[] = [];\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSX.Element[] = [];\n let _refArray: RefArrayData[] = [];\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 const cartesianChartRef = React.useRef<Chart>(null);\n const Y_ORIGIN: number = 0;\n\n const [color, setColor] = React.useState<string>('');\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>('');\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 [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\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 }),\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 = keys.length * bar_width + (keys.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + keys.length + (keys.length - 1) * BAR_GAP_RATE),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (points: GroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: GVDataPoint[] = [];\n\n points.forEach((point: GroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: GVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: GVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint, seriesIndex) => {\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (points: GroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: GVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = _createDataset(points);\n return {\n keys,\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 = (points: GroupedVerticalBarChartData[]): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n getColorFromToken(DataVizPalette.color4),\n getColorFromToken(DataVizPalette.color5),\n ];\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: GroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: GVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n />\n );\n };\n\n const points = props.data;\n const { keys, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(points!);\n _keys = keys;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const _xAxisType: XAxisTypes = getTypeOfAxis(points![0].name, true) as XAxisTypes;\n const legends: JSX.Element = _getLegendData(points!);\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-anyAdd 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 // 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 clickPosition,\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover,\n hoverXValue,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\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: StringAxis | NumericAxis,\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 xScale0.bandwidth() / (_keys.length + (_keys.length - 1) * BAR_GAP_RATE),\n );\n _groupWidth = (_keys.length + (_keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\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 _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n 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 updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\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 pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === pointData.legend && refArrayIndexNumber === index) {\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n });\n };\n\n const _refCallback = (element: SVGRectElement, legendTitle: string, refIndexNumber: number): void => {\n _refArray[refIndexNumber] = { index: legendTitle, refElement: element };\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 ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const tempDataSet = Object.keys(datasetForBars[0]).splice(0, keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n const yBarScale = pointData.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - _barWidth) / 2;\n const startColor = pointData.color ? pointData.color : getNextColor(index, 0);\n\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n const barGap = (VERTICAL_BAR_GAP / 2) * (index > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\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 // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n <rect\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!props.hideTooltip && (_legendHighlighted(pointData.legend) || _noLegendHighlighted())}\n opacity={_getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n _refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={startColor}\n rx={0}\n onMouseOver={onBarHover.bind(null, pointData, singleSet)}\n onMouseMove={onBarHover.bind(null, pointData, singleSet)}\n onMouseOut={_onBarLeave}\n onFocus={onBarFocus.bind(null, pointData, singleSet, refIndexNumber)}\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 </React.Fragment>,\n );\n if (\n pointData.data &&\n !props.hideLabels &&\n _barWidth >= 16 &&\n (_legendHighlighted(pointData.legend) || _noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + _barWidth / 2}\n y={pointData.data >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(pointData.data)\n : formatScientificLimitWidth(pointData.data)}\n </text>,\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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - _groupWidth) / 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(keys)\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 = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\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 = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\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 = totalWidth / (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (keys.length + (keys.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(xAxisLabels) + 20;\n reqWidth = (xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_xAxisLabels.length} groups of ${_keys.length} bars each. `\n );\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={_xAxisType}\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={() => {\n return <g>{_groupedVerticalBarGraph}</g>;\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":["GroupedVerticalBarChart","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","BAR_GAP_RATE","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","React","forwardRef","props","maxBarWidth","forwardedRef","_tooltipId","useId","_emptyChartId","_useRtl","useRtl","_domainMargin","_keys","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_refArray","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","Y_ORIGIN","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","YValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","classes","useGroupedVerticalBarChartStyles_unstable","useEffect","areArraysEqual","useImperativeHandle","componentRef","chartContainer","current","_adjustProps","getBarWidth","barWidth","getScalePadding","xAxisInnerPadding","keys","length","xAxisOuterPadding","_createDataset","points","datasetForBars","dataset","forEach","point","index","singleDatasetPoint","singleDatasetPointForBars","singleDataSeries","series","seriesPoint","seriesIndex","key","data","push","xAxisPoint","name","indexNum","groupSeries","stackCallOutAccessibilityData","_createDataSetOfGVBC","xAxisLabels","map","singlePoint","singleKey","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","defaultPalette","getColorFromToken","DataVizPalette","color1","color2","color3","color4","color5","actions","singleChartData","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","_xAxisType","getTypeOfAxis","_getMinMaxOfYAxis","yAxisType","useSecondaryYScale","values","startValue","d3Min","endValue","d3Max","yMax","max","yMaxValue","calloutProps","XValue","YValue","culture","isCartesian","getAccessibleDataObject","tickParams","tickValues","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","margins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","updatePosition","newX","newY","threshold","distance","sqrt","pow","onBarHover","pointData","groupData","mouseEvent","persist","clientX","clientY","xAxisCalloutData","yAxisCalloutData","isCalloutForStack","_onBarLeave","onBarFocus","refArrayIndexNumber","obj","_refCallback","element","refIndexNumber","refElement","singleGroup","barLabelsForGroup","tempDataSet","Object","splice","datasetKey","yBarScale","xPoint","startColor","getNextColor","yBaseline","yPositiveStart","yNegativeStart","yPoint","barGap","height","abs","Fragment","rect","className","opacityChangeOnHover","width","data-is-focusable","hideTooltip","ref","e","fill","rx","onMouseOver","bind","onMouseMove","onMouseOut","onFocus","onBlur","onClick","aria-label","getAriaLabel","tabIndex","role","hideLabels","text","textAnchor","barLabel","aria-hidden","yAxisTickFormat","formatScientificLimitWidth","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","d3Select","call","document","getElementById","remove","tooltipProps","tooltipCls","tooltip","id","xAxis","tooltipOfXAxislabels","g","transform","x0Axis","d3ScaleBand","domain","range","paddingInner","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupGapRate","XAxisTypes","StringAxis","isScalePaddingDefined","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","step","calculateLongestLabelWidth","margin2","min","_isChartEmpty","item","_getChartTitle","chartTitle","CartesianChart","chartType","ChartTypes","getMinMaxOfYAxis","legendBars","xAxisType","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["GroupedVerticalBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { select as d3Select } from 'd3-selection';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId } 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 getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n RefArrayData,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n DataVizPalette,\n getColorFromToken,\n ChartPopoverProps,\n Chart,\n} from '../../index';\n\ntype StringAxis = D3Axis<string>;\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\n// x1_inner_padding = space_between_bars / (space_between_bars + bar_width)\n// => space_between_bars = (x1_inner_padding / (1 - x1_inner_padding)) * bar_width\n/** Rate at which the space between the bars in a group changes wrt the bar width */\nconst BAR_GAP_RATE = X1_INNER_PADDING / (1 - X1_INNER_PADDING);\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\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((props = { maxBarWidth: 24 }, forwardedRef) => {\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 _keys: string[] = [];\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSX.Element[] = [];\n let _refArray: RefArrayData[] = [];\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 const cartesianChartRef = React.useRef<Chart>(null);\n const Y_ORIGIN: number = 0;\n\n const [color, setColor] = React.useState<string>('');\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>('');\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 [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\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 }),\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 = keys.length * bar_width + (keys.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + keys.length + (keys.length - 1) * BAR_GAP_RATE),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (points: GroupedVerticalBarChartData[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n const dataset: GVDataPoint[] = [];\n\n points.forEach((point: GroupedVerticalBarChartData, index: number) => {\n const singleDatasetPoint: GVDataPoint = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const singleDataSeries: GVBarChartSeriesPoint[] = [];\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint, seriesIndex) => {\n singleDatasetPoint[seriesPoint.key] = seriesPoint.data;\n singleDatasetPointForBars[seriesPoint.key] = {\n ...seriesPoint,\n };\n singleDataSeries.push(seriesPoint);\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = singleDataSeries;\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n dataset.push(singleDatasetPoint);\n });\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (points: GroupedVerticalBarChartData[]) => {\n const keys: string[] = [];\n const xAxisLabels: string[] = points.map(singlePoint => singlePoint.name);\n points[0].series.forEach((singleKey: GVBarChartSeriesPoint) => {\n keys.push(singleKey.key);\n });\n const datasetForBars = _createDataset(points);\n return {\n keys,\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 = (points: GroupedVerticalBarChartData[]): JSX.Element => {\n const data = points;\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n getColorFromToken(DataVizPalette.color4),\n getColorFromToken(DataVizPalette.color5),\n ];\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: GroupedVerticalBarChartData) => {\n singleChartData.series.forEach((point: GVBarChartSeriesPoint) => {\n let color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n />\n );\n };\n\n const points = props.data;\n const { keys, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(points!);\n _keys = keys;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const _xAxisType: XAxisTypes = getTypeOfAxis(points![0].name, true) as XAxisTypes;\n const legends: JSX.Element = _getLegendData(points!);\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-anyAdd 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 // 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 clickPosition,\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover,\n hoverXValue,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\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: StringAxis | NumericAxis,\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 xScale0.bandwidth() / (_keys.length + (_keys.length - 1) * BAR_GAP_RATE),\n );\n _groupWidth = (_keys.length + (_keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSX.Element[] = [];\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 _getOpacity = (legendTitle: string): string => {\n const opacity = _legendHighlighted(legendTitle) || _noLegendHighlighted() ? '' : '0.1';\n return opacity;\n };\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n 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 updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\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 pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n refArrayIndexNumber: number,\n ): void => {\n _refArray.forEach((obj: RefArrayData, index: number) => {\n if (obj.index === pointData.legend && refArrayIndexNumber === index) {\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData!);\n setYCalloutValue(pointData.yAxisCalloutData!);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(groupData.groupSeries);\n setHoverXValue(pointData.xAxisCalloutData!);\n }\n });\n };\n\n const _refCallback = (element: SVGRectElement, legendTitle: string, refIndexNumber: number): void => {\n _refArray[refIndexNumber] = { index: legendTitle, refElement: element };\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 ): JSX.Element => {\n const singleGroup: JSX.Element[] = [];\n const barLabelsForGroup: JSX.Element[] = [];\n\n const tempDataSet = Object.keys(datasetForBars[0]).splice(0, keys.length);\n tempDataSet.forEach((datasetKey: string, index: number) => {\n const refIndexNumber = singleSet.indexNum * tempDataSet.length + index;\n const pointData = singleSet[datasetKey];\n const yBarScale = pointData.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n // To align the centers of the generated bandwidth and the calculated one when they differ,\n // use the following addend.\n const xPoint = xScale1(datasetKey) + (xScale1.bandwidth() - _barWidth) / 2;\n const startColor = pointData.color ? pointData.color : getNextColor(index, 0);\n\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n const barGap = (VERTICAL_BAR_GAP / 2) * (index > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\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 // Not rendering data with 0.\n pointData.data &&\n singleGroup.push(\n <React.Fragment key={`${singleSet.indexNum}-${index}`}>\n <rect\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!props.hideTooltip && (_legendHighlighted(pointData.legend) || _noLegendHighlighted())}\n opacity={_getOpacity(pointData.legend)}\n ref={(e: SVGRectElement | null) => {\n _refCallback(e!, pointData.legend, refIndexNumber);\n }}\n fill={startColor}\n rx={0}\n onMouseOver={onBarHover.bind(null, pointData, singleSet)}\n onMouseMove={onBarHover.bind(null, pointData, singleSet)}\n onMouseOut={_onBarLeave}\n onFocus={onBarFocus.bind(null, pointData, singleSet, refIndexNumber)}\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 </React.Fragment>,\n );\n if (\n pointData.data &&\n !props.hideLabels &&\n _barWidth >= 16 &&\n (_legendHighlighted(pointData.legend) || _noLegendHighlighted())\n ) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${index}`}\n x={xPoint + _barWidth / 2}\n y={pointData.data >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(pointData.data)\n : formatScientificLimitWidth(pointData.data)}\n </text>,\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() - _groupWidth) / 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(keys)\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 = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the groups changes wrt the group width */\n const groupGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\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 = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * _barWidth;\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\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 = totalWidth / (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate);\n const barBandwidth = groupBandwidth / (keys.length + (keys.length - 1) * BAR_GAP_RATE);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = (keys.length + (keys.length - 1) * BAR_GAP_RATE) * barWidth;\n let reqWidth = (xAxisLabels.length + (xAxisLabels.length - 1) * groupGapRate) * groupWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(xAxisLabels) + 20;\n reqWidth = (xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_xAxisLabels.length} groups of ${_keys.length} bars each. `\n );\n };\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n calloutProps={calloutProps}\n legendBars={legends}\n xAxisType={_xAxisType}\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={() => {\n return <g>{_groupedVerticalBarGraph}</g>;\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":["GroupedVerticalBarChart","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","BAR_GAP_RATE","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","React","forwardRef","props","maxBarWidth","forwardedRef","_tooltipId","useId","_emptyChartId","_useRtl","useRtl","_domainMargin","_keys","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_refArray","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","Y_ORIGIN","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","YValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","classes","useGroupedVerticalBarChartStyles_unstable","useEffect","areArraysEqual","useImperativeHandle","componentRef","chartContainer","current","_adjustProps","getBarWidth","barWidth","getScalePadding","xAxisInnerPadding","keys","length","xAxisOuterPadding","_createDataset","points","datasetForBars","dataset","forEach","point","index","singleDatasetPoint","singleDatasetPointForBars","singleDataSeries","series","seriesPoint","seriesIndex","key","data","push","xAxisPoint","name","indexNum","groupSeries","stackCallOutAccessibilityData","_createDataSetOfGVBC","xAxisLabels","map","singlePoint","singleKey","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","defaultPalette","getColorFromToken","DataVizPalette","color1","color2","color3","color4","color5","actions","singleChartData","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","createElement","Legends","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","_xAxisType","getTypeOfAxis","_getMinMaxOfYAxis","yAxisType","useSecondaryYScale","values","startValue","d3Min","endValue","d3Max","yMax","max","yMaxValue","calloutProps","XValue","YValue","culture","isCartesian","getAccessibleDataObject","tickParams","tickValues","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","margins","_getOpacity","legendTitle","opacity","_legendHighlighted","_noLegendHighlighted","updatePosition","newX","newY","threshold","distance","sqrt","pow","onBarHover","pointData","groupData","mouseEvent","persist","clientX","clientY","xAxisCalloutData","yAxisCalloutData","isCalloutForStack","_onBarLeave","onBarFocus","refArrayIndexNumber","obj","_refCallback","element","refIndexNumber","refElement","singleGroup","barLabelsForGroup","tempDataSet","Object","splice","datasetKey","yBarScale","xPoint","startColor","getNextColor","yBaseline","yPositiveStart","yNegativeStart","yPoint","barGap","height","abs","Fragment","rect","className","opacityChangeOnHover","width","data-is-focusable","hideTooltip","ref","e","fill","rx","onMouseOver","bind","onMouseMove","onMouseOut","onFocus","onBlur","onClick","aria-label","getAriaLabel","tabIndex","role","hideLabels","text","textAnchor","barLabel","aria-hidden","yAxisTickFormat","formatScientificLimitWidth","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","d3Select","call","document","getElementById","remove","tooltipProps","tooltipCls","tooltip","id","axis","tooltipOfAxislabels","g","transform","x0Axis","d3ScaleBand","domain","range","paddingInner","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupGapRate","XAxisTypes","StringAxis","isScalePaddingDefined","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","step","calculateLongestLabelWidth","margin2","min","_isChartEmpty","item","_getChartTitle","chartTitle","CartesianChart","chartType","ChartTypes","getMinMaxOfYAxis","legendBars","xAxisType","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|