@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
@@ -1,33 +1,27 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
1
  import * as React from 'react';
3
2
  import PropTypes from 'prop-types';
4
3
  import { SeriesContext } from '../context/SeriesContextProvider';
5
- import PieArc from './PieArc';
6
- import PieArcLabel from './PieArcLabel';
7
4
  import { DrawingContext } from '../context/DrawingProvider';
8
- import { createElement as _createElement } from "react";
9
- import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { PieArcPlot } from './PieArcPlot';
6
+ import { PieArcLabelPlot } from './PieArcLabelPlot';
10
7
  import { jsx as _jsx } from "react/jsx-runtime";
11
- const RATIO = 180 / Math.PI;
12
- function getItemLabel(arcLabel, arcLabelMinAngle, item) {
13
- if (!arcLabel) {
14
- return null;
15
- }
16
- const angle = (item.endAngle - item.startAngle) * RATIO;
17
- if (angle < arcLabelMinAngle) {
18
- return null;
19
- }
20
- if (typeof arcLabel === 'string') {
21
- var _item$arcLabel;
22
- return (_item$arcLabel = item[arcLabel]) == null ? void 0 : _item$arcLabel.toString();
23
- }
24
- return arcLabel(item);
25
- }
8
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
+ /**
10
+ * Demos:
11
+ *
12
+ * - [Pie](https://mui.com/x/react-charts/pie/)
13
+ * - [Pie demonstration](https://mui.com/x/react-charts/pie-demo/)
14
+ *
15
+ * API:
16
+ *
17
+ * - [PiePlot API](https://mui.com/x/api/charts/pie-plot/)
18
+ */
26
19
  function PiePlot(props) {
27
- var _slots$pieArc, _slots$pieArcLabel;
28
20
  const {
21
+ skipAnimation,
29
22
  slots,
30
- slotProps
23
+ slotProps,
24
+ onClick
31
25
  } = props;
32
26
  const seriesData = React.useContext(SeriesContext).pie;
33
27
  const {
@@ -48,54 +42,67 @@ function PiePlot(props) {
48
42
  series,
49
43
  seriesOrder
50
44
  } = seriesData;
51
- const Arc = (_slots$pieArc = slots == null ? void 0 : slots.pieArc) != null ? _slots$pieArc : PieArc;
52
- const ArcLabel = (_slots$pieArcLabel = slots == null ? void 0 : slots.pieArcLabel) != null ? _slots$pieArcLabel : PieArcLabel;
53
- return /*#__PURE__*/_jsx("g", {
54
- children: seriesOrder.map(seriesId => {
45
+ return /*#__PURE__*/_jsxs("g", {
46
+ children: [seriesOrder.map(seriesId => {
55
47
  const {
56
48
  innerRadius,
57
49
  outerRadius,
58
50
  cornerRadius,
59
- arcLabel,
60
- arcLabelMinAngle = 0,
51
+ paddingAngle,
61
52
  data,
62
53
  cx,
63
54
  cy,
64
55
  highlighted,
65
- faded
56
+ faded,
57
+ highlightScope
58
+ } = series[seriesId];
59
+ return /*#__PURE__*/_jsx("g", {
60
+ transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
61
+ children: /*#__PURE__*/_jsx(PieArcPlot, {
62
+ innerRadius: innerRadius,
63
+ outerRadius: outerRadius != null ? outerRadius : availableRadius,
64
+ cornerRadius: cornerRadius,
65
+ paddingAngle: paddingAngle,
66
+ id: seriesId,
67
+ data: data,
68
+ skipAnimation: skipAnimation,
69
+ highlightScope: highlightScope,
70
+ highlighted: highlighted,
71
+ faded: faded,
72
+ onClick: onClick,
73
+ slots: slots,
74
+ slotProps: slotProps
75
+ })
76
+ }, seriesId);
77
+ }), seriesOrder.map(seriesId => {
78
+ const {
79
+ innerRadius,
80
+ outerRadius,
81
+ cornerRadius,
82
+ paddingAngle,
83
+ arcLabel,
84
+ arcLabelMinAngle,
85
+ data,
86
+ cx,
87
+ cy,
88
+ highlightScope
66
89
  } = series[seriesId];
67
90
  return /*#__PURE__*/_jsx("g", {
68
91
  transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
69
- children: /*#__PURE__*/_jsxs("g", {
70
- children: [data.map((item, index) => {
71
- return /*#__PURE__*/_createElement(Arc, _extends({}, item, {
72
- key: item.id,
73
- innerRadius: innerRadius,
74
- outerRadius: outerRadius != null ? outerRadius : availableRadius,
75
- cornerRadius: cornerRadius,
76
- id: seriesId,
77
- color: item.color,
78
- dataIndex: index,
79
- highlightScope: series[seriesId].highlightScope,
80
- highlighted: highlighted,
81
- faded: faded
82
- }, slotProps == null ? void 0 : slotProps.pieArc));
83
- }), data.map((item, index) => {
84
- return /*#__PURE__*/_createElement(ArcLabel, _extends({}, item, {
85
- key: item.id,
86
- innerRadius: innerRadius,
87
- outerRadius: outerRadius != null ? outerRadius : availableRadius,
88
- cornerRadius: cornerRadius,
89
- id: seriesId,
90
- color: item.color,
91
- dataIndex: index,
92
- highlightScope: series[seriesId].highlightScope,
93
- formattedArcLabel: getItemLabel(arcLabel, arcLabelMinAngle, item)
94
- }, slotProps == null ? void 0 : slotProps.pieArcLabel));
95
- })]
92
+ children: /*#__PURE__*/_jsx(PieArcLabelPlot, {
93
+ innerRadius: innerRadius,
94
+ outerRadius: outerRadius != null ? outerRadius : availableRadius,
95
+ cornerRadius: cornerRadius,
96
+ paddingAngle: paddingAngle,
97
+ id: seriesId,
98
+ data: data,
99
+ skipAnimation: skipAnimation,
100
+ arcLabel: arcLabel,
101
+ arcLabelMinAngle: arcLabelMinAngle,
102
+ highlightScope: highlightScope
96
103
  })
97
104
  }, seriesId);
98
- })
105
+ })]
99
106
  });
100
107
  }
101
108
  process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
@@ -103,6 +110,18 @@ process.env.NODE_ENV !== "production" ? PiePlot.propTypes = {
103
110
  // | These PropTypes are generated from the TypeScript type definitions |
104
111
  // | To update them edit the TypeScript types and run "yarn proptypes" |
105
112
  // ----------------------------------------------------------------------
113
+ /**
114
+ * Callback fired when a pie item is clicked.
115
+ * @param {React.MouseEvent<SVGPathElement, MouseEvent>} event The event source of the callback.
116
+ * @param {PieItemIdentifier} pieItemIdentifier The pie item identifier.
117
+ * @param {DefaultizedPieValueType} item The pie item.
118
+ */
119
+ onClick: PropTypes.func,
120
+ /**
121
+ * If `true`, animations are skiped.
122
+ * @default false
123
+ */
124
+ skipAnimation: PropTypes.bool,
106
125
  /**
107
126
  * The props used for each component slot.
108
127
  * @default {}
@@ -0,0 +1,130 @@
1
+ export const defaultTransitionConfig = {
2
+ keys: item => item.id,
3
+ from: ({
4
+ innerRadius,
5
+ outerRadius,
6
+ cornerRadius,
7
+ startAngle,
8
+ endAngle,
9
+ paddingAngle,
10
+ color,
11
+ isFaded
12
+ }) => ({
13
+ innerRadius,
14
+ outerRadius: (innerRadius + outerRadius) / 2,
15
+ cornerRadius,
16
+ startAngle: (startAngle + endAngle) / 2,
17
+ endAngle: (startAngle + endAngle) / 2,
18
+ paddingAngle,
19
+ fill: color,
20
+ opacity: isFaded ? 0.3 : 1
21
+ }),
22
+ leave: ({
23
+ innerRadius,
24
+ startAngle,
25
+ endAngle
26
+ }) => ({
27
+ innerRadius,
28
+ outerRadius: innerRadius,
29
+ startAngle: (startAngle + endAngle) / 2,
30
+ endAngle: (startAngle + endAngle) / 2
31
+ }),
32
+ enter: ({
33
+ innerRadius,
34
+ outerRadius,
35
+ startAngle,
36
+ endAngle
37
+ }) => ({
38
+ innerRadius,
39
+ outerRadius,
40
+ startAngle,
41
+ endAngle
42
+ }),
43
+ update: ({
44
+ innerRadius,
45
+ outerRadius,
46
+ cornerRadius,
47
+ startAngle,
48
+ endAngle,
49
+ paddingAngle,
50
+ color,
51
+ isFaded
52
+ }) => ({
53
+ innerRadius,
54
+ outerRadius,
55
+ cornerRadius,
56
+ startAngle,
57
+ endAngle,
58
+ paddingAngle,
59
+ fill: color,
60
+ opacity: isFaded ? 0.3 : 1
61
+ }),
62
+ config: {
63
+ tension: 120,
64
+ friction: 14,
65
+ clamp: true
66
+ }
67
+ };
68
+ export const defaultLabelTransitionConfig = {
69
+ keys: item => item.id,
70
+ from: ({
71
+ innerRadius,
72
+ outerRadius,
73
+ cornerRadius,
74
+ startAngle,
75
+ endAngle,
76
+ paddingAngle
77
+ }) => ({
78
+ innerRadius,
79
+ outerRadius: (innerRadius + outerRadius) / 2,
80
+ cornerRadius,
81
+ startAngle: (startAngle + endAngle) / 2,
82
+ endAngle: (startAngle + endAngle) / 2,
83
+ paddingAngle,
84
+ opacity: 0
85
+ }),
86
+ leave: ({
87
+ innerRadius,
88
+ startAngle,
89
+ endAngle
90
+ }) => ({
91
+ innerRadius,
92
+ outerRadius: innerRadius,
93
+ startAngle: (startAngle + endAngle) / 2,
94
+ endAngle: (startAngle + endAngle) / 2,
95
+ opacity: 0
96
+ }),
97
+ enter: ({
98
+ innerRadius,
99
+ outerRadius,
100
+ startAngle,
101
+ endAngle
102
+ }) => ({
103
+ innerRadius,
104
+ outerRadius,
105
+ startAngle,
106
+ endAngle,
107
+ opacity: 1
108
+ }),
109
+ update: ({
110
+ innerRadius,
111
+ outerRadius,
112
+ cornerRadius,
113
+ startAngle,
114
+ endAngle,
115
+ paddingAngle
116
+ }) => ({
117
+ innerRadius,
118
+ outerRadius,
119
+ cornerRadius,
120
+ startAngle,
121
+ endAngle,
122
+ paddingAngle,
123
+ opacity: 1
124
+ }),
125
+ config: {
126
+ tension: 120,
127
+ friction: 14,
128
+ clamp: true
129
+ }
130
+ };
@@ -0,0 +1,59 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { InteractionContext } from '../../context/InteractionProvider';
4
+ import { getIsHighlighted, getIsFaded } from '../../hooks/useInteractionItemProps';
5
+ export function useTransformData(series) {
6
+ const {
7
+ id: seriesId,
8
+ highlightScope,
9
+ data,
10
+ faded,
11
+ highlighted,
12
+ paddingAngle: basePaddingAngle = 0,
13
+ innerRadius: baseInnerRadius = 0,
14
+ outerRadius: baseOuterRadius,
15
+ cornerRadius: baseCornerRadius = 0
16
+ } = series;
17
+ const {
18
+ item: highlightedItem
19
+ } = React.useContext(InteractionContext);
20
+ const getHighlightStatus = React.useCallback(dataIndex => {
21
+ const isHighlighted = getIsHighlighted(highlightedItem, {
22
+ type: 'pie',
23
+ seriesId,
24
+ dataIndex
25
+ }, highlightScope);
26
+ const isFaded = !isHighlighted && getIsFaded(highlightedItem, {
27
+ type: 'pie',
28
+ seriesId,
29
+ dataIndex
30
+ }, highlightScope);
31
+ return {
32
+ isHighlighted,
33
+ isFaded
34
+ };
35
+ }, [highlightScope, highlightedItem, seriesId]);
36
+ const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
37
+ var _attibuesOverride$pad, _attibuesOverride$inn, _attibuesOverride$out, _attibuesOverride$cor;
38
+ const {
39
+ isHighlighted,
40
+ isFaded
41
+ } = getHighlightStatus(itemIndex);
42
+ const attibuesOverride = _extends({
43
+ additionalRadius: 0
44
+ }, isFaded && faded || isHighlighted && highlighted || {});
45
+ const paddingAngle = Math.max(0, Math.PI * ((_attibuesOverride$pad = attibuesOverride.paddingAngle) != null ? _attibuesOverride$pad : basePaddingAngle) / 180);
46
+ const innerRadius = Math.max(0, (_attibuesOverride$inn = attibuesOverride.innerRadius) != null ? _attibuesOverride$inn : baseInnerRadius);
47
+ const outerRadius = Math.max(0, (_attibuesOverride$out = attibuesOverride.outerRadius) != null ? _attibuesOverride$out : baseOuterRadius + attibuesOverride.additionalRadius);
48
+ const cornerRadius = (_attibuesOverride$cor = attibuesOverride.cornerRadius) != null ? _attibuesOverride$cor : baseCornerRadius;
49
+ return _extends({}, item, attibuesOverride, {
50
+ isFaded,
51
+ isHighlighted,
52
+ paddingAngle,
53
+ innerRadius,
54
+ outerRadius,
55
+ cornerRadius
56
+ });
57
+ }), [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, data, faded, getHighlightStatus, highlighted]);
58
+ return dataWithHighlight;
59
+ }
@@ -42,7 +42,7 @@ const useChartDimensions = (inWidth, inHeight) => {
42
42
  let animationFrame;
43
43
  const observer = new ResizeObserver(() => {
44
44
  // See https://github.com/mui/mui-x/issues/8733
45
- animationFrame = window.requestAnimationFrame(() => {
45
+ animationFrame = requestAnimationFrame(() => {
46
46
  computeSize();
47
47
  });
48
48
  });
@@ -106,10 +106,10 @@ export const ResponsiveChartContainer = /*#__PURE__*/React.forwardRef(function R
106
106
  width: inWidth,
107
107
  height: inHeight
108
108
  },
109
- children: /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
109
+ children: width && height ? /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
110
110
  width: width,
111
111
  height: height,
112
112
  ref: ref
113
- }))
113
+ })) : null
114
114
  });
