@mui/x-charts 6.0.0-alpha.9 → 6.18.0

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 (281) hide show
  1. package/BarChart/BarChart.d.ts +19 -5
  2. package/BarChart/BarChart.js +52 -13
  3. package/BarChart/BarElement.d.ts +1319 -4
  4. package/BarChart/BarElement.js +10 -10
  5. package/BarChart/BarPlot.d.ts +17 -1
  6. package/BarChart/BarPlot.js +152 -66
  7. package/BarChart/formatter.js +2 -3
  8. package/BarChart/legend.js +1 -2
  9. package/CHANGELOG.md +735 -55
  10. package/ChartContainer/index.js +7 -5
  11. package/ChartsAxis/ChartsAxis.d.ts +9 -0
  12. package/ChartsAxis/ChartsAxis.js +28 -2
  13. package/ChartsAxis/axisClasses.d.ts +1 -1
  14. package/ChartsAxis/axisClasses.js +1 -2
  15. package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
  16. package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
  17. package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
  18. package/ChartsClipPath/ChartsClipPath.js +7 -2
  19. package/ChartsLegend/ChartsLegend.d.ts +44 -24
  20. package/ChartsLegend/ChartsLegend.js +192 -150
  21. package/ChartsLegend/chartsLegendClasses.js +1 -2
  22. package/ChartsLegend/utils.d.ts +1 -6
  23. package/ChartsSurface.d.ts +1 -1
  24. package/ChartsSurface.js +9 -18
  25. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
  26. package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
  27. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
  28. package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
  29. package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
  30. package/ChartsTooltip/ChartsTooltip.js +62 -18
  31. package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
  32. package/ChartsTooltip/ChartsTooltipTable.js +22 -20
  33. package/ChartsTooltip/tooltipClasses.js +1 -2
  34. package/ChartsTooltip/utils.js +2 -2
  35. package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
  36. package/ChartsXAxis/ChartsXAxis.js +161 -40
  37. package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
  38. package/ChartsYAxis/ChartsYAxis.js +86 -33
  39. package/LineChart/AreaElement.d.ts +11 -1
  40. package/LineChart/AreaElement.js +14 -6
  41. package/LineChart/AreaPlot.d.ts +11 -0
  42. package/LineChart/AreaPlot.js +27 -8
  43. package/LineChart/LineChart.d.ts +16 -3
  44. package/LineChart/LineChart.js +48 -13
  45. package/LineChart/LineElement.d.ts +11 -1
  46. package/LineChart/LineElement.js +14 -6
  47. package/LineChart/LineHighlightElement.d.ts +10 -0
  48. package/LineChart/LineHighlightElement.js +13 -4
  49. package/LineChart/LineHighlightPlot.d.ts +10 -0
  50. package/LineChart/LineHighlightPlot.js +14 -3
  51. package/LineChart/LinePlot.d.ts +10 -0
  52. package/LineChart/LinePlot.js +25 -12
  53. package/LineChart/MarkElement.d.ts +10 -0
  54. package/LineChart/MarkElement.js +14 -5
  55. package/LineChart/MarkPlot.d.ts +10 -0
  56. package/LineChart/MarkPlot.js +40 -9
  57. package/LineChart/formatter.js +5 -5
  58. package/LineChart/legend.js +1 -2
  59. package/PieChart/PieArc.d.ts +11 -13
  60. package/PieChart/PieArc.js +28 -60
  61. package/PieChart/PieArcLabel.d.ts +8 -9
  62. package/PieChart/PieArcLabel.js +46 -38
  63. package/PieChart/PieArcLabelPlot.d.ts +28 -0
  64. package/PieChart/PieArcLabelPlot.js +99 -0
  65. package/PieChart/PieArcPlot.d.ts +35 -0
  66. package/PieChart/PieArcPlot.js +92 -0
  67. package/PieChart/PieChart.d.ts +19 -5
  68. package/PieChart/PieChart.js +61 -14
  69. package/PieChart/PiePlot.d.ts +15 -9
  70. package/PieChart/PiePlot.js +77 -55
  71. package/PieChart/dataTransform/transition.d.ts +4 -0
  72. package/PieChart/dataTransform/transition.js +136 -0
  73. package/PieChart/dataTransform/useTransformData.d.ts +15 -0
  74. package/PieChart/dataTransform/useTransformData.js +67 -0
  75. package/PieChart/formatter.js +1 -2
  76. package/PieChart/legend.js +1 -2
  77. package/README.md +8 -14
  78. package/ResponsiveChartContainer/index.js +7 -8
  79. package/ScatterChart/Scatter.d.ts +10 -0
  80. package/ScatterChart/Scatter.js +12 -2
  81. package/ScatterChart/ScatterChart.d.ts +16 -3
  82. package/ScatterChart/ScatterChart.js +43 -12
  83. package/ScatterChart/ScatterPlot.d.ts +10 -0
  84. package/ScatterChart/ScatterPlot.js +12 -2
  85. package/ScatterChart/formatter.js +1 -2
  86. package/ScatterChart/legend.js +1 -2
  87. package/SparkLineChart/SparkLineChart.d.ts +12 -3
  88. package/SparkLineChart/SparkLineChart.js +28 -7
  89. package/colorPalettes/colorPalettes.js +6 -12
  90. package/constants.js +5 -8
  91. package/context/CartesianContextProvider.d.ts +5 -0
  92. package/context/CartesianContextProvider.js +31 -16
  93. package/context/DrawingProvider.d.ts +7 -0
  94. package/context/DrawingProvider.js +12 -6
  95. package/context/HighlightProvider.js +3 -4
  96. package/context/InteractionProvider.js +3 -4
  97. package/context/SeriesContextProvider.js +3 -4
  98. package/esm/BarChart/BarChart.js +49 -9
  99. package/esm/BarChart/BarElement.js +7 -4
  100. package/esm/BarChart/BarPlot.js +152 -67
  101. package/esm/BarChart/formatter.js +1 -1
  102. package/esm/ChartContainer/index.js +3 -0
  103. package/esm/ChartsAxis/ChartsAxis.js +26 -0
  104. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  105. package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
  106. package/esm/ChartsLegend/ChartsLegend.js +188 -142
  107. package/esm/ChartsSurface.js +4 -12
  108. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  109. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  110. package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
  111. package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
  112. package/esm/ChartsXAxis/ChartsXAxis.js +158 -37
  113. package/esm/ChartsYAxis/ChartsYAxis.js +83 -30
  114. package/esm/LineChart/AreaElement.js +10 -0
  115. package/esm/LineChart/AreaPlot.js +26 -6
  116. package/esm/LineChart/LineChart.js +45 -9
  117. package/esm/LineChart/LineElement.js +10 -0
  118. package/esm/LineChart/LineHighlightElement.js +10 -0
  119. package/esm/LineChart/LineHighlightPlot.js +12 -1
  120. package/esm/LineChart/LinePlot.js +25 -14
  121. package/esm/LineChart/MarkElement.js +11 -1
  122. package/esm/LineChart/MarkPlot.js +38 -7
  123. package/esm/LineChart/formatter.js +7 -3
  124. package/esm/PieChart/PieArc.js +26 -58
  125. package/esm/PieChart/PieArcLabel.js +43 -34
  126. package/esm/PieChart/PieArcLabelPlot.js +92 -0
  127. package/esm/PieChart/PieArcPlot.js +84 -0
  128. package/esm/PieChart/PieChart.js +59 -12
  129. package/esm/PieChart/PiePlot.js +76 -57
  130. package/esm/PieChart/dataTransform/transition.js +130 -0
  131. package/esm/PieChart/dataTransform/useTransformData.js +59 -0
  132. package/esm/ResponsiveChartContainer/index.js +3 -3
  133. package/esm/ScatterChart/Scatter.js +10 -0
  134. package/esm/ScatterChart/ScatterChart.js +40 -8
  135. package/esm/ScatterChart/ScatterPlot.js +10 -0
  136. package/esm/SparkLineChart/SparkLineChart.js +25 -3
  137. package/esm/constants.js +1 -1
  138. package/esm/context/CartesianContextProvider.js +30 -14
  139. package/esm/context/DrawingProvider.js +8 -0
  140. package/esm/hooks/useChartDimensions.js +2 -0
  141. package/esm/hooks/useMounted.js +16 -0
  142. package/esm/hooks/useReducedMotion.js +27 -0
  143. package/esm/hooks/useTicks.js +15 -9
  144. package/esm/internals/components/AxisSharedComponents.js +15 -70
  145. package/esm/internals/components/ChartsText.js +77 -0
  146. package/esm/internals/domUtils.js +113 -0
  147. package/esm/internals/geometry.js +36 -0
  148. package/hooks/useAxisEvents.js +2 -2
  149. package/hooks/useChartDimensions.d.ts +2 -0
  150. package/hooks/useChartDimensions.js +5 -4
  151. package/hooks/useDrawingArea.js +2 -2
  152. package/hooks/useInteractionItemProps.js +2 -2
  153. package/hooks/useMounted.d.ts +1 -0
  154. package/hooks/useMounted.js +25 -0
  155. package/hooks/useReducedMotion.d.ts +8 -0
  156. package/hooks/useReducedMotion.js +33 -0
  157. package/hooks/useScale.d.ts +2 -2
  158. package/hooks/useScale.js +2 -2
  159. package/hooks/useTicks.d.ts +19 -11
  160. package/hooks/useTicks.js +19 -14
  161. package/index.js +1 -1
  162. package/internals/components/AxisSharedComponents.d.ts +0 -4
  163. package/internals/components/AxisSharedComponents.js +18 -78
  164. package/internals/components/ChartsText.d.ts +35 -0
  165. package/internals/components/ChartsText.js +87 -0
  166. package/internals/defaultizeColor.d.ts +7 -2
  167. package/internals/defaultizeValueFormatter.js +1 -2
  168. package/internals/domUtils.d.ts +13 -0
  169. package/internals/domUtils.js +122 -0
  170. package/internals/geometry.d.ts +9 -0
  171. package/internals/geometry.js +42 -0
  172. package/internals/stackSeries.js +2 -4
  173. package/legacy/BarChart/BarChart.js +49 -9
  174. package/legacy/BarChart/BarElement.js +6 -3
  175. package/legacy/BarChart/BarPlot.js +151 -63
  176. package/legacy/BarChart/formatter.js +1 -1
  177. package/legacy/ChartContainer/index.js +3 -0
  178. package/legacy/ChartsAxis/ChartsAxis.js +26 -0
  179. package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
  180. package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
  181. package/legacy/ChartsLegend/ChartsLegend.js +203 -140
  182. package/legacy/ChartsSurface.js +3 -12
  183. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
  184. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  185. package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
  186. package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
  187. package/legacy/ChartsXAxis/ChartsXAxis.js +162 -39
  188. package/legacy/ChartsYAxis/ChartsYAxis.js +83 -30
  189. package/legacy/LineChart/AreaElement.js +10 -0
  190. package/legacy/LineChart/AreaPlot.js +31 -7
  191. package/legacy/LineChart/LineChart.js +45 -9
  192. package/legacy/LineChart/LineElement.js +10 -0
  193. package/legacy/LineChart/LineHighlightElement.js +10 -0
  194. package/legacy/LineChart/LineHighlightPlot.js +12 -1
  195. package/legacy/LineChart/LinePlot.js +29 -12
  196. package/legacy/LineChart/MarkElement.js +11 -1
  197. package/legacy/LineChart/MarkPlot.js +37 -7
  198. package/legacy/LineChart/formatter.js +7 -3
  199. package/legacy/PieChart/PieArc.js +30 -62
  200. package/legacy/PieChart/PieArcLabel.js +48 -34
  201. package/legacy/PieChart/PieArcLabelPlot.js +93 -0
  202. package/legacy/PieChart/PieArcPlot.js +84 -0
  203. package/legacy/PieChart/PieChart.js +59 -12
  204. package/legacy/PieChart/PiePlot.js +76 -59
  205. package/legacy/PieChart/dataTransform/transition.js +142 -0
  206. package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
  207. package/legacy/ResponsiveChartContainer/index.js +3 -3
  208. package/legacy/ScatterChart/Scatter.js +10 -0
  209. package/legacy/ScatterChart/ScatterChart.js +40 -8
  210. package/legacy/ScatterChart/ScatterPlot.js +10 -0
  211. package/legacy/SparkLineChart/SparkLineChart.js +25 -3
  212. package/legacy/constants.js +1 -1
  213. package/legacy/context/CartesianContextProvider.js +30 -14
  214. package/legacy/context/DrawingProvider.js +8 -0
  215. package/legacy/hooks/useChartDimensions.js +2 -0
  216. package/legacy/hooks/useMounted.js +21 -0
  217. package/legacy/hooks/useReducedMotion.js +27 -0
  218. package/legacy/hooks/useTicks.js +16 -9
  219. package/legacy/index.js +1 -1
  220. package/legacy/internals/components/AxisSharedComponents.js +11 -65
  221. package/legacy/internals/components/ChartsText.js +79 -0
  222. package/legacy/internals/domUtils.js +121 -0
  223. package/legacy/internals/geometry.js +37 -0
  224. package/models/axis.d.ts +27 -9
  225. package/models/layout.d.ts +7 -6
  226. package/models/seriesType/line.d.ts +8 -3
  227. package/models/seriesType/pie.d.ts +5 -1
  228. package/modern/BarChart/BarChart.js +49 -9
  229. package/modern/BarChart/BarElement.js +7 -4
  230. package/modern/BarChart/BarPlot.js +149 -65
  231. package/modern/BarChart/formatter.js +1 -1
  232. package/modern/ChartContainer/index.js +3 -0
  233. package/modern/ChartsAxis/ChartsAxis.js +26 -0
  234. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
  235. package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
  236. package/modern/ChartsLegend/ChartsLegend.js +188 -142
  237. package/modern/ChartsSurface.js +4 -12
  238. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
  239. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
  240. package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
  241. package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
  242. package/modern/ChartsXAxis/ChartsXAxis.js +158 -37
  243. package/modern/ChartsYAxis/ChartsYAxis.js +83 -30
  244. package/modern/LineChart/AreaElement.js +10 -0
  245. package/modern/LineChart/AreaPlot.js +25 -6
  246. package/modern/LineChart/LineChart.js +45 -9
  247. package/modern/LineChart/LineElement.js +10 -0
  248. package/modern/LineChart/LineHighlightElement.js +10 -0
  249. package/modern/LineChart/LineHighlightPlot.js +12 -1
  250. package/modern/LineChart/LinePlot.js +23 -10
  251. package/modern/LineChart/MarkElement.js +11 -1
  252. package/modern/LineChart/MarkPlot.js +38 -7
  253. package/modern/LineChart/formatter.js +4 -3
  254. package/modern/PieChart/PieArc.js +26 -57
  255. package/modern/PieChart/PieArcLabel.js +43 -34
  256. package/modern/PieChart/PieArcLabelPlot.js +90 -0
  257. package/modern/PieChart/PieArcPlot.js +83 -0
  258. package/modern/PieChart/PieChart.js +59 -12
  259. package/modern/PieChart/PiePlot.js +76 -55
  260. package/modern/PieChart/dataTransform/transition.js +130 -0
  261. package/modern/PieChart/dataTransform/useTransformData.js +58 -0
  262. package/modern/ResponsiveChartContainer/index.js +3 -3
  263. package/modern/ScatterChart/Scatter.js +10 -0
  264. package/modern/ScatterChart/ScatterChart.js +40 -8
  265. package/modern/ScatterChart/ScatterPlot.js +10 -0
  266. package/modern/SparkLineChart/SparkLineChart.js +25 -3
  267. package/modern/constants.js +1 -1
  268. package/modern/context/CartesianContextProvider.js +29 -13
  269. package/modern/context/DrawingProvider.js +8 -0
  270. package/modern/hooks/useChartDimensions.js +2 -0
  271. package/modern/hooks/useMounted.js +16 -0
  272. package/modern/hooks/useReducedMotion.js +27 -0
  273. package/modern/hooks/useTicks.js +15 -9
  274. package/modern/index.js +1 -1
  275. package/modern/internals/components/AxisSharedComponents.js +15 -70
  276. package/modern/internals/components/ChartsText.js +77 -0
  277. package/modern/internals/domUtils.js +113 -0
  278. package/modern/internals/geometry.js +36 -0
  279. package/package.json +9 -6
  280. package/themeAugmentation/components.d.ts +1 -0
  281. package/themeAugmentation/overrides.d.ts +2 -0
