@coinbase/cds-mobile-visualization 3.4.0-beta.2 → 3.4.0-beta.21
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 +128 -0
- package/dts/chart/CartesianChart.d.ts +92 -34
- package/dts/chart/CartesianChart.d.ts.map +1 -1
- package/dts/chart/ChartContextBridge.d.ts +28 -0
- package/dts/chart/ChartContextBridge.d.ts.map +1 -0
- package/dts/chart/ChartProvider.d.ts +3 -0
- package/dts/chart/ChartProvider.d.ts.map +1 -1
- package/dts/chart/Path.d.ts +97 -32
- package/dts/chart/Path.d.ts.map +1 -1
- package/dts/chart/PeriodSelector.d.ts +6 -13
- package/dts/chart/PeriodSelector.d.ts.map +1 -1
- package/dts/chart/area/Area.d.ts +39 -28
- package/dts/chart/area/Area.d.ts.map +1 -1
- package/dts/chart/area/AreaChart.d.ts +51 -10
- package/dts/chart/area/AreaChart.d.ts.map +1 -1
- package/dts/chart/area/DottedArea.d.ts +21 -2
- package/dts/chart/area/DottedArea.d.ts.map +1 -1
- package/dts/chart/area/GradientArea.d.ts +19 -13
- package/dts/chart/area/GradientArea.d.ts.map +1 -1
- package/dts/chart/area/SolidArea.d.ts +17 -2
- package/dts/chart/area/SolidArea.d.ts.map +1 -1
- package/dts/chart/axis/Axis.d.ts +86 -118
- package/dts/chart/axis/Axis.d.ts.map +1 -1
- package/dts/chart/axis/DefaultAxisTickLabel.d.ts +8 -0
- package/dts/chart/axis/DefaultAxisTickLabel.d.ts.map +1 -0
- package/dts/chart/axis/XAxis.d.ts +1 -1
- package/dts/chart/axis/XAxis.d.ts.map +1 -1
- package/dts/chart/axis/YAxis.d.ts +2 -2
- package/dts/chart/axis/YAxis.d.ts.map +1 -1
- package/dts/chart/axis/index.d.ts +1 -0
- package/dts/chart/axis/index.d.ts.map +1 -1
- package/dts/chart/bar/Bar.d.ts +49 -12
- package/dts/chart/bar/Bar.d.ts.map +1 -1
- package/dts/chart/bar/BarChart.d.ts +40 -19
- package/dts/chart/bar/BarChart.d.ts.map +1 -1
- package/dts/chart/bar/BarPlot.d.ts +3 -1
- package/dts/chart/bar/BarPlot.d.ts.map +1 -1
- package/dts/chart/bar/BarStack.d.ts +41 -46
- package/dts/chart/bar/BarStack.d.ts.map +1 -1
- package/dts/chart/bar/BarStackGroup.d.ts +2 -0
- package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
- package/dts/chart/bar/DefaultBar.d.ts +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 +25 -0
- package/dts/chart/gradient/Gradient.d.ts.map +1 -0
- package/dts/chart/gradient/index.d.ts +2 -0
- package/dts/chart/gradient/index.d.ts.map +1 -0
- package/dts/chart/index.d.ts +4 -1
- package/dts/chart/index.d.ts.map +1 -1
- package/dts/chart/legend/DefaultLegendEntry.d.ts +5 -0
- package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
- package/dts/chart/legend/DefaultLegendShape.d.ts +5 -0
- package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
- package/dts/chart/legend/Legend.d.ts +168 -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/DefaultReferenceLineLabel.d.ts +9 -0
- package/dts/chart/line/DefaultReferenceLineLabel.d.ts.map +1 -0
- package/dts/chart/line/DottedLine.d.ts +13 -5
- package/dts/chart/line/DottedLine.d.ts.map +1 -1
- package/dts/chart/line/Line.d.ts +61 -27
- package/dts/chart/line/Line.d.ts.map +1 -1
- package/dts/chart/line/LineChart.d.ts +43 -9
- package/dts/chart/line/LineChart.d.ts.map +1 -1
- package/dts/chart/line/ReferenceLine.d.ts +68 -20
- package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
- package/dts/chart/line/SolidLine.d.ts +8 -5
- package/dts/chart/line/SolidLine.d.ts.map +1 -1
- package/dts/chart/line/index.d.ts +1 -1
- package/dts/chart/line/index.d.ts.map +1 -1
- package/dts/chart/point/DefaultPointLabel.d.ts +10 -0
- package/dts/chart/point/DefaultPointLabel.d.ts.map +1 -0
- package/dts/chart/point/Point.d.ts +136 -0
- package/dts/chart/point/Point.d.ts.map +1 -0
- package/dts/chart/point/index.d.ts +3 -0
- package/dts/chart/point/index.d.ts.map +1 -0
- package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +38 -0
- package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -0
- package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts +12 -0
- package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +1 -0
- package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +11 -0
- package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +1 -0
- package/dts/chart/scrubber/Scrubber.d.ts +230 -42
- package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +54 -0
- package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -0
- package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +46 -0
- package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -0
- package/dts/chart/scrubber/ScrubberProvider.d.ts +6 -3
- package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
- package/dts/chart/scrubber/index.d.ts +3 -0
- package/dts/chart/scrubber/index.d.ts.map +1 -1
- package/dts/chart/text/ChartText.d.ts +151 -77
- package/dts/chart/text/ChartText.d.ts.map +1 -1
- package/dts/chart/text/{SmartChartTextGroup.d.ts → ChartTextGroup.d.ts} +9 -3
- package/dts/chart/text/ChartTextGroup.d.ts.map +1 -0
- package/dts/chart/text/index.d.ts +1 -1
- package/dts/chart/text/index.d.ts.map +1 -1
- package/dts/chart/utils/axis.d.ts +25 -1
- package/dts/chart/utils/axis.d.ts.map +1 -1
- package/dts/chart/utils/bar.d.ts +34 -0
- package/dts/chart/utils/bar.d.ts.map +1 -1
- package/dts/chart/utils/chart.d.ts +52 -7
- package/dts/chart/utils/chart.d.ts.map +1 -1
- package/dts/chart/utils/context.d.ts +28 -7
- package/dts/chart/utils/context.d.ts.map +1 -1
- package/dts/chart/utils/gradient.d.ts +117 -0
- package/dts/chart/utils/gradient.d.ts.map +1 -0
- package/dts/chart/utils/index.d.ts +3 -0
- package/dts/chart/utils/index.d.ts.map +1 -1
- package/dts/chart/utils/path.d.ts +59 -0
- package/dts/chart/utils/path.d.ts.map +1 -1
- package/dts/chart/utils/point.d.ts +71 -7
- package/dts/chart/utils/point.d.ts.map +1 -1
- package/dts/chart/utils/scale.d.ts +102 -0
- package/dts/chart/utils/scale.d.ts.map +1 -1
- package/dts/chart/utils/scrubber.d.ts +40 -0
- package/dts/chart/utils/scrubber.d.ts.map +1 -0
- package/dts/chart/utils/transition.d.ts +178 -0
- package/dts/chart/utils/transition.d.ts.map +1 -0
- package/esm/chart/CartesianChart.js +199 -75
- package/esm/chart/ChartContextBridge.js +159 -0
- package/esm/chart/ChartProvider.js +2 -2
- package/esm/chart/Path.js +200 -114
- package/esm/chart/PeriodSelector.js +7 -3
- package/esm/chart/__stories__/CartesianChart.stories.js +307 -134
- package/esm/chart/__stories__/ChartTransitions.stories.js +629 -0
- package/esm/chart/__stories__/PeriodSelector.stories.js +201 -75
- package/esm/chart/area/Area.js +27 -35
- package/esm/chart/area/AreaChart.js +17 -12
- package/esm/chart/area/DottedArea.js +64 -108
- package/esm/chart/area/GradientArea.js +37 -91
- package/esm/chart/area/SolidArea.js +24 -8
- package/esm/chart/area/__stories__/AreaChart.stories.js +1 -1
- package/esm/chart/axis/Axis.js +5 -39
- package/esm/chart/axis/DefaultAxisTickLabel.js +11 -0
- package/esm/chart/axis/XAxis.js +148 -66
- package/esm/chart/axis/YAxis.js +149 -65
- package/esm/chart/axis/__stories__/Axis.stories.js +259 -1
- package/esm/chart/axis/index.js +1 -0
- package/esm/chart/bar/Bar.js +7 -1
- package/esm/chart/bar/BarChart.js +17 -37
- package/esm/chart/bar/BarPlot.js +43 -35
- package/esm/chart/bar/BarStack.js +84 -37
- package/esm/chart/bar/BarStackGroup.js +7 -17
- package/esm/chart/bar/DefaultBar.js +29 -51
- package/esm/chart/bar/DefaultBarStack.js +34 -58
- package/esm/chart/bar/__stories__/BarChart.stories.js +948 -88
- package/esm/chart/gradient/Gradient.js +53 -0
- package/esm/chart/gradient/index.js +1 -0
- package/esm/chart/index.js +4 -1
- package/esm/chart/legend/DefaultLegendEntry.js +42 -0
- package/esm/chart/legend/DefaultLegendShape.js +64 -0
- package/esm/chart/legend/Legend.js +59 -0
- package/esm/chart/legend/__stories__/Legend.stories.js +574 -0
- package/esm/chart/legend/index.js +3 -0
- package/esm/chart/line/DefaultReferenceLineLabel.js +66 -0
- package/esm/chart/line/DottedLine.js +31 -14
- package/esm/chart/line/Line.js +96 -68
- package/esm/chart/line/LineChart.js +21 -14
- package/esm/chart/line/ReferenceLine.js +80 -63
- package/esm/chart/line/SolidLine.js +27 -10
- package/esm/chart/line/__stories__/LineChart.stories.js +1748 -2048
- package/esm/chart/line/__stories__/ReferenceLine.stories.js +177 -28
- package/esm/chart/line/index.js +1 -1
- package/esm/chart/point/DefaultPointLabel.js +39 -0
- package/esm/chart/point/Point.js +186 -0
- package/esm/chart/point/index.js +2 -0
- package/esm/chart/scrubber/DefaultScrubberBeacon.js +180 -0
- package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +43 -0
- package/esm/chart/scrubber/DefaultScrubberLabel.js +28 -0
- package/esm/chart/scrubber/Scrubber.js +130 -144
- package/esm/chart/scrubber/ScrubberBeaconGroup.js +165 -0
- package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +208 -0
- package/esm/chart/scrubber/ScrubberProvider.js +46 -54
- package/esm/chart/scrubber/__stories__/Scrubber.stories.js +760 -0
- package/esm/chart/scrubber/index.js +3 -1
- package/esm/chart/text/ChartText.js +242 -174
- package/esm/chart/text/{SmartChartTextGroup.js → ChartTextGroup.js} +6 -5
- package/esm/chart/text/index.js +1 -1
- package/esm/chart/utils/axis.js +47 -31
- package/esm/chart/utils/bar.js +43 -0
- package/esm/chart/utils/chart.js +57 -3
- package/esm/chart/utils/gradient.js +305 -0
- package/esm/chart/utils/index.js +3 -0
- package/esm/chart/utils/path.js +84 -8
- package/esm/chart/utils/point.js +171 -17
- package/esm/chart/utils/scale.js +242 -2
- package/esm/chart/utils/scrubber.js +146 -0
- package/esm/chart/utils/transition.js +215 -0
- package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
- package/esm/sparkline/__stories__/Sparkline.stories.js +11 -7
- package/esm/sparkline/__stories__/SparklineGradient.stories.js +7 -4
- package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
- package/esm/sparkline/sparkline-interactive/__stories__/SparklineInteractive.stories.js +51 -26
- package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
- package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +17 -9
- package/package.json +15 -10
- package/dts/chart/Point.d.ts +0 -103
- package/dts/chart/Point.d.ts.map +0 -1
- package/dts/chart/line/GradientLine.d.ts +0 -45
- package/dts/chart/line/GradientLine.d.ts.map +0 -1
- package/dts/chart/scrubber/ScrubberBeacon.d.ts +0 -75
- package/dts/chart/scrubber/ScrubberBeacon.d.ts.map +0 -1
- package/dts/chart/text/SmartChartTextGroup.d.ts.map +0 -1
- package/esm/chart/Point.js +0 -111
- package/esm/chart/__stories__/Chart.stories.js +0 -79
- package/esm/chart/line/GradientLine.js +0 -62
- package/esm/chart/scrubber/ScrubberBeacon.js +0 -199
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { memo, useMemo } from 'react';
|
|
2
|
+
import { LinearGradient, vec } from '@shopify/react-native-skia';
|
|
3
|
+
import { useCartesianChartContext } from '../ChartProvider';
|
|
4
|
+
import { getColorWithOpacity, getGradientConfig } from '../utils/gradient';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
/**
|
|
7
|
+
* Renders a Skia LinearGradient element based on a GradientDefinition.
|
|
8
|
+
* The gradient should be used as a child of a Path component.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <Path d={pathString} stroke="red">
|
|
12
|
+
* {gradient && <Gradient gradient={gradient} yAxisId={yAxisId} />}
|
|
13
|
+
* </Path>
|
|
14
|
+
*/
|
|
15
|
+
export const Gradient = /*#__PURE__*/memo(_ref => {
|
|
16
|
+
var _gradient$axis;
|
|
17
|
+
let {
|
|
18
|
+
gradient,
|
|
19
|
+
yAxisId
|
|
20
|
+
} = _ref;
|
|
21
|
+
const context = useCartesianChartContext();
|
|
22
|
+
const xScale = context.getXScale();
|
|
23
|
+
const yScale = context.getYScale(yAxisId);
|
|
24
|
+
const axis = (_gradient$axis = gradient.axis) != null ? _gradient$axis : 'y';
|
|
25
|
+
const scale = axis === 'x' ? xScale : yScale;
|
|
26
|
+
|
|
27
|
+
// Process gradient definition into stops
|
|
28
|
+
const stops = useMemo(() => {
|
|
29
|
+
if (!xScale || !yScale) return;
|
|
30
|
+
return getGradientConfig(gradient, xScale, yScale);
|
|
31
|
+
}, [gradient, xScale, yScale]);
|
|
32
|
+
if (!stops || !scale) return;
|
|
33
|
+
const range = scale.range();
|
|
34
|
+
|
|
35
|
+
// Determine gradient direction based on axis
|
|
36
|
+
// For y-axis, we need to flip the gradient direction because y-scales are inverted
|
|
37
|
+
// (higher data values have smaller pixel values, appearing at the top)
|
|
38
|
+
const start = axis === 'x' ? vec(range[0], 0) : vec(0, range[0]);
|
|
39
|
+
const end = axis === 'x' ? vec(range[1], 0) : vec(0, range[1]);
|
|
40
|
+
|
|
41
|
+
// Extract colors and positions for LinearGradient
|
|
42
|
+
const colors = stops.map(s => {
|
|
43
|
+
var _s$opacity;
|
|
44
|
+
return getColorWithOpacity(s.color, (_s$opacity = s.opacity) != null ? _s$opacity : 1);
|
|
45
|
+
});
|
|
46
|
+
const positions = stops.map(s => s.offset);
|
|
47
|
+
return /*#__PURE__*/_jsx(LinearGradient, {
|
|
48
|
+
colors: colors,
|
|
49
|
+
end: end,
|
|
50
|
+
positions: positions,
|
|
51
|
+
start: start
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Gradient';
|
package/esm/chart/index.js
CHANGED
|
@@ -3,11 +3,14 @@ export * from './area';
|
|
|
3
3
|
export * from './axis';
|
|
4
4
|
export * from './bar';
|
|
5
5
|
export * from './CartesianChart';
|
|
6
|
+
export * from './ChartContextBridge';
|
|
6
7
|
export * from './ChartProvider';
|
|
8
|
+
export * from './gradient';
|
|
9
|
+
export * from './legend';
|
|
7
10
|
export * from './line';
|
|
8
11
|
export * from './Path';
|
|
9
12
|
export * from './PeriodSelector';
|
|
10
|
-
export * from './
|
|
13
|
+
export * from './point';
|
|
11
14
|
export * from './scrubber';
|
|
12
15
|
export * from './text';
|
|
13
16
|
export * from './utils';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const _excluded = ["label", "color", "shape", "ShapeComponent", "gap", "style", "styles", "testID"];
|
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
4
|
+
import { memo } from 'react';
|
|
5
|
+
import { StyleSheet } from 'react-native';
|
|
6
|
+
import { HStack } from '@coinbase/cds-mobile/layout';
|
|
7
|
+
import { Text } from '@coinbase/cds-mobile/typography/Text';
|
|
8
|
+
import { DefaultLegendShape } from './DefaultLegendShape';
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const styles = StyleSheet.create({
|
|
11
|
+
legendEntry: {
|
|
12
|
+
alignItems: 'center'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export const DefaultLegendEntry = /*#__PURE__*/memo(_ref => {
|
|
16
|
+
let {
|
|
17
|
+
label,
|
|
18
|
+
color,
|
|
19
|
+
shape,
|
|
20
|
+
ShapeComponent = DefaultLegendShape,
|
|
21
|
+
gap = 1,
|
|
22
|
+
style,
|
|
23
|
+
styles: stylesProp,
|
|
24
|
+
testID
|
|
25
|
+
} = _ref,
|
|
26
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
27
|
+
return /*#__PURE__*/_jsxs(HStack, _extends({
|
|
28
|
+
gap: gap,
|
|
29
|
+
style: [styles.legendEntry, style, stylesProp == null ? void 0 : stylesProp.root],
|
|
30
|
+
testID: testID
|
|
31
|
+
}, props, {
|
|
32
|
+
children: [/*#__PURE__*/_jsx(ShapeComponent, {
|
|
33
|
+
color: color,
|
|
34
|
+
shape: shape,
|
|
35
|
+
style: stylesProp == null ? void 0 : stylesProp.shape
|
|
36
|
+
}), typeof label === 'string' ? /*#__PURE__*/_jsx(Text, {
|
|
37
|
+
font: "label1",
|
|
38
|
+
style: stylesProp == null ? void 0 : stylesProp.label,
|
|
39
|
+
children: label
|
|
40
|
+
}) : label]
|
|
41
|
+
}));
|
|
42
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const _excluded = ["color", "shape", "style", "testID"];
|
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
4
|
+
import { memo } from 'react';
|
|
5
|
+
import { StyleSheet, View } from 'react-native';
|
|
6
|
+
import { useTheme } from '@coinbase/cds-mobile';
|
|
7
|
+
import { Box } from '@coinbase/cds-mobile/layout';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const styles = StyleSheet.create({
|
|
10
|
+
container: {
|
|
11
|
+
width: 10,
|
|
12
|
+
height: 24,
|
|
13
|
+
alignItems: 'center',
|
|
14
|
+
justifyContent: 'center'
|
|
15
|
+
},
|
|
16
|
+
pill: {
|
|
17
|
+
width: 6,
|
|
18
|
+
height: 24,
|
|
19
|
+
borderRadius: 3
|
|
20
|
+
},
|
|
21
|
+
circle: {
|
|
22
|
+
width: 10,
|
|
23
|
+
height: 10,
|
|
24
|
+
borderRadius: 5
|
|
25
|
+
},
|
|
26
|
+
square: {
|
|
27
|
+
width: 10,
|
|
28
|
+
height: 10
|
|
29
|
+
},
|
|
30
|
+
squircle: {
|
|
31
|
+
width: 10,
|
|
32
|
+
height: 10,
|
|
33
|
+
borderRadius: 2
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const stylesByVariant = {
|
|
37
|
+
pill: styles.pill,
|
|
38
|
+
circle: styles.circle,
|
|
39
|
+
square: styles.square,
|
|
40
|
+
squircle: styles.squircle
|
|
41
|
+
};
|
|
42
|
+
const isVariantShape = shape => typeof shape === 'string' && shape in stylesByVariant;
|
|
43
|
+
export const DefaultLegendShape = /*#__PURE__*/memo(_ref => {
|
|
44
|
+
let {
|
|
45
|
+
color,
|
|
46
|
+
shape = 'circle',
|
|
47
|
+
style,
|
|
48
|
+
testID
|
|
49
|
+
} = _ref,
|
|
50
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
51
|
+
const theme = useTheme();
|
|
52
|
+
if (!isVariantShape(shape)) return shape;
|
|
53
|
+
const variantStyle = stylesByVariant[shape];
|
|
54
|
+
return /*#__PURE__*/_jsx(Box, _extends({
|
|
55
|
+
style: [styles.container, style],
|
|
56
|
+
testID: testID
|
|
57
|
+
}, props, {
|
|
58
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
59
|
+
style: [variantStyle, {
|
|
60
|
+
backgroundColor: color != null ? color : theme.color.fgPrimary
|
|
61
|
+
}]
|
|
62
|
+
})
|
|
63
|
+
}));
|
|
64
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const _excluded = ["flexDirection", "justifyContent", "alignItems", "flexWrap", "rowGap", "columnGap", "seriesIds", "EntryComponent", "ShapeComponent", "accessibilityLabel", "style", "styles"];
|
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
4
|
+
import { forwardRef, memo, useMemo } from 'react';
|
|
5
|
+
import { Box } from '@coinbase/cds-mobile/layout';
|
|
6
|
+
import { useCartesianChartContext } from '../ChartProvider';
|
|
7
|
+
import { DefaultLegendEntry } from './DefaultLegendEntry';
|
|
8
|
+
import { DefaultLegendShape } from './DefaultLegendShape';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export const Legend = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
|
|
11
|
+
let {
|
|
12
|
+
flexDirection = 'row',
|
|
13
|
+
justifyContent = 'center',
|
|
14
|
+
alignItems = flexDirection === 'row' ? 'center' : 'flex-start',
|
|
15
|
+
flexWrap = 'wrap',
|
|
16
|
+
rowGap = 0.75,
|
|
17
|
+
columnGap = 2,
|
|
18
|
+
seriesIds,
|
|
19
|
+
EntryComponent = DefaultLegendEntry,
|
|
20
|
+
ShapeComponent = DefaultLegendShape,
|
|
21
|
+
accessibilityLabel = 'Legend',
|
|
22
|
+
style,
|
|
23
|
+
styles
|
|
24
|
+
} = _ref,
|
|
25
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
26
|
+
const {
|
|
27
|
+
series
|
|
28
|
+
} = useCartesianChartContext();
|
|
29
|
+
const filteredSeries = useMemo(() => {
|
|
30
|
+
if (seriesIds === undefined) return series.filter(s => s.label !== undefined);
|
|
31
|
+
return series.filter(s => seriesIds.includes(s.id) && s.label !== undefined);
|
|
32
|
+
}, [series, seriesIds]);
|
|
33
|
+
if (filteredSeries.length === 0) return;
|
|
34
|
+
return /*#__PURE__*/_jsx(Box, _extends({
|
|
35
|
+
ref: ref,
|
|
36
|
+
accessibilityLabel: accessibilityLabel,
|
|
37
|
+
accessibilityRole: "summary",
|
|
38
|
+
alignItems: alignItems,
|
|
39
|
+
columnGap: columnGap,
|
|
40
|
+
flexDirection: flexDirection,
|
|
41
|
+
flexWrap: flexWrap,
|
|
42
|
+
justifyContent: justifyContent,
|
|
43
|
+
rowGap: rowGap,
|
|
44
|
+
style: [style, styles == null ? void 0 : styles.root]
|
|
45
|
+
}, props, {
|
|
46
|
+
children: filteredSeries.map(s => /*#__PURE__*/_jsx(EntryComponent, {
|
|
47
|
+
ShapeComponent: ShapeComponent,
|
|
48
|
+
color: s.color,
|
|
49
|
+
label: s.label,
|
|
50
|
+
seriesId: s.id,
|
|
51
|
+
shape: s.legendShape,
|
|
52
|
+
styles: {
|
|
53
|
+
root: styles == null ? void 0 : styles.entry,
|
|
54
|
+
shape: styles == null ? void 0 : styles.entryShape,
|
|
55
|
+
label: styles == null ? void 0 : styles.entryLabel
|
|
56
|
+
}
|
|
57
|
+
}, s.id))
|
|
58
|
+
}));
|
|
59
|
+
}));
|