@mui/x-charts 8.11.3 → 8.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/BarChart/BarChart.d.ts +2 -2
  2. package/BarChart/BarChart.js +1 -0
  3. package/BarChart/BarChart.plugins.d.ts +3 -2
  4. package/BarChart/BarChart.plugins.js +2 -1
  5. package/BarChart/BarElement.js +10 -2
  6. package/BarChart/index.d.ts +1 -0
  7. package/BarChart/index.js +12 -0
  8. package/BarChart/useBarChartProps.d.ts +2 -2
  9. package/CHANGELOG.md +151 -6
  10. package/ChartContainer/ChartContainer.js +4 -2
  11. package/ChartContainer/useChartContainerProps.js +4 -2
  12. package/ChartsLegend/ContinuousColorLegend.js +1 -0
  13. package/ChartsLegend/PiecewiseColorLegend.js +1 -0
  14. package/ChartsSurface/ChartsSurface.js +21 -2
  15. package/ChartsWrapper/ChartsWrapper.d.ts +2 -1
  16. package/ChartsWrapper/ChartsWrapper.js +49 -46
  17. package/ChartsXAxis/useAxisTicksProps.d.ts +3 -3
  18. package/ChartsYAxis/useAxisTicksProps.d.ts +3 -3
  19. package/LineChart/FocusedMark.d.ts +2 -0
  20. package/LineChart/FocusedMark.js +44 -0
  21. package/LineChart/LineChart.d.ts +2 -2
  22. package/LineChart/LineChart.js +3 -1
  23. package/LineChart/LineChart.plugins.d.ts +3 -2
  24. package/LineChart/LineChart.plugins.js +2 -1
  25. package/LineChart/index.d.ts +1 -0
  26. package/LineChart/index.js +12 -0
  27. package/LineChart/useLineChartProps.d.ts +2 -2
  28. package/PieChart/PieArc.d.ts +1 -0
  29. package/PieChart/PieArc.js +7 -3
  30. package/PieChart/PieArcPlot.js +1 -0
  31. package/PieChart/PieChart.js +1 -0
  32. package/PieChart/PieChart.plugins.d.ts +2 -1
  33. package/PieChart/PieChart.plugins.js +2 -1
  34. package/PieChart/dataTransform/useTransformData.d.ts +1 -0
  35. package/PieChart/dataTransform/useTransformData.js +9 -1
  36. package/PieChart/index.d.ts +1 -0
  37. package/PieChart/index.js +12 -0
  38. package/RadarChart/RadarChart.plugins.d.ts +1 -1
  39. package/RadarChart/RadarDataProvider/RadarDataProvider.d.ts +3 -3
  40. package/RadarChart/index.d.ts +2 -1
  41. package/RadarChart/index.js +12 -0
  42. package/RadarChart/useRadarChartProps.d.ts +2 -2
  43. package/ScatterChart/BatchScatter.d.ts +32 -0
  44. package/ScatterChart/BatchScatter.js +171 -0
  45. package/ScatterChart/Scatter.js +13 -5
  46. package/ScatterChart/ScatterChart.d.ts +4 -4
  47. package/ScatterChart/ScatterChart.js +13 -2
  48. package/ScatterChart/ScatterChart.plugins.d.ts +4 -3
  49. package/ScatterChart/ScatterChart.plugins.js +3 -2
  50. package/ScatterChart/ScatterPlot.d.ts +10 -0
  51. package/ScatterChart/ScatterPlot.js +14 -2
  52. package/ScatterChart/index.d.ts +1 -0
  53. package/ScatterChart/index.js +12 -0
  54. package/ScatterChart/useScatterChartProps.d.ts +2 -2
  55. package/ScatterChart/useScatterChartProps.js +8 -5
  56. package/SparkLineChart/SparkLineChart.js +10 -5
  57. package/Toolbar/Toolbar.js +1 -2
  58. package/colorPalettes/types.d.ts +1 -1
  59. package/context/ChartApi.d.ts +6 -6
  60. package/esm/BarChart/BarChart.d.ts +2 -2
  61. package/esm/BarChart/BarChart.js +1 -0
  62. package/esm/BarChart/BarChart.plugins.d.ts +3 -2
  63. package/esm/BarChart/BarChart.plugins.js +2 -1
  64. package/esm/BarChart/BarElement.js +10 -2
  65. package/esm/BarChart/index.d.ts +1 -0
  66. package/esm/BarChart/index.js +1 -0
  67. package/esm/BarChart/useBarChartProps.d.ts +2 -2
  68. package/esm/ChartContainer/ChartContainer.js +4 -2
  69. package/esm/ChartContainer/useChartContainerProps.js +4 -2
  70. package/esm/ChartsLegend/ContinuousColorLegend.js +1 -0
  71. package/esm/ChartsLegend/PiecewiseColorLegend.js +1 -0
  72. package/esm/ChartsSurface/ChartsSurface.js +21 -2
  73. package/esm/ChartsWrapper/ChartsWrapper.d.ts +2 -1
  74. package/esm/ChartsWrapper/ChartsWrapper.js +49 -46
  75. package/esm/ChartsXAxis/useAxisTicksProps.d.ts +3 -3
  76. package/esm/ChartsYAxis/useAxisTicksProps.d.ts +3 -3
  77. package/esm/LineChart/FocusedMark.d.ts +2 -0
  78. package/esm/LineChart/FocusedMark.js +38 -0
  79. package/esm/LineChart/LineChart.d.ts +2 -2
  80. package/esm/LineChart/LineChart.js +3 -1
  81. package/esm/LineChart/LineChart.plugins.d.ts +3 -2
  82. package/esm/LineChart/LineChart.plugins.js +2 -1
  83. package/esm/LineChart/index.d.ts +1 -0
  84. package/esm/LineChart/index.js +1 -0
  85. package/esm/LineChart/useLineChartProps.d.ts +2 -2
  86. package/esm/PieChart/PieArc.d.ts +1 -0
  87. package/esm/PieChart/PieArc.js +7 -3
  88. package/esm/PieChart/PieArcPlot.js +1 -0
  89. package/esm/PieChart/PieChart.js +1 -0
  90. package/esm/PieChart/PieChart.plugins.d.ts +2 -1
  91. package/esm/PieChart/PieChart.plugins.js +2 -1
  92. package/esm/PieChart/dataTransform/useTransformData.d.ts +1 -0
  93. package/esm/PieChart/dataTransform/useTransformData.js +9 -1
  94. package/esm/PieChart/index.d.ts +1 -0
  95. package/esm/PieChart/index.js +1 -0
  96. package/esm/RadarChart/RadarChart.plugins.d.ts +1 -1
  97. package/esm/RadarChart/RadarDataProvider/RadarDataProvider.d.ts +3 -3
  98. package/esm/RadarChart/index.d.ts +2 -1
  99. package/esm/RadarChart/index.js +2 -1
  100. package/esm/RadarChart/useRadarChartProps.d.ts +2 -2
  101. package/esm/ScatterChart/BatchScatter.d.ts +32 -0
  102. package/esm/ScatterChart/BatchScatter.js +165 -0
  103. package/esm/ScatterChart/Scatter.js +13 -5
  104. package/esm/ScatterChart/ScatterChart.d.ts +4 -4
  105. package/esm/ScatterChart/ScatterChart.js +13 -2
  106. package/esm/ScatterChart/ScatterChart.plugins.d.ts +4 -3
  107. package/esm/ScatterChart/ScatterChart.plugins.js +3 -2
  108. package/esm/ScatterChart/ScatterPlot.d.ts +10 -0
  109. package/esm/ScatterChart/ScatterPlot.js +14 -2
  110. package/esm/ScatterChart/index.d.ts +1 -0
  111. package/esm/ScatterChart/index.js +1 -0
  112. package/esm/ScatterChart/useScatterChartProps.d.ts +2 -2
  113. package/esm/ScatterChart/useScatterChartProps.js +8 -5
  114. package/esm/SparkLineChart/SparkLineChart.js +10 -5
  115. package/esm/Toolbar/Toolbar.js +1 -2
  116. package/esm/colorPalettes/types.d.ts +1 -1
  117. package/esm/context/ChartApi.d.ts +6 -6
  118. package/esm/hooks/useAxis.d.ts +5 -5
  119. package/esm/hooks/useDrawingArea.d.ts +20 -2
  120. package/esm/hooks/useFocusedItem.d.ts +15 -0
  121. package/esm/hooks/useFocusedItem.js +20 -0
  122. package/esm/hooks/useIsItemFocused.d.ts +12 -0
  123. package/esm/hooks/useIsItemFocused.js +15 -0
  124. package/esm/hooks/useIsItemFocusedGetter.d.ts +8 -0
  125. package/esm/hooks/useIsItemFocusedGetter.js +14 -0
  126. package/esm/hooks/useScale.js +6 -0
  127. package/esm/index.d.ts +1 -0
  128. package/esm/index.js +2 -1
  129. package/esm/internals/animation/Transition.js +1 -3
  130. package/esm/internals/index.d.ts +3 -2
  131. package/esm/internals/index.js +3 -2
  132. package/esm/internals/plugins/allPlugins.d.ts +5 -4
  133. package/esm/internals/plugins/allPlugins.js +3 -2
  134. package/esm/internals/plugins/corePlugins/useChartSeries/processSeries.d.ts +1 -1
  135. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.d.ts +2 -0
  136. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +66 -72
  137. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.d.ts +3 -19
  138. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js +10 -18
  139. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisDomainLimit.d.ts +1 -1
  140. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/{getAxisExtremum.d.ts → getAxisExtrema.d.ts} +1 -1
  141. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtrema.js +24 -0
  142. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisScale.d.ts +63 -0
  143. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisScale.js +123 -0
  144. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +8 -6
  145. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPreview.selectors.d.ts +2 -0
  146. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPreview.selectors.js +46 -4
  147. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +10 -0
  148. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js +32 -21
  149. package/esm/internals/plugins/featurePlugins/useChartClosestPoint/index.d.ts +3 -0
  150. package/esm/internals/plugins/featurePlugins/useChartClosestPoint/index.js +2 -0
  151. package/esm/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.d.ts +3 -0
  152. package/esm/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.js → useChartClosestPoint/useChartClosestPoint.js} +9 -7
  153. package/esm/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.selectors.d.ts +5 -0
  154. package/esm/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.selectors.js +3 -0
  155. package/esm/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.types.d.ts → useChartClosestPoint/useChartClosestPoint.types.d.ts} +8 -4
  156. package/esm/internals/plugins/featurePlugins/useChartHighlight/highlightStates.d.ts +16 -0
  157. package/esm/internals/plugins/featurePlugins/useChartHighlight/highlightStates.js +32 -0
  158. package/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.d.ts +4 -0
  159. package/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +5 -0
  160. package/esm/internals/plugins/featurePlugins/useChartInteraction/checkHasInteractionPlugin.d.ts +3 -0
  161. package/esm/internals/plugins/featurePlugins/useChartInteraction/checkHasInteractionPlugin.js +3 -0
  162. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/index.d.ts +3 -0
  163. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/index.js +2 -0
  164. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.d.ts +3 -0
  165. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.d.ts +20 -0
  166. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.js +88 -0
  167. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.js +210 -0
  168. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.d.ts +25 -0
  169. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.js +7 -0
  170. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.d.ts +34 -0
  171. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.js +1 -0
  172. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +10 -8
  173. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +2 -1
  174. package/esm/internals/plugins/models/seriesConfig/getSeriesWithDefaultValues.types.d.ts +1 -1
  175. package/esm/internals/scaleGuards.d.ts +7 -0
  176. package/esm/internals/scaleGuards.js +6 -0
  177. package/esm/locales/elGR.d.ts +96 -0
  178. package/esm/locales/elGR.js +100 -0
  179. package/esm/locales/enUS.d.ts +96 -0
  180. package/esm/locales/enUS.js +99 -1
  181. package/esm/locales/frFR.d.ts +96 -0
  182. package/esm/locales/frFR.js +100 -2
  183. package/esm/locales/ptBR.d.ts +96 -0
  184. package/esm/locales/ptBR.js +100 -0
  185. package/esm/locales/ptPT.d.ts +96 -0
  186. package/esm/locales/ptPT.js +100 -0
  187. package/esm/locales/svSE.d.ts +97 -1
  188. package/esm/locales/svSE.js +100 -0
  189. package/esm/locales/utils/chartsLocaleTextApi.d.ts +384 -0
  190. package/esm/locales/utils/getChartsLocalization.d.ts +96 -0
  191. package/esm/plugins/index.d.ts +6 -0
  192. package/esm/plugins/index.js +12 -0
  193. package/hooks/useAxis.d.ts +5 -5
  194. package/hooks/useDrawingArea.d.ts +20 -2
  195. package/hooks/useFocusedItem.d.ts +15 -0
  196. package/hooks/useFocusedItem.js +26 -0
  197. package/hooks/useIsItemFocused.d.ts +12 -0
  198. package/hooks/useIsItemFocused.js +20 -0
  199. package/hooks/useIsItemFocusedGetter.d.ts +8 -0
  200. package/hooks/useIsItemFocusedGetter.js +18 -0
  201. package/hooks/useScale.js +6 -0
  202. package/index.d.ts +1 -0
  203. package/index.js +13 -1
  204. package/internals/animation/Transition.js +0 -2
  205. package/internals/index.d.ts +3 -2
  206. package/internals/index.js +20 -8
  207. package/internals/plugins/allPlugins.d.ts +5 -4
  208. package/internals/plugins/allPlugins.js +3 -2
  209. package/internals/plugins/corePlugins/useChartSeries/processSeries.d.ts +1 -1
  210. package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.d.ts +2 -0
  211. package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +63 -69
  212. package/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.d.ts +3 -19
  213. package/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js +10 -18
  214. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisDomainLimit.d.ts +1 -1
  215. package/internals/plugins/featurePlugins/useChartCartesianAxis/{getAxisExtremum.d.ts → getAxisExtrema.d.ts} +1 -1
  216. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtrema.js +30 -0
  217. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisScale.d.ts +63 -0
  218. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisScale.js +134 -0
  219. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +8 -6
  220. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPreview.selectors.d.ts +2 -0
  221. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPreview.selectors.js +47 -5
  222. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +10 -0
  223. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js +33 -22
  224. package/internals/plugins/featurePlugins/useChartClosestPoint/index.d.ts +3 -0
  225. package/internals/plugins/featurePlugins/useChartClosestPoint/index.js +27 -0
  226. package/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.d.ts +3 -0
  227. package/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.js → useChartClosestPoint/useChartClosestPoint.js} +11 -9
  228. package/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.selectors.d.ts +5 -0
  229. package/internals/plugins/featurePlugins/useChartClosestPoint/useChartClosestPoint.selectors.js +9 -0
  230. package/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.types.d.ts → useChartClosestPoint/useChartClosestPoint.types.d.ts} +8 -4
  231. package/internals/plugins/featurePlugins/useChartHighlight/highlightStates.d.ts +16 -0
  232. package/internals/plugins/featurePlugins/useChartHighlight/highlightStates.js +41 -0
  233. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.d.ts +4 -0
  234. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +6 -1
  235. package/internals/plugins/featurePlugins/useChartInteraction/checkHasInteractionPlugin.d.ts +3 -0
  236. package/internals/plugins/featurePlugins/useChartInteraction/checkHasInteractionPlugin.js +9 -0
  237. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/index.d.ts +3 -0
  238. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/index.js +27 -0
  239. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.d.ts +3 -0
  240. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.d.ts +20 -0
  241. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.helpers.js +96 -0
  242. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.js +218 -0
  243. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.d.ts +25 -0
  244. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.selectors.js +13 -0
  245. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.d.ts +34 -0
  246. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/useChartKeyboardNavigation.types.js +5 -0
  247. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +10 -8
  248. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.types.d.ts +2 -1
  249. package/internals/plugins/models/seriesConfig/getSeriesWithDefaultValues.types.d.ts +1 -1
  250. package/internals/scaleGuards.d.ts +7 -0
  251. package/internals/scaleGuards.js +8 -0
  252. package/locales/elGR.d.ts +96 -0
  253. package/locales/elGR.js +100 -0
  254. package/locales/enUS.d.ts +96 -0
  255. package/locales/enUS.js +99 -1
  256. package/locales/frFR.d.ts +96 -0
  257. package/locales/frFR.js +100 -2
  258. package/locales/ptBR.d.ts +96 -0
  259. package/locales/ptBR.js +100 -0
  260. package/locales/ptPT.d.ts +96 -0
  261. package/locales/ptPT.js +100 -0
  262. package/locales/svSE.d.ts +97 -1
  263. package/locales/svSE.js +100 -0
  264. package/locales/utils/chartsLocaleTextApi.d.ts +384 -0
  265. package/locales/utils/getChartsLocalization.d.ts +96 -0
  266. package/package.json +4 -4
  267. package/plugins/index.d.ts +6 -0
  268. package/plugins/index.js +47 -0
  269. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.js +0 -22
  270. package/esm/internals/plugins/featurePlugins/useChartVoronoi/index.d.ts +0 -3
  271. package/esm/internals/plugins/featurePlugins/useChartVoronoi/index.js +0 -2
  272. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.d.ts +0 -3
  273. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.d.ts +0 -5
  274. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.js +0 -3
  275. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.js +0 -29
  276. package/internals/plugins/featurePlugins/useChartVoronoi/index.d.ts +0 -3
  277. package/internals/plugins/featurePlugins/useChartVoronoi/index.js +0 -27
  278. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.d.ts +0 -3
  279. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.d.ts +0 -5
  280. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.js +0 -9
  281. /package/esm/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.types.js → useChartClosestPoint/useChartClosestPoint.types.js} +0 -0
  282. /package/internals/plugins/featurePlugins/{useChartVoronoi/useChartVoronoi.types.js → useChartClosestPoint/useChartClosestPoint.types.js} +0 -0
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { DefaultizedScatterSeriesType } from "../models/seriesType/scatter.js";
3
+ import { D3Scale } from "../models/axis.js";
4
+ import { ScatterClasses } from "./scatterClasses.js";
5
+ import { ColorGetter } from "../internals/plugins/models/seriesConfig/index.js";
6
+ export interface BatchScatterProps {
7
+ series: DefaultizedScatterSeriesType;
8
+ xScale: D3Scale;
9
+ yScale: D3Scale;
10
+ color: string;
11
+ colorGetter?: ColorGetter<'scatter'>;
12
+ classes?: Partial<ScatterClasses>;
13
+ }
14
+ export interface BatchScatterPathsProps {
15
+ series: DefaultizedScatterSeriesType;
16
+ xScale: D3Scale;
17
+ yScale: D3Scale;
18
+ color: string;
19
+ colorGetter?: ColorGetter<'scatter'>;
20
+ markerSize: number;
21
+ }
22
+ /**
23
+ * @internal
24
+ * A batch version of the Scatter component that uses SVG paths to render points.
25
+ * This component is optimized for performance and is suitable for rendering large datasets, but has limitations. Some of the limitations include:
26
+ * - Limited CSS styling;
27
+ * - Overriding the `marker` slot is not supported;
28
+ * - Highlight style must not contain opacity.
29
+ *
30
+ * You can read about all the limitations [here](https://mui.com/x/react-charts/scatter/#performance).
31
+ */
32
+ export declare function BatchScatter(props: BatchScatterProps): React.JSX.Element;
@@ -0,0 +1,165 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { styled } from '@mui/material/styles';
5
+ import { useUtilityClasses } from "./scatterClasses.js";
6
+ import { useChartContext } from "../context/ChartProvider/index.js";
7
+ import { getValueToPositionMapper } from "../hooks/useScale.js";
8
+ import { useSelector } from "../internals/store/useSelector.js";
9
+ import { selectorChartIsSeriesFaded, selectorChartIsSeriesHighlighted, selectorChartSeriesUnfadedItem, selectorChartSeriesHighlightedItem } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const MAX_POINTS_PER_PATH = 1000;
12
+ /* In an SVG arc, if the arc starts and ends at the same point, it is not rendered, so we add a tiny
13
+ * value to one of the coordinates to ensure that the arc is rendered. */
14
+ const ALMOST_ZERO = 0.01;
15
+ function appendAtKey(map, key, value) {
16
+ let bucket = map.get(key);
17
+ if (!bucket) {
18
+ bucket = [value];
19
+ map.set(key, bucket);
20
+ } else {
21
+ bucket.push(value);
22
+ }
23
+ return bucket;
24
+ }
25
+ function createPath(x, y, markerSize) {
26
+ return `M${x - markerSize} ${y} a${markerSize} ${markerSize} 0 1 1 0 ${ALMOST_ZERO}`;
27
+ }
28
+ function useCreatePaths(seriesData, markerSize, xScale, yScale, color, colorGetter) {
29
+ const {
30
+ instance
31
+ } = useChartContext();
32
+ const getXPosition = getValueToPositionMapper(xScale);
33
+ const getYPosition = getValueToPositionMapper(yScale);
34
+ const paths = new Map();
35
+ const temporaryPaths = new Map();
36
+ for (let i = 0; i < seriesData.length; i += 1) {
37
+ const scatterPoint = seriesData[i];
38
+ const x = getXPosition(scatterPoint.x);
39
+ const y = getYPosition(scatterPoint.y);
40
+ if (!instance.isPointInside(x, y)) {
41
+ continue;
42
+ }
43
+ const path = createPath(x, y, markerSize);
44
+ const fill = colorGetter ? colorGetter(i) : color;
45
+ const tempPath = appendAtKey(temporaryPaths, fill, path);
46
+ if (tempPath.length >= MAX_POINTS_PER_PATH) {
47
+ appendAtKey(paths, fill, tempPath.join(''));
48
+ temporaryPaths.delete(fill);
49
+ }
50
+ }
51
+ for (const [fill, tempPath] of temporaryPaths.entries()) {
52
+ if (tempPath.length > 0) {
53
+ appendAtKey(paths, fill, tempPath.join(''));
54
+ }
55
+ }
56
+ return paths;
57
+ }
58
+ function BatchScatterPaths(props) {
59
+ const {
60
+ series,
61
+ xScale,
62
+ yScale,
63
+ color,
64
+ colorGetter,
65
+ markerSize
66
+ } = props;
67
+ const paths = useCreatePaths(series.data, markerSize, xScale, yScale, color, colorGetter);
68
+ const children = [];
69
+ let i = 0;
70
+ for (const [fill, dArray] of paths.entries()) {
71
+ for (const d of dArray) {
72
+ children.push(/*#__PURE__*/_jsx("path", {
73
+ fill: fill,
74
+ d: d
75
+ }, i));
76
+ i += 1;
77
+ }
78
+ }
79
+ return /*#__PURE__*/_jsx(React.Fragment, {
80
+ children: children
81
+ });
82
+ }
83
+ const MemoBatchScatterPaths = /*#__PURE__*/React.memo(BatchScatterPaths);
84
+ if (process.env.NODE_ENV !== "production") MemoBatchScatterPaths.displayName = "MemoBatchScatterPaths";
85
+ const Group = styled('g')({
86
+ '&[data-faded="true"]': {
87
+ opacity: 0.3
88
+ },
89
+ '& path': {
90
+ /* The browser must do hit testing to know which element a pointer is interacting with.
91
+ * With many data points, we create many paths causing significant time to be spent in the hit test phase.
92
+ * To fix this issue, we disable pointer events for the descendant paths.
93
+ *
94
+ * Ideally, users should be able to override this in case they need pointer events to be enabled,
95
+ * but it can affect performance negatively, especially with many data points. */
96
+ pointerEvents: 'none'
97
+ }
98
+ });
99
+
100
+ /**
101
+ * @internal
102
+ * A batch version of the Scatter component that uses SVG paths to render points.
103
+ * This component is optimized for performance and is suitable for rendering large datasets, but has limitations. Some of the limitations include:
104
+ * - Limited CSS styling;
105
+ * - Overriding the `marker` slot is not supported;
106
+ * - Highlight style must not contain opacity.
107
+ *
108
+ * You can read about all the limitations [here](https://mui.com/x/react-charts/scatter/#performance).
109
+ */
110
+ export function BatchScatter(props) {
111
+ const {
112
+ series,
113
+ xScale,
114
+ yScale,
115
+ color,
116
+ colorGetter,
117
+ classes: inClasses
118
+ } = props;
119
+ const {
120
+ store
121
+ } = useChartContext();
122
+ const isSeriesHighlighted = useSelector(store, selectorChartIsSeriesHighlighted, [series.id]);
123
+ const isSeriesFaded = useSelector(store, selectorChartIsSeriesFaded, [series.id]);
124
+ const seriesHighlightedItem = useSelector(store, selectorChartSeriesHighlightedItem, [series.id]);
125
+ const seriesUnfadedItem = useSelector(store, selectorChartSeriesUnfadedItem, [series.id]);
126
+ const highlightedModifier = 1.2;
127
+ const markerSize = series.markerSize * (isSeriesHighlighted ? highlightedModifier : 1);
128
+ const classes = useUtilityClasses(inClasses);
129
+ const siblings = [];
130
+ if (seriesHighlightedItem != null) {
131
+ const datum = series.data[seriesHighlightedItem];
132
+ const getXPosition = getValueToPositionMapper(xScale);
133
+ const getYPosition = getValueToPositionMapper(yScale);
134
+ siblings.push(/*#__PURE__*/_jsx("path", {
135
+ fill: colorGetter ? colorGetter(seriesHighlightedItem) : color,
136
+ "data-highlighted": true,
137
+ d: createPath(getXPosition(datum.x), getYPosition(datum.y), markerSize * highlightedModifier)
138
+ }, `highlighted-${series.id}`));
139
+ }
140
+ if (seriesUnfadedItem != null) {
141
+ const datum = series.data[seriesUnfadedItem];
142
+ const getXPosition = getValueToPositionMapper(xScale);
143
+ const getYPosition = getValueToPositionMapper(yScale);
144
+ siblings.push(/*#__PURE__*/_jsx("path", {
145
+ fill: colorGetter ? colorGetter(seriesUnfadedItem) : color,
146
+ d: createPath(getXPosition(datum.x), getYPosition(datum.y), markerSize)
147
+ }, `unfaded-${series.id}`));
148
+ }
149
+ return /*#__PURE__*/_jsxs(React.Fragment, {
150
+ children: [/*#__PURE__*/_jsx(Group, {
151
+ className: classes.root,
152
+ "data-series": series.id,
153
+ "data-faded": isSeriesFaded || undefined,
154
+ "data-highlighted": isSeriesHighlighted || undefined,
155
+ children: /*#__PURE__*/_jsx(MemoBatchScatterPaths, {
156
+ series: series,
157
+ xScale: xScale,
158
+ yScale: yScale,
159
+ color: color,
160
+ colorGetter: colorGetter,
161
+ markerSize: markerSize
162
+ })
163
+ }), siblings]
164
+ });
165
+ }
@@ -10,11 +10,12 @@ import { getInteractionItemProps } from "../hooks/useInteractionItemProps.js";
10
10
  import { useStore } from "../internals/store/useStore.js";
11
11
  import { useSelector } from "../internals/store/useSelector.js";
12
12
  import { useItemHighlightedGetter } from "../hooks/useItemHighlightedGetter.js";
13
- import { selectorChartsVoronoiIsVoronoiEnabled } from "../internals/plugins/featurePlugins/useChartVoronoi/index.js";
13
+ import { selectorChartsIsVoronoiEnabled } from "../internals/plugins/featurePlugins/useChartClosestPoint/index.js";
14
14
  import { ScatterMarker } from "./ScatterMarker.js";
15
15
  import { useUtilityClasses } from "./scatterClasses.js";
16
16
  import { useScatterPlotData } from "./useScatterPlotData.js";
17
17
  import { useChartContext } from "../context/ChartProvider/index.js";
18
+ import { useIsItemFocusedGetter } from "../hooks/useIsItemFocusedGetter.js";
18
19
  import { jsx as _jsx } from "react/jsx-runtime";
19
20
  /**
20
21
  * Demos:
@@ -42,12 +43,13 @@ function Scatter(props) {
42
43
  instance
43
44
  } = useChartContext();
44
45
  const store = useStore();
45
- const isVoronoiEnabled = useSelector(store, selectorChartsVoronoiIsVoronoiEnabled);
46
+ const isVoronoiEnabled = useSelector(store, selectorChartsIsVoronoiEnabled);
46
47
  const skipInteractionHandlers = isVoronoiEnabled || series.disableHover;
47
48
  const {
48
49
  isFaded,
49
50
  isHighlighted
50
51
  } = useItemHighlightedGetter();
52
+ const isFocused = useIsItemFocusedGetter();
51
53
  const scatterPlotData = useScatterPlotData(series, xScale, yScale, instance.isPointInside);
52
54
  const Marker = slots?.marker ?? ScatterMarker;
53
55
  const _useSlotProps = useSlotProps({
@@ -64,12 +66,17 @@ function Scatter(props) {
64
66
  return /*#__PURE__*/_jsx("g", {
65
67
  "data-series": series.id,
66
68
  className: classes.root,
67
- children: scatterPlotData.map((dataPoint, i) => {
69
+ children: scatterPlotData.map(dataPoint => {
68
70
  const isItemHighlighted = isHighlighted(dataPoint);
69
71
  const isItemFaded = !isItemHighlighted && isFaded(dataPoint);
72
+ const isItemFocused = isFocused({
73
+ seriesType: 'scatter',
74
+ seriesId: series.id,
75
+ dataIndex: dataPoint.dataIndex
76
+ });
70
77
  return /*#__PURE__*/_jsx(Marker, _extends({
71
78
  dataIndex: dataPoint.dataIndex,
72
- color: colorGetter ? colorGetter(i) : color,
79
+ color: colorGetter ? colorGetter(dataPoint.dataIndex) : color,
73
80
  isHighlighted: isItemHighlighted,
74
81
  isFaded: isItemFaded,
75
82
  x: dataPoint.x,
@@ -80,7 +87,8 @@ function Scatter(props) {
80
87
  dataIndex: dataPoint.dataIndex
81
88
  })),
82
89
  "data-highlighted": isItemHighlighted || undefined,
83
- "data-faded": isItemFaded || undefined
90
+ "data-faded": isItemFaded || undefined,
91
+ "data-focused": isItemFocused || undefined
84
92
  }, skipInteractionHandlers ? undefined : getInteractionItemProps(instance, dataPoint), markerProps), dataPoint.id ?? dataPoint.dataIndex);
85
93
  })
86
94
  });
