@fluentui/react-charts 0.0.0-nightly-20250818-0407.1 → 0.0.0-nightly-20250819-0407.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 +15 -15
- package/dist/index.d.ts +56 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js +16 -8
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +27 -16
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +30 -9
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +8 -2
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +12 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +7 -7
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/utilities.js +33 -1
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +16 -8
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +27 -16
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +30 -9
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +10 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +12 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +7 -7
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +33 -0
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\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 { format as d3Format } from 'd3-format';\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 } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { findNumericMinMaxOfY, formatScientificLimitWidth, MIN_DONUT_RADIUS } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n isInvalidValue,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { extractColor, resolveColor } from './PlotlyColorAdapter';\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\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\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 _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\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 : MIN_DONUT_RADIUS;\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 roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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 const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const yVal: number = rangeYValues[index2] as number;\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n const dashType = series.line?.dash || 'solid';\n const legendShape =\n dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal);\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\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 wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nconst createColorScale = (layout: Partial<Layout>, series: Partial<PlotData>) => {\n const scale = layout?.coloraxis?.colorscale as Array<[number, string]>;\n const colorValues = series.marker?.color as number[];\n const [dMin, dMax] = [\n layout?.coloraxis?.cmin ?? Math.min(...colorValues),\n layout?.coloraxis?.cmax ?? Math.max(...colorValues),\n ];\n\n // Normalize colorscale domain to actual data domain\n const scaleDomain = scale.map(([pos]) => dMin + pos * (dMax - dMin));\n const scaleColors = scale.map(item => item[1]);\n\n return d3ScaleLinear<string>().domain(scaleDomain).range(scaleColors);\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index1, legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: series.y![index2] as number,\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 const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\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 wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\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 = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, 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: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n isScatterMarkers: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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 { legends, hideLegend } = getLegendProps(input.data, input.layout);\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n // string case is not possible for scatter chart as it is already filtered out in declarative chart\n const isXYearCategory = false;\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n const dashType = series.line?.dash || 'solid';\n const legendShape =\n dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot' ? 'dottedLine' : 'default';\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: seriesColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\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 hideLegend,\n optimizeLargeData: numDataPoints > 1000,\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 useUTC: false,\n hideLegend,\n optimizeLargeData: numDataPoints > 1000,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .reverse()\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 hideLegend,\n roundCorners: 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 xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (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 wrapXAxisLables: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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 if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, 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: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\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 extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\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 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 styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n const fontColorRaw = header?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n\n if (Array.isArray(fontColorRaw)) {\n const colorEntry = fontColorRaw[colIndex];\n if (Array.isArray(colorEntry)) {\n fontColor = typeof colorEntry[0] === 'string' ? colorEntry[0] : undefined;\n } else if (typeof colorEntry === 'string') {\n fontColor = colorEntry;\n }\n } else if (typeof fontColorRaw === 'string') {\n fontColor = fontColorRaw;\n }\n\n const fontSizeRaw = header?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n\n if (Array.isArray(fontSizeRaw)) {\n fontSize = Array.isArray(fontSizeRaw[0]) ? fontSizeRaw[0][colIndex] : fontSizeRaw[colIndex];\n } else if (typeof fontSizeRaw === 'number') {\n fontSize = fontSizeRaw;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const fillColorRaw = header?.fill?.color;\n const backgroundColor = Array.isArray(fillColorRaw) ? fillColorRaw[updatedColIndex] : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] : textAlignRaw;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = tableData.cells!.font ? tableData.cells! : input.layout?.template?.data?.table![0].cells;\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const rawFontColor = cells?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n if (Array.isArray(rawFontColor)) {\n const entry = rawFontColor[colIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawFontColor === 'string') {\n fontColor = rawFontColor;\n }\n\n const rawFontSize = cells?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n if (Array.isArray(rawFontSize)) {\n const entry = rawFontSize[colIndex];\n const fontSizeValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontSize = typeof fontSizeValue === 'number' ? fontSizeValue : undefined;\n } else if (typeof rawFontSize === 'number') {\n fontSize = rawFontSize;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const rawBackgroundColor = cells?.fill?.color;\n let backgroundColor: React.CSSProperties['backgroundColor'] | undefined;\n if (Array.isArray(rawBackgroundColor)) {\n const entry = rawBackgroundColor[updatedColIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n backgroundColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawBackgroundColor === 'string') {\n backgroundColor = rawBackgroundColor;\n }\n\n const rawTextAlign = Array.isArray(cells?.align) ? cells.align[colIndex] : cells?.align;\n const textAlign = rawTextAlign as React.CSSProperties['textAlign'] | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n return {\n headers: normalizeHeaders(\n tableData.header?.values ?? [],\n tableData.header?.font ? tableData.header : input.layout?.template?.data?.table![0].header,\n ),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n for (let ptindex = 0; ptindex < (series.r?.length ?? 0); ptindex++) {\n if (isInvalidValue(series.theta?.[ptindex]) || isInvalidValue(series.r?.[ptindex])) {\n continue;\n }\n\n const thetaRad = ((series.theta![ptindex] as number) * Math.PI) / 180;\n const radius = series.r![ptindex] as number;\n series.x.push(radius * Math.cos(thetaRad));\n series.y.push(radius * Math.sin(thetaRad));\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isStringArray = (arr: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return isArrayOfType(arr, (value: any) => typeof value === 'string' || value === null);\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(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\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' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\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\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegends = data.every((series: Partial<PlotData>) => series.showlegend === false);\n\n return {\n legends,\n hideLegend: layout?.showlegend === false ? true : hideLegends,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number) => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>) => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isYearArray","isInvalidValue","curveCardinal","d3CurveCardinal","extractColor","resolveColor","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","series","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","yaxis2","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","value","getNumberAtIndexOrDefault","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","coloraxis","colorscale","createColorScale","extractedBarColors","extractedLineColors","line","isStringArray","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","yVal","type","push","lineColor","lineOptions","getLineOptions","dashType","legendShape","useSecondaryYScale","barWidth","mode","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","scale","colorValues","dMin","dMax","cmin","cmax","scaleDomain","pos","scaleColors","item","domain","transformPlotlyJsonToGVBCProps","gvbcData","name","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToScatterChartProps","isAreaChart","isScatterMarkers","seriesColor","fill","markerSizes","markerSize","flat","yMinMaxValues","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","startValue","endValue","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","prefix","suffix","formatted","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColorRaw","font","fontColor","colorEntry","fontSizeRaw","fontSize","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","sindex","ptindex","r","theta","thetaRad","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","isString","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","hideLegends","every","isFinite","ranges"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\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 { format as d3Format } from 'd3-format';\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 } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { findNumericMinMaxOfY, formatScientificLimitWidth, MIN_DONUT_RADIUS } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n isInvalidValue,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { extractColor, resolveColor } from './PlotlyColorAdapter';\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\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\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\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 _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\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 : MIN_DONUT_RADIUS;\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 roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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 const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const yVal: number = rangeYValues[index2] as number;\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const dashType = series.line?.dash || 'solid';\n const legendShape =\n dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot'\n ? 'dottedLine'\n : series.mode?.includes('markers')\n ? 'circle'\n : 'default';\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal);\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\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 wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nconst createColorScale = (layout: Partial<Layout>, series: Partial<PlotData>) => {\n const scale = layout?.coloraxis?.colorscale as Array<[number, string]>;\n const colorValues = series.marker?.color as number[];\n const [dMin, dMax] = [\n layout?.coloraxis?.cmin ?? Math.min(...colorValues),\n layout?.coloraxis?.cmax ?? Math.max(...colorValues),\n ];\n\n // Normalize colorscale domain to actual data domain\n const scaleDomain = scale.map(([pos]) => dMin + pos * (dMax - dMin));\n const scaleColors = scale.map(item => item[1]);\n\n return d3ScaleLinear<string>().domain(scaleDomain).range(scaleColors);\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index1, legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: series.y![index2] as number,\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 const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\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 wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\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 = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, 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: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n chartType: ScatterChartTypes,\n isScatterMarkers: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\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 { legends, hideLegend } = getLegendProps(input.data, input.layout);\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const dashType = series.line?.dash || 'solid';\n const legendShape =\n dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot'\n ? 'dottedLine'\n : series.mode?.includes('markers')\n ? 'circle'\n : 'default';\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n })),\n color: seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n chartTitle,\n scatterChartData: 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 hideLegend,\n optimizeLargeData: numDataPoints > 1000,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : 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 useUTC: false,\n hideLegend,\n optimizeLargeData: numDataPoints > 1000,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .reverse()\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 hideLegend,\n roundCorners: 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 xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (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 wrapXAxisLables: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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 if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, 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: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\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 extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\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 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 styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n const fontColorRaw = header?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n\n if (Array.isArray(fontColorRaw)) {\n const colorEntry = fontColorRaw[colIndex];\n if (Array.isArray(colorEntry)) {\n fontColor = typeof colorEntry[0] === 'string' ? colorEntry[0] : undefined;\n } else if (typeof colorEntry === 'string') {\n fontColor = colorEntry;\n }\n } else if (typeof fontColorRaw === 'string') {\n fontColor = fontColorRaw;\n }\n\n const fontSizeRaw = header?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n\n if (Array.isArray(fontSizeRaw)) {\n fontSize = Array.isArray(fontSizeRaw[0]) ? fontSizeRaw[0][colIndex] : fontSizeRaw[colIndex];\n } else if (typeof fontSizeRaw === 'number') {\n fontSize = fontSizeRaw;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const fillColorRaw = header?.fill?.color;\n const backgroundColor = Array.isArray(fillColorRaw) ? fillColorRaw[updatedColIndex] : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] : textAlignRaw;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = tableData.cells!.font ? tableData.cells! : input.layout?.template?.data?.table![0].cells;\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const rawFontColor = cells?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n if (Array.isArray(rawFontColor)) {\n const entry = rawFontColor[colIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawFontColor === 'string') {\n fontColor = rawFontColor;\n }\n\n const rawFontSize = cells?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n if (Array.isArray(rawFontSize)) {\n const entry = rawFontSize[colIndex];\n const fontSizeValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontSize = typeof fontSizeValue === 'number' ? fontSizeValue : undefined;\n } else if (typeof rawFontSize === 'number') {\n fontSize = rawFontSize;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const rawBackgroundColor = cells?.fill?.color;\n let backgroundColor: React.CSSProperties['backgroundColor'] | undefined;\n if (Array.isArray(rawBackgroundColor)) {\n const entry = rawBackgroundColor[updatedColIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n backgroundColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawBackgroundColor === 'string') {\n backgroundColor = rawBackgroundColor;\n }\n\n const rawTextAlign = Array.isArray(cells?.align) ? cells.align[colIndex] : cells?.align;\n const textAlign = rawTextAlign as React.CSSProperties['textAlign'] | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n return {\n headers: normalizeHeaders(\n tableData.header?.values ?? [],\n tableData.header?.font ? tableData.header : input.layout?.template?.data?.table![0].header,\n ),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n for (let ptindex = 0; ptindex < (series.r?.length ?? 0); ptindex++) {\n if (isInvalidValue(series.theta?.[ptindex]) || isInvalidValue(series.r?.[ptindex])) {\n continue;\n }\n\n const thetaRad = ((series.theta![ptindex] as number) * Math.PI) / 180;\n const radius = series.r![ptindex] as number;\n series.x.push(radius * Math.cos(thetaRad));\n series.y.push(radius * Math.sin(thetaRad));\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const isStringArray = (arr: any) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return isArrayOfType(arr, (value: any) => typeof value === 'string' || value === null);\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(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\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' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\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\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegends = data.every((series: Partial<PlotData>) => series.showlegend === false);\n\n return {\n legends,\n hideLegend: layout?.showlegend === false ? true : hideLegends,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number) => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>) => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isYearArray","isInvalidValue","curveCardinal","d3CurveCardinal","extractColor","resolveColor","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","series","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","yaxis2","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","value","getNumberAtIndexOrDefault","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","coloraxis","colorscale","createColorScale","extractedBarColors","extractedLineColors","line","isStringArray","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","yVal","type","push","lineColor","lineOptions","mode","getLineOptions","dashType","legendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","scale","colorValues","dMin","dMax","cmin","cmax","scaleDomain","pos","scaleColors","item","domain","transformPlotlyJsonToGVBCProps","gvbcData","name","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","fill","markerSizes","textValues","markerSize","flat","yMinMaxValues","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","startValue","endValue","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","prefix","suffix","formatted","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColorRaw","font","fontColor","colorEntry","fontSizeRaw","fontSize","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","sindex","ptindex","r","theta","thetaRad","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","isString","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","hideLegends","every","isFinite","ranges"],"mappings":"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"}
|