@fluentui/react-charts 9.1.9 → 9.2.0

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 (451) hide show
  1. package/CHANGELOG.md +47 -2
  2. package/dist/index.d.ts +348 -11
  3. package/lib/AreaChart.js.map +1 -1
  4. package/lib/CartesianChart.js.map +1 -1
  5. package/lib/DeclarativeChart.js.map +1 -1
  6. package/lib/DonutChart.js.map +1 -1
  7. package/lib/FunnelChart.js +1 -0
  8. package/lib/FunnelChart.js.map +1 -0
  9. package/lib/GanttChart.js +1 -0
  10. package/lib/GanttChart.js.map +1 -0
  11. package/lib/GaugeChart.js.map +1 -1
  12. package/lib/GroupedVerticalBarChart.js.map +1 -1
  13. package/lib/HeatMapChart.js.map +1 -1
  14. package/lib/HorizontalBarChart.js.map +1 -1
  15. package/lib/HorizontalBarChartWithAxis.js.map +1 -1
  16. package/lib/Legends.js.map +1 -1
  17. package/lib/LineChart.js.map +1 -1
  18. package/lib/Popover.js.map +1 -1
  19. package/lib/ResponsiveContainer.js.map +1 -1
  20. package/lib/SankeyChart.js.map +1 -1
  21. package/lib/ScatterChart.js.map +1 -1
  22. package/lib/Sparkline.js.map +1 -1
  23. package/lib/VerticalBarChart.js.map +1 -1
  24. package/lib/VerticalStackedBarChart.js.map +1 -1
  25. package/lib/components/AreaChart/AreaChart.js +24 -8
  26. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  27. package/lib/components/AreaChart/AreaChart.types.js.map +1 -1
  28. package/lib/components/AreaChart/index.js.map +1 -1
  29. package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
  30. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +41 -0
  31. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
  32. package/lib/components/CommonComponents/CartesianChart.js +12 -8
  33. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  34. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  35. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  36. package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
  37. package/lib/components/CommonComponents/index.js.map +1 -1
  38. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +1 -2
  39. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +128 -0
  40. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
  41. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +1 -2
  42. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +126 -0
  43. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
  44. package/lib/components/DeclarativeChart/DeclarativeChart.js +15 -7
  45. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  46. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +44 -13
  47. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  48. package/lib/components/DeclarativeChart/imageExporter.js +1 -0
  49. package/lib/components/DeclarativeChart/imageExporter.js.map +1 -1
  50. package/lib/components/DeclarativeChart/index.js.map +1 -1
  51. package/lib/components/DonutChart/Arc/Arc.js +5 -5
  52. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  53. package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
  54. package/lib/components/DonutChart/Arc/index.js.map +1 -1
  55. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +1 -2
  56. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +44 -0
  57. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
  58. package/lib/components/DonutChart/DonutChart.js +18 -4
  59. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  60. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  61. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  62. package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -1
  63. package/lib/components/DonutChart/Pie/index.js.map +1 -1
  64. package/lib/components/DonutChart/Pie/usePieStyles.styles.js +1 -2
  65. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +29 -0
  66. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
  67. package/lib/components/DonutChart/index.js.map +1 -1
  68. package/lib/components/DonutChart/useDonutChartStyles.styles.js +1 -2
  69. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +45 -0
  70. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
  71. package/lib/components/FunnelChart/FunnelChart.js +400 -0
  72. package/lib/components/FunnelChart/FunnelChart.js.map +1 -0
  73. package/lib/components/FunnelChart/FunnelChart.types.js +1 -0
  74. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -0
  75. package/lib/components/FunnelChart/funnelGeometry.js +220 -0
  76. package/lib/components/FunnelChart/funnelGeometry.js.map +1 -0
  77. package/lib/components/FunnelChart/index.js +2 -0
  78. package/lib/components/FunnelChart/index.js.map +1 -0
  79. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +58 -0
  80. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -0
  81. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +51 -0
  82. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
  83. package/lib/components/GanttChart/GanttChart.js +547 -0
  84. package/lib/components/GanttChart/GanttChart.js.map +1 -0
  85. package/lib/components/GanttChart/GanttChart.types.js +4 -0
  86. package/lib/components/GanttChart/GanttChart.types.js.map +1 -0
  87. package/lib/components/GanttChart/index.js +2 -0
  88. package/lib/components/GanttChart/index.js.map +1 -0
  89. package/lib/components/GanttChart/useGanttChartStyles.styles.js +24 -0
  90. package/lib/components/GanttChart/useGanttChartStyles.styles.js.map +1 -0
  91. package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +23 -0
  92. package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
  93. package/lib/components/GaugeChart/GaugeChart.js +9 -2
  94. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  95. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  96. package/lib/components/GaugeChart/index.js.map +1 -1
  97. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +1 -2
  98. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +142 -0
  99. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
  100. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +77 -60
  101. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  102. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  103. package/lib/components/GroupedVerticalBarChart/index.js.map +1 -1
  104. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
  105. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +53 -0
  106. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
  107. package/lib/components/HeatMapChart/HeatMapChart.js +11 -3
  108. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  109. package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
  110. package/lib/components/HeatMapChart/index.js.map +1 -1
  111. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -2
  112. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +38 -0
  113. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
  114. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
  115. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  116. package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js +5 -3
  117. package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
  118. package/lib/components/HorizontalBarChart/index.js.map +1 -1
  119. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -2
  120. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +120 -0
  121. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
  122. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +18 -5
  123. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  124. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  125. package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -1
  126. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -2
  127. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +39 -0
  128. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
  129. package/lib/components/Legends/Legends.js +28 -10
  130. package/lib/components/Legends/Legends.js.map +1 -1
  131. package/lib/components/Legends/Legends.types.js.map +1 -1
  132. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  133. package/lib/components/Legends/index.js.map +1 -1
  134. package/lib/components/Legends/shape.js +3 -3
  135. package/lib/components/Legends/shape.js.map +1 -1
  136. package/lib/components/Legends/useLegendsStyles.styles.js +57 -14
  137. package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
  138. package/lib/components/Legends/useLegendsStyles.styles.raw.js +138 -0
  139. package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
  140. package/lib/components/LineChart/LineChart.js +23 -9
  141. package/lib/components/LineChart/LineChart.js.map +1 -1
  142. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  143. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  144. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  145. package/lib/components/LineChart/eventAnnotation/Textbox.js +2 -1
  146. package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  147. package/lib/components/LineChart/index.js.map +1 -1
  148. package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
  149. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +52 -0
  150. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
  151. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  152. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  153. package/lib/components/ResponsiveContainer/index.js.map +1 -1
  154. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -2
  155. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +28 -0
  156. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
  157. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  158. package/lib/components/SankeyChart/SankeyChart.js +5 -1
  159. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  160. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  161. package/lib/components/SankeyChart/index.js.map +1 -1
  162. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
  163. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +77 -0
  164. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
  165. package/lib/components/ScatterChart/ScatterChart.js +19 -5
  166. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  167. package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
  168. package/lib/components/ScatterChart/index.js.map +1 -1
  169. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
  170. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +43 -0
  171. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
  172. package/lib/components/Sparkline/Sparkline.js.map +1 -1
  173. package/lib/components/Sparkline/Sparkline.types.js.map +1 -1
  174. package/lib/components/Sparkline/index.js.map +1 -1
  175. package/lib/components/Sparkline/useSparklineStyles.styles.js +1 -2
  176. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +30 -0
  177. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
  178. package/lib/components/VerticalBarChart/VerticalBarChart.js +71 -31
  179. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  180. package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
  181. package/lib/components/VerticalBarChart/index.js.map +1 -1
  182. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
  183. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +58 -0
  184. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
  185. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +26 -12
  186. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  187. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  188. package/lib/components/VerticalStackedBarChart/index.js.map +1 -1
  189. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
  190. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +49 -0
  191. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
  192. package/lib/index.js +2 -0
  193. package/lib/index.js.map +1 -1
  194. package/lib/types/DataPoint.js +3 -1
  195. package/lib/types/DataPoint.js.map +1 -1
  196. package/lib/types/EventAnnotation.js.map +1 -1
  197. package/lib/types/LegendDataItem.js.map +1 -1
  198. package/lib/types/index.js.map +1 -1
  199. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  200. package/lib/utilities/KeyCodes.js.map +1 -1
  201. package/lib/utilities/SVGTooltipText.js +2 -0
  202. package/lib/utilities/SVGTooltipText.js.map +1 -1
  203. package/lib/utilities/async-utils.js.map +1 -1
  204. package/lib/utilities/colors.js +12 -0
  205. package/lib/utilities/colors.js.map +1 -1
  206. package/lib/utilities/getWindow.js.map +1 -1
  207. package/lib/utilities/image-export-utils.js +256 -0
  208. package/lib/utilities/image-export-utils.js.map +1 -0
  209. package/lib/utilities/index.js.map +1 -1
  210. package/lib/utilities/overflow-utils.js.map +1 -1
  211. package/lib/utilities/string.js.map +1 -1
  212. package/lib/utilities/test-data.js +236 -0
  213. package/lib/utilities/test-data.js.map +1 -1
  214. package/lib/utilities/utilities.js +140 -27
  215. package/lib/utilities/utilities.js.map +1 -1
  216. package/lib/utilities/vbc-utils.js +2 -2
  217. package/lib/utilities/vbc-utils.js.map +1 -1
  218. package/lib-commonjs/AreaChart.js.map +1 -1
  219. package/lib-commonjs/CartesianChart.js.map +1 -1
  220. package/lib-commonjs/DeclarativeChart.js.map +1 -1
  221. package/lib-commonjs/DonutChart.js.map +1 -1
  222. package/lib-commonjs/FunnelChart.js +6 -0
  223. package/lib-commonjs/FunnelChart.js.map +1 -0
  224. package/lib-commonjs/GanttChart.js +6 -0
  225. package/lib-commonjs/GanttChart.js.map +1 -0
  226. package/lib-commonjs/GaugeChart.js.map +1 -1
  227. package/lib-commonjs/GroupedVerticalBarChart.js.map +1 -1
  228. package/lib-commonjs/HeatMapChart.js.map +1 -1
  229. package/lib-commonjs/HorizontalBarChart.js.map +1 -1
  230. package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -1
  231. package/lib-commonjs/Legends.js.map +1 -1
  232. package/lib-commonjs/LineChart.js.map +1 -1
  233. package/lib-commonjs/Popover.js.map +1 -1
  234. package/lib-commonjs/ResponsiveContainer.js.map +1 -1
  235. package/lib-commonjs/SankeyChart.js.map +1 -1
  236. package/lib-commonjs/ScatterChart.js.map +1 -1
  237. package/lib-commonjs/Sparkline.js.map +1 -1
  238. package/lib-commonjs/VerticalBarChart.js.map +1 -1
  239. package/lib-commonjs/VerticalStackedBarChart.js.map +1 -1
  240. package/lib-commonjs/components/AreaChart/AreaChart.js +23 -7
  241. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  242. package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -1
  243. package/lib-commonjs/components/AreaChart/index.js.map +1 -1
  244. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -1
  245. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  246. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +57 -0
  247. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -0
  248. package/lib-commonjs/components/CommonComponents/CartesianChart.js +11 -7
  249. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  250. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  251. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  252. package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
  253. package/lib-commonjs/components/CommonComponents/index.js.map +1 -1
  254. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +1 -1
  255. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  256. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +142 -0
  257. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -0
  258. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +1 -1
  259. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  260. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +140 -0
  261. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -0
  262. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +14 -6
  263. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  264. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +47 -13
  265. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  266. package/lib-commonjs/components/DeclarativeChart/imageExporter.js +1 -0
  267. package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -1
  268. package/lib-commonjs/components/DeclarativeChart/index.js.map +1 -1
  269. package/lib-commonjs/components/DonutChart/Arc/Arc.js +5 -5
  270. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  271. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
  272. package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -1
  273. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +1 -1
  274. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  275. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +58 -0
  276. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -0
  277. package/lib-commonjs/components/DonutChart/DonutChart.js +17 -3
  278. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  279. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  280. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  281. package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -1
  282. package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -1
  283. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -1
  284. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
  285. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +43 -0
  286. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -0
  287. package/lib-commonjs/components/DonutChart/index.js.map +1 -1
  288. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +1 -1
  289. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  290. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +59 -0
  291. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -0
  292. package/lib-commonjs/components/FunnelChart/FunnelChart.js +411 -0
  293. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -0
  294. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js +6 -0
  295. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -0
  296. package/lib-commonjs/components/FunnelChart/funnelGeometry.js +248 -0
  297. package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -0
  298. package/lib-commonjs/components/FunnelChart/index.js +7 -0
  299. package/lib-commonjs/components/FunnelChart/index.js.map +1 -0
  300. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +79 -0
  301. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -0
  302. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +65 -0
  303. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -0
  304. package/lib-commonjs/components/GanttChart/GanttChart.js +558 -0
  305. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -0
  306. package/lib-commonjs/components/GanttChart/GanttChart.types.js +7 -0
  307. package/lib-commonjs/components/GanttChart/GanttChart.types.js.map +1 -0
  308. package/lib-commonjs/components/GanttChart/index.js +7 -0
  309. package/lib-commonjs/components/GanttChart/index.js.map +1 -0
  310. package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +39 -0
  311. package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js.map +1 -0
  312. package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +39 -0
  313. package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -0
  314. package/lib-commonjs/components/GaugeChart/GaugeChart.js +9 -2
  315. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  316. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  317. package/lib-commonjs/components/GaugeChart/index.js.map +1 -1
  318. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -1
  319. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  320. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +160 -0
  321. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -0
  322. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +77 -60
  323. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  324. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  325. package/lib-commonjs/components/GroupedVerticalBarChart/index.js.map +1 -1
  326. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -1
  327. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  328. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +69 -0
  329. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -0
  330. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +10 -2
  331. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  332. package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -1
  333. package/lib-commonjs/components/HeatMapChart/index.js.map +1 -1
  334. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -1
  335. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  336. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +56 -0
  337. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -0
  338. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +23 -26
  339. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  340. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js +3 -3
  341. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
  342. package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -1
  343. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +1 -1
  344. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  345. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +134 -0
  346. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -0
  347. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +18 -5
  348. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  349. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  350. package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -1
  351. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -1
  352. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  353. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +55 -0
  354. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -0
  355. package/lib-commonjs/components/Legends/Legends.js +28 -10
  356. package/lib-commonjs/components/Legends/Legends.js.map +1 -1
  357. package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
  358. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  359. package/lib-commonjs/components/Legends/index.js.map +1 -1
  360. package/lib-commonjs/components/Legends/shape.js +2 -2
  361. package/lib-commonjs/components/Legends/shape.js.map +1 -1
  362. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +101 -28
  363. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
  364. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +174 -0
  365. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -0
  366. package/lib-commonjs/components/LineChart/LineChart.js +23 -9
  367. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  368. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  369. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -1
  370. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  371. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +2 -1
  372. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  373. package/lib-commonjs/components/LineChart/index.js.map +1 -1
  374. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +1 -1
  375. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  376. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +66 -0
  377. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -0
  378. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  379. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  380. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
  381. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -1
  382. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
  383. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +46 -0
  384. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -0
  385. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  386. package/lib-commonjs/components/SankeyChart/SankeyChart.js +5 -1
  387. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  388. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  389. package/lib-commonjs/components/SankeyChart/index.js.map +1 -1
  390. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +1 -1
  391. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  392. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +95 -0
  393. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -0
  394. package/lib-commonjs/components/ScatterChart/ScatterChart.js +18 -4
  395. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  396. package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
  397. package/lib-commonjs/components/ScatterChart/index.js.map +1 -1
  398. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +1 -1
  399. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  400. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +57 -0
  401. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -0
  402. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
  403. package/lib-commonjs/components/Sparkline/Sparkline.types.js.map +1 -1
  404. package/lib-commonjs/components/Sparkline/index.js.map +1 -1
  405. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -1
  406. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
  407. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +44 -0
  408. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -0
  409. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +71 -31
  410. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  411. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -1
  412. package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -1
  413. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -1
  414. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  415. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +74 -0
  416. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -0
  417. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +26 -12
  418. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  419. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  420. package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -1
  421. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -1
  422. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  423. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +67 -0
  424. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -0
  425. package/lib-commonjs/index.js +2 -0
  426. package/lib-commonjs/index.js.map +1 -1
  427. package/lib-commonjs/types/DataPoint.js +3 -1
  428. package/lib-commonjs/types/DataPoint.js.map +1 -1
  429. package/lib-commonjs/types/EventAnnotation.js.map +1 -1
  430. package/lib-commonjs/types/LegendDataItem.js.map +1 -1
  431. package/lib-commonjs/types/index.js.map +1 -1
  432. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  433. package/lib-commonjs/utilities/KeyCodes.js.map +1 -1
  434. package/lib-commonjs/utilities/SVGTooltipText.js +2 -0
  435. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  436. package/lib-commonjs/utilities/async-utils.js.map +1 -1
  437. package/lib-commonjs/utilities/colors.js +18 -0
  438. package/lib-commonjs/utilities/colors.js.map +1 -1
  439. package/lib-commonjs/utilities/getWindow.js.map +1 -1
  440. package/lib-commonjs/utilities/image-export-utils.js +274 -0
  441. package/lib-commonjs/utilities/image-export-utils.js.map +1 -0
  442. package/lib-commonjs/utilities/index.js.map +1 -1
  443. package/lib-commonjs/utilities/overflow-utils.js.map +1 -1
  444. package/lib-commonjs/utilities/string.js.map +1 -1
  445. package/lib-commonjs/utilities/test-data.js +245 -0
  446. package/lib-commonjs/utilities/test-data.js.map +1 -1
  447. package/lib-commonjs/utilities/utilities.js +142 -22
  448. package/lib-commonjs/utilities/utilities.js.map +1 -1
  449. package/lib-commonjs/utilities/vbc-utils.js +2 -2
  450. package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
  451. package/package.json +12 -22
