@mui/x-charts 6.0.0-alpha.1 → 6.0.0-alpha.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 (117) hide show
  1. package/BarChart/BarChart.js +1 -0
  2. package/BarChart/legend.d.ts +3 -0
  3. package/BarChart/legend.js +20 -0
  4. package/CHANGELOG.md +62 -0
  5. package/ChartsLegend/ChartsLegend.d.ts +5 -1
  6. package/ChartsLegend/ChartsLegend.js +5 -1
  7. package/ChartsLegend/utils.d.ts +1 -1
  8. package/ChartsLegend/utils.js +12 -1
  9. package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  10. package/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
  11. package/LineChart/LineChart.js +1 -0
  12. package/LineChart/legend.d.ts +3 -0
  13. package/LineChart/legend.js +20 -0
  14. package/PieChart/PieArc.d.ts +36 -0
  15. package/PieChart/PieArc.js +128 -0
  16. package/PieChart/PieArcLabel.d.ts +36 -0
  17. package/PieChart/PieArcLabel.js +113 -0
  18. package/PieChart/PieChart.d.ts +20 -0
  19. package/PieChart/PieChart.js +292 -0
  20. package/PieChart/PiePlot.d.ts +2 -0
  21. package/PieChart/PiePlot.js +98 -0
  22. package/PieChart/formatter.d.ts +3 -0
  23. package/PieChart/formatter.js +49 -0
  24. package/PieChart/index.d.ts +4 -0
  25. package/PieChart/index.js +47 -0
  26. package/PieChart/legend.d.ts +3 -0
  27. package/PieChart/legend.js +19 -0
  28. package/PieChart/package.json +6 -0
  29. package/README.md +2 -2
  30. package/ResponsiveChartContainer/index.js +14 -3
  31. package/ScatterChart/Scatter.js +1 -1
  32. package/ScatterChart/ScatterChart.js +1 -0
  33. package/ScatterChart/legend.d.ts +3 -0
  34. package/ScatterChart/legend.js +20 -0
  35. package/context/SeriesContextProvider.js +11 -1
  36. package/esm/BarChart/BarChart.js +1 -0
  37. package/esm/BarChart/legend.js +13 -0
  38. package/esm/ChartsLegend/ChartsLegend.js +5 -1
  39. package/esm/ChartsLegend/utils.js +11 -1
  40. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  41. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +11 -3
  42. package/esm/LineChart/LineChart.js +1 -0
  43. package/esm/LineChart/legend.js +13 -0
  44. package/esm/PieChart/PieArc.js +117 -0
  45. package/esm/PieChart/PieArcLabel.js +101 -0
  46. package/esm/PieChart/PieChart.js +285 -0
  47. package/esm/PieChart/PiePlot.js +92 -0
  48. package/esm/PieChart/formatter.js +48 -0
  49. package/esm/PieChart/index.js +4 -0
  50. package/esm/PieChart/legend.js +12 -0
  51. package/esm/ResponsiveChartContainer/index.js +14 -3
  52. package/esm/ScatterChart/Scatter.js +1 -1
  53. package/esm/ScatterChart/ScatterChart.js +1 -0
  54. package/esm/ScatterChart/legend.js +13 -0
  55. package/esm/context/SeriesContextProvider.js +11 -1
  56. package/esm/index.js +1 -0
  57. package/esm/internals/defaultizeColor.js +7 -0
  58. package/esm/models/seriesType/index.js +1 -8
  59. package/index.d.ts +1 -0
  60. package/index.js +12 -1
  61. package/internals/defaultizeColor.d.ts +35 -0
  62. package/internals/defaultizeColor.js +7 -0
  63. package/legacy/BarChart/BarChart.js +1 -0
  64. package/legacy/BarChart/legend.js +15 -0
  65. package/legacy/ChartsLegend/ChartsLegend.js +5 -1
  66. package/legacy/ChartsLegend/utils.js +12 -6
  67. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +3 -1
  68. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +10 -3
  69. package/legacy/LineChart/LineChart.js +1 -0
  70. package/legacy/LineChart/legend.js +15 -0
  71. package/legacy/PieChart/PieArc.js +118 -0
  72. package/legacy/PieChart/PieArcLabel.js +101 -0
  73. package/legacy/PieChart/PieChart.js +297 -0
  74. package/legacy/PieChart/PiePlot.js +89 -0
  75. package/legacy/PieChart/formatter.js +55 -0
  76. package/legacy/PieChart/index.js +4 -0
  77. package/legacy/PieChart/legend.js +16 -0
  78. package/legacy/ResponsiveChartContainer/index.js +12 -3
  79. package/legacy/ScatterChart/Scatter.js +1 -1
  80. package/legacy/ScatterChart/ScatterChart.js +1 -0
  81. package/legacy/ScatterChart/legend.js +15 -0
  82. package/legacy/context/SeriesContextProvider.js +11 -1
  83. package/legacy/index.js +2 -1
  84. package/legacy/internals/defaultizeColor.js +9 -0
  85. package/legacy/models/seriesType/index.js +1 -8
  86. package/models/seriesType/bar.d.ts +1 -1
  87. package/models/seriesType/common.d.ts +1 -1
  88. package/models/seriesType/config.d.ts +29 -2
  89. package/models/seriesType/index.d.ts +7 -3
  90. package/models/seriesType/index.js +11 -0
  91. package/models/seriesType/line.d.ts +1 -1
  92. package/models/seriesType/pie.d.ts +103 -3
  93. package/models/seriesType/scatter.d.ts +1 -1
  94. package/modern/BarChart/BarChart.js +1 -0
  95. package/modern/BarChart/legend.js +13 -0
  96. package/modern/ChartsLegend/ChartsLegend.js +5 -1
  97. package/modern/ChartsLegend/utils.js +11 -1
  98. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  99. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
  100. package/modern/LineChart/LineChart.js +1 -0
  101. package/modern/LineChart/legend.js +13 -0
  102. package/modern/PieChart/PieArc.js +116 -0
  103. package/modern/PieChart/PieArcLabel.js +101 -0
  104. package/modern/PieChart/PieChart.js +285 -0
  105. package/modern/PieChart/PiePlot.js +91 -0
  106. package/modern/PieChart/formatter.js +41 -0
  107. package/modern/PieChart/index.js +4 -0
  108. package/modern/PieChart/legend.js +12 -0
  109. package/modern/ResponsiveChartContainer/index.js +14 -3
  110. package/modern/ScatterChart/Scatter.js +1 -1
  111. package/modern/ScatterChart/ScatterChart.js +1 -0
  112. package/modern/ScatterChart/legend.js +13 -0
  113. package/modern/context/SeriesContextProvider.js +11 -1
  114. package/modern/index.js +2 -1
  115. package/modern/internals/defaultizeColor.js +7 -0
  116. package/modern/models/seriesType/index.js +1 -8
  117. package/package.json +1 -1
