@ledgerhq/lumen-ui-rnative-visualization 0.1.22 → 0.1.23
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/Point/Point.js +78 -48
- package/dist/module/lib/Components/Point/Point.js.map +1 -1
- package/dist/module/lib/Components/Point/Point.test.js +41 -0
- package/dist/module/lib/Components/Point/Point.test.js.map +1 -1
- package/dist/module/lib/Components/Point/constants.js +2 -0
- package/dist/module/lib/Components/Point/constants.js.map +1 -1
- package/dist/module/lib/Components/Point/usePointGeometry.js +60 -0
- package/dist/module/lib/Components/Point/usePointGeometry.js.map +1 -0
- package/dist/module/lib/Components/Point/usePointGeometry.test.js +86 -0
- package/dist/module/lib/Components/Point/usePointGeometry.test.js.map +1 -0
- package/dist/module/lib/Components/Point/utils.js +58 -15
- package/dist/module/lib/Components/Point/utils.js.map +1 -1
- package/dist/module/lib/Components/Point/utils.test.js +37 -75
- package/dist/module/lib/Components/Point/utils.test.js.map +1 -1
- package/dist/module/lib/utils/domain/domain.js +4 -4
- package/dist/module/lib/utils/domain/domain.js.map +1 -1
- package/dist/typescript/src/lib/Components/Point/Point.d.ts +1 -1
- package/dist/typescript/src/lib/Components/Point/Point.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Point/constants.d.ts +2 -0
- package/dist/typescript/src/lib/Components/Point/constants.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Point/types.d.ts +32 -0
- package/dist/typescript/src/lib/Components/Point/types.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Point/usePointGeometry.d.ts +33 -0
- package/dist/typescript/src/lib/Components/Point/usePointGeometry.d.ts.map +1 -0
- package/dist/typescript/src/lib/Components/Point/utils.d.ts +30 -4
- package/dist/typescript/src/lib/Components/Point/utils.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/lib/Components/Point/Point.test.tsx +46 -0
- package/src/lib/Components/Point/Point.tsx +75 -56
- package/src/lib/Components/Point/constants.ts +2 -0
- package/src/lib/Components/Point/types.ts +41 -0
- package/src/lib/Components/Point/usePointGeometry.test.ts +95 -0
- package/src/lib/Components/Point/usePointGeometry.ts +77 -0
- package/src/lib/Components/Point/utils.test.ts +34 -80
- package/src/lib/Components/Point/utils.ts +77 -19
- package/src/lib/utils/domain/domain.ts +4 -4
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { describe, expect, it
|
|
4
|
-
import { renderHook } from '@testing-library/react-native';
|
|
3
|
+
import { describe, expect, it } from '@jest/globals';
|
|
5
4
|
import { ARROW_HEIGHT, ARROW_WIDTH, GAP, LABEL_FONT_SIZE } from "./constants.js";
|
|
6
|
-
import { buildArrowPoints, computeLabelY, isWithinBounds, resolveLabel
|
|
5
|
+
import { buildArrowPoints, computeLabelX, computeLabelY, isWithinBounds, resolveLabel } from "./utils.js";
|
|
7
6
|
describe('isWithinBounds', () => {
|
|
8
7
|
const area = {
|
|
9
8
|
x: 10,
|
|
@@ -90,84 +89,47 @@ describe('computeLabelY', () => {
|
|
|
90
89
|
expect(result).toBe(pixelY + radius + GAP + GAP + LABEL_FONT_SIZE);
|
|
91
90
|
});
|
|
92
91
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
it('
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
});
|
|
106
|
-
it('does not register when magnetic is false', () => {
|
|
107
|
-
const ctx = makeContext();
|
|
108
|
-
renderHook(() => useMagneticRegistration(false, 3, noAxisConfig, ctx));
|
|
109
|
-
expect(ctx.register).not.toHaveBeenCalled();
|
|
110
|
-
});
|
|
111
|
-
it('unregisters on unmount', () => {
|
|
112
|
-
const ctx = makeContext();
|
|
113
|
-
const {
|
|
114
|
-
unmount
|
|
115
|
-
} = renderHook(() => useMagneticRegistration(true, 3, noAxisConfig, ctx));
|
|
116
|
-
unmount();
|
|
117
|
-
expect(ctx.unregister).toHaveBeenCalledWith(3);
|
|
118
|
-
});
|
|
119
|
-
it('resolves dataX through axis config data when provided', () => {
|
|
120
|
-
const ctx = makeContext();
|
|
121
|
-
const getXAxisConfig = () => ({
|
|
122
|
-
scaleType: 'band',
|
|
123
|
-
data: [100, 200, 300]
|
|
92
|
+
describe('computeLabelX', () => {
|
|
93
|
+
const area = {
|
|
94
|
+
x: 100,
|
|
95
|
+
y: 0,
|
|
96
|
+
width: 200,
|
|
97
|
+
height: 100
|
|
98
|
+
};
|
|
99
|
+
const halfArrow = ARROW_WIDTH / 2;
|
|
100
|
+
it('centres the label on the point when clamping is disabled', () => {
|
|
101
|
+
expect(computeLabelX(105, 'A very long label', area, 'center', true)).toEqual({
|
|
102
|
+
x: 105,
|
|
103
|
+
textAnchor: 'middle'
|
|
124
104
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const getXAxisConfig = () => ({
|
|
131
|
-
scaleType: 'band',
|
|
132
|
-
data: [100, 200, 300]
|
|
105
|
+
});
|
|
106
|
+
it('centres the label on the point when it fits inside the bounds', () => {
|
|
107
|
+
expect(computeLabelX(200, 'Peak', area, 'auto', true)).toEqual({
|
|
108
|
+
x: 200,
|
|
109
|
+
textAnchor: 'middle'
|
|
133
110
|
});
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const {
|
|
140
|
-
rerender
|
|
141
|
-
} = renderHook(({
|
|
142
|
-
dataX
|
|
143
|
-
}) => useMagneticRegistration(true, dataX, noAxisConfig, ctx), {
|
|
144
|
-
initialProps: {
|
|
145
|
-
dataX: 2
|
|
146
|
-
}
|
|
111
|
+
});
|
|
112
|
+
it('anchors near the left edge, offset by half the arrow width from the point', () => {
|
|
113
|
+
expect(computeLabelX(105, 'Long label', area, 'auto', true)).toEqual({
|
|
114
|
+
x: 105 - halfArrow,
|
|
115
|
+
textAnchor: 'start'
|
|
147
116
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
117
|
+
});
|
|
118
|
+
it('anchors near the right edge, offset by half the arrow width from the point', () => {
|
|
119
|
+
expect(computeLabelX(295, 'Long label', area, 'auto', true)).toEqual({
|
|
120
|
+
x: 295 + halfArrow,
|
|
121
|
+
textAnchor: 'end'
|
|
151
122
|
});
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const {
|
|
158
|
-
rerender
|
|
159
|
-
} = renderHook(({
|
|
160
|
-
magnetic
|
|
161
|
-
}) => useMagneticRegistration(magnetic, 3, noAxisConfig, ctx), {
|
|
162
|
-
initialProps: {
|
|
163
|
-
magnetic: true
|
|
164
|
-
}
|
|
123
|
+
});
|
|
124
|
+
it('omits the arrow offset when no arrow is rendered', () => {
|
|
125
|
+
expect(computeLabelX(105, 'Long label', area, 'auto', false)).toEqual({
|
|
126
|
+
x: 105,
|
|
127
|
+
textAnchor: 'start'
|
|
165
128
|
});
|
|
166
|
-
expect(
|
|
167
|
-
|
|
168
|
-
|
|
129
|
+
expect(computeLabelX(295, 'Long label', area, 'auto', false)).toEqual({
|
|
130
|
+
x: 295,
|
|
131
|
+
textAnchor: 'end'
|
|
169
132
|
});
|
|
170
|
-
expect(ctx.unregister).toHaveBeenCalledWith(3);
|
|
171
133
|
});
|
|
172
134
|
});
|
|
173
135
|
//# sourceMappingURL=utils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","
|
|
1
|
+
{"version":3,"names":["describe","expect","it","ARROW_HEIGHT","ARROW_WIDTH","GAP","LABEL_FONT_SIZE","buildArrowPoints","computeLabelX","computeLabelY","isWithinBounds","resolveLabel","area","x","y","width","height","toBe","cx","cy","radius","halfW","result","tipY","baseY","i","undefined","toBeUndefined","pixelY","arrowOffset","halfArrow","toEqual","textAnchor"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/utils.test.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -50,13 +50,13 @@ export const computeYDomain = (series, axisConfig) => {
|
|
|
50
50
|
if (!s.data) continue;
|
|
51
51
|
for (const v of s.data) {
|
|
52
52
|
if (v !== null && v !== undefined) {
|
|
53
|
-
if (
|
|
53
|
+
if (hasValue) {
|
|
54
|
+
if (v < min) min = v;
|
|
55
|
+
if (v > max) max = v;
|
|
56
|
+
} else {
|
|
54
57
|
min = v;
|
|
55
58
|
max = v;
|
|
56
59
|
hasValue = true;
|
|
57
|
-
} else {
|
|
58
|
-
if (v < min) min = v;
|
|
59
|
-
if (v > max) max = v;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["computeXDomain","series","axisConfig","axisData","data","autoBounds","length","nums","min","max","i","value","maxLen","reduce","s","Math","applyDomainOverride","domain","computeYDomain","hasValue","v","undefined","computeDataLength","domainOverride"],"sourceRoot":"../../../../../src","sources":["lib/utils/domain/domain.ts"],"mappings":";;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,cAAc,GAAGA,CAC5BC,MAAgB,EAChBC,UAAmC,KACpB;EACf,MAAMC,QAAQ,GAAGD,UAAU,EAAEE,IAAI;EAEjC,IAAIC,UAAsB;EAE1B,IAAIF,QAAQ,IAAIA,QAAQ,CAACG,MAAM,GAAG,CAAC,EAAE;IACnC,IAAI,OAAOH,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;MACnC,MAAMI,IAAI,GAAGJ,QAAoB;MACjC,IAAIK,GAAG,GAAGD,IAAI,CAAC,CAAC,CAAC;MACjB,IAAIE,GAAG,GAAGF,IAAI,CAAC,CAAC,CAAC;MACjB,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACD,MAAM,EAAEI,CAAC,IAAI,CAAC,EAAE;QACvC,MAAMC,KAAK,GAAGJ,IAAI,CAACG,CAAC,CAAC;QACrB,IAAIC,KAAK,GAAGH,GAAG,EAAEA,GAAG,GAAGG,KAAK;QAC5B,IAAIA,KAAK,GAAGF,GAAG,EAAEA,GAAG,GAAGE,KAAK;MAC9B;MACAN,UAAU,GAAG;QAAEG,GAAG;QAAEC;MAAI,CAAC;IAC3B,CAAC,MAAM;MACLJ,UAAU,GAAG;QAAEG,GAAG,EAAE,CAAC;QAAEC,GAAG,EAAEN,QAAQ,CAACG,MAAM,GAAG;MAAE,CAAC;IACnD;EACF,CAAC,MAAM;IACL,MAAMM,MAAM,GAAGX,MAAM,CAACY,MAAM,CAC1B,CAACJ,GAAG,EAAEK,CAAC,KAAKC,IAAI,CAACN,GAAG,CAACA,GAAG,EAAEK,CAAC,CAACV,IAAI,EAAEE,MAAM,IAAI,CAAC,CAAC,EAC9C,CACF,CAAC;IACDD,UAAU,GAAG;MAAEG,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAEM,IAAI,CAACN,GAAG,CAAC,CAAC,EAAEG,MAAM,GAAG,CAAC;IAAE,CAAC;EACvD;EAEA,OAAOI,mBAAmB,CAACX,UAAU,EAAEH,UAAU,EAAEe,MAAM,CAAC;AAC5D,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BjB,MAAgB,EAChBC,UAAmC,KACpB;EACf,IAAIM,GAAG,GAAG,CAAC;EACX,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIU,QAAQ,GAAG,KAAK;EAEpB,KAAK,MAAML,CAAC,IAAIb,MAAM,EAAE;IACtB,IAAI,CAACa,CAAC,CAACV,IAAI,EAAE;IACb,KAAK,MAAMgB,CAAC,IAAIN,CAAC,CAACV,IAAI,EAAE;MACtB,IAAIgB,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKC,SAAS,EAAE;QACjC,
|
|
1
|
+
{"version":3,"names":["computeXDomain","series","axisConfig","axisData","data","autoBounds","length","nums","min","max","i","value","maxLen","reduce","s","Math","applyDomainOverride","domain","computeYDomain","hasValue","v","undefined","computeDataLength","domainOverride"],"sourceRoot":"../../../../../src","sources":["lib/utils/domain/domain.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { PointLabelProps, PointProps } from './types';
|
|
2
2
|
export declare function PointLabel({ textAnchor, ...props }: Readonly<PointLabelProps>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
export declare function Point({ dataX, dataY, color, label, LabelComponent, labelPosition, hidePoint, showLabelArrow, size, onPress, magnetic, }: Readonly<PointProps>): import("react/jsx-runtime").JSX.Element | null;
|
|
3
|
+
export declare function Point({ dataX, dataY, color, label, LabelComponent, labelPosition, hidePoint, showLabelArrow, size, onPress, magnetic, labelAlignment, }: Readonly<PointProps>): import("react/jsx-runtime").JSX.Element | null;
|
|
4
4
|
//# sourceMappingURL=Point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/Point.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/Point.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,eAAe,EAEf,UAAU,EACX,MAAM,SAAS,CAAC;AAMjB,wBAAgB,UAAU,CAAC,EACzB,UAAqB,EACrB,GAAG,KAAK,EACT,EAAE,QAAQ,CAAC,eAAe,CAAC,2CAa3B;AAgCD,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,aAAqB,EACrB,SAAiB,EACjB,cAAqB,EACrB,IAAmB,EACnB,OAAO,EACP,QAAgB,EAChB,cAAuB,GACxB,EAAE,QAAQ,CAAC,UAAU,CAAC,kDAoDtB"}
|
|
@@ -4,4 +4,6 @@ export declare const LABEL_FONT_SIZE = 10;
|
|
|
4
4
|
export declare const ARROW_WIDTH = 6;
|
|
5
5
|
export declare const ARROW_HEIGHT = 4;
|
|
6
6
|
export declare const GAP = 4;
|
|
7
|
+
/** Approximate width of a character in the label font, as a ratio of the font size. Used to compute the label width. */
|
|
8
|
+
export declare const LABEL_CHAR_WIDTH_RATIO = 0.6;
|
|
7
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,GAAG,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,GAAG,IAAI,CAAC;AACrB,wHAAwH;AACxH,eAAO,MAAM,sBAAsB,MAAM,CAAC"}
|
|
@@ -7,6 +7,28 @@ export type PointLabelProps = {
|
|
|
7
7
|
children: string;
|
|
8
8
|
} & Omit<TextProps, 'x' | 'y' | 'children'>;
|
|
9
9
|
export type PointLabelComponent = ComponentType<PointLabelProps>;
|
|
10
|
+
/**
|
|
11
|
+
* Horizontal alignment strategy for a point's label.
|
|
12
|
+
*
|
|
13
|
+
* - `'auto'`: keep the label inside the drawing area, anchoring it to the
|
|
14
|
+
* nearest edge when it would overflow.
|
|
15
|
+
* - `'center'`: always centre the label on the point.
|
|
16
|
+
*/
|
|
17
|
+
export type LabelAlignment = 'center' | 'auto';
|
|
18
|
+
/**
|
|
19
|
+
* Pixel position and styling inputs shared by the point's rendered glyphs. Each
|
|
20
|
+
* glyph picks the subset it needs and derives its own pixel geometry (e.g.
|
|
21
|
+
* radius from `size`).
|
|
22
|
+
*/
|
|
23
|
+
type PointGlyphProps = {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
size: number;
|
|
27
|
+
color?: string;
|
|
28
|
+
position: 'top' | 'bottom';
|
|
29
|
+
};
|
|
30
|
+
export type PointMarkerProps = Pick<PointGlyphProps, 'x' | 'y' | 'size' | 'color'>;
|
|
31
|
+
export type PointArrowProps = Pick<PointGlyphProps, 'x' | 'y' | 'size' | 'position'>;
|
|
10
32
|
export type PointProps = {
|
|
11
33
|
/**
|
|
12
34
|
* X coordinate in data space (index or explicit value).
|
|
@@ -77,5 +99,15 @@ export type PointProps = {
|
|
|
77
99
|
* @default false
|
|
78
100
|
*/
|
|
79
101
|
magnetic?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Horizontal alignment of the label relative to the chart's drawing area.
|
|
104
|
+
* With `'auto'`, a label that would overflow the left/right edge is anchored
|
|
105
|
+
* to that edge and grows inward instead of being clipped, while the arrow
|
|
106
|
+
* keeps pointing at the exact data point. Use `'center'` to always centre the
|
|
107
|
+
* label on the point.
|
|
108
|
+
* @default 'auto'
|
|
109
|
+
*/
|
|
110
|
+
labelAlignment?: LabelAlignment;
|
|
80
111
|
};
|
|
112
|
+
export {};
|
|
81
113
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACjD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C;;;;GAIG;AACH,KAAK,eAAe,GAAG;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,eAAe,EACf,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,eAAe,EACf,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,UAAU,CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACjD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { DrawingArea } from '../../utils/types';
|
|
2
|
+
import type { BaseAxisProps } from '../Axis';
|
|
3
|
+
import { useRevealFadeProps } from '../CartesianChart/RevealAnimation';
|
|
4
|
+
import type { MagneticPointsContextValue } from './pointContext/magneticPointsContext';
|
|
5
|
+
type Pixel = {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
};
|
|
9
|
+
type UsePointGeometryParams = {
|
|
10
|
+
dataX: number;
|
|
11
|
+
dataY: number;
|
|
12
|
+
magnetic: boolean;
|
|
13
|
+
};
|
|
14
|
+
type PointGeometry = {
|
|
15
|
+
pixel: Pixel | undefined;
|
|
16
|
+
drawingArea: DrawingArea;
|
|
17
|
+
fadeProps: ReturnType<typeof useRevealFadeProps>;
|
|
18
|
+
isVisible: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Resolves a point's chart geometry and behaviour: projects its data
|
|
22
|
+
* coordinates to pixels, registers it as a magnetic snap target when enabled,
|
|
23
|
+
* exposes the reveal-animation props, and reports whether it falls inside the
|
|
24
|
+
* drawing area.
|
|
25
|
+
*/
|
|
26
|
+
export declare const usePointGeometry: ({ dataX, dataY, magnetic, }: UsePointGeometryParams) => PointGeometry;
|
|
27
|
+
/**
|
|
28
|
+
* Registers/unregisters a data index as a magnetic snap target
|
|
29
|
+
* when the Point has `magnetic` enabled.
|
|
30
|
+
*/
|
|
31
|
+
export declare const useMagneticRegistration: (magnetic: boolean, dataX: number, getXAxisConfig: () => BaseAxisProps | undefined, { register, unregister }: MagneticPointsContextValue) => void;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=usePointGeometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePointGeometry.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/usePointGeometry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,KAAK,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,6BAI9B,sBAAsB,KAAG,aAqB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,OAAO,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,aAAa,GAAG,SAAS,EAC/C,0BAA0B,0BAA0B,KACnD,IAQF,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DrawingArea } from '../../utils/types';
|
|
2
2
|
import type { BaseAxisProps } from '../Axis';
|
|
3
|
-
import type {
|
|
3
|
+
import type { LabelAlignment } from './types';
|
|
4
|
+
export type LabelTextAnchor = 'start' | 'middle' | 'end';
|
|
4
5
|
export declare const isWithinBounds: (px: number, py: number, area: DrawingArea) => boolean;
|
|
5
6
|
/**
|
|
6
7
|
* Builds the three SVG points of the arrow triangle.
|
|
@@ -15,12 +16,37 @@ export declare const buildArrowPoints: (cx: number, cy: number, radius: number,
|
|
|
15
16
|
export declare const resolveLabel: (label: string | ((dataIndex: number) => string) | undefined, dataX: number) => string | undefined;
|
|
16
17
|
export declare const resolveDataXToIndex: (dataX: number, axisConfig: BaseAxisProps | undefined) => number | undefined;
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
19
|
+
* Computes the label's horizontal placement, keeping it inside the drawing area
|
|
20
|
+
* near the left/right edges. Centred on the point when it fits; otherwise
|
|
21
|
+
* anchored to the edge and aligned with the arrow's outer vertex (offset by half
|
|
22
|
+
* the arrow width from the point, when an arrow is rendered).
|
|
20
23
|
*/
|
|
21
|
-
export declare const
|
|
24
|
+
export declare const computeLabelX: (pixelX: number, label: string, area: DrawingArea, alignment: LabelAlignment, hasArrow: boolean) => {
|
|
25
|
+
x: number;
|
|
26
|
+
textAnchor: LabelTextAnchor;
|
|
27
|
+
};
|
|
22
28
|
/**
|
|
23
29
|
* Computes the vertical position of the label text baseline.
|
|
24
30
|
*/
|
|
25
31
|
export declare const computeLabelY: (pixelY: number, radius: number, labelPosition: "top" | "bottom", renderArrow: boolean) => number;
|
|
32
|
+
/**
|
|
33
|
+
* Computes where a point's label and its connector arrow are drawn: the
|
|
34
|
+
* (optionally clamped) horizontal placement, the vertical baseline, and whether
|
|
35
|
+
* the arrow is rendered. Label content is resolved separately via
|
|
36
|
+
* {@link resolveLabel}.
|
|
37
|
+
*/
|
|
38
|
+
export declare const computeLabelGeometry: ({ text, pixelX, pixelY, size, labelPosition, showLabelArrow, area, alignment, }: {
|
|
39
|
+
text: string;
|
|
40
|
+
pixelX: number;
|
|
41
|
+
pixelY: number;
|
|
42
|
+
size: number;
|
|
43
|
+
labelPosition: "top" | "bottom";
|
|
44
|
+
showLabelArrow: boolean;
|
|
45
|
+
area: DrawingArea;
|
|
46
|
+
alignment: LabelAlignment;
|
|
47
|
+
}) => {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
textAnchor: LabelTextAnchor;
|
|
51
|
+
};
|
|
26
52
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Point/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQ7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzD,eAAO,MAAM,cAAc,GACzB,IAAI,MAAM,EACV,IAAI,MAAM,EACV,MAAM,WAAW,KAChB,OAIyB,CAAC;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,EACV,IAAI,MAAM,EACV,QAAQ,MAAM,EACd,UAAU,KAAK,GAAG,QAAQ,KACzB,MAYF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,EAC3D,OAAO,MAAM,KACZ,MAAM,GAAG,SAGX,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,MAAM,EACb,YAAY,aAAa,GAAG,SAAS,KACpC,MAAM,GAAG,SAMX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,MAAM,WAAW,EACjB,WAAW,cAAc,EACzB,UAAU,OAAO,KAChB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,eAAe,CAAA;CAgB1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,eAAe,KAAK,GAAG,QAAQ,EAC/B,aAAa,OAAO,KACnB,MAMF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,iFASlC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,cAAc,CAAC;CAC3B,KAAG;IACF,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,eAAe,CAAC;CAY7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/lumen-ui-rnative-visualization",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"keywords": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"!**/*.tsbuildinfo"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@ledgerhq/lumen-utils-shared": "0.1.
|
|
34
|
+
"@ledgerhq/lumen-utils-shared": "0.1.6",
|
|
35
35
|
"d3-array": "^3.2.4",
|
|
36
36
|
"d3-scale": "^4.0.2",
|
|
37
37
|
"d3-shape": "^3.2.0"
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@types/react": "^19.0.0",
|
|
47
|
-
"@ledgerhq/lumen-design-core": "0.1.
|
|
48
|
-
"@ledgerhq/lumen-ui-rnative": "0.1.
|
|
47
|
+
"@ledgerhq/lumen-design-core": "0.1.18",
|
|
48
|
+
"@ledgerhq/lumen-ui-rnative": "0.1.46",
|
|
49
49
|
"react": "^19.0.0",
|
|
50
50
|
"react-native": "~0.81.6",
|
|
51
51
|
"react-native-svg": "^15.0.0",
|
|
@@ -8,6 +8,7 @@ import { Text as SvgText } from 'react-native-svg';
|
|
|
8
8
|
import { CartesianChart } from '../CartesianChart';
|
|
9
9
|
|
|
10
10
|
import { Point } from './Point';
|
|
11
|
+
import type { PointLabelProps } from './types';
|
|
11
12
|
|
|
12
13
|
const sampleSeries = [{ id: 's1', stroke: '#000', data: [10, 20, 30, 40, 50] }];
|
|
13
14
|
|
|
@@ -186,6 +187,51 @@ describe('Point', () => {
|
|
|
186
187
|
expect(bottomY).toBeGreaterThan(topY);
|
|
187
188
|
});
|
|
188
189
|
|
|
190
|
+
it('anchors a long label inward at the left edge by default', () => {
|
|
191
|
+
const labelSpy = jest.fn(({ x, y, children }: PointLabelProps) => (
|
|
192
|
+
<SvgText x={x} y={y}>
|
|
193
|
+
{children}
|
|
194
|
+
</SvgText>
|
|
195
|
+
));
|
|
196
|
+
|
|
197
|
+
renderInChart(
|
|
198
|
+
<Point
|
|
199
|
+
dataX={0}
|
|
200
|
+
dataY={10}
|
|
201
|
+
label='A long edge label'
|
|
202
|
+
LabelComponent={labelSpy}
|
|
203
|
+
/>,
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
expect(labelSpy).toHaveBeenCalledWith(
|
|
207
|
+
expect.objectContaining({ textAnchor: 'start' }),
|
|
208
|
+
undefined,
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it("centres a long edge label when labelAlignment is 'center'", () => {
|
|
213
|
+
const labelSpy = jest.fn(({ x, y, children }: PointLabelProps) => (
|
|
214
|
+
<SvgText x={x} y={y}>
|
|
215
|
+
{children}
|
|
216
|
+
</SvgText>
|
|
217
|
+
));
|
|
218
|
+
|
|
219
|
+
renderInChart(
|
|
220
|
+
<Point
|
|
221
|
+
dataX={0}
|
|
222
|
+
dataY={10}
|
|
223
|
+
label='A long edge label'
|
|
224
|
+
labelAlignment='center'
|
|
225
|
+
LabelComponent={labelSpy}
|
|
226
|
+
/>,
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
expect(labelSpy).toHaveBeenCalledWith(
|
|
230
|
+
expect.objectContaining({ textAnchor: 'middle' }),
|
|
231
|
+
undefined,
|
|
232
|
+
);
|
|
233
|
+
});
|
|
234
|
+
|
|
189
235
|
it('calls onPress when the point is pressed', () => {
|
|
190
236
|
const onPress = jest.fn();
|
|
191
237
|
const { getByTestId } = renderInChart(
|