@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
|
@@ -5,6 +5,16 @@ import { getValueToPositionMapper } from '../hooks/useScale';
|
|
|
5
5
|
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
6
6
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
/**
|
|
9
|
+
* Demos:
|
|
10
|
+
*
|
|
11
|
+
* - [Scatter](https://mui.com/x/react-charts/scatter/)
|
|
12
|
+
* - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
|
|
13
|
+
*
|
|
14
|
+
* API:
|
|
15
|
+
*
|
|
16
|
+
* - [Scatter API](https://mui.com/x/api/charts/scatter/)
|
|
17
|
+
*/
|
|
8
18
|
function Scatter(props) {
|
|
9
19
|
const {
|
|
10
20
|
series,
|
|
@@ -9,6 +9,16 @@ import { ChartsLegend } from '../ChartsLegend';
|
|
|
9
9
|
import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
/**
|
|
13
|
+
* Demos:
|
|
14
|
+
*
|
|
15
|
+
* - [Scatter](https://mui.com/x/react-charts/scatter/)
|
|
16
|
+
* - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
|
|
17
|
+
*
|
|
18
|
+
* API:
|
|
19
|
+
*
|
|
20
|
+
* - [ScatterChart API](https://mui.com/x/api/charts/scatter-chart/)
|
|
21
|
+
*/
|
|
12
22
|
const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props, ref) {
|
|
13
23
|
const {
|
|
14
24
|
xAxis,
|
|
@@ -78,18 +88,22 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
78
88
|
* @default xAxisIds[0] The id of the first provided axis
|
|
79
89
|
*/
|
|
80
90
|
bottomAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
81
|
-
axisId: PropTypes.string
|
|
91
|
+
axisId: PropTypes.string,
|
|
82
92
|
classes: PropTypes.object,
|
|
83
93
|
disableLine: PropTypes.bool,
|
|
84
94
|
disableTicks: PropTypes.bool,
|
|
85
95
|
fill: PropTypes.string,
|
|
86
96
|
label: PropTypes.string,
|
|
87
97
|
labelFontSize: PropTypes.number,
|
|
98
|
+
labelStyle: PropTypes.object,
|
|
88
99
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
89
100
|
slotProps: PropTypes.object,
|
|
90
101
|
slots: PropTypes.object,
|
|
91
102
|
stroke: PropTypes.string,
|
|
92
103
|
tickFontSize: PropTypes.number,
|
|
104
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
105
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
106
|
+
tickLabelStyle: PropTypes.object,
|
|
93
107
|
tickMaxStep: PropTypes.number,
|
|
94
108
|
tickMinStep: PropTypes.number,
|
|
95
109
|
tickNumber: PropTypes.number,
|
|
@@ -101,9 +115,21 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
101
115
|
* Color palette used to colorize multiple series.
|
|
102
116
|
*/
|
|
103
117
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
118
|
+
/**
|
|
119
|
+
* An array of objects that can be used to populate series and axes data using their `dataKey` property.
|
|
120
|
+
*/
|
|
104
121
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
105
122
|
desc: PropTypes.string,
|
|
123
|
+
/**
|
|
124
|
+
* If `true`, the charts will not listen to the mouse move event.
|
|
125
|
+
* It might break interactive features, but will improve performance.
|
|
126
|
+
* @default false
|
|
127
|
+
*/
|
|
106
128
|
disableAxisListener: PropTypes.bool,
|
|
129
|
+
/**
|
|
130
|
+
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
131
|
+
* @default undefined
|
|
132
|
+
*/
|
|
107
133
|
height: PropTypes.number,
|
|
108
134
|
/**
|
|
109
135
|
* Indicate which axis to display the left of the charts.
|
|
@@ -111,41 +137,47 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
111
137
|
* @default yAxisIds[0] The id of the first provided axis
|
|
112
138
|
*/
|
|
113
139
|
leftAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
114
|
-
axisId: PropTypes.string
|
|
140
|
+
axisId: PropTypes.string,
|
|
115
141
|
classes: PropTypes.object,
|
|
116
142
|
disableLine: PropTypes.bool,
|
|
117
143
|
disableTicks: PropTypes.bool,
|
|
118
144
|
fill: PropTypes.string,
|
|
119
145
|
label: PropTypes.string,
|
|
120
146
|
labelFontSize: PropTypes.number,
|
|
147
|
+
labelStyle: PropTypes.object,
|
|
121
148
|
position: PropTypes.oneOf(['left', 'right']),
|
|
122
149
|
slotProps: PropTypes.object,
|
|
123
150
|
slots: PropTypes.object,
|
|
124
151
|
stroke: PropTypes.string,
|
|
125
152
|
tickFontSize: PropTypes.number,
|
|
153
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
154
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
155
|
+
tickLabelStyle: PropTypes.object,
|
|
126
156
|
tickMaxStep: PropTypes.number,
|
|
127
157
|
tickMinStep: PropTypes.number,
|
|
128
158
|
tickNumber: PropTypes.number,
|
|
129
159
|
tickSize: PropTypes.number
|
|
130
160
|
}), PropTypes.string]),
|
|
161
|
+
/**
|
|
162
|
+
* @deprecated Consider using `slotProps.legend` instead.
|
|
163
|
+
*/
|
|
131
164
|
legend: PropTypes.shape({
|
|
132
165
|
classes: PropTypes.object,
|
|
133
166
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
134
167
|
hidden: PropTypes.bool,
|
|
135
|
-
itemWidth: PropTypes.number,
|
|
136
|
-
markSize: PropTypes.number,
|
|
137
|
-
offset: PropTypes.shape({
|
|
138
|
-
x: PropTypes.number,
|
|
139
|
-
y: PropTypes.number
|
|
140
|
-
}),
|
|
141
168
|
position: PropTypes.shape({
|
|
142
169
|
horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
|
|
143
170
|
vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
|
|
144
171
|
}),
|
|
145
172
|
slotProps: PropTypes.object,
|
|
146
|
-
slots: PropTypes.object
|
|
147
|
-
spacing: PropTypes.number
|
|
173
|
+
slots: PropTypes.object
|
|
148
174
|
}),
|
|
175
|
+
/**
|
|
176
|
+
* The margin between the SVG and the drawing area.
|
|
177
|
+
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
178
|
+
* Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
|
|
179
|
+
* @default object Depends on the charts type.
|
|
180
|
+
*/
|
|
149
181
|
margin: PropTypes.shape({
|
|
150
182
|
bottom: PropTypes.number,
|
|
151
183
|
left: PropTypes.number,
|
|
@@ -158,18 +190,22 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
158
190
|
* @default null
|
|
159
191
|
*/
|
|
160
192
|
rightAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
161
|
-
axisId: PropTypes.string
|
|
193
|
+
axisId: PropTypes.string,
|
|
162
194
|
classes: PropTypes.object,
|
|
163
195
|
disableLine: PropTypes.bool,
|
|
164
196
|
disableTicks: PropTypes.bool,
|
|
165
197
|
fill: PropTypes.string,
|
|
166
198
|
label: PropTypes.string,
|
|
167
199
|
labelFontSize: PropTypes.number,
|
|
200
|
+
labelStyle: PropTypes.object,
|
|
168
201
|
position: PropTypes.oneOf(['left', 'right']),
|
|
169
202
|
slotProps: PropTypes.object,
|
|
170
203
|
slots: PropTypes.object,
|
|
171
204
|
stroke: PropTypes.string,
|
|
172
205
|
tickFontSize: PropTypes.number,
|
|
206
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
207
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
208
|
+
tickLabelStyle: PropTypes.object,
|
|
173
209
|
tickMaxStep: PropTypes.number,
|
|
174
210
|
tickMinStep: PropTypes.number,
|
|
175
211
|
tickNumber: PropTypes.number,
|
|
@@ -210,6 +246,8 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
210
246
|
axisContent: PropTypes.elementType,
|
|
211
247
|
classes: PropTypes.object,
|
|
212
248
|
itemContent: PropTypes.elementType,
|
|
249
|
+
slotProps: PropTypes.object,
|
|
250
|
+
slots: PropTypes.object,
|
|
213
251
|
trigger: PropTypes.oneOf(['axis', 'item', 'none'])
|
|
214
252
|
}),
|
|
215
253
|
/**
|
|
@@ -218,18 +256,22 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
218
256
|
* @default null
|
|
219
257
|
*/
|
|
220
258
|
topAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
221
|
-
axisId: PropTypes.string
|
|
259
|
+
axisId: PropTypes.string,
|
|
222
260
|
classes: PropTypes.object,
|
|
223
261
|
disableLine: PropTypes.bool,
|
|
224
262
|
disableTicks: PropTypes.bool,
|
|
225
263
|
fill: PropTypes.string,
|
|
226
264
|
label: PropTypes.string,
|
|
227
265
|
labelFontSize: PropTypes.number,
|
|
266
|
+
labelStyle: PropTypes.object,
|
|
228
267
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
229
268
|
slotProps: PropTypes.object,
|
|
230
269
|
slots: PropTypes.object,
|
|
231
270
|
stroke: PropTypes.string,
|
|
232
271
|
tickFontSize: PropTypes.number,
|
|
272
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
273
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
274
|
+
tickLabelStyle: PropTypes.object,
|
|
233
275
|
tickMaxStep: PropTypes.number,
|
|
234
276
|
tickMinStep: PropTypes.number,
|
|
235
277
|
tickNumber: PropTypes.number,
|
|
@@ -241,7 +283,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
241
283
|
x: PropTypes.number,
|
|
242
284
|
y: PropTypes.number
|
|
243
285
|
}),
|
|
286
|
+
/**
|
|
287
|
+
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
288
|
+
* @default undefined
|
|
289
|
+
*/
|
|
244
290
|
width: PropTypes.number,
|
|
291
|
+
/**
|
|
292
|
+
* The configuration of the x-axes.
|
|
293
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
|
|
294
|
+
*/
|
|
245
295
|
xAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
246
296
|
axisId: PropTypes.string,
|
|
247
297
|
classes: PropTypes.object,
|
|
@@ -254,6 +304,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
254
304
|
id: PropTypes.string,
|
|
255
305
|
label: PropTypes.string,
|
|
256
306
|
labelFontSize: PropTypes.number,
|
|
307
|
+
labelStyle: PropTypes.object,
|
|
257
308
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
258
309
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
259
310
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -262,12 +313,19 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
262
313
|
slots: PropTypes.object,
|
|
263
314
|
stroke: PropTypes.string,
|
|
264
315
|
tickFontSize: PropTypes.number,
|
|
316
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
317
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
318
|
+
tickLabelStyle: PropTypes.object,
|
|
265
319
|
tickMaxStep: PropTypes.number,
|
|
266
320
|
tickMinStep: PropTypes.number,
|
|
267
321
|
tickNumber: PropTypes.number,
|
|
268
322
|
tickSize: PropTypes.number,
|
|
269
323
|
valueFormatter: PropTypes.func
|
|
270
324
|
})),
|
|
325
|
+
/**
|
|
326
|
+
* The configuration of the y-axes.
|
|
327
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
|
|
328
|
+
*/
|
|
271
329
|
yAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
272
330
|
axisId: PropTypes.string,
|
|
273
331
|
classes: PropTypes.object,
|
|
@@ -280,6 +338,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
280
338
|
id: PropTypes.string,
|
|
281
339
|
label: PropTypes.string,
|
|
282
340
|
labelFontSize: PropTypes.number,
|
|
341
|
+
labelStyle: PropTypes.object,
|
|
283
342
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
284
343
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
285
344
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -288,6 +347,9 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
288
347
|
slots: PropTypes.object,
|
|
289
348
|
stroke: PropTypes.string,
|
|
290
349
|
tickFontSize: PropTypes.number,
|
|
350
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
351
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
352
|
+
tickLabelStyle: PropTypes.object,
|
|
291
353
|
tickMaxStep: PropTypes.number,
|
|
292
354
|
tickMinStep: PropTypes.number,
|
|
293
355
|
tickNumber: PropTypes.number,
|
|
@@ -5,6 +5,16 @@ import { Scatter } from './Scatter';
|
|
|
5
5
|
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
6
6
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
/**
|
|
9
|
+
* Demos:
|
|
10
|
+
*
|
|
11
|
+
* - [Scatter](https://mui.com/x/react-charts/scatter/)
|
|
12
|
+
* - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
|
|
13
|
+
*
|
|
14
|
+
* API:
|
|
15
|
+
*
|
|
16
|
+
* - [ScatterPlot API](https://mui.com/x/api/charts/scatter-plot/)
|
|
17
|
+
*/
|
|
8
18
|
function ScatterPlot(props) {
|
|
9
19
|
var _slots$scatter;
|
|
10
20
|
const {
|
|
@@ -15,6 +15,16 @@ const SPARKLINE_DEFAULT_MARGIN = {
|
|
|
15
15
|
left: 5,
|
|
16
16
|
right: 5
|
|
17
17
|
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Demos:
|
|
21
|
+
*
|
|
22
|
+
* - [SparkLine](https://mui.com/x/react-charts/sparkline/)
|
|
23
|
+
*
|
|
24
|
+
* API:
|
|
25
|
+
*
|
|
26
|
+
* - [SparkLineChart API](https://mui.com/x/api/charts/spark-line-chart/)
|
|
27
|
+
*/
|
|
18
28
|
const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(props, ref) {
|
|
19
29
|
const {
|
|
20
30
|
xAxis,
|
|
@@ -58,7 +68,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
58
68
|
margin: margin,
|
|
59
69
|
xAxis: [_extends({
|
|
60
70
|
id: DEFAULT_X_AXIS_KEY,
|
|
61
|
-
scaleType: plotType === 'bar' ? 'band' : '
|
|
71
|
+
scaleType: plotType === 'bar' ? 'band' : 'point',
|
|
62
72
|
data: Array.from({
|
|
63
73
|
length: data.length
|
|
64
74
|
}, (_, index) => index),
|
|
@@ -69,7 +79,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
69
79
|
disableAxisListener: (!showTooltip || (tooltip == null ? void 0 : tooltip.trigger) !== 'axis') && (axisHighlight == null ? void 0 : axisHighlight.x) === 'none' && (axisHighlight == null ? void 0 : axisHighlight.y) === 'none',
|
|
70
80
|
children: [plotType === 'bar' && /*#__PURE__*/_jsx(BarPlot, {
|
|
71
81
|
slots: slots,
|
|
72
|
-
slotProps: slotProps
|
|
82
|
+
slotProps: slotProps,
|
|
83
|
+
sx: {
|
|
84
|
+
shapeRendering: 'auto'
|
|
85
|
+
}
|
|
73
86
|
}), plotType === 'line' && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
74
87
|
children: [/*#__PURE__*/_jsx(AreaPlot, {
|
|
75
88
|
slots: slots,
|
|
@@ -81,7 +94,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
81
94
|
slots: slots,
|
|
82
95
|
slotProps: slotProps
|
|
83
96
|
})]
|
|
84
|
-
}), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip
|
|
97
|
+
}), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
|
|
98
|
+
slotProps: slotProps,
|
|
99
|
+
slots: slots
|
|
100
|
+
})), children]
|
|
85
101
|
});
|
|
86
102
|
});
|
|
87
103
|
process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
@@ -113,10 +129,28 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
113
129
|
* Data to plot.
|
|
114
130
|
*/
|
|
115
131
|
data: PropTypes.arrayOf(PropTypes.number).isRequired,
|
|
132
|
+
/**
|
|
133
|
+
* An array of objects that can be used to populate series and axes data using their `dataKey` property.
|
|
134
|
+
*/
|
|
116
135
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
117
136
|
desc: PropTypes.string,
|
|
137
|
+
/**
|
|
138
|
+
* If `true`, the charts will not listen to the mouse move event.
|
|
139
|
+
* It might break interactive features, but will improve performance.
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
118
142
|
disableAxisListener: PropTypes.bool,
|
|
143
|
+
/**
|
|
144
|
+
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
145
|
+
* @default undefined
|
|
146
|
+
*/
|
|
119
147
|
height: PropTypes.number,
|
|
148
|
+
/**
|
|
149
|
+
* The margin between the SVG and the drawing area.
|
|
150
|
+
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
151
|
+
* Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
|
|
152
|
+
* @default object Depends on the charts type.
|
|
153
|
+
*/
|
|
120
154
|
margin: PropTypes.shape({
|
|
121
155
|
bottom: PropTypes.number,
|
|
122
156
|
left: PropTypes.number,
|
|
@@ -156,6 +190,8 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
156
190
|
axisContent: PropTypes.elementType,
|
|
157
191
|
classes: PropTypes.object,
|
|
158
192
|
itemContent: PropTypes.elementType,
|
|
193
|
+
slotProps: PropTypes.object,
|
|
194
|
+
slots: PropTypes.object,
|
|
159
195
|
trigger: PropTypes.oneOf(['axis', 'item', 'none'])
|
|
160
196
|
}),
|
|
161
197
|
/**
|
|
@@ -170,6 +206,10 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
170
206
|
x: PropTypes.number,
|
|
171
207
|
y: PropTypes.number
|
|
172
208
|
}),
|
|
209
|
+
/**
|
|
210
|
+
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
211
|
+
* @default undefined
|
|
212
|
+
*/
|
|
173
213
|
width: PropTypes.number,
|
|
174
214
|
/**
|
|
175
215
|
* The xAxis configuration.
|
|
@@ -187,6 +227,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
187
227
|
id: PropTypes.string,
|
|
188
228
|
label: PropTypes.string,
|
|
189
229
|
labelFontSize: PropTypes.number,
|
|
230
|
+
labelStyle: PropTypes.object,
|
|
190
231
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
191
232
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
192
233
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -195,6 +236,9 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
195
236
|
slots: PropTypes.object,
|
|
196
237
|
stroke: PropTypes.string,
|
|
197
238
|
tickFontSize: PropTypes.number,
|
|
239
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
240
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
241
|
+
tickLabelStyle: PropTypes.object,
|
|
198
242
|
tickMaxStep: PropTypes.number,
|
|
199
243
|
tickMinStep: PropTypes.number,
|
|
200
244
|
tickNumber: PropTypes.number,
|
package/esm/constants.js
CHANGED
|
@@ -10,9 +10,10 @@ import { getScale } from '../internals/getScale';
|
|
|
10
10
|
import { DrawingContext } from './DrawingProvider';
|
|
11
11
|
import { SeriesContext } from './SeriesContextProvider';
|
|
12
12
|
import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
|
|
13
|
-
import {
|
|
13
|
+
import { getTickNumber } from '../hooks/useTicks';
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
const DEFAULT_CATEGORY_GAP_RATIO = 0.
|
|
15
|
+
const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
|
|
16
|
+
const DEFAULT_BAR_GAP_RATIO = 0.1;
|
|
16
17
|
|
|
17
18
|
// TODO: those might be better placed in a distinct file
|
|
18
19
|
const xExtremumGetters = {
|
|
@@ -31,6 +32,12 @@ export const CartesianContext = /*#__PURE__*/React.createContext({
|
|
|
31
32
|
xAxisIds: [],
|
|
32
33
|
yAxisIds: []
|
|
33
34
|
});
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* API:
|
|
38
|
+
*
|
|
39
|
+
* - [CartesianContextProvider API](https://mui.com/x/api/charts/cartesian-context-provider/)
|
|
40
|
+
*/
|
|
34
41
|
function CartesianContextProvider({
|
|
35
42
|
xAxis: inXAxis,
|
|
36
43
|
yAxis: inYAxis,
|
|
@@ -104,20 +111,21 @@ function CartesianContextProvider({
|
|
|
104
111
|
const [minData, maxData] = getAxisExtremum(axis, xExtremumGetters, isDefaultAxis);
|
|
105
112
|
const range = [drawingArea.left, drawingArea.left + drawingArea.width];
|
|
106
113
|
if (isBandScaleConfig(axis)) {
|
|
107
|
-
var _axis$categoryGapRati;
|
|
114
|
+
var _axis$categoryGapRati, _axis$barGapRatio;
|
|
108
115
|
const categoryGapRatio = (_axis$categoryGapRati = axis.categoryGapRatio) != null ? _axis$categoryGapRati : DEFAULT_CATEGORY_GAP_RATIO;
|
|
116
|
+
const barGapRatio = (_axis$barGapRatio = axis.barGapRatio) != null ? _axis$barGapRatio : DEFAULT_BAR_GAP_RATIO;
|
|
109
117
|
completedXAxis[axis.id] = _extends({
|
|
110
118
|
categoryGapRatio,
|
|
111
|
-
barGapRatio
|
|
119
|
+
barGapRatio
|
|
112
120
|
}, axis, {
|
|
113
121
|
scale: scaleBand(axis.data, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
|
|
114
|
-
|
|
122
|
+
tickNumber: axis.data.length
|
|
115
123
|
});
|
|
116
124
|
}
|
|
117
125
|
if (isPointScaleConfig(axis)) {
|
|
118
126
|
completedXAxis[axis.id] = _extends({}, axis, {
|
|
119
127
|
scale: scalePoint(axis.data, range),
|
|
120
|
-
|
|
128
|
+
tickNumber: axis.data.length
|
|
121
129
|
});
|
|
122
130
|
}
|
|
123
131
|
if (axis.scaleType === 'band' || axis.scaleType === 'point') {
|
|
@@ -126,17 +134,17 @@ function CartesianContextProvider({
|
|
|
126
134
|
}
|
|
127
135
|
const scaleType = (_axis$scaleType = axis.scaleType) != null ? _axis$scaleType : 'linear';
|
|
128
136
|
const extremums = [(_axis$min = axis.min) != null ? _axis$min : minData, (_axis$max = axis.max) != null ? _axis$max : maxData];
|
|
129
|
-
const
|
|
137
|
+
const tickNumber = getTickNumber(_extends({}, axis, {
|
|
130
138
|
range,
|
|
131
139
|
domain: extremums
|
|
132
140
|
}));
|
|
133
|
-
const niceScale = getScale(scaleType, extremums, range).nice(
|
|
141
|
+
const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
|
|
134
142
|
const niceDomain = niceScale.domain();
|
|
135
143
|
const domain = [(_axis$min2 = axis.min) != null ? _axis$min2 : niceDomain[0], (_axis$max2 = axis.max) != null ? _axis$max2 : niceDomain[1]];
|
|
136
144
|
completedXAxis[axis.id] = _extends({}, axis, {
|
|
137
145
|
scaleType,
|
|
138
146
|
scale: niceScale.domain(domain),
|
|
139
|
-
|
|
147
|
+
tickNumber
|
|
140
148
|
});
|
|
141
149
|
});
|
|
142
150
|
const allYAxis = [...((_yAxis$map = yAxis == null ? void 0 : yAxis.map((axis, index) => _extends({
|
|
@@ -161,13 +169,13 @@ function CartesianContextProvider({
|
|
|
161
169
|
barGapRatio: 0
|
|
162
170
|
}, axis, {
|
|
163
171
|
scale: scaleBand(axis.data, [range[1], range[0]]).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
|
|
164
|
-
|
|
172
|
+
tickNumber: axis.data.length
|
|
165
173
|
});
|
|
166
174
|
}
|
|
167
175
|
if (isPointScaleConfig(axis)) {
|
|
168
176
|
completedYAxis[axis.id] = _extends({}, axis, {
|
|
169
177
|
scale: scalePoint(axis.data, [range[1], range[0]]),
|
|
170
|
-
|
|
178
|
+
tickNumber: axis.data.length
|
|
171
179
|
});
|
|
172
180
|
}
|
|
173
181
|
if (axis.scaleType === 'band' || axis.scaleType === 'point') {
|
|
@@ -176,17 +184,17 @@ function CartesianContextProvider({
|
|
|
176
184
|
}
|
|
177
185
|
const scaleType = (_axis$scaleType2 = axis.scaleType) != null ? _axis$scaleType2 : 'linear';
|
|
178
186
|
const extremums = [(_axis$min3 = axis.min) != null ? _axis$min3 : minData, (_axis$max3 = axis.max) != null ? _axis$max3 : maxData];
|
|
179
|
-
const
|
|
187
|
+
const tickNumber = getTickNumber(_extends({}, axis, {
|
|
180
188
|
range,
|
|
181
189
|
domain: extremums
|
|
182
190
|
}));
|
|
183
|
-
const niceScale = getScale(scaleType, extremums, range).nice(
|
|
191
|
+
const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
|
|
184
192
|
const niceDomain = niceScale.domain();
|
|
185
193
|
const domain = [(_axis$min4 = axis.min) != null ? _axis$min4 : niceDomain[0], (_axis$max4 = axis.max) != null ? _axis$max4 : niceDomain[1]];
|
|
186
194
|
completedYAxis[axis.id] = _extends({}, axis, {
|
|
187
195
|
scaleType,
|
|
188
196
|
scale: niceScale.domain(domain),
|
|
189
|
-
|
|
197
|
+
tickNumber
|
|
190
198
|
});
|
|
191
199
|
});
|
|
192
200
|
return {
|
|
@@ -213,7 +221,14 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
|
|
|
213
221
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
214
222
|
// ----------------------------------------------------------------------
|
|
215
223
|
children: PropTypes.node,
|
|
224
|
+
/**
|
|
225
|
+
* An array of objects that can be used to populate series and axes data using their `dataKey` property.
|
|
226
|
+
*/
|
|
216
227
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
228
|
+
/**
|
|
229
|
+
* The configuration of the x-axes.
|
|
230
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
|
|
231
|
+
*/
|
|
217
232
|
xAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
218
233
|
axisId: PropTypes.string,
|
|
219
234
|
classes: PropTypes.object,
|
|
@@ -226,6 +241,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
|
|
|
226
241
|
id: PropTypes.string,
|
|
227
242
|
label: PropTypes.string,
|
|
228
243
|
labelFontSize: PropTypes.number,
|
|
244
|
+
labelStyle: PropTypes.object,
|
|
229
245
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
230
246
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
231
247
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -234,12 +250,19 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
|
|
|
234
250
|
slots: PropTypes.object,
|
|
235
251
|
stroke: PropTypes.string,
|
|
236
252
|
tickFontSize: PropTypes.number,
|
|
253
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
254
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
255
|
+
tickLabelStyle: PropTypes.object,
|
|
237
256
|
tickMaxStep: PropTypes.number,
|
|
238
257
|
tickMinStep: PropTypes.number,
|
|
239
258
|
tickNumber: PropTypes.number,
|
|
240
259
|
tickSize: PropTypes.number,
|
|
241
260
|
valueFormatter: PropTypes.func
|
|
242
261
|
})),
|
|
262
|
+
/**
|
|
263
|
+
* The configuration of the y-axes.
|
|
264
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
|
|
265
|
+
*/
|
|
243
266
|
yAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
244
267
|
axisId: PropTypes.string,
|
|
245
268
|
classes: PropTypes.object,
|
|
@@ -252,6 +275,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
|
|
|
252
275
|
id: PropTypes.string,
|
|
253
276
|
label: PropTypes.string,
|
|
254
277
|
labelFontSize: PropTypes.number,
|
|
278
|
+
labelStyle: PropTypes.object,
|
|
255
279
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
256
280
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
257
281
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -260,6 +284,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
|
|
|
260
284
|
slots: PropTypes.object,
|
|
261
285
|
stroke: PropTypes.string,
|
|
262
286
|
tickFontSize: PropTypes.number,
|
|
287
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
288
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
289
|
+
tickLabelStyle: PropTypes.object,
|
|
263
290
|
tickMaxStep: PropTypes.number,
|
|
264
291
|
tickMinStep: PropTypes.number,
|
|
265
292
|
tickNumber: PropTypes.number,
|
|
@@ -9,12 +9,20 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
9
9
|
export const DrawingContext = /*#__PURE__*/React.createContext({
|
|
10
10
|
top: 0,
|
|
11
11
|
left: 0,
|
|
12
|
+
bottom: 0,
|
|
13
|
+
right: 0,
|
|
12
14
|
height: 300,
|
|
13
15
|
width: 400
|
|
14
16
|
});
|
|
15
17
|
export const SVGContext = /*#__PURE__*/React.createContext({
|
|
16
18
|
current: null
|
|
17
19
|
});
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* API:
|
|
23
|
+
*
|
|
24
|
+
* - [DrawingProvider API](https://mui.com/x/api/charts/drawing-provider/)
|
|
25
|
+
*/
|
|
18
26
|
function DrawingProvider({
|
|
19
27
|
width,
|
|
20
28
|
height,
|
|
@@ -38,6 +46,12 @@ process.env.NODE_ENV !== "production" ? DrawingProvider.propTypes = {
|
|
|
38
46
|
// ----------------------------------------------------------------------
|
|
39
47
|
children: PropTypes.node,
|
|
40
48
|
height: PropTypes.number.isRequired,
|
|
49
|
+
/**
|
|
50
|
+
* The margin between the SVG and the drawing area.
|
|
51
|
+
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
52
|
+
* Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
|
|
53
|
+
* @default object Depends on the charts type.
|
|
54
|
+
*/
|
|
41
55
|
margin: PropTypes.shape({
|
|
42
56
|
bottom: PropTypes.number,
|
|
43
57
|
left: PropTypes.number,
|
|
@@ -6,6 +6,8 @@ const useChartDimensions = (width, height, margin) => {
|
|
|
6
6
|
const drawingArea = React.useMemo(() => ({
|
|
7
7
|
left: defaultizedMargin.left,
|
|
8
8
|
top: defaultizedMargin.top,
|
|
9
|
+
right: defaultizedMargin.right,
|
|
10
|
+
bottom: defaultizedMargin.bottom,
|
|
9
11
|
width: Math.max(0, width - defaultizedMargin.left - defaultizedMargin.right),
|
|
10
12
|
height: Math.max(0, height - defaultizedMargin.top - defaultizedMargin.bottom)
|
|
11
13
|
}), [width, height, defaultizedMargin.top, defaultizedMargin.bottom, defaultizedMargin.left, defaultizedMargin.right]);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
3
|
+
export function useMounted(defer = false) {
|
|
4
|
+
const [mountedState, setMountedState] = React.useState(false);
|
|
5
|
+
useEnhancedEffect(() => {
|
|
6
|
+
if (!defer) {
|
|
7
|
+
setMountedState(true);
|
|
8
|
+
}
|
|
9
|
+
}, [defer]);
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
if (defer) {
|
|
12
|
+
setMountedState(true);
|
|
13
|
+
}
|
|
14
|
+
}, [defer]);
|
|
15
|
+
return mountedState;
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns `boolean` or `null`, used to automatically
|
|
5
|
+
* set skipAnimations to the value of the user's
|
|
6
|
+
* `prefers-reduced-motion` query.
|
|
7
|
+
*
|
|
8
|
+
* The return value, post-effect, is the value of their prefered setting
|
|
9
|
+
*/
|
|
10
|
+
export const useReducedMotion = () => {
|
|
11
|
+
// Taken from: https://github.com/pmndrs/react-spring/blob/02ec877bbfab0df46da0e4a47d5f68d3e731206a/packages/shared/src/hooks/useReducedMotion.ts#L13
|
|
12
|
+
|
|
13
|
+
useIsomorphicLayoutEffect(() => {
|
|
14
|
+
const mql = window.matchMedia('(prefers-reduced-motion)');
|
|
15
|
+
const handleMediaChange = e => {
|
|
16
|
+
Globals.assign({
|
|
17
|
+
// Modification such the react-spring implementation such that this hook can remove animation but never activate animation.
|
|
18
|
+
skipAnimation: e.matches || undefined
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
handleMediaChange(mql);
|
|
22
|
+
mql.addEventListener('change', handleMediaChange);
|
|
23
|
+
return () => {
|
|
24
|
+
mql.removeEventListener('change', handleMediaChange);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
};
|