@@ -13,8 +13,8 @@ import { ChartsOverlayProps, ChartsOverlaySlotProps, ChartsOverlaySlots } from "
13
13
  import { ChartsAxisHighlightProps } from "../ChartsAxisHighlight/index.js";
14
14
  import { ChartsAxisSlots, ChartsAxisSlotProps } from "../models/axis.js";
15
15
  import { ChartsGridProps } from "../ChartsGrid/index.js";
16
- import { UseChartVoronoiSignature } from "../internals/plugins/featurePlugins/useChartVoronoi/index.js";
17
- import { ScatterChartPluginsSignatures } from "./ScatterChart.plugins.js";
16
+ import { UseChartClosestPointSignature } from "../internals/plugins/featurePlugins/useChartClosestPoint/index.js";
17
+ import { ScatterChartPluginSignatures } from "./ScatterChart.plugins.js";
18
18
  export interface ScatterChartSlots extends ChartsAxisSlots, ScatterPlotSlots, ChartsLegendSlots, ChartsOverlaySlots, ChartsTooltipSlots, ChartsToolbarSlots, Partial<ChartsSlots> {}
19
19
  export interface ScatterChartSlotProps extends ChartsAxisSlotProps, ScatterPlotSlotProps, ChartsLegendSlotProps, ChartsOverlaySlotProps, Omit<ChartsTooltipSlotProps, 'tooltip'>, ChartsToolbarSlotProps, Partial<ChartsSlotProps> {
20
20
  /**
@@ -24,7 +24,7 @@ export interface ScatterChartSlotProps extends ChartsAxisSlotProps, ScatterPlotS
24
24
  tooltip?: Partial<ChartsTooltipProps<'item' | 'none'>>;
25
25
  }
26
26
  export type ScatterSeries = MakeOptional<ScatterSeriesType, 'type'>;
27
- export interface ScatterChartProps extends Omit<ChartContainerProps<'scatter', ScatterChartPluginsSignatures>, 'series' | 'plugins' | 'onItemClick' | 'experimentalFeatures' | 'highlightedAxis' | 'onHighlightedAxisChange'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'> {
27
+ export interface ScatterChartProps extends Omit<ChartContainerProps<'scatter', ScatterChartPluginSignatures>, 'series' | 'plugins' | 'onItemClick' | 'experimentalFeatures' | 'highlightedAxis' | 'onHighlightedAxisChange'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, Omit<ChartsOverlayProps, 'slots' | 'slotProps'>, Pick<ScatterPlotProps, 'renderer'> {
28
28
  /**
29
29
  * The series to display in the scatter chart.
30
30
  * An array of [[ScatterSeries]] objects.
@@ -69,7 +69,7 @@ export interface ScatterChartProps extends Omit<ChartContainerProps<'scatter', S
69
69
  * @param {MouseEvent} event The mouse event recorded on the `<svg/>` element if using Voronoi cells. Or the Mouse event from the scatter element, when `disableVoronoi=true`.
70
70
  * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
71
71
  */
72
- onItemClick?: ScatterPlotProps['onItemClick'] | UseChartVoronoiSignature['params']['onItemClick'];
72
+ onItemClick?: ScatterPlotProps['onItemClick'] | UseChartClosestPointSignature['params']['onItemClick'];
73
73
  }