@@ -18,6 +18,16 @@ export interface MarkPlotProps extends React.SVGAttributes<SVGSVGElement> {
18
18
  */
19
19
  slotProps?: MarkPlotSlotComponentProps;
20
20
  }
21
+ /**
22
+ * Demos:
23
+ *
24
+ * - [Lines](https://mui.com/x/react-charts/lines/)
25
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
26
+ *
27
+ * API:
28
+ *
29
+ * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
30
+ */
21
31
  declare function MarkPlot(props: MarkPlotProps): React.JSX.Element | null;
22
32
  declare namespace MarkPlot {
23
33
  var propTypes: any;
@@ -15,8 +15,18 @@ var _MarkElement = require("./MarkElement");
15
15
  var _useScale = require("../hooks/useScale");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
17
  const _excluded = ["slots", "slotProps"];
18
- 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); }
19
- 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; }
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ /**
21
+ * Demos:
22
+ *
23
+ * - [Lines](https://mui.com/x/react-charts/lines/)
24
+ * - [Line demonstration](https://mui.com/x/react-charts/line-demo/)
25
+ *
26
+ * API:
27
+ *
28
+ * - [MarkPlot API](https://mui.com/x/api/charts/mark-plot/)
29
+ */
20
30
  function MarkPlot(props) {
21
31
  const {
22
32
  slots,
@@ -50,6 +60,7 @@ function MarkPlot(props) {
50
60
  xAxisKey = defaultXAxisId,
51
61
  yAxisKey = defaultYAxisId,
52
62
  stackedData,
63
+ data,
53
64
  showMark = true
54
65
  } = series[seriesId];
55
66
  if (showMark === false) {
@@ -76,28 +87,48 @@ function MarkPlot(props) {
76
87
  throw new Error(`Axis of id "${xAxisKey}" should have data property to be able to display a line plot`);
77
88
  }
78
89
  return xData?.map((x, index) => {
79
- const y = stackedData[index][1];
90
+ const value = data[index] == null ? null : stackedData[index][1];
80
91
  return {
81
92
  x: xScale(x),
82
- y: yScale(y),
93
+ y: value === null ? null : yScale(value),
83
94
  position: x,
84
- value: y,
95
+ value,
85
96
  index
86
97
  };
87
- }).filter(isInRange).map(({
98
+ }).filter(({
88
99
  x,
89
100
  y,
90
101
  index,
91
102
  position,
92
103
  value
93
104
  }) => {
94
- return showMark === true || showMark({
105
+ if (value === null || y === null) {
106
+ // Remove missing data point
107
+ return false;
108
+ }
109
+ if (!isInRange({
110
+ x,
111
+ y
112
+ })) {
113
+ // Remove out of range
114
+ return false;
115
+ }
116
+ if (showMark === true) {
117
+ return true;
118
+ }
119
+ return showMark({
95
120
  x,
96
121
  y,
97
122
  index,
98
123
  position,
99
124
  value
100
- }) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Mark, (0, _extends2.default)({
125
+ });
126
+ }).map(({
127
+ x,
128
+ y,
129
+ index
130
+ }) => {
131
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Mark, (0, _extends2.default)({
101
132
  id: seriesId,
102
133
  dataIndex: index,
103
134
  shape: "circle",
@@ -105,7 +136,7 @@ function MarkPlot(props) {
105
136
  x: x,
106
137
  y: y,
107
138
  highlightScope: series[seriesId].highlightScope
108
- }, slotProps?.mark), `${seriesId}-${index}`) : null;
139
+ }, slotProps?.mark), `${seriesId}-${index}`);
109
140
  });
110
141
  });
111
142
  })
