@fluentui/react-charting 5.25.5 → 5.25.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/CHANGELOG.json +87 -1
  2. package/CHANGELOG.md +28 -2
  3. package/bundle-size/PolarChart.fixture.js +7 -0
  4. package/dist/react-charting.d.ts +388 -1
  5. package/dist/react-charting.js +1 -1
  6. package/dist/react-charting.min.js +1 -1
  7. package/etc/react-charting.api.md +85 -1
  8. package/lib/PolarChart.d.ts +1 -0
  9. package/lib/PolarChart.js +2 -0
  10. package/lib/PolarChart.js.map +1 -0
  11. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +1 -1
  12. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  13. package/lib/components/AreaChart/AreaChart.base.d.ts +0 -1
  14. package/lib/components/AreaChart/AreaChart.base.js +2 -31
  15. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  16. package/lib/components/ChartTable/ChartTable.base.js +12 -4
  17. package/lib/components/ChartTable/ChartTable.base.js.map +1 -1
  18. package/lib/components/ChartTable/ChartTable.styles.js +3 -0
  19. package/lib/components/ChartTable/ChartTable.styles.js.map +1 -1
  20. package/lib/components/ChartTable/ChartTable.types.d.ts +11 -0
  21. package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
  22. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +11 -6
  23. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  24. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.d.ts +1 -0
  25. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js +17 -1
  26. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js.map +1 -1
  27. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.d.ts +5 -0
  28. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  29. package/lib/components/CommonComponents/CartesianChart.base.d.ts +1 -1
  30. package/lib/components/CommonComponents/CartesianChart.base.js +82 -42
  31. package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
  32. package/lib/components/CommonComponents/CartesianChart.styles.js +31 -27
  33. package/lib/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  34. package/lib/components/CommonComponents/CartesianChart.types.d.ts +16 -1
  35. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  36. package/lib/components/DeclarativeChart/DeclarativeChart.js +24 -28
  37. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  38. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +3 -1
  39. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +202 -217
  40. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  41. package/lib/components/DonutChart/DonutChart.base.d.ts +1 -0
  42. package/lib/components/DonutChart/DonutChart.base.js +16 -4
  43. package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
  44. package/lib/components/DonutChart/DonutChart.styles.js +3 -1
  45. package/lib/components/DonutChart/DonutChart.styles.js.map +1 -1
  46. package/lib/components/DonutChart/DonutChart.types.d.ts +13 -0
  47. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  48. package/lib/components/FunnelChart/FunnelChart.base.js +14 -8
  49. package/lib/components/FunnelChart/FunnelChart.base.js.map +1 -1
  50. package/lib/components/FunnelChart/FunnelChart.styles.js +3 -0
  51. package/lib/components/FunnelChart/FunnelChart.styles.js.map +1 -1
  52. package/lib/components/FunnelChart/FunnelChart.types.d.ts +13 -0
  53. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
  54. package/lib/components/GaugeChart/GaugeChart.base.js +2 -2
  55. package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
  56. package/lib/components/GaugeChart/GaugeChart.styles.js +16 -22
  57. package/lib/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  58. package/lib/components/GaugeChart/GaugeChart.types.d.ts +9 -0
  59. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  60. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  61. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +2 -18
  62. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  63. package/lib/components/LineChart/LineChart.base.d.ts +0 -1
  64. package/lib/components/LineChart/LineChart.base.js +1 -25
  65. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  66. package/lib/components/PolarChart/PolarChart.base.d.ts +3 -0
  67. package/lib/components/PolarChart/PolarChart.base.js +426 -0
  68. package/lib/components/PolarChart/PolarChart.base.js.map +1 -0
  69. package/lib/components/PolarChart/PolarChart.d.ts +7 -0
  70. package/lib/components/PolarChart/PolarChart.js +9 -0
  71. package/lib/components/PolarChart/PolarChart.js.map +1 -0
  72. package/lib/components/PolarChart/PolarChart.styles.d.ts +2 -0
  73. package/lib/components/PolarChart/PolarChart.styles.js +39 -0
  74. package/lib/components/PolarChart/PolarChart.styles.js.map +1 -0
  75. package/lib/components/PolarChart/PolarChart.types.d.ts +185 -0
  76. package/lib/components/PolarChart/PolarChart.types.js +2 -0
  77. package/lib/components/PolarChart/PolarChart.types.js.map +1 -0
  78. package/lib/components/PolarChart/PolarChart.utils.d.ts +43 -0
  79. package/lib/components/PolarChart/PolarChart.utils.js +180 -0
  80. package/lib/components/PolarChart/PolarChart.utils.js.map +1 -0
  81. package/lib/components/PolarChart/index.d.ts +2 -0
  82. package/lib/components/PolarChart/index.js +3 -0
  83. package/lib/components/PolarChart/index.js.map +1 -0
  84. package/lib/components/SankeyChart/SankeyChart.base.js +9 -2
  85. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  86. package/lib/components/SankeyChart/SankeyChart.styles.js +3 -0
  87. package/lib/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  88. package/lib/components/SankeyChart/SankeyChart.types.d.ts +18 -0
  89. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  90. package/lib/components/ScatterChart/ScatterChart.base.js +1 -28
  91. package/lib/components/ScatterChart/ScatterChart.base.js.map +1 -1
  92. package/lib/components/VerticalBarChart/VerticalBarChart.base.d.ts +0 -1
  93. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +1 -73
  94. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  95. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +0 -1
  96. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +1 -26
  97. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  98. package/lib/index.d.ts +2 -0
  99. package/lib/index.js +1 -0
  100. package/lib/index.js.map +1 -1
  101. package/lib/types/IDataPoint.d.ts +88 -0
  102. package/lib/types/IDataPoint.js.map +1 -1
  103. package/lib/utilities/ChartTitle.d.ts +55 -0
  104. package/lib/utilities/ChartTitle.js +45 -0
  105. package/lib/utilities/ChartTitle.js.map +1 -0
  106. package/lib/utilities/Common.styles.d.ts +51 -0
  107. package/lib/utilities/Common.styles.js +70 -1
  108. package/lib/utilities/Common.styles.js.map +1 -1
  109. package/lib/utilities/image-export-utils.js +4 -4
  110. package/lib/utilities/image-export-utils.js.map +1 -1
  111. package/lib/utilities/index.d.ts +1 -0
  112. package/lib/utilities/index.js +1 -0
  113. package/lib/utilities/index.js.map +1 -1
  114. package/lib/utilities/utilities.d.ts +28 -6
  115. package/lib/utilities/utilities.js +210 -104
  116. package/lib/utilities/utilities.js.map +1 -1
  117. package/lib-amd/PolarChart.d.ts +1 -0
  118. package/lib-amd/PolarChart.js +6 -0
  119. package/lib-amd/PolarChart.js.map +1 -0
  120. package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js +1 -1
  121. package/lib-amd/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  122. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +0 -1
  123. package/lib-amd/components/AreaChart/AreaChart.base.js +1 -29
  124. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  125. package/lib-amd/components/ChartTable/ChartTable.base.js +12 -5
  126. package/lib-amd/components/ChartTable/ChartTable.base.js.map +1 -1
  127. package/lib-amd/components/ChartTable/ChartTable.styles.js +3 -1
  128. package/lib-amd/components/ChartTable/ChartTable.styles.js.map +1 -1
  129. package/lib-amd/components/ChartTable/ChartTable.types.d.ts +11 -0
  130. package/lib-amd/components/ChartTable/ChartTable.types.js.map +1 -1
  131. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js +11 -6
  132. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  133. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.d.ts +1 -0
  134. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js +17 -1
  135. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js.map +1 -1
  136. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.types.d.ts +5 -0
  137. package/lib-amd/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  138. package/lib-amd/components/CommonComponents/CartesianChart.base.d.ts +1 -1
  139. package/lib-amd/components/CommonComponents/CartesianChart.base.js +81 -41
  140. package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
  141. package/lib-amd/components/CommonComponents/CartesianChart.styles.js +30 -26
  142. package/lib-amd/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  143. package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +16 -1
  144. package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
  145. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +22 -28
  146. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  147. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +3 -1
  148. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +204 -219
  149. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  150. package/lib-amd/components/DonutChart/DonutChart.base.d.ts +1 -0
  151. package/lib-amd/components/DonutChart/DonutChart.base.js +15 -3
  152. package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
  153. package/lib-amd/components/DonutChart/DonutChart.styles.js +2 -0
  154. package/lib-amd/components/DonutChart/DonutChart.styles.js.map +1 -1
  155. package/lib-amd/components/DonutChart/DonutChart.types.d.ts +13 -0
  156. package/lib-amd/components/DonutChart/DonutChart.types.js.map +1 -1
  157. package/lib-amd/components/FunnelChart/FunnelChart.base.js +14 -9
  158. package/lib-amd/components/FunnelChart/FunnelChart.base.js.map +1 -1
  159. package/lib-amd/components/FunnelChart/FunnelChart.styles.js +3 -1
  160. package/lib-amd/components/FunnelChart/FunnelChart.styles.js.map +1 -1
  161. package/lib-amd/components/FunnelChart/FunnelChart.types.d.ts +13 -0
  162. package/lib-amd/components/FunnelChart/FunnelChart.types.js.map +1 -1
  163. package/lib-amd/components/GaugeChart/GaugeChart.base.js +1 -1
  164. package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
  165. package/lib-amd/components/GaugeChart/GaugeChart.styles.js +16 -23
  166. package/lib-amd/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  167. package/lib-amd/components/GaugeChart/GaugeChart.types.d.ts +9 -0
  168. package/lib-amd/components/GaugeChart/GaugeChart.types.js.map +1 -1
  169. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  170. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +0 -16
  171. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  172. package/lib-amd/components/LineChart/LineChart.base.d.ts +0 -1
  173. package/lib-amd/components/LineChart/LineChart.base.js +0 -24
  174. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  175. package/lib-amd/components/PolarChart/PolarChart.base.d.ts +3 -0
  176. package/lib-amd/components/PolarChart/PolarChart.base.js +421 -0
  177. package/lib-amd/components/PolarChart/PolarChart.base.js.map +1 -0
  178. package/lib-amd/components/PolarChart/PolarChart.d.ts +7 -0
  179. package/lib-amd/components/PolarChart/PolarChart.js +11 -0
  180. package/lib-amd/components/PolarChart/PolarChart.js.map +1 -0
  181. package/lib-amd/components/PolarChart/PolarChart.styles.d.ts +2 -0
  182. package/lib-amd/components/PolarChart/PolarChart.styles.js +43 -0
  183. package/lib-amd/components/PolarChart/PolarChart.styles.js.map +1 -0
  184. package/lib-amd/components/PolarChart/PolarChart.types.d.ts +185 -0
  185. package/lib-amd/components/PolarChart/PolarChart.types.js +5 -0
  186. package/lib-amd/components/PolarChart/PolarChart.types.js.map +1 -0
  187. package/lib-amd/components/PolarChart/PolarChart.utils.d.ts +43 -0
  188. package/lib-amd/components/PolarChart/PolarChart.utils.js +183 -0
  189. package/lib-amd/components/PolarChart/PolarChart.utils.js.map +1 -0
  190. package/lib-amd/components/PolarChart/index.d.ts +2 -0
  191. package/lib-amd/components/PolarChart/index.js +7 -0
  192. package/lib-amd/components/PolarChart/index.js.map +1 -0
  193. package/lib-amd/components/SankeyChart/SankeyChart.base.js +9 -3
  194. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  195. package/lib-amd/components/SankeyChart/SankeyChart.styles.js +3 -1
  196. package/lib-amd/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  197. package/lib-amd/components/SankeyChart/SankeyChart.types.d.ts +18 -0
  198. package/lib-amd/components/SankeyChart/SankeyChart.types.js.map +1 -1
  199. package/lib-amd/components/ScatterChart/ScatterChart.base.js +0 -27
  200. package/lib-amd/components/ScatterChart/ScatterChart.base.js.map +1 -1
  201. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.d.ts +0 -1
  202. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +1 -72
  203. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  204. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +0 -1
  205. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +1 -25
  206. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  207. package/lib-amd/index.d.ts +2 -0
  208. package/lib-amd/index.js +3 -2
  209. package/lib-amd/index.js.map +1 -1
  210. package/lib-amd/types/IDataPoint.d.ts +88 -0
  211. package/lib-amd/types/IDataPoint.js.map +1 -1
  212. package/lib-amd/utilities/ChartTitle.d.ts +55 -0
  213. package/lib-amd/utilities/ChartTitle.js +46 -0
  214. package/lib-amd/utilities/ChartTitle.js.map +1 -0
  215. package/lib-amd/utilities/Common.styles.d.ts +51 -0
  216. package/lib-amd/utilities/Common.styles.js +74 -2
  217. package/lib-amd/utilities/Common.styles.js.map +1 -1
  218. package/lib-amd/utilities/image-export-utils.js +3 -3
  219. package/lib-amd/utilities/image-export-utils.js.map +1 -1
  220. package/lib-amd/utilities/index.d.ts +1 -0
  221. package/lib-amd/utilities/index.js +2 -1
  222. package/lib-amd/utilities/index.js.map +1 -1
  223. package/lib-amd/utilities/utilities.d.ts +28 -6
  224. package/lib-amd/utilities/utilities.js +217 -107
  225. package/lib-amd/utilities/utilities.js.map +1 -1
  226. package/lib-commonjs/PolarChart.d.ts +1 -0
  227. package/lib-commonjs/PolarChart.js +5 -0
  228. package/lib-commonjs/PolarChart.js.map +1 -0
  229. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +1 -1
  230. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  231. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +0 -1
  232. package/lib-commonjs/components/AreaChart/AreaChart.base.js +0 -29
  233. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  234. package/lib-commonjs/components/ChartTable/ChartTable.base.js +12 -4
  235. package/lib-commonjs/components/ChartTable/ChartTable.base.js.map +1 -1
  236. package/lib-commonjs/components/ChartTable/ChartTable.styles.js +3 -0
  237. package/lib-commonjs/components/ChartTable/ChartTable.styles.js.map +1 -1
  238. package/lib-commonjs/components/ChartTable/ChartTable.types.d.ts +11 -0
  239. package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
  240. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +11 -6
  241. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  242. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.d.ts +1 -0
  243. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js +17 -1
  244. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.styles.js.map +1 -1
  245. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.d.ts +5 -0
  246. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  247. package/lib-commonjs/components/CommonComponents/CartesianChart.base.d.ts +1 -1
  248. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +81 -41
  249. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
  250. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js +30 -26
  251. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  252. package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +16 -1
  253. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  254. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +23 -27
  255. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  256. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +3 -1
  257. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +204 -219
  258. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  259. package/lib-commonjs/components/DonutChart/DonutChart.base.d.ts +1 -0
  260. package/lib-commonjs/components/DonutChart/DonutChart.base.js +15 -3
  261. package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
  262. package/lib-commonjs/components/DonutChart/DonutChart.styles.js +2 -0
  263. package/lib-commonjs/components/DonutChart/DonutChart.styles.js.map +1 -1
  264. package/lib-commonjs/components/DonutChart/DonutChart.types.d.ts +13 -0
  265. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  266. package/lib-commonjs/components/FunnelChart/FunnelChart.base.js +14 -8
  267. package/lib-commonjs/components/FunnelChart/FunnelChart.base.js.map +1 -1
  268. package/lib-commonjs/components/FunnelChart/FunnelChart.styles.js +3 -0
  269. package/lib-commonjs/components/FunnelChart/FunnelChart.styles.js.map +1 -1
  270. package/lib-commonjs/components/FunnelChart/FunnelChart.types.d.ts +13 -0
  271. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
  272. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +1 -1
  273. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
  274. package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js +16 -22
  275. package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  276. package/lib-commonjs/components/GaugeChart/GaugeChart.types.d.ts +9 -0
  277. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  278. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +0 -1
  279. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +0 -16
  280. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  281. package/lib-commonjs/components/LineChart/LineChart.base.d.ts +0 -1
  282. package/lib-commonjs/components/LineChart/LineChart.base.js +0 -24
  283. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  284. package/lib-commonjs/components/PolarChart/PolarChart.base.d.ts +3 -0
  285. package/lib-commonjs/components/PolarChart/PolarChart.base.js +429 -0
  286. package/lib-commonjs/components/PolarChart/PolarChart.base.js.map +1 -0
  287. package/lib-commonjs/components/PolarChart/PolarChart.d.ts +7 -0
  288. package/lib-commonjs/components/PolarChart/PolarChart.js +12 -0
  289. package/lib-commonjs/components/PolarChart/PolarChart.js.map +1 -0
  290. package/lib-commonjs/components/PolarChart/PolarChart.styles.d.ts +2 -0
  291. package/lib-commonjs/components/PolarChart/PolarChart.styles.js +43 -0
  292. package/lib-commonjs/components/PolarChart/PolarChart.styles.js.map +1 -0
  293. package/lib-commonjs/components/PolarChart/PolarChart.types.d.ts +185 -0
  294. package/lib-commonjs/components/PolarChart/PolarChart.types.js +3 -0
  295. package/lib-commonjs/components/PolarChart/PolarChart.types.js.map +1 -0
  296. package/lib-commonjs/components/PolarChart/PolarChart.utils.d.ts +43 -0
  297. package/lib-commonjs/components/PolarChart/PolarChart.utils.js +188 -0
  298. package/lib-commonjs/components/PolarChart/PolarChart.utils.js.map +1 -0
  299. package/lib-commonjs/components/PolarChart/index.d.ts +2 -0
  300. package/lib-commonjs/components/PolarChart/index.js +6 -0
  301. package/lib-commonjs/components/PolarChart/index.js.map +1 -0
  302. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +9 -2
  303. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  304. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js +3 -0
  305. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  306. package/lib-commonjs/components/SankeyChart/SankeyChart.types.d.ts +18 -0
  307. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  308. package/lib-commonjs/components/ScatterChart/ScatterChart.base.js +0 -27
  309. package/lib-commonjs/components/ScatterChart/ScatterChart.base.js.map +1 -1
  310. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.d.ts +0 -1
  311. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +0 -72
  312. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  313. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +0 -1
  314. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +0 -25
  315. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  316. package/lib-commonjs/index.d.ts +2 -0
  317. package/lib-commonjs/index.js +3 -1
  318. package/lib-commonjs/index.js.map +1 -1
  319. package/lib-commonjs/types/IDataPoint.d.ts +88 -0
  320. package/lib-commonjs/types/IDataPoint.js.map +1 -1
  321. package/lib-commonjs/utilities/ChartTitle.d.ts +55 -0
  322. package/lib-commonjs/utilities/ChartTitle.js +49 -0
  323. package/lib-commonjs/utilities/ChartTitle.js.map +1 -0
  324. package/lib-commonjs/utilities/Common.styles.d.ts +51 -0
  325. package/lib-commonjs/utilities/Common.styles.js +74 -2
  326. package/lib-commonjs/utilities/Common.styles.js.map +1 -1
  327. package/lib-commonjs/utilities/image-export-utils.js +3 -3
  328. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  329. package/lib-commonjs/utilities/index.d.ts +1 -0
  330. package/lib-commonjs/utilities/index.js +1 -0
  331. package/lib-commonjs/utilities/index.js.map +1 -1
  332. package/lib-commonjs/utilities/utilities.d.ts +28 -6
  333. package/lib-commonjs/utilities/utilities.js +217 -107
  334. package/lib-commonjs/utilities/utilities.js.map +1 -1
  335. package/package.json +4 -12
  336. package/project.json +0 -1
  337. package/src/components/ChartTable/ChartTable.types.ts +13 -0
  338. package/src/components/CommonComponents/Annotations/ChartAnnotationLayer.types.ts +5 -0
  339. package/src/components/CommonComponents/CartesianChart.types.ts +17 -1
  340. package/src/components/DonutChart/DonutChart.types.ts +16 -0
  341. package/src/components/FunnelChart/FunnelChart.types.ts +16 -0
  342. package/src/components/GaugeChart/GaugeChart.types.ts +11 -0
  343. package/src/components/PolarChart/PolarChart.types.ts +232 -0
  344. package/src/components/SankeyChart/SankeyChart.types.ts +22 -0
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities", "../../utilities/image-export-utils", "d3-color", "../../utilities/colors", "../../utilities/utilities"], function (require, exports, tslib_1, React, Utilities_1, image_export_utils_1, d3, colors_1, utilities_1) {
1
+ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities", "../../utilities/image-export-utils", "../../utilities/index", "d3-color", "../../utilities/colors", "../../utilities/utilities"], function (require, exports, tslib_1, React, Utilities_1, image_export_utils_1, index_1, d3, colors_1, utilities_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.ChartTableBase = void 0;
@@ -46,7 +46,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
46
46
  ChartTableBase.prototype.render = function () {
47
47
  var _this = this;
48
48
  var _a;
49
- var _b = this.props, headers = _b.headers, rows = _b.rows, width = _b.width, height = _b.height, styles = _b.styles, theme = _b.theme;
49
+ var _b = this.props, headers = _b.headers, rows = _b.rows, width = _b.width, height = _b.height, styles = _b.styles, theme = _b.theme, chartTitle = _b.chartTitle;
50
50
  var classNames = getClassNames(styles, {
51
51
  theme: theme,
52
52
  });
@@ -86,11 +86,18 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
86
86
  }
