@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
@@ -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
 
@@ -2,4 +2,4 @@ import * as React from 'react';
2
2
  import { ChartContainerProps } from '../ChartContainer';
3
3
  import { MakeOptional } from '../models/helpers';
4
4
  export type ResponsiveChartContainerProps = MakeOptional<ChartContainerProps, 'width' | 'height'>;
5
- export declare function ResponsiveChartContainer(props: ResponsiveChartContainerProps): React.JSX.Element;
5
+ export declare const ResponsiveChartContainer: React.ForwardRefExoticComponent<Omit<ChartContainerProps, "height" | "width"> & Partial<Pick<ChartContainerProps, "height" | "width">> & React.RefAttributes<unknown>>;
@@ -4,14 +4,16 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.ResponsiveChartContainer = ResponsiveChartContainer;
7
+ exports.ResponsiveChartContainer = void 0;
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,19 +93,30 @@ 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
- function ResponsiveChartContainer(props) {
97
- const [containerRef, width, height] = useChartDimensions(props.width, props.height);
102
+ const ResponsiveChartContainer = /*#__PURE__*/React.forwardRef(function ResponsiveChartContainer(props, ref) {
103
+ const {
104
+ width: inWidth,
105
+ height: inHeight
106
+ } = props,
107
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
108
+ const [containerRef, width, height] = useChartDimensions(inWidth, inHeight);
98
109
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(ResizableContainer, {
99
110
  ref: containerRef,
100
111
  ownerState: {
101
- width: props.width,
102
- height: props.height
112
+ width: inWidth,
113
+ height: inHeight
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
- height: height
117
+ height: height,
118
+ ref: ref
107
119
  }))
108
120
  });
109
- }
121
+ });
122
+ exports.ResponsiveChartContainer = ResponsiveChartContainer;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DefaultizedScatterSeriesType } from '../models/seriesType/scatter';
3
- import { D3Scale } from '../hooks/useScale';
3
+ import { D3Scale } from '../models/axis';
4
4
  export interface ScatterProps {
5
5
  series: DefaultizedScatterSeriesType;
6
6
  xScale: D3Scale;
@@ -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,
@@ -12,8 +12,5 @@ export interface ScatterChartProps extends Omit<ResponsiveChartContainerProps, '
12
12
  axisHighlight?: ChartsAxisHighlightProps;
13
13
  legend?: ChartsLegendProps;
14
14
  }
15
- declare function ScatterChart(props: ScatterChartProps): React.JSX.Element;
16
- declare namespace ScatterChart {
17
- var propTypes: any;
18
- }
15
+ declare const ScatterChart: React.ForwardRefExoticComponent<ScatterChartProps & React.RefAttributes<unknown>>;
19
16
  export { ScatterChart };