@fluentui/react-charting 5.25.1 → 5.25.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.
- package/CHANGELOG.json +123 -1
- package/CHANGELOG.md +34 -2
- package/dist/react-charting.d.ts +48 -45
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/etc/react-charting.api.md +24 -11
- package/lib/AnnotationOnlyChart.d.ts +1 -0
- package/lib/AnnotationOnlyChart.js +2 -0
- package/lib/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +158 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +2 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib/components/AnnotationOnlyChart/index.js +3 -0
- package/lib/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.base.js +2 -2
- package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.base.js +5 -3
- package/lib/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +18 -14
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib/components/CommonComponents/Annotations/index.js +3 -0
- package/lib/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +85 -51
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +176 -63
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.base.js +5 -3
- package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.base.js +15 -18
- package/lib/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.base.js +6 -6
- package/lib/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.base.js +5 -3
- package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +11 -6
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.base.js +3 -3
- package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +4 -4
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/Legends/Legends.base.d.ts +1 -1
- package/lib/components/Legends/Legends.base.js +6 -2
- package/lib/components/Legends/Legends.base.js.map +1 -1
- package/lib/components/Legends/Legends.types.d.ts +1 -1
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/LineChart/LineChart.base.js +3 -3
- package/lib/components/LineChart/LineChart.base.js.map +1 -1
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.base.js +5 -3
- package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.base.js +41 -31
- package/lib/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js +6 -4
- package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +22 -10
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/IChartAnnotation.d.ts +2 -0
- package/lib/types/IChartAnnotation.js.map +1 -1
- package/lib/utilities/image-export-utils.d.ts +7 -2
- package/lib/utilities/image-export-utils.js +176 -86
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.d.ts +5 -4
- package/lib/utilities/utilities.js +18 -17
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-amd/AnnotationOnlyChart.d.ts +1 -0
- package/lib-amd/AnnotationOnlyChart.js +6 -0
- package/lib-amd/AnnotationOnlyChart.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js +159 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +5 -0
- package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-amd/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib-amd/components/AnnotationOnlyChart/index.js +7 -0
- package/lib-amd/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-amd/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-amd/components/ChartTable/ChartTable.base.js +4 -2
- package/lib-amd/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js +18 -14
- package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-amd/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib-amd/components/CommonComponents/Annotations/index.js +7 -0
- package/lib-amd/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-amd/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib-amd/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +80 -50
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib-amd/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +178 -64
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-amd/components/DonutChart/DonutChart.base.js +4 -2
- package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib-amd/components/FunnelChart/FunnelChart.base.js +13 -16
- package/lib-amd/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib-amd/components/GanttChart/GanttChart.base.js +5 -5
- package/lib-amd/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib-amd/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib-amd/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-amd/components/GaugeChart/GaugeChart.base.js +4 -2
- package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +10 -6
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +2 -2
- package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib-amd/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib-amd/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-amd/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +3 -3
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-amd/components/Legends/Legends.base.d.ts +1 -1
- package/lib-amd/components/Legends/Legends.base.js +6 -2
- package/lib-amd/components/Legends/Legends.base.js.map +1 -1
- package/lib-amd/components/Legends/Legends.types.d.ts +1 -1
- package/lib-amd/components/Legends/Legends.types.js.map +1 -1
- package/lib-amd/components/LineChart/LineChart.base.js +2 -2
- package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-amd/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-amd/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib-amd/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-amd/components/SankeyChart/SankeyChart.base.js +4 -2
- package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-amd/components/ScatterChart/ScatterChart.base.js +39 -29
- package/lib-amd/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib-amd/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib-amd/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +5 -3
- package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +20 -8
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-amd/index.d.ts +2 -0
- package/lib-amd/index.js +3 -2
- package/lib-amd/index.js.map +1 -1
- package/lib-amd/types/IChartAnnotation.d.ts +2 -0
- package/lib-amd/types/IChartAnnotation.js.map +1 -1
- package/lib-amd/utilities/image-export-utils.d.ts +7 -2
- package/lib-amd/utilities/image-export-utils.js +175 -85
- package/lib-amd/utilities/image-export-utils.js.map +1 -1
- package/lib-amd/utilities/utilities.d.ts +5 -4
- package/lib-amd/utilities/utilities.js +18 -17
- package/lib-amd/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AnnotationOnlyChart.d.ts +1 -0
- package/lib-commonjs/AnnotationOnlyChart.js +5 -0
- package/lib-commonjs/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.d.ts +3 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +162 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.d.ts +33 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +3 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.d.ts +2 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js +6 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.base.js +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.base.js +4 -2
- package/lib-commonjs/components/ChartTable/ChartTable.base.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.d.ts +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +18 -14
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/index.d.ts +2 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js +6 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.d.ts +6 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +131 -157
- package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +11 -2
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +83 -49
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +12 -4
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +2 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +178 -64
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.base.js +4 -2
- package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.base.js +13 -16
- package/lib-commonjs/components/FunnelChart/FunnelChart.base.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.base.js +5 -5
- package/lib-commonjs/components/GanttChart/GanttChart.base.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.types.d.ts +0 -11
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +4 -2
- package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +10 -5
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +2 -2
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.d.ts +0 -9
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +3 -3
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +0 -9
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.base.d.ts +1 -1
- package/lib-commonjs/components/Legends/Legends.base.js +6 -2
- package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.d.ts +1 -1
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.base.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +1 -1
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +4 -2
- package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.base.js +39 -29
- package/lib-commonjs/components/ScatterChart/ScatterChart.base.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.d.ts +0 -4
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +5 -3
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +20 -8
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.d.ts +0 -9
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/index.d.ts +2 -0
- package/lib-commonjs/index.js +3 -1
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/IChartAnnotation.d.ts +2 -0
- package/lib-commonjs/types/IChartAnnotation.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.d.ts +7 -2
- package/lib-commonjs/utilities/image-export-utils.js +175 -85
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.d.ts +5 -4
- package/lib-commonjs/utilities/utilities.js +18 -17
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +5 -5
- package/src/components/AnnotationOnlyChart/AnnotationOnlyChart.types.ts +34 -0
- package/src/components/CommonComponents/CartesianChart.types.ts +12 -1
- package/src/components/GanttChart/GanttChart.types.ts +0 -13
- package/src/components/HeatMapChart/HeatMapChart.types.ts +0 -11
- package/src/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.ts +0 -11
- package/src/components/Legends/Legends.types.ts +1 -1
- package/src/components/ScatterChart/ScatterChart.types.ts +0 -5
- package/src/components/VerticalStackedBarChart/VerticalStackedBarChart.types.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n IGanttChartDataPoint,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\nimport { IChartTableProps } from '../ChartTable/index';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\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 Annotations,\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 { IScatterChartProps } from '../ScatterChart/index';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { IFunnelChartDataPoint, IFunnelChartProps } from '../FunnelChart/FunnelChart.types';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { ILegend, ILegendsProps } from '../Legends/index';\nimport { rgb } from 'd3-color';\nimport { ICartesianChartProps } from '../CommonComponents/index';\nimport { IGanttChartProps } from '../GanttChart/GanttChart.types';\nimport {\n IChartAnnotation,\n ChartAnnotationArrowHead,\n IChartAnnotationLayoutProps,\n IChartAnnotationStyleProps,\n ChartAnnotationHorizontalAlign,\n ChartAnnotationVerticalAlign,\n} from '../../types/IChartAnnotation';\nimport { calculatePrecision, precisionRound } from '@fluentui/react';\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';\n\ninterface ISecondaryYAxisValues {\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\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): ISecondaryYAxisValues => {\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\ntype PlotlyAnnotation = Partial<Annotations> | null | undefined;\n\nconst encodeHtmlEntities = (value: string): string =>\n value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\nconst toFiniteNumber = (value: unknown): number | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n const numeric = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n};\n\n/**\n * Normalizes Plotly axis reference strings so equivalent aliases (e.g. `xaxis1`, `x1`) collapse to the base axis id.\n */\nconst normalizeAxisRef = (ref: string | undefined, axis: 'x' | 'y'): string => {\n if (!ref) {\n return axis;\n }\n\n const normalized = ref.toLowerCase();\n if (\n normalized === axis ||\n normalized === `${axis}axis` ||\n normalized === `${axis}axis1` ||\n normalized === `${axis}1`\n ) {\n return axis;\n }\n\n const match = normalized.match(/^([xy])(axis)?(\\d+)$/);\n if (match && match[1] === axis && match[3]) {\n return match[3] === '1' ? axis : `${axis}${match[3]}`;\n }\n\n return normalized;\n};\n\n/**\n * Scans the data traces bound to a given axis and returns the numeric min/max values plotted on that axis.\n */\nconst getAxisNumericRangeFromData = (\n axis: 'x' | 'y',\n ref: string | undefined,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n): [number, number] | undefined => {\n if (!data || data.length === 0) {\n return undefined;\n }\n\n const axisLayout = getAxisLayoutByRef(layout, ref, axis);\n const targetRef = normalizeAxisRef(ref, axis);\n const traceAxisKey = axis === 'x' ? 'xaxis' : 'yaxis';\n\n let minValue: number | undefined;\n let maxValue: number | undefined;\n\n data.forEach(trace => {\n const plotTrace = trace as Partial<PlotData>;\n const traceAxisRef = normalizeAxisRef(plotTrace[traceAxisKey as 'xaxis' | 'yaxis'] as string | undefined, axis);\n if (traceAxisRef !== targetRef) {\n return;\n }\n\n const values = (axis === 'x' ? plotTrace.x : plotTrace.y) as unknown;\n if (!isArrayOrTypedArray(values)) {\n return;\n }\n\n const arrayLike = values as ArrayLike<unknown>;\n for (let index = 0; index < arrayLike.length; index++) {\n const value = arrayLike[index];\n const numeric = toNumericValue(convertDataValue(value, axisLayout));\n if (numeric === undefined || Number.isNaN(numeric)) {\n continue;\n }\n minValue = minValue === undefined ? numeric : Math.min(minValue, numeric);\n maxValue = maxValue === undefined ? numeric : Math.max(maxValue, numeric);\n }\n });\n\n if (minValue === undefined || maxValue === undefined || minValue === maxValue) {\n return undefined;\n }\n\n return [minValue, maxValue];\n};\n\n/**\n * Converts Plotly's bottom-origin relative Y coordinate into the SVG top-origin space used by our overlay.\n */\nconst transformRelativeYForChart = (value: number | undefined): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n return undefined;\n }\n return 1 - value;\n};\n\nconst mapHorizontalAlign = (anchor?: string): ChartAnnotationHorizontalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n default:\n return undefined;\n }\n};\n\nconst mapVerticalAlign = (anchor?: string): ChartAnnotationVerticalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'top':\n return 'top';\n case 'middle':\n return 'middle';\n case 'bottom':\n return 'bottom';\n default:\n return undefined;\n }\n};\n\nconst appendPx = (value: unknown): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return `${value}px`;\n }\n return undefined;\n};\n\n/**\n * Maps Plotly's axis reference string to one of our coordinate interpretation modes (axis, relative, or pixel).\n */\nconst resolveRefType = (ref: string | undefined, axis: 'x' | 'y'): 'axis' | 'relative' | 'pixel' | undefined => {\n if (!ref) {\n return 'axis';\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'pixel') {\n return 'pixel';\n }\n if (normalized === 'paper') {\n return 'relative';\n }\n if (normalized.endsWith(' domain')) {\n return normalized.startsWith(axis) ? 'relative' : undefined;\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n return 'axis';\n }\n return undefined;\n};\n\n/**\n * Retrieves the appropriate axis layout section from Plotly's layout given an axis reference alias.\n */\nconst getAxisLayoutByRef = (\n layout: Partial<Layout> | undefined,\n ref: string | undefined,\n axis: 'x' | 'y',\n): Partial<LayoutAxis> | undefined => {\n if (!layout) {\n return undefined;\n }\n const defaultAxisKey = `${axis}axis` as 'xaxis' | 'yaxis';\n if (!ref) {\n return layout[defaultAxisKey];\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'paper' || normalized === 'pixel' || normalized.endsWith(' domain')) {\n return layout[defaultAxisKey];\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n const index = match[2];\n if (index && index !== '' && index !== '1') {\n const axisKey = `${axis}axis${index}` as keyof Layout;\n return layout[axisKey] as Partial<LayoutAxis> | undefined;\n }\n return layout[defaultAxisKey];\n }\n return layout[defaultAxisKey];\n};\n\n/**\n * Normalizes raw Plotly data values into canonical number/date/string types based on axis configuration.\n */\nconst convertDataValue = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n): string | number | Date | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (axisLayout?.type === 'date' || isDate(value)) {\n const dateValue = value instanceof Date ? value : new Date(value as string | number);\n return Number.isNaN(dateValue.getTime()) ? undefined : dateValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (axisLayout?.type === 'linear' || axisLayout?.type === 'log') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n if (value instanceof Date) {\n return value;\n }\n return value as string | number;\n};\n\nconst toNumericValue = (value: string | number | Date | undefined): number | undefined => {\n if (value instanceof Date) {\n const timestamp = value.getTime();\n return Number.isFinite(timestamp) ? timestamp : undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n return undefined;\n};\n\nconst toRelativeCoordinate = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n fallbackRange?: [number, number],\n): number | undefined => {\n const range = Array.isArray(axisLayout?.range) ? axisLayout!.range : undefined;\n\n let start = range && range.length >= 2 ? toNumericValue(convertDataValue(range[0], axisLayout)) : undefined;\n let end = range && range.length >= 2 ? toNumericValue(convertDataValue(range[1], axisLayout)) : undefined;\n\n if ((start === undefined || end === undefined || start === end) && fallbackRange) {\n [start, end] = fallbackRange;\n }\n\n const current = toNumericValue(convertDataValue(value, axisLayout));\n\n if (start === undefined || end === undefined || current === undefined || start === end) {\n return undefined;\n }\n\n const relative = (current - start) / (end - start);\n return Number.isFinite(relative) ? relative : undefined;\n};\n\nconst createAnnotationId = (text: string, index: number): string => {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (normalized) {\n const slug = normalized\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 32);\n if (slug) {\n return `annotation-${index}-${slug}`;\n }\n }\n return `annotation-${index}`;\n};\n\nconst DEFAULT_ARROW_OFFSET = -40;\n\nconst mapArrowsideToArrow = (annotation: PlotlyAnnotation): ChartAnnotationArrowHead => {\n let includeStart = false;\n let includeEnd = false;\n\n const arrowSide = typeof annotation?.arrowside === 'string' ? annotation?.arrowside.toLowerCase() : undefined;\n if (arrowSide) {\n includeStart = arrowSide.includes('start');\n includeEnd = arrowSide.includes('end');\n }\n\n const endHead = toFiniteNumber(annotation?.arrowhead);\n const startHead = toFiniteNumber((annotation as { startarrowhead?: number }).startarrowhead);\n\n if (endHead !== undefined && endHead > 0) {\n includeEnd = true;\n }\n if (startHead !== undefined && startHead > 0) {\n includeStart = true;\n }\n\n if (includeStart && includeEnd) {\n return 'both';\n }\n if (includeStart) {\n return 'start';\n }\n if (includeEnd) {\n return 'end';\n }\n return 'none';\n};\n\nconst mapArrowDashToPattern = (value: string | undefined): string | undefined => {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim().toLowerCase();\n\n switch (normalized) {\n case 'solid':\n return undefined;\n case 'dot':\n return '1, 5';\n case 'dash':\n return '5, 5';\n case 'longdash':\n return '10, 5';\n case 'dashdot':\n return '5, 5, 1, 5';\n case 'longdashdot':\n return '10, 5, 1, 5';\n default:\n if (/^\\d+(\\s|,)*\\d*$/.test(normalized.replace(/\\s+/g, ' '))) {\n return normalized.replace(/\\s+/g, ' ');\n }\n return value;\n }\n};\n\n/**\n * Converts a Plotly annotation definition into the internal `ChartAnnotation` format, translating coordinates,\n * layout alignment, styling, and connector metadata while skipping unsupported configurations.\n */\nconst convertPlotlyAnnotation = (\n annotation: PlotlyAnnotation,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n index: number,\n): IChartAnnotation | undefined => {\n if (!annotation || (annotation as { visible?: boolean }).visible === false) {\n return undefined;\n }\n\n const xRefType = resolveRefType(annotation.xref as string | undefined, 'x');\n const yRefType = resolveRefType(annotation.yref as string | undefined, 'y');\n\n if (!xRefType || !yRefType) {\n return undefined;\n }\n\n let coordinates: IChartAnnotation['coordinates'] | undefined;\n\n if (xRefType === 'axis' && yRefType === 'axis') {\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const xValue = convertDataValue(annotation.x, xAxisLayout);\n const yValue = convertDataValue(annotation.y, yAxisLayout);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n const yRefNormalized = typeof annotation.yref === 'string' ? annotation.yref.toLowerCase() : undefined;\n coordinates = {\n type: 'data',\n x: xValue,\n y: yValue,\n ...(yRefNormalized === 'y2' ? { yAxis: 'secondary' as const } : {}),\n };\n } else if (xRefType === 'relative' && yRefType === 'relative') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'relative' && yRefType === 'axis') {\n const xValue = toFiniteNumber(annotation.x);\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const yFallbackRange = getAxisNumericRangeFromData('y', annotation.yref as string | undefined, layout, data);\n const yRelative = toRelativeCoordinate(annotation.y, yAxisLayout, yFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yRelative);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'axis' && yRefType === 'relative') {\n const yValue = toFiniteNumber(annotation.y);\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const xFallbackRange = getAxisNumericRangeFromData('x', annotation.xref as string | undefined, layout, data);\n const xRelative = toRelativeCoordinate(annotation.x, xAxisLayout, xFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xRelative === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xRelative,\n y: chartRelativeY,\n };\n } else if (xRefType === 'pixel' && yRefType === 'pixel') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'pixel',\n x: xValue,\n y: yValue,\n };\n } else {\n return undefined;\n }\n\n const textValue = annotation.text;\n const rawText = textValue === undefined || textValue === null ? '' : String(textValue);\n const encodedText = encodeHtmlEntities(rawText);\n\n const chartAnnotation: IChartAnnotation = {\n id: createAnnotationId(encodedText, index),\n text: encodedText,\n coordinates,\n };\n\n const layoutProps: Partial<IChartAnnotationLayoutProps> = {};\n const styleProps: Partial<IChartAnnotationStyleProps> = {};\n const showArrow = annotation.showarrow === undefined ? false : !!annotation.showarrow;\n\n const clipOnAxis = (annotation as { cliponaxis?: boolean }).cliponaxis;\n if (clipOnAxis !== undefined) {\n layoutProps.clipToBounds = !!clipOnAxis;\n } else if (coordinates.type === 'data') {\n layoutProps.clipToBounds = true;\n }\n\n const horizontalAlign = mapHorizontalAlign(annotation.xanchor as string | undefined);\n if (horizontalAlign) {\n layoutProps.align = horizontalAlign;\n }\n\n if (!layoutProps.align) {\n const alignProp = mapHorizontalAlign((annotation as { align?: string }).align);\n if (alignProp) {\n layoutProps.align = alignProp;\n }\n }\n\n const verticalAlign = mapVerticalAlign(annotation.yanchor as string | undefined);\n if (verticalAlign) {\n layoutProps.verticalAlign = verticalAlign;\n }\n\n if (!layoutProps.verticalAlign) {\n const valignProp = mapVerticalAlign((annotation as { valign?: string }).valign);\n if (valignProp) {\n layoutProps.verticalAlign = valignProp;\n }\n }\n\n const offsetXComponents: number[] = [];\n let hasExplicitOffset = false;\n const ax = toFiniteNumber(annotation.ax);\n const axRef = typeof annotation.axref === 'string' ? annotation.axref.toLowerCase() : undefined;\n if (ax !== undefined && (axRef === undefined || axRef === 'pixel')) {\n offsetXComponents.push(ax);\n hasExplicitOffset = true;\n }\n const xShift = toFiniteNumber(annotation.xshift);\n if (xShift !== undefined) {\n offsetXComponents.push(xShift);\n hasExplicitOffset = true;\n }\n if (offsetXComponents.length > 0) {\n const offsetX = offsetXComponents.reduce((sum, value) => sum + value, 0);\n if (offsetX !== 0) {\n layoutProps.offsetX = offsetX;\n }\n }\n\n const offsetYComponents: number[] = [];\n const ay = toFiniteNumber(annotation.ay);\n const ayRef = typeof annotation.ayref === 'string' ? annotation.ayref.toLowerCase() : undefined;\n if (ay !== undefined && (ayRef === undefined || ayRef === 'pixel')) {\n offsetYComponents.push(ay);\n hasExplicitOffset = true;\n }\n const yShift = toFiniteNumber(annotation.yshift);\n if (yShift !== undefined) {\n offsetYComponents.push(yShift);\n hasExplicitOffset = true;\n }\n if (offsetYComponents.length > 0) {\n const offsetY = offsetYComponents.reduce((sum, value) => sum + value, 0);\n if (offsetY !== 0) {\n layoutProps.offsetY = offsetY;\n }\n }\n\n if (showArrow && !hasExplicitOffset && layoutProps.offsetY === undefined) {\n layoutProps.offsetY = DEFAULT_ARROW_OFFSET;\n }\n\n const maxWidth = toFiniteNumber(annotation.width);\n if (maxWidth !== undefined) {\n layoutProps.maxWidth = maxWidth;\n }\n\n if (annotation.bgcolor) {\n styleProps.backgroundColor = annotation.bgcolor as string;\n }\n\n if (annotation.bordercolor) {\n styleProps.borderColor = annotation.bordercolor as string;\n }\n\n const borderWidth = toFiniteNumber(annotation.borderwidth);\n if (borderWidth !== undefined) {\n styleProps.borderWidth = borderWidth;\n }\n\n const borderPad = appendPx(annotation.borderpad);\n if (borderPad) {\n styleProps.padding = borderPad;\n }\n\n const opacity = toFiniteNumber(annotation.opacity);\n if (opacity !== undefined) {\n styleProps.opacity = opacity;\n }\n\n if (annotation.font) {\n const font = annotation.font as {\n color?: string;\n size?: string | number;\n weight?: React.CSSProperties['fontWeight'];\n };\n if (font?.color) {\n styleProps.textColor = font.color;\n }\n const fontSize = appendPx(font?.size);\n if (fontSize) {\n styleProps.fontSize = fontSize;\n }\n if (font?.weight) {\n styleProps.fontWeight = font.weight;\n }\n }\n\n if (Object.keys(layoutProps).length > 0) {\n chartAnnotation.layout = layoutProps;\n }\n\n if (Object.keys(styleProps).length > 0) {\n chartAnnotation.style = styleProps;\n }\n\n if (showArrow) {\n const arrowColor = (annotation.arrowcolor as string) ?? styleProps.textColor;\n const arrowWidth = toFiniteNumber(annotation.arrowwidth);\n const endPadding = toFiniteNumber(annotation.standoff);\n const startPadding = toFiniteNumber((annotation as { startstandoff?: number }).startstandoff);\n const dashPattern = mapArrowDashToPattern((annotation as { arrowdash?: string }).arrowdash);\n\n chartAnnotation.connector = {\n ...(arrowColor ? { strokeColor: arrowColor } : {}),\n ...(arrowWidth !== undefined ? { strokeWidth: arrowWidth } : {}),\n ...(endPadding !== undefined ? { endPadding: Math.max(endPadding, 0) } : {}),\n ...(startPadding !== undefined ? { startPadding: Math.max(startPadding, 0) } : {}),\n ...(dashPattern ? { dashArray: dashPattern } : {}),\n arrow: mapArrowsideToArrow(annotation),\n };\n }\n\n return chartAnnotation;\n};\n\nconst getChartAnnotationsFromLayout = (\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n isMultiPlot: boolean,\n): IChartAnnotation[] | undefined => {\n if (isMultiPlot || !layout?.annotations) {\n return undefined;\n }\n const annotationsArray = Array.isArray(layout.annotations) ? layout.annotations : [layout.annotations];\n const converted = annotationsArray\n .map((annotation, index) => convertPlotlyAnnotation(annotation as PlotlyAnnotation, layout, data, index))\n .filter((annotation): annotation is IChartAnnotation => annotation !== undefined);\n\n return converted.length > 0 ? converted : undefined;\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): IDonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\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\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\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 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, IChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as IChartDataPoint),\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): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\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 resolveXValue = getAxisValueResolver(getAxisType(input.data, getAxisObjects(input.data, input.layout).x));\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n\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, resolveXValue);\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: resolveXValue(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 = getLineOptions(series.line);\n const legendShape = getLegendShape(series);\n\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 });\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 const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\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 hideTickOverlap: true,\n hideLegend,\n roundCorners: true,\n supportNegativeData: true,\n barGapMax: 2,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getBarProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\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): IGroupedVerticalBarChartProps => {\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\n const gvbcDataV2: IGroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\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 const annotations = getChartAnnotationsFromLayout(processedInput.layout, processedInput.data, isMultiPlot);\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 hideLegend,\n roundCorners: true,\n wrapXAxisLables: 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 ...(annotations ? { annotations } : {}),\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): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\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\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 const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n supportNegativeData: true,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...(annotations ? { annotations } : {}),\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): IAreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as IAreaChartProps;\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): ILineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ILineChartProps;\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): ILineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as IScatterChartProps;\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): ILineChartProps | IAreaChartProps | IScatterChartProps => {\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 xAxisType = getAxisType(input.data, getAxisObjects(input.data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType);\n const shouldWrapLabels = xAxisType === 'category';\n const chartData: ILineChartPoints[] = 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, resolveXValue);\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: resolveXValue(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\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 ILineChartPoints;\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 const lineShape: ILineChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n\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 return typeof xMinValue === 'number' && typeof xMaxValue === 'number' && typeof val === 'number'\n ? xMinValue + val * (xMaxValue - xMinValue)\n : 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 ILineChartPoints;\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\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: IChartProps = {\n lineChartData: [...chartData, ...lineShape],\n };\n\n const scatterChartProps: IChartProps = {\n scatterChartData: chartData,\n };\n\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n shouldWrapLabels: shouldWrapLabels,\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 ...(annotations ? { annotations } : {}),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as IAreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n enableReflow: false,\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 ILineChartProps | IScatterChartProps;\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): IHorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = 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 return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\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\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 IHorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as IHorizontalBarChartWithAxisDataPoint[];\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 hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\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): IGanttChartProps => {\n const data = input.data.filter((series: Partial<PlotData>) => series.type !== 'scatter' || series.mode !== 'markers');\n const { legends, hideLegend } = getLegendProps(data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const xAxisType = getAxisType(data, getAxisObjects(data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType, parseLocalDate);\n const resolveGanttXValue = (value: Datum) => {\n const resolvedValue = resolveXValue(value);\n return typeof resolvedValue === 'string' ? 0 : resolvedValue ?? 0;\n };\n const isXDate = xAxisType === 'date';\n const ganttData: IGanttChartDataPoint[] = [];\n data.forEach((series: Partial<PlotData>, index: number) => {\n const legend = legends[index];\n\n if (series.type === 'bar') {\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\n (series.y as Datum[]).forEach((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return;\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 = +resolveGanttXValue(series.base?.[i] as Datum);\n const xVal = +resolveGanttXValue(series.x?.[i] as Datum);\n\n ganttData.push({\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal as string | number,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n });\n });\n } else if (series.type === 'scatter' && series.mode === 'none' && series.fill === 'toself') {\n for (let i = 0; i < series.y!.length; i += 5) {\n if (isInvalidValue(series.y![i]) || isInvalidValue(series.y![i + 3])) {\n continue;\n }\n\n const x0 = resolveGanttXValue(series.x![i] as Datum);\n const x1 = resolveGanttXValue(series.x![i + 1] as Datum);\n const y0 = series.y![i] as number;\n const y1 = series.y![i + 3] as number;\n\n ganttData.push({\n x: {\n start: x0,\n end: x1,\n },\n y: Math.round((y0 + y1) / 2),\n legend,\n color: series.fillcolor,\n });\n }\n }\n });\n\n return {\n data: ganttData,\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(data, input.layout),\n ...getBarProps(data, input.layout, true),\n ...getAxisTickProps(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): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\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 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: IHeatMapChartData = {\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): ISankeyChartProps => {\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 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 ISankeyChartData;\n\n const styles: ISankeyChartProps['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 styles,\n enableReflow: false,\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): IGaugeChartProps => {\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 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): IGaugeChartSegment => {\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: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\n roundCorners: true,\n };\n};\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\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): IChartTableProps => {\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: IChartTableProps['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): IFunnelChartProps => {\n const funnelData: IFunnelChartDataPoint[] = [];\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 if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\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): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\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\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>): ILegend['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): ILegendsProps => {\n const allupLegends: ILegend[] = [];\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\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\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\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\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 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<ICartesianChartProps, '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\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\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<\n IVerticalBarChartProps,\n 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'\n >\n | Pick<IGanttChartProps, '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<ICartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\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 ICartesianChartProps,\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 => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n props.xAxis = {\n tickText: ax.ticktext,\n };\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n props.yAxis = {\n tickText: ax.ticktext,\n };\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 IAxisObject 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): IAxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, IAxisObject> = {};\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\nconst getAxisType = (data: Data[], ax: IAxisObject): AxisType => {\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 = (axType: AxisType, dateParser?: (v: string | number) => Date) => {\n const toDate = (value: string | number): Date | null => {\n const date = dateParser ? dateParser(value) : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n };\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 toDate(+value!);\n }\n if (typeof value === 'string') {\n return toDate(value);\n }\n return null;\n\n case 'category':\n return `${value}`;\n\n default:\n return null;\n }\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n IGanttChartDataPoint,\n IScatterChartPoints,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\nimport { IChartTableProps } from '../ChartTable/index';\nimport type { IAnnotationOnlyChartProps } from '../AnnotationOnlyChart/AnnotationOnlyChart.types';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n} from '../../utilities/utilities';\nimport type {\n Annotations,\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 { IScatterChartProps } from '../ScatterChart/index';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { IFunnelChartDataPoint, IFunnelChartProps } from '../FunnelChart/FunnelChart.types';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { ILegend, ILegendsProps } from '../Legends/index';\nimport { rgb } from 'd3-color';\nimport { ICartesianChartProps } from '../CommonComponents/index';\nimport { IGanttChartProps } from '../GanttChart/GanttChart.types';\nimport {\n IChartAnnotation,\n ChartAnnotationArrowHead,\n IChartAnnotationLayoutProps,\n IChartAnnotationStyleProps,\n ChartAnnotationHorizontalAlign,\n ChartAnnotationVerticalAlign,\n} from '../../types/IChartAnnotation';\nimport { calculatePrecision, precisionRound } from '@fluentui/react';\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';\n\ninterface ISecondaryYAxisValues {\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\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): ISecondaryYAxisValues => {\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\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 * Extracts unique X-axis categories from Plotly data traces\n * @param data Array of Plotly data traces\n * @returns Array of unique x values\n */\nconst extractXCategories = (data: Data[] | undefined): Datum[] => {\n return Array.from(\n new Set(\n (data ?? [])\n .flatMap(trace => {\n const xData = (trace as Partial<PlotData>).x;\n if (!xData) {\n return [];\n }\n if (Array.isArray(xData)) {\n return xData.flat().map(x => {\n return x;\n });\n }\n return [];\n })\n .filter(x => x !== undefined && x !== null),\n ),\n );\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\ntype PlotlyAnnotation = Partial<Annotations> | null | undefined;\n\nconst encodeHtmlEntities = (value: string): string =>\n value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\nconst toFiniteNumber = (value: unknown): number | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n const numeric = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n};\n\n/**\n * Normalizes Plotly axis reference strings so equivalent aliases (e.g. `xaxis1`, `x1`) collapse to the base axis id.\n */\nconst normalizeAxisRef = (ref: string | undefined, axis: 'x' | 'y'): string => {\n if (!ref) {\n return axis;\n }\n\n const normalized = ref.toLowerCase();\n if (\n normalized === axis ||\n normalized === `${axis}axis` ||\n normalized === `${axis}axis1` ||\n normalized === `${axis}1`\n ) {\n return axis;\n }\n\n const match = normalized.match(/^([xy])(axis)?(\\d+)$/);\n if (match && match[1] === axis && match[3]) {\n return match[3] === '1' ? axis : `${axis}${match[3]}`;\n }\n\n return normalized;\n};\n\n/**\n * Scans the data traces bound to a given axis and returns the numeric min/max values plotted on that axis.\n */\nconst getAxisNumericRangeFromData = (\n axis: 'x' | 'y',\n ref: string | undefined,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n): [number, number] | undefined => {\n if (!data || data.length === 0) {\n return undefined;\n }\n\n const axisLayout = getAxisLayoutByRef(layout, ref, axis);\n const targetRef = normalizeAxisRef(ref, axis);\n const traceAxisKey = axis === 'x' ? 'xaxis' : 'yaxis';\n\n let minValue: number | undefined;\n let maxValue: number | undefined;\n\n data.forEach(trace => {\n const plotTrace = trace as Partial<PlotData>;\n const traceAxisRef = normalizeAxisRef(plotTrace[traceAxisKey as 'xaxis' | 'yaxis'] as string | undefined, axis);\n if (traceAxisRef !== targetRef) {\n return;\n }\n\n const values = (axis === 'x' ? plotTrace.x : plotTrace.y) as unknown;\n if (!isArrayOrTypedArray(values)) {\n return;\n }\n\n const arrayLike = values as ArrayLike<unknown>;\n for (let index = 0; index < arrayLike.length; index++) {\n const value = arrayLike[index];\n const numeric = toNumericValue(convertDataValue(value, axisLayout));\n if (numeric === undefined || Number.isNaN(numeric)) {\n continue;\n }\n minValue = minValue === undefined ? numeric : Math.min(minValue, numeric);\n maxValue = maxValue === undefined ? numeric : Math.max(maxValue, numeric);\n }\n });\n\n if (minValue === undefined || maxValue === undefined || minValue === maxValue) {\n return undefined;\n }\n\n return [minValue, maxValue];\n};\n\n/**\n * Converts Plotly's bottom-origin relative Y coordinate into the SVG top-origin space used by our overlay.\n */\nconst transformRelativeYForChart = (value: number | undefined): number | undefined => {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value)) {\n return undefined;\n }\n return 1 - value;\n};\n\nconst mapHorizontalAlign = (anchor?: string): ChartAnnotationHorizontalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n default:\n return undefined;\n }\n};\n\nconst mapVerticalAlign = (anchor?: string): ChartAnnotationVerticalAlign | undefined => {\n switch ((anchor ?? '').toLowerCase()) {\n case 'top':\n return 'top';\n case 'middle':\n return 'middle';\n case 'bottom':\n return 'bottom';\n default:\n return undefined;\n }\n};\n\nconst appendPx = (value: unknown): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return `${value}px`;\n }\n return undefined;\n};\n\n/**\n * Maps Plotly's axis reference string to one of our coordinate interpretation modes (axis, relative, or pixel).\n */\nconst resolveRefType = (ref: string | undefined, axis: 'x' | 'y'): 'axis' | 'relative' | 'pixel' | undefined => {\n if (!ref) {\n return 'axis';\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'pixel') {\n return 'pixel';\n }\n if (normalized === 'paper') {\n return 'relative';\n }\n if (normalized.endsWith(' domain')) {\n return normalized.startsWith(axis) ? 'relative' : undefined;\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n return 'axis';\n }\n return undefined;\n};\n\n/**\n * Retrieves the appropriate axis layout section from Plotly's layout given an axis reference alias.\n */\nconst getAxisLayoutByRef = (\n layout: Partial<Layout> | undefined,\n ref: string | undefined,\n axis: 'x' | 'y',\n): Partial<LayoutAxis> | undefined => {\n if (!layout) {\n return undefined;\n }\n const defaultAxisKey = `${axis}axis` as 'xaxis' | 'yaxis';\n if (!ref) {\n return layout[defaultAxisKey];\n }\n const normalized = ref.toLowerCase();\n if (normalized === 'paper' || normalized === 'pixel' || normalized.endsWith(' domain')) {\n return layout[defaultAxisKey];\n }\n const match = normalized.match(/^([xy])(\\d*)$/);\n if (match && match[1] === axis) {\n const index = match[2];\n if (index && index !== '' && index !== '1') {\n const axisKey = `${axis}axis${index}` as keyof Layout;\n return layout[axisKey] as Partial<LayoutAxis> | undefined;\n }\n return layout[defaultAxisKey];\n }\n return layout[defaultAxisKey];\n};\n\n/**\n * Normalizes raw Plotly data values into canonical number/date/string types based on axis configuration.\n */\nconst convertDataValue = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n): string | number | Date | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (axisLayout?.type === 'date' || isDate(value)) {\n const dateValue = value instanceof Date ? value : new Date(value as string | number);\n return Number.isNaN(dateValue.getTime()) ? undefined : dateValue;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (axisLayout?.type === 'linear' || axisLayout?.type === 'log') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n if (value instanceof Date) {\n return value;\n }\n return value as string | number;\n};\n\nconst toNumericValue = (value: string | number | Date | undefined): number | undefined => {\n if (value instanceof Date) {\n const timestamp = value.getTime();\n return Number.isFinite(timestamp) ? timestamp : undefined;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string') {\n const numeric = Number(value);\n return Number.isFinite(numeric) ? numeric : undefined;\n }\n return undefined;\n};\n\nconst toRelativeCoordinate = (\n value: unknown,\n axisLayout: Partial<LayoutAxis> | undefined,\n fallbackRange?: [number, number],\n): number | undefined => {\n const range = Array.isArray(axisLayout?.range) ? axisLayout!.range : undefined;\n\n let start = range && range.length >= 2 ? toNumericValue(convertDataValue(range[0], axisLayout)) : undefined;\n let end = range && range.length >= 2 ? toNumericValue(convertDataValue(range[1], axisLayout)) : undefined;\n\n if ((start === undefined || end === undefined || start === end) && fallbackRange) {\n [start, end] = fallbackRange;\n }\n\n const current = toNumericValue(convertDataValue(value, axisLayout));\n\n if (start === undefined || end === undefined || current === undefined || start === end) {\n return undefined;\n }\n\n const relative = (current - start) / (end - start);\n return Number.isFinite(relative) ? relative : undefined;\n};\n\nconst createAnnotationId = (text: string, index: number): string => {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (normalized) {\n const slug = normalized\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 32);\n if (slug) {\n return `annotation-${index}-${slug}`;\n }\n }\n return `annotation-${index}`;\n};\n\nconst DEFAULT_ARROW_OFFSET = -40;\n\nconst mapArrowsideToArrow = (annotation: PlotlyAnnotation): ChartAnnotationArrowHead => {\n let includeStart = false;\n let includeEnd = false;\n\n const arrowSide = typeof annotation?.arrowside === 'string' ? annotation?.arrowside.toLowerCase() : undefined;\n if (arrowSide) {\n includeStart = arrowSide.includes('start');\n includeEnd = arrowSide.includes('end');\n }\n\n const endHead = toFiniteNumber(annotation?.arrowhead);\n const startHead = toFiniteNumber((annotation as { startarrowhead?: number }).startarrowhead);\n\n if (endHead !== undefined && endHead > 0) {\n includeEnd = true;\n }\n if (startHead !== undefined && startHead > 0) {\n includeStart = true;\n }\n\n if (includeStart && includeEnd) {\n return 'both';\n }\n if (includeStart) {\n return 'start';\n }\n if (includeEnd) {\n return 'end';\n }\n return 'none';\n};\n\nconst mapArrowDashToPattern = (value: string | undefined): string | undefined => {\n if (!value) {\n return undefined;\n }\n\n const normalized = value.trim().toLowerCase();\n\n switch (normalized) {\n case 'solid':\n return undefined;\n case 'dot':\n return '1, 5';\n case 'dash':\n return '5, 5';\n case 'longdash':\n return '10, 5';\n case 'dashdot':\n return '5, 5, 1, 5';\n case 'longdashdot':\n return '10, 5, 1, 5';\n default:\n if (/^\\d+(\\s|,)*\\d*$/.test(normalized.replace(/\\s+/g, ' '))) {\n return normalized.replace(/\\s+/g, ' ');\n }\n return value;\n }\n};\n\n/**\n * Converts a Plotly annotation definition into the internal `ChartAnnotation` format, translating coordinates,\n * layout alignment, styling, and connector metadata while skipping unsupported configurations.\n */\nconst convertPlotlyAnnotation = (\n annotation: PlotlyAnnotation,\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n index: number,\n): IChartAnnotation | undefined => {\n if (!annotation || (annotation as { visible?: boolean }).visible === false) {\n return undefined;\n }\n\n const xRefType = resolveRefType(annotation.xref as string | undefined, 'x');\n const yRefType = resolveRefType(annotation.yref as string | undefined, 'y');\n\n if (!xRefType || !yRefType) {\n return undefined;\n }\n\n let coordinates: IChartAnnotation['coordinates'] | undefined;\n\n if (xRefType === 'axis' && yRefType === 'axis') {\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const xValue = convertDataValue(annotation.x, xAxisLayout);\n const yValue = convertDataValue(annotation.y, yAxisLayout);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n const yRefNormalized = typeof annotation.yref === 'string' ? annotation.yref.toLowerCase() : undefined;\n coordinates = {\n type: 'data',\n x: xValue,\n y: yValue,\n ...(yRefNormalized === 'y2' ? { yAxis: 'secondary' as const } : {}),\n };\n } else if (xRefType === 'relative' && yRefType === 'relative') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'relative' && yRefType === 'axis') {\n const xValue = toFiniteNumber(annotation.x);\n const yAxisLayout = getAxisLayoutByRef(layout, annotation.yref as string | undefined, 'y');\n const yFallbackRange = getAxisNumericRangeFromData('y', annotation.yref as string | undefined, layout, data);\n const yRelative = toRelativeCoordinate(annotation.y, yAxisLayout, yFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yRelative);\n if (xValue === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xValue,\n y: chartRelativeY,\n };\n } else if (xRefType === 'axis' && yRefType === 'relative') {\n const yValue = toFiniteNumber(annotation.y);\n const xAxisLayout = getAxisLayoutByRef(layout, annotation.xref as string | undefined, 'x');\n const xFallbackRange = getAxisNumericRangeFromData('x', annotation.xref as string | undefined, layout, data);\n const xRelative = toRelativeCoordinate(annotation.x, xAxisLayout, xFallbackRange);\n const chartRelativeY = transformRelativeYForChart(yValue);\n if (xRelative === undefined || chartRelativeY === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'relative',\n x: xRelative,\n y: chartRelativeY,\n };\n } else if (xRefType === 'pixel' && yRefType === 'pixel') {\n const xValue = toFiniteNumber(annotation.x);\n const yValue = toFiniteNumber(annotation.y);\n if (xValue === undefined || yValue === undefined) {\n return undefined;\n }\n coordinates = {\n type: 'pixel',\n x: xValue,\n y: yValue,\n };\n } else {\n return undefined;\n }\n\n const textValue = annotation.text;\n const rawText = textValue === undefined || textValue === null ? '' : String(textValue);\n const encodedText = encodeHtmlEntities(rawText);\n\n const chartAnnotation: IChartAnnotation = {\n id: createAnnotationId(encodedText, index),\n text: encodedText,\n coordinates,\n };\n\n const layoutProps: Partial<IChartAnnotationLayoutProps> = {};\n const styleProps: Partial<IChartAnnotationStyleProps> = {};\n const showArrow = annotation.showarrow === undefined ? false : !!annotation.showarrow;\n\n const clipOnAxis = (annotation as { cliponaxis?: boolean }).cliponaxis;\n if (clipOnAxis !== undefined) {\n layoutProps.clipToBounds = !!clipOnAxis;\n } else if (coordinates.type === 'data') {\n layoutProps.clipToBounds = true;\n }\n\n const horizontalAlign = mapHorizontalAlign(annotation.xanchor as string | undefined);\n if (horizontalAlign) {\n layoutProps.align = horizontalAlign;\n }\n\n if (!layoutProps.align) {\n const alignProp = mapHorizontalAlign((annotation as { align?: string }).align);\n if (alignProp) {\n layoutProps.align = alignProp;\n }\n }\n\n const verticalAlign = mapVerticalAlign(annotation.yanchor as string | undefined);\n if (verticalAlign) {\n layoutProps.verticalAlign = verticalAlign;\n }\n\n if (!layoutProps.verticalAlign) {\n const valignProp = mapVerticalAlign((annotation as { valign?: string }).valign);\n if (valignProp) {\n layoutProps.verticalAlign = valignProp;\n }\n }\n\n const offsetXComponents: number[] = [];\n let hasExplicitOffset = false;\n const ax = toFiniteNumber(annotation.ax);\n const axRef = typeof annotation.axref === 'string' ? annotation.axref.toLowerCase() : undefined;\n if (ax !== undefined && (axRef === undefined || axRef === 'pixel')) {\n offsetXComponents.push(ax);\n hasExplicitOffset = true;\n }\n const xShift = toFiniteNumber(annotation.xshift);\n if (xShift !== undefined) {\n offsetXComponents.push(xShift);\n hasExplicitOffset = true;\n }\n if (offsetXComponents.length > 0) {\n const offsetX = offsetXComponents.reduce((sum, value) => sum + value, 0);\n if (offsetX !== 0) {\n layoutProps.offsetX = offsetX;\n }\n }\n\n const offsetYComponents: number[] = [];\n const ay = toFiniteNumber(annotation.ay);\n const ayRef = typeof annotation.ayref === 'string' ? annotation.ayref.toLowerCase() : undefined;\n if (ay !== undefined && (ayRef === undefined || ayRef === 'pixel')) {\n offsetYComponents.push(ay);\n hasExplicitOffset = true;\n }\n const yShift = toFiniteNumber(annotation.yshift);\n if (yShift !== undefined) {\n offsetYComponents.push(yShift);\n hasExplicitOffset = true;\n }\n if (offsetYComponents.length > 0) {\n const offsetY = offsetYComponents.reduce((sum, value) => sum + value, 0);\n if (offsetY !== 0) {\n layoutProps.offsetY = offsetY;\n }\n }\n\n if (showArrow && !hasExplicitOffset && layoutProps.offsetY === undefined) {\n layoutProps.offsetY = DEFAULT_ARROW_OFFSET;\n }\n\n const maxWidth = toFiniteNumber(annotation.width);\n if (maxWidth !== undefined) {\n layoutProps.maxWidth = maxWidth;\n }\n\n if (annotation.bgcolor) {\n styleProps.backgroundColor = annotation.bgcolor as string;\n }\n\n if (annotation.bordercolor) {\n styleProps.borderColor = annotation.bordercolor as string;\n }\n\n const borderWidth = toFiniteNumber(annotation.borderwidth);\n if (borderWidth !== undefined) {\n styleProps.borderWidth = borderWidth;\n }\n\n const borderPad = appendPx(annotation.borderpad);\n if (borderPad) {\n styleProps.padding = borderPad;\n }\n\n const opacity = toFiniteNumber(annotation.opacity);\n if (opacity !== undefined) {\n styleProps.opacity = opacity;\n }\n\n if (annotation.font) {\n const font = annotation.font as {\n color?: string;\n size?: string | number;\n weight?: React.CSSProperties['fontWeight'];\n };\n if (font?.color) {\n styleProps.textColor = font.color;\n }\n const fontSize = appendPx(font?.size);\n if (fontSize) {\n styleProps.fontSize = fontSize;\n }\n if (font?.weight) {\n styleProps.fontWeight = font.weight;\n }\n }\n\n const textAngle = (annotation as { textangle?: number | string })?.textangle;\n if (typeof textAngle === 'number' && !Number.isNaN(textAngle)) {\n styleProps.rotation = textAngle;\n } else if (typeof textAngle === 'string' && textAngle.toLowerCase() !== 'auto') {\n const parsedAngle = Number(textAngle);\n if (!Number.isNaN(parsedAngle)) {\n styleProps.rotation = parsedAngle;\n }\n }\n\n if (Object.keys(layoutProps).length > 0) {\n chartAnnotation.layout = layoutProps;\n }\n\n if (Object.keys(styleProps).length > 0) {\n chartAnnotation.style = styleProps;\n }\n\n if (showArrow) {\n const arrowColor = (annotation.arrowcolor as string) ?? styleProps.textColor;\n const arrowWidth = toFiniteNumber(annotation.arrowwidth);\n const endPadding = toFiniteNumber(annotation.standoff);\n const startPadding = toFiniteNumber((annotation as { startstandoff?: number }).startstandoff);\n const dashPattern = mapArrowDashToPattern((annotation as { arrowdash?: string }).arrowdash);\n\n chartAnnotation.connector = {\n ...(arrowColor ? { strokeColor: arrowColor } : {}),\n ...(arrowWidth !== undefined ? { strokeWidth: arrowWidth } : {}),\n ...(endPadding !== undefined ? { endPadding: Math.max(endPadding, 0) } : {}),\n ...(startPadding !== undefined ? { startPadding: Math.max(startPadding, 0) } : {}),\n ...(dashPattern ? { dashArray: dashPattern } : {}),\n arrow: mapArrowsideToArrow(annotation),\n };\n }\n\n return chartAnnotation;\n};\n\nconst getChartAnnotationsFromLayout = (\n layout: Partial<Layout> | undefined,\n data: Data[] | undefined,\n isMultiPlot: boolean,\n): IChartAnnotation[] | undefined => {\n if (isMultiPlot || !layout?.annotations) {\n return undefined;\n }\n const annotationsArray = Array.isArray(layout.annotations) ? layout.annotations : [layout.annotations];\n const converted = annotationsArray\n .map((annotation, index) => convertPlotlyAnnotation(annotation as PlotlyAnnotation, layout, data, index))\n .filter((annotation): annotation is IChartAnnotation => annotation !== undefined);\n\n return converted.length > 0 ? converted : undefined;\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 transformPlotlyJsonToAnnotationChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n _colorMap: React.MutableRefObject<Map<string, string>>,\n _colorwayType: ColorwayType,\n _isDarkTheme?: boolean,\n): IAnnotationOnlyChartProps => {\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot) ?? [];\n const titles = getTitles(input.layout);\n const layoutTitle = titles.chartTitle || undefined;\n\n const layoutWithMeta = input.layout as Partial<Layout> & { meta?: { description?: string } };\n const description =\n typeof layoutWithMeta?.meta?.description === 'string' ? layoutWithMeta.meta.description : undefined;\n\n const width = typeof input.layout?.width === 'number' ? input.layout.width : undefined;\n const height = typeof input.layout?.height === 'number' ? input.layout.height : undefined;\n const paperBackgroundColor = typeof input.layout?.paper_bgcolor === 'string' ? input.layout.paper_bgcolor : undefined;\n const plotBackgroundColor = typeof input.layout?.plot_bgcolor === 'string' ? input.layout.plot_bgcolor : undefined;\n const fontColor = typeof input.layout?.font?.color === 'string' ? input.layout.font.color : undefined;\n const fontFamily = typeof input.layout?.font?.family === 'string' ? input.layout.font.family : undefined;\n const margin = input.layout?.margin;\n\n return {\n annotations,\n chartTitle: layoutTitle,\n description,\n width,\n height,\n paperBackgroundColor,\n plotBackgroundColor,\n fontColor,\n fontFamily,\n margin,\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IDonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\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\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\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 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, IChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as IChartDataPoint),\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\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 resolveXValue = getAxisValueResolver(getAxisType(input.data, getAxisObjects(input.data, input.layout).x));\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n\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, resolveXValue);\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: resolveXValue(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 = getLineOptions(series.line);\n const legendShape = getLegendShape(series);\n\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 });\n });\n });\n const xCategories = extractXCategories(input.data);\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)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\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\n if (mapXToDataPoints[x0Key as string]) {\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 }\n\n if (mapXToDataPoints[x1Key as string]) {\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\n const vsbcData = Object.values(mapXToDataPoints);\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\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 hideTickOverlap: true,\n hideLegend,\n roundCorners: true,\n supportNegativeData: true,\n barGapMax: 2,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getBarProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IGroupedVerticalBarChartProps => {\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\n const gvbcDataV2: IGroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\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 const annotations = getChartAnnotationsFromLayout(processedInput.layout, processedInput.data, isMultiPlot);\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 hideLegend,\n roundCorners: true,\n wrapXAxisLables: true,\n showYAxisLables: 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 ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\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\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 const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n supportNegativeData: true,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n showYAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IAreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as IAreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ILineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ILineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ILineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as IScatterChartProps;\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ILineChartProps | IAreaChartProps | IScatterChartProps => {\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 xAxisType = getAxisType(input.data, getAxisObjects(input.data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType);\n const shouldWrapLabels = xAxisType === 'category';\n const chartData: ILineChartPoints[] = 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, resolveXValue);\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: resolveXValue(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\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 ILineChartPoints;\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 const xCategories = extractXCategories(input.data);\n const lineShape: ILineChartPoints[] | IScatterChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n\n const resolveX = (val: Datum) => {\n if (typeof val === 'number' && Array.isArray(xCategories)) {\n if (xCategories[val] !== undefined) {\n return xCategories[val];\n } else {\n return xCategories[shapeIdx];\n }\n }\n if (shape.xref === 'paper') {\n if (val === 0) {\n return xMinValue;\n }\n if (val === 1) {\n return xMaxValue;\n }\n return typeof xMinValue === 'number' && typeof xMaxValue === 'number' && typeof val === 'number'\n ? xMinValue + val * (xMaxValue - xMinValue)\n : 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: resolveXValue(resolveX(shape.x0!)), y: resolveY(shape.y0!) },\n { x: resolveXValue(resolveX(shape.x1!)), y: resolveY(shape.y1!) },\n ],\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n } as ILineChartPoints | IScatterChartPoints;\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\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: IChartProps = {\n lineChartData: [...chartData, ...(lineShape as ILineChartPoints[])],\n };\n\n const scatterChartProps: IChartProps = {\n scatterChartData: [...chartData, ...(lineShape as IScatterChartPoints[])],\n };\n\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n wrapXAxisLables: shouldWrapLabels,\n showYAxisLables: true,\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 ...(annotations ? { annotations } : {}),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as IAreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n enableReflow: false,\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 ILineChartProps | IScatterChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = 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 return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\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\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 IHorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as IHorizontalBarChartWithAxisDataPoint[];\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 hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IGanttChartProps => {\n const data = input.data.filter((series: Partial<PlotData>) => series.type !== 'scatter' || series.mode !== 'markers');\n const { legends, hideLegend } = getLegendProps(data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const xAxisType = getAxisType(data, getAxisObjects(data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType, parseLocalDate);\n const resolveGanttXValue = (value: Datum) => {\n const resolvedValue = resolveXValue(value);\n return typeof resolvedValue === 'string' ? 0 : resolvedValue ?? 0;\n };\n const isXDate = xAxisType === 'date';\n const ganttData: IGanttChartDataPoint[] = [];\n data.forEach((series: Partial<PlotData>, index: number) => {\n const legend = legends[index];\n\n if (series.type === 'bar') {\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\n (series.y as Datum[]).forEach((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return;\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 = +resolveGanttXValue(series.base?.[i] as Datum);\n const xVal = +resolveGanttXValue(series.x?.[i] as Datum);\n\n ganttData.push({\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal as string | number,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n });\n });\n } else if (series.type === 'scatter' && series.mode === 'none' && series.fill === 'toself') {\n for (let i = 0; i < series.y!.length; i += 5) {\n if (isInvalidValue(series.y![i]) || isInvalidValue(series.y![i + 3])) {\n continue;\n }\n\n const x0 = resolveGanttXValue(series.x![i] as Datum);\n const x1 = resolveGanttXValue(series.x![i + 1] as Datum);\n const y0 = series.y![i] as number;\n const y1 = series.y![i + 3] as number;\n\n ganttData.push({\n x: {\n start: x0,\n end: x1,\n },\n y: Math.round((y0 + y1) / 2),\n legend,\n color: series.fillcolor,\n });\n }\n }\n });\n\n return {\n data: ganttData,\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(data, input.layout),\n ...getBarProps(data, input.layout, true),\n ...getAxisTickProps(data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\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 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: IHeatMapChartData = {\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ISankeyChartProps => {\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 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 ISankeyChartData;\n\n const styles: ISankeyChartProps['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 styles,\n enableReflow: false,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\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 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): IGaugeChartSegment => {\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: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\n roundCorners: true,\n };\n};\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IChartTableProps => {\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: IChartTableProps['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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): IFunnelChartProps => {\n const funnelData: IFunnelChartDataPoint[] = [];\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 if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\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): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\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\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>): ILegend['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 // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): ILegendsProps => {\n const allupLegends: ILegend[] = [];\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 if (isArrayOrTypedArray(pieSeries.labels)) {\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 }\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', 'annotation'].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\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\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\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\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 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<ICartesianChartProps, '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\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\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<\n IVerticalBarChartProps,\n 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'\n >\n | Pick<IGanttChartProps, '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<ICartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\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 ICartesianChartProps,\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 => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n props.xAxis = {\n tickText: ax.ticktext,\n };\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n props.yAxis = {\n tickText: ax.ticktext,\n };\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 IAxisObject 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): IAxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, IAxisObject> = {};\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\nconst getAxisType = (data: Data[], ax: IAxisObject): AxisType => {\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)) && isArrayOrTypedArray(series[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 = (axType: AxisType, dateParser?: (v: string | number) => Date) => {\n const toDate = (value: string | number): Date | null => {\n const date = dateParser ? dateParser(value) : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n };\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 toDate(+value!);\n }\n if (typeof value === 'string') {\n return toDate(value);\n }\n return null;\n\n case 'category':\n return `${value}`;\n\n default:\n return null;\n }\n };\n};\n"]}
|