@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,18 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useIsItemFocusedGetter = useIsItemFocusedGetter;
8
+ var _useFocusedItem = require("./useFocusedItem");
9
+ /**
10
+ * A hook to check focus state of multiple items.
11
+ * If you're interested by a single one, consider using `useIsItemFocused`.
12
+ *
13
+ * @returns {(item: FocusedItemData) => boolean} callback to get the state of the item.
14
+ */
15
+ function useIsItemFocusedGetter() {
16
+ const focusedItem = (0, _useFocusedItem.useFocusedItem)();
17
+ return item => focusedItem !== null && focusedItem.seriesType === item.seriesType && focusedItem.seriesId === item.seriesId && focusedItem.dataIndex === item.dataIndex;
18
+ }
package/hooks/useScale.js CHANGED
@@ -21,6 +21,12 @@ function getValueToPositionMapper(scale) {
21
21
  if ((0, _scaleGuards.isOrdinalScale)(scale)) {
22
22
  return value => (scale(value) ?? 0) + scale.bandwidth() / 2;
23
23
  }
24
+ const domain = scale.domain();
25
+
26
+ // Fixes https://github.com/mui/mui-x/issues/18999#issuecomment-3173787401
27
+ if (domain[0] === domain[1]) {
28
+ return value => value === domain[0] ? scale(value) : NaN;
29
+ }
24
30
  return value => scale(value);
25
31
  }
26
32
 
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./constants/index.js";
2
2
  export * from "./context/index.js";
3
3
  export * from "./hooks/index.js";
4
+ export * from "./plugins/index.js";
4
5
  export * from "./colorPalettes/index.js";
5
6
  export * from "./models/index.js";
6
7
  export * from "./ChartsClipPath/index.js";
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v8.11.3
2
+ * @mui/x-charts v8.12.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -55,6 +55,18 @@ Object.keys(_hooks).forEach(function (key) {
55
55
  }
56
56
  });
57
57
  });
58
+ var _plugins = require("./plugins");
59
+ Object.keys(_plugins).forEach(function (key) {
60
+ if (key === "default" || key === "__esModule") return;
61
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
62
+ if (key in exports && exports[key] === _plugins[key]) return;
63
+ Object.defineProperty(exports, key, {
64
+ enumerable: true,
65
+ get: function () {
66
+ return _plugins[key];
67
+ }
68
+ });
69
+ });
58
70
  var _colorPalettes = require("./colorPalettes");
