@fluentui/react-charts 9.3.2 → 9.3.3

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 (73) hide show
  1. package/CHANGELOG.md +27 -2
  2. package/dist/index.d.ts +147 -1
  3. package/lib/components/AreaChart/AreaChart.js +20 -24
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/ChartPopover.js +2 -1
  6. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  7. package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
  8. package/lib/components/DeclarativeChart/DeclarativeChart.js +16 -7
  9. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  10. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +63 -18
  11. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  12. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +394 -173
  13. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  14. package/lib/components/DonutChart/Arc/Arc.js +8 -7
  15. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  16. package/lib/components/DonutChart/DonutChart.js +16 -32
  17. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  18. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  19. package/lib/components/DonutChart/Pie/Pie.js +4 -4
  20. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  21. package/lib/components/FunnelChart/FunnelChart.js +23 -45
  22. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  23. package/lib/components/GaugeChart/GaugeChart.js +21 -46
  24. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  25. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +332 -114
  26. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  27. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  28. package/lib/components/Legends/Legends.js +1 -1
  29. package/lib/components/Legends/Legends.js.map +1 -1
  30. package/lib/components/LineChart/LineChart.js +145 -97
  31. package/lib/components/LineChart/LineChart.js.map +1 -1
  32. package/lib/components/ScatterChart/ScatterChart.js +7 -11
  33. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  34. package/lib/types/DataPoint.js +1 -3
  35. package/lib/types/DataPoint.js.map +1 -1
  36. package/lib/utilities/utilities.js +14 -8
  37. package/lib/utilities/utilities.js.map +1 -1
  38. package/lib-commonjs/components/AreaChart/AreaChart.js +19 -23
  39. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  40. package/lib-commonjs/components/CommonComponents/ChartPopover.js +2 -1
  41. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  42. package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
  43. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +16 -7
  44. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  45. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +65 -18
  46. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  47. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +393 -172
  48. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  49. package/lib-commonjs/components/DonutChart/Arc/Arc.js +8 -7
  50. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  51. package/lib-commonjs/components/DonutChart/DonutChart.js +16 -32
  52. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  53. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  54. package/lib-commonjs/components/DonutChart/Pie/Pie.js +4 -4
  55. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  56. package/lib-commonjs/components/FunnelChart/FunnelChart.js +23 -45
  57. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  58. package/lib-commonjs/components/GaugeChart/GaugeChart.js +21 -46
  59. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  60. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +329 -112
  61. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  62. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  63. package/lib-commonjs/components/Legends/Legends.js +1 -1
  64. package/lib-commonjs/components/Legends/Legends.js.map +1 -1
  65. package/lib-commonjs/components/LineChart/LineChart.js +144 -96
  66. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  67. package/lib-commonjs/components/ScatterChart/ScatterChart.js +6 -10
  68. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  69. package/lib-commonjs/types/DataPoint.js +1 -3
  70. package/lib-commonjs/types/DataPoint.js.map +1 -1
  71. package/lib-commonjs/utilities/utilities.js +17 -8
  72. package/lib-commonjs/utilities/utilities.js.map +1 -1
  73. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* 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 GanttChartDataPoint,\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 {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} 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 DTickValue,\n AxisType,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\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';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\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\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, 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 if (colors) {\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 } else {\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string = resolveColor(colors, sortedIdx, legend, colorMap, isDarkTheme);\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\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 ...getAxisTickProps(input.data, 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 // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n processedInput.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, processedInput.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: processedInput.layout?.width,\n height: processedInput.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(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.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 var shouldWrapLabels = false;\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 shouldWrapLabels = shouldWrapLabels || (isXString && !isXDate);\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 wrapXAxisLables: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(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 ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\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 ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: GanttChartDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\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 legend = legends[index];\n const isXDate = input.layout?.xaxis?.type === 'date' || isDateArray(series.x);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const convertXValueToNumber = (value: any) => {\n return isInvalidValue(value) ? 0 : isXDate ? +parseLocalDate(value) : +value;\n };\n\n return (series.y as Datum[])\n .map((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return null;\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 const base = convertXValueToNumber(series.base?.[i]);\n const xVal = convertXValueToNumber(series.x?.[i]);\n\n return {\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as GanttChartDataPoint;\n })\n .filter(point => point !== null) as GanttChartDataPoint[];\n })\n .flat();\n\n return {\n data: chartData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\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 ...getAxisTickProps(input.data, 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\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\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 //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\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 = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | 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 const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(extractedColors, 0, category, colorMap, isDarkTheme);\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(extractedColors, i, label, colorMap, isDarkTheme);\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\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(calculatePrecision(minVal), calculatePrecision(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 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 = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, axId[0] as 'x' | 'y', ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\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 axisObjects: Record<string, Partial<LayoutAxis> | undefined> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = layout?.[getAxisKey('x', xAxisId)];\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = layout?.[getAxisKey('y', sortedYAxisIds[0])];\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = layout?.[getAxisKey('y', sortedYAxisIds[1])];\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], axLetter: 'x' | 'y', ax: Partial<LayoutAxis> | undefined): AxisType | undefined => {\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 // Note: When ax.type is explicitly specified, Plotly casts the values to match that type.\n // Therefore, simply checking the type of the values may not be sufficient. At the moment,\n // we don’t always perform this casting ourselves and instead use the values as provided.\n\n if (isNumberArray(values)) {\n if (ax?.type === 'log') {\n return 'log';\n }\n return 'linear';\n }\n\n if (isDateArray(values)) {\n return 'date';\n }\n\n if (isStringArray(values)) {\n return 'category';\n }\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","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","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","type","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","getNumberAtIndexOrDefault","values","legend","labelValuePairs","validPairs","pair","sort","a","b","sortedIdx","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","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","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","gvbcData","hasObjectArrayData","some","processedData","flat","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","shouldWrapLabels","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","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","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","convertXValueToNumber","parseLocalDate","base","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","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","align","font","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColor","fontSize","backgroundColor","textAlign","style","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","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","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","axisObjects","getAxisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","getAxisType","tickmode","tickvals","tickValues","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","round","charAt","dtickNum","xAxisId","yAxisIds","axisIds","sortedYAxisIds","isoDateRegex","match"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* 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 VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\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 {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} 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 DTickValue,\n AxisType,\n Shape,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n isScatterAreaChart,\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';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\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 = (data: Data[], layout: Partial<Layout> | undefined): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n let allLineSeries = true;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n\n if (series.type !== 'scatter' || isScatterAreaChart(series)) {\n allLineSeries = false;\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (!allLineSeries) {\n if (typeof yMinValue === 'number') {\n yMinValue = Math.min(yMinValue, 0);\n }\n if (typeof yMaxValue === 'number') {\n yMaxValue = Math.max(yMaxValue, 0);\n }\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, colorway, 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\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, 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 true,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n // clear colorMap for donut chart to reassign colors as the colorMap initially gets assigned by\n // getAllupLegendsProps function without sorting labels by value\n colorMap.current.clear();\n\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const markerColors = (firstData.marker?.colors as unknown as string[]) || undefined;\n const hasMarkerColors = Array.isArray(markerColors) && markerColors.length >= firstData.labels.length;\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n color: hasMarkerColors ? markerColors[index] : undefined,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value; when marker colors are present, keep color attached to the label\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string =\n pair.color ??\n resolveColor(\n colors,\n sortedIdx,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\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 // Build anticlockwise order by keeping the first item, reversing the rest\n const legends = Object.keys(mapLegendToDataPoint);\n const reorderedEntries =\n legends.length > 1\n ? ([\n [legends[0], mapLegendToDataPoint[legends[0]]],\n ...legends\n .slice(1)\n .reverse()\n .map(key => [key, mapLegendToDataPoint[key]] as const),\n ] as ReadonlyArray<readonly [string, ChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as ChartDataPoint),\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 order: 'sorted',\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 let yMinValue = 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 const resolveXAxisValue = getAxisValueResolver(input.data, input.layout, 'x');\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 validXYRanges = getValidXYRanges(series, resolveXAxisValue);\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: resolveXAxisValue(x)!,\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(\n extractedBarColors,\n index2,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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 xCategories = (input.data[0] as Partial<PlotData>)?.x ?? [];\n\n (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .forEach((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (typeof val === 'number' && Array.isArray(xCategories) && xCategories[val] !== undefined) {\n return xCategories[val];\n }\n return val;\n };\n\n const x0Key = resolveX(shape.x0!);\n const x1Key = resolveX(shape.x1!);\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n const y0Val = resolveY(shape.y0!);\n const y1Val = resolveY(shape.y1!);\n mapXToDataPoints[x0Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y0Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n mapXToDataPoints[x1Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y1Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\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 ...getAxisTickProps(input.data, 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 // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const gvbcDataV2: GroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n const legend: string = legends[index1];\n const legendShape = getLegendShape(series);\n\n if (series.type === 'bar') {\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n gvbcDataV2.push({\n type: 'bar',\n legend,\n key: legend,\n data: (series.x as Datum[])\n .map((x, xIndex) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[xIndex])) {\n return;\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[])?.[xIndex % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n xIndex,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, xIndex);\n const yVal = series.y![xIndex] as number;\n\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n };\n })\n .filter(item => typeof item !== 'undefined'),\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n } else if (series.type === 'scatter') {\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = getLineOptions(series.line);\n const opacity = getOpacity(series, index1);\n const validXYRanges = getValidXYRanges(series);\n\n validXYRanges.forEach(([rangeStart, rangeEnd]) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd) as Datum[];\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd) as Datum[];\n\n gvbcDataV2.push({\n type: 'line',\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => {\n const yVal = rangeYValues[i] as number;\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n };\n }),\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n });\n }\n });\n\n return {\n dataV2: gvbcDataV2,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.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) ?? 0;\n if (isInvalidValue(xVal)) {\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, input.layout?.template?.layout?.colorway, 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 mapColorFillBars = (layout: Partial<Layout> | undefined) => {\n if (!Array.isArray(layout?.shapes)) {\n return [];\n }\n\n return layout.shapes\n .filter((shape: Partial<Shape>) => shape.type === 'rect')\n .map((shape: { x0?: Datum; x1?: Datum; fillcolor?: string }) => {\n //colorFillbars doesn't support string dates or categories\n if (typeof shape.x0 === 'string' || typeof shape.x1 === 'string') {\n return null;\n }\n return {\n color: shape.fillcolor!,\n data: [{ startX: shape.x0, endX: shape.x1 }],\n applyPattern: false,\n };\n });\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(input.data, input.layout);\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 resolveXAxisValue = getAxisValueResolver(input.data, input.layout, 'x');\n const shouldWrapLabels = getAxisType(input.data, input.layout, 'x') === 'category';\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 legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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, resolveXAxisValue);\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 markerColors = isArrayOrTypedArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : Array.isArray(series.marker?.color)\n ? (series.marker!.color as string[]).slice(rangeStart, rangeEnd)\n : undefined;\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: resolveXAxisValue(x),\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 ...(markerColors ? { markerColor: markerColors[i] } : {}),\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 fill: series.fill,\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const xMinValue = chartData[0]?.data[0]?.x;\n const xMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.x;\n const yMinValue = chartData[0]?.data[0]?.y;\n const yMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.y;\n\n const lineShape: LineChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (shape.xref === 'paper') {\n if (val === 0) {\n return xMinValue;\n }\n if (val === 1) {\n return xMaxValue;\n }\n if (typeof val === 'number' && typeof xMinValue === 'number' && typeof xMaxValue === 'number') {\n return xMinValue + val * (xMaxValue - xMinValue);\n }\n return val;\n }\n return val;\n };\n\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n return {\n legend: `Reference_${shapeIdx}`,\n data: [\n { x: resolveX(shape.x0!), y: resolveY(shape.y0!) },\n { x: resolveX(shape.x1!), y: resolveY(shape.y1!) },\n ],\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n } as LineChartPoints;\n });\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, ...lineShape],\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 wrapXAxisLables: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(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 ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n ...(!isScatterChart &&\n (() => {\n const bars = mapColorFillBars(input.layout);\n return bars && !bars.includes(null) ? { colorFillBars: bars } : {};\n })()),\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(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, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: isInvalidValue(series.x?.[i]) ? 0 : 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 ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const isXDate = getAxisType(input.data, input.layout, 'x') === 'date';\n const chartData: GanttChartDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\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 legend = legends[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const convertXValueToNumber = (value: any) => {\n return isInvalidValue(value) ? 0 : isXDate ? +parseLocalDate(value) : +value;\n };\n\n return (series.y as Datum[])\n .map((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return null;\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, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n const base = convertXValueToNumber(series.base?.[i]);\n const xVal = convertXValueToNumber(series.x?.[i]);\n\n return {\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as GanttChartDataPoint;\n })\n .filter(point => point !== null) as GanttChartDataPoint[];\n })\n .flat();\n\n return {\n data: chartData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\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) ?? 0;\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index])) {\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 ...getAxisTickProps(input.data, 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(\n extractedNodeColors,\n index,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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(\n extractedIncreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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(\n extractedDecreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\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\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\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 //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\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 = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | 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 const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(\n extractedColors,\n 0,\n category,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(\n extractedColors,\n i,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\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(calculatePrecision(minVal), calculatePrecision(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 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 true,\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(\n colors,\n labelIndex,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\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 = (\n series: Partial<PlotData>,\n resolveX?: (v: Datum) => Datum,\n resolveY?: (v: Datum) => Datum,\n): [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 (\n isInvalidValue(series.x![end]) ||\n (typeof resolveX === 'function' && isInvalidValue(resolveX(series.x![end] as Datum))) ||\n isInvalidValue(series.y![end]) ||\n (typeof resolveY === 'function' && isInvalidValue(resolveY(series.y![end] as Datum)))\n ) {\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 result[propName] = 'data';\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] = ax?.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : 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 = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\ninterface AxisObject extends Partial<LayoutAxis> {\n _id: string;\n}\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\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 makeAxisObject = (axLetter: 'x' | 'y', axId: number): AxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, AxisObject> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = makeAxisObject('x', xAxisId);\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = makeAxisObject('y', sortedYAxisIds[0]);\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = makeAxisObject('y', sortedYAxisIds[1]);\n }\n\n return axisObjects;\n};\n\nfunction getAxisType(data: Data[], ax: AxisObject): AxisType;\nfunction getAxisType(data: Data[], layout: Partial<Layout> | undefined, axisId: string): AxisType;\nfunction getAxisType(data: Data[], arg2: AxisObject | Partial<Layout> | undefined, arg3?: string): AxisType {\n let ax: AxisObject | undefined;\n\n if (arg2 && typeof arg2 === 'object' && '_id' in arg2) {\n ax = arg2;\n } else if (typeof arg3 === 'string') {\n const layout = arg2 as Partial<Layout> | undefined;\n ax = getAxisObjects(data, layout)[arg3];\n }\n\n if (!ax) {\n return 'category';\n }\n\n if (['linear', 'log', 'date', 'category'].includes(ax.type ?? '')) {\n return ax.type!;\n }\n\n const axLetter = ax._id[0] as 'x' | 'y';\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n const axId = series[`${axLetter}axis`];\n if (axId === ax._id || (!axId && ax._id === axLetter)) {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n }\n });\n\n if (isNumberArray(values) && !isYearArray(values)) {\n return 'linear';\n }\n if (isDateArray(values)) {\n return 'date';\n }\n return 'category';\n}\n\nconst getAxisValueResolver = (data: Data[], layout: Partial<Layout> | undefined, axisId: string) => {\n const axType = getAxisType(data, layout, axisId);\n\n return (value: Datum): Datum => {\n if (isInvalidValue(value)) {\n return null;\n }\n\n switch (axType) {\n case 'linear':\n case 'log':\n return isNumber(value) ? +value! : null;\n\n case 'date':\n if (isNumber(value)) {\n return new Date(+value!);\n }\n if (typeof value === 'string') {\n return new Date(value);\n }\n return null;\n\n case 'category':\n return `${value}`;\n\n default:\n return null;\n }\n };\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","isScatterAreaChart","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","containsSecondaryYAxis","allLineSeries","forEach","yValues","y","Math","type","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","current","clear","labels","values","markerColors","hasMarkerColors","labelValuePairs","label","getNumberAtIndexOrDefault","validPairs","pair","sort","a","b","sortedIdx","legend","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","legends","reorderedEntries","slice","reverse","chartData","v","hideLegend","showlegend","showLabelsInPercent","roundCorners","order","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","getLegendProps","colorScale","resolveXAxisValue","getAxisValueResolver","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","xCategories","shapes","shape","shapeIdx","resolveX","val","x0Key","x0","x1Key","x1","resolveY","yref","y0Val","y0","y1Val","y1","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","hasObjectArrayData","some","processedData","flat","gvbcDataV2","xIndex","dataV2","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","xAxisCalloutData","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","mapColorFillBars","fillcolor","startX","endX","applyPattern","chartType","isScatterMarkers","isAreaChart","isScatterChart","shouldWrapLabels","getAxisType","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","markerColor","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","xMinValue","xMaxValue","lineShape","xref","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","bars","colorFillBars","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","convertXValueToNumber","parseLocalDate","base","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","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","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","align","font","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColor","fontSize","backgroundColor","textAlign","style","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","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","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","autorange","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","getAxisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","tickmode","tickvals","tickValues","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","round","charAt","dtickNum","xAxisId","yAxisIds","axisIds","makeAxisObject","_id","sortedYAxisIds","arg2","arg3","axisId","isoDateRegex","match"],"mappings":"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"}