@ledgerhq/lumen-ui-rnative-visualization 0.1.10 → 0.1.11

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 (163) hide show
  1. package/dist/module/lib/Components/Axis/XAxis/XAxis.js +1 -1
  2. package/dist/module/lib/Components/Axis/XAxis/XAxis.js.map +1 -1
  3. package/dist/module/lib/Components/Axis/YAxis/YAxis.js +1 -1
  4. package/dist/module/lib/Components/Axis/YAxis/YAxis.js.map +1 -1
  5. package/dist/module/lib/Components/CartesianChart/CartesianChart.js +31 -28
  6. package/dist/module/lib/Components/CartesianChart/CartesianChart.js.map +1 -1
  7. package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.js +53 -0
  8. package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.js.map +1 -0
  9. package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.js +144 -0
  10. package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.js.map +1 -0
  11. package/dist/module/lib/Components/CartesianChart/RevealClip/context.js +8 -0
  12. package/dist/module/lib/Components/CartesianChart/RevealClip/context.js.map +1 -0
  13. package/dist/module/lib/Components/CartesianChart/RevealClip/index.js +5 -0
  14. package/dist/module/lib/Components/CartesianChart/RevealClip/index.js.map +1 -0
  15. package/dist/module/lib/Components/CartesianChart/RevealClip/types.js +4 -0
  16. package/dist/module/lib/Components/CartesianChart/RevealClip/types.js.map +1 -0
  17. package/dist/module/lib/Components/CartesianChart/RevealClip/utils.js +32 -0
  18. package/dist/module/lib/Components/CartesianChart/RevealClip/utils.js.map +1 -0
  19. package/dist/module/lib/Components/CartesianChart/utils.js +4 -4
  20. package/dist/module/lib/Components/Line/Line.js +5 -2
  21. package/dist/module/lib/Components/Line/Line.js.map +1 -1
  22. package/dist/module/lib/Components/LineChart/LineChart.js +7 -1
  23. package/dist/module/lib/Components/LineChart/LineChart.js.map +1 -1
  24. package/dist/module/lib/Components/LineChart/LineChart.test.js +25 -0
  25. package/dist/module/lib/Components/LineChart/LineChart.test.js.map +1 -1
  26. package/dist/module/lib/Components/Point/Point.js +3 -0
  27. package/dist/module/lib/Components/Point/Point.js.map +1 -1
  28. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.js +125 -0
  29. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.js.map +1 -0
  30. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.stories.js +111 -0
  31. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.stories.js.map +1 -0
  32. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.test.js +338 -0
  33. package/dist/module/lib/Components/ReferenceLine/ReferenceLine.test.js.map +1 -0
  34. package/dist/module/lib/Components/ReferenceLine/constants.js +5 -0
  35. package/dist/module/lib/Components/ReferenceLine/constants.js.map +1 -0
  36. package/dist/module/lib/Components/ReferenceLine/index.js +5 -0
  37. package/dist/module/lib/Components/ReferenceLine/index.js.map +1 -0
  38. package/dist/module/lib/Components/ReferenceLine/types.js +2 -0
  39. package/dist/module/lib/Components/ReferenceLine/types.js.map +1 -0
  40. package/dist/module/lib/Components/ReferenceLine/utils.js +121 -0
  41. package/dist/module/lib/Components/ReferenceLine/utils.js.map +1 -0
  42. package/dist/module/lib/Components/ReferenceLine/utils.test.js +297 -0
  43. package/dist/module/lib/Components/ReferenceLine/utils.test.js.map +1 -0
  44. package/dist/module/lib/Components/Scrubber/Scrubber.js +152 -0
  45. package/dist/module/lib/Components/Scrubber/Scrubber.js.map +1 -0
  46. package/dist/module/lib/Components/Scrubber/Scrubber.stories.js +113 -0
  47. package/dist/module/lib/Components/Scrubber/Scrubber.stories.js.map +1 -0
  48. package/dist/module/lib/Components/Scrubber/Scrubber.test.js +132 -0
  49. package/dist/module/lib/Components/Scrubber/Scrubber.test.js.map +1 -0
  50. package/dist/module/lib/Components/Scrubber/ScrubberProvider.js +105 -0
  51. package/dist/module/lib/Components/Scrubber/ScrubberProvider.js.map +1 -0
  52. package/dist/module/lib/Components/Scrubber/ScrubberProvider.test.js +217 -0
  53. package/dist/module/lib/Components/Scrubber/ScrubberProvider.test.js.map +1 -0
  54. package/dist/module/lib/Components/Scrubber/constants.js +10 -0
  55. package/dist/module/lib/Components/Scrubber/constants.js.map +1 -0
  56. package/dist/module/lib/Components/Scrubber/context/index.js +4 -0
  57. package/dist/module/lib/Components/Scrubber/context/index.js.map +1 -0
  58. package/dist/module/lib/Components/Scrubber/context/scrubberContext.js +10 -0
  59. package/dist/module/lib/Components/Scrubber/context/scrubberContext.js.map +1 -0
  60. package/dist/module/lib/Components/Scrubber/index.js +5 -0
  61. package/dist/module/lib/Components/Scrubber/index.js.map +1 -0
  62. package/dist/module/lib/Components/Scrubber/types.js +4 -0
  63. package/dist/module/lib/Components/Scrubber/types.js.map +1 -0
  64. package/dist/module/lib/Components/Scrubber/utils.js +83 -0
  65. package/dist/module/lib/Components/Scrubber/utils.js.map +1 -0
  66. package/dist/module/lib/Components/Scrubber/utils.test.js +192 -0
  67. package/dist/module/lib/Components/Scrubber/utils.test.js.map +1 -0
  68. package/dist/module/lib/Components/index.js +2 -0
  69. package/dist/module/lib/Components/index.js.map +1 -1
  70. package/dist/module/lib/utils/scales/scales.js +16 -8
  71. package/dist/module/lib/utils/scales/scales.js.map +1 -1
  72. package/dist/module/lib/utils/scales/scales.test.js +32 -1
  73. package/dist/module/lib/utils/scales/scales.test.js.map +1 -1
  74. package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts +1 -1
  75. package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts.map +1 -1
  76. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts +3 -0
  77. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts.map +1 -0
  78. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/context.d.ts +7 -0
  79. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/context.d.ts.map +1 -0
  80. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/index.d.ts +3 -0
  81. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/index.d.ts.map +1 -0
  82. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/types.d.ts +38 -0
  83. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/types.d.ts.map +1 -0
  84. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/utils.d.ts +17 -0
  85. package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/utils.d.ts.map +1 -0
  86. package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts +17 -0
  87. package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts.map +1 -1
  88. package/dist/typescript/src/lib/Components/Line/Line.d.ts.map +1 -1
  89. package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts +1 -1
  90. package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts.map +1 -1
  91. package/dist/typescript/src/lib/Components/LineChart/types.d.ts +16 -0
  92. package/dist/typescript/src/lib/Components/LineChart/types.d.ts.map +1 -1
  93. package/dist/typescript/src/lib/Components/Point/Point.d.ts.map +1 -1
  94. package/dist/typescript/src/lib/Components/ReferenceLine/ReferenceLine.d.ts +3 -0
  95. package/dist/typescript/src/lib/Components/ReferenceLine/ReferenceLine.d.ts.map +1 -0
  96. package/dist/typescript/src/lib/Components/ReferenceLine/constants.d.ts +3 -0
  97. package/dist/typescript/src/lib/Components/ReferenceLine/constants.d.ts.map +1 -0
  98. package/dist/typescript/src/lib/Components/ReferenceLine/index.d.ts +3 -0
  99. package/dist/typescript/src/lib/Components/ReferenceLine/index.d.ts.map +1 -0
  100. package/dist/typescript/src/lib/Components/ReferenceLine/types.d.ts +74 -0
  101. package/dist/typescript/src/lib/Components/ReferenceLine/types.d.ts.map +1 -0
  102. package/dist/typescript/src/lib/Components/ReferenceLine/utils.d.ts +55 -0
  103. package/dist/typescript/src/lib/Components/ReferenceLine/utils.d.ts.map +1 -0
  104. package/dist/typescript/src/lib/Components/Scrubber/Scrubber.d.ts +17 -0
  105. package/dist/typescript/src/lib/Components/Scrubber/Scrubber.d.ts.map +1 -0
  106. package/dist/typescript/src/lib/Components/Scrubber/ScrubberProvider.d.ts +16 -0
  107. package/dist/typescript/src/lib/Components/Scrubber/ScrubberProvider.d.ts.map +1 -0
  108. package/dist/typescript/src/lib/Components/Scrubber/constants.d.ts +8 -0
  109. package/dist/typescript/src/lib/Components/Scrubber/constants.d.ts.map +1 -0
  110. package/dist/typescript/src/lib/Components/Scrubber/context/index.d.ts +2 -0
  111. package/dist/typescript/src/lib/Components/Scrubber/context/index.d.ts.map +1 -0
  112. package/dist/typescript/src/lib/Components/Scrubber/context/scrubberContext.d.ts +8 -0
  113. package/dist/typescript/src/lib/Components/Scrubber/context/scrubberContext.d.ts.map +1 -0
  114. package/dist/typescript/src/lib/Components/Scrubber/index.d.ts +4 -0
  115. package/dist/typescript/src/lib/Components/Scrubber/index.d.ts.map +1 -0
  116. package/dist/typescript/src/lib/Components/Scrubber/types.d.ts +57 -0
  117. package/dist/typescript/src/lib/Components/Scrubber/types.d.ts.map +1 -0
  118. package/dist/typescript/src/lib/Components/Scrubber/utils.d.ts +22 -0
  119. package/dist/typescript/src/lib/Components/Scrubber/utils.d.ts.map +1 -0
  120. package/dist/typescript/src/lib/Components/index.d.ts +2 -0
  121. package/dist/typescript/src/lib/Components/index.d.ts.map +1 -1
  122. package/dist/typescript/src/lib/utils/scales/scales.d.ts +6 -0
  123. package/dist/typescript/src/lib/utils/scales/scales.d.ts.map +1 -1
  124. package/package.json +6 -3
  125. package/src/lib/Components/Axis/XAxis/XAxis.tsx +1 -1
  126. package/src/lib/Components/Axis/YAxis/YAxis.tsx +1 -1
  127. package/src/lib/Components/CartesianChart/CartesianChart.tsx +32 -32
  128. package/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.tsx +129 -0
  129. package/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.tsx +59 -0
  130. package/src/lib/Components/CartesianChart/RevealClip/context.ts +13 -0
  131. package/src/lib/Components/CartesianChart/RevealClip/index.ts +2 -0
  132. package/src/lib/Components/CartesianChart/RevealClip/types.ts +38 -0
  133. package/src/lib/Components/CartesianChart/RevealClip/utils.ts +51 -0
  134. package/src/lib/Components/CartesianChart/types.ts +17 -0
  135. package/src/lib/Components/CartesianChart/utils.ts +4 -4
  136. package/src/lib/Components/Line/Line.tsx +5 -3
  137. package/src/lib/Components/LineChart/LineChart.test.tsx +23 -0
  138. package/src/lib/Components/LineChart/LineChart.tsx +6 -0
  139. package/src/lib/Components/LineChart/types.ts +16 -0
  140. package/src/lib/Components/Point/Point.tsx +3 -1
  141. package/src/lib/Components/ReferenceLine/ReferenceLine.stories.tsx +109 -0
  142. package/src/lib/Components/ReferenceLine/ReferenceLine.test.tsx +269 -0
  143. package/src/lib/Components/ReferenceLine/ReferenceLine.tsx +149 -0
  144. package/src/lib/Components/ReferenceLine/constants.ts +2 -0
  145. package/src/lib/Components/ReferenceLine/index.ts +2 -0
  146. package/src/lib/Components/ReferenceLine/types.ts +79 -0
  147. package/src/lib/Components/ReferenceLine/utils.test.ts +332 -0
  148. package/src/lib/Components/ReferenceLine/utils.ts +175 -0
  149. package/src/lib/Components/Scrubber/Scrubber.stories.tsx +122 -0
  150. package/src/lib/Components/Scrubber/Scrubber.test.tsx +110 -0
  151. package/src/lib/Components/Scrubber/Scrubber.tsx +189 -0
  152. package/src/lib/Components/Scrubber/ScrubberProvider.test.tsx +223 -0
  153. package/src/lib/Components/Scrubber/ScrubberProvider.tsx +132 -0
  154. package/src/lib/Components/Scrubber/constants.ts +7 -0
  155. package/src/lib/Components/Scrubber/context/index.ts +1 -0
  156. package/src/lib/Components/Scrubber/context/scrubberContext.ts +14 -0
  157. package/src/lib/Components/Scrubber/index.ts +3 -0
  158. package/src/lib/Components/Scrubber/types.ts +59 -0
  159. package/src/lib/Components/Scrubber/utils.test.ts +172 -0
  160. package/src/lib/Components/Scrubber/utils.ts +126 -0
  161. package/src/lib/Components/index.ts +2 -0
  162. package/src/lib/utils/scales/scales.test.ts +22 -0
  163. package/src/lib/utils/scales/scales.ts +19 -9
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export * from "./ReferenceLine.js";
4
+ export * from "./types.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["lib/Components/ReferenceLine/index.ts"],"mappings":";;AAAA,cAAc,oBAAiB;AAC/B,cAAc,YAAS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["lib/Components/ReferenceLine/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ import { getPointOnScale, isCategoricalScale } from "../../utils/scales/scales.js";
4
+ const DEFAULT_H_ALIGN = 'center';
5
+ const DEFAULT_V_ALIGN = 'end';
6
+ const DY_RATIO = {
7
+ auto: 0,
8
+ central: 0.35,
9
+ hanging: 0.8
10
+ };
11
+ const textAnchorMap = {
12
+ start: 'end',
13
+ center: 'middle',
14
+ end: 'start'
15
+ };
16
+ const dominantBaselineMap = {
17
+ start: 'auto',
18
+ center: 'central',
19
+ end: 'hanging'
20
+ };
21
+ const positionRatio = {
22
+ start: 0,
23
+ center: 0.5,
24
+ end: 1
25
+ };
26
+
27
+ /**
28
+ * Converts a `dominantBaseline` value to a `dy` pixel offset.
29
+ * react-native-svg doesn't support `dominantBaseline`, so we emulate it
30
+ * with a font-relative `dy` shift — same approach used by Axis components.
31
+ */
32
+ export const dominantBaselineToDy = (baseline, fontSize) => fontSize * DY_RATIO[baseline];
33
+
34
+ /**
35
+ * Checks whether a pixel coordinate falls within the drawing area
36
+ * along a single axis.
37
+ */
38
+ export const isPixelWithinDrawingArea = (pixel, axis, drawingArea) => {
39
+ if (axis === 'x') {
40
+ return pixel >= drawingArea.x && pixel <= drawingArea.x + drawingArea.width;
41
+ }
42
+ return pixel >= drawingArea.y && pixel <= drawingArea.y + drawingArea.height;
43
+ };
44
+
45
+ /**
46
+ * Translates a data index into the value the axis scale expects.
47
+ * When the axis config contains numeric `data`, the index is mapped to the
48
+ * corresponding value — returns `undefined` if the index is out of bounds.
49
+ * When there is no numeric axis data the index is used directly.
50
+ */
51
+ const resolveDataValue = (index, axisConfig) => {
52
+ const data = axisConfig?.data;
53
+ if (!data || data.length === 0) return index;
54
+ if (index < 0 || index >= data.length) return undefined;
55
+ const axisValue = data[index];
56
+ return typeof axisValue === 'number' ? axisValue : index;
57
+ };
58
+
59
+ /**
60
+ * Resolves a data-space value to a validated pixel coordinate.
61
+ * When `axisConfig` is provided, the data value is first translated
62
+ * through the axis data array before being projected onto the scale.
63
+ * Returns `undefined` if the value is out of bounds, the scale is missing,
64
+ * the result is not finite, or the pixel falls outside the drawing area.
65
+ */
66
+ export const resolvePixel = ({
67
+ dataValue,
68
+ scale,
69
+ axis,
70
+ drawingArea,
71
+ axisConfig
72
+ }) => {
73
+ const resolved = resolveDataValue(dataValue, axisConfig);
74
+ if (resolved === undefined) return undefined;
75
+ if (!scale) return undefined;
76
+ if (isCategoricalScale(scale) && scale(resolved) === undefined) return undefined;
77
+ const p = getPointOnScale(resolved, scale);
78
+ if (!Number.isFinite(p) || !isPixelWithinDrawingArea(p, axis, drawingArea)) {
79
+ return undefined;
80
+ }
81
+ return p;
82
+ };
83
+
84
+ /**
85
+ * Computes the label pixel coordinates and text alignment attributes
86
+ * for a horizontal reference line.
87
+ */
88
+ export const computeHorizontalLabelCoordinates = ({
89
+ pixel,
90
+ labelPosition,
91
+ drawingArea,
92
+ dx = 0,
93
+ dy = 0,
94
+ horizontalAlignment,
95
+ verticalAlignment
96
+ }) => ({
97
+ x: drawingArea.x + drawingArea.width * positionRatio[labelPosition] + dx,
98
+ y: pixel + dy,
99
+ textAnchor: textAnchorMap[horizontalAlignment ?? labelPosition],
100
+ dominantBaseline: dominantBaselineMap[verticalAlignment ?? DEFAULT_V_ALIGN]
101
+ });
102
+
103
+ /**
104
+ * Computes the label pixel coordinates and text alignment attributes
105
+ * for a vertical reference line.
106
+ */
107
+ export const computeVerticalLabelCoordinates = ({
108
+ pixel,
109
+ labelPosition,
110
+ drawingArea,
111
+ dx = 0,
112
+ dy = 0,
113
+ horizontalAlignment,
114
+ verticalAlignment
115
+ }) => ({
116
+ x: pixel + dx,
117
+ y: drawingArea.y + drawingArea.height * positionRatio[labelPosition] + dy,
118
+ textAnchor: textAnchorMap[horizontalAlignment ?? DEFAULT_H_ALIGN],
119
+ dominantBaseline: dominantBaselineMap[verticalAlignment ?? labelPosition]
120
+ });
121
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getPointOnScale","isCategoricalScale","DEFAULT_H_ALIGN","DEFAULT_V_ALIGN","DY_RATIO","auto","central","hanging","textAnchorMap","start","center","end","dominantBaselineMap","positionRatio","dominantBaselineToDy","baseline","fontSize","isPixelWithinDrawingArea","pixel","axis","drawingArea","x","width","y","height","resolveDataValue","index","axisConfig","data","length","undefined","axisValue","resolvePixel","dataValue","scale","resolved","p","Number","isFinite","computeHorizontalLabelCoordinates","labelPosition","dx","dy","horizontalAlignment","verticalAlignment","textAnchor","dominantBaseline","computeVerticalLabelCoordinates"],"sourceRoot":"../../../../../src","sources":["lib/Components/ReferenceLine/utils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from '@jest/globals';
4
+ import { getNumericScale } from "../../utils/scales/scales.js";
5
+ import { computeHorizontalLabelCoordinates, computeVerticalLabelCoordinates, dominantBaselineToDy, isPixelWithinDrawingArea, resolvePixel } from "./utils.js";
6
+ const drawingArea = {
7
+ x: 20,
8
+ y: 10,
9
+ width: 360,
10
+ height: 180
11
+ };
12
+ const linearScale = getNumericScale({
13
+ scaleType: 'linear',
14
+ domain: {
15
+ min: 0,
16
+ max: 100
17
+ },
18
+ range: {
19
+ min: drawingArea.x,
20
+ max: drawingArea.x + drawingArea.width
21
+ }
22
+ });
23
+ describe('isPixelWithinDrawingArea', () => {
24
+ describe('x axis', () => {
25
+ it('returns true when pixel is at the left edge', () => {
26
+ expect(isPixelWithinDrawingArea(20, 'x', drawingArea)).toBe(true);
27
+ });
28
+ it('returns true when pixel is at the right edge', () => {
29
+ expect(isPixelWithinDrawingArea(380, 'x', drawingArea)).toBe(true);
30
+ });
31
+ it('returns true when pixel is within bounds', () => {
32
+ expect(isPixelWithinDrawingArea(200, 'x', drawingArea)).toBe(true);
33
+ });
34
+ it('returns false when pixel is before the left edge', () => {
35
+ expect(isPixelWithinDrawingArea(19, 'x', drawingArea)).toBe(false);
36
+ });
37
+ it('returns false when pixel is past the right edge', () => {
38
+ expect(isPixelWithinDrawingArea(381, 'x', drawingArea)).toBe(false);
39
+ });
40
+ });
41
+ describe('y axis', () => {
42
+ it('returns true when pixel is at the top edge', () => {
43
+ expect(isPixelWithinDrawingArea(10, 'y', drawingArea)).toBe(true);
44
+ });
45
+ it('returns true when pixel is at the bottom edge', () => {
46
+ expect(isPixelWithinDrawingArea(190, 'y', drawingArea)).toBe(true);
47
+ });
48
+ it('returns true when pixel is within bounds', () => {
49
+ expect(isPixelWithinDrawingArea(100, 'y', drawingArea)).toBe(true);
50
+ });
51
+ it('returns false when pixel is above the top edge', () => {
52
+ expect(isPixelWithinDrawingArea(9, 'y', drawingArea)).toBe(false);
53
+ });
54
+ it('returns false when pixel is below the bottom edge', () => {
55
+ expect(isPixelWithinDrawingArea(191, 'y', drawingArea)).toBe(false);
56
+ });
57
+ });
58
+ });
59
+ describe('computeHorizontalLabelCoordinates', () => {
60
+ const pixel = 100;
61
+ it('positions label at the end (right edge) with textAnchor start', () => {
62
+ const result = computeHorizontalLabelCoordinates({
63
+ pixel,
64
+ labelPosition: 'end',
65
+ drawingArea
66
+ });
67
+ expect(result.x).toBe(380);
68
+ expect(result.y).toBe(100);
69
+ expect(result.textAnchor).toBe('start');
70
+ expect(result.dominantBaseline).toBe('hanging');
71
+ });
72
+ it('positions label at the start (left edge) with textAnchor end', () => {
73
+ const result = computeHorizontalLabelCoordinates({
74
+ pixel,
75
+ labelPosition: 'start',
76
+ drawingArea
77
+ });
78
+ expect(result.x).toBe(20);
79
+ expect(result.textAnchor).toBe('end');
80
+ });
81
+ it('positions label at center with textAnchor middle', () => {
82
+ const result = computeHorizontalLabelCoordinates({
83
+ pixel,
84
+ labelPosition: 'center',
85
+ drawingArea
86
+ });
87
+ expect(result.x).toBe(200);
88
+ expect(result.textAnchor).toBe('middle');
89
+ });
90
+ it('applies dx offset', () => {
91
+ const result = computeHorizontalLabelCoordinates({
92
+ pixel,
93
+ labelPosition: 'end',
94
+ drawingArea,
95
+ dx: -8
96
+ });
97
+ expect(result.x).toBe(372);
98
+ });
99
+ it('applies dy offset', () => {
100
+ const result = computeHorizontalLabelCoordinates({
101
+ pixel,
102
+ labelPosition: 'end',
103
+ drawingArea,
104
+ dy: -4
105
+ });
106
+ expect(result.y).toBe(96);
107
+ });
108
+ it('defaults dominantBaseline to hanging (verticalAlignment=end)', () => {
109
+ const result = computeHorizontalLabelCoordinates({
110
+ pixel,
111
+ labelPosition: 'end',
112
+ drawingArea
113
+ });
114
+ expect(result.dominantBaseline).toBe('hanging');
115
+ });
116
+ it('overrides dominantBaseline with verticalAlignment=start', () => {
117
+ const result = computeHorizontalLabelCoordinates({
118
+ pixel,
119
+ labelPosition: 'end',
120
+ drawingArea,
121
+ verticalAlignment: 'start'
122
+ });
123
+ expect(result.dominantBaseline).toBe('auto');
124
+ });
125
+ it('overrides dominantBaseline with verticalAlignment=center', () => {
126
+ const result = computeHorizontalLabelCoordinates({
127
+ pixel,
128
+ labelPosition: 'end',
129
+ drawingArea,
130
+ verticalAlignment: 'center'
131
+ });
132
+ expect(result.dominantBaseline).toBe('central');
133
+ });
134
+ });
135
+ describe('computeVerticalLabelCoordinates', () => {
136
+ const pixel = 150;
137
+ it('positions label at start (top) with dominant-baseline auto', () => {
138
+ const result = computeVerticalLabelCoordinates({
139
+ pixel,
140
+ labelPosition: 'start',
141
+ drawingArea
142
+ });
143
+ expect(result.x).toBe(150);
144
+ expect(result.y).toBe(10);
145
+ expect(result.textAnchor).toBe('middle');
146
+ expect(result.dominantBaseline).toBe('auto');
147
+ });
148
+ it('positions label at end (bottom) with dominant-baseline hanging', () => {
149
+ const result = computeVerticalLabelCoordinates({
150
+ pixel,
151
+ labelPosition: 'end',
152
+ drawingArea
153
+ });
154
+ expect(result.y).toBe(190);
155
+ expect(result.dominantBaseline).toBe('hanging');
156
+ });
157
+ it('positions label at center with dominant-baseline central', () => {
158
+ const result = computeVerticalLabelCoordinates({
159
+ pixel,
160
+ labelPosition: 'center',
161
+ drawingArea
162
+ });
163
+ expect(result.y).toBe(100);
164
+ expect(result.dominantBaseline).toBe('central');
165
+ });
166
+ it('applies dx offset', () => {
167
+ const result = computeVerticalLabelCoordinates({
168
+ pixel,
169
+ labelPosition: 'start',
170
+ drawingArea,
171
+ dx: 4
172
+ });
173
+ expect(result.x).toBe(154);
174
+ });
175
+ it('applies dy offset', () => {
176
+ const result = computeVerticalLabelCoordinates({
177
+ pixel,
178
+ labelPosition: 'start',
179
+ drawingArea,
180
+ dy: 6
181
+ });
182
+ expect(result.y).toBe(16);
183
+ });
184
+ it('defaults textAnchor to middle (horizontalAlignment=center)', () => {
185
+ const result = computeVerticalLabelCoordinates({
186
+ pixel,
187
+ labelPosition: 'start',
188
+ drawingArea
189
+ });
190
+ expect(result.textAnchor).toBe('middle');
191
+ });
192
+ it('overrides textAnchor with horizontalAlignment=start', () => {
193
+ const result = computeVerticalLabelCoordinates({
194
+ pixel,
195
+ labelPosition: 'start',
196
+ drawingArea,
197
+ horizontalAlignment: 'start'
198
+ });
199
+ expect(result.textAnchor).toBe('end');
200
+ });
201
+ it('overrides textAnchor with horizontalAlignment=end', () => {
202
+ const result = computeVerticalLabelCoordinates({
203
+ pixel,
204
+ labelPosition: 'start',
205
+ drawingArea,
206
+ horizontalAlignment: 'end'
207
+ });
208
+ expect(result.textAnchor).toBe('start');
209
+ });
210
+ });
211
+ describe('resolvePixel', () => {
212
+ it('returns a pixel value for a data value within bounds', () => {
213
+ const result = resolvePixel({
214
+ dataValue: 50,
215
+ scale: linearScale,
216
+ axis: 'x',
217
+ drawingArea
218
+ });
219
+ expect(typeof result).toBe('number');
220
+ });
221
+ it('returns undefined when scale is missing', () => {
222
+ expect(resolvePixel({
223
+ dataValue: 50,
224
+ scale: undefined,
225
+ axis: 'x',
226
+ drawingArea
227
+ })).toBeUndefined();
228
+ });
229
+ it('returns undefined when pixel falls outside drawing area', () => {
230
+ expect(resolvePixel({
231
+ dataValue: 200,
232
+ scale: linearScale,
233
+ axis: 'x',
234
+ drawingArea
235
+ })).toBeUndefined();
236
+ });
237
+ it('resolves data index through numeric axisConfig.data', () => {
238
+ const atIndex = resolvePixel({
239
+ dataValue: 50,
240
+ scale: linearScale,
241
+ axis: 'x',
242
+ drawingArea
243
+ });
244
+ const throughData = resolvePixel({
245
+ dataValue: 1,
246
+ scale: linearScale,
247
+ axis: 'x',
248
+ drawingArea,
249
+ axisConfig: {
250
+ data: [0, 50, 100]
251
+ }
252
+ });
253
+ expect(throughData).toBe(atIndex);
254
+ });
255
+ it('uses index directly when axisConfig.data contains strings', () => {
256
+ const withoutConfig = resolvePixel({
257
+ dataValue: 2,
258
+ scale: linearScale,
259
+ axis: 'x',
260
+ drawingArea
261
+ });
262
+ const withStringData = resolvePixel({
263
+ dataValue: 2,
264
+ scale: linearScale,
265
+ axis: 'x',
266
+ drawingArea,
267
+ axisConfig: {
268
+ data: ['a', 'b', 'c']
269
+ }
270
+ });
271
+ expect(withStringData).toBe(withoutConfig);
272
+ });
273
+ it('returns undefined when data index is out of bounds', () => {
274
+ expect(resolvePixel({
275
+ dataValue: 10,
276
+ scale: linearScale,
277
+ axis: 'x',
278
+ drawingArea,
279
+ axisConfig: {
280
+ data: [1, 2, 3]
281
+ }
282
+ })).toBeUndefined();
283
+ });
284
+ });
285
+ describe('dominantBaselineToDy', () => {
286
+ const fontSize = 10;
287
+ it('returns 0 for auto (text above anchor)', () => {
288
+ expect(dominantBaselineToDy('auto', fontSize)).toBe(0);
289
+ });
290
+ it('returns fontSize * 0.35 for central (vertically centered)', () => {
291
+ expect(dominantBaselineToDy('central', fontSize)).toBe(3.5);
292
+ });
293
+ it('returns fontSize * 0.8 for hanging (text below anchor)', () => {
294
+ expect(dominantBaselineToDy('hanging', fontSize)).toBe(8);
295
+ });
296
+ });
297
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","getNumericScale","computeHorizontalLabelCoordinates","computeVerticalLabelCoordinates","dominantBaselineToDy","isPixelWithinDrawingArea","resolvePixel","drawingArea","x","y","width","height","linearScale","scaleType","domain","min","max","range","toBe","pixel","result","labelPosition","textAnchor","dominantBaseline","dx","dy","verticalAlignment","horizontalAlignment","dataValue","scale","axis","undefined","toBeUndefined","atIndex","throughData","axisConfig","data","withoutConfig","withStringData","fontSize"],"sourceRoot":"../../../../../src","sources":["lib/Components/ReferenceLine/utils.test.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ import { useTheme } from '@ledgerhq/lumen-ui-rnative';
4
+ import { useId, useMemo } from 'react';
5
+ import { Circle, Defs, G, Line, LinearGradient, Rect, Stop, Text as SvgText } from 'react-native-svg';
6
+ import { useCartesianChartContext } from "../CartesianChart/context/index.js";
7
+ import { BEACON_RADIUS, BEACON_STROKE_WIDTH, LABEL_OFFSET_Y, LINE_GRADIENT_EDGE_OPACITY, OVERLAY_LINE_INSET, OVERLAY_OFFSET, OVERLAY_OPACITY } from "./constants.js";
8
+ import { useScrubberContext } from "./context/index.js";
9
+ import { resolvePixelX, resolvePixelY } from "./utils.js";
10
+
11
+ /**
12
+ * Renders the scrubber visuals: vertical reference line, future-data overlay
13
+ * rect, per-series beacon dots, and an optional formatted label above the line.
14
+ *
15
+ * Must be used as a child of `LineChart` (or `CartesianChart`) with
16
+ * `enableScrubbing` enabled. Renders nothing when no scrubber position is active.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <LineChart series={data} enableScrubbing>
21
+ * <Scrubber label={(i) => data[i].date} />
22
+ * </LineChart>
23
+ * ```
24
+ */
25
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
26
+ export function Scrubber({
27
+ label,
28
+ hideLine = false,
29
+ hideOverlay = false,
30
+ showBeacons = false
31
+ }) {
32
+ const lineGradientId = useId();
33
+ const {
34
+ theme
35
+ } = useTheme();
36
+ const {
37
+ scrubberPosition
38
+ } = useScrubberContext();
39
+ const {
40
+ getXScale,
41
+ getXAxisConfig,
42
+ getYScale,
43
+ drawingArea,
44
+ series,
45
+ seriesMap
46
+ } = useCartesianChartContext();
47
+ const pixelX = useMemo(() => {
48
+ if (scrubberPosition === undefined) return undefined;
49
+ return resolvePixelX(scrubberPosition, getXScale, getXAxisConfig());
50
+ }, [scrubberPosition, getXScale, getXAxisConfig]);
51
+ const beacons = useMemo(() => {
52
+ if (scrubberPosition === undefined || !showBeacons) return [];
53
+ return series.map(s => {
54
+ const seriesData = seriesMap.get(s.id)?.data;
55
+ const pixelY = resolvePixelY(scrubberPosition, seriesData, getYScale);
56
+ if (pixelY === undefined) return null;
57
+ return {
58
+ id: s.id,
59
+ stroke: s.stroke,
60
+ pixelY
61
+ };
62
+ }).filter(b => b !== null);
63
+ }, [scrubberPosition, showBeacons, series, seriesMap, getYScale]);
64
+ const resolvedLabel = useMemo(() => {
65
+ if (scrubberPosition === undefined || !label) return undefined;
66
+ return label(scrubberPosition);
67
+ }, [scrubberPosition, label]);
68
+ if (scrubberPosition === undefined || pixelX === undefined) {
69
+ return null;
70
+ }
71
+ const {
72
+ x: drawX,
73
+ y: drawY,
74
+ width: drawWidth,
75
+ height: drawHeight
76
+ } = drawingArea;
77
+ const overlayX = pixelX + OVERLAY_LINE_INSET;
78
+ const overlayY = drawY - OVERLAY_OFFSET;
79
+ const overlayWidth = Math.max(0, drawX + drawWidth - pixelX - OVERLAY_LINE_INSET + OVERLAY_OFFSET);
80
+ const overlayHeight = drawHeight + OVERLAY_OFFSET * 2;
81
+ const borderMutedColor = theme.colors.border.base;
82
+ const backgroundBaseColor = theme.colors.bg.base;
83
+ const textBaseColor = theme.colors.text.base;
84
+ const bgCanvasColor = theme.colors.bg.canvas;
85
+ return /*#__PURE__*/_jsxs(G, {
86
+ testID: "scrubber",
87
+ children: [!hideLine && /*#__PURE__*/_jsxs(_Fragment, {
88
+ children: [/*#__PURE__*/_jsx(Defs, {
89
+ children: /*#__PURE__*/_jsxs(LinearGradient, {
90
+ id: lineGradientId,
91
+ gradientUnits: "userSpaceOnUse",
92
+ x1: pixelX,
93
+ y1: drawY,
94
+ x2: pixelX,
95
+ y2: drawY + drawHeight,
96
+ children: [/*#__PURE__*/_jsx(Stop, {
97
+ offset: "0%",
98
+ stopColor: borderMutedColor,
99
+ stopOpacity: LINE_GRADIENT_EDGE_OPACITY
100
+ }), /*#__PURE__*/_jsx(Stop, {
101
+ offset: "20%",
102
+ stopColor: borderMutedColor,
103
+ stopOpacity: 1
104
+ }), /*#__PURE__*/_jsx(Stop, {
105
+ offset: "80%",
106
+ stopColor: borderMutedColor,
107
+ stopOpacity: 1
108
+ }), /*#__PURE__*/_jsx(Stop, {
109
+ offset: "100%",
110
+ stopColor: borderMutedColor,
111
+ stopOpacity: LINE_GRADIENT_EDGE_OPACITY
112
+ })]
113
+ })
114
+ }), /*#__PURE__*/_jsx(Line, {
115
+ testID: "scrubber-line",
116
+ x1: pixelX,
117
+ y1: drawY,
118
+ x2: pixelX,
119
+ y2: drawY + drawHeight,
120
+ stroke: `url(#${lineGradientId})`,
121
+ strokeWidth: OVERLAY_LINE_INSET
122
+ })]
123
+ }), !hideOverlay && /*#__PURE__*/_jsx(Rect, {
124
+ testID: "scrubber-overlay",
125
+ x: overlayX,
126
+ y: overlayY,
127
+ width: overlayWidth,
128
+ height: overlayHeight,
129
+ fill: backgroundBaseColor,
130
+ opacity: OVERLAY_OPACITY
131
+ }), resolvedLabel !== undefined && /*#__PURE__*/_jsx(SvgText, {
132
+ testID: "scrubber-label",
133
+ x: pixelX,
134
+ y: drawY - LABEL_OFFSET_Y,
135
+ textAnchor: "middle",
136
+ fill: textBaseColor,
137
+ fontSize: theme.typographies.body4.fontSize,
138
+ fontWeight: theme.typographies.body4.fontWeight,
139
+ fontFamily: theme.fontFamilies.sans,
140
+ children: resolvedLabel
141
+ }), showBeacons && beacons.map(beacon => /*#__PURE__*/_jsx(Circle, {
142
+ testID: `scrubber-beacon-${beacon.id}`,
143
+ cx: pixelX,
144
+ cy: beacon.pixelY,
145
+ r: BEACON_RADIUS,
146
+ fill: beacon.stroke,
147
+ stroke: bgCanvasColor,
148
+ strokeWidth: BEACON_STROKE_WIDTH
149
+ }, beacon.id))]
150
+ });
151
+ }
152
+ //# sourceMappingURL=Scrubber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useTheme","useId","useMemo","Circle","Defs","G","Line","LinearGradient","Rect","Stop","Text","SvgText","useCartesianChartContext","BEACON_RADIUS","BEACON_STROKE_WIDTH","LABEL_OFFSET_Y","LINE_GRADIENT_EDGE_OPACITY","OVERLAY_LINE_INSET","OVERLAY_OFFSET","OVERLAY_OPACITY","useScrubberContext","resolvePixelX","resolvePixelY","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Scrubber","label","hideLine","hideOverlay","showBeacons","lineGradientId","theme","scrubberPosition","getXScale","getXAxisConfig","getYScale","drawingArea","series","seriesMap","pixelX","undefined","beacons","map","s","seriesData","get","id","data","pixelY","stroke","filter","b","resolvedLabel","x","drawX","y","drawY","width","drawWidth","height","drawHeight","overlayX","overlayY","overlayWidth","Math","max","overlayHeight","borderMutedColor","colors","border","base","backgroundBaseColor","bg","textBaseColor","text","bgCanvasColor","canvas","testID","children","gradientUnits","x1","y1","x2","y2","offset","stopColor","stopOpacity","strokeWidth","fill","opacity","textAnchor","fontSize","typographies","body4","fontWeight","fontFamily","fontFamilies","sans","beacon","cx","cy","r"],"sourceRoot":"../../../../../src","sources":["lib/Components/Scrubber/Scrubber.tsx"],"mappings":"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","ignoreList":[]}