@mui/x-charts 9.2.0 → 9.3.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 (78) hide show
  1. package/BarChart/BarChart.js +10 -10
  2. package/BarChart/BarChart.mjs +10 -10
  3. package/BarChart/seriesConfig/bar/getColor.js +7 -53
  4. package/BarChart/seriesConfig/bar/getColor.mjs +7 -53
  5. package/BarChart/seriesConfig/bar/seriesProcessor.js +3 -1
  6. package/BarChart/seriesConfig/bar/seriesProcessor.mjs +3 -1
  7. package/BarChart/seriesConfig/bar/tooltip.js +4 -27
  8. package/BarChart/seriesConfig/bar/tooltip.mjs +4 -27
  9. package/CHANGELOG.md +118 -0
  10. package/ChartsContainer/ChartsContainer.js +9 -9
  11. package/ChartsContainer/ChartsContainer.mjs +9 -9
  12. package/ChartsLabel/ChartsLabelMark.js +0 -2
  13. package/ChartsLabel/ChartsLabelMark.mjs +0 -2
  14. package/ChartsLabel/labelMarkClasses.d.mts +0 -1
  15. package/ChartsLabel/labelMarkClasses.d.ts +0 -1
  16. package/ChartsLabel/labelMarkClasses.js +1 -2
  17. package/ChartsLabel/labelMarkClasses.mjs +2 -2
  18. package/ChartsLayerContainer/ChartsLayerContainer.js +36 -30
  19. package/ChartsLayerContainer/ChartsLayerContainer.mjs +36 -30
  20. package/ChartsXAxis/ChartsXAxis.js +3 -1
  21. package/ChartsXAxis/ChartsXAxis.mjs +3 -1
  22. package/ChartsYAxis/ChartsYAxis.js +3 -1
  23. package/ChartsYAxis/ChartsYAxis.mjs +3 -1
  24. package/LineChart/LineChart.js +6 -6
  25. package/LineChart/LineChart.mjs +6 -6
  26. package/LineChart/seriesConfig/curveEvaluation.js +12 -1
  27. package/LineChart/seriesConfig/curveEvaluation.mjs +12 -1
  28. package/LineChart/seriesConfig/getColor.js +7 -54
  29. package/LineChart/seriesConfig/getColor.mjs +7 -54
  30. package/LineChart/seriesConfig/seriesProcessor.d.mts +2 -4
  31. package/LineChart/seriesConfig/seriesProcessor.d.ts +2 -4
  32. package/LineChart/seriesConfig/seriesProcessor.js +2 -139
  33. package/LineChart/seriesConfig/seriesProcessor.mjs +2 -138
  34. package/LineChart/seriesConfig/tooltip.js +4 -25
  35. package/LineChart/seriesConfig/tooltip.mjs +4 -25
  36. package/PieChart/PieChart.js +6 -6
  37. package/PieChart/PieChart.mjs +6 -6
  38. package/RadarChart/RadarAxis/useRadarAxis.js +1 -1
  39. package/RadarChart/RadarAxis/useRadarAxis.mjs +1 -1
  40. package/RadarChart/RadarChart.js +8 -8
  41. package/RadarChart/RadarChart.mjs +8 -8
  42. package/RadarChart/RadarSeriesPlot/RadarSeriesArea.js +3 -1
  43. package/RadarChart/RadarSeriesPlot/RadarSeriesArea.mjs +3 -1
  44. package/RadarChart/RadarSeriesPlot/RadarSeriesMarks.js +1 -0
  45. package/RadarChart/RadarSeriesPlot/RadarSeriesMarks.mjs +1 -0
  46. package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.js +1 -0
  47. package/RadarChart/RadarSeriesPlot/RadarSeriesPlot.mjs +1 -0
  48. package/ScatterChart/ScatterChart.js +11 -11
  49. package/ScatterChart/ScatterChart.mjs +11 -11
  50. package/ScatterChart/seriesConfig/tooltip.js +2 -24
  51. package/ScatterChart/seriesConfig/tooltip.mjs +2 -24
  52. package/SparkLineChart/SparkLineChart.js +27 -27
  53. package/SparkLineChart/SparkLineChart.mjs +27 -27
  54. package/index.js +1 -1
  55. package/index.mjs +1 -1
  56. package/internals/components/ChartsAccessibilityProxy/ChartsAccessibilityProxy.js +1 -1
  57. package/internals/components/ChartsAccessibilityProxy/ChartsAccessibilityProxy.mjs +1 -1
  58. package/internals/getLineLikeTooltip.d.mts +9 -0
  59. package/internals/getLineLikeTooltip.d.ts +9 -0
  60. package/internals/getLineLikeTooltip.js +38 -0
  61. package/internals/getLineLikeTooltip.mjs +31 -0
  62. package/internals/index.d.mts +3 -0
  63. package/internals/index.d.ts +3 -0
  64. package/internals/index.js +24 -0
  65. package/internals/index.mjs +3 -0
  66. package/internals/plugins/corePlugins/useChartSeriesConfig/types/tooltipGetter.types.d.mts +4 -2
  67. package/internals/plugins/corePlugins/useChartSeriesConfig/types/tooltipGetter.types.d.ts +4 -2
  68. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.js +3 -0
  69. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.mjs +3 -0
  70. package/internals/processLineLikeSeries.d.mts +6 -0
  71. package/internals/processLineLikeSeries.d.ts +6 -0
  72. package/internals/processLineLikeSeries.js +145 -0
  73. package/internals/processLineLikeSeries.mjs +138 -0
  74. package/internals/resolveColorProcessor.d.mts +11 -0
  75. package/internals/resolveColorProcessor.d.ts +11 -0
  76. package/internals/resolveColorProcessor.js +62 -0
  77. package/internals/resolveColorProcessor.mjs +56 -0
  78. package/package.json +3 -3