@@ -1 +1 @@
1
- {"version":3,"sources":["DeclarativeChart.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport type { Data, PlotData, PlotlySchema, OutputChartType } from '@fluentui/chart-utilities';\nimport {\n decodeBase64Fields,\n isArrayOrTypedArray,\n isDateArray,\n isMonthArray,\n isNumberArray,\n isYearArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { ThemeContext_unstable as V9ThemeContext } from '@fluentui/react-shared-contexts';\nimport { Theme, webLightTheme } from '@fluentui/tokens';\nimport * as d3Color from 'd3-color';\n\nimport {\n correctYearMonth,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToScatterChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n} from './PlotlySchemaAdapter';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { LineChart, LineChartProps } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart, AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { ImageExportOptions, toImage } from './imageExporter';\nimport { Chart } from '../../types/index';\nimport { ScatterChart } from '../ScatterChart/index';\n\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\nconst ResponsiveScatterChart = withResponsiveContainer(ScatterChart);\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<IDeclarativeChart>;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: ImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\nconst useIsDarkTheme = (): boolean => {\n const parentV9Theme = React.useContext(V9ThemeContext) as Theme;\n const v9Theme: Theme = parentV9Theme ? parentV9Theme : webLightTheme;\n\n // Get background and foreground colors\n const backgroundColor = d3Color.hsl(v9Theme.colorNeutralBackground1);\n const foregroundColor = d3Color.hsl(v9Theme.colorNeutralForeground1);\n\n const isDarkTheme = backgroundColor.l < foregroundColor.l;\n\n return isDarkTheme;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>((props, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace.index]),\n };\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const isDarkTheme = useIsDarkTheme();\n const chartRef = React.useRef<Chart>(null);\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const commonProps = {\n legendProps: multiSelectLegendProps,\n componentRef: chartRef,\n };\n\n const renderLineAreaScatter = (plotlyData: Data[], isAreaChart: boolean): JSX.Element => {\n const isScatterMarkers = (plotlyData[0] as PlotData)?.mode === 'markers';\n const chartProps: LineChartProps | AreaChartProps = {\n ...transformPlotlyJsonToScatterChartProps(\n { data: plotlyData, layout: plotlyInput.layout },\n isAreaChart,\n colorMap,\n isDarkTheme,\n ),\n ...commonProps,\n };\n if (isAreaChart) {\n return <ResponsiveAreaChart {...chartProps} />;\n }\n if (isScatterMarkers) {\n return <ResponsiveScatterChart {...chartProps} />;\n }\n return <ResponsiveLineChart {...chartProps} />;\n };\n\n const checkAndRenderChart = (isAreaChart: boolean = false) => {\n let fallbackVSBC = false;\n const xValues = (plotlyInputWithValidData.data[0] as PlotData).x;\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXMonth = isMonthArray(xValues);\n\n // Consider year as categorical variable not numeric continuous variable\n // Also year is not considered a date variable as it is represented as a point\n // in time and brings additional complexity of handling timezone and locale\n // formatting given the current design of the charting library\n const isXYear = isYearArray(xValues);\n\n if ((isXDate || isXNumber) && !isXYear) {\n return renderLineAreaScatter(plotlyInputWithValidData.data, isAreaChart);\n } else if (isXMonth) {\n const updatedData = plotlyInputWithValidData.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n return renderLineAreaScatter(updatedData, isAreaChart);\n }\n // Unsupported schema, render as VerticalStackedBarChart\n fallbackVSBC = true;\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme, fallbackVSBC)}\n {...commonProps}\n />\n );\n };\n\n // TODO\n const exportAsImage = React.useCallback((opts?: ImageExportOptions) => {\n return toImage(chartRef.current?.chartContainer, {\n background: tokens.colorNeutralBackground1,\n scale: 5,\n ...opts,\n });\n }, []);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n switch (chart.type) {\n case 'donut':\n return (\n <ResponsiveDonutChart\n {...transformPlotlyJsonToDonutProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'horizontalbar':\n return (\n <ResponsiveHorizontalBarChartWithAxis\n {...transformPlotlyJsonToHorizontalBarWithAxisProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'groupedverticalbar':\n return (\n <ResponsiveGroupedVerticalBarChart\n {...transformPlotlyJsonToGVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalstackedbar':\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'heatmap':\n return (\n <ResponsiveHeatMapChart\n {...transformPlotlyJsonToHeatmapProps(plotlyInputWithValidData)}\n {...commonProps}\n legendProps={{}}\n />\n );\n case 'sankey':\n return (\n <ResponsiveSankeyChart\n {...transformPlotlyJsonToSankeyProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'gauge':\n return (\n <ResponsiveGaugeChart\n {...transformPlotlyJsonToGaugeProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalbar':\n return (\n <ResponsiveVerticalBarChart\n {...transformPlotlyJsonToVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n // TODO: Add 'scatter' as a separate chart type\n case 'area':\n case 'line':\n case 'fallback':\n // Need recheck for area chart as we don't have ability to check for valid months in previous step\n const isAreaChart = plotlyInputWithValidData.data.some(\n (series: PlotData) => series.fill === 'tonexty' || series.fill === 'tozeroy' || !!series.stackgroup,\n );\n return checkAndRenderChart(isAreaChart);\n default:\n throw new Error(`Unsupported chart type :${plotlyInputWithValidData.data[0]?.type}`);\n }\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"],"names":["DeclarativeChart","ResponsiveDonutChart","withResponsiveContainer","DonutChart","ResponsiveVerticalStackedBarChart","VerticalStackedBarChart","ResponsiveLineChart","LineChart","ResponsiveHorizontalBarChartWithAxis","HorizontalBarChartWithAxis","ResponsiveAreaChart","AreaChart","ResponsiveHeatMapChart","HeatMapChart","ResponsiveSankeyChart","SankeyChart","ResponsiveGaugeChart","GaugeChart","ResponsiveGroupedVerticalBarChart","GroupedVerticalBarChart","ResponsiveVerticalBarChart","VerticalBarChart","ResponsiveScatterChart","ScatterChart","useColorMapping","colorMap","React","useRef","Map","useIsDarkTheme","parentV9Theme","useContext","V9ThemeContext","v9Theme","webLightTheme","backgroundColor","d3Color","hsl","colorNeutralBackground1","foregroundColor","colorNeutralForeground1","isDarkTheme","l","forwardRef","props","forwardedRef","plotlySchema","sanitizeJson","chartSchema","chart","mapFluentChart","isValid","Error","errorMessage","plotlyInput","decodeBase64Fields","error","plotlyInputWithValidData","data","validTracesInfo","map","trace","index","selectedLegends","chartRef","isArrayOrTypedArray","activeLegends","setActiveLegends","useState","onActiveLegendsChange","keys","onSchemaChange","useEffect","multiSelectLegendProps","canSelectMultipleLegends","onChange","commonProps","legendProps","componentRef","renderLineAreaScatter","plotlyData","isAreaChart","isScatterMarkers","_plotlyData_","mode","chartProps","transformPlotlyJsonToScatterChartProps","layout","createElement","checkAndRenderChart","fallbackVSBC","xValues","x","isXDate","isDateArray","isXNumber","isNumberArray","isXMonth","isMonthArray","isXYear","isYearArray","updatedData","dataPoint","correctYearMonth","transformPlotlyJsonToVSBCProps","exportAsImage","useCallback","opts","toImage","current","chartContainer","background","tokens","scale","useImperativeHandle","type","transformPlotlyJsonToDonutProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToVBCProps","some","series","fill","stackgroup","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../src/components/DeclarativeChart/DeclarativeChart.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport type { Data, PlotData, PlotlySchema, OutputChartType } from '@fluentui/chart-utilities';\nimport {\n decodeBase64Fields,\n isArrayOrTypedArray,\n isDateArray,\n isMonthArray,\n isNumberArray,\n isYearArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport { ThemeContext_unstable as V9ThemeContext } from '@fluentui/react-shared-contexts';\nimport { Theme, webLightTheme } from '@fluentui/tokens';\nimport * as d3Color from 'd3-color';\n\nimport {\n correctYearMonth,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToScatterChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n projectPolarToCartesian,\n} from './PlotlySchemaAdapter';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { LineChart, LineChartProps } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart, AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { Chart, ImageExportOptions } from '../../types/index';\nimport { ScatterChart } from '../ScatterChart/index';\n\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\nconst ResponsiveScatterChart = withResponsiveContainer(ScatterChart);\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<IDeclarativeChart>;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: ImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\nconst useIsDarkTheme = (): boolean => {\n const parentV9Theme = React.useContext(V9ThemeContext) as Theme;\n const v9Theme: Theme = parentV9Theme ? parentV9Theme : webLightTheme;\n\n // Get background and foreground colors\n const backgroundColor = d3Color.hsl(v9Theme.colorNeutralBackground1);\n const foregroundColor = d3Color.hsl(v9Theme.colorNeutralForeground1);\n\n const isDarkTheme = backgroundColor.l < foregroundColor.l;\n\n return isDarkTheme;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>((props, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace.index]),\n };\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const isDarkTheme = useIsDarkTheme();\n const chartRef = React.useRef<Chart>(null);\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const commonProps = {\n legendProps: multiSelectLegendProps,\n componentRef: chartRef,\n };\n\n const renderLineAreaScatter = (plotlyData: Data[], isAreaChart: boolean): JSX.Element => {\n const isScatterMarkers = (plotlyData[0] as PlotData)?.mode === 'markers';\n const chartProps: LineChartProps | AreaChartProps = {\n ...transformPlotlyJsonToScatterChartProps(\n { data: plotlyData, layout: plotlyInput.layout },\n isAreaChart,\n colorMap,\n isDarkTheme,\n ),\n ...commonProps,\n };\n if (isAreaChart) {\n return <ResponsiveAreaChart {...chartProps} />;\n }\n if (isScatterMarkers) {\n return <ResponsiveScatterChart {...chartProps} />;\n }\n return <ResponsiveLineChart {...chartProps} />;\n };\n\n const checkAndRenderChart = (isAreaChart: boolean = false) => {\n let fallbackVSBC = false;\n const xValues = (plotlyInputWithValidData.data[0] as PlotData).x;\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXMonth = isMonthArray(xValues);\n\n // Consider year as categorical variable not numeric continuous variable\n // Also year is not considered a date variable as it is represented as a point\n // in time and brings additional complexity of handling timezone and locale\n // formatting given the current design of the charting library\n const isXYear = isYearArray(xValues);\n\n if ((isXDate || isXNumber) && !isXYear) {\n return renderLineAreaScatter(plotlyInputWithValidData.data, isAreaChart);\n } else if (isXMonth) {\n const updatedData = plotlyInputWithValidData.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n return renderLineAreaScatter(updatedData, isAreaChart);\n }\n // Unsupported schema, render as VerticalStackedBarChart\n fallbackVSBC = true;\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme, fallbackVSBC)}\n {...commonProps}\n />\n );\n };\n\n // TODO\n const exportAsImage = React.useCallback((opts?: ImageExportOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n if (!chartRef.current || typeof chartRef.current.toImage !== 'function') {\n return reject(Error('Chart cannot be exported as image'));\n }\n\n chartRef.current\n .toImage({\n background: tokens.colorNeutralBackground1,\n scale: 5,\n ...opts,\n })\n .then(resolve)\n .catch(reject);\n });\n }, []);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n switch (chart.type) {\n case 'donut':\n return (\n <ResponsiveDonutChart\n {...transformPlotlyJsonToDonutProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'horizontalbar':\n return (\n <ResponsiveHorizontalBarChartWithAxis\n {...transformPlotlyJsonToHorizontalBarWithAxisProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'groupedverticalbar':\n return (\n <ResponsiveGroupedVerticalBarChart\n {...transformPlotlyJsonToGVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalstackedbar':\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'heatmap':\n return (\n <ResponsiveHeatMapChart\n {...transformPlotlyJsonToHeatmapProps(plotlyInputWithValidData)}\n {...commonProps}\n legendProps={{}}\n />\n );\n case 'sankey':\n return (\n <ResponsiveSankeyChart\n {...transformPlotlyJsonToSankeyProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'gauge':\n return (\n <ResponsiveGaugeChart\n {...transformPlotlyJsonToGaugeProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalbar':\n return (\n <ResponsiveVerticalBarChart\n {...transformPlotlyJsonToVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n // TODO: Add 'scatter' as a separate chart type\n case 'area':\n case 'line':\n case 'fallback':\n case 'scatterpolar':\n if (chart.type === 'scatterpolar') {\n const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);\n plotlyInputWithValidData.data = cartesianProjection.data;\n }\n // Need recheck for area chart as we don't have ability to check for valid months in previous step\n const isAreaChart = plotlyInputWithValidData.data.some(\n (series: PlotData) => series.fill === 'tonexty' || series.fill === 'tozeroy' || !!series.stackgroup,\n );\n return checkAndRenderChart(isAreaChart);\n default:\n throw new Error(`Unsupported chart type :${plotlyInputWithValidData.data[0]?.type}`);\n }\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"],"names":["React","decodeBase64Fields","isArrayOrTypedArray","isDateArray","isMonthArray","isNumberArray","isYearArray","mapFluentChart","sanitizeJson","tokens","ThemeContext_unstable","V9ThemeContext","webLightTheme","d3Color","correctYearMonth","transformPlotlyJsonToDonutProps","transformPlotlyJsonToVSBCProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToVBCProps","projectPolarToCartesian","DonutChart","VerticalStackedBarChart","LineChart","HorizontalBarChartWithAxis","AreaChart","HeatMapChart","SankeyChart","GaugeChart","GroupedVerticalBarChart","VerticalBarChart","ScatterChart","withResponsiveContainer","ResponsiveDonutChart","ResponsiveVerticalStackedBarChart","ResponsiveLineChart","ResponsiveHorizontalBarChartWithAxis","ResponsiveAreaChart","ResponsiveHeatMapChart","ResponsiveSankeyChart","ResponsiveGaugeChart","ResponsiveGroupedVerticalBarChart","ResponsiveVerticalBarChart","ResponsiveScatterChart","useColorMapping","colorMap","useRef","Map","useIsDarkTheme","parentV9Theme","useContext","v9Theme","backgroundColor","hsl","colorNeutralBackground1","foregroundColor","colorNeutralForeground1","isDarkTheme","l","DeclarativeChart","forwardRef","props","forwardedRef","plotlySchema","chartSchema","chart","isValid","Error","errorMessage","plotlyInput","error","plotlyInputWithValidData","data","validTracesInfo","map","trace","index","selectedLegends","chartRef","activeLegends","setActiveLegends","useState","onActiveLegendsChange","keys","onSchemaChange","useEffect","multiSelectLegendProps","canSelectMultipleLegends","onChange","commonProps","legendProps","componentRef","renderLineAreaScatter","plotlyData","isAreaChart","isScatterMarkers","mode","chartProps","layout","checkAndRenderChart","fallbackVSBC","xValues","x","isXDate","isXNumber","isXMonth","isXYear","updatedData","dataPoint","exportAsImage","useCallback","opts","Promise","resolve","reject","current","toImage","background","scale","then","catch","useImperativeHandle","type","cartesianProjection","some","series","fill","stackgroup","displayName"],"mappings":"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"}
@@ -18,6 +18,9 @@ _export(exports, {
18
18
  getColor: function() {
19
19
  return getColor;
20
20
  },
21
+ projectPolarToCartesian: function() {
22
+ return projectPolarToCartesian;
23
+ },
21
24
  transformPlotlyJsonToDonutProps: function() {
22
25
  return transformPlotlyJsonToDonutProps;
23
26
  },
@@ -345,6 +348,8 @@ const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
345
348
  return;
346
349
  }
347
350
  const isXString = isStringArray(series.x);
351
+ // TODO: In case of a single bin, add an empty bin of the same size to prevent the
352
+ // default bar width from being used and ensure the bar spans the full intended range.
348
353
  const xBins = createBins(series.x, (_series_xbins = series.xbins) === null || _series_xbins === void 0 ? void 0 : _series_xbins.start, (_series_xbins1 = series.xbins) === null || _series_xbins1 === void 0 ? void 0 : _series_xbins1.end, (_series_xbins2 = series.xbins) === null || _series_xbins2 === void 0 ? void 0 : _series_xbins2.size);
349
354
  const yBins = xBins.map(()=>[]);
350
355
  let total = 0;
@@ -385,8 +390,9 @@ const transformPlotlyJsonToVBCProps = (input, colorMap, isDarkTheme)=>{
385
390
  chartTitle,
386
391
  xAxisTitle,
387
392
  yAxisTitle,
388
- mode: 'plotly',
389
- hideTickOverlap: true
393
+ mode: 'histogram',
394
+ hideTickOverlap: true,
395
+ maxBarWidth: 50
390
396
  };
391
397
  };
