@fluentui/react-charts 1.2.0 → 9.0.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 (364) hide show
  1. package/CHANGELOG.md +177 -15
  2. package/LICENSE +11 -17
  3. package/README.md +174 -23
  4. package/dist/index.d.ts +2143 -0
  5. package/lib/CartesianChart.js +1 -0
  6. package/lib/CartesianChart.js.map +1 -0
  7. package/lib/DeclarativeChart.js +1 -0
  8. package/lib/DeclarativeChart.js.map +1 -0
  9. package/lib/DonutChart.js +1 -0
  10. package/lib/DonutChart.js.map +1 -0
  11. package/lib/HorizontalBarChart.js +1 -0
  12. package/lib/HorizontalBarChart.js.map +1 -0
  13. package/lib/Legends.js +1 -0
  14. package/lib/Legends.js.map +1 -0
  15. package/lib/LineChart.js +1 -0
  16. package/lib/LineChart.js.map +1 -0
  17. package/lib/Popover.js +1 -0
  18. package/lib/Popover.js.map +1 -0
  19. package/lib/ResponsiveContainer.js +1 -0
  20. package/lib/ResponsiveContainer.js.map +1 -0
  21. package/lib/Sparkline.js +1 -0
  22. package/lib/Sparkline.js.map +1 -0
  23. package/lib/VerticalBarChart.js +1 -0
  24. package/lib/VerticalBarChart.js.map +1 -0
  25. package/lib/components/CommonComponents/CartesianChart.js +462 -0
  26. package/lib/components/CommonComponents/CartesianChart.js.map +1 -0
  27. package/lib/components/CommonComponents/CartesianChart.types.js +1 -0
  28. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -0
  29. package/lib/components/CommonComponents/ChartPopover.js +187 -0
  30. package/lib/components/CommonComponents/ChartPopover.js.map +1 -0
  31. package/lib/components/CommonComponents/ChartPopover.types.js +1 -0
  32. package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -0
  33. package/lib/components/CommonComponents/index.js +4 -0
  34. package/lib/components/CommonComponents/index.js.map +1 -0
  35. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +229 -0
  36. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -0
  37. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +178 -0
  38. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -0
  39. package/lib/components/DeclarativeChart/DeclarativeChart.js +150 -0
  40. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -0
  41. package/lib/components/DeclarativeChart/PlotlySchema.js +7 -0
  42. package/lib/components/DeclarativeChart/PlotlySchema.js.map +1 -0
  43. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +400 -0
  44. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -0
  45. package/lib/components/DeclarativeChart/imageExporter.js +221 -0
  46. package/lib/components/DeclarativeChart/imageExporter.js.map +1 -0
  47. package/lib/components/DeclarativeChart/index.js +1 -0
  48. package/lib/components/DeclarativeChart/index.js.map +1 -0
  49. package/lib/components/DonutChart/Arc/Arc.js +110 -0
  50. package/lib/components/DonutChart/Arc/Arc.js.map +1 -0
  51. package/lib/components/DonutChart/Arc/Arc.types.js +1 -0
  52. package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -0
  53. package/lib/components/DonutChart/Arc/index.js +2 -0
  54. package/lib/components/DonutChart/Arc/index.js.map +1 -0
  55. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +54 -0
  56. package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -0
  57. package/lib/components/DonutChart/DonutChart.js +291 -0
  58. package/lib/components/DonutChart/DonutChart.js.map +1 -0
  59. package/lib/components/DonutChart/DonutChart.types.js +1 -0
  60. package/lib/components/DonutChart/DonutChart.types.js.map +1 -0
  61. package/lib/components/DonutChart/Pie/Pie.js +72 -0
  62. package/lib/components/DonutChart/Pie/Pie.js.map +1 -0
  63. package/lib/components/DonutChart/Pie/Pie.types.js +1 -0
  64. package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -0
  65. package/lib/components/DonutChart/Pie/index.js +2 -0
  66. package/lib/components/DonutChart/Pie/index.js.map +1 -0
  67. package/lib/components/DonutChart/Pie/usePieStyles.styles.js +44 -0
  68. package/lib/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -0
  69. package/lib/components/DonutChart/index.js +3 -0
  70. package/lib/components/DonutChart/index.js.map +1 -0
  71. package/lib/components/DonutChart/useDonutChartStyles.styles.js +58 -0
  72. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -0
  73. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +402 -0
  74. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
  75. package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js +6 -0
  76. package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -0
  77. package/lib/components/HorizontalBarChart/index.js +3 -0
  78. package/lib/components/HorizontalBarChart/index.js.map +1 -0
  79. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +163 -0
  80. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -0
  81. package/lib/components/Legends/Legends.js +302 -0
  82. package/lib/components/Legends/Legends.js.map +1 -0
  83. package/lib/components/Legends/Legends.types.js +1 -0
  84. package/lib/components/Legends/Legends.types.js.map +1 -0
  85. package/lib/components/Legends/OverflowMenu.js +25 -0
  86. package/lib/components/Legends/OverflowMenu.js.map +1 -0
  87. package/lib/components/Legends/index.js +3 -0
  88. package/lib/components/Legends/index.js.map +1 -0
  89. package/lib/components/Legends/shape.js +35 -0
  90. package/lib/components/Legends/shape.js.map +1 -0
  91. package/lib/components/Legends/useLegendsStyles.styles.js +147 -0
  92. package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -0
  93. package/lib/components/LineChart/LineChart.js +1026 -0
  94. package/lib/components/LineChart/LineChart.js.map +1 -0
  95. package/lib/components/LineChart/LineChart.types.js +3 -0
  96. package/lib/components/LineChart/LineChart.types.js.map +1 -0
  97. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +119 -0
  98. package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -0
  99. package/lib/components/LineChart/eventAnnotation/LabelLink.js +57 -0
  100. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -0
  101. package/lib/components/LineChart/eventAnnotation/Textbox.js +40 -0
  102. package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -0
  103. package/lib/components/LineChart/index.js +4 -0
  104. package/lib/components/LineChart/index.js.map +1 -0
  105. package/lib/components/LineChart/useLineChartStyles.styles.js +65 -0
  106. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -0
  107. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +65 -0
  108. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -0
  109. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js +1 -0
  110. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -0
  111. package/lib/components/ResponsiveContainer/index.js +1 -0
  112. package/lib/components/ResponsiveContainer/index.js.map +1 -0
  113. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +23 -0
  114. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +1 -0
  115. package/lib/components/Sparkline/Sparkline.js +119 -0
  116. package/lib/components/Sparkline/Sparkline.js.map +1 -0
  117. package/lib/components/Sparkline/Sparkline.types.js +4 -0
  118. package/lib/components/Sparkline/Sparkline.types.js.map +1 -0
  119. package/lib/components/Sparkline/index.js +3 -0
  120. package/lib/components/Sparkline/index.js.map +1 -0
  121. package/lib/components/Sparkline/useSparklineStyles.styles.js +49 -0
  122. package/lib/components/Sparkline/useSparklineStyles.styles.js.map +1 -0
  123. package/lib/components/VerticalBarChart/VerticalBarChart.js +849 -0
  124. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -0
  125. package/lib/components/VerticalBarChart/VerticalBarChart.types.js +4 -0
  126. package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -0
  127. package/lib/components/VerticalBarChart/index.js +3 -0
  128. package/lib/components/VerticalBarChart/index.js.map +1 -0
  129. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +74 -0
  130. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -0
  131. package/lib/index.js +12 -8
  132. package/lib/index.js.map +1 -1
  133. package/lib/types/DataPoint.js +3 -0
  134. package/lib/types/DataPoint.js.map +1 -0
  135. package/lib/types/EventAnnotation.js +1 -0
  136. package/lib/types/EventAnnotation.js.map +1 -0
  137. package/lib/types/LegendDataItem.js +1 -0
  138. package/lib/types/LegendDataItem.js.map +1 -0
  139. package/lib/types/index.js +2 -2
  140. package/lib/types/index.js.map +1 -1
  141. package/lib/utilities/FocusableTooltipText.js +65 -0
  142. package/lib/utilities/FocusableTooltipText.js.map +1 -0
  143. package/lib/utilities/KeyCodes.js +8 -0
  144. package/lib/utilities/KeyCodes.js.map +1 -0
  145. package/lib/utilities/SVGTooltipText.js +138 -0
  146. package/lib/utilities/SVGTooltipText.js.map +1 -0
  147. package/lib/utilities/async-utils.js +380 -0
  148. package/lib/utilities/async-utils.js.map +1 -0
  149. package/lib/utilities/colors.js +249 -0
  150. package/lib/utilities/colors.js.map +1 -0
  151. package/lib/utilities/getWindow.js +25 -0
  152. package/lib/utilities/getWindow.js.map +1 -0
  153. package/lib/utilities/index.js +3 -0
  154. package/lib/utilities/index.js.map +1 -0
  155. package/lib/utilities/locale-util.js +15 -0
  156. package/lib/utilities/locale-util.js.map +1 -0
  157. package/lib/utilities/overflow-utils.js +27 -0
  158. package/lib/utilities/overflow-utils.js.map +1 -0
  159. package/lib/utilities/test-data.js +276 -0
  160. package/lib/utilities/test-data.js.map +1 -0
  161. package/lib/utilities/utilities.js +1215 -0
  162. package/lib/utilities/utilities.js.map +1 -0
  163. package/lib/utilities/vbc-utils.js +27 -0
  164. package/lib/utilities/vbc-utils.js.map +1 -0
  165. package/lib-commonjs/CartesianChart.js +6 -0
  166. package/lib-commonjs/CartesianChart.js.map +1 -0
  167. package/lib-commonjs/DeclarativeChart.js +6 -0
  168. package/lib-commonjs/DeclarativeChart.js.map +1 -0
  169. package/lib-commonjs/DonutChart.js +6 -0
  170. package/lib-commonjs/DonutChart.js.map +1 -0
  171. package/lib-commonjs/HorizontalBarChart.js +6 -0
  172. package/lib-commonjs/HorizontalBarChart.js.map +1 -0
  173. package/lib-commonjs/Legends.js +6 -0
  174. package/lib-commonjs/Legends.js.map +1 -0
  175. package/lib-commonjs/LineChart.js +6 -0
  176. package/lib-commonjs/LineChart.js.map +1 -0
  177. package/lib-commonjs/Popover.js +6 -0
  178. package/lib-commonjs/Popover.js.map +1 -0
  179. package/lib-commonjs/ResponsiveContainer.js +6 -0
  180. package/lib-commonjs/ResponsiveContainer.js.map +1 -0
  181. package/lib-commonjs/Sparkline.js +6 -0
  182. package/lib-commonjs/Sparkline.js.map +1 -0
  183. package/lib-commonjs/VerticalBarChart.js +6 -0
  184. package/lib-commonjs/VerticalBarChart.js.map +1 -0
  185. package/lib-commonjs/components/CommonComponents/CartesianChart.js +469 -0
  186. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -0
  187. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js +6 -0
  188. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -0
  189. package/lib-commonjs/components/CommonComponents/ChartPopover.js +197 -0
  190. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -0
  191. package/lib-commonjs/components/CommonComponents/ChartPopover.types.js +4 -0
  192. package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -0
  193. package/lib-commonjs/components/CommonComponents/index.js +9 -0
  194. package/lib-commonjs/components/CommonComponents/index.js.map +1 -0
  195. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +356 -0
  196. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -0
  197. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +261 -0
  198. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -0
  199. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +158 -0
  200. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -0
  201. package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js +10 -0
  202. package/lib-commonjs/components/DeclarativeChart/PlotlySchema.js.map +1 -0
  203. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +445 -0
  204. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -0
  205. package/lib-commonjs/components/DeclarativeChart/imageExporter.js +231 -0
  206. package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -0
  207. package/lib-commonjs/components/DeclarativeChart/index.js +6 -0
  208. package/lib-commonjs/components/DeclarativeChart/index.js.map +1 -0
  209. package/lib-commonjs/components/DonutChart/Arc/Arc.js +117 -0
  210. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -0
  211. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js +4 -0
  212. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -0
  213. package/lib-commonjs/components/DonutChart/Arc/index.js +7 -0
  214. package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -0
  215. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +83 -0
  216. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -0
  217. package/lib-commonjs/components/DonutChart/DonutChart.js +298 -0
  218. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -0
  219. package/lib-commonjs/components/DonutChart/DonutChart.types.js +6 -0
  220. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -0
  221. package/lib-commonjs/components/DonutChart/Pie/Pie.js +79 -0
  222. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -0
  223. package/lib-commonjs/components/DonutChart/Pie/Pie.types.js +4 -0
  224. package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -0
  225. package/lib-commonjs/components/DonutChart/Pie/index.js +7 -0
  226. package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -0
  227. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +61 -0
  228. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -0
  229. package/lib-commonjs/components/DonutChart/index.js +8 -0
  230. package/lib-commonjs/components/DonutChart/index.js.map +1 -0
  231. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +82 -0
  232. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -0
  233. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +408 -0
  234. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
  235. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js +17 -0
  236. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -0
  237. package/lib-commonjs/components/HorizontalBarChart/index.js +8 -0
  238. package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -0
  239. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +251 -0
  240. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -0
  241. package/lib-commonjs/components/Legends/Legends.js +313 -0
  242. package/lib-commonjs/components/Legends/Legends.js.map +1 -0
  243. package/lib-commonjs/components/Legends/Legends.types.js +6 -0
  244. package/lib-commonjs/components/Legends/Legends.types.js.map +1 -0
  245. package/lib-commonjs/components/Legends/OverflowMenu.js +36 -0
  246. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -0
  247. package/lib-commonjs/components/Legends/index.js +8 -0
  248. package/lib-commonjs/components/Legends/index.js.map +1 -0
  249. package/lib-commonjs/components/Legends/shape.js +46 -0
  250. package/lib-commonjs/components/Legends/shape.js.map +1 -0
  251. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +304 -0
  252. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -0
  253. package/lib-commonjs/components/LineChart/LineChart.js +1032 -0
  254. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -0
  255. package/lib-commonjs/components/LineChart/LineChart.types.js +6 -0
  256. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -0
  257. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +129 -0
  258. package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -0
  259. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +68 -0
  260. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -0
  261. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +51 -0
  262. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -0
  263. package/lib-commonjs/components/LineChart/index.js +9 -0
  264. package/lib-commonjs/components/LineChart/index.js.map +1 -0
  265. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +96 -0
  266. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -0
  267. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +76 -0
  268. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -0
  269. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js +6 -0
  270. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -0
  271. package/lib-commonjs/components/ResponsiveContainer/index.js +6 -0
  272. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -0
  273. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +47 -0
  274. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +1 -0
  275. package/lib-commonjs/components/Sparkline/Sparkline.js +125 -0
  276. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -0
  277. package/lib-commonjs/components/Sparkline/Sparkline.types.js +7 -0
  278. package/lib-commonjs/components/Sparkline/Sparkline.types.js.map +1 -0
  279. package/lib-commonjs/components/Sparkline/index.js +8 -0
  280. package/lib-commonjs/components/Sparkline/index.js.map +1 -0
  281. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +77 -0
  282. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -0
  283. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +851 -0
  284. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -0
  285. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js +7 -0
  286. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -0
  287. package/lib-commonjs/components/VerticalBarChart/index.js +8 -0
  288. package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -0
  289. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +117 -0
  290. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -0
  291. package/lib-commonjs/index.js +17 -0
  292. package/lib-commonjs/index.js.map +1 -0
  293. package/lib-commonjs/types/DataPoint.js +6 -0
  294. package/lib-commonjs/types/DataPoint.js.map +1 -0
  295. package/lib-commonjs/types/EventAnnotation.js +6 -0
  296. package/lib-commonjs/types/EventAnnotation.js.map +1 -0
  297. package/lib-commonjs/types/LegendDataItem.js +4 -0
  298. package/lib-commonjs/types/LegendDataItem.js.map +1 -0
  299. package/lib-commonjs/types/index.js +7 -0
  300. package/lib-commonjs/types/index.js.map +1 -0
  301. package/lib-commonjs/utilities/FocusableTooltipText.js +75 -0
  302. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -0
  303. package/lib-commonjs/utilities/KeyCodes.js +18 -0
  304. package/lib-commonjs/utilities/KeyCodes.js.map +1 -0
  305. package/lib-commonjs/utilities/SVGTooltipText.js +148 -0
  306. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -0
  307. package/lib-commonjs/utilities/async-utils.js +382 -0
  308. package/lib-commonjs/utilities/async-utils.js.map +1 -0
  309. package/lib-commonjs/utilities/colors.js +270 -0
  310. package/lib-commonjs/utilities/colors.js.map +1 -0
  311. package/lib-commonjs/utilities/getWindow.js +28 -0
  312. package/lib-commonjs/utilities/getWindow.js.map +1 -0
  313. package/lib-commonjs/utilities/index.js +8 -0
  314. package/lib-commonjs/utilities/index.js.map +1 -0
  315. package/lib-commonjs/utilities/locale-util.js +25 -0
  316. package/lib-commonjs/utilities/locale-util.js.map +1 -0
  317. package/lib-commonjs/utilities/overflow-utils.js +36 -0
  318. package/lib-commonjs/utilities/overflow-utils.js.map +1 -0
  319. package/lib-commonjs/utilities/test-data.js +324 -0
  320. package/lib-commonjs/utilities/test-data.js.map +1 -0
  321. package/lib-commonjs/utilities/utilities.js +1184 -0
  322. package/lib-commonjs/utilities/utilities.js.map +1 -0
  323. package/lib-commonjs/utilities/vbc-utils.js +45 -0
  324. package/lib-commonjs/utilities/vbc-utils.js.map +1 -0
  325. package/package.json +80 -72
  326. package/CHANGELOG.json +0 -65
  327. package/lib/chart/chart-legend.d.ts +0 -6
  328. package/lib/chart/chart-legend.js +0 -445
  329. package/lib/chart/chart-legend.js.map +0 -1
  330. package/lib/chart/chart-render.d.ts +0 -3
  331. package/lib/chart/chart-render.js +0 -50
  332. package/lib/chart/chart-render.js.map +0 -1
  333. package/lib/chart/chart.d.ts +0 -3
  334. package/lib/chart/chart.js +0 -10
  335. package/lib/chart/chart.js.map +0 -1
  336. package/lib/chart/index.d.ts +0 -1
  337. package/lib/chart/index.js +0 -2
  338. package/lib/chart/index.js.map +0 -1
  339. package/lib/index.d.ts +0 -7
  340. package/lib/lib/builder.d.ts +0 -89
  341. package/lib/lib/builder.js +0 -379
  342. package/lib/lib/builder.js.map +0 -1
  343. package/lib/lib/datasets.d.ts +0 -123
  344. package/lib/lib/datasets.js +0 -285
  345. package/lib/lib/datasets.js.map +0 -1
  346. package/lib/lib/patterns.d.ts +0 -43
  347. package/lib/lib/patterns.js +0 -433
  348. package/lib/lib/patterns.js.map +0 -1
  349. package/lib/lib/plugins.d.ts +0 -11
  350. package/lib/lib/plugins.js +0 -403
  351. package/lib/lib/plugins.js.map +0 -1
  352. package/lib/lib/settings.d.ts +0 -12
  353. package/lib/lib/settings.js +0 -368
  354. package/lib/lib/settings.js.map +0 -1
  355. package/lib/lib/storybook.d.ts +0 -11
  356. package/lib/lib/storybook.js +0 -13
  357. package/lib/lib/storybook.js.map +0 -1
  358. package/lib/lib/utils.d.ts +0 -34
  359. package/lib/lib/utils.js +0 -253
  360. package/lib/lib/utils.js.map +0 -1
  361. package/lib/types/index.d.ts +0 -1
  362. package/lib/types/types.d.ts +0 -101
  363. package/lib/types/types.js +0 -41
  364. package/lib/types/types.js.map +0 -1