@@ -1,139 +1,3 @@
1
- import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';
4
- import { warnOnce } from '@mui/x-internals/warning';
5
- import { getStackingGroups } from "../../internals/stacking/index.mjs";
6
- const defaultShapes = ['circle', 'square', 'diamond', 'cross', 'star', 'triangle', 'wye'];
7
- const lineValueFormatter = v => v == null ? '' : v.toLocaleString();
8
- function seriesProcessor(params, dataset, isItemVisible) {
9
- const {
10
- seriesOrder,
11
- series
12
- } = params;
13
- const stackingGroups = getStackingGroups(_extends({}, params, {
14
- defaultStrategy: {
15
- stackOffset: 'none'
16
- }
17
- }));
18
- const idToIndex = new Map();
19
- // Create a data set with format adapted to d3
20
- const d3Dataset = dataset ?? [];
21
- seriesOrder.forEach((id, seriesIndex) => {
22
- idToIndex.set(id, seriesIndex);
23
- const data = series[id].data;
24
- if (data !== undefined) {
25
- data.forEach((value, dataIndex) => {
26
- if (d3Dataset.length <= dataIndex) {
27
- d3Dataset.push({
28
- [id]: value
29
- });
30
- } else {
31
- d3Dataset[dataIndex][id] = value;
32
- }
33
- });
34
- } else if (series[id].valueGetter && dataset) {
35
- // When valueGetter is used without dataKey, populate d3Dataset with the series id as key
36
- dataset.forEach((entry, dataIndex) => {
37
- const value = series[id].valueGetter(entry);
38
- if (d3Dataset.length <= dataIndex) {
39
- d3Dataset.push({
40
- [id]: value
41
- });
42
- } else {
43
- d3Dataset[dataIndex][id] = value;
44
- }
45
- });
46
- } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
47
- // TODO: fix mui/no-guarded-throw
48
- // eslint-disable-next-line mui/no-guarded-throw
49
- throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: Line series with id="${id}" has no data. ` + 'The chart cannot render this series without data. ' + 'Provide a data property to the series or use the dataset prop.' : _formatErrorMessage(27, id));
50
- }
51
- if (process.env.NODE_ENV !== 'production') {
52
- if (!data && dataset) {
53
- const dataKey = series[id].dataKey;
54
- if (!dataKey && !series[id].valueGetter) {
55
- // TODO: fix mui/no-guarded-throw
56
- // eslint-disable-next-line mui/no-guarded-throw
57
- throw new Error(`MUI X Charts: Line series with id="${id}" has no data, no dataKey, and no valueGetter. ` + 'When using the dataset prop, each series must have a dataKey or valueGetter to identify which dataset values to use. ' + 'Add a dataKey or valueGetter property to the series configuration.');
58
- }
59
- if (dataKey) {
60
- dataset.forEach((entry, index) => {
61
- const value = entry[dataKey];
62
- if (value != null && typeof value !== 'number') {
63
- warnOnce(`MUI X Charts: your dataset key "${dataKey}" is used for plotting lines, but the dataset contains the non-null non-numerical element "${value}" at index ${index}.
64
- Line plots only support numeric and null values.`);
65
- }
66
- });
67
- }
68
- }
69
- }
70
- });
71
- const completedSeries = {};
72
- stackingGroups.forEach(stackingGroup => {
73
- const {
74
- ids,
75
- stackingOffset,
76
- stackingOrder
77
- } = stackingGroup;
78
- const keys = ids.map(id => {
79
- // Use dataKey if needed and available
80
- const dataKey = series[id].dataKey;
81
- return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
82
- });
83
- const stackedData = d3Stack().keys(keys).value((d, key) => d[key] ?? 0) // defaultize null value to 0
84
- .order(stackingOrder).offset(stackingOffset)(d3Dataset);
85
- const idOrder = stackedData.map(s => s.index);
86
- const fixedOrder = () => idOrder;
87
-
88
- // Compute visible stacked data
89
- const visibleStackedData = d3Stack().keys(keys).value((d, key) => {
90
- const keyIndex = keys.indexOf(key);
91
- const seriesId = ids[keyIndex];
92
- if (!isItemVisible?.({
93
- type: 'line',
94
- seriesId
95
- })) {
96
- // For hidden series, return 0 so they don't contribute to the stack
97
- return 0;
98
- }
99
- return d[key] ?? 0;
100
- }).order(fixedOrder).offset(stackingOffset)(d3Dataset);
101
- ids.forEach((id, index) => {
102
- const {
103
- dataKey,
104
- valueGetter
105
- } = series[id];
106
- let data;
107
- if (valueGetter) {
108
- data = dataset.map(d => valueGetter(d));
109
- } else if (dataKey) {
110
- data = dataset.map(d => {
111
- const value = d[dataKey];
112
- return typeof value === 'number' ? value : null;
113
- });
114
- } else {
115
- data = series[id].data;
116
- }
117
- const hidden = !isItemVisible?.({
118
- type: 'line',
119
- seriesId: id
120
- });
121
- completedSeries[id] = _extends({
122
- labelMarkType: 'line+mark'
123
- }, series[id], {
124
- shape: series[id].shape ?? defaultShapes[(idToIndex.get(id) ?? 0) % defaultShapes.length],
125
- data,
126
- valueFormatter: series[id].valueFormatter ?? lineValueFormatter,
127
- hidden,
128
- stackedData: stackedData[index],
129
- visibleStackedData: visibleStackedData[index]
130
- });
131
- });
132
- });
133
- return {
134
- seriesOrder,
135
- stackingGroups,
136
- series: completedSeries
137
- };
138
- }
1
+ import { processLineLikeSeries } from "../../internals/processLineLikeSeries.mjs";
2
+ const seriesProcessor = (params, dataset, isItemVisible) => processLineLikeSeries(params, dataset, isItemVisible, 'line');
139
3
  export default seriesProcessor;
@@ -4,31 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.axisTooltipGetter = void 0;
7
- var _getLabel = require("../../internals/getLabel");
8
- const tooltipGetter = params => {
9
- const {
10
- series,
11
- getColor,
12
- identifier
13
- } = params;
14
- if (!identifier || identifier.dataIndex === undefined) {
15
- return null;
16
- }
17
- const label = (0, _getLabel.getLabel)(series.label, 'tooltip');
18
- const value = series.data[identifier.dataIndex];
19
- const formattedValue = series.valueFormatter(value, {
20
- dataIndex: identifier.dataIndex
21
- });
22
- return {
23
- identifier,
24
- color: getColor(identifier.dataIndex),
25
- label,
26
- value,
27
- formattedValue,
28
- markType: series.labelMarkType,
29
- markShape: series.showMark ? series.shape : undefined
30
- };
31
- };
7
+ var _getLineLikeTooltip = require("../../internals/getLineLikeTooltip");
8
+ const tooltipGetter = params => (0, _getLineLikeTooltip.getLineLikeTooltip)(params, {
9
+ includeMarkShape: true
10
+ });
32
11
  const axisTooltipGetter = series => {
33
12
  return Object.values(series).map(s => ({
34
13
  direction: 'x',
@@ -1,28 +1,7 @@
1
- import { getLabel } from "../../internals/getLabel.mjs";
2
- const tooltipGetter = params => {
3
- const {
4
- series,
5
- getColor,
6
- identifier
7
- } = params;
8
- if (!identifier || identifier.dataIndex === undefined) {
9
- return null;
10
- }
11
- const label = getLabel(series.label, 'tooltip');
12
- const value = series.data[identifier.dataIndex];
13
- const formattedValue = series.valueFormatter(value, {
14
- dataIndex: identifier.dataIndex
15
- });
16
- return {
17
- identifier,
18
- color: getColor(identifier.dataIndex),
19
- label,
20
- value,
21
- formattedValue,
22
- markType: series.labelMarkType,
23
- markShape: series.showMark ? series.shape : undefined
24
- };
25
- };
1
+ import { getLineLikeTooltip } from "../../internals/getLineLikeTooltip.mjs";
2
+ const tooltipGetter = params => getLineLikeTooltip(params, {
3
+ includeMarkShape: true
4
+ });
26
5
  export const axisTooltipGetter = series => {
27
6
  return Object.values(series).map(s => ({
28
7
  direction: 'x',
@@ -184,11 +184,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
184
184
  */
185
185
  highlightedItem: _propTypes.default.oneOfType([_propTypes.default.shape({
186
186
  dataIndex: _propTypes.default.number,
187
- seriesId: _propTypes.default.string.isRequired,
188
- type: _propTypes.default.oneOf(['pie']).isRequired
187
+ seriesId: _propTypes.default.string.isRequired
189
188
  }), _propTypes.default.shape({
190
189
  dataIndex: _propTypes.default.number,
191
- seriesId: _propTypes.default.string.isRequired
190
+ seriesId: _propTypes.default.string.isRequired,
191
+ type: _propTypes.default.oneOf(['pie']).isRequired
192
192
  })]),
193
193
  /**
194
194
  * This prop is used to help implement the accessibility logic.
@@ -305,11 +305,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
305
305
  */
306
306
  tooltipItem: _propTypes.default.oneOfType([_propTypes.default.shape({
307
307
  dataIndex: _propTypes.default.number.isRequired,
308
- seriesId: _propTypes.default.string.isRequired,
309
- type: _propTypes.default.oneOf(['pie']).isRequired
308
+ seriesId: _propTypes.default.string.isRequired
310
309
  }), _propTypes.default.shape({
311
310
  dataIndex: _propTypes.default.number.isRequired,
312
- seriesId: _propTypes.default.string.isRequired
311
+ seriesId: _propTypes.default.string.isRequired,
312
+ type: _propTypes.default.oneOf(['pie']).isRequired
313
313
  })]),
314
314
  /**
315
315
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -177,11 +177,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
177
177
  */
178
178
  highlightedItem: PropTypes.oneOfType([PropTypes.shape({
179
179
  dataIndex: PropTypes.number,
180
- seriesId: PropTypes.string.isRequired,
181
- type: PropTypes.oneOf(['pie']).isRequired
180
+ seriesId: PropTypes.string.isRequired
182
181
  }), PropTypes.shape({
183
182
  dataIndex: PropTypes.number,
184
- seriesId: PropTypes.string.isRequired
183
+ seriesId: PropTypes.string.isRequired,
184
+ type: PropTypes.oneOf(['pie']).isRequired
185
185
  })]),
186
186
  /**
187
187
  * This prop is used to help implement the accessibility logic.
@@ -298,11 +298,11 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
298
298
  */
299
299
  tooltipItem: PropTypes.oneOfType([PropTypes.shape({
300
300
  dataIndex: PropTypes.number.isRequired,
301
- seriesId: PropTypes.string.isRequired,
302
- type: PropTypes.oneOf(['pie']).isRequired
301
+ seriesId: PropTypes.string.isRequired
303
302
  }), PropTypes.shape({
304
303
  dataIndex: PropTypes.number.isRequired,
305
- seriesId: PropTypes.string.isRequired
304
+ seriesId: PropTypes.string.isRequired,
305
+ type: PropTypes.oneOf(['pie']).isRequired
306
306
  })]),
307
307
  /**
308
308
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -38,7 +38,7 @@ function useRadarAxis(params) {
38
38
  return null;
39
39
  }
40
40
  const existingMetrics = rotationScale.domain();
41
- if (!existingMetrics.includes(metric)) {
41
+ if (process.env.NODE_ENV !== 'production' && !existingMetrics.includes(metric)) {
42
42
  (0, _warning.warnOnce)([`MUI X Charts: Your radar axis tries to display values for the metric "${metric}" which does not exist.`, `Either add this metric to your radar, or pick one from the existing metrics: ${existingMetrics.join(', ')}`]);
43
43
  }
44
44
  const anglesWithDefault = angle !== undefined ? (0, _degToRad.degToRad)(angle) : rotationScale(metric) ?? 0;
@@ -32,7 +32,7 @@ export function useRadarAxis(params) {
32
32
  return null;
33
33
  }
34
34
  const existingMetrics = rotationScale.domain();
35
- if (!existingMetrics.includes(metric)) {
35
+ if (process.env.NODE_ENV !== 'production' && !existingMetrics.includes(metric)) {
36
36
  warnOnce([`MUI X Charts: Your radar axis tries to display values for the metric "${metric}" which does not exist.`, `Either add this metric to your radar, or pick one from the existing metrics: ${existingMetrics.join(', ')}`]);
37
37
  }
38
38
  const anglesWithDefault = angle !== undefined ? degToRad(angle) : rotationScale(metric) ?? 0;
@@ -151,11 +151,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
151
151
  */
152
152
  highlightedItem: _propTypes.default.oneOfType([_propTypes.default.shape({
153
153
  dataIndex: _propTypes.default.number,
154
- seriesId: _propTypes.default.string.isRequired,
155
- type: _propTypes.default.oneOf(['radar']).isRequired
154
+ seriesId: _propTypes.default.string.isRequired
156
155
  }), _propTypes.default.shape({
157
156
  dataIndex: _propTypes.default.number,
158
- seriesId: _propTypes.default.string.isRequired
157
+ seriesId: _propTypes.default.string.isRequired,
158
+ type: _propTypes.default.oneOf(['radar']).isRequired
159
159
  })]),
160
160
  /**
161
161
  * This prop is used to help implement the accessibility logic.
@@ -256,11 +256,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
256
256
  labelFormatter: _propTypes.default.func,
257
257
  labelGap: _propTypes.default.number,
258
258
  max: _propTypes.default.number,
259
- metrics: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.arrayOf(_propTypes.default.shape({
259
+ metrics: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
260
260
  max: _propTypes.default.number,
261
261
  min: _propTypes.default.number,
262
262
  name: _propTypes.default.string.isRequired
263
- }))]).isRequired,
263
+ })), _propTypes.default.arrayOf(_propTypes.default.string)]).isRequired,
264
264
  startAngle: _propTypes.default.number
265
265
  }).isRequired,
266
266
  /**
@@ -313,11 +313,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
313
313
  */
314
314
  tooltipItem: _propTypes.default.oneOfType([_propTypes.default.shape({
315
315
  dataIndex: _propTypes.default.number,
316
- seriesId: _propTypes.default.string.isRequired,
317
- type: _propTypes.default.oneOf(['radar']).isRequired
316
+ seriesId: _propTypes.default.string.isRequired
318
317
  }), _propTypes.default.shape({
319
318
  dataIndex: _propTypes.default.number,
320
- seriesId: _propTypes.default.string.isRequired
319
+ seriesId: _propTypes.default.string.isRequired,
320
+ type: _propTypes.default.oneOf(['radar']).isRequired
321
321
  })]),
322
322
  /**
323
323
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -144,11 +144,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
144
144
  */
145
145
  highlightedItem: PropTypes.oneOfType([PropTypes.shape({
146
146
  dataIndex: PropTypes.number,
147
- seriesId: PropTypes.string.isRequired,
148
- type: PropTypes.oneOf(['radar']).isRequired
147
+ seriesId: PropTypes.string.isRequired
149
148
  }), PropTypes.shape({
150
149
  dataIndex: PropTypes.number,
151
- seriesId: PropTypes.string.isRequired
150
+ seriesId: PropTypes.string.isRequired,
151
+ type: PropTypes.oneOf(['radar']).isRequired
152
152
  })]),
153
153
  /**
154
154
  * This prop is used to help implement the accessibility logic.
@@ -249,11 +249,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
249
249
  labelFormatter: PropTypes.func,
250
250
  labelGap: PropTypes.number,
251
251
  max: PropTypes.number,
252
- metrics: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.arrayOf(PropTypes.shape({
252
+ metrics: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({
253
253
  max: PropTypes.number,
254
254
  min: PropTypes.number,
255
255
  name: PropTypes.string.isRequired
256
- }))]).isRequired,
256
+ })), PropTypes.arrayOf(PropTypes.string)]).isRequired,
257
257
  startAngle: PropTypes.number
258
258
  }).isRequired,
259
259
  /**
@@ -306,11 +306,11 @@ process.env.NODE_ENV !== "production" ? RadarChart.propTypes = {
306
306
  */
307
307
  tooltipItem: PropTypes.oneOfType([PropTypes.shape({
308
308
  dataIndex: PropTypes.number,
309
- seriesId: PropTypes.string.isRequired,
310
- type: PropTypes.oneOf(['radar']).isRequired
309
+ seriesId: PropTypes.string.isRequired
311
310
  }), PropTypes.shape({
312
311
  dataIndex: PropTypes.number,
313
- seriesId: PropTypes.string.isRequired
312
+ seriesId: PropTypes.string.isRequired,
313
+ type: PropTypes.oneOf(['radar']).isRequired
314
314
  })]),
315
315
  /**
316
316
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -69,7 +69,9 @@ function RadarSeriesArea(props) {
69
69
  if (hidden) {
70
70
  return null;
71
71
  }
72
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("path", (0, _extends2.default)({}, getPathProps({
72
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("path", (0, _extends2.default)({
73
+ "data-series": id
74
+ }, getPathProps({
73
75
  seriesId: id,
74
76
  points,
75
77
  color,
@@ -60,7 +60,9 @@ function RadarSeriesArea(props) {
60
60
  if (hidden) {
61
61
  return null;
62
62
  }
63
- return /*#__PURE__*/_jsx("path", _extends({}, getPathProps({
63
+ return /*#__PURE__*/_jsx("path", _extends({
64
+ "data-series": id
65
+ }, getPathProps({
64
66
  seriesId: id,
65
67
  points,
66
68
  color,
@@ -64,6 +64,7 @@ function RadarSeriesMarks(props) {
64
64
  return null;
65
65
  }
66
66
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
67
+ "data-series": id,
67
68
  children: points.map((point, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)("circle", (0, _extends2.default)({}, getCircleProps({
68
69
  seriesId: id,
69
70
  point,
@@ -55,6 +55,7 @@ function RadarSeriesMarks(props) {
55
55
  return null;
56
56
  }
57
57
  return /*#__PURE__*/_jsx("g", {
58
+ "data-series": id,
58
59
  children: points.map((point, index) => /*#__PURE__*/_jsx("circle", _extends({}, getCircleProps({
59
60
  seriesId: id,
60
61
  point,
@@ -43,6 +43,7 @@ function RadarSeriesPlot(props) {
43
43
  return null;
44
44
  }
45
45
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
46
+ "data-series": seriesId,
46
47
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("path", (0, _extends2.default)({}, (0, _RadarSeriesArea.getPathProps)({
47
48
  seriesId,
48
49
  points,
@@ -36,6 +36,7 @@ function RadarSeriesPlot(props) {
36
36
  return null;
37
37
  }
38
38
  return /*#__PURE__*/_jsxs("g", {
39
+ "data-series": seriesId,
39
40
  children: [/*#__PURE__*/_jsx("path", _extends({}, getPathProps({
40
41
  seriesId,
41
42
  points,
@@ -199,11 +199,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
199
199
  */
200
200
  highlightedItem: _propTypes.default.oneOfType([_propTypes.default.shape({
201
201
  dataIndex: _propTypes.default.number,
202
- seriesId: _propTypes.default.string.isRequired,
203
- type: _propTypes.default.oneOf(['scatter']).isRequired
202
+ seriesId: _propTypes.default.string.isRequired
204
203
  }), _propTypes.default.shape({
205
204
  dataIndex: _propTypes.default.number,
206
- seriesId: _propTypes.default.string.isRequired
205
+ seriesId: _propTypes.default.string.isRequired,
206
+ type: _propTypes.default.oneOf(['scatter']).isRequired
207
207
  })]),
208
208
  /**
209
209
  * Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
@@ -360,11 +360,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
360
360
  */
361
361
  tooltipItem: _propTypes.default.oneOfType([_propTypes.default.shape({
362
362
  dataIndex: _propTypes.default.number.isRequired,
363
- seriesId: _propTypes.default.string.isRequired,
364
- type: _propTypes.default.oneOf(['scatter']).isRequired
363
+ seriesId: _propTypes.default.string.isRequired
365
364
  }), _propTypes.default.shape({
366
365
  dataIndex: _propTypes.default.number.isRequired,
367
- seriesId: _propTypes.default.string.isRequired
366
+ seriesId: _propTypes.default.string.isRequired,
367
+ type: _propTypes.default.oneOf(['scatter']).isRequired
368
368
  })]),
369
369
  /**
370
370
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -387,11 +387,6 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
387
387
  */
388
388
  zAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
389
389
  colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
390
- colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
391
- type: _propTypes.default.oneOf(['ordinal']).isRequired,
392
- unknownColor: _propTypes.default.string,
393
- values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
394
- }), _propTypes.default.shape({
395
390
  color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
396
391
  max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
397
392
  min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
@@ -400,6 +395,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
400
395
  colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
401
396
  thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
402
397
  type: _propTypes.default.oneOf(['piecewise']).isRequired
398
+ }), _propTypes.default.shape({
399
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
400
+ type: _propTypes.default.oneOf(['ordinal']).isRequired,
401
+ unknownColor: _propTypes.default.string,
402
+ values: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number, _propTypes.default.string]).isRequired)
403
403
  })]),
404
404
  data: _propTypes.default.array,
405
405
  dataKey: _propTypes.default.string,
@@ -192,11 +192,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
192
192
  */
193
193
  highlightedItem: PropTypes.oneOfType([PropTypes.shape({
194
194
  dataIndex: PropTypes.number,
195
- seriesId: PropTypes.string.isRequired,
196
- type: PropTypes.oneOf(['scatter']).isRequired
195
+ seriesId: PropTypes.string.isRequired
197
196
  }), PropTypes.shape({
198
197
  dataIndex: PropTypes.number,
199
- seriesId: PropTypes.string.isRequired
198
+ seriesId: PropTypes.string.isRequired,
199
+ type: PropTypes.oneOf(['scatter']).isRequired
200
200
  })]),
201
201
  /**
202
202
  * Defines the maximum distance between a scatter point and the pointer that triggers the interaction.
@@ -353,11 +353,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
353
353
  */
354
354
  tooltipItem: PropTypes.oneOfType([PropTypes.shape({
355
355
  dataIndex: PropTypes.number.isRequired,
356
- seriesId: PropTypes.string.isRequired,
357
- type: PropTypes.oneOf(['scatter']).isRequired
356
+ seriesId: PropTypes.string.isRequired
358
357
  }), PropTypes.shape({
359
358
  dataIndex: PropTypes.number.isRequired,
360
- seriesId: PropTypes.string.isRequired
359
+ seriesId: PropTypes.string.isRequired,
360
+ type: PropTypes.oneOf(['scatter']).isRequired
361
361
  })]),
362
362
  /**
363
363
  * The width of the chart in px. If not defined, it takes the width of the parent element.
@@ -380,11 +380,6 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
380
380
  */
381
381
  zAxis: PropTypes.arrayOf(PropTypes.shape({
382
382
  colorMap: PropTypes.oneOfType([PropTypes.shape({
383
- colors: PropTypes.arrayOf(PropTypes.string).isRequired,
384
- type: PropTypes.oneOf(['ordinal']).isRequired,
385
- unknownColor: PropTypes.string,
386
- values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
387
- }), PropTypes.shape({
388
383
  color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
389
384
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
390
385
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
@@ -393,6 +388,11 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
393
388
  colors: PropTypes.arrayOf(PropTypes.string).isRequired,
394
389
  thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
395
390
  type: PropTypes.oneOf(['piecewise']).isRequired
391
+ }), PropTypes.shape({
392
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
393
+ type: PropTypes.oneOf(['ordinal']).isRequired,
394
+ unknownColor: PropTypes.string,
395
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
396
396
  })]),
397
397
  data: PropTypes.array,
398
398
  dataKey: PropTypes.string,
@@ -4,28 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _getLabel = require("../../internals/getLabel");
8
- const tooltipGetter = params => {
9
- const {
10
- series,
11
- getColor,
12
- identifier
13
- } = params;
14
- if (!identifier || identifier.dataIndex === undefined) {
15
- return null;
16
- }
17
- const label = (0, _getLabel.getLabel)(series.label, 'tooltip');
18
- const value = series.data[identifier.dataIndex];
19
- const formattedValue = series.valueFormatter(value, {
20
- dataIndex: identifier.dataIndex
21
- });
22
- return {
23
- identifier,
24
- color: getColor(identifier.dataIndex),
25
- label,
26
- value,
27
- formattedValue,
28
- markType: series.labelMarkType
29
- };
30
- };
7
+ var _getLineLikeTooltip = require("../../internals/getLineLikeTooltip");
8
+ const tooltipGetter = params => (0, _getLineLikeTooltip.getLineLikeTooltip)(params);
31
9
  var _default = exports.default = tooltipGetter;
@@ -1,25 +1,3 @@
1
- import { getLabel } from "../../internals/getLabel.mjs";
2
- const tooltipGetter = params => {
3
- const {
4
- series,
5
- getColor,
6
- identifier
7
- } = params;
8
- if (!identifier || identifier.dataIndex === undefined) {
9
- return null;
10
- }
11
- const label = getLabel(series.label, 'tooltip');
12
- const value = series.data[identifier.dataIndex];
13
- const formattedValue = series.valueFormatter(value, {
14
- dataIndex: identifier.dataIndex
15
- });
16
- return {
17
- identifier,
18
- color: getColor(identifier.dataIndex),
19
- label,
20
- value,
21
- formattedValue,
22
- markType: series.labelMarkType
23
- };
24
- };
1
+ import { getLineLikeTooltip } from "../../internals/getLineLikeTooltip.mjs";
2
+ const tooltipGetter = params => getLineLikeTooltip(params);
25
3
  export default tooltipGetter;