@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.
Files changed (36) hide show
  1. package/dist/module/lib/Components/Point/Point.js +78 -48
  2. package/dist/module/lib/Components/Point/Point.js.map +1 -1
  3. package/dist/module/lib/Components/Point/Point.test.js +41 -0
  4. package/dist/module/lib/Components/Point/Point.test.js.map +1 -1
  5. package/dist/module/lib/Components/Point/constants.js +2 -0
  6. package/dist/module/lib/Components/Point/constants.js.map +1 -1
  7. package/dist/module/lib/Components/Point/usePointGeometry.js +60 -0
  8. package/dist/module/lib/Components/Point/usePointGeometry.js.map +1 -0
  9. package/dist/module/lib/Components/Point/usePointGeometry.test.js +86 -0
  10. package/dist/module/lib/Components/Point/usePointGeometry.test.js.map +1 -0
  11. package/dist/module/lib/Components/Point/utils.js +58 -15
  12. package/dist/module/lib/Components/Point/utils.js.map +1 -1
  13. package/dist/module/lib/Components/Point/utils.test.js +37 -75
  14. package/dist/module/lib/Components/Point/utils.test.js.map +1 -1
  15. package/dist/module/lib/utils/domain/domain.js +4 -4
  16. package/dist/module/lib/utils/domain/domain.js.map +1 -1
  17. package/dist/typescript/src/lib/Components/Point/Point.d.ts +1 -1
  18. package/dist/typescript/src/lib/Components/Point/Point.d.ts.map +1 -1
  19. package/dist/typescript/src/lib/Components/Point/constants.d.ts +2 -0
  20. package/dist/typescript/src/lib/Components/Point/constants.d.ts.map +1 -1
  21. package/dist/typescript/src/lib/Components/Point/types.d.ts +32 -0
  22. package/dist/typescript/src/lib/Components/Point/types.d.ts.map +1 -1
  23. package/dist/typescript/src/lib/Components/Point/usePointGeometry.d.ts +33 -0
  24. package/dist/typescript/src/lib/Components/Point/usePointGeometry.d.ts.map +1 -0
  25. package/dist/typescript/src/lib/Components/Point/utils.d.ts +30 -4
  26. package/dist/typescript/src/lib/Components/Point/utils.d.ts.map +1 -1
  27. package/package.json +4 -4
  28. package/src/lib/Components/Point/Point.test.tsx +46 -0
  29. package/src/lib/Components/Point/Point.tsx +75 -56
  30. package/src/lib/Components/Point/constants.ts +2 -0
  31. package/src/lib/Components/Point/types.ts +41 -0
  32. package/src/lib/Components/Point/usePointGeometry.test.ts +95 -0
  33. package/src/lib/Components/Point/usePointGeometry.ts +77 -0
  34. package/src/lib/Components/Point/utils.test.ts +34 -80
  35. package/src/lib/Components/Point/utils.ts +77 -19
  36. package/src/lib/utils/domain/domain.ts +4 -4
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { describe, expect, it, jest } from '@jest/globals';
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, useMagneticRegistration } from "./utils.js";
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
- const makeContext = () => ({
94
- register: jest.fn(),
95
- unregister: jest.fn(),
96
- version: 0,
97
- getMagneticPoints: () => new Set()
98
- });
99
- const noAxisConfig = () => undefined;
100
- describe('useMagneticRegistration', () => {
101
- it('registers the data index when magnetic is true', () => {
102
- const ctx = makeContext();
103
- renderHook(() => useMagneticRegistration(true, 3, noAxisConfig, ctx));
104
- expect(ctx.register).toHaveBeenCalledWith(3);
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
- renderHook(() => useMagneticRegistration(true, 200, getXAxisConfig, ctx));
126
- expect(ctx.register).toHaveBeenCalledWith(1);
127
- });
128
- it('does not register when axis data exists but does not contain the value', () => {
129
- const ctx = makeContext();
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
- renderHook(() => useMagneticRegistration(true, 999, getXAxisConfig, ctx));
135
- expect(ctx.register).not.toHaveBeenCalled();
136
- });
137
- it('re-registers when dataX changes', () => {
138
- const ctx = makeContext();
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
- expect(ctx.register).toHaveBeenCalledWith(2);
149
- rerender({
150
- dataX: 4
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
- expect(ctx.unregister).toHaveBeenCalledWith(2);
153
- expect(ctx.register).toHaveBeenCalledWith(4);
154
- });
155
- it('unregisters and stops when magnetic switches to false', () => {
156
- const ctx = makeContext();
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(ctx.register).toHaveBeenCalledWith(3);
167
- rerender({
168
- magnetic: false
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","jest","renderHook","ARROW_HEIGHT","ARROW_WIDTH","GAP","LABEL_FONT_SIZE","buildArrowPoints","computeLabelY","isWithinBounds","resolveLabel","useMagneticRegistration","area","x","y","width","height","toBe","cx","cy","radius","halfW","result","tipY","baseY","i","undefined","toBeUndefined","pixelY","arrowOffset","makeContext","register","fn","unregister","version","getMagneticPoints","Set","noAxisConfig","ctx","toHaveBeenCalledWith","not","toHaveBeenCalled","unmount","getXAxisConfig","scaleType","data","rerender","dataX","initialProps","magnetic"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/utils.test.ts"],"mappings":"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","ignoreList":[]}
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 (!hasValue) {
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,IAAI,CAACF,QAAQ,EAAE;UACbX,GAAG,GAAGY,CAAC;UACPX,GAAG,GAAGW,CAAC;UACPD,QAAQ,GAAG,IAAI;QACjB,CAAC,MAAM;UACL,IAAIC,CAAC,GAAGZ,GAAG,EAAEA,GAAG,GAAGY,CAAC;UACpB,IAAIA,CAAC,GAAGX,GAAG,EAAEA,GAAG,GAAGW,CAAC;QACtB;MACF;IACF;EACF;EAEA,MAAMf,UAAsB,GAAGc,QAAQ,GAAG;IAAEX,GAAG;IAAEC;EAAI,CAAC,GAAG;IAAED,GAAG,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAE,CAAC;EAE3E,OAAOO,mBAAmB,CAACX,UAAU,EAAEH,UAAU,EAAEe,MAAM,CAAC;AAC5D,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMK,iBAAiB,GAAGA,CAC/BrB,MAAgB,EAChBC,UAAmC,KACxB;EACX,IAAIA,UAAU,EAAEE,IAAI,IAAIF,UAAU,CAACE,IAAI,CAACE,MAAM,GAAG,CAAC,EAAE;IAClD,OAAOJ,UAAU,CAACE,IAAI,CAACE,MAAM;EAC/B;EACA,OAAOL,MAAM,CAACY,MAAM,CAAC,CAACJ,GAAG,EAAEK,CAAC,KAAKC,IAAI,CAACN,GAAG,CAACA,GAAG,EAAEK,CAAC,CAACV,IAAI,EAAEE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAMU,mBAAmB,GAAGA,CAC1BX,UAAsB,EACtBkB,cAAwC,KACzB;EACf,IAAI,CAACA,cAAc,EAAE,OAAOlB,UAAU;EAEtC,IAAI,OAAOkB,cAAc,KAAK,UAAU,EAAE;IACxC,OAAOA,cAAc,CAAClB,UAAU,CAAC;EACnC;EAEA,OAAO;IACLG,GAAG,EAAEe,cAAc,CAACf,GAAG,IAAIH,UAAU,CAACG,GAAG;IACzCC,GAAG,EAAEc,cAAc,CAACd,GAAG,IAAIJ,UAAU,CAACI;EACxC,CAAC;AACH,CAAC","ignoreList":[]}
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":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAW3D,wBAAgB,UAAU,CAAC,EACzB,UAAqB,EACrB,GAAG,KAAK,EACT,EAAE,QAAQ,CAAC,eAAe,CAAC,2CAa3B;AAED,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,GACjB,EAAE,QAAQ,CAAC,UAAU,CAAC,kDA0DtB"}
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;CACpB,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 { MagneticPointsContextValue } from './pointContext/magneticPointsContext';
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
- * Registers/unregisters a data index as a magnetic snap target
19
- * when the Point has `magnetic` enabled.
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 useMagneticRegistration: (magnetic: boolean, dataX: number, getXAxisConfig: () => BaseAxisProps | undefined, { register, unregister }: MagneticPointsContextValue) => void;
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":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,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;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,OAAO,EACjB,OAAO,MAAM,EACb,gBAAgB,MAAM,aAAa,GAAG,SAAS,EAC/C,0BAA0B,0BAA0B,KACnD,IAQF,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"}
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.22",
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.5",
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.17",
48
- "@ledgerhq/lumen-ui-rnative": "0.1.45",
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(