@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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"}