87
87
  }
88
88
  }
89
+ var titleHeight = chartTitle ? 30 : 0;
90
+ var totalHeight = typeof height === 'number' ? height : 650;
91
+ var tableHeight = "".concat(totalHeight - titleHeight, "px");
92
+ var svgWidth = typeof width === 'number' ? width : '100%';
93
+ var titleMaxWidth = typeof width === 'number' ? width - 20 : undefined;
94
+ var titleX = typeof width === 'number' ? width / 2 : 0;
89
95
  return (React.createElement("div", { ref: function (el) {
90
96
  _this._rootElem = el;
91
- }, className: classNames.root, style: { height: height ? "".concat(height, "px") : '650px', overflow: 'hidden' } },
92
- React.createElement("svg", { width: width !== null && width !== void 0 ? width : '100%', height: height !== null && height !== void 0 ? height : '650px', className: classNames.chart },
93
- React.createElement("foreignObject", { x: "0", y: "0", width: "100%", height: "100%" },
97
+ }, className: classNames.root, style: { height: "".concat(totalHeight, "px"), overflow: 'hidden' } },
98
+ React.createElement("svg", { width: svgWidth, height: "".concat(totalHeight, "px"), className: classNames.chart },
99
+ chartTitle && (React.createElement(index_1.ChartTitle, { title: chartTitle, x: titleX, maxWidth: titleMaxWidth, className: classNames.chartTitle, titleStyles: this.props.titleStyles, tooltipClassName: classNames.svgTooltip })),
100
+ React.createElement("foreignObject", { x: "0", y: titleHeight, width: "100%", height: tableHeight },
94
101
  React.createElement("div", { style: {
95
102
  maxHeight: height ? "".concat(height, "px") : '650px',
96
103
  overflowY: 'auto',
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTable.base.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IChartTableProps } from './ChartTable.types';\nimport { IChartTableStyleProps, IChartTableStyles } from '../../index';\nimport { classNamesFunction, getRTL, initializeComponentRef } from '@fluentui/react/lib/Utilities';\nimport { IImageExportOptions } from '../../types/index';\nimport { exportChartsAsImage } from '../../utilities/image-export-utils';\nimport * as d3 from 'd3-color';\nimport { getColorContrast } from '../../utilities/colors';\nimport { ITheme } from '@fluentui/react';\nimport { resolveCSSVariables } from '../../utilities/utilities';\nimport type { JSXElement } from '@fluentui/utilities';\n\nfunction invertHexColor(hex: string, theme: ITheme): string {\n const color = d3.color(hex);\n if (!color) {\n return theme.semanticColors.bodyText!;\n }\n const rgb = color.rgb();\n return d3.rgb(255 - rgb.r, 255 - rgb.g, 255 - rgb.b).formatHex();\n}\n\nfunction getSafeBackgroundColor(\n theme: ITheme,\n chartContainer: HTMLElement,\n foreground?: string,\n background?: string,\n): string {\n const fallbackFg = theme.semanticColors.bodyText;\n const fallbackBg = theme.semanticColors.bodyBackground;\n if (!chartContainer) {\n return fallbackBg;\n }\n\n const resolvedFg = resolveCSSVariables(chartContainer, foreground || fallbackFg);\n const resolvedBg = resolveCSSVariables(chartContainer, background || fallbackBg);\n\n const fg = d3.color(resolvedFg);\n const bg = d3.color(resolvedBg);\n\n if (!fg || !bg) {\n return resolvedBg;\n }\n const contrast = getColorContrast(fg.formatHex(), bg.formatHex());\n if (contrast >= 3) {\n return bg.formatHex();\n }\n\n const invertedBg = invertHexColor(bg.formatHex(), theme);\n const invertedContrast = getColorContrast(fg.formatHex(), invertedBg);\n return invertedContrast >= 3 ? invertedBg : fallbackBg;\n}\n\nconst getClassNames = classNamesFunction<IChartTableStyleProps, IChartTableStyles>();\n\nexport class ChartTableBase extends React.Component<IChartTableProps> {\n private _isRTL: boolean;\n private _rootElem: HTMLDivElement | null;\n\n constructor(props: IChartTableProps) {\n super(props);\n initializeComponentRef(this);\n this._isRTL = getRTL(props.theme);\n }\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return exportChartsAsImage([{ container: this._rootElem }], undefined, this._isRTL, opts);\n };\n\n public render(): JSXElement {\n const { headers, rows, width, height, styles, theme } = this.props;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n });\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n const bgColorSet = new Set<string>();\n headers.forEach(header => {\n const bg = header?.style?.backgroundColor;\n const normalized = d3.color(bg || '')?.formatHex();\n if (normalized) {\n bgColorSet.add(normalized);\n }\n });\n let sharedBackgroundColor: string | undefined;\n let useSharedBackground = false;\n\n /*\n If we have only one or two unique background colors, we can consider using a shared background color\n for the table headers. This is to ensure better contrast with the foreground text.\n For size 1, we will consider that as default color if it satisfies the contrast ratio.\n There could also be a scenario where backgroundcolor array is of size 2, for eg: [\"dimsgray\", \"gray\"],\n which will assign 1st column header bg color to dimsgray and rest to gray. so our logic of shared background\n color won't run here. So will consider for size 2 as well.\n For size greater than this, we will consider that user wants different colors and will let color contrast fail\n if any.\n */\n if (bgColorSet.size === 1 || bgColorSet.size === 2) {\n const candidateBg = bgColorSet.size === 1 ? Array.from(bgColorSet)[0] : Array.from(bgColorSet)[1];\n for (const header of headers) {\n const fg = header?.style?.color;\n if (fg && getColorContrast(fg, candidateBg) >= 3) {\n sharedBackgroundColor = candidateBg;\n useSharedBackground = true;\n break;\n }\n }\n }\n\n return (\n <div\n ref={el => {\n this._rootElem = el;\n }}\n className={classNames.root}\n style={{ height: height ? `${height}px` : '650px', overflow: 'hidden' }}\n >\n <svg width={width ?? '100%'} height={height ?? '650px'} className={classNames.chart}>\n <foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classNames.table}\n style={{\n width: width ? `${width}px` : '100%',\n }}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => {\n const style = { ...header?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n\n if (useSharedBackground) {\n style.backgroundColor = sharedBackgroundColor;\n } else if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(theme!, this._rootElem!, fg, bg);\n }\n return (\n <th key={idx} className={classNames.headerCell} style={style}>\n {header.value}\n </th>\n );\n })}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => {\n const style = { ...cell?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(theme!, this._rootElem!, fg, bg);\n }\n return (\n <td key={colIdx} className={classNames.bodyCell} style={style}>\n {cell.value}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ChartTable.base.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IChartTableProps } from './ChartTable.types';\nimport { IChartTableStyleProps, IChartTableStyles } from '../../index';\nimport { classNamesFunction, getRTL, initializeComponentRef } from '@fluentui/react/lib/Utilities';\nimport { IImageExportOptions } from '../../types/index';\nimport { exportChartsAsImage } from '../../utilities/image-export-utils';\nimport { ChartTitle } from '../../utilities/index';\nimport * as d3 from 'd3-color';\nimport { getColorContrast } from '../../utilities/colors';\nimport { ITheme } from '@fluentui/react';\nimport { resolveCSSVariables } from '../../utilities/utilities';\nimport type { JSXElement } from '@fluentui/utilities';\n\nfunction invertHexColor(hex: string, theme: ITheme): string {\n const color = d3.color(hex);\n if (!color) {\n return theme.semanticColors.bodyText!;\n }\n const rgb = color.rgb();\n return d3.rgb(255 - rgb.r, 255 - rgb.g, 255 - rgb.b).formatHex();\n}\n\nfunction getSafeBackgroundColor(\n theme: ITheme,\n chartContainer: HTMLElement,\n foreground?: string,\n background?: string,\n): string {\n const fallbackFg = theme.semanticColors.bodyText;\n const fallbackBg = theme.semanticColors.bodyBackground;\n if (!chartContainer) {\n return fallbackBg;\n }\n\n const resolvedFg = resolveCSSVariables(chartContainer, foreground || fallbackFg);\n const resolvedBg = resolveCSSVariables(chartContainer, background || fallbackBg);\n\n const fg = d3.color(resolvedFg);\n const bg = d3.color(resolvedBg);\n\n if (!fg || !bg) {\n return resolvedBg;\n }\n const contrast = getColorContrast(fg.formatHex(), bg.formatHex());\n if (contrast >= 3) {\n return bg.formatHex();\n }\n\n const invertedBg = invertHexColor(bg.formatHex(), theme);\n const invertedContrast = getColorContrast(fg.formatHex(), invertedBg);\n return invertedContrast >= 3 ? invertedBg : fallbackBg;\n}\n\nconst getClassNames = classNamesFunction<IChartTableStyleProps, IChartTableStyles>();\n\nexport class ChartTableBase extends React.Component<IChartTableProps> {\n private _isRTL: boolean;\n private _rootElem: HTMLDivElement | null;\n\n constructor(props: IChartTableProps) {\n super(props);\n initializeComponentRef(this);\n this._isRTL = getRTL(props.theme);\n }\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return exportChartsAsImage([{ container: this._rootElem }], undefined, this._isRTL, opts);\n };\n\n public render(): JSXElement {\n const { headers, rows, width, height, styles, theme, chartTitle } = this.props;\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n });\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n const bgColorSet = new Set<string>();\n headers.forEach(header => {\n const bg = header?.style?.backgroundColor;\n const normalized = d3.color(bg || '')?.formatHex();\n if (normalized) {\n bgColorSet.add(normalized);\n }\n });\n let sharedBackgroundColor: string | undefined;\n let useSharedBackground = false;\n\n /*\n If we have only one or two unique background colors, we can consider using a shared background color\n for the table headers. This is to ensure better contrast with the foreground text.\n For size 1, we will consider that as default color if it satisfies the contrast ratio.\n There could also be a scenario where backgroundcolor array is of size 2, for eg: [\"dimsgray\", \"gray\"],\n which will assign 1st column header bg color to dimsgray and rest to gray. so our logic of shared background\n color won't run here. So will consider for size 2 as well.\n For size greater than this, we will consider that user wants different colors and will let color contrast fail\n if any.\n */\n if (bgColorSet.size === 1 || bgColorSet.size === 2) {\n const candidateBg = bgColorSet.size === 1 ? Array.from(bgColorSet)[0] : Array.from(bgColorSet)[1];\n for (const header of headers) {\n const fg = header?.style?.color;\n if (fg && getColorContrast(fg, candidateBg) >= 3) {\n sharedBackgroundColor = candidateBg;\n useSharedBackground = true;\n break;\n }\n }\n }\n\n const titleHeight = chartTitle ? 30 : 0;\n const totalHeight = typeof height === 'number' ? height : 650;\n const tableHeight = `${totalHeight - titleHeight}px`;\n const svgWidth = typeof width === 'number' ? width : '100%';\n const titleMaxWidth = typeof width === 'number' ? width - 20 : undefined;\n const titleX = typeof width === 'number' ? width / 2 : 0;\n\n return (\n <div\n ref={el => {\n this._rootElem = el;\n }}\n className={classNames.root}\n style={{ height: `${totalHeight}px`, overflow: 'hidden' }}\n >\n <svg width={svgWidth} height={`${totalHeight}px`} className={classNames.chart}>\n {chartTitle && (\n <ChartTitle\n title={chartTitle}\n x={titleX}\n maxWidth={titleMaxWidth}\n className={classNames.chartTitle}\n titleStyles={this.props.titleStyles}\n tooltipClassName={classNames.svgTooltip}\n />\n )}\n <foreignObject x=\"0\" y={titleHeight} width=\"100%\" height={tableHeight}>\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classNames.table}\n style={{\n width: width ? `${width}px` : '100%',\n }}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => {\n const style = { ...header?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n\n if (useSharedBackground) {\n style.backgroundColor = sharedBackgroundColor;\n } else if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(theme!, this._rootElem!, fg, bg);\n }\n return (\n <th key={idx} className={classNames.headerCell} style={style}>\n {header.value}\n </th>\n );\n })}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => {\n const style = { ...cell?.style };\n const fg = style.color;\n const bg = style.backgroundColor;\n if (fg || bg) {\n style.backgroundColor = getSafeBackgroundColor(theme!, this._rootElem!, fg, bg);\n }\n return (\n <td key={colIdx} className={classNames.bodyCell} style={style}>\n {cell.value}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "tslib", "@fluentui/react/lib/Styling"], function (require, exports, tslib_1, Styling_1) {
1
+ define(["require", "exports", "tslib", "@fluentui/react/lib/Styling", "../../utilities/Common.styles"], function (require, exports, tslib_1, Styling_1, Common_styles_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getStyles = void 0;
@@ -25,6 +25,8 @@ define(["require", "exports", "tslib", "@fluentui/react/lib/Styling"], function
25
25
  color: 'WindowText',
26
26
  },
27
27
  _b) }),
28
+ chartTitle: (0, Common_styles_1.getChartTitleStyle)(theme),
29
+ svgTooltip: (0, Common_styles_1.getSvgTooltipStyle)(theme),
28
30
  };
29
31
  };
30
32
  exports.getStyles = getStyles;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTable.styles.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.styles.ts"],"names":[],"mappings":";;;;IAGO,IAAM,SAAS,GAAG,UAAC,KAA4B;;QAC5C,IAAA,KAAK,GAAK,KAAK,MAAV,CAAW;QAChB,IAAA,KAAK,GAAK,KAAM,MAAX,CAAY;QAEzB,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,MAAM;aAClB;YACD,KAAK,EAAE;gBACL,cAAc,EAAE,UAAU;aAC3B;YACD,UAAU,wCACL,KAAK,CAAC,KAAK,KACd,UAAU,EAAE,qBAAW,CAAC,QAAQ,EAChC,eAAe,EAAE,KAAM,CAAC,OAAO,CAAC,iBAAiB,EACjD,KAAK,EAAE,KAAM,CAAC,cAAc,CAAC,QAAQ,EACrC,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAa,KAAM,CAAC,OAAO,CAAC,cAAc,CAAE,EACpD,SAAS;oBACP,GAAC,8BAAoB,IAAG;wBACtB,eAAe,EAAE,QAAQ;wBACzB,KAAK,EAAE,YAAY;qBACpB;0BAEJ;YACD,QAAQ,wCACH,KAAK,CAAC,KAAK,KACd,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,oBAAa,KAAM,CAAC,OAAO,CAAC,cAAc,CAAE,EACpD,KAAK,EAAE,KAAM,CAAC,cAAc,CAAC,QAAQ,EACrC,SAAS,EAAE,MAAM,EACjB,SAAS;oBACP,GAAC,8BAAoB,IAAG;wBACtB,KAAK,EAAE,YAAY;qBACpB;0BAEJ;SACF,CAAC;IACJ,CAAC,CAAC;IAxCW,QAAA,SAAS,aAwCpB","sourcesContent":["import { IChartTableStyleProps, IChartTableStyles } from './ChartTable.types';\nimport { FontWeights, HighContrastSelector } from '@fluentui/react/lib/Styling';\n\nexport const getStyles = (props: IChartTableStyleProps): IChartTableStyles => {\n const { theme } = props;\n const { fonts } = theme!;\n\n return {\n root: {\n width: '100%',\n overflowX: 'auto',\n },\n table: {\n borderCollapse: 'collapse',\n },\n headerCell: {\n ...fonts.small,\n fontWeight: FontWeights.semibold,\n backgroundColor: theme!.palette.neutralQuaternary,\n color: theme!.semanticColors.bodyText,\n padding: '8px',\n textAlign: 'left',\n border: `2px solid ${theme!.palette.neutralLighter}`,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n color: 'WindowText',\n },\n },\n },\n bodyCell: {\n ...fonts.small,\n padding: '8px',\n border: `2px solid ${theme!.palette.neutralLighter}`,\n color: theme!.semanticColors.bodyText,\n textAlign: 'left',\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n },\n },\n },\n };\n};\n"]}
