@coinbase/cds-web-visualization 3.4.0-beta.24 → 3.4.0-beta.25

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 (43) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dts/chart/Path.d.ts +4 -2
  3. package/dts/chart/Path.d.ts.map +1 -1
  4. package/dts/chart/PeriodSelector.d.ts +1 -1
  5. package/dts/chart/bar/Bar.d.ts +18 -54
  6. package/dts/chart/bar/Bar.d.ts.map +1 -1
  7. package/dts/chart/bar/BarPlot.d.ts.map +1 -1
  8. package/dts/chart/bar/BarStack.d.ts +4 -4
  9. package/dts/chart/bar/BarStack.d.ts.map +1 -1
  10. package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
  11. package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
  12. package/dts/chart/point/Point.d.ts +2 -1
  13. package/dts/chart/point/Point.d.ts.map +1 -1
  14. package/dts/chart/scrubber/Scrubber.d.ts +4 -2
  15. package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
  16. package/dts/chart/utils/bar.d.ts +153 -0
  17. package/dts/chart/utils/bar.d.ts.map +1 -1
  18. package/dts/chart/utils/chart.d.ts +2 -1
  19. package/dts/chart/utils/chart.d.ts.map +1 -1
  20. package/dts/chart/utils/path.d.ts.map +1 -1
  21. package/dts/sparkline/Sparkline.d.ts +2 -1
  22. package/dts/sparkline/Sparkline.d.ts.map +1 -1
  23. package/dts/sparkline/SparklineArea.d.ts +2 -1
  24. package/dts/sparkline/SparklineArea.d.ts.map +1 -1
  25. package/dts/sparkline/SparklineGradient.d.ts +2 -1
  26. package/dts/sparkline/SparklineGradient.d.ts.map +1 -1
  27. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +2 -1
  28. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +1 -1
  29. package/esm/chart/Path.js +2 -1
  30. package/esm/chart/bar/Bar.js +4 -6
  31. package/esm/chart/bar/BarChart.js +7 -7
  32. package/esm/chart/bar/BarPlot.js +17 -27
  33. package/esm/chart/bar/BarStack.js +90 -295
  34. package/esm/chart/bar/DefaultBar.js +13 -19
  35. package/esm/chart/bar/DefaultBarStack.js +12 -19
  36. package/esm/chart/utils/bar.js +813 -0
  37. package/esm/chart/utils/chart.js +2 -1
  38. package/esm/chart/utils/path.js +5 -13
  39. package/esm/sparkline/Sparkline.js +2 -1
  40. package/esm/sparkline/SparklineArea.js +2 -1
  41. package/esm/sparkline/SparklineGradient.js +2 -1
  42. package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +2 -1
  43. package/package.json +5 -5
@@ -1,7 +1,7 @@
1
1
  import { memo, useId, useMemo } from 'react';
2
2
  import { m as motion } from 'framer-motion';
3
3
  import { useCartesianChartContext } from '../ChartProvider';
4
- import { defaultBarEnterTransition, defaultTransition, getBarPath, getTransition, withStaggerDelayTransition } from '../utils';
4
+ import { defaultBarEnterTransition, defaultTransition, getBarPath, getNormalizedStagger, getStackInitialClipRect, getTransition, withStaggerDelayTransition } from '../utils';
5
5
  import { usePathTransition } from '../utils/transition';
6
6
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  /**
@@ -19,7 +19,7 @@ export const DefaultBarStack = /*#__PURE__*/memo(_ref => {
19
19
  borderRadius = 4,
20
20
  roundTop = true,
21
21
  roundBottom = true,
22
- yOrigin,
22
+ origin,
23
23
  transitions,
24
24
  transition
25
25
  } = _ref;
@@ -29,29 +29,22 @@ export const DefaultBarStack = /*#__PURE__*/memo(_ref => {
29
29
  layout
30
30
  } = useCartesianChartContext();
31
31
  const clipPathId = useId();
32
-
33
- // For vertical layout, stagger by x (category axis). For horizontal, stagger by y (category axis).
34
- const normalizedStagger = useMemo(() => {
35
- const barsGrowVertically = layout !== 'horizontal';
36
- if (barsGrowVertically) {
37
- return drawingArea.width > 0 ? (x - drawingArea.x) / drawingArea.width : 0;
38
- }
39
- return drawingArea.height > 0 ? (y - drawingArea.y) / drawingArea.height : 0;
40
- }, [layout, x, y, drawingArea.x, drawingArea.y, drawingArea.width, drawingArea.height]);
32
+ const normalizedStagger = useMemo(() => getNormalizedStagger(layout, x, y, drawingArea), [layout, x, y, drawingArea]);
41
33
  const enterTransition = useMemo(() => withStaggerDelayTransition(getTransition(transitions === null || transitions === void 0 ? void 0 : transitions.enter, animate, defaultBarEnterTransition), normalizedStagger), [transitions === null || transitions === void 0 ? void 0 : transitions.enter, animate, normalizedStagger]);
42
34
  const updateTransition = useMemo(() => withStaggerDelayTransition(getTransition((transitions === null || transitions === void 0 ? void 0 : transitions.update) !== undefined ? transitions.update : transition, animate, defaultTransition), normalizedStagger), [transitions === null || transitions === void 0 ? void 0 : transitions.update, transition, animate, normalizedStagger]);
43
35
  const clipPathData = useMemo(() => {
44
36
  return getBarPath(x, y, width, height, borderRadius, roundTop, roundBottom, layout);
45
37
  }, [x, y, width, height, borderRadius, roundTop, roundBottom, layout]);
46
38
  const initialClipPathData = useMemo(() => {
47
- if (!animate) return undefined;
48
- const barsGrowVertically = layout !== 'horizontal';
49
- const initialX = barsGrowVertically ? x : yOrigin !== null && yOrigin !== void 0 ? yOrigin : x;
50
- const initialY = barsGrowVertically ? yOrigin !== null && yOrigin !== void 0 ? yOrigin : y + height : y;
51
- const initialWidth = barsGrowVertically ? width : 1;
52
- const initialHeight = barsGrowVertically ? 1 : height;
53
- return getBarPath(initialX, initialY, initialWidth, initialHeight, borderRadius, roundTop, roundBottom, layout);
54
- }, [animate, layout, x, yOrigin, y, height, width, borderRadius, roundTop, roundBottom]);
39
+ if (!animate) return;
40
+ const initialClipRect = getStackInitialClipRect({
41
+ x,
42
+ y,
43
+ width,
44
+ height
45
+ }, layout, origin);
46
+ return getBarPath(initialClipRect.x, initialClipRect.y, initialClipRect.width, initialClipRect.height, borderRadius, roundTop, roundBottom, layout);
47
+ }, [animate, layout, x, y, height, width, borderRadius, roundTop, roundBottom, origin]);
55
48
  const animatedClipPath = usePathTransition({
56
49
  currentPath: clipPathData,
57
50
  initialPath: initialClipPathData,