@fluentui/react-charts 0.0.0-nightly-20250828-0408.1 → 0.0.0-nightly-20250829-0406.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +15 -15
  2. package/dist/index.d.ts +27 -2
  3. package/lib/components/AreaChart/AreaChart.js +3 -3
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +4 -4
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  9. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +40 -3
  10. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  11. package/lib/components/FunnelChart/funnelGeometry.js.map +1 -1
  12. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  13. package/lib/components/LineChart/LineChart.js +195 -241
  14. package/lib/components/LineChart/LineChart.js.map +1 -1
  15. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  16. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  17. package/lib/components/ScatterChart/ScatterChart.js +30 -45
  18. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  19. package/lib/components/VerticalBarChart/VerticalBarChart.js +2 -2
  20. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  21. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +2 -2
  22. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  23. package/lib/types/DataPoint.js +6 -1
  24. package/lib/types/DataPoint.js.map +1 -1
  25. package/lib/utilities/Common.styles.raw.js.map +1 -1
  26. package/lib/utilities/image-export-utils.js.map +1 -1
  27. package/lib/utilities/utilities.js +130 -127
  28. package/lib/utilities/utilities.js.map +1 -1
  29. package/lib/utilities/vbc-utils.js.map +1 -1
  30. package/lib-commonjs/components/AreaChart/AreaChart.js +2 -2
  31. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  32. package/lib-commonjs/components/CommonComponents/CartesianChart.js +4 -4
  33. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  34. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  35. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  36. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +39 -2
  37. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  38. package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -1
  39. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  40. package/lib-commonjs/components/LineChart/LineChart.js +193 -239
  41. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  42. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  43. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  44. package/lib-commonjs/components/ScatterChart/ScatterChart.js +28 -43
  45. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  46. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
  47. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  48. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  49. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  50. package/lib-commonjs/types/DataPoint.js +6 -1
  51. package/lib-commonjs/types/DataPoint.js.map +1 -1
  52. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
  53. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  54. package/lib-commonjs/utilities/utilities.js +142 -118
  55. package/lib-commonjs/utilities/utilities.js.map +1 -1
  56. package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
  57. 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 { GanttChartProps } from '../GanttChart/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 LayoutAxis,\n XAxisName,\n TraceInfo,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\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\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\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>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\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, layout)) {\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 isMultiPlot: boolean,\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: isMultiPlot || input.layout?.showlegend === 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 isMultiPlot: boolean,\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, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\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 legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\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 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 ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\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 mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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, isMultiPlot);\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 colorScale = createColorScale(input.layout, series, colorScale);\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 opacity = getOpacity(series, index);\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: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\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, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], 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 const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\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 yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\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 return {\n data: chartData,\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 ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): 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 return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\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 ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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 isMultiPlot: boolean,\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(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\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 isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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] ?? fontColorRaw[0];\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 const fontSizeEntry = fontSizeRaw[colIndex] ?? fontSizeRaw[0];\n fontSize = Array.isArray(fontSizeRaw[0])\n ? fontSizeRaw[0][colIndex] ?? fontSizeRaw[0][0]\n : typeof fontSizeEntry === 'number'\n ? fontSizeEntry\n : undefined;\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)\n ? fillColorRaw[updatedColIndex] ?? fillColorRaw[0]\n : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] ?? textAlignRaw[0] : 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 =\n tableData.cells && Object.keys(tableData.cells).length > 0\n ? tableData.cells\n : 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] ?? rawFontColor[0];\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] ?? rawFontSize[0];\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] ?? rawBackgroundColor[0];\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[0] : 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 && Object.keys(tableData.header).length > 0\n ? tableData.header\n : 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\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\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// 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 getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\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 hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\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\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n padding = layout.bargap;\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\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","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","isMultiPlot","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","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","type","push","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","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","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","flat","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","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","colorscale","coloraxis","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","fontSizeEntry","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","keys","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","add","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","findIndex","binStart","binEnd","binSize","categories","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","some","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","every","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","sort","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding"],"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 { GanttChartProps } from '../GanttChart/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 LayoutAxis,\n XAxisName,\n TraceInfo,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n getAxisIds,\n getAxisKey,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\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\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\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>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\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, layout)) {\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 isMultiPlot: boolean,\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: isMultiPlot || input.layout?.showlegend === 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 isMultiPlot: boolean,\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, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\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 legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\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 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 ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\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 mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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, isMultiPlot);\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 colorScale = createColorScale(input.layout, series, colorScale);\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 opacity = getOpacity(series, index);\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: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\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, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], 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 const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\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 yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\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 return {\n data: chartData,\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 ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): 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 return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\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 ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\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 isMultiPlot: boolean,\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(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\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 isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\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] ?? fontColorRaw[0];\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 const fontSizeEntry = fontSizeRaw[colIndex] ?? fontSizeRaw[0];\n fontSize = Array.isArray(fontSizeRaw[0])\n ? fontSizeRaw[0][colIndex] ?? fontSizeRaw[0][0]\n : typeof fontSizeEntry === 'number'\n ? fontSizeEntry\n : undefined;\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)\n ? fillColorRaw[updatedColIndex] ?? fillColorRaw[0]\n : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] ?? textAlignRaw[0] : 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 =\n tableData.cells && Object.keys(tableData.cells).length > 0\n ? tableData.cells\n : 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] ?? rawFontColor[0];\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] ?? rawFontSize[0];\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] ?? rawBackgroundColor[0];\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[0] : 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 && Object.keys(tableData.header).length > 0\n ? tableData.header\n : 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\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\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): void {\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// 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 getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\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 hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\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>): [number, number][] => {\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\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n): Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'> => {\n const result: GetAxisScaleTypePropsResult = {};\n\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const isLogAxis = (axLetter: 'x' | 'y', axId: number) => {\n const axisKey = getAxisKey(axLetter, axId);\n return layout?.[axisKey]?.type === 'log';\n };\n\n if (typeof xAxisId === 'number' && isLogAxis('x', xAxisId)) {\n result.xScaleType = 'log';\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0 && isLogAxis('y', sortedYAxisIds[0])) {\n result.yScaleType = 'log';\n }\n if (sortedYAxisIds.length > 1 && isLogAxis('y', sortedYAxisIds[1])) {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\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","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","getAxisIds","getAxisKey","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","isMultiPlot","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","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","type","push","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","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","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","flat","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","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","colorscale","coloraxis","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","fontSizeEntry","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","keys","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","add","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","findIndex","binStart","binEnd","binSize","categories","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","some","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","every","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","sort","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","xAxisId","yAxisIds","axisIds","isLogAxis","axisKey","xScaleType","sortedYAxisIds","yScaleType","secondaryYScaleType"],"mappings":"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"}