@mui/x-charts 6.0.0-alpha.9 → 6.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/BarChart/BarChart.d.ts +26 -5
  2. package/BarChart/BarChart.js +93 -17
  3. package/BarChart/BarElement.d.ts +1319 -4
  4. package/BarChart/BarElement.js +10 -10
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +2 -3
  8. package/BarChart/legend.js +1 -2
  9. package/CHANGELOG.md +797 -59
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +33 -7
  13. package/ChartsAxis/axisClasses.d.ts +3 -3
  14. package/ChartsAxis/axisClasses.js +1 -2
  15. package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
  16. package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
  17. package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
  18. package/ChartsClipPath/ChartsClipPath.js +7 -2
  19. package/ChartsLegend/ChartsLegend.d.ts +45 -24
  20. package/ChartsLegend/ChartsLegend.js +193 -151
  21. package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
  22. package/ChartsLegend/chartsLegendClasses.js +3 -4
  23. package/ChartsLegend/utils.d.ts +1 -6
  24. package/ChartsReferenceLine/ChartsReferenceLine.d.ts +10 -0
  25. package/ChartsReferenceLine/ChartsReferenceLine.js +78 -0
  26. package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +13 -0
  27. package/ChartsReferenceLine/ChartsXReferenceLine.js +112 -0
  28. package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +13 -0
  29. package/ChartsReferenceLine/ChartsYReferenceLine.js +112 -0
  30. package/ChartsReferenceLine/chartsReferenceLineClasses.d.ts +15 -0
  31. package/ChartsReferenceLine/chartsReferenceLineClasses.js +14 -0
  32. package/ChartsReferenceLine/common.d.ts +41 -0
  33. package/ChartsReferenceLine/common.js +27 -0
  34. package/ChartsReferenceLine/index.d.ts +2 -0
  35. package/ChartsReferenceLine/index.js +27 -0
  36. package/ChartsReferenceLine/package.json +6 -0
  37. package/ChartsSurface.d.ts +12 -1
  38. package/ChartsSurface.js +9 -18
  39. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  40. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  41. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  42. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  43. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  44. package/ChartsTooltip/ChartsTooltip.js +62 -18
  45. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  46. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  47. package/ChartsTooltip/tooltipClasses.js +1 -2
  48. package/ChartsTooltip/utils.js +2 -2
  49. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  50. package/ChartsXAxis/ChartsXAxis.js +170 -45
  51. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  52. package/ChartsYAxis/ChartsYAxis.js +95 -38
  53. package/LineChart/AreaElement.d.ts +11 -1
  54. package/LineChart/AreaElement.js +14 -6
  55. package/LineChart/AreaPlot.d.ts +11 -0
  56. package/LineChart/AreaPlot.js +27 -8
  57. package/LineChart/LineChart.d.ts +23 -3
  58. package/LineChart/LineChart.js +89 -17
  59. package/LineChart/LineElement.d.ts +11 -1
  60. package/LineChart/LineElement.js +14 -6
  61. package/LineChart/LineHighlightElement.d.ts +10 -0
  62. package/LineChart/LineHighlightElement.js +13 -4
  63. package/LineChart/LineHighlightPlot.d.ts +10 -0
  64. package/LineChart/LineHighlightPlot.js +15 -4
  65. package/LineChart/LinePlot.d.ts +10 -0
  66. package/LineChart/LinePlot.js +25 -12
  67. package/LineChart/MarkElement.d.ts +10 -0
  68. package/LineChart/MarkElement.js +14 -5
  69. package/LineChart/MarkPlot.d.ts +10 -0
  70. package/LineChart/MarkPlot.js +42 -10
  71. package/LineChart/formatter.js +5 -5
  72. package/LineChart/legend.js +1 -2
  73. package/PieChart/PieArc.d.ts +11 -13
  74. package/PieChart/PieArc.js +28 -60
  75. package/PieChart/PieArcLabel.d.ts +8 -9
  76. package/PieChart/PieArcLabel.js +46 -38
  77. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  78. package/PieChart/PieArcLabelPlot.js +99 -0
  79. package/PieChart/PieArcPlot.d.ts +35 -0
  80. package/PieChart/PieArcPlot.js +92 -0
  81. package/PieChart/PieChart.d.ts +19 -5
  82. package/PieChart/PieChart.js +95 -18
  83. package/PieChart/PiePlot.d.ts +15 -9
  84. package/PieChart/PiePlot.js +77 -55
  85. package/PieChart/dataTransform/transition.d.ts +4 -0
  86. package/PieChart/dataTransform/transition.js +136 -0
  87. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  88. package/PieChart/dataTransform/useTransformData.js +67 -0
  89. package/PieChart/formatter.js +1 -2
  90. package/PieChart/legend.js +1 -2
  91. package/README.md +8 -14
  92. package/ResponsiveChartContainer/index.d.ts +13 -3
  93. package/ResponsiveChartContainer/index.js +7 -8
  94. package/ScatterChart/Scatter.d.ts +10 -0
  95. package/ScatterChart/Scatter.js +12 -2
  96. package/ScatterChart/ScatterChart.d.ts +16 -3
  97. package/ScatterChart/ScatterChart.js +77 -16
  98. package/ScatterChart/ScatterPlot.d.ts +10 -0
  99. package/ScatterChart/ScatterPlot.js +12 -2
  100. package/ScatterChart/formatter.js +1 -2
  101. package/ScatterChart/legend.js +1 -2
  102. package/SparkLineChart/SparkLineChart.d.ts +12 -3
  103. package/SparkLineChart/SparkLineChart.js +50 -7
  104. package/colorPalettes/colorPalettes.js +6 -12
  105. package/constants.js +5 -8
  106. package/context/CartesianContextProvider.d.ts +26 -1
  107. package/context/CartesianContextProvider.js +42 -16
  108. package/context/DrawingProvider.d.ts +25 -0
  109. package/context/DrawingProvider.js +18 -6
  110. package/context/HighlightProvider.d.ts +17 -0
  111. package/context/HighlightProvider.js +3 -4
  112. package/context/InteractionProvider.d.ts +6 -0
  113. package/context/InteractionProvider.js +3 -4
  114. package/context/SeriesContextProvider.d.ts +5 -0
  115. package/context/SeriesContextProvider.js +3 -4
  116. package/esm/BarChart/BarChart.js +90 -13
  117. package/esm/BarChart/BarElement.js +7 -4
  118. package/esm/BarChart/BarPlot.js +152 -67
  119. package/esm/BarChart/formatter.js +1 -1
  120. package/esm/ChartContainer/index.js +3 -0
  121. package/esm/ChartsAxis/ChartsAxis.js +32 -5
  122. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  123. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  124. package/esm/ChartsLegend/ChartsLegend.js +190 -144
  125. package/esm/ChartsLegend/chartsLegendClasses.js +1 -1
  126. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  127. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  128. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  129. package/esm/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  130. package/esm/ChartsReferenceLine/common.js +20 -0
  131. package/esm/ChartsReferenceLine/index.js +2 -0
  132. package/esm/ChartsSurface.js +4 -12
  133. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  134. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  135. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  136. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  137. package/esm/ChartsXAxis/ChartsXAxis.js +168 -43
  138. package/esm/ChartsYAxis/ChartsYAxis.js +93 -36
  139. package/esm/LineChart/AreaElement.js +10 -0
  140. package/esm/LineChart/AreaPlot.js +26 -6
  141. package/esm/LineChart/LineChart.js +86 -13
  142. package/esm/LineChart/LineElement.js +10 -0
  143. package/esm/LineChart/LineHighlightElement.js +10 -0
  144. package/esm/LineChart/LineHighlightPlot.js +13 -2
  145. package/esm/LineChart/LinePlot.js +25 -14
  146. package/esm/LineChart/MarkElement.js +11 -1
  147. package/esm/LineChart/MarkPlot.js +40 -8
  148. package/esm/LineChart/formatter.js +7 -3
  149. package/esm/PieChart/PieArc.js +26 -58
  150. package/esm/PieChart/PieArcLabel.js +43 -34
  151. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  152. package/esm/PieChart/PieArcPlot.js +84 -0
  153. package/esm/PieChart/PieChart.js +93 -16
  154. package/esm/PieChart/PiePlot.js +76 -57
  155. package/esm/PieChart/dataTransform/transition.js +130 -0
  156. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  157. package/esm/ResponsiveChartContainer/index.js +3 -3
  158. package/esm/ScatterChart/Scatter.js +10 -0
  159. package/esm/ScatterChart/ScatterChart.js +74 -12
  160. package/esm/ScatterChart/ScatterPlot.js +10 -0
  161. package/esm/SparkLineChart/SparkLineChart.js +47 -3
  162. package/esm/constants.js +1 -1
  163. package/esm/context/CartesianContextProvider.js +41 -14
  164. package/esm/context/DrawingProvider.js +14 -0
  165. package/esm/hooks/useChartDimensions.js +2 -0
  166. package/esm/hooks/useMounted.js +16 -0
  167. package/esm/hooks/useReducedMotion.js +27 -0
  168. package/esm/hooks/useTicks.js +15 -9
  169. package/esm/index.js +1 -0
  170. package/esm/internals/components/AxisSharedComponents.js +15 -70
  171. package/esm/internals/components/ChartsText.js +77 -0
  172. package/esm/internals/domUtils.js +113 -0
  173. package/esm/internals/geometry.js +36 -0
  174. package/hooks/useAxisEvents.js +2 -2
  175. package/hooks/useChartDimensions.d.ts +2 -0
  176. package/hooks/useChartDimensions.js +5 -4
  177. package/hooks/useDrawingArea.js +2 -2
  178. package/hooks/useInteractionItemProps.js +2 -2
  179. package/hooks/useMounted.d.ts +1 -0
  180. package/hooks/useMounted.js +25 -0
  181. package/hooks/useReducedMotion.d.ts +8 -0
  182. package/hooks/useReducedMotion.js +33 -0
  183. package/hooks/useScale.d.ts +2 -2
  184. package/hooks/useScale.js +2 -2
  185. package/hooks/useTicks.d.ts +19 -11
  186. package/hooks/useTicks.js +19 -14
  187. package/index.d.ts +1 -0
  188. package/index.js +12 -1
  189. package/internals/components/AxisSharedComponents.d.ts +0 -4
  190. package/internals/components/AxisSharedComponents.js +18 -78
  191. package/internals/components/ChartsText.d.ts +35 -0
  192. package/internals/components/ChartsText.js +87 -0
  193. package/internals/defaultizeColor.d.ts +7 -2
  194. package/internals/defaultizeValueFormatter.js +1 -2
  195. package/internals/domUtils.d.ts +13 -0
  196. package/internals/domUtils.js +122 -0
  197. package/internals/geometry.d.ts +9 -0
  198. package/internals/geometry.js +42 -0
  199. package/internals/isBandScale.d.ts +3 -1
  200. package/internals/stackSeries.js +2 -4
  201. package/internals/utils.d.ts +5 -0
  202. package/legacy/BarChart/BarChart.js +90 -13
  203. package/legacy/BarChart/BarElement.js +6 -3
  204. package/legacy/BarChart/BarPlot.js +151 -63
  205. package/legacy/BarChart/formatter.js +1 -1
  206. package/legacy/ChartContainer/index.js +3 -0
  207. package/legacy/ChartsAxis/ChartsAxis.js +32 -5
  208. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  209. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  210. package/legacy/ChartsLegend/ChartsLegend.js +205 -142
  211. package/legacy/ChartsLegend/chartsLegendClasses.js +1 -1
  212. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  213. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
  214. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
  215. package/legacy/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  216. package/legacy/ChartsReferenceLine/common.js +20 -0
  217. package/legacy/ChartsReferenceLine/index.js +2 -0
  218. package/legacy/ChartsSurface.js +3 -12
  219. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  220. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  221. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  222. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  223. package/legacy/ChartsXAxis/ChartsXAxis.js +176 -50
  224. package/legacy/ChartsYAxis/ChartsYAxis.js +97 -41
  225. package/legacy/LineChart/AreaElement.js +10 -0
  226. package/legacy/LineChart/AreaPlot.js +31 -7
  227. package/legacy/LineChart/LineChart.js +86 -13
  228. package/legacy/LineChart/LineElement.js +10 -0
  229. package/legacy/LineChart/LineHighlightElement.js +10 -0
  230. package/legacy/LineChart/LineHighlightPlot.js +13 -2
  231. package/legacy/LineChart/LinePlot.js +29 -12
  232. package/legacy/LineChart/MarkElement.js +11 -1
  233. package/legacy/LineChart/MarkPlot.js +39 -8
  234. package/legacy/LineChart/formatter.js +7 -3
  235. package/legacy/PieChart/PieArc.js +30 -62
  236. package/legacy/PieChart/PieArcLabel.js +48 -34
  237. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  238. package/legacy/PieChart/PieArcPlot.js +84 -0
  239. package/legacy/PieChart/PieChart.js +93 -16
  240. package/legacy/PieChart/PiePlot.js +76 -59
  241. package/legacy/PieChart/dataTransform/transition.js +142 -0
  242. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  243. package/legacy/ResponsiveChartContainer/index.js +3 -3
  244. package/legacy/ScatterChart/Scatter.js +10 -0
  245. package/legacy/ScatterChart/ScatterChart.js +74 -12
  246. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  247. package/legacy/SparkLineChart/SparkLineChart.js +47 -3
  248. package/legacy/constants.js +1 -1
  249. package/legacy/context/CartesianContextProvider.js +41 -14
  250. package/legacy/context/DrawingProvider.js +14 -0
  251. package/legacy/hooks/useChartDimensions.js +2 -0
  252. package/legacy/hooks/useMounted.js +21 -0
  253. package/legacy/hooks/useReducedMotion.js +27 -0
  254. package/legacy/hooks/useTicks.js +16 -9
  255. package/legacy/index.js +2 -1
  256. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  257. package/legacy/internals/components/ChartsText.js +79 -0
  258. package/legacy/internals/domUtils.js +121 -0
  259. package/legacy/internals/geometry.js +37 -0
  260. package/models/axis.d.ts +58 -20
  261. package/models/layout.d.ts +13 -6
  262. package/models/seriesType/common.d.ts +16 -0
  263. package/models/seriesType/line.d.ts +8 -3
  264. package/models/seriesType/pie.d.ts +5 -1
  265. package/modern/BarChart/BarChart.js +90 -13
  266. package/modern/BarChart/BarElement.js +7 -4
  267. package/modern/BarChart/BarPlot.js +149 -65
  268. package/modern/BarChart/formatter.js +1 -1
  269. package/modern/ChartContainer/index.js +3 -0
  270. package/modern/ChartsAxis/ChartsAxis.js +31 -5
  271. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  272. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  273. package/modern/ChartsLegend/ChartsLegend.js +190 -144
  274. package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
  275. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
  276. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +104 -0
  277. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +104 -0
  278. package/modern/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
  279. package/modern/ChartsReferenceLine/common.js +20 -0
  280. package/modern/ChartsReferenceLine/index.js +2 -0
  281. package/modern/ChartsSurface.js +4 -12
  282. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  283. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  284. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  285. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  286. package/modern/ChartsXAxis/ChartsXAxis.js +167 -42
  287. package/modern/ChartsYAxis/ChartsYAxis.js +92 -35
  288. package/modern/LineChart/AreaElement.js +10 -0
  289. package/modern/LineChart/AreaPlot.js +25 -6
  290. package/modern/LineChart/LineChart.js +86 -13
  291. package/modern/LineChart/LineElement.js +10 -0
  292. package/modern/LineChart/LineHighlightElement.js +10 -0
  293. package/modern/LineChart/LineHighlightPlot.js +13 -2
  294. package/modern/LineChart/LinePlot.js +23 -10
  295. package/modern/LineChart/MarkElement.js +11 -1
  296. package/modern/LineChart/MarkPlot.js +40 -8
  297. package/modern/LineChart/formatter.js +4 -3
  298. package/modern/PieChart/PieArc.js +26 -57
  299. package/modern/PieChart/PieArcLabel.js +43 -34
  300. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  301. package/modern/PieChart/PieArcPlot.js +83 -0
  302. package/modern/PieChart/PieChart.js +93 -16
  303. package/modern/PieChart/PiePlot.js +76 -55
  304. package/modern/PieChart/dataTransform/transition.js +130 -0
  305. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  306. package/modern/ResponsiveChartContainer/index.js +3 -3
  307. package/modern/ScatterChart/Scatter.js +10 -0
  308. package/modern/ScatterChart/ScatterChart.js +74 -12
  309. package/modern/ScatterChart/ScatterPlot.js +10 -0
  310. package/modern/SparkLineChart/SparkLineChart.js +47 -3
  311. package/modern/constants.js +1 -1
  312. package/modern/context/CartesianContextProvider.js +40 -13
  313. package/modern/context/DrawingProvider.js +14 -0
  314. package/modern/hooks/useChartDimensions.js +2 -0
  315. package/modern/hooks/useMounted.js +16 -0
  316. package/modern/hooks/useReducedMotion.js +27 -0
  317. package/modern/hooks/useTicks.js +15 -9
  318. package/modern/index.js +2 -1
  319. package/modern/internals/components/AxisSharedComponents.js +15 -70
  320. package/modern/internals/components/ChartsText.js +77 -0
  321. package/modern/internals/domUtils.js +113 -0
  322. package/modern/internals/geometry.js +36 -0
  323. package/package.json +9 -6
  324. package/themeAugmentation/components.d.ts +1 -0
  325. package/themeAugmentation/overrides.d.ts +2 -0
@@ -15,6 +15,16 @@ const SPARKLINE_DEFAULT_MARGIN = {
15
15
  left: 5,
16
16
  right: 5
17
17
  };
18
+
19
+ /**
20
+ * Demos:
21
+ *
22
+ * - [SparkLine](https://mui.com/x/react-charts/sparkline/)
23
+ *
24
+ * API:
25
+ *
26
+ * - [SparkLineChart API](https://mui.com/x/api/charts/spark-line-chart/)
27
+ */
18
28
  const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(props, ref) {
19
29
  const {
20
30
  xAxis,
@@ -58,7 +68,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
58
68
  margin: margin,
59
69
  xAxis: [_extends({
60
70
  id: DEFAULT_X_AXIS_KEY,
61
- scaleType: plotType === 'bar' ? 'band' : 'linear',
71
+ scaleType: plotType === 'bar' ? 'band' : 'point',
62
72
  data: Array.from({
63
73
  length: data.length
64
74
  }, (_, index) => index),
@@ -69,7 +79,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
69
79
  disableAxisListener: (!showTooltip || tooltip?.trigger !== 'axis') && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
70
80
  children: [plotType === 'bar' && /*#__PURE__*/_jsx(BarPlot, {
71
81
  slots: slots,
72
- slotProps: slotProps
82
+ slotProps: slotProps,
83
+ sx: {
84
+ shapeRendering: 'auto'
85
+ }
73
86
  }), plotType === 'line' && /*#__PURE__*/_jsxs(React.Fragment, {
74
87
  children: [/*#__PURE__*/_jsx(AreaPlot, {
75
88
  slots: slots,
@@ -81,7 +94,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
81
94
  slots: slots,
82
95
  slotProps: slotProps
83
96
  })]
84
- }), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip)), children]
97
+ }), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
98
+ slotProps: slotProps,
99
+ slots: slots
100
+ })), children]
85
101
  });
86
102
  });
87
103
  process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
@@ -113,10 +129,28 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
113
129
  * Data to plot.
114
130
  */
115
131
  data: PropTypes.arrayOf(PropTypes.number).isRequired,
132
+ /**
133
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
134
+ */
116
135
  dataset: PropTypes.arrayOf(PropTypes.object),
117
136
  desc: PropTypes.string,
137
+ /**
138
+ * If `true`, the charts will not listen to the mouse move event.
139
+ * It might break interactive features, but will improve performance.
140
+ * @default false
141
+ */
118
142
  disableAxisListener: PropTypes.bool,
143
+ /**
144
+ * The height of the chart in px. If not defined, it takes the height of the parent element.
145
+ * @default undefined
146
+ */
119
147
  height: PropTypes.number,
148
+ /**
149
+ * The margin between the SVG and the drawing area.
150
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
151
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
152
+ * @default object Depends on the charts type.
153
+ */
120
154
  margin: PropTypes.shape({
121
155
  bottom: PropTypes.number,
122
156
  left: PropTypes.number,
@@ -156,6 +190,8 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
156
190
  axisContent: PropTypes.elementType,
157
191
  classes: PropTypes.object,
158
192
  itemContent: PropTypes.elementType,
193
+ slotProps: PropTypes.object,
194
+ slots: PropTypes.object,
159
195
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
160
196
  }),