@@ -131,6 +131,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
131
131
  legend: _propTypes.default.shape({
132
132
  classes: _propTypes.default.object,
133
133
  direction: _propTypes.default.oneOf(['column', 'row']),
134
+ hidden: _propTypes.default.bool,
134
135
  itemWidth: _propTypes.default.number,
135
136
  markSize: _propTypes.default.number,
136
137
  offset: _propTypes.default.shape({
@@ -0,0 +1,3 @@
1
+ import { LegendGetter } from '../models/seriesType/config';
2
+ declare const legendGetter: LegendGetter<'bar'>;
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;
package/CHANGELOG.md CHANGED
@@ -3,6 +3,68 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 6.9.2
7
+
8
+ _Jul 6, 2023_
9
+
10
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🚀 Auto-scroll when making range selection (#8661) @m4theushw
13
+
14
+ - 📚 New page: Components lifecycle (#8372) @flaviendelangle
15
+
16
+ Clarify pickers events and value updates in a [single docs page](https://mui.com/x/react-date-pickers/lifecycle/).
17
+
18
+ - 🥧 Add pie chart component
19
+
20
+ They are fresh from the code editor. You can visit [pie charts docs](https://mui.com/x/react-charts/pie/) or their [demo page](https://mui.com/x/react-charts/pie-demo/).
21
+
22
+ <img width="380" alt="pie-charts" src="https://github.com/mui/mui-x/assets/13808724/fe908c45-803c-4316-b913-dbd2f9f0551e">
23
+
24
+ - 🐞 Bugfixes
25
+
26
+ - 📚 Documentation improvements
27
+
28
+ ### `@mui/x-data-grid@v6.9.2` / `@mui/x-data-grid-pro@v6.9.2` / `@mui/x-data-grid-premium@v6.9.2`
29
+
30
+ #### Changes
31
+
32
+ - [DataGrid] Fix `RangeError` when using flex columns (#9554) @cherniavskii
33
+ - [DataGrid] Fix React 17 editing bug (#9530) @romgrk
34
+ - [DataGrid] Use `getRowId` in filtering (#9564) @romgrk
35
+ - [DataGrid] Correctly reflect `TablePagination`'s `rowsPerPageOptions` shape to `pageSizeOptions` (#9438) @burakkgunduzz
36
+ - [DataGridPremium] Auto-scroll when making range selection (#8661) @m4theushw
37
+ - [l10n] Improve Spanish (es-ES) locale (#9500) @fufex
38
+
39
+ ### `@mui/x-date-pickers@v6.9.2` / `@mui/x-date-pickers-pro@v6.9.2`
40
+
41
+ #### Changes
42
+
43
+ - [pickers] Forward digital clock classes (#9555) @YoonjiJang
44
+ - [pickers] Rename `internal` folder to `internals` on `@mui/x-date-picker-pro` (#9571) @flaviendelangle
45
+
46
+ ### `@mui/x-charts@6.0.0-alpha.2`
47
+
48
+ #### Changes
49
+
50
+ - [charts] Add pie chart component (#9395) @alexfauquette
51
+
52
+ ### Docs
53
+
54
+ - [docs] Add pickers playground (#9164) @LukasTy
55
+ - [docs] Fix API links for pickers (#9573) @alexfauquette
56
+ - [docs] Fix demos with `ToggleButtonGroup` (#9548) @flaviendelangle
57
+ - [docs] Fix typos in pagination documentation page (#9332) @RatherBeLunar
58
+ - [docs] Hide ads on paid content @oliviertassinari
59
+ - [docs] Move the charts in the sidebar (#9437) @flaviendelangle
60
+ - [docs] New page: Components lifecycle (#8372) @flaviendelangle
61
+ - [docs] Remove outdated header tag @oliviertassinari
62
+
63
+ ### Core
64
+
65
+ - [core] Fix typo in priority support @oliviertassinari
66
+ - [core] Remove mention of Crowdin @oliviertassinari
67
+
6
68
  ## 6.9.1
7
69
 
8
70
  _Jun 30, 2023_
@@ -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]);
@@ -133,6 +133,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
133
133
  legend: _propTypes.default.shape({
134
134
  classes: _propTypes.default.object,
135
135
  direction: _propTypes.default.oneOf(['column', 'row']),
136
+ hidden: _propTypes.default.bool,
136
137
  itemWidth: _propTypes.default.number,
137
138
  markSize: _propTypes.default.number,
138
139
  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 };