@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.
- package/dist/module/lib/Components/Axis/XAxis/XAxis.js +1 -1
- package/dist/module/lib/Components/Axis/XAxis/XAxis.js.map +1 -1
- package/dist/module/lib/Components/Axis/YAxis/YAxis.js +1 -1
- package/dist/module/lib/Components/Axis/YAxis/YAxis.js.map +1 -1
- package/dist/module/lib/Components/CartesianChart/CartesianChart.js +31 -28
- package/dist/module/lib/Components/CartesianChart/CartesianChart.js.map +1 -1
- package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.js +53 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.js +144 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/context.js +8 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/context.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/index.js +5 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/index.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/types.js +4 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/types.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/utils.js +32 -0
- package/dist/module/lib/Components/CartesianChart/RevealClip/utils.js.map +1 -0
- package/dist/module/lib/Components/CartesianChart/utils.js +4 -4
- package/dist/module/lib/Components/Line/Line.js +5 -2
- package/dist/module/lib/Components/Line/Line.js.map +1 -1
- package/dist/module/lib/Components/LineChart/LineChart.js +7 -1
- package/dist/module/lib/Components/LineChart/LineChart.js.map +1 -1
- package/dist/module/lib/Components/LineChart/LineChart.test.js +25 -0
- package/dist/module/lib/Components/LineChart/LineChart.test.js.map +1 -1
- package/dist/module/lib/Components/Point/Point.js +3 -0
- package/dist/module/lib/Components/Point/Point.js.map +1 -1
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.js +125 -0
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.stories.js +111 -0
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.stories.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.test.js +338 -0
- package/dist/module/lib/Components/ReferenceLine/ReferenceLine.test.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/constants.js +5 -0
- package/dist/module/lib/Components/ReferenceLine/constants.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/index.js +5 -0
- package/dist/module/lib/Components/ReferenceLine/index.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/types.js +2 -0
- package/dist/module/lib/Components/ReferenceLine/types.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/utils.js +121 -0
- package/dist/module/lib/Components/ReferenceLine/utils.js.map +1 -0
- package/dist/module/lib/Components/ReferenceLine/utils.test.js +297 -0
- package/dist/module/lib/Components/ReferenceLine/utils.test.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.js +152 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.stories.js +113 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.stories.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.test.js +132 -0
- package/dist/module/lib/Components/Scrubber/Scrubber.test.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/ScrubberProvider.js +105 -0
- package/dist/module/lib/Components/Scrubber/ScrubberProvider.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/ScrubberProvider.test.js +217 -0
- package/dist/module/lib/Components/Scrubber/ScrubberProvider.test.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/constants.js +10 -0
- package/dist/module/lib/Components/Scrubber/constants.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/context/index.js +4 -0
- package/dist/module/lib/Components/Scrubber/context/index.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/context/scrubberContext.js +10 -0
- package/dist/module/lib/Components/Scrubber/context/scrubberContext.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/index.js +5 -0
- package/dist/module/lib/Components/Scrubber/index.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/types.js +4 -0
- package/dist/module/lib/Components/Scrubber/types.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/utils.js +83 -0
- package/dist/module/lib/Components/Scrubber/utils.js.map +1 -0
- package/dist/module/lib/Components/Scrubber/utils.test.js +192 -0
- package/dist/module/lib/Components/Scrubber/utils.test.js.map +1 -0
- package/dist/module/lib/Components/index.js +2 -0
- package/dist/module/lib/Components/index.js.map +1 -1
- package/dist/module/lib/utils/scales/scales.js +16 -8
- package/dist/module/lib/utils/scales/scales.js.map +1 -1
- package/dist/module/lib/utils/scales/scales.test.js +32 -1
- package/dist/module/lib/utils/scales/scales.test.js.map +1 -1
- package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts +1 -1
- package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts +3 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/context.d.ts +7 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/context.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/index.d.ts +3 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/index.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/types.d.ts +38 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/types.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/utils.d.ts +17 -0
- package/dist/typescript/src/lib/Components/CartesianChart/RevealClip/utils.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts +17 -0
- package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Line/Line.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts +1 -1
- package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/LineChart/types.d.ts +16 -0
- package/dist/typescript/src/lib/Components/LineChart/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Point/Point.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/ReferenceLine/ReferenceLine.d.ts +3 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/ReferenceLine.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/constants.d.ts +3 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/constants.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/index.d.ts +3 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/index.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/types.d.ts +74 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/types.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/utils.d.ts +55 -0
- package/dist/typescript/src/lib/Components/ReferenceLine/utils.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/Scrubber.d.ts +17 -0
- package/dist/typescript/src/lib/Components/Scrubber/Scrubber.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/ScrubberProvider.d.ts +16 -0
- package/dist/typescript/src/lib/Components/Scrubber/ScrubberProvider.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/constants.d.ts +8 -0
- package/dist/typescript/src/lib/Components/Scrubber/constants.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/context/index.d.ts +2 -0
- package/dist/typescript/src/lib/Components/Scrubber/context/index.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/context/scrubberContext.d.ts +8 -0
- package/dist/typescript/src/lib/Components/Scrubber/context/scrubberContext.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/index.d.ts +4 -0
- package/dist/typescript/src/lib/Components/Scrubber/index.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/types.d.ts +57 -0
- package/dist/typescript/src/lib/Components/Scrubber/types.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Scrubber/utils.d.ts +22 -0
- package/dist/typescript/src/lib/Components/Scrubber/utils.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/index.d.ts +2 -0
- package/dist/typescript/src/lib/Components/index.d.ts.map +1 -1
- package/dist/typescript/src/lib/utils/scales/scales.d.ts +6 -0
- package/dist/typescript/src/lib/utils/scales/scales.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/lib/Components/Axis/XAxis/XAxis.tsx +1 -1
- package/src/lib/Components/Axis/YAxis/YAxis.tsx +1 -1
- package/src/lib/Components/CartesianChart/CartesianChart.tsx +32 -32
- package/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.test.tsx +129 -0
- package/src/lib/Components/CartesianChart/RevealClip/RevealClipDefs.tsx +59 -0
- package/src/lib/Components/CartesianChart/RevealClip/context.ts +13 -0
- package/src/lib/Components/CartesianChart/RevealClip/index.ts +2 -0
- package/src/lib/Components/CartesianChart/RevealClip/types.ts +38 -0
- package/src/lib/Components/CartesianChart/RevealClip/utils.ts +51 -0
- package/src/lib/Components/CartesianChart/types.ts +17 -0
- package/src/lib/Components/CartesianChart/utils.ts +4 -4
- package/src/lib/Components/Line/Line.tsx +5 -3
- package/src/lib/Components/LineChart/LineChart.test.tsx +23 -0
- package/src/lib/Components/LineChart/LineChart.tsx +6 -0
- package/src/lib/Components/LineChart/types.ts +16 -0
- package/src/lib/Components/Point/Point.tsx +3 -1
- package/src/lib/Components/ReferenceLine/ReferenceLine.stories.tsx +109 -0
- package/src/lib/Components/ReferenceLine/ReferenceLine.test.tsx +269 -0
- package/src/lib/Components/ReferenceLine/ReferenceLine.tsx +149 -0
- package/src/lib/Components/ReferenceLine/constants.ts +2 -0
- package/src/lib/Components/ReferenceLine/index.ts +2 -0
- package/src/lib/Components/ReferenceLine/types.ts +79 -0
- package/src/lib/Components/ReferenceLine/utils.test.ts +332 -0
- package/src/lib/Components/ReferenceLine/utils.ts +175 -0
- package/src/lib/Components/Scrubber/Scrubber.stories.tsx +122 -0
- package/src/lib/Components/Scrubber/Scrubber.test.tsx +110 -0
- package/src/lib/Components/Scrubber/Scrubber.tsx +189 -0
- package/src/lib/Components/Scrubber/ScrubberProvider.test.tsx +223 -0
- package/src/lib/Components/Scrubber/ScrubberProvider.tsx +132 -0
- package/src/lib/Components/Scrubber/constants.ts +7 -0
- package/src/lib/Components/Scrubber/context/index.ts +1 -0
- package/src/lib/Components/Scrubber/context/scrubberContext.ts +14 -0
- package/src/lib/Components/Scrubber/index.ts +3 -0
- package/src/lib/Components/Scrubber/types.ts +59 -0
- package/src/lib/Components/Scrubber/utils.test.ts +172 -0
- package/src/lib/Components/Scrubber/utils.ts +126 -0
- package/src/lib/Components/index.ts +2 -0
- package/src/lib/utils/scales/scales.test.ts +22 -0
- package/src/lib/utils/scales/scales.ts +19 -9
|
@@ -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 @@
|
|
|
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":[]}
|