@mui/x-charts 8.0.0-alpha.10 → 8.0.0-alpha.11
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 +1 -2
- package/BarChart/BarChart.js +2 -4
- package/BarChart/BarChart.plugins.d.ts +12 -0
- package/BarChart/BarChart.plugins.js +5 -0
- package/BarChart/useBarChartProps.d.ts +2 -3
- package/BarChart/useBarChartProps.js +5 -8
- package/CHANGELOG.md +107 -2
- package/ChartContainer/ChartContainer.d.ts +2 -2
- package/ChartContainer/ChartContainer.js +8 -1
- package/ChartContainer/useChartContainerProps.d.ts +4 -3
- package/ChartContainer/useChartContainerProps.js +11 -7
- package/ChartDataProvider/ChartDataProvider.js +4 -1
- package/ChartsSurface/ChartsSurface.d.ts +0 -6
- package/ChartsSurface/ChartsSurface.js +1 -10
- package/ChartsTooltip/ChartsTooltipContainer.js +2 -2
- package/Gauge/Gauge.js +0 -6
- package/Gauge/GaugeContainer.js +0 -6
- package/LineChart/LineChart.d.ts +1 -2
- package/LineChart/LineChart.js +2 -4
- package/LineChart/LineChart.plugins.d.ts +12 -0
- package/LineChart/LineChart.plugins.js +5 -0
- package/LineChart/useLineChartProps.d.ts +2 -3
- package/LineChart/useLineChartProps.js +5 -8
- package/PieChart/PieChart.d.ts +3 -1
- package/PieChart/PieChart.js +8 -115
- package/PieChart/PieChart.plugins.d.ts +5 -0
- package/PieChart/PieChart.plugins.js +3 -0
- package/ScatterChart/ScatterChart.js +8 -1
- package/ScatterChart/ScatterChart.plugins.d.ts +12 -0
- package/ScatterChart/ScatterChart.plugins.js +5 -0
- package/ScatterChart/useScatterChartProps.d.ts +2 -1
- package/ScatterChart/useScatterChartProps.js +3 -1
- package/SparkLineChart/SparkLineChart.d.ts +12 -0
- package/SparkLineChart/SparkLineChart.js +24 -4
- package/colorPalettes/colorPalettes.d.ts +2 -0
- package/context/ChartProvider/ChartProvider.types.d.ts +2 -1
- package/hooks/useAxisEvents.d.ts +0 -1
- package/hooks/useAxisEvents.js +0 -165
- package/index.d.ts +0 -1
- package/index.js +1 -2
- package/internals/plugins/allPlugins.d.ts +1 -1
- package/internals/plugins/corePlugins/useChartSeries/useChartSeries.types.d.ts +5 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.d.ts +9 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +59 -0
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.d.ts +1 -2
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +142 -5
- package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.types.d.ts +19 -2
- package/models/axis.d.ts +17 -0
- package/models/axis.js +5 -1
- package/models/index.d.ts +1 -1
- package/modern/BarChart/BarChart.js +2 -4
- package/modern/BarChart/BarChart.plugins.js +5 -0
- package/modern/BarChart/useBarChartProps.js +5 -8
- package/modern/ChartContainer/ChartContainer.js +8 -1
- package/modern/ChartContainer/useChartContainerProps.js +11 -7
- package/modern/ChartDataProvider/ChartDataProvider.js +4 -1
- package/modern/ChartsSurface/ChartsSurface.js +1 -10
- package/modern/ChartsTooltip/ChartsTooltipContainer.js +2 -2
- package/modern/Gauge/Gauge.js +0 -6
- package/modern/Gauge/GaugeContainer.js +0 -6
- package/modern/LineChart/LineChart.js +2 -4
- package/modern/LineChart/LineChart.plugins.js +5 -0
- package/modern/LineChart/useLineChartProps.js +5 -8
- package/modern/PieChart/PieChart.js +8 -115
- package/modern/PieChart/PieChart.plugins.js +3 -0
- package/modern/ScatterChart/ScatterChart.js +8 -1
- package/modern/ScatterChart/ScatterChart.plugins.js +5 -0
- package/modern/ScatterChart/useScatterChartProps.js +3 -1
- package/modern/SparkLineChart/SparkLineChart.js +24 -4
- package/modern/hooks/useAxisEvents.js +0 -165
- package/modern/index.js +1 -2
- package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +59 -0
- package/modern/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +142 -5
- package/modern/models/axis.js +5 -1
- package/node/BarChart/BarChart.js +2 -4
- package/node/BarChart/BarChart.plugins.js +11 -0
- package/node/BarChart/useBarChartProps.js +5 -8
- package/node/ChartContainer/ChartContainer.js +8 -1
- package/node/ChartContainer/useChartContainerProps.js +11 -7
- package/node/ChartDataProvider/ChartDataProvider.js +4 -1
- package/node/ChartsSurface/ChartsSurface.js +1 -10
- package/node/ChartsTooltip/ChartsTooltipContainer.js +2 -2
- package/node/Gauge/Gauge.js +0 -6
- package/node/Gauge/GaugeContainer.js +0 -6
- package/node/LineChart/LineChart.js +2 -4
- package/node/LineChart/LineChart.plugins.js +11 -0
- package/node/LineChart/useLineChartProps.js +5 -8
- package/node/PieChart/PieChart.js +8 -115
- package/node/PieChart/PieChart.plugins.js +9 -0
- package/node/ScatterChart/ScatterChart.js +8 -1
- package/node/ScatterChart/ScatterChart.plugins.js +11 -0
- package/node/ScatterChart/useScatterChartProps.js +3 -1
- package/node/SparkLineChart/SparkLineChart.js +24 -4
- package/node/hooks/useAxisEvents.js +1 -173
- package/node/index.js +1 -12
- package/node/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisValue.js +65 -0
- package/node/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +141 -4
- package/node/models/axis.js +5 -1
- package/package.json +2 -2
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +0 -20
- package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +0 -82
- package/ChartsOnAxisClickHandler/index.d.ts +0 -1
- package/ChartsOnAxisClickHandler/index.js +0 -1
- package/ChartsOnAxisClickHandler/package.json +0 -6
- package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +0 -82
- package/modern/ChartsOnAxisClickHandler/index.js +0 -1
- package/node/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +0 -88
- package/node/ChartsOnAxisClickHandler/index.js +0 -16
|
@@ -14,7 +14,6 @@ import { ChartsAxisHighlight } from "../ChartsAxisHighlight/index.js";
|
|
|
14
14
|
import { ChartsClipPath } from "../ChartsClipPath/index.js";
|
|
15
15
|
import { LineHighlightPlot } from "./LineHighlightPlot.js";
|
|
16
16
|
import { ChartsGrid } from "../ChartsGrid/index.js";
|
|
17
|
-
import { ChartsOnAxisClickHandler } from "../ChartsOnAxisClickHandler/index.js";
|
|
18
17
|
import { ChartsOverlay } from "../ChartsOverlay/index.js";
|
|
19
18
|
import { useLineChartProps } from "./useLineChartProps.js";
|
|
20
19
|
import { useChartContainerProps } from "../ChartContainer/useChartContainerProps.js";
|
|
@@ -40,7 +39,6 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(inProps, ref)
|
|
|
40
39
|
const {
|
|
41
40
|
chartsWrapperProps,
|
|
42
41
|
chartContainerProps,
|
|
43
|
-
axisClickHandlerProps,
|
|
44
42
|
gridProps,
|
|
45
43
|
clipPathProps,
|
|
46
44
|
clipPathGroupProps,
|
|
@@ -62,7 +60,7 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(inProps, ref)
|
|
|
62
60
|
return /*#__PURE__*/_jsx(ChartDataProvider, _extends({}, chartDataProviderProps, {
|
|
63
61
|
children: /*#__PURE__*/_jsxs(ChartsWrapper, _extends({}, chartsWrapperProps, {
|
|
64
62
|
children: [!props.hideLegend && /*#__PURE__*/_jsx(ChartsLegend, _extends({}, legendProps)), /*#__PURE__*/_jsxs(ChartsSurface, _extends({}, chartsSurfaceProps, {
|
|
65
|
-
children: [
|
|
63
|
+
children: [/*#__PURE__*/_jsx(ChartsGrid, _extends({}, gridProps)), /*#__PURE__*/_jsxs("g", _extends({}, clipPathGroupProps, {
|
|
66
64
|
children: [/*#__PURE__*/_jsx(AreaPlot, _extends({}, areaPlotProps)), /*#__PURE__*/_jsx(LinePlot, _extends({}, linePlotProps)), /*#__PURE__*/_jsx(ChartsOverlay, _extends({}, overlayProps)), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlightProps))]
|
|
67
65
|
})), /*#__PURE__*/_jsx(ChartsAxis, _extends({}, chartsAxisProps)), /*#__PURE__*/_jsx("g", {
|
|
68
66
|
"data-drawing-container": true,
|
|
@@ -99,7 +97,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
99
97
|
className: PropTypes.string,
|
|
100
98
|
/**
|
|
101
99
|
* Color palette used to colorize multiple series.
|
|
102
|
-
* @default
|
|
100
|
+
* @default rainbowSurgePalette
|
|
103
101
|
*/
|
|
104
102
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
105
103
|
/**
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { useChartZAxis } from "../internals/plugins/featurePlugins/useChartZAxis/index.js";
|
|
2
|
+
import { useChartCartesianAxis } from "../internals/plugins/featurePlugins/useChartCartesianAxis/index.js";
|
|
3
|
+
import { useChartInteraction } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
|
|
4
|
+
import { useChartHighlight } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
|
|
5
|
+
export const LINE_CHART_PLUGINS = [useChartZAxis, useChartCartesianAxis, useChartInteraction, useChartHighlight];
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["xAxis", "yAxis", "series", "width", "height", "margin", "colors", "dataset", "sx", "
|
|
5
|
+
const _excluded = ["xAxis", "yAxis", "series", "width", "height", "margin", "colors", "dataset", "sx", "onAreaClick", "onLineClick", "onMarkClick", "axisHighlight", "disableLineItemHighlight", "hideLegend", "grid", "topAxis", "leftAxis", "rightAxis", "bottomAxis", "children", "slots", "slotProps", "skipAnimation", "loading", "highlightedItem", "onHighlightChange", "className"];
|
|
6
6
|
import useId from '@mui/utils/useId';
|
|
7
7
|
import { DEFAULT_X_AXIS_KEY } from "../constants/index.js";
|
|
8
8
|
import { calculateMargins } from "../internals/calculateMargins.js";
|
|
9
|
+
import { LINE_CHART_PLUGINS } from "./LineChart.plugins.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* A helper function that extracts LineChartProps from the input props
|
|
@@ -25,7 +26,6 @@ export const useLineChartProps = props => {
|
|
|
25
26
|
colors,
|
|
26
27
|
dataset,
|
|
27
28
|
sx,
|
|
28
|
-
onAxisClick,
|
|
29
29
|
onAreaClick,
|
|
30
30
|
onLineClick,
|
|
31
31
|
onMarkClick,
|
|
@@ -74,13 +74,11 @@ export const useLineChartProps = props => {
|
|
|
74
74
|
yAxis,
|
|
75
75
|
highlightedItem,
|
|
76
76
|
onHighlightChange,
|
|
77
|
-
disableAxisListener: slotProps?.tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none'
|
|
77
|
+
disableAxisListener: slotProps?.tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
|
|
78
78
|
className,
|
|
79
|
-
skipAnimation
|
|
79
|
+
skipAnimation,
|
|
80
|
+
plugins: LINE_CHART_PLUGINS
|
|
80
81
|
});
|
|
81
|
-
const axisClickHandlerProps = {
|
|
82
|
-
onAxisClick
|
|
83
|
-
};
|
|
84
82
|
const gridProps = {
|
|
85
83
|
vertical: grid?.vertical,
|
|
86
84
|
horizontal: grid?.horizontal
|
|
@@ -139,7 +137,6 @@ export const useLineChartProps = props => {
|
|
|
139
137
|
return {
|
|
140
138
|
chartsWrapperProps,
|
|
141
139
|
chartContainerProps,
|
|
142
|
-
axisClickHandlerProps,
|
|
143
140
|
gridProps,
|
|
144
141
|
clipPathProps,
|
|
145
142
|
clipPathGroupProps,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["
|
|
5
|
+
const _excluded = ["series", "width", "height", "margin", "colors", "sx", "skipAnimation", "hideLegend", "children", "slots", "slotProps", "onItemClick", "loading", "highlightedItem", "onHighlightChange", "className"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { useThemeProps } from '@mui/material/styles';
|
|
@@ -14,7 +14,10 @@ import { ChartsSurface } from "../ChartsSurface/index.js";
|
|
|
14
14
|
import { ChartDataProvider } from "../ChartDataProvider/index.js";
|
|
15
15
|
import { useChartContainerProps } from "../ChartContainer/useChartContainerProps.js";
|
|
16
16
|
import { ChartsWrapper } from "../internals/components/ChartsWrapper/index.js";
|
|
17
|
+
import { useChartInteraction } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
|
|
18
|
+
import { useChartHighlight } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
|
|
17
19
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
|
+
const PIE_CHART_PLUGGINS = [useChartInteraction, useChartHighlight];
|
|
18
21
|
const defaultMargin = {
|
|
19
22
|
top: 5,
|
|
20
23
|
bottom: 5,
|
|
@@ -68,11 +71,11 @@ const PieChart = /*#__PURE__*/React.forwardRef(function PieChart(inProps, ref) {
|
|
|
68
71
|
height,
|
|
69
72
|
margin,
|
|
70
73
|
colors,
|
|
71
|
-
disableAxisListener: true,
|
|
72
74
|
highlightedItem,
|
|
73
75
|
onHighlightChange,
|
|
74
76
|
className,
|
|
75
|
-
skipAnimation
|
|
77
|
+
skipAnimation,
|
|
78
|
+
plugins: PIE_CHART_PLUGGINS
|
|
76
79
|
}), ref);
|
|
77
80
|
const Tooltip = slots?.tooltip ?? ChartsTooltip;
|
|
78
81
|
return /*#__PURE__*/_jsx(ChartDataProvider, _extends({}, chartDataProviderProps, {
|
|
@@ -112,7 +115,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
112
115
|
className: PropTypes.string,
|
|
113
116
|
/**
|
|
114
117
|
* Color palette used to colorize multiple series.
|
|
115
|
-
* @default
|
|
118
|
+
* @default rainbowSurgePalette
|
|
116
119
|
*/
|
|
117
120
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
118
121
|
/**
|
|
@@ -120,12 +123,6 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
120
123
|
*/
|
|
121
124
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
122
125
|
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
|
-
*/
|
|
128
|
-
disableAxisListener: PropTypes.bool,
|
|
129
126
|
/**
|
|
130
127
|
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
131
128
|
*/
|
|
@@ -199,110 +196,6 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
|
|
|
199
196
|
/**
|
|
200
197
|
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
201
198
|
*/
|
|
202
|
-
width: PropTypes.number
|
|
203
|
-
/**
|
|
204
|
-
* The configuration of the x-axes.
|
|
205
|
-
* If not provided, a default axis config is used.
|
|
206
|
-
* An array of [[AxisConfig]] objects.
|
|
207
|
-
*/
|
|
208
|
-
xAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
209
|
-
classes: PropTypes.object,
|
|
210
|
-
colorMap: PropTypes.oneOfType([PropTypes.shape({
|
|
211
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
212
|
-
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
213
|
-
unknownColor: PropTypes.string,
|
|
214
|
-
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
215
|
-
}), PropTypes.shape({
|
|
216
|
-
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
217
|
-
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
218
|
-
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
219
|
-
type: PropTypes.oneOf(['continuous']).isRequired
|
|
220
|
-
}), PropTypes.shape({
|
|
221
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
222
|
-
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
223
|
-
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
224
|
-
})]),
|
|
225
|
-
data: PropTypes.array,
|
|
226
|
-
dataKey: PropTypes.string,
|
|
227
|
-
disableLine: PropTypes.bool,
|
|
228
|
-
disableTicks: PropTypes.bool,
|
|
229
|
-
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
230
|
-
fill: PropTypes.string,
|
|
231
|
-
hideTooltip: PropTypes.bool,
|
|
232
|
-
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
233
|
-
label: PropTypes.string,
|
|
234
|
-
labelStyle: PropTypes.object,
|
|
235
|
-
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
236
|
-
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
237
|
-
position: PropTypes.oneOf(['bottom', 'top']),
|
|
238
|
-
reverse: PropTypes.bool,
|
|
239
|
-
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
240
|
-
slotProps: PropTypes.object,
|
|
241
|
-
slots: PropTypes.object,
|
|
242
|
-
stroke: PropTypes.string,
|
|
243
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
244
|
-
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
245
|
-
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
246
|
-
tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
|
|
247
|
-
tickLabelStyle: PropTypes.object,
|
|
248
|
-
tickMaxStep: PropTypes.number,
|
|
249
|
-
tickMinStep: PropTypes.number,
|
|
250
|
-
tickNumber: PropTypes.number,
|
|
251
|
-
tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
252
|
-
tickSize: PropTypes.number,
|
|
253
|
-
valueFormatter: PropTypes.func
|
|
254
|
-
})),
|
|
255
|
-
/**
|
|
256
|
-
* The configuration of the y-axes.
|
|
257
|
-
* If not provided, a default axis config is used.
|
|
258
|
-
* An array of [[AxisConfig]] objects.
|
|
259
|
-
*/
|
|
260
|
-
yAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
261
|
-
classes: PropTypes.object,
|
|
262
|
-
colorMap: PropTypes.oneOfType([PropTypes.shape({
|
|
263
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
264
|
-
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
265
|
-
unknownColor: PropTypes.string,
|
|
266
|
-
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
|
|
267
|
-
}), PropTypes.shape({
|
|
268
|
-
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
269
|
-
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
270
|
-
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
271
|
-
type: PropTypes.oneOf(['continuous']).isRequired
|
|
272
|
-
}), PropTypes.shape({
|
|
273
|
-
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
274
|
-
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
275
|
-
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
276
|
-
})]),
|
|
277
|
-
data: PropTypes.array,
|
|
278
|
-
dataKey: PropTypes.string,
|
|
279
|
-
disableLine: PropTypes.bool,
|
|
280
|
-
disableTicks: PropTypes.bool,
|
|
281
|
-
domainLimit: PropTypes.oneOfType([PropTypes.oneOf(['nice', 'strict']), PropTypes.func]),
|
|
282
|
-
fill: PropTypes.string,
|
|
283
|
-
hideTooltip: PropTypes.bool,
|
|
284
|
-
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
285
|
-
label: PropTypes.string,
|
|
286
|
-
labelStyle: PropTypes.object,
|
|
287
|
-
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
288
|
-
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
289
|
-
position: PropTypes.oneOf(['left', 'right']),
|
|
290
|
-
reverse: PropTypes.bool,
|
|
291
|
-
scaleType: PropTypes.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
|
|
292
|
-
slotProps: PropTypes.object,
|
|
293
|
-
slots: PropTypes.object,
|
|
294
|
-
stroke: PropTypes.string,
|
|
295
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
296
|
-
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
297
|
-
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
298
|
-
tickLabelPlacement: PropTypes.oneOf(['middle', 'tick']),
|
|
299
|
-
tickLabelStyle: PropTypes.object,
|
|
300
|
-
tickMaxStep: PropTypes.number,
|
|
301
|
-
tickMinStep: PropTypes.number,
|
|
302
|
-
tickNumber: PropTypes.number,
|
|
303
|
-
tickPlacement: PropTypes.oneOf(['end', 'extremities', 'middle', 'start']),
|
|
304
|
-
tickSize: PropTypes.number,
|
|
305
|
-
valueFormatter: PropTypes.func
|
|
306
|
-
}))
|
|
199
|
+
width: PropTypes.number
|
|
307
200
|
} : void 0;
|
|
308
201
|
export { PieChart };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { useChartInteraction } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
|
|
2
|
+
import { useChartHighlight } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
|
|
3
|
+
export const PIE_CHART_PLUGINS = [useChartInteraction, useChartHighlight];
|
|
@@ -90,7 +90,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
90
90
|
className: PropTypes.string,
|
|
91
91
|
/**
|
|
92
92
|
* Color palette used to colorize multiple series.
|
|
93
|
-
* @default
|
|
93
|
+
* @default rainbowSurgePalette
|
|
94
94
|
*/
|
|
95
95
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
96
96
|
/**
|
|
@@ -159,6 +159,13 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
159
159
|
right: PropTypes.number,
|
|
160
160
|
top: PropTypes.number
|
|
161
161
|
}),
|
|
162
|
+
/**
|
|
163
|
+
* The function called for onClick events.
|
|
164
|
+
* The second argument contains information about all line/bar elements at the current mouse position.
|
|
165
|
+
* @param {MouseEvent} event The mouse event recorded on the `<svg/>` element.
|
|
166
|
+
* @param {null | AxisData} data The data about the clicked axis and items associated with it.
|
|
167
|
+
*/
|
|
168
|
+
onAxisClick: PropTypes.func,
|
|
162
169
|
/**
|
|
163
170
|
* The callback fired when the highlighted item changes.
|
|
164
171
|
*
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { useChartZAxis } from "../internals/plugins/featurePlugins/useChartZAxis/index.js";
|
|
2
|
+
import { useChartCartesianAxis } from "../internals/plugins/featurePlugins/useChartCartesianAxis/index.js";
|
|
3
|
+
import { useChartInteraction } from "../internals/plugins/featurePlugins/useChartInteraction/index.js";
|
|
4
|
+
import { useChartHighlight } from "../internals/plugins/featurePlugins/useChartHighlight/index.js";
|
|
5
|
+
export const SCATTER_CHART_PLUGINS = [useChartZAxis, useChartCartesianAxis, useChartInteraction, useChartHighlight];
|
|
@@ -4,6 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
5
|
const _excluded = ["xAxis", "yAxis", "zAxis", "series", "axisHighlight", "voronoiMaxRadius", "disableVoronoi", "hideLegend", "width", "height", "margin", "colors", "sx", "grid", "topAxis", "leftAxis", "rightAxis", "bottomAxis", "onItemClick", "children", "slots", "slotProps", "loading", "highlightedItem", "onHighlightChange", "className"];
|
|
6
6
|
import { calculateMargins } from "../internals/calculateMargins.js";
|
|
7
|
+
import { SCATTER_CHART_PLUGINS } from "./ScatterChart.plugins.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* A helper function that extracts ScatterChartProps from the input props
|
|
@@ -60,7 +61,8 @@ export const useScatterChartProps = props => {
|
|
|
60
61
|
zAxis,
|
|
61
62
|
highlightedItem,
|
|
62
63
|
onHighlightChange,
|
|
63
|
-
className
|
|
64
|
+
className,
|
|
65
|
+
plugins: SCATTER_CHART_PLUGINS
|
|
64
66
|
});
|
|
65
67
|
const voronoiHandlerProps = {
|
|
66
68
|
voronoiMaxRadius,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["xAxis", "yAxis", "width", "height", "margin", "colors", "sx", "showTooltip", "showHighlight", "axisHighlight", "children", "slots", "slotProps", "data", "plotType", "valueFormatter", "area", "curve", "className"];
|
|
5
|
+
const _excluded = ["xAxis", "yAxis", "width", "height", "margin", "color", "colors", "sx", "showTooltip", "showHighlight", "axisHighlight", "children", "slots", "slotProps", "data", "plotType", "valueFormatter", "area", "curve", "className"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { BarPlot } from "../BarChart/index.js";
|
|
@@ -35,7 +35,8 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
35
35
|
width,
|
|
36
36
|
height,
|
|
37
37
|
margin = SPARKLINE_DEFAULT_MARGIN,
|
|
38
|
-
|
|
38
|
+
color,
|
|
39
|
+
colors: deprecatedColors,
|
|
39
40
|
sx,
|
|
40
41
|
showTooltip,
|
|
41
42
|
showHighlight,
|
|
@@ -58,6 +59,12 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
58
59
|
};
|
|
59
60
|
const axisHighlight = _extends({}, defaultXHighlight, inAxisHighlight);
|
|
60
61
|
const Tooltip = props.slots?.tooltip ?? ChartsTooltip;
|
|
62
|
+
const colors = React.useMemo(() => {
|
|
63
|
+
if (color == null) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return typeof color === 'function' ? mode => [color(mode)] : [color];
|
|
67
|
+
}, [color]);
|
|
61
68
|
return /*#__PURE__*/_jsxs(ChartContainer, _extends({}, other, {
|
|
62
69
|
ref: ref,
|
|
63
70
|
series: [_extends({
|
|
@@ -84,7 +91,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
|
|
|
84
91
|
yAxis: [_extends({
|
|
85
92
|
id: DEFAULT_Y_AXIS_KEY
|
|
86
93
|
}, yAxis)],
|
|
87
|
-
colors: colors,
|
|
94
|
+
colors: colors ?? deprecatedColors,
|
|
88
95
|
sx: sx,
|
|
89
96
|
disableAxisListener: (!showTooltip || slotProps?.tooltip?.trigger !== 'axis') && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
|
|
90
97
|
children: [plotType === 'bar' && /*#__PURE__*/_jsx(BarPlot, {
|
|
@@ -127,9 +134,15 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
127
134
|
}),
|
|
128
135
|
children: PropTypes.node,
|
|
129
136
|
className: PropTypes.string,
|
|
137
|
+
/**
|
|
138
|
+
* Color used to colorize the sparkline.
|
|
139
|
+
* @default rainbowSurgePalette[0]
|
|
140
|
+
*/
|
|
141
|
+
color: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
|
|
130
142
|
/**
|
|
131
143
|
* Color palette used to colorize multiple series.
|
|
132
|
-
* @default
|
|
144
|
+
* @default rainbowSurgePalette
|
|
145
|
+
* @deprecated use the `color` prop instead
|
|
133
146
|
*/
|
|
134
147
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
135
148
|
/**
|
|
@@ -185,6 +198,13 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
|
|
|
185
198
|
right: PropTypes.number,
|
|
186
199
|
top: PropTypes.number
|
|
187
200
|
}),
|
|
201
|
+
/**
|
|
202
|
+
* The function called for onClick events.
|
|
203
|
+
* The second argument contains information about all line/bar elements at the current mouse position.
|
|
204
|
+
* @param {MouseEvent} event The mouse event recorded on the `<svg/>` element.
|
|
205
|
+
* @param {null | AxisData} data The data about the clicked axis and items associated with it.
|
|
206
|
+
*/
|
|
207
|
+
onAxisClick: PropTypes.func,
|
|
188
208
|
/**
|
|
189
209
|
* The callback fired when the highlighted item changes.
|
|
190
210
|
*
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
-
import * as React from 'react';
|
|
5
|
-
import { isBandScale } from "../internals/isBandScale.js";
|
|
6
|
-
import { getSVGPoint } from "../internals/getSVGPoint.js";
|
|
7
|
-
import { useSvgRef } from "./useSvgRef.js";
|
|
8
|
-
import { useStore } from "../internals/store/useStore.js";
|
|
9
|
-
import { useChartContext } from "../context/ChartProvider/index.js";
|
|
10
|
-
import { useXAxes, useYAxes } from "./useAxis.js";
|
|
11
|
-
function getAsANumber(value) {
|
|
12
|
-
return value instanceof Date ? value.getTime() : value;
|
|
13
|
-
}
|
|
14
|
-
export const useAxisEvents = disableAxisListener => {
|
|
15
|
-
const svgRef = useSvgRef();
|
|
16
|
-
const {
|
|
17
|
-
instance
|
|
18
|
-
} = useChartContext();
|
|
19
|
-
const {
|
|
20
|
-
xAxis,
|
|
21
|
-
xAxisIds
|
|
22
|
-
} = useXAxes();
|
|
23
|
-
const {
|
|
24
|
-
yAxis,
|
|
25
|
-
yAxisIds
|
|
26
|
-
} = useYAxes();
|
|
27
|
-
const store = useStore();
|
|
28
|
-
const usedXAxis = xAxisIds[0];
|
|
29
|
-
const usedYAxis = yAxisIds[0];
|
|
30
|
-
|
|
31
|
-
// Use a ref to avoid rerendering on every mousemove event.
|
|
32
|
-
const mousePosition = React.useRef({
|
|
33
|
-
isInChart: false,
|
|
34
|
-
x: -1,
|
|
35
|
-
y: -1
|
|
36
|
-
});
|
|
37
|
-
React.useEffect(() => {
|
|
38
|
-
const element = svgRef.current;
|
|
39
|
-
if (element === null || disableAxisListener || !store) {
|
|
40
|
-
return () => {};
|
|
41
|
-
}
|
|
42
|
-
function getNewAxisState(axisConfig, mouseValue) {
|
|
43
|
-
const {
|
|
44
|
-
scale,
|
|
45
|
-
data: axisData,
|
|
46
|
-
reverse
|
|
47
|
-
} = axisConfig;
|
|
48
|
-
if (!isBandScale(scale)) {
|
|
49
|
-
const value = scale.invert(mouseValue);
|
|
50
|
-
if (axisData === undefined) {
|
|
51
|
-
return {
|
|
52
|
-
value,
|
|
53
|
-
index: -1
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
const valueAsNumber = getAsANumber(value);
|
|
57
|
-
const closestIndex = axisData?.findIndex((pointValue, index) => {
|
|
58
|
-
const v = getAsANumber(pointValue);
|
|
59
|
-
if (v > valueAsNumber) {
|
|
60
|
-
if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsANumber(axisData[index - 1]))) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (v <= valueAsNumber) {
|
|
65
|
-
if (index === axisData.length - 1 || Math.abs(getAsANumber(value) - v) < Math.abs(getAsANumber(value) - getAsANumber(axisData[index + 1]))) {
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return false;
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
value: closestIndex !== undefined && closestIndex >= 0 ? axisData[closestIndex] : value,
|
|
73
|
-
index: closestIndex
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
const dataIndex = scale.bandwidth() === 0 ? Math.floor((mouseValue - Math.min(...scale.range()) + scale.step() / 2) / scale.step()) : Math.floor((mouseValue - Math.min(...scale.range())) / scale.step());
|
|
77
|
-
if (dataIndex < 0 || dataIndex >= axisData.length) {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
if (reverse) {
|
|
81
|
-
const reverseIndex = axisData.length - 1 - dataIndex;
|
|
82
|
-
return {
|
|
83
|
-
index: reverseIndex,
|
|
84
|
-
value: axisData[reverseIndex]
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return {
|
|
88
|
-
index: dataIndex,
|
|
89
|
-
value: axisData[dataIndex]
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
const handleOut = () => {
|
|
93
|
-
mousePosition.current = {
|
|
94
|
-
isInChart: false,
|
|
95
|
-
x: -1,
|
|
96
|
-
y: -1
|
|
97
|
-
};
|
|
98
|
-
store.update(prev => _extends({}, prev, {
|
|
99
|
-
interaction: {
|
|
100
|
-
item: null,
|
|
101
|
-
axis: {
|
|
102
|
-
x: null,
|
|
103
|
-
y: null
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}));
|
|
107
|
-
};
|
|
108
|
-
const handleMove = event => {
|
|
109
|
-
const target = 'targetTouches' in event ? event.targetTouches[0] : event;
|
|
110
|
-
const svgPoint = getSVGPoint(element, target);
|
|
111
|
-
mousePosition.current.x = svgPoint.x;
|
|
112
|
-
mousePosition.current.y = svgPoint.y;
|
|
113
|
-
if (!instance.isPointInside(svgPoint, {
|
|
114
|
-
targetElement: event.target
|
|
115
|
-
})) {
|
|
116
|
-
if (mousePosition.current.isInChart) {
|
|
117
|
-
store.update(prev => _extends({}, prev, {
|
|
118
|
-
interaction: {
|
|
119
|
-
item: null,
|
|
120
|
-
axis: {
|
|
121
|
-
x: null,
|
|
122
|
-
y: null
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}));
|
|
126
|
-
mousePosition.current.isInChart = false;
|
|
127
|
-
}
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
mousePosition.current.isInChart = true;
|
|
131
|
-
const newStateX = getNewAxisState(xAxis[usedXAxis], svgPoint.x);
|
|
132
|
-
const newStateY = getNewAxisState(yAxis[usedYAxis], svgPoint.y);
|
|
133
|
-
store.update(prev => _extends({}, prev, {
|
|
134
|
-
interaction: _extends({}, prev.interaction, {
|
|
135
|
-
axis: _extends({}, prev.interaction.axis, prev.interaction.axis.x?.index !== newStateX?.index || prev.interaction.axis.x?.value !== newStateX?.value ? {
|
|
136
|
-
x: newStateX
|
|
137
|
-
} : {}, prev.interaction.axis.y?.index !== newStateY?.index || prev.interaction.axis.y?.value !== newStateY?.value ? {
|
|
138
|
-
y: newStateY
|
|
139
|
-
} : {})
|
|
140
|
-
})
|
|
141
|
-
}));
|
|
142
|
-
};
|
|
143
|
-
const handleDown = event => {
|
|
144
|
-
const target = event.currentTarget;
|
|
145
|
-
if (!target) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
if (target.hasPointerCapture(event.pointerId)) {
|
|
149
|
-
target.releasePointerCapture(event.pointerId);
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
element.addEventListener('pointerdown', handleDown);
|
|
153
|
-
element.addEventListener('pointermove', handleMove);
|
|
154
|
-
element.addEventListener('pointerout', handleOut);
|
|
155
|
-
element.addEventListener('pointercancel', handleOut);
|
|
156
|
-
element.addEventListener('pointerleave', handleOut);
|
|
157
|
-
return () => {
|
|
158
|
-
element.removeEventListener('pointerdown', handleDown);
|
|
159
|
-
element.removeEventListener('pointermove', handleMove);
|
|
160
|
-
element.removeEventListener('pointerout', handleOut);
|
|
161
|
-
element.removeEventListener('pointercancel', handleOut);
|
|
162
|
-
element.removeEventListener('pointerleave', handleOut);
|
|
163
|
-
};
|
|
164
|
-
}, [svgRef, store, usedYAxis, yAxis, usedXAxis, xAxis, disableAxisListener, instance]);
|
|
165
|
-
};
|
package/modern/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-charts v8.0.0-alpha.
|
|
2
|
+
* @mui/x-charts v8.0.0-alpha.11
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -22,7 +22,6 @@ export * from "./ChartsLabel/index.js";
|
|
|
22
22
|
export * from "./ChartsLegend/index.js";
|
|
23
23
|
export * from "./ChartsAxisHighlight/index.js";
|
|
24
24
|
export * from "./ChartsVoronoiHandler/index.js";
|
|
25
|
-
export * from "./ChartsOnAxisClickHandler/index.js";
|
|
26
25
|
export * from "./BarChart/index.js";
|
|
27
26
|
export * from "./LineChart/index.js";
|
|
28
27
|
export * from "./PieChart/index.js";
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { isBandScale } from "../../../isBandScale.js";
|
|
2
|
+
function getAsANumber(value) {
|
|
3
|
+
return value instanceof Date ? value.getTime() : value;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* For a pointer coordinate, this function returns the value and dataIndex associated.
|
|
8
|
+
* Returns `null` if the coordinate is outside of values.
|
|
9
|
+
*/
|
|
10
|
+
export function getAxisValue(axisConfig, pointerValue) {
|
|
11
|
+
const {
|
|
12
|
+
scale,
|
|
13
|
+
data: axisData,
|
|
14
|
+
reverse
|
|
15
|
+
} = axisConfig;
|
|
16
|
+
if (!isBandScale(scale)) {
|
|
17
|
+
const value = scale.invert(pointerValue);
|
|
18
|
+
if (axisData === undefined) {
|
|
19
|
+
return {
|
|
20
|
+
value,
|
|
21
|
+
index: -1
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const valueAsNumber = getAsANumber(value);
|
|
25
|
+
const closestIndex = axisData?.findIndex((pointValue, index) => {
|
|
26
|
+
const v = getAsANumber(pointValue);
|
|
27
|
+
if (v > valueAsNumber) {
|
|
28
|
+
if (index === 0 || Math.abs(valueAsNumber - v) <= Math.abs(valueAsNumber - getAsANumber(axisData[index - 1]))) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (v <= valueAsNumber) {
|
|
33
|
+
if (index === axisData.length - 1 || Math.abs(getAsANumber(value) - v) < Math.abs(getAsANumber(value) - getAsANumber(axisData[index + 1]))) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
value: closestIndex !== undefined && closestIndex >= 0 ? axisData[closestIndex] : value,
|
|
41
|
+
index: closestIndex
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const dataIndex = scale.bandwidth() === 0 ? Math.floor((pointerValue - Math.min(...scale.range()) + scale.step() / 2) / scale.step()) : Math.floor((pointerValue - Math.min(...scale.range())) / scale.step());
|
|
45
|
+
if (dataIndex < 0 || dataIndex >= axisData.length) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
if (reverse) {
|
|
49
|
+
const reverseIndex = axisData.length - 1 - dataIndex;
|
|
50
|
+
return {
|
|
51
|
+
index: reverseIndex,
|
|
52
|
+
value: axisData[reverseIndex]
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
index: dataIndex,
|
|
57
|
+
value: axisData[dataIndex]
|
|
58
|
+
};
|
|
59
|
+
}
|