@mui/x-charts 6.0.0-alpha.15 → 6.0.0-alpha.16
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.
- package/BarChart/BarChart.d.ts +13 -2
- package/BarChart/BarChart.js +45 -3
- package/BarChart/BarElement.d.ts +1318 -3
- package/BarChart/BarElement.js +10 -8
- package/BarChart/BarPlot.d.ts +17 -1
- package/BarChart/BarPlot.js +152 -66
- package/CHANGELOG.md +65 -0
- package/ChartContainer/index.js +5 -2
- package/ChartsAxis/ChartsAxis.js +18 -2
- package/ChartsAxis/axisClasses.d.ts +1 -1
- package/ChartsAxisHighlight/ChartsAxisHighlight.js +2 -2
- package/ChartsClipPath/ChartsClipPath.js +2 -2
- package/ChartsLegend/ChartsLegend.d.ts +2 -1
- package/ChartsLegend/ChartsLegend.js +12 -8
- package/ChartsSurface.js +2 -2
- package/ChartsTooltip/ChartsAxisTooltipContent.js +2 -2
- package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
- package/ChartsTooltip/ChartsTooltip.js +2 -2
- package/ChartsTooltip/utils.js +2 -2
- package/ChartsXAxis/ChartsXAxis.js +123 -35
- package/ChartsYAxis/ChartsYAxis.js +38 -16
- package/LineChart/AreaElement.d.ts +10 -0
- package/LineChart/AreaElement.js +12 -2
- package/LineChart/AreaPlot.d.ts +11 -0
- package/LineChart/AreaPlot.js +13 -2
- package/LineChart/LineChart.d.ts +10 -0
- package/LineChart/LineChart.js +36 -2
- package/LineChart/LineElement.d.ts +10 -0
- package/LineChart/LineElement.js +12 -2
- package/LineChart/LineHighlightElement.d.ts +10 -0
- package/LineChart/LineHighlightElement.js +12 -2
- package/LineChart/LineHighlightPlot.d.ts +10 -0
- package/LineChart/LineHighlightPlot.js +12 -2
- package/LineChart/LinePlot.d.ts +10 -0
- package/LineChart/LinePlot.js +12 -2
- package/LineChart/MarkElement.d.ts +10 -0
- package/LineChart/MarkElement.js +12 -2
- package/LineChart/MarkPlot.d.ts +10 -0
- package/LineChart/MarkPlot.js +12 -2
- package/PieChart/PieArc.js +2 -2
- package/PieChart/PieArcLabel.js +2 -2
- package/PieChart/PieChart.d.ts +10 -0
- package/PieChart/PieChart.js +37 -2
- package/PieChart/PiePlot.d.ts +10 -0
- package/PieChart/PiePlot.js +12 -2
- package/ResponsiveChartContainer/index.js +4 -4
- package/ScatterChart/Scatter.d.ts +10 -0
- package/ScatterChart/Scatter.js +12 -2
- package/ScatterChart/ScatterChart.d.ts +10 -0
- package/ScatterChart/ScatterChart.js +36 -2
- package/ScatterChart/ScatterPlot.d.ts +10 -0
- package/ScatterChart/ScatterPlot.js +12 -2
- package/SparkLineChart/SparkLineChart.d.ts +9 -0
- package/SparkLineChart/SparkLineChart.js +16 -2
- package/context/CartesianContextProvider.js +10 -2
- package/context/DrawingProvider.js +2 -2
- package/context/HighlightProvider.js +2 -2
- package/context/InteractionProvider.js +2 -2
- package/context/SeriesContextProvider.js +2 -2
- package/esm/BarChart/BarChart.js +43 -1
- package/esm/BarChart/BarElement.js +7 -4
- package/esm/BarChart/BarPlot.js +152 -67
- package/esm/ChartContainer/index.js +3 -0
- package/esm/ChartsAxis/ChartsAxis.js +16 -0
- package/esm/ChartsLegend/ChartsLegend.js +10 -6
- package/esm/ChartsXAxis/ChartsXAxis.js +122 -34
- package/esm/ChartsYAxis/ChartsYAxis.js +36 -14
- package/esm/LineChart/AreaElement.js +10 -0
- package/esm/LineChart/AreaPlot.js +11 -0
- package/esm/LineChart/LineChart.js +34 -0
- package/esm/LineChart/LineElement.js +10 -0
- package/esm/LineChart/LineHighlightElement.js +10 -0
- package/esm/LineChart/LineHighlightPlot.js +10 -0
- package/esm/LineChart/LinePlot.js +10 -0
- package/esm/LineChart/MarkElement.js +10 -0
- package/esm/LineChart/MarkPlot.js +10 -0
- package/esm/PieChart/PieChart.js +35 -0
- package/esm/PieChart/PiePlot.js +10 -0
- package/esm/ResponsiveChartContainer/index.js +2 -2
- package/esm/ScatterChart/Scatter.js +10 -0
- package/esm/ScatterChart/ScatterChart.js +34 -0
- package/esm/ScatterChart/ScatterPlot.js +10 -0
- package/esm/SparkLineChart/SparkLineChart.js +14 -0
- package/esm/context/CartesianContextProvider.js +8 -0
- package/esm/hooks/useMounted.js +16 -0
- package/esm/hooks/useReducedMotion.js +27 -0
- package/esm/hooks/useTicks.js +12 -6
- package/esm/internals/components/ChartsText.js +17 -13
- package/esm/internals/geometry.js +36 -0
- package/hooks/useAxisEvents.js +2 -2
- package/hooks/useChartDimensions.js +2 -2
- package/hooks/useDrawingArea.js +2 -2
- package/hooks/useInteractionItemProps.js +2 -2
- package/hooks/useMounted.d.ts +1 -0
- package/hooks/useMounted.js +25 -0
- package/hooks/useReducedMotion.d.ts +8 -0
- package/hooks/useReducedMotion.js +33 -0
- package/hooks/useScale.d.ts +2 -2
- package/hooks/useScale.js +2 -2
- package/hooks/useTicks.d.ts +18 -9
- package/hooks/useTicks.js +14 -8
- package/index.js +1 -1
- package/internals/components/ChartsText.d.ts +11 -8
- package/internals/components/ChartsText.js +19 -15
- package/internals/defaultizeColor.d.ts +1 -1
- package/internals/domUtils.d.ts +0 -1
- package/internals/geometry.d.ts +9 -0
- package/internals/geometry.js +42 -0
- package/legacy/BarChart/BarChart.js +43 -1
- package/legacy/BarChart/BarElement.js +6 -3
- package/legacy/BarChart/BarPlot.js +151 -63
- package/legacy/ChartContainer/index.js +3 -0
- package/legacy/ChartsAxis/ChartsAxis.js +16 -0
- package/legacy/ChartsLegend/ChartsLegend.js +14 -7
- package/legacy/ChartsXAxis/ChartsXAxis.js +126 -36
- package/legacy/ChartsYAxis/ChartsYAxis.js +36 -14
- package/legacy/LineChart/AreaElement.js +10 -0
- package/legacy/LineChart/AreaPlot.js +11 -0
- package/legacy/LineChart/LineChart.js +34 -0
- package/legacy/LineChart/LineElement.js +10 -0
- package/legacy/LineChart/LineHighlightElement.js +10 -0
- package/legacy/LineChart/LineHighlightPlot.js +10 -0
- package/legacy/LineChart/LinePlot.js +10 -0
- package/legacy/LineChart/MarkElement.js +10 -0
- package/legacy/LineChart/MarkPlot.js +10 -0
- package/legacy/PieChart/PieChart.js +35 -0
- package/legacy/PieChart/PiePlot.js +10 -0
- package/legacy/ResponsiveChartContainer/index.js +2 -2
- package/legacy/ScatterChart/Scatter.js +10 -0
- package/legacy/ScatterChart/ScatterChart.js +34 -0
- package/legacy/ScatterChart/ScatterPlot.js +10 -0
- package/legacy/SparkLineChart/SparkLineChart.js +14 -0
- package/legacy/context/CartesianContextProvider.js +8 -0
- package/legacy/hooks/useMounted.js +21 -0
- package/legacy/hooks/useReducedMotion.js +27 -0
- package/legacy/hooks/useTicks.js +13 -6
- package/legacy/index.js +1 -1
- package/legacy/internals/components/ChartsText.js +15 -15
- package/legacy/internals/geometry.js +37 -0
- package/models/axis.d.ts +19 -2
- package/models/seriesType/line.d.ts +2 -2
- package/modern/BarChart/BarChart.js +43 -1
- package/modern/BarChart/BarElement.js +7 -4
- package/modern/BarChart/BarPlot.js +149 -65
- package/modern/ChartContainer/index.js +3 -0
- package/modern/ChartsAxis/ChartsAxis.js +16 -0
- package/modern/ChartsLegend/ChartsLegend.js +10 -6
- package/modern/ChartsXAxis/ChartsXAxis.js +122 -34
- package/modern/ChartsYAxis/ChartsYAxis.js +36 -14
- package/modern/LineChart/AreaElement.js +10 -0
- package/modern/LineChart/AreaPlot.js +11 -0
- package/modern/LineChart/LineChart.js +34 -0
- package/modern/LineChart/LineElement.js +10 -0
- package/modern/LineChart/LineHighlightElement.js +10 -0
- package/modern/LineChart/LineHighlightPlot.js +10 -0
- package/modern/LineChart/LinePlot.js +10 -0
- package/modern/LineChart/MarkElement.js +10 -0
- package/modern/LineChart/MarkPlot.js +10 -0
- package/modern/PieChart/PieChart.js +35 -0
- package/modern/PieChart/PiePlot.js +10 -0
- package/modern/ResponsiveChartContainer/index.js +2 -2
- package/modern/ScatterChart/Scatter.js +10 -0
- package/modern/ScatterChart/ScatterChart.js +34 -0
- package/modern/ScatterChart/ScatterPlot.js +10 -0
- package/modern/SparkLineChart/SparkLineChart.js +14 -0
- package/modern/context/CartesianContextProvider.js +8 -0
- package/modern/hooks/useMounted.js +16 -0
- package/modern/hooks/useReducedMotion.js +27 -0
- package/modern/hooks/useTicks.js +12 -6
- package/modern/index.js +1 -1
- package/modern/internals/components/ChartsText.js +17 -13
- package/modern/internals/geometry.js +36 -0
- package/package.json +5 -3
package/esm/BarChart/BarChart.js
CHANGED
|
@@ -12,6 +12,17 @@ import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
|
|
|
12
12
|
import { ChartsClipPath } from '../ChartsClipPath';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
/**
|
|
16
|
+
* Demos:
|
|
17
|
+
*
|
|
18
|
+
* - [Bars](https://mui.com/x/react-charts/bars/)
|
|
19
|
+
* - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
|
|
20
|
+
* - [Stacking](https://mui.com/x/react-charts/stacking/)
|
|
21
|
+
*
|
|
22
|
+
* API:
|
|
23
|
+
*
|
|
24
|
+
* - [BarChart API](https://mui.com/x/api/charts/bar-chart/)
|
|
25
|
+
*/
|
|
15
26
|
const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
16
27
|
const {
|
|
17
28
|
xAxis,
|
|
@@ -31,6 +42,7 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
|
31
42
|
leftAxis,
|
|
32
43
|
rightAxis,
|
|
33
44
|
bottomAxis,
|
|
45
|
+
skipAnimation,
|
|
34
46
|
children,
|
|
35
47
|
slots,
|
|
36
48
|
slotProps
|
|
@@ -76,7 +88,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
|
76
88
|
clipPath: `url(#${clipPathId})`,
|
|
77
89
|
children: /*#__PURE__*/_jsx(BarPlot, {
|
|
78
90
|
slots: slots,
|
|
79
|
-
slotProps: slotProps
|
|
91
|
+
slotProps: slotProps,
|
|
92
|
+
skipAnimation: skipAnimation
|
|
80
93
|
})
|
|
81
94
|
}), /*#__PURE__*/_jsx(ChartsAxis, {
|
|
82
95
|
topAxis: topAxis,
|
|
@@ -118,11 +131,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
118
131
|
fill: PropTypes.string,
|
|
119
132
|
label: PropTypes.string,
|
|
120
133
|
labelFontSize: PropTypes.number,
|
|
134
|
+
labelStyle: PropTypes.object,
|
|
121
135
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
122
136
|
slotProps: PropTypes.object,
|
|
123
137
|
slots: PropTypes.object,
|
|
124
138
|
stroke: PropTypes.string,
|
|
125
139
|
tickFontSize: PropTypes.number,
|
|
140
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
141
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
142
|
+
tickLabelStyle: PropTypes.object,
|
|
126
143
|
tickMaxStep: PropTypes.number,
|
|
127
144
|
tickMinStep: PropTypes.number,
|
|
128
145
|
tickNumber: PropTypes.number,
|
|
@@ -152,11 +169,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
152
169
|
fill: PropTypes.string,
|
|
153
170
|
label: PropTypes.string,
|
|
154
171
|
labelFontSize: PropTypes.number,
|
|
172
|
+
labelStyle: PropTypes.object,
|
|
155
173
|
position: PropTypes.oneOf(['left', 'right']),
|
|
156
174
|
slotProps: PropTypes.object,
|
|
157
175
|
slots: PropTypes.object,
|
|
158
176
|
stroke: PropTypes.string,
|
|
159
177
|
tickFontSize: PropTypes.number,
|
|
178
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
179
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
180
|
+
tickLabelStyle: PropTypes.object,
|
|
160
181
|
tickMaxStep: PropTypes.number,
|
|
161
182
|
tickMinStep: PropTypes.number,
|
|
162
183
|
tickNumber: PropTypes.number,
|
|
@@ -195,11 +216,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
195
216
|
fill: PropTypes.string,
|
|
196
217
|
label: PropTypes.string,
|
|
197
218
|
labelFontSize: PropTypes.number,
|
|
219
|
+
labelStyle: PropTypes.object,
|
|
198
220
|
position: PropTypes.oneOf(['left', 'right']),
|
|
199
221
|
slotProps: PropTypes.object,
|
|
200
222
|
slots: PropTypes.object,
|
|
201
223
|
stroke: PropTypes.string,
|
|
202
224
|
tickFontSize: PropTypes.number,
|
|
225
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
226
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
227
|
+
tickLabelStyle: PropTypes.object,
|
|
203
228
|
tickMaxStep: PropTypes.number,
|
|
204
229
|
tickMinStep: PropTypes.number,
|
|
205
230
|
tickNumber: PropTypes.number,
|
|
@@ -224,6 +249,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
224
249
|
xAxisKey: PropTypes.string,
|
|
225
250
|
yAxisKey: PropTypes.string
|
|
226
251
|
})).isRequired,
|
|
252
|
+
/**
|
|
253
|
+
* If `true`, animations are skiped.
|
|
254
|
+
* @default false
|
|
255
|
+
*/
|
|
256
|
+
skipAnimation: PropTypes.bool,
|
|
227
257
|
/**
|
|
228
258
|
* The props used for each component slot.
|
|
229
259
|
* @default {}
|
|
@@ -257,11 +287,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
257
287
|
fill: PropTypes.string,
|
|
258
288
|
label: PropTypes.string,
|
|
259
289
|
labelFontSize: PropTypes.number,
|
|
290
|
+
labelStyle: PropTypes.object,
|
|
260
291
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
261
292
|
slotProps: PropTypes.object,
|
|
262
293
|
slots: PropTypes.object,
|
|
263
294
|
stroke: PropTypes.string,
|
|
264
295
|
tickFontSize: PropTypes.number,
|
|
296
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
297
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
298
|
+
tickLabelStyle: PropTypes.object,
|
|
265
299
|
tickMaxStep: PropTypes.number,
|
|
266
300
|
tickMinStep: PropTypes.number,
|
|
267
301
|
tickNumber: PropTypes.number,
|
|
@@ -286,6 +320,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
286
320
|
id: PropTypes.string,
|
|
287
321
|
label: PropTypes.string,
|
|
288
322
|
labelFontSize: PropTypes.number,
|
|
323
|
+
labelStyle: PropTypes.object,
|
|
289
324
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
290
325
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
291
326
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -294,6 +329,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
294
329
|
slots: PropTypes.object,
|
|
295
330
|
stroke: PropTypes.string,
|
|
296
331
|
tickFontSize: PropTypes.number,
|
|
332
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
333
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
334
|
+
tickLabelStyle: PropTypes.object,
|
|
297
335
|
tickMaxStep: PropTypes.number,
|
|
298
336
|
tickMinStep: PropTypes.number,
|
|
299
337
|
tickNumber: PropTypes.number,
|
|
@@ -312,6 +350,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
312
350
|
id: PropTypes.string,
|
|
313
351
|
label: PropTypes.string,
|
|
314
352
|
labelFontSize: PropTypes.number,
|
|
353
|
+
labelStyle: PropTypes.object,
|
|
315
354
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
316
355
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
317
356
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -320,6 +359,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
320
359
|
slots: PropTypes.object,
|
|
321
360
|
stroke: PropTypes.string,
|
|
322
361
|
tickFontSize: PropTypes.number,
|
|
362
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
363
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
364
|
+
tickLabelStyle: PropTypes.object,
|
|
323
365
|
tickMaxStep: PropTypes.number,
|
|
324
366
|
tickMinStep: PropTypes.number,
|
|
325
367
|
tickNumber: PropTypes.number,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps"];
|
|
3
|
+
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps", "style"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import { useSlotProps } from '@mui/base/utils';
|
|
@@ -8,13 +8,14 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
|
8
8
|
import { styled } from '@mui/material/styles';
|
|
9
9
|
import { color as d3Color } from 'd3-color';
|
|
10
10
|
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
11
|
+
import { animated } from '@react-spring/web';
|
|
11
12
|
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
12
13
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
13
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
15
|
export function getBarElementUtilityClass(slot) {
|
|
15
16
|
return generateUtilityClass('MuiBarElement', slot);
|
|
16
17
|
}
|
|
17
|
-
export const
|
|
18
|
+
export const barElementClasses = generateUtilityClasses('MuiBarElement', ['root']);
|
|
18
19
|
const useUtilityClasses = ownerState => {
|
|
19
20
|
const {
|
|
20
21
|
classes,
|
|
@@ -25,7 +26,7 @@ const useUtilityClasses = ownerState => {
|
|
|
25
26
|
};
|
|
26
27
|
return composeClasses(slots, getBarElementUtilityClass, classes);
|
|
27
28
|
};
|
|
28
|
-
export const BarElementPath = styled(
|
|
29
|
+
export const BarElementPath = styled(animated.rect, {
|
|
29
30
|
name: 'MuiBarElement',
|
|
30
31
|
slot: 'Root',
|
|
31
32
|
overridesResolver: (_, styles) => styles.root
|
|
@@ -47,7 +48,8 @@ export function BarElement(props) {
|
|
|
47
48
|
color,
|
|
48
49
|
highlightScope,
|
|
49
50
|
slots,
|
|
50
|
-
slotProps
|
|
51
|
+
slotProps,
|
|
52
|
+
style
|
|
51
53
|
} = props,
|
|
52
54
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
53
55
|
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
@@ -82,6 +84,7 @@ export function BarElement(props) {
|
|
|
82
84
|
seriesId: id,
|
|
83
85
|
dataIndex
|
|
84
86
|
}), {
|
|
87
|
+
style,
|
|
85
88
|
className: classes.root
|
|
86
89
|
}),
|
|
87
90
|
ownerState
|
package/esm/BarChart/BarPlot.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
const _excluded = ["skipAnimation"];
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
6
|
+
import { useTransition } from '@react-spring/web';
|
|
4
7
|
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
5
8
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
6
9
|
import { BarElement } from './BarElement';
|
|
7
10
|
import { isBandScaleConfig } from '../models/axis';
|
|
8
|
-
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
12
|
/**
|
|
10
13
|
* Solution of the equations
|
|
11
14
|
* W = barWidth * N + offset * (N-1)
|
|
@@ -15,7 +18,6 @@ import { isBandScaleConfig } from '../models/axis';
|
|
|
15
18
|
* @param gapRatio The ratio of the gap between bars over the bar width.
|
|
16
19
|
* @returns The bar width and the offset between bars.
|
|
17
20
|
*/
|
|
18
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
21
|
function getBandSize({
|
|
20
22
|
bandWidth: W,
|
|
21
23
|
numberOfGroups: N,
|
|
@@ -34,12 +36,14 @@ function getBandSize({
|
|
|
34
36
|
offset
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
const useCompletedData = () => {
|
|
40
|
+
var _React$useContext$bar;
|
|
41
|
+
const seriesData = (_React$useContext$bar = React.useContext(SeriesContext).bar) != null ? _React$useContext$bar : {
|
|
42
|
+
series: {},
|
|
43
|
+
stackingGroups: [],
|
|
44
|
+
seriesOrder: []
|
|
45
|
+
};
|
|
39
46
|
const axisData = React.useContext(CartesianContext);
|
|
40
|
-
if (seriesData === undefined) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
47
|
const {
|
|
44
48
|
series,
|
|
45
49
|
stackingGroups
|
|
@@ -52,68 +56,144 @@ function BarPlot(props) {
|
|
|
52
56
|
} = axisData;
|
|
53
57
|
const defaultXAxisId = xAxisIds[0];
|
|
54
58
|
const defaultYAxisId = yAxisIds[0];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
78
|
-
}
|
|
79
|
-
if (yAxis[yAxisKey].data === undefined) {
|
|
80
|
-
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
81
|
-
}
|
|
82
|
-
baseScaleConfig = yAxisConfig;
|
|
59
|
+
const data = stackingGroups.flatMap(({
|
|
60
|
+
ids: groupIds
|
|
61
|
+
}, groupIndex) => {
|
|
62
|
+
return groupIds.flatMap(seriesId => {
|
|
63
|
+
var _series$seriesId$xAxi, _series$seriesId$yAxi;
|
|
64
|
+
const xAxisKey = (_series$seriesId$xAxi = series[seriesId].xAxisKey) != null ? _series$seriesId$xAxi : defaultXAxisId;
|
|
65
|
+
const yAxisKey = (_series$seriesId$yAxi = series[seriesId].yAxisKey) != null ? _series$seriesId$yAxi : defaultYAxisId;
|
|
66
|
+
const xAxisConfig = xAxis[xAxisKey];
|
|
67
|
+
const yAxisConfig = yAxis[yAxisKey];
|
|
68
|
+
const verticalLayout = series[seriesId].layout === 'vertical';
|
|
69
|
+
let baseScaleConfig;
|
|
70
|
+
if (verticalLayout) {
|
|
71
|
+
if (!isBandScaleConfig(xAxisConfig)) {
|
|
72
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
73
|
+
}
|
|
74
|
+
if (xAxis[xAxisKey].data === undefined) {
|
|
75
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
76
|
+
}
|
|
77
|
+
baseScaleConfig = xAxisConfig;
|
|
78
|
+
} else {
|
|
79
|
+
if (!isBandScaleConfig(yAxisConfig)) {
|
|
80
|
+
throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
83
81
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
82
|
+
if (yAxis[yAxisKey].data === undefined) {
|
|
83
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
84
|
+
}
|
|
85
|
+
baseScaleConfig = yAxisConfig;
|
|
86
|
+
}
|
|
87
|
+
const xScale = xAxisConfig.scale;
|
|
88
|
+
const yScale = yAxisConfig.scale;
|
|
89
|
+
const bandWidth = baseScaleConfig.scale.bandwidth();
|
|
90
|
+
const {
|
|
91
|
+
barWidth,
|
|
92
|
+
offset
|
|
93
|
+
} = getBandSize({
|
|
94
|
+
bandWidth,
|
|
95
|
+
numberOfGroups: stackingGroups.length,
|
|
96
|
+
gapRatio: baseScaleConfig.barGapRatio
|
|
97
|
+
});
|
|
98
|
+
const barOffset = groupIndex * (barWidth + offset);
|
|
99
|
+
const {
|
|
100
|
+
stackedData,
|
|
101
|
+
color
|
|
102
|
+
} = series[seriesId];
|
|
103
|
+
return stackedData.map((values, dataIndex) => {
|
|
104
|
+
var _xAxis$xAxisKey$data, _yAxis$yAxisKey$data;
|
|
105
|
+
const bottom = Math.min(...values);
|
|
106
|
+
const top = Math.max(...values);
|
|
107
|
+
return {
|
|
108
|
+
bottom,
|
|
109
|
+
top,
|
|
110
|
+
seriesId,
|
|
111
|
+
dataIndex,
|
|
112
|
+
layout: series[seriesId].layout,
|
|
113
|
+
x: verticalLayout ? xScale((_xAxis$xAxisKey$data = xAxis[xAxisKey].data) == null ? void 0 : _xAxis$xAxisKey$data[dataIndex]) + barOffset : xScale(bottom),
|
|
114
|
+
y: verticalLayout ? yScale(top) : yScale((_yAxis$yAxisKey$data = yAxis[yAxisKey].data) == null ? void 0 : _yAxis$yAxisKey$data[dataIndex]) + barOffset,
|
|
115
|
+
xOrigin: xScale(0),
|
|
116
|
+
yOrigin: yScale(0),
|
|
117
|
+
height: verticalLayout ? Math.abs(yScale(bottom) - yScale(top)) : barWidth,
|
|
118
|
+
width: verticalLayout ? barWidth : Math.abs(xScale(bottom) - xScale(top)),
|
|
119
|
+
color,
|
|
120
|
+
highlightScope: series[seriesId].highlightScope
|
|
121
|
+
};
|
|
115
122
|
});
|
|
116
|
-
})
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return data;
|
|
126
|
+
};
|
|
127
|
+
const getOutStyle = ({
|
|
128
|
+
layout,
|
|
129
|
+
yOrigin,
|
|
130
|
+
x,
|
|
131
|
+
width,
|
|
132
|
+
y,
|
|
133
|
+
xOrigin,
|
|
134
|
+
height
|
|
135
|
+
}) => _extends({}, layout === 'vertical' ? {
|
|
136
|
+
y: yOrigin,
|
|
137
|
+
x,
|
|
138
|
+
height: 0,
|
|
139
|
+
width
|
|
140
|
+
} : {
|
|
141
|
+
y,
|
|
142
|
+
x: xOrigin,
|
|
143
|
+
height,
|
|
144
|
+
width: 0
|
|
145
|
+
});
|
|
146
|
+
const getInStyle = ({
|
|
147
|
+
x,
|
|
148
|
+
width,
|
|
149
|
+
y,
|
|
150
|
+
height
|
|
151
|
+
}) => ({
|
|
152
|
+
y,
|
|
153
|
+
x,
|
|
154
|
+
height,
|
|
155
|
+
width
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Demos:
|
|
160
|
+
*
|
|
161
|
+
* - [Bars](https://mui.com/x/react-charts/bars/)
|
|
162
|
+
* - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
|
|
163
|
+
* - [Stacking](https://mui.com/x/react-charts/stacking/)
|
|
164
|
+
*
|
|
165
|
+
* API:
|
|
166
|
+
*
|
|
167
|
+
* - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
|
|
168
|
+
*/
|
|
169
|
+
function BarPlot(props) {
|
|
170
|
+
const completedData = useCompletedData();
|
|
171
|
+
const {
|
|
172
|
+
skipAnimation
|
|
173
|
+
} = props,
|
|
174
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
175
|
+
const transition = useTransition(completedData, {
|
|
176
|
+
keys: bar => `${bar.seriesId}-${bar.dataIndex}`,
|
|
177
|
+
from: getOutStyle,
|
|
178
|
+
leave: getOutStyle,
|
|
179
|
+
enter: getInStyle,
|
|
180
|
+
update: getInStyle,
|
|
181
|
+
immediate: skipAnimation
|
|
182
|
+
});
|
|
183
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
184
|
+
children: transition((style, {
|
|
185
|
+
seriesId,
|
|
186
|
+
dataIndex,
|
|
187
|
+
color,
|
|
188
|
+
highlightScope
|
|
189
|
+
}) => /*#__PURE__*/_jsx(BarElement, _extends({
|
|
190
|
+
id: seriesId,
|
|
191
|
+
dataIndex: dataIndex,
|
|
192
|
+
highlightScope: highlightScope,
|
|
193
|
+
color: color
|
|
194
|
+
}, other, {
|
|
195
|
+
style: style
|
|
196
|
+
})))
|
|
117
197
|
});
|
|
118
198
|
}
|
|
119
199
|
process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
|
|
@@ -121,6 +201,11 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
|
|
|
121
201
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
122
202
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
123
203
|
// ----------------------------------------------------------------------
|
|
204
|
+
/**
|
|
205
|
+
* If `true`, animations are skiped.
|
|
206
|
+
* @default false
|
|
207
|
+
*/
|
|
208
|
+
skipAnimation: PropTypes.bool,
|
|
124
209
|
/**
|
|
125
210
|
* The props used for each component slot.
|
|
126
211
|
* @default {}
|
|
@@ -3,6 +3,7 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
3
3
|
import { DrawingProvider } from '../context/DrawingProvider';
|
|
4
4
|
import { SeriesContextProvider } from '../context/SeriesContextProvider';
|
|
5
5
|
import { InteractionProvider } from '../context/InteractionProvider';
|
|
6
|
+
import { useReducedMotion } from '../hooks/useReducedMotion';
|
|
6
7
|
import { ChartsSurface } from '../ChartsSurface';
|
|
7
8
|
import { CartesianContextProvider } from '../context/CartesianContextProvider';
|
|
8
9
|
import { HighlightProvider } from '../context/HighlightProvider';
|
|
@@ -25,6 +26,8 @@ export const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContai
|
|
|
25
26
|
} = props;
|
|
26
27
|
const svgRef = React.useRef(null);
|
|
27
28
|
const handleRef = useForkRef(ref, svgRef);
|
|
29
|
+
useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion)
|
|
30
|
+
|
|
28
31
|
return /*#__PURE__*/_jsx(DrawingProvider, {
|
|
29
32
|
width: width,
|
|
30
33
|
height: height,
|
|
@@ -97,11 +97,15 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
|
|
|
97
97
|
fill: PropTypes.string,
|
|
98
98
|
label: PropTypes.string,
|
|
99
99
|
labelFontSize: PropTypes.number,
|
|
100
|
+
labelStyle: PropTypes.object,
|
|
100
101
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
101
102
|
slotProps: PropTypes.object,
|
|
102
103
|
slots: PropTypes.object,
|
|
103
104
|
stroke: PropTypes.string,
|
|
104
105
|
tickFontSize: PropTypes.number,
|
|
106
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
107
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
108
|
+
tickLabelStyle: PropTypes.object,
|
|
105
109
|
tickMaxStep: PropTypes.number,
|
|
106
110
|
tickMinStep: PropTypes.number,
|
|
107
111
|
tickNumber: PropTypes.number,
|
|
@@ -120,11 +124,15 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
|
|
|
120
124
|
fill: PropTypes.string,
|
|
121
125
|
label: PropTypes.string,
|
|
122
126
|
labelFontSize: PropTypes.number,
|
|
127
|
+
labelStyle: PropTypes.object,
|
|
123
128
|
position: PropTypes.oneOf(['left', 'right']),
|
|
124
129
|
slotProps: PropTypes.object,
|
|
125
130
|
slots: PropTypes.object,
|
|
126
131
|
stroke: PropTypes.string,
|
|
127
132
|
tickFontSize: PropTypes.number,
|
|
133
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
134
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
135
|
+
tickLabelStyle: PropTypes.object,
|
|
128
136
|
tickMaxStep: PropTypes.number,
|
|
129
137
|
tickMinStep: PropTypes.number,
|
|
130
138
|
tickNumber: PropTypes.number,
|
|
@@ -143,11 +151,15 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
|
|
|
143
151
|
fill: PropTypes.string,
|
|
144
152
|
label: PropTypes.string,
|
|
145
153
|
labelFontSize: PropTypes.number,
|
|
154
|
+
labelStyle: PropTypes.object,
|
|
146
155
|
position: PropTypes.oneOf(['left', 'right']),
|
|
147
156
|
slotProps: PropTypes.object,
|
|
148
157
|
slots: PropTypes.object,
|
|
149
158
|
stroke: PropTypes.string,
|
|
150
159
|
tickFontSize: PropTypes.number,
|
|
160
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
161
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
162
|
+
tickLabelStyle: PropTypes.object,
|
|
151
163
|
tickMaxStep: PropTypes.number,
|
|
152
164
|
tickMinStep: PropTypes.number,
|
|
153
165
|
tickNumber: PropTypes.number,
|
|
@@ -176,11 +188,15 @@ process.env.NODE_ENV !== "production" ? ChartsAxis.propTypes = {
|
|
|
176
188
|
fill: PropTypes.string,
|
|
177
189
|
label: PropTypes.string,
|
|
178
190
|
labelFontSize: PropTypes.number,
|
|
191
|
+
labelStyle: PropTypes.object,
|
|
179
192
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
180
193
|
slotProps: PropTypes.object,
|
|
181
194
|
slots: PropTypes.object,
|
|
182
195
|
stroke: PropTypes.string,
|
|
183
196
|
tickFontSize: PropTypes.number,
|
|
197
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
198
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
199
|
+
tickLabelStyle: PropTypes.object,
|
|
184
200
|
tickMaxStep: PropTypes.number,
|
|
185
201
|
tickMinStep: PropTypes.number,
|
|
186
202
|
tickNumber: PropTypes.number,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["
|
|
3
|
+
const _excluded = ["rotate", "dominantBaseline"],
|
|
4
|
+
_excluded2 = ["label"];
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { useSlotProps } from '@mui/base/utils';
|
|
6
7
|
import { NoSsr } from '@mui/base/NoSsr';
|
|
@@ -75,11 +76,16 @@ function DefaultChartsLegend(props) {
|
|
|
75
76
|
const theme = useTheme();
|
|
76
77
|
const labelStyle = React.useMemo(() => _extends({}, theme.typography.subtitle1, {
|
|
77
78
|
color: 'inherit',
|
|
79
|
+
dominantBaseline: 'central',
|
|
80
|
+
textAnchor: 'start',
|
|
78
81
|
fill: (theme.vars || theme).palette.text.primary,
|
|
79
82
|
lineHeight: 1
|
|
80
|
-
}, inLabelStyle),
|
|
83
|
+
}, inLabelStyle),
|
|
84
|
+
// To say to TS that the dominantBaseline and textAnchor are correct
|
|
85
|
+
[inLabelStyle, theme]);
|
|
81
86
|
const padding = React.useMemo(() => getStandardizedPadding(paddingProps), [paddingProps]);
|
|
82
|
-
const getItemSpace = React.useCallback((label,
|
|
87
|
+
const getItemSpace = React.useCallback((label, inStyle = {}) => {
|
|
88
|
+
const style = _objectWithoutPropertiesLoose(inStyle, _excluded);
|
|
83
89
|
const linesSize = getWordsByLines({
|
|
84
90
|
style,
|
|
85
91
|
needsComputation: true,
|
|
@@ -112,7 +118,7 @@ function DefaultChartsLegend(props) {
|
|
|
112
118
|
let {
|
|
113
119
|
label
|
|
114
120
|
} = _ref,
|
|
115
|
-
other = _objectWithoutPropertiesLoose(_ref,
|
|
121
|
+
other = _objectWithoutPropertiesLoose(_ref, _excluded2);
|
|
116
122
|
const itemSpace = getItemSpace(label, labelStyle);
|
|
117
123
|
const rep = _extends({}, other, {
|
|
118
124
|
label,
|
|
@@ -219,8 +225,6 @@ function DefaultChartsLegend(props) {
|
|
|
219
225
|
fill: color
|
|
220
226
|
}), /*#__PURE__*/_jsx(ChartsText, {
|
|
221
227
|
style: labelStyle,
|
|
222
|
-
dominantBaseline: "central",
|
|
223
|
-
textAnchor: "start",
|
|
224
228
|
text: label,
|
|
225
229
|
x: itemMarkWidth + markGap,
|
|
226
230
|
y: 0
|