@mui/x-charts 8.5.2 → 8.6.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 (188) hide show
  1. package/BarChart/AnimatedBarElement.js +3 -1
  2. package/BarChart/BarLabel/BarLabelPlot.d.ts +2 -2
  3. package/BarChart/BarLabel/BarLabelPlot.js +33 -25
  4. package/BarChart/BarPlot.js +55 -40
  5. package/BarChart/barClasses.d.ts +12 -0
  6. package/BarChart/barClasses.js +25 -0
  7. package/BarChart/index.d.ts +3 -1
  8. package/BarChart/index.js +23 -1
  9. package/BarChart/types.d.ts +5 -1
  10. package/CHANGELOG.md +203 -11
  11. package/ChartsLegend/ChartsLegend.d.ts +1 -0
  12. package/ChartsLegend/ChartsLegend.js +2 -0
  13. package/ChartsLegend/ContinuousColorLegend.d.ts +1 -0
  14. package/ChartsLegend/PiecewiseColorLegend.d.ts +1 -0
  15. package/ChartsLegend/chartsLegendClasses.d.ts +3 -1
  16. package/ChartsLegend/chartsLegendClasses.js +2 -1
  17. package/ChartsSurface/ChartsSurface.d.ts +1 -1
  18. package/ChartsXAxis/ChartsXAxis.js +4 -108
  19. package/ChartsXAxis/getVisibleLabels.d.ts +14 -0
  20. package/ChartsXAxis/getVisibleLabels.js +71 -0
  21. package/ChartsXAxis/shortenLabels.d.ts +4 -0
  22. package/ChartsXAxis/shortenLabels.js +48 -0
  23. package/ChartsYAxis/ChartsYAxis.js +2 -39
  24. package/ChartsYAxis/shortenLabels.d.ts +4 -0
  25. package/ChartsYAxis/shortenLabels.js +46 -0
  26. package/LineChart/AnimatedArea.js +4 -1
  27. package/LineChart/AnimatedLine.js +4 -1
  28. package/LineChart/CircleMarkElement.js +4 -1
  29. package/LineChart/MarkElement.js +4 -1
  30. package/LineChart/MarkPlot.js +1 -0
  31. package/PieChart/PieArc.js +3 -1
  32. package/PieChart/PiePlot.js +6 -0
  33. package/PieChart/index.d.ts +3 -1
  34. package/PieChart/index.js +18 -1
  35. package/PieChart/pieClasses.d.ts +12 -0
  36. package/PieChart/pieClasses.js +24 -0
  37. package/ScatterChart/Scatter.d.ts +2 -0
  38. package/ScatterChart/Scatter.js +9 -1
  39. package/ScatterChart/index.d.ts +3 -1
  40. package/ScatterChart/index.js +16 -1
  41. package/ScatterChart/scatterClasses.d.ts +8 -0
  42. package/ScatterChart/scatterClasses.js +22 -0
  43. package/Toolbar/ToolbarButton.js +2 -0
  44. package/esm/BarChart/AnimatedBarElement.js +3 -1
  45. package/esm/BarChart/BarLabel/BarLabelPlot.d.ts +2 -2
  46. package/esm/BarChart/BarLabel/BarLabelPlot.js +33 -25
  47. package/esm/BarChart/BarPlot.js +55 -40
  48. package/esm/BarChart/barClasses.d.ts +12 -0
  49. package/esm/BarChart/barClasses.js +15 -0
  50. package/esm/BarChart/index.d.ts +3 -1
  51. package/esm/BarChart/index.js +2 -1
  52. package/esm/BarChart/types.d.ts +5 -1
  53. package/esm/ChartsLegend/ChartsLegend.d.ts +1 -0
  54. package/esm/ChartsLegend/ChartsLegend.js +2 -0
  55. package/esm/ChartsLegend/ContinuousColorLegend.d.ts +1 -0
  56. package/esm/ChartsLegend/PiecewiseColorLegend.d.ts +1 -0
  57. package/esm/ChartsLegend/chartsLegendClasses.d.ts +3 -1
  58. package/esm/ChartsLegend/chartsLegendClasses.js +2 -1
  59. package/esm/ChartsSurface/ChartsSurface.d.ts +1 -1
  60. package/esm/ChartsXAxis/ChartsXAxis.js +2 -106
  61. package/esm/ChartsXAxis/getVisibleLabels.d.ts +14 -0
  62. package/esm/ChartsXAxis/getVisibleLabels.js +67 -0
  63. package/esm/ChartsXAxis/shortenLabels.d.ts +4 -0
  64. package/esm/ChartsXAxis/shortenLabels.js +42 -0
  65. package/esm/ChartsYAxis/ChartsYAxis.js +1 -38
  66. package/esm/ChartsYAxis/shortenLabels.d.ts +4 -0
  67. package/esm/ChartsYAxis/shortenLabels.js +41 -0
  68. package/esm/LineChart/AnimatedArea.js +4 -1
  69. package/esm/LineChart/AnimatedLine.js +4 -1
  70. package/esm/LineChart/CircleMarkElement.js +4 -1
  71. package/esm/LineChart/MarkElement.js +4 -1
  72. package/esm/LineChart/MarkPlot.js +1 -0
  73. package/esm/PieChart/PieArc.js +3 -1
  74. package/esm/PieChart/PiePlot.js +6 -0
  75. package/esm/PieChart/index.d.ts +3 -1
  76. package/esm/PieChart/index.js +2 -1
  77. package/esm/PieChart/pieClasses.d.ts +12 -0
  78. package/esm/PieChart/pieClasses.js +15 -0
  79. package/esm/ScatterChart/Scatter.d.ts +2 -0
  80. package/esm/ScatterChart/Scatter.js +9 -1
  81. package/esm/ScatterChart/index.d.ts +3 -1
  82. package/esm/ScatterChart/index.js +2 -1
  83. package/esm/ScatterChart/scatterClasses.d.ts +8 -0
  84. package/esm/ScatterChart/scatterClasses.js +13 -0
  85. package/esm/Toolbar/ToolbarButton.js +2 -0
  86. package/esm/hooks/useItemHighlighted.js +2 -2
  87. package/esm/index.js +1 -1
  88. package/esm/internals/components/NotRendered.d.ts +9 -0
  89. package/esm/internals/components/NotRendered.js +10 -0
  90. package/esm/internals/createSeriesSelectorOfType.js +2 -2
  91. package/esm/internals/index.d.ts +1 -0
  92. package/esm/internals/index.js +1 -0
  93. package/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.d.ts +3 -29
  94. package/esm/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.js +1 -1
  95. package/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.js +30 -2
  96. package/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.d.ts +14 -724
  97. package/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js +10 -10
  98. package/esm/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types.d.ts +8 -2
  99. package/esm/internals/plugins/corePlugins/useChartId/useChartId.selectors.d.ts +3 -29
  100. package/esm/internals/plugins/corePlugins/useChartId/useChartId.selectors.js +1 -1
  101. package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.d.ts +6 -54
  102. package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.js +2 -2
  103. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.d.ts +12 -208
  104. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.d.ts +7 -66
  105. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.js +2 -3
  106. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +21 -6222
  107. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js +4 -6
  108. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +50 -5
  109. package/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.d.ts +18 -622
  110. package/esm/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +3 -3
  111. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +18 -230
  112. package/esm/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js +6 -6
  113. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +20 -4
  114. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.ts +17 -2012
  115. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.js +2 -2
  116. package/esm/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +39 -4
  117. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.d.ts +3 -27
  118. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.js +1 -1
  119. package/esm/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.selectors.d.ts +5 -40
  120. package/esm/internals/plugins/utils/selectors.d.ts +18 -6
  121. package/esm/internals/plugins/utils/selectors.js +3 -3
  122. package/esm/internals/store/useSelector.d.ts +2 -2
  123. package/esm/internals/store/useSelector.js +2 -2
  124. package/esm/locales/enUS.d.ts +3 -0
  125. package/esm/locales/enUS.js +8 -2
  126. package/esm/locales/frFR.d.ts +3 -0
  127. package/esm/locales/frFR.js +7 -0
  128. package/esm/locales/ptBR.d.ts +3 -0
  129. package/esm/locales/ptBR.js +7 -1
  130. package/esm/locales/ptPT.d.ts +3 -0
  131. package/esm/locales/ptPT.js +7 -1
  132. package/esm/locales/utils/chartsLocaleTextApi.d.ts +17 -0
  133. package/esm/locales/utils/getChartsLocalization.d.ts +3 -0
  134. package/esm/locales/utils/imageMimeTypes.d.ts +2 -0
  135. package/esm/locales/utils/imageMimeTypes.js +5 -0
  136. package/esm/models/slots/chartsBaseSlotProps.d.ts +4 -0
  137. package/hooks/useItemHighlighted.js +2 -2
  138. package/index.js +1 -1
  139. package/internals/components/NotRendered.d.ts +9 -0
  140. package/internals/components/NotRendered.js +16 -0
  141. package/internals/createSeriesSelectorOfType.js +2 -2
  142. package/internals/index.d.ts +1 -0
  143. package/internals/index.js +12 -0
  144. package/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.d.ts +3 -29
  145. package/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.selectors.js +1 -1
  146. package/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.js +30 -2
  147. package/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.d.ts +14 -724
  148. package/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.selectors.js +11 -10
  149. package/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types.d.ts +8 -2
  150. package/internals/plugins/corePlugins/useChartId/useChartId.selectors.d.ts +3 -29
  151. package/internals/plugins/corePlugins/useChartId/useChartId.selectors.js +1 -1
  152. package/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.d.ts +6 -54
  153. package/internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.js +2 -2
  154. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartAxisSize.selectors.d.ts +12 -208
  155. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.d.ts +7 -66
  156. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisLayout.selectors.js +4 -3
  157. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.d.ts +21 -6222
  158. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js +4 -6
  159. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianInteraction.selectors.d.ts +50 -5
  160. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.d.ts +18 -622
  161. package/internals/plugins/featurePlugins/useChartHighlight/useChartHighlight.selectors.js +3 -3
  162. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.d.ts +18 -230
  163. package/internals/plugins/featurePlugins/useChartInteraction/useChartInteraction.selectors.js +6 -6
  164. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.js +20 -4
  165. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.d.ts +17 -2012
  166. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarAxis.selectors.js +2 -2
  167. package/internals/plugins/featurePlugins/useChartPolarAxis/useChartPolarInteraction.selectors.d.ts +39 -4
  168. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.d.ts +3 -27
  169. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.selectors.js +1 -1
  170. package/internals/plugins/featurePlugins/useChartZAxis/useChartZAxis.selectors.d.ts +5 -40
  171. package/internals/plugins/utils/selectors.d.ts +18 -6
  172. package/internals/plugins/utils/selectors.js +3 -3
  173. package/internals/store/useSelector.d.ts +2 -2
  174. package/internals/store/useSelector.js +2 -2
  175. package/locales/enUS.d.ts +3 -0
  176. package/locales/enUS.js +8 -2
  177. package/locales/frFR.d.ts +3 -0
  178. package/locales/frFR.js +7 -0
  179. package/locales/ptBR.d.ts +3 -0
  180. package/locales/ptBR.js +7 -1
  181. package/locales/ptPT.d.ts +3 -0
  182. package/locales/ptPT.js +7 -1
  183. package/locales/utils/chartsLocaleTextApi.d.ts +17 -0
  184. package/locales/utils/getChartsLocalization.d.ts +3 -0
  185. package/locales/utils/imageMimeTypes.d.ts +2 -0
  186. package/locales/utils/imageMimeTypes.js +11 -0
  187. package/models/slots/chartsBaseSlotProps.d.ts +4 -0
  188. package/package.json +3 -3
