@mui/x-charts 6.0.0-alpha.9 → 6.18.1
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 +26 -5
- package/BarChart/BarChart.js +93 -17
- package/BarChart/BarElement.d.ts +1319 -4
- package/BarChart/BarElement.js +10 -10
- package/BarChart/BarPlot.d.ts +17 -1
- package/BarChart/BarPlot.js +152 -66
- package/BarChart/formatter.js +2 -3
- package/BarChart/legend.js +1 -2
- package/CHANGELOG.md +797 -59
- package/ChartContainer/index.js +7 -5
- package/ChartsAxis/ChartsAxis.d.ts +9 -0
- package/ChartsAxis/ChartsAxis.js +33 -7
- package/ChartsAxis/axisClasses.d.ts +3 -3
- package/ChartsAxis/axisClasses.js +1 -2
- package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
- package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
- package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
- package/ChartsClipPath/ChartsClipPath.js +7 -2
- package/ChartsLegend/ChartsLegend.d.ts +45 -24
- package/ChartsLegend/ChartsLegend.js +193 -151
- package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
- package/ChartsLegend/chartsLegendClasses.js +3 -4
- package/ChartsLegend/utils.d.ts +1 -6
- package/ChartsReferenceLine/ChartsReferenceLine.d.ts +10 -0
- package/ChartsReferenceLine/ChartsReferenceLine.js +78 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +13 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.js +112 -0
- package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +13 -0
- package/ChartsReferenceLine/ChartsYReferenceLine.js +112 -0
- package/ChartsReferenceLine/chartsReferenceLineClasses.d.ts +15 -0
- package/ChartsReferenceLine/chartsReferenceLineClasses.js +14 -0
- package/ChartsReferenceLine/common.d.ts +41 -0
- package/ChartsReferenceLine/common.js +27 -0
- package/ChartsReferenceLine/index.d.ts +2 -0
- package/ChartsReferenceLine/index.js +27 -0
- package/ChartsReferenceLine/package.json +6 -0
- package/ChartsSurface.d.ts +12 -1
- package/ChartsSurface.js +9 -18
- package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
- package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
- package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
- package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
- package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
- package/ChartsTooltip/ChartsTooltip.js +62 -18
- package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
- package/ChartsTooltip/ChartsTooltipTable.js +22 -20
- package/ChartsTooltip/tooltipClasses.js +1 -2
- package/ChartsTooltip/utils.js +2 -2
- package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
- package/ChartsXAxis/ChartsXAxis.js +170 -45
- package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
- package/ChartsYAxis/ChartsYAxis.js +95 -38
- package/LineChart/AreaElement.d.ts +11 -1
- package/LineChart/AreaElement.js +14 -6
- package/LineChart/AreaPlot.d.ts +11 -0
- package/LineChart/AreaPlot.js +27 -8
- package/LineChart/LineChart.d.ts +23 -3
- package/LineChart/LineChart.js +89 -17
- package/LineChart/LineElement.d.ts +11 -1
- package/LineChart/LineElement.js +14 -6
- package/LineChart/LineHighlightElement.d.ts +10 -0
- package/LineChart/LineHighlightElement.js +13 -4
- package/LineChart/LineHighlightPlot.d.ts +10 -0
- package/LineChart/LineHighlightPlot.js +15 -4
- package/LineChart/LinePlot.d.ts +10 -0
- package/LineChart/LinePlot.js +25 -12
- package/LineChart/MarkElement.d.ts +10 -0
- package/LineChart/MarkElement.js +14 -5
- package/LineChart/MarkPlot.d.ts +10 -0
- package/LineChart/MarkPlot.js +42 -10
- package/LineChart/formatter.js +5 -5
- package/LineChart/legend.js +1 -2
- package/PieChart/PieArc.d.ts +11 -13
- package/PieChart/PieArc.js +28 -60
- package/PieChart/PieArcLabel.d.ts +8 -9
- package/PieChart/PieArcLabel.js +46 -38
- package/PieChart/PieArcLabelPlot.d.ts +28 -0
- package/PieChart/PieArcLabelPlot.js +99 -0
- package/PieChart/PieArcPlot.d.ts +35 -0
- package/PieChart/PieArcPlot.js +92 -0
- package/PieChart/PieChart.d.ts +19 -5
- package/PieChart/PieChart.js +95 -18
- package/PieChart/PiePlot.d.ts +15 -9
- package/PieChart/PiePlot.js +77 -55
- package/PieChart/dataTransform/transition.d.ts +4 -0
- package/PieChart/dataTransform/transition.js +136 -0
- package/PieChart/dataTransform/useTransformData.d.ts +15 -0
- package/PieChart/dataTransform/useTransformData.js +67 -0
- package/PieChart/formatter.js +1 -2
- package/PieChart/legend.js +1 -2
- package/README.md +8 -14
- package/ResponsiveChartContainer/index.d.ts +13 -3
- package/ResponsiveChartContainer/index.js +7 -8
- package/ScatterChart/Scatter.d.ts +10 -0
- package/ScatterChart/Scatter.js +12 -2
- package/ScatterChart/ScatterChart.d.ts +16 -3
- package/ScatterChart/ScatterChart.js +77 -16
- package/ScatterChart/ScatterPlot.d.ts +10 -0
- package/ScatterChart/ScatterPlot.js +12 -2
- package/ScatterChart/formatter.js +1 -2
- package/ScatterChart/legend.js +1 -2
- package/SparkLineChart/SparkLineChart.d.ts +12 -3
- package/SparkLineChart/SparkLineChart.js +50 -7
- package/colorPalettes/colorPalettes.js +6 -12
- package/constants.js +5 -8
- package/context/CartesianContextProvider.d.ts +26 -1
- package/context/CartesianContextProvider.js +42 -16
- package/context/DrawingProvider.d.ts +25 -0
- package/context/DrawingProvider.js +18 -6
- package/context/HighlightProvider.d.ts +17 -0
- package/context/HighlightProvider.js +3 -4
- package/context/InteractionProvider.d.ts +6 -0
- package/context/InteractionProvider.js +3 -4
- package/context/SeriesContextProvider.d.ts +5 -0
- package/context/SeriesContextProvider.js +3 -4
- package/esm/BarChart/BarChart.js +90 -13
- package/esm/BarChart/BarElement.js +7 -4
- package/esm/BarChart/BarPlot.js +152 -67
- package/esm/BarChart/formatter.js +1 -1
- package/esm/ChartContainer/index.js +3 -0
- package/esm/ChartsAxis/ChartsAxis.js +32 -5
- package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
- package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
- package/esm/ChartsLegend/ChartsLegend.js +190 -144
- package/esm/ChartsLegend/chartsLegendClasses.js +1 -1
- package/esm/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
- package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
- package/esm/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/esm/ChartsReferenceLine/common.js +20 -0
- package/esm/ChartsReferenceLine/index.js +2 -0
- package/esm/ChartsSurface.js +4 -12
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
- package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
- package/esm/ChartsXAxis/ChartsXAxis.js +168 -43
- package/esm/ChartsYAxis/ChartsYAxis.js +93 -36
- package/esm/LineChart/AreaElement.js +10 -0
- package/esm/LineChart/AreaPlot.js +26 -6
- package/esm/LineChart/LineChart.js +86 -13
- package/esm/LineChart/LineElement.js +10 -0
- package/esm/LineChart/LineHighlightElement.js +10 -0
- package/esm/LineChart/LineHighlightPlot.js +13 -2
- package/esm/LineChart/LinePlot.js +25 -14
- package/esm/LineChart/MarkElement.js +11 -1
- package/esm/LineChart/MarkPlot.js +40 -8
- package/esm/LineChart/formatter.js +7 -3
- package/esm/PieChart/PieArc.js +26 -58
- package/esm/PieChart/PieArcLabel.js +43 -34
- package/esm/PieChart/PieArcLabelPlot.js +92 -0
- package/esm/PieChart/PieArcPlot.js +84 -0
- package/esm/PieChart/PieChart.js +93 -16
- package/esm/PieChart/PiePlot.js +76 -57
- package/esm/PieChart/dataTransform/transition.js +130 -0
- package/esm/PieChart/dataTransform/useTransformData.js +59 -0
- package/esm/ResponsiveChartContainer/index.js +3 -3
- package/esm/ScatterChart/Scatter.js +10 -0
- package/esm/ScatterChart/ScatterChart.js +74 -12
- package/esm/ScatterChart/ScatterPlot.js +10 -0
- package/esm/SparkLineChart/SparkLineChart.js +47 -3
- package/esm/constants.js +1 -1
- package/esm/context/CartesianContextProvider.js +41 -14
- package/esm/context/DrawingProvider.js +14 -0
- package/esm/hooks/useChartDimensions.js +2 -0
- package/esm/hooks/useMounted.js +16 -0
- package/esm/hooks/useReducedMotion.js +27 -0
- package/esm/hooks/useTicks.js +15 -9
- package/esm/index.js +1 -0
- package/esm/internals/components/AxisSharedComponents.js +15 -70
- package/esm/internals/components/ChartsText.js +77 -0
- package/esm/internals/domUtils.js +113 -0
- package/esm/internals/geometry.js +36 -0
- package/hooks/useAxisEvents.js +2 -2
- package/hooks/useChartDimensions.d.ts +2 -0
- package/hooks/useChartDimensions.js +5 -4
- 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 +19 -11
- package/hooks/useTicks.js +19 -14
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/internals/components/AxisSharedComponents.d.ts +0 -4
- package/internals/components/AxisSharedComponents.js +18 -78
- package/internals/components/ChartsText.d.ts +35 -0
- package/internals/components/ChartsText.js +87 -0
- package/internals/defaultizeColor.d.ts +7 -2
- package/internals/defaultizeValueFormatter.js +1 -2
- package/internals/domUtils.d.ts +13 -0
- package/internals/domUtils.js +122 -0
- package/internals/geometry.d.ts +9 -0
- package/internals/geometry.js +42 -0
- package/internals/isBandScale.d.ts +3 -1
- package/internals/stackSeries.js +2 -4
- package/internals/utils.d.ts +5 -0
- package/legacy/BarChart/BarChart.js +90 -13
- package/legacy/BarChart/BarElement.js +6 -3
- package/legacy/BarChart/BarPlot.js +151 -63
- package/legacy/BarChart/formatter.js +1 -1
- package/legacy/ChartContainer/index.js +3 -0
- package/legacy/ChartsAxis/ChartsAxis.js +32 -5
- package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
- package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
- package/legacy/ChartsLegend/ChartsLegend.js +205 -142
- package/legacy/ChartsLegend/chartsLegendClasses.js +1 -1
- package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
- package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
- package/legacy/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/legacy/ChartsReferenceLine/common.js +20 -0
- package/legacy/ChartsReferenceLine/index.js +2 -0
- package/legacy/ChartsSurface.js +3 -12
- package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
- package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
- package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
- package/legacy/ChartsXAxis/ChartsXAxis.js +176 -50
- package/legacy/ChartsYAxis/ChartsYAxis.js +97 -41
- package/legacy/LineChart/AreaElement.js +10 -0
- package/legacy/LineChart/AreaPlot.js +31 -7
- package/legacy/LineChart/LineChart.js +86 -13
- package/legacy/LineChart/LineElement.js +10 -0
- package/legacy/LineChart/LineHighlightElement.js +10 -0
- package/legacy/LineChart/LineHighlightPlot.js +13 -2
- package/legacy/LineChart/LinePlot.js +29 -12
- package/legacy/LineChart/MarkElement.js +11 -1
- package/legacy/LineChart/MarkPlot.js +39 -8
- package/legacy/LineChart/formatter.js +7 -3
- package/legacy/PieChart/PieArc.js +30 -62
- package/legacy/PieChart/PieArcLabel.js +48 -34
- package/legacy/PieChart/PieArcLabelPlot.js +93 -0
- package/legacy/PieChart/PieArcPlot.js +84 -0
- package/legacy/PieChart/PieChart.js +93 -16
- package/legacy/PieChart/PiePlot.js +76 -59
- package/legacy/PieChart/dataTransform/transition.js +142 -0
- package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
- package/legacy/ResponsiveChartContainer/index.js +3 -3
- package/legacy/ScatterChart/Scatter.js +10 -0
- package/legacy/ScatterChart/ScatterChart.js +74 -12
- package/legacy/ScatterChart/ScatterPlot.js +10 -0
- package/legacy/SparkLineChart/SparkLineChart.js +47 -3
- package/legacy/constants.js +1 -1
- package/legacy/context/CartesianContextProvider.js +41 -14
- package/legacy/context/DrawingProvider.js +14 -0
- package/legacy/hooks/useChartDimensions.js +2 -0
- package/legacy/hooks/useMounted.js +21 -0
- package/legacy/hooks/useReducedMotion.js +27 -0
- package/legacy/hooks/useTicks.js +16 -9
- package/legacy/index.js +2 -1
- package/legacy/internals/components/AxisSharedComponents.js +11 -65
- package/legacy/internals/components/ChartsText.js +79 -0
- package/legacy/internals/domUtils.js +121 -0
- package/legacy/internals/geometry.js +37 -0
- package/models/axis.d.ts +58 -20
- package/models/layout.d.ts +13 -6
- package/models/seriesType/common.d.ts +16 -0
- package/models/seriesType/line.d.ts +8 -3
- package/models/seriesType/pie.d.ts +5 -1
- package/modern/BarChart/BarChart.js +90 -13
- package/modern/BarChart/BarElement.js +7 -4
- package/modern/BarChart/BarPlot.js +149 -65
- package/modern/BarChart/formatter.js +1 -1
- package/modern/ChartContainer/index.js +3 -0
- package/modern/ChartsAxis/ChartsAxis.js +31 -5
- package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
- package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
- package/modern/ChartsLegend/ChartsLegend.js +190 -144
- package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
- package/modern/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +104 -0
- package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +104 -0
- package/modern/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/modern/ChartsReferenceLine/common.js +20 -0
- package/modern/ChartsReferenceLine/index.js +2 -0
- package/modern/ChartsSurface.js +4 -12
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
- package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
- package/modern/ChartsXAxis/ChartsXAxis.js +167 -42
- package/modern/ChartsYAxis/ChartsYAxis.js +92 -35
- package/modern/LineChart/AreaElement.js +10 -0
- package/modern/LineChart/AreaPlot.js +25 -6
- package/modern/LineChart/LineChart.js +86 -13
- package/modern/LineChart/LineElement.js +10 -0
- package/modern/LineChart/LineHighlightElement.js +10 -0
- package/modern/LineChart/LineHighlightPlot.js +13 -2
- package/modern/LineChart/LinePlot.js +23 -10
- package/modern/LineChart/MarkElement.js +11 -1
- package/modern/LineChart/MarkPlot.js +40 -8
- package/modern/LineChart/formatter.js +4 -3
- package/modern/PieChart/PieArc.js +26 -57
- package/modern/PieChart/PieArcLabel.js +43 -34
- package/modern/PieChart/PieArcLabelPlot.js +90 -0
- package/modern/PieChart/PieArcPlot.js +83 -0
- package/modern/PieChart/PieChart.js +93 -16
- package/modern/PieChart/PiePlot.js +76 -55
- package/modern/PieChart/dataTransform/transition.js +130 -0
- package/modern/PieChart/dataTransform/useTransformData.js +58 -0
- package/modern/ResponsiveChartContainer/index.js +3 -3
- package/modern/ScatterChart/Scatter.js +10 -0
- package/modern/ScatterChart/ScatterChart.js +74 -12
- package/modern/ScatterChart/ScatterPlot.js +10 -0
- package/modern/SparkLineChart/SparkLineChart.js +47 -3
- package/modern/constants.js +1 -1
- package/modern/context/CartesianContextProvider.js +40 -13
- package/modern/context/DrawingProvider.js +14 -0
- package/modern/hooks/useChartDimensions.js +2 -0
- package/modern/hooks/useMounted.js +16 -0
- package/modern/hooks/useReducedMotion.js +27 -0
- package/modern/hooks/useTicks.js +15 -9
- package/modern/index.js +2 -1
- package/modern/internals/components/AxisSharedComponents.js +15 -70
- package/modern/internals/components/ChartsText.js +77 -0
- package/modern/internals/domUtils.js +113 -0
- package/modern/internals/geometry.js +36 -0
- package/package.json +9 -6
- package/themeAugmentation/components.d.ts +1 -0
- package/themeAugmentation/overrides.d.ts +2 -0
|
@@ -15,6 +15,16 @@ import { ChartsClipPath } from '../ChartsClipPath';
|
|
|
15
15
|
import { LineHighlightPlot } from './LineHighlightPlot';
|
|
16
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
17
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
/**
|
|
19
|
+
* Demos:
|
|
20
|
+
*
|
|
21
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
22
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
23
|
+
*
|
|
24
|
+
* API:
|
|
25
|
+
*
|
|
26
|
+
* - [LineChart API](https://mui.com/x/api/charts/line-chart/)
|
|
27
|
+
*/
|
|
18
28
|
const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
|
|
19
29
|
const {
|
|
20
30
|
xAxis,
|
|
@@ -88,7 +98,10 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
|
|
|
88
98
|
}), /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legend, {
|
|
89
99
|
slots: slots,
|
|
90
100
|
slotProps: slotProps
|
|
91
|
-
})), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip
|
|
101
|
+
})), /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
|
|
102
|
+
slots: slots,
|
|
103
|
+
slotProps: slotProps
|
|
104
|
+
})), /*#__PURE__*/_jsx(ChartsClipPath, {
|
|
92
105
|
id: clipPathId
|
|
93
106
|
}), children]
|
|
94
107
|
});
|
|
@@ -98,6 +111,13 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
98
111
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
99
112
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
100
113
|
// ----------------------------------------------------------------------
|
|
114
|
+
/**
|
|
115
|
+
* Object `{ x, y }` that defines how the charts highlight the mouse position along the x- and y-axes.
|
|
116
|
+
* The two properties accept the following values:
|
|
117
|
+
* - 'none': display nothing.
|
|
118
|
+
* - 'line': display a line at the current mouse position.
|
|
119
|
+
* - 'band': display a band at the current mouse position. Only available with band scale.
|
|
120
|
+
*/
|
|
101
121
|
axisHighlight: PropTypes.shape({
|
|
102
122
|
x: PropTypes.oneOf(['band', 'line', 'none']),
|
|
103
123
|
y: PropTypes.oneOf(['band', 'line', 'none'])
|
|
@@ -108,18 +128,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
108
128
|
* @default xAxisIds[0] The id of the first provided axis
|
|
109
129
|
*/
|
|
110
130
|
bottomAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
111
|
-
axisId: PropTypes.string
|
|
131
|
+
axisId: PropTypes.string,
|
|
112
132
|
classes: PropTypes.object,
|
|
113
133
|
disableLine: PropTypes.bool,
|
|
114
134
|
disableTicks: PropTypes.bool,
|
|
115
135
|
fill: PropTypes.string,
|
|
116
136
|
label: PropTypes.string,
|
|
117
137
|
labelFontSize: PropTypes.number,
|
|
138
|
+
labelStyle: PropTypes.object,
|
|
118
139
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
119
140
|
slotProps: PropTypes.object,
|
|
120
141
|
slots: PropTypes.object,
|
|
121
142
|
stroke: PropTypes.string,
|
|
122
143
|
tickFontSize: PropTypes.number,
|
|
144
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
145
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
146
|
+
tickLabelStyle: PropTypes.object,
|
|
123
147
|
tickMaxStep: PropTypes.number,
|
|
124
148
|
tickMinStep: PropTypes.number,
|
|
125
149
|
tickNumber: PropTypes.number,
|
|
@@ -131,13 +155,25 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
131
155
|
* Color palette used to colorize multiple series.
|
|
132
156
|
*/
|
|
133
157
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
158
|
+
/**
|
|
159
|
+
* An array of objects that can be used to populate series and axes data using their `dataKey` property.
|
|
160
|
+
*/
|
|
134
161
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
135
162
|
desc: PropTypes.string,
|
|
163
|
+
/**
|
|
164
|
+
* If `true`, the charts will not listen to the mouse move event.
|
|
165
|
+
* It might break interactive features, but will improve performance.
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
136
168
|
disableAxisListener: PropTypes.bool,
|
|
137
169
|
/**
|
|
138
170
|
* If `true`, render the line highlight item.
|
|
139
171
|
*/
|
|
140
172
|
disableLineItemHighlight: PropTypes.bool,
|
|
173
|
+
/**
|
|
174
|
+
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
175
|
+
* @default undefined
|
|
176
|
+
*/
|
|
141
177
|
height: PropTypes.number,
|
|
142
178
|
/**
|
|
143
179
|
* Indicate which axis to display the left of the charts.
|
|
@@ -145,41 +181,47 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
145
181
|
* @default yAxisIds[0] The id of the first provided axis
|
|
146
182
|
*/
|
|
147
183
|
leftAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
148
|
-
axisId: PropTypes.string
|
|
184
|
+
axisId: PropTypes.string,
|
|
149
185
|
classes: PropTypes.object,
|
|
150
186
|
disableLine: PropTypes.bool,
|
|
151
187
|
disableTicks: PropTypes.bool,
|
|
152
188
|
fill: PropTypes.string,
|
|
153
189
|
label: PropTypes.string,
|
|
154
190
|
labelFontSize: PropTypes.number,
|
|
191
|
+
labelStyle: PropTypes.object,
|
|
155
192
|
position: PropTypes.oneOf(['left', 'right']),
|
|
156
193
|
slotProps: PropTypes.object,
|
|
157
194
|
slots: PropTypes.object,
|
|
158
195
|
stroke: PropTypes.string,
|
|
159
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,
|
|
160
200
|
tickMaxStep: PropTypes.number,
|
|
161
201
|
tickMinStep: PropTypes.number,
|
|
162
202
|
tickNumber: PropTypes.number,
|
|
163
203
|
tickSize: PropTypes.number
|
|
164
204
|
}), PropTypes.string]),
|
|
205
|
+
/**
|
|
206
|
+
* @deprecated Consider using `slotProps.legend` instead.
|
|
207
|
+
*/
|
|
165
208
|
legend: PropTypes.shape({
|
|
166
209
|
classes: PropTypes.object,
|
|
167
210
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
168
211
|
hidden: PropTypes.bool,
|
|
169
|
-
itemWidth: PropTypes.number,
|
|
170
|
-
markSize: PropTypes.number,
|
|
171
|
-
offset: PropTypes.shape({
|
|
172
|
-
x: PropTypes.number,
|
|
173
|
-
y: PropTypes.number
|
|
174
|
-
}),
|
|
175
212
|
position: PropTypes.shape({
|
|
176
213
|
horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
|
|
177
214
|
vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
|
|
178
215
|
}),
|
|
179
216
|
slotProps: PropTypes.object,
|
|
180
|
-
slots: PropTypes.object
|
|
181
|
-
spacing: PropTypes.number
|
|
217
|
+
slots: PropTypes.object
|
|
182
218
|
}),
|
|
219
|
+
/**
|
|
220
|
+
* The margin between the SVG and the drawing area.
|
|
221
|
+
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
222
|
+
* Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
|
|
223
|
+
* @default object Depends on the charts type.
|
|
224
|
+
*/
|
|
183
225
|
margin: PropTypes.shape({
|
|
184
226
|
bottom: PropTypes.number,
|
|
185
227
|
left: PropTypes.number,
|
|
@@ -192,18 +234,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
192
234
|
* @default null
|
|
193
235
|
*/
|
|
194
236
|
rightAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
195
|
-
axisId: PropTypes.string
|
|
237
|
+
axisId: PropTypes.string,
|
|
196
238
|
classes: PropTypes.object,
|
|
197
239
|
disableLine: PropTypes.bool,
|
|
198
240
|
disableTicks: PropTypes.bool,
|
|
199
241
|
fill: PropTypes.string,
|
|
200
242
|
label: PropTypes.string,
|
|
201
243
|
labelFontSize: PropTypes.number,
|
|
244
|
+
labelStyle: PropTypes.object,
|
|
202
245
|
position: PropTypes.oneOf(['left', 'right']),
|
|
203
246
|
slotProps: PropTypes.object,
|
|
204
247
|
slots: PropTypes.object,
|
|
205
248
|
stroke: PropTypes.string,
|
|
206
249
|
tickFontSize: PropTypes.number,
|
|
250
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
251
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
252
|
+
tickLabelStyle: PropTypes.object,
|
|
207
253
|
tickMaxStep: PropTypes.number,
|
|
208
254
|
tickMinStep: PropTypes.number,
|
|
209
255
|
tickNumber: PropTypes.number,
|
|
@@ -212,6 +258,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
212
258
|
series: PropTypes.arrayOf(PropTypes.shape({
|
|
213
259
|
area: PropTypes.bool,
|
|
214
260
|
color: PropTypes.string,
|
|
261
|
+
connectNulls: PropTypes.bool,
|
|
215
262
|
curve: PropTypes.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
|
|
216
263
|
data: PropTypes.arrayOf(PropTypes.number),
|
|
217
264
|
dataKey: PropTypes.string,
|
|
@@ -247,6 +294,8 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
247
294
|
axisContent: PropTypes.elementType,
|
|
248
295
|
classes: PropTypes.object,
|
|
249
296
|
itemContent: PropTypes.elementType,
|
|
297
|
+
slotProps: PropTypes.object,
|
|
298
|
+
slots: PropTypes.object,
|
|
250
299
|
trigger: PropTypes.oneOf(['axis', 'item', 'none'])
|
|
251
300
|
}),
|
|
252
301
|
/**
|
|
@@ -255,18 +304,22 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
255
304
|
* @default null
|
|
256
305
|
*/
|
|
257
306
|
topAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
258
|
-
axisId: PropTypes.string
|
|
307
|
+
axisId: PropTypes.string,
|
|
259
308
|
classes: PropTypes.object,
|
|
260
309
|
disableLine: PropTypes.bool,
|
|
261
310
|
disableTicks: PropTypes.bool,
|
|
262
311
|
fill: PropTypes.string,
|
|
263
312
|
label: PropTypes.string,
|
|
264
313
|
labelFontSize: PropTypes.number,
|
|
314
|
+
labelStyle: PropTypes.object,
|
|
265
315
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
266
316
|
slotProps: PropTypes.object,
|
|
267
317
|
slots: PropTypes.object,
|
|
268
318
|
stroke: PropTypes.string,
|
|
269
319
|
tickFontSize: PropTypes.number,
|
|
320
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
321
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
322
|
+
tickLabelStyle: PropTypes.object,
|
|
270
323
|
tickMaxStep: PropTypes.number,
|
|
271
324
|
tickMinStep: PropTypes.number,
|
|
272
325
|
tickNumber: PropTypes.number,
|
|
@@ -278,7 +331,15 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
278
331
|
x: PropTypes.number,
|
|
279
332
|
y: PropTypes.number
|
|
280
333
|
}),
|
|
334
|
+
/**
|
|
335
|
+
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
336
|
+
* @default undefined
|
|
337
|
+
*/
|
|
281
338
|
width: PropTypes.number,
|
|
339
|
+
/**
|
|
340
|
+
* The configuration of the x-axes.
|
|
341
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
|
|
342
|
+
*/
|
|
282
343
|
xAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
283
344
|
axisId: PropTypes.string,
|
|
284
345
|
classes: PropTypes.object,
|
|
@@ -291,6 +352,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
291
352
|
id: PropTypes.string,
|
|
292
353
|
label: PropTypes.string,
|
|
293
354
|
labelFontSize: PropTypes.number,
|
|
355
|
+
labelStyle: PropTypes.object,
|
|
294
356
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
295
357
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
296
358
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -299,12 +361,19 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
299
361
|
slots: PropTypes.object,
|
|
300
362
|
stroke: PropTypes.string,
|
|
301
363
|
tickFontSize: PropTypes.number,
|
|
364
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
365
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
366
|
+
tickLabelStyle: PropTypes.object,
|
|
302
367
|
tickMaxStep: PropTypes.number,
|
|
303
368
|
tickMinStep: PropTypes.number,
|
|
304
369
|
tickNumber: PropTypes.number,
|
|
305
370
|
tickSize: PropTypes.number,
|
|
306
371
|
valueFormatter: PropTypes.func
|
|
307
372
|
})),
|
|
373
|
+
/**
|
|
374
|
+
* The configuration of the y-axes.
|
|
375
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
|
|
376
|
+
*/
|
|
308
377
|
yAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
309
378
|
axisId: PropTypes.string,
|
|
310
379
|
classes: PropTypes.object,
|
|
@@ -317,6 +386,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
317
386
|
id: PropTypes.string,
|
|
318
387
|
label: PropTypes.string,
|
|
319
388
|
labelFontSize: PropTypes.number,
|
|
389
|
+
labelStyle: PropTypes.object,
|
|
320
390
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
321
391
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
322
392
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -325,6 +395,9 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
325
395
|
slots: PropTypes.object,
|
|
326
396
|
stroke: PropTypes.string,
|
|
327
397
|
tickFontSize: PropTypes.number,
|
|
398
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
399
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
400
|
+
tickLabelStyle: PropTypes.object,
|
|
328
401
|
tickMaxStep: PropTypes.number,
|
|
329
402
|
tickMinStep: PropTypes.number,
|
|
330
403
|
tickNumber: PropTypes.number,
|
|
@@ -57,6 +57,16 @@ LineElementPath.propTypes = {
|
|
|
57
57
|
}).isRequired,
|
|
58
58
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Demos:
|
|
62
|
+
*
|
|
63
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
64
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
65
|
+
*
|
|
66
|
+
* API:
|
|
67
|
+
*
|
|
68
|
+
* - [LineElement API](https://mui.com/x/api/charts/line-element/)
|
|
69
|
+
*/
|
|
60
70
|
function LineElement(props) {
|
|
61
71
|
const {
|
|
62
72
|
id,
|
|
@@ -33,6 +33,16 @@ const HighlightElement = styled('circle', {
|
|
|
33
33
|
transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
|
|
34
34
|
fill: ownerState.color
|
|
35
35
|
}));
|
|
36
|
+
/**
|
|
37
|
+
* Demos:
|
|
38
|
+
*
|
|
39
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
40
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
41
|
+
*
|
|
42
|
+
* API:
|
|
43
|
+
*
|
|
44
|
+
* - [LineHighlightElement API](https://mui.com/x/api/charts/line-highlight-element/)
|
|
45
|
+
*/
|
|
36
46
|
function LineHighlightElement(props) {
|
|
37
47
|
const {
|
|
38
48
|
x,
|
|
@@ -9,6 +9,16 @@ import { LineHighlightElement } from './LineHighlightElement';
|
|
|
9
9
|
import { getValueToPositionMapper } from '../hooks/useScale';
|
|
10
10
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
/**
|
|
13
|
+
* Demos:
|
|
14
|
+
*
|
|
15
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
16
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
17
|
+
*
|
|
18
|
+
* API:
|
|
19
|
+
*
|
|
20
|
+
* - [LineHighlightPlot API](https://mui.com/x/api/charts/line-highlight-plot/)
|
|
21
|
+
*/
|
|
12
22
|
function LineHighlightPlot(props) {
|
|
13
23
|
const {
|
|
14
24
|
slots,
|
|
@@ -49,9 +59,10 @@ function LineHighlightPlot(props) {
|
|
|
49
59
|
xAxisKey = defaultXAxisId,
|
|
50
60
|
yAxisKey = defaultYAxisId,
|
|
51
61
|
stackedData,
|
|
62
|
+
data,
|
|
52
63
|
disableHighlight
|
|
53
64
|
} = series[seriesId];
|
|
54
|
-
if (disableHighlight) {
|
|
65
|
+
if (disableHighlight || data[highlightedIndex] == null) {
|
|
55
66
|
return null;
|
|
56
67
|
}
|
|
57
68
|
const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
|
|
@@ -61,7 +72,7 @@ function LineHighlightPlot(props) {
|
|
|
61
72
|
throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot.`);
|
|
62
73
|
}
|
|
63
74
|
const x = xScale(xData[highlightedIndex]);
|
|
64
|
-
const y = yScale(stackedData[highlightedIndex][1]);
|
|
75
|
+
const y = yScale(stackedData[highlightedIndex][1]); // This should not be undefined since y should not be a band scale
|
|
65
76
|
return /*#__PURE__*/_jsx(Element, _extends({
|
|
66
77
|
id: seriesId,
|
|
67
78
|
color: series[seriesId].color,
|
|
@@ -10,6 +10,16 @@ import { LineElement } from './LineElement';
|
|
|
10
10
|
import { getValueToPositionMapper } from '../hooks/useScale';
|
|
11
11
|
import getCurveFactory from '../internals/getCurve';
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
/**
|
|
14
|
+
* Demos:
|
|
15
|
+
*
|
|
16
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
17
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
18
|
+
*
|
|
19
|
+
* API:
|
|
20
|
+
*
|
|
21
|
+
* - [LinePlot API](https://mui.com/x/api/charts/line-plot/)
|
|
22
|
+
*/
|
|
13
23
|
function LinePlot(props) {
|
|
14
24
|
const {
|
|
15
25
|
slots,
|
|
@@ -41,25 +51,28 @@ function LinePlot(props) {
|
|
|
41
51
|
const {
|
|
42
52
|
xAxisKey = defaultXAxisId,
|
|
43
53
|
yAxisKey = defaultYAxisId,
|
|
44
|
-
stackedData
|
|
54
|
+
stackedData,
|
|
55
|
+
data,
|
|
56
|
+
connectNulls
|
|
45
57
|
} = series[seriesId];
|
|
46
58
|
const xScale = getValueToPositionMapper(xAxis[xAxisKey].scale);
|
|
47
59
|
const yScale = yAxis[yAxisKey].scale;
|
|
48
60
|
const xData = xAxis[xAxisKey].data;
|
|
49
|
-
if (xData === undefined) {
|
|
50
|
-
throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
|
|
51
|
-
}
|
|
52
|
-
const linePath = d3Line().x(d => xScale(d.x)).y(d => yScale(d.y[1]));
|
|
53
61
|
if (process.env.NODE_ENV !== 'production') {
|
|
54
|
-
if (xData
|
|
55
|
-
throw new Error(`
|
|
62
|
+
if (xData === undefined) {
|
|
63
|
+
throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
|
|
64
|
+
}
|
|
65
|
+
if (xData.length < stackedData.length) {
|
|
66
|
+
throw new Error(`MUI: data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items)`);
|
|
56
67
|
}
|
|
57
68
|
}
|
|
69
|
+
const linePath = d3Line().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y(d => yScale(d.y[1]));
|
|
58
70
|
const curve = getCurveFactory(series[seriesId].curve);
|
|
59
|
-
const
|
|
71
|
+
const formattedData = xData?.map((x, index) => ({
|
|
60
72
|
x,
|
|
61
|
-
y: stackedData[index]
|
|
62
|
-
}));
|
|
73
|
+
y: stackedData[index]
|
|
74
|
+
})) ?? [];
|
|
75
|
+
const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
|
|
63
76
|
return /*#__PURE__*/_jsx(LineElement, {
|
|
64
77
|
id: seriesId,
|
|
65
78
|
d: linePath.curve(curve)(d3Data) || undefined,
|
|
@@ -38,7 +38,7 @@ const MarkElementPath = styled('path', {
|
|
|
38
38
|
}) => ({
|
|
39
39
|
transform: `translate(${ownerState.x}px, ${ownerState.y}px)`,
|
|
40
40
|
transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
|
|
41
|
-
fill: theme.palette.background.paper,
|
|
41
|
+
fill: (theme.vars || theme).palette.background.paper,
|
|
42
42
|
stroke: ownerState.color,
|
|
43
43
|
strokeWidth: 2
|
|
44
44
|
}));
|
|
@@ -59,6 +59,16 @@ MarkElementPath.propTypes = {
|
|
|
59
59
|
}).isRequired,
|
|
60
60
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Demos:
|
|
64
|
+
*
|
|
65
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
66
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
67
|
+
*
|
|
68
|
+
* API:
|
|
69
|
+
*
|
|
70
|
+
* - [MarkElement API](https://mui.com/x/api/charts/mark-element/)
|
|
71
|
+
*/
|
|
62
72
|
function MarkElement(props) {
|
|
63
73
|
const {
|
|
64
74
|
x,
|
|
@@ -8,6 +8,16 @@ import { CartesianContext } from '../context/CartesianContextProvider';
|
|
|
8
8
|
import { MarkElement } from './MarkElement';
|
|
9
9
|
import { getValueToPositionMapper } from '../hooks/useScale';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
/**
|
|
12
|
+
* Demos:
|
|
13
|
+
*
|
|
14
|
+
* - [Lines](https://mui.com/x/react-charts/lines/)
|
|
15
|
+
* - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
|
|
16
|
+
*
|
|
17
|
+
* API:
|
|
18
|
+
*
|
|
19
|
+
* - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
|
|
20
|
+
*/
|
|
11
21
|
function MarkPlot(props) {
|
|
12
22
|
const {
|
|
13
23
|
slots,
|
|
@@ -41,6 +51,7 @@ function MarkPlot(props) {
|
|
|
41
51
|
xAxisKey = defaultXAxisId,
|
|
42
52
|
yAxisKey = defaultYAxisId,
|
|
43
53
|
stackedData,
|
|
54
|
+
data,
|
|
44
55
|
showMark = true
|
|
45
56
|
} = series[seriesId];
|
|
46
57
|
if (showMark === false) {
|
|
@@ -67,36 +78,57 @@ function MarkPlot(props) {
|
|
|
67
78
|
throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
|
|
68
79
|
}
|
|
69
80
|
return xData?.map((x, index) => {
|
|
70
|
-
const
|
|
81
|
+
const value = data[index] == null ? null : stackedData[index][1];
|
|
71
82
|
return {
|
|
72
83
|
x: xScale(x),
|
|
73
|
-
y: yScale(
|
|
84
|
+
y: value === null ? null : yScale(value),
|
|
74
85
|
position: x,
|
|
75
|
-
value
|
|
86
|
+
value,
|
|
76
87
|
index
|
|
77
88
|
};
|
|
78
|
-
}).filter(
|
|
89
|
+
}).filter(({
|
|
79
90
|
x,
|
|
80
91
|
y,
|
|
81
92
|
index,
|
|
82
93
|
position,
|
|
83
94
|
value
|
|
84
95
|
}) => {
|
|
85
|
-
|
|
96
|
+
if (value === null || y === null) {
|
|
97
|
+
// Remove missing data point
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
if (!isInRange({
|
|
101
|
+
x,
|
|
102
|
+
y
|
|
103
|
+
})) {
|
|
104
|
+
// Remove out of range
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
if (showMark === true) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return showMark({
|
|
86
111
|
x,
|
|
87
112
|
y,
|
|
88
113
|
index,
|
|
89
114
|
position,
|
|
90
115
|
value
|
|
91
|
-
})
|
|
116
|
+
});
|
|
117
|
+
}).map(({
|
|
118
|
+
x,
|
|
119
|
+
y,
|
|
120
|
+
index
|
|
121
|
+
}) => {
|
|
122
|
+
return /*#__PURE__*/_jsx(Mark, _extends({
|
|
92
123
|
id: seriesId,
|
|
93
124
|
dataIndex: index,
|
|
94
125
|
shape: "circle",
|
|
95
126
|
color: series[seriesId].color,
|
|
96
127
|
x: x,
|
|
97
|
-
y: y
|
|
128
|
+
y: y // Don't knwo why TS don't get from the filter that y can't be null
|
|
129
|
+
,
|
|
98
130
|
highlightScope: series[seriesId].highlightScope
|
|
99
|
-
}, slotProps?.mark), `${seriesId}-${index}`)
|
|
131
|
+
}, slotProps?.mark), `${seriesId}-${index}`);
|
|
100
132
|
});
|
|
101
133
|
});
|
|
102
134
|
})
|
|
@@ -24,7 +24,7 @@ const formatter = (params, dataset) => {
|
|
|
24
24
|
d3Dataset[index][id] = value;
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
|
-
} else if (dataset === undefined) {
|
|
27
|
+
} else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
|
|
28
28
|
throw new Error([`MUI: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
|
|
29
29
|
}
|
|
30
30
|
});
|
|
@@ -40,7 +40,8 @@ const formatter = (params, dataset) => {
|
|
|
40
40
|
// Use dataKey if needed and available
|
|
41
41
|
const dataKey = series[id].dataKey;
|
|
42
42
|
return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
|
|
43
|
-
})).
|
|
43
|
+
})).value((d, key) => d[key] ?? 0) // defaultize null value to 0
|
|
44
|
+
.order(stackingOrder).offset(stackingOffset)(d3Dataset);
|
|
44
45
|
ids.forEach((id, index) => {
|
|
45
46
|
const dataKey = series[id].dataKey;
|
|
46
47
|
completedSeries[id] = _extends({}, series[id], {
|
|
@@ -52,7 +53,7 @@ const formatter = (params, dataset) => {
|
|
|
52
53
|
return {
|
|
53
54
|
seriesOrder,
|
|
54
55
|
stackingGroups,
|
|
55
|
-
series: defaultizeValueFormatter(completedSeries, v => v
|
|
56
|
+
series: defaultizeValueFormatter(completedSeries, v => v?.toLocaleString())
|
|
56
57
|
};
|
|
57
58
|
};
|
|
58
59
|
export default formatter;
|
|
@@ -1,15 +1,14 @@
|
|
|
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", "
|
|
3
|
+
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "onClick", "isFaded", "isHighlighted", "startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "cornerRadius"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { arc as d3Arc } from 'd3-shape';
|
|
6
|
-
import
|
|
6
|
+
import { animated, to } from '@react-spring/web';
|
|
7
7
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
8
|
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
9
9
|
import { styled } from '@mui/material/styles';
|
|
10
10
|
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
11
|
-
import {
|
|
12
|
-
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
11
|
+
import { useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
13
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
13
|
export function getPieArcUtilityClass(slot) {
|
|
15
14
|
return generateUtilityClass('MuiPieArc', slot);
|
|
@@ -27,19 +26,16 @@ const useUtilityClasses = ownerState => {
|
|
|
27
26
|
};
|
|
28
27
|
return composeClasses(slots, getPieArcUtilityClass, classes);
|
|
29
28
|
};
|
|
30
|
-
const PieArcRoot = styled(
|
|
29
|
+
const PieArcRoot = styled(animated.path, {
|
|
31
30
|
name: 'MuiPieArc',
|
|
32
31
|
slot: 'Root',
|
|
33
32
|
overridesResolver: (_, styles) => styles.arc
|
|
34
33
|
})(({
|
|
35
|
-
ownerState,
|
|
36
34
|
theme
|
|
37
35
|
}) => ({
|
|
38
|
-
stroke: theme.palette.background.paper,
|
|
36
|
+
stroke: (theme.vars || theme).palette.background.paper,
|
|
39
37
|
strokeWidth: 1,
|
|
40
|
-
strokeLinejoin: 'round'
|
|
41
|
-
fill: ownerState.color,
|
|
42
|
-
opacity: ownerState.isFaded ? 0.3 : 1
|
|
38
|
+
strokeLinejoin: 'round'
|
|
43
39
|
}));
|
|
44
40
|
export default function PieArc(props) {
|
|
45
41
|
const {
|
|
@@ -48,29 +44,17 @@ export default function PieArc(props) {
|
|
|
48
44
|
classes: innerClasses,
|
|
49
45
|
color,
|
|
50
46
|
highlightScope,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
onClick,
|
|
48
|
+
isFaded,
|
|
49
|
+
isHighlighted,
|
|
50
|
+
startAngle,
|
|
51
|
+
endAngle,
|
|
52
|
+
paddingAngle,
|
|
53
|
+
innerRadius,
|
|
54
|
+
outerRadius,
|
|
55
|
+
cornerRadius
|
|
58
56
|
} = props,
|
|
59
57
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
60
|
-
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
61
|
-
const {
|
|
62
|
-
item
|
|
63
|
-
} = React.useContext(InteractionContext);
|
|
64
|
-
const isHighlighted = getIsHighlighted(item, {
|
|
65
|
-
type: 'pie',
|
|
66
|
-
seriesId: id,
|
|
67
|
-
dataIndex
|
|
68
|
-
}, highlightScope);
|
|
69
|
-
const isFaded = !isHighlighted && getIsFaded(item, {
|
|
70
|
-
type: 'pie',
|
|
71
|
-
seriesId: id,
|
|
72
|
-
dataIndex
|
|
73
|
-
}, highlightScope);
|
|
74
58
|
const ownerState = {
|
|
75
59
|
id,
|
|
76
60
|
dataIndex,
|
|
@@ -80,37 +64,22 @@ export default function PieArc(props) {
|
|
|
80
64
|
isHighlighted
|
|
81
65
|
};
|
|
82
66
|
const classes = useUtilityClasses(ownerState);
|
|
83
|
-
const
|
|
84
|
-
additionalRadius: 0
|
|
85
|
-
}, isFaded && faded || isHighlighted && highlighted || {});
|
|
86
|
-
const innerRadius = Math.max(0, attibuesOverride.innerRadius ?? baseInnerRadius);
|
|
87
|
-
const outerRadius = Math.max(0, attibuesOverride.outerRadius ?? baseOuterRadius + attibuesOverride.additionalRadius);
|
|
88
|
-
const cornerRadius = attibuesOverride.cornerRadius ?? baseCornerRadius;
|
|
67
|
+
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
89
68
|
return /*#__PURE__*/_jsx(PieArcRoot, _extends({
|
|
90
|
-
d: d3Arc().cornerRadius(
|
|
91
|
-
|
|
92
|
-
|
|
69
|
+
d: to([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], (sA, eA, pA, iR, oR, cR) => d3Arc().cornerRadius(cR)({
|
|
70
|
+
padAngle: pA,
|
|
71
|
+
startAngle: sA,
|
|
72
|
+
endAngle: eA,
|
|
73
|
+
innerRadius: iR,
|
|
74
|
+
outerRadius: oR
|
|
93
75
|
})),
|
|
76
|
+
onClick: onClick,
|
|
77
|
+
cursor: onClick ? 'pointer' : 'unset',
|
|
94
78
|
ownerState: ownerState,
|
|
95
79
|
className: classes.root
|
|
96
|
-
}, getInteractionItemProps({
|
|
80
|
+
}, other, getInteractionItemProps({
|
|
97
81
|
type: 'pie',
|
|
98
82
|
seriesId: id,
|
|
99
83
|
dataIndex
|
|
100
84
|
})));
|
|
101
|
-
}
|
|
102
|
-
process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
|
|
103
|
-
// ----------------------------- Warning --------------------------------
|
|
104
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
105
|
-
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
106
|
-
// ----------------------------------------------------------------------
|
|
107
|
-
classes: PropTypes.object,
|
|
108
|
-
cornerRadius: PropTypes.number,
|
|
109
|
-
dataIndex: PropTypes.number.isRequired,
|
|
110
|
-
highlightScope: PropTypes.shape({
|
|
111
|
-
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
112
|
-
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
113
|
-
}),
|
|
114
|
-
innerRadius: PropTypes.number,
|
|
115
|
-
outerRadius: PropTypes.number.isRequired
|
|
116
|
-
} : void 0;
|
|
85
|
+
}
|