@mui/x-charts 7.11.0 → 7.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 (259) hide show
  1. package/BarChart/BarChart.js +0 -2
  2. package/BarChart/BarElement.d.ts +22 -21
  3. package/BarChart/BarElement.js +3 -3
  4. package/BarChart/BarLabel/BarLabel.d.ts +20 -20
  5. package/BarChart/BarLabel/BarLabelItem.d.ts +2 -1
  6. package/BarChart/BarLabel/BarLabelItem.js +2 -2
  7. package/BarChart/BarPlot.js +8 -8
  8. package/BarChart/checkScaleErrors.d.ts +4 -4
  9. package/BarChart/checkScaleErrors.js +11 -11
  10. package/BarChart/extremums.js +4 -1
  11. package/BarChart/formatter.js +3 -3
  12. package/CHANGELOG.md +194 -4
  13. package/ChartContainer/ChartContainer.d.ts +3 -3
  14. package/ChartContainer/ChartContainer.js +3 -5
  15. package/ChartContainer/useChartContainerProps.d.ts +50 -52
  16. package/ChartContainer/useChartContainerProps.js +2 -2
  17. package/ChartContainer/useDefaultizeAxis.d.ts +24 -25
  18. package/ChartContainer/usePluginsMerge.d.ts +1 -1
  19. package/ChartsAxis/ChartsAxis.js +4 -4
  20. package/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  21. package/ChartsLegend/ChartsLegend.js +6 -6
  22. package/ChartsLegend/DefaultChartsLegend.d.ts +1 -1
  23. package/ChartsLegend/LegendPerItem.js +2 -2
  24. package/ChartsLegend/utils.d.ts +1 -1
  25. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +3 -1
  26. package/ChartsOverlay/ChartsOverlay.d.ts +3 -2
  27. package/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  28. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -2
  29. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -2
  30. package/ChartsTooltip/ChartsAxisTooltipContent.js +9 -5
  31. package/ChartsTooltip/ChartsItemTooltipContent.js +6 -6
  32. package/ChartsTooltip/ChartsTooltip.d.ts +1 -1
  33. package/ChartsTooltip/ChartsTooltip.js +10 -10
  34. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +5 -3
  35. package/ChartsXAxis/ChartsXAxis.js +5 -5
  36. package/ChartsYAxis/ChartsYAxis.js +6 -6
  37. package/Gauge/GaugeReferenceArc.js +1 -1
  38. package/Gauge/GaugeValueArc.js +1 -1
  39. package/LineChart/AnimatedArea.d.ts +20 -20
  40. package/LineChart/AnimatedArea.js +1 -1
  41. package/LineChart/AnimatedLine.d.ts +20 -20
  42. package/LineChart/AnimatedLine.js +1 -1
  43. package/LineChart/AreaElement.d.ts +2 -1
  44. package/LineChart/AreaElement.js +2 -2
  45. package/LineChart/AreaPlot.js +11 -7
  46. package/LineChart/LineChart.js +4 -3
  47. package/LineChart/LineElement.d.ts +2 -1
  48. package/LineChart/LineElement.js +2 -2
  49. package/LineChart/LineHighlightPlot.d.ts +2 -1
  50. package/LineChart/LineHighlightPlot.js +9 -5
  51. package/LineChart/LinePlot.js +11 -7
  52. package/LineChart/MarkElement.js +1 -1
  53. package/LineChart/MarkPlot.js +9 -5
  54. package/LineChart/extremums.js +4 -1
  55. package/LineChart/formatter.js +3 -3
  56. package/PieChart/PieArc.js +2 -1
  57. package/PieChart/PieArcLabel.js +1 -1
  58. package/PieChart/PieChart.js +0 -2
  59. package/PieChart/formatter.js +1 -1
  60. package/ResponsiveChartContainer/ResponsiveChartContainer.js +0 -2
  61. package/ResponsiveChartContainer/useChartContainerDimensions.js +2 -2
  62. package/ResponsiveChartContainer/useResponsiveChartContainerProps.d.ts +2 -2
  63. package/ScatterChart/ScatterChart.js +4 -3
  64. package/ScatterChart/ScatterPlot.js +6 -3
  65. package/ScatterChart/extremums.js +8 -2
  66. package/SparkLineChart/SparkLineChart.js +0 -2
  67. package/context/CartesianProvider/CartesianContext.d.ts +1 -1
  68. package/context/CartesianProvider/computeValue.d.ts +1 -1
  69. package/context/CartesianProvider/computeValue.js +1 -1
  70. package/context/CartesianProvider/defaultizeAxis.d.ts +24 -25
  71. package/context/CartesianProvider/getAxisExtremum.d.ts +1 -1
  72. package/context/CartesianProvider/normalizeAxis.js +1 -1
  73. package/context/DrawingProvider.d.ts +2 -1
  74. package/context/DrawingProvider.js +7 -1
  75. package/context/{SeriesContextProvider.d.ts → SeriesProvider/Series.types.d.ts} +4 -8
  76. package/context/SeriesProvider/Series.types.js +5 -0
  77. package/context/SeriesProvider/SeriesContext.d.ts +4 -0
  78. package/context/SeriesProvider/SeriesContext.js +16 -0
  79. package/context/SeriesProvider/SeriesProvider.d.ts +5 -0
  80. package/context/SeriesProvider/SeriesProvider.js +37 -0
  81. package/context/SeriesProvider/index.d.ts +12 -0
  82. package/context/SeriesProvider/index.js +49 -0
  83. package/context/SeriesProvider/processSeries.d.ts +17 -0
  84. package/context/SeriesProvider/processSeries.js +55 -0
  85. package/context/ZAxisContextProvider.d.ts +1 -1
  86. package/context/ZAxisContextProvider.js +1 -1
  87. package/esm/BarChart/BarChart.js +0 -2
  88. package/esm/BarChart/BarElement.js +2 -2
  89. package/esm/BarChart/BarLabel/BarLabelItem.js +1 -1
  90. package/esm/BarChart/BarPlot.js +8 -8
  91. package/esm/BarChart/checkScaleErrors.js +11 -11
  92. package/esm/BarChart/extremums.js +4 -1
  93. package/esm/BarChart/formatter.js +3 -3
  94. package/esm/ChartContainer/ChartContainer.js +3 -5
  95. package/esm/ChartContainer/useChartContainerProps.js +2 -2
  96. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  97. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  98. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  99. package/esm/ChartsLegend/LegendPerItem.js +1 -1
  100. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +3 -1
  101. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  102. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +2 -3
  103. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +2 -3
  104. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +8 -4
  105. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +5 -5
  106. package/esm/ChartsTooltip/ChartsTooltip.js +3 -3
  107. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +5 -3
  108. package/esm/ChartsXAxis/ChartsXAxis.js +2 -2
  109. package/esm/ChartsYAxis/ChartsYAxis.js +2 -2
  110. package/esm/Gauge/GaugeReferenceArc.js +1 -1
  111. package/esm/Gauge/GaugeValueArc.js +1 -1
  112. package/esm/LineChart/AnimatedArea.js +1 -1
  113. package/esm/LineChart/AnimatedLine.js +1 -1
  114. package/esm/LineChart/AreaElement.js +1 -1
  115. package/esm/LineChart/AreaPlot.js +11 -7
  116. package/esm/LineChart/LineChart.js +4 -3
  117. package/esm/LineChart/LineElement.js +1 -1
  118. package/esm/LineChart/LineHighlightPlot.js +9 -5
  119. package/esm/LineChart/LinePlot.js +11 -7
  120. package/esm/LineChart/MarkElement.js +1 -1
  121. package/esm/LineChart/MarkPlot.js +9 -5
  122. package/esm/LineChart/extremums.js +4 -1
  123. package/esm/LineChart/formatter.js +3 -3
  124. package/esm/PieChart/PieArc.js +2 -1
  125. package/esm/PieChart/PieArcLabel.js +1 -1
  126. package/esm/PieChart/PieChart.js +0 -2
  127. package/esm/PieChart/formatter.js +1 -1
  128. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +0 -2
  129. package/esm/ResponsiveChartContainer/useChartContainerDimensions.js +2 -2
  130. package/esm/ScatterChart/ScatterChart.js +4 -3
  131. package/esm/ScatterChart/ScatterPlot.js +6 -3
  132. package/esm/ScatterChart/extremums.js +8 -2
  133. package/esm/SparkLineChart/SparkLineChart.js +0 -2
  134. package/esm/context/CartesianProvider/computeValue.js +1 -1
  135. package/esm/context/CartesianProvider/normalizeAxis.js +1 -1
  136. package/esm/context/DrawingProvider.js +7 -1
  137. package/esm/context/SeriesProvider/Series.types.js +1 -0
  138. package/esm/context/SeriesProvider/SeriesContext.js +8 -0
  139. package/esm/context/SeriesProvider/SeriesProvider.js +30 -0
  140. package/esm/context/SeriesProvider/index.js +8 -0
  141. package/esm/context/{SeriesContextProvider.js → SeriesProvider/processSeries.js} +10 -35
  142. package/esm/context/ZAxisContextProvider.js +1 -1
  143. package/esm/hooks/useAxisEvents.js +12 -8
  144. package/esm/hooks/useReducedMotion.js +2 -2
  145. package/esm/hooks/useSeries.js +1 -1
  146. package/esm/internals/SlotComponentPropsFromProps.js +1 -0
  147. package/esm/internals/colorScale.js +1 -1
  148. package/esm/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +1 -1
  149. package/esm/internals/geometry.js +1 -1
  150. package/esm/internals/getCurve.js +1 -1
  151. package/esm/internals/getPercentageValue.js +1 -1
  152. package/esm/internals/getScale.js +1 -1
  153. package/esm/internals/index.js +1 -1
  154. package/esm/internals/stackSeries.js +1 -1
  155. package/esm/internals/useAnimatedPath.js +1 -1
  156. package/esm/internals/warning.js +19 -11
  157. package/hooks/useAxisEvents.js +12 -8
  158. package/hooks/useReducedMotion.js +2 -2
  159. package/hooks/useSeries.d.ts +1 -1
  160. package/hooks/useSeries.js +2 -2
  161. package/hooks/useTicks.d.ts +1 -1
  162. package/index.js +1 -1
  163. package/internals/SlotComponentPropsFromProps.d.ts +1 -0
  164. package/internals/SlotComponentPropsFromProps.js +5 -0
  165. package/internals/colorScale.d.ts +3 -3
  166. package/internals/colorScale.js +1 -1
  167. package/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +1 -1
  168. package/internals/defaultizeColor.d.ts +8 -1
  169. package/internals/geometry.js +1 -1
  170. package/internals/getCurve.d.ts +1 -1
  171. package/internals/getCurve.js +1 -1
  172. package/internals/getPercentageValue.js +1 -1
  173. package/internals/getScale.js +1 -1
  174. package/internals/index.d.ts +1 -1
  175. package/internals/index.js +4 -4
  176. package/internals/isBandScale.d.ts +1 -1
  177. package/internals/stackSeries.d.ts +1 -1
  178. package/internals/stackSeries.js +1 -1
  179. package/internals/useAnimatedPath.js +1 -1
  180. package/internals/warning.d.ts +2 -1
  181. package/internals/warning.js +21 -12
  182. package/models/axis.d.ts +2 -2
  183. package/models/seriesType/common.d.ts +10 -0
  184. package/models/seriesType/pie.d.ts +1 -1
  185. package/models/seriesType/scatter.d.ts +5 -0
  186. package/models/z-axis.d.ts +1 -1
  187. package/modern/BarChart/BarChart.js +0 -2
  188. package/modern/BarChart/BarElement.js +2 -2
  189. package/modern/BarChart/BarLabel/BarLabelItem.js +1 -1
  190. package/modern/BarChart/BarPlot.js +8 -8
  191. package/modern/BarChart/checkScaleErrors.js +11 -11
  192. package/modern/BarChart/extremums.js +4 -1
  193. package/modern/BarChart/formatter.js +3 -3
  194. package/modern/ChartContainer/ChartContainer.js +3 -5
  195. package/modern/ChartContainer/useChartContainerProps.js +2 -2
  196. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  197. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  198. package/modern/ChartsLegend/ChartsLegend.js +2 -2
  199. package/modern/ChartsLegend/LegendPerItem.js +1 -1
  200. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +3 -1
  201. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  202. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +2 -3
  203. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +2 -3
  204. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +8 -4
  205. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +5 -5
  206. package/modern/ChartsTooltip/ChartsTooltip.js +3 -3
  207. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +5 -3
  208. package/modern/ChartsXAxis/ChartsXAxis.js +2 -2
  209. package/modern/ChartsYAxis/ChartsYAxis.js +2 -2
  210. package/modern/Gauge/GaugeReferenceArc.js +1 -1
  211. package/modern/Gauge/GaugeValueArc.js +1 -1
  212. package/modern/LineChart/AnimatedArea.js +1 -1
  213. package/modern/LineChart/AnimatedLine.js +1 -1
  214. package/modern/LineChart/AreaElement.js +1 -1
  215. package/modern/LineChart/AreaPlot.js +11 -7
  216. package/modern/LineChart/LineChart.js +4 -3
  217. package/modern/LineChart/LineElement.js +1 -1
  218. package/modern/LineChart/LineHighlightPlot.js +9 -5
  219. package/modern/LineChart/LinePlot.js +11 -7
  220. package/modern/LineChart/MarkElement.js +1 -1
  221. package/modern/LineChart/MarkPlot.js +9 -5
  222. package/modern/LineChart/extremums.js +4 -1
  223. package/modern/LineChart/formatter.js +3 -3
  224. package/modern/PieChart/PieArc.js +2 -1
  225. package/modern/PieChart/PieArcLabel.js +1 -1
  226. package/modern/PieChart/PieChart.js +0 -2
  227. package/modern/PieChart/formatter.js +1 -1
  228. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +0 -2
  229. package/modern/ResponsiveChartContainer/useChartContainerDimensions.js +2 -2
  230. package/modern/ScatterChart/ScatterChart.js +4 -3
  231. package/modern/ScatterChart/ScatterPlot.js +6 -3
  232. package/modern/ScatterChart/extremums.js +8 -2
  233. package/modern/SparkLineChart/SparkLineChart.js +0 -2
  234. package/modern/context/CartesianProvider/computeValue.js +1 -1
  235. package/modern/context/CartesianProvider/normalizeAxis.js +1 -1
  236. package/modern/context/DrawingProvider.js +7 -1
  237. package/modern/context/SeriesProvider/Series.types.js +1 -0
  238. package/modern/context/SeriesProvider/SeriesContext.js +8 -0
  239. package/modern/context/SeriesProvider/SeriesProvider.js +30 -0
  240. package/modern/context/SeriesProvider/index.js +8 -0
  241. package/modern/context/{SeriesContextProvider.js → SeriesProvider/processSeries.js} +10 -35
  242. package/modern/context/ZAxisContextProvider.js +1 -1
  243. package/modern/hooks/useAxisEvents.js +12 -8
  244. package/modern/hooks/useReducedMotion.js +2 -2
  245. package/modern/hooks/useSeries.js +1 -1
  246. package/modern/index.js +1 -1
  247. package/modern/internals/SlotComponentPropsFromProps.js +1 -0
  248. package/modern/internals/colorScale.js +1 -1
  249. package/modern/internals/components/ChartsAxesGradients/ChartsContinuousGradient.js +1 -1
  250. package/modern/internals/geometry.js +1 -1
  251. package/modern/internals/getCurve.js +1 -1
  252. package/modern/internals/getPercentageValue.js +1 -1
  253. package/modern/internals/getScale.js +1 -1
  254. package/modern/internals/index.js +1 -1
  255. package/modern/internals/stackSeries.js +1 -1
  256. package/modern/internals/useAnimatedPath.js +1 -1
  257. package/modern/internals/warning.js +19 -11
  258. package/package.json +8 -25
  259. package/context/SeriesContextProvider.js +0 -81