@@ -14,8 +14,8 @@ import { selectorChartsIsFaded, selectorChartsIsHighlighted } from "../internals
14
14
  */
15
15
  export function useItemHighlighted(item) {
16
16
  const store = useStore();
17
- const isHighlighted = useSelector(store, selectorChartsIsHighlighted, item);
18
- const isFaded = useSelector(store, selectorChartsIsFaded, item);
17
+ const isHighlighted = useSelector(store, selectorChartsIsHighlighted, [item]);
18
+ const isFaded = useSelector(store, selectorChartsIsFaded, [item]);
19
19
  return {
20
20
  isHighlighted,
21
21
  isFaded: !isHighlighted && isFaded
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v8.5.2
2
+ * @mui/x-charts v8.6.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * This component is used to assert that a certain component should not be rendered.
4
+ * It is used in cases where we want to apply styles to a component that is not rendered because we use the `as` prop (introduced by `styled`) to replace the rendered component.
5
+ * We need it because we don't know the component that will be rendered at the time of writing the styles.
6
+ *
7
+ * @param _props Not used
8
+ */
9
+ export declare function NotRendered<T>(_props: T): React.ReactNode;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This component is used to assert that a certain component should not be rendered.
3
+ * It is used in cases where we want to apply styles to a component that is not rendered because we use the `as` prop (introduced by `styled`) to replace the rendered component.
4
+ * We need it because we don't know the component that will be rendered at the time of writing the styles.
5
+ *
6
+ * @param _props Not used
7
+ */
8
+ export function NotRendered(_props) {
9
+ throw new Error('Failed assertion: should not be rendered');
10
+ }
@@ -31,11 +31,11 @@ export function createSeriesSelectorsOfType(seriesType) {
31
31
  });
32
32
  return ids => {
33
33
  const store = useStore();
34
- return useSelector(store, selectorSeriesWithIds, ids, fastArrayCompare);
34
+ return useSelector(store, selectorSeriesWithIds, [ids], fastArrayCompare);
35
35
  };
36
36
  }
