@coinbase/cds-mobile-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 +142 -0
- package/dts/chart/CartesianChart.d.ts +92 -7
- package/dts/chart/CartesianChart.d.ts.map +1 -1
- package/dts/chart/ChartContextBridge.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 +36 -13
- package/dts/chart/Path.d.ts.map +1 -1
- package/dts/chart/PeriodSelector.d.ts +21 -6
- package/dts/chart/PeriodSelector.d.ts.map +1 -1
- package/dts/chart/area/Area.d.ts +14 -11
- package/dts/chart/area/Area.d.ts.map +1 -1
- package/dts/chart/area/AreaChart.d.ts +33 -9
- 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 +22 -42
- 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 +1 -0
- 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 +56 -11
- 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 +45 -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 +5 -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 +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/DottedLine.d.ts.map +1 -1
- package/dts/chart/line/Line.d.ts +23 -19
- package/dts/chart/line/Line.d.ts.map +1 -1
- package/dts/chart/line/LineChart.d.ts +26 -9
- package/dts/chart/line/LineChart.d.ts.map +1 -1
- package/dts/chart/line/ReferenceLine.d.ts +1 -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 +32 -2
- package/dts/chart/scrubber/DefaultScrubberBeacon.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 +86 -17
- package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts +12 -0
- package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts.map +1 -0
- 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 +16 -1
- package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -1
- package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
- package/dts/chart/utils/axis.d.ts +45 -10
- package/dts/chart/utils/axis.d.ts.map +1 -1
- package/dts/chart/utils/bar.d.ts +190 -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 +21 -6
- 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 +24 -12
- 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 +63 -22
- 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 +176 -82
- package/esm/chart/ChartContextBridge.js +14 -3
- package/esm/chart/ChartProvider.js +2 -2
- package/esm/chart/Path.js +34 -29
- package/esm/chart/PeriodSelector.js +6 -2
- package/esm/chart/__stories__/CartesianChart.stories.js +27 -86
- package/esm/chart/__stories__/ChartAccessibility.stories.js +721 -0
- package/esm/chart/__stories__/ChartTransitions.stories.js +625 -0
- package/esm/chart/__stories__/PeriodSelector.stories.js +102 -4
- package/esm/chart/area/Area.js +21 -9
- package/esm/chart/area/AreaChart.js +18 -13
- package/esm/chart/area/DottedArea.js +28 -18
- package/esm/chart/area/GradientArea.js +14 -7
- package/esm/chart/area/SolidArea.js +6 -2
- package/esm/chart/area/__stories__/AreaChart.stories.js +47 -5
- package/esm/chart/axis/Axis.js +5 -41
- package/esm/chart/axis/XAxis.js +116 -47
- package/esm/chart/axis/YAxis.js +105 -26
- package/esm/chart/axis/__stories__/Axis.stories.js +324 -48
- package/esm/chart/bar/Bar.js +17 -15
- package/esm/chart/bar/BarChart.js +38 -33
- package/esm/chart/bar/BarPlot.js +40 -45
- package/esm/chart/bar/BarStack.js +92 -475
- package/esm/chart/bar/BarStackGroup.js +37 -27
- package/esm/chart/bar/DefaultBar.js +27 -18
- package/esm/chart/bar/DefaultBarStack.js +25 -9
- package/esm/chart/bar/__stories__/BarChart.stories.js +728 -54
- package/esm/chart/gradient/Gradient.js +2 -1
- package/esm/chart/index.js +1 -0
- 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/DottedLine.js +6 -2
- package/esm/chart/line/Line.js +42 -38
- package/esm/chart/line/LineChart.js +36 -12
- package/esm/chart/line/SolidLine.js +6 -2
- package/esm/chart/line/__stories__/LineChart.stories.js +241 -594
- package/esm/chart/line/__stories__/ReferenceLine.stories.js +95 -1
- package/esm/chart/point/Point.js +35 -36
- package/esm/chart/scrubber/DefaultScrubberBeacon.js +41 -38
- package/esm/chart/scrubber/DefaultScrubberLabel.js +26 -10
- package/esm/chart/scrubber/Scrubber.js +67 -35
- package/esm/chart/scrubber/ScrubberAccessibilityView.js +177 -0
- package/esm/chart/scrubber/ScrubberBeaconGroup.js +30 -22
- package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +35 -8
- package/esm/chart/scrubber/ScrubberProvider.js +29 -24
- package/esm/chart/scrubber/__stories__/Scrubber.stories.js +946 -0
- package/esm/chart/utils/axis.js +88 -44
- package/esm/chart/utils/bar.js +820 -0
- package/esm/chart/utils/chart.js +34 -7
- package/esm/chart/utils/context.js +7 -0
- package/esm/chart/utils/gradient.js +8 -4
- package/esm/chart/utils/path.js +91 -61
- package/esm/chart/utils/point.js +92 -39
- package/esm/chart/utils/scale.js +13 -2
- package/esm/chart/utils/scrubber.js +12 -5
- package/esm/chart/utils/transition.js +108 -60
- 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/__stories__/Sparkline.stories.js +11 -7
- package/esm/sparkline/__stories__/SparklineGradient.stories.js +7 -4
- 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/__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 +19 -9
- package/package.json +13 -10
- package/esm/chart/__stories__/Chart.stories.js +0 -77
|
@@ -16,10 +16,11 @@ export const Gradient = /*#__PURE__*/memo(_ref => {
|
|
|
16
16
|
var _gradient$axis;
|
|
17
17
|
let {
|
|
18
18
|
gradient,
|
|
19
|
+
xAxisId,
|
|
19
20
|
yAxisId
|
|
20
21
|
} = _ref;
|
|
21
22
|
const context = useCartesianChartContext();
|
|
22
|
-
const xScale = context.getXScale();
|
|
23
|
+
const xScale = context.getXScale(xAxisId);
|
|
23
24
|
const yScale = context.getYScale(yAxisId);
|
|
24
25
|
const axis = (_gradient$axis = gradient.axis) != null ? _gradient$axis : 'y';
|
|
25
26
|
const scale = axis === 'x' ? xScale : yScale;
|
package/esm/chart/index.js
CHANGED
|
@@ -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
|
+
}));
|