@mui/x-charts 8.9.0 → 8.10.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 (128) hide show
  1. package/BarChart/BarChart.js +110 -1
  2. package/BarChart/BarClipPath.d.ts +17 -12
  3. package/BarChart/BarClipPath.js +70 -57
  4. package/BarChart/BarPlot.js +4 -0
  5. package/BarChart/seriesConfig/extremums.js +2 -3
  6. package/BarChart/useBarChartProps.d.ts +1 -1
  7. package/CHANGELOG.md +245 -6
  8. package/ChartContainer/ChartContainer.js +165 -0
  9. package/ChartsAxisHighlight/ChartsXAxisHighlight.js +1 -3
  10. package/ChartsAxisHighlight/ChartsYAxisHighlight.js +1 -3
  11. package/ChartsTooltip/ChartsTooltip.d.ts +2 -1
  12. package/ChartsTooltip/ChartsTooltip.js +3 -3
  13. package/ChartsTooltip/ChartsTooltipContainer.d.ts +5 -5
  14. package/ChartsTooltip/ChartsTooltipContainer.js +3 -3
  15. package/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.d.ts +13 -4
  16. package/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.js +33 -7
  17. package/ChartsXAxis/ChartsGroupedXAxis.d.ts +7 -0
  18. package/ChartsXAxis/ChartsGroupedXAxis.js +142 -0
  19. package/ChartsXAxis/ChartsSingleXAxis.d.ts +7 -0
  20. package/ChartsXAxis/ChartsSingleXAxis.js +144 -0
  21. package/ChartsXAxis/ChartsXAxis.d.ts +1 -1
  22. package/ChartsXAxis/ChartsXAxis.js +8 -210
  23. package/ChartsXAxis/getVisibleLabels.d.ts +2 -2
  24. package/ChartsXAxis/useAxisProps.d.ts +4526 -0
  25. package/ChartsXAxis/useAxisProps.js +105 -0
  26. package/ChartsXAxis/utilities.d.ts +11 -0
  27. package/ChartsXAxis/utilities.js +43 -0
  28. package/LineChart/LineChart.js +110 -1
  29. package/LineChart/seriesConfig/extremums.js +2 -3
  30. package/LineChart/useLineChartProps.d.ts +1 -1
  31. package/PieChart/PieChart.js +1 -1
  32. package/RadarChart/RadarChart.d.ts +1 -1
  33. package/RadarChart/RadarChart.js +1 -1
  34. package/RadarChart/index.d.ts +9 -2
  35. package/RadarChart/index.js +13 -14
  36. package/RadarChart/useRadarChartProps.d.ts +1 -1
  37. package/ScatterChart/ScatterChart.d.ts +8 -1
  38. package/ScatterChart/ScatterChart.js +110 -1
  39. package/ScatterChart/seriesConfig/extremums.js +50 -23
  40. package/ScatterChart/useScatterChartProps.d.ts +1 -1
  41. package/SparkLineChart/SparkLineChart.js +109 -0
  42. package/esm/BarChart/BarChart.js +110 -1
  43. package/esm/BarChart/BarClipPath.d.ts +17 -12
  44. package/esm/BarChart/BarClipPath.js +69 -55
  45. package/esm/BarChart/BarPlot.js +4 -0
  46. package/esm/BarChart/seriesConfig/extremums.js +2 -3
  47. package/esm/BarChart/useBarChartProps.d.ts +1 -1
  48. package/esm/ChartContainer/ChartContainer.js +165 -0
  49. package/esm/ChartsAxisHighlight/ChartsXAxisHighlight.js +1 -3
  50. package/esm/ChartsAxisHighlight/ChartsYAxisHighlight.js +1 -3
  51. package/esm/ChartsTooltip/ChartsTooltip.d.ts +2 -1
  52. package/esm/ChartsTooltip/ChartsTooltip.js +3 -3
  53. package/esm/ChartsTooltip/ChartsTooltipContainer.d.ts +5 -5
  54. package/esm/ChartsTooltip/ChartsTooltipContainer.js +3 -3
  55. package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.d.ts +13 -4
  56. package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/ChartsWrapper.js +31 -6
  57. package/esm/ChartsXAxis/ChartsGroupedXAxis.d.ts +7 -0
  58. package/esm/ChartsXAxis/ChartsGroupedXAxis.js +136 -0
  59. package/esm/ChartsXAxis/ChartsSingleXAxis.d.ts +7 -0
  60. package/esm/ChartsXAxis/ChartsSingleXAxis.js +140 -0
  61. package/esm/ChartsXAxis/ChartsXAxis.d.ts +1 -1
  62. package/esm/ChartsXAxis/ChartsXAxis.js +7 -207
  63. package/esm/ChartsXAxis/getVisibleLabels.d.ts +2 -2
  64. package/esm/ChartsXAxis/useAxisProps.d.ts +4526 -0
  65. package/esm/ChartsXAxis/useAxisProps.js +98 -0
  66. package/esm/ChartsXAxis/utilities.d.ts +11 -0
  67. package/esm/ChartsXAxis/utilities.js +35 -0
  68. package/esm/LineChart/LineChart.js +110 -1
  69. package/esm/LineChart/seriesConfig/extremums.js +2 -3
  70. package/esm/LineChart/useLineChartProps.d.ts +1 -1
  71. package/esm/PieChart/PieChart.js +1 -1
  72. package/esm/RadarChart/RadarChart.d.ts +1 -1
  73. package/esm/RadarChart/RadarChart.js +1 -1
  74. package/esm/RadarChart/index.d.ts +9 -2
  75. package/esm/RadarChart/index.js +12 -2
  76. package/esm/RadarChart/useRadarChartProps.d.ts +1 -1
  77. package/esm/ScatterChart/ScatterChart.d.ts +8 -1
  78. package/esm/ScatterChart/ScatterChart.js +110 -1
  79. package/esm/ScatterChart/seriesConfig/extremums.js +50 -23
  80. package/esm/ScatterChart/useScatterChartProps.d.ts +1 -1
  81. package/esm/SparkLineChart/SparkLineChart.js +109 -0
  82. package/esm/hooks/useTicksGrouped.d.ts +28 -0
  83. package/esm/hooks/useTicksGrouped.js +98 -0
  84. package/esm/index.d.ts +2 -1
  85. package/esm/index.js +6 -2
  86. package/esm/internals/findMinMax.d.ts +1 -0
  87. package/esm/internals/findMinMax.js +13 -0
  88. package/esm/internals/getScale.d.ts +1 -1
  89. package/esm/internals/getScale.js +3 -0
  90. package/esm/internals/index.d.ts +1 -1
  91. package/esm/internals/index.js +1 -1
  92. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +4 -1
  93. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.d.ts +3 -1
  94. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js +32 -23
  95. package/esm/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.d.ts +1 -1
  96. package/esm/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.js +17 -12
  97. package/esm/internals/symlogScale.d.ts +2 -0
  98. package/esm/internals/symlogScale.js +94 -0
  99. package/esm/models/axis.d.ts +81 -4
  100. package/esm/models/axis.js +3 -0
  101. package/hooks/useTicksGrouped.d.ts +28 -0
  102. package/hooks/useTicksGrouped.js +104 -0
  103. package/index.d.ts +2 -1
  104. package/index.js +13 -1
  105. package/internals/findMinMax.d.ts +1 -0
  106. package/internals/findMinMax.js +19 -0
  107. package/internals/getScale.d.ts +1 -1
  108. package/internals/getScale.js +3 -0
  109. package/internals/index.d.ts +1 -1
  110. package/internals/index.js +12 -12
  111. package/internals/plugins/featurePlugins/useChartCartesianAxis/computeAxisValue.js +3 -0
  112. package/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.d.ts +3 -1
  113. package/internals/plugins/featurePlugins/useChartCartesianAxis/createAxisFilterMapper.js +34 -23
  114. package/internals/plugins/featurePlugins/useChartCartesianAxis/getAxisExtremum.d.ts +1 -1
  115. package/internals/plugins/featurePlugins/useChartVoronoi/useChartVoronoi.js +17 -12
  116. package/internals/symlogScale.d.ts +2 -0
  117. package/internals/symlogScale.js +100 -0
  118. package/models/axis.d.ts +81 -4
  119. package/models/axis.js +4 -0
  120. package/package.json +5 -7
  121. package/BarChart/getRadius.d.ts +0 -20
  122. package/BarChart/getRadius.js +0 -37
  123. package/esm/BarChart/getRadius.d.ts +0 -20
  124. package/esm/BarChart/getRadius.js +0 -30
  125. /package/{esm/internals/components/ChartsWrapper → ChartsWrapper}/index.d.ts +0 -0
  126. /package/{internals/components/ChartsWrapper → ChartsWrapper}/index.js +0 -0
  127. /package/{internals/components → esm}/ChartsWrapper/index.d.ts +0 -0
  128. /package/esm/{internals/components/ChartsWrapper → ChartsWrapper}/index.js +0 -0
