@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.
Files changed (211) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/dts/chart/CartesianChart.d.ts +92 -34
  3. package/dts/chart/CartesianChart.d.ts.map +1 -1
  4. package/dts/chart/ChartContextBridge.d.ts +28 -0
  5. package/dts/chart/ChartContextBridge.d.ts.map +1 -0
  6. package/dts/chart/ChartProvider.d.ts +3 -0
  7. package/dts/chart/ChartProvider.d.ts.map +1 -1
  8. package/dts/chart/Path.d.ts +97 -32
  9. package/dts/chart/Path.d.ts.map +1 -1
  10. package/dts/chart/PeriodSelector.d.ts +6 -13
  11. package/dts/chart/PeriodSelector.d.ts.map +1 -1
  12. package/dts/chart/area/Area.d.ts +39 -28
  13. package/dts/chart/area/Area.d.ts.map +1 -1
  14. package/dts/chart/area/AreaChart.d.ts +51 -10
  15. package/dts/chart/area/AreaChart.d.ts.map +1 -1
  16. package/dts/chart/area/DottedArea.d.ts +21 -2
  17. package/dts/chart/area/DottedArea.d.ts.map +1 -1
  18. package/dts/chart/area/GradientArea.d.ts +19 -13
  19. package/dts/chart/area/GradientArea.d.ts.map +1 -1
  20. package/dts/chart/area/SolidArea.d.ts +17 -2
  21. package/dts/chart/area/SolidArea.d.ts.map +1 -1
  22. package/dts/chart/axis/Axis.d.ts +86 -118
  23. package/dts/chart/axis/Axis.d.ts.map +1 -1
  24. package/dts/chart/axis/DefaultAxisTickLabel.d.ts +8 -0
  25. package/dts/chart/axis/DefaultAxisTickLabel.d.ts.map +1 -0
  26. package/dts/chart/axis/XAxis.d.ts +1 -1
  27. package/dts/chart/axis/XAxis.d.ts.map +1 -1
  28. package/dts/chart/axis/YAxis.d.ts +2 -2
  29. package/dts/chart/axis/YAxis.d.ts.map +1 -1
  30. package/dts/chart/axis/index.d.ts +1 -0
  31. package/dts/chart/axis/index.d.ts.map +1 -1
  32. package/dts/chart/bar/Bar.d.ts +49 -12
  33. package/dts/chart/bar/Bar.d.ts.map +1 -1
  34. package/dts/chart/bar/BarChart.d.ts +40 -19
  35. package/dts/chart/bar/BarChart.d.ts.map +1 -1
  36. package/dts/chart/bar/BarPlot.d.ts +3 -1
  37. package/dts/chart/bar/BarPlot.d.ts.map +1 -1
  38. package/dts/chart/bar/BarStack.d.ts +41 -46
  39. package/dts/chart/bar/BarStack.d.ts.map +1 -1
  40. package/dts/chart/bar/BarStackGroup.d.ts +2 -0
  41. package/dts/chart/bar/BarStackGroup.d.ts.map +1 -1
  42. package/dts/chart/bar/DefaultBar.d.ts +1 -1
  43. package/dts/chart/bar/DefaultBar.d.ts.map +1 -1
  44. package/dts/chart/bar/DefaultBarStack.d.ts.map +1 -1
  45. package/dts/chart/gradient/Gradient.d.ts +25 -0
  46. package/dts/chart/gradient/Gradient.d.ts.map +1 -0
  47. package/dts/chart/gradient/index.d.ts +2 -0
  48. package/dts/chart/gradient/index.d.ts.map +1 -0
  49. package/dts/chart/index.d.ts +4 -1
  50. package/dts/chart/index.d.ts.map +1 -1
  51. package/dts/chart/legend/DefaultLegendEntry.d.ts +5 -0
  52. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +1 -0
  53. package/dts/chart/legend/DefaultLegendShape.d.ts +5 -0
  54. package/dts/chart/legend/DefaultLegendShape.d.ts.map +1 -0
  55. package/dts/chart/legend/Legend.d.ts +168 -0
  56. package/dts/chart/legend/Legend.d.ts.map +1 -0
  57. package/dts/chart/legend/index.d.ts +4 -0
  58. package/dts/chart/legend/index.d.ts.map +1 -0
  59. package/dts/chart/line/DefaultReferenceLineLabel.d.ts +9 -0
  60. package/dts/chart/line/DefaultReferenceLineLabel.d.ts.map +1 -0
  61. package/dts/chart/line/DottedLine.d.ts +13 -5
  62. package/dts/chart/line/DottedLine.d.ts.map +1 -1
  63. package/dts/chart/line/Line.d.ts +61 -27
  64. package/dts/chart/line/Line.d.ts.map +1 -1
  65. package/dts/chart/line/LineChart.d.ts +43 -9
  66. package/dts/chart/line/LineChart.d.ts.map +1 -1
  67. package/dts/chart/line/ReferenceLine.d.ts +68 -20
  68. package/dts/chart/line/ReferenceLine.d.ts.map +1 -1
  69. package/dts/chart/line/SolidLine.d.ts +8 -5
  70. package/dts/chart/line/SolidLine.d.ts.map +1 -1
  71. package/dts/chart/line/index.d.ts +1 -1
  72. package/dts/chart/line/index.d.ts.map +1 -1
  73. package/dts/chart/point/DefaultPointLabel.d.ts +10 -0
  74. package/dts/chart/point/DefaultPointLabel.d.ts.map +1 -0
  75. package/dts/chart/point/Point.d.ts +136 -0
  76. package/dts/chart/point/Point.d.ts.map +1 -0
  77. package/dts/chart/point/index.d.ts +3 -0
  78. package/dts/chart/point/index.d.ts.map +1 -0
  79. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +38 -0
  80. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +1 -0
  81. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts +12 -0
  82. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +1 -0
  83. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +11 -0
  84. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +1 -0
  85. package/dts/chart/scrubber/Scrubber.d.ts +230 -42
  86. package/dts/chart/scrubber/Scrubber.d.ts.map +1 -1
  87. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +54 -0
  88. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +1 -0
  89. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +46 -0
  90. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +1 -0
  91. package/dts/chart/scrubber/ScrubberProvider.d.ts +6 -3
  92. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +1 -1
  93. package/dts/chart/scrubber/index.d.ts +3 -0
  94. package/dts/chart/scrubber/index.d.ts.map +1 -1
  95. package/dts/chart/text/ChartText.d.ts +151 -77
  96. package/dts/chart/text/ChartText.d.ts.map +1 -1
  97. package/dts/chart/text/{SmartChartTextGroup.d.ts → ChartTextGroup.d.ts} +9 -3
  98. package/dts/chart/text/ChartTextGroup.d.ts.map +1 -0
  99. package/dts/chart/text/index.d.ts +1 -1
  100. package/dts/chart/text/index.d.ts.map +1 -1
  101. package/dts/chart/utils/axis.d.ts +25 -1
  102. package/dts/chart/utils/axis.d.ts.map +1 -1
  103. package/dts/chart/utils/bar.d.ts +34 -0
  104. package/dts/chart/utils/bar.d.ts.map +1 -1
  105. package/dts/chart/utils/chart.d.ts +52 -7
  106. package/dts/chart/utils/chart.d.ts.map +1 -1
  107. package/dts/chart/utils/context.d.ts +28 -7
  108. package/dts/chart/utils/context.d.ts.map +1 -1
  109. package/dts/chart/utils/gradient.d.ts +117 -0
  110. package/dts/chart/utils/gradient.d.ts.map +1 -0
  111. package/dts/chart/utils/index.d.ts +3 -0
  112. package/dts/chart/utils/index.d.ts.map +1 -1
  113. package/dts/chart/utils/path.d.ts +59 -0
  114. package/dts/chart/utils/path.d.ts.map +1 -1
  115. package/dts/chart/utils/point.d.ts +71 -7
  116. package/dts/chart/utils/point.d.ts.map +1 -1
  117. package/dts/chart/utils/scale.d.ts +102 -0
  118. package/dts/chart/utils/scale.d.ts.map +1 -1
  119. package/dts/chart/utils/scrubber.d.ts +40 -0
  120. package/dts/chart/utils/scrubber.d.ts.map +1 -0
  121. package/dts/chart/utils/transition.d.ts +178 -0
  122. package/dts/chart/utils/transition.d.ts.map +1 -0
  123. package/esm/chart/CartesianChart.js +199 -75
  124. package/esm/chart/ChartContextBridge.js +159 -0
  125. package/esm/chart/ChartProvider.js +2 -2
  126. package/esm/chart/Path.js +200 -114
  127. package/esm/chart/PeriodSelector.js +7 -3
  128. package/esm/chart/__stories__/CartesianChart.stories.js +307 -134
  129. package/esm/chart/__stories__/ChartTransitions.stories.js +629 -0
  130. package/esm/chart/__stories__/PeriodSelector.stories.js +201 -75
  131. package/esm/chart/area/Area.js +27 -35
  132. package/esm/chart/area/AreaChart.js +17 -12
  133. package/esm/chart/area/DottedArea.js +64 -108
  134. package/esm/chart/area/GradientArea.js +37 -91
  135. package/esm/chart/area/SolidArea.js +24 -8
  136. package/esm/chart/area/__stories__/AreaChart.stories.js +1 -1
  137. package/esm/chart/axis/Axis.js +5 -39
  138. package/esm/chart/axis/DefaultAxisTickLabel.js +11 -0
  139. package/esm/chart/axis/XAxis.js +148 -66
  140. package/esm/chart/axis/YAxis.js +149 -65
  141. package/esm/chart/axis/__stories__/Axis.stories.js +259 -1
  142. package/esm/chart/axis/index.js +1 -0
  143. package/esm/chart/bar/Bar.js +7 -1
  144. package/esm/chart/bar/BarChart.js +17 -37
  145. package/esm/chart/bar/BarPlot.js +43 -35
  146. package/esm/chart/bar/BarStack.js +84 -37
  147. package/esm/chart/bar/BarStackGroup.js +7 -17
  148. package/esm/chart/bar/DefaultBar.js +29 -51
  149. package/esm/chart/bar/DefaultBarStack.js +34 -58
  150. package/esm/chart/bar/__stories__/BarChart.stories.js +948 -88
  151. package/esm/chart/gradient/Gradient.js +53 -0
  152. package/esm/chart/gradient/index.js +1 -0
  153. package/esm/chart/index.js +4 -1
  154. package/esm/chart/legend/DefaultLegendEntry.js +42 -0
  155. package/esm/chart/legend/DefaultLegendShape.js +64 -0
  156. package/esm/chart/legend/Legend.js +59 -0
  157. package/esm/chart/legend/__stories__/Legend.stories.js +574 -0
  158. package/esm/chart/legend/index.js +3 -0
  159. package/esm/chart/line/DefaultReferenceLineLabel.js +66 -0
  160. package/esm/chart/line/DottedLine.js +31 -14
  161. package/esm/chart/line/Line.js +96 -68
  162. package/esm/chart/line/LineChart.js +21 -14
  163. package/esm/chart/line/ReferenceLine.js +80 -63
  164. package/esm/chart/line/SolidLine.js +27 -10
  165. package/esm/chart/line/__stories__/LineChart.stories.js +1748 -2048
  166. package/esm/chart/line/__stories__/ReferenceLine.stories.js +177 -28
  167. package/esm/chart/line/index.js +1 -1
  168. package/esm/chart/point/DefaultPointLabel.js +39 -0
  169. package/esm/chart/point/Point.js +186 -0
  170. package/esm/chart/point/index.js +2 -0
  171. package/esm/chart/scrubber/DefaultScrubberBeacon.js +180 -0
  172. package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +43 -0
  173. package/esm/chart/scrubber/DefaultScrubberLabel.js +28 -0
  174. package/esm/chart/scrubber/Scrubber.js +130 -144
  175. package/esm/chart/scrubber/ScrubberBeaconGroup.js +165 -0
  176. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +208 -0
  177. package/esm/chart/scrubber/ScrubberProvider.js +46 -54
  178. package/esm/chart/scrubber/__stories__/Scrubber.stories.js +760 -0
  179. package/esm/chart/scrubber/index.js +3 -1
  180. package/esm/chart/text/ChartText.js +242 -174
  181. package/esm/chart/text/{SmartChartTextGroup.js → ChartTextGroup.js} +6 -5
  182. package/esm/chart/text/index.js +1 -1
  183. package/esm/chart/utils/axis.js +47 -31
  184. package/esm/chart/utils/bar.js +43 -0
  185. package/esm/chart/utils/chart.js +57 -3
  186. package/esm/chart/utils/gradient.js +305 -0
  187. package/esm/chart/utils/index.js +3 -0
  188. package/esm/chart/utils/path.js +84 -8
  189. package/esm/chart/utils/point.js +171 -17
  190. package/esm/chart/utils/scale.js +242 -2
  191. package/esm/chart/utils/scrubber.js +146 -0
  192. package/esm/chart/utils/transition.js +215 -0
  193. package/esm/sparkline/__figma__/Sparkline.figma.js +1 -1
  194. package/esm/sparkline/__stories__/Sparkline.stories.js +11 -7
  195. package/esm/sparkline/__stories__/SparklineGradient.stories.js +7 -4
  196. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +1 -1
  197. package/esm/sparkline/sparkline-interactive/__stories__/SparklineInteractive.stories.js +51 -26
  198. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +1 -1
  199. package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +17 -9
  200. package/package.json +15 -10
  201. package/dts/chart/Point.d.ts +0 -103
  202. package/dts/chart/Point.d.ts.map +0 -1
  203. package/dts/chart/line/GradientLine.d.ts +0 -45
  204. package/dts/chart/line/GradientLine.d.ts.map +0 -1
  205. package/dts/chart/scrubber/ScrubberBeacon.d.ts +0 -75
  206. package/dts/chart/scrubber/ScrubberBeacon.d.ts.map +0 -1
  207. package/dts/chart/text/SmartChartTextGroup.d.ts.map +0 -1
  208. package/esm/chart/Point.js +0 -111
  209. package/esm/chart/__stories__/Chart.stories.js +0 -79
  210. package/esm/chart/line/GradientLine.js +0 -62
  211. 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';
@@ -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 './Point';
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
+ }));