161
197
  /**
@@ -170,6 +206,10 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
170
206
  x: PropTypes.number,
171
207
  y: PropTypes.number
172
208
  }),
209
+ /**
210
+ * The width of the chart in px. If not defined, it takes the width of the parent element.
211
+ * @default undefined
212
+ */
173
213
  width: PropTypes.number,
174
214
  /**
175
215
  * The xAxis configuration.
@@ -187,6 +227,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
187
227
  id: PropTypes.string,
188
228
  label: PropTypes.string,
189
229
  labelFontSize: PropTypes.number,
230
+ labelStyle: PropTypes.object,
190
231
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
191
232
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
192
233
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -195,6 +236,9 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
195
236
  slots: PropTypes.object,
196
237
  stroke: PropTypes.string,
197
238
  tickFontSize: PropTypes.number,
239
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
240
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
241
+ tickLabelStyle: PropTypes.object,
198
242
  tickMaxStep: PropTypes.number,
199
243
  tickMinStep: PropTypes.number,
200
244
  tickNumber: PropTypes.number,
@@ -1,7 +1,7 @@
1
1
  export const DEFAULT_X_AXIS_KEY = 'DEFAULT_X_AXIS_KEY';
2
2
  export const DEFAULT_Y_AXIS_KEY = 'DEFAULT_Y_AXIS_KEY';
3
3
  export const DEFAULT_MARGINS = {
4
- top: 100,
4
+ top: 50,
5
5
  bottom: 50,
6
6
  left: 50,
7
7
  right: 50
@@ -10,9 +10,10 @@ import { getScale } from '../internals/getScale';
10
10
  import { DrawingContext } from './DrawingProvider';
11
11
  import { SeriesContext } from './SeriesContextProvider';
12
12
  import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
13
- import { getTicksNumber } from '../hooks/useTicks';
13
+ import { getTickNumber } from '../hooks/useTicks';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
- const DEFAULT_CATEGORY_GAP_RATIO = 0.1;
15
+ const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
16
+ const DEFAULT_BAR_GAP_RATIO = 0.1;
16
17
 
17
18
  // TODO: those might be better placed in a distinct file
18
19
  const xExtremumGetters = {
@@ -31,6 +32,12 @@ export const CartesianContext = /*#__PURE__*/React.createContext({
31
32
  xAxisIds: [],
32
33
  yAxisIds: []
33
34
  });