@@ -23,7 +23,7 @@ var _useBarChartProps = require("./useBarChartProps");
23
23
  var _ChartDataProvider = require("../ChartDataProvider");
24
24
  var _ChartsSurface = require("../ChartsSurface");
25
25
  var _useChartContainerProps = require("../ChartContainer/useChartContainerProps");
26
- var _ChartsWrapper = require("../internals/components/ChartsWrapper");
26
+ var _ChartsWrapper = require("../ChartsWrapper");
27
27
  var _jsxRuntime = require("react/jsx-runtime");
28
28
  /**
29
29
  * Demos:
@@ -271,6 +271,10 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
271
271
  disableTicks: _propTypes.default.bool,
272
272
  domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
273
273
  fill: _propTypes.default.string,
274
+ groups: _propTypes.default.arrayOf(_propTypes.default.shape({
275
+ getValue: _propTypes.default.func.isRequired,
276
+ tickSize: _propTypes.default.number
277
+ })),
274
278
  height: _propTypes.default.number,
275
279
  hideTooltip: _propTypes.default.bool,
276
280
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
@@ -322,6 +326,10 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
322
326
  disableTicks: _propTypes.default.bool,
323
327
  domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
324
328
  fill: _propTypes.default.string,
329
+ groups: _propTypes.default.arrayOf(_propTypes.default.shape({
330
+ getValue: _propTypes.default.func.isRequired,
331
+ tickSize: _propTypes.default.number
332
+ })),
325
333
  height: _propTypes.default.number,
326
334
  hideTooltip: _propTypes.default.bool,
327
335
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
@@ -395,6 +403,53 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
395
403
  tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
396
404
  tickSize: _propTypes.default.number,
397
405
  valueFormatter: _propTypes.default.func
406
+ }), _propTypes.default.shape({
407
+ axis: _propTypes.default.oneOf(['x']),
408
+ classes: _propTypes.default.object,
409
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
410
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
411
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
412
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
413
+ type: _propTypes.default.oneOf(['continuous']).isRequired
414
+ }), _propTypes.default.shape({
415
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
416
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
417
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
418
+ })]),
419
+ constant: _propTypes.default.number,
420
+ data: _propTypes.default.array,
421
+ dataKey: _propTypes.default.string,
422
+ disableLine: _propTypes.default.bool,
423
+ disableTicks: _propTypes.default.bool,
424
+ domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
425
+ fill: _propTypes.default.string,
426
+ height: _propTypes.default.number,
427
+ hideTooltip: _propTypes.default.bool,
428
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
429
+ ignoreTooltip: _propTypes.default.bool,
430
+ label: _propTypes.default.string,
431
+ labelStyle: _propTypes.default.object,
432
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
433
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
434
+ offset: _propTypes.default.number,
435
+ position: _propTypes.default.oneOf(['bottom', 'none', 'top']),
436
+ reverse: _propTypes.default.bool,
437
+ scaleType: _propTypes.default.oneOf(['symlog']),
438
+ slotProps: _propTypes.default.object,
439
+ slots: _propTypes.default.object,
440
+ stroke: _propTypes.default.string,
441
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
442
+ tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
443
+ tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
444
+ tickLabelMinGap: _propTypes.default.number,
445
+ tickLabelPlacement: _propTypes.default.oneOf(['middle', 'tick']),
446
+ tickLabelStyle: _propTypes.default.object,
447
+ tickMaxStep: _propTypes.default.number,
448
+ tickMinStep: _propTypes.default.number,
449
+ tickNumber: _propTypes.default.number,
450
+ tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
451
+ tickSize: _propTypes.default.number,
452
+ valueFormatter: _propTypes.default.func
398
453
  }), _propTypes.default.shape({
399
454
  axis: _propTypes.default.oneOf(['x']),
400
455
  classes: _propTypes.default.object,
@@ -657,6 +712,10 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
657
712
  disableTicks: _propTypes.default.bool,
658
713
  domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
659
714
  fill: _propTypes.default.string,
715
+ groups: _propTypes.default.arrayOf(_propTypes.default.shape({
716
+ getValue: _propTypes.default.func.isRequired,
717
+ tickSize: _propTypes.default.number
718
+ })),
660
719
  hideTooltip: _propTypes.default.bool,
661
720
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
662
721
  ignoreTooltip: _propTypes.default.bool,
@@ -707,6 +766,10 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
707
766
  disableTicks: _propTypes.default.bool,
708
767
  domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
709
768
  fill: _propTypes.default.string,
769
+ groups: _propTypes.default.arrayOf(_propTypes.default.shape({
770
+ getValue: _propTypes.default.func.isRequired,
771
+ tickSize: _propTypes.default.number
772
+ })),
710
773
  hideTooltip: _propTypes.default.bool,
711
774
  id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
712
775
  ignoreTooltip: _propTypes.default.bool,
@@ -778,6 +841,52 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
778
841
  tickSize: _propTypes.default.number,
779
842
  valueFormatter: _propTypes.default.func,
780
843
  width: _propTypes.default.number
844
+ }), _propTypes.default.shape({
845
+ axis: _propTypes.default.oneOf(['y']),
846
+ classes: _propTypes.default.object,
847
+ colorMap: _propTypes.default.oneOfType([_propTypes.default.shape({
848
+ color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
849
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
850
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
851
+ type: _propTypes.default.oneOf(['continuous']).isRequired
852
+ }), _propTypes.default.shape({
853
+ colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
854
+ thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
855
+ type: _propTypes.default.oneOf(['piecewise']).isRequired
856
+ })]),
857
+ constant: _propTypes.default.number,
858
+ data: _propTypes.default.array,
859
+ dataKey: _propTypes.default.string,
860
+ disableLine: _propTypes.default.bool,
861
+ disableTicks: _propTypes.default.bool,
862
+ domainLimit: _propTypes.default.oneOfType([_propTypes.default.oneOf(['nice', 'strict']), _propTypes.default.func]),
863
+ fill: _propTypes.default.string,
864
+ hideTooltip: _propTypes.default.bool,
865
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
866
+ ignoreTooltip: _propTypes.default.bool,
867
+ label: _propTypes.default.string,
868
+ labelStyle: _propTypes.default.object,
869
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
870
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
871
+ offset: _propTypes.default.number,
872
+ position: _propTypes.default.oneOf(['left', 'none', 'right']),
873
+ reverse: _propTypes.default.bool,
874
+ scaleType: _propTypes.default.oneOf(['symlog']),
875
+ slotProps: _propTypes.default.object,
876
+ slots: _propTypes.default.object,
877
+ stroke: _propTypes.default.string,
878
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
879
+ tickInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.array, _propTypes.default.func]),
880
+ tickLabelInterval: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.func]),
881
+ tickLabelPlacement: _propTypes.default.oneOf(['middle', 'tick']),
882
+ tickLabelStyle: _propTypes.default.object,
883
+ tickMaxStep: _propTypes.default.number,
884
+ tickMinStep: _propTypes.default.number,
885
+ tickNumber: _propTypes.default.number,
886
+ tickPlacement: _propTypes.default.oneOf(['end', 'extremities', 'middle', 'start']),
887
+ tickSize: _propTypes.default.number,
888
+ valueFormatter: _propTypes.default.func,
889
+ width: _propTypes.default.number
781
890
  }), _propTypes.default.shape({
782
891
  axis: _propTypes.default.oneOf(['y']),
783
892
  classes: _propTypes.default.object,
@@ -1,18 +1,21 @@
1
1
  import * as React from 'react';
2
- import { GetRadiusData } from "./getRadius.js";
3
- type UseAnimateBarClipRectParams = Pick<BarClipRectProps, 'x' | 'y' | 'width' | 'height' | 'skipAnimation'> & {
4
- ref?: React.Ref<SVGRectElement>;
2
+ interface UseAnimateBarClipPathParams {
3
+ ref?: React.Ref<SVGPathElement>;
4
+ layout: 'vertical' | 'horizontal';
5
+ hasNegative: boolean;
6
+ hasPositive: boolean;
7
+ xOrigin: number;
8
+ yOrigin: number;
9
+ x: number;
10
+ y: number;
11
+ width: number;
12
+ height: number;
5
13
  borderRadius: number;
6
- ownerState: Omit<GetRadiusData, 'borderRadius'>;
7
- };
8
- type UseAnimateBarClipRectReturn = {
9
- ref: React.Ref<SVGRectElement>;
10
- style: React.CSSProperties;
11
- } & Pick<BarClipRectProps, 'x' | 'y' | 'width' | 'height'>;
12
- export declare function useAnimateBarClipRect(props: UseAnimateBarClipRectParams): UseAnimateBarClipRectReturn;
13
- interface BarClipRectProps extends Pick<BarClipPathProps, 'x' | 'y' | 'width' | 'height' | 'skipAnimation'> {
14
- ownerState: GetRadiusData;
14
+ skipAnimation: boolean;
15
15
  }
16
+ export declare function useAnimateBarClipPath(props: UseAnimateBarClipPathParams): import("../index.js").UseAnimateReturn<SVGPathElement, {
17
+ d: string | undefined;
18
+ }>;
16
19
  export interface BarClipPathProps {
17
20
  maskId: string;
18
21
  borderRadius?: number;
@@ -21,6 +24,8 @@ export interface BarClipPathProps {
21
24
  layout?: 'vertical' | 'horizontal';
22
25
  x: number;
23
26
  y: number;
27
+ xOrigin: number;
28
+ yOrigin: number;
24
29
  width: number;
25
30
  height: number;
26
31
  skipAnimation: boolean;
@@ -1,32 +1,17 @@
1
1
  "use strict";
2
2
  'use client';
3
3
 
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
5
  Object.defineProperty(exports, "__esModule", {
7
6
  value: true
8
7
  });
9
8
  exports.BarClipPath = BarClipPath;
10
- exports.useAnimateBarClipRect = useAnimateBarClipRect;
11
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ exports.useAnimateBarClipPath = useAnimateBarClipPath;
13
10
  var React = _interopRequireWildcard(require("react"));
14
11
  var _d3Interpolate = require("@mui/x-charts-vendor/d3-interpolate");
15
12
  var _animation = require("../hooks/animation");
16
- var _getRadius = require("./getRadius");
17
13
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["maskId", "x", "y", "width", "height", "skipAnimation"];
19
- function buildClipPath(size, borderRadius, ownerState) {
20
- const radiusData = (0, _extends2.default)({}, ownerState, {
21
- borderRadius
22
- });
23
- const topLeft = Math.min(size, (0, _getRadius.getRadius)('top-left', radiusData));
24
- const topRight = Math.min(size, (0, _getRadius.getRadius)('top-right', radiusData));
25
- const bottomRight = Math.min(size, (0, _getRadius.getRadius)('bottom-right', radiusData));
26
- const bottomLeft = Math.min(size, (0, _getRadius.getRadius)('bottom-left', radiusData));
27
- return `inset(0px round ${topLeft}px ${topRight}px ${bottomRight}px ${bottomLeft}px)`;
28
- }
29
- function barClipRectPropsInterpolator(from, to) {
14
+ function barClipPathPropsInterpolator(from, to) {
30
15
  const interpolateX = (0, _d3Interpolate.interpolateNumber)(from.x, to.x);
31
16
  const interpolateY = (0, _d3Interpolate.interpolateNumber)(from.y, to.y);
32
17
  const interpolateWidth = (0, _d3Interpolate.interpolateNumber)(from.width, to.width);
@@ -42,12 +27,12 @@ function barClipRectPropsInterpolator(from, to) {
42
27
  };
43
28
  };
44
29
  }
45
- function useAnimateBarClipRect(props) {
30
+ function useAnimateBarClipPath(props) {
46
31
  const initialProps = {
47
- x: props.x,
48
- y: props.y + (props.ownerState.layout === 'vertical' ? props.height : 0),
49
- width: props.ownerState.layout === 'vertical' ? props.width : 0,
50
- height: props.ownerState.layout === 'vertical' ? 0 : props.height,
32
+ x: props.layout === 'vertical' ? props.x : props.xOrigin,
33
+ y: props.layout === 'vertical' ? props.yOrigin : props.y,
34
+ width: props.layout === 'vertical' ? props.width : 0,
35
+ height: props.layout === 'vertical' ? 0 : props.height,
51
36
  borderRadius: props.borderRadius
52
37
  };
53
38
  return (0, _animation.useAnimate)({
@@ -57,59 +42,87 @@ function useAnimateBarClipRect(props) {
57
42
  height: props.height,
58
43
  borderRadius: props.borderRadius
59
44
  }, {
60
- createInterpolator: barClipRectPropsInterpolator,
45
+ createInterpolator: barClipPathPropsInterpolator,
61
46
  transformProps: p => ({
62
- x: p.x,
63
- y: p.y,
64
- width: p.width,
65
- height: p.height,
66
- style: {
67
- clipPath: buildClipPath(props.ownerState.layout === 'vertical' ? p.height : p.width, p.borderRadius, props.ownerState)
68
- }
47
+ d: generateClipPath(props.hasNegative, props.hasPositive, props.layout, p.x, p.y, p.width, p.height, props.xOrigin, props.yOrigin, p.borderRadius)
69
48
  }),
70
- applyProps(element, animatedProps) {
71
- element.setAttribute('x', animatedProps.x.toString());
72
- element.setAttribute('y', animatedProps.y.toString());
73
- element.setAttribute('width', animatedProps.width.toString());
74
- element.setAttribute('height', animatedProps.height.toString());
75
- element.style.clipPath = animatedProps.style.clipPath;
49
+ applyProps(element, {
50
+ d
51
+ }) {
52
+ if (d) {
53
+ element.setAttribute('d', d);
54
+ }
76
55
  },
77
56
  initialProps,
78
57
  skip: props.skipAnimation,
79
58
  ref: props.ref
80
59
  });
81
60
  }
82
- function BarClipRect(props) {
83
- const animatedProps = useAnimateBarClipRect((0, _extends2.default)({}, props, {
84
- borderRadius: props.ownerState.borderRadius ?? 0
85
- }));
86
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("rect", (0, _extends2.default)({}, animatedProps));
87
- }
88
61
  /**
89
62
  * @ignore - internal component.
90
63
  */