74
74
  /**
75
75
  * Demos:
@@ -103,6 +103,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
103
103
  * @default false
104
104
  */
105
105
  disableVoronoi: PropTypes.bool,
106
+ enableKeyboardNavigation: PropTypes.bool,
106
107
  /**
107
108
  * Option to display a cartesian grid in the background.
108
109
  */
@@ -171,6 +172,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
171
172
  * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
172
173
  */
173
174
  onItemClick: PropTypes.func,
175
+ /**
176
+ * The type of renderer to use for the scatter plot.
177
+ * - `svg-single`: Renders every scatter item in a `<circle />` element.
178
+ * - `svg-batch`: Batch renders scatter items in `<path />` elements for better performance with large datasets, at the cost of some limitations.
179
+ * Read more: https://mui.com/x/react-charts/scatter/#performance
180
+ *
181
+ * @default 'svg-single'
182
+ */
183
+ renderer: PropTypes.oneOf(['svg-batch', 'svg-single']),
174
184
  /**
175
185
  * The series to display in the scatter chart.
176
186
  * An array of [[ScatterSeries]] objects.
@@ -200,10 +210,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
200
210
  theme: PropTypes.oneOf(['dark', 'light']),
201
211
  title: PropTypes.string,
202
212
  /**
203
- * Defines the maximal distance between a scatter point and the pointer that triggers the interaction.
213
+ * Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
214
+ * If set to `'item'`, the radius is the `markerSize`.
204
215
  * If `undefined`, the radius is assumed to be infinite.
205
216
  */
206
- voronoiMaxRadius: PropTypes.number,
217
+ voronoiMaxRadius: PropTypes.oneOfType([PropTypes.oneOf(['item']), PropTypes.number]),
207
218
  /**
208
219
  * The width of the chart in px. If not defined, it takes the width of the parent element.
209
220
  */
@@ -3,6 +3,7 @@ import { UseChartCartesianAxisSignature } from "../internals/plugins/featurePlug
3
3
  import { UseChartInteractionSignature } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
4
4
  import { UseChartHighlightSignature } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
5
5
  import { ConvertSignaturesIntoPlugins } from "../internals/plugins/models/helpers.js";
6
- import { UseChartVoronoiSignature } from "../internals/plugins/featurePlugins/useChartVoronoi/index.js";
7
- export type ScatterChartPluginsSignatures = [UseChartZAxisSignature, UseChartCartesianAxisSignature<'scatter'>, UseChartInteractionSignature, UseChartHighlightSignature, UseChartVoronoiSignature];
8
- export declare const SCATTER_CHART_PLUGINS: ConvertSignaturesIntoPlugins<ScatterChartPluginsSignatures>;
6
+ import { UseChartClosestPointSignature } from "../internals/plugins/featurePlugins/useChartClosestPoint/index.js";
7
+ import { UseChartKeyboardNavigationSignature } from "../internals/plugins/featurePlugins/useChartKeyboardNavigation/index.js";
8
+ export type ScatterChartPluginSignatures = [UseChartZAxisSignature, UseChartCartesianAxisSignature<'scatter'>, UseChartInteractionSignature, UseChartHighlightSignature, UseChartClosestPointSignature, UseChartKeyboardNavigationSignature];
9
+ export declare const SCATTER_CHART_PLUGINS: ConvertSignaturesIntoPlugins<ScatterChartPluginSignatures>;
@@ -2,5 +2,6 @@ import { useChartZAxis } from "../internals/plugins/featurePlugins/useChartZAxis
2
2
  import { useChartCartesianAxis } from "../internals/plugins/featurePlugins/useChartCartesianAxis/index.js";
