@fluentui/react-charts 9.2.4 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/CHANGELOG.md +41 -2
  2. package/dist/index.d.ts +1 -1
  3. package/lib/components/AreaChart/AreaChart.js +6 -4
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -0
  6. package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  7. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +1 -0
  8. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  9. package/lib/components/ChartTable/ChartTable.js +11 -7
  10. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  11. package/lib/components/ChartTable/useChartTableStyles.styles.js +5 -3
  12. package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  13. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +3 -2
  14. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  15. package/lib/components/CommonComponents/CartesianChart.js +11 -12
  16. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  17. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  18. package/lib/components/CommonComponents/ChartPopover.js +14 -5
  19. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  20. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +2 -0
  21. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  22. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +1 -0
  23. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  24. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +5 -3
  25. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  26. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +3 -2
  27. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  28. package/lib/components/DeclarativeChart/DeclarativeChart.js +1 -0
  29. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  30. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +62 -67
  31. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  32. package/lib/components/DeclarativeChart/imageExporter.js +1 -0
  33. package/lib/components/DeclarativeChart/imageExporter.js.map +1 -1
  34. package/lib/components/DonutChart/Arc/Arc.js +8 -8
  35. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  36. package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
  37. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +4 -2
  38. package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  39. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +2 -1
  40. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  41. package/lib/components/DonutChart/DonutChart.js +55 -24
  42. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  43. package/lib/components/DonutChart/Pie/Pie.js +1 -0
  44. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  45. package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -1
  46. package/lib/components/DonutChart/Pie/usePieStyles.styles.js +2 -0
  47. package/lib/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
  48. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
  49. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
  50. package/lib/components/DonutChart/useDonutChartStyles.styles.js +2 -0
  51. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  52. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +1 -0
  53. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  54. package/lib/components/FunnelChart/FunnelChart.js +7 -3
  55. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  56. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +2 -0
  57. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  58. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
  59. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  60. package/lib/components/GanttChart/GanttChart.js +1 -0
  61. package/lib/components/GanttChart/GanttChart.js.map +1 -1
  62. package/lib/components/GaugeChart/GaugeChart.js +1 -0
  63. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  64. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +2 -0
  65. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  66. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
  67. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  68. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +13 -7
  69. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  70. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -0
  71. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  72. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +1 -0
  73. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  74. package/lib/components/HeatMapChart/HeatMapChart.js +2 -1
  75. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  76. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -0
  77. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  78. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
  79. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
  80. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +2 -2
  81. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  82. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +3 -1
  83. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  84. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +2 -1
  85. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  86. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
  87. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  88. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -0
  89. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  90. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
  91. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  92. package/lib/components/Legends/Legends.js +1 -0
  93. package/lib/components/Legends/Legends.js.map +1 -1
  94. package/lib/components/Legends/OverflowMenu.js +1 -0
  95. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  96. package/lib/components/Legends/shape.js +1 -0
  97. package/lib/components/Legends/shape.js.map +1 -1
  98. package/lib/components/Legends/useLegendsStyles.styles.js +2 -0
  99. package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
  100. package/lib/components/Legends/useLegendsStyles.styles.raw.js +1 -0
  101. package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  102. package/lib/components/LineChart/LineChart.js +42 -39
  103. package/lib/components/LineChart/LineChart.js.map +1 -1
  104. package/lib/components/LineChart/eventAnnotation/LabelLink.js +1 -0
  105. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  106. package/lib/components/LineChart/eventAnnotation/Textbox.js +1 -0
  107. package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  108. package/lib/components/LineChart/useLineChartStyles.styles.js +2 -0
  109. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  110. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +1 -0
  111. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  112. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
  113. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  114. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +2 -0
  115. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
  116. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
  117. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
  118. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +1 -0
  119. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  120. package/lib/components/SankeyChart/SankeyChart.js +1 -0
  121. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  122. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +2 -0
  123. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  124. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -0
  125. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  126. package/lib/components/ScatterChart/ScatterChart.js +7 -6
  127. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  128. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +2 -0
  129. package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  130. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +1 -0
  131. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  132. package/lib/components/Sparkline/Sparkline.js +1 -0
  133. package/lib/components/Sparkline/Sparkline.js.map +1 -1
  134. package/lib/components/Sparkline/useSparklineStyles.styles.js +2 -0
  135. package/lib/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
  136. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
  137. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
  138. package/lib/components/VerticalBarChart/VerticalBarChart.js +15 -10
  139. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  140. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -0
  141. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  142. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +1 -0
  143. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  144. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +29 -24
  145. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  146. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -0
  147. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  148. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +1 -0
  149. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  150. package/lib/utilities/FocusableTooltipText.js +1 -0
  151. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  152. package/lib/utilities/SVGTooltipText.js +1 -0
  153. package/lib/utilities/SVGTooltipText.js.map +1 -1
  154. package/lib/utilities/image-export-utils.js +1 -0
  155. package/lib/utilities/image-export-utils.js.map +1 -1
  156. package/lib/utilities/utilities.js +12 -11
  157. package/lib/utilities/utilities.js.map +1 -1
  158. package/lib-commonjs/components/AreaChart/AreaChart.js +5 -3
  159. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  160. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -0
  161. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  162. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +1 -0
  163. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  164. package/lib-commonjs/components/ChartTable/ChartTable.js +11 -7
  165. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  166. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +4 -3
  167. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  168. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +3 -2
  169. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  170. package/lib-commonjs/components/CommonComponents/CartesianChart.js +11 -12
  171. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  172. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  173. package/lib-commonjs/components/CommonComponents/ChartPopover.js +14 -5
  174. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  175. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +1 -0
  176. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  177. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +1 -0
  178. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  179. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +4 -3
  180. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  181. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +3 -2
  182. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  183. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +2 -1
  184. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  185. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +63 -68
  186. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  187. package/lib-commonjs/components/DeclarativeChart/imageExporter.js +1 -0
  188. package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -1
  189. package/lib-commonjs/components/DonutChart/Arc/Arc.js +8 -8
  190. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  191. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
  192. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +3 -2
  193. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  194. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +2 -1
  195. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  196. package/lib-commonjs/components/DonutChart/DonutChart.js +55 -24
  197. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  198. package/lib-commonjs/components/DonutChart/Pie/Pie.js +2 -1
  199. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  200. package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -1
  201. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -0
  202. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
  203. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
  204. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
  205. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +1 -0
  206. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  207. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +1 -0
  208. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  209. package/lib-commonjs/components/FunnelChart/FunnelChart.js +7 -3
  210. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  211. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +1 -0
  212. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  213. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
  214. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  215. package/lib-commonjs/components/GanttChart/GanttChart.js +1 -0
  216. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
  217. package/lib-commonjs/components/GaugeChart/GaugeChart.js +1 -0
  218. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  219. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -0
  220. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  221. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
  222. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  223. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +13 -7
  224. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  225. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -0
  226. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  227. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +1 -0
  228. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  229. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -1
  230. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  231. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -0
  232. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  233. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
  234. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
  235. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +2 -2
  236. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  237. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +2 -1
  238. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  239. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +2 -1
  240. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  241. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
  242. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  243. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -0
  244. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  245. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
  246. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  247. package/lib-commonjs/components/Legends/Legends.js +1 -0
  248. package/lib-commonjs/components/Legends/Legends.js.map +1 -1
  249. package/lib-commonjs/components/Legends/OverflowMenu.js +1 -0
  250. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  251. package/lib-commonjs/components/Legends/shape.js +1 -0
  252. package/lib-commonjs/components/Legends/shape.js.map +1 -1
  253. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +1 -0
  254. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
  255. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +1 -0
  256. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  257. package/lib-commonjs/components/LineChart/LineChart.js +41 -38
  258. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  259. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +1 -0
  260. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  261. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +1 -0
  262. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  263. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +1 -0
  264. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  265. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +1 -0
  266. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  267. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
  268. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  269. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -0
  270. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
  271. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
  272. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
  273. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +2 -1
  274. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  275. package/lib-commonjs/components/SankeyChart/SankeyChart.js +1 -0
  276. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  277. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +1 -0
  278. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  279. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -0
  280. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  281. package/lib-commonjs/components/ScatterChart/ScatterChart.js +6 -5
  282. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  283. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +1 -0
  284. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  285. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +1 -0
  286. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  287. package/lib-commonjs/components/Sparkline/Sparkline.js +1 -0
  288. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
  289. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -0
  290. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
  291. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
  292. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
  293. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +15 -10
  294. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  295. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -0
  296. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  297. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +1 -0
  298. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  299. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +28 -23
  300. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  301. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -0
  302. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  303. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +1 -0
  304. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  305. package/lib-commonjs/utilities/FocusableTooltipText.js +2 -1
  306. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  307. package/lib-commonjs/utilities/SVGTooltipText.js +1 -0
  308. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  309. package/lib-commonjs/utilities/image-export-utils.js +1 -0
  310. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  311. package/lib-commonjs/utilities/utilities.js +12 -11
  312. package/lib-commonjs/utilities/utilities.js.map +1 -1
  313. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, x };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n if (colors) {\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\n }\n });\n } else {\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string = resolveColor(colors, sortedIdx, legend, colorMap, isDarkTheme);\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\n const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: GanttChartDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n const isXDate = input.layout?.xaxis?.type === 'date' || isDateArray(series.x);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const convertXValueToNumber = (value: any) => {\n return isInvalidValue(value) ? 0 : isXDate ? +parseLocalDate(value) : +value;\n };\n\n return (series.y as Datum[])\n .map((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return null;\n }\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n const base = convertXValueToNumber(series.base?.[i]);\n const xVal = convertXValueToNumber(series.x?.[i]);\n\n return {\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as GanttChartDataPoint;\n })\n .filter(point => point !== null) as GanttChartDataPoint[];\n })\n .flat();\n\n return {\n data: chartData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n const fontColorRaw = header?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n\n if (Array.isArray(fontColorRaw)) {\n const colorEntry = fontColorRaw[colIndex] ?? fontColorRaw[0];\n if (Array.isArray(colorEntry)) {\n fontColor = typeof colorEntry[0] === 'string' ? colorEntry[0] : undefined;\n } else if (typeof colorEntry === 'string') {\n fontColor = colorEntry;\n }\n } else if (typeof fontColorRaw === 'string') {\n fontColor = fontColorRaw;\n }\n\n const fontSizeRaw = header?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n\n if (Array.isArray(fontSizeRaw)) {\n const fontSizeEntry = fontSizeRaw[colIndex] ?? fontSizeRaw[0];\n fontSize = Array.isArray(fontSizeRaw[0])\n ? fontSizeRaw[0][colIndex] ?? fontSizeRaw[0][0]\n : typeof fontSizeEntry === 'number'\n ? fontSizeEntry\n : undefined;\n } else if (typeof fontSizeRaw === 'number') {\n fontSize = fontSizeRaw;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const fillColorRaw = header?.fill?.color;\n const backgroundColor = Array.isArray(fillColorRaw)\n ? fillColorRaw[updatedColIndex] ?? fillColorRaw[0]\n : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] ?? textAlignRaw[0] : textAlignRaw;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells =\n tableData.cells && Object.keys(tableData.cells).length > 0\n ? tableData.cells\n : input.layout?.template?.data?.table?.[0]?.cells;\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const rawFontColor = cells?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n if (Array.isArray(rawFontColor)) {\n const entry = rawFontColor[colIndex] ?? rawFontColor[0];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawFontColor === 'string') {\n fontColor = rawFontColor;\n }\n\n const rawFontSize = cells?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n if (Array.isArray(rawFontSize)) {\n const entry = rawFontSize[colIndex] ?? rawFontSize[0];\n const fontSizeValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontSize = typeof fontSizeValue === 'number' ? fontSizeValue : undefined;\n } else if (typeof rawFontSize === 'number') {\n fontSize = rawFontSize;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const rawBackgroundColor = cells?.fill?.color;\n let backgroundColor: React.CSSProperties['backgroundColor'] | undefined;\n if (Array.isArray(rawBackgroundColor)) {\n const entry = rawBackgroundColor[updatedColIndex] ?? rawBackgroundColor[0];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n backgroundColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawBackgroundColor === 'string') {\n backgroundColor = rawBackgroundColor;\n }\n\n const rawTextAlign = Array.isArray(cells?.align) ? cells.align[colIndex] ?? cells.align[0] : cells?.align;\n const textAlign = rawTextAlign as React.CSSProperties['textAlign'] | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n return {\n headers: normalizeHeaders(\n tableData.header?.values ?? [],\n tableData.header && Object.keys(tableData.header).length > 0\n ? tableData.header\n : input.layout?.template?.data?.table![0].header,\n ),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(extractedColors, 0, category, colorMap, isDarkTheme);\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(extractedColors, i, label, colorMap, isDarkTheme);\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, axId[0] as 'x' | 'y', ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const axisObjects: Record<string, Partial<LayoutAxis> | undefined> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = layout?.[getAxisKey('x', xAxisId)];\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = layout?.[getAxisKey('y', sortedYAxisIds[0])];\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = layout?.[getAxisKey('y', sortedYAxisIds[1])];\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], axLetter: 'x' | 'y', ax: Partial<LayoutAxis> | undefined): AxisType | undefined => {\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n // Note: When ax.type is explicitly specified, Plotly casts the values to match that type.\n // Therefore, simply checking the type of the values may not be sufficient. At the moment,\n // we don’t always perform this casting ourselves and instead use the values as provided.\n\n if (isNumberArray(values)) {\n if (ax?.type === 'log') {\n return 'log';\n }\n return 'linear';\n }\n\n if (isDateArray(values)) {\n return 'date';\n }\n\n if (isStringArray(values)) {\n return 'category';\n }\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","type","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","getNumberAtIndexOrDefault","values","legend","labelValuePairs","validPairs","pair","sort","a","b","sortedIdx","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","gvbcData","hasObjectArrayData","some","processedData","flat","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","convertXValueToNumber","parseLocalDate","base","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","suffix","formatted","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColorRaw","font","fontColor","colorEntry","fontSizeRaw","fontSize","fontSizeEntry","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","table","rows","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","getAxisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","getAxisType","tickmode","tickvals","tickValues","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","round","charAt","dtickNum","xAxisId","yAxisIds","axisIds","sortedYAxisIds","isoDateRegex","match"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n GanttChartDataPoint,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { GanttChartProps } from '../GanttChart/index';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n DTickValue,\n AxisType,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, x };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n if (colors) {\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\n }\n });\n } else {\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string = resolveColor(colors, sortedIdx, legend, colorMap, isDarkTheme);\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\n }\n }\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n processedInput.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, processedInput.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\n const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\n width: processedInput.layout?.width,\n height: processedInput.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n var shouldWrapLabels = false;\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n shouldWrapLabels = shouldWrapLabels || (isXString && !isXDate);\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n }\n : {}),\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n wrapXAxisLables: shouldWrapLabels,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: GanttChartDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n const isXDate = input.layout?.xaxis?.type === 'date' || isDateArray(series.x);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const convertXValueToNumber = (value: any) => {\n return isInvalidValue(value) ? 0 : isXDate ? +parseLocalDate(value) : +value;\n };\n\n return (series.y as Datum[])\n .map((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return null;\n }\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n const base = convertXValueToNumber(series.base?.[i]);\n const xVal = convertXValueToNumber(series.x?.[i]);\n\n return {\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as GanttChartDataPoint;\n })\n .filter(point => point !== null) as GanttChartDataPoint[];\n })\n .flat();\n\n return {\n data: chartData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\n}\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = mergeCells(tableData.cells, input.layout?.template?.data?.table?.[0]?.cells);\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(extractedColors, 0, category, colorMap, isDarkTheme);\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(extractedColors, i, label, colorMap, isDarkTheme);\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any): void {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(calculatePrecision(minVal), calculatePrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number): number | undefined => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>): [number, number][] => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, axId[0] as 'x' | 'y', ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const axisObjects: Record<string, Partial<LayoutAxis> | undefined> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = layout?.[getAxisKey('x', xAxisId)];\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = layout?.[getAxisKey('y', sortedYAxisIds[0])];\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = layout?.[getAxisKey('y', sortedYAxisIds[1])];\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], axLetter: 'x' | 'y', ax: Partial<LayoutAxis> | undefined): AxisType | undefined => {\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n // Note: When ax.type is explicitly specified, Plotly casts the values to match that type.\n // Therefore, simply checking the type of the values may not be sufficient. At the moment,\n // we don’t always perform this casting ourselves and instead use the values as provided.\n\n if (isNumberArray(values)) {\n if (ax?.type === 'log') {\n return 'log';\n }\n return 'linear';\n }\n\n if (isDateArray(values)) {\n return 'date';\n }\n\n if (isStringArray(values)) {\n return 'category';\n }\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","type","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","getNumberAtIndexOrDefault","values","legend","labelValuePairs","validPairs","pair","sort","a","b","sortedIdx","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","gvbcData","hasObjectArrayData","some","processedData","flat","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","shouldWrapLabels","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","convertXValueToNumber","parseLocalDate","base","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","colorscale","coloraxis","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","align","font","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColor","fontSize","backgroundColor","textAlign","style","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","getAxisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","getAxisType","tickmode","tickvals","tickValues","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","round","charAt","dtickNum","xAxisId","yAxisIds","axisIds","sortedYAxisIds","isoDateRegex","match"],"mappings":"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"}