@mui/x-charts 8.23.0 → 8.24.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 (262) hide show
  1. package/BarChart/BarChart.js +39 -0
  2. package/BarChart/BarChart.plugins.d.ts +2 -1
  3. package/BarChart/BarChart.plugins.js +2 -1
  4. package/BarChart/BarLabel/BarLabel.d.ts +2 -0
  5. package/BarChart/BarLabel/BarLabel.js +8 -3
  6. package/BarChart/BarLabel/BarLabelItem.d.ts +2 -0
  7. package/BarChart/BarLabel/BarLabelItem.js +4 -2
  8. package/BarChart/BarPlot.d.ts +12 -2
  9. package/BarChart/BarPlot.js +29 -86
  10. package/BarChart/BatchBarPlot/BarGroup.d.ts +15 -0
  11. package/BarChart/BatchBarPlot/BarGroup.js +142 -0
  12. package/BarChart/BatchBarPlot/BatchBarPlot.d.ts +12 -0
  13. package/BarChart/BatchBarPlot/BatchBarPlot.js +140 -0
  14. package/BarChart/BatchBarPlot/index.d.ts +1 -0
  15. package/BarChart/BatchBarPlot/index.js +12 -0
  16. package/BarChart/BatchBarPlot/useCreateBarPaths.d.ts +8 -0
  17. package/BarChart/BatchBarPlot/useCreateBarPaths.js +53 -0
  18. package/BarChart/FocusedBar.js +5 -1
  19. package/BarChart/IndividualBarPlot.d.ts +21 -0
  20. package/BarChart/IndividualBarPlot.js +106 -0
  21. package/BarChart/seriesConfig/bar/getSeriesWithDefaultValues.d.ts +1 -1
  22. package/BarChart/seriesConfig/bar/legend.js +1 -0
  23. package/BarChart/seriesConfig/index.js +3 -1
  24. package/BarChart/types.d.ts +2 -0
  25. package/BarChart/useBarChartProps.d.ts +6 -2
  26. package/BarChart/useBarChartProps.js +4 -2
  27. package/BarChart/useBarPlotData.d.ts +1 -1
  28. package/BarChart/useBarPlotData.js +23 -4
  29. package/BarChart/useRegisterItemClickHandlers.d.ts +6 -0
  30. package/BarChart/useRegisterItemClickHandlers.js +72 -0
  31. package/CHANGELOG.md +111 -1
  32. package/ChartContainer/ChartContainer.js +34 -0
  33. package/ChartContainer/useChartContainerProps.js +6 -2
  34. package/ChartsLegend/ChartsLegend.js +2 -2
  35. package/ChartsLegend/legendContext.types.d.ts +12 -0
  36. package/ChartsLegend/onClickContextBuilder.js +2 -1
  37. package/ChartsOverlay/ChartsLoadingOverlay.js +4 -1
  38. package/ChartsOverlay/ChartsNoDataOverlay.js +4 -1
  39. package/ChartsReferenceLine/common.d.ts +1 -1
  40. package/ChartsReferenceLine/common.js +4 -1
  41. package/ChartsTooltip/ChartsTooltipContainer.js +25 -21
  42. package/Gauge/GaugeContainer.js +4 -1
  43. package/LineChart/AnimatedLine.js +7 -3
  44. package/LineChart/AppearingMask.js +4 -1
  45. package/LineChart/CircleMarkElement.d.ts +5 -0
  46. package/LineChart/CircleMarkElement.js +13 -5
  47. package/LineChart/FocusedLineMark.js +5 -1
  48. package/LineChart/LineChart.js +30 -0
  49. package/LineChart/LineChart.plugins.d.ts +2 -1
  50. package/LineChart/LineChart.plugins.js +2 -1
  51. package/LineChart/LineElement.d.ts +4 -0
  52. package/LineChart/LineElement.js +7 -3
  53. package/LineChart/MarkElement.d.ts +5 -0
  54. package/LineChart/MarkElement.js +17 -10
  55. package/LineChart/markElementClasses.d.ts +0 -1
  56. package/LineChart/seriesConfig/index.js +3 -1
  57. package/LineChart/seriesConfig/legend.js +1 -0
  58. package/PieChart/FocusedPieArc.js +5 -2
  59. package/PieChart/PieArcLabel.d.ts +2 -0
  60. package/PieChart/PieArcLabel.js +5 -2
  61. package/PieChart/PieChart.js +35 -5
  62. package/PieChart/PieChart.plugins.d.ts +2 -1
  63. package/PieChart/PieChart.plugins.js +2 -1
  64. package/PieChart/seriesConfig/index.js +3 -1
  65. package/PieChart/seriesConfig/legend.js +6 -3
  66. package/RadarChart/RadarChart.js +30 -0
  67. package/RadarChart/RadarChart.plugins.d.ts +3 -2
  68. package/RadarChart/RadarChart.plugins.js +2 -1
  69. package/RadarChart/seriesConfig/index.js +3 -1
  70. package/RadarChart/seriesConfig/legend.js +1 -0
  71. package/ScatterChart/BatchScatter.js +8 -14
  72. package/ScatterChart/ScatterChart.js +30 -0
  73. package/ScatterChart/ScatterChart.plugins.d.ts +2 -1
  74. package/ScatterChart/ScatterChart.plugins.js +2 -1
  75. package/ScatterChart/seriesConfig/index.js +3 -1
  76. package/ScatterChart/seriesConfig/legend.js +1 -0
  77. package/SparkLineChart/SparkLineChart.js +46 -0
  78. package/esm/BarChart/BarChart.js +39 -0
  79. package/esm/BarChart/BarChart.plugins.d.ts +2 -1
  80. package/esm/BarChart/BarChart.plugins.js +2 -1
  81. package/esm/BarChart/BarLabel/BarLabel.d.ts +2 -0
  82. package/esm/BarChart/BarLabel/BarLabel.js +8 -3
  83. package/esm/BarChart/BarLabel/BarLabelItem.d.ts +2 -0
  84. package/esm/BarChart/BarLabel/BarLabelItem.js +4 -2
  85. package/esm/BarChart/BarPlot.d.ts +12 -2
  86. package/esm/BarChart/BarPlot.js +29 -86
  87. package/esm/BarChart/BatchBarPlot/BarGroup.d.ts +15 -0
  88. package/esm/BarChart/BatchBarPlot/BarGroup.js +134 -0
  89. package/esm/BarChart/BatchBarPlot/BatchBarPlot.d.ts +12 -0
  90. package/esm/BarChart/BatchBarPlot/BatchBarPlot.js +133 -0
  91. package/esm/BarChart/BatchBarPlot/index.d.ts +1 -0
  92. package/esm/BarChart/BatchBarPlot/index.js +1 -0
  93. package/esm/BarChart/BatchBarPlot/useCreateBarPaths.d.ts +8 -0
  94. package/esm/BarChart/BatchBarPlot/useCreateBarPaths.js +46 -0
  95. package/esm/BarChart/FocusedBar.js +5 -1
  96. package/esm/BarChart/IndividualBarPlot.d.ts +21 -0
  97. package/esm/BarChart/IndividualBarPlot.js +98 -0
  98. package/esm/BarChart/seriesConfig/bar/getSeriesWithDefaultValues.d.ts +1 -1
  99. package/esm/BarChart/seriesConfig/bar/legend.js +1 -0
  100. package/esm/BarChart/seriesConfig/index.js +3 -1
  101. package/esm/BarChart/types.d.ts +2 -0
  102. package/esm/BarChart/useBarChartProps.d.ts +6 -2
  103. package/esm/BarChart/useBarChartProps.js +4 -3
  104. package/esm/BarChart/useBarPlotData.d.ts +1 -1
  105. package/esm/BarChart/useBarPlotData.js +20 -1
  106. package/esm/BarChart/useRegisterItemClickHandlers.d.ts +6 -0
  107. package/esm/BarChart/useRegisterItemClickHandlers.js +67 -0
  108. package/esm/ChartContainer/ChartContainer.js +34 -0
  109. package/esm/ChartContainer/useChartContainerProps.js +6 -2
  110. package/esm/ChartsLegend/ChartsLegend.js +2 -2
  111. package/esm/ChartsLegend/legendContext.types.d.ts +12 -0
  112. package/esm/ChartsLegend/onClickContextBuilder.js +2 -1
  113. package/esm/ChartsOverlay/ChartsLoadingOverlay.js +4 -1
  114. package/esm/ChartsOverlay/ChartsNoDataOverlay.js +4 -1
  115. package/esm/ChartsReferenceLine/common.d.ts +1 -1
  116. package/esm/ChartsReferenceLine/common.js +4 -1
  117. package/esm/ChartsTooltip/ChartsTooltipContainer.js +26 -22
  118. package/esm/Gauge/GaugeContainer.js +4 -1
  119. package/esm/LineChart/AnimatedLine.js +7 -3
  120. package/esm/LineChart/AppearingMask.js +4 -1
  121. package/esm/LineChart/CircleMarkElement.d.ts +5 -0
  122. package/esm/LineChart/CircleMarkElement.js +13 -5
  123. package/esm/LineChart/FocusedLineMark.js +5 -1
  124. package/esm/LineChart/LineChart.js +30 -0
  125. package/esm/LineChart/LineChart.plugins.d.ts +2 -1
  126. package/esm/LineChart/LineChart.plugins.js +2 -1
  127. package/esm/LineChart/LineElement.d.ts +4 -0
  128. package/esm/LineChart/LineElement.js +7 -3
  129. package/esm/LineChart/MarkElement.d.ts +5 -0
  130. package/esm/LineChart/MarkElement.js +17 -10
  131. package/esm/LineChart/markElementClasses.d.ts +0 -1
  132. package/esm/LineChart/seriesConfig/index.js +3 -1
  133. package/esm/LineChart/seriesConfig/legend.js +1 -0
  134. package/esm/PieChart/FocusedPieArc.js +4 -1
  135. package/esm/PieChart/PieArcLabel.d.ts +2 -0
  136. package/esm/PieChart/PieArcLabel.js +5 -2
  137. package/esm/PieChart/PieChart.js +35 -5
  138. package/esm/PieChart/PieChart.plugins.d.ts +2 -1
  139. package/esm/PieChart/PieChart.plugins.js +2 -1
  140. package/esm/PieChart/seriesConfig/index.js +3 -1
  141. package/esm/PieChart/seriesConfig/legend.js +6 -3
  142. package/esm/RadarChart/RadarChart.js +30 -0
  143. package/esm/RadarChart/RadarChart.plugins.d.ts +3 -2
  144. package/esm/RadarChart/RadarChart.plugins.js +2 -1
  145. package/esm/RadarChart/seriesConfig/index.js +3 -1
  146. package/esm/RadarChart/seriesConfig/legend.js +1 -0
  147. package/esm/ScatterChart/BatchScatter.js +5 -11
  148. package/esm/ScatterChart/ScatterChart.js +30 -0
  149. package/esm/ScatterChart/ScatterChart.plugins.d.ts +2 -1
  150. package/esm/ScatterChart/ScatterChart.plugins.js +2 -1
  151. package/esm/ScatterChart/seriesConfig/index.js +3 -1
  152. package/esm/ScatterChart/seriesConfig/legend.js +1 -0
  153. package/esm/SparkLineChart/SparkLineChart.js +46 -0
  154. package/esm/index.js +1 -1
  155. package/esm/internals/appendAtKey.d.ts +8 -0
  156. package/esm/internals/appendAtKey.js +17 -0
  157. package/esm/internals/commonNextFocusItem.js +12 -8
  158. package/esm/internals/getBarDimensions.d.ts +1 -2
  159. package/esm/internals/identifierSerializer.d.ts +9 -0
  160. package/esm/internals/identifierSerializer.js +6 -0
  161. package/esm/internals/index.d.ts +6 -2
  162. package/esm/internals/index.js +6 -2
  163. package/esm/internals/invertScale.d.ts +6 -2
  164. package/esm/internals/invertScale.js +9 -1
  165. package/esm/internals/plugins/allPlugins.d.ts +4 -3
  166. package/esm/internals/plugins/allPlugins.js +2 -1
  167. package/esm/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.d.ts +14 -0
  168. package/esm/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.js +18 -0
  169. package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.js +8 -1
  170. package/esm/internals/plugins/corePlugins/useChartSeries/useChartSeries.types.d.ts +12 -1
  171. package/esm/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.d.ts +11 -0
  172. package/esm/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.js +74 -0
  173. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +20 -3
  174. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +10 -3
  175. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +4 -0
  176. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +83 -0
  177. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.d.ts +3 -0
  178. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js +6 -0
  179. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js +7 -34
  180. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.d.ts +7 -0
  181. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.js +9 -0
  182. package/esm/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js +10 -32
  183. package/esm/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.d.ts +2 -2
  184. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/index.d.ts +3 -0
  185. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/index.js +3 -0
  186. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.d.ts +4 -0
  187. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.js +5 -0
  188. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.d.ts +3 -0
  189. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js +78 -0
  190. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.d.ts +16 -0
  191. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.js +19 -0
  192. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.d.ts +90 -0
  193. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.js +1 -0
  194. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.d.ts +4 -0
  195. package/esm/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js +11 -0
  196. package/esm/internals/plugins/models/seriesConfig/identifierSerializer.types.d.ts +2 -0
  197. package/esm/internals/plugins/models/seriesConfig/identifierSerializer.types.js +1 -0
  198. package/esm/internals/plugins/models/seriesConfig/index.d.ts +2 -1
  199. package/esm/internals/plugins/models/seriesConfig/index.js +2 -1
  200. package/esm/internals/plugins/models/seriesConfig/seriesConfig.types.d.ts +7 -0
  201. package/esm/models/axis.d.ts +5 -4
  202. package/esm/models/featureFlags.d.ts +1 -0
  203. package/esm/models/featureFlags.js +1 -0
  204. package/esm/models/index.d.ts +1 -0
  205. package/esm/models/index.js +1 -0
  206. package/esm/moduleAugmentation/barChartBatchRendererOnItemClick.d.ts +13 -0
  207. package/esm/moduleAugmentation/barChartBatchRendererOnItemClick.js +1 -0
  208. package/index.js +1 -1
  209. package/internals/appendAtKey.d.ts +8 -0
  210. package/internals/appendAtKey.js +23 -0
  211. package/internals/commonNextFocusItem.js +12 -8
  212. package/internals/getBarDimensions.d.ts +1 -2
  213. package/internals/identifierSerializer.d.ts +9 -0
  214. package/internals/identifierSerializer.js +16 -0
  215. package/internals/index.d.ts +6 -2
  216. package/internals/index.js +51 -7
  217. package/internals/invertScale.d.ts +6 -2
  218. package/internals/invertScale.js +10 -1
  219. package/internals/plugins/allPlugins.d.ts +4 -3
  220. package/internals/plugins/allPlugins.js +2 -1
  221. package/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.d.ts +14 -0
  222. package/internals/plugins/corePlugins/useChartSeries/serializeIdentifier.js +25 -0
  223. package/internals/plugins/corePlugins/useChartSeries/useChartSeries.js +8 -1
  224. package/internals/plugins/corePlugins/useChartSeries/useChartSeries.types.d.ts +12 -1
  225. package/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.d.ts +11 -0
  226. package/internals/plugins/featurePlugins/shared/useRegisterPointerInteractions.js +81 -0
  227. package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +20 -3
  228. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.js +10 -3
  229. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.d.ts +4 -0
  230. package/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxisPosition.selectors.js +89 -0
  231. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.d.ts +3 -0
  232. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getMaxSeriesLength.js +12 -0
  233. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNextNonEmptySeries.js +6 -34
  234. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.d.ts +7 -0
  235. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getNonEmptySeriesArray.js +15 -0
  236. package/internals/plugins/featurePlugins/useChartKeyboardNavigation/utils/getPreviousNonEmptySeries.js +9 -32
  237. package/internals/plugins/featurePlugins/useChartTooltip/useChartTooltip.selectors.d.ts +2 -2
  238. package/internals/plugins/featurePlugins/useChartVisibilityManager/index.d.ts +3 -0
  239. package/internals/plugins/featurePlugins/useChartVisibilityManager/index.js +39 -0
  240. package/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.d.ts +4 -0
  241. package/internals/plugins/featurePlugins/useChartVisibilityManager/isIdentifierVisible.js +12 -0
  242. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.d.ts +3 -0
  243. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.js +85 -0
  244. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.d.ts +16 -0
  245. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.selectors.js +25 -0
  246. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.d.ts +90 -0
  247. package/internals/plugins/featurePlugins/useChartVisibilityManager/useChartVisibilityManager.types.js +5 -0
  248. package/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.d.ts +4 -0
  249. package/internals/plugins/featurePlugins/useChartVisibilityManager/visibilityParamToMap.js +18 -0
  250. package/internals/plugins/models/seriesConfig/identifierSerializer.types.d.ts +2 -0
  251. package/internals/plugins/models/seriesConfig/identifierSerializer.types.js +5 -0
  252. package/internals/plugins/models/seriesConfig/index.d.ts +2 -1
  253. package/internals/plugins/models/seriesConfig/index.js +11 -0
  254. package/internals/plugins/models/seriesConfig/seriesConfig.types.d.ts +7 -0
  255. package/models/axis.d.ts +5 -4
  256. package/models/featureFlags.d.ts +1 -0
  257. package/models/featureFlags.js +5 -0
  258. package/models/index.d.ts +1 -0
  259. package/models/index.js +11 -0
  260. package/moduleAugmentation/barChartBatchRendererOnItemClick.d.ts +13 -0
  261. package/moduleAugmentation/barChartBatchRendererOnItemClick.js +5 -0
  262. package/package.json +13 -3
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useChartVisibilityManager = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
11
+ var _useEffectAfterFirstRender = require("@mui/x-internals/useEffectAfterFirstRender");
12
+ var _useChartVisibilityManager = require("./useChartVisibilityManager.selectors");
13
+ var _visibilityParamToMap = require("./visibilityParamToMap");
14
+ const useChartVisibilityManager = ({
15
+ store,
16
+ params,
17
+ seriesConfig,
18
+ instance
19
+ }) => {
20
+ // Manage controlled state
21
+ (0, _useEffectAfterFirstRender.useEffectAfterFirstRender)(() => {
22
+ if (params.hiddenItems === undefined) {
23
+ return;
24
+ }
25
+ if (process.env.NODE_ENV !== 'production' && !store.state.visibilityManager.isControlled) {
26
+ console.error([`MUI X Charts: A chart component is changing the \`hiddenItems\` from uncontrolled to controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', 'Decide between using a controlled or uncontrolled for the lifetime of the component.', "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", 'More info: https://fb.me/react-controlled-components'].join('\n'));
27
+ }
28
+ store.set('visibilityManager', (0, _extends2.default)({}, store.state.visibilityManager, {
29
+ visibilityMap: (0, _visibilityParamToMap.visibilityParamToMap)(params.hiddenItems, seriesConfig)
30
+ }));
31
+ }, [store, params.hiddenItems, seriesConfig]);
32
+ const hideItem = (0, _useEventCallback.default)(identifier => {
33
+ const visibilityMap = store.state.visibilityManager.visibilityMap;
34
+ const id = instance.serializeIdentifier(identifier);
35
+ if (visibilityMap.has(id)) {
36
+ return;
37
+ }
38
+ const newVisibilityMap = new Map(visibilityMap);
39
+ newVisibilityMap.set(id, identifier);
40
+ store.set('visibilityManager', (0, _extends2.default)({}, store.state.visibilityManager, {
41
+ visibilityMap: newVisibilityMap
42
+ }));
43
+ params.onHiddenItemsChange?.(Array.from(newVisibilityMap.values()));
44
+ });
45
+ const showItem = (0, _useEventCallback.default)(identifier => {
46
+ const visibilityMap = store.state.visibilityManager.visibilityMap;
47
+ const id = instance.serializeIdentifier(identifier);
48
+ if (!visibilityMap.has(id)) {
49
+ return;
50
+ }
51
+ const newVisibilityMap = new Map(visibilityMap);
52
+ newVisibilityMap.delete(id);
53
+ store.set('visibilityManager', (0, _extends2.default)({}, store.state.visibilityManager, {
54
+ visibilityMap: newVisibilityMap
55
+ }));
56
+ params.onHiddenItemsChange?.(Array.from(newVisibilityMap.values()));
57
+ });
58
+ const toggleItem = (0, _useEventCallback.default)(identifier => {
59
+ const visibilityMap = store.state.visibilityManager.visibilityMap;
60
+ const id = instance.serializeIdentifier(identifier);
61
+ if (visibilityMap.has(id)) {
62
+ showItem(identifier);
63
+ } else {
64
+ hideItem(identifier);
65
+ }
66
+ });
67
+ return {
68
+ instance: {
69
+ hideItem,
70
+ showItem,
71
+ toggleItemVisibility: toggleItem
72
+ }
73
+ };
74
+ };
75
+ exports.useChartVisibilityManager = useChartVisibilityManager;
76
+ useChartVisibilityManager.getInitialState = (params, _, seriesConfig) => ({
77
+ visibilityManager: {
78
+ visibilityMap: params.hiddenItems ? (0, _visibilityParamToMap.visibilityParamToMap)(params.hiddenItems, seriesConfig) : _useChartVisibilityManager.EMPTY_VISIBILITY_MAP,
79
+ isControlled: params.hiddenItems !== undefined
80
+ }
81
+ });
82
+ useChartVisibilityManager.params = {
83
+ onHiddenItemsChange: true,
84
+ hiddenItems: true
85
+ };
@@ -0,0 +1,16 @@
1
+ import type { VisibilityIdentifier } from "./useChartVisibilityManager.types.js";
2
+ import type { ChartSeriesConfig } from "../../models/index.js";
3
+ import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
4
+ export declare const EMPTY_VISIBILITY_MAP: Map<any, any>;
5
+ /**
6
+ * Selector to get the hidden identifiers from the visibility manager.
7
+ */
8
+ export declare const selectorVisibilityMap: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartVisibilityManager.types.js").UseChartVisibilityManagerState> & {
9
+ cacheKey: import("../../models/index.js").ChartStateCacheKey;
10
+ }) => Map<any, any>;
11
+ /**
12
+ * Selector that returns a function which returns whether an item is visible.
13
+ */
14
+ export declare const selectorIsItemVisibleGetter: (args_0: import("../../corePlugins/useChartId/useChartId.types.js").UseChartIdState & import("../../corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types.js").UseChartExperimentalFeaturesState & import("../../corePlugins/useChartDimensions/useChartDimensions.types.js").UseChartDimensionsState & import("../../corePlugins/useChartSeries/useChartSeries.types.js").UseChartSeriesState<keyof import("../../../index.js").ChartsSeriesConfig> & import("../../corePlugins/useChartAnimation/useChartAnimation.types.js").UseChartAnimationState & import("../../../index.js").UseChartInteractionListenerState & Partial<import("./useChartVisibilityManager.types.js").UseChartVisibilityManagerState> & {
15
+ cacheKey: import("../../models/index.js").ChartStateCacheKey;
16
+ }) => (seriesConfig: ChartSeriesConfig<ChartSeriesType>, identifier: VisibilityIdentifier) => boolean;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.selectorVisibilityMap = exports.selectorIsItemVisibleGetter = exports.EMPTY_VISIBILITY_MAP = void 0;
7
+ var _store = require("@mui/x-internals/store");
8
+ var _isIdentifierVisible = require("./isIdentifierVisible");
9
+ /**
10
+ * Selector to get the visibility manager state.
11
+ */
12
+ const selectVisibilityManager = state => state.visibilityManager;
13
+ const EMPTY_VISIBILITY_MAP = exports.EMPTY_VISIBILITY_MAP = new Map();
14
+
15
+ /**
16
+ * Selector to get the hidden identifiers from the visibility manager.
17
+ */
18
+ const selectorVisibilityMap = exports.selectorVisibilityMap = (0, _store.createSelector)(selectVisibilityManager, visibilityManager => visibilityManager?.visibilityMap ?? EMPTY_VISIBILITY_MAP);
19
+
20
+ /**
21
+ * Selector that returns a function which returns whether an item is visible.
22
+ */
23
+ const selectorIsItemVisibleGetter = exports.selectorIsItemVisibleGetter = (0, _store.createSelectorMemoized)(selectorVisibilityMap, visibilityMap => {
24
+ return (seriesConfig, identifier) => (0, _isIdentifierVisible.isIdentifierVisible)(visibilityMap, identifier, seriesConfig);
25
+ });
@@ -0,0 +1,90 @@
1
+ import { type ChartPluginSignature } from "../../models/index.js";
2
+ import { type UseChartSeriesSignature } from "../../corePlugins/useChartSeries/index.js";
3
+ import { type SeriesItemIdentifier } from "../../../../models/index.js";
4
+ import { type ChartSeriesType } from "../../../../models/seriesType/config.js";
5
+ export type VisibilityIdentifier<T extends ChartSeriesType = ChartSeriesType> = Partial<SeriesItemIdentifier<T>> & (SeriesItemIdentifier<T> extends {
6
+ subType?: infer U;
7
+ } ? {
8
+ type: T;
9
+ subType: U;
10
+ } : {
11
+ type: T;
12
+ });
13
+ export type VisibilityMap = Map<string, VisibilityIdentifier>;
14
+ export type IsItemVisibleFunction = {
15
+ /**
16
+ * Function to check if an item is visible based on its identifier.
17
+ *
18
+ * @param {VisibilityIdentifier} identifier The identifier of the item to check.
19
+ * @returns {boolean} Whether the item is visible.
20
+ */
21
+ (identifier: VisibilityIdentifier): boolean;
22
+ };
23
+ export interface UseChartVisibilityManagerInstance<T extends ChartSeriesType> {
24
+ /**
25
+ * Hide an item by its identifier.
26
+ *
27
+ * @param {VisibilityIdentifier} identifier The identifier of the item to hide.
28
+ */
29
+ hideItem(identifier: VisibilityIdentifier<T>): void;
30
+ /**
31
+ * Show an item by its identifier.
32
+ *
33
+ * @param {VisibilityIdentifier} identifier The identifier of the item to show.
34
+ */
35
+ showItem(identifier: VisibilityIdentifier<T>): void;
36
+ /**
37
+ * Toggle the visibility of an item by its identifier.
38
+ *
39
+ * @param {VisibilityIdentifier} identifier The identifier of the item to toggle.
40
+ */
41
+ toggleItemVisibility(identifier: VisibilityIdentifier<T>): void;
42
+ }
43
+ export interface UseChartVisibilityManagerParameters<T extends ChartSeriesType> {
44
+ /**
45
+ * Callback fired when any hidden identifiers change.
46
+ * @param {VisibilityIdentifier[]} hiddenItems The new list of hidden identifiers.
47
+ */
48
+ onHiddenItemsChange?: (hiddenItems: VisibilityIdentifier<T>[]) => void;
49
+ /**
50
+ * List of hidden series and/or items.
51
+ *
52
+ * Different chart types use different keys.
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * [
57
+ * {
58
+ * type: 'pie',
59
+ * seriesId: 'series-1',
60
+ * dataIndex: 3,
61
+ * },
62
+ * {
63
+ * type: 'line',
64
+ * seriesId: 'series-2',
65
+ * }
66
+ * ]
67
+ * ```
68
+ */
69
+ hiddenItems?: VisibilityIdentifier<T>[];
70
+ }
71
+ export type UseChartVisibilityManagerDefaultizedParameters<T extends ChartSeriesType> = UseChartVisibilityManagerParameters<T>;
72
+ export interface UseChartVisibilityManagerState {
73
+ visibilityManager: {
74
+ /**
75
+ * Map of hidden identifiers by their serialized form.
76
+ */
77
+ visibilityMap: VisibilityMap;
78
+ /**
79
+ * Internal information to know if the user controls the state or not.
80
+ */
81
+ isControlled: boolean;
82
+ };
83
+ }
84
+ export type UseChartVisibilityManagerSignature<T extends ChartSeriesType = ChartSeriesType> = ChartPluginSignature<{
85
+ instance: UseChartVisibilityManagerInstance<T>;
86
+ state: UseChartVisibilityManagerState;
87
+ params: UseChartVisibilityManagerParameters<T>;
88
+ defaultizedParams: UseChartVisibilityManagerDefaultizedParameters<T>;
89
+ dependencies: [UseChartSeriesSignature];
90
+ }>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,4 @@
1
+ import type { ChartSeriesType } from "../../../../models/seriesType/config.js";
2
+ import type { ChartSeriesConfig } from "../../models/index.js";
3
+ import type { VisibilityIdentifier, VisibilityMap } from "./useChartVisibilityManager.types.js";
4
+ export declare const visibilityParamToMap: (hiddenItems: VisibilityIdentifier[] | undefined, seriesConfig: ChartSeriesConfig<ChartSeriesType>) => VisibilityMap;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.visibilityParamToMap = void 0;
7
+ var _serializeIdentifier = require("../../corePlugins/useChartSeries/serializeIdentifier");
8
+ const visibilityParamToMap = (hiddenItems, seriesConfig) => {
9
+ const visibilityMap = new Map();
10
+ if (hiddenItems) {
11
+ hiddenItems.forEach(identifier => {
12
+ const uniqueId = (0, _serializeIdentifier.serializeIdentifier)(seriesConfig, identifier);
13
+ visibilityMap.set(uniqueId, identifier);
14
+ });
15
+ }
16
+ return visibilityMap;
17
+ };
18
+ exports.visibilityParamToMap = visibilityParamToMap;
@@ -0,0 +1,2 @@
1
+ import type { ChartSeriesType, ChartsSeriesConfig } from "../../../../models/seriesType/config.js";
2
+ export type IdentifierSerializer<TSeriesType extends ChartSeriesType> = (identifier: ChartsSeriesConfig[TSeriesType]['itemIdentifier']) => string;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -7,4 +7,5 @@ export * from "./seriesLayout.types.js";
7
7
  export * from "./tooltipGetter.types.js";
8
8
  export * from "./tooltipItemPositionGetter.types.js";
9
9
  export * from "./legendGetter.types.js";
10
- export * from "./getSeriesWithDefaultValues.types.js";
10
+ export * from "./getSeriesWithDefaultValues.types.js";
11
+ export * from "./identifierSerializer.types.js";
@@ -112,4 +112,15 @@ Object.keys(_getSeriesWithDefaultValues).forEach(function (key) {
112
112
  return _getSeriesWithDefaultValues[key];
113
113
  }
114
114
  });
115
+ });
116
+ var _identifierSerializer = require("./identifierSerializer.types");
117
+ Object.keys(_identifierSerializer).forEach(function (key) {
118
+ if (key === "default" || key === "__esModule") return;
119
+ if (key in exports && exports[key] === _identifierSerializer[key]) return;
120
+ Object.defineProperty(exports, key, {
121
+ enumerable: true,
122
+ get: function () {
123
+ return _identifierSerializer[key];
124
+ }
125
+ });
115
126
  });
@@ -9,6 +9,7 @@ import { type GetSeriesWithDefaultValues } from "./getSeriesWithDefaultValues.ty
9
9
  import { type TooltipItemPositionGetter } from "./tooltipItemPositionGetter.types.js";
10
10
  import { type SeriesLayoutGetter } from "./seriesLayout.types.js";
11
11
  import { type KeyboardFocusHandler } from "../../featurePlugins/useChartKeyboardNavigation/keyboardFocusHandler.types.js";
12
+ import { type IdentifierSerializer } from "./identifierSerializer.types.js";
12
13
  export type ChartSeriesTypeConfig<TSeriesType extends ChartSeriesType> = {
13
14
  seriesProcessor: SeriesProcessor<TSeriesType>;
14
15
  /**
@@ -21,6 +22,12 @@ export type ChartSeriesTypeConfig<TSeriesType extends ChartSeriesType> = {
21
22
  tooltipItemPositionGetter?: TooltipItemPositionGetter<TSeriesType>;
22
23
  getSeriesWithDefaultValues: GetSeriesWithDefaultValues<TSeriesType>;
23
24
  keyboardFocusHandler?: KeyboardFocusHandler<TSeriesType>;
25
+ /**
26
+ * A function to serialize the series item identifier into a unique string.
27
+ * @param {ChartsSeriesConfig[TSeriesType]['itemIdentifier']} identifier The series item identifier.
28
+ * @returns {string} A unique string representation of the identifier.
29
+ */
30
+ identifierSerializer: IdentifierSerializer<TSeriesType>;
24
31
  } & (TSeriesType extends CartesianChartSeriesType ? {
25
32
  xExtremumGetter: CartesianExtremumGetter<TSeriesType>;
26
33
  yExtremumGetter: CartesianExtremumGetter<TSeriesType>;
package/models/axis.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import type { ScaleBand, ScaleLinear, ScaleLogarithmic, ScaleOrdinal, ScalePoint, ScalePower, ScaleSequential, ScaleThreshold, ScaleTime, ScaleSymLog, NumberValue } from '@mui/x-charts-vendor/d3-scale';
2
2
  import { type SxProps } from '@mui/system/styleFunctionSx';
3
- import { type MakeOptional, type MakeRequired } from '@mui/x-internals/types';
3
+ import { type HasProperty, type MakeOptional, type MakeRequired } from '@mui/x-internals/types';
4
4
  import type { DefaultizedZoomOptions } from "../internals/plugins/featurePlugins/useChartCartesianAxis/index.js";
5
5
  import { type ChartsAxisClasses } from "../ChartsAxis/axisClasses.js";
6
6
  import type { TickParams } from "../hooks/useTicks.js";
7
7
  import type { ChartsTextProps } from "../ChartsText/index.js";
8
8
  import type { ContinuousColorConfig, OrdinalColorConfig, PiecewiseColorConfig } from "./colorMapping.js";
9
9
  import type { OrdinalTimeTicks } from "./timeTicks.js";
10
+ import { type ChartsTypeFeatureFlags } from "./featureFlags.js";
10
11
  export type AxisId = string | number;
11
12
  export type D3Scale<Domain extends {
12
13
  toString(): string;
@@ -133,7 +134,7 @@ type AxisSideConfig<AxisProps extends ChartsAxisProps> = AxisProps extends Chart
133
134
  position?: 'top' | 'bottom' | 'none';
134
135
  /**
135
136
  * The height of the axis.
136
- * @default 30
137
+ * @default 45 if an axis label is provided, 25 otherwise.
137
138
  */
138
139
  height?: number;
139
140
  } : AxisProps extends ChartsYAxisProps ? {
@@ -149,7 +150,7 @@ type AxisSideConfig<AxisProps extends ChartsAxisProps> = AxisProps extends Chart
149
150
  position?: 'left' | 'right' | 'none';
150
151
  /**
151
152
  * The width of the axis.
152
- * @default 30
153
+ * @default 65 if an axis label is provided, 45 otherwise.
153
154
  */
154
155
  width?: number;
155
156
  } : {
@@ -521,7 +522,7 @@ export interface ChartsAxisData {
521
522
  /**
522
523
  * The mapping of series ids to their value for this particular axis index.
523
524
  */
524
- seriesValues: Record<string, number | null | undefined>;
525
+ seriesValues: Record<string, HasProperty<ChartsTypeFeatureFlags, 'seriesValueOverride'> extends true ? ChartsTypeFeatureFlags['seriesValuesOverride'] : number | null | undefined>;
525
526
  }
526
527
  export type CartesianDirection = 'x' | 'y';
527
528
  export type PolarDirection = 'rotation' | 'radius';
@@ -0,0 +1 @@
1
+ export interface ChartsTypeFeatureFlags {}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/models/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./seriesType/index.js";
2
2
  export * from "./stacking.js";
3
3
  export * from "./slots/index.js";
4
+ export * from "./featureFlags.js";
4
5
  export type { AxisConfig, ChartsYAxisProps, ChartsXAxisProps, ScaleName, ContinuousScaleName, ChartsAxisData, XAxis, YAxis, RadiusAxis, RotationAxis, AxisItemIdentifier, AxisValueFormatterContext } from "./axis.js";
5
6
  export type { PropsFromSlot } from '@mui/x-internals/slots';
6
7
  export type { Position } from "./position.js";
package/models/index.js CHANGED
@@ -35,4 +35,15 @@ Object.keys(_slots).forEach(function (key) {
35
35
  return _slots[key];
36
36
  }
37
37
  });
38
+ });
39
+ var _featureFlags = require("./featureFlags");
40
+ Object.keys(_featureFlags).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _featureFlags[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _featureFlags[key];
47
+ }
48
+ });
38
49
  });
