@coinbase/cds-web-visualization 3.4.0-beta.8 → 3.4.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.
- package/CHANGELOG.md +130 -0
- package/dts/chart/CartesianChart.d.ts +40 -4
- package/dts/chart/CartesianChart.d.ts.map +1 -1
- package/dts/chart/ChartProvider.d.ts +3 -0
- package/dts/chart/ChartProvider.d.ts.map +1 -1
- package/dts/chart/Path.d.ts +51 -12
- package/dts/chart/Path.d.ts.map +1 -1
- package/dts/chart/PeriodSelector.d.ts +25 -4
- package/dts/chart/PeriodSelector.d.ts.map +1 -1
- package/dts/chart/area/Area.d.ts +13 -11
- package/dts/chart/area/Area.d.ts.map +1 -1
- package/dts/chart/area/AreaChart.d.ts +18 -5
- package/dts/chart/area/AreaChart.d.ts.map +1 -1
- package/dts/chart/area/DottedArea.d.ts.map +1 -1
- package/dts/chart/area/GradientArea.d.ts.map +1 -1
- package/dts/chart/area/SolidArea.d.ts.map +1 -1
- package/dts/chart/axis/Axis.d.ts +29 -29
- package/dts/chart/axis/Axis.d.ts.map +1 -1
- package/dts/chart/axis/XAxis.d.ts +6 -0
- package/dts/chart/axis/XAxis.d.ts.map +1 -1
- package/dts/chart/axis/YAxis.d.ts +2 -1
- package/dts/chart/axis/YAxis.d.ts.map +1 -1
- package/dts/chart/bar/Bar.d.ts +51 -51
- package/dts/chart/bar/Bar.d.ts.map +1 -1
- package/dts/chart/bar/BarChart.d.ts +29 -6
- package/dts/chart/bar/BarChart.d.ts.map +1 -1
- package/dts/chart/bar/BarPlot.d.ts +2 -1
- package/dts/chart/bar/BarPlot.d.ts.map +1 -1
- package/dts/chart/bar/BarStack.d.ts +58 -20
- package/dts/chart/bar/BarStack.d.ts.map +1 -1
- package/dts/chart/bar/BarStackGroup.d.ts +2 -1
- package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
- package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
- package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
- package/dts/chart/gradient/Gradient.d.ts +7 -0
- package/dts/chart/gradient/Gradient.d.ts.map +1 -1
- package/dts/chart/index.d.ts +1 -0
- package/dts/chart/index.d.ts.map +1 -1
- package/dts/chart/legend/DefaultLegendEntry.d.ts +21 -0
- package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
- package/dts/chart/legend/DefaultLegendShape.d.ts +7 -0
- package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
- package/dts/chart/legend/Legend.d.ts +169 -0
- package/dts/chart/legend/Legend.d.ts.map +1 -0
- package/dts/chart/legend/index.d.ts +4 -0
- package/dts/chart/legend/index.d.ts.map +1 -0
- package/dts/chart/line/DottedLine.d.ts.map +1 -1
- package/dts/chart/line/Line.d.ts +45 -24
- package/dts/chart/line/Line.d.ts.map +1 -1
- package/dts/chart/line/LineChart.d.ts +5 -3
- package/dts/chart/line/LineChart.d.ts.map +1 -1
- package/dts/chart/line/ReferenceLine.d.ts +9 -0
- package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
- package/dts/chart/line/SolidLine.d.ts.map +1 -1
- package/dts/chart/point/Point.d.ts +26 -2
- package/dts/chart/point/Point.d.ts.map +1 -1
- package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +34 -17
- package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -1
- package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +1 -1
- package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +2 -1
- package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +1 -1
- package/dts/chart/scrubber/Scrubber.d.ts +148 -46
- package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +10 -0
- package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +25 -1
- package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
- package/dts/chart/text/ChartText.d.ts.map +1 -1
- package/dts/chart/utils/axis.d.ts +48 -9
- package/dts/chart/utils/axis.d.ts.map +1 -1
- package/dts/chart/utils/bar.d.ts +188 -0
- package/dts/chart/utils/bar.d.ts.map +1 -1
- package/dts/chart/utils/chart.d.ts +32 -0
- package/dts/chart/utils/chart.d.ts.map +1 -1
- package/dts/chart/utils/context.d.ts +20 -4
- package/dts/chart/utils/context.d.ts.map +1 -1
- package/dts/chart/utils/gradient.d.ts +3 -1
- package/dts/chart/utils/gradient.d.ts.map +1 -1
- package/dts/chart/utils/path.d.ts +26 -0
- package/dts/chart/utils/path.d.ts.map +1 -1
- package/dts/chart/utils/point.d.ts +18 -7
- package/dts/chart/utils/point.d.ts.map +1 -1
- package/dts/chart/utils/scale.d.ts +11 -0
- package/dts/chart/utils/scale.d.ts.map +1 -1
- package/dts/chart/utils/scrubber.d.ts +2 -1
- package/dts/chart/utils/scrubber.d.ts.map +1 -1
- package/dts/chart/utils/transition.d.ts +50 -14
- package/dts/chart/utils/transition.d.ts.map +1 -1
- package/dts/sparkline/Sparkline.d.ts +2 -1
- package/dts/sparkline/Sparkline.d.ts.map +1 -1
- package/dts/sparkline/SparklineArea.d.ts +2 -1
- package/dts/sparkline/SparklineArea.d.ts.map +1 -1
- package/dts/sparkline/SparklineGradient.d.ts +2 -1
- package/dts/sparkline/SparklineGradient.d.ts.map +1 -1
- package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +2 -1
- package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +1 -1
- package/esm/chart/CartesianChart.js +154 -90
- package/esm/chart/ChartProvider.js +2 -2
- package/esm/chart/Path.js +35 -19
- package/esm/chart/PeriodSelector.js +33 -15
- package/esm/chart/area/Area.js +21 -9
- package/esm/chart/area/AreaChart.js +28 -25
- package/esm/chart/area/DottedArea.js +18 -9
- package/esm/chart/area/GradientArea.js +16 -8
- package/esm/chart/area/SolidArea.js +8 -3
- package/esm/chart/axis/Axis.js +3 -17
- package/esm/chart/axis/XAxis.js +153 -50
- package/esm/chart/axis/YAxis.js +146 -36
- package/esm/chart/bar/Bar.js +16 -8
- package/esm/chart/bar/BarChart.js +38 -33
- package/esm/chart/bar/BarPlot.js +20 -25
- package/esm/chart/bar/BarStack.js +109 -505
- package/esm/chart/bar/BarStackGroup.js +36 -27
- package/esm/chart/bar/DefaultBar.js +34 -26
- package/esm/chart/bar/DefaultBarStack.js +31 -18
- package/esm/chart/gradient/Gradient.js +3 -2
- package/esm/chart/index.js +1 -0
- package/esm/chart/legend/DefaultLegendEntry.css +1 -0
- package/esm/chart/legend/DefaultLegendEntry.js +50 -0
- package/esm/chart/legend/DefaultLegendShape.css +5 -0
- package/esm/chart/legend/DefaultLegendShape.js +47 -0
- package/esm/chart/legend/Legend.js +76 -0
- package/esm/chart/legend/index.js +3 -0
- package/esm/chart/line/DottedLine.js +7 -2
- package/esm/chart/line/Line.js +41 -42
- package/esm/chart/line/LineChart.js +18 -13
- package/esm/chart/line/ReferenceLine.js +6 -2
- package/esm/chart/line/SolidLine.js +8 -3
- package/esm/chart/point/Point.js +41 -24
- package/esm/chart/scrubber/DefaultScrubberBeacon.js +64 -65
- package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +25 -14
- package/esm/chart/scrubber/DefaultScrubberLabel.js +26 -8
- package/esm/chart/scrubber/Scrubber.js +54 -43
- package/esm/chart/scrubber/ScrubberBeaconGroup.js +60 -35
- package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +31 -8
- package/esm/chart/scrubber/ScrubberProvider.js +44 -39
- package/esm/chart/text/ChartText.js +3 -2
- package/esm/chart/utils/axis.js +90 -43
- package/esm/chart/utils/bar.js +863 -0
- package/esm/chart/utils/chart.js +34 -7
- package/esm/chart/utils/context.js +7 -0
- package/esm/chart/utils/gradient.js +6 -4
- package/esm/chart/utils/path.js +88 -61
- package/esm/chart/utils/point.js +57 -30
- package/esm/chart/utils/scale.js +13 -2
- package/esm/chart/utils/scrubber.js +9 -4
- package/esm/chart/utils/transition.js +68 -41
- package/esm/sparkline/Sparkline.js +2 -1
- package/esm/sparkline/SparklineArea.js +2 -1
- package/esm/sparkline/SparklineGradient.js +2 -1
- package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
- package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +2 -1
- package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
- package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
- package/package.json +12 -11
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { type MotionValue, type Transition } from 'framer-motion';
|
|
2
2
|
/**
|
|
3
|
-
* Default transition
|
|
3
|
+
* Default update transition used across all chart components.
|
|
4
|
+
* `{ type: 'spring', stiffness: 900, damping: 120, mass: 4 }`
|
|
4
5
|
*/
|
|
5
6
|
export declare const defaultTransition: Transition;
|
|
7
|
+
/**
|
|
8
|
+
* Instant transition that completes immediately with no animation.
|
|
9
|
+
* Used when a transition is set to `null`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const instantTransition: Transition;
|
|
6
12
|
/**
|
|
7
13
|
* Duration in seconds for accessory elements to fade in.
|
|
8
14
|
*/
|
|
@@ -11,40 +17,53 @@ export declare const accessoryFadeTransitionDuration = 0.15;
|
|
|
11
17
|
* Delay in seconds before accessory elements fade in.
|
|
12
18
|
*/
|
|
13
19
|
export declare const accessoryFadeTransitionDelay = 0.35;
|
|
20
|
+
/**
|
|
21
|
+
* Default enter transition for accessory elements (Point, Scrubber beacons).
|
|
22
|
+
* `{ type: 'tween', duration: 0.15, delay: 0.35 }`
|
|
23
|
+
*/
|
|
24
|
+
export declare const defaultAccessoryEnterTransition: Transition;
|
|
25
|
+
/**
|
|
26
|
+
* Resolves a transition value based on the animation state and a default.
|
|
27
|
+
* @note Passing in null will disable an animation.
|
|
28
|
+
* @note Passing in undefined will use the provided default.
|
|
29
|
+
*/
|
|
30
|
+
export declare const getTransition: (
|
|
31
|
+
value: Transition | null | undefined,
|
|
32
|
+
animate: boolean,
|
|
33
|
+
defaultValue: Transition,
|
|
34
|
+
) => Transition | null;
|
|
14
35
|
/**
|
|
15
36
|
* Hook for path animation state and transitions.
|
|
16
37
|
*
|
|
17
38
|
* @param currentPath - Current target path to animate to
|
|
18
39
|
* @param initialPath - Initial path for enter animation. When provided, the first animation will go from initialPath to currentPath.
|
|
19
|
-
* @param
|
|
40
|
+
* @param transitions - Transition configuration for enter and update animations
|
|
20
41
|
* @returns MotionValue containing the current interpolated path string
|
|
21
42
|
*
|
|
22
43
|
* @example
|
|
23
44
|
* // Simple path transition
|
|
24
45
|
* const animatedPath = usePathTransition({
|
|
25
46
|
* currentPath: d ?? '',
|
|
26
|
-
*
|
|
27
|
-
* type: 'spring',
|
|
28
|
-
*
|
|
29
|
-
* damping: 20
|
|
30
|
-
* }
|
|
47
|
+
* transitions: {
|
|
48
|
+
* update: { type: 'spring', stiffness: 300, damping: 20 },
|
|
49
|
+
* },
|
|
31
50
|
* });
|
|
32
51
|
*
|
|
33
52
|
* @example
|
|
34
|
-
* //
|
|
53
|
+
* // Enter animation with different initial config (like DefaultBar)
|
|
35
54
|
* const animatedPath = usePathTransition({
|
|
36
55
|
* currentPath: targetPath,
|
|
37
56
|
* initialPath: baselinePath,
|
|
38
|
-
*
|
|
39
|
-
* type: 'tween',
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* }
|
|
57
|
+
* transitions: {
|
|
58
|
+
* enter: { type: 'tween', duration: 0.5 },
|
|
59
|
+
* update: { type: 'spring', stiffness: 900, damping: 120, mass: 4 },
|
|
60
|
+
* },
|
|
43
61
|
* });
|
|
44
62
|
*/
|
|
45
63
|
export declare const usePathTransition: ({
|
|
46
64
|
currentPath,
|
|
47
65
|
initialPath,
|
|
66
|
+
transitions,
|
|
48
67
|
transition,
|
|
49
68
|
}: {
|
|
50
69
|
/**
|
|
@@ -58,7 +77,24 @@ export declare const usePathTransition: ({
|
|
|
58
77
|
*/
|
|
59
78
|
initialPath?: string;
|
|
60
79
|
/**
|
|
61
|
-
* Transition configuration
|
|
80
|
+
* Transition configuration for enter and update animations.
|
|
81
|
+
*/
|
|
82
|
+
transitions?: {
|
|
83
|
+
/**
|
|
84
|
+
* Transition for the initial enter animation (initialPath → currentPath).
|
|
85
|
+
* Only used when `initialPath` is provided.
|
|
86
|
+
* If not provided, falls back to `update`.
|
|
87
|
+
*/
|
|
88
|
+
enter?: Transition | null;
|
|
89
|
+
/**
|
|
90
|
+
* Transition for subsequent data update animations.
|
|
91
|
+
* @default defaultTransition
|
|
92
|
+
*/
|
|
93
|
+
update?: Transition | null;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Transition for updates.
|
|
97
|
+
* @deprecated Use `transitions.update` instead.
|
|
62
98
|
*/
|
|
63
99
|
transition?: Transition;
|
|
64
100
|
}) => MotionValue<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/chart/utils/transition.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/chart/utils/transition.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,UAAU,EAGhB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,UAK/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,UAI7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,UAAU,GAAG,IAAI,GAAG,SAAS,EACpC,SAAS,OAAO,EAChB,cAAc,UAAU,KACvB,UAAU,GAAG,IAGf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iBAAiB,GAAI,wDAK/B;IACD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ;;;;WAIG;QACH,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;QAC1B;;;WAGG;QACH,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,KAAG,WAAW,CAAC,MAAM,CA4DrB,CAAC"}
|
|
@@ -32,7 +32,8 @@ export type SparklineBaseProps = SharedProps & {
|
|
|
32
32
|
};
|
|
33
33
|
export type SparklineProps = SparklineBaseProps;
|
|
34
34
|
/**
|
|
35
|
-
* @deprecated Use LineChart instead.
|
|
35
|
+
* @deprecated Use LineChart instead. This will be removed in a future major release.
|
|
36
|
+
* @deprecationExpectedRemoval v4
|
|
36
37
|
*/
|
|
37
38
|
export declare const Sparkline: React.MemoExoticComponent<
|
|
38
39
|
React.ForwardRefExoticComponent<
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/sparkline/Sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQ/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,iPAAiP;IACjP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oQAAoQ;IACpQ,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kWAAkW;IAClW,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACnD,oOAAoO;IACpO,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/sparkline/Sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQ/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,iPAAiP;IACjP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oQAAoQ;IACpQ,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kWAAkW;IAClW,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IACnD,oOAAoO;IACpO,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,SAAS;IAhCpB,iPAAiP;iBACpO,MAAM;IACnB,oQAAoQ;WAC7P,MAAM;IACb,8BAA8B;YACtB,MAAM;IACd,kWAAkW;WAC3V,MAAM;IACb,6BAA6B;WACtB,MAAM;IACb,0EAA0E;eAC/D,eAAe,CAAC,sBAAsB,CAAC;IAClD,oOAAoO;yBAC/M,MAAM;IAC3B;;;OAGG;iBACU,mBAAmB;IAChC;;;OAGG;eACQ,iBAAiB;2CA6J7B,CAAC"}
|
|
@@ -5,7 +5,8 @@ export type SparklineAreaBaseProps = {
|
|
|
5
5
|
maskId?: string;
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
|
-
* @deprecated Use AreaChart instead.
|
|
8
|
+
* @deprecated Use AreaChart instead. This will be removed in a future major release.
|
|
9
|
+
* @deprecationExpectedRemoval v4
|
|
9
10
|
*/
|
|
10
11
|
export declare const SparklineArea: React.MemoExoticComponent<
|
|
11
12
|
React.ForwardRefExoticComponent<
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparklineArea.d.ts","sourceRoot":"","sources":["../../src/sparkline/SparklineArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"SparklineArea.d.ts","sourceRoot":"","sources":["../../src/sparkline/SparklineArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,iIAazB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SparklinePathRef } from './SparklinePath';
|
|
3
3
|
/**
|
|
4
|
-
* @deprecated Use LineChart instead.
|
|
4
|
+
* @deprecated Use LineChart instead. This will be removed in a future major release.
|
|
5
|
+
* @deprecationExpectedRemoval v4
|
|
5
6
|
*/
|
|
6
7
|
export declare const SparklineGradient: React.MemoExoticComponent<
|
|
7
8
|
React.ForwardRefExoticComponent<
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparklineGradient.d.ts","sourceRoot":"","sources":["../../src/sparkline/SparklineGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAIhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"SparklineGradient.d.ts","sourceRoot":"","sources":["../../src/sparkline/SparklineGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAIhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;2CAoB7B,CAAC"}
|
|
@@ -193,7 +193,8 @@ declare function SparklineInteractiveWithGeneric<Period extends string>({
|
|
|
193
193
|
...props
|
|
194
194
|
}: SparklineInteractiveProps<Period>): import('react/jsx-runtime').JSX.Element;
|
|
195
195
|
/**
|
|
196
|
-
* @deprecated Use LineChart instead.
|
|
196
|
+
* @deprecated Use LineChart instead. This will be removed in a future major release.
|
|
197
|
+
* @deprecationExpectedRemoval v4
|
|
197
198
|
*/
|
|
198
199
|
export declare const SparklineInteractive: typeof SparklineInteractiveWithGeneric;
|
|
199
200
|
//# sourceMappingURL=SparklineInteractive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparklineInteractive.d.ts","sourceRoot":"","sources":["../../../src/sparkline/sparkline-interactive/SparklineInteractive.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SparklineInteractive.d.ts","sourceRoot":"","sources":["../../../src/sparkline/sparkline-interactive/SparklineInteractive.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const _excluded = ["series", "children", "animate", "xAxis", "yAxis", "inset", "enableScrubbing", "onScrubberPositionChange", "width", "height", "className", "classNames", "style", "styles"];
|
|
1
|
+
const _excluded = ["series", "children", "layout", "animate", "xAxis", "yAxis", "inset", "enableScrubbing", "onScrubberPositionChange", "legend", "legendPosition", "legendAccessibilityLabel", "width", "height", "className", "classNames", "style", "styles", "accessibilityLabel"];
|
|
2
2
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
3
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
4
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -12,25 +12,31 @@ import { useDimensions } from '@coinbase/cds-web/hooks/useDimensions';
|
|
|
12
12
|
import { Box } from '@coinbase/cds-web/layout';
|
|
13
13
|
import { ScrubberProvider } from './scrubber/ScrubberProvider';
|
|
14
14
|
import { CartesianChartProvider } from './ChartProvider';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { Legend } from './legend';
|
|
16
|
+
import { defaultAxisId, defaultHorizontalLayoutChartInset, defaultVerticalLayoutChartInset, getAxisConfig, getAxisRange, getCartesianAxisDomain, getCartesianAxisScale, getChartInset, getStackedSeriesData as calculateStackedSeriesData, useTotalAxisPadding } from './utils';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
18
|
const focusStylesCss = "cds-focusStylesCss-f4oy7ru";
|
|
18
19
|
export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
19
20
|
let {
|
|
20
21
|
series,
|
|
21
22
|
children,
|
|
23
|
+
layout = 'vertical',
|
|
22
24
|
animate = true,
|
|
23
25
|
xAxis: xAxisConfigProp,
|
|
24
26
|
yAxis: yAxisConfigProp,
|
|
25
27
|
inset,
|
|
26
28
|
enableScrubbing,
|
|
27
29
|
onScrubberPositionChange,
|
|
30
|
+
legend,
|
|
31
|
+
legendPosition = 'bottom',
|
|
32
|
+
legendAccessibilityLabel,
|
|
28
33
|
width = '100%',
|
|
29
34
|
height = '100%',
|
|
30
35
|
className,
|
|
31
36
|
classNames,
|
|
32
37
|
style,
|
|
33
|
-
styles
|
|
38
|
+
styles,
|
|
39
|
+
accessibilityLabel
|
|
34
40
|
} = _ref,
|
|
35
41
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
36
42
|
const {
|
|
@@ -39,12 +45,20 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
39
45
|
height: chartHeight
|
|
40
46
|
} = useDimensions();
|
|
41
47
|
const svgRef = useRef(null);
|
|
42
|
-
const calculatedInset = useMemo(() => getChartInset(inset,
|
|
48
|
+
const calculatedInset = useMemo(() => getChartInset(inset, layout === 'horizontal' ? defaultHorizontalLayoutChartInset : defaultVerticalLayoutChartInset), [inset, layout]);
|
|
43
49
|
|
|
44
50
|
// Axis configs store the properties of each axis, such as id, scale type, domain limit, etc.
|
|
45
|
-
|
|
46
|
-
const xAxisConfig = useMemo(() => getAxisConfig('x', xAxisConfigProp)[0], [xAxisConfigProp]);
|
|
51
|
+
const xAxisConfig = useMemo(() => getAxisConfig('x', xAxisConfigProp), [xAxisConfigProp]);
|
|
47
52
|
const yAxisConfig = useMemo(() => getAxisConfig('y', yAxisConfigProp), [yAxisConfigProp]);
|
|
53
|
+
|
|
54
|
+
// Horizontal layout supports multiple value axes on x, but only a single category axis on y.
|
|
55
|
+
// Vertical layout keeps a single x-axis to preserve existing behavior.
|
|
56
|
+
if (layout === 'horizontal' && yAxisConfig.length > 1) {
|
|
57
|
+
throw new Error('When layout="horizontal", only one y-axis is supported. See https://cds.coinbase.com/components/charts/CartesianChart.');
|
|
58
|
+
}
|
|
59
|
+
if (layout !== 'horizontal' && xAxisConfig.length > 1) {
|
|
60
|
+
throw new Error('Multiple x-axes are only supported when layout="horizontal". See https://cds.coinbase.com/components/charts/CartesianChart.');
|
|
61
|
+
}
|
|
48
62
|
const {
|
|
49
63
|
renderedAxes,
|
|
50
64
|
registerAxis,
|
|
@@ -74,50 +88,64 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
74
88
|
};
|
|
75
89
|
}, [chartHeight, chartWidth, calculatedInset, axisPadding]);
|
|
76
90
|
const {
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
xAxes,
|
|
92
|
+
xScales
|
|
79
93
|
} = useMemo(() => {
|
|
94
|
+
const axes = new Map();
|
|
95
|
+
const scales = new Map();
|
|
80
96
|
if (!chartRect || chartRect.width <= 0 || chartRect.height <= 0) return {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
84
|
-
const domain = getAxisDomain(xAxisConfig, series !== null && series !== void 0 ? series : [], 'x');
|
|
85
|
-
const range = getAxisRange(xAxisConfig, chartRect, 'x');
|
|
86
|
-
const axisConfig = {
|
|
87
|
-
scaleType: xAxisConfig.scaleType,
|
|
88
|
-
domain,
|
|
89
|
-
range,
|
|
90
|
-
data: xAxisConfig.data,
|
|
91
|
-
categoryPadding: xAxisConfig.categoryPadding,
|
|
92
|
-
domainLimit: xAxisConfig.domainLimit
|
|
97
|
+
xAxes: axes,
|
|
98
|
+
xScales: scales
|
|
93
99
|
};
|
|
100
|
+
xAxisConfig.forEach(axisParam => {
|
|
101
|
+
var _axisParam$id, _series$filter, _axisParam$domainLimi;
|
|
102
|
+
const axisId = (_axisParam$id = axisParam.id) !== null && _axisParam$id !== void 0 ? _axisParam$id : defaultAxisId;
|
|
94
103
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
dataDomain: axisConfig.domain
|
|
101
|
-
});
|
|
102
|
-
if (!scale) return {
|
|
103
|
-
xAxis: undefined,
|
|
104
|
-
xScale: undefined
|
|
105
|
-
};
|
|
104
|
+
// Get relevant series data
|
|
105
|
+
const relevantSeries = xAxisConfig.length > 1 ? (_series$filter = series === null || series === void 0 ? void 0 : series.filter(s => {
|
|
106
|
+
var _s$xAxisId;
|
|
107
|
+
return ((_s$xAxisId = s.xAxisId) !== null && _s$xAxisId !== void 0 ? _s$xAxisId : defaultAxisId) === axisId;
|
|
108
|
+
})) !== null && _series$filter !== void 0 ? _series$filter : [] : series !== null && series !== void 0 ? series : [];
|
|
106
109
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
// Calculate domain and range
|
|
111
|
+
const dataDomain = getCartesianAxisDomain(axisParam, relevantSeries, 'x', layout);
|
|
112
|
+
const range = getAxisRange(axisParam, chartRect, 'x');
|
|
113
|
+
const axisConfig = {
|
|
114
|
+
scaleType: axisParam.scaleType,
|
|
115
|
+
domain: dataDomain,
|
|
116
|
+
range,
|
|
117
|
+
data: axisParam.data,
|
|
118
|
+
categoryPadding: axisParam.categoryPadding,
|
|
119
|
+
domainLimit: (_axisParam$domainLimi = axisParam.domainLimit) !== null && _axisParam$domainLimi !== void 0 ? _axisParam$domainLimi : layout === 'horizontal' ? 'nice' : 'strict'
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// Create the scale
|
|
123
|
+
const scale = getCartesianAxisScale({
|
|
124
|
+
config: axisConfig,
|
|
125
|
+
type: 'x',
|
|
126
|
+
range: axisConfig.range,
|
|
127
|
+
dataDomain: axisConfig.domain,
|
|
128
|
+
layout
|
|
129
|
+
});
|
|
130
|
+
if (scale) {
|
|
131
|
+
scales.set(axisId, scale);
|
|
132
|
+
|
|
133
|
+
// Update axis config with actual scale domain (after .nice() or other adjustments)
|
|
134
|
+
const scaleDomain = scale.domain();
|
|
135
|
+
const actualDomain = Array.isArray(scaleDomain) && scaleDomain.length === 2 ? {
|
|
136
|
+
min: scaleDomain[0],
|
|
137
|
+
max: scaleDomain[1]
|
|
138
|
+
} : axisConfig.domain;
|
|
139
|
+
axes.set(axisId, _objectSpread(_objectSpread({}, axisConfig), {}, {
|
|
140
|
+
domain: actualDomain
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
115
143
|
});
|
|
116
144
|
return {
|
|
117
|
-
|
|
118
|
-
|
|
145
|
+
xAxes: axes,
|
|
146
|
+
xScales: scales
|
|
119
147
|
};
|
|
120
|
-
}, [xAxisConfig, series, chartRect]);
|
|
148
|
+
}, [xAxisConfig, series, chartRect, layout]);
|
|
121
149
|
const {
|
|
122
150
|
yAxes,
|
|
123
151
|
yScales
|
|
@@ -129,17 +157,17 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
129
157
|
yScales: scales
|
|
130
158
|
};
|
|
131
159
|
yAxisConfig.forEach(axisParam => {
|
|
132
|
-
var _axisParam$
|
|
133
|
-
const axisId = (_axisParam$
|
|
160
|
+
var _axisParam$id2, _series$filter2, _axisParam$domainLimi2;
|
|
161
|
+
const axisId = (_axisParam$id2 = axisParam.id) !== null && _axisParam$id2 !== void 0 ? _axisParam$id2 : defaultAxisId;
|
|
134
162
|
|
|
135
163
|
// Get relevant series data
|
|
136
|
-
const relevantSeries = (_series$
|
|
164
|
+
const relevantSeries = yAxisConfig.length > 1 ? (_series$filter2 = series === null || series === void 0 ? void 0 : series.filter(s => {
|
|
137
165
|
var _s$yAxisId;
|
|
138
166
|
return ((_s$yAxisId = s.yAxisId) !== null && _s$yAxisId !== void 0 ? _s$yAxisId : defaultAxisId) === axisId;
|
|
139
|
-
})) !== null && _series$
|
|
167
|
+
})) !== null && _series$filter2 !== void 0 ? _series$filter2 : [] : series !== null && series !== void 0 ? series : [];
|
|
140
168
|
|
|
141
169
|
// Calculate domain and range
|
|
142
|
-
const dataDomain =
|
|
170
|
+
const dataDomain = getCartesianAxisDomain(axisParam, relevantSeries, 'y', layout);
|
|
143
171
|
const range = getAxisRange(axisParam, chartRect, 'y');
|
|
144
172
|
const axisConfig = {
|
|
145
173
|
scaleType: axisParam.scaleType,
|
|
@@ -147,15 +175,16 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
147
175
|
range,
|
|
148
176
|
data: axisParam.data,
|
|
149
177
|
categoryPadding: axisParam.categoryPadding,
|
|
150
|
-
domainLimit: (_axisParam$
|
|
178
|
+
domainLimit: (_axisParam$domainLimi2 = axisParam.domainLimit) !== null && _axisParam$domainLimi2 !== void 0 ? _axisParam$domainLimi2 : layout === 'horizontal' ? 'strict' : 'nice'
|
|
151
179
|
};
|
|
152
180
|
|
|
153
181
|
// Create the scale
|
|
154
|
-
const scale =
|
|
182
|
+
const scale = getCartesianAxisScale({
|
|
155
183
|
config: axisConfig,
|
|
156
184
|
type: 'y',
|
|
157
185
|
range: axisConfig.range,
|
|
158
|
-
dataDomain: axisConfig.domain
|
|
186
|
+
dataDomain: axisConfig.domain,
|
|
187
|
+
layout
|
|
159
188
|
});
|
|
160
189
|
if (scale) {
|
|
161
190
|
scales.set(axisId, scale);
|
|
@@ -175,10 +204,10 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
175
204
|
yAxes: axes,
|
|
176
205
|
yScales: scales
|
|
177
206
|
};
|
|
178
|
-
}, [yAxisConfig, series, chartRect]);
|
|
179
|
-
const getXAxis = useCallback(
|
|
207
|
+
}, [yAxisConfig, series, chartRect, layout]);
|
|
208
|
+
const getXAxis = useCallback(id => xAxes.get(id !== null && id !== void 0 ? id : defaultAxisId), [xAxes]);
|
|
180
209
|
const getYAxis = useCallback(id => yAxes.get(id !== null && id !== void 0 ? id : defaultAxisId), [yAxes]);
|
|
181
|
-
const getXScale = useCallback(
|
|
210
|
+
const getXScale = useCallback(id => xScales.get(id !== null && id !== void 0 ? id : defaultAxisId), [xScales]);
|
|
182
211
|
const getYScale = useCallback(id => yScales.get(id !== null && id !== void 0 ? id : defaultAxisId), [yScales]);
|
|
183
212
|
const getSeries = useCallback(seriesId => series === null || series === void 0 ? void 0 : series.find(s => s.id === seriesId), [series]);
|
|
184
213
|
const stackedDataMap = useMemo(() => {
|
|
@@ -189,10 +218,17 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
189
218
|
if (!seriesId) return undefined;
|
|
190
219
|
return stackedDataMap.get(seriesId);
|
|
191
220
|
}, [stackedDataMap]);
|
|
221
|
+
const categoryAxisIsX = useMemo(() => {
|
|
222
|
+
return layout !== 'horizontal';
|
|
223
|
+
}, [layout]);
|
|
224
|
+
const categoryAxisConfig = useMemo(() => {
|
|
225
|
+
var _xAxisConfig$, _yAxisConfig$;
|
|
226
|
+
return categoryAxisIsX ? (_xAxisConfig$ = xAxisConfig[0]) !== null && _xAxisConfig$ !== void 0 ? _xAxisConfig$ : yAxisConfig[0] : (_yAxisConfig$ = yAxisConfig[0]) !== null && _yAxisConfig$ !== void 0 ? _yAxisConfig$ : xAxisConfig[0];
|
|
227
|
+
}, [categoryAxisIsX, xAxisConfig, yAxisConfig]);
|
|
192
228
|
const dataLength = useMemo(() => {
|
|
193
|
-
// If
|
|
194
|
-
if (
|
|
195
|
-
return
|
|
229
|
+
// If category axis has categorical data, use that length
|
|
230
|
+
if (categoryAxisConfig.data && categoryAxisConfig.data.length > 0) {
|
|
231
|
+
return categoryAxisConfig.data.length;
|
|
196
232
|
}
|
|
197
233
|
|
|
198
234
|
// Otherwise, find the longest series
|
|
@@ -202,7 +238,7 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
202
238
|
const seriesData = getStackedSeriesData(s.id);
|
|
203
239
|
return Math.max(max, (_seriesData$length = seriesData === null || seriesData === void 0 ? void 0 : seriesData.length) !== null && _seriesData$length !== void 0 ? _seriesData$length : 0);
|
|
204
240
|
}, 0);
|
|
205
|
-
}, [
|
|
241
|
+
}, [categoryAxisConfig, series, getStackedSeriesData]);
|
|
206
242
|
const getAxisBounds = useCallback(axisId => {
|
|
207
243
|
const axis = renderedAxes.get(axisId);
|
|
208
244
|
if (!axis || !chartRect) return;
|
|
@@ -251,6 +287,7 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
251
287
|
}
|
|
252
288
|
}, [renderedAxes, chartRect, calculatedInset]);
|
|
253
289
|
const contextValue = useMemo(() => ({
|
|
290
|
+
layout,
|
|
254
291
|
series: series !== null && series !== void 0 ? series : [],
|
|
255
292
|
getSeries,
|
|
256
293
|
getSeriesData: getStackedSeriesData,
|
|
@@ -266,46 +303,73 @@ export const CartesianChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, r
|
|
|
266
303
|
registerAxis,
|
|
267
304
|
unregisterAxis,
|
|
268
305
|
getAxisBounds
|
|
269
|
-
}), [series, getSeries, getStackedSeriesData, animate, chartWidth, chartHeight, getXAxis, getYAxis, getXScale, getYScale, chartRect, dataLength, registerAxis, unregisterAxis, getAxisBounds]);
|
|
306
|
+
}), [layout, series, getSeries, getStackedSeriesData, animate, chartWidth, chartHeight, getXAxis, getYAxis, getXScale, getYScale, chartRect, dataLength, registerAxis, unregisterAxis, getAxisBounds]);
|
|
270
307
|
const rootClassNames = useMemo(() => cx(className, classNames === null || classNames === void 0 ? void 0 : classNames.root), [className, classNames]);
|
|
271
308
|
const rootStyles = useMemo(() => _objectSpread(_objectSpread({}, style), styles === null || styles === void 0 ? void 0 : styles.root), [style, styles === null || styles === void 0 ? void 0 : styles.root]);
|
|
309
|
+
const legendElement = useMemo(() => {
|
|
310
|
+
if (!legend) return;
|
|
311
|
+
if (legend === true) {
|
|
312
|
+
const isHorizontal = legendPosition === 'top' || legendPosition === 'bottom';
|
|
313
|
+
const flexDirection = isHorizontal ? 'row' : 'column';
|
|
314
|
+
return /*#__PURE__*/_jsx(Legend, {
|
|
315
|
+
accessibilityLabel: legendAccessibilityLabel,
|
|
316
|
+
flexDirection: flexDirection
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
return legend;
|
|
320
|
+
}, [legend, legendAccessibilityLabel, legendPosition]);
|
|
321
|
+
const rootBoxProps = useMemo(() => _objectSpread({
|
|
322
|
+
className: rootClassNames,
|
|
323
|
+
height,
|
|
324
|
+
style: rootStyles,
|
|
325
|
+
width
|
|
326
|
+
}, props), [rootClassNames, height, rootStyles, width, props]);
|
|
327
|
+
const chartContent = /*#__PURE__*/_jsx(Box, {
|
|
328
|
+
ref: node => {
|
|
329
|
+
observe(node);
|
|
330
|
+
},
|
|
331
|
+
height: legend ? undefined : height,
|
|
332
|
+
style: {
|
|
333
|
+
flex: 1,
|
|
334
|
+
minHeight: 0,
|
|
335
|
+
minWidth: 0
|
|
336
|
+
},
|
|
337
|
+
width: legend ? undefined : width,
|
|
338
|
+
children: /*#__PURE__*/_jsx(Box, {
|
|
339
|
+
ref: node => {
|
|
340
|
+
const svgElement = node;
|
|
341
|
+
svgRef.current = svgElement;
|
|
342
|
+
// Forward the ref to the user
|
|
343
|
+
if (ref) {
|
|
344
|
+
if (typeof ref === 'function') {
|
|
345
|
+
ref(svgElement);
|
|
346
|
+
} else {
|
|
347
|
+
ref.current = svgElement;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
accessibilityLabel: accessibilityLabel,
|
|
352
|
+
"aria-live": "polite",
|
|
353
|
+
as: "svg",
|
|
354
|
+
className: cx(enableScrubbing && focusStylesCss, classNames === null || classNames === void 0 ? void 0 : classNames.chart),
|
|
355
|
+
height: "100%",
|
|
356
|
+
style: styles === null || styles === void 0 ? void 0 : styles.chart,
|
|
357
|
+
tabIndex: enableScrubbing ? 0 : undefined,
|
|
358
|
+
width: "100%",
|
|
359
|
+
children: children
|
|
360
|
+
})
|
|
361
|
+
});
|
|
272
362
|
return /*#__PURE__*/_jsx(CartesianChartProvider, {
|
|
273
363
|
value: contextValue,
|
|
274
364
|
children: /*#__PURE__*/_jsx(ScrubberProvider, {
|
|
275
365
|
enableScrubbing: !!enableScrubbing,
|
|
276
366
|
onScrubberPositionChange: onScrubberPositionChange,
|
|
277
367
|
svgRef: svgRef,
|
|
278
|
-
children: /*#__PURE__*/
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
height: height,
|
|
284
|
-
style: rootStyles,
|
|
285
|
-
width: width
|
|
286
|
-
}, props), {}, {
|
|
287
|
-
children: /*#__PURE__*/_jsx(Box, {
|
|
288
|
-
ref: node => {
|
|
289
|
-
const svgElement = node;
|
|
290
|
-
svgRef.current = svgElement;
|
|
291
|
-
// Forward the ref to the user
|
|
292
|
-
if (ref) {
|
|
293
|
-
if (typeof ref === 'function') {
|
|
294
|
-
ref(svgElement);
|
|
295
|
-
} else {
|
|
296
|
-
ref.current = svgElement;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
},
|
|
300
|
-
"aria-live": "polite",
|
|
301
|
-
as: "svg",
|
|
302
|
-
className: cx(enableScrubbing && focusStylesCss, classNames === null || classNames === void 0 ? void 0 : classNames.chart),
|
|
303
|
-
height: "100%",
|
|
304
|
-
style: styles === null || styles === void 0 ? void 0 : styles.chart,
|
|
305
|
-
tabIndex: enableScrubbing ? 0 : undefined,
|
|
306
|
-
width: "100%",
|
|
307
|
-
children: children
|
|
308
|
-
})
|
|
368
|
+
children: legend ? /*#__PURE__*/_jsxs(Box, _objectSpread(_objectSpread({}, rootBoxProps), {}, {
|
|
369
|
+
flexDirection: legendPosition === 'top' || legendPosition === 'bottom' ? 'column' : 'row',
|
|
370
|
+
children: [(legendPosition === 'top' || legendPosition === 'left') && legendElement, chartContent, (legendPosition === 'bottom' || legendPosition === 'right') && legendElement]
|
|
371
|
+
})) : /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread({}, rootBoxProps), {}, {
|
|
372
|
+
children: chartContent
|
|
309
373
|
}))
|
|
310
374
|
})
|
|
311
375
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createContext, useContext } from 'react';
|
|
2
|
-
const CartesianChartContext = /*#__PURE__*/createContext(undefined);
|
|
2
|
+
export const CartesianChartContext = /*#__PURE__*/createContext(undefined);
|
|
3
3
|
export const useCartesianChartContext = () => {
|
|
4
4
|
const context = useContext(CartesianChartContext);
|
|
5
5
|
if (!context) {
|
|
6
|
-
throw new Error('useCartesianChartContext must be used within a CartesianChart component. See
|
|
6
|
+
throw new Error('useCartesianChartContext must be used within a CartesianChart component. See https://cds.coinbase.com/components/charts/CartesianChart.');
|
|
7
7
|
}
|
|
8
8
|
return context;
|
|
9
9
|
};
|