59
71
  Object.keys(_colorPalettes).forEach(function (key) {
60
72
  if (key === "default" || key === "__esModule") return;
@@ -55,7 +55,6 @@ class Transition {
55
55
  /* If we're resuming the transition, then subtract elapsed to continue the easing. */
56
56
  const time = (0, _d3Timer.now)() - this.elapsed;
57
57
  this.timer = (0, _d3Timer.timer)(elapsed => this.timerCallback(elapsed), 0, time);
58
- (0, _d3Timer.timerFlush)();
59
58
  return this;
60
59
  }
61
60
 
@@ -79,7 +78,6 @@ class Transition {
79
78
  finish() {
80
79
  this.stop();
81
80
  (0, _d3Timer.timeout)(() => this.timerCallback(this.duration));
82
- (0, _d3Timer.timerFlush)();
83
81
  return this;
84
82
  }
85
83
  }
@@ -25,7 +25,8 @@ export * from "./plugins/featurePlugins/useChartCartesianAxis/index.js";
25
25
  export * from "./plugins/featurePlugins/useChartPolarAxis/index.js";
26
26
  export * from "./plugins/featurePlugins/useChartInteraction/index.js";
27
27
  export * from "./plugins/featurePlugins/useChartHighlight/index.js";
28
- export * from "./plugins/featurePlugins/useChartVoronoi/index.js";
28
+ export * from "./plugins/featurePlugins/useChartKeyboardNavigation/index.js";
29
+ export * from "./plugins/featurePlugins/useChartClosestPoint/index.js";
29
30
  export * from "./plugins/utils/selectors.js";
30
31
  export { getAxisTriggerTooltip as getCartesianAxisTriggerTooltip } from "./plugins/featurePlugins/useChartCartesianAxis/getAxisTriggerTooltip.js";
31
32
  export { getAxisIndex as getCartesianAxisIndex } from "./plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js";
@@ -54,7 +55,7 @@ export * from "./dateHelpers.js";
54
55
  export * from "./invertScale.js";
55
56
  export * from "./scaleGuards.js";
56
57
  export * from "./findMinMax.js";
57
- export { getAxisExtremum } from "./plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.js";
58
+ export { getAxisExtrema } from "./plugins/featurePlugins/useChartCartesianAxis/getAxisExtrema.js";
58
59
  export * from "../context/ChartProvider/index.js";
59
60
  export * from "../context/ChartsSlotsContext.js";
60
61
  export * from "../models/seriesType/config.js";
@@ -18,12 +18,12 @@ var _exportNames = {
18
18
  useRadarChartProps: true,
19
19
  getCartesianAxisTriggerTooltip: true,
20
20
  getCartesianAxisIndex: true,
21
- getAxisExtremum: true
21
+ getAxisExtrema: true
22
22
  };
23
- Object.defineProperty(exports, "getAxisExtremum", {
23
+ Object.defineProperty(exports, "getAxisExtrema", {
24
24
  enumerable: true,
25
25
  get: function () {
26
- return _getAxisExtremum.getAxisExtremum;
26
+ return _getAxisExtrema.getAxisExtrema;
27
27
  }
28
28
  });
29
29
  Object.defineProperty(exports, "getCartesianAxisIndex", {
@@ -302,15 +302,27 @@ Object.keys(_useChartHighlight).forEach(function (key) {
302
302
  }
303
303
  });
304
304
  });
305
- var _useChartVoronoi = require("./plugins/featurePlugins/useChartVoronoi");
306
- Object.keys(_useChartVoronoi).forEach(function (key) {
305
+ var _useChartKeyboardNavigation = require("./plugins/featurePlugins/useChartKeyboardNavigation");
306
+ Object.keys(_useChartKeyboardNavigation).forEach(function (key) {
307
307
  if (key === "default" || key === "__esModule") return;
308
308
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
309
- if (key in exports && exports[key] === _useChartVoronoi[key]) return;
309
+ if (key in exports && exports[key] === _useChartKeyboardNavigation[key]) return;
310
310
  Object.defineProperty(exports, key, {
311
311
  enumerable: true,
312
312
  get: function () {
313
- return _useChartVoronoi[key];
313
+ return _useChartKeyboardNavigation[key];
314
+ }
315
+ });
316
+ });
317
+ var _useChartClosestPoint = require("./plugins/featurePlugins/useChartClosestPoint");
318
+ Object.keys(_useChartClosestPoint).forEach(function (key) {
319
+ if (key === "default" || key === "__esModule") return;
320
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
321
+ if (key in exports && exports[key] === _useChartClosestPoint[key]) return;
322
+ Object.defineProperty(exports, key, {
323
+ enumerable: true,
324
+ get: function () {
325
+ return _useChartClosestPoint[key];
314
326
  }
315
327
  });
316
328
  });
@@ -628,7 +640,7 @@ Object.keys(_findMinMax).forEach(function (key) {
628
640
  }
629
641
  });
630
642
  });
631
- var _getAxisExtremum = require("./plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum");
643
+ var _getAxisExtrema = require("./plugins/featurePlugins/useChartCartesianAxis/getAxisExtrema");
632
644
  var _ChartProvider = require("../context/ChartProvider");
633
645
  Object.keys(_ChartProvider).forEach(function (key) {
634
646
  if (key === "default" || key === "__esModule") return;
@@ -2,9 +2,10 @@ import { ChartSeriesType } from "../../models/seriesType/config.js";
2
2
  import { UseChartCartesianAxisSignature } from "./featurePlugins/useChartCartesianAxis/index.js";
3
3
  import { UseChartHighlightSignature } from "./featurePlugins/useChartHighlight/index.js";
4
4
  import { UseChartInteractionSignature } from "./featurePlugins/useChartInteraction/index.js";
5
+ import { UseChartKeyboardNavigationSignature } from "./featurePlugins/useChartKeyboardNavigation/index.js";
5
6
  import { UseChartPolarAxisSignature } from "./featurePlugins/useChartPolarAxis/index.js";
6
- import { UseChartVoronoiSignature } from "./featurePlugins/useChartVoronoi/index.js";
7
+ import { UseChartClosestPointSignature } from "./featurePlugins/useChartClosestPoint/index.js";
7
8
  import { UseChartZAxisSignature } from "./featurePlugins/useChartZAxis/index.js";
8
- export type AllPluginSignatures<TSeries extends ChartSeriesType = ChartSeriesType> = [UseChartZAxisSignature, UseChartCartesianAxisSignature<TSeries>, UseChartPolarAxisSignature, UseChartInteractionSignature, UseChartHighlightSignature, UseChartVoronoiSignature];
9
- export type DefaultPluginSignatures<TSeries extends ChartSeriesType = ChartSeriesType> = [UseChartZAxisSignature, UseChartCartesianAxisSignature<TSeries>, UseChartInteractionSignature, UseChartHighlightSignature, UseChartVoronoiSignature];
10
- export declare const DEFAULT_PLUGINS: readonly [import("./models/index.js").ChartPlugin<UseChartZAxisSignature>, import("./models/index.js").ChartPlugin<UseChartCartesianAxisSignature<any>>, import("./models/index.js").ChartPlugin<UseChartInteractionSignature>, import("./models/index.js").ChartPlugin<UseChartHighlightSignature>, import("./models/index.js").ChartPlugin<UseChartVoronoiSignature>];
9
+ export type AllPluginSignatures<TSeries extends ChartSeriesType = ChartSeriesType> = [UseChartZAxisSignature, UseChartCartesianAxisSignature<TSeries>, UseChartPolarAxisSignature, UseChartInteractionSignature, UseChartHighlightSignature, UseChartClosestPointSignature, UseChartKeyboardNavigationSignature];
10
+ export type DefaultPluginSignatures<TSeries extends ChartSeriesType = ChartSeriesType> = [UseChartZAxisSignature, UseChartCartesianAxisSignature<TSeries>, UseChartInteractionSignature, UseChartHighlightSignature, UseChartClosestPointSignature, UseChartKeyboardNavigationSignature];
11
+ export declare const DEFAULT_PLUGINS: readonly [import("./models/index.js").ChartPlugin<UseChartZAxisSignature>, import("./models/index.js").ChartPlugin<UseChartCartesianAxisSignature<any>>, import("./models/index.js").ChartPlugin<UseChartInteractionSignature>, import("./models/index.js").ChartPlugin<UseChartHighlightSignature>, import("./models/index.js").ChartPlugin<UseChartClosestPointSignature>, import("./models/index.js").ChartPlugin<UseChartKeyboardNavigationSignature>];
@@ -7,8 +7,9 @@ exports.DEFAULT_PLUGINS = void 0;
7
7
  var _useChartCartesianAxis = require("./featurePlugins/useChartCartesianAxis");
8
8
  var _useChartHighlight = require("./featurePlugins/useChartHighlight");
9
9
  var _useChartInteraction = require("./featurePlugins/useChartInteraction");
10
- var _useChartVoronoi = require("./featurePlugins/useChartVoronoi");
10
+ var _useChartKeyboardNavigation = require("./featurePlugins/useChartKeyboardNavigation");
11
+ var _useChartClosestPoint = require("./featurePlugins/useChartClosestPoint");
11
12
  var _useChartZAxis = require("./featurePlugins/useChartZAxis");
12
13
  // This file should be removed after creating all plugins in favor of a file per chart type.
13
14
 
14
- const DEFAULT_PLUGINS = exports.DEFAULT_PLUGINS = [_useChartZAxis.useChartZAxis, _useChartCartesianAxis.useChartCartesianAxis, _useChartInteraction.useChartInteraction, _useChartHighlight.useChartHighlight, _useChartVoronoi.useChartVoronoi];
15
+ const DEFAULT_PLUGINS = exports.DEFAULT_PLUGINS = [_useChartZAxis.useChartZAxis, _useChartCartesianAxis.useChartCartesianAxis, _useChartInteraction.useChartInteraction, _useChartHighlight.useChartHighlight, _useChartClosestPoint.useChartClosestPoint, _useChartKeyboardNavigation.useChartKeyboardNavigation];
@@ -17,7 +17,7 @@ export declare const preprocessSeries: <TSeriesType extends ChartSeriesType>({
17
17
  dataset
18
18
  }: {
19
19
  series: Readonly<AllSeriesType<TSeriesType>[]>;
20
- colors: string[];
20
+ colors: readonly string[];
21
21
  seriesConfig: ChartSeriesConfig<TSeriesType>;
22
22
  dataset?: Readonly<DatasetType>;
23
23
  }) => { [type in TSeriesType]?: SeriesProcessorResult<TSeriesType> | undefined };
@@ -5,11 +5,13 @@ import { ChartSeriesConfig } from "../../models/seriesConfig/index.js";
5
5
  import { ComputedAxisConfig, DefaultizedZoomOptions } from "./useChartCartesianAxis.types.js";
6
6
  import { ProcessedSeries } from "../../corePlugins/useChartSeries/useChartSeries.types.js";
7
7
  import { GetZoomAxisFilters, ZoomData } from "./zoom.types.js";
8
+ import { ScaleDefinition } from "./getAxisScale.js";
8
9
  export type ComputeResult<T extends ChartsAxisProps> = {
9
10
  axis: ComputedAxisConfig<T>;
10
11
  axisIds: AxisId[];
11
12
  };
12
13
  type ComputeCommonParams<T extends ChartSeriesType = ChartSeriesType> = {
14
+ scales: Record<AxisId, ScaleDefinition>;
13
15
  drawingArea: ChartDrawingArea;
14
16
  formattedSeries: ProcessedSeries<T>;
15
17
  seriesConfig: ChartSeriesConfig<T>;
@@ -6,17 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.computeAxisValue = computeAxisValue;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _d3Scale = require("@mui/x-charts-vendor/d3-scale");
10
9
  var _defaultValueFormatters = require("../../../defaultValueFormatters");
11
10
  var _axis = require("../../../../models/axis");
12
11
  var _colorScale = require("../../../colorScale");
13
12
  var _ticks = require("../../../ticks");
14
13
  var _getScale = require("../../../getScale");
15
14
  var _dateHelpers = require("../../../dateHelpers");
16
- var _zoom = require("./zoom");
17
- var _getAxisExtremum = require("./getAxisExtremum");
15
+ var _getAxisExtrema = require("./getAxisExtrema");
18
16
  var _getAxisTriggerTooltip = require("./getAxisTriggerTooltip");
19
- var _getAxisDomainLimit = require("./getAxisDomainLimit");
17
+ var _getAxisScale = require("./getAxisScale");
18
+ var _scaleGuards = require("../../../scaleGuards");
20
19
  function getRange(drawingArea, axisDirection,
21
20
  // | 'rotation' | 'radius',
22
21
  reverse) {
@@ -26,6 +25,7 @@ reverse) {
26
25
  const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
27
26
  const DEFAULT_BAR_GAP_RATIO = 0.1;
28
27
  function computeAxisValue({
28
+ scales,
29
29
  drawingArea,
30
30
  formattedSeries,
31
31
  axis: allAxis,
@@ -46,97 +46,91 @@ function computeAxisValue({
46
46
  const completeAxis = {};
47
47
  allAxis.forEach((eachAxis, axisIndex) => {
48
48
  const axis = eachAxis;
49
+ const scaleDefinition = scales[axis.id];
50
+ let scale = scaleDefinition.scale;
49
51
  const zoomOption = zoomOptions?.[axis.id];
50
52
  const zoom = zoomMap?.get(axis.id);
51
53
  const zoomRange = zoom ? [zoom.start, zoom.end] : [0, 100];
52
54
  const range = getRange(drawingArea, axisDirection, axis.reverse ?? false);
53
- const [minData, maxData] = (0, _getAxisExtremum.getAxisExtremum)(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, zoom === undefined && !zoomOption ? getFilters : undefined // Do not apply filtering if zoom is already defined.
54
- );
55
55
  const triggerTooltip = !axis.ignoreTooltip && axisIdsTriggeringTooltip.has(axis.id);
56
56
  const data = axis.data ?? [];
57
- if ((0, _axis.isBandScaleConfig)(axis)) {
58
- const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
59
- const barGapRatio = axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;
57
+ if ((0, _scaleGuards.isOrdinalScale)(scale)) {
60
58
  // Reverse range because ordinal scales are presented from top to bottom on y-axis
61
59
  const scaleRange = axisDirection === 'y' ? [range[1], range[0]] : range;
62
- const zoomedRange = (0, _zoom.zoomScaleRange)(scaleRange, zoomRange);
63
- completeAxis[axis.id] = (0, _extends2.default)({
64
- offset: 0,
65
- height: 0,
66
- categoryGapRatio,
67
- barGapRatio,
68
- triggerTooltip
69
- }, axis, {
70
- data,
71
- scale: (0, _d3Scale.scaleBand)(axis.data, zoomedRange).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
72
- tickNumber: axis.data.length,
73
- colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? (0, _colorScale.getOrdinalColorScale)((0, _extends2.default)({
74
- values: axis.data
75
- }, axis.colorMap)) : (0, _colorScale.getColorScale)(axis.colorMap))
76
- });
77
- if ((0, _dateHelpers.isDateData)(axis.data)) {
78
- const dateFormatter = (0, _dateHelpers.createDateFormatter)(axis.data, scaleRange, axis.tickNumber);
79
- completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;
60
+ if ((0, _scaleGuards.isBandScale)(scale) && (0, _axis.isBandScaleConfig)(axis)) {
61
+ const categoryGapRatio = axis.categoryGapRatio ?? DEFAULT_CATEGORY_GAP_RATIO;
62
+ const barGapRatio = axis.barGapRatio ?? DEFAULT_BAR_GAP_RATIO;
63
+ completeAxis[axis.id] = (0, _extends2.default)({
64
+ offset: 0,
65
+ height: 0,
66
+ categoryGapRatio,
67
+ barGapRatio,
68
+ triggerTooltip
69
+ }, axis, {
70
+ data,
71
+ scale,
72
+ tickNumber: axis.data.length,
73
+ colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? (0, _colorScale.getOrdinalColorScale)((0, _extends2.default)({
74
+ values: axis.data
75
+ }, axis.colorMap)) : (0, _colorScale.getColorScale)(axis.colorMap))
76
+ });
77
+ }
78
+ if ((0, _axis.isPointScaleConfig)(axis)) {
79
+ completeAxis[axis.id] = (0, _extends2.default)({
80
+ offset: 0,
81
+ height: 0,
82
+ triggerTooltip
83
+ }, axis, {
84
+ data,
85
+ scale,
86
+ tickNumber: axis.data.length,
87
+ colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? (0, _colorScale.getOrdinalColorScale)((0, _extends2.default)({
88
+ values: axis.data
89
+ }, axis.colorMap)) : (0, _colorScale.getColorScale)(axis.colorMap))
90
+ });
80
91
  }
81
- }
82
- if ((0, _axis.isPointScaleConfig)(axis)) {
83
- const scaleRange = axisDirection === 'y' ? [...range].reverse() : range;
84
- const zoomedRange = (0, _zoom.zoomScaleRange)(scaleRange, zoomRange);
85
- completeAxis[axis.id] = (0, _extends2.default)({
86
- offset: 0,
87
- height: 0,
88
- triggerTooltip
89
- }, axis, {
90
- data,
91
- scale: (0, _d3Scale.scalePoint)(axis.data, zoomedRange),
92
- tickNumber: axis.data.length,
93
- colorScale: axis.colorMap && (axis.colorMap.type === 'ordinal' ? (0, _colorScale.getOrdinalColorScale)((0, _extends2.default)({
94
- values: axis.data
95
- }, axis.colorMap)) : (0, _colorScale.getColorScale)(axis.colorMap))
96
- });
97
92
  if ((0, _dateHelpers.isDateData)(axis.data)) {
98
93
  const dateFormatter = (0, _dateHelpers.createDateFormatter)(axis.data, scaleRange, axis.tickNumber);
99
94
  completeAxis[axis.id].valueFormatter = axis.valueFormatter ?? dateFormatter;
100
95
  }
96
+ return;
101
97
  }
102
98
  if (axis.scaleType === 'band' || axis.scaleType === 'point') {
103
99
  // Could be merged with the two previous "if conditions" but then TS does not get that `axis.scaleType` can't be `band` or `point`.
104
100
  return;
105
101
  }
106
- const scaleType = axis.scaleType ?? 'linear';
107
- const domainLimit = preferStrictDomainInLineCharts ? (0, _getAxisDomainLimit.getAxisDomainLimit)(axis, axisDirection, axisIndex, formattedSeries) : axis.domainLimit ?? 'nice';
108
- const axisExtremums = [axis.min ?? minData, axis.max ?? maxData];
109
- if (typeof domainLimit === 'function') {
110
- const {
111
- min,
112
- max
113
- } = domainLimit(minData, maxData);
114
- axisExtremums[0] = min;
115
- axisExtremums[1] = max;
116
- }
117
- const rawTickNumber = (0, _ticks.getTickNumber)((0, _extends2.default)({}, axis, {
118
- range,
119
- domain: axisExtremums
120
- }));
102
+ const rawTickNumber = scaleDefinition.tickNumber;
103
+ const continuousAxis = axis;
104
+ const scaleType = continuousAxis.scaleType ?? 'linear';
121
105
  const tickNumber = (0, _ticks.scaleTickNumberByRange)(rawTickNumber, zoomRange);
122
- const zoomedRange = (0, _zoom.zoomScaleRange)(range, zoomRange);
123
- const scale = (0, _getScale.getScale)(scaleType, axisExtremums, zoomedRange);
124
- if ((0, _axis.isSymlogScaleConfig)(axis) && axis.constant != null) {
125
- scale.constant(axis.constant);
106
+ const filter = zoom === undefined && !zoomOption ? getFilters : undefined; // Do not apply filtering if zoom is already defined.
107
+ if (filter) {
108
+ const [minData, maxData] = (0, _getAxisExtrema.getAxisExtrema)(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, filter);
109
+ scale = scale.copy();
110
+ scale.domain([minData, maxData]);
111
+ const domainLimit = (0, _getAxisScale.getDomainLimit)(axis, axisDirection, axisIndex, formattedSeries, preferStrictDomainInLineCharts);
112
+ const axisExtrema = (0, _getAxisScale.getActualAxisExtrema)(axis, minData, maxData);
113
+ if (typeof domainLimit === 'function') {
114
+ const {
115
+ min,
116
+ max
117
+ } = domainLimit(minData, maxData);
118
+ axisExtrema[0] = min;
119
+ axisExtrema[1] = max;
120
+ }
121
+ scale.domain(axisExtrema);
122
+ (0, _getAxisScale.applyDomainLimit)(scale, axis, domainLimit, rawTickNumber);
126
123
  }
127
- const finalScale = domainLimit === 'nice' ? scale.nice(rawTickNumber) : scale;
128
- const [minDomain, maxDomain] = finalScale.domain();
129
- const domain = [axis.min ?? minDomain, axis.max ?? maxDomain];
130
124
  completeAxis[axis.id] = (0, _extends2.default)({
131
125
  offset: 0,
132
126
  height: 0,
133
127
  triggerTooltip
134
- }, axis, {
128
+ }, continuousAxis, {
135
129
  data,
136
- scaleType: scaleType,
137
- scale: finalScale.domain(domain),
130
+ scaleType,
131
+ scale,
138
132
  tickNumber,
139
- colorScale: axis.colorMap && (0, _colorScale.getColorScale)(axis.colorMap),
133
+ colorScale: continuousAxis.colorMap && (0, _colorScale.getSequentialColorScale)(continuousAxis.colorMap),
140
134
  valueFormatter: axis.valueFormatter ?? (0, _defaultValueFormatters.createScalarFormatter)(tickNumber, (0, _getScale.getScale)(scaleType, range.map(v => scale.invert(v)), range))
141
135
  });
142
136
  });
@@ -1,24 +1,8 @@
1
- import { AxisId, ChartsXAxisProps, ChartsYAxisProps, ContinuousScaleName, ScaleName } from "../../../../models/axis.js";
2
- import { CartesianChartSeriesType } from "../../../../models/seriesType/config.js";
3
- import { ProcessedSeries } from "../../corePlugins/useChartSeries/index.js";
1
+ import { AxisId, D3ContinuousScale, D3Scale } from "../../../../models/axis.js";
4
2
  import { AxisConfig } from "../../../../models/index.js";
5
- import { ChartSeriesConfig } from "../../models/seriesConfig/index.js";
6
3
  import { DefaultizedZoomOptions, ExtremumFilter } from "./useChartCartesianAxis.types.js";
7
4
  import { GetZoomAxisFilters, ZoomAxisFilters, ZoomData } from "./zoom.types.js";
8
- export declare function createAxisFilterMapper(params: {
9
- zoomMap: Map<AxisId, ZoomData>;
10
- zoomOptions: Record<AxisId, DefaultizedZoomOptions>;
11
- seriesConfig: ChartSeriesConfig<CartesianChartSeriesType>;
12
- formattedSeries: ProcessedSeries;
13
- direction: 'x';
14
- }): (axis: AxisConfig<ScaleName, any, ChartsXAxisProps>, axisIndex: number) => ExtremumFilter | null;
15
- export declare function createAxisFilterMapper(params: {
16
- zoomMap: Map<AxisId, ZoomData>;
17
- zoomOptions: Record<AxisId, DefaultizedZoomOptions>;
18
- seriesConfig: ChartSeriesConfig<CartesianChartSeriesType>;
19
- formattedSeries: ProcessedSeries;
20
- direction: 'y';
21
- }): (axis: AxisConfig<ScaleName, any, ChartsYAxisProps>, axisIndex: number) => ExtremumFilter | null;
5
+ export declare function createAxisFilterMapper(zoomMap: Map<AxisId, ZoomData>, zoomOptions: Record<AxisId, DefaultizedZoomOptions>, direction: 'x' | 'y'): (axisId: AxisId, axisData: AxisConfig['data'], scale: D3Scale) => ExtremumFilter | null;
22
6
  export declare function createDiscreteScaleGetAxisFilter(axisData: AxisConfig['data'], zoomStart: number, zoomEnd: number, direction: 'x' | 'y'): ExtremumFilter;
23
- export declare function createContinuousScaleGetAxisFilter(scaleType: ContinuousScaleName | undefined, extrema: readonly [number, number], zoomStart: number, zoomEnd: number, direction: 'x' | 'y', axisData: AxisConfig['data']): ExtremumFilter;
7
+ export declare function createContinuousScaleGetAxisFilter(scale: D3ContinuousScale, zoomStart: number, zoomEnd: number, direction: 'x' | 'y', axisData: AxisConfig['data']): ExtremumFilter;
24
8
  export declare const createGetAxisFilters: (filters: ZoomAxisFilters) => GetZoomAxisFilters;
@@ -8,30 +8,22 @@ exports.createContinuousScaleGetAxisFilter = createContinuousScaleGetAxisFilter;
8
8
  exports.createDiscreteScaleGetAxisFilter = createDiscreteScaleGetAxisFilter;
9
9
  exports.createGetAxisFilters = void 0;
10
10
  var _isDefined = require("../../../isDefined");
11
- var _getAxisExtremum = require("./getAxisExtremum");
12
- var _getScale = require("../../../getScale");
13
- function createAxisFilterMapper({
14
- zoomMap,
15
- zoomOptions,
16
- seriesConfig,
17
- formattedSeries,
18
- direction
19
- }) {
20
- return (axis, axisIndex) => {
21
- const zoomOption = zoomOptions[axis.id];
11
+ var _scaleGuards = require("../../../scaleGuards");
12
+ function createAxisFilterMapper(zoomMap, zoomOptions, direction) {
13
+ return (axisId, axisData, scale) => {
14
+ const zoomOption = zoomOptions[axisId];
22
15
  if (!zoomOption || zoomOption.filterMode !== 'discard') {
23
16
  return null;
24
17
  }
25
- const zoom = zoomMap?.get(axis.id);
18
+ const zoom = zoomMap?.get(axisId);
26
19
  if (zoom === undefined || zoom.start <= 0 && zoom.end >= 100) {
27
20
  // No zoom, or zoom with all data visible
28
21
  return null;
29
22
  }
30
- const scaleType = axis.scaleType;
31
- if (scaleType === 'point' || scaleType === 'band') {
32
- return createDiscreteScaleGetAxisFilter(axis.data, zoom.start, zoom.end, direction);
23
+ if ((0, _scaleGuards.isOrdinalScale)(scale)) {
24
+ return createDiscreteScaleGetAxisFilter(axisData, zoom.start, zoom.end, direction);
33
25
  }
34
- return createContinuousScaleGetAxisFilter(scaleType, (0, _getAxisExtremum.getAxisExtremum)(axis, direction, seriesConfig, axisIndex, formattedSeries), zoom.start, zoom.end, direction, axis.data);
26
+ return createContinuousScaleGetAxisFilter(scale, zoom.start, zoom.end, direction, axisData);
35
27
  };
36
28
  }
37
29
  function createDiscreteScaleGetAxisFilter(axisData, zoomStart, zoomEnd, direction) {
@@ -47,10 +39,10 @@ function createDiscreteScaleGetAxisFilter(axisData, zoomStart, zoomEnd, directio
47
39
  return dataIndex >= minVal && dataIndex < maxVal;
48
40
  };
49
41
  }
50
- function createContinuousScaleGetAxisFilter(scaleType, extrema, zoomStart, zoomEnd, direction, axisData) {
42
+ function createContinuousScaleGetAxisFilter(scale, zoomStart, zoomEnd, direction, axisData) {
51
43
  let min;
52
44
  let max;
53
- [min, max] = (0, _getScale.getScale)(scaleType ?? 'linear', extrema, [0, 100]).nice().domain();
45
+ [min, max] = scale.domain();
54
46
  min = min instanceof Date ? min.getTime() : min;
55
47
  max = max instanceof Date ? max.getTime() : max;
56
48
  const minVal = min + zoomStart * (max - min) / 100;
@@ -1,7 +1,7 @@
1
1
  import { AxisConfig } from "../../../../models/axis.js";
2
2
  import { CartesianChartSeriesType } from "../../../../models/seriesType/config.js";
3
3
  import { ProcessedSeries } from "../../corePlugins/useChartSeries/index.js";
4
- export declare const getAxisDomainLimit: <T extends CartesianChartSeriesType>(axis: AxisConfig, axisDirection: "x" | "y", axisIndex: number, formattedSeries: ProcessedSeries<T | "line">) => "nice" | "strict" | ((min: number, max: number) => {
4
+ export declare const getAxisDomainLimit: <T extends CartesianChartSeriesType>(axis: Pick<AxisConfig, "id" | "domainLimit">, axisDirection: "x" | "y", axisIndex: number, formattedSeries: ProcessedSeries<T | "line">) => "nice" | "strict" | ((min: number, max: number) => {
5
5
  min: number;
6
6
  max: number;
7
7
  });
@@ -3,4 +3,4 @@ import { CartesianChartSeriesType } from "../../../../models/seriesType/config.j
3
3
  import { ChartSeriesConfig } from "../../models/seriesConfig/index.js";
4
4
  import { ProcessedSeries } from "../../corePlugins/useChartSeries/useChartSeries.types.js";
5
5
  import { GetZoomAxisFilters } from "./zoom.types.js";
6
- export declare const getAxisExtremum: <T extends CartesianChartSeriesType>(axis: AxisConfig, axisDirection: "x" | "y", seriesConfig: ChartSeriesConfig<T>, axisIndex: number, formattedSeries: ProcessedSeries<T>, getFilters?: GetZoomAxisFilters) => [number, number];
6
+ export declare function getAxisExtrema<T extends CartesianChartSeriesType>(axis: AxisConfig, axisDirection: 'x' | 'y', seriesConfig: ChartSeriesConfig<T>, axisIndex: number, formattedSeries: ProcessedSeries<T>, getFilters?: GetZoomAxisFilters): [number, number];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAxisExtrema = getAxisExtrema;
7
+ var _isCartesian = require("../../../isCartesian");
8
+ const axisExtremumCallback = (chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) => {
9
+ const getter = axisDirection === 'x' ? seriesConfig[chartType].xExtremumGetter : seriesConfig[chartType].yExtremumGetter;
10
+ const series = formattedSeries[chartType]?.series ?? {};
11
+ return getter?.({
12
+ series,
13
+ axis,
14
+ axisIndex,
15
+ isDefaultAxis: axisIndex === 0,
16
+ getFilters
17
+ }) ?? [Infinity, -Infinity];
18
+ };
19
+ function getAxisExtrema(axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters) {
20
+ const cartesianChartTypes = Object.keys(seriesConfig).filter(_isCartesian.isCartesianSeriesType);
21
+ let extrema = [Infinity, -Infinity];
22
+ for (const chartType of cartesianChartTypes) {
23
+ const [min, max] = axisExtremumCallback(chartType, axis, axisDirection, seriesConfig, axisIndex, formattedSeries, getFilters);
24
+ extrema = [Math.min(extrema[0], min), Math.max(extrema[1], max)];
25
+ }
26
+ if (Number.isNaN(extrema[0]) || Number.isNaN(extrema[1])) {
27
+ return [Infinity, -Infinity];
28
+ }
29
+ return extrema;
30
+ }
@@ -0,0 +1,63 @@
1
+ import { AxisConfig, AxisId, D3ContinuousScale, D3OrdinalScale, DefaultedAxis } from "../../../../models/axis.js";
2
+ import { ChartSeriesType } from "../../../../models/seriesType/config.js";
3
+ import { ProcessedSeries } from "../../corePlugins/useChartSeries/index.js";
4
+ import { ChartSeriesConfig } from "../../models/index.js";
5
+ import { ZoomData } from "./zoom.types.js";
6
+ import { ChartDrawingArea } from "../../../../hooks/useDrawingArea.js";
7
+ type GetAxesScalesParams<T extends ChartSeriesType = ChartSeriesType> = {
8
+ drawingArea: ChartDrawingArea;
9
+ formattedSeries: ProcessedSeries<T>;
10
+ seriesConfig: ChartSeriesConfig<T>;
11
+ zoomMap?: Map<AxisId, ZoomData>;
12
+ /**
13
+ * @deprecated To remove in v9. This is an experimental feature to avoid breaking change.
14
+ */
15
+ preferStrictDomainInLineCharts?: boolean;
16
+ };
17
+ export declare function getXAxesScales<T extends ChartSeriesType>({
18
+ drawingArea,
19
+ formattedSeries,
20
+ axis: axes,
21
+ seriesConfig,
22
+ zoomMap,
23
+ preferStrictDomainInLineCharts
24
+ }: GetAxesScalesParams<T> & {
25
+ axis?: DefaultedAxis[];
26
+ }): Record<AxisId, ScaleDefinition>;
27
+ export declare function getYAxesScales<T extends ChartSeriesType>({
28
+ drawingArea,
29
+ formattedSeries,
30
+ axis: axes,
31
+ seriesConfig,
32
+ zoomMap,
33
+ preferStrictDomainInLineCharts
34
+ }: GetAxesScalesParams<T> & {
35
+ axis?: DefaultedAxis[];
36
+ }): Record<AxisId, ScaleDefinition>;
37
+ export type ScaleDefinition = {
38
+ scale: D3ContinuousScale;
39
+ tickNumber: number;
40
+ } | {
41
+ scale: D3OrdinalScale;
42
+ tickNumber?: never;
43
+ };
44
+ type DomainLimit = 'nice' | 'strict' | ((min: number, max: number) => {
45
+ min: number;
46
+ max: number;
47
+ });
48
+ export declare function getDomainLimit(axis: Pick<DefaultedAxis, 'id' | 'domainLimit'>, axisDirection: 'x' | 'y', axisIndex: number, formattedSeries: ProcessedSeries, preferStrictDomainInLineCharts: boolean | undefined): "nice" | "strict" | ((min: number, max: number) => {
49
+ min: number;
50
+ max: number;
51
+ });
52
+ export declare function applyDomainLimit(scale: D3ContinuousScale, axis: {
53
+ min?: number | Date;
54
+ max?: number | Date;
55
+ }, domainLimit: DomainLimit, rawTickNumber: number): void;
56
+ /**
57
+ * Get the actual axis extrema considering the user defined min and max values.
58
+ * @param axisExtrema User defined axis extrema.
59
+ * @param minData Minimum value from the data.
60
+ * @param maxData Maximum value from the data.
61
+ */
62
+ export declare function getActualAxisExtrema(axisExtrema: Pick<AxisConfig, 'min' | 'max'>, minData: number, maxData: number): [number | Date, number | Date];
63
+ export {};