@@ -13,7 +13,10 @@ export const getExtremumX = params => {
13
13
  axis,
14
14
  isDefaultAxis
15
15
  } = params;
16
- return Object.keys(series).filter(seriesId => series[seriesId].xAxisKey === axis.id || series[seriesId].xAxisKey === undefined && isDefaultAxis).reduce((acc, seriesId) => {
16
+ return Object.keys(series).filter(seriesId => {
17
+ const axisId = series[seriesId].xAxisId ?? series[seriesId].xAxisKey;
18
+ return axisId === axis.id || axisId === undefined && isDefaultAxis;
19
+ }).reduce((acc, seriesId) => {
17
20
  const seriesMinMax = series[seriesId].data.reduce((accSeries, {
18
21
  x
19
22
  }) => {
@@ -29,7 +32,10 @@ export const getExtremumY = params => {
29
32
  axis,
30
33
  isDefaultAxis
31
34
  } = params;
32
- return Object.keys(series).filter(seriesId => series[seriesId].yAxisKey === axis.id || series[seriesId].yAxisKey === undefined && isDefaultAxis).reduce((acc, seriesId) => {
35
+ return Object.keys(series).filter(seriesId => {
36
+ const axisId = series[seriesId].yAxisId ?? series[seriesId].yAxisKey;
37
+ return axisId === axis.id || axisId === undefined && isDefaultAxis;
38
+ }).reduce((acc, seriesId) => {
33
39
  const seriesMinMax = series[seriesId].data.reduce((accSeries, {
34
40
  y
35
41
  }) => {
@@ -245,7 +245,6 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
245
245
  * Notice it is a single [[AxisConfig]] object, not an array of configuration.
246
246
  */
247
247
  xAxis: PropTypes.shape({
248
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
249
248
  classes: PropTypes.object,
250
249
  colorMap: PropTypes.oneOfType([PropTypes.shape({
251
250
  colors: PropTypes.arrayOf(PropTypes.string).isRequired,
@@ -297,7 +296,6 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
297
296
  * Notice it is a single [[AxisConfig]] object, not an array of configuration.
298
297
  */
299
298
  yAxis: PropTypes.shape({
300
- axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
301
299
  classes: PropTypes.object,
302
300
  colorMap: PropTypes.oneOfType([PropTypes.shape({
303
301
  colors: PropTypes.arrayOf(PropTypes.string).isRequired,
@@ -1,5 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { scaleBand, scalePoint, scaleTime } from 'd3-scale';
2
+ import { scaleBand, scalePoint, scaleTime } from '@mui/x-charts-vendor/d3-scale';
3
3
  import { isBandScaleConfig, isPointScaleConfig } from '../../models/axis';
4
4
  import { getColorScale, getOrdinalColorScale } from '../../internals/colorScale';
5
5
  import { getTickNumber } from '../../hooks/useTicks';
@@ -6,7 +6,7 @@ export const normalizeAxis = (axis, dataset, axisName) => {
6
6
  return axisConfig;
7
7
  }
8
8
  if (dataset === undefined) {
9
- throw Error(`MUI X Charts: ${axisName}-axis uses \`dataKey\` but no \`dataset\` is provided.`);
9
+ throw Error(`MUI X: ${axisName}-axis uses \`dataKey\` but no \`dataset\` is provided.`);
10
10
  }
11
11
  return _extends({}, axisConfig, {
12
12
  data: dataset.map(d => d[dataKey])
@@ -42,7 +42,13 @@ export function DrawingProvider(props) {
42
42
  const isPointInside = React.useCallback(({
43
43
  x,
44
44
  y
45
- }) => x >= drawingArea.left && x <= drawingArea.left + drawingArea.width && y >= drawingArea.top && y <= drawingArea.top + drawingArea.height, [drawingArea]);
45
+ }, targetElement) => {
46
+ // For element allowed to overflow, wrapping them in <g data-drawing-container /> make them fully part of the drawing area.
47
+ if (targetElement && targetElement.closest('[data-drawing-container]')) {
48
+ return true;
49
+ }
50
+ return x >= drawingArea.left && x <= drawingArea.left + drawingArea.width && y >= drawingArea.top && y <= drawingArea.top + drawingArea.height;
51
+ }, [drawingArea]);
46
52
  const value = React.useMemo(() => _extends({
47
53
  chartId: chartId ?? ''
48
54
  }, drawingArea, {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export const SeriesContext = /*#__PURE__*/React.createContext({
3
+ isInitialized: false,
4
+ data: {}
5
+ });
6
+ if (process.env.NODE_ENV !== 'production') {
7
+ SeriesContext.displayName = 'SeriesContext';
8
+ }
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import { useTheme } from '@mui/material/styles';
3
+ import { blueberryTwilightPalette } from '../../colorPalettes';
4
+ import { SeriesContext } from './SeriesContext';
5
+ import { preprocessSeries } from './processSeries';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ function SeriesProvider(props) {
8
+ const {
9
+ series,
10
+ dataset,
11
+ colors = blueberryTwilightPalette,
12
+ seriesFormatters,
13
+ children
14
+ } = props;
15
+ const theme = useTheme();
16
+ const formattedSeries = React.useMemo(() => ({
17
+ isInitialized: true,
18
+ data: preprocessSeries({
19
+ series,
20
+ colors: typeof colors === 'function' ? colors(theme.palette.mode) : colors,
21
+ seriesFormatters,
22
+ dataset: dataset
23
+ })
24
+ }), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
25
+ return /*#__PURE__*/_jsx(SeriesContext.Provider, {
26
+ value: formattedSeries,
27
+ children: children
28
+ });
29
+ }
30
+ export { SeriesProvider };
@@ -0,0 +1,8 @@
1
+ import { preprocessSeries } from './processSeries';
2
+ export * from './SeriesProvider';
3
+ export * from './SeriesContext';
4
+ export * from './Series.types';
5
+ const seriesProviderUtils = {
6
+ preprocessSeries
7
+ };
8
+ export { seriesProviderUtils };
@@ -1,25 +1,19 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import { useTheme } from '@mui/material/styles';
4
- import { defaultizeColor } from '../internals/defaultizeColor';
5
- import { blueberryTwilightPalette } from '../colorPalettes';
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- export const SeriesContext = /*#__PURE__*/React.createContext({
8
- isInitialized: false,
9
- data: {}
10
- });
11
- if (process.env.NODE_ENV !== 'production') {
12
- SeriesContext.displayName = 'SeriesContext';
13
- }
2
+ import { defaultizeColor } from '../../internals/defaultizeColor';
14
3
  /**
15
4
  * This methods is the interface between what the developer is providing and what components receives
16
5
  * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified
17
6
  * It also add defaultized values such as the ids, colors
18
- * @param series The array of series provided by devs
7
+ * @param series The array of series provided by the developer
19
8
  * @param colors The color palette used to defaultize series colors
20
9
  * @returns An object structuring all the series by type.
21
10
  */
22
- const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
11
+ export const preprocessSeries = ({
12
+ series,
13
+ colors,
14
+ seriesFormatters,
15
+ dataset
16
+ }) => {
23
17
  // Group series by type
24
18
  const seriesGroups = {};
25
19
  series.forEach((seriesData, seriesIndex) => {
@@ -34,7 +28,7 @@ const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
34
28
  };
35
29
  }
36
30
  if (seriesGroups[type]?.series[id] !== undefined) {
37
- throw new Error(`MUI X Charts: series' id "${id}" is not unique.`);
31
+ throw new Error(`MUI X: series' id "${id}" is not unique.`);
38
32
  }
39
33
  seriesGroups[type].series[id] = _extends({
40
34
  id
@@ -50,23 +44,4 @@ const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
50
44
  }
51
45
  });
52
46
  return formattedSeries;
53
- };
54
- function SeriesContextProvider(props) {
55
- const {
56
- series,
57
- dataset,
58
- colors = blueberryTwilightPalette,
59
- seriesFormatters,
60
- children
61
- } = props;
62
- const theme = useTheme();
63
- const formattedSeries = React.useMemo(() => ({
64
- isInitialized: true,
65
- data: preprocessSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, seriesFormatters, dataset)
66
- }), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
67
- return /*#__PURE__*/_jsx(SeriesContext.Provider, {
68
- value: formattedSeries,
69
- children: children
70
- });
71
- }
72
- export { SeriesContextProvider };
47
+ };
@@ -22,7 +22,7 @@ function ZAxisContextProvider(props) {
22
22
  return axisConfig;
23
23
  }
24
24
  if (dataset === undefined) {
25
- throw Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.');
25
+ throw Error('MUI X: z-axis uses `dataKey` but no `dataset` is provided.');
26
26
  }
27
27
  return _extends({}, axisConfig, {
28
28
  data: dataset.map(d => d[dataKey])
@@ -25,6 +25,7 @@ export const useAxisEvents = disableAxisListener => {
25
25
 
26
26
  // Use a ref to avoid rerendering on every mousemove event.
27
27
  const mousePosition = React.useRef({
28
+ isInChart: false,
28
29
  x: -1,
29
30
  y: -1
30
31
  });
@@ -84,6 +85,7 @@ export const useAxisEvents = disableAxisListener => {
84
85
  }
85
86
  const handleOut = () => {
86
87
  mousePosition.current = {
88
+ isInChart: false,
87
89
  x: -1,
88
90
  y: -1
89
91
  };
@@ -94,16 +96,18 @@ export const useAxisEvents = disableAxisListener => {
94
96
  const handleMove = event => {
95
97
  const target = 'targetTouches' in event ? event.targetTouches[0] : event;
96
98
  const svgPoint = getSVGPoint(element, target);
97
- mousePosition.current = {
98
- x: svgPoint.x,
99
- y: svgPoint.y
100
- };
101
- if (!drawingArea.isPointInside(svgPoint)) {
102
- dispatch({
103
- type: 'exitChart'
104
- });
99
+ mousePosition.current.x = svgPoint.x;
100
+ mousePosition.current.y = svgPoint.y;
101
+ if (!drawingArea.isPointInside(svgPoint, event.target)) {
102
+ if (mousePosition.current.isInChart) {
103
+ dispatch({
104
+ type: 'exitChart'
105
+ });
106
+ mousePosition.current.isInChart = false;
107
+ }
105
108
  return;
106
109
  }
110
+ mousePosition.current.isInChart = true;
107
111
  const newStateX = getNewAxisState(xAxis[usedXAxis], svgPoint.x);
108
112
  const newStateY = getNewAxisState(yAxis[usedYAxis], svgPoint.y);
109
113
  dispatch({
@@ -19,10 +19,10 @@ export const useReducedMotion = () => {
19
19
  return () => {};
20
20
  }
21
21
  const mql = window.matchMedia('(prefers-reduced-motion)');
22
- const handleMediaChange = e => {
22
+ const handleMediaChange = event => {
23
23
  Globals.assign({
24
24
  // Modification such the react-spring implementation such that this hook can remove animation but never activate animation.
25
- skipAnimation: e.matches || undefined
25
+ skipAnimation: event.matches || undefined
26
26
  });
27
27
  };
28
28
  handleMediaChange(mql);
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { SeriesContext } from '../context/SeriesContextProvider';
2
+ import { SeriesContext } from '../context/SeriesProvider';
3
3
 
4
4
  /**
5
5
  * Get access to the internal state of series.
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v7.11.0
2
+ * @mui/x-charts v7.12.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { scaleOrdinal, scaleThreshold, scaleSequential } from 'd3-scale';
1
+ import { scaleOrdinal, scaleThreshold, scaleSequential } from '@mui/x-charts-vendor/d3-scale';
2
2
  export function getSequentialColorScale(config) {
3
3
  if (config.type === 'piecewise') {
4
4
  return scaleThreshold(config.thresholds, config.colors);
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { interpolateDate, interpolateNumber } from 'd3-interpolate';
2
+ import { interpolateDate, interpolateNumber } from '@mui/x-charts-vendor/d3-interpolate';
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  const PX_PRECISION = 10;
5
5
  export default function ChartsContinuousGradient(props) {
@@ -14,7 +14,7 @@ export function getMinXTranslation(width, height, angle = 0) {
14
14
  if (process.env.NODE_ENV !== 'production') {
15
15
  if (!warnedOnce && angle > 90 && angle < -90) {
16
16
  warnedOnce = true;
17
- console.warn([`MUI X Charts: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`].join('\n'));
17
+ console.warn([`MUI X: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`].join('\n'));
18
18
  }
19
19
  }
20
20
  const standardAngle = Math.min(Math.abs(angle) % 180, Math.abs(Math.abs(angle) % 180 - 180) % 180); // Map from R to [0, 90]
@@ -1,4 +1,4 @@
1
- import { curveCatmullRom, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';
1
+ import { curveCatmullRom, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from '@mui/x-charts-vendor/d3-shape';
2
2
  export default function getCurveFactory(curveType) {
3
3
  switch (curveType) {
4
4
  case 'catmullRom':
@@ -24,5 +24,5 @@ export function getPercentageValue(value, refValue) {
24
24
  return val;
25
25
  }
26
26
  }
27
- throw Error(`MUI X Charts: Received an unknown value "${value}". It should be a number, or a string with a percentage value.`);
27
+ throw Error(`MUI X: Received an unknown value "${value}". It should be a number, or a string with a percentage value.`);
28
28
  }
@@ -1,4 +1,4 @@
1
- import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from 'd3-scale';
1
+ import { scaleLog, scalePow, scaleSqrt, scaleTime, scaleUtc, scaleLinear } from '@mui/x-charts-vendor/d3-scale';
2
2
  export function getScale(scaleType, domain, range) {
3
3
  switch (scaleType) {
4
4
  case 'log':
@@ -27,7 +27,7 @@ export * from '../context/CartesianProvider';
27
27
  export * from '../context/DrawingProvider';
28
28
  export * from '../context/ColorProvider';
29
29
  export * from '../context/InteractionProvider';
30
- export * from '../context/SeriesContextProvider';
30
+ export * from '../context/SeriesProvider';
31
31
  export * from '../context/ZAxisContextProvider';
32
32
  // series configuration
33
33
  export * from '../models/seriesType/config';
@@ -1,4 +1,4 @@
1
- import { stackOrderAppearance as d3StackOrderAppearance, stackOrderAscending as d3StackOrderAscending, stackOrderDescending as d3StackOrderDescending, stackOrderInsideOut as d3StackOrderInsideOut, stackOrderNone as d3StackOrderNone, stackOrderReverse as d3StackOrderReverse, stackOffsetExpand as d3StackOffsetExpand, stackOffsetDiverging as d3StackOffsetDiverging, stackOffsetNone as d3StackOffsetNone, stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle } from 'd3-shape';
1
+ import { stackOrderAppearance as d3StackOrderAppearance, stackOrderAscending as d3StackOrderAscending, stackOrderDescending as d3StackOrderDescending, stackOrderInsideOut as d3StackOrderInsideOut, stackOrderNone as d3StackOrderNone, stackOrderReverse as d3StackOrderReverse, stackOffsetExpand as d3StackOffsetExpand, stackOffsetDiverging as d3StackOffsetDiverging, stackOffsetNone as d3StackOffsetNone, stackOffsetSilhouette as d3StackOffsetSilhouette, stackOffsetWiggle as d3StackOffsetWiggle } from '@mui/x-charts-vendor/d3-shape';
2
2
  export const StackOrder = {
3
3
  /**
4
4
  * Series order such that the earliest series (according to the maximum value) is at the bottom.
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { interpolateString } from 'd3-interpolate';
2
+ import { interpolateString } from '@mui/x-charts-vendor/d3-interpolate';
3
3
  import { useSpring, to } from '@react-spring/web';
4
4
  function usePrevious(value) {
5
5
  const ref = React.useRef(null);
@@ -1,13 +1,21 @@
1
- export function buildWarning(message, gravity = 'warning') {
2
- let alreadyWarned = false;
3
- return (...args) => {
4
- if (!alreadyWarned) {
5
- alreadyWarned = true;
6
- if (gravity === 'error') {
7
- console.error(message(...args));
8
- } else {
9
- console.warn(message(...args));
10
- }
1
+ const warnedOnceCache = new Set();
2
+
3
+ // TODO move to @mui/x-internals
4
+ // TODO eventually move to @base_ui/internals. Base UI, etc. too need this helper.
5
+ export function warnOnce(message, gravity = 'warning') {
6
+ if (process.env.NODE_ENV === 'production') {
7
+ return;
8
+ }
9
+ const cleanMessage = Array.isArray(message) ? message.join('\n') : message;
10
+ if (!warnedOnceCache.has(cleanMessage)) {
11
+ warnedOnceCache.add(cleanMessage);
12
+ if (gravity === 'error') {
13
+ console.error(cleanMessage);
14
+ } else {
15
+ console.warn(cleanMessage);
11
16
  }
12
- };
17
+ }
18
+ }
19
+ export function clearWarningsCache() {
20
+ warnedOnceCache.clear();
13
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-charts",
3
- "version": "7.11.0",
3
+ "version": "7.12.0",
4
4
  "description": "The community edition of the Charts components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
@@ -29,19 +29,14 @@
29
29
  "directory": "packages/x-charts"
30
30
  },
31
31
  "dependencies": {
32
- "@babel/runtime": "^7.24.8",
33
- "@mui/base": "^5.0.0-beta.40",
34
- "@mui/system": "^5.16.2",
35
- "@mui/utils": "^5.16.2",
36
- "@react-spring/rafz": "^9.7.3",
37
- "@react-spring/web": "^9.7.3",
32
+ "@babel/runtime": "^7.25.0",
33
+ "@mui/system": "^5.16.5",
34
+ "@mui/utils": "^5.16.5",
35
+ "@react-spring/rafz": "^9.7.4",
36
+ "@react-spring/web": "^9.7.4",
38
37
  "clsx": "^2.1.1",
39
- "d3-color": "^3.1.0",
40
- "d3-delaunay": "^6.0.4",
41
- "d3-interpolate": "^3.0.1",
42
- "d3-scale": "^4.0.2",
43
- "d3-shape": "^3.2.0",
44
- "prop-types": "^15.8.1"
38
+ "prop-types": "^15.8.1",
39
+ "@mui/x-charts-vendor": "7.12.0"
45
40
  },
46
41
  "peerDependencies": {
47
42
  "@emotion/react": "^11.9.0",
@@ -58,18 +53,6 @@
58
53
  "optional": true
59
54
  }
60
55
  },
61
- "exports": {
62
- ".": {
63
- "types": "./index.d.ts",
64
- "import": "./esm/index.js",
65
- "default": "./esm/index.js"
66
- },
67
- "./*": {
68
- "types": "./*/index.d.ts",
69
- "import": "./esm/*/index.js",
70
- "default": "./esm/*/index.js"
71
- }
72
- },
73
56
  "engines": {
74
57
  "node": ">=14.0.0"
75
58
  },
@@ -1,81 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.SeriesContext = void 0;
8
- exports.SeriesContextProvider = SeriesContextProvider;
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var React = _interopRequireWildcard(require("react"));
11
- var _styles = require("@mui/material/styles");
12
- var _defaultizeColor = require("../internals/defaultizeColor");
13
- var _colorPalettes = require("../colorPalettes");
14
- var _jsxRuntime = require("react/jsx-runtime");
15
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
- const SeriesContext = exports.SeriesContext = /*#__PURE__*/React.createContext({
18
- isInitialized: false,
19
- data: {}
20
- });
21
- if (process.env.NODE_ENV !== 'production') {
22
- SeriesContext.displayName = 'SeriesContext';
23
- }
24
- /**
25
- * This methods is the interface between what the developer is providing and what components receives
26
- * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if some line data are modified
27
- * It also add defaultized values such as the ids, colors
28
- * @param series The array of series provided by devs
29
- * @param colors The color palette used to defaultize series colors
30
- * @returns An object structuring all the series by type.
31
- */
32
- const preprocessSeries = (series, colors, seriesFormatters, dataset) => {
33
- // Group series by type
34
- const seriesGroups = {};
35
- series.forEach((seriesData, seriesIndex) => {
36
- const {
37
- id = `auto-generated-id-${seriesIndex}`,
38
- type
39
- } = seriesData;
40
- if (seriesGroups[type] === undefined) {
41
- seriesGroups[type] = {
42
- series: {},
43
- seriesOrder: []
44
- };
45
- }
46
- if (seriesGroups[type]?.series[id] !== undefined) {
47
- throw new Error(`MUI X Charts: series' id "${id}" is not unique.`);
48
- }
49
- seriesGroups[type].series[id] = (0, _extends2.default)({
50
- id
51
- }, (0, _defaultizeColor.defaultizeColor)(seriesData, seriesIndex, colors));
52
- seriesGroups[type].seriesOrder.push(id);
53
- });
54
- const formattedSeries = {};
55
- // Apply formatter on a type group
56
- Object.keys(seriesFormatters).forEach(type => {
57
- const group = seriesGroups[type];
58
- if (group !== undefined) {
59
- formattedSeries[type] = seriesFormatters[type]?.(group, dataset) ?? seriesGroups[type];
60
- }
61
- });
62
- return formattedSeries;
63
- };
64
- function SeriesContextProvider(props) {
65
- const {
66
- series,
67
- dataset,
68
- colors = _colorPalettes.blueberryTwilightPalette,
69
- seriesFormatters,
70
- children
71
- } = props;
72
- const theme = (0, _styles.useTheme)();
73
- const formattedSeries = React.useMemo(() => ({
74
- isInitialized: true,
75
- data: preprocessSeries(series, typeof colors === 'function' ? colors(theme.palette.mode) : colors, seriesFormatters, dataset)
76
- }), [series, colors, theme.palette.mode, seriesFormatters, dataset]);
77
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(SeriesContext.Provider, {
78
- value: formattedSeries,
79
- children: children
80
- });
81
- }