@mui/x-charts 7.0.0-beta.0 → 7.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/BarChart/BarChart.d.ts +2 -1
  2. package/BarChart/BarChart.js +33 -12
  3. package/BarChart/BarElement.d.ts +20 -13
  4. package/BarChart/BarElement.js +7 -3
  5. package/BarChart/BarPlot.d.ts +11 -6
  6. package/BarChart/BarPlot.js +28 -15
  7. package/BarChart/formatter.js +1 -1
  8. package/CHANGELOG.md +406 -1
  9. package/ChartContainer/ChartContainer.js +6 -4
  10. package/ChartsAxis/ChartsAxis.js +4 -4
  11. package/ChartsLegend/ChartsLegend.d.ts +5 -54
  12. package/ChartsLegend/ChartsLegend.js +2 -307
  13. package/ChartsLegend/DefaultChartsLegend.d.ts +60 -0
  14. package/ChartsLegend/DefaultChartsLegend.js +294 -0
  15. package/ChartsLegend/index.d.ts +1 -0
  16. package/ChartsLegend/index.js +11 -0
  17. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.d.ts +20 -0
  18. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +83 -0
  19. package/ChartsOnAxisClickHandler/index.d.ts +1 -0
  20. package/ChartsOnAxisClickHandler/index.js +16 -0
  21. package/ChartsOnAxisClickHandler/package.json +6 -0
  22. package/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  23. package/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  24. package/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  25. package/ChartsReferenceLine/common.d.ts +2 -1
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  27. package/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  28. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  29. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  30. package/ChartsTooltip/utils.d.ts +4 -1
  31. package/ChartsTooltip/utils.js +15 -0
  32. package/ChartsVoronoiHandler/ChartsVoronoiHandler.d.ts +7 -0
  33. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  34. package/ChartsXAxis/ChartsXAxis.js +13 -9
  35. package/ChartsYAxis/ChartsYAxis.js +1 -1
  36. package/LineChart/AnimatedArea.d.ts +1361 -0
  37. package/LineChart/AnimatedArea.js +111 -0
  38. package/LineChart/AnimatedLine.d.ts +1361 -0
  39. package/LineChart/AnimatedLine.js +113 -0
  40. package/LineChart/AreaElement.d.ts +19 -18
  41. package/LineChart/AreaElement.js +17 -34
  42. package/LineChart/AreaPlot.d.ts +12 -7
  43. package/LineChart/AreaPlot.js +91 -58
  44. package/LineChart/LineChart.d.ts +13 -4
  45. package/LineChart/LineChart.js +45 -14
  46. package/LineChart/LineElement.d.ts +19 -18
  47. package/LineChart/LineElement.js +16 -36
  48. package/LineChart/LineHighlightElement.d.ts +3 -2
  49. package/LineChart/LineHighlightElement.js +5 -3
  50. package/LineChart/LinePlot.d.ts +12 -7
  51. package/LineChart/LinePlot.js +89 -56
  52. package/LineChart/MarkElement.d.ts +8 -4
  53. package/LineChart/MarkElement.js +27 -13
  54. package/LineChart/MarkPlot.d.ts +8 -1
  55. package/LineChart/MarkPlot.js +80 -51
  56. package/LineChart/formatter.js +1 -1
  57. package/LineChart/index.d.ts +2 -0
  58. package/LineChart/index.js +22 -0
  59. package/PieChart/PieArc.d.ts +3 -2
  60. package/PieChart/PieArc.js +1 -0
  61. package/PieChart/PieArcLabel.d.ts +3 -2
  62. package/PieChart/PieArcLabel.js +1 -0
  63. package/PieChart/PieArcLabelPlot.d.ts +1 -1
  64. package/PieChart/PieArcLabelPlot.js +2 -2
  65. package/PieChart/PieArcPlot.d.ts +2 -2
  66. package/PieChart/PieArcPlot.js +7 -7
  67. package/PieChart/PieChart.d.ts +1 -1
  68. package/PieChart/PieChart.js +14 -12
  69. package/PieChart/PiePlot.d.ts +1 -1
  70. package/PieChart/PiePlot.js +4 -4
  71. package/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  72. package/ScatterChart/Scatter.d.ts +7 -1
  73. package/ScatterChart/Scatter.js +17 -3
  74. package/ScatterChart/ScatterChart.d.ts +8 -2
  75. package/ScatterChart/ScatterChart.js +21 -10
  76. package/ScatterChart/ScatterPlot.d.ts +1 -1
  77. package/ScatterChart/ScatterPlot.js +10 -2
  78. package/SparkLineChart/SparkLineChart.d.ts +1 -1
  79. package/SparkLineChart/SparkLineChart.js +7 -4
  80. package/context/CartesianContextProvider.js +8 -6
  81. package/context/DrawingProvider.d.ts +6 -1
  82. package/context/DrawingProvider.js +9 -2
  83. package/context/InteractionProvider.d.ts +3 -3
  84. package/esm/BarChart/BarChart.js +33 -12
  85. package/esm/BarChart/BarElement.js +7 -3
  86. package/esm/BarChart/BarPlot.js +27 -15
  87. package/esm/BarChart/formatter.js +1 -1
  88. package/esm/ChartContainer/ChartContainer.js +6 -4
  89. package/esm/ChartsAxis/ChartsAxis.js +4 -4
  90. package/esm/ChartsLegend/ChartsLegend.js +2 -307
  91. package/esm/ChartsLegend/DefaultChartsLegend.js +286 -0
  92. package/esm/ChartsLegend/index.js +1 -0
  93. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +77 -0
  94. package/esm/ChartsOnAxisClickHandler/index.js +1 -0
  95. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  96. package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  97. package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  98. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  99. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  100. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  101. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  102. package/esm/ChartsTooltip/utils.js +12 -0
  103. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  104. package/esm/ChartsXAxis/ChartsXAxis.js +13 -9
  105. package/esm/ChartsYAxis/ChartsYAxis.js +1 -1
  106. package/esm/LineChart/AnimatedArea.js +103 -0
  107. package/esm/LineChart/AnimatedLine.js +105 -0
  108. package/esm/LineChart/AreaElement.js +16 -33
  109. package/esm/LineChart/AreaPlot.js +92 -59
  110. package/esm/LineChart/LineChart.js +45 -14
  111. package/esm/LineChart/LineElement.js +16 -35
  112. package/esm/LineChart/LineHighlightElement.js +5 -3
  113. package/esm/LineChart/LinePlot.js +90 -57
  114. package/esm/LineChart/MarkElement.js +27 -13
  115. package/esm/LineChart/MarkPlot.js +80 -51
  116. package/esm/LineChart/formatter.js +1 -1
  117. package/esm/LineChart/index.js +2 -0
  118. package/esm/PieChart/PieArc.js +1 -0
  119. package/esm/PieChart/PieArcLabel.js +1 -0
  120. package/esm/PieChart/PieArcLabelPlot.js +2 -2
  121. package/esm/PieChart/PieArcPlot.js +7 -7
  122. package/esm/PieChart/PieChart.js +14 -12
  123. package/esm/PieChart/PiePlot.js +4 -4
  124. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  125. package/esm/ScatterChart/Scatter.js +17 -3
  126. package/esm/ScatterChart/ScatterChart.js +21 -10
  127. package/esm/ScatterChart/ScatterPlot.js +10 -2
  128. package/esm/SparkLineChart/SparkLineChart.js +7 -4
  129. package/esm/context/CartesianContextProvider.js +8 -6
  130. package/esm/context/DrawingProvider.js +9 -2
  131. package/esm/hooks/useDrawingArea.js +7 -3
  132. package/esm/index.js +1 -0
  133. package/esm/internals/geometry.js +1 -1
  134. package/esm/internals/useAnimatedPath.js +29 -0
  135. package/esm/internals/utils.js +7 -0
  136. package/hooks/useDrawingArea.d.ts +2 -0
  137. package/hooks/useDrawingArea.js +7 -3
  138. package/index.d.ts +1 -0
  139. package/index.js +12 -1
  140. package/internals/defaultizeColor.d.ts +16 -16
  141. package/internals/defaultizeValueFormatter.d.ts +4 -7
  142. package/internals/geometry.js +1 -1
  143. package/internals/stackSeries.d.ts +4 -7
  144. package/internals/useAnimatedPath.d.ts +1 -0
  145. package/internals/useAnimatedPath.js +38 -0
  146. package/internals/utils.d.ts +4 -0
  147. package/internals/utils.js +8 -0
  148. package/legacy/BarChart/BarChart.js +33 -12
  149. package/legacy/BarChart/BarElement.js +6 -2
  150. package/legacy/BarChart/BarPlot.js +28 -14
  151. package/legacy/BarChart/formatter.js +1 -1
  152. package/legacy/ChartContainer/ChartContainer.js +6 -4
  153. package/legacy/ChartsAxis/ChartsAxis.js +4 -4
  154. package/legacy/ChartsLegend/ChartsLegend.js +2 -323
  155. package/legacy/ChartsLegend/DefaultChartsLegend.js +302 -0
  156. package/legacy/ChartsLegend/index.js +1 -0
  157. package/legacy/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  158. package/legacy/ChartsOnAxisClickHandler/index.js +1 -0
  159. package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  160. package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  161. package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  162. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +6 -7
  163. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  164. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +8 -5
  165. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  166. package/legacy/ChartsTooltip/utils.js +12 -0
  167. package/legacy/ChartsVoronoiHandler/ChartsVoronoiHandler.js +88 -44
  168. package/legacy/ChartsXAxis/ChartsXAxis.js +12 -8
  169. package/legacy/ChartsYAxis/ChartsYAxis.js +1 -1
  170. package/legacy/LineChart/AnimatedArea.js +102 -0
  171. package/legacy/LineChart/AnimatedLine.js +104 -0
  172. package/legacy/LineChart/AreaElement.js +15 -35
  173. package/legacy/LineChart/AreaPlot.js +102 -66
  174. package/legacy/LineChart/LineChart.js +45 -14
  175. package/legacy/LineChart/LineElement.js +15 -37
  176. package/legacy/LineChart/LineHighlightElement.js +5 -3
  177. package/legacy/LineChart/LinePlot.js +97 -63
  178. package/legacy/LineChart/MarkElement.js +30 -12
  179. package/legacy/LineChart/MarkPlot.js +83 -53
  180. package/legacy/LineChart/formatter.js +1 -1
  181. package/legacy/LineChart/index.js +2 -0
  182. package/legacy/PieChart/PieArc.js +1 -0
  183. package/legacy/PieChart/PieArcLabel.js +1 -0
  184. package/legacy/PieChart/PieArcLabelPlot.js +2 -2
  185. package/legacy/PieChart/PieArcPlot.js +7 -7
  186. package/legacy/PieChart/PieChart.js +14 -12
  187. package/legacy/PieChart/PiePlot.js +4 -4
  188. package/legacy/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  189. package/legacy/ScatterChart/Scatter.js +19 -3
  190. package/legacy/ScatterChart/ScatterChart.js +21 -10
  191. package/legacy/ScatterChart/ScatterPlot.js +10 -2
  192. package/legacy/SparkLineChart/SparkLineChart.js +8 -5
  193. package/legacy/context/CartesianContextProvider.js +8 -6
  194. package/legacy/context/DrawingProvider.js +11 -2
  195. package/legacy/hooks/useDrawingArea.js +7 -3
  196. package/legacy/index.js +2 -1
  197. package/legacy/internals/geometry.js +1 -1
  198. package/legacy/internals/useAnimatedPath.js +32 -0
  199. package/legacy/internals/utils.js +7 -0
  200. package/models/axis.d.ts +7 -2
  201. package/models/seriesType/common.d.ts +2 -1
  202. package/models/seriesType/config.d.ts +7 -12
  203. package/models/seriesType/line.d.ts +2 -2
  204. package/models/seriesType/pie.d.ts +7 -3
  205. package/models/seriesType/scatter.d.ts +5 -2
  206. package/modern/BarChart/BarChart.js +33 -12
  207. package/modern/BarChart/BarElement.js +7 -3
  208. package/modern/BarChart/BarPlot.js +27 -15
  209. package/modern/BarChart/formatter.js +1 -1
  210. package/modern/ChartContainer/ChartContainer.js +6 -4
  211. package/modern/ChartsAxis/ChartsAxis.js +4 -4
  212. package/modern/ChartsLegend/ChartsLegend.js +2 -307
  213. package/modern/ChartsLegend/DefaultChartsLegend.js +286 -0
  214. package/modern/ChartsLegend/index.js +1 -0
  215. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +75 -0
  216. package/modern/ChartsOnAxisClickHandler/index.js +1 -0
  217. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +2 -2
  218. package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +1 -1
  219. package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +1 -1
  220. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +6 -5
  221. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +2 -2
  222. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +7 -5
  223. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +1 -1
  224. package/modern/ChartsTooltip/utils.js +12 -0
  225. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +92 -44
  226. package/modern/ChartsXAxis/ChartsXAxis.js +13 -9
  227. package/modern/ChartsYAxis/ChartsYAxis.js +1 -1
  228. package/modern/LineChart/AnimatedArea.js +103 -0
  229. package/modern/LineChart/AnimatedLine.js +105 -0
  230. package/modern/LineChart/AreaElement.js +16 -33
  231. package/modern/LineChart/AreaPlot.js +91 -58
  232. package/modern/LineChart/LineChart.js +45 -14
  233. package/modern/LineChart/LineElement.js +16 -35
  234. package/modern/LineChart/LineHighlightElement.js +5 -3
  235. package/modern/LineChart/LinePlot.js +89 -56
  236. package/modern/LineChart/MarkElement.js +27 -13
  237. package/modern/LineChart/MarkPlot.js +80 -51
  238. package/modern/LineChart/formatter.js +1 -1
  239. package/modern/LineChart/index.js +2 -0
  240. package/modern/PieChart/PieArc.js +1 -0
  241. package/modern/PieChart/PieArcLabel.js +1 -0
  242. package/modern/PieChart/PieArcLabelPlot.js +2 -2
  243. package/modern/PieChart/PieArcPlot.js +7 -7
  244. package/modern/PieChart/PieChart.js +14 -12
  245. package/modern/PieChart/PiePlot.js +4 -4
  246. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +6 -4
  247. package/modern/ScatterChart/Scatter.js +17 -3
  248. package/modern/ScatterChart/ScatterChart.js +21 -10
  249. package/modern/ScatterChart/ScatterPlot.js +10 -2
  250. package/modern/SparkLineChart/SparkLineChart.js +7 -4
  251. package/modern/context/CartesianContextProvider.js +8 -6
  252. package/modern/context/DrawingProvider.js +9 -2
  253. package/modern/hooks/useDrawingArea.js +7 -3
  254. package/modern/index.js +2 -1
  255. package/modern/internals/geometry.js +1 -1
  256. package/modern/internals/useAnimatedPath.js +29 -0
  257. package/modern/internals/utils.js +7 -0
  258. package/package.json +6 -5
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AnimatedLine = AnimatedLine;
8
+ exports.LineElementPath = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _web = require("@react-spring/web");
14
+ var _d3Color = require("d3-color");
15
+ var _styles = require("@mui/material/styles");
16
+ var _useAnimatedPath = require("../internals/useAnimatedPath");
17
+ var _DrawingProvider = require("../context/DrawingProvider");
18
+ var _utils = require("../internals/utils");
19
+ var _jsxRuntime = require("react/jsx-runtime");
20
+ const _excluded = ["d", "skipAnimation", "ownerState"];
21
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
+ const LineElementPath = exports.LineElementPath = (0, _styles.styled)(_web.animated.path, {
24
+ name: 'MuiLineElement',
25
+ slot: 'Root',
26
+ overridesResolver: (_, styles) => styles.root
27
+ })(({
28
+ ownerState
29
+ }) => ({
30
+ strokeWidth: 2,
31
+ strokeLinejoin: 'round',
32
+ fill: 'none',
33
+ stroke: ownerState.isHighlighted ? (0, _d3Color.color)(ownerState.color).brighter(0.5).formatHex() : ownerState.color,
34
+ transition: 'opacity 0.2s ease-in, stroke 0.2s ease-in',
35
+ opacity: ownerState.isFaded ? 0.3 : 1
36
+ }));
37
+ /**
38
+ * Demos:
39
+ *
40
+ * - [Lines](https://mui.com/x/react-charts/lines/)
41
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
42
+ *
43
+ * API:
44
+ *
45
+ * - [AnimatedLine API](https://mui.com/x/api/charts/animated-line/)
46
+ */
47
+ function AnimatedLine(props) {
48
+ const {
49
+ d,
50
+ skipAnimation,
51
+ ownerState
52
+ } = props,
53
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
54
+ const {
55
+ left,
56
+ top,
57
+ bottom,
58
+ width,
59
+ height,
60
+ right,
61
+ chartId
62
+ } = React.useContext(_DrawingProvider.DrawingContext);
63
+ const path = (0, _useAnimatedPath.useAnimatedPath)(d, skipAnimation);
64
+ const {
65
+ animatedWidth
66
+ } = (0, _web.useSpring)({
67
+ from: {
68
+ animatedWidth: left
69
+ },
70
+ to: {
71
+ animatedWidth: width + left + right
72
+ },
73
+ reset: false,
74
+ immediate: skipAnimation
75
+ });
76
+ const clipId = (0, _utils.cleanId)(`${chartId}-${ownerState.id}-line-clip`);
77
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
78
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("clipPath", {
79
+ id: clipId,
80
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_web.animated.rect, {
81
+ x: 0,
82
+ y: 0,
83
+ width: animatedWidth,
84
+ height: top + height + bottom
85
+ })
86
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
87
+ clipPath: `url(#${clipId})`,
88
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(LineElementPath, (0, _extends2.default)({}, other, {
89
+ ownerState: ownerState,
90
+ d: path
91
+ }))
92
+ })]
93
+ });
94
+ }
95
+ process.env.NODE_ENV !== "production" ? AnimatedLine.propTypes = {
96
+ // ----------------------------- Warning --------------------------------
97
+ // | These PropTypes are generated from the TypeScript type definitions |
98
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
99
+ // ----------------------------------------------------------------------
100
+ d: _propTypes.default.string.isRequired,
101
+ ownerState: _propTypes.default.shape({
102
+ classes: _propTypes.default.object,
103
+ color: _propTypes.default.string.isRequired,
104
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
105
+ isFaded: _propTypes.default.bool.isRequired,
106
+ isHighlighted: _propTypes.default.bool.isRequired
107
+ }).isRequired,
108
+ /**
109
+ * If `true`, animations are skipped.
110
+ * @default false
111
+ */
112
+ skipAnimation: _propTypes.default.bool
113
+ } : void 0;
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
- import { SlotComponentProps } from '@mui/base/utils';
3
2
  import { HighlightScope } from '../context/HighlightProvider';