3
3
  import { useChartInteraction } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
4
4
  import { useChartHighlight } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
5
- import { useChartVoronoi } from "../internals/plugins/featurePlugins/useChartVoronoi/index.js";
6
- export const SCATTER_CHART_PLUGINS = [useChartZAxis, useChartCartesianAxis, useChartInteraction, useChartHighlight, useChartVoronoi];
5
+ import { useChartClosestPoint } from "../internals/plugins/featurePlugins/useChartClosestPoint/index.js";
6
+ import { useChartKeyboardNavigation } from "../internals/plugins/featurePlugins/useChartKeyboardNavigation/index.js";
7
+ export const SCATTER_CHART_PLUGINS = [useChartZAxis, useChartCartesianAxis, useChartInteraction, useChartHighlight, useChartClosestPoint, useChartKeyboardNavigation];
@@ -6,6 +6,7 @@ export interface ScatterPlotSlots extends ScatterSlots {
6
6
  export interface ScatterPlotSlotProps extends ScatterSlotProps {
7
7
  scatter?: Partial<ScatterProps>;
8
8
  }
9
+ export type RendererType = 'svg-single' | 'svg-batch';
9
10
  export interface ScatterPlotProps extends Pick<ScatterProps, 'onItemClick'> {
10
11
  /**
11
12
  * Overridable component slots.
@@ -17,6 +18,15 @@ export interface ScatterPlotProps extends Pick<ScatterProps, 'onItemClick'> {
17
18
  * @default {}
18
19
  */
19
20
  slotProps?: ScatterPlotSlotProps;
21
+ /**
22
+ * The type of renderer to use for the scatter plot.
23
+ * - `svg-single`: Renders every scatter item in a `<circle />` element.
24
+ * - `svg-batch`: Batch renders scatter items in `<path />` elements for better performance with large datasets, at the cost of some limitations.
25
+ * Read more: https://mui.com/x/react-charts/scatter/#performance
26
+ *
27
+ * @default 'svg-single'
28
+ */
29
+ renderer?: RendererType;
20
30
  }
21
31
  /**
22
32
  * Demos:
@@ -8,6 +8,7 @@ import { useScatterSeriesContext } from "../hooks/useScatterSeries.js";
8
8
  import { useXAxes, useYAxes } from "../hooks/index.js";
9
9
  import { useZAxes } from "../hooks/useZAxis.js";
10
10
  import { seriesConfig as scatterSeriesConfig } from "./seriesConfig/index.js";
11
+ import { BatchScatter } from "./BatchScatter.js";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  /**
13
14
  * Demos:
@@ -23,7 +24,8 @@ function ScatterPlot(props) {
23
24
  const {
24
25
  slots,
25
26
  slotProps,
26
- onItemClick
27
+ onItemClick,
28
+ renderer
27
29
  } = props;
28
30
  const seriesData = useScatterSeriesContext();
29
31
  const {
@@ -48,7 +50,8 @@ function ScatterPlot(props) {
48
50
  const defaultXAxisId = xAxisIds[0];
49
51
  const defaultYAxisId = yAxisIds[0];
50
52
  const defaultZAxisId = zAxisIds[0];
51
- const ScatterItems = slots?.scatter ?? Scatter;
53
+ const DefaultScatterItems = renderer === 'svg-batch' ? BatchScatter : Scatter;
54
+ const ScatterItems = slots?.scatter ?? DefaultScatterItems;
52
55
  return /*#__PURE__*/_jsx(React.Fragment, {
53
56
  children: seriesOrder.map(seriesId => {
54
57
  const {
@@ -85,6 +88,15 @@ process.env.NODE_ENV !== "production" ? ScatterPlot.propTypes = {
85
88
  * @param {ScatterItemIdentifier} scatterItemIdentifier The scatter item identifier.
86
89
  */
87
90
  onItemClick: PropTypes.func,
91
+ /**
92
+ * The type of renderer to use for the scatter plot.
93
+ * - `svg-single`: Renders every scatter item in a `<circle />` element.
94
+ * - `svg-batch`: Batch renders scatter items in `<path />` elements for better performance with large datasets, at the cost of some limitations.
95
+ * Read more: https://mui.com/x/react-charts/scatter/#performance
96
+ *
97
+ * @default 'svg-single'
98
+ */
99
+ renderer: PropTypes.oneOf(['svg-batch', 'svg-single']),
88
100
  /**
89
101
  * The props used for each component slot.
90
102
  * @default {}
@@ -3,5 +3,6 @@ export * from "./ScatterPlot.js";
3
3
  export * from "./Scatter.js";
4
4
  export * from "./ScatterMarker.types.js";
5
5
  export * from "./ScatterMarker.js";
6
+ export * from "./ScatterChart.plugins.js";
6
7
  export type { ScatterClasses } from "./scatterClasses.js";
7
8
  export { scatterClasses } from "./scatterClasses.js";
@@ -3,4 +3,5 @@ export * from "./ScatterPlot.js";
3
3
  export * from "./Scatter.js";
4
4
  export * from "./ScatterMarker.types.js";
5
5
  export * from "./ScatterMarker.js";
6
+ export * from "./ScatterChart.plugins.js";
6
7
  export { scatterClasses } from "./scatterClasses.js";
@@ -8,7 +8,7 @@ import { ChartContainerProps } from "../ChartContainer/index.js";
8
8
  import type { ScatterChartProps } from "./ScatterChart.js";
9
9
  import type { ScatterPlotProps } from "./ScatterPlot.js";
10
10
  import type { ChartsWrapperProps } from "../ChartsWrapper/index.js";
11
- import { ScatterChartPluginsSignatures } from "./ScatterChart.plugins.js";
11
+ import { ScatterChartPluginSignatures } from "./ScatterChart.plugins.js";
12
12
  /**
13
13
  * A helper function that extracts ScatterChartProps from the input props
14
14
  * and returns an object with props for the children components of ScatterChart.
@@ -18,7 +18,7 @@ import { ScatterChartPluginsSignatures } from "./ScatterChart.plugins.js";
18
18
  */
19
19
  export declare const useScatterChartProps: (props: ScatterChartProps) => {
20
20
  chartsWrapperProps: Omit<ChartsWrapperProps, "children">;
21
- chartContainerProps: ChartContainerProps<"scatter", ScatterChartPluginsSignatures>;
21
+ chartContainerProps: ChartContainerProps<"scatter", ScatterChartPluginSignatures>;
22
22
  chartsAxisProps: ChartsAxisProps;
23
23
  gridProps: ChartsGridProps;
24
24
  scatterPlotProps: ScatterPlotProps;
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["xAxis", "yAxis", "zAxis", "series", "axisHighlight", "voronoiMaxRadius", "disableVoronoi", "hideLegend", "width", "height", "margin", "colors", "sx", "grid", "onItemClick", "children", "slots", "slotProps", "loading", "highlightedItem", "onHighlightChange", "className", "showToolbar"];
5
+ const _excluded = ["xAxis", "yAxis", "zAxis", "series", "axisHighlight", "voronoiMaxRadius", "disableVoronoi", "hideLegend", "width", "height", "margin", "colors", "sx", "grid", "onItemClick", "children", "slots", "slotProps", "loading", "highlightedItem", "onHighlightChange", "className", "showToolbar", "renderer"];
6
6
  import * as React from 'react';
7
7
  import { SCATTER_CHART_PLUGINS } from "./ScatterChart.plugins.js";
8
8
  /**
@@ -34,12 +34,14 @@ export const useScatterChartProps = props => {
34
34
  loading,
35
35
  highlightedItem,
36
36
  onHighlightChange,
37
- className
37
+ className,
38
+ renderer
38
39
  } = props,
39
40
  other = _objectWithoutPropertiesLoose(props, _excluded);
40
41
  const seriesWithDefault = React.useMemo(() => series.map(s => _extends({
41
42
  type: 'scatter'
42
43
  }, s)), [series]);
44
+ const useVoronoiOnItemClick = disableVoronoi !== true || renderer === 'svg-batch';
43
45
  const chartContainerProps = _extends({}, other, {
44
46
  series: seriesWithDefault,
45
47
  width,
@@ -53,7 +55,7 @@ export const useScatterChartProps = props => {
53
55
  onHighlightChange,
54
56
  disableVoronoi,
55
57
  voronoiMaxRadius,
56
- onItemClick: disableVoronoi ? undefined : onItemClick,
58
+ onItemClick: useVoronoiOnItemClick ? onItemClick : undefined,
57
59
  className,
58
60
  plugins: SCATTER_CHART_PLUGINS,
59
61
  slots,
@@ -68,9 +70,10 @@ export const useScatterChartProps = props => {
68
70
  horizontal: grid?.horizontal
69
71
  };
70
72
  const scatterPlotProps = {
71
- onItemClick: disableVoronoi ? onItemClick : undefined,
73
+ onItemClick: useVoronoiOnItemClick ? undefined : onItemClick,
72
74
  slots,
73
- slotProps
75
+ slotProps,
76
+ renderer
74
77
  };
75
78
  const overlayProps = {
76
79
  loading,
@@ -14,6 +14,7 @@ import { ChartsSurface } from "../ChartsSurface/index.js";
14
14
  import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from "../constants/index.js";
15
15
  import { ChartsTooltip } from "../ChartsTooltip/index.js";
16
16
  import { ChartsAxisHighlight } from "../ChartsAxisHighlight/index.js";
17
+ import { FocusedMark } from "../LineChart/FocusedMark.js";
17
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
19
  const SPARK_LINE_DEFAULT_MARGIN = 5;
19
20
 
@@ -137,9 +138,11 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
137
138
  slotProps: slotProps
138
139
  })]
139
140
  })]
140
- }), plotType === 'line' && /*#__PURE__*/_jsx(LineHighlightPlot, {
141
- slots: slots,
142
- slotProps: slotProps
141
+ }), plotType === 'line' && /*#__PURE__*/_jsxs(React.Fragment, {
142
+ children: [/*#__PURE__*/_jsx(LineHighlightPlot, {
143
+ slots: slots,
144
+ slotProps: slotProps
145
+ }), /*#__PURE__*/_jsx(FocusedMark, {})]
143
146
  }), disableClipping ? null : /*#__PURE__*/_jsx(ChartsClipPath, {
144
147
  id: clipPathId,
145
148
  offset: clipPathOffset
@@ -225,6 +228,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
225
228
  * If true, the voronoi interaction are ignored.
226
229
  */
227
230
  disableVoronoi: PropTypes.bool,
231
+ enableKeyboardNavigation: PropTypes.bool,
228
232
  /**
229
233
  * The height of the chart in px. If not defined, it takes the height of the parent element.
230
234
  */
@@ -338,10 +342,11 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
338
342
  */
339
343
  valueFormatter: PropTypes.func,
340
344
  /**
341
- * Defines the maximal distance between a scatter point and the pointer that triggers the interaction.
345
+ * Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
346
+ * If set to `'item'`, the radius is the `markerSize`.
342
347
  * If `undefined`, the radius is assumed to be infinite.
343
348
  */
344
- voronoiMaxRadius: PropTypes.number,
349
+ voronoiMaxRadius: PropTypes.oneOfType([PropTypes.oneOf(['item']), PropTypes.number]),
345
350
  /**
346
351
  * The width of the chart in px. If not defined, it takes the width of the parent element.
347
352
  */
@@ -25,8 +25,7 @@ const ToolbarRoot = styled('div', {
25
25
  minHeight: 44,
26
26
  boxSizing: 'border-box',
27
27
  border: `1px solid ${(theme.vars || theme).palette.divider}`,
28
- borderRadius: 4,
29
- gridArea: 'toolbar'
28
+ borderRadius: 4
30
29
  }));
31
30
  export const Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(_ref, ref) {
32
31
  let {
@@ -1,4 +1,4 @@
1
1
  export type ChartsColorPaletteCallback = (mode: 'light' | 'dark') => string[];
2
- export type ChartsColorPalette = string[] | ChartsColorPaletteCallback;
2
+ export type ChartsColorPalette = readonly string[] | ChartsColorPaletteCallback;
3
3
  export type ChartsColorCallback = (mode: 'light' | 'dark') => string;
4
4
  export type ChartsColor = string | ChartsColorCallback;
@@ -1,14 +1,14 @@
1
1
  import type { PieChartPluginSignatures } from "../PieChart/PieChart.plugins.js";
2
- import type { BarChartPluginsSignatures } from "../BarChart/BarChart.plugins.js";
3
- import type { ScatterChartPluginsSignatures } from "../ScatterChart/ScatterChart.plugins.js";
4
- import type { LineChartPluginsSignatures } from "../LineChart/LineChart.plugins.js";
2
+ import type { BarChartPluginSignatures } from "../BarChart/BarChart.plugins.js";
3
+ import type { ScatterChartPluginSignatures } from "../ScatterChart/ScatterChart.plugins.js";
4
+ import type { LineChartPluginSignatures } from "../LineChart/LineChart.plugins.js";
5
5
  import type { AllPluginSignatures, DefaultPluginSignatures } from "../internals/plugins/allPlugins.js";
6
6
  import type { ChartAnyPluginSignature } from "../internals/plugins/models/plugin.js";
7
7
  import type { ChartPublicAPI } from "../internals/plugins/models/index.js";
8
8
  export type PluginsPerSeriesType = {
9
- line: LineChartPluginsSignatures;
10
- scatter: ScatterChartPluginsSignatures;
11
- bar: BarChartPluginsSignatures;
9
+ line: LineChartPluginSignatures;
10
+ scatter: ScatterChartPluginSignatures;
11
+ bar: BarChartPluginSignatures;
12
12
  pie: PieChartPluginSignatures;
13
13
  composition: DefaultPluginSignatures;
14
14
  };
@@ -1,4 +1,4 @@
1
- import { AxisId, ChartsRadiusAxisProps, ChartsRotationAxisProps, PolarAxisDefaultized, ScaleName } from "../models/axis.js";
1
+ import { AxisId, ChartsRadiusAxisProps, ChartsRotationAxisProps, PolarAxisDefaultized, ScaleName, type AxisScaleConfig, type ChartsXAxisProps, type ChartsYAxisProps, type ComputedAxis } from "../models/axis.js";
2
2
  /**
3
3
  * Get all the x-axes.
4
4
  *
@@ -10,7 +10,7 @@ import { AxisId, ChartsRadiusAxisProps, ChartsRotationAxisProps, PolarAxisDefaul
10
10
  * @returns `{ xAxis, xAxisIds }` - The x-axes and their IDs.
11
11
  */
12
12
  export declare function useXAxes(): {
13
- xAxis: import("../internals/index.js").ComputedAxisConfig<import("../index.js").ChartsXAxisProps>;
13
+ xAxis: import("../internals/index.js").ComputedAxisConfig<ChartsXAxisProps>;
14
14
  xAxisIds: AxisId[];
15
15
  };
16
16
  /**
@@ -24,7 +24,7 @@ export declare function useXAxes(): {
24
24
  * @returns `{ yAxis, yAxisIds }` - The y-axes and their IDs.
25
25
  */
26
26
  export declare function useYAxes(): {
27
- yAxis: import("../internals/index.js").ComputedAxisConfig<import("../index.js").ChartsYAxisProps>;
27
+ yAxis: import("../internals/index.js").ComputedAxisConfig<ChartsYAxisProps>;
28
28
  yAxisIds: AxisId[];
29
29
  };
30
30
  /**
@@ -32,13 +32,13 @@ export declare function useYAxes(): {
32
32
  * @param {AxisId | undefined} axisId - If provided returns the x axis with axisId, else returns the values for the default x axis.
33
33
  * @returns The X axis.
34
34
  */
35
- export declare function useXAxis(axisId?: AxisId): import("../internals/index.js").ComputedAxis<keyof import("../internals/index.js").AxisScaleConfig, any, import("../index.js").ChartsXAxisProps>;
35
+ export declare function useXAxis<T extends keyof AxisScaleConfig>(axisId?: AxisId): ComputedAxis<T, any, ChartsXAxisProps>;
36
36
  /**
37
37
  * Get the Y axis.
38
38
  * @param {AxisId | undefined} axisId - If provided returns the y axis with axisId, else returns the values for the default y axis.
39
39
  * @returns The Y axis.
40
40
  */
41
- export declare function useYAxis(axisId?: AxisId): import("../internals/index.js").ComputedAxis<keyof import("../internals/index.js").AxisScaleConfig, any, import("../index.js").ChartsYAxisProps>;
41
+ export declare function useYAxis<T extends keyof AxisScaleConfig>(axisId?: AxisId): ComputedAxis<T, any, ChartsYAxisProps>;
42
42
  export declare function useRotationAxes(): {
43
43
  rotationAxis: import("../internals/plugins/featurePlugins/useChartPolarAxis/computeAxisValue.js").DefaultizedAxisConfig<ChartsRotationAxisProps>;
44
44
  rotationAxisIds: string[];