392
398
  const transformPlotlyJsonToScatterChartProps = (input, isAreaChart, colorMap, isDarkTheme)=>{
@@ -476,7 +482,7 @@ const transformPlotlyJsonToHorizontalBarWithAxisProps = (input, colorMap, isDark
476
482
  color
477
483
  };
478
484
  });
479
- }).flat() //reversing the order to invert the Y bars order as required by plotly.
485
+ }).reverse().flat() //reversing the order to invert the Y bars order as required by plotly.
480
486
  .reverse();
481
487
  var _input_layout_height;
482
488
  const chartHeight = (_input_layout_height = (_input_layout = input.layout) === null || _input_layout === void 0 ? void 0 : _input_layout.height) !== null && _input_layout_height !== void 0 ? _input_layout_height : 450;
@@ -719,6 +725,24 @@ const transformPlotlyJsonToGaugeProps = (input, colorMap, isDarkTheme)=>{
719
725
  variant: ((_firstData_gauge7 = firstData.gauge) === null || _firstData_gauge7 === void 0 ? void 0 : (_firstData_gauge_steps1 = _firstData_gauge7.steps) === null || _firstData_gauge_steps1 === void 0 ? void 0 : _firstData_gauge_steps1.length) ? 'multiple-segments' : 'single-segment'
720
726
  };
721
727
  };
728
+ const projectPolarToCartesian = (input)=>{
729
+ const projection = {
730
+ ...input
731
+ };
732
+ for(let sindex = 0; sindex < input.data.length; sindex++){
733
+ const series = input.data[sindex];
734
+ series.x = [];
735
+ series.y = [];
736
+ for(let ptindex = 0; ptindex < series.r.length; ptindex++){
737
+ const thetaRad = series.theta[ptindex] * Math.PI / 180;
738
+ const radius = series.r[ptindex];
739
+ series.x[ptindex] = radius * Math.cos(thetaRad);
740
+ series.y[ptindex] = radius * Math.sin(thetaRad);
741
+ }
742
+ projection.data[sindex] = series;
743
+ }
744
+ return projection;
745
+ };
722
746
  function isPlainObject(obj) {
723
747
  return Object.prototype.toString.call(obj) === '[object Object]' && Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty');
724
748
  }
@@ -789,7 +813,7 @@ const findBinIndex = (bins, value, isString)=>{
789
813
  if (typeof value === 'undefined' || value === null) {
790
814
  return -1;
791
815
  }
792
- return isString ? bins.findIndex((bin)=>bin.includes(value)) : bins.findIndex((bin)=>value >= bin.x0 && value < bin.x1);
816
+ return isString ? bins.findIndex((bin)=>bin.includes(value)) : bins.findIndex((bin, index)=>value >= bin.x0 && (index === bins.length - 1 ? value <= bin.x1 : value < bin.x1));
793
817
  };