3
+ import { AnimatedAreaProps } from './AnimatedArea';
4
+ import { SeriesId } from '../models/seriesType/common';
4
5
  export interface AreaElementClasses {
5
6
  /** Styles applied to the root element. */
6
7
  root: string;
@@ -10,8 +11,8 @@ export interface AreaElementClasses {
10
11
  faded: string;
11
12
  }
12
13
  export type AreaElementClassKey = keyof AreaElementClasses;
13
- interface AreaElementOwnerState {
14
- id: string;
14
+ export interface AreaElementOwnerState {
15
+ id: SeriesId;
15
16
  color: string;
16
17
  isFaded: boolean;
17
18
  isHighlighted: boolean;
@@ -19,30 +20,30 @@ interface AreaElementOwnerState {
19
20
  }
20
21
  export declare function getAreaElementUtilityClass(slot: string): string;
21
22
  export declare const areaElementClasses: AreaElementClasses;
22
- export declare const AreaElementPath: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
23
- ownerState: AreaElementOwnerState;
24
- }, Pick<React.SVGProps<SVGPathElement>, keyof React.SVGProps<SVGPathElement>>, {}>;
25
- export type AreaElementProps = Omit<AreaElementOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & {
23
+ export interface AreaElementSlots {
24
+ /**
25
+ * The component that renders the area.
26
+ * @default AnimatedArea
27
+ */
28
+ area?: React.JSXElementConstructor<AnimatedAreaProps>;
29
+ }
30
+ export interface AreaElementSlotProps {
31
+ area?: AnimatedAreaProps;
32
+ }
33
+ export interface AreaElementProps extends Omit<AreaElementOwnerState, 'isFaded' | 'isHighlighted'>, Pick<AnimatedAreaProps, 'skipAnimation'>, Omit<React.ComponentPropsWithoutRef<'path'>, 'color' | 'id'> {
34
+ d: string;
26
35
  highlightScope?: Partial<HighlightScope>;
27
36
  /**
28
37
  * The props used for each component slot.
29
38
  * @default {}
30
39
  */
31
- slotProps?: {
32
- area?: SlotComponentProps<'path', {}, AreaElementOwnerState>;
33
- };
40
+ slotProps?: AreaElementSlotProps;
34
41
  /**
35
42
  * Overridable component slots.
36
43
  * @default {}
37
44
  */
38
- slots?: {
39
- /**
40
- * The component that renders the root.
41
- * @default AreaElementPath
42
- */
43
- area?: React.ElementType;
44
- };
45
- };
45
+ slots?: AreaElementSlots;
46
+ }
46
47
  /**
47
48
  * Demos:
48
49
  *
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AreaElement = AreaElement;
8
- exports.areaElementClasses = exports.AreaElementPath = void 0;
8
+ exports.areaElementClasses = void 0;
9
9
  exports.getAreaElementUtilityClass = getAreaElementUtilityClass;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
@@ -14,13 +14,12 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
15
  var _utils = require("@mui/base/utils");
16
16
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
17
- var _styles = require("@mui/material/styles");
18
17
  var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
19
- var _d3Color = require("d3-color");
20
18
  var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
21
19
  var _InteractionProvider = require("../context/InteractionProvider");
20
+ var _AnimatedArea = require("./AnimatedArea");
22
21
  var _jsxRuntime = require("react/jsx-runtime");
23
- const _excluded = ["id", "classes", "color", "highlightScope", "slots", "slotProps"];
22
+ const _excluded = ["id", "classes", "color", "highlightScope", "slots", "slotProps", "onClick"];
24
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
25
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
25
  function getAreaElementUtilityClass(slot) {
@@ -39,33 +38,6 @@ const useUtilityClasses = ownerState => {
39
38
  };
40
39
  return (0, _composeClasses.default)(slots, getAreaElementUtilityClass, classes);
41
40
  };
42
- const AreaElementPath = exports.AreaElementPath = (0, _styles.styled)('path', {
43
- name: 'MuiAreaElement',
44
- slot: 'Root',
45
- overridesResolver: (_, styles) => styles.root
46
- })(({
47
- ownerState
48
- }) => ({
49
- stroke: 'none',
50
- fill: ownerState.isHighlighted ? (0, _d3Color.color)(ownerState.color).brighter(1).formatHex() : (0, _d3Color.color)(ownerState.color).brighter(0.5).formatHex(),
51
- transition: 'opacity 0.2s ease-in, fill 0.2s ease-in',
52
- opacity: ownerState.isFaded ? 0.3 : 1
53
- }));
54
- AreaElementPath.propTypes = {
55
- // ----------------------------- Warning --------------------------------
56
- // | These PropTypes are generated from the TypeScript type definitions |
57
- // | To update them edit the TypeScript types and run "yarn proptypes" |
58
- // ----------------------------------------------------------------------
59
- as: _propTypes.default.elementType,
60
- ownerState: _propTypes.default.shape({
61
- classes: _propTypes.default.object,
62
- color: _propTypes.default.string.isRequired,
63
- id: _propTypes.default.string.isRequired,
64
- isFaded: _propTypes.default.bool.isRequired,
65
- isHighlighted: _propTypes.default.bool.isRequired
66
- }).isRequired,
67
- sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
68
- };
69
41
  /**
70
42
  * Demos:
71
43
  *
@@ -83,7 +55,8 @@ function AreaElement(props) {
83
55
  color,
84
56
  highlightScope,
85
57
  slots,
86
- slotProps
58
+ slotProps,
59
+ onClick
87
60
  } = props,
88
61
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
89
62
  const getInteractionItemProps = (0, _useInteractionItemProps.useInteractionItemProps)(highlightScope);
@@ -106,7 +79,7 @@ function AreaElement(props) {
106
79
  isHighlighted
107
80
  };
108
81
  const classes = useUtilityClasses(ownerState);
109
- const Area = slots?.area ?? AreaElementPath;
82
+ const Area = slots?.area ?? _AnimatedArea.AnimatedArea;
110
83
  const areaProps = (0, _utils.useSlotProps)({
111
84
  elementType: Area,
112
85
  externalSlotProps: slotProps?.area,
@@ -114,7 +87,9 @@ function AreaElement(props) {
114
87
  type: 'line',
115
88
  seriesId: id
116
89
  }), {
117
- className: classes.root
90
+ className: classes.root,
91
+ onClick,
92
+ cursor: onClick ? 'pointer' : 'unset'
118
93
  }),
119
94
  ownerState
120
95
  });
@@ -126,10 +101,18 @@ process.env.NODE_ENV !== "production" ? AreaElement.propTypes = {
126
101
  // | To update them edit the TypeScript types and run "yarn proptypes" |
127
102
  // ----------------------------------------------------------------------
128
103
  classes: _propTypes.default.object,
104
+ color: _propTypes.default.string.isRequired,
105
+ d: _propTypes.default.string.isRequired,
129
106
  highlightScope: _propTypes.default.shape({
130
107
  faded: _propTypes.default.oneOf(['global', 'none', 'series']),
131
108
  highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
132
109
  }),
110
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
111
+ /**
112
+ * If `true`, animations are skipped.
113
+ * @default false
114
+ */
115
+ skipAnimation: _propTypes.default.bool,
133
116
  /**
134
117
  * The props used for each component slot.
135
118
  * @default {}
@@ -1,12 +1,17 @@
1
1
  import * as React from 'react';
2
- import { AreaElementProps } from './AreaElement';
3
- export interface AreaPlotSlots {
4
- area?: React.JSXElementConstructor<AreaElementProps>;
2
+ import { AreaElementProps, AreaElementSlotProps, AreaElementSlots } from './AreaElement';
3
+ import { LineItemIdentifier } from '../models/seriesType/line';
4
+ export interface AreaPlotSlots extends AreaElementSlots {
5
5
  }
6
- export interface AreaPlotSlotProps {
7
- area?: Partial<AreaElementProps>;
6
+ export interface AreaPlotSlotProps extends AreaElementSlotProps {
8
7
  }
9
- export interface AreaPlotProps extends React.SVGAttributes<SVGSVGElement>, Pick<AreaElementProps, 'slots' | 'slotProps'> {
8
+ export interface AreaPlotProps extends React.SVGAttributes<SVGSVGElement>, Pick<AreaElementProps, 'slots' | 'slotProps' | 'skipAnimation'> {
9
+ /**
10
+ * Callback fired when a line area item is clicked.
11
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
12
+ * @param {LineItemIdentifier} lineItemIdentifier The line item identifier.
13
+ */
14
+ onItemClick?: (event: React.MouseEvent<SVGElement, MouseEvent>, lineItemIdentifier: LineItemIdentifier) => void;
10
15
  }
11
16
  /**
12
17
  * Demos:
@@ -19,7 +24,7 @@ export interface AreaPlotProps extends React.SVGAttributes<SVGSVGElement>, Pick<
19
24
  *
20
25
  * - [AreaPlot API](https://mui.com/x/api/charts/area-plot/)
21
26
  */
22
- declare function AreaPlot(props: AreaPlotProps): React.JSX.Element | null;
27
+ declare function AreaPlot(props: AreaPlotProps): React.JSX.Element;
23
28
  declare namespace AreaPlot {
24
29
  var propTypes: any;
25
30
  }
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AreaPlot = AreaPlot;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _d3Shape = require("d3-shape");
@@ -17,30 +17,14 @@ var _useScale = require("../hooks/useScale");
17
17
  var _getCurve = _interopRequireDefault(require("../internals/getCurve"));
18
18
  var _constants = require("../constants");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- const _excluded = ["slots", "slotProps"];
20
+ const _excluded = ["slots", "slotProps", "onItemClick", "skipAnimation"];
21
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
22
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
- /**
24
- * Demos:
25
- *
26
- * - [Lines](https://mui.com/x/react-charts/lines/)
27
- * - [Areas demonstration](https://mui.com/x/react-charts/areas-demo/)
28
- * - [Stacking](https://mui.com/x/react-charts/stacking/)
29
- *
30
- * API:
31
- *
32
- * - [AreaPlot API](https://mui.com/x/api/charts/area-plot/)
33
- */
34
- function AreaPlot(props) {
35
- const {
36
- slots,
37
- slotProps
38
- } = props,
39
- other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
23
+ const useAggregatedData = () => {
40
24
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).line;
41
25
  const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
42
26
  if (seriesData === undefined) {
43
- return null;
27
+ return [];
44
28
  }
45
29
  const {
46
30
  series,
@@ -54,46 +38,84 @@ function AreaPlot(props) {
54
38
  } = axisData;
55
39
  const defaultXAxisId = xAxisIds[0];
56
40
  const defaultYAxisId = yAxisIds[0];
57
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, other, {
58
- children: stackingGroups.flatMap(({
59
- ids: groupIds
60
- }) => {
61
- return groupIds.flatMap(seriesId => {
62
- const {
63
- xAxisKey = defaultXAxisId,
64
- yAxisKey = defaultYAxisId,
65
- stackedData,
66
- data,
67
- connectNulls
68
- } = series[seriesId];
69
- const xScale = (0, _useScale.getValueToPositionMapper)(xAxis[xAxisKey].scale);
70
- const yScale = yAxis[yAxisKey].scale;
71
- const xData = xAxis[xAxisKey].data;
72
- if (process.env.NODE_ENV !== 'production') {
73
- if (xData === undefined) {
74
- throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} should have data property to be able to display a line plot.`);
75
- }
76
- if (xData.length < stackedData.length) {
77
- throw new Error(`MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
78
- }
41
+ return stackingGroups.flatMap(({
42
+ ids: groupIds
43
+ }) => {
44
+ return groupIds.flatMap(seriesId => {
45
+ const {
46
+ xAxisKey = defaultXAxisId,
47
+ yAxisKey = defaultYAxisId,
48
+ stackedData,
49
+ data,
50
+ connectNulls
51
+ } = series[seriesId];
52
+ const xScale = (0, _useScale.getValueToPositionMapper)(xAxis[xAxisKey].scale);
53
+ const yScale = yAxis[yAxisKey].scale;
54
+ const xData = xAxis[xAxisKey].data;
55
+ if (process.env.NODE_ENV !== 'production') {
56
+ if (xData === undefined) {
57
+ throw new Error(`MUI X Charts: ${xAxisKey === _constants.DEFAULT_X_AXIS_KEY ? 'The first `xAxis`' : `The x-axis with id "${xAxisKey}"`} should have data property to be able to display a line plot.`);
79
58
  }
80
- const areaPath = (0, _d3Shape.area)().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y0(d => d.y && yScale(d.y[0])).y1(d => d.y && yScale(d.y[1]));
81
- const curve = (0, _getCurve.default)(series[seriesId].curve);
82
- const formattedData = xData?.map((x, index) => ({
83
- x,
84
- y: stackedData[index]
85
- })) ?? [];
86
- const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
87
- return !!series[seriesId].area && /*#__PURE__*/(0, _jsxRuntime.jsx)(_AreaElement.AreaElement, {
88
- id: seriesId,
89
- d: areaPath.curve(curve)(d3Data) || undefined,
90
- color: series[seriesId].color,
91
- highlightScope: series[seriesId].highlightScope,
92
- slots: slots,
93
- slotProps: slotProps
94
- }, seriesId);
59
+ if (xData.length < stackedData.length) {
60
+ throw new Error(`MUI X Charts: The data length of the x axis (${xData.length} items) is lower than the length of series (${stackedData.length} items).`);
61
+ }
62
+ }
63
+ const areaPath = (0, _d3Shape.area)().x(d => xScale(d.x)).defined((_, i) => connectNulls || data[i] != null).y0(d => d.y && yScale(d.y[0])).y1(d => d.y && yScale(d.y[1]));
64
+ const curve = (0, _getCurve.default)(series[seriesId].curve);
65
+ const formattedData = xData?.map((x, index) => ({
66
+ x,
67
+ y: stackedData[index]
68
+ })) ?? [];
69
+ const d3Data = connectNulls ? formattedData.filter((_, i) => data[i] != null) : formattedData;
70
+ const d = areaPath.curve(curve)(d3Data) || '';
71
+ return (0, _extends2.default)({}, series[seriesId], {
72
+ d,
73
+ seriesId
95
74
  });
96
- })
75
+ });
76
+ });
77
+ };
78
+
79
+ /**
80
+ * Demos:
81
+ *
82
+ * - [Lines](https://mui.com/x/react-charts/lines/)
83
+ * - [Areas demonstration](https://mui.com/x/react-charts/areas-demo/)
84
+ * - [Stacking](https://mui.com/x/react-charts/stacking/)
85
+ *
86
+ * API:
87
+ *
88
+ * - [AreaPlot API](https://mui.com/x/api/charts/area-plot/)
89
+ */
90
+ function AreaPlot(props) {
91
+ const {
92
+ slots,
93
+ slotProps,
94
+ onItemClick,
95
+ skipAnimation
96
+ } = props,
97
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
98
+ const completedData = useAggregatedData();
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, other, {
100
+ children: completedData.reverse().map(({
101
+ d,
102
+ seriesId,
103
+ color,
104
+ highlightScope,
105
+ area
106
+ }) => !!area && /*#__PURE__*/(0, _jsxRuntime.jsx)(_AreaElement.AreaElement, {
107
+ id: seriesId,
108
+ d: d,
109
+ color: color,
110
+ highlightScope: highlightScope,
111
+ slots: slots,
112
+ slotProps: slotProps,
113
+ onClick: onItemClick && (event => onItemClick(event, {
114
+ type: 'line',
115
+ seriesId
116
+ })),
117
+ skipAnimation: skipAnimation
118
+ }, seriesId))
97
119
  }));
98
120
  }
99
121
  process.env.NODE_ENV !== "production" ? AreaPlot.propTypes = {
@@ -101,6 +123,17 @@ process.env.NODE_ENV !== "production" ? AreaPlot.propTypes = {
101
123
  // | These PropTypes are generated from the TypeScript type definitions |
102
124
  // | To update them edit the TypeScript types and run "yarn proptypes" |
103
125
  // ----------------------------------------------------------------------
126
+ /**
127
+ * Callback fired when a line area item is clicked.
128
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
129
+ * @param {LineItemIdentifier} lineItemIdentifier The line item identifier.
130
+ */
131
+ onItemClick: _propTypes.default.func,
132
+ /**
133
+ * If `true`, animations are skipped.
134
+ * @default false
135
+ */
136
+ skipAnimation: _propTypes.default.bool,
104
137
  /**
105
138
  * The props used for each component slot.
106
139
  * @default {}
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
- import { AreaPlotSlotProps, AreaPlotSlots } from './AreaPlot';
3
- import { LinePlotSlotProps, LinePlotSlots } from './LinePlot';
2
+ import { AreaPlotProps, AreaPlotSlotProps, AreaPlotSlots } from './AreaPlot';
3
+ import { LinePlotProps, LinePlotSlotProps, LinePlotSlots } from './LinePlot';
4
4
  import { ResponsiveChartContainerProps } from '../ResponsiveChartContainer';
5
- import { MarkPlotSlotProps, MarkPlotSlots } from './MarkPlot';
5
+ import { MarkPlotProps, MarkPlotSlotProps, MarkPlotSlots } from './MarkPlot';
6
6
  import { ChartsAxisProps } from '../ChartsAxis/ChartsAxis';
7
7
  import { LineSeriesType } from '../models/seriesType/line';
8
8
  import { MakeOptional } from '../models/helpers';
@@ -11,11 +11,12 @@ import { ChartsLegendProps, ChartsLegendSlotProps, ChartsLegendSlots } from '../
11
11
  import { ChartsAxisHighlightProps } from '../ChartsAxisHighlight';
12
12
  import { ChartsAxisSlotProps, ChartsAxisSlots } from '../models/axis';
13
13
  import { LineHighlightPlotSlots, LineHighlightPlotSlotProps } from './LineHighlightPlot';
14
+ import { ChartsOnAxisClickHandlerProps } from '../ChartsOnAxisClickHandler';
14
15
  export interface LineChartSlots extends ChartsAxisSlots, AreaPlotSlots, LinePlotSlots, MarkPlotSlots, LineHighlightPlotSlots, ChartsLegendSlots, ChartsTooltipSlots {
15
16
  }
16
17
  export interface LineChartSlotProps extends ChartsAxisSlotProps, AreaPlotSlotProps, LinePlotSlotProps, MarkPlotSlotProps, LineHighlightPlotSlotProps, ChartsLegendSlotProps, ChartsTooltipSlotProps {
17
18
  }
18
- export interface LineChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'> {
19
+ export interface LineChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'>, ChartsOnAxisClickHandlerProps {
19
20
  series: MakeOptional<LineSeriesType, 'type'>[];
20
21
  tooltip?: ChartsTooltipProps;
21
22
  /**
@@ -45,6 +46,14 @@ export interface LineChartProps extends Omit<ResponsiveChartContainerProps, 'ser
45
46
  * @default {}
46
47
  */
47
48
  slotProps?: LineChartSlotProps;
49
+ onAreaClick?: AreaPlotProps['onItemClick'];
50
+ onLineClick?: LinePlotProps['onItemClick'];
51
+ onMarkClick?: MarkPlotProps['onItemClick'];
52
+ /**
53
+ * If `true`, animations are skipped.
54
+ * @default false
55
+ */
56
+ skipAnimation?: boolean;
48
57
  }
49
58
  /**
50
59
  * Demos: