@mui/x-charts 6.0.0-alpha.1 → 6.0.0-alpha.3

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 (179) hide show
  1. package/BarChart/BarChart.d.ts +1 -4
  2. package/BarChart/BarChart.js +6 -3
  3. package/BarChart/BarPlot.js +42 -8
  4. package/BarChart/legend.d.ts +3 -0
  5. package/BarChart/legend.js +20 -0
  6. package/CHANGELOG.md +287 -107
  7. package/ChartContainer/index.d.ts +3 -1
  8. package/ChartContainer/index.js +10 -6
  9. package/ChartsAxisHighlight/ChartsAxisHighlight.js +3 -2
  10. package/ChartsLegend/ChartsLegend.d.ts +5 -1
  11. package/ChartsLegend/ChartsLegend.js +5 -1
  12. package/ChartsLegend/utils.d.ts +1 -1
  13. package/ChartsLegend/utils.js +12 -1
  14. package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  15. package/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
  16. package/LineChart/LineChart.d.ts +1 -4
  17. package/LineChart/LineChart.js +6 -3
  18. package/LineChart/legend.d.ts +3 -0
  19. package/LineChart/legend.js +20 -0
  20. package/PieChart/PieArc.d.ts +36 -0
  21. package/PieChart/PieArc.js +128 -0
  22. package/PieChart/PieArcLabel.d.ts +36 -0
  23. package/PieChart/PieArcLabel.js +113 -0
  24. package/PieChart/PieChart.d.ts +20 -0
  25. package/PieChart/PieChart.js +292 -0
  26. package/PieChart/PiePlot.d.ts +2 -0
  27. package/PieChart/PiePlot.js +98 -0
  28. package/PieChart/formatter.d.ts +3 -0
  29. package/PieChart/formatter.js +49 -0
  30. package/PieChart/index.d.ts +4 -0
  31. package/PieChart/index.js +47 -0
  32. package/PieChart/legend.d.ts +3 -0
  33. package/PieChart/legend.js +19 -0
  34. package/PieChart/package.json +6 -0
  35. package/README.md +2 -2
  36. package/ResponsiveChartContainer/index.d.ts +1 -1
  37. package/ResponsiveChartContainer/index.js +22 -9
  38. package/ScatterChart/Scatter.d.ts +1 -1
  39. package/ScatterChart/Scatter.js +1 -1
  40. package/ScatterChart/ScatterChart.d.ts +1 -4
  41. package/ScatterChart/ScatterChart.js +6 -3
  42. package/ScatterChart/legend.d.ts +3 -0
  43. package/ScatterChart/legend.js +20 -0
  44. package/context/CartesianContextProvider.js +31 -20
  45. package/context/SeriesContextProvider.js +11 -1
  46. package/esm/BarChart/BarChart.js +4 -2
  47. package/esm/BarChart/BarPlot.js +44 -8
  48. package/esm/BarChart/legend.js +13 -0
  49. package/esm/ChartContainer/index.js +7 -5
  50. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +3 -2
  51. package/esm/ChartsLegend/ChartsLegend.js +5 -1
  52. package/esm/ChartsLegend/utils.js +11 -1
  53. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  54. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +11 -3
  55. package/esm/LineChart/LineChart.js +4 -2
  56. package/esm/LineChart/legend.js +13 -0
  57. package/esm/PieChart/PieArc.js +117 -0
  58. package/esm/PieChart/PieArcLabel.js +101 -0
  59. package/esm/PieChart/PieChart.js +285 -0
  60. package/esm/PieChart/PiePlot.js +92 -0
  61. package/esm/PieChart/formatter.js +48 -0
  62. package/esm/PieChart/index.js +4 -0
  63. package/esm/PieChart/legend.js +12 -0
  64. package/esm/ResponsiveChartContainer/index.js +20 -8
  65. package/esm/ScatterChart/Scatter.js +1 -1
  66. package/esm/ScatterChart/ScatterChart.js +4 -2
  67. package/esm/ScatterChart/legend.js +13 -0
  68. package/esm/context/CartesianContextProvider.js +31 -18
  69. package/esm/context/SeriesContextProvider.js +11 -1
  70. package/esm/hooks/index.js +2 -0
  71. package/esm/hooks/useAxisEvents.js +12 -7
  72. package/esm/hooks/useDrawingArea.js +16 -0
  73. package/esm/hooks/useScale.js +19 -21
  74. package/esm/hooks/useTicks.js +26 -13
  75. package/esm/index.js +2 -0
  76. package/esm/internals/defaultizeColor.js +7 -0
  77. package/esm/internals/getScale.js +17 -0
  78. package/esm/internals/isBandScale.js +3 -0
  79. package/esm/models/axis.js +6 -1
  80. package/esm/models/seriesType/index.js +1 -8
  81. package/hooks/index.d.ts +2 -0
  82. package/hooks/index.js +27 -0
  83. package/hooks/package.json +6 -0
  84. package/hooks/useAxisEvents.js +14 -9
  85. package/hooks/useDrawingArea.d.ts +6 -0
  86. package/hooks/useDrawingArea.js +24 -0
  87. package/hooks/useScale.d.ts +3 -6
  88. package/hooks/useScale.js +24 -24
  89. package/hooks/useTicks.d.ts +1 -1
  90. package/hooks/useTicks.js +19 -9
  91. package/index.d.ts +2 -0
  92. package/index.js +23 -1
  93. package/internals/defaultizeColor.d.ts +35 -0
  94. package/internals/defaultizeColor.js +7 -0
  95. package/internals/getScale.d.ts +2 -0
  96. package/internals/getScale.js +23 -0
  97. package/internals/isBandScale.d.ts +3 -0
  98. package/internals/isBandScale.js +9 -0
  99. package/legacy/BarChart/BarChart.js +4 -2
  100. package/legacy/BarChart/BarPlot.js +44 -10
  101. package/legacy/BarChart/legend.js +15 -0
  102. package/legacy/ChartContainer/index.js +7 -5
  103. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +3 -2
  104. package/legacy/ChartsLegend/ChartsLegend.js +5 -1
  105. package/legacy/ChartsLegend/utils.js +12 -6
  106. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +3 -1
  107. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +10 -3
  108. package/legacy/LineChart/LineChart.js +4 -2
  109. package/legacy/LineChart/legend.js +15 -0
  110. package/legacy/PieChart/PieArc.js +118 -0
  111. package/legacy/PieChart/PieArcLabel.js +101 -0
  112. package/legacy/PieChart/PieChart.js +297 -0
  113. package/legacy/PieChart/PiePlot.js +89 -0
  114. package/legacy/PieChart/formatter.js +55 -0
  115. package/legacy/PieChart/index.js +4 -0
  116. package/legacy/PieChart/legend.js +16 -0
  117. package/legacy/ResponsiveChartContainer/index.js +18 -8
  118. package/legacy/ScatterChart/Scatter.js +1 -1
  119. package/legacy/ScatterChart/ScatterChart.js +4 -2
  120. package/legacy/ScatterChart/legend.js +15 -0
  121. package/legacy/context/CartesianContextProvider.js +31 -18
  122. package/legacy/context/SeriesContextProvider.js +11 -1
  123. package/legacy/hooks/index.js +2 -0
  124. package/legacy/hooks/useAxisEvents.js +12 -7
  125. package/legacy/hooks/useDrawingArea.js +17 -0
  126. package/legacy/hooks/useScale.js +17 -21
  127. package/legacy/hooks/useTicks.js +26 -13
  128. package/legacy/index.js +3 -1
  129. package/legacy/internals/defaultizeColor.js +9 -0
  130. package/legacy/internals/getScale.js +17 -0
  131. package/legacy/internals/isBandScale.js +3 -0
  132. package/legacy/models/axis.js +6 -1
  133. package/legacy/models/seriesType/index.js +1 -8
  134. package/models/axis.d.ts +25 -12
  135. package/models/axis.js +9 -1
  136. package/models/seriesType/bar.d.ts +1 -1
  137. package/models/seriesType/common.d.ts +1 -1
  138. package/models/seriesType/config.d.ts +29 -2
  139. package/models/seriesType/index.d.ts +7 -3
  140. package/models/seriesType/index.js +11 -0
  141. package/models/seriesType/line.d.ts +1 -1
  142. package/models/seriesType/pie.d.ts +103 -3
  143. package/models/seriesType/scatter.d.ts +1 -1
  144. package/modern/BarChart/BarChart.js +4 -2
  145. package/modern/BarChart/BarPlot.js +44 -8
  146. package/modern/BarChart/legend.js +13 -0
  147. package/modern/ChartContainer/index.js +7 -5
  148. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +3 -2
  149. package/modern/ChartsLegend/ChartsLegend.js +5 -1
  150. package/modern/ChartsLegend/utils.js +11 -1
  151. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  152. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
  153. package/modern/LineChart/LineChart.js +4 -2
  154. package/modern/LineChart/legend.js +13 -0
  155. package/modern/PieChart/PieArc.js +116 -0
  156. package/modern/PieChart/PieArcLabel.js +101 -0
  157. package/modern/PieChart/PieChart.js +285 -0
  158. package/modern/PieChart/PiePlot.js +91 -0
  159. package/modern/PieChart/formatter.js +41 -0
  160. package/modern/PieChart/index.js +4 -0
  161. package/modern/PieChart/legend.js +12 -0
  162. package/modern/ResponsiveChartContainer/index.js +20 -8
  163. package/modern/ScatterChart/Scatter.js +1 -1
  164. package/modern/ScatterChart/ScatterChart.js +4 -2
  165. package/modern/ScatterChart/legend.js +13 -0
  166. package/modern/context/CartesianContextProvider.js +29 -18
  167. package/modern/context/SeriesContextProvider.js +11 -1
  168. package/modern/hooks/index.js +2 -0
  169. package/modern/hooks/useAxisEvents.js +12 -7
  170. package/modern/hooks/useDrawingArea.js +16 -0
  171. package/modern/hooks/useScale.js +19 -21
  172. package/modern/hooks/useTicks.js +18 -8
  173. package/modern/index.js +3 -1
  174. package/modern/internals/defaultizeColor.js +7 -0
  175. package/modern/internals/getScale.js +17 -0
  176. package/modern/internals/isBandScale.js +3 -0
  177. package/modern/models/axis.js +6 -1
  178. package/modern/models/seriesType/index.js +1 -8
  179. package/package.json +1 -1
@@ -6,4 +6,6 @@ import { CartesianContextProviderProps } from '../context/CartesianContextProvid
6
6
  export type ChartContainerProps = Omit<ChartsSurfaceProps & SeriesContextProviderProps & Omit<DrawingProviderProps, 'svgRef'> & CartesianContextProviderProps, 'children'> & {
7
7
  children?: React.ReactNode;
8
8
  };
9
- export declare function ChartContainer(props: ChartContainerProps): React.JSX.Element;
9
+ export declare const ChartContainer: React.ForwardRefExoticComponent<Omit<ChartsSurfaceProps & SeriesContextProviderProps & Omit<DrawingProviderProps, "svgRef"> & CartesianContextProviderProps, "children"> & {
10
+ children?: React.ReactNode;
11
+ } & React.RefAttributes<unknown>>;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.ChartContainer = ChartContainer;
7
+ exports.ChartContainer = void 0;
7
8
  var React = _interopRequireWildcard(require("react"));
9
+ var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
8
10
  var _DrawingProvider = require("../context/DrawingProvider");
9
11
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
10
12
  var _InteractionProvider = require("../context/InteractionProvider");
@@ -14,7 +16,7 @@ var _HighlightProvider = require("../context/HighlightProvider");
14
16
  var _jsxRuntime = require("react/jsx-runtime");
15
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
- function ChartContainer(props) {
19
+ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(props, ref) {
18
20
  const {
19
21
  width,
20
22
  height,
@@ -29,12 +31,13 @@ function ChartContainer(props) {
29
31
  disableAxisListener,
30
32
  children
31
33
  } = props;
32
- const ref = React.useRef(null);
34
+ const svgRef = React.useRef(null);
35
+ const handleRef = (0, _useForkRef.default)(ref, svgRef);
33
36
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DrawingProvider.DrawingProvider, {
34
37
  width: width,
35
38
  height: height,
36
39
  margin: margin,
37
- svgRef: ref,
40
+ svgRef: svgRef,
38
41
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SeriesContextProvider.SeriesContextProvider, {
39
42
  series: series,
40
43
  colors: colors,
@@ -46,7 +49,7 @@ function ChartContainer(props) {
46
49
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsSurface.ChartsSurface, {
47
50
  width: width,
48
51
  height: height,
49
- ref: ref,
52
+ ref: handleRef,
50
53
  sx: sx,
51
54
  title: title,
52
55
  desc: desc,
@@ -58,4 +61,5 @@ function ChartContainer(props) {
58
61
  })
59
62
  })
60
63
  });
61
- }
64
+ });
65
+ exports.ChartContainer = ChartContainer;
@@ -10,6 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _InteractionProvider = require("../context/InteractionProvider");
11
11
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
12
12
  var _useScale = require("../hooks/useScale");
13
+ var _isBandScale = require("../internals/isBandScale");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -33,8 +34,8 @@ function ChartsAxisHighlight(props) {
33
34
  } = React.useContext(_InteractionProvider.InteractionContext);
34
35
  const getXPosition = (0, _useScale.getValueToPositionMapper)(xScale);
35
36
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
36
- children: [xAxisHighlight === 'band' && axis.x !== null && (0, _useScale.isBandScale)(xScale) && /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
37
- d: `M ${xScale(axis.x.value)} ${yScale.range()[0]} L ${xScale(axis.x.value) + xScale.bandwidth()} ${yScale.range()[0]} L ${xScale(axis.x.value) + xScale.bandwidth()} ${yScale.range()[1]} L ${xScale(axis.x.value)} ${yScale.range()[1]} Z`,
37
+ children: [xAxisHighlight === 'band' && axis.x !== null && (0, _isBandScale.isBandScale)(xScale) && /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
38
+ d: `M ${xScale(axis.x.value) - (xScale.step() - xScale.bandwidth()) / 2} ${yScale.range()[0]} l ${xScale.step()} 0 l 0 ${yScale.range()[1] - yScale.range()[0]} l ${-xScale.step()} 0 Z`,
38
39
  fill: "gray",
39
40
  fillOpacity: 0.1,
40
41
  style: {
@@ -15,6 +15,10 @@ export type ChartsLegendProps = {
15
15
  * Override or extend the styles applied to the component.
16
16
  */
17
17
  classes?: Partial<ChartsLegendClasses>;
18
+ /**
19
+ * Set to true to hide the legend.
20
+ */
21
+ hidden?: boolean;
18
22
  } & SizingParams;
19
23
  type DefaultizedChartsLegendProps = DefaultizedProps<ChartsLegendProps, 'direction' | 'position'>;
20
24
  type SeriesLegendOwnerState = ChartSeriesDefaultized<any> & Pick<DefaultizedChartsLegendProps, 'direction'> & {
@@ -40,5 +44,5 @@ export declare const ChartsLegendMark: import("@emotion/styled").StyledComponent
40
44
  };
41
45
  }, Pick<React.SVGProps<SVGRectElement>, keyof React.SVGProps<SVGRectElement>>, {}>;
42
46
  export declare const ChartsLegendLabel: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<Theme>, Pick<React.SVGTextElementAttributes<SVGTextElement>, keyof React.SVGTextElementAttributes<SVGTextElement>>, {}>;
43
- export declare function ChartsLegend(inProps: ChartsLegendProps): React.JSX.Element;
47
+ export declare function ChartsLegend(inProps: ChartsLegendProps): React.JSX.Element | null;
44
48
  export {};
@@ -159,7 +159,8 @@ function ChartsLegend(inProps) {
159
159
  const {
160
160
  position,
161
161
  direction,
162
- offset
162
+ offset,
163
+ hidden
163
164
  } = props;
164
165
  const theme = (0, _styles.useTheme)();
165
166
  const classes = useUtilityClasses((0, _extends2.default)({}, props, {
@@ -167,6 +168,9 @@ function ChartsLegend(inProps) {
167
168
  }));
168
169
  const drawingArea = React.useContext(_DrawingProvider.DrawingContext);
169
170
  const series = React.useContext(_SeriesContextProvider.SeriesContext);
171
+ if (hidden) {
172
+ return null;
173
+ }
170
174
  const seriesToDisplay = (0, _utils2.getSeriesToDisplay)(series);
171
175
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartsLegendRoot, {
172
176
  ownerState: {
@@ -11,4 +11,4 @@ export type SizingParams = {
11
11
  itemWidth?: number;
12
12
  spacing?: number;
13
13
  };
14
- export declare function getSeriesToDisplay(series: FormattedSeries): (import("../models/seriesType/config").ChartSeriesDefaultized<"bar"> | import("../models/seriesType/config").ChartSeriesDefaultized<"scatter"> | import("../models/seriesType/config").ChartSeriesDefaultized<"line">)[];
14
+ export declare function getSeriesToDisplay(series: FormattedSeries): import("../models/seriesType/config").LegendParams[];
@@ -1,9 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.getSeriesToDisplay = getSeriesToDisplay;
8
+ var _legend = _interopRequireDefault(require("../BarChart/legend"));
9
+ var _legend2 = _interopRequireDefault(require("../ScatterChart/legend"));
10
+ var _legend3 = _interopRequireDefault(require("../LineChart/legend"));
11
+ var _legend4 = _interopRequireDefault(require("../PieChart/legend"));
12
+ const legendGetter = {
13
+ bar: _legend.default,
14
+ scatter: _legend2.default,
15
+ line: _legend3.default,
16
+ pie: _legend4.default
17
+ };
7
18
  function getSeriesToDisplay(series) {
8
- return Object.values(series).flatMap(s => s.seriesOrder.map(seriesId => s.series[seriesId])).filter(s => s.label !== undefined);
19
+ return Object.keys(series).flatMap(seriesType => legendGetter[seriesType](series[seriesType]));
9
20
  }
@@ -90,7 +90,7 @@ function ChartsAxisTooltipContent(props) {
90
90
  const USED_X_AXIS_ID = xAxisIds[0];
91
91
  const relevantSeries = React.useMemo(() => {
92
92
  const rep = [];
93
- Object.keys(series).forEach(seriesType => {
93
+ Object.keys(series).filter(seriesType => ['bar', 'line', 'scatter'].includes(seriesType)).forEach(seriesType => {
94
94
  series[seriesType].seriesOrder.forEach(seriesId => {
95
95
  const axisKey = series[seriesType].series[seriesId].xAxisKey;
96
96
  if (axisKey === undefined || axisKey === USED_X_AXIS_ID) {
@@ -21,8 +21,17 @@ function DefaultChartsItemContent(props) {
21
21
  if (itemData.dataIndex === undefined) {
22
22
  return null;
23
23
  }
24
- const displayedLabel = series.label ?? null;
25
- const color = series.color;
24
+ const {
25
+ displayedLabel,
26
+ color
27
+ } = series.type === 'pie' ? {
28
+ color: series.data[itemData.dataIndex].color,
29
+ displayedLabel: series.data[itemData.dataIndex].label
30
+ } : {
31
+ color: series.color,
32
+ displayedLabel: series.label
33
+ };
34
+
26
35
  // TODO: Manage to let TS understand series.data and series.valueFormatter are coherent
27
36
  // @ts-ignore
28
37
  const formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
@@ -12,8 +12,5 @@ export interface LineChartProps extends Omit<ResponsiveChartContainerProps, 'ser
12
12
  axisHighlight?: ChartsAxisHighlightProps;
13
13
  legend?: ChartsLegendProps;
14
14
  }
15
- declare function LineChart(props: LineChartProps): React.JSX.Element;
16
- declare namespace LineChart {
17
- var propTypes: any;
18
- }
15
+ declare const LineChart: React.ForwardRefExoticComponent<LineChartProps & React.RefAttributes<unknown>>;
19
16
  export { LineChart };
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.LineChart = LineChart;
7
+ exports.LineChart = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useId = _interopRequireDefault(require("@mui/utils/useId"));
@@ -22,7 +22,7 @@ var _ChartsClipPath = require("../ChartsClipPath");
22
22
  var _jsxRuntime = require("react/jsx-runtime");
23
23
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
- function LineChart(props) {
25
+ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
26
26
  const {
27
27
  xAxis,
28
28
  yAxis,
@@ -46,6 +46,7 @@ function LineChart(props) {
46
46
  const id = (0, _useId.default)();
47
47
  const clipPathId = `${id}-clip-path`;
48
48
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ResponsiveChartContainer.ResponsiveChartContainer, {
49
+ ref: ref,
49
50
  series: series.map(s => (0, _extends2.default)({
50
51
  type: 'line'
51
52
  }, s)),
@@ -75,7 +76,8 @@ function LineChart(props) {
75
76
  id: clipPathId
76
77
  }), children]
77
78
  });
78
- }
79
+ });
80
+ exports.LineChart = LineChart;
79
81
  process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
80
82
  // ----------------------------- Warning --------------------------------
81
83
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -133,6 +135,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
133
135
  legend: _propTypes.default.shape({
134
136
  classes: _propTypes.default.object,
135
137
  direction: _propTypes.default.oneOf(['column', 'row']),
138
+ hidden: _propTypes.default.bool,
136
139
  itemWidth: _propTypes.default.number,
137
140
  markSize: _propTypes.default.number,
138
141
  offset: _propTypes.default.shape({
@@ -0,0 +1,3 @@
1
+ import { LegendGetter } from '../models/seriesType/config';
2
+ declare const legendGetter: LegendGetter<'line'>;
3
+ export default legendGetter;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ const legendGetter = params => {
8
+ const {
9
+ seriesOrder,
10
+ series
11
+ } = params;
12
+ const data = seriesOrder.map(seriesId => ({
13
+ color: series[seriesId].color,
14
+ label: series[seriesId].label,
15
+ id: seriesId
16
+ }));
17
+ return data.filter(item => item.label !== undefined);
18
+ };
19
+ var _default = legendGetter;
20
+ exports.default = _default;
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { PieArcDatum as D3PieArcDatum } from 'd3-shape';
3
+ import { HighlightScope } from '../context/HighlightProvider';
4
+ import { PieSeriesType } from '../models/seriesType/pie';
5
+ export interface PieArcClasses {
6
+ /** Styles applied to the root element. */
7
+ root: string;
8
+ /** Styles applied to the root element when higlighted. */
9
+ highlighted: string;
10
+ /** Styles applied to the root element when faded. */
11
+ faded: string;
12
+ }
13
+ export type PieArcClassKey = keyof PieArcClasses;
14
+ export interface PieArcOwnerState {
15
+ id: string;
16
+ dataIndex: number;
17
+ color: string;
18
+ isFaded: boolean;
19
+ isHighlighted: boolean;
20
+ classes?: Partial<PieArcClasses>;
21
+ }
22
+ export declare function getPieArcUtilityClass(slot: string): string;
23
+ export declare const pieArcClasses: PieArcClasses;
24
+ export type PieArcProps = Omit<PieArcOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & D3PieArcDatum<any> & {
25
+ highlightScope?: Partial<HighlightScope>;
26
+ innerRadius: PieSeriesType['innerRadius'];
27
+ outerRadius: number;
28
+ cornerRadius: PieSeriesType['cornerRadius'];
29
+ highlighted: PieSeriesType['highlighted'];
30
+ faded: PieSeriesType['faded'];
31
+ };
32
+ declare function PieArc(props: PieArcProps): React.JSX.Element;
33
+ declare namespace PieArc {
34
+ var propTypes: any;
35
+ }
36
+ export default PieArc;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = PieArc;
8
+ exports.getPieArcUtilityClass = getPieArcUtilityClass;
9
+ exports.pieArcClasses = void 0;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _d3Shape = require("d3-shape");
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
+ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
17
+ var _styles = require("@mui/material/styles");
18
+ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
19
+ var _InteractionProvider = require("../context/InteractionProvider");
20
+ var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
21
+ var _jsxRuntime = require("react/jsx-runtime");
22
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "innerRadius", "outerRadius", "cornerRadius", "highlighted", "faded"];
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ function getPieArcUtilityClass(slot) {
26
+ return (0, _generateUtilityClass.default)('MuiPieArc', slot);
27
+ }
28
+ const pieArcClasses = (0, _generateUtilityClasses.default)('MuiPieArc', ['root', 'highlighted', 'faded']);
29
+ exports.pieArcClasses = pieArcClasses;
30
+ const useUtilityClasses = ownerState => {
31
+ const {
32
+ classes,
33
+ id,
34
+ isFaded,
35
+ isHighlighted
36
+ } = ownerState;
37
+ const slots = {
38
+ root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded']
39
+ };
40
+ return (0, _composeClasses.default)(slots, getPieArcUtilityClass, classes);
41
+ };
42
+ const PieArcRoot = (0, _styles.styled)('path', {
43
+ name: 'MuiPieArc',
44
+ slot: 'Root',
45
+ overridesResolver: (_, styles) => styles.arc
46
+ })(({
47
+ ownerState,
48
+ theme
49
+ }) => ({
50
+ stroke: theme.palette.background.paper,
51
+ strokeWidth: 1,
52
+ strokeLinejoin: 'round',
53
+ fill: ownerState.color,
54
+ opacity: ownerState.isFaded ? 0.3 : 1
55
+ }));
56
+ function PieArc(props) {
57
+ const {
58
+ id,
59
+ dataIndex,
60
+ classes: innerClasses,
61
+ color,
62
+ highlightScope,
63
+ innerRadius: baseInnerRadius = 0,
64
+ outerRadius: baseOuterRadius,
65
+ cornerRadius: baseCornerRadius = 0,
66
+ highlighted,
67
+ faded = {
68
+ additionalRadius: -5
69
+ }
70
+ } = props,
71
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
72
+ const getInteractionItemProps = (0, _useInteractionItemProps.useInteractionItemProps)(highlightScope);
73
+ const {
74
+ item
75
+ } = React.useContext(_InteractionProvider.InteractionContext);
76
+ const isHighlighted = (0, _useInteractionItemProps.getIsHighlighted)(item, {
77
+ type: 'pie',
78
+ seriesId: id,
79
+ dataIndex
80
+ }, highlightScope);
81
+ const isFaded = !isHighlighted && (0, _useInteractionItemProps.getIsFaded)(item, {
82
+ type: 'pie',
83
+ seriesId: id,
84
+ dataIndex
85
+ }, highlightScope);
86
+ const ownerState = {
87
+ id,
88
+ dataIndex,
89
+ classes: innerClasses,
90
+ color,
91
+ isFaded,
92
+ isHighlighted
93
+ };
94
+ const classes = useUtilityClasses(ownerState);
95
+ const attibuesOverride = (0, _extends2.default)({
96
+ additionalRadius: 0
97
+ }, isFaded && faded || isHighlighted && highlighted || {});
98
+ const innerRadius = Math.max(0, attibuesOverride.innerRadius ?? baseInnerRadius);
99
+ const outerRadius = Math.max(0, attibuesOverride.outerRadius ?? baseOuterRadius + attibuesOverride.additionalRadius);
100
+ const cornerRadius = attibuesOverride.cornerRadius ?? baseCornerRadius;
101
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PieArcRoot, (0, _extends2.default)({
102
+ d: (0, _d3Shape.arc)().cornerRadius(cornerRadius)((0, _extends2.default)({}, other, {
103
+ innerRadius,
104
+ outerRadius
105
+ })),
106
+ ownerState: ownerState,
107
+ className: classes.root
108
+ }, getInteractionItemProps({
109
+ type: 'pie',
110
+ seriesId: id,
111
+ dataIndex
112
+ })));
113
+ }
114
+ process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
115
+ // ----------------------------- Warning --------------------------------
116
+ // | These PropTypes are generated from the TypeScript type definitions |
117
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
118
+ // ----------------------------------------------------------------------
119
+ classes: _propTypes.default.object,
120
+ cornerRadius: _propTypes.default.number,
121
+ dataIndex: _propTypes.default.number.isRequired,
122
+ highlightScope: _propTypes.default.shape({
123
+ faded: _propTypes.default.oneOf(['global', 'none', 'series']),
124
+ highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
125
+ }),
126
+ innerRadius: _propTypes.default.number,
127
+ outerRadius: _propTypes.default.number.isRequired
128
+ } : void 0;
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { PieArcDatum as D3PieArcDatum } from 'd3-shape';
3
+ import { HighlightScope } from '../context/HighlightProvider';
4
+ import { PieSeriesType } from '../models/seriesType/pie';
5
+ export interface PieArcLabelClasses {
6
+ /** Styles applied to the root element. */
7
+ root: string;
8
+ /** Styles applied to the root element when higlighted. */
9
+ highlighted: string;
10
+ /** Styles applied to the root element when faded. */
11
+ faded: string;
12
+ }
13
+ export type PieArcLabelClassKey = keyof PieArcLabelClasses;
14
+ export interface PieArcLabelOwnerState {
15
+ id: string;
16
+ dataIndex: number;
17
+ color: string;
18
+ isFaded: boolean;
19
+ isHighlighted: boolean;
20
+ classes?: Partial<PieArcLabelClasses>;
21
+ }
22
+ export declare function getPieArcLabelUtilityClass(slot: string): string;
23
+ export declare const pieArcLabelClasses: PieArcLabelClasses;
24
+ export type PieArcLabelProps = Omit<PieArcLabelOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & D3PieArcDatum<any> & {
25
+ highlightScope?: Partial<HighlightScope>;
26
+ innerRadius: PieSeriesType['innerRadius'];
27
+ outerRadius: number;
28
+ cornerRadius: PieSeriesType['cornerRadius'];
29
+ } & {
30
+ formattedArcLabel?: string | null;
31
+ };
32
+ declare function PieArcLabel(props: PieArcLabelProps): React.JSX.Element;
33
+ declare namespace PieArcLabel {
34
+ var propTypes: any;
35
+ }
36
+ export default PieArcLabel;
@@ -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.default = PieArcLabel;
8
+ exports.getPieArcLabelUtilityClass = getPieArcLabelUtilityClass;
9
+ exports.pieArcLabelClasses = void 0;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _d3Shape = require("d3-shape");
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
+ var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
17
+ var _styles = require("@mui/material/styles");
18
+ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
19
+ var _InteractionProvider = require("../context/InteractionProvider");
20
+ var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
21
+ var _jsxRuntime = require("react/jsx-runtime");
22
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "innerRadius", "outerRadius", "cornerRadius", "formattedArcLabel"];
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ function getPieArcLabelUtilityClass(slot) {
26
+ return (0, _generateUtilityClass.default)('MuiPieArcLabel', slot);
27
+ }
28
+ const pieArcLabelClasses = (0, _generateUtilityClasses.default)('MuiPieArcLabel', ['root', 'highlighted', 'faded']);
29
+ exports.pieArcLabelClasses = pieArcLabelClasses;
30
+ const useUtilityClasses = ownerState => {
31
+ const {
32
+ classes,
33
+ id,
34
+ isFaded,
35
+ isHighlighted
36
+ } = ownerState;
37
+ const slots = {
38
+ root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded']
39
+ };
40
+ return (0, _composeClasses.default)(slots, getPieArcLabelUtilityClass, classes);
41
+ };
42
+ const PieArcLabelRoot = (0, _styles.styled)('text', {
43
+ name: 'MuiPieArcLabel',
44
+ slot: 'Root',
45
+ overridesResolver: (_, styles) => styles.root
46
+ })(({
47
+ theme
48
+ }) => ({
49
+ fill: theme.palette.text.primary,
50
+ alignmentBaseline: 'baseline',
51
+ textAnchor: 'middle'
52
+ }));
53
+ function PieArcLabel(props) {
54
+ const {
55
+ id,
56
+ dataIndex,
57
+ classes: innerClasses,
58
+ color,
59
+ highlightScope,
60
+ innerRadius = 0,
61
+ outerRadius,
62
+ cornerRadius = 0,
63
+ formattedArcLabel
64
+ } = props,
65
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
66
+ const {
67
+ item
68
+ } = React.useContext(_InteractionProvider.InteractionContext);
69
+ const isHighlighted = (0, _useInteractionItemProps.getIsHighlighted)(item, {
70
+ type: 'pie',
71
+ seriesId: id,
72
+ dataIndex
73
+ }, highlightScope);
74
+ const isFaded = !isHighlighted && (0, _useInteractionItemProps.getIsFaded)(item, {
75
+ type: 'pie',
76
+ seriesId: id,
77
+ dataIndex
78
+ }, highlightScope);
79
+ const ownerState = {
80
+ id,
81
+ dataIndex,
82
+ classes: innerClasses,
83
+ color,
84
+ isFaded,
85
+ isHighlighted
86
+ };
87
+ const classes = useUtilityClasses(ownerState);
88
+ const arcLabelPosition = formattedArcLabel ? (0, _d3Shape.arc)().cornerRadius(cornerRadius).centroid((0, _extends2.default)({}, other, {
89
+ innerRadius,
90
+ outerRadius
91
+ })) : [0, 0];
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PieArcLabelRoot, {
93
+ className: classes.root,
94
+ x: arcLabelPosition[0],
95
+ y: arcLabelPosition[1],
96
+ children: formattedArcLabel
97
+ });
98
+ }
99
+ process.env.NODE_ENV !== "production" ? PieArcLabel.propTypes = {
100
+ // ----------------------------- Warning --------------------------------
101
+ // | These PropTypes are generated from the TypeScript type definitions |
102
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
103
+ // ----------------------------------------------------------------------
104
+ classes: _propTypes.default.object,
105
+ cornerRadius: _propTypes.default.number,
106
+ dataIndex: _propTypes.default.number.isRequired,
107
+ highlightScope: _propTypes.default.shape({
108
+ faded: _propTypes.default.oneOf(['global', 'none', 'series']),
109
+ highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
110
+ }),
111
+ innerRadius: _propTypes.default.number,
112
+ outerRadius: _propTypes.default.number.isRequired
113
+ } : void 0;
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { ResponsiveChartContainerProps } from '../ResponsiveChartContainer';
3
+ import { ChartsAxisProps } from '../ChartsAxis/ChartsAxis';
4
+ import { PieSeriesType } from '../models/seriesType';
5
+ import { MakeOptional } from '../models/helpers';
6
+ import { ChartsTooltipProps } from '../ChartsTooltip';
7
+ import { ChartsLegendProps } from '../ChartsLegend';
8
+ import { ChartsAxisHighlightProps } from '../ChartsAxisHighlight';
9
+ import { PieValueType } from '../models/seriesType/pie';
10
+ export interface PieChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, ChartsAxisProps {
11
+ series: MakeOptional<PieSeriesType<MakeOptional<PieValueType, 'id'>>, 'type'>[];
12
+ tooltip?: ChartsTooltipProps;
13
+ axisHighlight?: ChartsAxisHighlightProps;
14
+ legend?: ChartsLegendProps;
15
+ }
16
+ declare function PieChart(props: PieChartProps): React.JSX.Element;
17
+ declare namespace PieChart {
18
+ var propTypes: any;
19
+ }
20
+ export { PieChart };