@@ -0,0 +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 { bin as d3Bin, extent as d3Extent, sum as d3Sum, min as d3Min, max as d3Max, merge as d3Merge } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format, precisionFixed as d3PrecisionFixed } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport { ChartDataPoint, ChartProps, LineChartPoints, VerticalBarChartDataPoint } from '../../types/DataPoint';\nimport { LineChartProps } from '../LineChart/index';\nimport { getNextColor } from '../../utilities/colors';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport { Layout, PlotlySchema, PieData, PlotData } from './PlotlySchema';\nimport type { Datum, TypedArray } from './PlotlySchema';\nimport { timeParse } from 'd3-time-format';\n\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst SUPPORTED_PLOT_TYPES = ['pie', 'bar', 'scatter', 'heatmap', 'sankey', 'indicator', 'histogram'];\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;\nconst isDate = (value: any): boolean => {\n const parsedDate = new Date(Date.parse(value));\n if (isNaN(parsedDate.getTime())) {\n return false;\n }\n const parsedYear = parsedDate.getFullYear();\n const yearInString = /\\b\\d{4}\\b/.test(value);\n if (!yearInString && (parsedYear === 2000 || parsedYear === 2001)) {\n return false;\n }\n return true;\n};\n\nconst isNumber = (value: any): boolean => !isNaN(parseFloat(value)) && isFinite(value);\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nconst isArrayOfType = (\n plotCoordinates: Datum[] | Datum[][] | TypedArray | undefined,\n typeCheck: (datum: any, ...args: any[]) => boolean,\n ...args: any[]\n): boolean => {\n if (!isArrayOrTypedArray(plotCoordinates)) {\n return false;\n }\n\n if (plotCoordinates!.length === 0) {\n return false;\n }\n\n if (Array.isArray(plotCoordinates![0])) {\n // Handle 2D array\n return (plotCoordinates as Datum[][]).every(innerArray => innerArray.every(datum => typeCheck(datum, ...args)));\n } else {\n // Handle 1D array\n return (plotCoordinates as Datum[]).every(datum => typeCheck(datum, ...args));\n }\n};\n\nexport const isDateArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isDate);\n};\n\nexport const isNumberArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isNumber);\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nexport const isLineData = (data: Partial<PlotData>): boolean => {\n return (\n !SUPPORTED_PLOT_TYPES.includes(`${data.type}`) &&\n Array.isArray(data.x) &&\n isArrayOfType(data.y, (value: any) => typeof value === 'number') &&\n data.x.length > 0 &&\n data.x.length === data.y!.length\n );\n};\n\nconst invalidate2Dseries = (series: PlotData, chartType: string): void => {\n if (series.x?.length > 0 && Array.isArray(series.x[0])) {\n throw new Error(`transform to ${chartType}:: 2D x array not supported`);\n }\n if (series.y?.length > 0 && Array.isArray(series.y[0])) {\n throw new Error(`transform to ${chartType}:: 2D y array not supported`);\n }\n};\n\nconst getLegend = (series: 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 updateXValues = (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 getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\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 donutData = firstData.labels?.map((label: string, index: number): ChartDataPoint => {\n const color = getColor(label, colorMap, isDarkTheme);\n return {\n legend: label,\n data: firstData.values?.[index] as number, //ToDo how to handle string data?\n color,\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: donutData,\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : 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: PlotData, index: number) => {\n invalidate2Dseries(series, 'VBC');\n\n if (!series.x) {\n return;\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(series.x as number[]) as [number, number])\n .nice();\n let [xMin, xMax] = scale.domain();\n\n xMin = typeof series.xbins?.start === 'number' ? series.xbins.start : xMin;\n xMax = typeof series.xbins?.end === 'number' ? series.xbins.end : xMax;\n\n const bin = d3Bin().domain([xMin, xMax]);\n\n if (typeof series.xbins?.size === 'number') {\n const thresholds: number[] = [];\n let th = xMin;\n const precision = d3PrecisionFixed(series.xbins.size);\n const format = d3Format(`.${precision}f`);\n\n while (th < xMax + series.xbins.size) {\n thresholds.push(parseFloat(format(th)));\n th += series.xbins.size;\n }\n\n xMin = thresholds[0];\n xMax = thresholds[thresholds.length - 1];\n bin.domain([xMin, xMax]).thresholds(thresholds);\n }\n\n const buckets = bin(series.x as number[]);\n // If the start or end of xbins is specified, then the number of datapoints may become less than x.length\n const totalDataPoints = d3Merge(buckets).length;\n\n buckets.forEach(bucket => {\n const legend: string = getLegend(series, index);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n let y = bucket.length;\n\n if (series.histnorm === 'percent') {\n y = (bucket.length / totalDataPoints) * 100;\n } else if (series.histnorm === 'probability') {\n y = bucket.length / totalDataPoints;\n } else if (series.histnorm === 'density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (bucket.x1! - bucket.x0!);\n } else if (series.histnorm === 'probability density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (totalDataPoints * (bucket.x1! - bucket.x0!));\n } else if (series.histfunc === 'sum') {\n y = d3Sum(bucket);\n } else if (series.histfunc === 'avg') {\n y = bucket.length === 0 ? 0 : d3Sum(bucket) / bucket.length;\n } else if (series.histfunc === 'min') {\n y = d3Min(bucket)!;\n } else if (series.histfunc === 'max') {\n y = d3Max(bucket)!;\n }\n\n vbcData.push({\n x: (bucket.x1! + bucket.x0!) / 2,\n y,\n legend,\n color,\n xAxisCalloutData: `[${bucket.x0} - ${bucket.x1})`,\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n // width: layout?.width,\n // height: layout?.height,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\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 => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n const chartData: LineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n invalidate2Dseries(series, 'Scatter');\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 secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\n\n return {\n legend,\n ...(series.line?.dash && dashOptions[series.line.dash]\n ? { lineOptions: { ...dashOptions[series.line.dash] } }\n : {}),\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 })),\n color: lineColor,\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 return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n hideTickOverlap: true,\n } as LineChartProps;\n};\n\nconst MAX_DEPTH = 15;\nexport const sanitizeJson = (jsonObject: any, depth: number = 0): any => {\n if (depth > MAX_DEPTH) {\n throw new Error('Maximum json depth exceeded');\n }\n\n if (typeof jsonObject === 'object' && jsonObject !== null) {\n for (const key in jsonObject) {\n if (jsonObject.hasOwnProperty(key)) {\n if (typeof jsonObject[key] === 'string') {\n jsonObject[key] = jsonObject[key].replace(/</g, '&lt;').replace(/>/g, '&gt;');\n } else {\n jsonObject[key] = sanitizeJson(jsonObject[key], depth + 1);\n }\n }\n }\n }\n\n return jsonObject;\n};\n\nfunction isTypedArray(a: any) {\n return ArrayBuffer.isView(a) && !(a instanceof DataView);\n}\n\nexport function isArrayOrTypedArray(a: any) {\n return Array.isArray(a) || isTypedArray(a);\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"],"names":["findArrayAttributes","getColor","isArrayOrTypedArray","isDateArray","isLineData","isMonthArray","isNumberArray","sanitizeJson","transformPlotlyJsonToDonutProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","updateXValues","SUPPORTED_PLOT_TYPES","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","isDate","value","parsedDate","Date","parse","isNaN","getTime","parsedYear","getFullYear","yearInString","test","isNumber","parseFloat","isFinite","isMonth","possiblyMonthValue","parseFullMonth","timeParse","parseShortMonth","isArrayOfType","plotCoordinates","typeCheck","args","length","Array","isArray","every","innerArray","datum","data","includes","type","x","y","invalidate2Dseries","series","chartType","Error","getLegend","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","dates","map","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","range","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","Math","min","max","undefined","Object","keys","input","firstData","donutData","labels","label","color","legend","values","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","vbcData","forEach","scale","d3ScaleLinear","domain","d3Extent","nice","xMin","xMax","xbins","start","end","bin","d3Bin","thresholds","th","precision","d3PrecisionFixed","format","d3Format","push","buckets","totalDataPoints","d3Merge","bucket","histnorm","x0","x1","histfunc","d3Sum","d3Min","d3Max","xAxisCalloutData","hideTickOverlap","isAreaChart","isString","isXDate","isXNumber","lineColor","line","lineOptions","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","roundedTicks","startValue","endValue","MAX_DEPTH","jsonObject","depth","key","hasOwnProperty","replace","isTypedArray","a","ArrayBuffer","isView","DataView","isPlainObject","obj","prototype","toString","call","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","j"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "toImage", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return toImage;
9
+ }
10
+ });
11
+ const _d3selection = require("d3-selection");
12
+ const _index = require("../../utilities/index");
13
+ function toImage(chartContainer, opts = {}) {
14
+ return new Promise((resolve, reject)=>{
15
+ if (!chartContainer) {
16
+ return reject(new Error('Chart container is not defined'));
17
+ }
18
+ try {
19
+ const background = typeof opts.background === 'string' ? (0, _index.resolveCSSVariables)(chartContainer, opts.background) : 'transparent';
20
+ const svg = toSVG(chartContainer, background);
21
+ const svgData = new XMLSerializer().serializeToString(svg.node);
22
+ const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(unescapePonyfill(encodeURIComponent(svgData)));
23
+ svgToPng(svgDataUrl, {
24
+ width: opts.width || svg.width,
25
+ height: opts.height || svg.height,
26
+ scale: opts.scale
27
+ }).then(resolve).catch(reject);
28
+ } catch (err) {
29
+ return reject(err);
30
+ }
31
+ });
32
+ }
33
+ const SVG_STYLE_PROPERTIES = [
34
+ 'display',
35
+ 'fill',
36
+ 'fill-opacity',
37
+ 'opacity',
38
+ 'stroke',
39
+ 'stroke-width',
40
+ 'transform'
41
+ ];
42
+ const SVG_TEXT_STYLE_PROPERTIES = [
43
+ 'font-family',
44
+ 'font-size',
45
+ 'font-weight',
46
+ 'text-anchor'
47
+ ];
48
+ function toSVG(chartContainer, background) {
49
+ const svg = chartContainer.querySelector('svg');
50
+ if (!svg) {
51
+ throw new Error('SVG not found');
52
+ }
53
+ const clonedSvg = (0, _d3selection.select)(svg.cloneNode(true)).attr('width', null).attr('height', null).attr('viewBox', null);
54
+ const svgElements = svg.getElementsByTagName('*');
55
+ const clonedSvgElements = clonedSvg.node().getElementsByTagName('*');
56
+ for(let i = 0; i < svgElements.length; i++){
57
+ if (svgElements[i].tagName.toLowerCase() === 'text') {
58
+ copyStyle([
59
+ ...SVG_STYLE_PROPERTIES,
60
+ ...SVG_TEXT_STYLE_PROPERTIES
61
+ ], svgElements[i], clonedSvgElements[i]);
62
+ } else {
63
+ copyStyle(SVG_STYLE_PROPERTIES, svgElements[i], clonedSvgElements[i]);
64
+ }
65
+ }
66
+ const { width: svgWidth, height: svgHeight } = svg.getBoundingClientRect();
67
+ const legendGroup = cloneLegendsToSVG(chartContainer, svgWidth, svgHeight);
68
+ const w1 = Math.max(svgWidth, legendGroup.width);
69
+ const h1 = svgHeight + legendGroup.height;
70
+ if (legendGroup.node) {
71
+ clonedSvg.append(()=>legendGroup.node);
72
+ }
73
+ clonedSvg.insert('rect', ':first-child').attr('x', 0).attr('y', 0).attr('width', w1).attr('height', h1).attr('fill', background);
74
+ clonedSvg.attr('width', w1).attr('height', h1).attr('viewBox', `0 0 ${w1} ${h1}`);
75
+ return {
76
+ node: clonedSvg.node(),
77
+ width: w1,
78
+ height: h1
79
+ };
80
+ }
81
+ const LEGEND_RECT_STYLE_PROPERTIES_MAP = {
82
+ 'background-color': 'fill',
83
+ 'border-color': 'stroke'
84
+ };
85
+ const LEGEND_TEXT_STYLE_PROPERTIES_MAP = {
86
+ color: 'fill',
87
+ 'font-family': 'font-family',
88
+ 'font-size': 'font-size',
89
+ 'font-weight': 'font-weight',
90
+ opacity: 'opacity'
91
+ };
92
+ function cloneLegendsToSVG(chartContainer, svgWidth, svgHeight) {
93
+ const legendButtons = chartContainer.querySelectorAll(`
94
+ button.fui-legend__legend:not([data-overflowing]),
95
+ .fui-donut__legendContainer button.fui-MenuButton,
96
+ .fui-cart__legendContainer button.fui-MenuButton
97
+ `);
98
+ if (legendButtons.length === 0) {
99
+ return {
100
+ node: null,
101
+ width: 0,
102
+ height: 0
103
+ };
104
+ }
105
+ const legendGroup = (0, _d3selection.create)('svg:g');
106
+ let legendX = 0;
107
+ let legendY = 8;
108
+ let legendLine = [];
109
+ const legendLines = [];
110
+ const legendLineWidths = [];
111
+ for(let i = 0; i < legendButtons.length; i++){
112
+ const { width: legendWidth } = legendButtons[i].getBoundingClientRect();
113
+ const legendItem = legendGroup.append('g');
114
+ legendLine.push(legendItem);
115
+ if (legendX + legendWidth > svgWidth && legendLine.length > 1) {
116
+ legendLine.pop();
117
+ legendLines.push(legendLine);
118
+ legendLineWidths.push(legendX);
119
+ legendLine = [
120
+ legendItem
121
+ ];
122
+ legendX = 0;
123
+ legendY += 32;
124
+ }
125
+ let legendText;
126
+ let textOffset = 0;
127
+ if (!legendButtons[i].hasAttribute('data-overflow-menu')) {
128
+ const legendRect = legendButtons[i].querySelector('.fui-legend__rect');
129
+ legendText = legendButtons[i].querySelector('.fui-legend__text');
130
+ legendItem.append('rect').attr('x', legendX + 8).attr('y', svgHeight + legendY + 8).attr('width', 12).attr('height', 12).attr('stroke-width', 1).call((selection)=>copyStyle(LEGEND_RECT_STYLE_PROPERTIES_MAP, legendRect, selection.node()));
131
+ textOffset = 28;
132
+ } else {
133
+ legendText = legendButtons[i];
134
+ console.log(legendText.textContent);
135
+ textOffset = 8;
136
+ }
137
+ legendItem.append('text').attr('x', legendX + textOffset).attr('y', svgHeight + legendY + 8).attr('dominant-baseline', 'hanging').text(legendText.textContent).call((selection)=>copyStyle(LEGEND_TEXT_STYLE_PROPERTIES_MAP, legendText, selection.node()));
138
+ legendX += legendWidth;
139
+ }
140
+ legendLines.push(legendLine);
141
+ legendLineWidths.push(legendX);
142
+ legendY += 32;
143
+ const centerLegends = true;
144
+ if (centerLegends) {
145
+ legendLines.forEach((ln, idx)=>{
146
+ const offsetX = Math.max((svgWidth - legendLineWidths[idx]) / 2, 0);
147
+ ln.forEach((item)=>{
148
+ item.attr('transform', `translate(${offsetX}, 0)`);
149
+ });
150
+ });
151
+ }
152
+ return {
153
+ node: legendGroup.node(),
154
+ width: Math.max(...legendLineWidths),
155
+ height: legendY
156
+ };
157
+ }
158
+ function svgToPng(svgDataUrl, opts = {}) {
159
+ return new Promise((resolve, reject)=>{
160
+ const scale = opts.scale || 1;
161
+ const w0 = opts.width || 300;
162
+ const h0 = opts.height || 150;
163
+ const w1 = scale * w0;
164
+ const h1 = scale * h0;
165
+ const canvas = document.createElement('canvas');
166
+ const img = new Image();
167
+ canvas.width = w1;
168
+ canvas.height = h1;
169
+ img.onload = function() {
170
+ const ctx = canvas.getContext('2d');
171
+ if (!ctx) {
172
+ return reject(new Error('Canvas context is null'));
173
+ }
174
+ ctx.clearRect(0, 0, w1, h1);
175
+ ctx.drawImage(img, 0, 0, w1, h1);
176
+ const imgData = canvas.toDataURL('image/png');
177
+ resolve(imgData);
178
+ };
179
+ img.onerror = function(err) {
180
+ reject(err);
181
+ };
182
+ img.src = svgDataUrl;
183
+ });
184
+ }
185
+ const hex2 = /^[\da-f]{2}$/i;
186
+ const hex4 = /^[\da-f]{4}$/i;
187
+ /**
188
+ * A ponyfill for the deprecated `unescape` method, taken from the `core-js` library.
189
+ *
190
+ * Source: {@link https://github.com/zloirock/core-js/blob/167136f479d3b8519953f2e4c534ecdd1031d3cf/packages/core-js/modules/es.unescape.js core-js/packages/core-js/modules/es.unescape.js}
191
+ */ function unescapePonyfill(str) {
192
+ let result = '';
193
+ const length = str.length;
194
+ let index = 0;
195
+ let chr;
196
+ let part;
197
+ while(index < length){
198
+ chr = str.charAt(index++);
199
+ if (chr === '%') {
200
+ if (str.charAt(index) === 'u') {
201
+ part = str.slice(index + 1, index + 5);
202
+ if (hex4.exec(part)) {
203
+ result += String.fromCharCode(parseInt(part, 16));
204
+ index += 5;
205
+ continue;
206
+ }
207
+ } else {
208
+ part = str.slice(index, index + 2);
209
+ if (hex2.exec(part)) {
210
+ result += String.fromCharCode(parseInt(part, 16));
211
+ index += 2;
212
+ continue;
213
+ }
214
+ }
215
+ }
216
+ result += chr;
217
+ }
218
+ return result;
219
+ }
220
+ function copyStyle(properties, fromEl, toEl) {
221
+ const styles = getComputedStyle(fromEl);
222
+ if (Array.isArray(properties)) {
223
+ properties.forEach((prop)=>{
224
+ (0, _d3selection.select)(toEl).style(prop, styles.getPropertyValue(prop));
225
+ });
226
+ } else {
227
+ Object.entries(properties).forEach(([fromProp, toProp])=>{
228
+ (0, _d3selection.select)(toEl).style(toProp, styles.getPropertyValue(fromProp));
229
+ });
230
+ }
231
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["imageExporter.ts"],"sourcesContent":["import { create as d3Create, select as d3Select, Selection } from 'd3-selection';\nimport { resolveCSSVariables } from '../../utilities/index';\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport function toImage(chartContainer?: HTMLElement | null, opts: ImageExportOptions = {}): Promise<string> {\n return new Promise((resolve, reject) => {\n if (!chartContainer) {\n return reject(new Error('Chart container is not defined'));\n }\n\n try {\n const background =\n typeof opts.background === 'string' ? resolveCSSVariables(chartContainer, opts.background) : 'transparent';\n const svg = toSVG(chartContainer, background);\n\n const svgData = new XMLSerializer().serializeToString(svg.node);\n const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(unescapePonyfill(encodeURIComponent(svgData)));\n\n svgToPng(svgDataUrl, {\n width: opts.width || svg.width,\n height: opts.height || svg.height,\n scale: opts.scale,\n })\n .then(resolve)\n .catch(reject);\n } catch (err) {\n return reject(err);\n }\n });\n}\n\nconst SVG_STYLE_PROPERTIES = ['display', 'fill', 'fill-opacity', 'opacity', 'stroke', 'stroke-width', 'transform'];\nconst SVG_TEXT_STYLE_PROPERTIES = ['font-family', 'font-size', 'font-weight', 'text-anchor'];\n\nfunction toSVG(chartContainer: HTMLElement, background: string) {\n const svg = chartContainer.querySelector<SVGSVGElement>('svg');\n if (!svg) {\n throw new Error('SVG not found');\n }\n\n const clonedSvg = d3Select(svg.cloneNode(true) as SVGSVGElement)\n .attr('width', null)\n .attr('height', null)\n .attr('viewBox', null);\n const svgElements = svg.getElementsByTagName('*');\n const clonedSvgElements = clonedSvg.node()!.getElementsByTagName('*');\n\n for (let i = 0; i < svgElements.length; i++) {\n if (svgElements[i].tagName.toLowerCase() === 'text') {\n copyStyle([...SVG_STYLE_PROPERTIES, ...SVG_TEXT_STYLE_PROPERTIES], svgElements[i], clonedSvgElements[i]);\n } else {\n copyStyle(SVG_STYLE_PROPERTIES, svgElements[i], clonedSvgElements[i]);\n }\n }\n\n const { width: svgWidth, height: svgHeight } = svg.getBoundingClientRect();\n const legendGroup = cloneLegendsToSVG(chartContainer, svgWidth, svgHeight);\n const w1 = Math.max(svgWidth, legendGroup.width);\n const h1 = svgHeight + legendGroup.height;\n\n if (legendGroup.node) {\n clonedSvg.append(() => legendGroup.node);\n }\n clonedSvg\n .insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', w1)\n .attr('height', h1)\n .attr('fill', background);\n clonedSvg.attr('width', w1).attr('height', h1).attr('viewBox', `0 0 ${w1} ${h1}`);\n\n return {\n node: clonedSvg.node()!,\n width: w1,\n height: h1,\n };\n}\n\nconst LEGEND_RECT_STYLE_PROPERTIES_MAP = {\n 'background-color': 'fill',\n 'border-color': 'stroke',\n};\nconst LEGEND_TEXT_STYLE_PROPERTIES_MAP = {\n color: 'fill',\n 'font-family': 'font-family',\n 'font-size': 'font-size',\n 'font-weight': 'font-weight',\n opacity: 'opacity',\n};\n\nfunction cloneLegendsToSVG(chartContainer: HTMLElement, svgWidth: number, svgHeight: number) {\n const legendButtons = chartContainer.querySelectorAll<HTMLElement>(`\n button.fui-legend__legend:not([data-overflowing]),\n .fui-donut__legendContainer button.fui-MenuButton,\n .fui-cart__legendContainer button.fui-MenuButton\n `);\n if (legendButtons.length === 0) {\n return {\n node: null,\n width: 0,\n height: 0,\n };\n }\n\n const legendGroup = d3Create<SVGGElement>('svg:g');\n let legendX = 0;\n let legendY = 8;\n let legendLine: Selection<SVGGElement, unknown, null, undefined>[] = [];\n const legendLines: (typeof legendLine)[] = [];\n const legendLineWidths: number[] = [];\n\n for (let i = 0; i < legendButtons.length; i++) {\n const { width: legendWidth } = legendButtons[i].getBoundingClientRect();\n const legendItem = legendGroup.append('g');\n\n legendLine.push(legendItem);\n if (legendX + legendWidth > svgWidth && legendLine.length > 1) {\n legendLine.pop();\n legendLines.push(legendLine);\n legendLineWidths.push(legendX);\n\n legendLine = [legendItem];\n legendX = 0;\n legendY += 32;\n }\n\n let legendText: HTMLDivElement | HTMLButtonElement | null;\n let textOffset = 0;\n\n if (!legendButtons[i].hasAttribute('data-overflow-menu')) {\n const legendRect = legendButtons[i].querySelector<HTMLDivElement>('.fui-legend__rect');\n\n legendText = legendButtons[i].querySelector<HTMLDivElement>('.fui-legend__text');\n legendItem\n .append('rect')\n .attr('x', legendX + 8)\n .attr('y', svgHeight + legendY + 8)\n .attr('width', 12)\n .attr('height', 12)\n .attr('stroke-width', 1)\n .call(selection => copyStyle(LEGEND_RECT_STYLE_PROPERTIES_MAP, legendRect!, selection.node()!));\n textOffset = 28;\n } else {\n legendText = legendButtons[i] as HTMLButtonElement;\n console.log(legendText!.textContent);\n textOffset = 8;\n }\n\n legendItem\n .append('text')\n .attr('x', legendX + textOffset)\n .attr('y', svgHeight + legendY + 8)\n .attr('dominant-baseline', 'hanging')\n .text(legendText!.textContent)\n .call(selection => copyStyle(LEGEND_TEXT_STYLE_PROPERTIES_MAP, legendText!, selection.node()!));\n legendX += legendWidth;\n }\n\n legendLines.push(legendLine);\n legendLineWidths.push(legendX);\n legendY += 32;\n\n const centerLegends = true;\n if (centerLegends) {\n legendLines.forEach((ln, idx) => {\n const offsetX = Math.max((svgWidth - legendLineWidths[idx]) / 2, 0);\n ln.forEach(item => {\n item.attr('transform', `translate(${offsetX}, 0)`);\n });\n });\n }\n\n return {\n node: legendGroup.node(),\n width: Math.max(...legendLineWidths),\n height: legendY,\n };\n}\n\nfunction svgToPng(svgDataUrl: string, opts: ImageExportOptions = {}): Promise<string> {\n return new Promise((resolve, reject) => {\n const scale = opts.scale || 1;\n const w0 = opts.width || 300;\n const h0 = opts.height || 150;\n const w1 = scale * w0;\n const h1 = scale * h0;\n\n const canvas = document.createElement('canvas');\n const img = new Image();\n\n canvas.width = w1;\n canvas.height = h1;\n\n img.onload = function () {\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return reject(new Error('Canvas context is null'));\n }\n\n ctx.clearRect(0, 0, w1, h1);\n ctx.drawImage(img, 0, 0, w1, h1);\n\n const imgData = canvas.toDataURL('image/png');\n resolve(imgData);\n };\n\n img.onerror = function (err) {\n reject(err);\n };\n\n img.src = svgDataUrl;\n });\n}\n\nconst hex2 = /^[\\da-f]{2}$/i;\nconst hex4 = /^[\\da-f]{4}$/i;\n\n/**\n * A ponyfill for the deprecated `unescape` method, taken from the `core-js` library.\n *\n * Source: {@link https://github.com/zloirock/core-js/blob/167136f479d3b8519953f2e4c534ecdd1031d3cf/packages/core-js/modules/es.unescape.js core-js/packages/core-js/modules/es.unescape.js}\n */\nfunction unescapePonyfill(str: string) {\n let result = '';\n const length = str.length;\n let index = 0;\n let chr;\n let part;\n while (index < length) {\n chr = str.charAt(index++);\n if (chr === '%') {\n if (str.charAt(index) === 'u') {\n part = str.slice(index + 1, index + 5);\n if (hex4.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 5;\n continue;\n }\n } else {\n part = str.slice(index, index + 2);\n if (hex2.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 2;\n continue;\n }\n }\n }\n result += chr;\n }\n return result;\n}\n\nfunction copyStyle(properties: string[] | Record<string, string>, fromEl: Element, toEl: Element) {\n const styles = getComputedStyle(fromEl);\n if (Array.isArray(properties)) {\n properties.forEach(prop => {\n d3Select(toEl).style(prop, styles.getPropertyValue(prop));\n });\n } else {\n Object.entries(properties).forEach(([fromProp, toProp]) => {\n d3Select(toEl).style(toProp, styles.getPropertyValue(fromProp));\n });\n }\n}\n"],"names":["toImage","chartContainer","opts","Promise","resolve","reject","Error","background","resolveCSSVariables","svg","toSVG","svgData","XMLSerializer","serializeToString","node","svgDataUrl","btoa","unescapePonyfill","encodeURIComponent","svgToPng","width","height","scale","then","catch","err","SVG_STYLE_PROPERTIES","SVG_TEXT_STYLE_PROPERTIES","querySelector","clonedSvg","d3Select","cloneNode","attr","svgElements","getElementsByTagName","clonedSvgElements","i","length","tagName","toLowerCase","copyStyle","svgWidth","svgHeight","getBoundingClientRect","legendGroup","cloneLegendsToSVG","w1","Math","max","h1","append","insert","LEGEND_RECT_STYLE_PROPERTIES_MAP","LEGEND_TEXT_STYLE_PROPERTIES_MAP","color","opacity","legendButtons","querySelectorAll","d3Create","legendX","legendY","legendLine","legendLines","legendLineWidths","legendWidth","legendItem","push","pop","legendText","textOffset","hasAttribute","legendRect","call","selection","console","log","textContent","text","centerLegends","forEach","ln","idx","offsetX","item","w0","h0","canvas","document","createElement","img","Image","onload","ctx","getContext","clearRect","drawImage","imgData","toDataURL","onerror","src","hex2","hex4","str","result","index","chr","part","charAt","slice","exec","String","fromCharCode","parseInt","properties","fromEl","toEl","styles","getComputedStyle","Array","isArray","prop","style","getPropertyValue","Object","entries","fromProp","toProp"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _export_star = require("@swc/helpers/_/_export_star");
6
+ _export_star._(require("./DeclarativeChart"), exports);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './DeclarativeChart';\nexport type { ImageExportOptions } from './imageExporter';\n"],"names":[],"rangeMappings":";;;;;","mappings":";;;;;uBAAc"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Arc", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Arc;
9
+ }
10
+ });
11
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
+ const _d3shape = require("d3-shape");
14
+ const _useArcStylesstyles = require("./useArcStyles.styles");
15
+ const _d3format = require("d3-format");
16
+ const _index = require("../../../utilities/index");
17
+ const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
18
+ var _props_data;
19
+ const arc = (0, _d3shape.arc)();
20
+ const currentRef = /*#__PURE__*/ _react.createRef();
21
+ const _isRTL = (0, _index.useRtl)();
22
+ const classes = (0, _useArcStylesstyles.useArcStyles)(props);
23
+ _react.useEffect(()=>{
24
+ _updateChart(props);
25
+ }, [
26
+ props
27
+ ]);
28
+ function _onFocus(data, id) {
29
+ props.onFocusCallback(data, id, currentRef.current);
30
+ }
31
+ function _hoverOn(data, mouseEvent) {
32
+ mouseEvent.persist();
33
+ props.hoverOnCallback(data, mouseEvent);
34
+ }
35
+ function _hoverOff() {
36
+ props.hoverLeaveCallback();
37
+ }
38
+ function _onBlur() {
39
+ props.onBlurCallback();
40
+ }
41
+ function _getAriaLabel() {
42
+ var _point_callOutAccessibilityData;
43
+ const point = props.data.data;
44
+ const legend = point.xAxisCalloutData || point.legend;
45
+ const yValue = point.yAxisCalloutData || point.data || 0;
46
+ return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || (legend ? `${legend}, ` : '') + `${yValue}.`;
47
+ }
48
+ function _renderArcLabel(className) {
49
+ const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;
50
+ if (hideLabels || Math.abs(data.endAngle - data.startAngle) < Math.PI / 12 || activeArc !== data.data.legend && activeArc !== '') {
51
+ return null;
52
+ }
53
+ const [base, perp] = arc.centroid({
54
+ ...data,
55
+ innerRadius,
56
+ outerRadius
57
+ });
58
+ const hyp = Math.sqrt(base * base + perp * perp);
59
+ const labelRadius = Math.max(innerRadius, outerRadius) + 2;
60
+ const angle = (data.startAngle + data.endAngle) / 2;
61
+ const arcValue = data.value;
62
+ return /*#__PURE__*/ _react.createElement("text", {
63
+ x: (hyp === 0 ? 0 : base / hyp) * labelRadius,
64
+ y: (hyp === 0 ? 0 : perp / hyp) * labelRadius,
65
+ textAnchor: angle > Math.PI !== _isRTL ? 'end' : 'start',
66
+ dominantBaseline: angle > Math.PI / 2 && angle < 3 * Math.PI / 2 ? 'hanging' : 'auto',
67
+ className: className,
68
+ "aria-hidden": true
69
+ }, showLabelsInPercent ? (0, _d3format.format)('.0%')(totalValue === 0 ? 0 : arcValue / totalValue) : (0, _index.formatValueWithSIPrefix)(arcValue));
70
+ }
71
+ function _updateChart(newProps) {
72
+ if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {
73
+ newProps.arc.innerRadius(newProps.innerRadius);
74
+ newProps.arc.outerRadius(newProps.outerRadius);
75
+ }
76
+ }
77
+ const { href, focusedArcId } = props;
78
+ //TO DO 'replace' is throwing error
79
+ const id = props.uniqText + props.data.data.legend.replace(/\s+/, '') + props.data.data.data;
80
+ const opacity = props.activeArc === props.data.data.legend || props.activeArc === '' ? 1 : 0.1;
81
+ return /*#__PURE__*/ _react.createElement("g", {
82
+ ref: currentRef
83
+ }, !!focusedArcId && focusedArcId === id && // TODO innerradius and outerradius were absent
84
+ /*#__PURE__*/ _react.createElement("path", {
85
+ id: id + 'focusRing',
86
+ d: arc({
87
+ ...props.focusData,
88
+ innerRadius: props.innerRadius,
89
+ outerRadius: props.outerRadius
90
+ }),
91
+ className: classes.focusRing
92
+ }), /*#__PURE__*/ _react.createElement("path", {
93
+ // TODO innerradius and outerradius were absent
94
+ id: id,
95
+ d: arc({
96
+ ...props.data,
97
+ innerRadius: props.innerRadius,
98
+ outerRadius: props.outerRadius
99
+ }),
100
+ className: classes.root,
101
+ style: {
102
+ fill: props.color,
103
+ cursor: href ? 'pointer' : 'default'
104
+ },
105
+ onFocus: _onFocus.bind(void 0, props.data.data, id),
106
+ "data-is-focusable": props.activeArc === props.data.data.legend || props.activeArc === '',
107
+ onMouseOver: _hoverOn.bind(void 0, props.data.data),
108
+ onMouseMove: _hoverOn.bind(void 0, props.data.data),
109
+ onMouseLeave: _hoverOff,
110
+ onBlur: _onBlur,
111
+ opacity: opacity,
112
+ onClick: (_props_data = props.data) === null || _props_data === void 0 ? void 0 : _props_data.data.onClick,
113
+ "aria-label": _getAriaLabel(),
114
+ role: "img"
115
+ }), _renderArcLabel(classes.arcLabel));
116
+ });
117
+ Arc.displayName = 'Arc';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id = props.uniqText! + props.data!.data.legend!.replace(/\\s+/, '') + props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={arc({ ...props.focusData!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={arc({ ...props.data!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","activeArc","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatValueWithSIPrefix","newProps","href","focusedArcId","uniqText","replace","opacity","g","ref","path","d","focusData","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Arc.types.ts"],"sourcesContent":["import { ChartDataPoint } from '../index';\nexport interface ArcProps {\n /**\n * Data to render in the Arc.\n */\n data?: ArcData;\n\n /**\n * Data to render focused Arc\n */\n focusData?: ArcData;\n\n /**\n * id of the focused arc\n */\n focusedArcId?: string;\n /**\n * shape for Arc.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n arc?: any;\n\n /**\n * innerRadius of the Arc.\n */\n innerRadius: number;\n\n /**\n * outerRadius of the Arc.\n */\n outerRadius: number;\n\n /**\n * Color for the Arc.\n */\n color: string;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n hoverOnCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n onFocusCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n onBlurCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n hoverLeaveCallback?: Function;\n\n /**\n * Uniq string for chart\n */\n uniqText?: string;\n\n /**\n * string for callout id\n */\n calloutId?: string;\n\n /**\n * Active Arc for chart\n */\n activeArc?: string;\n\n /**\n * internal prop for href\n */\n href?: string;\n\n /**\n * props for inside donut value\n */\n valueInsideDonut?: string | number;\n\n /**\n * Prop to show the arc labels in percentage format\n */\n showLabelsInPercent?: boolean;\n\n /**\n * Prop used to define the sum of all arc values\n */\n totalValue?: number;\n\n /**\n * Prop to hide the arc labels\n */\n hideLabels?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ArcStyles;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n}\n\nexport interface ArcData {\n /**\n * Data to render in the chart for individual arc.\n */\n data: ChartDataPoint;\n /**\n * endAngle of the Arc\n */\n endAngle: number;\n /**\n * index of the Arc\n */\n index: number;\n /**\n * padAngle of the Arc\n */\n padAngle: number;\n /**\n * startAngle of the Arc\n */\n startAngle: number;\n /**\n * value of the Arc\n */\n value: number;\n}\n\nexport interface ArcStyles {\n /**\n * Style set for the card header component root\n */\n root: string;\n\n /**\n * styles for the focus\n */\n focusRing: string;\n\n /**\n * Style for the arc labels\n */\n arcLabel: string;\n}\n"],"names":[],"rangeMappings":"","mappings":""}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _export_star = require("@swc/helpers/_/_export_star");
6
+ _export_star._(require("./Arc"), exports);
7
+ _export_star._(require("./Arc.types"), exports);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './Arc';\nexport * from './Arc.types';\n"],"names":[],"rangeMappings":";;;;;;","mappings":";;;;;uBAAc;uBACA"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ donutArcClassNames: function() {
13
+ return donutArcClassNames;
14
+ },
15
+ useArcStyles: function() {
16
+ return useArcStyles;
17
+ }
18
+ });
19
+ const _react = require("@griffel/react");
20
+ const donutArcClassNames = {
21
+ root: 'fui-donut-arc__root',
22
+ focusRing: 'fui-donut-arc__focusRing',
23
+ arcLabel: 'fui-donut-arc__arcLabel'
24
+ };
25
+ /**
26
+ * Base Styles
27
+ */ const useStyles = /*#__PURE__*/ (0, _react.__styles)({
28
+ root: {
29
+ Bceei9c: "f158kwzp",
30
+ Bpd4iqm: "f2cu5sd",
31
+ ojy3ng: "f1yuyku4",
32
+ B4ncu3z: "f138xzbb",
33
+ zxy5zd: [
34
+ "fny96iz",
35
+ "fi0bkha"
36
+ ],
37
+ bkw2yb: "f1jv8gm3",
38
+ Bjksbd0: [
39
+ "fi0bkha",
40
+ "fny96iz"
41
+ ]
42
+ },
43
+ focusRing: {
44
+ ojy3ng: "frcfrt5",
45
+ Be5yapy: "f9nnx8l",
46
+ Bkfmm31: "f1au8mb3"
47
+ },
48
+ arcLabel: {
49
+ Bahqtrf: "fk6fouc",
50
+ Be2twd7: "fy9rknc",
51
+ Bhrd7zp: "fl43uef",
52
+ Bg96gwp: "fwrc4pm",
53
+ Bkfmm31: "fhuob2q"
54
+ }
55
+ }, {
56
+ d: [
57
+ ".f158kwzp{cursor:default;}",
58
+ ".f2cu5sd{outline-width:transparent;}",
59
+ ".f1yuyku4{stroke:var(--colorNeutralBackground1);}",
60
+ ".f138xzbb selectors::-moz-focus-inner{border-top-width:0;}",
61
+ ".fny96iz selectors::-moz-focus-inner{border-right-width:0;}",
62
+ ".fi0bkha selectors::-moz-focus-inner{border-left-width:0;}",
63
+ ".f1jv8gm3 selectors::-moz-focus-inner{border-bottom-width:0;}",
64
+ ".frcfrt5{stroke:var(--colorStrokeFocus2);}",
65
+ ".f9nnx8l{stroke-width:var(--strokeWidthThickest);}",
66
+ ".f1au8mb3{fill:transparent;}",
67
+ ".fk6fouc{font-family:var(--fontFamilyBase);}",
68
+ ".fy9rknc{font-size:var(--fontSizeBase200);}",
69
+ ".fl43uef{font-weight:var(--fontWeightSemibold);}",
70
+ ".fwrc4pm{line-height:var(--lineHeightBase200);}",
71
+ ".fhuob2q{fill:var(--colorNeutralForeground1);}"
72
+ ]
73
+ });
74
+ const useArcStyles = (props)=>{
75
+ var _props_styles, _props_styles1, _props_styles2;
76
+ const { className } = props;
77
+ const baseStyles = useStyles();
78
+ return {
79
+ root: (0, _react.mergeClasses)(donutArcClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),
80
+ focusRing: (0, _react.mergeClasses)(donutArcClassNames.focusRing, baseStyles.focusRing, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.focusRing),
81
+ arcLabel: (0, _react.mergeClasses)(donutArcClassNames.arcLabel, baseStyles.arcLabel, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.arcLabel)
82
+ };
83
+ }; //# sourceMappingURL=useArcStyles.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useArcStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const donutArcClassNames = {\n root: 'fui-donut-arc__root',\n focusRing: 'fui-donut-arc__focusRing',\n arcLabel: 'fui-donut-arc__arcLabel'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n cursor: 'default',\n ...shorthands.outline('transparent'),\n stroke: tokens.colorNeutralBackground1,\n '& selectors': {\n '::-moz-focus-inner': {\n ...shorthands.border('0')\n }\n }\n },\n focusRing: {\n stroke: tokens.colorStrokeFocus2,\n strokeWidth: tokens.strokeWidthThickest,\n fill: 'transparent'\n },\n arcLabel: {\n ...typographyStyles.caption1Strong,\n fill: tokens.colorNeutralForeground1\n }\n});\n/**\n * Apply styling to the Arc components\n */ export const useArcStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(donutArcClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n focusRing: mergeClasses(donutArcClassNames.focusRing, baseStyles.focusRing, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.focusRing),\n arcLabel: mergeClasses(donutArcClassNames.arcLabel, baseStyles.arcLabel, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.arcLabel)\n };\n};\n"],"names":["donutArcClassNames","useArcStyles","root","focusRing","arcLabel","useStyles","__styles","Bceei9c","Bpd4iqm","ojy3ng","B4ncu3z","zxy5zd","bkw2yb","Bjksbd0","Be5yapy","Bkfmm31","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","d","props","_props_styles","_props_styles1","_props_styles2","className","baseStyles","mergeClasses","styles"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIiBA,kBAAkB;eAAlBA;;IA8BAC,YAAY;eAAZA;;;uBAlCoC;AAI1C,MAAMD,qBAAqB;IAClCE,MAAM;IACNC,WAAW;IACXC,UAAU;AACd;AACA;;CAEA,GAAI,MAAMC,YAAS,WAAA,GAAGC,IAAAA,eAAA,EAAA;IAAAJ,MAAA;QAAAK,SAAA;QAAAC,SAAA;QAAAC,QAAA;QAAAC,SAAA;QAAAC,QAAA;YAAA;YAAA;SAAA;QAAAC,QAAA;QAAAC,SAAA;YAAA;YAAA;SAAA;IAAA;IAAAV,WAAA;QAAAM,QAAA;QAAAK,SAAA;QAAAC,SAAA;IAAA;IAAAX,UAAA;QAAAY,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAC,SAAA;QAAAJ,SAAA;IAAA;AAAA,GAAA;IAAAK,GAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA;AAuBX,MAAMnB,eAAgBoB,CAAAA;IAC7B,IAAIC,eAAeC,gBAAgBC;IACnC,MAAM,EAAEC,SAAAA,EAAW,GAAGJ;IACtB,MAAMK,aAAarB;IACnB,OAAO;QACHH,MAAMyB,IAAAA,mBAAY,EAAC3B,mBAAmBE,IAAI,EAAEwB,WAAWxB,IAAI,EAAEuB,WAAW,AAACH,CAAAA,gBAAgBD,MAAMO,MAAM,AAANA,MAAY,QAAQN,kBAAkB,KAAK,IAAI,KAAK,IAAIA,cAAcpB,IAAI;QACzKC,WAAWwB,IAAAA,mBAAY,EAAC3B,mBAAmBG,SAAS,EAAEuB,WAAWvB,SAAS,EAAE,AAACoB,CAAAA,iBAAiBF,MAAMO,MAAM,AAANA,MAAY,QAAQL,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAepB,SAAS;QACrLC,UAAUuB,IAAAA,mBAAY,EAAC3B,mBAAmBI,QAAQ,EAAEsB,WAAWtB,QAAQ,EAAE,AAACoB,CAAAA,iBAAiBH,MAAMO,MAAM,AAANA,MAAY,QAAQJ,mBAAmB,KAAK,IAAI,KAAK,IAAIA,eAAepB,QAAQ;IACrL;AACJ"}