115
115
  });
@@ -5,6 +5,16 @@ import { getValueToPositionMapper } from '../hooks/useScale';
5
5
  import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
6
6
  import { InteractionContext } from '../context/InteractionProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Demos:
10
+ *
11
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
12
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
13
+ *
14
+ * API:
15
+ *
16
+ * - [Scatter API](https://mui.com/x/api/charts/scatter/)
17
+ */
8
18
  function Scatter(props) {
9
19
  const {
10
20
  series,
@@ -9,6 +9,16 @@ import { ChartsLegend } from '../ChartsLegend';
9
9
  import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ /**
13
+ * Demos:
14
+ *
15
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
16
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
17
+ *
18
+ * API:
19
+ *
20
+ * - [ScatterChart API](https://mui.com/x/api/charts/scatter-chart/)
21
+ */
12
22
  const ScatterChart = /*#__PURE__*/React.forwardRef(function ScatterChart(props, ref) {
13
23
  const {
14
24
  xAxis,
@@ -85,11 +95,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
85
95
  fill: PropTypes.string,
86
96
  label: PropTypes.string,
87
97
  labelFontSize: PropTypes.number,
98
+ labelStyle: PropTypes.object,
88
99
  position: PropTypes.oneOf(['bottom', 'top']),
89
100
  slotProps: PropTypes.object,
90
101
  slots: PropTypes.object,
91
102
  stroke: PropTypes.string,
92
103
  tickFontSize: PropTypes.number,
104
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
105
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
106
+ tickLabelStyle: PropTypes.object,
93
107
  tickMaxStep: PropTypes.number,
94
108
  tickMinStep: PropTypes.number,
95
109
  tickNumber: PropTypes.number,
@@ -118,33 +132,33 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
118
132
  fill: PropTypes.string,
119
133
  label: PropTypes.string,
120
134
  labelFontSize: PropTypes.number,
135
+ labelStyle: PropTypes.object,
121
136
  position: PropTypes.oneOf(['left', 'right']),
122
137
  slotProps: PropTypes.object,
123
138
  slots: PropTypes.object,
124
139
  stroke: PropTypes.string,
125
140
  tickFontSize: PropTypes.number,
141
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
142
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
143
+ tickLabelStyle: PropTypes.object,
126
144
  tickMaxStep: PropTypes.number,
127
145
  tickMinStep: PropTypes.number,
128
146
  tickNumber: PropTypes.number,
129
147
  tickSize: PropTypes.number
130
148
  }), PropTypes.string]),
149
+ /**
150
+ * @deprecated Consider using `slotProps.legend` instead.
151
+ */
131
152
  legend: PropTypes.shape({
132
153
  classes: PropTypes.object,
133
154
  direction: PropTypes.oneOf(['column', 'row']),
134
155
  hidden: PropTypes.bool,
135
- itemWidth: PropTypes.number,
136
- markSize: PropTypes.number,
137
- offset: PropTypes.shape({
138
- x: PropTypes.number,
139
- y: PropTypes.number
140
- }),
141
156
  position: PropTypes.shape({
142
157
  horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
143
158
  vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
144
159
  }),
145
160
  slotProps: PropTypes.object,
146
- slots: PropTypes.object,
147
- spacing: PropTypes.number
161
+ slots: PropTypes.object
148
162
  }),
149
163
  margin: PropTypes.shape({
150
164
  bottom: PropTypes.number,
@@ -165,11 +179,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
165
179
  fill: PropTypes.string,
166
180
  label: PropTypes.string,
167
181
  labelFontSize: PropTypes.number,
182
+ labelStyle: PropTypes.object,
168
183
  position: PropTypes.oneOf(['left', 'right']),
169
184
  slotProps: PropTypes.object,
170
185
  slots: PropTypes.object,
171
186
  stroke: PropTypes.string,
172
187
  tickFontSize: PropTypes.number,
188
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
189
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
190
+ tickLabelStyle: PropTypes.object,
173
191
  tickMaxStep: PropTypes.number,
174
192
  tickMinStep: PropTypes.number,
175
193
  tickNumber: PropTypes.number,
@@ -210,6 +228,8 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
210
228
  axisContent: PropTypes.elementType,
211
229
  classes: PropTypes.object,
212
230
  itemContent: PropTypes.elementType,
231
+ slotProps: PropTypes.object,
232
+ slots: PropTypes.object,
213
233
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
214
234
  }),
215
235
  /**
@@ -225,11 +245,15 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
225
245
  fill: PropTypes.string,
226
246
  label: PropTypes.string,
227
247
  labelFontSize: PropTypes.number,
248
+ labelStyle: PropTypes.object,
228
249
  position: PropTypes.oneOf(['bottom', 'top']),
229
250
  slotProps: PropTypes.object,
230
251
  slots: PropTypes.object,
231
252
  stroke: PropTypes.string,
232
253
  tickFontSize: PropTypes.number,
254
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
255
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
256
+ tickLabelStyle: PropTypes.object,
233
257
  tickMaxStep: PropTypes.number,
234
258
  tickMinStep: PropTypes.number,
235
259
  tickNumber: PropTypes.number,
@@ -254,6 +278,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
254
278
  id: PropTypes.string,
255
279
  label: PropTypes.string,
256
280
  labelFontSize: PropTypes.number,
281
+ labelStyle: PropTypes.object,
257
282
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
258
283
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
259
284
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -262,6 +287,9 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
262
287
  slots: PropTypes.object,
263
288
  stroke: PropTypes.string,
264
289
  tickFontSize: PropTypes.number,
290
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
291
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
292
+ tickLabelStyle: PropTypes.object,
265
293
  tickMaxStep: PropTypes.number,
266
294
  tickMinStep: PropTypes.number,
267
295
  tickNumber: PropTypes.number,
@@ -280,6 +308,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
280
308
  id: PropTypes.string,
281
309
  label: PropTypes.string,
282
310
  labelFontSize: PropTypes.number,
311
+ labelStyle: PropTypes.object,
283
312
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
284
313
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
285
314
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -288,6 +317,9 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
288
317
  slots: PropTypes.object,
289
318
  stroke: PropTypes.string,
290
319
  tickFontSize: PropTypes.number,
320
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
321
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
322
+ tickLabelStyle: PropTypes.object,
291
323
  tickMaxStep: PropTypes.number,
292
324
  tickMinStep: PropTypes.number,
293
325
  tickNumber: PropTypes.number,
@@ -5,6 +5,16 @@ import { Scatter } from './Scatter';
5
5
  import { SeriesContext } from '../context/SeriesContextProvider';
6
6
  import { CartesianContext } from '../context/CartesianContextProvider';
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Demos:
10
+ *
11
+ * - [Scatter](https://mui.com/x/react-charts/scatter/)
12
+ * - [Scatter demonstration](https://mui.com/x/react-charts/scatter-demo/)
13
+ *
14
+ * API:
15
+ *
16
+ * - [ScatterPlot API](https://mui.com/x/api/charts/scatter-plot/)
17
+ */
8
18
  function ScatterPlot(props) {
9
19
  var _slots$scatter;
10
20
  const {
@@ -15,6 +15,16 @@ const SPARKLINE_DEFAULT_MARGIN = {
15
15
  left: 5,
16
16
  right: 5
17
17
  };
18
+
19
+ /**
20
+ * Demos:
21
+ *
22
+ * - [SparkLine](https://mui.com/x/react-charts/sparkline/)
23
+ *
24
+ * API:
25
+ *
26
+ * - [SparkLineChart API](https://mui.com/x/api/charts/spark-line-chart/)
27
+ */
18
28
  const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(props, ref) {
19
29
  const {
20
30
  xAxis,
@@ -58,7 +68,7 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
58
68
  margin: margin,
59
69
  xAxis: [_extends({
60
70
  id: DEFAULT_X_AXIS_KEY,
61
- scaleType: plotType === 'bar' ? 'band' : 'linear',
71
+ scaleType: plotType === 'bar' ? 'band' : 'point',
62
72
  data: Array.from({
63
73
  length: data.length
64
74
  }, (_, index) => index),
@@ -69,7 +79,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
69
79
  disableAxisListener: (!showTooltip || (tooltip == null ? void 0 : tooltip.trigger) !== 'axis') && (axisHighlight == null ? void 0 : axisHighlight.x) === 'none' && (axisHighlight == null ? void 0 : axisHighlight.y) === 'none',
70
80
  children: [plotType === 'bar' && /*#__PURE__*/_jsx(BarPlot, {
71
81
  slots: slots,
72
- slotProps: slotProps
82
+ slotProps: slotProps,
83
+ sx: {
84
+ shapeRendering: 'auto'
85
+ }
73
86
  }), plotType === 'line' && /*#__PURE__*/_jsxs(React.Fragment, {
74
87
  children: [/*#__PURE__*/_jsx(AreaPlot, {
75
88
  slots: slots,
@@ -81,7 +94,10 @@ const SparkLineChart = /*#__PURE__*/React.forwardRef(function SparkLineChart(pro
81
94
  slots: slots,
82
95
  slotProps: slotProps
83
96
  })]
84
- }), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip)), children]
97
+ }), /*#__PURE__*/_jsx(ChartsAxisHighlight, _extends({}, axisHighlight)), showTooltip && /*#__PURE__*/_jsx(ChartsTooltip, _extends({}, tooltip, {
98
+ slotProps: slotProps,
99
+ slots: slots
100
+ })), children]
85
101
  });
86
102
  });
87
103
  process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
@@ -156,6 +172,8 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
156
172
  axisContent: PropTypes.elementType,
157
173
  classes: PropTypes.object,
158
174
  itemContent: PropTypes.elementType,
175
+ slotProps: PropTypes.object,
176
+ slots: PropTypes.object,
159
177
  trigger: PropTypes.oneOf(['axis', 'item', 'none'])
160
178
  }),
161
179
  /**
@@ -187,6 +205,7 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
187
205
  id: PropTypes.string,
188
206
  label: PropTypes.string,
189
207
  labelFontSize: PropTypes.number,
208
+ labelStyle: PropTypes.object,
190
209
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
191
210
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
192
211
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -195,6 +214,9 @@ process.env.NODE_ENV !== "production" ? SparkLineChart.propTypes = {
195
214
  slots: PropTypes.object,
196
215
  stroke: PropTypes.string,
197
216
  tickFontSize: PropTypes.number,
217
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
218
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
219
+ tickLabelStyle: PropTypes.object,
198
220
  tickMaxStep: PropTypes.number,
199
221
  tickMinStep: PropTypes.number,
200
222
  tickNumber: PropTypes.number,
package/esm/constants.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export const DEFAULT_X_AXIS_KEY = 'DEFAULT_X_AXIS_KEY';
2
2
  export const DEFAULT_Y_AXIS_KEY = 'DEFAULT_Y_AXIS_KEY';
3
3
  export const DEFAULT_MARGINS = {
4
- top: 100,
4
+ top: 50,
5
5
  bottom: 50,
6
6
  left: 50,
7
7
  right: 50