@mui/x-charts 7.4.0 → 7.5.1

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 (230) hide show
  1. package/BarChart/BarChart.js +24 -13
  2. package/BarChart/BarElement.d.ts +10 -5
  3. package/BarChart/BarElement.js +4 -3
  4. package/BarChart/BarLabel/BarLabel.d.ts +1342 -0
  5. package/BarChart/BarLabel/BarLabel.js +60 -0
  6. package/BarChart/BarLabel/BarLabel.types.d.ts +39 -0
  7. package/BarChart/BarLabel/BarLabel.types.js +5 -0
  8. package/BarChart/BarLabel/BarLabelItem.d.ts +53 -0
  9. package/BarChart/BarLabel/BarLabelItem.js +138 -0
  10. package/BarChart/BarLabel/BarLabelPlot.d.ts +16 -0
  11. package/BarChart/BarLabel/BarLabelPlot.js +110 -0
  12. package/BarChart/BarLabel/barLabelClasses.d.ts +13 -0
  13. package/BarChart/BarLabel/barLabelClasses.js +29 -0
  14. package/BarChart/BarLabel/getBarLabel.d.ts +10 -0
  15. package/BarChart/BarLabel/getBarLabel.js +31 -0
  16. package/BarChart/BarLabel/index.d.ts +6 -0
  17. package/BarChart/BarLabel/index.js +25 -0
  18. package/BarChart/BarPlot.d.ts +15 -4
  19. package/BarChart/BarPlot.js +18 -4
  20. package/BarChart/index.d.ts +1 -0
  21. package/BarChart/index.js +11 -0
  22. package/BarChart/legend.js +13 -6
  23. package/CHANGELOG.md +132 -5395
  24. package/ChartContainer/ChartContainer.js +11 -11
  25. package/ChartsAxis/ChartsAxis.js +1 -1
  26. package/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  27. package/ChartsClipPath/ChartsClipPath.js +1 -1
  28. package/ChartsGrid/ChartsGrid.js +1 -1
  29. package/ChartsLegend/ChartsLegend.js +1 -1
  30. package/ChartsLegend/DefaultChartsLegend.js +1 -1
  31. package/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
  32. package/ChartsOverlay/ChartsLoadingOverlay.js +3 -3
  33. package/ChartsOverlay/ChartsNoDataOverlay.js +2 -2
  34. package/ChartsOverlay/ChartsOverlay.d.ts +9 -0
  35. package/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
  36. package/ChartsSurface.js +1 -1
  37. package/ChartsText/ChartsText.js +1 -1
  38. package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  39. package/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
  40. package/ChartsTooltip/ChartsTooltip.js +1 -1
  41. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -3
  42. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +8 -4
  43. package/ChartsTooltip/utils.js +13 -8
  44. package/ChartsVoronoiHandler/ChartsVoronoiHandler.js +1 -1
  45. package/ChartsXAxis/ChartsXAxis.js +2 -3
  46. package/ChartsYAxis/ChartsYAxis.js +3 -3
  47. package/Gauge/Gauge.js +1 -1
  48. package/Gauge/GaugeContainer.js +1 -1
  49. package/Gauge/GaugeValueText.js +1 -1
  50. package/LineChart/AnimatedArea.js +1 -1
  51. package/LineChart/AnimatedLine.js +1 -1
  52. package/LineChart/AreaElement.d.ts +1 -1
  53. package/LineChart/AreaElement.js +4 -4
  54. package/LineChart/AreaPlot.js +4 -3
  55. package/LineChart/LineChart.js +12 -11
  56. package/LineChart/LineElement.d.ts +1 -1
  57. package/LineChart/LineElement.js +4 -4
  58. package/LineChart/LineHighlightElement.d.ts +1 -1
  59. package/LineChart/LineHighlightElement.js +1 -1
  60. package/LineChart/LineHighlightPlot.js +1 -1
  61. package/LineChart/LinePlot.js +1 -1
  62. package/LineChart/MarkElement.d.ts +1 -1
  63. package/LineChart/MarkElement.js +1 -16
  64. package/LineChart/MarkPlot.js +1 -1
  65. package/LineChart/legend.js +13 -6
  66. package/PieChart/PieArc.d.ts +1 -1
  67. package/PieChart/PieArc.js +1 -1
  68. package/PieChart/PieArcLabel.d.ts +1 -1
  69. package/PieChart/PieArcLabel.js +4 -2
  70. package/PieChart/PieArcLabelPlot.js +15 -6
  71. package/PieChart/PieArcPlot.js +2 -2
  72. package/PieChart/PieChart.js +12 -11
  73. package/PieChart/PiePlot.js +1 -1
  74. package/PieChart/formatter.js +4 -1
  75. package/PieChart/legend.js +15 -5
  76. package/ResponsiveChartContainer/ResponsiveChartContainer.js +11 -11
  77. package/ScatterChart/Scatter.js +1 -1
  78. package/ScatterChart/ScatterChart.js +17 -16
  79. package/ScatterChart/ScatterPlot.js +1 -1
  80. package/ScatterChart/legend.js +13 -6
  81. package/SparkLineChart/SparkLineChart.d.ts +1 -1
  82. package/SparkLineChart/SparkLineChart.js +6 -6
  83. package/context/ZAxisContextProvider.js +6 -6
  84. package/esm/BarChart/BarChart.js +24 -13
  85. package/esm/BarChart/BarElement.js +4 -3
  86. package/esm/BarChart/BarLabel/BarLabel.js +51 -0
  87. package/esm/BarChart/BarLabel/BarLabel.types.js +1 -0
  88. package/esm/BarChart/BarLabel/BarLabelItem.js +130 -0
  89. package/esm/BarChart/BarLabel/BarLabelPlot.js +102 -0
  90. package/esm/BarChart/BarLabel/barLabelClasses.js +19 -0
  91. package/esm/BarChart/BarLabel/getBarLabel.js +24 -0
  92. package/esm/BarChart/BarLabel/index.js +2 -0
  93. package/esm/BarChart/BarPlot.js +18 -4
  94. package/esm/BarChart/index.js +2 -1
  95. package/esm/BarChart/legend.js +13 -6
  96. package/esm/ChartContainer/ChartContainer.js +11 -11
  97. package/esm/ChartsAxis/ChartsAxis.js +1 -1
  98. package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  99. package/esm/ChartsClipPath/ChartsClipPath.js +1 -1
  100. package/esm/ChartsGrid/ChartsGrid.js +1 -1
  101. package/esm/ChartsLegend/ChartsLegend.js +1 -1
  102. package/esm/ChartsLegend/DefaultChartsLegend.js +1 -1
  103. package/esm/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
  104. package/esm/ChartsOverlay/ChartsLoadingOverlay.js +3 -3
  105. package/esm/ChartsOverlay/ChartsNoDataOverlay.js +2 -2
  106. package/esm/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
  107. package/esm/ChartsSurface.js +1 -1
  108. package/esm/ChartsText/ChartsText.js +1 -1
  109. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  110. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
  111. package/esm/ChartsTooltip/ChartsTooltip.js +1 -1
  112. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -3
  113. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +8 -4
  114. package/esm/ChartsTooltip/utils.js +13 -8
  115. package/esm/ChartsVoronoiHandler/ChartsVoronoiHandler.js +1 -1
  116. package/esm/ChartsXAxis/ChartsXAxis.js +2 -3
  117. package/esm/ChartsYAxis/ChartsYAxis.js +3 -3
  118. package/esm/Gauge/Gauge.js +1 -1
  119. package/esm/Gauge/GaugeContainer.js +1 -1
  120. package/esm/Gauge/GaugeValueText.js +1 -1
  121. package/esm/LineChart/AnimatedArea.js +1 -1
  122. package/esm/LineChart/AnimatedLine.js +1 -1
  123. package/esm/LineChart/AreaElement.js +4 -4
  124. package/esm/LineChart/AreaPlot.js +4 -3
  125. package/esm/LineChart/LineChart.js +12 -11
  126. package/esm/LineChart/LineElement.js +4 -4
  127. package/esm/LineChart/LineHighlightElement.js +1 -1
  128. package/esm/LineChart/LineHighlightPlot.js +1 -1
  129. package/esm/LineChart/LinePlot.js +1 -1
  130. package/esm/LineChart/MarkElement.js +1 -16
  131. package/esm/LineChart/MarkPlot.js +1 -1
  132. package/esm/LineChart/legend.js +13 -6
  133. package/esm/PieChart/PieArc.js +1 -1
  134. package/esm/PieChart/PieArcLabel.js +4 -2
  135. package/esm/PieChart/PieArcLabelPlot.js +15 -6
  136. package/esm/PieChart/PieArcPlot.js +2 -2
  137. package/esm/PieChart/PieChart.js +12 -11
  138. package/esm/PieChart/PiePlot.js +1 -1
  139. package/esm/PieChart/formatter.js +4 -1
  140. package/esm/PieChart/legend.js +15 -5
  141. package/esm/ResponsiveChartContainer/ResponsiveChartContainer.js +11 -11
  142. package/esm/ScatterChart/Scatter.js +1 -1
  143. package/esm/ScatterChart/ScatterChart.js +17 -16
  144. package/esm/ScatterChart/ScatterPlot.js +1 -1
  145. package/esm/ScatterChart/legend.js +13 -6
  146. package/esm/SparkLineChart/SparkLineChart.js +6 -6
  147. package/esm/context/ZAxisContextProvider.js +6 -6
  148. package/esm/hooks/useAxisEvents.js +12 -7
  149. package/esm/internals/getLabel.js +3 -0
  150. package/hooks/useAxisEvents.js +12 -7
  151. package/index.js +1 -1
  152. package/internals/defaultizeColor.d.ts +7 -5
  153. package/internals/getLabel.d.ts +1 -0
  154. package/internals/getLabel.js +9 -0
  155. package/internals/utils.d.ts +1 -1
  156. package/models/seriesType/bar.d.ts +4 -1
  157. package/models/seriesType/line.d.ts +4 -1
  158. package/models/seriesType/pie.d.ts +9 -4
  159. package/models/seriesType/scatter.d.ts +4 -1
  160. package/modern/BarChart/BarChart.js +24 -13
  161. package/modern/BarChart/BarElement.js +4 -3
  162. package/modern/BarChart/BarLabel/BarLabel.js +51 -0
  163. package/modern/BarChart/BarLabel/BarLabel.types.js +1 -0
  164. package/modern/BarChart/BarLabel/BarLabelItem.js +130 -0
  165. package/modern/BarChart/BarLabel/BarLabelPlot.js +102 -0
  166. package/modern/BarChart/BarLabel/barLabelClasses.js +19 -0
  167. package/modern/BarChart/BarLabel/getBarLabel.js +24 -0
  168. package/modern/BarChart/BarLabel/index.js +2 -0
  169. package/modern/BarChart/BarPlot.js +18 -4
  170. package/modern/BarChart/index.js +2 -1
  171. package/modern/BarChart/legend.js +13 -6
  172. package/modern/ChartContainer/ChartContainer.js +11 -11
  173. package/modern/ChartsAxis/ChartsAxis.js +1 -1
  174. package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +1 -1
  175. package/modern/ChartsClipPath/ChartsClipPath.js +1 -1
  176. package/modern/ChartsGrid/ChartsGrid.js +1 -1
  177. package/modern/ChartsLegend/ChartsLegend.js +1 -1
  178. package/modern/ChartsLegend/DefaultChartsLegend.js +1 -1
  179. package/modern/ChartsOnAxisClickHandler/ChartsOnAxisClickHandler.js +1 -1
  180. package/modern/ChartsOverlay/ChartsLoadingOverlay.js +3 -3
  181. package/modern/ChartsOverlay/ChartsNoDataOverlay.js +2 -2
  182. package/modern/ChartsReferenceLine/ChartsReferenceLine.js +1 -1
  183. package/modern/ChartsSurface.js +1 -1
  184. package/modern/ChartsText/ChartsText.js +1 -1
  185. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  186. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +1 -1
  187. package/modern/ChartsTooltip/ChartsTooltip.js +1 -1
  188. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +5 -3
  189. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +8 -4
  190. package/modern/ChartsTooltip/utils.js +13 -8
  191. package/modern/ChartsVoronoiHandler/ChartsVoronoiHandler.js +1 -1
  192. package/modern/ChartsXAxis/ChartsXAxis.js +2 -3
  193. package/modern/ChartsYAxis/ChartsYAxis.js +3 -3
  194. package/modern/Gauge/Gauge.js +1 -1
  195. package/modern/Gauge/GaugeContainer.js +1 -1
  196. package/modern/Gauge/GaugeValueText.js +1 -1
  197. package/modern/LineChart/AnimatedArea.js +1 -1
  198. package/modern/LineChart/AnimatedLine.js +1 -1
  199. package/modern/LineChart/AreaElement.js +4 -4
  200. package/modern/LineChart/AreaPlot.js +4 -3
  201. package/modern/LineChart/LineChart.js +12 -11
  202. package/modern/LineChart/LineElement.js +4 -4
  203. package/modern/LineChart/LineHighlightElement.js +1 -1
  204. package/modern/LineChart/LineHighlightPlot.js +1 -1
  205. package/modern/LineChart/LinePlot.js +1 -1
  206. package/modern/LineChart/MarkElement.js +1 -16
  207. package/modern/LineChart/MarkPlot.js +1 -1
  208. package/modern/LineChart/legend.js +13 -6
  209. package/modern/PieChart/PieArc.js +1 -1
  210. package/modern/PieChart/PieArcLabel.js +4 -2
  211. package/modern/PieChart/PieArcLabelPlot.js +15 -6
  212. package/modern/PieChart/PieArcPlot.js +2 -2
  213. package/modern/PieChart/PieChart.js +12 -11
  214. package/modern/PieChart/PiePlot.js +1 -1
  215. package/modern/PieChart/formatter.js +4 -1
  216. package/modern/PieChart/legend.js +15 -5
  217. package/modern/ResponsiveChartContainer/ResponsiveChartContainer.js +11 -11
  218. package/modern/ScatterChart/Scatter.js +1 -1
  219. package/modern/ScatterChart/ScatterChart.js +17 -16
  220. package/modern/ScatterChart/ScatterPlot.js +1 -1
  221. package/modern/ScatterChart/legend.js +13 -6
  222. package/modern/SparkLineChart/SparkLineChart.js +6 -6
  223. package/modern/context/ZAxisContextProvider.js +6 -6
  224. package/modern/hooks/useAxisEvents.js +12 -7
  225. package/modern/index.js +1 -1
  226. package/modern/internals/getLabel.js +3 -0
  227. package/package.json +2 -2
  228. package/themeAugmentation/components.d.ts +4 -0
  229. package/themeAugmentation/overrides.d.ts +3 -0
  230. package/themeAugmentation/props.d.ts +2 -0
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-charts v7.4.0
2
+ * @mui/x-charts v7.5.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -2,7 +2,7 @@ import { AllSeriesType } from '../models/seriesType';
2
2
  export declare function defaultizeColor(series: AllSeriesType, seriesIndex: number, colors?: string[]): {
3
3
  data: {
4
4
  color: string;
5
- label?: string | undefined;
5
+ label?: string | ((location: "tooltip" | "legend" | "arc") => string) | undefined;
6
6
  value: number;
7
7
  id?: import("../models/seriesType").PieItemId | undefined;
8
8
  }[];
@@ -15,7 +15,9 @@ export declare function defaultizeColor(series: AllSeriesType, seriesIndex: numb
15
15
  endAngle?: number | undefined;
16
16
  paddingAngle?: number | undefined;
17
17
  sortingValues?: import("../models/seriesType").ChartsPieSorting | undefined;
18
- arcLabel?: "label" | "value" | "formattedValue" | ((item: import("../models/seriesType").DefaultizedPieValueType) => string) | undefined;
18
+ arcLabel?: "label" | "value" | "formattedValue" | ((item: Omit<import("../models/seriesType").DefaultizedPieValueType, "label"> & {
19
+ label?: string | undefined;
20
+ }) => string) | undefined;
19
21
  arcLabelMinAngle?: number | undefined;
20
22
  cx?: string | number | undefined;
21
23
  cy?: string | number | undefined;
@@ -45,7 +47,7 @@ export declare function defaultizeColor(series: AllSeriesType, seriesIndex: numb
45
47
  type: "bar";
46
48
  data?: (number | null)[] | undefined;
47
49
  dataKey?: string | undefined;
48
- label?: string | undefined;
50
+ label?: string | ((location: "tooltip" | "legend") => string) | undefined;
49
51
  layout?: "horizontal" | "vertical" | undefined;
50
52
  stackOffset?: import("..").StackOffsetType | undefined;
51
53
  id?: import("../models/seriesType/common").SeriesId | undefined;
@@ -60,7 +62,7 @@ export declare function defaultizeColor(series: AllSeriesType, seriesIndex: numb
60
62
  type: "scatter";
61
63
  data: import("../models/seriesType").ScatterValueType[];
62
64
  markerSize?: number | undefined;
63
- label?: string | undefined;
65
+ label?: string | ((location: "tooltip" | "legend") => string) | undefined;
64
66
  disableHover?: boolean | undefined;
65
67
  zAxisKey?: string | undefined;
66
68
  id?: import("../models/seriesType/common").SeriesId | undefined;
@@ -75,7 +77,7 @@ export declare function defaultizeColor(series: AllSeriesType, seriesIndex: numb
75
77
  dataKey?: string | undefined;
76
78
  stack?: string | undefined;
77
79
  area?: boolean | undefined;
78
- label?: string | undefined;
80
+ label?: string | ((location: "tooltip" | "legend") => string) | undefined;
79
81
  curve?: import("../models/seriesType").CurveType | undefined;
80
82
  showMark?: boolean | ((params: import("../models/seriesType").ShowMarkParams<number | Date>) => boolean) | undefined;
81
83
  disableHighlight?: boolean | undefined;
@@ -0,0 +1 @@
1
+ export declare function getLabel<Location extends string>(value: string | ((location: Location) => string) | undefined, location: Location): string | undefined;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLabel = getLabel;
7
+ function getLabel(value, location) {
8
+ return typeof value === 'function' ? value(location) : value;
9
+ }
@@ -9,7 +9,7 @@ export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U,
9
9
  * @param svg The SVG element
10
10
  * @param event The mouseEvent to transform
11
11
  */
12
- export declare function getSVGPoint(svg: SVGSVGElement, event: MouseEvent): DOMPoint;
12
+ export declare function getSVGPoint(svg: SVGSVGElement, event: Pick<MouseEvent, 'clientX' | 'clientY'>): DOMPoint;
13
13
  /**
14
14
  * Helper that converts values and percentages into values.
15
15
  * @param value The value provided by the developer. Can either be a number or a string with '%' or 'px'.
@@ -11,7 +11,10 @@ export interface BarSeriesType extends CommonSeriesType<number | null>, Cartesia
11
11
  * The key used to retrieve data from the dataset.
12
12
  */
13
13
  dataKey?: string;
14
- label?: string;
14
+ /**
15
+ * The label to display on the tooltip or the legend. It can be a string or a function.
16
+ */
17
+ label?: string | ((location: 'tooltip' | 'legend') => string);
15
18
  /**
16
19
  * Layout of the bars. All bar should have the same layout.
17
20
  * @default 'vertical'
@@ -36,7 +36,10 @@ export interface LineSeriesType extends CommonSeriesType<number | null>, Cartesi
36
36
  dataKey?: string;
37
37
  stack?: string;
38
38
  area?: boolean;
39
- label?: string;
39
+ /**
40
+ * The label to display on the tooltip or the legend. It can be a string or a function.
41
+ */
42
+ label?: string | ((location: 'tooltip' | 'legend') => string);
40
43
  curve?: CurveType;
41
44
  /**
42
45
  * Define which items of the series should display a mark.
@@ -8,7 +8,10 @@ export type PieValueType = {
8
8
  */
9
9
  id: PieItemId;
10
10
  value: number;
11
- label?: string;
11
+ /**
12
+ * The label to display on the tooltip, arc, or the legend. It can be a string or a function.
13
+ */
14
+ label?: string | ((location: 'tooltip' | 'legend' | 'arc') => string);
12
15
  color?: string;
13
16
  };
14
17
  export type DefaultizedPieValueType = PieValueType & Omit<D3PieArcDatum<any>, 'data'> & {
@@ -16,9 +19,9 @@ export type DefaultizedPieValueType = PieValueType & Omit<D3PieArcDatum<any>, 'd
16
19
  formattedValue: string;
17
20
  };
18
21
  export type ChartsPieSorting = 'none' | 'asc' | 'desc' | ((a: number, b: number) => number);
19
- export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Tdata> {
22
+ export interface PieSeriesType<TData = PieValueType> extends CommonSeriesType<TData> {
20
23
  type: 'pie';
21
- data: Tdata[];
24
+ data: TData[];
22
25
  /**
23
26
  * The radius between circle center and the beginning of the arc.
24
27
  * Can be a number (in px) or a string with a percentage such as '50%'.
@@ -69,7 +72,9 @@ export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Td
69
72
  /**
70
73
  * The label displayed into the arc.
71
74
  */
72
- arcLabel?: 'formattedValue' | 'label' | 'value' | ((item: DefaultizedPieValueType) => string);
75
+ arcLabel?: 'formattedValue' | 'label' | 'value' | ((item: Omit<DefaultizedPieValueType, 'label'> & {
76
+ label?: string;
77
+ }) => string);
73
78
  /**
74
79
  * The minimal angle required to display the arc label.
75
80
  * @default 0
@@ -13,7 +13,10 @@ export interface ScatterSeriesType extends CommonSeriesType<ScatterValueType>, C
13
13
  type: 'scatter';
14
14
  data: ScatterValueType[];
15
15
  markerSize?: number;
16
- label?: string;
16
+ /**
17
+ * The label to display on the tooltip or the legend. It can be a string or a function.
18
+ */
19
+ label?: string | ((location: 'tooltip' | 'legend') => string);
17
20
  /**
18
21
  * If true, the interaction will not use element hover for this series.
19
22
  * @default false
@@ -52,7 +52,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
52
52
  children,
53
53
  slots,
54
54
  slotProps,
55
- loading
55
+ loading,
56
+ barLabel
56
57
  } = props;
57
58
  const id = useId();
58
59
  const clipPathId = `${id}-clip-path`;
@@ -100,7 +101,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
100
101
  slotProps: slotProps,
101
102
  skipAnimation: skipAnimation,
102
103
  onItemClick: onItemClick,
103
- borderRadius: borderRadius
104
+ borderRadius: borderRadius,
105
+ barLabel: barLabel
104
106
  }), /*#__PURE__*/_jsx(ChartsOverlay, {
105
107
  loading: loading,
106
108
  slots: slots,
@@ -127,7 +129,7 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
127
129
  process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
128
130
  // ----------------------------- Warning --------------------------------
129
131
  // | These PropTypes are generated from the TypeScript type definitions |
130
- // | To update them edit the TypeScript types and run "yarn proptypes" |
132
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
131
133
  // ----------------------------------------------------------------------
132
134
  /**
133
135
  * The configuration of axes highlight.
@@ -139,6 +141,14 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
139
141
  x: PropTypes.oneOf(['band', 'line', 'none']),
140
142
  y: PropTypes.oneOf(['band', 'line', 'none'])
141
143
  }),
144
+ /**
145
+ * If provided, the function will be used to format the label of the bar.
146
+ * It can be set to 'value' to display the current value.
147
+ * @param {BarItem} item The item to format.
148
+ * @param {BarLabelContext} context data about the bar.
149
+ * @returns {string} The formatted label.
150
+ */
151
+ barLabel: PropTypes.oneOfType([PropTypes.oneOf(['value']), PropTypes.func]),
142
152
  /**
143
153
  * Defines the border radius of the bar element.
144
154
  */
@@ -205,6 +215,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
205
215
  }),
206
216
  /**
207
217
  * If `true`, a loading overlay is displayed.
218
+ * @default false
208
219
  */
209
220
  loading: PropTypes.bool,
210
221
  /**
@@ -297,6 +308,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
297
308
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
298
309
  classes: PropTypes.object,
299
310
  colorMap: PropTypes.oneOfType([PropTypes.shape({
311
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
312
+ type: PropTypes.oneOf(['ordinal']).isRequired,
313
+ unknownColor: PropTypes.string,
314
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
315
+ }), PropTypes.shape({
300
316
  color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
301
317
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
302
318
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
@@ -305,11 +321,6 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
305
321
  colors: PropTypes.arrayOf(PropTypes.string).isRequired,
306
322
  thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
307
323
  type: PropTypes.oneOf(['piecewise']).isRequired
308
- }), PropTypes.shape({
309
- colors: PropTypes.arrayOf(PropTypes.string).isRequired,
310
- type: PropTypes.oneOf(['ordinal']).isRequired,
311
- unknownColor: PropTypes.string,
312
- values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
313
324
  })]),
314
325
  data: PropTypes.array,
315
326
  dataKey: PropTypes.string,
@@ -350,6 +361,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
350
361
  axisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
351
362
  classes: PropTypes.object,
352
363
  colorMap: PropTypes.oneOfType([PropTypes.shape({
364
+ colors: PropTypes.arrayOf(PropTypes.string).isRequired,
365
+ type: PropTypes.oneOf(['ordinal']).isRequired,
366
+ unknownColor: PropTypes.string,
367
+ values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
368
+ }), PropTypes.shape({
353
369
  color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
354
370
  max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
355
371
  min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
@@ -358,11 +374,6 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
358
374
  colors: PropTypes.arrayOf(PropTypes.string).isRequired,
359
375
  thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
360
376
  type: PropTypes.oneOf(['piecewise']).isRequired
361
- }), PropTypes.shape({
362
- colors: PropTypes.arrayOf(PropTypes.string).isRequired,
363
- type: PropTypes.oneOf(['ordinal']).isRequired,
364
- unknownColor: PropTypes.string,
365
- values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number, PropTypes.string]).isRequired)
366
377
  })]),
367
378
  data: PropTypes.array,
368
379
  dataKey: PropTypes.string,
@@ -79,16 +79,17 @@ function BarElement(props) {
79
79
  const barProps = useSlotProps({
80
80
  elementType: Bar,
81
81
  externalSlotProps: slotProps?.bar,
82
- additionalProps: _extends({}, other, getInteractionItemProps({
82
+ externalForwardedProps: other,
83
+ additionalProps: _extends({}, getInteractionItemProps({
83
84
  type: 'bar',
84
85
  seriesId: id,
85
86
  dataIndex
86
87
  }), {
87
88
  style,
88
- className: classes.root,
89
89
  onClick,
90
90
  cursor: onClick ? 'pointer' : 'unset'
91
91
  }),
92
+ className: classes.root,
92
93
  ownerState
93
94
  });
94
95
  return /*#__PURE__*/_jsx(Bar, _extends({}, barProps));
@@ -96,7 +97,7 @@ function BarElement(props) {
96
97
  process.env.NODE_ENV !== "production" ? BarElement.propTypes = {
97
98
  // ----------------------------- Warning --------------------------------
98
99
  // | These PropTypes are generated from the TypeScript type definitions |
99
- // | To update them edit the TypeScript types and run "yarn proptypes" |
100
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
100
101
  // ----------------------------------------------------------------------
101
102
  classes: PropTypes.object,
102
103
  dataIndex: PropTypes.number.isRequired,
@@ -0,0 +1,51 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["seriesId", "dataIndex", "color", "isFaded", "isHighlighted", "classes"];
4
+ import * as React from 'react';
5
+ import { styled, useThemeProps } from '@mui/material/styles';
6
+ import { animated } from '@react-spring/web';
7
+ import PropTypes from 'prop-types';
8
+ import { barLabelClasses } from './barLabelClasses';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ export const BarLabelComponent = styled(animated.text, {
11
+ name: 'MuiBarLabel',
12
+ slot: 'Root',
13
+ overridesResolver: (_, styles) => [{
14
+ [`&.${barLabelClasses.faded}`]: styles.faded
15
+ }, {
16
+ [`&.${barLabelClasses.highlighted}`]: styles.highlighted
17
+ }, styles.root]
18
+ })(({
19
+ theme
20
+ }) => _extends({}, theme?.typography?.body2, {
21
+ stroke: 'none',
22
+ fill: (theme.vars || theme)?.palette?.text?.primary,
23
+ transition: 'opacity 0.2s ease-in, fill 0.2s ease-in',
24
+ textAnchor: 'middle',
25
+ dominantBaseline: 'central',
26
+ pointerEvents: 'none',
27
+ opacity: 1,
28
+ [`&.${barLabelClasses.faded}`]: {
29
+ opacity: 0.3
30
+ }
31
+ }));
32
+ function BarLabel(props) {
33
+ const themeProps = useThemeProps({
34
+ props,
35
+ name: 'MuiBarLabel'
36
+ });
37
+ const otherProps = _objectWithoutPropertiesLoose(themeProps, _excluded);
38
+ return /*#__PURE__*/_jsx(BarLabelComponent, _extends({}, otherProps));
39
+ }
40
+ process.env.NODE_ENV !== "production" ? BarLabel.propTypes = {
41
+ // ----------------------------- Warning --------------------------------
42
+ // | These PropTypes are generated from the TypeScript type definitions |
43
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
44
+ // ----------------------------------------------------------------------
45
+ classes: PropTypes.object,
46
+ dataIndex: PropTypes.number.isRequired,
47
+ isFaded: PropTypes.bool.isRequired,
48
+ isHighlighted: PropTypes.bool.isRequired,
49
+ seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired
50
+ } : void 0;
51
+ export { BarLabel };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,130 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["seriesId", "classes", "color", "style", "dataIndex", "barLabel", "slots", "slotProps", "height", "width", "value"],
4
+ _excluded2 = ["ownerState"];
5
+ import * as React from 'react';
6
+ import { useSlotProps } from '@mui/base/utils';
7
+ import PropTypes from 'prop-types';
8
+ import { InteractionContext } from '../../context/InteractionProvider';
9
+ import { getIsFaded, getIsHighlighted } from '../../hooks/useInteractionItemProps';
10
+ import { useUtilityClasses } from './barLabelClasses';
11
+ import { HighlighContext } from '../../context/HighlightProvider';
12
+ import { getBarLabel } from './getBarLabel';
13
+ import { BarLabel } from './BarLabel';
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * @ignore - internal component.
17
+ */
18
+ function BarLabelItem(props) {
19
+ const {
20
+ seriesId,
21
+ classes: innerClasses,
22
+ color,
23
+ style,
24
+ dataIndex,
25
+ barLabel,
26
+ slots,
27
+ slotProps,
28
+ height,
29
+ width,
30
+ value
31
+ } = props,
32
+ other = _objectWithoutPropertiesLoose(props, _excluded);
33
+ const {
34
+ item
35
+ } = React.useContext(InteractionContext);
36
+ const {
37
+ scope
38
+ } = React.useContext(HighlighContext);
39
+ const isHighlighted = getIsHighlighted(item, {
40
+ type: 'bar',
41
+ seriesId,
42
+ dataIndex
43
+ }, scope);
44
+ const isFaded = !isHighlighted && getIsFaded(item, {
45
+ type: 'bar',
46
+ seriesId,
47
+ dataIndex
48
+ }, scope);
49
+ const ownerState = {
50
+ seriesId,
51
+ classes: innerClasses,
52
+ color,
53
+ isFaded,
54
+ isHighlighted,
55
+ dataIndex
56
+ };
57
+ const classes = useUtilityClasses(ownerState);
58
+ const Component = slots?.barLabel ?? BarLabel;
59
+ const _useSlotProps = useSlotProps({
60
+ elementType: Component,
61
+ externalSlotProps: slotProps?.barLabel,
62
+ additionalProps: _extends({}, other, {
63
+ style,
64
+ className: classes.root
65
+ }),
66
+ ownerState
67
+ }),
68
+ {
69
+ ownerState: barLabelOwnerState
70
+ } = _useSlotProps,
71
+ barLabelProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
72
+ if (!barLabel) {
73
+ return null;
74
+ }
75
+ const formattedLabelText = getBarLabel({
76
+ barLabel,
77
+ value,
78
+ dataIndex,
79
+ seriesId,
80
+ height,
81
+ width
82
+ });
83
+ if (!formattedLabelText) {
84
+ return null;
85
+ }
86
+ return /*#__PURE__*/_jsx(Component, _extends({}, barLabelProps, barLabelOwnerState, {
87
+ children: formattedLabelText
88
+ }));
89
+ }
90
+ process.env.NODE_ENV !== "production" ? BarLabelItem.propTypes = {
91
+ // ----------------------------- Warning --------------------------------
92
+ // | These PropTypes are generated from the TypeScript type definitions |
93
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
94
+ // ----------------------------------------------------------------------
95
+ /**
96
+ * If provided, the function will be used to format the label of the bar.
97
+ * It can be set to 'value' to display the current value.
98
+ * @param {BarItem} item The item to format.
99
+ * @param {BarLabelContext} context data about the bar.
100
+ * @returns {string} The formatted label.
101
+ */
102
+ barLabel: PropTypes.oneOfType([PropTypes.oneOf(['value']), PropTypes.func]),
103
+ classes: PropTypes.object,
104
+ color: PropTypes.string.isRequired,
105
+ dataIndex: PropTypes.number.isRequired,
106
+ /**
107
+ * The height of the bar.
108
+ */
109
+ height: PropTypes.number.isRequired,
110
+ seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
111
+ /**
112
+ * The props used for each component slot.
113
+ * @default {}
114
+ */
115
+ slotProps: PropTypes.object,
116
+ /**
117
+ * Overridable component slots.
118
+ * @default {}
119
+ */
120
+ slots: PropTypes.object,
121
+ /**
122
+ * The value of the data point.
123
+ */
124
+ value: PropTypes.number,
125
+ /**
126
+ * The width of the bar.
127
+ */
128
+ width: PropTypes.number.isRequired
129
+ } : void 0;
130
+ export { BarLabelItem };
@@ -0,0 +1,102 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["bars", "skipAnimation"];
4
+ import * as React from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { useTransition } from '@react-spring/web';
7
+ import { BarLabelItem } from './BarLabelItem';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ const leaveStyle = ({
10
+ layout,
11
+ yOrigin,
12
+ x,
13
+ width,
14
+ y,
15
+ xOrigin,
16
+ height
17
+ }) => _extends({}, layout === 'vertical' ? {
18
+ y: yOrigin,
19
+ x: x + width / 2,
20
+ height: 0,
21
+ width
22
+ } : {
23
+ y: y + height / 2,
24
+ x: xOrigin,
25
+ height,
26
+ width: 0
27
+ });
28
+ const enterStyle = ({
29
+ x,
30
+ width,
31
+ y,
32
+ height
33
+ }) => ({
34
+ x: x + width / 2,
35
+ y: y + height / 2,
36
+ height,
37
+ width
38
+ });
39
+ /**
40
+ * @ignore - internal component.
41
+ */
42
+ function BarLabelPlot(props) {
43
+ const {
44
+ bars,
45
+ skipAnimation
46
+ } = props,
47
+ other = _objectWithoutPropertiesLoose(props, _excluded);
48
+ const barLabelTransition = useTransition(bars, {
49
+ keys: bar => `${bar.seriesId}-${bar.dataIndex}`,
50
+ from: leaveStyle,
51
+ leave: null,
52
+ enter: enterStyle,
53
+ update: enterStyle,
54
+ immediate: skipAnimation
55
+ });
56
+ return /*#__PURE__*/_jsx(React.Fragment, {
57
+ children: barLabelTransition((style, {
58
+ seriesId,
59
+ dataIndex,
60
+ color,
61
+ value,
62
+ width,
63
+ height
64
+ }) => /*#__PURE__*/_jsx(BarLabelItem, _extends({
65
+ seriesId: seriesId,
66
+ dataIndex: dataIndex,
67
+ value: value,
68
+ color: color,
69
+ width: width,
70
+ height: height
71
+ }, other, {
72
+ style: style
73
+ })))
74
+ });
75
+ }
76
+ process.env.NODE_ENV !== "production" ? BarLabelPlot.propTypes = {
77
+ // ----------------------------- Warning --------------------------------
78
+ // | These PropTypes are generated from the TypeScript type definitions |
79
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
80
+ // ----------------------------------------------------------------------
81
+ barLabel: PropTypes.oneOfType([PropTypes.oneOf(['value']), PropTypes.func]),
82
+ bars: PropTypes.arrayOf(PropTypes.shape({
83
+ color: PropTypes.string.isRequired,
84
+ dataIndex: PropTypes.number.isRequired,
85
+ height: PropTypes.number.isRequired,
86
+ highlightScope: PropTypes.shape({
87
+ faded: PropTypes.oneOf(['global', 'none', 'series']),
88
+ highlighted: PropTypes.oneOf(['item', 'none', 'series'])
89
+ }),
90
+ layout: PropTypes.oneOf(['horizontal', 'vertical']),
91
+ maskId: PropTypes.string.isRequired,
92
+ seriesId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
93
+ value: PropTypes.number,
94
+ width: PropTypes.number.isRequired,
95
+ x: PropTypes.number.isRequired,
96
+ xOrigin: PropTypes.number.isRequired,
97
+ y: PropTypes.number.isRequired,
98
+ yOrigin: PropTypes.number.isRequired
99
+ })).isRequired,
100
+ skipAnimation: PropTypes.bool
101
+ } : void 0;
102
+ export { BarLabelPlot };
@@ -0,0 +1,19 @@
1
+ import generateUtilityClass from '@mui/utils/generateUtilityClass';
2
+ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
3
+ import composeClasses from '@mui/utils/composeClasses';
4
+ export function getBarLabelUtilityClass(slot) {
5
+ return generateUtilityClass('MuiBarLabel', slot);
6
+ }
7
+ export const barLabelClasses = generateUtilityClasses('MuiBarLabel', ['root', 'highlighted', 'faded']);
8
+ export const useUtilityClasses = ownerState => {
9
+ const {
10
+ classes,
11
+ seriesId,
12
+ isFaded,
13
+ isHighlighted
14
+ } = ownerState;
15
+ const slots = {
16
+ root: ['root', `series-${seriesId}`, isHighlighted && 'highlighted', isFaded && 'faded']
17
+ };
18
+ return composeClasses(slots, getBarLabelUtilityClass, classes);
19
+ };
@@ -0,0 +1,24 @@
1
+ export const getBarLabel = options => {
2
+ const {
3
+ barLabel,
4
+ value,
5
+ dataIndex,
6
+ seriesId,
7
+ height,
8
+ width
9
+ } = options;
10
+ if (barLabel === 'value') {
11
+ // We don't want to show the label if the value is 0
12
+ return value ? value?.toString() : null;
13
+ }
14
+ return barLabel({
15
+ seriesId,
16
+ dataIndex,
17
+ value
18
+ }, {
19
+ bar: {
20
+ height,
21
+ width
22
+ }
23
+ });
24
+ };
@@ -0,0 +1,2 @@
1
+ export { BarLabel } from './BarLabel';
2
+ export { barLabelClasses, getBarLabelUtilityClass } from './barLabelClasses';
@@ -1,6 +1,6 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["skipAnimation", "onItemClick", "borderRadius"];
3
+ const _excluded = ["skipAnimation", "onItemClick", "borderRadius", "barLabel"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useTransition } from '@react-spring/web';
@@ -12,6 +12,7 @@ import { DEFAULT_X_AXIS_KEY, DEFAULT_Y_AXIS_KEY } from '../constants';
12
12
  import getColor from './getColor';
13
13
  import { useChartId } from '../hooks';
14
14
  import { BarClipPath } from './BarClipPath';
15
+ import { BarLabelPlot } from './BarLabel/BarLabelPlot';
15
16
 
16
17
  /**
17
18
  * Solution of the equations
@@ -211,7 +212,8 @@ function BarPlot(props) {
211
212
  const {
212
213
  skipAnimation,
213
214
  onItemClick,
214
- borderRadius
215
+ borderRadius,
216
+ barLabel
215
217
  } = props,
216
218
  other = _objectWithoutPropertiesLoose(props, _excluded);
217
219
  const transition = useTransition(completedData, {
@@ -274,14 +276,26 @@ function BarPlot(props) {
274
276
  clipPath: `url(#${maskId})`,
275
277
  children: barElement
276
278
  });
277
- })]
279
+ }), barLabel && /*#__PURE__*/_jsx(BarLabelPlot, _extends({
280
+ bars: completedData,
281
+ skipAnimation: skipAnimation,
282
+ barLabel: barLabel
283
+ }, other))]
278
284
  });
279
285
  }
280
286
  process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
281
287
  // ----------------------------- Warning --------------------------------
282
288
  // | These PropTypes are generated from the TypeScript type definitions |
283
- // | To update them edit the TypeScript types and run "yarn proptypes" |
289
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
284
290
  // ----------------------------------------------------------------------
291
+ /**
292
+ * If provided, the function will be used to format the label of the bar.
293
+ * It can be set to 'value' to display the current value.
294
+ * @param {BarItem} item The item to format.
295
+ * @param {BarLabelContext} context data about the bar.
296
+ * @returns {string} The formatted label.
297
+ */
298
+ barLabel: PropTypes.oneOfType([PropTypes.oneOf(['value']), PropTypes.func]),
285
299
  /**
286
300
  * Defines the border radius of the bar element.
287
301
  */