@mui/x-charts 7.13.0 → 7.14.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 (88) hide show
  1. package/BarChart/BarPlot.js +4 -3
  2. package/BarChart/extremums.js +42 -7
  3. package/CHANGELOG.md +82 -2
  4. package/ChartContainer/useChartContainerProps.js +1 -1
  5. package/ChartContainer/useDefaultizeAxis.d.ts +2 -1
  6. package/ChartContainer/useDefaultizeAxis.js +16 -5
  7. package/ChartsAxisHighlight/ChartsAxisHighlight.js +23 -9
  8. package/ChartsGrid/ChartsGrid.js +6 -4
  9. package/ChartsXAxis/ChartsXAxis.js +14 -3
  10. package/ChartsYAxis/ChartsYAxis.js +8 -2
  11. package/LineChart/extremums.js +20 -4
  12. package/ScatterChart/extremums.js +26 -10
  13. package/context/CartesianProvider/Cartesian.types.d.ts +59 -0
  14. package/context/CartesianProvider/Cartesian.types.js +5 -0
  15. package/context/CartesianProvider/CartesianContext.d.ts +1 -22
  16. package/context/CartesianProvider/CartesianProvider.d.ts +1 -21
  17. package/context/CartesianProvider/CartesianProvider.js +2 -5
  18. package/context/CartesianProvider/computeValue.d.ts +18 -31
  19. package/context/CartesianProvider/computeValue.js +20 -23
  20. package/context/CartesianProvider/getAxisExtremum.d.ts +3 -2
  21. package/context/CartesianProvider/getAxisExtremum.js +11 -5
  22. package/context/CartesianProvider/index.d.ts +1 -0
  23. package/context/CartesianProvider/index.js +12 -0
  24. package/context/CartesianProvider/useCartesianContext.d.ts +1 -1
  25. package/context/CartesianProvider/zoom.d.ts +10 -0
  26. package/context/CartesianProvider/zoom.js +26 -0
  27. package/context/DrawingProvider.d.ts +7 -2
  28. package/context/DrawingProvider.js +11 -3
  29. package/context/PluginProvider/ExtremumGetter.types.d.ts +11 -1
  30. package/esm/BarChart/BarPlot.js +4 -3
  31. package/esm/BarChart/extremums.js +42 -7
  32. package/esm/ChartContainer/useChartContainerProps.js +1 -1
  33. package/esm/ChartContainer/useDefaultizeAxis.js +16 -5
  34. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +23 -9
  35. package/esm/ChartsGrid/ChartsGrid.js +6 -4
  36. package/esm/ChartsXAxis/ChartsXAxis.js +14 -3
  37. package/esm/ChartsYAxis/ChartsYAxis.js +8 -2
  38. package/esm/LineChart/extremums.js +20 -4
  39. package/esm/ScatterChart/extremums.js +26 -10
  40. package/esm/context/CartesianProvider/Cartesian.types.js +1 -0
  41. package/esm/context/CartesianProvider/CartesianProvider.js +2 -5
  42. package/esm/context/CartesianProvider/computeValue.js +20 -23
  43. package/esm/context/CartesianProvider/getAxisExtremum.js +11 -5
  44. package/esm/context/CartesianProvider/index.js +1 -0
  45. package/esm/context/CartesianProvider/zoom.js +19 -0
  46. package/esm/context/DrawingProvider.js +11 -3
  47. package/esm/hooks/useAxisEvents.js +3 -1
  48. package/esm/internals/domUtils.js +16 -3
  49. package/esm/internals/index.js +3 -0
  50. package/esm/models/axis.js +5 -0
  51. package/esm/tests/firePointerEvent.js +35 -0
  52. package/hooks/useAxisEvents.js +3 -1
  53. package/index.js +1 -1
  54. package/internals/domUtils.d.ts +2 -0
  55. package/internals/domUtils.js +19 -5
  56. package/internals/index.d.ts +2 -0
  57. package/internals/index.js +17 -1
  58. package/models/axis.d.ts +4 -0
  59. package/models/axis.js +5 -0
  60. package/modern/BarChart/BarPlot.js +4 -3
  61. package/modern/BarChart/extremums.js +42 -7
  62. package/modern/ChartContainer/useChartContainerProps.js +1 -1
  63. package/modern/ChartContainer/useDefaultizeAxis.js +16 -5
  64. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +23 -9
  65. package/modern/ChartsGrid/ChartsGrid.js +6 -4
  66. package/modern/ChartsXAxis/ChartsXAxis.js +14 -3
  67. package/modern/ChartsYAxis/ChartsYAxis.js +8 -2
  68. package/modern/LineChart/extremums.js +20 -4
  69. package/modern/ScatterChart/extremums.js +26 -10
  70. package/modern/context/CartesianProvider/Cartesian.types.js +1 -0
  71. package/modern/context/CartesianProvider/CartesianProvider.js +2 -5
  72. package/modern/context/CartesianProvider/computeValue.js +20 -23
  73. package/modern/context/CartesianProvider/getAxisExtremum.js +11 -5
  74. package/modern/context/CartesianProvider/index.js +1 -0
  75. package/modern/context/CartesianProvider/zoom.js +19 -0
  76. package/modern/context/DrawingProvider.js +11 -3
  77. package/modern/hooks/useAxisEvents.js +3 -1
  78. package/modern/index.js +1 -1
  79. package/modern/internals/domUtils.js +16 -3
  80. package/modern/internals/index.js +3 -0
  81. package/modern/models/axis.js +5 -0
  82. package/modern/tests/firePointerEvent.js +35 -0
  83. package/package.json +4 -4
  84. package/tests/firePointerEvent.js +42 -0
  85. package/context/CartesianProvider/normalizeAxis.d.ts +0 -5
  86. package/context/CartesianProvider/normalizeAxis.js +0 -23
  87. package/esm/context/CartesianProvider/normalizeAxis.js +0 -15
  88. package/modern/context/CartesianProvider/normalizeAxis.js +0 -15
@@ -20,7 +20,7 @@ const SPAN_STYLE = {
20
20
  whiteSpace: 'pre'
21
21
  };
22
22
  const STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];
23
- const MEASUREMENT_SPAN_ID = 'mui_measurement_span';
23
+ export const MEASUREMENT_SPAN_ID = 'mui_measurement_span';
24
24
 
25
25
  /**
26
26
  *
@@ -57,7 +57,7 @@ function camelToMiddleLine(text) {
57
57
  * @returns CSS styling string
58
58
  */
59
59
  export const getStyleString = style => Object.keys(style).sort().reduce((result, s) => `${result}${camelToMiddleLine(s)}:${autoCompleteStyle(s, style[s])};`, '');
60
-
60
+ let domCleanTimeout;
61
61
  /**
62
62
  *
63
63
  * @param text The string to estimate
@@ -105,6 +105,13 @@ export const getStringSize = (text, style = {}) => {
105
105
  } else {
106
106
  stringCache.cacheCount += 1;
107
107
  }
108
+ if (domCleanTimeout) {
109
+ clearTimeout(domCleanTimeout);
110
+ }
111
+ domCleanTimeout = setTimeout(() => {
112
+ // Limit node cleaning to once per render cycle
113
+ measurementSpan.textContent = '';
114
+ }, 0);
108
115
  return result;
109
116
  } catch (e) {
110
117
  return {
@@ -112,4 +119,10 @@ export const getStringSize = (text, style = {}) => {
112
119
  height: 0
113
120
  };
114
121
  }
115
- };
122
+ };
123
+
124
+ // eslint-disable-next-line @typescript-eslint/naming-convention
125
+ export function unstable_cleanupDOM() {
126
+ // const measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);
127
+ // measurementSpan?.remove();
128
+ }
@@ -20,6 +20,7 @@ export * from './configInit';
20
20
  export * from './getLabel';
21
21
  export * from './getSVGPoint';
22
22
  export * from './isDefined';
23
+ export { unstable_cleanupDOM } from './domUtils';
23
24
 
24
25
  // contexts
25
26
 
@@ -29,6 +30,8 @@ export * from '../context/InteractionProvider';
29
30
  export * from '../context/SeriesProvider';
30
31
  export * from '../context/ZAxisContextProvider';
31
32
  export * from '../context/PluginProvider';
33
+ export { getAxisExtremum } from '../context/CartesianProvider/getAxisExtremum';
34
+
32
35
  // series configuration
33
36
  export * from '../models/seriesType/config';
34
37
  export * from '../models/seriesType/common';
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Use this type instead of `AxisScaleConfig` when the values
3
+ * shouldn't be provided by the user.
4
+ */
5
+
1
6
  export function isBandScaleConfig(scaleConfig) {
2
7
  return scaleConfig.scaleType === 'band';
3
8
  }
@@ -0,0 +1,35 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { fireEvent } from '@mui/internal-test-utils';
3
+ export function firePointerEvent(target, type, options) {
4
+ const originalGetBoundingClientRect = target.getBoundingClientRect;
5
+ target.getBoundingClientRect = () => ({
6
+ x: 0,
7
+ y: 0,
8
+ bottom: 0,
9
+ height: 0,
10
+ left: 0,
11
+ right: 0,
12
+ top: 0,
13
+ width: 0,
14
+ toJSON() {
15
+ return {
16
+ x: 0,
17
+ y: 0,
18
+ bottom: 0,
19
+ height: 0,
20
+ left: 0,
21
+ right: 0,
22
+ top: 0,
23
+ width: 0
24
+ };
25
+ }
26
+ });
27
+ const event = new window.PointerEvent(type, _extends({
28
+ bubbles: true,
29
+ cancelable: true,
30
+ composed: true,
31
+ isPrimary: true
32
+ }, options));
33
+ fireEvent(target, event);
34
+ target.getBoundingClientRect = originalGetBoundingClientRect;
35
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-charts",
3
- "version": "7.13.0",
3
+ "version": "7.14.0",
4
4
  "description": "The community edition of the Charts components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
@@ -30,13 +30,13 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@babel/runtime": "^7.25.0",
33
- "@mui/system": "^5.16.5",
34
- "@mui/utils": "^5.16.5",
33
+ "@mui/system": "^5.16.7",
34
+ "@mui/utils": "^5.16.6",
35
35
  "@react-spring/rafz": "^9.7.4",
36
36
  "@react-spring/web": "^9.7.4",
37
37
  "clsx": "^2.1.1",
38
38
  "prop-types": "^15.8.1",
39
- "@mui/x-charts-vendor": "7.13.0"
39
+ "@mui/x-charts-vendor": "7.14.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@emotion/react": "^11.9.0",
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.firePointerEvent = firePointerEvent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _internalTestUtils = require("@mui/internal-test-utils");
10
+ function firePointerEvent(target, type, options) {
11
+ const originalGetBoundingClientRect = target.getBoundingClientRect;
12
+ target.getBoundingClientRect = () => ({
13
+ x: 0,
14
+ y: 0,
15
+ bottom: 0,
16
+ height: 0,
17
+ left: 0,
18
+ right: 0,
19
+ top: 0,
20
+ width: 0,
21
+ toJSON() {
22
+ return {
23
+ x: 0,
24
+ y: 0,
25
+ bottom: 0,
26
+ height: 0,
27
+ left: 0,
28
+ right: 0,
29
+ top: 0,
30
+ width: 0
31
+ };
32
+ }
33
+ });
34
+ const event = new window.PointerEvent(type, (0, _extends2.default)({
35
+ bubbles: true,
36
+ cancelable: true,
37
+ composed: true,
38
+ isPrimary: true
39
+ }, options));
40
+ (0, _internalTestUtils.fireEvent)(target, event);
41
+ target.getBoundingClientRect = originalGetBoundingClientRect;
42
+ }
@@ -1,5 +0,0 @@
1
- import type { AxisConfig, ScaleName } from '../../models';
2
- import { ChartsAxisProps } from '../../models/axis';
3
- import { MakeOptional } from '../../models/helpers';
4
- import { DatasetType } from '../../models/seriesType/config';
5
- export declare const normalizeAxis: <T extends ChartsAxisProps, R extends MakeOptional<AxisConfig<ScaleName, any, T>, "id">>(axis: R[] | undefined, dataset: DatasetType | undefined, axisName: "x" | "y") => R[];
@@ -1,23 +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.normalizeAxis = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- const normalizeAxis = (axis, dataset, axisName) => {
10
- return axis?.map(axisConfig => {
11
- const dataKey = axisConfig.dataKey;
12
- if (dataKey === undefined || axisConfig.data !== undefined) {
13
- return axisConfig;
14
- }
15
- if (dataset === undefined) {
16
- throw Error(`MUI X: ${axisName}-axis uses \`dataKey\` but no \`dataset\` is provided.`);
17
- }
18
- return (0, _extends2.default)({}, axisConfig, {
19
- data: dataset.map(d => d[dataKey])
20
- });
21
- }) ?? [];
22
- };
23
- exports.normalizeAxis = normalizeAxis;
@@ -1,15 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- export const normalizeAxis = (axis, dataset, axisName) => {
3
- return axis?.map(axisConfig => {
4
- const dataKey = axisConfig.dataKey;
5
- if (dataKey === undefined || axisConfig.data !== undefined) {
6
- return axisConfig;
7
- }
8
- if (dataset === undefined) {
9
- throw Error(`MUI X: ${axisName}-axis uses \`dataKey\` but no \`dataset\` is provided.`);
10
- }
11
- return _extends({}, axisConfig, {
12
- data: dataset.map(d => d[dataKey])
13
- });
14
- }) ?? [];
15
- };
@@ -1,15 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- export const normalizeAxis = (axis, dataset, axisName) => {
3
- return axis?.map(axisConfig => {
4
- const dataKey = axisConfig.dataKey;
5
- if (dataKey === undefined || axisConfig.data !== undefined) {
6
- return axisConfig;
7
- }
8
- if (dataset === undefined) {
9
- throw Error(`MUI X: ${axisName}-axis uses \`dataKey\` but no \`dataset\` is provided.`);
10
- }
11
- return _extends({}, axisConfig, {
12
- data: dataset.map(d => d[dataKey])
13
- });
14
- }) ?? [];
15
- };