@ledgerhq/lumen-ui-rnative-visualization 0.1.21 → 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 +5 -5
  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,15 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import { useTheme } from '@ledgerhq/lumen-ui-rnative';
4
- import { useMemo } from 'react';
5
4
  import Animated from 'react-native-reanimated';
6
5
  import { Circle, G, Polygon, Text as SvgText } from 'react-native-svg';
7
- import { projectPoint } from "../../utils/scales/scales.js";
8
- import { useCartesianChartContext } from "../CartesianChart/context/index.js";
9
- import { useRevealFadeProps } from "../CartesianChart/RevealAnimation/index.js";
10
- import { DEFAULT_SIZE, STROKE_WIDTH } from "./constants.js";
11
- import { useMagneticPointsContext } from "./pointContext/index.js";
12
- import { buildArrowPoints, computeLabelY, isWithinBounds, resolveLabel, useMagneticRegistration } from "./utils.js";
6
+ import { DEFAULT_SIZE, LABEL_FONT_SIZE, STROKE_WIDTH } from "./constants.js";
7
+ import { usePointGeometry } from "./usePointGeometry.js";
8
+ import { buildArrowPoints, computeLabelGeometry, resolveLabel } from "./utils.js";
13
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
10
  const AnimatedG = Animated.createAnimatedComponent(G);