35
+
36
+ /**
37
+ * API:
38
+ *
39
+ * - [CartesianContextProvider API](https://mui.com/x/api/charts/cartesian-context-provider/)
40
+ */
34
41
  function CartesianContextProvider({
35
42
  xAxis: inXAxis,
36
43
  yAxis: inYAxis,
@@ -102,18 +109,19 @@ function CartesianContextProvider({
102
109
  const range = [drawingArea.left, drawingArea.left + drawingArea.width];
103
110
  if (isBandScaleConfig(axis)) {
104
111
  const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
112
+ const barGapRatio = axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;
105
113
  completedXAxis[axis.id] = _extends({
106
114
  categoryGapRatio,
107
- barGapRatio: 0
115
+ barGapRatio
108
116
  }, axis, {
109
117
  scale: scaleBand(axis.data, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
110
- ticksNumber: axis.data.length
118
+ tickNumber: axis.data.length
111
119
  });
112
120
  }
113
121
  if (isPointScaleConfig(axis)) {
114
122
  completedXAxis[axis.id] = _extends({}, axis, {
115
123
  scale: scalePoint(axis.data, range),
116
- ticksNumber: axis.data.length
124
+ tickNumber: axis.data.length
117
125
  });
118
126
  }
119
127
  if (axis.scaleType === 'band' || axis.scaleType === 'point') {
@@ -122,17 +130,17 @@ function CartesianContextProvider({
122
130
  }
123
131
  const scaleType = axis.scaleType ?? 'linear';
124
132
  const extremums = [axis.min ?? minData, axis.max ?? maxData];
125
- const ticksNumber = getTicksNumber(_extends({}, axis, {
133
+ const tickNumber = getTickNumber(_extends({}, axis, {
126
134
  range,
127
135
  domain: extremums
128
136
  }));
129
- const niceScale = getScale(scaleType, extremums, range).nice(ticksNumber);
137
+ const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
130
138
  const niceDomain = niceScale.domain();
131
139
  const domain = [axis.min ?? niceDomain[0], axis.max ?? niceDomain[1]];
132
140
  completedXAxis[axis.id] = _extends({}, axis, {
133
141
  scaleType,
134
142
  scale: niceScale.domain(domain),
135
- ticksNumber
143
+ tickNumber
136
144
  });
137
145
  });
138
146
  const allYAxis = [...(yAxis?.map((axis, index) => _extends({
@@ -155,13 +163,13 @@ function CartesianContextProvider({
155
163
  barGapRatio: 0
156
164
  }, axis, {
157
165
  scale: scaleBand(axis.data, [range[1], range[0]]).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
158
- ticksNumber: axis.data.length
166
+ tickNumber: axis.data.length
159
167
  });
160
168
  }
161
169
  if (isPointScaleConfig(axis)) {
162
170
  completedYAxis[axis.id] = _extends({}, axis, {
163
171
  scale: scalePoint(axis.data, [range[1], range[0]]),
164
- ticksNumber: axis.data.length
172
+ tickNumber: axis.data.length
165
173
  });
166
174
  }
167
175
  if (axis.scaleType === 'band' || axis.scaleType === 'point') {
@@ -170,17 +178,17 @@ function CartesianContextProvider({
170
178
  }
171
179
  const scaleType = axis.scaleType ?? 'linear';
172
180
  const extremums = [axis.min ?? minData, axis.max ?? maxData];
173
- const ticksNumber = getTicksNumber(_extends({}, axis, {
181
+ const tickNumber = getTickNumber(_extends({}, axis, {
174
182
  range,
175
183
  domain: extremums
176
184
  }));
177
- const niceScale = getScale(scaleType, extremums, range).nice(ticksNumber);
185
+ const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
178
186
  const niceDomain = niceScale.domain();
179
187
  const domain = [axis.min ?? niceDomain[0], axis.max ?? niceDomain[1]];
180
188
  completedYAxis[axis.id] = _extends({}, axis, {
181
189
  scaleType,
182
190
  scale: niceScale.domain(domain),
183
- ticksNumber
191
+ tickNumber
184
192
  });
185
193
  });
186
194
  return {
@@ -207,7 +215,14 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
207
215
  // | To update them edit the TypeScript types and run "yarn proptypes" |
208
216
  // ----------------------------------------------------------------------
209
217
  children: PropTypes.node,
218
+ /**
219
+ * An array of objects that can be used to populate series and axes data using their `dataKey` property.
220
+ */
210
221
  dataset: PropTypes.arrayOf(PropTypes.object),
222
+ /**
223
+ * The configuration of the x-axes.
224
+ * If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
225
+ */
211
226
  xAxis: PropTypes.arrayOf(PropTypes.shape({
212
227
  axisId: PropTypes.string,
213
228
  classes: PropTypes.object,
@@ -220,6 +235,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
220
235
  id: PropTypes.string,
221
236
  label: PropTypes.string,
222
237
  labelFontSize: PropTypes.number,
238
+ labelStyle: PropTypes.object,
223
239
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
224
240
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
225
241
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -228,12 +244,19 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
228
244
  slots: PropTypes.object,
229
245
  stroke: PropTypes.string,
230
246
  tickFontSize: PropTypes.number,
247
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
248
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
249
+ tickLabelStyle: PropTypes.object,
231
250
  tickMaxStep: PropTypes.number,
232
251
  tickMinStep: PropTypes.number,
233
252
  tickNumber: PropTypes.number,
234
253
  tickSize: PropTypes.number,
235
254
  valueFormatter: PropTypes.func
236
255
  })),
256
+ /**
257
+ * The configuration of the y-axes.
258
+ * If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
259
+ */
237
260
  yAxis: PropTypes.arrayOf(PropTypes.shape({
238
261
  axisId: PropTypes.string,
239
262
  classes: PropTypes.object,
@@ -246,6 +269,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
246
269
  id: PropTypes.string,
247
270
  label: PropTypes.string,
248
271
  labelFontSize: PropTypes.number,
272
+ labelStyle: PropTypes.object,
249
273
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
250
274
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
251
275
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -254,6 +278,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
254
278
  slots: PropTypes.object,
255
279
  stroke: PropTypes.string,
256
280
  tickFontSize: PropTypes.number,
281
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
282
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
283
+ tickLabelStyle: PropTypes.object,
257
284
  tickMaxStep: PropTypes.number,
258
285
  tickMinStep: PropTypes.number,
259
286
  tickNumber: PropTypes.number,
@@ -9,12 +9,20 @@ import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export const DrawingContext = /*#__PURE__*/React.createContext({
10
10
  top: 0,
11
11
  left: 0,
12
+ bottom: 0,
13
+ right: 0,
12
14
  height: 300,
13
15
  width: 400
14
16
  });
15
17
  export const SVGContext = /*#__PURE__*/React.createContext({
16
18
  current: null
17
19
  });
20
+
21
+ /**
22
+ * API:
23
+ *
24
+ * - [DrawingProvider API](https://mui.com/x/api/charts/drawing-provider/)
25
+ */
18
26
  function DrawingProvider({
19
27
  width,
20
28
  height,
@@ -38,6 +46,12 @@ process.env.NODE_ENV !== "production" ? DrawingProvider.propTypes = {
38
46
  // ----------------------------------------------------------------------
39
47
  children: PropTypes.node,
40
48
  height: PropTypes.number.isRequired,
49
+ /**
50
+ * The margin between the SVG and the drawing area.
51
+ * It's used for leaving some space for extra information such as the x- and y-axis or legend.
52
+ * Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
53
+ * @default object Depends on the charts type.
54
+ */
41
55
  margin: PropTypes.shape({
42
56
  bottom: PropTypes.number,
43
57
  left: PropTypes.number,
@@ -6,6 +6,8 @@ const useChartDimensions = (width, height, margin) => {
6
6
  const drawingArea = React.useMemo(() => ({
7
7
  left: defaultizedMargin.left,
8
8
  top: defaultizedMargin.top,
9
+ right: defaultizedMargin.right,
10
+ bottom: defaultizedMargin.bottom,
9
11
  width: Math.max(0, width - defaultizedMargin.left - defaultizedMargin.right),
10
12
  height: Math.max(0, height - defaultizedMargin.top - defaultizedMargin.bottom)
11
13
  }), [width, height, defaultizedMargin.top, defaultizedMargin.bottom, defaultizedMargin.left, defaultizedMargin.right]);
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
3
+ export function useMounted(defer = false) {
4
+ const [mountedState, setMountedState] = React.useState(false);
5
+ useEnhancedEffect(() => {
6
+ if (!defer) {
7
+ setMountedState(true);
8
+ }
9
+ }, [defer]);
10
+ React.useEffect(() => {
11
+ if (defer) {
12
+ setMountedState(true);
13
+ }
14
+ }, [defer]);
15
+ return mountedState;
16
+ }
@@ -0,0 +1,27 @@
1
+ import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web';
2
+
3
+ /**
4
+ * Returns `boolean` or `null`, used to automatically
5
+ * set skipAnimations to the value of the user's
6
+ * `prefers-reduced-motion` query.
7
+ *
8
+ * The return value, post-effect, is the value of their prefered setting
9
+ */
10
+ export const useReducedMotion = () => {
11
+ // Taken from: https://github.com/pmndrs/react-spring/blob/02ec877bbfab0df46da0e4a47d5f68d3e731206a/packages/shared/src/hooks/useReducedMotion.ts#L13
12
+
13
+ useIsomorphicLayoutEffect(() => {
14
+ const mql = window.matchMedia('(prefers-reduced-motion)');
15
+ const handleMediaChange = e => {
16
+ Globals.assign({
17
+ // Modification such the react-spring implementation such that this hook can remove animation but never activate animation.
18
+ skipAnimation: e.matches || undefined
19
+ });
20
+ };
21
+ handleMediaChange(mql);
22
+ mql.addEventListener('change', handleMediaChange);
23
+ return () => {
24
+ mql.removeEventListener('change', handleMediaChange);
25
+ };
26
+ }, []);
27
+ };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { isBandScale } from '../internals/isBandScale';
3
- export function getTicksNumber(params) {
3
+ export function getTickNumber(params) {
4
4
  const {
5
5
  tickMaxStep,
6
6
  tickMinStep,
@@ -16,8 +16,9 @@ export function getTicksNumber(params) {
16
16
  function useTicks(options) {
17
17
  const {
18
18
  scale,
19
- ticksNumber,
20
- valueFormatter
19
+ tickNumber,
20
+ valueFormatter,
21
+ tickInterval
21
22
  } = options;
22
23
  return React.useMemo(() => {
23
24
  // band scale
@@ -26,7 +27,8 @@ function useTicks(options) {
26
27
  if (scale.bandwidth() > 0) {
27
28
  // scale type = 'band'
28
29
  return [...domain.map(value => ({
29
- formattedValue: valueFormatter?.(value) ?? value,
30
+ value,
31
+ formattedValue: valueFormatter?.(value) ?? `${value}`,
30
32
  offset: scale(value) - (scale.step() - scale.bandwidth()) / 2,
31
33
  labelOffset: scale.step() / 2
32
34
  })), {
@@ -37,17 +39,21 @@ function useTicks(options) {
37
39
  }
38
40
 
39
41
  // scale type = 'point'
40
- return domain.map(value => ({
41
- formattedValue: valueFormatter?.(value) ?? value,
42
+ const filteredDomain = typeof tickInterval === 'function' && domain.filter(tickInterval) || typeof tickInterval === 'object' && tickInterval || domain;
43
+ return filteredDomain.map(value => ({
44
+ value,
45
+ formattedValue: valueFormatter?.(value) ?? `${value}`,
42
46
  offset: scale(value),
43
47
  labelOffset: 0
44
48
  }));
45
49
  }
46
- return scale.ticks(ticksNumber).map(value => ({
47
- formattedValue: valueFormatter?.(value) ?? scale.tickFormat(ticksNumber)(value),
50
+ const ticks = typeof tickInterval === 'object' ? tickInterval : scale.ticks(tickNumber);
51
+ return ticks.map(value => ({
52
+ value,
53
+ formattedValue: valueFormatter?.(value) ?? scale.tickFormat(tickNumber)(value),
48
54
  offset: scale(value),
49
55
  labelOffset: 0
50
56
  }));
51
- }, [ticksNumber, scale, valueFormatter]);
57
+ }, [tickNumber, scale, valueFormatter, tickInterval]);
52
58
  }
53
59
  export default useTicks;
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v6.0.0-alpha.9
2
+ * @mui/x-charts v6.18.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -11,6 +11,7 @@ export * from './hooks';
11
11
  export * from './colorPalettes';
12
12
  export * from './models';
13
13
  export * from './ChartsClipPath';
14
+ export * from './ChartsReferenceLine';
14
15
  export * from './ChartsAxis';
15
16
  export * from './ChartsXAxis';
16
17
  export * from './ChartsYAxis';
@@ -5,77 +5,22 @@ export const AxisRoot = styled('g', {
5
5
  name: 'MuiChartsAxis',
6
6
  slot: 'Root',
7
7
  overridesResolver: (props, styles) => styles.root
8
- })({
9
- [`&.${axisClasses.directionY}`]: {
10
- [`.${axisClasses.tickLabel}`]: {
11
- dominantBaseline: 'middle'
12
- },
13
- [`.${axisClasses.label}`]: {
14
- dominantBaseline: 'auto',
15
- textAnchor: 'middle'
16
- }
17
- },
18
- [`&.${axisClasses.left}`]: {
19
- [`.${axisClasses.tickLabel}`]: {
20
- dominantBaseline: 'central',
21
- textAnchor: 'end'
22
- }
23
- },
24
- [`&.${axisClasses.right}`]: {
25
- [`.${axisClasses.tickLabel}`]: {
26
- dominantBaseline: 'central',
27
- textAnchor: 'start'
28
- }
29
- },
30
- [`&.${axisClasses.bottom}`]: {
31
- [`.${axisClasses.tickLabel}, .${axisClasses.label}`]: {
32
- dominantBaseline: 'hanging',
33
- textAnchor: 'middle'
34
- }
35
- },
36
- [`&.${axisClasses.top}`]: {
37
- [`.${axisClasses.tickLabel}, .${axisClasses.label}`]: {
38
- dominantBaseline: 'baseline',
39
- textAnchor: 'middle'
40
- }
41
- }
42
- });
43
- export const ChartsLine = styled('line', {
44
- name: 'MuiChartsAxis',
45
- slot: 'Line',
46
- overridesResolver: (props, styles) => styles.line
47
- })(({
48
- theme
49
- }) => ({
50
- stroke: theme.palette.text.primary,
51
- shapeRendering: 'crispEdges',
52
- strokeWidth: 1
53
- }));
54
- export const ChartsTick = styled('line', {
55
- name: 'MuiChartsAxis',
56
- slot: 'Tick',
57
- overridesResolver: (props, styles) => styles.tick
58
8
  })(({
59
9
  theme
60
10
  }) => ({
61
- stroke: theme.palette.text.primary,
62
- shapeRendering: 'crispEdges'
63
- }));
64
- export const ChartsTickLabel = styled('text', {
65
- name: 'MuiChartsAxis',
66
- slot: 'TickLabel',
67
- overridesResolver: (props, styles) => styles.tickLabel
68
- })(({
69
- theme
70
- }) => _extends({}, theme.typography.caption, {
71
- fill: theme.palette.text.primary
72
- }));
73
- export const ChartsLabel = styled('text', {
74
- name: 'MuiChartsAxis',
75
- slot: 'Label',
76
- overridesResolver: (props, styles) => styles.label
77
- })(({
78
- theme
79
- }) => _extends({}, theme.typography.body1, {
80
- fill: theme.palette.text.primary
11
+ [`& .${axisClasses.tickLabel}`]: _extends({}, theme.typography.caption, {
12
+ fill: (theme.vars || theme).palette.text.primary
13
+ }),
14
+ [`& .${axisClasses.label}`]: _extends({}, theme.typography.body1, {
15
+ fill: (theme.vars || theme).palette.text.primary
16
+ }),
17
+ [`& .${axisClasses.line}`]: {
18
+ stroke: (theme.vars || theme).palette.text.primary,
19
+ shapeRendering: 'crispEdges',
20
+ strokeWidth: 1
21
+ },
22
+ [`& .${axisClasses.tick}`]: {
23
+ stroke: (theme.vars || theme).palette.text.primary,
24
+ shapeRendering: 'crispEdges'
25
+ }
81
26
  }));
@@ -0,0 +1,77 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["x", "y", "style", "text", "ownerState"],
4
+ _excluded2 = ["angle", "textAnchor", "dominantBaseline"];
5
+ import * as React from 'react';
6
+ import { getStringSize } from '../domUtils';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export function getWordsByLines({
9
+ style,
10
+ needsComputation,
11
+ text
12
+ }) {
13
+ return text.split('\n').map(subText => _extends({
14
+ text: subText
15
+ }, needsComputation ? getStringSize(subText, style) : {
16
+ width: 0,
17
+ height: 0
18
+ }));
19
+ }
20
+ export function ChartsText(props) {
21
+ const {
22
+ x,
23
+ y,
24
+ style: styleProps,
25
+ text
26
+ } = props,
27
+ textProps = _objectWithoutPropertiesLoose(props, _excluded);
28
+ const _ref = styleProps ?? {},
29
+ {
30
+ angle,
31
+ textAnchor,
32
+ dominantBaseline
33
+ } = _ref,
34
+ style = _objectWithoutPropertiesLoose(_ref, _excluded2);
35
+ const wordsByLines = React.useMemo(() => getWordsByLines({
36
+ style,
37
+ needsComputation: text.includes('\n'),
38
+ text
39
+ }), [style, text]);
40
+ let startDy;
41
+ switch (dominantBaseline) {
42
+ case 'hanging':
43
+ startDy = 0;
44
+ break;
45
+ case 'central':
46
+ startDy = (wordsByLines.length - 1) / 2 * -wordsByLines[0].height;
47
+ break;
48
+ default:
49
+ startDy = (wordsByLines.length - 1) * -wordsByLines[0].height;
50
+ break;
51
+ }
52
+ const transforms = [];
53
+ // if (scaleToFit) {
54
+ // const lineWidth = wordsByLines[0].width;
55
+ // transforms.push(`scale(${(isNumber(width as number) ? (width as number) / lineWidth : 1) / lineWidth})`);
56
+ // }
57
+ if (angle) {
58
+ transforms.push(`rotate(${angle}, ${x}, ${y})`);
59
+ }
60
+ if (transforms.length) {
61
+ textProps.transform = transforms.join(' ');
62
+ }
63
+ return /*#__PURE__*/_jsx("text", _extends({}, textProps, {
64
+ x: x,
65
+ y: y,
66
+ textAnchor: textAnchor,
67
+ dominantBaseline: dominantBaseline,
68
+ style: style,
69
+ children: wordsByLines.map((line, index) => /*#__PURE__*/_jsx("tspan", {
70
+ x: x,
71
+ dy: `${index === 0 ? startDy : wordsByLines[0].height}px`,
72
+ dominantBaseline: dominantBaseline // Propagated to fix Safari issue: https://github.com/mui/mui-x/issues/10808
73
+ ,
74
+ children: line.text
75
+ }, index))
76
+ }));
77
+ }