1
+ {"version":3,"file":"ChartTable.styles.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.styles.ts"],"names":[],"mappings":";;;;IAIO,IAAM,SAAS,GAAG,UAAC,KAA4B;;QAC5C,IAAA,KAAK,GAAK,KAAK,MAAV,CAAW;QAChB,IAAA,KAAK,GAAK,KAAM,MAAX,CAAY;QAEzB,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;gBACb,SAAS,EAAE,MAAM;aAClB;YACD,KAAK,EAAE;gBACL,cAAc,EAAE,UAAU;aAC3B;YACD,UAAU,wCACL,KAAK,CAAC,KAAK,KACd,UAAU,EAAE,qBAAW,CAAC,QAAQ,EAChC,eAAe,EAAE,KAAM,CAAC,OAAO,CAAC,iBAAiB,EACjD,KAAK,EAAE,KAAM,CAAC,cAAc,CAAC,QAAQ,EACrC,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAa,KAAM,CAAC,OAAO,CAAC,cAAc,CAAE,EACpD,SAAS;oBACP,GAAC,8BAAoB,IAAG;wBACtB,eAAe,EAAE,QAAQ;wBACzB,KAAK,EAAE,YAAY;qBACpB;0BAEJ;YACD,QAAQ,wCACH,KAAK,CAAC,KAAK,KACd,OAAO,EAAE,KAAK,EACd,MAAM,EAAE,oBAAa,KAAM,CAAC,OAAO,CAAC,cAAc,CAAE,EACpD,KAAK,EAAE,KAAM,CAAC,cAAc,CAAC,QAAQ,EACrC,SAAS,EAAE,MAAM,EACjB,SAAS;oBACP,GAAC,8BAAoB,IAAG;wBACtB,KAAK,EAAE,YAAY;qBACpB;0BAEJ;YACD,UAAU,EAAE,IAAA,kCAAkB,EAAC,KAAM,CAAC;YACtC,UAAU,EAAE,IAAA,kCAAkB,EAAC,KAAM,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC;IA1CW,QAAA,SAAS,aA0CpB","sourcesContent":["import { IChartTableStyleProps, IChartTableStyles } from './ChartTable.types';\nimport { FontWeights, HighContrastSelector } from '@fluentui/react/lib/Styling';\nimport { getChartTitleStyle, getSvgTooltipStyle } from '../../utilities/Common.styles';\n\nexport const getStyles = (props: IChartTableStyleProps): IChartTableStyles => {\n const { theme } = props;\n const { fonts } = theme!;\n\n return {\n root: {\n width: '100%',\n overflowX: 'auto',\n },\n table: {\n borderCollapse: 'collapse',\n },\n headerCell: {\n ...fonts.small,\n fontWeight: FontWeights.semibold,\n backgroundColor: theme!.palette.neutralQuaternary,\n color: theme!.semanticColors.bodyText,\n padding: '8px',\n textAlign: 'left',\n border: `2px solid ${theme!.palette.neutralLighter}`,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n color: 'WindowText',\n },\n },\n },\n bodyCell: {\n ...fonts.small,\n padding: '8px',\n border: `2px solid ${theme!.palette.neutralLighter}`,\n color: theme!.semanticColors.bodyText,\n textAlign: 'left',\n selectors: {\n [HighContrastSelector]: {\n color: 'WindowText',\n },\n },\n },\n chartTitle: getChartTitleStyle(theme!),\n svgTooltip: getSvgTooltipStyle(theme!),\n };\n};\n"]}
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { ITheme, IStyle } from '@fluentui/react/lib/Styling';
3
3
  import { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';
4
4
  import { IChart } from '../../types/index';
5
+ import { ITitleStyles } from '../../utilities/Common.styles';
5
6
  export interface IChartTableStyleProps {
6
7
  theme: ITheme;
7
8
  className?: string;
@@ -11,6 +12,10 @@ export interface IChartTableStyleProps {
11
12
  * {@docCategory ChartTable}
12
13
  */
13
14
  export interface IChartTableProps {
15
+ /**
16
+ * Title styles configuration for the chart title
17
+ */
18
+ titleStyles?: ITitleStyles;
14
19
  /**
15
20
  * 1d or 2d Array of header values.
16
21
  */
@@ -35,6 +40,10 @@ export interface IChartTableProps {
35
40
  * @default '650px'
36
41
  */
37
42
  height?: string | number;
43
+ /**
44
+ * Chart title to display above the table
45
+ */
46
+ chartTitle?: string;
38
47
  /**
39
48
  * Theme (provided through customization)
40
49
  */
@@ -63,4 +72,6 @@ export interface IChartTableStyles {
63
72
  headerCell?: IStyle;
64
73
  bodyCell?: IStyle;
65
74
  chart?: IStyle;
75
+ chartTitle?: IStyle;
76
+ svgTooltip?: IStyle;
66
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTable.types.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IChart } from '../../types/index';\n\nexport interface IChartTableStyleProps {\n theme: ITheme;\n className?: string;\n}\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface IChartTableProps {\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IChartTableStyleProps, IChartTableStyles>;\n\n /**\n * Optional callback to access the IChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IChart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface IChartTableStyles {\n root?: IStyle;\n table?: IStyle;\n headerCell?: IStyle;\n bodyCell?: IStyle;\n chart?: IStyle;\n}\n"]}
1
+ {"version":3,"file":"ChartTable.types.js","sourceRoot":"../src/","sources":["components/ChartTable/ChartTable.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IChart } from '../../types/index';\nimport { ITitleStyles } from '../../utilities/Common.styles';\n\nexport interface IChartTableStyleProps {\n theme: ITheme;\n className?: string;\n}\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface IChartTableProps {\n /**\n * Title styles configuration for the chart title\n */\n titleStyles?: ITitleStyles;\n\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Chart title to display above the table\n */\n chartTitle?: string;\n\n /**\n * Theme (provided through customization)\n */\n theme?: ITheme;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<IChartTableStyleProps, IChartTableStyles>;\n\n /**\n * Optional callback to access the IChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IChart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface IChartTableStyles {\n root?: IStyle;\n table?: IStyle;\n headerCell?: IStyle;\n bodyCell?: IStyle;\n chart?: IStyle;\n chartTitle?: IStyle;\n svgTooltip?: IStyle;\n}\n"]}
@@ -273,7 +273,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
273
273
  };
274
274
  };
275
275
  exports.ChartAnnotationLayer = React.memo(function (props) {
276
- var annotationsProp = props.annotations, theme = props.theme, context = props.context, className = props.className;
276
+ var annotationsProp = props.annotations, theme = props.theme, context = props.context, className = props.className, hideDefaultStyles = props.hideDefaultStyles;
277
277
  var classNames = getClassNames(ChartAnnotationLayer_styles_1.getStyles, { theme: theme, className: className });
278
278
  var idPrefix = React.useMemo(function () { return (0, Utilities_1.getId)('chart-annotation'); }, []);
279
279
  var _a = React.useState({}), measurements = _a[0], setMeasurements = _a[1];
@@ -347,9 +347,13 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
347
347
  var backgroundOpacity = (_e = (_d = annotation.style) === null || _d === void 0 ? void 0 : _d.opacity) !== null && _e !== void 0 ? _e : ChartAnnotationLayer_styles_1.DEFAULT_ANNOTATION_BACKGROUND_OPACITY;
348
348
  var baseBackgroundColor = (_g = (_f = annotation.style) === null || _f === void 0 ? void 0 : _f.backgroundColor) !== null && _g !== void 0 ? _g : theme.semanticColors.bodyBackground;
349
349
  var hasCustomBackground = ((_h = annotation.style) === null || _h === void 0 ? void 0 : _h.backgroundColor) !== undefined || ((_j = annotation.style) === null || _j === void 0 ? void 0 : _j.opacity) !== undefined;
350
- var containerStyle = tslib_1.__assign(tslib_1.__assign({ maxWidth: layout === null || layout === void 0 ? void 0 : layout.maxWidth }, (hasCustomBackground && {
351
- backgroundColor: (0, ChartAnnotationLayer_styles_1.applyOpacityToColor)(baseBackgroundColor, backgroundOpacity),
352
- })), { borderColor: (_k = annotation.style) === null || _k === void 0 ? void 0 : _k.borderColor, borderWidth: (_l = annotation.style) === null || _l === void 0 ? void 0 : _l.borderWidth, borderStyle: (_o = (_m = annotation.style) === null || _m === void 0 ? void 0 : _m.borderStyle) !== null && _o !== void 0 ? _o : (((_p = annotation.style) === null || _p === void 0 ? void 0 : _p.borderColor) ? 'solid' : undefined), borderRadius: (_q = annotation.style) === null || _q === void 0 ? void 0 : _q.borderRadius, padding: (_r = annotation.style) === null || _r === void 0 ? void 0 : _r.padding, boxShadow: (_s = annotation.style) === null || _s === void 0 ? void 0 : _s.boxShadow });
350
+ var containerStyle = tslib_1.__assign(tslib_1.__assign({ maxWidth: layout === null || layout === void 0 ? void 0 : layout.maxWidth }, (hasCustomBackground
351
+ ? {
352
+ backgroundColor: (0, ChartAnnotationLayer_styles_1.applyOpacityToColor)(baseBackgroundColor, backgroundOpacity),
353
+ }
354
+ : !hideDefaultStyles && {
355
+ backgroundColor: (0, ChartAnnotationLayer_styles_1.applyOpacityToColor)(theme.semanticColors.bodyBackground, ChartAnnotationLayer_styles_1.DEFAULT_ANNOTATION_BACKGROUND_OPACITY),
356
+ })), { borderColor: (_k = annotation.style) === null || _k === void 0 ? void 0 : _k.borderColor, borderWidth: (_l = annotation.style) === null || _l === void 0 ? void 0 : _l.borderWidth, borderStyle: (_o = (_m = annotation.style) === null || _m === void 0 ? void 0 : _m.borderStyle) !== null && _o !== void 0 ? _o : (((_p = annotation.style) === null || _p === void 0 ? void 0 : _p.borderColor) ? 'solid' : undefined), borderRadius: (_q = annotation.style) === null || _q === void 0 ? void 0 : _q.borderRadius, padding: (_r = annotation.style) === null || _r === void 0 ? void 0 : _r.padding, boxShadow: (_s = annotation.style) === null || _s === void 0 ? void 0 : _s.boxShadow });
353
357
  var contentStyle = {
354
358
  color: (_t = annotation.style) === null || _t === void 0 ? void 0 : _t.textColor,
355
359
  fontSize: (_u = annotation.style) === null || _u === void 0 ? void 0 : _u.fontSize,
@@ -412,6 +416,7 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
412
416
  }
413
417
  }
414
418
  var measurementStyle = tslib_1.__assign({ position: 'absolute', left: topLeftX, top: topLeftY, pointerEvents: 'none', visibility: 'hidden' }, containerStyle);
419
+ var annotationClass = hideDefaultStyles ? classNames.annotationNoDefaults : classNames.annotation;
415
420
  if (!isMeasurementValid) {
416
421
  measurementElements.push(React.createElement("div", { key: "".concat(key, "-measurement"), ref: function (node) {
417
422
  if (node) {
@@ -420,11 +425,11 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
420
425
  updateMeasurement(key, rect.width, rect.height, measurementSignature);
421
426
  }
422
427
  }
423
- }, className: (0, Utilities_1.css)(classNames.annotation, classNames.measurement, layout === null || layout === void 0 ? void 0 : layout.className, (_5 = annotation.style) === null || _5 === void 0 ? void 0 : _5.className), style: measurementStyle, "aria-hidden": true, "data-annotation-key": key, "data-chart-annotation-measurement": "true" },
428
+ }, className: (0, Utilities_1.css)(annotationClass, classNames.measurement, layout === null || layout === void 0 ? void 0 : layout.className, (_5 = annotation.style) === null || _5 === void 0 ? void 0 : _5.className), style: measurementStyle, "aria-hidden": true, "data-annotation-key": key, "data-chart-annotation-measurement": "true" },
424
429
  React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, layout === null || layout === void 0 ? void 0 : layout.className, (_6 = annotation.style) === null || _6 === void 0 ? void 0 : _6.className), style: contentStyle }, renderSimpleMarkup(annotationMarkupNodes, "".concat(key, "-measurement")))));
425
430
  }
426
431
  annotationForeignObjects.push(React.createElement("foreignObject", { key: "".concat(key, "-annotation"), x: topLeftX, y: topLeftY, width: width, height: height, className: (0, Utilities_1.css)(classNames.annotationForeignObject), "data-annotation-key": key },
427
- React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotation, layout === null || layout === void 0 ? void 0 : layout.className, (_7 = annotation.style) === null || _7 === void 0 ? void 0 : _7.className), style: containerStyle, "data-annotation-key": key },
432
+ React.createElement("div", { className: (0, Utilities_1.css)(annotationClass, layout === null || layout === void 0 ? void 0 : layout.className, (_7 = annotation.style) === null || _7 === void 0 ? void 0 : _7.className), style: containerStyle, "data-annotation-key": key },
428
433
  React.createElement("div", { className: (0, Utilities_1.css)(classNames.annotationContent, (_8 = annotation.style) === null || _8 === void 0 ? void 0 : _8.className), style: contentStyle, role: (_10 = (_9 = annotation.accessibility) === null || _9 === void 0 ? void 0 : _9.role) !== null && _10 !== void 0 ? _10 : 'note', "aria-label": (_12 = (_11 = annotation.accessibility) === null || _11 === void 0 ? void 0 : _11.ariaLabel) !== null && _12 !== void 0 ? _12 : (annotationPlainText ? annotationPlainText : undefined), "aria-describedby": (_13 = annotation.accessibility) === null || _13 === void 0 ? void 0 : _13.ariaDescribedBy, "data-chart-annotation": "true", "data-annotation-key": key }, renderSimpleMarkup(annotationMarkupNodes, "".concat(key, "-content"))))));
429
434
  if (annotation.connector) {
430
435
  var _14 = annotation.connector, _15 = _14.startPadding, startPadding = _15 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_START_PADDING : _15, _16 = _14.endPadding, endPadding = _16 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_END_PADDING : _16, _17 = _14.strokeColor, strokeColor = _17 === void 0 ? (0, ChartAnnotationLayer_styles_1.getDefaultConnectorStrokeColor)(theme) : _17, _18 = _14.strokeWidth, strokeWidth = _18 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_STROKE_WIDTH : _18, dashArray = _14.dashArray, _19 = _14.arrow, arrow = _19 === void 0 ? ChartAnnotationLayer_styles_1.DEFAULT_CONNECTOR_ARROW : _19;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartAnnotationLayer.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, css, getId } from '@fluentui/react/lib/Utilities';\nimport type { IChartAnnotation } from '../../../types/IChartAnnotation';\nimport type {\n IAnnotationPoint,\n IChartAnnotationContext,\n IChartAnnotationLayerProps,\n ConnectorRenderData,\n IResolvedAnnotationPosition,\n} from './ChartAnnotationLayer.types';\nimport {\n applyOpacityToColor,\n DEFAULT_ANNOTATION_BACKGROUND_OPACITY,\n DEFAULT_CONNECTOR_ARROW,\n DEFAULT_CONNECTOR_END_PADDING,\n DEFAULT_CONNECTOR_START_PADDING,\n DEFAULT_CONNECTOR_STROKE_WIDTH,\n getDefaultConnectorStrokeColor,\n getStyles,\n} from './ChartAnnotationLayer.styles';\nimport type { IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles } from './ChartAnnotationLayer.styles';\n\nconst getClassNames = classNamesFunction<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles>();\n\nconst DEFAULT_HORIZONTAL_ALIGN = 'center';\nconst DEFAULT_VERTICAL_ALIGN = 'middle';\nconst DEFAULT_FOREIGN_OBJECT_WIDTH = 180;\nconst DEFAULT_FOREIGN_OBJECT_HEIGHT = 60;\nconst MIN_ARROW_SIZE = 6;\nconst MAX_ARROW_SIZE = 24;\nconst ARROW_SIZE_SCALE = 0.35;\nconst MAX_SIMPLE_MARKUP_DEPTH = 5;\nconst CHAR_CODE_LESS_THAN = '<'.codePointAt(0)!;\nconst CHAR_CODE_GREATER_THAN = '>'.codePointAt(0)!;\nconst getAnnotationKey = (annotation: IChartAnnotation, index: number) =>\n annotation.id ??\n (typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined) ??\n `annotation-${index}`;\n\ntype SimpleMarkupNode =\n | { type: 'text'; content: string }\n | { type: 'br' }\n | { type: 'element'; tag: 'b' | 'i'; children: SimpleMarkupNode[] };\n\ntype ElementMarkupNode = Extract<SimpleMarkupNode, { type: 'element' }>;\n\ntype StackFrame = {\n node: ElementMarkupNode | null;\n};\n\nconst decodeSimpleMarkupInput = (input: string): string => {\n const namedEntities: Record<string, string> = {\n amp: '&',\n quot: '\"',\n apos: \"'\",\n nbsp: '\\u00a0',\n };\n\n const withBasicEntitiesDecoded = input.replace(/&(#x?[0-9a-f]+|#\\d+|[a-z][\\w-]*);/gi, (match, entity) => {\n const lower = entity.toLowerCase();\n if (lower === 'lt' || lower === 'gt') {\n return `&${lower};`;\n }\n if (lower.startsWith('#')) {\n const isHex = lower[1] === 'x';\n const digits = lower.slice(isHex ? 2 : 1);\n const codePoint = Number.parseInt(digits, isHex ? 16 : 10);\n if (Number.isNaN(codePoint)) {\n return match;\n }\n if (codePoint === CHAR_CODE_LESS_THAN) {\n return '&lt;';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '&gt;';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/&lt;([^;]+)&gt;/gi, (match, inner) => {\n const normalized = inner.trim().replace(/\\s+/g, ' ');\n const lower = normalized.toLowerCase();\n\n switch (lower) {\n case 'b':\n return '<b>';\n case '/b':\n return '</b>';\n case 'i':\n return '<i>';\n case '/i':\n return '</i>';\n case 'br':\n case 'br/':\n case 'br /':\n return '<br />';\n default:\n return match;\n }\n });\n};\n\nconst appendTextNode = (nodes: SimpleMarkupNode[], text: string) => {\n if (text.length === 0) {\n return;\n }\n\n const last = nodes[nodes.length - 1];\n if (last && last.type === 'text') {\n last.content += text;\n } else {\n nodes.push({ type: 'text', content: text });\n }\n};\n\nconst serializeSimpleMarkup = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '<br />';\n }\n return `<${node.tag}>${serializeSimpleMarkup(node.children)}</${node.tag}>`;\n })\n .join('');\n\nconst parseSimpleMarkup = (input: string): SimpleMarkupNode[] => {\n if (!input) {\n return [];\n }\n\n const decodedInput = decodeSimpleMarkupInput(input);\n const rootChildren: SimpleMarkupNode[] = [];\n const stack: StackFrame[] = [{ node: null }];\n const currentChildren = () => stack[stack.length - 1].node?.children ?? rootChildren;\n const tagRegex = /<\\/?([a-z]+)\\s*\\/?\\s*>/gi;\n let lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = tagRegex.exec(decodedInput)) !== null) {\n const [fullMatch, rawTagName] = match;\n const tagName = rawTagName.toLowerCase();\n const isClosing = fullMatch.startsWith('</');\n const isSelfClosing = /\\/\\s*>$/.test(fullMatch);\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex, match.index));\n lastIndex = match.index + fullMatch.length;\n\n if (tagName === 'br' && !isClosing) {\n currentChildren().push({ type: 'br' });\n continue;\n }\n\n if ((tagName === 'b' || tagName === 'i') && !isSelfClosing) {\n if (isClosing) {\n const top = stack[stack.length - 1].node;\n if (stack.length > 1 && top?.tag === tagName) {\n stack.pop();\n } else {\n appendTextNode(currentChildren(), fullMatch);\n }\n } else {\n if (stack.length - 1 >= MAX_SIMPLE_MARKUP_DEPTH) {\n appendTextNode(currentChildren(), fullMatch);\n continue;\n }\n const elementNode: ElementMarkupNode = {\n type: 'element',\n tag: tagName as 'b' | 'i',\n children: [],\n };\n currentChildren().push(elementNode);\n stack.push({ node: elementNode });\n }\n continue;\n }\n\n appendTextNode(currentChildren(), fullMatch);\n }\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex));\n\n while (stack.length > 1) {\n const unclosed = stack.pop()!;\n const elementNode = unclosed.node;\n if (!elementNode) {\n continue;\n }\n\n const parentChildren = stack[stack.length - 1].node?.children ?? rootChildren;\n const lastChild = parentChildren[parentChildren.length - 1];\n if (lastChild === elementNode) {\n parentChildren.pop();\n } else {\n const nodeIndex = parentChildren.indexOf(elementNode);\n if (nodeIndex !== -1) {\n parentChildren.splice(nodeIndex, 1);\n }\n }\n\n appendTextNode(\n parentChildren,\n `<${elementNode.tag}>${serializeSimpleMarkup(elementNode.children)}</${elementNode.tag}>`,\n );\n }\n\n return rootChildren;\n};\n\nconst simpleMarkupNodesToPlainText = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '\\n';\n }\n return simpleMarkupNodesToPlainText(node.children);\n })\n .join('');\n\nconst renderSimpleMarkupNodeList = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode[] =>\n nodes.map((node, index) => {\n const key = `${keyPrefix}-${index}`;\n\n if (node.type === 'text') {\n return <React.Fragment key={key}>{node.content}</React.Fragment>;\n }\n\n if (node.type === 'br') {\n return <br key={key} />;\n }\n\n const Tag = node.tag === 'b' ? 'strong' : 'em';\n return React.createElement(Tag, { key }, ...renderSimpleMarkupNodeList(node.children, key));\n });\n\nconst renderSimpleMarkup = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode => {\n const rendered = renderSimpleMarkupNodeList(nodes, keyPrefix);\n return rendered.length <= 1 ? rendered[0] ?? null : rendered;\n};\n\nconst normalizeBandOffset = (\n scale: (((value: unknown) => number) & { bandwidth?: () => number }) | undefined,\n value: unknown,\n) => {\n const position = scale?.(value as never);\n if (typeof position !== 'number' || Number.isNaN(position)) {\n return undefined;\n }\n if (scale && typeof scale.bandwidth === 'function') {\n return position + scale.bandwidth() / 2;\n }\n return position;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\nconst createMeasurementSignature = (\n annotationContentSignature: string,\n containerStyle: React.CSSProperties,\n contentStyle: React.CSSProperties,\n layoutClassName?: string,\n styleClassName?: string,\n) =>\n JSON.stringify({\n annotationContentSignature,\n containerStyle,\n contentStyle,\n layoutClassName: layoutClassName ?? '',\n styleClassName: styleClassName ?? '',\n });\n\ntype MeasurementEntry = { width: number; height: number; signature: string };\n\nconst resolveCoordinates = (\n annotation: IChartAnnotation,\n context: IChartAnnotationContext,\n): IResolvedAnnotationPosition | undefined => {\n const { coordinates, layout } = annotation;\n\n if (!coordinates) {\n return undefined;\n }\n\n const offsetX = layout?.offsetX ?? 0;\n const offsetY = layout?.offsetY ?? 0;\n\n const anchor: IAnnotationPoint = { x: 0, y: 0 };\n\n switch (coordinates.type) {\n case 'data': {\n const { x, y, yAxis = 'primary' } = coordinates;\n const xScale = context.xScale;\n const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;\n if (!xScale || !yScale) {\n return undefined;\n }\n const xValue = normalizeBandOffset(xScale, x instanceof Date ? x.getTime() : x);\n const yValue = normalizeBandOffset(yScale, y instanceof Date ? y.getTime() : y);\n if (typeof xValue !== 'number' || typeof yValue !== 'number') {\n return undefined;\n }\n anchor.x = xValue;\n anchor.y = yValue;\n break;\n }\n case 'relative': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + context.plotRect.width * coordinates.x;\n anchor.y = context.plotRect.y + context.plotRect.height * coordinates.y;\n break;\n }\n case 'pixel': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + coordinates.x;\n anchor.y = context.plotRect.y + coordinates.y;\n break;\n }\n default:\n return undefined;\n }\n\n let left = anchor.x + offsetX;\n let top = anchor.y + offsetY;\n\n if (layout?.clipToBounds) {\n left = clamp(left, context.plotRect.x, context.plotRect.x + context.plotRect.width);\n top = clamp(top, context.plotRect.y, context.plotRect.y + context.plotRect.height);\n }\n\n return {\n anchor,\n point: { x: left, y: top },\n };\n};\n\nexport const ChartAnnotationLayer: React.FC<IChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, theme, context, className } = props;\n\n const classNames = getClassNames(getStyles, { theme, className });\n const idPrefix = React.useMemo(() => getId('chart-annotation'), []);\n\n const [measurements, setMeasurements] = React.useState<Record<string, MeasurementEntry>>({});\n\n const resolvedAnnotations = React.useMemo(\n () =>\n (annotationsProp ?? []).map((annotation, index) => ({ annotation, key: getAnnotationKey(annotation, index) })),\n [annotationsProp],\n );\n\n React.useEffect(() => {\n setMeasurements(prev => {\n if (resolvedAnnotations.length === 0) {\n if (Object.keys(prev).length === 0) {\n return prev;\n }\n return {} as Record<string, MeasurementEntry>;\n }\n\n const next: Record<string, MeasurementEntry> = {};\n resolvedAnnotations.forEach(({ key }) => {\n if (prev[key]) {\n next[key] = prev[key];\n }\n });\n\n if (Object.keys(next).length === Object.keys(prev).length) {\n let identical = true;\n for (const key of Object.keys(next)) {\n if (next[key] !== prev[key]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return prev;\n }\n }\n\n return next;\n });\n }, [resolvedAnnotations]);\n\n const updateMeasurement = React.useCallback((key: string, width: number, height: number, signature: string) => {\n setMeasurements(prev => {\n const prevEntry = prev[key];\n if (\n prevEntry &&\n prevEntry.signature === signature &&\n Math.abs(prevEntry.width - width) < 0.5 &&\n Math.abs(prevEntry.height - height) < 0.5\n ) {\n return prev;\n }\n\n if (width === 0 && height === 0) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { width, height, signature },\n };\n });\n }, []);\n\n const annotationForeignObjects: React.ReactNode[] = [];\n const measurementElements: React.ReactNode[] = [];\n const connectors: ConnectorRenderData[] = [];\n\n resolvedAnnotations.forEach(({ annotation, key }) => {\n const resolved = resolveCoordinates(annotation, context);\n if (!resolved) {\n return;\n }\n\n const rawAnnotationText = annotation.text === undefined || annotation.text === null ? '' : String(annotation.text);\n const annotationMarkupNodes = parseSimpleMarkup(rawAnnotationText);\n const annotationMarkupSignature = JSON.stringify(annotationMarkupNodes);\n const annotationPlainText = simpleMarkupNodesToPlainText(annotationMarkupNodes);\n\n const layout = annotation.layout;\n const horizontalAlign = layout?.align ?? DEFAULT_HORIZONTAL_ALIGN;\n const verticalAlign = layout?.verticalAlign ?? DEFAULT_VERTICAL_ALIGN;\n const backgroundOpacity = annotation.style?.opacity ?? DEFAULT_ANNOTATION_BACKGROUND_OPACITY;\n const baseBackgroundColor = annotation.style?.backgroundColor ?? theme.semanticColors.bodyBackground;\n const hasCustomBackground =\n annotation.style?.backgroundColor !== undefined || annotation.style?.opacity !== undefined;\n\n const containerStyle: React.CSSProperties = {\n maxWidth: layout?.maxWidth,\n ...(hasCustomBackground && {\n backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity),\n }),\n borderColor: annotation.style?.borderColor,\n borderWidth: annotation.style?.borderWidth,\n borderStyle: annotation.style?.borderStyle ?? (annotation.style?.borderColor ? 'solid' : undefined),\n borderRadius: annotation.style?.borderRadius,\n padding: annotation.style?.padding,\n boxShadow: annotation.style?.boxShadow,\n };\n\n const contentStyle: React.CSSProperties = {\n color: annotation.style?.textColor,\n fontSize: annotation.style?.fontSize,\n fontWeight: annotation.style?.fontWeight,\n opacity: 1,\n };\n\n if (typeof annotation.style?.rotation === 'number' && !Number.isNaN(annotation.style.rotation)) {\n containerStyle.transform = `rotate(${annotation.style.rotation}deg)`;\n containerStyle.transformOrigin = '50% 50%';\n }\n\n const measurementSignature = createMeasurementSignature(\n annotationMarkupSignature,\n containerStyle,\n contentStyle,\n layout?.className,\n annotation.style?.className,\n );\n const measurementEntry = measurements[key];\n const isMeasurementValid = measurementEntry?.signature === measurementSignature;\n const measuredSize = isMeasurementValid ? measurementEntry : undefined;\n const width = Math.max(measuredSize?.width ?? layout?.maxWidth ?? DEFAULT_FOREIGN_OBJECT_WIDTH, 1);\n const height = Math.max(measuredSize?.height ?? DEFAULT_FOREIGN_OBJECT_HEIGHT, 1);\n\n const offsetX = horizontalAlign === 'center' ? -width / 2 : horizontalAlign === 'end' ? -width : 0;\n const offsetY = verticalAlign === 'middle' ? -height / 2 : verticalAlign === 'bottom' ? -height : 0;\n\n const baseTopLeftX = resolved.point.x + offsetX;\n const baseTopLeftY = resolved.point.y + offsetY;\n\n const usePlotBounds = layout?.clipToBounds !== false;\n const viewportX = usePlotBounds ? context.plotRect.x : 0;\n const viewportY = usePlotBounds ? context.plotRect.y : 0;\n const viewportWidth = usePlotBounds ? context.plotRect.width : context.svgRect.width ?? 0;\n const viewportHeight = usePlotBounds ? context.plotRect.height : context.svgRect.height ?? 0;\n\n const maxTopLeftX = viewportWidth > 0 ? viewportX + viewportWidth - width : baseTopLeftX;\n const maxTopLeftY = viewportHeight > 0 ? viewportY + viewportHeight - height : baseTopLeftY;\n\n let topLeftX = viewportWidth > 0 ? clamp(baseTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : baseTopLeftX;\n let topLeftY = viewportHeight > 0 ? clamp(baseTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : baseTopLeftY;\n\n let displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n\n if (annotation.connector) {\n const startPadding = annotation.connector.startPadding ?? 12;\n const endPadding = annotation.connector.endPadding ?? 0;\n const minArrowClearance = 6;\n const minDistance = Math.max(startPadding + endPadding + minArrowClearance, startPadding);\n\n const dx = displayPoint.x - resolved.anchor.x;\n const dy = displayPoint.y - resolved.anchor.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance < minDistance) {\n const fallbackDirection: IAnnotationPoint = { x: 0, y: -1 };\n const ux = distance === 0 ? fallbackDirection.x : dx / distance;\n const uy = distance === 0 ? fallbackDirection.y : dy / distance;\n\n const desiredDisplayX = resolved.anchor.x + ux * minDistance;\n const desiredDisplayY = resolved.anchor.y + uy * minDistance;\n\n let desiredTopLeftX = desiredDisplayX + offsetX;\n let desiredTopLeftY = desiredDisplayY + offsetY;\n\n desiredTopLeftX =\n viewportWidth > 0 ? clamp(desiredTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : desiredTopLeftX;\n desiredTopLeftY =\n viewportHeight > 0 ? clamp(desiredTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : desiredTopLeftY;\n\n topLeftX = desiredTopLeftX;\n topLeftY = desiredTopLeftY;\n displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n }\n }\n\n const measurementStyle: React.CSSProperties = {\n position: 'absolute',\n left: topLeftX,\n top: topLeftY,\n pointerEvents: 'none',\n visibility: 'hidden',\n ...containerStyle,\n };\n\n if (!isMeasurementValid) {\n measurementElements.push(\n <div\n key={`${key}-measurement`}\n ref={node => {\n if (node) {\n const rect = node.getBoundingClientRect();\n if (rect.width !== 0 || rect.height !== 0) {\n updateMeasurement(key, rect.width, rect.height, measurementSignature);\n }\n }\n }}\n className={css(classNames.annotation, classNames.measurement, layout?.className, annotation.style?.className)}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n <div\n className={css(classNames.annotationContent, layout?.className, annotation.style?.className)}\n style={contentStyle}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-measurement`)}\n </div>\n </div>,\n );\n }\n\n annotationForeignObjects.push(\n <foreignObject\n key={`${key}-annotation`}\n x={topLeftX}\n y={topLeftY}\n width={width}\n height={height}\n className={css(classNames.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.annotation, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.annotationContent, annotation.style?.className)}\n style={contentStyle}\n role={annotation.accessibility?.role ?? 'note'}\n aria-label={annotation.accessibility?.ariaLabel ?? (annotationPlainText ? annotationPlainText : undefined)}\n aria-describedby={annotation.accessibility?.ariaDescribedBy}\n data-chart-annotation=\"true\"\n data-annotation-key={key}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-content`)}\n </div>\n </div>\n </foreignObject>,\n );\n\n if (annotation.connector) {\n const {\n startPadding = DEFAULT_CONNECTOR_START_PADDING,\n endPadding = DEFAULT_CONNECTOR_END_PADDING,\n strokeColor = getDefaultConnectorStrokeColor(theme),\n strokeWidth = DEFAULT_CONNECTOR_STROKE_WIDTH,\n dashArray,\n arrow = DEFAULT_CONNECTOR_ARROW,\n } = annotation.connector;\n\n const dx = resolved.anchor.x - displayPoint.x;\n const dy = resolved.anchor.y - displayPoint.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const ux = dx / distance;\n const uy = dy / distance;\n\n const sizeBasis = Math.max(1, Math.min(width, height));\n const proportionalSize = sizeBasis * ARROW_SIZE_SCALE;\n const maxByPadding = startPadding > 0 ? startPadding * 1.25 : MAX_ARROW_SIZE;\n const maxByDistance = distance * 0.6;\n const markerSize = clamp(proportionalSize, MIN_ARROW_SIZE, Math.min(MAX_ARROW_SIZE, maxByPadding, maxByDistance));\n const markerStrokeWidth = clamp(strokeWidth, 1, markerSize / 2);\n\n const start: IAnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: IAnnotationPoint = {\n x: resolved.anchor.x - ux * endPadding,\n y: resolved.anchor.y - uy * endPadding,\n };\n\n connectors.push({\n key: `${key}-connector`,\n start,\n end,\n strokeColor,\n strokeWidth,\n dashArray,\n arrow,\n markerSize,\n markerStrokeWidth,\n });\n }\n });\n\n if (annotationForeignObjects.length === 0 && connectors.length === 0) {\n return null;\n }\n\n const viewBoxWidth = context.svgRect.width || 1;\n const viewBoxHeight = context.svgRect.height || 1;\n\n const markerDefs: React.ReactNode[] = [];\n\n const createMarkerId = (color: string, position: 'start' | 'end', size: number, markerStrokeWidth: number) => {\n const id = `${idPrefix}-${position}-${markerDefs.length}`;\n const refY = size / 2;\n const refX = position === 'end' ? size : 0;\n const pathEnd = `M0 0 L ${size} ${refY} L0 ${size} Z`;\n const pathStart = `M ${size} 0 L0 ${refY} L ${size} ${size} Z`;\n const path = position === 'end' ? pathEnd : pathStart;\n\n markerDefs.push(\n <marker\n key={id}\n id={id}\n markerWidth={size}\n markerHeight={size}\n viewBox={`0 0 ${size} ${size}`}\n refX={refX}\n refY={refY}\n orient=\"auto\"\n markerUnits=\"userSpaceOnUse\"\n >\n <path\n d={path}\n fill={color}\n stroke={color}\n strokeWidth={markerStrokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </marker>,\n );\n\n return id;\n };\n\n const connectorElements = connectors.map(connector => {\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n if (connector.arrow === 'start' || connector.arrow === 'both') {\n markerStart = createMarkerId(connector.strokeColor, 'start', connector.markerSize, connector.markerStrokeWidth);\n }\n if (connector.arrow === 'end' || connector.arrow === 'both') {\n markerEnd = createMarkerId(connector.strokeColor, 'end', connector.markerSize, connector.markerStrokeWidth);\n }\n\n return (\n <line\n key={connector.key}\n x1={connector.start.x}\n y1={connector.start.y}\n x2={connector.end.x}\n y2={connector.end.y}\n stroke={connector.strokeColor}\n strokeWidth={connector.strokeWidth}\n strokeDasharray={connector.dashArray}\n strokeLinecap=\"round\"\n markerStart={markerStart ? `url(#${markerStart})` : undefined}\n markerEnd={markerEnd ? `url(#${markerEnd})` : undefined}\n />\n );\n });\n\n const shouldRenderSvg = connectors.length > 0 || annotationForeignObjects.length > 0;\n return (\n <div className={classNames.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classNames.connectorLayer}\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n preserveAspectRatio=\"none\"\n data-chart-annotation-svg=\"true\"\n >\n {markerDefs.length > 0 && <defs>{markerDefs}</defs>}\n {connectorElements.length > 0 && (\n <g aria-hidden=\"true\" className={classNames.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"]}
1
+ {"version":3,"file":"ChartAnnotationLayer.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNamesFunction, css, getId } from '@fluentui/react/lib/Utilities';\nimport type { IChartAnnotation } from '../../../types/IChartAnnotation';\nimport type {\n IAnnotationPoint,\n IChartAnnotationContext,\n IChartAnnotationLayerProps,\n ConnectorRenderData,\n IResolvedAnnotationPosition,\n} from './ChartAnnotationLayer.types';\nimport {\n applyOpacityToColor,\n DEFAULT_ANNOTATION_BACKGROUND_OPACITY,\n DEFAULT_CONNECTOR_ARROW,\n DEFAULT_CONNECTOR_END_PADDING,\n DEFAULT_CONNECTOR_START_PADDING,\n DEFAULT_CONNECTOR_STROKE_WIDTH,\n getDefaultConnectorStrokeColor,\n getStyles,\n} from './ChartAnnotationLayer.styles';\nimport type { IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles } from './ChartAnnotationLayer.styles';\n\nconst getClassNames = classNamesFunction<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles>();\n\nconst DEFAULT_HORIZONTAL_ALIGN = 'center';\nconst DEFAULT_VERTICAL_ALIGN = 'middle';\nconst DEFAULT_FOREIGN_OBJECT_WIDTH = 180;\nconst DEFAULT_FOREIGN_OBJECT_HEIGHT = 60;\nconst MIN_ARROW_SIZE = 6;\nconst MAX_ARROW_SIZE = 24;\nconst ARROW_SIZE_SCALE = 0.35;\nconst MAX_SIMPLE_MARKUP_DEPTH = 5;\nconst CHAR_CODE_LESS_THAN = '<'.codePointAt(0)!;\nconst CHAR_CODE_GREATER_THAN = '>'.codePointAt(0)!;\nconst getAnnotationKey = (annotation: IChartAnnotation, index: number) =>\n annotation.id ??\n (typeof annotation.text === 'string' || typeof annotation.text === 'number' ? String(annotation.text) : undefined) ??\n `annotation-${index}`;\n\ntype SimpleMarkupNode =\n | { type: 'text'; content: string }\n | { type: 'br' }\n | { type: 'element'; tag: 'b' | 'i'; children: SimpleMarkupNode[] };\n\ntype ElementMarkupNode = Extract<SimpleMarkupNode, { type: 'element' }>;\n\ntype StackFrame = {\n node: ElementMarkupNode | null;\n};\n\nconst decodeSimpleMarkupInput = (input: string): string => {\n const namedEntities: Record<string, string> = {\n amp: '&',\n quot: '\"',\n apos: \"'\",\n nbsp: '\\u00a0',\n };\n\n const withBasicEntitiesDecoded = input.replace(/&(#x?[0-9a-f]+|#\\d+|[a-z][\\w-]*);/gi, (match, entity) => {\n const lower = entity.toLowerCase();\n if (lower === 'lt' || lower === 'gt') {\n return `&${lower};`;\n }\n if (lower.startsWith('#')) {\n const isHex = lower[1] === 'x';\n const digits = lower.slice(isHex ? 2 : 1);\n const codePoint = Number.parseInt(digits, isHex ? 16 : 10);\n if (Number.isNaN(codePoint)) {\n return match;\n }\n if (codePoint === CHAR_CODE_LESS_THAN) {\n return '&lt;';\n }\n if (codePoint === CHAR_CODE_GREATER_THAN) {\n return '&gt;';\n }\n return String.fromCodePoint(codePoint);\n }\n return namedEntities[lower] ?? match;\n });\n\n return withBasicEntitiesDecoded.replace(/&lt;([^;]+)&gt;/gi, (match, inner) => {\n const normalized = inner.trim().replace(/\\s+/g, ' ');\n const lower = normalized.toLowerCase();\n\n switch (lower) {\n case 'b':\n return '<b>';\n case '/b':\n return '</b>';\n case 'i':\n return '<i>';\n case '/i':\n return '</i>';\n case 'br':\n case 'br/':\n case 'br /':\n return '<br />';\n default:\n return match;\n }\n });\n};\n\nconst appendTextNode = (nodes: SimpleMarkupNode[], text: string) => {\n if (text.length === 0) {\n return;\n }\n\n const last = nodes[nodes.length - 1];\n if (last && last.type === 'text') {\n last.content += text;\n } else {\n nodes.push({ type: 'text', content: text });\n }\n};\n\nconst serializeSimpleMarkup = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '<br />';\n }\n return `<${node.tag}>${serializeSimpleMarkup(node.children)}</${node.tag}>`;\n })\n .join('');\n\nconst parseSimpleMarkup = (input: string): SimpleMarkupNode[] => {\n if (!input) {\n return [];\n }\n\n const decodedInput = decodeSimpleMarkupInput(input);\n const rootChildren: SimpleMarkupNode[] = [];\n const stack: StackFrame[] = [{ node: null }];\n const currentChildren = () => stack[stack.length - 1].node?.children ?? rootChildren;\n const tagRegex = /<\\/?([a-z]+)\\s*\\/?\\s*>/gi;\n let lastIndex = 0;\n\n let match: RegExpExecArray | null;\n while ((match = tagRegex.exec(decodedInput)) !== null) {\n const [fullMatch, rawTagName] = match;\n const tagName = rawTagName.toLowerCase();\n const isClosing = fullMatch.startsWith('</');\n const isSelfClosing = /\\/\\s*>$/.test(fullMatch);\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex, match.index));\n lastIndex = match.index + fullMatch.length;\n\n if (tagName === 'br' && !isClosing) {\n currentChildren().push({ type: 'br' });\n continue;\n }\n\n if ((tagName === 'b' || tagName === 'i') && !isSelfClosing) {\n if (isClosing) {\n const top = stack[stack.length - 1].node;\n if (stack.length > 1 && top?.tag === tagName) {\n stack.pop();\n } else {\n appendTextNode(currentChildren(), fullMatch);\n }\n } else {\n if (stack.length - 1 >= MAX_SIMPLE_MARKUP_DEPTH) {\n appendTextNode(currentChildren(), fullMatch);\n continue;\n }\n const elementNode: ElementMarkupNode = {\n type: 'element',\n tag: tagName as 'b' | 'i',\n children: [],\n };\n currentChildren().push(elementNode);\n stack.push({ node: elementNode });\n }\n continue;\n }\n\n appendTextNode(currentChildren(), fullMatch);\n }\n\n appendTextNode(currentChildren(), decodedInput.slice(lastIndex));\n\n while (stack.length > 1) {\n const unclosed = stack.pop()!;\n const elementNode = unclosed.node;\n if (!elementNode) {\n continue;\n }\n\n const parentChildren = stack[stack.length - 1].node?.children ?? rootChildren;\n const lastChild = parentChildren[parentChildren.length - 1];\n if (lastChild === elementNode) {\n parentChildren.pop();\n } else {\n const nodeIndex = parentChildren.indexOf(elementNode);\n if (nodeIndex !== -1) {\n parentChildren.splice(nodeIndex, 1);\n }\n }\n\n appendTextNode(\n parentChildren,\n `<${elementNode.tag}>${serializeSimpleMarkup(elementNode.children)}</${elementNode.tag}>`,\n );\n }\n\n return rootChildren;\n};\n\nconst simpleMarkupNodesToPlainText = (nodes: SimpleMarkupNode[]): string =>\n nodes\n .map(node => {\n if (node.type === 'text') {\n return node.content;\n }\n if (node.type === 'br') {\n return '\\n';\n }\n return simpleMarkupNodesToPlainText(node.children);\n })\n .join('');\n\nconst renderSimpleMarkupNodeList = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode[] =>\n nodes.map((node, index) => {\n const key = `${keyPrefix}-${index}`;\n\n if (node.type === 'text') {\n return <React.Fragment key={key}>{node.content}</React.Fragment>;\n }\n\n if (node.type === 'br') {\n return <br key={key} />;\n }\n\n const Tag = node.tag === 'b' ? 'strong' : 'em';\n return React.createElement(Tag, { key }, ...renderSimpleMarkupNodeList(node.children, key));\n });\n\nconst renderSimpleMarkup = (nodes: SimpleMarkupNode[], keyPrefix: string): React.ReactNode => {\n const rendered = renderSimpleMarkupNodeList(nodes, keyPrefix);\n return rendered.length <= 1 ? rendered[0] ?? null : rendered;\n};\n\nconst normalizeBandOffset = (\n scale: (((value: unknown) => number) & { bandwidth?: () => number }) | undefined,\n value: unknown,\n) => {\n const position = scale?.(value as never);\n if (typeof position !== 'number' || Number.isNaN(position)) {\n return undefined;\n }\n if (scale && typeof scale.bandwidth === 'function') {\n return position + scale.bandwidth() / 2;\n }\n return position;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.max(min, Math.min(max, value));\n\nconst createMeasurementSignature = (\n annotationContentSignature: string,\n containerStyle: React.CSSProperties,\n contentStyle: React.CSSProperties,\n layoutClassName?: string,\n styleClassName?: string,\n) =>\n JSON.stringify({\n annotationContentSignature,\n containerStyle,\n contentStyle,\n layoutClassName: layoutClassName ?? '',\n styleClassName: styleClassName ?? '',\n });\n\ntype MeasurementEntry = { width: number; height: number; signature: string };\n\nconst resolveCoordinates = (\n annotation: IChartAnnotation,\n context: IChartAnnotationContext,\n): IResolvedAnnotationPosition | undefined => {\n const { coordinates, layout } = annotation;\n\n if (!coordinates) {\n return undefined;\n }\n\n const offsetX = layout?.offsetX ?? 0;\n const offsetY = layout?.offsetY ?? 0;\n\n const anchor: IAnnotationPoint = { x: 0, y: 0 };\n\n switch (coordinates.type) {\n case 'data': {\n const { x, y, yAxis = 'primary' } = coordinates;\n const xScale = context.xScale;\n const yScale = yAxis === 'secondary' ? context.yScaleSecondary : context.yScalePrimary;\n if (!xScale || !yScale) {\n return undefined;\n }\n const xValue = normalizeBandOffset(xScale, x instanceof Date ? x.getTime() : x);\n const yValue = normalizeBandOffset(yScale, y instanceof Date ? y.getTime() : y);\n if (typeof xValue !== 'number' || typeof yValue !== 'number') {\n return undefined;\n }\n anchor.x = xValue;\n anchor.y = yValue;\n break;\n }\n case 'relative': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + context.plotRect.width * coordinates.x;\n anchor.y = context.plotRect.y + context.plotRect.height * coordinates.y;\n break;\n }\n case 'pixel': {\n if (typeof coordinates.x !== 'number' || typeof coordinates.y !== 'number') {\n return undefined;\n }\n anchor.x = context.plotRect.x + coordinates.x;\n anchor.y = context.plotRect.y + coordinates.y;\n break;\n }\n default:\n return undefined;\n }\n\n let left = anchor.x + offsetX;\n let top = anchor.y + offsetY;\n\n if (layout?.clipToBounds) {\n left = clamp(left, context.plotRect.x, context.plotRect.x + context.plotRect.width);\n top = clamp(top, context.plotRect.y, context.plotRect.y + context.plotRect.height);\n }\n\n return {\n anchor,\n point: { x: left, y: top },\n };\n};\n\nexport const ChartAnnotationLayer: React.FC<IChartAnnotationLayerProps> = React.memo(props => {\n const { annotations: annotationsProp, theme, context, className, hideDefaultStyles } = props;\n\n const classNames = getClassNames(getStyles, { theme, className });\n const idPrefix = React.useMemo(() => getId('chart-annotation'), []);\n\n const [measurements, setMeasurements] = React.useState<Record<string, MeasurementEntry>>({});\n\n const resolvedAnnotations = React.useMemo(\n () =>\n (annotationsProp ?? []).map((annotation, index) => ({ annotation, key: getAnnotationKey(annotation, index) })),\n [annotationsProp],\n );\n\n React.useEffect(() => {\n setMeasurements(prev => {\n if (resolvedAnnotations.length === 0) {\n if (Object.keys(prev).length === 0) {\n return prev;\n }\n return {} as Record<string, MeasurementEntry>;\n }\n\n const next: Record<string, MeasurementEntry> = {};\n resolvedAnnotations.forEach(({ key }) => {\n if (prev[key]) {\n next[key] = prev[key];\n }\n });\n\n if (Object.keys(next).length === Object.keys(prev).length) {\n let identical = true;\n for (const key of Object.keys(next)) {\n if (next[key] !== prev[key]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return prev;\n }\n }\n\n return next;\n });\n }, [resolvedAnnotations]);\n\n const updateMeasurement = React.useCallback((key: string, width: number, height: number, signature: string) => {\n setMeasurements(prev => {\n const prevEntry = prev[key];\n if (\n prevEntry &&\n prevEntry.signature === signature &&\n Math.abs(prevEntry.width - width) < 0.5 &&\n Math.abs(prevEntry.height - height) < 0.5\n ) {\n return prev;\n }\n\n if (width === 0 && height === 0) {\n return prev;\n }\n\n return {\n ...prev,\n [key]: { width, height, signature },\n };\n });\n }, []);\n\n const annotationForeignObjects: React.ReactNode[] = [];\n const measurementElements: React.ReactNode[] = [];\n const connectors: ConnectorRenderData[] = [];\n\n resolvedAnnotations.forEach(({ annotation, key }) => {\n const resolved = resolveCoordinates(annotation, context);\n if (!resolved) {\n return;\n }\n\n const rawAnnotationText = annotation.text === undefined || annotation.text === null ? '' : String(annotation.text);\n const annotationMarkupNodes = parseSimpleMarkup(rawAnnotationText);\n const annotationMarkupSignature = JSON.stringify(annotationMarkupNodes);\n const annotationPlainText = simpleMarkupNodesToPlainText(annotationMarkupNodes);\n\n const layout = annotation.layout;\n const horizontalAlign = layout?.align ?? DEFAULT_HORIZONTAL_ALIGN;\n const verticalAlign = layout?.verticalAlign ?? DEFAULT_VERTICAL_ALIGN;\n const backgroundOpacity = annotation.style?.opacity ?? DEFAULT_ANNOTATION_BACKGROUND_OPACITY;\n const baseBackgroundColor = annotation.style?.backgroundColor ?? theme.semanticColors.bodyBackground;\n const hasCustomBackground =\n annotation.style?.backgroundColor !== undefined || annotation.style?.opacity !== undefined;\n\n const containerStyle: React.CSSProperties = {\n maxWidth: layout?.maxWidth,\n ...(hasCustomBackground\n ? {\n backgroundColor: applyOpacityToColor(baseBackgroundColor, backgroundOpacity),\n }\n : !hideDefaultStyles && {\n backgroundColor: applyOpacityToColor(\n theme.semanticColors.bodyBackground,\n DEFAULT_ANNOTATION_BACKGROUND_OPACITY,\n ),\n }),\n borderColor: annotation.style?.borderColor,\n borderWidth: annotation.style?.borderWidth,\n borderStyle: annotation.style?.borderStyle ?? (annotation.style?.borderColor ? 'solid' : undefined),\n borderRadius: annotation.style?.borderRadius,\n padding: annotation.style?.padding,\n boxShadow: annotation.style?.boxShadow,\n };\n\n const contentStyle: React.CSSProperties = {\n color: annotation.style?.textColor,\n fontSize: annotation.style?.fontSize,\n fontWeight: annotation.style?.fontWeight,\n opacity: 1,\n };\n\n if (typeof annotation.style?.rotation === 'number' && !Number.isNaN(annotation.style.rotation)) {\n containerStyle.transform = `rotate(${annotation.style.rotation}deg)`;\n containerStyle.transformOrigin = '50% 50%';\n }\n\n const measurementSignature = createMeasurementSignature(\n annotationMarkupSignature,\n containerStyle,\n contentStyle,\n layout?.className,\n annotation.style?.className,\n );\n const measurementEntry = measurements[key];\n const isMeasurementValid = measurementEntry?.signature === measurementSignature;\n const measuredSize = isMeasurementValid ? measurementEntry : undefined;\n const width = Math.max(measuredSize?.width ?? layout?.maxWidth ?? DEFAULT_FOREIGN_OBJECT_WIDTH, 1);\n const height = Math.max(measuredSize?.height ?? DEFAULT_FOREIGN_OBJECT_HEIGHT, 1);\n\n const offsetX = horizontalAlign === 'center' ? -width / 2 : horizontalAlign === 'end' ? -width : 0;\n const offsetY = verticalAlign === 'middle' ? -height / 2 : verticalAlign === 'bottom' ? -height : 0;\n\n const baseTopLeftX = resolved.point.x + offsetX;\n const baseTopLeftY = resolved.point.y + offsetY;\n\n const usePlotBounds = layout?.clipToBounds !== false;\n const viewportX = usePlotBounds ? context.plotRect.x : 0;\n const viewportY = usePlotBounds ? context.plotRect.y : 0;\n const viewportWidth = usePlotBounds ? context.plotRect.width : context.svgRect.width ?? 0;\n const viewportHeight = usePlotBounds ? context.plotRect.height : context.svgRect.height ?? 0;\n\n const maxTopLeftX = viewportWidth > 0 ? viewportX + viewportWidth - width : baseTopLeftX;\n const maxTopLeftY = viewportHeight > 0 ? viewportY + viewportHeight - height : baseTopLeftY;\n\n let topLeftX = viewportWidth > 0 ? clamp(baseTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : baseTopLeftX;\n let topLeftY = viewportHeight > 0 ? clamp(baseTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : baseTopLeftY;\n\n let displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n\n if (annotation.connector) {\n const startPadding = annotation.connector.startPadding ?? 12;\n const endPadding = annotation.connector.endPadding ?? 0;\n const minArrowClearance = 6;\n const minDistance = Math.max(startPadding + endPadding + minArrowClearance, startPadding);\n\n const dx = displayPoint.x - resolved.anchor.x;\n const dy = displayPoint.y - resolved.anchor.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance < minDistance) {\n const fallbackDirection: IAnnotationPoint = { x: 0, y: -1 };\n const ux = distance === 0 ? fallbackDirection.x : dx / distance;\n const uy = distance === 0 ? fallbackDirection.y : dy / distance;\n\n const desiredDisplayX = resolved.anchor.x + ux * minDistance;\n const desiredDisplayY = resolved.anchor.y + uy * minDistance;\n\n let desiredTopLeftX = desiredDisplayX + offsetX;\n let desiredTopLeftY = desiredDisplayY + offsetY;\n\n desiredTopLeftX =\n viewportWidth > 0 ? clamp(desiredTopLeftX, viewportX, Math.max(viewportX, maxTopLeftX)) : desiredTopLeftX;\n desiredTopLeftY =\n viewportHeight > 0 ? clamp(desiredTopLeftY, viewportY, Math.max(viewportY, maxTopLeftY)) : desiredTopLeftY;\n\n topLeftX = desiredTopLeftX;\n topLeftY = desiredTopLeftY;\n displayPoint = {\n x: topLeftX - offsetX,\n y: topLeftY - offsetY,\n };\n }\n }\n\n const measurementStyle: React.CSSProperties = {\n position: 'absolute',\n left: topLeftX,\n top: topLeftY,\n pointerEvents: 'none',\n visibility: 'hidden',\n ...containerStyle,\n };\n\n const annotationClass = hideDefaultStyles ? classNames.annotationNoDefaults : classNames.annotation;\n\n if (!isMeasurementValid) {\n measurementElements.push(\n <div\n key={`${key}-measurement`}\n ref={node => {\n if (node) {\n const rect = node.getBoundingClientRect();\n if (rect.width !== 0 || rect.height !== 0) {\n updateMeasurement(key, rect.width, rect.height, measurementSignature);\n }\n }\n }}\n className={css(annotationClass, classNames.measurement, layout?.className, annotation.style?.className)}\n style={measurementStyle}\n aria-hidden={true}\n data-annotation-key={key}\n data-chart-annotation-measurement=\"true\"\n >\n <div\n className={css(classNames.annotationContent, layout?.className, annotation.style?.className)}\n style={contentStyle}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-measurement`)}\n </div>\n </div>,\n );\n }\n\n annotationForeignObjects.push(\n <foreignObject\n key={`${key}-annotation`}\n x={topLeftX}\n y={topLeftY}\n width={width}\n height={height}\n className={css(classNames.annotationForeignObject)}\n data-annotation-key={key}\n >\n <div\n className={css(annotationClass, layout?.className, annotation.style?.className)}\n style={containerStyle}\n data-annotation-key={key}\n >\n <div\n className={css(classNames.annotationContent, annotation.style?.className)}\n style={contentStyle}\n role={annotation.accessibility?.role ?? 'note'}\n aria-label={annotation.accessibility?.ariaLabel ?? (annotationPlainText ? annotationPlainText : undefined)}\n aria-describedby={annotation.accessibility?.ariaDescribedBy}\n data-chart-annotation=\"true\"\n data-annotation-key={key}\n >\n {renderSimpleMarkup(annotationMarkupNodes, `${key}-content`)}\n </div>\n </div>\n </foreignObject>,\n );\n\n if (annotation.connector) {\n const {\n startPadding = DEFAULT_CONNECTOR_START_PADDING,\n endPadding = DEFAULT_CONNECTOR_END_PADDING,\n strokeColor = getDefaultConnectorStrokeColor(theme),\n strokeWidth = DEFAULT_CONNECTOR_STROKE_WIDTH,\n dashArray,\n arrow = DEFAULT_CONNECTOR_ARROW,\n } = annotation.connector;\n\n const dx = resolved.anchor.x - displayPoint.x;\n const dy = resolved.anchor.y - displayPoint.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 1;\n const ux = dx / distance;\n const uy = dy / distance;\n\n const sizeBasis = Math.max(1, Math.min(width, height));\n const proportionalSize = sizeBasis * ARROW_SIZE_SCALE;\n const maxByPadding = startPadding > 0 ? startPadding * 1.25 : MAX_ARROW_SIZE;\n const maxByDistance = distance * 0.6;\n const markerSize = clamp(proportionalSize, MIN_ARROW_SIZE, Math.min(MAX_ARROW_SIZE, maxByPadding, maxByDistance));\n const markerStrokeWidth = clamp(strokeWidth, 1, markerSize / 2);\n\n const start: IAnnotationPoint = {\n x: displayPoint.x + ux * startPadding,\n y: displayPoint.y + uy * startPadding,\n };\n\n const end: IAnnotationPoint = {\n x: resolved.anchor.x - ux * endPadding,\n y: resolved.anchor.y - uy * endPadding,\n };\n\n connectors.push({\n key: `${key}-connector`,\n start,\n end,\n strokeColor,\n strokeWidth,\n dashArray,\n arrow,\n markerSize,\n markerStrokeWidth,\n });\n }\n });\n\n if (annotationForeignObjects.length === 0 && connectors.length === 0) {\n return null;\n }\n\n const viewBoxWidth = context.svgRect.width || 1;\n const viewBoxHeight = context.svgRect.height || 1;\n\n const markerDefs: React.ReactNode[] = [];\n\n const createMarkerId = (color: string, position: 'start' | 'end', size: number, markerStrokeWidth: number) => {\n const id = `${idPrefix}-${position}-${markerDefs.length}`;\n const refY = size / 2;\n const refX = position === 'end' ? size : 0;\n const pathEnd = `M0 0 L ${size} ${refY} L0 ${size} Z`;\n const pathStart = `M ${size} 0 L0 ${refY} L ${size} ${size} Z`;\n const path = position === 'end' ? pathEnd : pathStart;\n\n markerDefs.push(\n <marker\n key={id}\n id={id}\n markerWidth={size}\n markerHeight={size}\n viewBox={`0 0 ${size} ${size}`}\n refX={refX}\n refY={refY}\n orient=\"auto\"\n markerUnits=\"userSpaceOnUse\"\n >\n <path\n d={path}\n fill={color}\n stroke={color}\n strokeWidth={markerStrokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </marker>,\n );\n\n return id;\n };\n\n const connectorElements = connectors.map(connector => {\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n if (connector.arrow === 'start' || connector.arrow === 'both') {\n markerStart = createMarkerId(connector.strokeColor, 'start', connector.markerSize, connector.markerStrokeWidth);\n }\n if (connector.arrow === 'end' || connector.arrow === 'both') {\n markerEnd = createMarkerId(connector.strokeColor, 'end', connector.markerSize, connector.markerStrokeWidth);\n }\n\n return (\n <line\n key={connector.key}\n x1={connector.start.x}\n y1={connector.start.y}\n x2={connector.end.x}\n y2={connector.end.y}\n stroke={connector.strokeColor}\n strokeWidth={connector.strokeWidth}\n strokeDasharray={connector.dashArray}\n strokeLinecap=\"round\"\n markerStart={markerStart ? `url(#${markerStart})` : undefined}\n markerEnd={markerEnd ? `url(#${markerEnd})` : undefined}\n />\n );\n });\n\n const shouldRenderSvg = connectors.length > 0 || annotationForeignObjects.length > 0;\n return (\n <div className={classNames.root} role=\"presentation\" data-chart-annotation-layer=\"true\">\n {shouldRenderSvg && (\n <svg\n className={classNames.connectorLayer}\n width=\"100%\"\n height=\"100%\"\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n preserveAspectRatio=\"none\"\n data-chart-annotation-svg=\"true\"\n >\n {markerDefs.length > 0 && <defs>{markerDefs}</defs>}\n {connectorElements.length > 0 && (\n <g aria-hidden=\"true\" className={classNames.connectorGroup}>\n {connectorElements}\n </g>\n )}\n {annotationForeignObjects}\n </svg>\n )}\n {measurementElements}\n </div>\n );\n});\n\nChartAnnotationLayer.displayName = 'ChartAnnotationLayer';\n"]}
@@ -8,6 +8,7 @@ import { ChartAnnotationArrowHead } from '../../../types/IChartAnnotation';
8
8
  export interface IChartAnnotationLayerStyles {
9
9
  root?: IStyle;
10
10
  annotation?: IStyle;
11
+ annotationNoDefaults?: IStyle;
11
12
  connectorLayer?: IStyle;
12
13
  measurement?: IStyle;
13
14
  annotationContent?: IStyle;
@@ -56,12 +56,28 @@ define(["require", "exports", "d3-color"], function (require, exports, d3_color_
56
56
  alignItems: 'center',
57
57
  justifyContent: 'center',
58
58
  textAlign: 'center',
59
- backgroundColor: defaultBackground,
60
59
  color: defaultTextColor,
61
60
  padding: exports.DEFAULT_ANNOTATION_PADDING,
62
61
  borderRadius: 4,
62
+ whiteSpace: 'pre-wrap',
63
+ zIndex: 2,
64
+ backgroundColor: defaultBackground,
63
65
  boxShadow: theme.effects.elevation4,
64
66
  border: "1px solid ".concat(defaultBorderColor),
67
+ },
68
+ ],
69
+ annotationNoDefaults: [
70
+ theme.fonts.small,
71
+ {
72
+ position: 'absolute',
73
+ pointerEvents: 'none',
74
+ display: 'flex',
75
+ alignItems: 'center',
76
+ justifyContent: 'center',
77
+ textAlign: 'center',
78
+ color: defaultTextColor,
79
+ padding: exports.DEFAULT_ANNOTATION_PADDING,
80
+ borderRadius: 4,
65
81
  whiteSpace: 'pre-wrap',
66
82
  zIndex: 2,
67
83
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ChartAnnotationLayer.styles.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.styles.ts"],"names":[],"mappings":";;;;IAsBa,QAAA,qCAAqC,GAAG,GAAG,CAAC;IAC5C,QAAA,0BAA0B,GAAG,SAAS,CAAC;IACvC,QAAA,+BAA+B,GAAG,EAAE,CAAC;IACrC,QAAA,6BAA6B,GAAG,CAAC,CAAC;IAClC,QAAA,8BAA8B,GAAG,CAAC,CAAC;IACnC,QAAA,uBAAuB,GAA6B,KAAK,CAAC;IAEhE,IAAM,mBAAmB,GAAG,UAAC,KAAyB,EAAE,OAAe;QAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC;IAZW,QAAA,mBAAmB,uBAY9B;IAEK,IAAM,mCAAmC,GAAG,UAAC,KAAa;QAC/D,OAAA,IAAA,2BAAmB,EAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,6CAAqC,CAAC;IAA/F,CAA+F,CAAC;IADrF,QAAA,mCAAmC,uCACkD;IAE3F,IAAM,8BAA8B,GAAG,UAAC,KAAa,IAAa,OAAA,KAAK,CAAC,OAAO,CAAC,cAAc,EAA5B,CAA4B,CAAC;IAAzF,QAAA,8BAA8B,kCAA2D;IAE/F,IAAM,SAAS,GAAyF,UAC7G,KAAsC;QAE9B,IAAA,KAAK,GAAgB,KAAK,MAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAW;QACnC,IAAM,iBAAiB,GAAG,IAAA,2CAAmC,EAAC,KAAK,CAAC,CAAC;QACrE,IAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;QACvD,IAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;QAE5D,OAAO;YACL,IAAI,EAAE;gBACJ;oBACE,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,MAAM;oBACrB,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,CAAC;iBACV;gBACD,SAAS;aACV;YACD,UAAU,EAAE;gBACV,KAAK,CAAC,KAAK,CAAC,KAAK;gBACjB;oBACE,QAAQ,EAAE,UAAU;oBACpB,aAAa,EAAE,MAAM;oBACrB,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,SAAS,EAAE,QAAQ;oBACnB,eAAe,EAAE,iBAAiB;oBAClC,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,kCAA0B;oBACnC,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;oBACnC,MAAM,EAAE,oBAAa,kBAAkB,CAAE;oBACzC,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,CAAC;iBACV;aACF;YACD,cAAc,EAAE;gBACd;oBACE,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,MAAM;oBACrB,QAAQ,EAAE,SAAS;iBACpB;aACF;YACD,WAAW,EAAE;gBACX;oBACE,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE,QAAQ;oBACpB,aAAa,EAAE,MAAM;iBACtB;aACF;YACD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,MAAM;iBACtB;aACF;YACD,uBAAuB,EAAE;gBACvB;oBACE,QAAQ,EAAE,SAAS;oBACnB,aAAa,EAAE,MAAM;iBACtB;aACF;YACD,4BAA4B,EAAE;gBAC5B;oBACE,aAAa,EAAE,MAAM;iBACtB;aACF;YACD,kCAAkC,EAAE;gBAClC;oBACE,aAAa,EAAE,MAAM;iBACtB;aACF;YACD,cAAc,EAAE;gBACd;oBACE,aAAa,EAAE,MAAM;iBACtB;aACF;SACF,CAAC;IACJ,CAAC,CAAC;IA1FW,QAAA,SAAS,aA0FpB","sourcesContent":["import { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\n\nexport interface IChartAnnotationLayerStyleProps {\n theme: ITheme;\n className?: string;\n}\nimport { color as d3Color } from 'd3-color';\nimport { ChartAnnotationArrowHead } from '../../../types/IChartAnnotation';\n\nexport interface IChartAnnotationLayerStyles {\n root?: IStyle;\n annotation?: IStyle;\n connectorLayer?: IStyle;\n measurement?: IStyle;\n annotationContent?: IStyle;\n annotationForeignObject?: IStyle;\n annotationContentInteractive?: IStyle;\n annotationForeignObjectInteractive?: IStyle;\n connectorGroup?: IStyle;\n}\n\nexport const DEFAULT_ANNOTATION_BACKGROUND_OPACITY = 0.8;\nexport const DEFAULT_ANNOTATION_PADDING = '4px 8px';\nexport const DEFAULT_CONNECTOR_START_PADDING = 12;\nexport const DEFAULT_CONNECTOR_END_PADDING = 0;\nexport const DEFAULT_CONNECTOR_STROKE_WIDTH = 2;\nexport const DEFAULT_CONNECTOR_ARROW: ChartAnnotationArrowHead = 'end';\n\nexport const applyOpacityToColor = (color: string | undefined, opacity: number): string | undefined => {\n if (!color) {\n return undefined;\n }\n\n const parsed = d3Color(color);\n if (!parsed) {\n return color;\n }\n\n parsed.opacity = Math.max(0, Math.min(1, opacity));\n return parsed.toString();\n};\n\nexport const getDefaultAnnotationBackgroundColor = (theme: ITheme): string | undefined =>\n applyOpacityToColor(theme.semanticColors.bodyBackground, DEFAULT_ANNOTATION_BACKGROUND_OPACITY);\n\nexport const getDefaultConnectorStrokeColor = (theme: ITheme): string => theme.palette.neutralPrimary;\n\nexport const getStyles: IStyleFunctionOrObject<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles> = (\n props: IChartAnnotationLayerStyleProps,\n) => {\n const { theme, className } = props;\n const defaultBackground = getDefaultAnnotationBackgroundColor(theme);\n const defaultTextColor = theme.semanticColors.bodyText;\n const defaultBorderColor = theme.semanticColors.bodyDivider;\n\n return {\n root: [\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n overflow: 'visible',\n zIndex: 1,\n },\n className,\n ],\n annotation: [\n theme.fonts.small,\n {\n position: 'absolute',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n backgroundColor: defaultBackground,\n color: defaultTextColor,\n padding: DEFAULT_ANNOTATION_PADDING,\n borderRadius: 4,\n boxShadow: theme.effects.elevation4,\n border: `1px solid ${defaultBorderColor}`,\n whiteSpace: 'pre-wrap',\n zIndex: 2,\n },\n ],\n connectorLayer: [\n {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n overflow: 'visible',\n },\n ],\n measurement: [\n {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n },\n ],\n annotationContent: [\n {\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n },\n ],\n annotationForeignObject: [\n {\n overflow: 'visible',\n pointerEvents: 'none',\n },\n ],\n annotationContentInteractive: [\n {\n pointerEvents: 'auto',\n },\n ],\n annotationForeignObjectInteractive: [\n {\n pointerEvents: 'auto',\n },\n ],\n connectorGroup: [\n {\n pointerEvents: 'none',\n },\n ],\n };\n};\n"]}
1
+ {"version":3,"file":"ChartAnnotationLayer.styles.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\n\nexport interface IChartAnnotationLayerStyleProps {\n theme: ITheme;\n className?: string;\n}\nimport { color as d3Color } from 'd3-color';\nimport { ChartAnnotationArrowHead } from '../../../types/IChartAnnotation';\n\nexport interface IChartAnnotationLayerStyles {\n root?: IStyle;\n annotation?: IStyle;\n annotationNoDefaults?: IStyle;\n connectorLayer?: IStyle;\n measurement?: IStyle;\n annotationContent?: IStyle;\n annotationForeignObject?: IStyle;\n annotationContentInteractive?: IStyle;\n annotationForeignObjectInteractive?: IStyle;\n connectorGroup?: IStyle;\n}\n\nexport const DEFAULT_ANNOTATION_BACKGROUND_OPACITY = 0.8;\nexport const DEFAULT_ANNOTATION_PADDING = '4px 8px';\nexport const DEFAULT_CONNECTOR_START_PADDING = 12;\nexport const DEFAULT_CONNECTOR_END_PADDING = 0;\nexport const DEFAULT_CONNECTOR_STROKE_WIDTH = 2;\nexport const DEFAULT_CONNECTOR_ARROW: ChartAnnotationArrowHead = 'end';\n\nexport const applyOpacityToColor = (color: string | undefined, opacity: number): string | undefined => {\n if (!color) {\n return undefined;\n }\n\n const parsed = d3Color(color);\n if (!parsed) {\n return color;\n }\n\n parsed.opacity = Math.max(0, Math.min(1, opacity));\n return parsed.toString();\n};\n\nexport const getDefaultAnnotationBackgroundColor = (theme: ITheme): string | undefined =>\n applyOpacityToColor(theme.semanticColors.bodyBackground, DEFAULT_ANNOTATION_BACKGROUND_OPACITY);\n\nexport const getDefaultConnectorStrokeColor = (theme: ITheme): string => theme.palette.neutralPrimary;\n\nexport const getStyles: IStyleFunctionOrObject<IChartAnnotationLayerStyleProps, IChartAnnotationLayerStyles> = (\n props: IChartAnnotationLayerStyleProps,\n) => {\n const { theme, className } = props;\n const defaultBackground = getDefaultAnnotationBackgroundColor(theme);\n const defaultTextColor = theme.semanticColors.bodyText;\n const defaultBorderColor = theme.semanticColors.bodyDivider;\n\n return {\n root: [\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n overflow: 'visible',\n zIndex: 1,\n },\n className,\n ],\n annotation: [\n theme.fonts.small,\n {\n position: 'absolute',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n color: defaultTextColor,\n padding: DEFAULT_ANNOTATION_PADDING,\n borderRadius: 4,\n whiteSpace: 'pre-wrap',\n zIndex: 2,\n backgroundColor: defaultBackground,\n boxShadow: theme.effects.elevation4,\n border: `1px solid ${defaultBorderColor}`,\n },\n ],\n annotationNoDefaults: [\n theme.fonts.small,\n {\n position: 'absolute',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n color: defaultTextColor,\n padding: DEFAULT_ANNOTATION_PADDING,\n borderRadius: 4,\n whiteSpace: 'pre-wrap',\n zIndex: 2,\n },\n ],\n connectorLayer: [\n {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n overflow: 'visible',\n },\n ],\n measurement: [\n {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n },\n ],\n annotationContent: [\n {\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n },\n ],\n annotationForeignObject: [\n {\n overflow: 'visible',\n pointerEvents: 'none',\n },\n ],\n annotationContentInteractive: [\n {\n pointerEvents: 'auto',\n },\n ],\n annotationForeignObjectInteractive: [\n {\n pointerEvents: 'auto',\n },\n ],\n connectorGroup: [\n {\n pointerEvents: 'none',\n },\n ],\n };\n};\n"]}
@@ -32,6 +32,11 @@ export interface IChartAnnotationLayerProps {
32
32
  context: IChartAnnotationContext;
33
33
  theme: ITheme;
34
34
  className?: string;
35
+ /**
36
+ * When true, removes default border, shadow, and background styling from annotations.
37
+ * @default false
38
+ */
39
+ hideDefaultStyles?: boolean;
35
40
  }
36
41
  export interface IResolvedAnnotationPosition {
37
42
  /** Final absolute position after applying layout and offsets */
@@ -1 +1 @@
1
- {"version":3,"file":"ChartAnnotationLayer.types.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ITheme } from '@fluentui/react/lib/Styling';\nimport { IChartAnnotation, ChartAnnotationArrowHead } from '../../../types/IChartAnnotation';\n\nexport interface IAnnotationPoint {\n x: number;\n y: number;\n}\n\nexport interface IAnnotationPlotRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface IChartAnnotationContext {\n /** Rectangle describing the drawable area of the chart (without margins) */\n plotRect: IAnnotationPlotRect;\n /** Size of the owning SVG element */\n svgRect: { width: number; height: number };\n /** Indicates if layout should be mirrored */\n isRtl?: boolean;\n /** Primary x scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: (value: any) => number;\n /** Primary y scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: (value: any) => number;\n /** Secondary y scale when present */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: (value: any) => number;\n}\n\nexport interface IChartAnnotationLayerProps {\n annotations?: IChartAnnotation[];\n context: IChartAnnotationContext;\n theme: ITheme;\n className?: string;\n}\n\nexport interface IResolvedAnnotationPosition {\n /** Final absolute position after applying layout and offsets */\n point: IAnnotationPoint;\n /** Raw anchor position before offsets (used for connectors) */\n anchor: IAnnotationPoint;\n}\n\nexport type ConnectorRenderData = {\n key: string;\n start: IAnnotationPoint;\n end: IAnnotationPoint;\n strokeColor: string;\n strokeWidth: number;\n dashArray?: string;\n arrow: ChartAnnotationArrowHead;\n markerSize: number;\n markerStrokeWidth: number;\n};\n"]}
1
+ {"version":3,"file":"ChartAnnotationLayer.types.js","sourceRoot":"../src/","sources":["components/CommonComponents/Annotations/ChartAnnotationLayer.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ITheme } from '@fluentui/react/lib/Styling';\nimport { IChartAnnotation, ChartAnnotationArrowHead } from '../../../types/IChartAnnotation';\n\nexport interface IAnnotationPoint {\n x: number;\n y: number;\n}\n\nexport interface IAnnotationPlotRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface IChartAnnotationContext {\n /** Rectangle describing the drawable area of the chart (without margins) */\n plotRect: IAnnotationPlotRect;\n /** Size of the owning SVG element */\n svgRect: { width: number; height: number };\n /** Indicates if layout should be mirrored */\n isRtl?: boolean;\n /** Primary x scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: (value: any) => number;\n /** Primary y scale mapping data domain to pixels */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScalePrimary?: (value: any) => number;\n /** Secondary y scale when present */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: (value: any) => number;\n}\n\nexport interface IChartAnnotationLayerProps {\n annotations?: IChartAnnotation[];\n context: IChartAnnotationContext;\n theme: ITheme;\n className?: string;\n /**\n * When true, removes default border, shadow, and background styling from annotations.\n * @default false\n */\n hideDefaultStyles?: boolean;\n}\n\nexport interface IResolvedAnnotationPosition {\n /** Final absolute position after applying layout and offsets */\n point: IAnnotationPoint;\n /** Raw anchor position before offsets (used for connectors) */\n anchor: IAnnotationPoint;\n}\n\nexport type ConnectorRenderData = {\n key: string;\n start: IAnnotationPoint;\n end: IAnnotationPoint;\n strokeColor: string;\n strokeWidth: number;\n dashArray?: string;\n arrow: ChartAnnotationArrowHead;\n markerSize: number;\n markerStrokeWidth: number;\n};\n"]}