15
11
  export function PointLabel({
@@ -22,12 +18,48 @@ export function PointLabel({
22
18
  return /*#__PURE__*/_jsx(SvgText, {
23
19
  textAnchor: textAnchor,
24
20
  fill: theme.colors.text.base,
25
- fontSize: theme.typographies.body4.fontSize,
21
+ fontSize: LABEL_FONT_SIZE,
26
22
  fontWeight: theme.typographies.body4.fontWeight,
27
23
  fontFamily: theme.fontFamilies.sans,
28
24
  ...props
29
25
  });
30
26
  }
27
+ function PointMarker({
28
+ x,
29
+ y,
30
+ size,
31
+ color
32
+ }) {
33
+ const {
34
+ theme
35
+ } = useTheme();
36
+ const radius = size / 2;
37
+ const fill = color ?? theme.colors.bg.mutedStrong;
38
+ return /*#__PURE__*/_jsx(Circle, {
39
+ testID: "point-circle",
40
+ cx: x,
41
+ cy: y,
42
+ r: radius,
43
+ fill: fill,
44
+ stroke: theme.colors.bg.canvas,
45
+ strokeWidth: STROKE_WIDTH
46
+ });
47
+ }
48
+ function PointArrow({
49
+ x,
50
+ y,
51
+ size,
52
+ position
53
+ }) {
54
+ const {
55
+ theme
56
+ } = useTheme();
57
+ return /*#__PURE__*/_jsx(Polygon, {
58
+ testID: "point-arrow",
59
+ points: buildArrowPoints(x, y, size / 2, position),
60
+ fill: theme.colors.text.base
61
+ });
62
+ }
31
63
  export function Point({
32
64
  dataX,
33
65
  dataY,
@@ -39,56 +71,54 @@ export function Point({
39
71
  showLabelArrow = true,
40
72
  size = DEFAULT_SIZE,
41
73
  onPress,
42
- magnetic = false
74
+ magnetic = false,
75
+ labelAlignment = 'auto'
43
76
  }) {
44
77
  const {
45
- getXScale,
46
- getYScale,
47
- getXAxisConfig,
48
- drawingArea
49
- } = useCartesianChartContext();
50
- const fadeProps = useRevealFadeProps();
51
- const magneticContext = useMagneticPointsContext();
52
- useMagneticRegistration(magnetic, dataX, getXAxisConfig, magneticContext);
53
- const {
54
- theme
55
- } = useTheme();
56
- const xScale = getXScale();
57
- const yScale = getYScale();
58
- const radius = size / 2;
59
- const fill = color ?? theme.colors.bg.mutedStrong;
60
- const pixel = useMemo(() => {
61
- if (!xScale || !yScale) return undefined;
62
- return projectPoint(dataX, dataY, xScale, yScale);
63
- }, [dataX, dataY, xScale, yScale]);
64
- if (!pixel || !isWithinBounds(pixel.x, pixel.y, drawingArea)) {
78
+ pixel,
79
+ drawingArea,
80
+ fadeProps,
81
+ isVisible
82
+ } = usePointGeometry({
83
+ dataX,
84
+ dataY,
85
+ magnetic
86
+ });
87
+ if (!isVisible || !pixel) {
65
88
  return null;
66
89
  }
67
- const resolvedLabel = resolveLabel(label, dataX);
68
- const hasLabel = resolvedLabel != null;
69
- const renderArrow = showLabelArrow && hasLabel;
70
- const labelY = computeLabelY(pixel.y, radius, labelPosition, renderArrow);
90
+ const labelText = resolveLabel(label, dataX);
91
+ const isLabelVisible = labelText !== undefined;
92
+ const labelGeometry = isLabelVisible ? computeLabelGeometry({
93
+ text: labelText,
94
+ pixelX: pixel.x,
95
+ pixelY: pixel.y,
96
+ size,
97
+ labelPosition,
98
+ showLabelArrow,
99
+ area: drawingArea,
100
+ alignment: labelAlignment
101
+ }) : null;
71
102
  const Label = LabelComponent ?? PointLabel;
72
103
  return /*#__PURE__*/_jsxs(AnimatedG, {
73
104
  testID: "point-group",
74
105
  onPress: onPress,
75
106
  animatedProps: fadeProps,
76
- children: [!hidePoint && /*#__PURE__*/_jsx(Circle, {
77
- testID: "point-circle",
78
- cx: pixel.x,
79
- cy: pixel.y,
80
- r: radius,
81
- fill: fill,
82
- stroke: theme.colors.bg.canvas,
83
- strokeWidth: STROKE_WIDTH
84
- }), renderArrow && /*#__PURE__*/_jsx(Polygon, {
85
- testID: "point-arrow",
86
- points: buildArrowPoints(pixel.x, pixel.y, radius, labelPosition),
87
- fill: theme.colors.text.base
88
- }), resolvedLabel != null && /*#__PURE__*/_jsx(Label, {
107
+ children: [!hidePoint && /*#__PURE__*/_jsx(PointMarker, {
108
+ x: pixel.x,
109
+ y: pixel.y,
110
+ size: size,
111
+ color: color
112
+ }), isLabelVisible && showLabelArrow && /*#__PURE__*/_jsx(PointArrow, {
89
113
  x: pixel.x,
90
- y: labelY,
91
- children: resolvedLabel
114
+ y: pixel.y,
115
+ size: size,
116
+ position: labelPosition
117
+ }), labelText != null && labelGeometry && /*#__PURE__*/_jsx(Label, {
118
+ x: labelGeometry.x,
119
+ y: labelGeometry.y,
120
+ textAnchor: labelGeometry.textAnchor,
121
+ children: labelText
92
122
  })]
93
123
  });
94
124
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useTheme","useMemo","Animated","Circle","G","Polygon","Text","SvgText","projectPoint","useCartesianChartContext","useRevealFadeProps","DEFAULT_SIZE","STROKE_WIDTH","useMagneticPointsContext","buildArrowPoints","computeLabelY","isWithinBounds","resolveLabel","useMagneticRegistration","jsx","_jsx","jsxs","_jsxs","AnimatedG","createAnimatedComponent","PointLabel","textAnchor","props","theme","fill","colors","text","base","fontSize","typographies","body4","fontWeight","fontFamily","fontFamilies","sans","Point","dataX","dataY","color","label","LabelComponent","labelPosition","hidePoint","showLabelArrow","size","onPress","magnetic","getXScale","getYScale","getXAxisConfig","drawingArea","fadeProps","magneticContext","xScale","yScale","radius","bg","mutedStrong","pixel","undefined","x","y","resolvedLabel","hasLabel","renderArrow","labelY","Label","testID","animatedProps","children","cx","cy","r","stroke","canvas","strokeWidth","points"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/Point.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useTheme","Animated","Circle","G","Polygon","Text","SvgText","DEFAULT_SIZE","LABEL_FONT_SIZE","STROKE_WIDTH","usePointGeometry","buildArrowPoints","computeLabelGeometry","resolveLabel","jsx","_jsx","jsxs","_jsxs","AnimatedG","createAnimatedComponent","PointLabel","textAnchor","props","theme","fill","colors","text","base","fontSize","fontWeight","typographies","body4","fontFamily","fontFamilies","sans","PointMarker","x","y","size","color","radius","bg","mutedStrong","testID","cx","cy","r","stroke","canvas","strokeWidth","PointArrow","position","points","Point","dataX","dataY","label","LabelComponent","labelPosition","hidePoint","showLabelArrow","onPress","magnetic","labelAlignment","pixel","drawingArea","fadeProps","isVisible","labelText","isLabelVisible","undefined","labelGeometry","pixelX","pixelY","area","alignment","Label","animatedProps","children"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/Point.tsx"],"mappings":"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","ignoreList":[]}
@@ -212,6 +212,47 @@ describe('Point', () => {
212
212
  const bottomY = bottomSpy.mock.calls[0][0].y;
213
213
  expect(bottomY).toBeGreaterThan(topY);
214
214
  });
215
+ it('anchors a long label inward at the left edge by default', () => {
216
+ const labelSpy = jest.fn(({
217
+ x,
218
+ y,
219
+ children
220
+ }) => /*#__PURE__*/_jsx(SvgText, {
221
+ x: x,
222
+ y: y,
223
+ children: children
224
+ }));
225
+ renderInChart(/*#__PURE__*/_jsx(Point, {
226
+ dataX: 0,
227
+ dataY: 10,
228
+ label: "A long edge label",
229
+ LabelComponent: labelSpy
230
+ }));
231
+ expect(labelSpy).toHaveBeenCalledWith(expect.objectContaining({
232
+ textAnchor: 'start'
233
+ }), undefined);
234
+ });
235
+ it("centres a long edge label when labelAlignment is 'center'", () => {
236
+ const labelSpy = jest.fn(({
237
+ x,
238
+ y,
239
+ children
240
+ }) => /*#__PURE__*/_jsx(SvgText, {
241
+ x: x,
242
+ y: y,
243
+ children: children
244
+ }));
245
+ renderInChart(/*#__PURE__*/_jsx(Point, {
246
+ dataX: 0,
247
+ dataY: 10,
248
+ label: "A long edge label",
249
+ labelAlignment: "center",
250
+ LabelComponent: labelSpy
251
+ }));
252
+ expect(labelSpy).toHaveBeenCalledWith(expect.objectContaining({
253
+ textAnchor: 'middle'
254
+ }), undefined);
255
+ });
215
256
  it('calls onPress when the point is pressed', () => {
216
257
  const onPress = jest.fn();
217
258
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["describe","it","expect","jest","ledgerLiveThemes","ThemeProvider","fireEvent","render","React","Text","SvgText","CartesianChart","Point","jsx","_jsx","sampleSeries","id","stroke","data","Wrapper","children","themes","colorScheme","renderInChart","pointElement","width","height","xAxis","yAxis","series","getByTestId","dataX","dataY","circle","toBeTruthy","props","r","toBe","color","size","fill","getByText","label","i","CustomLabel","x","y","testID","LabelComponent","queryByTestId","toBeNull","hidePoint","scaleType","showLabelArrow","topSpy","fn","bottomSpy","labelPosition","topY","mock","calls","bottomY","toBeGreaterThan","onPress","press","toHaveBeenCalled"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/Point.test.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["describe","it","expect","jest","ledgerLiveThemes","ThemeProvider","fireEvent","render","React","Text","SvgText","CartesianChart","Point","jsx","_jsx","sampleSeries","id","stroke","data","Wrapper","children","themes","colorScheme","renderInChart","pointElement","width","height","xAxis","yAxis","series","getByTestId","dataX","dataY","circle","toBeTruthy","props","r","toBe","color","size","fill","getByText","label","i","CustomLabel","x","y","testID","LabelComponent","queryByTestId","toBeNull","hidePoint","scaleType","showLabelArrow","topSpy","fn","bottomSpy","labelPosition","topY","mock","calls","bottomY","toBeGreaterThan","labelSpy","toHaveBeenCalledWith","objectContaining","textAnchor","undefined","labelAlignment","onPress","press","toHaveBeenCalled"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/Point.test.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,4 +6,6 @@ export const LABEL_FONT_SIZE = 10;
6
6
  export const ARROW_WIDTH = 6;
7
7
  export const ARROW_HEIGHT = 4;
8
8
  export const GAP = 4;
9
+ /** Approximate width of a character in the label font, as a ratio of the font size. Used to compute the label width. */
10
+ export const LABEL_CHAR_WIDTH_RATIO = 0.6;
9
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_SIZE","STROKE_WIDTH","LABEL_FONT_SIZE","ARROW_WIDTH","ARROW_HEIGHT","GAP"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,eAAe,GAAG,EAAE;AACjC,OAAO,MAAMC,WAAW,GAAG,CAAC;AAC5B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,GAAG,GAAG,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_SIZE","STROKE_WIDTH","LABEL_FONT_SIZE","ARROW_WIDTH","ARROW_HEIGHT","GAP","LABEL_CHAR_WIDTH_RATIO"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,YAAY,GAAG,EAAE;AAC9B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,eAAe,GAAG,EAAE;AACjC,OAAO,MAAMC,WAAW,GAAG,CAAC;AAC5B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,GAAG,GAAG,CAAC;AACpB;AACA,OAAO,MAAMC,sBAAsB,GAAG,GAAG","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useMemo } from 'react';
4
+ import { projectPoint } from "../../utils/scales/scales.js";
5
+ import { useCartesianChartContext } from "../CartesianChart/context/index.js";
6
+ import { useRevealFadeProps } from "../CartesianChart/RevealAnimation/index.js";
7
+ import { useMagneticPointsContext } from "./pointContext/index.js";
8
+ import { isWithinBounds, resolveDataXToIndex } from "./utils.js";
9
+ /**
10
+ * Resolves a point's chart geometry and behaviour: projects its data
11
+ * coordinates to pixels, registers it as a magnetic snap target when enabled,
12
+ * exposes the reveal-animation props, and reports whether it falls inside the
13
+ * drawing area.
14
+ */
15
+ export const usePointGeometry = ({
16
+ dataX,
17
+ dataY,
18
+ magnetic
19
+ }) => {
20
+ const {
21
+ getXScale,
22
+ getYScale,
23
+ getXAxisConfig,
24
+ drawingArea
25
+ } = useCartesianChartContext();
26
+ const magneticContext = useMagneticPointsContext();
27
+ useMagneticRegistration(magnetic, dataX, getXAxisConfig, magneticContext);
28
+ const xScale = getXScale();
29
+ const yScale = getYScale();
30
+ const pixel = useMemo(() => {
31
+ if (!xScale || !yScale) return undefined;
32
+ return projectPoint(dataX, dataY, xScale, yScale);
33
+ }, [dataX, dataY, xScale, yScale]);
34
+ const fadeProps = useRevealFadeProps();
35
+ const isVisible = pixel !== undefined && isWithinBounds(pixel.x, pixel.y, drawingArea);
36
+ return {
37
+ pixel,
38
+ drawingArea,
39
+ fadeProps,
40
+ isVisible
41
+ };
42
+ };
43
+
44
+ /**
45
+ * Registers/unregisters a data index as a magnetic snap target
46
+ * when the Point has `magnetic` enabled.
47
+ */
48
+ export const useMagneticRegistration = (magnetic, dataX, getXAxisConfig, {
49
+ register,
50
+ unregister
51
+ }) => {
52
+ useEffect(() => {
53
+ if (!magnetic) return;
54
+ const index = resolveDataXToIndex(dataX, getXAxisConfig());
55
+ if (index === undefined) return;
56
+ register(index);
57
+ return () => unregister(index);
58
+ }, [magnetic, dataX, getXAxisConfig, register, unregister]);
59
+ };
60
+ //# sourceMappingURL=usePointGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","projectPoint","useCartesianChartContext","useRevealFadeProps","useMagneticPointsContext","isWithinBounds","resolveDataXToIndex","usePointGeometry","dataX","dataY","magnetic","getXScale","getYScale","getXAxisConfig","drawingArea","magneticContext","useMagneticRegistration","xScale","yScale","pixel","undefined","fadeProps","isVisible","x","y","register","unregister","index"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/usePointGeometry.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAE1C,SAASC,YAAY,QAAQ,8BAA2B;AAGxD,SAASC,wBAAwB,QAAQ,oCAA2B;AACpE,SAASC,kBAAkB,QAAQ,4CAAmC;AACtE,SAASC,wBAAwB,QAAQ,yBAAgB;AAEzD,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,YAAS;AAiB7D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,KAAK;EACLC,KAAK;EACLC;AACsB,CAAC,KAAoB;EAC3C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC,cAAc;IAAEC;EAAY,CAAC,GACzDZ,wBAAwB,CAAC,CAAC;EAC5B,MAAMa,eAAe,GAAGX,wBAAwB,CAAC,CAAC;EAElDY,uBAAuB,CAACN,QAAQ,EAAEF,KAAK,EAAEK,cAAc,EAAEE,eAAe,CAAC;EAEzE,MAAME,MAAM,GAAGN,SAAS,CAAC,CAAC;EAC1B,MAAMO,MAAM,GAAGN,SAAS,CAAC,CAAC;EAE1B,MAAMO,KAAK,GAAGnB,OAAO,CAAC,MAAM;IAC1B,IAAI,CAACiB,MAAM,IAAI,CAACC,MAAM,EAAE,OAAOE,SAAS;IACxC,OAAOnB,YAAY,CAACO,KAAK,EAAEC,KAAK,EAAEQ,MAAM,EAAEC,MAAM,CAAC;EACnD,CAAC,EAAE,CAACV,KAAK,EAAEC,KAAK,EAAEQ,MAAM,EAAEC,MAAM,CAAC,CAAC;EAElC,MAAMG,SAAS,GAAGlB,kBAAkB,CAAC,CAAC;EAEtC,MAAMmB,SAAS,GACbH,KAAK,KAAKC,SAAS,IAAIf,cAAc,CAACc,KAAK,CAACI,CAAC,EAAEJ,KAAK,CAACK,CAAC,EAAEV,WAAW,CAAC;EAEtE,OAAO;IAAEK,KAAK;IAAEL,WAAW;IAAEO,SAAS;IAAEC;EAAU,CAAC;AACrD,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMN,uBAAuB,GAAGA,CACrCN,QAAiB,EACjBF,KAAa,EACbK,cAA+C,EAC/C;EAAEY,QAAQ;EAAEC;AAAuC,CAAC,KAC3C;EACT3B,SAAS,CAAC,MAAM;IACd,IAAI,CAACW,QAAQ,EAAE;IACf,MAAMiB,KAAK,GAAGrB,mBAAmB,CAACE,KAAK,EAAEK,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAIc,KAAK,KAAKP,SAAS,EAAE;IACzBK,QAAQ,CAACE,KAAK,CAAC;IACf,OAAO,MAAMD,UAAU,CAACC,KAAK,CAAC;EAChC,CAAC,EAAE,CAACjB,QAAQ,EAAEF,KAAK,EAAEK,cAAc,EAAEY,QAAQ,EAAEC,UAAU,CAAC,CAAC;AAC7D,CAAC","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it, jest } from '@jest/globals';
4
+ import { renderHook } from '@testing-library/react-native';
5
+ import { useMagneticRegistration } from "./usePointGeometry.js";
6
+ const makeContext = () => ({
7
+ register: jest.fn(),
8
+ unregister: jest.fn(),
9
+ version: 0,
10
+ getMagneticPoints: () => new Set()
11
+ });
12
+ const noAxisConfig = () => undefined;
13
+ describe('useMagneticRegistration', () => {
14
+ it('registers the data index when magnetic is true', () => {
15
+ const ctx = makeContext();
16
+ renderHook(() => useMagneticRegistration(true, 3, noAxisConfig, ctx));
17
+ expect(ctx.register).toHaveBeenCalledWith(3);
18
+ });
19
+ it('does not register when magnetic is false', () => {
20
+ const ctx = makeContext();
21
+ renderHook(() => useMagneticRegistration(false, 3, noAxisConfig, ctx));
22
+ expect(ctx.register).not.toHaveBeenCalled();
23
+ });
24
+ it('unregisters on unmount', () => {
25
+ const ctx = makeContext();
26
+ const {
27
+ unmount
28
+ } = renderHook(() => useMagneticRegistration(true, 3, noAxisConfig, ctx));
29
+ unmount();
30
+ expect(ctx.unregister).toHaveBeenCalledWith(3);
31
+ });
32
+ it('resolves dataX through axis config data when provided', () => {
33
+ const ctx = makeContext();
34
+ const getXAxisConfig = () => ({
35
+ scaleType: 'band',
36
+ data: [100, 200, 300]
37
+ });
38
+ renderHook(() => useMagneticRegistration(true, 200, getXAxisConfig, ctx));
39
+ expect(ctx.register).toHaveBeenCalledWith(1);
40
+ });
41
+ it('does not register when axis data exists but does not contain the value', () => {
42
+ const ctx = makeContext();
43
+ const getXAxisConfig = () => ({
44
+ scaleType: 'band',
45
+ data: [100, 200, 300]
46
+ });
47
+ renderHook(() => useMagneticRegistration(true, 999, getXAxisConfig, ctx));
48
+ expect(ctx.register).not.toHaveBeenCalled();
49
+ });
50
+ it('re-registers when dataX changes', () => {
51
+ const ctx = makeContext();
52
+ const {
53
+ rerender
54
+ } = renderHook(({
55
+ dataX
56
+ }) => useMagneticRegistration(true, dataX, noAxisConfig, ctx), {
57
+ initialProps: {
58
+ dataX: 2
59
+ }
60
+ });
61
+ expect(ctx.register).toHaveBeenCalledWith(2);
62
+ rerender({
63
+ dataX: 4
64
+ });
65
+ expect(ctx.unregister).toHaveBeenCalledWith(2);
66
+ expect(ctx.register).toHaveBeenCalledWith(4);
67
+ });
68
+ it('unregisters and stops when magnetic switches to false', () => {
69
+ const ctx = makeContext();
70
+ const {
71
+ rerender
72
+ } = renderHook(({
73
+ magnetic
74
+ }) => useMagneticRegistration(magnetic, 3, noAxisConfig, ctx), {
75
+ initialProps: {
76
+ magnetic: true
77
+ }
78
+ });
79
+ expect(ctx.register).toHaveBeenCalledWith(3);
80
+ rerender({
81
+ magnetic: false
82
+ });
83
+ expect(ctx.unregister).toHaveBeenCalledWith(3);
84
+ });
85
+ });
86
+ //# sourceMappingURL=usePointGeometry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","jest","renderHook","useMagneticRegistration","makeContext","register","fn","unregister","version","getMagneticPoints","Set","noAxisConfig","undefined","ctx","toHaveBeenCalledWith","not","toHaveBeenCalled","unmount","getXAxisConfig","scaleType","data","rerender","dataX","initialProps","magnetic"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/usePointGeometry.test.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect } from 'react';
4
- import { LABEL_FONT_SIZE, ARROW_WIDTH, ARROW_HEIGHT, GAP } from "./constants.js";
3
+ import { ARROW_HEIGHT, ARROW_WIDTH, GAP, LABEL_CHAR_WIDTH_RATIO, LABEL_FONT_SIZE } from "./constants.js";
5
4
  export const isWithinBounds = (px, py, area) => px >= area.x && px <= area.x + area.width && py >= area.y && py <= area.y + area.height;
6
5
 
7
6
  /**
@@ -38,20 +37,36 @@ export const resolveDataXToIndex = (dataX, axisConfig) => {
38
37
  };
39
38
 
40
39
  /**
41
- * Registers/unregisters a data index as a magnetic snap target
42
- * when the Point has `magnetic` enabled.
40
+ * Computes the label's horizontal placement, keeping it inside the drawing area
41
+ * near the left/right edges. Centred on the point when it fits; otherwise
42
+ * anchored to the edge and aligned with the arrow's outer vertex (offset by half
43
+ * the arrow width from the point, when an arrow is rendered).
43
44
  */
44
- export const useMagneticRegistration = (magnetic, dataX, getXAxisConfig, {
45
- register,
46
- unregister
47
- }) => {
48
- useEffect(() => {
49
- if (!magnetic) return;
50
- const index = resolveDataXToIndex(dataX, getXAxisConfig());
51
- if (index === undefined) return;
52
- register(index);
53
- return () => unregister(index);
54
- }, [magnetic, dataX, getXAxisConfig, register, unregister]);
45
+ export const computeLabelX = (pixelX, label, area, alignment, hasArrow) => {
46
+ if (alignment === 'center') {
47
+ return {
48
+ x: pixelX,
49
+ textAnchor: 'middle'
50
+ };
51
+ }
52
+ const halfWidth = label.length * LABEL_FONT_SIZE * LABEL_CHAR_WIDTH_RATIO / 2;
53
+ const arrowOffset = hasArrow ? ARROW_WIDTH / 2 : 0;
54
+ if (pixelX - halfWidth < area.x) {
55
+ return {
56
+ x: pixelX - arrowOffset,
57
+ textAnchor: 'start'
58
+ };
59
+ }
60
+ if (pixelX + halfWidth > area.x + area.width) {
61
+ return {
62
+ x: pixelX + arrowOffset,
63
+ textAnchor: 'end'
64
+ };
65
+ }
66
+ return {
67
+ x: pixelX,
68
+ textAnchor: 'middle'
69
+ };
55
70
  };
56
71
 
57
72
  /**
@@ -61,4 +76,32 @@ export const computeLabelY = (pixelY, radius, labelPosition, renderArrow) => {
61
76
  const arrowOffset = renderArrow ? ARROW_HEIGHT + GAP : GAP;
62
77
  return labelPosition === 'top' ? pixelY - radius - arrowOffset - GAP : pixelY + radius + arrowOffset + GAP + LABEL_FONT_SIZE;
63
78
  };
79
+
80
+ /**
81
+ * Computes where a point's label and its connector arrow are drawn: the
82
+ * (optionally clamped) horizontal placement, the vertical baseline, and whether
83
+ * the arrow is rendered. Label content is resolved separately via
84
+ * {@link resolveLabel}.
85
+ */
86
+ export const computeLabelGeometry = ({
87
+ text,
88
+ pixelX,
89
+ pixelY,
90
+ size,
91
+ labelPosition,
92
+ showLabelArrow,
93
+ area,
94
+ alignment
95
+ }) => {
96
+ const {
97
+ x,
98
+ textAnchor
99
+ } = computeLabelX(pixelX, text, area, alignment, showLabelArrow);
100
+ const y = computeLabelY(pixelY, size / 2, labelPosition, showLabelArrow);
101
+ return {
102
+ x,
103
+ y,
104
+ textAnchor
105
+ };
106
+ };
64
107
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","LABEL_FONT_SIZE","ARROW_WIDTH","ARROW_HEIGHT","GAP","isWithinBounds","px","py","area","x","width","y","height","buildArrowPoints","cx","cy","radius","position","halfW","tipY","baseY","resolveLabel","label","dataX","resolved","undefined","resolveDataXToIndex","axisConfig","axisData","data","index","indexOf","useMagneticRegistration","magnetic","getXAxisConfig","register","unregister","computeLabelY","pixelY","labelPosition","renderArrow","arrowOffset"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/utils.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ARROW_HEIGHT","ARROW_WIDTH","GAP","LABEL_CHAR_WIDTH_RATIO","LABEL_FONT_SIZE","isWithinBounds","px","py","area","x","width","y","height","buildArrowPoints","cx","cy","radius","position","halfW","tipY","baseY","resolveLabel","label","dataX","resolved","undefined","resolveDataXToIndex","axisConfig","axisData","data","index","indexOf","computeLabelX","pixelX","alignment","hasArrow","textAnchor","halfWidth","length","arrowOffset","computeLabelY","pixelY","labelPosition","renderArrow","computeLabelGeometry","text","size","showLabelArrow"],"sourceRoot":"../../../../../src","sources":["lib/Components/Point/utils.ts"],"mappings":"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","ignoreList":[]}