@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
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PieChart = PieChart;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _ResponsiveChartContainer = require("../ResponsiveChartContainer");
12
+ var _ChartsAxis = require("../ChartsAxis/ChartsAxis");
13
+ var _constants = require("../constants");
14
+ var _ChartsTooltip = require("../ChartsTooltip");
15
+ var _ChartsLegend = require("../ChartsLegend");
16
+ var _ChartsAxisHighlight = require("../ChartsAxisHighlight");
17
+ var _PiePlot = require("./PiePlot");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ 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); }
20
+ 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; }
21
+ const defaultMargin = {
22
+ top: 5,
23
+ bottom: 5,
24
+ left: 5,
25
+ right: 100
26
+ };
27
+ function PieChart(props) {
28
+ const {
29
+ xAxis,
30
+ yAxis,
31
+ series,
32
+ width,
33
+ height,
34
+ margin: marginProps,
35
+ colors,
36
+ sx,
37
+ tooltip = {
38
+ trigger: 'item'
39
+ },
40
+ axisHighlight = {
41
+ x: 'none',
42
+ y: 'none'
43
+ },
44
+ legend = {
45
+ direction: 'column',
46
+ position: {
47
+ vertical: 'middle',
48
+ horizontal: 'right'
49
+ }
50
+ },
51
+ topAxis = null,
52
+ leftAxis = null,
53
+ rightAxis = null,
54
+ bottomAxis = null,
55
+ children
56
+ } = props;
57
+ const margin = (0, _extends2.default)({}, defaultMargin, marginProps);
58
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ResponsiveChartContainer.ResponsiveChartContainer, {
59
+ series: series.map(s => (0, _extends2.default)({
60
+ type: 'pie'
61
+ }, s)),
62
+ width: width,
63
+ height: height,
64
+ margin: margin,
65
+ xAxis: xAxis ?? [{
66
+ id: _constants.DEFAULT_X_AXIS_KEY,
67
+ scaleType: 'point',
68
+ data: [...new Array(Math.max(...series.map(s => s.data.length)))].map((_, index) => index)
69
+ }],
70
+ yAxis: yAxis,
71
+ colors: colors,
72
+ sx: sx,
73
+ disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
74
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, {
75
+ topAxis: topAxis,
76
+ leftAxis: leftAxis,
77
+ rightAxis: rightAxis,
78
+ bottomAxis: bottomAxis
79
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PiePlot.PiePlot, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLegend.ChartsLegend, (0, _extends2.default)({}, legend)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({}, axisHighlight)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltip.ChartsTooltip, (0, _extends2.default)({}, tooltip)), children]
80
+ });
81
+ }
82
+ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
83
+ // ----------------------------- Warning --------------------------------
84
+ // | These PropTypes are generated from the TypeScript type definitions |
85
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
86
+ // ----------------------------------------------------------------------
87
+ axisHighlight: _propTypes.default.shape({
88
+ x: _propTypes.default.oneOf(['band', 'line', 'none']),
89
+ y: _propTypes.default.oneOf(['line', 'none'])
90
+ }),
91
+ /**
92
+ * Indicate which axis to display the bottom of the charts.
93
+ * Can be a string (the id of the axis) or an object `ChartsXAxisProps`
94
+ * @default xAxisIds[0] The id of the first provided axis
95
+ */
96
+ bottomAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
97
+ axisId: _propTypes.default.string.isRequired,
98
+ classes: _propTypes.default.object,
99
+ disableLine: _propTypes.default.bool,
100
+ disableTicks: _propTypes.default.bool,
101
+ fill: _propTypes.default.string,
102
+ label: _propTypes.default.string,
103
+ labelFontSize: _propTypes.default.number,
104
+ position: _propTypes.default.oneOf(['bottom', 'top']),
105
+ stroke: _propTypes.default.string,
106
+ tickFontSize: _propTypes.default.number,
107
+ tickSize: _propTypes.default.number
108
+ }), _propTypes.default.string]),
109
+ children: _propTypes.default.node,
110
+ className: _propTypes.default.string,
111
+ /**
112
+ * Color palette used to colorize multiple series.
113
+ */
114
+ colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
115
+ desc: _propTypes.default.string,
116
+ disableAxisListener: _propTypes.default.bool,
117
+ height: _propTypes.default.number,
118
+ /**
119
+ * Indicate which axis to display the left of the charts.
120
+ * Can be a string (the id of the axis) or an object `ChartsYAxisProps`
121
+ * @default yAxisIds[0] The id of the first provided axis
122
+ */
123
+ leftAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
124
+ axisId: _propTypes.default.string.isRequired,
125
+ classes: _propTypes.default.object,
126
+ disableLine: _propTypes.default.bool,
127
+ disableTicks: _propTypes.default.bool,
128
+ fill: _propTypes.default.string,
129
+ label: _propTypes.default.string,
130
+ labelFontSize: _propTypes.default.number,
131
+ position: _propTypes.default.oneOf(['left', 'right']),
132
+ stroke: _propTypes.default.string,
133
+ tickFontSize: _propTypes.default.number,
134
+ tickSize: _propTypes.default.number
135
+ }), _propTypes.default.string]),
136
+ legend: _propTypes.default.shape({
137
+ classes: _propTypes.default.object,
138
+ direction: _propTypes.default.oneOf(['column', 'row']),
139
+ hidden: _propTypes.default.bool,
140
+ itemWidth: _propTypes.default.number,
141
+ markSize: _propTypes.default.number,
142
+ offset: _propTypes.default.shape({
143
+ x: _propTypes.default.number,
144
+ y: _propTypes.default.number
145
+ }),
146
+ position: _propTypes.default.shape({
147
+ horizontal: _propTypes.default.oneOf(['left', 'middle', 'right']).isRequired,
148
+ vertical: _propTypes.default.oneOf(['bottom', 'middle', 'top']).isRequired
149
+ }),
150
+ spacing: _propTypes.default.number
151
+ }),
152
+ margin: _propTypes.default.shape({
153
+ bottom: _propTypes.default.number,
154
+ left: _propTypes.default.number,
155
+ right: _propTypes.default.number,
156
+ top: _propTypes.default.number
157
+ }),
158
+ /**
159
+ * Indicate which axis to display the right of the charts.
160
+ * Can be a string (the id of the axis) or an object `ChartsYAxisProps`
161
+ * @default null
162
+ */
163
+ rightAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
164
+ axisId: _propTypes.default.string.isRequired,
165
+ classes: _propTypes.default.object,
166
+ disableLine: _propTypes.default.bool,
167
+ disableTicks: _propTypes.default.bool,
168
+ fill: _propTypes.default.string,
169
+ label: _propTypes.default.string,
170
+ labelFontSize: _propTypes.default.number,
171
+ position: _propTypes.default.oneOf(['left', 'right']),
172
+ stroke: _propTypes.default.string,
173
+ tickFontSize: _propTypes.default.number,
174
+ tickSize: _propTypes.default.number
175
+ }), _propTypes.default.string]),
176
+ series: _propTypes.default.arrayOf(_propTypes.default.shape({
177
+ arcLabel: _propTypes.default.oneOfType([_propTypes.default.oneOf(['formattedValue', 'label', 'value']), _propTypes.default.func]),
178
+ arcLabelMinAngle: _propTypes.default.number,
179
+ color: _propTypes.default.string,
180
+ cornerRadius: _propTypes.default.number,
181
+ cx: _propTypes.default.number,
182
+ cy: _propTypes.default.number,
183
+ data: _propTypes.default.arrayOf(_propTypes.default.shape({
184
+ color: _propTypes.default.string,
185
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
186
+ label: _propTypes.default.string,
187
+ value: _propTypes.default.number.isRequired
188
+ })).isRequired,
189
+ endAngle: _propTypes.default.number,
190
+ faded: _propTypes.default.shape({
191
+ additionalRadius: _propTypes.default.number,
192
+ cornerRadius: _propTypes.default.number,
193
+ innerRadius: _propTypes.default.number,
194
+ outerRadius: _propTypes.default.number
195
+ }),
196
+ highlighted: _propTypes.default.shape({
197
+ additionalRadius: _propTypes.default.number,
198
+ cornerRadius: _propTypes.default.number,
199
+ innerRadius: _propTypes.default.number,
200
+ outerRadius: _propTypes.default.number
201
+ }),
202
+ highlightScope: _propTypes.default.shape({
203
+ faded: _propTypes.default.oneOf(['global', 'none', 'series']),
204
+ highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
205
+ }),
206
+ id: _propTypes.default.string,
207
+ innerRadius: _propTypes.default.number,
208
+ outerRadius: _propTypes.default.number,
209
+ paddingAngle: _propTypes.default.number,
210
+ sortingValues: _propTypes.default.oneOfType([_propTypes.default.oneOf(['asc', 'desc', 'none']), _propTypes.default.func]),
211
+ startAngle: _propTypes.default.number,
212
+ type: _propTypes.default.oneOf(['pie']),
213
+ valueFormatter: _propTypes.default.func
214
+ })).isRequired,
215
+ 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]),
216
+ title: _propTypes.default.string,
217
+ tooltip: _propTypes.default.shape({
218
+ axisContent: _propTypes.default.elementType,
219
+ classes: _propTypes.default.object,
220
+ itemContent: _propTypes.default.elementType,
221
+ trigger: _propTypes.default.oneOf(['axis', 'item', 'none'])
222
+ }),
223
+ /**
224
+ * Indicate which axis to display the top of the charts.
225
+ * Can be a string (the id of the axis) or an object `ChartsXAxisProps`
226
+ * @default null
227
+ */
228
+ topAxis: _propTypes.default.oneOfType([_propTypes.default.shape({
229
+ axisId: _propTypes.default.string.isRequired,
230
+ classes: _propTypes.default.object,
231
+ disableLine: _propTypes.default.bool,
232
+ disableTicks: _propTypes.default.bool,
233
+ fill: _propTypes.default.string,
234
+ label: _propTypes.default.string,
235
+ labelFontSize: _propTypes.default.number,
236
+ position: _propTypes.default.oneOf(['bottom', 'top']),
237
+ stroke: _propTypes.default.string,
238
+ tickFontSize: _propTypes.default.number,
239
+ tickSize: _propTypes.default.number
240
+ }), _propTypes.default.string]),
241
+ viewBox: _propTypes.default.shape({
242
+ height: _propTypes.default.number,
243
+ width: _propTypes.default.number,
244
+ x: _propTypes.default.number,
245
+ y: _propTypes.default.number
246
+ }),
247
+ width: _propTypes.default.number,
248
+ xAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
249
+ axisId: _propTypes.default.string,
250
+ classes: _propTypes.default.object,
251
+ data: _propTypes.default.array,
252
+ disableLine: _propTypes.default.bool,
253
+ disableTicks: _propTypes.default.bool,
254
+ fill: _propTypes.default.string,
255
+ id: _propTypes.default.string,
256
+ label: _propTypes.default.string,
257
+ labelFontSize: _propTypes.default.number,
258
+ max: _propTypes.default.number,
259
+ maxTicks: _propTypes.default.number,
260
+ min: _propTypes.default.number,
261
+ minTicks: _propTypes.default.number,
262
+ position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
263
+ scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
264
+ stroke: _propTypes.default.string,
265
+ tickFontSize: _propTypes.default.number,
266
+ tickSize: _propTypes.default.number,
267
+ tickSpacing: _propTypes.default.number,
268
+ valueFormatter: _propTypes.default.func
269
+ })),
270
+ yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
271
+ axisId: _propTypes.default.string,
272
+ classes: _propTypes.default.object,
273
+ data: _propTypes.default.array,
274
+ disableLine: _propTypes.default.bool,
275
+ disableTicks: _propTypes.default.bool,
276
+ fill: _propTypes.default.string,
277
+ id: _propTypes.default.string,
278
+ label: _propTypes.default.string,
279
+ labelFontSize: _propTypes.default.number,
280
+ max: _propTypes.default.number,
281
+ maxTicks: _propTypes.default.number,
282
+ min: _propTypes.default.number,
283
+ minTicks: _propTypes.default.number,
284
+ position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
285
+ scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
286
+ stroke: _propTypes.default.string,
287
+ tickFontSize: _propTypes.default.number,
288
+ tickSize: _propTypes.default.number,
289
+ tickSpacing: _propTypes.default.number,
290
+ valueFormatter: _propTypes.default.func
291
+ }))
292
+ } : void 0;
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare function PiePlot(): React.JSX.Element | null;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PiePlot = PiePlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _SeriesContextProvider = require("../context/SeriesContextProvider");
11
+ var _PieArc = _interopRequireDefault(require("./PieArc"));
12
+ var _PieArcLabel = _interopRequireDefault(require("./PieArcLabel"));
13
+ var _DrawingProvider = require("../context/DrawingProvider");
14
+ var _jsxRuntime = require("react/jsx-runtime");
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); }
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; }
17
+ const RATIO = 180 / Math.PI;
18
+ function getItemLabel(arcLabel, arcLabelMinAngle, item) {
19
+ if (!arcLabel) {
20
+ return null;
21
+ }
22
+ const angle = (item.endAngle - item.startAngle) * RATIO;
23
+ if (angle < arcLabelMinAngle) {
24
+ return null;
25
+ }
26
+ if (typeof arcLabel === 'string') {
27
+ return item[arcLabel]?.toString();
28
+ }
29
+ return arcLabel(item);
30
+ }
31
+ function PiePlot() {
32
+ const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).pie;
33
+ const {
34
+ left,
35
+ top,
36
+ width,
37
+ height
38
+ } = React.useContext(_DrawingProvider.DrawingContext);
39
+ if (seriesData === undefined) {
40
+ return null;
41
+ }
42
+ const availableRadius = Math.min(width, height) / 2;
43
+ const center = {
44
+ x: left + width / 2,
45
+ y: top + height / 2
46
+ };
47
+ const {
48
+ series,
49
+ seriesOrder
50
+ } = seriesData;
51
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
52
+ children: seriesOrder.map(seriesId => {
53
+ const {
54
+ innerRadius,
55
+ outerRadius,
56
+ cornerRadius,
57
+ arcLabel,
58
+ arcLabelMinAngle = 0,
59
+ data,
60
+ cx,
61
+ cy,
62
+ highlighted,
63
+ faded
64
+ } = series[seriesId];
65
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
66
+ transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
67
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
68
+ children: [data.map((item, index) => {
69
+ return /*#__PURE__*/(0, React.createElement)(_PieArc.default, (0, _extends2.default)({}, item, {
70
+ key: item.id,
71
+ innerRadius: innerRadius,
72
+ outerRadius: outerRadius ?? availableRadius,
73
+ cornerRadius: cornerRadius,
74
+ id: seriesId,
75
+ color: item.color,
76
+ dataIndex: index,
77
+ highlightScope: series[seriesId].highlightScope,
78
+ highlighted: highlighted,
79
+ faded: faded
80
+ }));
81
+ }), data.map((item, index) => {
82
+ return /*#__PURE__*/(0, React.createElement)(_PieArcLabel.default, (0, _extends2.default)({}, item, {
83
+ key: item.id,
84
+ innerRadius: innerRadius,
85
+ outerRadius: outerRadius ?? availableRadius,
86
+ cornerRadius: cornerRadius,
87
+ id: seriesId,
88
+ color: item.color,
89
+ dataIndex: index,
90
+ highlightScope: series[seriesId].highlightScope,
91
+ formattedArcLabel: getItemLabel(arcLabel, arcLabelMinAngle, item)
92
+ }));
93
+ })]
94
+ })
95
+ }, seriesId);
96
+ })
97
+ });
98
+ }
@@ -0,0 +1,3 @@
1
+ import { Formatter } from '../models/seriesType/config';
2
+ declare const formatter: Formatter<'pie'>;
3
+ export default formatter;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _d3Shape = require("d3-shape");
10
+ const getSortingComparator = (comparator = 'none') => {
11
+ if (typeof comparator === 'function') {
12
+ return comparator;
13
+ }
14
+ switch (comparator) {
15
+ case 'none':
16
+ return null;
17
+ case 'desc':
18
+ return (a, b) => b - a;
19
+ case 'asc':
20
+ return (a, b) => a - b;
21
+ default:
22
+ return null;
23
+ }
24
+ };
25
+ const formatter = params => {
26
+ const {
27
+ seriesOrder,
28
+ series
29
+ } = params;
30
+ const defaultizedSeries = {};
31
+ seriesOrder.forEach(seriesId => {
32
+ const arcs = (0, _d3Shape.pie)().startAngle(2 * Math.PI * (series[seriesId].startAngle ?? 0) / 360).endAngle(2 * Math.PI * (series[seriesId].endAngle ?? 360) / 360).padAngle(2 * Math.PI * (series[seriesId].paddingAngle ?? 0) / 360).sortValues(getSortingComparator(series[seriesId].sortingValues ?? 'none'))(series[seriesId].data.map(piePoint => piePoint.value));
33
+ defaultizedSeries[seriesId] = (0, _extends2.default)({
34
+ valueFormatter: item => item.value.toLocaleString()
35
+ }, series[seriesId], {
36
+ data: series[seriesId].data.map((item, index) => (0, _extends2.default)({}, item, {
37
+ id: item.id ?? `auto-generated-pie-id-${seriesId}-${index}`
38
+ }, arcs[index])).map(item => (0, _extends2.default)({}, item, {
39
+ formattedValue: series[seriesId].valueFormatter?.(item) ?? item.value.toLocaleString()
40
+ }))
41
+ });
42
+ });
43
+ return {
44
+ seriesOrder,
45
+ series: defaultizedSeries
46
+ };
47
+ };
48
+ var _default = formatter;
49
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ export { PiePlot } from './PiePlot';
2
+ export { PieChart } from './PieChart';
3
+ export * from './PieArc';
4
+ export * from './PieArcLabel';
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ PiePlot: true,
8
+ PieChart: true
9
+ };
10
+ Object.defineProperty(exports, "PieChart", {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _PieChart.PieChart;
14
+ }
15
+ });
16
+ Object.defineProperty(exports, "PiePlot", {
17
+ enumerable: true,
18
+ get: function () {
19
+ return _PiePlot.PiePlot;
20
+ }
21
+ });
22
+ var _PiePlot = require("./PiePlot");
23
+ var _PieChart = require("./PieChart");
24
+ var _PieArc = require("./PieArc");
25
+ Object.keys(_PieArc).forEach(function (key) {
26
+ if (key === "default" || key === "__esModule") return;
27
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
28
+ if (key in exports && exports[key] === _PieArc[key]) return;
29
+ Object.defineProperty(exports, key, {
30
+ enumerable: true,
31
+ get: function () {
32
+ return _PieArc[key];
33
+ }
34
+ });
35
+ });
36
+ var _PieArcLabel = require("./PieArcLabel");
37
+ Object.keys(_PieArcLabel).forEach(function (key) {
38
+ if (key === "default" || key === "__esModule") return;
39
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
40
+ if (key in exports && exports[key] === _PieArcLabel[key]) return;
41
+ Object.defineProperty(exports, key, {
42
+ enumerable: true,
43
+ get: function () {
44
+ return _PieArcLabel[key];
45
+ }
46
+ });
47
+ });
@@ -0,0 +1,3 @@
1
+ import { LegendGetter } from '../models/seriesType/config';
2
+ declare const legendGetter: LegendGetter<'pie'>;
3
+ export default legendGetter;
@@ -0,0 +1,19 @@
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
+ return seriesOrder.flatMap(seriesId => series[seriesId].data.map(item => ({
13
+ color: item.color,
14
+ label: item.label,
15
+ id: item.id
16
+ })).filter(item => item.label !== undefined));
17
+ };
18
+ var _default = legendGetter;
19
+ exports.default = _default;
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "../esm/PieChart/index.js",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts"
6
+ }
package/README.md CHANGED
@@ -7,13 +7,13 @@ It's part of MUI X, an open-core extension of MUI, with advanced components.
7
7
 
