@fluentui/react-charts 9.3.6 → 9.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/dist/index.d.ts +17 -12
  3. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
  4. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  5. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
  6. package/lib/components/AreaChart/AreaChart.js +3 -16
  7. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  8. package/lib/components/ChartTable/ChartTable.js +2 -10
  9. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  10. package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
  11. package/lib/components/CommonComponents/CartesianChart.js +2 -0
  12. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  13. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  14. package/lib/components/CommonComponents/ChartPopover.js +1 -2
  15. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  16. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -2
  17. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  18. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -2
  19. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  20. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  21. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
  22. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  23. package/lib/components/DeclarativeChart/DeclarativeChart.js +48 -25
  24. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  25. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +48 -22
  26. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  27. package/lib/components/DonutChart/DonutChart.js +3 -12
  28. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  29. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  30. package/lib/components/DonutChart/Pie/Pie.js +4 -2
  31. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  32. package/lib/components/FunnelChart/FunnelChart.js +2 -10
  33. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  34. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
  35. package/lib/components/GanttChart/GanttChart.js +3 -16
  36. package/lib/components/GanttChart/GanttChart.js.map +1 -1
  37. package/lib/components/GaugeChart/GaugeChart.js +2 -10
  38. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  39. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  40. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +7 -19
  41. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  42. package/lib/components/HeatMapChart/HeatMapChart.js +3 -16
  43. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  44. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +3 -21
  45. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  46. package/lib/components/Legends/Legends.types.js.map +1 -1
  47. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  48. package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  49. package/lib/components/LineChart/LineChart.js +10 -19
  50. package/lib/components/LineChart/LineChart.js.map +1 -1
  51. package/lib/components/LineChart/LineChart.types.js +1 -1
  52. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  53. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +3 -4
  54. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  55. package/lib/components/SankeyChart/SankeyChart.js +3 -9
  56. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  57. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  58. package/lib/components/ScatterChart/ScatterChart.js +23 -23
  59. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  60. package/lib/components/Sparkline/Sparkline.js +11 -7
  61. package/lib/components/Sparkline/Sparkline.js.map +1 -1
  62. package/lib/components/VerticalBarChart/VerticalBarChart.js +2 -14
  63. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  64. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +7 -17
  65. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  66. package/lib/types/DataPoint.js.map +1 -1
  67. package/lib/utilities/FocusableTooltipText.js +1 -1
  68. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  69. package/lib/utilities/getWindow.js +0 -1
  70. package/lib/utilities/getWindow.js.map +1 -1
  71. package/lib/utilities/hooks.js +34 -0
  72. package/lib/utilities/hooks.js.map +1 -0
  73. package/lib/utilities/image-export-utils.js +115 -75
  74. package/lib/utilities/image-export-utils.js.map +1 -1
  75. package/lib/utilities/utilities.js +23 -24
  76. package/lib/utilities/utilities.js.map +1 -1
  77. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -16
  78. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  79. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.types.js.map +1 -1
  80. package/lib-commonjs/components/AreaChart/AreaChart.js +2 -15
  81. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  82. package/lib-commonjs/components/ChartTable/ChartTable.js +3 -10
  83. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  84. package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
  85. package/lib-commonjs/components/CommonComponents/CartesianChart.js +2 -0
  86. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  87. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  88. package/lib-commonjs/components/CommonComponents/ChartPopover.js +1 -2
  89. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  90. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +4 -2
  91. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  92. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -2
  93. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  94. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  95. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +0 -2
  96. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  97. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +48 -25
  98. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  99. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +48 -22
  100. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  101. package/lib-commonjs/components/DonutChart/DonutChart.js +2 -11
  102. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  103. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  104. package/lib-commonjs/components/DonutChart/Pie/Pie.js +4 -2
  105. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  106. package/lib-commonjs/components/FunnelChart/FunnelChart.js +2 -10
  107. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  108. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
  109. package/lib-commonjs/components/GanttChart/GanttChart.js +2 -15
  110. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
  111. package/lib-commonjs/components/GaugeChart/GaugeChart.js +2 -10
  112. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  113. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  114. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +7 -19
  115. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  116. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -15
  117. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  118. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -19
  119. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  120. package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
  121. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  122. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  123. package/lib-commonjs/components/LineChart/LineChart.js +10 -19
  124. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  125. package/lib-commonjs/components/LineChart/LineChart.types.js +1 -1
  126. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  127. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +2 -2
  128. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  129. package/lib-commonjs/components/SankeyChart/SankeyChart.js +3 -9
  130. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  131. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  132. package/lib-commonjs/components/ScatterChart/ScatterChart.js +21 -21
  133. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  134. package/lib-commonjs/components/Sparkline/Sparkline.js +11 -7
  135. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
  136. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +2 -14
  137. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  138. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +6 -16
  139. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  140. package/lib-commonjs/types/DataPoint.js.map +1 -1
  141. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  142. package/lib-commonjs/utilities/getWindow.js +0 -1
  143. package/lib-commonjs/utilities/getWindow.js.map +1 -1
  144. package/lib-commonjs/utilities/hooks.js +45 -0
  145. package/lib-commonjs/utilities/hooks.js.map +1 -0
  146. package/lib-commonjs/utilities/image-export-utils.js +116 -76
  147. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  148. package/lib-commonjs/utilities/utilities.js +21 -20
  149. package/lib-commonjs/utilities/utilities.js.map +1 -1
  150. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DeclarativeChart/DeclarativeChart.tsx"],"sourcesContent":["'use client';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport type { Data, PlotData, PlotlySchema, OutputChartType, TraceInfo } from '@fluentui/chart-utilities';\nimport {\n decodeBase64Fields,\n isArrayOrTypedArray,\n isMonthArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\nimport type { GridProperties } from './PlotlySchemaAdapter';\nimport { tokens } from '@fluentui/react-theme';\nimport { ThemeContext_unstable as V9ThemeContext } from '@fluentui/react-shared-contexts';\nimport { Theme, webLightTheme } from '@fluentui/tokens';\nimport * as d3Color from 'd3-color';\n\nimport {\n correctYearMonth,\n getGridProperties,\n isNonPlotType,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToAreaChartProps,\n transformPlotlyJsonToLineChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n transformPlotlyJsonToChartTableProps,\n transformPlotlyJsonToScatterChartProps,\n projectPolarToCartesian,\n getAllupLegendsProps,\n NON_PLOT_KEY_PREFIX,\n SINGLE_REPEAT,\n transformPlotlyJsonToFunnelChartProps,\n transformPlotlyJsonToGanttChartProps,\n transformPlotlyJsonToAnnotationChartProps,\n} from './PlotlySchemaAdapter';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { AnnotationOnlyChart } from '../AnnotationOnlyChart/AnnotationOnlyChart';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { LineChart } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { Chart, ImageExportOptions } from '../../types/index';\nimport { ScatterChart } from '../ScatterChart/index';\nimport { FunnelChart } from '../FunnelChart/FunnelChart';\nimport { GanttChart } from '../GanttChart/index';\n\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\nimport { ChartTable } from '../ChartTable/index';\nimport { LegendsProps, Legends } from '../Legends/index';\nimport { JSXElement } from '@fluentui/react-utilities/src/index';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\nconst ResponsiveScatterChart = withResponsiveContainer(ScatterChart);\nconst ResponsiveChartTable = withResponsiveContainer(ChartTable);\nconst ResponsiveGanttChart = withResponsiveContainer(GanttChart);\n// Removing responsive wrapper for FunnelChart as responsive container is not working with FunnelChart\n//const ResponsiveFunnelChart = withResponsiveContainer(FunnelChart);\n\n// Default x-axis key for grouping traces. Also applicable for PieData and SankeyData where x-axis is not defined.\nconst DEFAULT_XAXIS = 'x';\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<IDeclarativeChart | null>;\n\n /**\n * Optional prop to specify the colorway type of the chart.\n * - 'default': Use Fluent UI color palette aligning with plotly colorway.\n * - 'builtin': Use Fluent UI colorway.\n * - 'others': Reserved for future colorways.\n * @default 'default'\n */\n colorwayType?: ColorwayType;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: ImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\nfunction renderChart<TProps>(\n Renderer: React.ComponentType<TProps>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transformer: (...args: any[]) => TProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transformerArgs: any[],\n commonProps: Partial<TProps>,\n cellRow: number,\n cellColumn: number,\n): JSXElement {\n const chartProps = transformer(...transformerArgs);\n return (\n <div\n key={`${cellRow}_${cellColumn}`}\n style={{\n gridRowStart: cellRow,\n gridRowEnd: cellRow + 1,\n gridColumnStart: cellColumn,\n gridColumnEnd: cellColumn + 1,\n }}\n >\n <Renderer {...chartProps} {...commonProps} />\n </div>\n );\n}\n\ntype PreTransformHooks = {\n preTransformCondition?: (plotlySchema: PlotlySchema) => boolean;\n preTransformOperation?: (plotlySchema: PlotlySchema) => PlotlySchema;\n};\n\nconst LineAreaPreTransformOp = (plotlyInput: PlotlySchema) => {\n const xValues = (plotlyInput.data[0] as PlotData).x;\n const isXMonth = isMonthArray(xValues);\n let renderData = plotlyInput.data;\n if (isXMonth) {\n renderData = plotlyInput.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n }\n return { data: renderData, layout: plotlyInput.layout };\n};\n\ntype ChartTypeMap = {\n annotation: {\n transformer: typeof transformPlotlyJsonToAnnotationChartProps;\n renderer: typeof AnnotationOnlyChart;\n } & PreTransformHooks;\n donut: {\n transformer: typeof transformPlotlyJsonToDonutProps;\n renderer: typeof ResponsiveDonutChart;\n } & PreTransformHooks;\n sankey: {\n transformer: typeof transformPlotlyJsonToSankeyProps;\n renderer: typeof ResponsiveSankeyChart;\n } & PreTransformHooks;\n table: {\n transformer: typeof transformPlotlyJsonToChartTableProps;\n renderer: typeof ResponsiveChartTable;\n } & PreTransformHooks;\n horizontalbar: {\n transformer: typeof transformPlotlyJsonToHorizontalBarWithAxisProps;\n renderer: typeof ResponsiveHorizontalBarChartWithAxis;\n } & PreTransformHooks;\n groupedverticalbar: {\n transformer: typeof transformPlotlyJsonToGVBCProps;\n renderer: typeof ResponsiveGroupedVerticalBarChart;\n } & PreTransformHooks;\n verticalstackedbar: {\n transformer: typeof transformPlotlyJsonToVSBCProps;\n renderer: typeof ResponsiveVerticalStackedBarChart;\n } & PreTransformHooks;\n heatmap: {\n transformer: typeof transformPlotlyJsonToHeatmapProps;\n renderer: typeof ResponsiveHeatMapChart;\n } & PreTransformHooks;\n gauge: {\n transformer: typeof transformPlotlyJsonToGaugeProps;\n renderer: typeof ResponsiveGaugeChart;\n } & PreTransformHooks;\n verticalbar: {\n transformer: typeof transformPlotlyJsonToVBCProps;\n renderer: typeof ResponsiveVerticalBarChart;\n } & PreTransformHooks;\n area: {\n transformer: typeof transformPlotlyJsonToAreaChartProps;\n renderer: typeof ResponsiveAreaChart;\n } & PreTransformHooks;\n line: {\n transformer: typeof transformPlotlyJsonToLineChartProps;\n renderer: typeof ResponsiveLineChart;\n } & PreTransformHooks;\n scatter: {\n transformer: typeof transformPlotlyJsonToScatterChartProps;\n renderer: typeof ResponsiveScatterChart;\n } & PreTransformHooks;\n gantt: {\n transformer: typeof transformPlotlyJsonToGanttChartProps;\n renderer: typeof ResponsiveGanttChart;\n } & PreTransformHooks;\n funnel: {\n transformer: typeof transformPlotlyJsonToFunnelChartProps;\n renderer: typeof FunnelChart;\n } & PreTransformHooks;\n fallback: {\n transformer: typeof transformPlotlyJsonToVSBCProps;\n renderer: typeof ResponsiveVerticalStackedBarChart;\n } & PreTransformHooks;\n};\n\nconst chartMap: ChartTypeMap = {\n annotation: {\n transformer: transformPlotlyJsonToAnnotationChartProps,\n renderer: AnnotationOnlyChart,\n },\n // PieData category charts\n donut: {\n transformer: transformPlotlyJsonToDonutProps,\n renderer: ResponsiveDonutChart,\n },\n // SankeyData category charts\n sankey: {\n transformer: transformPlotlyJsonToSankeyProps,\n renderer: ResponsiveSankeyChart,\n },\n // TableData category charts\n table: {\n transformer: transformPlotlyJsonToChartTableProps,\n renderer: ResponsiveChartTable,\n },\n // PlotData category charts\n horizontalbar: {\n transformer: transformPlotlyJsonToHorizontalBarWithAxisProps,\n renderer: ResponsiveHorizontalBarChartWithAxis,\n },\n groupedverticalbar: {\n transformer: transformPlotlyJsonToGVBCProps,\n renderer: ResponsiveGroupedVerticalBarChart,\n },\n verticalstackedbar: {\n transformer: transformPlotlyJsonToVSBCProps,\n renderer: ResponsiveVerticalStackedBarChart,\n },\n heatmap: {\n transformer: transformPlotlyJsonToHeatmapProps,\n renderer: ResponsiveHeatMapChart,\n },\n gauge: {\n transformer: transformPlotlyJsonToGaugeProps,\n renderer: ResponsiveGaugeChart,\n },\n verticalbar: {\n transformer: transformPlotlyJsonToVBCProps,\n renderer: ResponsiveVerticalBarChart,\n },\n area: {\n transformer: transformPlotlyJsonToAreaChartProps,\n renderer: ResponsiveAreaChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n line: {\n transformer: transformPlotlyJsonToLineChartProps,\n renderer: ResponsiveLineChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n scatter: {\n transformer: transformPlotlyJsonToScatterChartProps,\n renderer: ResponsiveScatterChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n gantt: {\n transformer: transformPlotlyJsonToGanttChartProps,\n renderer: ResponsiveGanttChart,\n },\n funnel: {\n transformer: transformPlotlyJsonToFunnelChartProps,\n renderer: FunnelChart,\n },\n fallback: {\n transformer: transformPlotlyJsonToVSBCProps,\n renderer: ResponsiveVerticalStackedBarChart,\n },\n};\n\nconst useIsDarkTheme = (): boolean => {\n const parentV9Theme = React.useContext(V9ThemeContext) as Theme;\n const v9Theme: Theme = parentV9Theme ? parentV9Theme : webLightTheme;\n\n // Get background and foreground colors\n const backgroundColor = d3Color.hsl(v9Theme.colorNeutralBackground1);\n const foregroundColor = d3Color.hsl(v9Theme.colorNeutralForeground1);\n\n const isDarkTheme = backgroundColor.l < foregroundColor.l;\n\n return isDarkTheme;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>(({ colorwayType = 'default', ...props }, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace.index]),\n };\n\n const validTracesFilteredIndex: TraceInfo[] = chart.validTracesInfo!.map((trace, index) => ({\n index,\n type: trace.type,\n }));\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const isDarkTheme = useIsDarkTheme();\n const chartRef = React.useRef<Chart>(null);\n const isMultiPlot = React.useRef(false);\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const baseCommonProps = {\n componentRef: chartRef,\n };\n\n const interactiveCommonProps = {\n ...baseCommonProps,\n legendProps: multiSelectLegendProps,\n };\n\n function createLegends(legendProps: LegendsProps): JSXElement {\n // eslint-disable-next-line react/jsx-no-bind\n return <Legends {...legendProps} selectedLegends={activeLegends} onChange={onActiveLegendsChange} />;\n }\n\n // TODO\n const exportAsImage = React.useCallback((opts?: ImageExportOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n if (isMultiPlot.current) {\n return reject(Error('Exporting multi plot charts as image is not supported'));\n }\n if (!chartRef.current || typeof chartRef.current.toImage !== 'function') {\n return reject(Error('Chart cannot be exported as image'));\n }\n\n chartRef.current\n .toImage({\n background: tokens.colorNeutralBackground1,\n scale: 5,\n ...opts,\n })\n .then(resolve)\n .catch(reject);\n });\n }, []);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n if (chart.type === 'scatterpolar') {\n const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);\n plotlyInputWithValidData.data = cartesianProjection.data;\n plotlyInputWithValidData.layout = cartesianProjection.layout;\n validTracesFilteredIndex.forEach((trace, index) => {\n if (trace.type === 'scatterpolar') {\n const mode = (plotlyInputWithValidData.data[index] as PlotData)?.mode ?? '';\n if (mode.includes('line')) {\n validTracesFilteredIndex[index].type = 'line';\n } else if (mode.includes('markers') || mode === 'text') {\n validTracesFilteredIndex[index].type = 'scatter';\n } else {\n validTracesFilteredIndex[index].type = 'line';\n }\n }\n });\n }\n const groupedTraces: Record<string, number[]> = {};\n let nonCartesianTraceCount = 0;\n\n // For annotation-only charts, create a single group entry\n if (chart.type === 'annotation') {\n groupedTraces[DEFAULT_XAXIS] = [];\n } else {\n plotlyInputWithValidData.data.forEach((trace: Data, index: number) => {\n let traceKey = '';\n if (isNonPlotType(chart.validTracesInfo![index].type)) {\n traceKey = `${NON_PLOT_KEY_PREFIX}${nonCartesianTraceCount + 1}`;\n nonCartesianTraceCount++;\n } else {\n traceKey = (trace as PlotData).xaxis ?? DEFAULT_XAXIS;\n }\n if (!groupedTraces[traceKey]) {\n groupedTraces[traceKey] = [];\n }\n groupedTraces[traceKey].push(index);\n });\n }\n\n isMultiPlot.current = Object.keys(groupedTraces).length > 1;\n const gridProperties: GridProperties = getGridProperties(\n plotlyInputWithValidData,\n isMultiPlot.current,\n chart.validTracesInfo!,\n );\n\n // Render only one plot if the grid properties cannot determine positioning of multiple plots.\n if (\n isMultiPlot.current &&\n gridProperties.templateRows === SINGLE_REPEAT &&\n gridProperties.templateColumns === SINGLE_REPEAT\n ) {\n if (chart.type === 'donut') {\n // If there are multiple data traces for donut/pie, picking the last one similar to plotly\n const keys = Object.keys(groupedTraces);\n keys.forEach((key, index) => {\n if (index < keys.length - 1) {\n delete groupedTraces[key];\n }\n });\n } else {\n Object.keys(groupedTraces).forEach((key, index) => {\n if (index > 0) {\n delete groupedTraces[key];\n }\n });\n }\n isMultiPlot.current = false;\n }\n\n const allupLegendsProps = getAllupLegendsProps(\n plotlyInputWithValidData,\n colorMap,\n colorwayType,\n chart.validTracesInfo!,\n isDarkTheme,\n );\n\n type ChartType = keyof ChartTypeMap;\n // map through the grouped traces and render the appropriate chart\n return (\n <>\n <div\n style={{\n display: 'grid',\n gridTemplateRows: gridProperties.templateRows,\n gridTemplateColumns: gridProperties.templateColumns,\n }}\n >\n {Object.entries(groupedTraces).map(([xAxisKey, index]) => {\n const plotlyInputForGroup: PlotlySchema = {\n ...plotlyInputWithValidData,\n data: index.map(idx => plotlyInputWithValidData.data[idx]),\n };\n\n const filteredTracesInfo = validTracesFilteredIndex.filter(trace => index.includes(trace.index));\n let chartType =\n chart.type === 'fallback' || chart.type === 'groupedverticalbar'\n ? chart.type\n : filteredTracesInfo[0]?.type ?? chart.type;\n\n if (\n validTracesFilteredIndex.some(trace => trace.type === 'line') &&\n validTracesFilteredIndex.some(trace => trace.type === 'scatter')\n ) {\n chartType = 'line';\n }\n\n const chartEntry = chartMap[chartType as ChartType];\n if (chartEntry) {\n const { transformer, renderer, preTransformCondition, preTransformOperation } = chartEntry;\n if (preTransformCondition === undefined || preTransformCondition(plotlyInputForGroup)) {\n const transformedInput = preTransformOperation\n ? preTransformOperation(plotlyInputForGroup)\n : plotlyInputForGroup;\n const cellProperties = gridProperties.layout[xAxisKey];\n\n const resolvedCommonProps = (\n chartType === 'annotation'\n ? baseCommonProps\n : {\n ...interactiveCommonProps,\n xAxisAnnotation: cellProperties?.xAnnotation,\n yAxisAnnotation: cellProperties?.yAnnotation,\n }\n ) as Partial<ReturnType<typeof transformer>>;\n\n return renderChart<ReturnType<typeof transformer>>(\n renderer,\n transformer,\n [transformedInput, isMultiPlot.current, colorMap, colorwayType, isDarkTheme],\n {\n ...resolvedCommonProps,\n xAxisAnnotation: cellProperties?.xAnnotation,\n yAxisAnnotation: cellProperties?.yAnnotation,\n },\n cellProperties?.row ?? 1,\n cellProperties?.column ?? 1,\n );\n }\n return <></>;\n } else {\n throw new Error(`Unsupported chart type :${plotlyInputForGroup.data[0]?.type}`);\n }\n })}\n </div>\n {isMultiPlot.current && createLegends(allupLegendsProps)}\n </>\n );\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"],"names":["React","decodeBase64Fields","isArrayOrTypedArray","isMonthArray","mapFluentChart","sanitizeJson","tokens","ThemeContext_unstable","V9ThemeContext","webLightTheme","d3Color","correctYearMonth","getGridProperties","isNonPlotType","transformPlotlyJsonToDonutProps","transformPlotlyJsonToVSBCProps","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToChartTableProps","transformPlotlyJsonToScatterChartProps","projectPolarToCartesian","getAllupLegendsProps","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","transformPlotlyJsonToFunnelChartProps","transformPlotlyJsonToGanttChartProps","transformPlotlyJsonToAnnotationChartProps","AnnotationOnlyChart","DonutChart","VerticalStackedBarChart","LineChart","HorizontalBarChartWithAxis","AreaChart","HeatMapChart","SankeyChart","GaugeChart","GroupedVerticalBarChart","VerticalBarChart","ScatterChart","FunnelChart","GanttChart","withResponsiveContainer","ChartTable","Legends","ResponsiveDonutChart","ResponsiveVerticalStackedBarChart","ResponsiveLineChart","ResponsiveHorizontalBarChartWithAxis","ResponsiveAreaChart","ResponsiveHeatMapChart","ResponsiveSankeyChart","ResponsiveGaugeChart","ResponsiveGroupedVerticalBarChart","ResponsiveVerticalBarChart","ResponsiveScatterChart","ResponsiveChartTable","ResponsiveGanttChart","DEFAULT_XAXIS","useColorMapping","colorMap","useRef","Map","renderChart","Renderer","transformer","transformerArgs","commonProps","cellRow","cellColumn","chartProps","div","key","style","gridRowStart","gridRowEnd","gridColumnStart","gridColumnEnd","LineAreaPreTransformOp","plotlyInput","xValues","data","x","isXMonth","renderData","map","dataPoint","layout","chartMap","annotation","renderer","donut","sankey","table","horizontalbar","groupedverticalbar","verticalstackedbar","heatmap","gauge","verticalbar","area","preTransformOperation","line","scatter","gantt","funnel","fallback","useIsDarkTheme","parentV9Theme","useContext","v9Theme","backgroundColor","hsl","colorNeutralBackground1","foregroundColor","colorNeutralForeground1","isDarkTheme","l","DeclarativeChart","forwardRef","colorwayType","props","forwardedRef","plotlySchema","chartSchema","chart","isValid","Error","errorMessage","error","plotlyInputWithValidData","validTracesInfo","trace","index","validTracesFilteredIndex","type","selectedLegends","chartRef","isMultiPlot","activeLegends","setActiveLegends","useState","onActiveLegendsChange","keys","onSchemaChange","useEffect","multiSelectLegendProps","canSelectMultipleLegends","onChange","baseCommonProps","componentRef","interactiveCommonProps","legendProps","createLegends","exportAsImage","useCallback","opts","Promise","resolve","reject","current","toImage","background","scale","then","catch","useImperativeHandle","cartesianProjection","forEach","mode","includes","groupedTraces","nonCartesianTraceCount","traceKey","xaxis","push","Object","length","gridProperties","templateRows","templateColumns","allupLegendsProps","display","gridTemplateRows","gridTemplateColumns","entries","xAxisKey","filteredTracesInfo","plotlyInputForGroup","idx","filter","chartType","some","chartEntry","preTransformCondition","undefined","transformedInput","cellProperties","resolvedCommonProps","xAxisAnnotation","xAnnotation","yAxisAnnotation","yAnnotation","row","column","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/DeclarativeChart/DeclarativeChart.tsx"],"sourcesContent":["'use client';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport type { Data, PlotData, PlotlySchema, OutputChartType, TraceInfo } from '@fluentui/chart-utilities';\nimport {\n decodeBase64Fields,\n isArrayOrTypedArray,\n isMonthArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\nimport type { GridProperties } from './PlotlySchemaAdapter';\nimport { tokens } from '@fluentui/react-theme';\nimport { ThemeContext_unstable as V9ThemeContext } from '@fluentui/react-shared-contexts';\nimport { Theme, webLightTheme } from '@fluentui/tokens';\nimport * as d3Color from 'd3-color';\n\nimport {\n correctYearMonth,\n getGridProperties,\n isNonPlotType,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToAreaChartProps,\n transformPlotlyJsonToLineChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n transformPlotlyJsonToChartTableProps,\n transformPlotlyJsonToScatterChartProps,\n projectPolarToCartesian,\n getAllupLegendsProps,\n NON_PLOT_KEY_PREFIX,\n SINGLE_REPEAT,\n transformPlotlyJsonToFunnelChartProps,\n transformPlotlyJsonToGanttChartProps,\n transformPlotlyJsonToAnnotationChartProps,\n} from './PlotlySchemaAdapter';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { AnnotationOnlyChart } from '../AnnotationOnlyChart/AnnotationOnlyChart';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { LineChart } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { Chart, ImageExportOptions } from '../../types/index';\nimport { ScatterChart } from '../ScatterChart/index';\nimport { FunnelChart } from '../FunnelChart/FunnelChart';\nimport { GanttChart } from '../GanttChart/index';\n\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\nimport { ChartTable } from '../ChartTable/index';\nimport { LegendsProps, Legends, LegendContainer } from '../Legends/index';\nimport { JSXElement } from '@fluentui/react-utilities/src/index';\nimport { resolveCSSVariables, useRtl } from '../../utilities/index';\nimport { exportChartsAsImage } from '../../utilities/image-export-utils';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\nconst ResponsiveScatterChart = withResponsiveContainer(ScatterChart);\nconst ResponsiveChartTable = withResponsiveContainer(ChartTable);\nconst ResponsiveGanttChart = withResponsiveContainer(GanttChart);\n// Removing responsive wrapper for FunnelChart as responsive container is not working with FunnelChart\n//const ResponsiveFunnelChart = withResponsiveContainer(FunnelChart);\n\n// Default x-axis key for grouping traces. Also applicable for PieData and SankeyData where x-axis is not defined.\nconst DEFAULT_XAXIS = 'x';\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<IDeclarativeChart>;\n\n /**\n * Optional prop to specify the colorway type of the chart.\n * - 'default': Use Fluent UI color palette aligning with plotly colorway.\n * - 'builtin': Use Fluent UI colorway.\n * - 'others': Reserved for future colorways.\n * @default 'default'\n */\n colorwayType?: ColorwayType;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: ImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\nfunction renderChart<TProps>(\n Renderer: React.ComponentType<TProps>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transformer: (...args: any[]) => TProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transformerArgs: any[],\n commonProps: Partial<TProps>,\n cellRow: number,\n cellColumn: number,\n): JSXElement {\n const chartProps = transformer(...transformerArgs);\n return (\n <div\n key={`${cellRow}_${cellColumn}`}\n style={{\n gridRowStart: cellRow,\n gridRowEnd: cellRow + 1,\n gridColumnStart: cellColumn,\n gridColumnEnd: cellColumn + 1,\n }}\n >\n <Renderer {...chartProps} {...commonProps} />\n </div>\n );\n}\n\ntype PreTransformHooks = {\n preTransformCondition?: (plotlySchema: PlotlySchema) => boolean;\n preTransformOperation?: (plotlySchema: PlotlySchema) => PlotlySchema;\n};\n\nconst LineAreaPreTransformOp = (plotlyInput: PlotlySchema) => {\n const xValues = (plotlyInput.data[0] as PlotData).x;\n const isXMonth = isMonthArray(xValues);\n let renderData = plotlyInput.data;\n if (isXMonth) {\n renderData = plotlyInput.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n }\n return { data: renderData, layout: plotlyInput.layout };\n};\n\ntype ChartTypeMap = {\n annotation: {\n transformer: typeof transformPlotlyJsonToAnnotationChartProps;\n renderer: typeof AnnotationOnlyChart;\n } & PreTransformHooks;\n donut: {\n transformer: typeof transformPlotlyJsonToDonutProps;\n renderer: typeof ResponsiveDonutChart;\n } & PreTransformHooks;\n sankey: {\n transformer: typeof transformPlotlyJsonToSankeyProps;\n renderer: typeof ResponsiveSankeyChart;\n } & PreTransformHooks;\n table: {\n transformer: typeof transformPlotlyJsonToChartTableProps;\n renderer: typeof ResponsiveChartTable;\n } & PreTransformHooks;\n horizontalbar: {\n transformer: typeof transformPlotlyJsonToHorizontalBarWithAxisProps;\n renderer: typeof ResponsiveHorizontalBarChartWithAxis;\n } & PreTransformHooks;\n groupedverticalbar: {\n transformer: typeof transformPlotlyJsonToGVBCProps;\n renderer: typeof ResponsiveGroupedVerticalBarChart;\n } & PreTransformHooks;\n verticalstackedbar: {\n transformer: typeof transformPlotlyJsonToVSBCProps;\n renderer: typeof ResponsiveVerticalStackedBarChart;\n } & PreTransformHooks;\n heatmap: {\n transformer: typeof transformPlotlyJsonToHeatmapProps;\n renderer: typeof ResponsiveHeatMapChart;\n } & PreTransformHooks;\n gauge: {\n transformer: typeof transformPlotlyJsonToGaugeProps;\n renderer: typeof ResponsiveGaugeChart;\n } & PreTransformHooks;\n verticalbar: {\n transformer: typeof transformPlotlyJsonToVBCProps;\n renderer: typeof ResponsiveVerticalBarChart;\n } & PreTransformHooks;\n area: {\n transformer: typeof transformPlotlyJsonToAreaChartProps;\n renderer: typeof ResponsiveAreaChart;\n } & PreTransformHooks;\n line: {\n transformer: typeof transformPlotlyJsonToLineChartProps;\n renderer: typeof ResponsiveLineChart;\n } & PreTransformHooks;\n scatter: {\n transformer: typeof transformPlotlyJsonToScatterChartProps;\n renderer: typeof ResponsiveScatterChart;\n } & PreTransformHooks;\n gantt: {\n transformer: typeof transformPlotlyJsonToGanttChartProps;\n renderer: typeof ResponsiveGanttChart;\n } & PreTransformHooks;\n funnel: {\n transformer: typeof transformPlotlyJsonToFunnelChartProps;\n renderer: typeof FunnelChart;\n } & PreTransformHooks;\n fallback: {\n transformer: typeof transformPlotlyJsonToVSBCProps;\n renderer: typeof ResponsiveVerticalStackedBarChart;\n } & PreTransformHooks;\n};\n\nconst chartMap: ChartTypeMap = {\n annotation: {\n transformer: transformPlotlyJsonToAnnotationChartProps,\n renderer: AnnotationOnlyChart,\n },\n // PieData category charts\n donut: {\n transformer: transformPlotlyJsonToDonutProps,\n renderer: ResponsiveDonutChart,\n },\n // SankeyData category charts\n sankey: {\n transformer: transformPlotlyJsonToSankeyProps,\n renderer: ResponsiveSankeyChart,\n },\n // TableData category charts\n table: {\n transformer: transformPlotlyJsonToChartTableProps,\n renderer: ResponsiveChartTable,\n },\n // PlotData category charts\n horizontalbar: {\n transformer: transformPlotlyJsonToHorizontalBarWithAxisProps,\n renderer: ResponsiveHorizontalBarChartWithAxis,\n },\n groupedverticalbar: {\n transformer: transformPlotlyJsonToGVBCProps,\n renderer: ResponsiveGroupedVerticalBarChart,\n },\n verticalstackedbar: {\n transformer: transformPlotlyJsonToVSBCProps,\n renderer: ResponsiveVerticalStackedBarChart,\n },\n heatmap: {\n transformer: transformPlotlyJsonToHeatmapProps,\n renderer: ResponsiveHeatMapChart,\n },\n gauge: {\n transformer: transformPlotlyJsonToGaugeProps,\n renderer: ResponsiveGaugeChart,\n },\n verticalbar: {\n transformer: transformPlotlyJsonToVBCProps,\n renderer: ResponsiveVerticalBarChart,\n },\n area: {\n transformer: transformPlotlyJsonToAreaChartProps,\n renderer: ResponsiveAreaChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n line: {\n transformer: transformPlotlyJsonToLineChartProps,\n renderer: ResponsiveLineChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n scatter: {\n transformer: transformPlotlyJsonToScatterChartProps,\n renderer: ResponsiveScatterChart,\n preTransformOperation: LineAreaPreTransformOp,\n },\n gantt: {\n transformer: transformPlotlyJsonToGanttChartProps,\n renderer: ResponsiveGanttChart,\n },\n funnel: {\n transformer: transformPlotlyJsonToFunnelChartProps,\n renderer: FunnelChart,\n },\n fallback: {\n transformer: transformPlotlyJsonToVSBCProps,\n renderer: ResponsiveVerticalStackedBarChart,\n },\n};\n\nconst useIsDarkTheme = (): boolean => {\n const parentV9Theme = React.useContext(V9ThemeContext) as Theme;\n const v9Theme: Theme = parentV9Theme ? parentV9Theme : webLightTheme;\n\n // Get background and foreground colors\n const backgroundColor = d3Color.hsl(v9Theme.colorNeutralBackground1);\n const foregroundColor = d3Color.hsl(v9Theme.colorNeutralForeground1);\n\n const isDarkTheme = backgroundColor.l < foregroundColor.l;\n\n return isDarkTheme;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>(({ colorwayType = 'default', ...props }, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace.index]),\n };\n\n const validTracesFilteredIndex: TraceInfo[] = chart.validTracesInfo!.map((trace, index) => ({\n index,\n type: trace.type,\n }));\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const isDarkTheme = useIsDarkTheme();\n const chartRefs = React.useRef<{ compRef: Chart | null; row: number; col: number }[]>([]);\n const isMultiPlot = React.useRef(false);\n const legendsRef = React.useRef<LegendContainer>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const isRTL = useRtl();\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const interactiveCommonProps = {\n legendProps: multiSelectLegendProps,\n };\n\n function createLegends(legendProps: LegendsProps): JSXElement {\n // eslint-disable-next-line react/jsx-no-bind\n return (\n <Legends\n {...legendProps}\n selectedLegends={activeLegends}\n onChange={onActiveLegendsChange}\n legendRef={legendsRef}\n />\n );\n }\n\n const exportAsImage = React.useCallback(\n async (opts?: ImageExportOptions) => {\n if (!containerRef.current) {\n throw new Error('Container reference is null');\n }\n\n const imgExpOpts = {\n background: resolveCSSVariables(containerRef.current, tokens.colorNeutralBackground1),\n scale: 5,\n ...opts,\n };\n\n if (!isMultiPlot.current) {\n if (!chartRefs.current[0]?.compRef?.toImage) {\n throw new Error('Chart cannot be exported as image');\n }\n\n return chartRefs.current[0].compRef.toImage(imgExpOpts);\n }\n\n return exportChartsAsImage(\n chartRefs.current.map(item => ({\n container: item.compRef?.chartContainer,\n row: item.row,\n col: item.col,\n })),\n legendsRef.current?.toSVG,\n isRTL,\n imgExpOpts,\n );\n },\n [isRTL],\n );\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n if (chart.type === 'scatterpolar') {\n const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);\n plotlyInputWithValidData.data = cartesianProjection.data;\n plotlyInputWithValidData.layout = cartesianProjection.layout;\n validTracesFilteredIndex.forEach((trace, index) => {\n if (trace.type === 'scatterpolar') {\n const mode = (plotlyInputWithValidData.data[index] as PlotData)?.mode ?? '';\n if (mode.includes('line')) {\n validTracesFilteredIndex[index].type = 'line';\n } else if (mode.includes('markers') || mode === 'text') {\n validTracesFilteredIndex[index].type = 'scatter';\n } else {\n validTracesFilteredIndex[index].type = 'line';\n }\n }\n });\n }\n const groupedTraces: Record<string, number[]> = {};\n let nonCartesianTraceCount = 0;\n\n // For annotation-only charts, create a single group entry\n if (chart.type === 'annotation') {\n groupedTraces[DEFAULT_XAXIS] = [];\n } else {\n plotlyInputWithValidData.data.forEach((trace: Data, index: number) => {\n let traceKey = '';\n if (isNonPlotType(chart.validTracesInfo![index].type)) {\n traceKey = `${NON_PLOT_KEY_PREFIX}${nonCartesianTraceCount + 1}`;\n nonCartesianTraceCount++;\n } else {\n traceKey = (trace as PlotData).xaxis ?? DEFAULT_XAXIS;\n }\n if (!groupedTraces[traceKey]) {\n groupedTraces[traceKey] = [];\n }\n groupedTraces[traceKey].push(index);\n });\n }\n\n isMultiPlot.current = Object.keys(groupedTraces).length > 1;\n const gridProperties: GridProperties = getGridProperties(\n plotlyInputWithValidData,\n isMultiPlot.current,\n chart.validTracesInfo!,\n );\n\n // Render only one plot if the grid properties cannot determine positioning of multiple plots.\n if (\n isMultiPlot.current &&\n gridProperties.templateRows === SINGLE_REPEAT &&\n gridProperties.templateColumns === SINGLE_REPEAT\n ) {\n if (chart.type === 'donut') {\n // If there are multiple data traces for donut/pie, picking the last one similar to plotly\n const keys = Object.keys(groupedTraces);\n keys.forEach((key, index) => {\n if (index < keys.length - 1) {\n delete groupedTraces[key];\n }\n });\n } else {\n Object.keys(groupedTraces).forEach((key, index) => {\n if (index > 0) {\n delete groupedTraces[key];\n }\n });\n }\n isMultiPlot.current = false;\n }\n\n const allupLegendsProps = getAllupLegendsProps(\n plotlyInputWithValidData,\n colorMap,\n colorwayType,\n chart.validTracesInfo!,\n isDarkTheme,\n );\n\n type ChartType = keyof ChartTypeMap;\n // map through the grouped traces and render the appropriate chart\n return (\n <>\n <div\n style={{\n display: 'grid',\n gridTemplateRows: gridProperties.templateRows,\n gridTemplateColumns: gridProperties.templateColumns,\n }}\n ref={containerRef}\n >\n {Object.entries(groupedTraces).map(([xAxisKey, index], chartIdx) => {\n const plotlyInputForGroup: PlotlySchema = {\n ...plotlyInputWithValidData,\n data: index.map(idx => plotlyInputWithValidData.data[idx]),\n };\n\n const filteredTracesInfo = validTracesFilteredIndex.filter(trace => index.includes(trace.index));\n let chartType =\n chart.type === 'fallback' || chart.type === 'groupedverticalbar'\n ? chart.type\n : filteredTracesInfo[0]?.type ?? chart.type;\n\n if (\n validTracesFilteredIndex.some(trace => trace.type === 'line') &&\n validTracesFilteredIndex.some(trace => trace.type === 'scatter')\n ) {\n chartType = 'line';\n }\n\n const chartEntry = chartMap[chartType as ChartType];\n if (chartEntry) {\n const { transformer, renderer, preTransformCondition, preTransformOperation } = chartEntry;\n if (preTransformCondition === undefined || preTransformCondition(plotlyInputForGroup)) {\n const transformedInput = preTransformOperation\n ? preTransformOperation(plotlyInputForGroup)\n : plotlyInputForGroup;\n const cellProperties = gridProperties.layout[xAxisKey];\n\n const resolvedCommonProps = (\n chartType === 'annotation'\n ? {}\n : {\n ...interactiveCommonProps,\n xAxisAnnotation: cellProperties?.xAnnotation,\n yAxisAnnotation: cellProperties?.yAnnotation,\n }\n ) as Partial<ReturnType<typeof transformer>>;\n\n return renderChart<ReturnType<typeof transformer>>(\n renderer,\n transformer,\n [transformedInput, isMultiPlot.current, colorMap, colorwayType, isDarkTheme],\n {\n ...resolvedCommonProps,\n xAxisAnnotation: cellProperties?.xAnnotation,\n yAxisAnnotation: cellProperties?.yAnnotation,\n componentRef: (ref: Chart | null) => {\n chartRefs.current[chartIdx] = {\n compRef: ref,\n row: cellProperties?.row ?? 1,\n col: cellProperties?.column ?? 1,\n };\n },\n },\n cellProperties?.row ?? 1,\n cellProperties?.column ?? 1,\n );\n }\n return <></>;\n } else {\n throw new Error(`Unsupported chart type :${plotlyInputForGroup.data[0]?.type}`);\n }\n })}\n </div>\n {isMultiPlot.current && createLegends(allupLegendsProps)}\n </>\n );\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"],"names":["React","decodeBase64Fields","isArrayOrTypedArray","isMonthArray","mapFluentChart","sanitizeJson","tokens","ThemeContext_unstable","V9ThemeContext","webLightTheme","d3Color","correctYearMonth","getGridProperties","isNonPlotType","transformPlotlyJsonToDonutProps","transformPlotlyJsonToVSBCProps","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToChartTableProps","transformPlotlyJsonToScatterChartProps","projectPolarToCartesian","getAllupLegendsProps","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","transformPlotlyJsonToFunnelChartProps","transformPlotlyJsonToGanttChartProps","transformPlotlyJsonToAnnotationChartProps","AnnotationOnlyChart","DonutChart","VerticalStackedBarChart","LineChart","HorizontalBarChartWithAxis","AreaChart","HeatMapChart","SankeyChart","GaugeChart","GroupedVerticalBarChart","VerticalBarChart","ScatterChart","FunnelChart","GanttChart","withResponsiveContainer","ChartTable","Legends","resolveCSSVariables","useRtl","exportChartsAsImage","ResponsiveDonutChart","ResponsiveVerticalStackedBarChart","ResponsiveLineChart","ResponsiveHorizontalBarChartWithAxis","ResponsiveAreaChart","ResponsiveHeatMapChart","ResponsiveSankeyChart","ResponsiveGaugeChart","ResponsiveGroupedVerticalBarChart","ResponsiveVerticalBarChart","ResponsiveScatterChart","ResponsiveChartTable","ResponsiveGanttChart","DEFAULT_XAXIS","useColorMapping","colorMap","useRef","Map","renderChart","Renderer","transformer","transformerArgs","commonProps","cellRow","cellColumn","chartProps","div","key","style","gridRowStart","gridRowEnd","gridColumnStart","gridColumnEnd","LineAreaPreTransformOp","plotlyInput","xValues","data","x","isXMonth","renderData","map","dataPoint","layout","chartMap","annotation","renderer","donut","sankey","table","horizontalbar","groupedverticalbar","verticalstackedbar","heatmap","gauge","verticalbar","area","preTransformOperation","line","scatter","gantt","funnel","fallback","useIsDarkTheme","parentV9Theme","useContext","v9Theme","backgroundColor","hsl","colorNeutralBackground1","foregroundColor","colorNeutralForeground1","isDarkTheme","l","DeclarativeChart","forwardRef","colorwayType","props","forwardedRef","plotlySchema","chartSchema","chart","isValid","Error","errorMessage","error","plotlyInputWithValidData","validTracesInfo","trace","index","validTracesFilteredIndex","type","selectedLegends","chartRefs","isMultiPlot","legendsRef","containerRef","isRTL","activeLegends","setActiveLegends","useState","onActiveLegendsChange","keys","onSchemaChange","useEffect","multiSelectLegendProps","canSelectMultipleLegends","onChange","interactiveCommonProps","legendProps","createLegends","legendRef","exportAsImage","useCallback","opts","current","imgExpOpts","background","scale","compRef","toImage","item","container","chartContainer","row","col","toSVG","useImperativeHandle","componentRef","cartesianProjection","forEach","mode","includes","groupedTraces","nonCartesianTraceCount","traceKey","xaxis","push","Object","length","gridProperties","templateRows","templateColumns","allupLegendsProps","display","gridTemplateRows","gridTemplateColumns","ref","entries","xAxisKey","chartIdx","filteredTracesInfo","plotlyInputForGroup","idx","filter","chartType","some","chartEntry","preTransformCondition","undefined","transformedInput","cellProperties","resolvedCommonProps","xAxisAnnotation","xAnnotation","yAxisAnnotation","yAnnotation","column","displayName"],"mappings":"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"}
@@ -185,6 +185,18 @@ const getYMinMaxValues = (series, layout)=>{
185
185
  }
186
186
  return {};
187
187
  };
188
+ const getXMinMaxValues = (series, layout)=>{
189
+ var _getXAxisProperties;
190
+ const range = (_getXAxisProperties = getXAxisProperties(series, layout)) === null || _getXAxisProperties === void 0 ? void 0 : _getXAxisProperties.range;
191
+ if (range && range.length === 2) {
192
+ return {
193
+ xMinValue: range[0],
194
+ xMaxValue: range[1],
195
+ showRoundOffXTickValues: false
196
+ };
197
+ }
198
+ return {};
199
+ };
188
200
  const getYAxisProperties = (series, layout)=>{
189
201
  return layout === null || layout === void 0 ? void 0 : layout.yaxis;
190
202
  };
@@ -1226,6 +1238,8 @@ const transformPlotlyJsonToVSBCProps = (input, isMultiPlot, colorMap, colorwayTy
1226
1238
  showYAxisLables: true,
1227
1239
  noOfCharsToTruncate: 20,
1228
1240
  showYAxisLablesTooltip: true,
1241
+ roundedTicks: true,
1242
+ ...getXMinMaxValues(input.data[0], input.layout),
1229
1243
  ...getTitles(input.layout),
1230
1244
  ...getXAxisTickFormat(input.data[0], input.layout),
1231
1245
  ...yAxisTickFormat,
@@ -1356,6 +1370,8 @@ const transformPlotlyJsonToGVBCProps = (input, isMultiPlot, colorMap, colorwayTy
1356
1370
  hideLegend,
1357
1371
  roundCorners: true,
1358
1372
  showYAxisLables: true,
1373
+ roundedTicks: true,
1374
+ ...getXMinMaxValues(processedInput.data[0], processedInput.layout),
1359
1375
  ...getTitles(processedInput.layout),
1360
1376
  ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),
1361
1377
  ...getYMinMaxValues(processedInput.data[0], processedInput.layout),
@@ -1443,6 +1459,8 @@ const transformPlotlyJsonToVBCProps = (input, isMultiPlot, colorMap, colorwayTyp
1443
1459
  hideLegend,
1444
1460
  roundCorners: true,
1445
1461
  showYAxisLables: true,
1462
+ roundedTicks: true,
1463
+ ...getXMinMaxValues(input.data[0], input.layout),
1446
1464
  ...getTitles(input.layout),
1447
1465
  ...getYMinMaxValues(input.data[0], input.layout),
1448
1466
  ...getAxisCategoryOrderProps(input.data, input.layout),
@@ -1663,6 +1681,8 @@ const transformPlotlyJsonToScatterTraceProps = (input, isMultiPlot, chartType, c
1663
1681
  wrapXAxisLabels: shouldWrapLabels,
1664
1682
  optimizeLargeData: numDataPoints > 1000,
1665
1683
  showYAxisLables: true,
1684
+ roundedTicks: true,
1685
+ ...getXMinMaxValues(input.data[0], input.layout),
1666
1686
  ...getTitles(input.layout),
1667
1687
  ...getXAxisTickFormat(input.data[0], input.layout),
1668
1688
  ...yAxisTickFormat,
@@ -1681,7 +1701,6 @@ const transformPlotlyJsonToScatterTraceProps = (input, isMultiPlot, chartType, c
1681
1701
  } else {
1682
1702
  return {
1683
1703
  data: isScatterChart ? scatterChartProps : chartProps,
1684
- roundedTicks: true,
1685
1704
  ...commonProps,
1686
1705
  ...yMinMax,
1687
1706
  ...isScatterChart ? {
@@ -1749,6 +1768,8 @@ const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, isMultiPlot, col
1749
1768
  showYAxisLablesTooltip: true,
1750
1769
  hideLegend,
1751
1770
  roundCorners: true,
1771
+ roundedTicks: true,
1772
+ ...getXMinMaxValues(input.data[0], input.layout),
1752
1773
  ...getTitles(input.layout),
1753
1774
  ...getAxisCategoryOrderProps(input.data, input.layout),
1754
1775
  ...getBarProps(input.data, input.layout, true),
@@ -1972,7 +1993,7 @@ const transformPlotlyJsonToHeatmapProps = (input, isMultiPlot, colorMap, colorwa
1972
1993
  };
1973
1994
  };
1974
1995
  const transformPlotlyJsonToSankeyProps = (input, isMultiPlot, colorMap, colorwayType, isDarkTheme)=>{
1975
- var _input_layout_template_layout, _input_layout_template, _input_layout, _node_label, _input_layout1, _input_layout2;
1996
+ var _input_layout_template_layout, _input_layout_template, _input_layout, _input_layout_template_layout1, _input_layout_template1, _input_layout1, _node_label, _input_layout2, _input_layout3;
1976
1997
  const { link, node } = input.data[0];
1977
1998
  var _link_value;
1978
1999
  const validLinks = ((_link_value = link === null || link === void 0 ? void 0 : link.value) !== null && _link_value !== void 0 ? _link_value : []).map((val, index)=>{
@@ -1988,6 +2009,7 @@ const transformPlotlyJsonToSankeyProps = (input, isMultiPlot, colorMap, colorway
1988
2009
  }) // Filter out negative nodes, unequal nodes and self-references (circular links)
1989
2010
  .filter((x)=>x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);
1990
2011
  const extractedNodeColors = (0, _PlotlyColorAdapter.extractColor)((_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : (_input_layout_template = _input_layout.template) === null || _input_layout_template === void 0 ? void 0 : (_input_layout_template_layout = _input_layout_template.layout) === null || _input_layout_template_layout === void 0 ? void 0 : _input_layout_template_layout.colorway, colorwayType, node === null || node === void 0 ? void 0 : node.color, colorMap, isDarkTheme);
2012
+ const extractedLinkColors = (0, _PlotlyColorAdapter.extractColor)((_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : (_input_layout_template1 = _input_layout1.template) === null || _input_layout_template1 === void 0 ? void 0 : (_input_layout_template_layout1 = _input_layout_template1.layout) === null || _input_layout_template_layout1 === void 0 ? void 0 : _input_layout_template_layout1.colorway, colorwayType, link === null || link === void 0 ? void 0 : link.color, colorMap, isDarkTheme);
1991
2013
  const sankeyChartData = {
1992
2014
  nodes: (_node_label = node.label) === null || _node_label === void 0 ? void 0 : _node_label.map((label, index)=>{
1993
2015
  var _input_layout_template_layout, _input_layout_template, _input_layout;
@@ -2000,8 +2022,11 @@ const transformPlotlyJsonToSankeyProps = (input, isMultiPlot, colorMap, colorway
2000
2022
  }),
2001
2023
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2002
2024
  links: validLinks.map((validLink, index)=>{
2025
+ var _input_layout_template_layout, _input_layout_template, _input_layout;
2026
+ const color = (0, _PlotlyColorAdapter.resolveColor)(extractedLinkColors, index, validLink.target, colorMap, (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : (_input_layout_template = _input_layout.template) === null || _input_layout_template === void 0 ? void 0 : (_input_layout_template_layout = _input_layout_template.layout) === null || _input_layout_template_layout === void 0 ? void 0 : _input_layout_template_layout.colorway, isDarkTheme);
2003
2027
  return {
2004
- ...validLink
2028
+ ...validLink,
2029
+ color
2005
2030
  };
2006
2031
  })
2007
2032
  };
@@ -2017,8 +2042,8 @@ const transformPlotlyJsonToSankeyProps = (input, isMultiPlot, colorMap, colorway
2017
2042
  chartTitle,
2018
2043
  SankeyChartData: sankeyChartData
2019
2044
  },
2020
- width: (_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : _input_layout1.width,
2021
- height: (_input_layout_height = (_input_layout2 = input.layout) === null || _input_layout2 === void 0 ? void 0 : _input_layout2.height) !== null && _input_layout_height !== void 0 ? _input_layout_height : 468
2045
+ width: (_input_layout2 = input.layout) === null || _input_layout2 === void 0 ? void 0 : _input_layout2.width,
2046
+ height: (_input_layout_height = (_input_layout3 = input.layout) === null || _input_layout3 === void 0 ? void 0 : _input_layout3.height) !== null && _input_layout_height !== void 0 ? _input_layout_height : 468
2022
2047
  };
2023
2048
  };
2024
2049
  const transformPlotlyJsonToGaugeProps = (input, isMultiPlot, colorMap, colorwayType, isDarkTheme)=>{
@@ -2701,23 +2726,25 @@ const getAllupLegendsProps = (input, colorMap, colorwayType, traceInfo, isDarkTh
2701
2726
  if (toShowLegend) {
2702
2727
  input.data.forEach((series, index)=>{
2703
2728
  if (traceInfo[index].type === 'donut') {
2704
- var _input_layout, _input_layout_template_layout, _input_layout_template, _input_layout1, _input_layout2, _pieSeries_marker, _pieSeries_labels;
2729
+ var _input_layout, _input_layout_template_layout, _input_layout_template, _input_layout1, _input_layout2, _pieSeries_marker;
2705
2730
  const pieSeries = series;
2706
2731
  var _input_layout_piecolorway, _input_layout_piecolorway1;
2707
2732
  const colors = (0, _PlotlyColorAdapter.extractColor)((_input_layout_piecolorway = (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.piecolorway) !== null && _input_layout_piecolorway !== void 0 ? _input_layout_piecolorway : (_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : (_input_layout_template = _input_layout1.template) === null || _input_layout_template === void 0 ? void 0 : (_input_layout_template_layout = _input_layout_template.layout) === null || _input_layout_template_layout === void 0 ? void 0 : _input_layout_template_layout.colorway, colorwayType, (_input_layout_piecolorway1 = (_input_layout2 = input.layout) === null || _input_layout2 === void 0 ? void 0 : _input_layout2.piecolorway) !== null && _input_layout_piecolorway1 !== void 0 ? _input_layout_piecolorway1 : pieSeries === null || pieSeries === void 0 ? void 0 : (_pieSeries_marker = pieSeries.marker) === null || _pieSeries_marker === void 0 ? void 0 : _pieSeries_marker.colors, colorMap, isDarkTheme, true);
2708
- (_pieSeries_labels = pieSeries.labels) === null || _pieSeries_labels === void 0 ? void 0 : _pieSeries_labels.forEach((label, labelIndex)=>{
2709
- var _input_layout, _input_layout_template_layout, _input_layout_template, _input_layout1;
2710
- const legend = `${label}`;
2711
- var _input_layout_piecolorway;
2712
- // resolve color for each legend from the extracted colors
2713
- const color = (0, _PlotlyColorAdapter.resolveColor)(colors, labelIndex, legend, colorMap, (_input_layout_piecolorway = (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.piecolorway) !== null && _input_layout_piecolorway !== void 0 ? _input_layout_piecolorway : (_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : (_input_layout_template = _input_layout1.template) === null || _input_layout_template === void 0 ? void 0 : (_input_layout_template_layout = _input_layout_template.layout) === null || _input_layout_template_layout === void 0 ? void 0 : _input_layout_template_layout.colorway, isDarkTheme, true);
2714
- if (legend !== '' && allupLegends.some((group)=>group.title === legend) === false) {
2715
- allupLegends.push({
2716
- title: legend,
2717
- color
2718
- });
2719
- }
2720
- });
2733
+ if ((0, _chartutilities.isArrayOrTypedArray)(pieSeries.labels)) {
2734
+ pieSeries.labels.forEach((label, labelIndex)=>{
2735
+ var _input_layout, _input_layout_template_layout, _input_layout_template, _input_layout1;
2736
+ const legend = `${label}`;
2737
+ var _input_layout_piecolorway;
2738
+ // resolve color for each legend from the extracted colors
2739
+ const color = (0, _PlotlyColorAdapter.resolveColor)(colors, labelIndex, legend, colorMap, (_input_layout_piecolorway = (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.piecolorway) !== null && _input_layout_piecolorway !== void 0 ? _input_layout_piecolorway : (_input_layout1 = input.layout) === null || _input_layout1 === void 0 ? void 0 : (_input_layout_template = _input_layout1.template) === null || _input_layout_template === void 0 ? void 0 : (_input_layout_template_layout = _input_layout_template.layout) === null || _input_layout_template_layout === void 0 ? void 0 : _input_layout_template_layout.colorway, isDarkTheme, true);
2740
+ if (legend !== '' && allupLegends.some((group)=>group.title === legend) === false) {
2741
+ allupLegends.push({
2742
+ title: legend,
2743
+ color
2744
+ });
2745
+ }
2746
+ });
2747
+ }
2721
2748
  } else if (isNonPlotType(traceInfo[index].type) === false) {
2722
2749
  var _plotSeries_line, _plotSeries_marker, _input_layout_template_layout1, _input_layout_template1, _input_layout3;
2723
2750
  const plotSeries = series;
@@ -3201,9 +3228,8 @@ const getAxisType = (data, ax)=>{
3201
3228
  const values = [];
3202
3229
  data.forEach((series)=>{
3203
3230
  const axId = series[`${axLetter}axis`];
3204
- if (axId === ax._id || !axId && ax._id === axLetter) {
3205
- var _series_axLetter;
3206
- (_series_axLetter = series[axLetter]) === null || _series_axLetter === void 0 ? void 0 : _series_axLetter.forEach((val)=>{
3231
+ if ((axId === ax._id || !axId && ax._id === axLetter) && (0, _chartutilities.isArrayOrTypedArray)(series[axLetter])) {
3232
+ series[axLetter].forEach((val)=>{
3207
3233
  if (!(0, _chartutilities.isInvalidValue)(val)) {
3208
3234
  values.push(val);
3209
3235
  }