@fluentui/react-charts 9.3.5 → 9.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -2
- package/dist/index.d.ts +223 -44
- package/lib/AnnotationOnlyChart.js +1 -0
- package/lib/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +208 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +1 -0
- package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/index.js +2 -0
- package/lib/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js +31 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js.map +1 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js +23 -0
- package/lib/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js.map +1 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +11 -6
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.js +59 -39
- package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +5 -5
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +617 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js +1 -0
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/index.js +2 -0
- package/lib/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +173 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +126 -0
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +157 -132
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/index.js +2 -0
- package/lib/components/CommonComponents/index.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +29 -13
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +14 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +2 -6
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +3 -2
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +39 -19
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +4 -8
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +644 -72
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +23 -8
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +2 -2
- package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +2 -2
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +3 -3
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +3 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +3 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +11 -6
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +3 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +3 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +25 -12
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +4 -4
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +3 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +3 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.js +97 -37
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib/components/Legends/useLegendsStyles.styles.raw.js +10 -11
- package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +1 -1
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +15 -10
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +3 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +13 -10
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +1 -1
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +13 -8
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +3 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +13 -8
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +11 -6
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/ChartAnnotation.js +1 -0
- package/lib/types/ChartAnnotation.js.map +1 -0
- package/lib/types/index.js +1 -0
- package/lib/types/index.js.map +1 -1
- package/lib/utilities/Common.styles.js +1 -2
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +1 -2
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/image-export-utils.js +108 -0
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +16 -13
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/AnnotationOnlyChart.js +6 -0
- package/lib-commonjs/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +219 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js +6 -0
- package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js +7 -0
- package/lib-commonjs/components/AnnotationOnlyChart/index.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js +56 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js +33 -0
- package/lib-commonjs/components/AnnotationOnlyChart/useAnnotationOnlyChartStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +14 -15
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +74 -102
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +4 -4
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +628 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js +4 -0
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js +7 -0
- package/lib-commonjs/components/CommonComponents/Annotations/index.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +265 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +161 -0
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +157 -131
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/index.js +2 -0
- package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +32 -21
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +14 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +0 -14
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +38 -18
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +630 -38
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +25 -16
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +2 -2
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +3 -3
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +3 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +14 -15
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +3 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +47 -34
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +3 -3
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +3 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +144 -86
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +9 -10
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +18 -19
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +16 -19
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +16 -17
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +16 -17
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +14 -15
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js +6 -0
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -0
- package/lib-commonjs/types/index.js +1 -0
- package/lib-commonjs/types/index.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +1 -2
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +1 -2
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +108 -0
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +16 -13
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n Shape,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n isScatterAreaChart,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (data: Data[], layout: Partial<Layout> | undefined): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n let allLineSeries = true;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n\n if (series.type !== 'scatter' || isScatterAreaChart(series)) {\n allLineSeries = false;\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (!allLineSeries) {\n if (typeof yMinValue === 'number') {\n yMinValue = Math.min(yMinValue, 0);\n }\n if (typeof yMaxValue === 'number') {\n yMaxValue = Math.max(yMaxValue, 0);\n }\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n // 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 * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, x };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n // clear colorMap for donut chart to reassign colors as the colorMap initially gets assigned by\n // getAllupLegendsProps function without sorting labels by value\n colorMap.current.clear();\n\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const markerColors = (firstData.marker?.colors as unknown as string[]) || undefined;\n const hasMarkerColors = Array.isArray(markerColors) && markerColors.length >= firstData.labels.length;\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n color: hasMarkerColors ? markerColors[index] : undefined,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value; when marker colors are present, keep color attached to the label\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string =\n pair.color ??\n resolveColor(\n colors,\n sortedIdx,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n // Build anticlockwise order by keeping the first item, reversing the rest\n const legends = Object.keys(mapLegendToDataPoint);\n const reorderedEntries =\n legends.length > 1\n ? ([\n [legends[0], mapLegendToDataPoint[legends[0]]],\n ...legends\n .slice(1)\n .reverse()\n .map(key => [key, mapLegendToDataPoint[key]] as const),\n ] as ReadonlyArray<readonly [string, ChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as ChartDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n order: 'sorted',\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // 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): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const 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 // 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 = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const xCategories = Array.from(\n new Set(\n (input.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 (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 (shape.xref === 'x domain') {\n if (val === 0) {\n return xCategories[0];\n }\n if (val === 1) {\n return xCategories[xCategories.length - 1];\n }\n }\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 mapXToDataPoints[x0Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y0Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n mapXToDataPoints[x1Key as string].lineData!.push({\n legend: `Reference_${shapeIdx}`,\n y: y1Val as string,\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n });\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const gvbcDataV2: GroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n const legend: string = legends[index1];\n const legendShape = getLegendShape(series);\n\n if (series.type === 'bar') {\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n gvbcDataV2.push({\n type: 'bar',\n legend,\n key: legend,\n data: (series.x as Datum[])\n .map((x, xIndex) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[xIndex])) {\n return;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[xIndex % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n xIndex,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, xIndex);\n const yVal = series.y![xIndex] as number;\n\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n };\n })\n .filter(item => typeof item !== 'undefined'),\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n } else if (series.type === 'scatter') {\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = getLineOptions(series.line);\n const opacity = getOpacity(series, index1);\n const validXYRanges = getValidXYRanges(series);\n\n validXYRanges.forEach(([rangeStart, rangeEnd]) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd) as Datum[];\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd) as Datum[];\n\n gvbcDataV2.push({\n type: 'line',\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => {\n const yVal = rangeYValues[i] as number;\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n };\n }),\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n });\n }\n });\n\n return {\n dataV2: gvbcDataV2,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index) ?? 0;\n if (isInvalidValue(xVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst mapColorFillBars = (layout: Partial<Layout> | undefined) => {\n if (!Array.isArray(layout?.shapes)) {\n return [];\n }\n\n return layout.shapes\n .filter((shape: Partial<Shape>) => shape.type === 'rect')\n .map((shape: { x0?: Datum; x1?: Datum; fillcolor?: string }) => {\n //colorFillbars doesn't support string dates or categories\n if (typeof shape.x0 === 'string' || typeof shape.x1 === 'string') {\n return null;\n }\n return {\n color: shape.fillcolor!,\n data: [{ startX: shape.x0, endX: shape.x1 }],\n applyPattern: false,\n };\n });\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const xAxisType = getAxisType(input.data, getAxisObjects(input.data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType);\n const shouldWrapLabels = xAxisType === 'category';\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series, 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 ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n fill: series.fill,\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const xMinValue = chartData[0]?.data[0]?.x;\n const xMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.x;\n const yMinValue = chartData[0]?.data[0]?.y;\n const yMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.y;\n\n const lineShape: LineChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (shape.xref === 'paper') {\n if (val === 0) {\n return xMinValue;\n }\n if (val === 1) {\n return xMaxValue;\n }\n if (typeof val === 'number' && typeof xMinValue === 'number' && typeof xMaxValue === 'number') {\n return xMinValue + val * (xMaxValue - xMinValue);\n }\n return val;\n }\n return val;\n };\n\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n return {\n legend: `Reference_${shapeIdx}`,\n data: [\n { x: resolveX(shape.x0!), y: resolveY(shape.y0!) },\n { x: resolveX(shape.x1!), y: resolveY(shape.y1!) },\n ],\n color: rgb(lineColor!).formatHex8() ?? lineColor,\n lineOptions: getLineOptions(shape.line),\n useSecondaryYScale: false,\n } as LineChartPoints;\n });\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: [...chartData, ...lineShape],\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n wrapXAxisLables: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n ...(!isScatterChart &&\n (() => {\n const bars = mapColorFillBars(input.layout);\n return bars && !bars.includes(null) ? { colorFillBars: bars } : {};\n })()),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: isInvalidValue(series.x?.[i]) ? 0 : series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\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: GanttChartDataPoint[] = [];\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): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index) ?? 0;\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index])) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(\n extractedNodeColors,\n index,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedIncreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedDecreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/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): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(\n extractedColors,\n 0,\n category,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(\n extractedColors,\n i,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n // 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): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(\n colors,\n labelIndex,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (\n series: Partial<PlotData>,\n resolveX?: (v: Datum) => Datum,\n resolveY?: (v: Datum) => Datum,\n): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (\n isInvalidValue(series.x![end]) ||\n (typeof resolveX === 'function' && isInvalidValue(resolveX(series.x![end] as Datum))) ||\n isInvalidValue(series.y![end]) ||\n (typeof resolveY === 'function' && isInvalidValue(resolveY(series.y![end] as Datum)))\n ) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n result[propName] = 'data';\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = ax?.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n 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 AxisObject extends Partial<LayoutAxis> {\n _id: string;\n}\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const makeAxisObject = (axLetter: 'x' | 'y', axId: number): AxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, AxisObject> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = makeAxisObject('x', xAxisId);\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = makeAxisObject('y', sortedYAxisIds[0]);\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = makeAxisObject('y', sortedYAxisIds[1]);\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], ax: AxisObject): 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\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","isScatterAreaChart","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","containsSecondaryYAxis","allLineSeries","forEach","yValues","y","Math","type","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","current","clear","labels","values","markerColors","hasMarkerColors","labelValuePairs","label","getNumberAtIndexOrDefault","validPairs","pair","sort","a","b","sortedIdx","legend","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","legends","reorderedEntries","slice","reverse","chartData","v","hideLegend","showlegend","showLabelsInPercent","roundCorners","order","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","getLegendProps","colorScale","resolveXValue","getAxisValueResolver","getAxisType","getAxisObjects","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","xCategories","from","flatMap","xData","flat","shapes","shape","shapeIdx","resolveX","val","xref","x0Key","x0","x1Key","x1","resolveY","yref","y0Val","y0","y1Val","y1","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","hasObjectArrayData","some","processedData","gvbcDataV2","xIndex","dataV2","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","xAxisCalloutData","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","mapColorFillBars","fillcolor","startX","endX","applyPattern","chartType","isScatterMarkers","isAreaChart","isScatterChart","xAxisType","shouldWrapLabels","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","markerColor","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","xMinValue","xMaxValue","lineShape","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","bars","colorFillBars","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","parseLocalDate","resolveGanttXValue","resolvedValue","ganttData","base","round","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","align","font","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColor","fontSize","backgroundColor","textAlign","style","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","interval","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","autorange","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","tickmode","tickvals","tickValues","tickText","ticktext","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","charAt","dtickNum","xAxisId","yAxisIds","axisIds","makeAxisObject","_id","sortedYAxisIds","dateParser","toDate","getTime","isoDateRegex","match"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n ScatterChartPoints,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport type { AnnotationOnlyChartProps } from '../AnnotationOnlyChart/AnnotationOnlyChart.types';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n Shape,\n Annotations,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n isScatterAreaChart,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\nimport {\n ChartAnnotation,\n ChartAnnotationArrowHead,\n ChartAnnotationLayoutProps,\n ChartAnnotationStyleProps,\n ChartAnnotationHorizontalAlign,\n ChartAnnotationVerticalAlign,\n} from '../../types/ChartAnnotation';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (data: Data[], layout: Partial<Layout> | undefined): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n let allLineSeries = true;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n\n if (series.type !== 'scatter' || isScatterAreaChart(series)) {\n allLineSeries = false;\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (!allLineSeries) {\n if (typeof yMinValue === 'number') {\n yMinValue = Math.min(yMinValue, 0);\n }\n if (typeof yMaxValue === 'number') {\n yMaxValue = Math.max(yMaxValue, 0);\n }\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.RefObject<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): ChartAnnotation | 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: ChartAnnotation['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: ChartAnnotation = {\n id: createAnnotationId(encodedText, index),\n text: encodedText,\n coordinates,\n };\n\n const layoutProps: Partial<ChartAnnotationLayoutProps> = {};\n const styleProps: Partial<ChartAnnotationStyleProps> = {};\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 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): ChartAnnotation[] | 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 ChartAnnotation => 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 _colorMap: React.RefObject<Map<string, string>>,\n _colorwayType: ColorwayType,\n _isDarkTheme?: boolean,\n): AnnotationOnlyChartProps => {\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 colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n // clear colorMap for donut chart to reassign colors as the colorMap initially gets assigned by\n // getAllupLegendsProps function without sorting labels by value\n colorMap.current!.clear();\n\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const markerColors = (firstData.marker?.colors as unknown as string[]) || undefined;\n const hasMarkerColors = Array.isArray(markerColors) && markerColors.length >= firstData.labels.length;\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n color: hasMarkerColors ? markerColors[index] : undefined,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value; when marker colors are present, keep color attached to the label\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string =\n pair.color ??\n resolveColor(\n colors,\n sortedIdx,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n // Build anticlockwise order by keeping the first item, reversing the rest\n const legends = Object.keys(mapLegendToDataPoint);\n const reorderedEntries =\n legends.length > 1\n ? ([\n [legends[0], mapLegendToDataPoint[legends[0]]],\n ...legends\n .slice(1)\n .reverse()\n .map(key => [key, mapLegendToDataPoint[key]] as const),\n ] as ReadonlyArray<readonly [string, ChartDataPoint]>)\n : legends.map(key => [key, mapLegendToDataPoint[key]] as const);\n\n return {\n data: {\n chartTitle,\n chartData: reorderedEntries.map(([, v]) => v as ChartDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n order: 'sorted',\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let yMinValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const 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 // 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 = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const xCategories = 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 (shape.xref === 'x domain') {\n if (val === 0) {\n return xCategories[0];\n }\n if (val === 1) {\n return xCategories[xCategories.length - 1];\n }\n }\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 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 wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const gvbcDataV2: GroupedVerticalBarChartProps['dataV2'] = [];\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n const legend: string = legends[index1];\n const legendShape = getLegendShape(series);\n\n if (series.type === 'bar') {\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n gvbcDataV2.push({\n type: 'bar',\n legend,\n key: legend,\n data: (series.x as Datum[])\n .map((x, xIndex) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[xIndex])) {\n return;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[xIndex % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(\n extractedBarColors,\n xIndex,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const opacity = getOpacity(series, xIndex);\n const yVal = series.y![xIndex] as number;\n\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n };\n })\n .filter(item => typeof item !== 'undefined'),\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n } else if (series.type === 'scatter') {\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const lineColor = resolveColor(\n extractedLineColors,\n index1,\n legend,\n colorMap,\n processedInput.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const lineOptions = getLineOptions(series.line);\n const opacity = getOpacity(series, index1);\n const validXYRanges = getValidXYRanges(series);\n\n validXYRanges.forEach(([rangeStart, rangeEnd]) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd) as Datum[];\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd) as Datum[];\n\n gvbcDataV2.push({\n type: 'line',\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => {\n const yVal = rangeYValues[i] as number;\n return {\n x: x!.toString(),\n y: yVal,\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n };\n }),\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? lineColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n });\n });\n }\n });\n\n 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 wrapXAxisLables: true,\n hideLegend,\n roundCorners: 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 colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index) ?? 0;\n if (isInvalidValue(xVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const annotations = getChartAnnotationsFromLayout(input.layout, input.data, isMultiPlot);\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...(annotations ? { annotations } : {}),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst mapColorFillBars = (layout: Partial<Layout> | undefined) => {\n if (!Array.isArray(layout?.shapes)) {\n return [];\n }\n\n return layout.shapes\n .filter((shape: Partial<Shape>) => shape.type === 'rect')\n .map((shape: { x0?: Datum; x1?: Datum; fillcolor?: string }) => {\n //colorFillbars doesn't support string dates or categories\n if (typeof shape.x0 === 'string' || typeof shape.x1 === 'string') {\n return null;\n }\n return {\n color: shape.fillcolor!,\n data: [{ startX: shape.x0, endX: shape.x1 }],\n applyPattern: false,\n };\n });\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const xAxisType = getAxisType(input.data, getAxisObjects(input.data, input.layout).x);\n const resolveXValue = getAxisValueResolver(xAxisType);\n const shouldWrapLabels = xAxisType === 'category';\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series, 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 ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n fill: series.fill,\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const xMinValue = chartData[0]?.data[0]?.x;\n const xMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.x;\n const yMinValue = chartData[0]?.data[0]?.y;\n const yMaxValue = chartData[0]?.data[chartData[0].data.length - 1]?.y;\n const xCategories = extractXCategories(input.data);\n const lineShape: LineChartPoints[] | ScatterChartPoints[] = (input.layout?.shapes ?? [])\n .filter(shape => shape.type === 'line')\n .map((shape, shapeIdx) => {\n const lineColor = shape.line?.color;\n const resolveX = (val: Datum) => {\n if (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 if (typeof val === 'number' && typeof xMinValue === 'number' && typeof xMaxValue === 'number') {\n return xMinValue + val * (xMaxValue - xMinValue);\n }\n return val;\n }\n return val;\n };\n\n const resolveY = (val: Datum) => {\n if (shape.yref === 'paper') {\n if (val === 0) {\n return yMinValue;\n }\n if (val === 1) {\n return yMaxValue;\n }\n if (typeof val === 'number') {\n return yMinValue + val * (yMaxValue - yMinValue);\n }\n return val;\n }\n return val;\n };\n\n return {\n legend: `Reference_${shapeIdx}`,\n data: [\n { x: 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 LineChartPoints | ScatterChartPoints;\n });\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: [...chartData, ...(lineShape as LineChartPoints[])],\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: [...chartData, ...(lineShape as ScatterChartPoints[])],\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 wrapXAxisLabels: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\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 AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n ...(!isScatterChart &&\n (() => {\n const bars = mapColorFillBars(input.layout);\n return bars && !bars.includes(null) ? { colorFillBars: bars } : {};\n })()),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, input.layout?.template?.layout?.colorway, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: isInvalidValue(series.x?.[i]) ? 0 : series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\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: GanttChartDataPoint[] = [];\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.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index) ?? 0;\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index])) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(\n extractedNodeColors,\n index,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(\n extractedColors,\n index,\n legend,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedIncreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(\n extractedDecreasingDeltaColors,\n 0,\n '',\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/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.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(\n extractedColors,\n 0,\n category,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(\n extractedColors,\n i,\n label,\n colorMap,\n input.layout?.template?.layout?.colorway,\n isDarkTheme,\n );\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.RefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n true,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(\n colors,\n labelIndex,\n legend,\n colorMap,\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n isDarkTheme,\n true,\n );\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (\n series: Partial<PlotData>,\n resolveX?: (v: Datum) => Datum,\n resolveY?: (v: Datum) => Datum,\n): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (\n isInvalidValue(series.x![end]) ||\n (typeof resolveX === 'function' && isInvalidValue(resolveX(series.x![end] as Datum))) ||\n isInvalidValue(series.y![end]) ||\n (typeof resolveY === 'function' && isInvalidValue(resolveY(series.y![end] as Datum)))\n ) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie', '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 const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n result[propName] = 'data';\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = ax?.autorange === 'reversed' ? categoriesInTraceOrder.reverse() : categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n 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 AxisObject extends Partial<LayoutAxis> {\n _id: string;\n}\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const makeAxisObject = (axLetter: 'x' | 'y', axId: number): AxisObject => ({\n ...layout?.[getAxisKey(axLetter, axId)],\n _id: `${axLetter}${axId > 1 ? axId : ''}`,\n });\n\n const axisObjects: Record<string, AxisObject> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = makeAxisObject('x', xAxisId);\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = makeAxisObject('y', sortedYAxisIds[0]);\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = makeAxisObject('y', sortedYAxisIds[1]);\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], ax: AxisObject): 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\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","isScatterAreaChart","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","containsSecondaryYAxis","allLineSeries","forEach","yValues","y","Math","type","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","extractXCategories","from","Set","flatMap","trace","xData","flat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","encodeHtmlEntities","replace","toFiniteNumber","numeric","Number","isFinite","normalizeAxisRef","ref","axis","normalized","match","getAxisNumericRangeFromData","axisLayout","getAxisLayoutByRef","targetRef","traceAxisKey","minValue","maxValue","plotTrace","traceAxisRef","values","arrayLike","toNumericValue","convertDataValue","isNaN","transformRelativeYForChart","mapHorizontalAlign","mapVerticalAlign","appendPx","resolveRefType","endsWith","startsWith","defaultAxisKey","axisKey","dateValue","getTime","timestamp","toRelativeCoordinate","fallbackRange","start","end","current","relative","createAnnotationId","trim","slug","slice","DEFAULT_ARROW_OFFSET","mapArrowsideToArrow","annotation","includeStart","includeEnd","arrowSide","arrowside","endHead","arrowhead","startHead","startarrowhead","mapArrowDashToPattern","convertPlotlyAnnotation","visible","xRefType","xref","yRefType","yref","coordinates","xAxisLayout","yAxisLayout","xValue","yValue","yRefNormalized","chartRelativeY","yFallbackRange","yRelative","xFallbackRange","xRelative","textValue","rawText","String","encodedText","chartAnnotation","id","layoutProps","styleProps","showArrow","showarrow","clipOnAxis","cliponaxis","clipToBounds","horizontalAlign","xanchor","align","alignProp","verticalAlign","yanchor","valignProp","valign","offsetXComponents","hasExplicitOffset","ax","axRef","axref","push","xShift","xshift","offsetX","reduce","offsetYComponents","ay","ayRef","ayref","yShift","yshift","offsetY","maxWidth","width","bgcolor","backgroundColor","bordercolor","borderColor","borderWidth","borderwidth","borderPad","borderpad","padding","opacity","font","textColor","fontSize","size","weight","fontWeight","textAngle","textangle","rotation","parsedAngle","keys","style","arrowColor","arrowcolor","arrowWidth","arrowwidth","endPadding","standoff","startPadding","startstandoff","dashPattern","arrowdash","connector","strokeColor","dashArray","arrow","getChartAnnotationsFromLayout","isMultiPlot","annotations","annotationsArray","converted","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","allKeys","add","hasValidData","isNumericData","name","transformPlotlyJsonToAnnotationChartProps","input","_colorMap","_colorwayType","_isDarkTheme","layoutWithMeta","layoutTitle","description","meta","height","paperBackgroundColor","paper_bgcolor","plotBackgroundColor","plot_bgcolor","fontColor","fontFamily","family","margin","transformPlotlyJsonToDonutProps","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","clear","labels","markerColors","hasMarkerColors","labelValuePairs","label","getNumberAtIndexOrDefault","validPairs","pair","sort","a","b","sortedIdx","legend","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","legends","reorderedEntries","reverse","chartData","v","hideLegend","showlegend","showLabelsInPercent","roundCorners","order","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","getLegendProps","colorScale","resolveXValue","getAxisValueResolver","getAxisType","getAxisObjects","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","rangeYValues","index2","xAxisPoint","lineData","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","xCategories","shapes","shape","shapeIdx","resolveX","val","x0Key","x0","x1Key","x1","resolveY","y0Val","y0","y1Val","y1","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","hasObjectArrayData","some","processedData","gvbcDataV2","xIndex","dataV2","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","xAxisCalloutData","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","mapColorFillBars","fillcolor","startX","endX","applyPattern","chartType","isScatterMarkers","isAreaChart","isScatterChart","xAxisType","shouldWrapLabels","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","markerColor","originXOffset","__polarOriginX","direction","polar","angularaxis","axisLabel","__axisLabel","xMinValue","xMaxValue","lineShape","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","wrapXAxisLabels","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","bars","colorFillBars","transformPlotlyJsonToHorizontalBarWithAxisProps","point","chartHeight","l","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","parseLocalDate","resolveGanttXValue","resolvedValue","ganttData","base","round","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","chartValueFormat","variant","cleanText","formatValue","colIndex","cells","formatStr","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","textAlign","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","allX","allY","originX","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","templateRows","templateColumns","gridLayout","anchorIndex","domainXInfo","domainYInfo","xMatches","interval","yMatch","yIndex","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","autorange","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","tickmode","tickvals","tickValues","tickText","ticktext","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","charAt","dtickNum","xAxisId","yAxisIds","axisIds","makeAxisObject","_id","sortedYAxisIds","dateParser","toDate","isoDateRegex"],"mappings":"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"}
|