8
8
  Install the package in your project directory with:
9
9
 
10
- ```sh
10
+ ```bash
11
11
  npm install @mui/x-charts
12
12
  ```
13
13
 
14
14
  or
15
15
 
16
- ```sh
16
+ ```bash
17
17
  yarn add @mui/x-charts
18
18
  ```
19
19
 
@@ -6,12 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ResponsiveChartContainer = ResponsiveChartContainer;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
10
  var React = _interopRequireWildcard(require("react"));
10
11
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
11
12
  var _ownerWindow = _interopRequireDefault(require("@mui/utils/ownerWindow"));
12
13
  var _styles = require("@mui/material/styles");
13
14
  var _ChartContainer = require("../ChartContainer");
14
15
  var _jsxRuntime = require("react/jsx-runtime");
16
+ const _excluded = ["width", "height"];
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
19
  const useChartDimensions = (inWidth, inHeight) => {
@@ -91,17 +93,26 @@ const ResizableContainer = (0, _styles.styled)('div', {
91
93
  flexDirection: 'column',
92
94
  alignItems: 'center',
93
95
  justifyContent: 'center',
94
- overflow: 'hidden'
96
+ overflow: 'hidden',
97
+ '&>svg': {
98
+ width: '100%',
99
+ height: '100%'
100
+ }
95
101
  }));