@@ -0,0 +1,13 @@
1
+ import type * as React from 'react';
2
+ import type { BarItemIdentifier } from "../models/index.js";
3
+ declare module '@mui/x-charts/BarChart' {
4
+ interface BarPlotProps {
5
+ /**
6
+ * Callback fired when a bar item is clicked.
7
+ * @param {MouseEvent | React.MouseEvent<SVGElement, MouseEvent>} event The event source of the callback.
8
+ * It is a native MouseEvent for `svg-batch` renderer and a React MouseEvent for `svg-single` renderer.
9
+ * @param {BarItemIdentifier} barItemIdentifier The bar item identifier.
10
+ */
11
+ onItemClick?(event: MouseEvent | React.MouseEvent<SVGElement, MouseEvent>, barItemIdentifier: BarItemIdentifier): void;
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-charts",
3
- "version": "8.23.0",
3
+ "version": "8.24.0",
4
4
  "author": "MUI Team",
5
5
  "description": "The community edition of MUI X Charts components.",
6
6
  "license": "MIT",
@@ -35,8 +35,8 @@
35
35
  "reselect": "^5.1.1",
36
36
  "use-sync-external-store": "^1.6.0",
37
37
  "@mui/x-charts-vendor": "8.23.0",
38
- "@mui/x-internals": "8.23.0",
39
- "@mui/x-internal-gestures": "0.4.0"
38
+ "@mui/x-internal-gestures": "0.4.0",
39
+ "@mui/x-internals": "8.24.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@emotion/react": "^11.9.0",
@@ -82,6 +82,16 @@
82
82
  "default": "./esm/*/index.js"
83
83
  }
84
84
  },
85
+ "./moduleAugmentation/*": {
86
+ "require": {
87
+ "types": "./moduleAugmentation/*.d.ts",
88
+ "default": "./moduleAugmentation/*.js"
89
+ },
90
+ "default": {
91
+ "types": "./esm/moduleAugmentation/*.d.ts",
92
+ "default": "./esm/moduleAugmentation/*.js"
93
+ }
94
+ },
85
95
  "./esm": null
86
96
  }
87
97
  }