794
818
  const getBinSize = (bin)=>{
795
819
  return bin.x1 - bin.x0;
@@ -817,15 +841,13 @@ const createBins = (data, binStart, binEnd, binSize)=>{
817
841
  minVal,
818
842
  maxVal
819
843
  ]);
820
- if (typeof binSize === 'number') {
821
- var _binSize_toString_split_;
844
+ if (typeof binSize === 'number' && binSize > 0) {
822
845
  const thresholds = [];
823
- let th = minVal;
824
- var _binSize_toString_split__length;
825
- const tolerance = 1 / Math.pow(10, (_binSize_toString_split__length = (_binSize_toString_split_ = binSize.toString().split('.')[1]) === null || _binSize_toString_split_ === void 0 ? void 0 : _binSize_toString_split_.length) !== null && _binSize_toString_split__length !== void 0 ? _binSize_toString_split__length : 0);
826
- while(maxVal + binSize - th > tolerance){
846
+ const precision = Math.max(getPrecision(minVal), getPrecision(binSize));
847
+ let th = precisionRound(minVal, precision);
848
+ while(th < precisionRound(maxVal + binSize, precision)){
827
849
  thresholds.push(th);
828
- th += binSize;
850
+ th = precisionRound(th + binSize, precision);
829
851
  }
830
852
  minVal = thresholds[0];
831
853
  maxVal = thresholds[thresholds.length - 1];
@@ -833,9 +855,12 @@ const createBins = (data, binStart, binEnd, binSize)=>{
833
855
  minVal,
834
856
  maxVal
835
857
  ]).thresholds(thresholds);
858
+ // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where
859
+ // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,
860
+ // but it is exclusive. To maintain consistent bin widths, remove the final bin,
861
+ // making the previous bin the last one, with both x0 and x1 inclusive.
862
+ return binGenerator(data).slice(0, -1);
836
863
  }
837
- // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and
838
- // can be ignored if the highest value is already included in the previous bin.
839
864
  return binGenerator(data);
840
865
  };
841
866
  const calculateHistFunc = (histfunc, bin)=>{
@@ -868,3 +893,12 @@ const calculateHistNorm = (histnorm, value, total, dx, dy = 1)=>{
868
893
  return value;
869
894
  }
870
895
  };