96
102
  function ResponsiveChartContainer(props) {
97
- const [containerRef, width, height] = useChartDimensions(props.width, props.height);
103
+ const {
104
+ width: propsWidth,
105
+ height: propsHeight
106
+ } = props,
107
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
108
+ const [containerRef, width, height] = useChartDimensions(propsWidth, propsHeight);
98
109
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ResizableContainer, {
99
110
  ref: containerRef,
100
111
  ownerState: {
101
112
  width: props.width,
102
113
  height: props.height
103
114
  },
104
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartContainer.ChartContainer, (0, _extends2.default)({}, props, {
115
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartContainer.ChartContainer, (0, _extends2.default)({}, other, {
105
116
  width: width,
106
117
  height: height
107
118
  }))
@@ -91,7 +91,7 @@ process.env.NODE_ENV !== "production" ? Scatter.propTypes = {
91
91
  color: _propTypes.default.string.isRequired,
92
92
  markerSize: _propTypes.default.number.isRequired,
93
93
  series: _propTypes.default.shape({
94
- color: _propTypes.default.string.isRequired,
94
+ color: _propTypes.default.string,
95
95
  data: _propTypes.default.arrayOf(_propTypes.default.shape({
96
96
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
97
97
  x: _propTypes.default.number.isRequired,
@@ -117,6 +117,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
117
117
  legend: _propTypes.default.shape({
118
118
  classes: _propTypes.default.object,
119
119
  direction: _propTypes.default.oneOf(['column', 'row']),
120
+ hidden: _propTypes.default.bool,
120
121
  itemWidth: _propTypes.default.number,
121
122
  markSize: _propTypes.default.number,
122
123
  offset: _propTypes.default.shape({
@@ -0,0 +1,3 @@
1
+ import { LegendGetter } from '../models/seriesType/config';
2
+ declare const legendGetter: LegendGetter<'scatter'>;
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;
@@ -12,6 +12,7 @@ var _styles = require("@mui/material/styles");
12
12
  var _formatter = _interopRequireDefault(require("../BarChart/formatter"));
13
13
  var _formatter2 = _interopRequireDefault(require("../ScatterChart/formatter"));
14
14
  var _formatter3 = _interopRequireDefault(require("../LineChart/formatter"));
15
+ var _formatter4 = _interopRequireDefault(require("../PieChart/formatter"));
15
16
  var _defaultizeColor = require("../internals/defaultizeColor");
16
17
  var _colorPalettes = require("../colorPalettes");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
@@ -22,8 +23,17 @@ exports.SeriesContext = SeriesContext;
22
23
  const seriesTypeFormatter = {
23
24
  bar: _formatter.default,
24
25
  scatter: _formatter2.default,
25
- line: _formatter3.default
26
+ line: _formatter3.default,
27
+ pie: _formatter4.default
26
28
  };
29
+ /**
30
+ * This methods is the interface between what the developper is providing and what compoenents receives
31
+ * To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if soe line data are modified
32
+ * It also add defaultized values such as the ids, colors
33
+ * @param series The array of series provided by devs
34
+ * @param colors The color palette used to defaultize series colors
35
+ * @returns An object structuring all the series by type.
36
+ */
27
37
  const formatSeries = (series, colors) => {
28
38
  // Group series by type
29
39
  const seriesGroups = {};