37
37
  export function createAllSeriesSelectorOfType(seriesType) {
38
- const selectorSeries = createSelector(selectorChartSeriesProcessed, processedSeries => processedSeries[seriesType]);
38
+ const selectorSeries = createSelector([selectorChartSeriesProcessed], processedSeries => processedSeries[seriesType]);
39
39
  return () => {
40
40
  const store = useStore();
41
41
  return useSelector(store, selectorSeries);
@@ -1,6 +1,7 @@
1
1
  export * from "./components/ChartsAxesGradients/index.js";
2
2
  export * from "./components/ChartsWrapper/index.js";
3
3
  export * from "../ChartsLabel/ChartsLabelMark.js";
4
+ export * from "./components/NotRendered.js";
4
5
  export { useSeries } from "../hooks/useSeries.js";
5
6
  export { useInteractionItemProps } from "../hooks/useInteractionItemProps.js";
6
7
  export { useDrawingArea } from "../hooks/useDrawingArea.js";
@@ -2,6 +2,7 @@
2
2
  export * from "./components/ChartsAxesGradients/index.js";
3
3
  export * from "./components/ChartsWrapper/index.js";
4
4
  export * from "../ChartsLabel/ChartsLabelMark.js";
5
+ export * from "./components/NotRendered.js";
5
6
 
6
7
  // hooks
7
8
  export { useSeries } from "../hooks/useSeries.js";
@@ -1,31 +1,5 @@
1
- import { ChartRootSelector } from "../../utils/selectors.js";
2
- import type { UseChartAnimationSignature } from "./useChartAnimation.types.js";
3
- export declare const selectorChartSkipAnimation: ((state: import("../useChartId/useChartId.types.js").UseChartIdState & import("../useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("./useChartAnimation.types.js").UseChartAnimationState & Partial<{}> & {
1
+ export declare const selectorChartSkipAnimation: import("reselect").Selector<import("../useChartId/useChartId.types.js").UseChartIdState & import("../useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("./useChartAnimation.types.js").UseChartAnimationState & Partial<{}> & {
4
2
  cacheKey: import("../../models/index.js").ChartStateCacheKey;
5
- }) => boolean) & {
6
- clearCache: () => void;
7
- resultsCount: () => number;
8
- resetResultsCount: () => void;
9
3
  } & {
10
- resultFunc: (resultFuncArgs_0: {
11
- skip: boolean;
12
- skipAnimationRequests: number;
13
- }) => boolean;
14
- memoizedResultFunc: ((resultFuncArgs_0: {
15
- skip: boolean;
16
- skipAnimationRequests: number;
17
- }) => boolean) & {
18
- clearCache: () => void;
19
- resultsCount: () => number;
20
- resetResultsCount: () => void;
21
- };
22
- lastResult: () => boolean;
23
- dependencies: [ChartRootSelector<UseChartAnimationSignature>];
24
- recomputations: () => number;
25
- resetRecomputations: () => void;
26
- dependencyRecomputations: () => number;
27
- resetDependencyRecomputations: () => void;
28
- } & {
29
- memoize: typeof import("reselect").weakMapMemoize;
30
- argsMemoize: typeof import("reselect").weakMapMemoize;
31
- };
4
+ cacheKey: import("../../models/index.js").ChartStateCacheKey;
5
+ }, boolean, any[]>;
@@ -1,3 +1,3 @@
1
1
  import { createSelector } from "../../utils/selectors.js";
2
2
  const selectorChartAnimationState = state => state.animation;
3
- export const selectorChartSkipAnimation = createSelector(selectorChartAnimationState, state => state.skip || state.skipAnimationRequests > 0);
3
+ export const selectorChartSkipAnimation = createSelector([selectorChartAnimationState], state => state.skip || state.skipAnimationRequests > 0);
@@ -8,6 +8,7 @@ import { useSelector } from "../../../store/useSelector.js";
8
8
  import { DEFAULT_MARGINS } from "../../../../constants/index.js";
9
9
  import { selectorChartDrawingArea } from "./useChartDimensions.selectors.js";
10
10
  import { defaultizeMargin } from "../../../defaultizeMargin.js";
11
+ import { getSVGPoint } from "../../../getSVGPoint.js";
11
12
  const MAX_COMPUTE_RUN = 10;
12
13
  export const useChartDimensions = ({
13
14
  params,
@@ -149,16 +150,43 @@ export const useChartDimensions = ({
149
150
  const isYInside = React.useCallback(y => y >= drawingArea.top - 1 && y <= drawingArea.top + drawingArea.height, [drawingArea.height, drawingArea.top]);
150
151
  const isPointInside = React.useCallback((x, y, targetElement) => {
151
152
  // For element allowed to overflow, wrapping them in <g data-drawing-container /> make them fully part of the drawing area.
152
- if (targetElement && targetElement.closest('[data-drawing-container]')) {
153
+ if (targetElement && 'closest' in targetElement && targetElement.closest('[data-drawing-container]')) {
153
154
  return true;
154
155
  }
155
156
  return isXInside(x) && isYInside(y);
156
157
  }, [isXInside, isYInside]);
158
+ const isElementInside = React.useCallback(element => {
159
+ const svgElement = svgRef.current;
160
+ if (!element || !(element instanceof Element) || !svgElement) {
161
+ return false;
162
+ }
163
+ // For element allowed to overflow, wrapping them in <g data-drawing-container /> make them fully part of the drawing area.
164
+ if (element.closest('[data-drawing-container]')) {
165
+ return true;
166
+ }
167
+ const rect = element.getBoundingClientRect();
168
+ const {
169
+ x: left,
170
+ y: top
171
+ } = getSVGPoint(svgElement, {
172
+ clientX: rect.left,
173
+ clientY: rect.top
174
+ });
175
+ const {
176
+ x: right,
177
+ y: bottom
178
+ } = getSVGPoint(svgElement, {
179
+ clientX: rect.right,
180
+ clientY: rect.bottom
181
+ });
182
+ return isXInside(left) && isXInside(right) && isYInside(top) && isYInside(bottom);
183
+ }, [isXInside, isYInside, svgRef]);
157
184
  return {
158
185
  instance: {
159
186
  isPointInside,
160
187
  isXInside,
161
- isYInside
188
+ isYInside,
189
+ isElementInside
162
190
  }
163
191
  };
164
192
  };