91
64
  function BarClipPath(props) {
92
65
  const {
93
- maskId,
94
- x,
95
- y,
96
- width,
97
- height,
98
- skipAnimation
99
- } = props,
100
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
66
+ maskId,
67
+ x,
68
+ y,
69
+ width,
70
+ height,
71
+ skipAnimation
72
+ } = props;
73
+ const {
74
+ ref,
75
+ d
76
+ } = useAnimateBarClipPath({
77
+ layout: props.layout ?? 'vertical',
78
+ hasNegative: props.hasNegative,
79
+ hasPositive: props.hasPositive,
80
+ xOrigin: props.xOrigin,
81
+ yOrigin: props.yOrigin,
82
+ x,
83
+ y,
84
+ width,
85
+ height,
86
+ borderRadius: props.borderRadius ?? 0,
87
+ skipAnimation
88
+ });
101
89
  if (!props.borderRadius || props.borderRadius <= 0) {
102
90
  return null;
103
91
  }
104
92
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("clipPath", {
105
93
  id: maskId,
106
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BarClipRect, {
107
- ownerState: rest,
108
- x: x,
109
- y: y,
110
- width: width,
111
- height: height,
112
- skipAnimation: skipAnimation
94
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
95
+ ref: ref,
96
+ d: d
113
97
  })
114
98
  });