@@ -31,7 +31,7 @@ const formatter = (params, dataset) => {
31
31
  d3Dataset[index][id] = value;
32
32
  }
33
33
  });
34
- } else if (dataset === undefined) {
34
+ } else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
35
35
  throw new Error([`MUI: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
36
36
  }
37
37
  });
@@ -47,7 +47,8 @@ const formatter = (params, dataset) => {
47
47
  // Use dataKey if needed and available
48
48
  const dataKey = series[id].dataKey;
49
49
  return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
50
- })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
50
+ })).value((d, key) => d[key] ?? 0) // defaultize null value to 0
51
+ .order(stackingOrder).offset(stackingOffset)(d3Dataset);
51
52
  ids.forEach((id, index) => {
52
53
  const dataKey = series[id].dataKey;
53
54
  completedSeries[id] = (0, _extends2.default)({}, series[id], {
@@ -59,8 +60,7 @@ const formatter = (params, dataset) => {
59
60
  return {
60
61
  seriesOrder,
61
62
  stackingGroups,
62
- series: (0, _defaultizeValueFormatter.default)(completedSeries, v => v.toLocaleString())
63
+ series: (0, _defaultizeValueFormatter.default)(completedSeries, v => v?.toLocaleString())
63
64
  };
64
65
  };
65
- var _default = formatter;
66
- exports.default = _default;
66
+ var _default = exports.default = formatter;
@@ -16,5 +16,4 @@ const legendGetter = params => {
16
16
  }));
17
17
  return data.filter(item => item.label !== undefined);
18
18
  };
19
- var _default = legendGetter;
20
- exports.default = _default;
19
+ var _default = exports.default = legendGetter;
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
- import { PieArcDatum as D3PieArcDatum } from 'd3-shape';
2
+ import { SpringValue } from '@react-spring/web';
3
3
  import { HighlightScope } from '../context/HighlightProvider';
4
- import { PieSeriesType } from '../models/seriesType/pie';
5
4
  export interface PieArcClasses {
6
5
  /** Styles applied to the root element. */
7
6
  root: string;
@@ -21,16 +20,15 @@ interface PieArcOwnerState {
21
20
  }
22
21
  export declare function getPieArcUtilityClass(slot: string): string;
23
22
  export declare const pieArcClasses: PieArcClasses;
24
- export type PieArcProps = Omit<PieArcOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & D3PieArcDatum<any> & {
23
+ export type PieArcProps = PieArcOwnerState & React.ComponentPropsWithoutRef<'path'> & {
24
+ startAngle: SpringValue<number>;
25
+ endAngle: SpringValue<number>;
26
+ innerRadius: SpringValue<number>;
27
+ outerRadius: SpringValue<number>;
28
+ cornerRadius: SpringValue<number>;
29
+ paddingAngle: SpringValue<number>;
25
30
  highlightScope?: Partial<HighlightScope>;
26
- innerRadius: PieSeriesType['innerRadius'];
27
- outerRadius: number;
28
- cornerRadius: PieSeriesType['cornerRadius'];
29
- highlighted: PieSeriesType['highlighted'];
30
- faded: PieSeriesType['faded'];
31
+ onClick?: (event: React.MouseEvent<SVGPathElement, MouseEvent>) => void;
31
32
  };
32
- declare function PieArc(props: PieArcProps): React.JSX.Element;
33
- declare namespace PieArc {
34
- var propTypes: any;
35
- }
36
- export default PieArc;
33
+ export default function PieArc(props: PieArcProps): React.JSX.Element;
34
+ export {};
@@ -11,22 +11,20 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _d3Shape = require("d3-shape");
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _web = require("@react-spring/web");
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
16
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
17
17
  var _styles = require("@mui/material/styles");
18
18
  var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
19
- var _InteractionProvider = require("../context/InteractionProvider");
20
19
  var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
21
20
  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; }
21
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "onClick", "isFaded", "isHighlighted", "startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "cornerRadius"];
22
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
24
  function getPieArcUtilityClass(slot) {
26
25
  return (0, _generateUtilityClass.default)('MuiPieArc', slot);
27
26
  }
28
- const pieArcClasses = (0, _generateUtilityClasses.default)('MuiPieArc', ['root', 'highlighted', 'faded']);
29
- exports.pieArcClasses = pieArcClasses;
27
+ const pieArcClasses = exports.pieArcClasses = (0, _generateUtilityClasses.default)('MuiPieArc', ['root', 'highlighted', 'faded']);
30
28
  const useUtilityClasses = ownerState => {
31
29
  const {
32
30
  classes,
@@ -39,19 +37,16 @@ const useUtilityClasses = ownerState => {
39
37
  };
40
38
  return (0, _composeClasses.default)(slots, getPieArcUtilityClass, classes);
41
39
  };
42
- const PieArcRoot = (0, _styles.styled)('path', {
40
+ const PieArcRoot = (0, _styles.styled)(_web.animated.path, {
43
41
  name: 'MuiPieArc',
44
42
  slot: 'Root',
45
43
  overridesResolver: (_, styles) => styles.arc
46
44
  })(({
47
- ownerState,
48
45
  theme
49
46
  }) => ({
50
- stroke: theme.palette.background.paper,
47
+ stroke: (theme.vars || theme).palette.background.paper,
51
48
  strokeWidth: 1,
52
- strokeLinejoin: 'round',
53
- fill: ownerState.color,
54
- opacity: ownerState.isFaded ? 0.3 : 1
49
+ strokeLinejoin: 'round'
55
50
  }));
56
51
  function PieArc(props) {
57
52
  const {
@@ -60,29 +55,17 @@ function PieArc(props) {
60
55
  classes: innerClasses,
61
56
  color,
62
57
  highlightScope,
63
- innerRadius: baseInnerRadius = 0,
64
- outerRadius: baseOuterRadius,
65
- cornerRadius: baseCornerRadius = 0,
66
- highlighted,
67
- faded = {
68
- additionalRadius: -5
69
- }
58
+ onClick,
59
+ isFaded,
60
+ isHighlighted,
61
+ startAngle,
62
+ endAngle,
63
+ paddingAngle,
64
+ innerRadius,
65
+ outerRadius,
66
+ cornerRadius
70
67
  } = props,
71
68
  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
69
  const ownerState = {
87
70
  id,
88
71
  dataIndex,
@@ -92,37 +75,22 @@ function PieArc(props) {
92
75
  isHighlighted
93
76
  };
94
77
  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;
78
+ const getInteractionItemProps = (0, _useInteractionItemProps.useInteractionItemProps)(highlightScope);
101
79
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(PieArcRoot, (0, _extends2.default)({
102
- d: (0, _d3Shape.arc)().cornerRadius(cornerRadius)((0, _extends2.default)({}, other, {
103
- innerRadius,
104
- outerRadius
80
+ d: (0, _web.to)([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], (sA, eA, pA, iR, oR, cR) => (0, _d3Shape.arc)().cornerRadius(cR)({
81
+ padAngle: pA,
82
+ startAngle: sA,
83
+ endAngle: eA,
84
+ innerRadius: iR,
85
+ outerRadius: oR
105
86
  })),
87
+ onClick: onClick,
88
+ cursor: onClick ? 'pointer' : 'unset',
106
89
  ownerState: ownerState,
107
90
  className: classes.root
108
- }, getInteractionItemProps({
91
+ }, other, getInteractionItemProps({
109
92
  type: 'pie',
110
93
  seriesId: id,
111
94
  dataIndex
112
95
  })));
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;
96
+ }
@@ -1,7 +1,5 @@
1
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';
2
+ import { SpringValue } from '@react-spring/web';
5
3
  export interface PieArcLabelClasses {
6
4
  /** Styles applied to the root element. */
7
5
  root: string;
@@ -13,7 +11,6 @@ export interface PieArcLabelClasses {
13
11
  export type PieArcLabelClassKey = keyof PieArcLabelClasses;
14
12
  interface PieArcLabelOwnerState {
15
13
  id: string;
16
- dataIndex: number;
17
14
  color: string;
18
15
  isFaded: boolean;
19
16
  isHighlighted: boolean;
@@ -21,11 +18,13 @@ interface PieArcLabelOwnerState {
21
18
  }
22
19
  export declare function getPieArcLabelUtilityClass(slot: string): string;
23
20
  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'];
21
+ export type PieArcLabelProps = PieArcLabelOwnerState & React.ComponentPropsWithoutRef<'text'> & {
22
+ startAngle: SpringValue<number>;
23
+ endAngle: SpringValue<number>;
24
+ innerRadius: SpringValue<number>;
25
+ outerRadius: SpringValue<number>;
26
+ cornerRadius: SpringValue<number>;
27
+ paddingAngle: SpringValue<number>;
29
28
  } & {
30
29
  formattedArcLabel?: string | null;
31
30
  };
@@ -10,23 +10,21 @@ exports.pieArcLabelClasses = void 0;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
+ var _web = require("@react-spring/web");
13
14
  var _d3Shape = require("d3-shape");
14
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
16
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
17
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
17
18
  var _styles = require("@mui/material/styles");
18
19
  var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
19
- var _InteractionProvider = require("../context/InteractionProvider");
20
- var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
21
20
  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; }
21
+ const _excluded = ["id", "classes", "color", "startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "cornerRadius", "formattedArcLabel", "isHighlighted", "isFaded", "style"];
22
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
24
  function getPieArcLabelUtilityClass(slot) {
26
25
  return (0, _generateUtilityClass.default)('MuiPieArcLabel', slot);
27
26
  }
28
- const pieArcLabelClasses = (0, _generateUtilityClasses.default)('MuiPieArcLabel', ['root', 'highlighted', 'faded']);
29
- exports.pieArcLabelClasses = pieArcLabelClasses;
27
+ const pieArcLabelClasses = exports.pieArcLabelClasses = (0, _generateUtilityClasses.default)('MuiPieArcLabel', ['root', 'highlighted', 'faded']);
30
28
  const useUtilityClasses = ownerState => {
31
29
  const {
32
30
  classes,
@@ -39,61 +37,71 @@ const useUtilityClasses = ownerState => {
39
37
  };
40
38
  return (0, _composeClasses.default)(slots, getPieArcLabelUtilityClass, classes);
41
39
  };
42
- const PieArcLabelRoot = (0, _styles.styled)('text', {
40
+ const PieArcLabelRoot = (0, _styles.styled)(_web.animated.text, {
43
41
  name: 'MuiPieArcLabel',
44
42
  slot: 'Root',
45
43
  overridesResolver: (_, styles) => styles.root
46
44
  })(({
47
45
  theme
48
46
  }) => ({
49
- fill: theme.palette.text.primary,
50
- textAnchor: 'middle'
47
+ fill: (theme.vars || theme).palette.text.primary,
48
+ textAnchor: 'middle',
49
+ dominantBaseline: 'middle'
51
50
  }));
51
+ /**
52
+ * Helper to compute label position.
53
+ * It's not an inline function because we need it in inerpolation.
54
+ */
55
+ const getLabelPosition = (formattedArcLabel, variable) => (startAngle, endAngle, padAngle, innerRadius, outerRadius, cornerRadius) => {
56
+ if (!formattedArcLabel) {
57
+ return 0;
58
+ }
59
+ const [x, y] = (0, _d3Shape.arc)().cornerRadius(cornerRadius).centroid({
60
+ padAngle,
61
+ startAngle,
62
+ endAngle,
63
+ innerRadius,
64
+ outerRadius
65
+ });
66
+ if (variable === 'x') {
67
+ return x;
68
+ }
69
+ return y;
70
+ };
52
71
  function PieArcLabel(props) {
53
72
  const {
54
73
  id,
55
- dataIndex,
56
74
  classes: innerClasses,
57
75
  color,
58
- highlightScope,
59
- innerRadius = 0,
76
+ startAngle,
77
+ endAngle,
78
+ paddingAngle,
79
+ innerRadius,
60
80
  outerRadius,
61
- cornerRadius = 0,
62
- formattedArcLabel
81
+ cornerRadius,
82
+ formattedArcLabel,
83
+ isHighlighted,
84
+ isFaded,
85
+ style
63
86
  } = props,
64
87
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
65
- const {
66
- item
67
- } = React.useContext(_InteractionProvider.InteractionContext);
68
- const isHighlighted = (0, _useInteractionItemProps.getIsHighlighted)(item, {
69
- type: 'pie',
70
- seriesId: id,
71
- dataIndex
72
- }, highlightScope);
73
- const isFaded = !isHighlighted && (0, _useInteractionItemProps.getIsFaded)(item, {
74
- type: 'pie',
75
- seriesId: id,
76
- dataIndex
77
- }, highlightScope);
78
88
  const ownerState = {
79
89
  id,
80
- dataIndex,
81
90
  classes: innerClasses,
82
91
  color,
83
92
  isFaded,
84
93
  isHighlighted
85
94
  };
86
95
  const classes = useUtilityClasses(ownerState);
87
- const arcLabelPosition = formattedArcLabel ? (0, _d3Shape.arc)().cornerRadius(cornerRadius).centroid((0, _extends2.default)({}, other, {
88
- innerRadius,
89
- outerRadius
90
- })) : [0, 0];
91
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(PieArcLabelRoot, {
92
- className: classes.root,
93
- x: arcLabelPosition[0],
94
- y: arcLabelPosition[1],
96
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PieArcLabelRoot, (0, _extends2.default)({
97
+ className: classes.root
98
+ }, other, {
99
+ style: (0, _extends2.default)({
100
+ x: (0, _web.to)([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], getLabelPosition(formattedArcLabel, 'x')),
101
+ y: (0, _web.to)([startAngle, endAngle, paddingAngle, innerRadius, outerRadius, cornerRadius], getLabelPosition(formattedArcLabel, 'y'))
102
+ }, style),
95
103
  children: formattedArcLabel
96
- });
104
+ }));
97
105
  }
98
106
  process.env.NODE_ENV !== "production" ? PieArcLabel.propTypes = {
99
107
  // ----------------------------- Warning --------------------------------
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { DefaultizedPieSeriesType } from '../models/seriesType/pie';
3
+ import { PieArcLabelProps } from './PieArcLabel';
4
+ import { DefaultizedProps } from '../models/helpers';
5
+ export interface PieArcLabelPlotSlotsComponent {
6
+ pieArcLabel?: React.JSXElementConstructor<PieArcLabelProps>;
7
+ }
8
+ export interface PieArcLabelPlotSlotComponentProps {
9
+ pieArcLabel?: Partial<PieArcLabelProps>;
10
+ }
11
+ export interface PieArcLabelPlotProps extends DefaultizedProps<Pick<DefaultizedPieSeriesType, 'data' | 'faded' | 'highlighted' | 'innerRadius' | 'outerRadius' | 'cornerRadius' | 'paddingAngle' | 'arcLabel' | 'arcLabelMinAngle' | 'id' | 'highlightScope'>, 'outerRadius'> {
12
+ /**
13
+ * Overridable component slots.
14
+ * @default {}
15
+ */
16
+ slots?: PieArcLabelPlotSlotsComponent;
17
+ /**
18
+ * The props used for each component slot.
19
+ * @default {}
20
+ */
21
+ slotProps?: PieArcLabelPlotSlotComponentProps;
22
+ /**
23
+ * If `true`, animations are skiped.
24
+ * @default false
25
+ */
26
+ skipAnimation?: boolean;
27
+ }
28
+ export declare function PieArcLabelPlot(props: PieArcLabelPlotProps): React.JSX.Element | null;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PieArcLabelPlot = PieArcLabelPlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _web = require("@react-spring/web");
12
+ var _transition = require("./dataTransform/transition");
13
+ var _useTransformData = require("./dataTransform/useTransformData");
14
+ var _PieArcLabel = _interopRequireDefault(require("./PieArcLabel"));
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ const _excluded = ["slots", "slotProps", "innerRadius", "outerRadius", "cornerRadius", "paddingAngle", "id", "highlightScope", "highlighted", "faded", "data", "arcLabel", "arcLabelMinAngle", "skipAnimation"],
17
+ _excluded2 = ["startAngle", "endAngle", "paddingAngle", "innerRadius", "outerRadius", "cornerRadius"];
18
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ const RATIO = 180 / Math.PI;
21
+ function getItemLabel(arcLabel, arcLabelMinAngle, item) {
22
+ if (!arcLabel) {
23
+ return null;
24
+ }
25
+ const angle = (item.endAngle - item.startAngle) * RATIO;
26
+ if (angle < arcLabelMinAngle) {
27
+ return null;
28
+ }
29
+ if (typeof arcLabel === 'string') {
30
+ return item[arcLabel]?.toString();
31
+ }
32
+ return arcLabel(item);
33
+ }
34
+ function PieArcLabelPlot(props) {
35
+ const {
36
+ slots,
37
+ slotProps,
38
+ innerRadius = 0,
39
+ outerRadius,
40
+ cornerRadius = 0,
41
+ paddingAngle = 0,
42
+ id,
43
+ highlightScope,
44
+ highlighted,
45
+ faded = {
46
+ additionalRadius: -5
47
+ },
48
+ data,
49
+ arcLabel,
50
+ arcLabelMinAngle = 0,
51
+ skipAnimation
52
+ } = props,
53
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
54
+ const transformedData = (0, _useTransformData.useTransformData)({
55
+ innerRadius,
56
+ outerRadius,
57
+ cornerRadius,
58
+ paddingAngle,
59
+ id,
60
+ highlightScope,
61
+ highlighted,
62
+ faded,
63
+ data
64
+ });
65
+ const transition = (0, _web.useTransition)(transformedData, (0, _extends2.default)({}, _transition.defaultLabelTransitionConfig, {
66
+ immediate: skipAnimation
67
+ }));
68
+ if (data.length === 0) {
69
+ return null;
70
+ }
71
+ const ArcLabel = slots?.pieArcLabel ?? _PieArcLabel.default;
72
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, other, {
73
+ children: transition((_ref, item) => {
74
+ let {
75
+ startAngle,
76
+ endAngle,
77
+ paddingAngle: pA,
78
+ innerRadius: iR,
79
+ outerRadius: oR,
80
+ cornerRadius: cR
81
+ } = _ref,
82
+ style = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded2);
83
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ArcLabel, (0, _extends2.default)({
84
+ startAngle: startAngle,
85
+ endAngle: endAngle,
86
+ paddingAngle: pA,
87
+ innerRadius: iR,
88
+ outerRadius: oR,
89
+ cornerRadius: cR,
90
+ style: style,
91
+ id: id,
92
+ color: item.color,
93
+ isFaded: item.isFaded,
94
+ isHighlighted: item.isHighlighted,
95
+ formattedArcLabel: getItemLabel(arcLabel, arcLabelMinAngle, item)
96
+ }, slotProps?.pieArcLabel));
97
+ })
98
+ }));
99
+ }