896
+ const getPrecision = (value)=>{
897
+ var _value_toString_split_;
898
+ var _value_toString_split__length;
899
+ return (_value_toString_split__length = (_value_toString_split_ = value.toString().split('.')[1]) === null || _value_toString_split_ === void 0 ? void 0 : _value_toString_split_.length) !== null && _value_toString_split__length !== void 0 ? _value_toString_split__length : 0;
900
+ };
901
+ const precisionRound = (value, precision)=>{
902
+ const factor = Math.pow(10, precision);
903
+ return Math.round(value * factor) / factor;
904
+ };
@@ -1 +1 @@
1
- {"version":3,"sources":["PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { 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} 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, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\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\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\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\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 for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\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)) {\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 transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\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 : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\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 let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\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 = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\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,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\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 chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\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 const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\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 };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): 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 isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\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 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 const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\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 value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\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 colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(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: getColor('Current', colorMap, isDarkTheme),\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 color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: 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 */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\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\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\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(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\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') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\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"],"names":["correctYearMonth","findArrayAttributes","getColor","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","min","max","yaxis2","range","secondaryYAxistitle","undefined","secondaryYScaleOptions","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","isYearArray","x","_series_x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","barGapMax","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","yValue","legendName","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","keys","isArrayOfType","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,8BAA8B,GAC9B,yBAAyB,GACzB,qDAAqD;;;;;;;;;;;IAmHxCA,gBAAAA;eAAAA;;IAgsBGC,mBAAAA;eAAAA;;IAtqBHC,QAAAA;eAAAA;;IAoEAC,+BAAAA;eAAAA;;IAmHAC,8BAAAA;eAAAA;;IAyZAC,+BAAAA;eAAAA;;IAxKAC,iCAAAA;eAAAA;;IApDAC,+CAAAA;eAAAA;;IAuKAC,gCAAAA;eAAAA;;IAtPAC,sCAAAA;eAAAA;;IAlEAC,6BAAAA;eAAAA;;IA7GAC,8BAAAA;eAAAA;;;;iEAlQU;yBAShB;yBACsC;wBAqBmB;2BAI3B;gCAmB9B;yBAC0C;AAOjD,MAAMC,cAAc;IAClBC,KAAK;QACHC,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAC,MAAM;QACJJ,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAE,UAAU;QACRL,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAG,SAAS;QACPN,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAI,aAAa;QACXP,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAK,OAAO;QACLR,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;AACF;AAEA,MAAMM,YAAY,CAACC,QAA2BC;IAC5C,OAAOD,OAAOE,IAAI,IAAI,CAAC,OAAO,EAAED,QAAQ,EAAE,CAAC;AAC7C;AAEA,SAASE,UAAUC,MAAmC;QAEaA,eAC5CA,eAAoCA,gBAAuBA,qBAAAA,gBAC3DA,eAAoCA,gBAAuBA,qBAAAA;QAFfA,oBACeA,0BACAA;IAHhF,MAAMC,SAAS;QACbC,YAAY,OAAOF,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQG,KAAK,AAALA,MAAU,WAAWH,OAAOG,KAAK,GAAGH,CAAAA,qBAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQG,KAAK,AAALA,MAAK,QAAbH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeI,IAAI,AAAJA,MAAI,QAAnBJ,uBAAAA,KAAAA,IAAAA,qBAAuB;QACtFK,YAAY,OAAOL,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQM,KAAK,AAALA,MAAK,QAAbN,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeG,KAAK,AAALA,MAAU,WAAWH,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQM,KAAK,AAALA,MAAK,QAAbN,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQM,KAAK,AAALA,MAAK,QAAbN,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAeG,KAAK,AAALA,MAAK,QAApBH,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAsBI,IAAI,AAAJA,MAAI,QAA1BJ,6BAAAA,KAAAA,IAAAA,2BAA8B;QAC5GO,YAAY,OAAOP,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,gBAAAA,OAAQQ,KAAK,AAALA,MAAK,QAAbR,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAeG,KAAK,AAALA,MAAU,WAAWH,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQQ,KAAK,AAALA,MAAK,QAAbR,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQQ,KAAK,AAALA,MAAK,QAAbR,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAeG,KAAK,AAALA,MAAK,QAApBH,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAsBI,IAAI,AAAJA,MAAI,QAA1BJ,6BAAAA,KAAAA,IAAAA,2BAA8B;IAC9G;IACA,OAAOC;AACT;AAEO,MAAM7B,mBAAmB,CAACqC;IAC/B,MAAMC,cAAc,IAAIC,OAAOC,WAAW;IAC1C,IAAIH,QAAQI,MAAM,GAAG,KAAKC,MAAMC,OAAO,CAACN,OAAO,CAAC,EAAE,GAAG;QACnD,MAAM,IAAIO,MAAM;IAClB;IACA,MAAMC,QAAQR,QAAqBS,GAAG,CAACC,CAAAA;QACrC,MAAMC,aAAa,CAAC,EAAED,mBAAmB,KAAK,EAAET,YAAY,CAAC;QAC7D,OAAOW,IAAAA,sBAAAA,EAAOD,cAAc,IAAIT,KAAKS,cAAc;IACrD;IACA,IAAK,IAAIE,IAAIL,MAAMJ,MAAM,GAAG,GAAGS,IAAI,GAAGA,IAAK;QACzC,MAAMC,eAAeN,KAAK,CAACK,EAAE,CAAEE,QAAQ;QACvC,MAAMC,gBAAgBR,KAAK,CAACK,IAAI,EAAE,CAAEE,QAAQ;QAC5C,MAAME,cAAcT,KAAK,CAACK,EAAE,CAAEV,WAAW;QACzC,MAAMe,eAAeV,KAAK,CAACK,IAAI,EAAE,CAAEV,WAAW;QAC9C,IAAIa,iBAAiBF,cAAc;YACjCN,KAAK,CAACK,IAAI,EAAE,CAAEM,WAAW,CAACX,KAAK,CAACK,EAAE,CAAEV,WAAW,KAAK;QACtD,OAAO,IAAIe,eAAeD,aAAa;YACrCT,KAAK,CAACK,IAAI,EAAE,CAAEM,WAAW,CAACF;QAC5B;IACF;IACAjB,UAAUA,QAAqBS,GAAG,CAAC,CAACW,OAAOhC;QACzC,OAAO,CAAC,EAAEgC,MAAM,KAAK,EAAEZ,KAAK,CAACpB,MAAM,CAAEe,WAAW,GAAG,CAAC;IACtD;IACA,OAAOH;AACT;AAEO,MAAMnC,WAAW,CACtBwD,aACAC,UACAC;IAEA,IAAI,CAACD,SAASE,OAAO,CAACC,GAAG,CAACJ,cAAc;QACtC,MAAMK,YAAYC,IAAAA,oBAAAA,EAAaL,SAASE,OAAO,CAACI,IAAI,GAAG,GAAG,GAAGL;QAC7DD,SAASE,OAAO,CAACK,GAAG,CAACR,aAAaK;QAClC,OAAOA;IACT;IAEA,OAAOJ,SAASE,OAAO,CAACM,GAAG,CAACT;AAC9B;AAEA,MAAMU,sBAAsB,CAAC5C;IAC3B,OAAOA,OAAOY,KAAK,KAAK;AAC1B;AAEA,MAAMiC,0BAA0B,CAC9BC,MACA1C,QACA2C,gBACAC;QA2BI5C,gBAOOA,iBAEIA,sBAAAA;IAlCf,IAAI6C,yBAAyB;IAC7B,IAAIC;IACJ,IAAIC;IAEJL,KAAKM,OAAO,CAAC,CAACpD;QACZ,IAAI4C,oBAAoB5C,SAAS;YAC/BiD,yBAAyB;YACzB,MAAMI,UAAUrD,OAAOsD,CAAC;YACxB,IAAID,SAAS;gBACXH,YAAYK,KAAKC,GAAG,IAAIH;gBACxBF,YAAYI,KAAKE,GAAG,IAAIJ;YAC1B;QACF;IACF;IAEA,IAAI,CAACJ,wBAAwB;QAC3B,OAAO,CAAC;IACV;IAEA,IAAI,OAAOC,cAAc,YAAY,OAAOH,mBAAmB,UAAU;QACvEG,YAAYK,KAAKC,GAAG,CAACN,WAAWH;IAClC;IACA,IAAI,OAAOI,cAAc,YAAY,OAAOH,mBAAmB,UAAU;QACvEG,YAAYI,KAAKE,GAAG,CAACN,WAAWH;IAClC;IACA,IAAI5C,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,iBAAAA,OAAQsD,MAAM,AAANA,MAAM,QAAdtD,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAgBuD,KAAK,EAAE;QACzBT,YAAY9C,OAAOsD,MAAM,CAACC,KAAK,CAAC,EAAE;QAClCR,YAAY/C,OAAOsD,MAAM,CAACC,KAAK,CAAC,EAAE;IACpC;IAEA,OAAO;QACLC,qBACE,OAAOxD,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kBAAAA,OAAQsD,MAAM,AAANA,MAAM,QAAdtD,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAgBG,KAAK,AAALA,MAAU,WAC7BH,OAAOsD,MAAM,CAACnD,KAAK,GACnB,OAAOH,CAAAA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,kBAAAA,OAAQsD,MAAM,AAANA,MAAM,QAAdtD,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,gBAAgBG,KAAK,AAALA,MAAK,QAArBH,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAuBI,IAAI,AAAJA,MAAS,WACvCJ,OAAOsD,MAAM,CAACnD,KAAK,CAACC,IAAI,GACxBqD;QACNC,wBAAwB;YACtBZ;YACAC;QACF;IACF;AACF;AAEO,MAAMxE,kCAAkC,CAC7CoF,OACA5B,UACAC;QAKA4B,mBAgBsBD,eACCA,gBAgBTA,gBACLA;IArCT,MAAMC,YAAYD,MAAMjB,IAAI,CAAC,EAAE;IAE/B,MAAMmB,uBAAuD,CAAC;IAC9DD,CAAAA,oBAAAA,UAAUE,MAAM,AAANA,MAAM,QAAhBF,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAkBZ,OAAO,CAAC,CAACe,OAAelE;YAGnB+D;QAFrB,MAAMI,QAAQ1F,SAASyF,OAAOhC,UAAUC;QACxC,iCAAiC;QACjC,MAAMiC,QAAQ,OAAA,CAAA,AAAOL,CAAAA,oBAAAA,UAAUM,MAAM,AAANA,MAAM,QAAhBN,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAkB,CAAC/D,MAAM,AAANA,MAAW,WAAY+D,UAAUM,MAAM,CAACrE,MAAM,GAAc;QAEpG,IAAI,CAACgE,oBAAoB,CAACE,MAAM,EAAE;YAChCF,oBAAoB,CAACE,MAAM,GAAG;gBAC5BI,QAAQJ;gBACRrB,MAAMuB;gBACND;YACF;QACF,OAAO;YACLH,oBAAoB,CAACE,MAAM,CAACrB,IAAI,IAAKuB;QACvC;IACF;QAEsBN;IAAtB,MAAMS,QAAgBT,CAAAA,sBAAAA,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK,AAALA,MAAK,QAAnBT,wBAAAA,KAAAA,IAAAA,sBAAuB;QACtBA;IAAvB,MAAMU,SAAiBV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;IAC/C,MAAMW,aAAsBV,UAAUW,QAAQ,GAC1C,CAAC;QAAC;QAAS;QAAW;KAAgB,CAACC,QAAQ,CAACZ,UAAUW,QAAQ,IAClE;IACJ,MAAME,wBAAgCH,aAAa,IAAI;IACvD,MAAMI,sBAA8B,KAAMJ,CAAAA,aAAa,IAAI,EAAA;IAC3D,MAAMK,cAAsBf,UAAUgB,IAAI,GACtChB,UAAUgB,IAAI,GAAIzB,CAAAA,KAAKC,GAAG,CAACgB,QAAQK,uBAAuBJ,SAASK,uBAAuB,CAAA,IAC1F;IACJ,MAAM,EAAExE,UAAU,EAAE,GAAGH,UAAU4D,MAAM3D,MAAM;IAE7C,OAAO;QACL0C,MAAM;YACJxC;YACA2E,WAAWC,OAAOZ,MAAM,CAACL;QAC3B;QACAkB,YAAYpB,CAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcqB,UAAU,AAAVA,MAAe,QAAQ,OAAO;QACxDZ,OAAK,AAAET,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcS,KAAK;QAC1BC;QACAM;QACAL;QACAW,qBAAqBrB,UAAUW,QAAQ,GAAG;YAAC;YAAW;SAAgB,CAACC,QAAQ,CAACZ,UAAUW,QAAQ,IAAI;IACxG;AACF;AAEO,MAAMxF,iCAAiC,CAC5C4E,OACA5B,UACAC,aACAkD;QA8CSvB,eACCA;IA7CV,MAAMwB,mBAAiE,CAAC;IACxE,IAAIpC,YAAY;IAChB,MAAMqC,uBAAuB3C,wBAAwBkB,MAAMjB,IAAI,EAAEiB,MAAM3D,MAAM;IAC7E,IAAI8C,YAAY;IAChBa,MAAMjB,IAAI,CAACM,OAAO,CAAC,CAACpD,QAAkByF;YAEnCzF;QADD,MAAM0F,kBAAkBC,IAAAA,2BAAAA,EAAY3F,OAAO4F,CAAC,GAAG,2DAA2D;QACzG5F,CAAAA,YAAAA,OAAO4F,CAAC,AAADA,MAAC,QAAR5F,cAAAA,KAAAA,IAAAA,KAAAA,IAAD6F,UAAuBzC,OAAO,CAAC,CAACwC,GAAoBE;gBAK5B9F;YAJtB,IAAI,CAACuF,gBAAgB,CAACK,EAAE,EAAE;gBACxBL,gBAAgB,CAACK,EAAE,GAAG;oBAAEG,YAAYL,kBAAkBE,EAAEI,QAAQ,KAAKJ;oBAAGX,WAAW,EAAE;oBAAEgB,UAAU,EAAE;gBAAC;YACtG;YACA,MAAM1B,SAAiBxE,UAAUC,QAAQyF;gBACnBzF;YAAtB,MAAMkG,OAAe,AAAClG,CAAAA,mBAAAA,CAAAA,YAAAA,OAAOsD,CAAC,AAADA,MAAC,QAARtD,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAAC8F,OAAO,AAAPA,MAAO,QAAlB9F,qBAAAA,KAAAA,IAAAA,mBAAiC;YACvD,IAAIA,OAAOmG,IAAI,KAAK,OAAO;gBACzB,MAAM/B,QAAQ1F,SAAS6F,QAAQpC,UAAUC;gBACzCmD,gBAAgB,CAACK,EAAE,CAACX,SAAS,CAACmB,IAAI,CAAC;oBACjC7B;oBACAzB,MAAMoD;oBACN9B;gBACF;gBACAjB,YAAYI,KAAKE,GAAG,CAACN,WAAW+C;YAClC,OAAO,IAAIlG,OAAOmG,IAAI,KAAK,aAAa,CAAC,CAACb,cAAc;gBACtD,MAAMlB,QAAQ1F,SAAS6F,QAAQpC,UAAUC;gBACzC,MAAMiE,cAAcC,eAAetG,OAAOuG,IAAI;gBAC9ChB,gBAAgB,CAACK,EAAE,CAACK,QAAQ,CAAEG,IAAI,CAAC;oBACjC7B;oBACAjB,GAAG4C;oBACH9B;oBACA,GAAIiC,cAAc;wBAAEA;oBAAY,IAAI,CAAC,CAAC;oBACtCG,oBAAoB5D,oBAAoB5C;gBAC1C;gBACA,IAAI,CAAC4C,oBAAoB5C,SAAS;oBAChCmD,YAAYI,KAAKE,GAAG,CAACN,WAAW+C;gBAClC;YACF;YAEA/C,YAAYI,KAAKE,GAAG,CAACN,WAAW+C;YAChChD,YAAYK,KAAKC,GAAG,CAACN,WAAWgD;QAClC;IACF;IAEA,MAAM,EAAE5F,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;QAK3D2D;IAHV,OAAO;QACLjB,MAAMoC,OAAOZ,MAAM,CAACiB;QACpBf,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC0C,UAAU;QACVtD;QACAD;QACA5C;QACAG;QACAE;QACA+F,MAAM;QACN,GAAGlB,oBAAoB;QACvBmB,iBAAiB;QACjBC,WAAW;IACb;AACF;AAEO,MAAMhI,iCAAiC,CAC5CmF,OACA5B,UACAC;QA6BS2B,eACCA;IA5BV,MAAMwB,mBAAgE,CAAC;IACvE,MAAMC,uBAAuB3C,wBAAwBkB,MAAMjB,IAAI,EAAEiB,MAAM3D,MAAM,EAAE,GAAG;IAClF2D,MAAMjB,IAAI,CAACM,OAAO,CAAC,CAACpD,QAAkByF;YACnCzF;QAAAA,CAAAA,YAAAA,OAAO4F,CAAC,AAADA,MAAC,QAAR5F,cAAAA,KAAAA,IAAAA,KAAAA,IAAD6F,UAAuBzC,OAAO,CAAC,CAACwC,GAAoBE;YAClD,IAAI,CAACP,gBAAgB,CAACK,EAAE,EAAE;gBACxBL,gBAAgB,CAACK,EAAE,GAAG;oBAAE1F,MAAM0F,EAAEI,QAAQ;oBAAIhG,QAAQ,EAAE;gBAAC;YACzD;YACA,IAAIA,OAAOmG,IAAI,KAAK,OAAO;oBAMhBnG;gBALT,MAAMuE,SAAiBxE,UAAUC,QAAQyF;gBACzC,MAAMrB,QAAQ1F,SAAS6F,QAAQpC,UAAUC;oBAIhCpC;gBAFTuF,gBAAgB,CAACK,EAAE,CAAC5F,MAAM,CAACoG,IAAI,CAAC;oBAC9BS,KAAKtC;oBACLzB,MAAM,AAAC9C,CAAAA,mBAAAA,CAAAA,YAAAA,OAAOsD,CAAC,AAADA,MAAC,QAARtD,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAAC8F,OAAO,AAAPA,MAAO,QAAlB9F,qBAAAA,KAAAA,IAAAA,mBAAiC;oBACxC8G,kBAAkBlB;oBAClBxB;oBACAG;oBACAiC,oBAAoB5D,oBAAoB5C;gBAC1C;YACF;QACF;IACF;IAEA,MAAM,EAAEM,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;QAK3D2D;IAHV,OAAO;QACLjB,MAAMoC,OAAOZ,MAAM,CAACiB;QACpBf,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC0C,UAAU;QACVnG;QACAG;QACAE;QACA+F,MAAM;QACN,GAAGlB,oBAAoB;QACvBmB,iBAAiB;IACnB;AACF;AAEO,MAAMzH,gCAAgC,CAC3C6E,OACA5B,UACAC;QAqDS2B,eACCA;IApDV,MAAMgD,UAAuC,EAAE;IAE/ChD,MAAMjB,IAAI,CAACM,OAAO,CAAC,CAACpD,QAA2BgH;YAMVhH,eAAqBA,gBAAmBA;QAL3E,IAAI,CAACA,OAAO4F,CAAC,EAAE;YACb;QACF;QAEA,MAAMqB,YAAYC,cAAclH,OAAO4F,CAAC;QACxC,MAAMuB,QAAQC,WAAWpH,OAAO4F,CAAC,EAAA,AAAE5F,CAAAA,gBAAAA,OAAOqH,KAAK,AAALA,MAAK,QAAZrH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcsH,KAAK,EAAA,AAAEtH,CAAAA,iBAAAA,OAAOqH,KAAK,AAALA,MAAK,QAAZrH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcuH,GAAG,EAAA,AAAEvH,CAAAA,iBAAAA,OAAOqH,KAAK,AAALA,MAAK,QAAZrH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcyC,IAAI;QAC7F,MAAM+E,QAAoBL,MAAM7F,GAAG,CAAC,IAAM,EAAE;QAC5C,IAAImG,QAAQ;QAEZzH,OAAO4F,CAAC,CAACxC,OAAO,CAAC,CAACsE,MAAMzH;YACtB,MAAM0H,SAASC,aAAaT,OAAOO,MAAgCT;YACnE,IAAIU,WAAW,CAAC,GAAG;oBACG3H;oBAAAA;gBAApBwH,KAAK,CAACG,OAAO,CAACvB,IAAI,CAAC,AAACpG,CAAAA,kBAAAA,CAAAA,YAAAA,OAAOsD,CAAC,AAADA,MAAC,QAARtD,cAAAA,KAAAA,IAAAA,KAAAA,IAAAA,SAAU,CAACC,MAAM,AAANA,MAAM,QAAjBD,oBAAAA,KAAAA,IAAAA,kBAAmD;YACzE;QACF;QAEA,MAAMsD,IAAIkE,MAAMlG,GAAG,CAACuG,CAAAA;YAClB,MAAM3B,OAAO4B,kBAAkB9H,OAAO+H,QAAQ,EAAEF;YAChDJ,SAASvB;YACT,OAAOA;QACT;QAEAiB,MAAM/D,OAAO,CAAC,CAACyE,KAAK5H;YAClB,MAAMsE,SAAiBxE,UAAUC,QAAQgH;YACzC,MAAM5C,QAAgB1F,SAAS6F,QAAQpC,UAAUC;YACjD,MAAM8D,OAAO8B,kBACXhI,OAAOiI,QAAQ,EACf3E,CAAC,CAACrD,MAAM,EACRwH,OACAR,YAAYY,IAAI5G,MAAM,GAAGiH,WAAWL;YAGtCd,QAAQX,IAAI,CAAC;gBACXR,GAAGqB,YAAYY,IAAIM,IAAI,CAAC,QAAQC,aAAaP;gBAC7CvE,GAAG4C;gBACH3B;gBACAH;gBACA,GAAI6C,YACA,CAAC,IACD;oBAAEH,kBAAkB,CAAC,CAAC,EAAEe,IAA6BQ,EAAE,CAAC,GAAG,EAAER,IAA6BS,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;YACvG;QACF;IACF;IAEA,MAAM,EAAEhI,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;QAK3D2D;IAHV,OAAO;QACLjB,MAAMiE;QACNvC,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChCzD;QACAG;QACAE;QACA+F,MAAM;QACNC,iBAAiB;IACnB;AACF;AAEO,MAAM1H,yCAAyC,CACpD8E,OACAwE,aACApG,UACAC;IAEA,MAAMoD,uBAAuB3C,wBAC3BkB,MAAMjB,IAAI,EACViB,MAAM3D,MAAM,EACZmI,cAAc,IAAI1E,WAClB0E,cAAc,IAAI1E;IAEpB,IAAI6C,OAAe;IACnB,MAAMzB,YAA+BlB,MAAMjB,IAAI,CAACxB,GAAG,CAAC,CAACtB,QAAkBC;QACrE,MAAMY,UAAUb,OAAO4F,CAAC;QACxB,MAAM4C,WAAW,OAAO3H,OAAO,CAAC,EAAE,KAAK;QACvC,MAAM4H,UAAUC,IAAAA,2BAAAA,EAAY7H;QAC5B,MAAM8H,YAAYC,IAAAA,6BAAAA,EAAc/H;QAChC,MAAM0D,SAAiBxE,UAAUC,QAAQC;QACzC,MAAM4I,YAAYnK,SAAS6F,QAAQpC,UAAUC;QAC7CsE,OAAO1G,OAAO8I,IAAI,KAAK,YAAY,YAAY;QAC/C,MAAMzC,cAAcC,eAAetG,OAAOuG,IAAI;QAE9C,OAAO;YACLhC;YACAzB,MAAMjC,QAAQS,GAAG,CAAC,CAACsE,GAAGlE;oBAGF1B,gBAEPA;uBALwB;oBACnC4F,GAAG4C,WAAYC,UAAU,IAAI1H,KAAK6E,KAAe+C,YAAYI,WAAWnD,KAAeA,IAAKA;oBAC5FtC,GAAGtD,OAAOsD,CAAC,CAAC5B,EAAE;oBACd,GAAIR,MAAMC,OAAO,CAAA,AAACnB,CAAAA,iBAAAA,OAAOgJ,MAAM,AAANA,MAAM,QAAbhJ,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAeyC,IAAI,IACjC;wBAAEwG,YAAYjJ,OAAOgJ,MAAM,CAACvG,IAAI,CAACf,EAAE;oBAAC,IACpC,OAAA,CAAA,AAAO1B,CAAAA,kBAAAA,OAAOgJ,MAAM,AAANA,MAAM,QAAbhJ,oBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,gBAAeyC,IAAI,AAAJA,MAAS,WAC/B;wBAAEwG,YAAYjJ,OAAOgJ,MAAM,CAACvG,IAAI;oBAAC,IACjC,CAAC,CAAC;gBACR;;YACA2B,OAAOyE;YACP,GAAIxC,cAAc;gBAAEA;YAAY,IAAI,CAAC,CAAC;YACtCG,oBAAoB5D,oBAAoB5C;QAC1C;IACF;IAEA,MAAMkJ,gBAAgBC,IAAAA,+BAAAA,EAAqBlE;IAC3C,MAAM,EAAE3E,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;IAErE,MAAMgJ,aAAyB;QAC7B9I;QACA+I,eAAepE;IACjB;IAEA,IAAIsD,aAAa;YAQNxE,eACCA;YAAAA;QARV,OAAO;YACLjB,MAAMsG;YACNE,qBAAqB;YACrB7I;YACAE;YACA,GAAG6E,oBAAoB;YACvBkB;YACAlC,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;YAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;YAChC4C,iBAAiB;YACjB4C,QAAQ;QACV;IACF,OAAO;YAUIxF,gBACCA;YAAAA;QAVV,OAAO;YACLjB,MAAMsG;YACNE,qBAAqB;YACrB7I;YACAE;YACA,GAAG6E,oBAAoB;YACvBgE,cAAc;YACdtG,WAAWgG,cAAcO,UAAU;YACnCtG,WAAW+F,cAAcQ,QAAQ;YACjClF,OAAK,AAAET,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcS,KAAK;YAC1BC,QAAQV,CAAAA,wBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,0BAAAA,KAAAA,IAAAA,wBAAwB;YAChC4C,iBAAiB;YACjB4C,QAAQ;QACV;IACF;AACF;AAEO,MAAMxK,kDAAkD,CAC7DgF,OACA5B,UACAC;QAmB4B2B,eACLA,sBAAAA,gBACCA,uBAAAA,gBAebA,sBAAAA,gBACHA,uBAAAA,gBACAA,4BAAAA,uBAAAA,gBAICA;IAxCT,MAAMkB,YAAmDlB,MAAMjB,IAAI,CAChExB,GAAG,CAAC,CAACtB,QAAkBC;QACtB,OAAOD,OAAQsD,CAAC,CAAahC,GAAG,CAAC,CAACqI,QAAgBjI;gBAC7B1B;YAAnB,MAAM4J,aAAa5J,CAAAA,eAAAA,OAAOE,IAAI,AAAJA,MAAI,QAAXF,iBAAAA,KAAAA,IAAAA,eAAe2J;YAClC,MAAMvF,QAAQ1F,SAASkL,YAAYzH,UAAUC;YAC7C,OAAO;gBACLwD,GAAG5F,OAAO4F,CAAC,CAAClE,EAAE;gBACd4B,GAAGqG;gBACHpF,QAAQqF;gBACRxF;YACF;QACF;IACF,GACCyF,IAAI,GACL,uEAAuE;KACtEC,OAAO;QAEkB/F;IAA5B,MAAMgG,cAAsBhG,CAAAA,uBAAAA,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAC7BA;IAAvB,MAAMiG,SAAiBjG,CAAAA,yBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAciG,MAAM,AAANA,MAAM,QAApBjG,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAsBkG,CAAC,AAADA,MAAC,QAAvBlG,2BAAAA,KAAAA,IAAAA,yBAA2B;QAC1BA;IAAxB,MAAMmG,UAAkBnG,CAAAA,2BAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAciG,MAAM,AAANA,MAAM,QAApBjG,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAsBoG,GAAG,AAAHA,MAAG,QAAzBpG,6BAAAA,KAAAA,IAAAA,2BAA6B;IACrD,MAAMqG,kBAA0BL,cAAcC,SAASE;IACvD,MAAMG,eAAe,IAAIC,IAAIrF,UAAU3D,GAAG,CAACiJ,CAAAA,IAAKA,EAAEjH,CAAC,GAAGb,IAAI,IAAI;IAC9D,MAAM+H,gBAAgB;IACtB,MAAMC,YAAY,IAAK,CAAA,IAAID,gBAAgBH,YAAAA;IAC3C,MAAMK,YAAYN,kBAAmBC,CAAAA,eAAgB,CAAA,IAAII,SAAAA,CAAQ;IAEjE,MAAM,EAAEnK,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;IAErE,OAAO;QACL0C,MAAMmC;QACN3E;QACAG;QACAE;QACAiD,qBACE,OAAA,CAAA,AAAOG,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,uBAAAA,eAAcL,MAAM,AAANA,MAAM,QAApBK,yBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,qBAAsBxD,KAAK,AAALA,MAAU,WAAA,AACnCwD,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAcL,MAAM,AAANA,MAAM,QAApBK,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,sBAAsBxD,KAAK,GAC3BwD,CAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,eAAcL,MAAM,AAANA,MAAM,QAApBK,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,6BAAAA,sBAAsBxD,KAAK,AAALA,MAAK,QAA3BwD,+BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAA6BvD,IAAI,AAAJA,KAAQ;QAC3CkK;QACAC,iBAAiB;QACjBlG,QAAQsF;QACRvF,OAAK,AAAET,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcS,KAAK;QAC1BmC,iBAAiB;QACjBiE,qBAAqB;QACrBC,wBAAwB;IAC1B;AACF;AAEO,MAAM/L,oCAAoC,CAACiF;QA2GvCA,eACCA;IA3GV,MAAMC,YAAYD,MAAMjB,IAAI,CAAC,EAAE;IAC/B,MAAMgI,oBAA6C,EAAE;IACrD,IAAIC,OAAOC,OAAOC,iBAAiB;IACnC,IAAIC,OAAOF,OAAOG,iBAAiB;IAEnC,IAAInH,UAAUmC,IAAI,KAAK,eAAe;YAGEnC,kBAAwBA,mBAAsBA,mBAC9CA,kBAAwBA,mBAAsBA,mBAIpFA;QAPA,MAAMiD,YAAYC,cAAclD,UAAU4B,CAAC;QAC3C,MAAMwF,YAAYlE,cAAclD,UAAUV,CAAC;QAC3C,MAAM6D,QAAQC,WAAWpD,UAAU4B,CAAC,EAAA,AAAE5B,CAAAA,mBAAAA,UAAUqD,KAAK,AAALA,MAAK,QAAfrD,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBsD,KAAK,EAAA,AAAEtD,CAAAA,oBAAAA,UAAUqD,KAAK,AAALA,MAAK,QAAfrD,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBuD,GAAG,EAAA,AAAEvD,CAAAA,oBAAAA,UAAUqD,KAAK,AAALA,MAAK,QAAfrD,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBvB,IAAI;QACzG,MAAM+E,QAAQJ,WAAWpD,UAAUV,CAAC,EAAA,AAAEU,CAAAA,mBAAAA,UAAUqH,KAAK,AAALA,MAAK,QAAfrH,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBsD,KAAK,EAAA,AAAEtD,CAAAA,oBAAAA,UAAUqH,KAAK,AAALA,MAAK,QAAfrH,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBuD,GAAG,EAAA,AAAEvD,CAAAA,oBAAAA,UAAUqH,KAAK,AAALA,MAAK,QAAfrH,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,kBAAiBvB,IAAI;QACzG,MAAM6I,QAAsB9D,MAAMlG,GAAG,CAAC,IAAM6F,MAAM7F,GAAG,CAAC,IAAM,EAAE;QAC9D,IAAImG,QAAQ;QAEZzD,CAAAA,eAAAA,UAAU4B,CAAC,AAADA,MAAC,QAAX5B,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaZ,OAAO,CAAC,CAACsE,MAAMzH;gBAEU+D;YADpC,MAAMuH,UAAU3D,aAAaT,OAAOO,MAAgCT;YACpE,MAAMuE,UAAU5D,aAAaJ,OAAAA,AAAOxD,CAAAA,eAAAA,UAAUV,CAAC,AAADA,MAAC,QAAXU,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,CAAC/D,MAAM,EAAwCmL;YAEhG,IAAIG,YAAY,CAAC,KAAKC,YAAY,CAAC,GAAG;oBACNxH;oBAAAA;gBAA9BsH,KAAK,CAACE,QAAQ,CAACD,QAAQ,CAACnF,IAAI,CAAC,AAACpC,CAAAA,qBAAAA,CAAAA,eAAAA,UAAUyH,CAAC,AAADA,MAAC,QAAXzH,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAa,CAAC/D,MAAM,AAANA,MAAM,QAApB+D,uBAAAA,KAAAA,IAAAA,qBAAsD;YACtF;QACF;QAEA,MAAMyH,IAAIH,MAAMhK,GAAG,CAACoK,CAAAA;YAClB,OAAOA,IAAIpK,GAAG,CAACuG,CAAAA;gBACb,MAAM8D,OAAO7D,kBAAkB9D,UAAU+D,QAAQ,EAAEF;gBACnDJ,SAASkE;gBACT,OAAOA;YACT;QACF;QAEAxE,MAAM/D,OAAO,CAAC,CAACwI,MAAMC;YACnBrE,MAAMpE,OAAO,CAAC,CAAC0I,MAAMC;gBACnB,MAAMJ,OAAO3D,kBACXhE,UAAUiE,QAAQ,EAClBwD,CAAC,CAACM,KAAK,CAACF,KAAK,EACbpE,OACAR,YAAY2E,KAAK3K,MAAM,GAAGiH,WAAW0D,OACrCR,YAAYU,KAAK7K,MAAM,GAAGiH,WAAW4D;gBAGvChB,kBAAkB1E,IAAI,CAAC;oBACrBR,GAAGqB,YAAY2E,KAAKzD,IAAI,CAAC,QAAQC,aAAawD;oBAC9CtI,GAAG8H,YAAYU,KAAK3D,IAAI,CAAC,QAAQC,aAAa0D;oBAC9CzH,OAAOsH;oBACPK,UAAUL;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BZ,OAAOxH,KAAKC,GAAG,CAACuH,MAAMY;oBACtBT,OAAO3H,KAAKE,GAAG,CAACyH,MAAMS;gBACxB;YACF;QACF;IACF,OAAO;YACJ3H;QAAAA,CAAAA,gBAAAA,UAAU4B,CAAC,AAADA,MAAC,QAAX5B,kBAAAA,KAAAA,IAAAA,KAAAA,IAADiI,cAA0B7I,OAAO,CAAC,CAACsE,MAAMmE;gBACvC7H;YAAAA,CAAAA,eAAAA,UAAUV,CAAC,AAADA,MAAC,QAAXU,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,aAAaZ,OAAO,CAAC,CAAC8C,MAAW6F;oBAClBG,mBAAClI,cAGTD,qBAAAA,eACAA,qBAAAA;gBAJL,MAAM4H,OAAAA,AAAQ3H,CAAAA,eAAAA,UAAUyH,CAAC,AAADA,MAAC,QAAXzH,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,AAADkI,CAAAA,oBAAAC,YAA6B,CAACJ,KAAK,AAALA,MAAK,QAAnCG,sBAAA,KAAA,IAAA,KAAA,IAAAA,iBAAqC,CAACL,KAAK;gBAExDf,kBAAkB1E,IAAI,CAAC;oBACrBR,GAAG7B,CAAAA,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,cAAcrD,KAAK,AAALA,MAAK,QAAnBqD,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAqBoC,IAAI,AAAJA,MAAS,SAAUuB,OAAgBA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ;oBACnEpE,GAAGS,CAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,eAAcnD,KAAK,AAALA,MAAK,QAAnBmD,wBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,oBAAqBoC,IAAI,AAAJA,MAAS,SAAUD,OAAgBA;oBAC3D7B,OAAOsH;oBACPK,UAAUL;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BZ,OAAOxH,KAAKC,GAAG,CAACuH,MAAMY;oBACtBT,OAAO3H,KAAKE,GAAG,CAACyH,MAAMS;gBACxB;YACF;QACF;IACF;QAGU3H;IADV,MAAMoI,cAAgC;QACpC7H,QAAQP,CAAAA,kBAAAA,UAAU9D,IAAI,AAAJA,MAAI,QAAd8D,oBAAAA,KAAAA,IAAAA,kBAAkB;QAC1BlB,MAAMgI;QACNzG,OAAO;IACT;IAEA,gDAAgD;IAChD,MAAMgI,gBAAgB;QAACtB;QAAOG,CAAAA,OAAOH,IAAAA,IAAQ;QAAGG;KAAK;IACrD,MAAMoB,eAAe;QACnBC,IAAAA,yBAAAA,EAAkBC,sBAAAA,CAAeC,MAAM;QACvCF,IAAAA,yBAAAA,EAAkBC,sBAAAA,CAAeE,MAAM;QACvCH,IAAAA,yBAAAA,EAAkBC,sBAAAA,CAAeG,MAAM;KACxC;IACD,MAAMC,4BAAsC1L,MAAMC,OAAO,CAAC6C,UAAU6I,UAAU,IAC1E7I,UAAW6I,UAAU,CAA6BvL,GAAG,CAACwL,CAAAA,MAAOA,GAAG,CAAC,EAAE,GAAI5B,CAAAA,OAAOH,IAAAA,IAAQA,QACtFsB;IAEJ,MAAMU,2BAAqC7L,MAAMC,OAAO,CAAC6C,UAAU6I,UAAU,IACzE7I,UAAW6I,UAAU,CAA6BvL,GAAG,CAACwL,CAAAA,MAAOA,GAAG,CAAC,EAAE,IACnER;IAEJ,MAAM,EAAEhM,UAAU,EAAEG,UAAU,EAAEE,UAAU,EAAE,GAAGR,UAAU4D,MAAM3D,MAAM;QAa3D2D;IAXV,OAAO;QACLjB,MAAM;YAACsJ;SAAY;QACnBQ;QACAG;QACA5H,YAAY;QACZwF,iBAAiB;QACjBrK;QACAG;QACAE;QACAqM,WAAW;QACXxI,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC4C,iBAAiB;QACjBiE,qBAAqB;QACrBC,wBAAwB;IAC1B;AACF;AAEO,MAAM7L,mCAAmC,CAC9C+E,OACA5B,UACAC;QAcS6K,aA6BAlJ,eACCA;IA1CV,MAAM,EAAEmJ,IAAI,EAAED,IAAI,EAAE,GAAGlJ,MAAMjB,IAAI,CAAC,EAAE;QAChBoK;IAApB,MAAMC,aAAa,AAACD,CAAAA,CAAAA,cAAAA,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAM7I,KAAK,AAALA,MAAK,QAAX6I,gBAAAA,KAAAA,IAAAA,cAAe,EAAE,AAAF,EAChC5L,GAAG,CAAC,CAAC8L,KAAanN,QAAmB,CAAA;YACpCoE,OAAO+I;YACPC,QAAQH,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMG,MAAM,CAAEpN,MAAM;YAC5BqN,QAAQJ,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMI,MAAM,CAAErN,MAAM;QAC9B,CAAA,GACA,wDAAwD;IACxD,gFAAgF;KAC/EsN,MAAM,CAAC3H,CAAAA,IAAKA,EAAEyH,MAAM,IAAI,KAAKzH,EAAE0H,MAAM,IAAI,KAAK1H,EAAEyH,MAAM,KAAKzH,EAAE0H,MAAM;IAEtE,MAAME,kBAAkB;QACtBC,OAAK,AAAER,CAAAA,cAAAA,KAAK9I,KAAK,AAALA,MAAK,QAAV8I,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY3L,GAAG,CAAC,CAAC6C,OAAelE;YACrC,MAAMmE,QAAQ1F,SAASyF,OAAOhC,UAAUC;YAExC,OAAO;gBACLsL,QAAQzN;gBACRC,MAAMiE;gBACNC;YACF;QACF;QACAuJ,OAAOR,WAAW7L,GAAG,CAAC,CAACsM,WAAgB3N;YACrC,OAAO;gBACL,GAAG2N,SAAS;YACd;QACF;IACF;IAEA,+CAA+C;IAC/C,YAAY;IACZ,kFAAkF;IAClF,OAAO;IACP,KAAK;IAEL,MAAM,EAAEtN,UAAU,EAAE,GAAGH,UAAU4D,MAAM3D,MAAM;QAQnC2D;IANV,OAAO;QACLjB,MAAM;YACJxC;YACAuN,iBAAiBL;QACnB;QACAhJ,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;IAGlC;AACF;AAEO,MAAMlF,kCAAkC,CAC7CkF,OACA5B,UACAC;QAIiB4B,wBAAAA,kBAaqBA,6BAAAA,uBAAAA,mBAKvBA,8BAAAA,wBAAAA,mBAOXA,kBA2BeA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBACjDA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBAE3DD,eACCA,gBAGCC,yBAAAA;IA7DX,MAAMA,YAAYD,MAAMjB,IAAI,CAAC,EAAE;QAeOkB,8BAAxBA,kBAKCA,+BAA6CA;IAlB5D,MAAM8J,WAAW9J,CAAAA,CAAAA,mBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,iBAAiBgK,KAAK,AAALA,MAAK,QAAtBhK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,uBAAwB/C,MAAM,AAANA,IACrC+C,UAAU+J,KAAK,CAACC,KAAK,CAAC1M,GAAG,CAAC,CAAC2M,MAAWhO;YAK5BgO,aAAkBA;QAJ1B,MAAM1J,SAAS0J,KAAK/N,IAAI,IAAI,CAAC,QAAQ,EAAED,QAAQ,EAAE,CAAC;QAClD,MAAMmE,QAAQ1F,SAAS6F,QAAQpC,UAAUC;QACzC,OAAO;YACLmC;YACA9B,MAAMwL,CAAAA,CAAAA,cAAAA,KAAKtK,KAAK,AAALA,MAAK,QAAVsK,gBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,WAAY,CAAC,EAAE,AAAF,IAAE,CAAA,AAAGA,CAAAA,eAAAA,KAAKtK,KAAK,AAALA,MAAK,QAAVsK,iBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,YAAY,CAAC,EAAE,AAAF;YACrC7J;QACF;IACF,KACA;QACE;YACEG,QAAQ;YACR9B,MAAMuB,CAAAA,mBAAAA,UAAUK,KAAK,AAALA,MAAK,QAAfL,qBAAAA,KAAAA,IAAAA,mBAAmB,IAAKA,CAAAA,CAAAA,+BAAAA,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,wBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,0BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,8BAAAA,sBAAuBL,KAAK,AAALA,MAAK,QAA5BK,gCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,2BAA8B,CAAC,EAAE,AAAF,MAAE,QAAjCA,iCAAAA,KAAAA,IAAAA,+BAAqC,CAAA;YACnEI,OAAO1F,SAAS,WAAWyD,UAAUC;QACvC;QACA;YACEmC,QAAQ;YACR9B,MAAM,AAACuB,CAAAA,CAAAA,gCAAAA,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuBL,KAAK,AAALA,MAAK,QAA5BK,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,AAAF,MAAE,QAAjCA,kCAAAA,KAAAA,IAAAA,gCAAqC,GAAA,IAAQA,CAAAA,CAAAA,oBAAAA,UAAUK,KAAK,AAALA,MAAK,QAAfL,sBAAAA,KAAAA,IAAAA,oBAAmB,CAAA;YACvEI,OAAOoI,sBAAAA,CAAe2B,QAAQ;QAChC;KACD;IAEL,IAAIC;IACJ,yCAAyC;IACzC,IAAA,AAAIpK,CAAAA,mBAAAA,UAAUqK,KAAK,AAALA,MAAK,QAAfrK,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBsK,SAAS,EAAE;QAC9B,MAAMC,OAAOvK,UAAUK,KAAK,GAAGL,UAAUqK,KAAK,CAACC,SAAS;QACxD,IAAIC,QAAQ,GAAG;YACbH,WAAW,CAAC,OAAO,EAAEG,KAAK,CAAC;QAC3B,wEAAwE;QACxE,yBAAyB;QAC3B,OAAO;YACLH,WAAW,CAAC,OAAO,EAAE7K,KAAKiL,GAAG,CAACD,MAAM,CAAC;QACrC,sEAAsE;QACtE,yBAAyB;QAC3B;IACF;IAEA,8CAA8C;IAC9C,gBAAgB;IAChB,2BAA2B;IAC3B,OAAO;IACP,KAAK;IAEL,MAAM,EAAEjO,UAAU,EAAE,GAAGH,UAAU4D,MAAM3D,MAAM;QAI/B4D,mBAQJD;IAVV,OAAO;QACL+J;QACAW,YAAYzK,CAAAA,oBAAAA,UAAUK,KAAK,AAALA,MAAK,QAAfL,sBAAAA,KAAAA,IAAAA,oBAAmB;QAC/B1D;QACA8N;QACA,2BAA2B;QAC3BM,UAAU,OAAA,CAAA,AAAO1K,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuBL,KAAK,AAALA,MAAK,QAA5BK,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,AAAF,MAAO,WAAA,AAAWA,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuBL,KAAK,AAALA,MAAK,QAA5BK,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,GAAGH;QACtG8K,UAAU,OAAA,CAAA,AAAO3K,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuBL,KAAK,AAALA,MAAK,QAA5BK,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,AAAF,MAAO,WAAA,AAAWA,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,yBAAAA,kBAAiBkK,IAAI,AAAJA,MAAI,QAArBlK,2BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,+BAAAA,uBAAuBL,KAAK,AAALA,MAAK,QAA5BK,iCAAAA,KAAAA,IAAAA,KAAAA,IAAAA,4BAA8B,CAAC,EAAE,GAAGH;QACtG+K,kBAAkB;gBAAM5K;gBAAAA;mBAAAA,CAAAA,4BAAAA,CAAAA,mBAAAA,UAAUK,KAAK,AAALA,MAAK,QAAfL,qBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,iBAAiBgC,QAAQ,EAAA,MAAA,QAAzBhC,8BAAAA,KAAAA,IAAAA,4BAA+B;QAAC;QACxDQ,OAAK,AAAET,CAAAA,gBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcS,KAAK;QAC1BC,QAAQV,CAAAA,uBAAAA,CAAAA,iBAAAA,MAAM3D,MAAM,AAANA,MAAM,QAAZ2D,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcU,MAAM,AAANA,MAAM,QAApBV,yBAAAA,KAAAA,IAAAA,uBAAwB;QAChC,OAAO;QACP,UAAU;QACV8K,SAAS7K,CAAAA,CAAAA,oBAAAA,UAAU+J,KAAK,AAALA,MAAK,QAAf/J,sBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,CAAAA,0BAAAA,kBAAiBgK,KAAK,AAALA,MAAK,QAAtBhK,4BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,wBAAwB/C,MAAM,AAANA,IAAS,sBAAsB;IAClE;AACF;AAEA,SAAS6N,cAAcC,GAAQ;IAC7B,OACE7J,OAAO8J,SAAS,CAAChJ,QAAQ,CAACiJ,IAAI,CAACF,SAAS,qBACxC7J,OAAOgK,cAAc,CAACH,KAAKI,cAAc,CAAC;AAE9C;AAEA,IAAIC,kBAAyB,EAAE;AAC/B,IAAIC,QAAe,EAAE;AACrB,IAAIC,eAAsB,EAAE;AAC5B,IAAIC,eAAoBC;AAMjB,SAAS/Q,oBAAoBgR,KAAU;IAC5C,sCAAsC;IACtCC,eAAeH,eAAe,GAAG;AACnC;AAEA,SAASG,eAAeC,SAAc,EAAEjO,CAAS,EAAEkO,WAAgB;IACjE,IAAIC,OAAOF,SAAS,CAACN,KAAK,CAAC3N,EAAE,CAAC;IAC9B,IAAIoO,iBAAiBF,cAAcP,KAAK,CAAC3N,EAAE;IAC3C,IAAIA,MAAM2N,MAAMpO,MAAM,GAAG,GAAG;QAC1B,IAAI8O,IAAAA,mCAAAA,EAAoBF,OAAO;YAC7BT,gBAAgBhJ,IAAI,CAACoJ,eAAeM;QACtC;IACF,OAAO;QACL,IAAIR,YAAY,CAAC5N,EAAE,EAAE;YACnB,IAAIR,MAAMC,OAAO,CAAC0O,OAAO;gBACvB,IAAK,IAAIG,IAAI,GAAGA,IAAIH,KAAK5O,MAAM,EAAE+O,IAAK;oBACpC,IAAIlB,cAAce,IAAI,CAACG,EAAE,GAAG;wBAC1BN,eAAeG,IAAI,CAACG,EAAE,EAAEtO,IAAI,GAAGoO,iBAAiB,MAAME,IAAI;oBAC5D;gBACF;YACF;QACF,OAAO,IAAIlB,cAAce,OAAO;YAC9BH,eAAeG,MAAMnO,IAAI,GAAGoO,iBAAiB;QAC/C;IACF;AACF;AAEA,SAASxJ,eAAeC,IAAsC;IAC5D,IAAI,CAACA,MAAM;QACT;IACF;IAEA,IAAIF,cAAoC,CAAC;IACzC,IAAIE,KAAK7G,IAAI,EAAE;QACb2G,cAAc;YAAE,GAAGA,WAAW;YAAE,GAAGjH,WAAW,CAACmH,KAAK7G,IAAI,CAAC;QAAC;IAC5D;IAEA,OAAQ6G,KAAK0J,KAAK;QAChB,KAAK;YACH,MAAMC,YAAY,OAAO3J,KAAK2J,SAAS,KAAK,WAAW3J,KAAK2J,SAAS,GAAG;YACxE7J,YAAY8J,KAAK,GAAGC,sBAAAA,CAAgBC,OAAO,CAAC,IAAIH,YAAY;YAC5D;QACF,KAAK;YACH7J,YAAY8J,KAAK,GAAG;YACpB;QACF,KAAK;YACH9J,YAAY8J,KAAK,GAAG;YACpB;QACF,KAAK;YACH9J,YAAY8J,KAAK,GAAG;YACpB;QACF;YACE9J,YAAY8J,KAAK,GAAG;IACxB;IAEA,OAAOjL,OAAOoL,IAAI,CAACjK,aAAapF,MAAM,GAAG,IAAIoF,cAAcxC;AAC7D;AAEA,MAAMqD,gBAAgB,CAAC4F;IACrB,OAAOyD,IAAAA,6BAAAA,EAAczD,KAAK,CAACzI,QAAe,OAAOA,UAAU;AAC7D;AAEA,yEAAyE;AACzE,MAAMuD,eAAe,CACnB4I,MACAnM,OACAmE;IAEA,IAAI,OAAOnE,UAAU,eAAeA,UAAU,MAAM;QAClD,OAAO,CAAC;IACV;IAEA,OAAOmE,WACHgI,KAAqBC,SAAS,CAAC5I,CAAAA,MAAOA,IAAIjD,QAAQ,CAACP,UACnDmM,KAAgCC,SAAS,CAAC5I,CAAAA,MAAOxD,SAAqBwD,IAAIQ,EAAE,IAAKhE,QAAoBwD,IAAIS,EAAE;AACjH;AAEA,MAAMJ,aAAa,CAACL;IAClB,OAAOA,IAAIS,EAAE,GAAIT,IAAIQ,EAAE;AACzB;AAEA,MAAMD,eAAe,CAACP;IACpB,OAAO,AAACA,CAAAA,IAAIS,EAAE,GAAIT,IAAIQ,EAAE,AAAFA,IAAO;AAC/B;AAEA,kCAAkC;AAClC,MAAMjB,aAAa,CACjBtE,MACA4N,UACAC,QACAC;IAEA,IAAI,CAAC9N,QAAQA,KAAK7B,MAAM,KAAK,GAAG;QAC9B,OAAO,EAAE;IACX;IAEA,IAAIiG,cAAcpE,OAAO;QACvB,MAAM+N,aAAa3P,MAAM4P,IAAI,CAAC,IAAIxG,IAAIxH;QACtC,MAAMwE,QAAQ,OAAOoJ,aAAa,WAAWnN,KAAKwN,IAAI,CAACL,YAAY;QACnE,MAAMM,OAAO,OAAOL,WAAW,WAAWpN,KAAK0N,KAAK,CAACN,UAAU,IAAIE,WAAW5P,MAAM;QACpF,MAAMgN,OAAO,OAAO2C,YAAY,WAAWA,UAAU;QAErD,OAAOM,IAAAA,cAAAA,EAAQ5J,OAAO0J,MAAM/C,MAAM3M,GAAG,CAACI,CAAAA,IAAKmP,WAAWM,KAAK,CAACzP,GAAGA,IAAIuM;IACrE;IAEA,MAAMmD,QAAQC,IAAAA,oBAAAA,IACXC,MAAM,CAACC,IAAAA,eAAAA,EAAiBzO,OACxB0O,IAAI;IACP,IAAI,CAACC,QAAQC,OAAO,GAAGN,MAAME,MAAM;IAEnCG,SAAS,OAAOf,aAAa,WAAWA,WAAWe;IACnDC,SAAS,OAAOf,WAAW,WAAWA,SAASe;IAE/C,MAAMC,eAAeC,IAAAA,YAAAA,IAAQN,MAAM,CAAC;QAACG;QAAQC;KAAO;IAEpD,IAAI,OAAOd,YAAY,UAAU;YAGIA;QAFnC,MAAMiB,aAAuB,EAAE;QAC/B,IAAIC,KAAKL;YAC0Bb;QAAnC,MAAMmB,YAAY,IAAIxO,KAAKyO,GAAG,CAAC,IAAIpB,CAAAA,kCAAAA,CAAAA,2BAAAA,QAAQ5K,QAAQ,GAAGiM,KAAK,CAAC,IAAI,CAAC,EAAE,AAAF,MAAE,QAAhCrB,6BAAAA,KAAAA,IAAAA,KAAAA,IAAAA,yBAAkC3P,MAAM,AAANA,MAAM,QAAxC2P,oCAAAA,KAAAA,IAAAA,kCAA4C;QAE/E,MAAOc,SAASd,UAAUkB,KAAKC,UAAW;YACxCF,WAAWzL,IAAI,CAAC0L;YAChBA,MAAMlB;QACR;QAEAa,SAASI,UAAU,CAAC,EAAE;QACtBH,SAASG,UAAU,CAACA,WAAW5Q,MAAM,GAAG,EAAE;QAC1C0Q,aAAaL,MAAM,CAAC;YAACG;YAAQC;SAAO,EAAEG,UAAU,CAACA;IACnD;IAEA,kGAAkG;IAClG,+EAA+E;IAC/E,OAAOF,aAAa7O;AACtB;AAEA,MAAMgF,oBAAoB,CAACC,UAA4CF;IACrE,OAAQE;QACN,KAAK;YACH,OAAOmK,IAAAA,YAAAA,EAAMrK;QACf,KAAK;YACH,OAAOA,IAAI5G,MAAM,KAAK,IAAI,IAAIiR,IAAAA,YAAAA,EAAMrK,OAAOA,IAAI5G,MAAM;QACvD,KAAK;gBACIkR;YAAP,OAAOA,CAAAA,SAAAA,IAAAA,YAAAA,EAAMtK,IAAAA,MAAAA,QAANsK,WAAAA,KAAAA,IAAAA,SAAc;QACvB,KAAK;gBACIC;YAAP,OAAOA,CAAAA,SAAAA,IAAAA,YAAAA,EAAMvK,IAAAA,MAAAA,QAANuK,WAAAA,KAAAA,IAAAA,SAAc;QACvB;YACE,OAAOvK,IAAI5G,MAAM;IACrB;AACF;AAEA,MAAM+G,oBAAoB,CACxBC,UACA5D,OACAoD,OACA4K,IACAC,KAAa,CAAC;IAEd,OAAQrK;QACN,KAAK;YACH,OAAOR,UAAU,IAAI,IAAIpD,QAASoD,QAAS;QAC7C,KAAK;YACH,OAAOA,UAAU,IAAI,IAAIpD,QAAQoD;QACnC,KAAK;YACH,OAAO4K,KAAKC,OAAO,IAAI,IAAIjO,QAASgO,CAAAA,KAAKC,EAAAA;QAC3C,KAAK;YACH,OAAO7K,QAAQ4K,KAAKC,OAAO,IAAI,IAAIjO,QAASoD,CAAAA,QAAQ4K,KAAKC,EAAAA;QAC3D;YACE,OAAOjO;IACX;AACF"}
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 */\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 { 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} 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, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isYearArray,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\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\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\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\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 for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\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)) {\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 transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\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 : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\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 let yMinValue = 0;\n input.data.forEach((series: PlotData, index1: number) => {\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: isXYearCategory ? x.toString() : x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n barGapMax: 2,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\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(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\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 = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\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,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\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 chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\n .reverse()\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\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 const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\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 };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): 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 isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\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 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 const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\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 value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\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 colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(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: getColor('Current', colorMap, isDarkTheme),\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 color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n // sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n // const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n // sublabelColor = color;\n }\n }\n\n // const styles: GaugeChartProps['styles'] = {\n // sublabel: {\n // fill: sublabelColor,\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series: PlotData = input.data[sindex] as PlotData;\n series.x = [];\n series.y = [];\n for (let ptindex = 0; ptindex < series.r.length; ptindex++) {\n const thetaRad = ((series.theta[ptindex] as number) * Math.PI) / 180;\n const radius = series.r[ptindex] as number;\n series.x[ptindex] = radius * Math.cos(thetaRad);\n series.y[ptindex] = radius * Math.sin(thetaRad);\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: 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 */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\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\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\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(getPrecision(minVal), getPrecision(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 getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","DataVizPalette","getColorFromToken","getNextColor","findNumericMinMaxOfY","isArrayOfType","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isYearArray","curveCardinal","d3CurveCardinal","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","getColor","legendLabel","colorMap","isDarkTheme","current","has","nextColor","size","set","get","usesSecondaryYScale","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","forEach","yValues","y","Math","yaxis2","secondaryYAxistitle","undefined","secondaryYScaleOptions","transformPlotlyJsonToDonutProps","input","firstData","mapLegendToDataPoint","labels","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","transformPlotlyJsonToVSBCProps","fallbackVSBC","mapXToDataPoints","secondaryYAxisValues","index1","isXYearCategory","x","index2","xAxisPoint","toString","lineData","yVal","type","push","lineOptions","getLineOptions","line","useSecondaryYScale","barWidth","mode","hideTickOverlap","barGapMax","transformPlotlyJsonToGVBCProps","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToScatterChartProps","isAreaChart","isString","isXDate","isXNumber","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","chartProps","lineChartData","supportNegativeData","useUTC","roundedTicks","startValue","endValue","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","legendName","reverse","flat","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","projectPolarToCartesian","projection","sindex","ptindex","r","thetaRad","theta","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","slice","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round"],"mappings":"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"}
@@ -131,6 +131,7 @@ function cloneLegendsToSVG(chartContainer, svgWidth, svgHeight) {
131
131
  textOffset = 28;
132
132
  } else {
133
133
  legendText = legendButtons[i];
134
+ // eslint-disable-next-line no-console
134
135
  console.log(legendText.textContent);
135
136
  textOffset = 8;
136
137
  }