99
+ }
100
+ function generateClipPath(hasNegative, hasPositive, layout, x, y, width, height, xOrigin, yOrigin, borderRadius) {
101
+ if (layout === 'vertical') {
102
+ if (hasPositive && hasNegative) {
103
+ const bR = Math.min(borderRadius, width / 2, height / 2);
104
+ return `M${x},${y + height / 2} v${-(height / 2 - bR)} a${bR},${bR} 0 0 1 ${bR},${-bR} h${width - bR * 2} a${bR},${bR} 0 0 1 ${bR},${bR} v${height - 2 * bR} a${bR},${bR} 0 0 1 ${-bR},${bR} h${-(width - bR * 2)} a${bR},${bR} 0 0 1 ${-bR},${-bR} v${-(height / 2 - bR)}`;
105
+ }
106
+ const bR = Math.min(borderRadius, width / 2);
107
+ if (hasPositive) {
108
+ return `M${x},${Math.max(yOrigin, y + bR)} v${Math.min(0, -(yOrigin - y - bR))} a${bR},${bR} 0 0 1 ${bR},${-bR} h${width - bR * 2} a${bR},${bR} 0 0 1 ${bR},${bR} v${Math.max(0, yOrigin - y - bR)} Z`;
109
+ }
110
+ if (hasNegative) {
111
+ return `M${x},${Math.min(yOrigin, y + height - bR)} v${Math.max(0, height - bR)} a${bR},${bR} 0 0 0 ${bR},${bR} h${width - bR * 2} a${bR},${bR} 0 0 0 ${bR},${-bR} v${-Math.max(0, height - bR)} Z`;
112
+ }
113
+ }
114
+ if (layout === 'horizontal') {
115
+ if (hasPositive && hasNegative) {
116
+ const bR = Math.min(borderRadius, width / 2, height / 2);
117
+ return `M${x + width / 2},${y} h${width / 2 - bR} a${bR},${bR} 0 0 1 ${bR},${bR} v${height - bR * 2} a${bR},${bR} 0 0 1 ${-bR},${bR} h${-(width - 2 * bR)} a${bR},${bR} 0 0 1 ${-bR},${-bR} v${-(height - bR * 2)} a${bR},${bR} 0 0 1 ${bR},${-bR} h${width / 2 - bR}`;
118
+ }
119
+ const bR = Math.min(borderRadius, height / 2);
120
+ if (hasPositive) {
121
+ return `M${Math.min(xOrigin, x - bR)},${y} h${width} a${bR},${bR} 0 0 1 ${bR},${bR} v${height - bR * 2} a${bR},${bR} 0 0 1 ${-bR},${bR} h${-width} Z`;
122
+ }
123
+ if (hasNegative) {
124
+ return `M${Math.max(xOrigin, x + width + bR)},${y} h${-width} a${bR},${bR} 0 0 0 ${-bR},${bR} v${height - bR * 2} a${bR},${bR} 0 0 0 ${bR},${bR} h${width} Z`;
125
+ }
126
+ }
127
+ return undefined;
115
128
  }
