@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
@@ -10,9 +10,10 @@ import { getScale } from '../internals/getScale';
10
10
  import { DrawingContext } from './DrawingProvider';
11
11
  import { SeriesContext } from './SeriesContextProvider';
12
12
  import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
13
- import { getTicksNumber } from '../hooks/useTicks';
13
+ import { getTickNumber } from '../hooks/useTicks';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
- const DEFAULT_CATEGORY_GAP_RATIO = 0.1;
15
+ const DEFAULT_CATEGORY_GAP_RATIO = 0.2;
16
+ const DEFAULT_BAR_GAP_RATIO = 0.1;
16
17
 
17
18
  // TODO: those might be better placed in a distinct file
18
19
  const xExtremumGetters = {
@@ -31,6 +32,12 @@ export const CartesianContext = /*#__PURE__*/React.createContext({
31
32
  xAxisIds: [],
32
33
  yAxisIds: []
33
34
  });
35
+
36
+ /**
37
+ * API:
38
+ *
39
+ * - [CartesianContextProvider API](https://mui.com/x/api/charts/cartesian-context-provider/)
40
+ */
34
41
  function CartesianContextProvider({
35
42
  xAxis: inXAxis,
36
43
  yAxis: inYAxis,
@@ -104,20 +111,21 @@ function CartesianContextProvider({
104
111
  const [minData, maxData] = getAxisExtremum(axis, xExtremumGetters, isDefaultAxis);
105
112
  const range = [drawingArea.left, drawingArea.left + drawingArea.width];
106
113
  if (isBandScaleConfig(axis)) {
107
- var _axis$categoryGapRati;
114
+ var _axis$categoryGapRati, _axis$barGapRatio;
108
115
  const categoryGapRatio = (_axis$categoryGapRati = axis.categoryGapRatio) != null ? _axis$categoryGapRati : DEFAULT_CATEGORY_GAP_RATIO;
116
+ const barGapRatio = (_axis$barGapRatio = axis.barGapRatio) != null ? _axis$barGapRatio : DEFAULT_BAR_GAP_RATIO;
109
117
  completedXAxis[axis.id] = _extends({
110
118
  categoryGapRatio,
111
- barGapRatio: 0
119
+ barGapRatio
112
120
  }, axis, {
113
121
  scale: scaleBand(axis.data, range).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
114
- ticksNumber: axis.data.length
122
+ tickNumber: axis.data.length
115
123
  });
116
124
  }
117
125
  if (isPointScaleConfig(axis)) {
118
126
  completedXAxis[axis.id] = _extends({}, axis, {
119
127
  scale: scalePoint(axis.data, range),
120
- ticksNumber: axis.data.length
128
+ tickNumber: axis.data.length
121
129
  });
122
130
  }
123
131
  if (axis.scaleType === 'band' || axis.scaleType === 'point') {
@@ -126,17 +134,17 @@ function CartesianContextProvider({
126
134
  }
127
135
  const scaleType = (_axis$scaleType = axis.scaleType) != null ? _axis$scaleType : 'linear';
128
136
  const extremums = [(_axis$min = axis.min) != null ? _axis$min : minData, (_axis$max = axis.max) != null ? _axis$max : maxData];
129
- const ticksNumber = getTicksNumber(_extends({}, axis, {
137
+ const tickNumber = getTickNumber(_extends({}, axis, {
130
138
  range,
131
139
  domain: extremums
132
140
  }));
133
- const niceScale = getScale(scaleType, extremums, range).nice(ticksNumber);
141
+ const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
134
142
  const niceDomain = niceScale.domain();
135
143
  const domain = [(_axis$min2 = axis.min) != null ? _axis$min2 : niceDomain[0], (_axis$max2 = axis.max) != null ? _axis$max2 : niceDomain[1]];
136
144
  completedXAxis[axis.id] = _extends({}, axis, {
137
145
  scaleType,
138
146
  scale: niceScale.domain(domain),
139
- ticksNumber
147
+ tickNumber
140
148
  });
141
149
  });
142
150
  const allYAxis = [...((_yAxis$map = yAxis == null ? void 0 : yAxis.map((axis, index) => _extends({
@@ -161,13 +169,13 @@ function CartesianContextProvider({
161
169
  barGapRatio: 0
162
170
  }, axis, {
163
171
  scale: scaleBand(axis.data, [range[1], range[0]]).paddingInner(categoryGapRatio).paddingOuter(categoryGapRatio / 2),
164
- ticksNumber: axis.data.length
172
+ tickNumber: axis.data.length
165
173
  });
166
174
  }
167
175
  if (isPointScaleConfig(axis)) {
168
176
  completedYAxis[axis.id] = _extends({}, axis, {
169
177
  scale: scalePoint(axis.data, [range[1], range[0]]),
170
- ticksNumber: axis.data.length
178
+ tickNumber: axis.data.length
171
179
  });
172
180
  }
173
181
  if (axis.scaleType === 'band' || axis.scaleType === 'point') {
@@ -176,17 +184,17 @@ function CartesianContextProvider({
176
184
  }
177
185
  const scaleType = (_axis$scaleType2 = axis.scaleType) != null ? _axis$scaleType2 : 'linear';
178
186
  const extremums = [(_axis$min3 = axis.min) != null ? _axis$min3 : minData, (_axis$max3 = axis.max) != null ? _axis$max3 : maxData];
179
- const ticksNumber = getTicksNumber(_extends({}, axis, {
187
+ const tickNumber = getTickNumber(_extends({}, axis, {
180
188
  range,
181
189
  domain: extremums
182
190
  }));
183
- const niceScale = getScale(scaleType, extremums, range).nice(ticksNumber);
191
+ const niceScale = getScale(scaleType, extremums, range).nice(tickNumber);
184
192
  const niceDomain = niceScale.domain();
185
193
  const domain = [(_axis$min4 = axis.min) != null ? _axis$min4 : niceDomain[0], (_axis$max4 = axis.max) != null ? _axis$max4 : niceDomain[1]];
186
194
  completedYAxis[axis.id] = _extends({}, axis, {
187
195
  scaleType,
188
196
  scale: niceScale.domain(domain),
189
- ticksNumber
197
+ tickNumber
190
198
  });
191
199
  });
192
200
  return {
@@ -226,6 +234,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
226
234
  id: PropTypes.string,
227
235
  label: PropTypes.string,
228
236
  labelFontSize: PropTypes.number,
237
+ labelStyle: PropTypes.object,
229
238
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
230
239
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
231
240
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -234,6 +243,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
234
243
  slots: PropTypes.object,
235
244
  stroke: PropTypes.string,
236
245
  tickFontSize: PropTypes.number,
246
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
247
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
248
+ tickLabelStyle: PropTypes.object,
237
249
  tickMaxStep: PropTypes.number,
238
250
  tickMinStep: PropTypes.number,
239
251
  tickNumber: PropTypes.number,
@@ -252,6 +264,7 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
252
264
  id: PropTypes.string,
253
265
  label: PropTypes.string,
254
266
  labelFontSize: PropTypes.number,
267
+ labelStyle: PropTypes.object,
255
268
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
256
269
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
257
270
  position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
@@ -260,6 +273,9 @@ process.env.NODE_ENV !== "production" ? CartesianContextProvider.propTypes = {
260
273
  slots: PropTypes.object,
261
274
  stroke: PropTypes.string,
262
275
  tickFontSize: PropTypes.number,
276
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
277
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
278
+ tickLabelStyle: PropTypes.object,
263
279
  tickMaxStep: PropTypes.number,
264
280
  tickMinStep: PropTypes.number,
265
281
  tickNumber: PropTypes.number,
@@ -9,12 +9,20 @@ import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export const DrawingContext = /*#__PURE__*/React.createContext({
10
10
  top: 0,
11
11
  left: 0,
12
+ bottom: 0,
13
+ right: 0,
12
14
  height: 300,
13
15
  width: 400
14
16
  });
15
17
  export const SVGContext = /*#__PURE__*/React.createContext({
16
18
  current: null
17
19
  });
20
+
21
+ /**
22
+ * API:
23
+ *
24
+ * - [DrawingProvider API](https://mui.com/x/api/charts/drawing-provider/)
25
+ */
18
26
  function DrawingProvider({
19
27
  width,
20
28
  height,
@@ -6,6 +6,8 @@ const useChartDimensions = (width, height, margin) => {
6
6
  const drawingArea = React.useMemo(() => ({
7
7
  left: defaultizedMargin.left,
8
8
  top: defaultizedMargin.top,
9
+ right: defaultizedMargin.right,
10
+ bottom: defaultizedMargin.bottom,
9
11
  width: Math.max(0, width - defaultizedMargin.left - defaultizedMargin.right),
10
12
  height: Math.max(0, height - defaultizedMargin.top - defaultizedMargin.bottom)
11
13
  }), [width, height, defaultizedMargin.top, defaultizedMargin.bottom, defaultizedMargin.left, defaultizedMargin.right]);
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
3
+ export function useMounted(defer = false) {
4
+ const [mountedState, setMountedState] = React.useState(false);
5
+ useEnhancedEffect(() => {
6
+ if (!defer) {
7
+ setMountedState(true);
8
+ }
9
+ }, [defer]);
10
+ React.useEffect(() => {
11
+ if (defer) {
12
+ setMountedState(true);
13
+ }
14
+ }, [defer]);
15
+ return mountedState;
16
+ }
@@ -0,0 +1,27 @@
1
+ import { useIsomorphicLayoutEffect, Globals } from '@react-spring/web';
2
+
3
+ /**
4
+ * Returns `boolean` or `null`, used to automatically
5
+ * set skipAnimations to the value of the user's
6
+ * `prefers-reduced-motion` query.
7
+ *
8
+ * The return value, post-effect, is the value of their prefered setting
9
+ */
10
+ export const useReducedMotion = () => {
11
+ // Taken from: https://github.com/pmndrs/react-spring/blob/02ec877bbfab0df46da0e4a47d5f68d3e731206a/packages/shared/src/hooks/useReducedMotion.ts#L13
12
+
13
+ useIsomorphicLayoutEffect(() => {
14
+ const mql = window.matchMedia('(prefers-reduced-motion)');
15
+ const handleMediaChange = e => {
16
+ Globals.assign({
17
+ // Modification such the react-spring implementation such that this hook can remove animation but never activate animation.
18
+ skipAnimation: e.matches || undefined
19
+ });
20
+ };
21
+ handleMediaChange(mql);
22
+ mql.addEventListener('change', handleMediaChange);
23
+ return () => {
24
+ mql.removeEventListener('change', handleMediaChange);
25
+ };
26
+ }, []);
27
+ };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { isBandScale } from '../internals/isBandScale';
3
- export function getTicksNumber(params) {
3
+ export function getTickNumber(params) {
4
4
  const {
5
5
  tickMaxStep,
6
6
  tickMinStep,
@@ -16,8 +16,9 @@ export function getTicksNumber(params) {
16
16
  function useTicks(options) {
17
17
  const {
18
18
  scale,
19
- ticksNumber,
20
- valueFormatter
19
+ tickNumber,
20
+ valueFormatter,
21
+ tickInterval
21
22
  } = options;
22
23
  return React.useMemo(() => {
23
24
  // band scale
@@ -28,7 +29,8 @@ function useTicks(options) {
28
29
  return [...domain.map(value => {
29
30
  var _valueFormatter;
30
31
  return {
31
- formattedValue: (_valueFormatter = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter : value,
32
+ value,
33
+ formattedValue: (_valueFormatter = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter : `${value}`,
32
34
  offset: scale(value) - (scale.step() - scale.bandwidth()) / 2,
33
35
  labelOffset: scale.step() / 2
34
36
  };
@@ -40,23 +42,27 @@ function useTicks(options) {
40
42
  }
41
43
 
42
44
  // scale type = 'point'
43
- return domain.map(value => {
45
+ const filteredDomain = typeof tickInterval === 'function' && domain.filter(tickInterval) || typeof tickInterval === 'object' && tickInterval || domain;
46
+ return filteredDomain.map(value => {
44
47
  var _valueFormatter2;
45
48
  return {
46
- formattedValue: (_valueFormatter2 = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter2 : value,
49
+ value,
50
+ formattedValue: (_valueFormatter2 = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter2 : `${value}`,
47
51
  offset: scale(value),
48
52
  labelOffset: 0
49
53
  };
50
54
  });
51
55
  }
52
- return scale.ticks(ticksNumber).map(value => {
56
+ const ticks = typeof tickInterval === 'object' ? tickInterval : scale.ticks(tickNumber);
57
+ return ticks.map(value => {
53
58
  var _valueFormatter3;
54
59
  return {
55
- formattedValue: (_valueFormatter3 = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter3 : scale.tickFormat(ticksNumber)(value),
60
+ value,
61
+ formattedValue: (_valueFormatter3 = valueFormatter == null ? void 0 : valueFormatter(value)) != null ? _valueFormatter3 : scale.tickFormat(tickNumber)(value),
56
62
  offset: scale(value),
57
63
  labelOffset: 0
58
64
  };
59
65
  });
60
- }, [ticksNumber, scale, valueFormatter]);
66
+ }, [tickNumber, scale, valueFormatter, tickInterval]);
61
67
  }
62
68
  export default useTicks;
@@ -5,77 +5,22 @@ export const AxisRoot = styled('g', {
5
5
  name: 'MuiChartsAxis',
6
6
  slot: 'Root',
7
7
  overridesResolver: (props, styles) => styles.root
8
- })({
9
- [`&.${axisClasses.directionY}`]: {
10
- [`.${axisClasses.tickLabel}`]: {
11
- dominantBaseline: 'middle'
12
- },
13
- [`.${axisClasses.label}`]: {
14
- dominantBaseline: 'auto',
15
- textAnchor: 'middle'
16
- }
17
- },
18
- [`&.${axisClasses.left}`]: {
19
- [`.${axisClasses.tickLabel}`]: {
20
- dominantBaseline: 'central',
21
- textAnchor: 'end'
22
- }
23
- },
24
- [`&.${axisClasses.right}`]: {
25
- [`.${axisClasses.tickLabel}`]: {
26
- dominantBaseline: 'central',
27
- textAnchor: 'start'
28
- }
29
- },
30
- [`&.${axisClasses.bottom}`]: {
31
- [`.${axisClasses.tickLabel}, .${axisClasses.label}`]: {
32
- dominantBaseline: 'hanging',
33
- textAnchor: 'middle'
34
- }
35
- },
36
- [`&.${axisClasses.top}`]: {
37
- [`.${axisClasses.tickLabel}, .${axisClasses.label}`]: {
38
- dominantBaseline: 'baseline',
39
- textAnchor: 'middle'
40
- }
41
- }
42
- });
43
- export const ChartsLine = styled('line', {
44
- name: 'MuiChartsAxis',
45
- slot: 'Line',
46
- overridesResolver: (props, styles) => styles.line
47
- })(({
48
- theme
49
- }) => ({
50
- stroke: theme.palette.text.primary,
51
- shapeRendering: 'crispEdges',
52
- strokeWidth: 1
53
- }));
54
- export const ChartsTick = styled('line', {
55
- name: 'MuiChartsAxis',
56
- slot: 'Tick',
57
- overridesResolver: (props, styles) => styles.tick
58
8
  })(({
59
9
  theme
60
10
  }) => ({
61
- stroke: theme.palette.text.primary,
62
- shapeRendering: 'crispEdges'
63
- }));
64
- export const ChartsTickLabel = styled('text', {
65
- name: 'MuiChartsAxis',
66
- slot: 'TickLabel',
67
- overridesResolver: (props, styles) => styles.tickLabel
68
- })(({
69
- theme
70
- }) => _extends({}, theme.typography.caption, {
71
- fill: theme.palette.text.primary
72
- }));
73
- export const ChartsLabel = styled('text', {
74
- name: 'MuiChartsAxis',
75
- slot: 'Label',
76
- overridesResolver: (props, styles) => styles.label
77
- })(({
78
- theme
79
- }) => _extends({}, theme.typography.body1, {
80
- fill: theme.palette.text.primary
11
+ [`& .${axisClasses.tickLabel}`]: _extends({}, theme.typography.caption, {
12
+ fill: (theme.vars || theme).palette.text.primary
13
+ }),
14
+ [`& .${axisClasses.label}`]: _extends({}, theme.typography.body1, {
15
+ fill: (theme.vars || theme).palette.text.primary
16
+ }),
17
+ [`& .${axisClasses.line}`]: {
18
+ stroke: (theme.vars || theme).palette.text.primary,
19
+ shapeRendering: 'crispEdges',
20
+ strokeWidth: 1
21
+ },
22
+ [`& .${axisClasses.tick}`]: {
23
+ stroke: (theme.vars || theme).palette.text.primary,
24
+ shapeRendering: 'crispEdges'
25
+ }
81
26
  }));
@@ -0,0 +1,77 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["x", "y", "style", "text", "ownerState"],
4
+ _excluded2 = ["angle", "textAnchor", "dominantBaseline"];
5
+ import * as React from 'react';
6
+ import { getStringSize } from '../domUtils';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export function getWordsByLines({
9
+ style,
10
+ needsComputation,
11
+ text
12
+ }) {
13
+ return text.split('\n').map(subText => _extends({
14
+ text: subText
15
+ }, needsComputation ? getStringSize(subText, style) : {
16
+ width: 0,
17
+ height: 0
18
+ }));
19
+ }
20
+ export function ChartsText(props) {
21
+ const {
22
+ x,
23
+ y,
24
+ style: styleProps,
25
+ text
26
+ } = props,
27
+ textProps = _objectWithoutPropertiesLoose(props, _excluded);
28
+ const _ref = styleProps != null ? styleProps : {},
29
+ {
30
+ angle,
31
+ textAnchor,
32
+ dominantBaseline
33
+ } = _ref,
34
+ style = _objectWithoutPropertiesLoose(_ref, _excluded2);
35
+ const wordsByLines = React.useMemo(() => getWordsByLines({
36
+ style,
37
+ needsComputation: text.includes('\n'),
38
+ text
39
+ }), [style, text]);
40
+ let startDy;
41
+ switch (dominantBaseline) {
42
+ case 'hanging':
43
+ startDy = 0;
44
+ break;
45
+ case 'central':
46
+ startDy = (wordsByLines.length - 1) / 2 * -wordsByLines[0].height;
47
+ break;
48
+ default:
49
+ startDy = (wordsByLines.length - 1) * -wordsByLines[0].height;
50
+ break;
51
+ }
52
+ const transforms = [];
53
+ // if (scaleToFit) {
54
+ // const lineWidth = wordsByLines[0].width;
55
+ // transforms.push(`scale(${(isNumber(width as number) ? (width as number) / lineWidth : 1) / lineWidth})`);
56
+ // }
57
+ if (angle) {
58
+ transforms.push(`rotate(${angle}, ${x}, ${y})`);
59
+ }
60
+ if (transforms.length) {
61
+ textProps.transform = transforms.join(' ');
62
+ }
63
+ return /*#__PURE__*/_jsx("text", _extends({}, textProps, {
64
+ x: x,
65
+ y: y,
66
+ textAnchor: textAnchor,
67
+ dominantBaseline: dominantBaseline,
68
+ style: style,
69
+ children: wordsByLines.map((line, index) => /*#__PURE__*/_jsx("tspan", {
70
+ x: x,
71
+ dy: `${index === 0 ? startDy : wordsByLines[0].height}px`,
72
+ dominantBaseline: dominantBaseline // Propagated to fix Safari issue: https://github.com/mui/mui-x/issues/10808
73
+ ,
74
+ children: line.text
75
+ }, index))
76
+ }));
77
+ }
@@ -0,0 +1,113 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ // DOM utils taken from
3
+ // https://github.com/recharts/recharts/blob/master/src/util/DOMUtils.ts
4
+
5
+ const isSsr = () => !(typeof window !== 'undefined' && window.document && window.setTimeout);
6
+ const stringCache = {
7
+ widthCache: {},
8
+ cacheCount: 0
9
+ };
10
+ const MAX_CACHE_NUM = 2000;
11
+ const SPAN_STYLE = {
12
+ position: 'absolute',
13
+ top: '-20000px',
14
+ left: 0,
15
+ padding: 0,
16
+ margin: 0,
17
+ border: 'none',
18
+ whiteSpace: 'pre'
19
+ };
20
+ const STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];
21
+ const MEASUREMENT_SPAN_ID = 'mui_measurement_span';
22
+
23
+ /**
24
+ *
25
+ * @param name CSS property name
26
+ * @param value
27
+ * @returns add 'px' for distance properties
28
+ */
29
+ function autoCompleteStyle(name, value) {
30
+ if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {
31
+ return `${value}px`;
32
+ }
33
+ return value;
34
+ }
35
+
36
+ /**
37
+ *
38
+ * @param text camelcase css property
39
+ * @returns css property
40
+ */
41
+ function camelToMiddleLine(text) {
42
+ const strs = text.split('');
43
+ const formatStrs = strs.reduce((result, entry) => {
44
+ if (entry === entry.toUpperCase()) {
45
+ return [...result, '-', entry.toLowerCase()];
46
+ }
47
+ return [...result, entry];
48
+ }, []);
49
+ return formatStrs.join('');
50
+ }
51
+
52
+ /**
53
+ *
54
+ * @param style React style object
55
+ * @returns CSS styling string
56
+ */
57
+ export const getStyleString = style => Object.keys(style).sort().reduce((result, s) => `${result}${camelToMiddleLine(s)}:${autoCompleteStyle(s, style[s])};`, '');
58
+
59
+ /**
60
+ *
61
+ * @param text The string to estimate
62
+ * @param style The style applied
63
+ * @returns width and height of the text
64
+ */
65
+ export const getStringSize = (text, style = {}) => {
66
+ if (text === undefined || text === null || isSsr()) {
67
+ return {
68
+ width: 0,
69
+ height: 0
70
+ };
71
+ }
72
+ const str = `${text}`;
73
+ const styleString = getStyleString(style);
74
+ const cacheKey = `${str}-${styleString}`;
75
+ if (stringCache.widthCache[cacheKey]) {
76
+ return stringCache.widthCache[cacheKey];
77
+ }
78
+ try {
79
+ let measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);
80
+ if (measurementSpan === null) {
81
+ measurementSpan = document.createElement('span');
82
+ measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);
83
+ measurementSpan.setAttribute('aria-hidden', 'true');
84
+ document.body.appendChild(measurementSpan);
85
+ }
86
+ // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)
87
+ // https://en.wikipedia.org/wiki/Content_Security_Policy
88
+ const measurementSpanStyle = _extends({}, SPAN_STYLE, style);
89
+ Object.keys(measurementSpanStyle).map(styleKey => {
90
+ measurementSpan.style[camelToMiddleLine(styleKey)] = autoCompleteStyle(styleKey, measurementSpanStyle[styleKey]);
91
+ return styleKey;
92
+ });
93
+ measurementSpan.textContent = str;
94
+ const rect = measurementSpan.getBoundingClientRect();
95
+ const result = {
96
+ width: rect.width,
97
+ height: rect.height
98
+ };
99
+ stringCache.widthCache[cacheKey] = result;
100
+ if (stringCache.cacheCount + 1 > MAX_CACHE_NUM) {
101
+ stringCache.cacheCount = 0;
102
+ stringCache.widthCache = {};
103
+ } else {
104
+ stringCache.cacheCount += 1;
105
+ }
106
+ return result;
107
+ } catch (e) {
108
+ return {
109
+ width: 0,
110
+ height: 0
111
+ };
112
+ }
113
+ };
@@ -0,0 +1,36 @@
1
+ const ANGLE_APPROX = 5; // Angle (in deg) for which we approximate the rectangle as perfectly horizontal/vertical
2
+
3
+ let warnedOnce = false;
4
+
5
+ /**
6
+ * Return the minimal translation along the x-axis to avoid overflow of a rectangle of a given width, height, and rotation.
7
+ * This assumes that all rectangles have the same height and angle between -90 and 90.
8
+ * Otherwise it would be problematic because you need the height/width of the next rectangle to do the correct computation.
9
+ * @param width the side along the x axis.
10
+ * @param height the side along the y axis.
11
+ * @param angle the rotation in degrees.
12
+ */
13
+ export function getMinXTranslation(width, height, angle = 0) {
14
+ if (process.env.NODE_ENV !== 'production') {
15
+ if (!warnedOnce && angle > 90 && angle < -90) {
16
+ warnedOnce = true;
17
+ console.warn([`MUI X: It seems you applied an angle larger than 90° or smaller than -90° to an axis text.`, `This could cause some text overlapping.`, `If you encounter a use case where it's needed, please open an issue.`].join('\n'));
18
+ }
19
+ }
20
+ const standardAngle = Math.min(Math.abs(angle) % 180, Math.abs(Math.abs(angle) % 180 - 180) % 180); // Map from R to [0, 90]
21
+
22
+ if (standardAngle < ANGLE_APPROX) {
23
+ // It's nearly horizontal
24
+ return width;
25
+ }
26
+ if (standardAngle > 90 - ANGLE_APPROX) {
27
+ // It's nearly vertical
28
+ return height;
29
+ }
30
+ const radAngle = standardAngle * Math.PI / 180;
31
+ const angleSwich = Math.atan2(height, width);
32
+ if (radAngle < angleSwich) {
33
+ return width / Math.cos(radAngle);
34
+ }
35
+ return height / Math.sin(radAngle);
36
+ }
@@ -9,8 +9,8 @@ var _InteractionProvider = require("../context/InteractionProvider");
9
9
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
10
10
  var _DrawingProvider = require("../context/DrawingProvider");
11
11
  var _isBandScale = require("../internals/isBandScale");
12
- 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); }
13
- 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; }
12
+ 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); }
13
+ 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; }
14
14
  const useAxisEvents = disableAxisListener => {
15
15
  const svgRef = React.useContext(_DrawingProvider.SVGContext);
16
16
  const {
@@ -2,6 +2,8 @@ import { LayoutConfig } from '../models/layout';
2
2
  declare const useChartDimensions: (width: number, height: number, margin: LayoutConfig['margin']) => {
3
3
  left: number;
4
4
  top: number;
5
+ right: number;
6
+ bottom: number;
5
7
  width: number;
6
8
  height: number;
7
9
  };
@@ -8,17 +8,18 @@ exports.default = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _constants = require("../constants");
11
- 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); }
12
- 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; }
11
+ 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); }
12
+ 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; }
13
13
  const useChartDimensions = (width, height, margin) => {
14
14
  const defaultizedMargin = (0, _extends2.default)({}, _constants.DEFAULT_MARGINS, margin);
15
15
  const drawingArea = React.useMemo(() => ({
16
16
  left: defaultizedMargin.left,
17
17
  top: defaultizedMargin.top,
18
+ right: defaultizedMargin.right,
19
+ bottom: defaultizedMargin.bottom,
18
20
  width: Math.max(0, width - defaultizedMargin.left - defaultizedMargin.right),
19
21
  height: Math.max(0, height - defaultizedMargin.top - defaultizedMargin.bottom)
20
22
  }), [width, height, defaultizedMargin.top, defaultizedMargin.bottom, defaultizedMargin.left, defaultizedMargin.right]);
21
23
  return drawingArea;
22
24
  };
23
- var _default = useChartDimensions;
24
- exports.default = _default;
25
+ var _default = exports.default = useChartDimensions;