@@ -71,6 +71,8 @@ function BarPlot(props) {
71
71
  id,
72
72
  x,
73
73
  y,
74
+ xOrigin,
75
+ yOrigin,
74
76
  width,
75
77
  height,
76
78
  hasPositive,
@@ -85,6 +87,8 @@ function BarPlot(props) {
85
87
  layout: layout,
86
88
  x: x,
87
89
  y: y,
90
+ xOrigin: xOrigin,
91
+ yOrigin: yOrigin,
88
92
  width: width,
89
93
  height: height,
90
94
  skipAnimation: skipAnimation ?? false
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getExtremumY = exports.getExtremumX = void 0;
7
+ var _findMinMax = require("../../internals/findMinMax");
7
8
  const createResult = (data, direction) => {
8
9
  if (direction === 'x') {
9
10
  return {
@@ -30,9 +31,7 @@ const getBaseExtremum = params => {
30
31
  x: null,
31
32
  y: null
32
33
  }, i)) : axis.data;
33
- const minX = Math.min(...(data ?? []));
34
- const maxX = Math.max(...(data ?? []));
35
- return [minX, maxX];
34
+ return (0, _findMinMax.findMinMax)(data ?? []);
36
35
  };
37
36
  const getValueExtremum = direction => params => {
38
37
  const {
@@ -8,7 +8,7 @@ import { ChartsOverlayProps } from "../ChartsOverlay/index.js";
8
8
  import { ChartsAxisProps } from "../ChartsAxis/index.js";
9
9
  import { ChartsAxisHighlightProps } from "../ChartsAxisHighlight/index.js";
10
10
  import { ChartsLegendSlotExtension } from "../ChartsLegend/index.js";
11
- import type { ChartsWrapperProps } from "../internals/components/ChartsWrapper/index.js";
11
+ import type { ChartsWrapperProps } from "../ChartsWrapper/index.js";
12
12
  import { BarChartPluginsSignatures } from "./BarChart.plugins.js";
13
13
  /**
14
14
  * A helper function that extracts BarChartProps from the input props