@ledgerhq/lumen-ui-rnative-visualization 0.1.3 → 0.1.4
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 +2 -2
- package/dist/module/lib/Components/Axis/XAxis/XAxis.js.map +1 -1
- package/dist/module/lib/Components/Axis/YAxis/YAxis.js +2 -2
- package/dist/module/lib/Components/Axis/YAxis/YAxis.js.map +1 -1
- package/dist/module/lib/Components/CartesianChart/context/useBuildChartContext.test.js +2 -2
- package/dist/module/lib/Components/Line/utils.js.map +1 -1
- package/dist/module/lib/utils/scales/scales.js +5 -1
- package/dist/module/lib/utils/scales/scales.js.map +1 -1
- package/dist/module/lib/utils/ticks/ticks.js +16 -0
- package/dist/module/lib/utils/ticks/ticks.js.map +1 -1
- package/dist/typescript/src/lib/Components/Axis/XAxis/XAxis.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Axis/YAxis/YAxis.d.ts.map +1 -1
- package/dist/typescript/src/lib/Components/Line/utils.d.ts +1 -1
- package/dist/typescript/src/lib/Components/Line/utils.d.ts.map +1 -1
- package/dist/typescript/src/lib/utils/scales/scales.d.ts +4 -0
- package/dist/typescript/src/lib/utils/scales/scales.d.ts.map +1 -1
- package/dist/typescript/src/lib/utils/ticks/ticks.d.ts +11 -1
- package/dist/typescript/src/lib/utils/ticks/ticks.d.ts.map +1 -1
- package/dist/typescript/src/lib/utils/types.d.ts +4 -1
- package/dist/typescript/src/lib/utils/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/lib/Components/Axis/XAxis/XAxis.tsx +18 -13
- package/src/lib/Components/Axis/YAxis/YAxis.tsx +18 -13
- package/src/lib/Components/CartesianChart/context/useBuildChartContext.test.ts +2 -2
- package/src/lib/Components/Line/utils.ts +2 -2
- package/src/lib/utils/scales/scales.ts +8 -1
- package/src/lib/utils/ticks/ticks.ts +27 -1
- package/src/lib/utils/types.ts +4 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { useTheme } from '@ledgerhq/lumen-ui-rnative';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { G, Line as SvgLine, Text as SvgText } from 'react-native-svg';
|
|
6
|
-
import { buildTicksData } from "../../../utils/ticks/ticks.js";
|
|
6
|
+
import { buildTicksData, isTickOnXAxisDomainEdge } from "../../../utils/ticks/ticks.js";
|
|
7
7
|
import { useCartesianChartContext } from "../../CartesianChart/context/index.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
const STROKE_WIDTH = 1;
|
|
@@ -43,7 +43,7 @@ export const XAxis = ({
|
|
|
43
43
|
const lineStroke = theme.colors.border.muted;
|
|
44
44
|
const textFill = theme.colors.text.muted;
|
|
45
45
|
return /*#__PURE__*/_jsxs(G, {
|
|
46
|
-
children: [showGrid && ticksData.map((tick, i) => /*#__PURE__*/_jsx(SvgLine, {
|
|
46
|
+
children: [showGrid && ticksData.filter(tick => isTickOnXAxisDomainEdge(tick, drawingArea)).map((tick, i) => /*#__PURE__*/_jsx(SvgLine, {
|
|
47
47
|
x1: tick.position,
|
|
48
48
|
y1: drawingArea.y,
|
|
49
49
|
x2: tick.position,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useTheme","useMemo","G","Line","SvgLine","Text","SvgText","buildTicksData","useCartesianChartContext","jsx","_jsx","jsxs","_jsxs","STROKE_WIDTH","TICK_MARK_SIZE","TICK_LABEL_OFFSET","DEFAULT_AXIS_HEIGHT","XAxis","gridLineStyle","position","showGrid","showLine","showTickMark","ticks","ticksProp","tickLabelFormatter","getXScale","getXAxisConfig","drawingArea","theme","xScale","xAxisConfig","ticksData","width","isTop","axisY","y","height","fontSize","typographies","body4","tickDirection","labelY","labelDy","gridStroke","colors","border","mutedSubtle","lineStroke","muted","textFill","text","children","
|
|
1
|
+
{"version":3,"names":["useTheme","useMemo","G","Line","SvgLine","Text","SvgText","buildTicksData","isTickOnXAxisDomainEdge","useCartesianChartContext","jsx","_jsx","jsxs","_jsxs","STROKE_WIDTH","TICK_MARK_SIZE","TICK_LABEL_OFFSET","DEFAULT_AXIS_HEIGHT","XAxis","gridLineStyle","position","showGrid","showLine","showTickMark","ticks","ticksProp","tickLabelFormatter","getXScale","getXAxisConfig","drawingArea","theme","xScale","xAxisConfig","ticksData","width","isTop","axisY","y","height","fontSize","typographies","body4","tickDirection","labelY","labelDy","gridStroke","colors","border","mutedSubtle","lineStroke","muted","textFill","text","children","filter","tick","map","i","x1","y1","x2","y2","stroke","strokeWidth","strokeDasharray","undefined","value","x","strokeLinecap","dy","textAnchor","fill","fontFamily","fontFamilies","sans","label"],"sourceRoot":"../../../../../../src","sources":["lib/Components/Axis/XAxis/XAxis.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { useTheme } from '@ledgerhq/lumen-ui-rnative';
|
|
4
4
|
import { useMemo } from 'react';
|
|
5
5
|
import { G, Line as SvgLine, Text as SvgText } from 'react-native-svg';
|
|
6
|
-
import { buildTicksData } from "../../../utils/ticks/ticks.js";
|
|
6
|
+
import { buildTicksData, isTickOnYAxisDomainEdge } from "../../../utils/ticks/ticks.js";
|
|
7
7
|
import { useCartesianChartContext } from "../../CartesianChart/context/index.js";
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
9
|
const STROKE_WIDTH = 1;
|
|
@@ -43,7 +43,7 @@ export const YAxis = ({
|
|
|
43
43
|
const lineStroke = theme.colors.border.muted;
|
|
44
44
|
const textFill = theme.colors.text.muted;
|
|
45
45
|
return /*#__PURE__*/_jsxs(G, {
|
|
46
|
-
children: [showGrid && ticksData.map((tick, i) => /*#__PURE__*/_jsx(SvgLine, {
|
|
46
|
+
children: [showGrid && ticksData.filter(tick => isTickOnYAxisDomainEdge(tick, drawingArea)).map((tick, i) => /*#__PURE__*/_jsx(SvgLine, {
|
|
47
47
|
x1: drawingArea.x,
|
|
48
48
|
y1: tick.position,
|
|
49
49
|
x2: drawingArea.x + drawingArea.width,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useTheme","useMemo","G","Line","SvgLine","Text","SvgText","buildTicksData","useCartesianChartContext","jsx","_jsx","jsxs","_jsxs","STROKE_WIDTH","TICK_MARK_SIZE","TICK_LABEL_OFFSET","DEFAULT_AXIS_WIDTH","YAxis","position","showGrid","showLine","showTickMark","gridLineStyle","ticks","ticksProp","tickLabelFormatter","getYScale","getYAxisConfig","drawingArea","theme","yScale","yAxisConfig","ticksData","height","isStart","axisX","x","width","tickDirection","labelX","fontSize","typographies","body4","labelDy","gridStroke","colors","border","mutedSubtle","lineStroke","muted","textFill","text","children","
|
|
1
|
+
{"version":3,"names":["useTheme","useMemo","G","Line","SvgLine","Text","SvgText","buildTicksData","isTickOnYAxisDomainEdge","useCartesianChartContext","jsx","_jsx","jsxs","_jsxs","STROKE_WIDTH","TICK_MARK_SIZE","TICK_LABEL_OFFSET","DEFAULT_AXIS_WIDTH","YAxis","position","showGrid","showLine","showTickMark","gridLineStyle","ticks","ticksProp","tickLabelFormatter","getYScale","getYAxisConfig","drawingArea","theme","yScale","yAxisConfig","ticksData","height","isStart","axisX","x","width","tickDirection","labelX","fontSize","typographies","body4","labelDy","gridStroke","colors","border","mutedSubtle","lineStroke","muted","textFill","text","children","filter","tick","map","i","x1","y1","x2","y2","stroke","strokeWidth","strokeDasharray","undefined","value","y","strokeLinecap","dy","textAnchor","fill","fontFamily","fontFamilies","sans","label"],"sourceRoot":"../../../../../../src","sources":["lib/Components/Axis/YAxis/YAxis.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -217,8 +217,8 @@ describe('useBuildChartContext', () => {
|
|
|
217
217
|
}
|
|
218
218
|
})));
|
|
219
219
|
const domain = result.current.getYScale().domain();
|
|
220
|
-
expect(domain[0]).toBe(
|
|
221
|
-
expect(domain[1]).toBe(
|
|
220
|
+
expect(domain[0]).toBe(0);
|
|
221
|
+
expect(domain[1]).toBe(40);
|
|
222
222
|
});
|
|
223
223
|
it('inverts Y range for SVG coordinates', () => {
|
|
224
224
|
const {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["area","curveBumpX","line","isCategoricalScale","toScaledPoints","data","xScale","yScale","xData","pts","i","length","value","xInput","x","bandwidth","y","push","buildLinePath","points","d","curve","buildAreaPath","drawingArea","yBottom","height","y0","y1"],"sourceRoot":"../../../../../src","sources":["lib/Components/Line/utils.ts"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,EAAEC,IAAI,QAAQ,UAAU;AAEjD,SAASC,kBAAkB,QAAQ,8BAA2B;AAS9D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BC,
|
|
1
|
+
{"version":3,"names":["area","curveBumpX","line","isCategoricalScale","toScaledPoints","data","xScale","yScale","xData","pts","i","length","value","xInput","x","bandwidth","y","push","buildLinePath","points","d","curve","buildAreaPath","drawingArea","yBottom","height","y0","y1"],"sourceRoot":"../../../../../src","sources":["lib/Components/Line/utils.ts"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,EAAEC,IAAI,QAAQ,UAAU;AAEjD,SAASC,kBAAkB,QAAQ,8BAA2B;AAS9D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAC5BC,IAAuB,EACvBC,MAA0B,EAC1BC,MAAoB,EACpBC,KAAoC,KACjB;EACnB,MAAMC,GAAY,GAAG,EAAE;EAEvB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,MAAME,KAAK,GAAGP,IAAI,CAACK,CAAC,CAAC;IACrB,IAAIE,KAAK,KAAK,IAAI,EAAE;IAEpB,MAAMC,MAAM,GACVL,KAAK,IAAI,OAAOA,KAAK,CAACE,CAAC,CAAC,KAAK,QAAQ,GAAIF,KAAK,CAACE,CAAC,CAAC,GAAcA,CAAC;IAElE,MAAMI,CAAC,GAAGX,kBAAkB,CAACG,MAAM,CAAC,GAChC,CAACA,MAAM,CAACO,MAAM,CAAC,IAAI,CAAC,IAAIP,MAAM,CAACS,SAAS,CAAC,CAAC,GAAG,CAAC,GAC9CT,MAAM,CAACO,MAAM,CAAC;IAClB,MAAMG,CAAC,GAAGT,MAAM,CAACK,KAAK,CAAC;IAEvBH,GAAG,CAACQ,IAAI,CAAC,CAACH,CAAC,EAAYE,CAAC,CAAC,CAAC;EAC5B;EAEA,OAAOP,GAAG,CAACE,MAAM,IAAI,CAAC,GAAGF,GAAG,GAAG,IAAI;AACrC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMS,aAAa,GAAIC,MAAe,IAAoB;EAC/D,OACEjB,IAAI,CAAQ,CAAC,CACVY,CAAC,CAAEM,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CACdJ,CAAC,CAAEI,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CACdC,KAAK,CAACpB,UAAU,CAAC,CAACkB,MAAM,CAAC,IAAI,IAAI;AAExC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMG,aAAa,GAAGA,CAC3BH,MAAe,EACfI,WAAwB,KACN;EAClB,MAAMC,OAAO,GAAGD,WAAW,CAACP,CAAC,GAAGO,WAAW,CAACE,MAAM;EAElD,OACEzB,IAAI,CAAQ,CAAC,CACVc,CAAC,CAAEM,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CACdM,EAAE,CAACF,OAAO,CAAC,CACXG,EAAE,CAAEP,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CACfC,KAAK,CAACpB,UAAU,CAAC,CAACkB,MAAM,CAAC,IAAI,IAAI;AAExC,CAAC","ignoreList":[]}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { scaleBand, scaleLinear, scaleLog } from 'd3-scale';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a numeric scale with `.nice()` applied so the domain
|
|
6
|
+
* extends to clean rounded boundaries (e.g. `[4, 98]` → `[0, 100]`).
|
|
7
|
+
*/
|
|
4
8
|
export const getNumericScale = ({
|
|
5
9
|
scaleType,
|
|
6
10
|
domain,
|
|
7
11
|
range
|
|
8
12
|
}) => {
|
|
9
13
|
const scale = scaleType === 'log' ? scaleLog() : scaleLinear();
|
|
10
|
-
return scale.domain([domain.min, domain.max]).range([range.min, range.max]);
|
|
14
|
+
return scale.domain([domain.min, domain.max]).nice().range([range.min, range.max]);
|
|
11
15
|
};
|
|
12
16
|
export const getCategoricalScale = ({
|
|
13
17
|
domain,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["scaleBand","scaleLinear","scaleLog","getNumericScale","scaleType","domain","range","scale","min","max","getCategoricalScale","padding","domainArray","Array","from","length","_","i","paddingInner","paddingOuter","isBandScaleType","isCategoricalScale","bandwidth","isNumericScale"],"sourceRoot":"../../../../../src","sources":["lib/utils/scales/scales.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,UAAU;AAU3D,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAC9BC,SAAS;EACTC,MAAM;EACNC;AAKF,CAAC,KAAmB;EAClB,MAAMC,KAAK,GAAGH,SAAS,KAAK,KAAK,GAAGF,QAAQ,CAAC,CAAC,GAAGD,WAAW,CAAC,CAAC;EAC9D,OAAOM,KAAK,
|
|
1
|
+
{"version":3,"names":["scaleBand","scaleLinear","scaleLog","getNumericScale","scaleType","domain","range","scale","min","max","nice","getCategoricalScale","padding","domainArray","Array","from","length","_","i","paddingInner","paddingOuter","isBandScaleType","isCategoricalScale","bandwidth","isNumericScale"],"sourceRoot":"../../../../../src","sources":["lib/utils/scales/scales.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,UAAU;AAU3D;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAC9BC,SAAS;EACTC,MAAM;EACNC;AAKF,CAAC,KAAmB;EAClB,MAAMC,KAAK,GAAGH,SAAS,KAAK,KAAK,GAAGF,QAAQ,CAAC,CAAC,GAAGD,WAAW,CAAC,CAAC;EAC9D,OAAOM,KAAK,CACTF,MAAM,CAAC,CAACA,MAAM,CAACG,GAAG,EAAEH,MAAM,CAACI,GAAG,CAAC,CAAC,CAChCC,IAAI,CAAC,CAAC,CACNJ,KAAK,CAAC,CAACA,KAAK,CAACE,GAAG,EAAEF,KAAK,CAACG,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,OAAO,MAAME,mBAAmB,GAAGA,CAAC;EAClCN,MAAM;EACNC,KAAK;EACLM,OAAO,GAAG;AAKZ,CAAC,KAAuB;EACtB,MAAMC,WAAW,GAAGC,KAAK,CAACC,IAAI,CAC5B;IAAEC,MAAM,EAAEX,MAAM,CAACI,GAAG,GAAGJ,MAAM,CAACG,GAAG,GAAG;EAAE,CAAC,EACvC,CAACS,CAAC,EAAEC,CAAC,KAAKb,MAAM,CAACG,GAAG,GAAGU,CACzB,CAAC;EACD,OAAOlB,SAAS,CAAS,CAAC,CACvBK,MAAM,CAACQ,WAAW,CAAC,CACnBP,KAAK,CAAC,CAACA,KAAK,CAACE,GAAG,EAAEF,KAAK,CAACG,GAAG,CAAC,CAAC,CAC7BU,YAAY,CAACP,OAAO,CAAC,CACrBQ,YAAY,CAACR,OAAO,GAAG,CAAC,CAAC;AAC9B,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMS,eAAe,GAC1BjB,SAAuC,IACfA,SAAS,KAAK,MAAM;;AAE9C;AACA;AACA;AACA,OAAO,MAAMkB,kBAAkB,GAC7Bf,KAAyB,IACK;EAC9B,OAAO,WAAW,IAAIA,KAAK,IAAI,OAAOA,KAAK,CAACgB,SAAS,KAAK,UAAU;AACtE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GACzBjB,KAAyB,IACC;EAC1B,OAAO,CAACe,kBAAkB,CAACf,KAAK,CAAC;AACnC,CAAC","ignoreList":[]}
|
|
@@ -52,4 +52,20 @@ export const buildTicksData = (scale, axisConfig, explicitTicks, formatter) => {
|
|
|
52
52
|
label: getTickLabel(tick, axisData, formatter)
|
|
53
53
|
}));
|
|
54
54
|
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Excludes the X grid line at the Y-axis origin (left edge)
|
|
58
|
+
* to prevent overlap with the Y-axis solid line.
|
|
59
|
+
*/
|
|
60
|
+
export const isTickOnXAxisDomainEdge = (tick, drawingArea) => {
|
|
61
|
+
return tick.position !== drawingArea.x;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Excludes the Y grid line at the X-axis origin (bottom edge)
|
|
66
|
+
* to prevent overlap with the X-axis solid line.
|
|
67
|
+
*/
|
|
68
|
+
export const isTickOnYAxisDomainEdge = (tick, drawingArea) => {
|
|
69
|
+
return tick.position !== drawingArea.y + drawingArea.height;
|
|
70
|
+
};
|
|
55
71
|
//# sourceMappingURL=ticks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isCategoricalScale","isNumericScale","APPROXIMATE_TICK_COUNT","getTickValues","scale","explicitTicks","domain","ticks","getTickPosition","tick","bandwidth","getTickLabel","axisData","formatter","hasStringLabels","Array","isArray","rawValue","undefined","String","buildTicksData","axisConfig","tickValues","data","map","position","value","label"],"sourceRoot":"../../../../../src","sources":["lib/utils/ticks/ticks.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,cAAc,QAAQ,qBAAkB;
|
|
1
|
+
{"version":3,"names":["isCategoricalScale","isNumericScale","APPROXIMATE_TICK_COUNT","getTickValues","scale","explicitTicks","domain","ticks","getTickPosition","tick","bandwidth","getTickLabel","axisData","formatter","hasStringLabels","Array","isArray","rawValue","undefined","String","buildTicksData","axisConfig","tickValues","data","map","position","value","label","isTickOnXAxisDomainEdge","drawingArea","x","isTickOnYAxisDomainEdge","y","height"],"sourceRoot":"../../../../../src","sources":["lib/utils/ticks/ticks.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,cAAc,QAAQ,qBAAkB;AAOrE,OAAO,MAAMC,sBAAsB,GAAG,CAAC;AAQvC;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAC3BC,KAAyB,EACzBC,aAAwB,KACX;EACb,IAAIA,aAAa,EAAE,OAAOA,aAAa;EACvC,IAAIL,kBAAkB,CAACI,KAAK,CAAC,EAAE,OAAOA,KAAK,CAACE,MAAM,CAAC,CAAC;EACpD,IAAIL,cAAc,CAACG,KAAK,CAAC,EAAE,OAAOA,KAAK,CAACG,KAAK,CAACL,sBAAsB,CAAC;EACrE,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMM,eAAe,GAAGA,CAC7BJ,KAAyB,EACzBK,IAAY,KACD;EACX,IAAIT,kBAAkB,CAACI,KAAK,CAAC,EAAE;IAC7B,OAAO,CAACA,KAAK,CAACK,IAAI,CAAC,IAAI,CAAC,IAAIL,KAAK,CAACM,SAAS,CAAC,CAAC,GAAG,CAAC;EACnD;EACA,OAAQN,KAAK,CAA2BK,IAAI,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAME,YAAY,GAAGA,CAC1BF,IAAY,EACZG,QAAiC,EACjCC,SAA8C,KACnC;EACX,MAAMC,eAAe,GACnBF,QAAQ,IAAIG,KAAK,CAACC,OAAO,CAACJ,QAAQ,CAAC,IAAI,OAAOA,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;EAExE,IAAIC,SAAS,EAAE;IACb,MAAMI,QAAQ,GACZH,eAAe,IAAIF,QAAQ,CAACH,IAAI,CAAC,KAAKS,SAAS,GAAGN,QAAQ,CAACH,IAAI,CAAC,GAAGA,IAAI;IACzE,OAAOU,MAAM,CAACN,SAAS,CAACI,QAA2B,CAAC,CAAC;EACvD;EAEA,IAAIH,eAAe,IAAIF,QAAQ,CAACH,IAAI,CAAC,KAAKS,SAAS,EAAE;IACnD,OAAOC,MAAM,CAACP,QAAQ,CAACH,IAAI,CAAC,CAAC;EAC/B;EAEA,OAAOU,MAAM,CAACV,IAAI,CAAC;AACrB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMW,cAAc,GAAGA,CAC5BhB,KAAyB,EACzBiB,UAA4B,EAC5BhB,aAAwB,EACxBQ,SAA8C,KAC/B;EACf,MAAMS,UAAU,GAAGnB,aAAa,CAACC,KAAK,EAAEC,aAAa,CAAC;EACtD,MAAMO,QAAQ,GAAGS,UAAU,EAAEE,IAAI;EAEjC,OAAOD,UAAU,CAACE,GAAG,CAAEf,IAAI,KAAM;IAC/BgB,QAAQ,EAAEjB,eAAe,CAACJ,KAAK,EAAEK,IAAI,CAAC;IACtCiB,KAAK,EAAEjB,IAAI;IACXkB,KAAK,EAAEhB,YAAY,CAACF,IAAI,EAAEG,QAAQ,EAAEC,SAAS;EAC/C,CAAC,CAAC,CAAC;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMe,uBAAuB,GAAGA,CACrCnB,IAAc,EACdoB,WAAwB,KACZ;EACZ,OAAOpB,IAAI,CAACgB,QAAQ,KAAKI,WAAW,CAACC,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,GAAGA,CACrCtB,IAAc,EACdoB,WAAwB,KACZ;EACZ,OAAOpB,IAAI,CAACgB,QAAQ,KAAKI,WAAW,CAACG,CAAC,GAAGH,WAAW,CAACI,MAAM;AAC7D,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XAxis.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/XAxis/XAxis.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XAxis.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/XAxis/XAxis.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,KAAK,GAAI,sGAQnB,UAAU,mDA0FZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YAxis.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/YAxis/YAxis.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"YAxis.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/YAxis/YAxis.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,KAAK,GAAI,sGAQnB,UAAU,mDAyFZ,CAAC"}
|
|
@@ -6,7 +6,7 @@ type Point = [x: number, y: number];
|
|
|
6
6
|
* When `xData` contains numeric values, those values are fed into the scale
|
|
7
7
|
* instead of the array index so the points honour a numeric X domain.
|
|
8
8
|
*/
|
|
9
|
-
export declare const toScaledPoints: (data:
|
|
9
|
+
export declare const toScaledPoints: (data: (number | null)[], xScale: ChartScaleFunction, yScale: NumericScale, xData?: readonly (string | number)[]) => Point[] | null;
|
|
10
10
|
/**
|
|
11
11
|
* Build the SVG `d` attribute for the line stroke.
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Line/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Line/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACvB,QAAQ,kBAAkB,EAC1B,QAAQ,YAAY,EACpB,QAAQ,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KACnC,KAAK,EAAE,GAAG,IAmBZ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,EAAE,KAAG,MAAM,GAAG,IAOxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,KAAK,EAAE,EACf,aAAa,WAAW,KACvB,MAAM,GAAG,IAUX,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { AxisBounds, AxisConfigProps, CategoricalScale, ChartScaleFunction, NumericScale } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a numeric scale with `.nice()` applied so the domain
|
|
4
|
+
* extends to clean rounded boundaries (e.g. `[4, 98]` → `[0, 100]`).
|
|
5
|
+
*/
|
|
2
6
|
export declare const getNumericScale: ({ scaleType, domain, range, }: {
|
|
3
7
|
scaleType: "linear" | "log";
|
|
4
8
|
domain: AxisBounds;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scales.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/utils/scales/scales.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,eAAe,GAAI,+BAI7B;IACD,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB,KAAG,
|
|
1
|
+
{"version":3,"file":"scales.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/utils/scales/scales.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,+BAI7B;IACD,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB,KAAG,YAMH,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,6BAIjC;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,gBAUH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,eAAe,CAAC,WAAW,CAAC,KACtC,SAAS,IAAI,MAA8B,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,kBAAkB,KACxB,KAAK,IAAI,gBAEX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,kBAAkB,KACxB,KAAK,IAAI,YAEX,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AxisConfigProps, ChartScaleFunction } from '../types';
|
|
1
|
+
import type { AxisConfigProps, ChartScaleFunction, DrawingArea } from '../types';
|
|
2
2
|
export declare const APPROXIMATE_TICK_COUNT = 5;
|
|
3
3
|
export type TickData = {
|
|
4
4
|
position: number;
|
|
@@ -24,4 +24,14 @@ export declare const getTickLabel: (tick: number, axisData: AxisConfigProps["dat
|
|
|
24
24
|
* Builds the complete tick data array from a scale and axis configuration.
|
|
25
25
|
*/
|
|
26
26
|
export declare const buildTicksData: (scale: ChartScaleFunction, axisConfig?: AxisConfigProps, explicitTicks?: number[], formatter?: (value: number | string) => string) => TickData[];
|
|
27
|
+
/**
|
|
28
|
+
* Excludes the X grid line at the Y-axis origin (left edge)
|
|
29
|
+
* to prevent overlap with the Y-axis solid line.
|
|
30
|
+
*/
|
|
31
|
+
export declare const isTickOnXAxisDomainEdge: (tick: TickData, drawingArea: DrawingArea) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Excludes the Y grid line at the X-axis origin (bottom edge)
|
|
34
|
+
* to prevent overlap with the X-axis solid line.
|
|
35
|
+
*/
|
|
36
|
+
export declare const isTickOnYAxisDomainEdge: (tick: TickData, drawingArea: DrawingArea) => boolean;
|
|
27
37
|
//# sourceMappingURL=ticks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/utils/ticks/ticks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/utils/ticks/ticks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,kBAAkB,EACzB,gBAAgB,MAAM,EAAE,KACvB,MAAM,EAKR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,kBAAkB,EACzB,MAAM,MAAM,KACX,MAKF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,UAAU,eAAe,CAAC,MAAM,CAAC,EACjC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,MAeF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,kBAAkB,EACzB,aAAa,eAAe,EAC5B,gBAAgB,MAAM,EAAE,EACxB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,KAC7C,QAAQ,EASV,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,QAAQ,EACd,aAAa,WAAW,KACvB,OAEF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,QAAQ,EACd,aAAa,WAAW,KACvB,OAEF,CAAC"}
|
|
@@ -26,7 +26,7 @@ export type Series = {
|
|
|
26
26
|
/**
|
|
27
27
|
* Numeric data points; `null` entries represent gaps.
|
|
28
28
|
*/
|
|
29
|
-
data?:
|
|
29
|
+
data?: (number | null)[];
|
|
30
30
|
/**
|
|
31
31
|
* Human-readable label used in legends and tooltips.
|
|
32
32
|
*/
|
|
@@ -52,6 +52,9 @@ export type AxisConfigProps = {
|
|
|
52
52
|
* Fixed domain bounds or a function that adjusts the computed bounds.
|
|
53
53
|
* A partial object overrides only the specified bound(s).
|
|
54
54
|
* A function receives the auto-computed bounds and returns adjusted ones.
|
|
55
|
+
*
|
|
56
|
+
* The final domain is always rounded to nice boundaries via d3's `.nice()`,
|
|
57
|
+
* ensuring tick marks land on clean values (e.g. `[4, 98]` becomes `[0, 100]`).
|
|
55
58
|
*/
|
|
56
59
|
domain?: Partial<AxisBounds> | ((bounds: AxisBounds) => AxisBounds);
|
|
57
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAErC,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IAC3D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IAC7D;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC;IAC7D;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,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.4",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"keywords": [
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@types/react": "^19.0.0",
|
|
47
47
|
"@ledgerhq/lumen-design-core": "0.1.11",
|
|
48
|
-
"@ledgerhq/lumen-ui-rnative": "0.1.
|
|
48
|
+
"@ledgerhq/lumen-ui-rnative": "0.1.27",
|
|
49
49
|
"react": "^19.0.0",
|
|
50
50
|
"react-native": "~0.79.7",
|
|
51
51
|
"react-native-svg": "^15.0.0"
|
|
@@ -2,7 +2,10 @@ import { useTheme } from '@ledgerhq/lumen-ui-rnative';
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { G, Line as SvgLine, Text as SvgText } from 'react-native-svg';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
buildTicksData,
|
|
7
|
+
isTickOnXAxisDomainEdge,
|
|
8
|
+
} from '../../../utils/ticks/ticks';
|
|
6
9
|
import { useCartesianChartContext } from '../../CartesianChart/context';
|
|
7
10
|
|
|
8
11
|
import type { XAxisProps } from './types';
|
|
@@ -54,18 +57,20 @@ export const XAxis = ({
|
|
|
54
57
|
return (
|
|
55
58
|
<G>
|
|
56
59
|
{showGrid &&
|
|
57
|
-
ticksData
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
ticksData
|
|
61
|
+
.filter((tick) => isTickOnXAxisDomainEdge(tick, drawingArea))
|
|
62
|
+
.map((tick, i) => (
|
|
63
|
+
<SvgLine
|
|
64
|
+
key={`grid-${tick.value}-${i}`}
|
|
65
|
+
x1={tick.position}
|
|
66
|
+
y1={drawingArea.y}
|
|
67
|
+
x2={tick.position}
|
|
68
|
+
y2={drawingArea.y + drawingArea.height}
|
|
69
|
+
stroke={gridStroke}
|
|
70
|
+
strokeWidth={STROKE_WIDTH}
|
|
71
|
+
strokeDasharray={gridLineStyle === 'dashed' ? '3 3' : undefined}
|
|
72
|
+
/>
|
|
73
|
+
))}
|
|
69
74
|
|
|
70
75
|
{showLine && (
|
|
71
76
|
<SvgLine
|
|
@@ -2,7 +2,10 @@ import { useTheme } from '@ledgerhq/lumen-ui-rnative';
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { G, Line as SvgLine, Text as SvgText } from 'react-native-svg';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
buildTicksData,
|
|
7
|
+
isTickOnYAxisDomainEdge,
|
|
8
|
+
} from '../../../utils/ticks/ticks';
|
|
6
9
|
import { useCartesianChartContext } from '../../CartesianChart/context';
|
|
7
10
|
|
|
8
11
|
import type { YAxisProps } from './types';
|
|
@@ -53,18 +56,20 @@ export const YAxis = ({
|
|
|
53
56
|
return (
|
|
54
57
|
<G>
|
|
55
58
|
{showGrid &&
|
|
56
|
-
ticksData
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
ticksData
|
|
60
|
+
.filter((tick) => isTickOnYAxisDomainEdge(tick, drawingArea))
|
|
61
|
+
.map((tick, i) => (
|
|
62
|
+
<SvgLine
|
|
63
|
+
key={`grid-${tick.value}-${i}`}
|
|
64
|
+
x1={drawingArea.x}
|
|
65
|
+
y1={tick.position}
|
|
66
|
+
x2={drawingArea.x + drawingArea.width}
|
|
67
|
+
y2={tick.position}
|
|
68
|
+
stroke={gridStroke}
|
|
69
|
+
strokeWidth={STROKE_WIDTH}
|
|
70
|
+
strokeDasharray={gridLineStyle === 'dashed' ? '3 3' : undefined}
|
|
71
|
+
/>
|
|
72
|
+
))}
|
|
68
73
|
|
|
69
74
|
{showLine && (
|
|
70
75
|
<SvgLine
|
|
@@ -176,8 +176,8 @@ describe('useBuildChartContext', () => {
|
|
|
176
176
|
),
|
|
177
177
|
);
|
|
178
178
|
const domain = result.current.getYScale()!.domain();
|
|
179
|
-
expect(domain[0]).toBe(
|
|
180
|
-
expect(domain[1]).toBe(
|
|
179
|
+
expect(domain[0]).toBe(0);
|
|
180
|
+
expect(domain[1]).toBe(40);
|
|
181
181
|
});
|
|
182
182
|
|
|
183
183
|
it('inverts Y range for SVG coordinates', () => {
|
|
@@ -16,10 +16,10 @@ type Point = [x: number, y: number];
|
|
|
16
16
|
* instead of the array index so the points honour a numeric X domain.
|
|
17
17
|
*/
|
|
18
18
|
export const toScaledPoints = (
|
|
19
|
-
data:
|
|
19
|
+
data: (number | null)[],
|
|
20
20
|
xScale: ChartScaleFunction,
|
|
21
21
|
yScale: NumericScale,
|
|
22
|
-
xData?:
|
|
22
|
+
xData?: readonly (string | number)[],
|
|
23
23
|
): Point[] | null => {
|
|
24
24
|
const pts: Point[] = [];
|
|
25
25
|
|
|
@@ -8,6 +8,10 @@ import type {
|
|
|
8
8
|
NumericScale,
|
|
9
9
|
} from '../types';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Creates a numeric scale with `.nice()` applied so the domain
|
|
13
|
+
* extends to clean rounded boundaries (e.g. `[4, 98]` → `[0, 100]`).
|
|
14
|
+
*/
|
|
11
15
|
export const getNumericScale = ({
|
|
12
16
|
scaleType,
|
|
13
17
|
domain,
|
|
@@ -18,7 +22,10 @@ export const getNumericScale = ({
|
|
|
18
22
|
range: AxisBounds;
|
|
19
23
|
}): NumericScale => {
|
|
20
24
|
const scale = scaleType === 'log' ? scaleLog() : scaleLinear();
|
|
21
|
-
return scale
|
|
25
|
+
return scale
|
|
26
|
+
.domain([domain.min, domain.max])
|
|
27
|
+
.nice()
|
|
28
|
+
.range([range.min, range.max]);
|
|
22
29
|
};
|
|
23
30
|
|
|
24
31
|
export const getCategoricalScale = ({
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { isCategoricalScale, isNumericScale } from '../scales/scales';
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
AxisConfigProps,
|
|
4
|
+
ChartScaleFunction,
|
|
5
|
+
DrawingArea,
|
|
6
|
+
} from '../types';
|
|
3
7
|
|
|
4
8
|
export const APPROXIMATE_TICK_COUNT = 5;
|
|
5
9
|
|
|
@@ -80,3 +84,25 @@ export const buildTicksData = (
|
|
|
80
84
|
label: getTickLabel(tick, axisData, formatter),
|
|
81
85
|
}));
|
|
82
86
|
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Excludes the X grid line at the Y-axis origin (left edge)
|
|
90
|
+
* to prevent overlap with the Y-axis solid line.
|
|
91
|
+
*/
|
|
92
|
+
export const isTickOnXAxisDomainEdge = (
|
|
93
|
+
tick: TickData,
|
|
94
|
+
drawingArea: DrawingArea,
|
|
95
|
+
): boolean => {
|
|
96
|
+
return tick.position !== drawingArea.x;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Excludes the Y grid line at the X-axis origin (bottom edge)
|
|
101
|
+
* to prevent overlap with the X-axis solid line.
|
|
102
|
+
*/
|
|
103
|
+
export const isTickOnYAxisDomainEdge = (
|
|
104
|
+
tick: TickData,
|
|
105
|
+
drawingArea: DrawingArea,
|
|
106
|
+
): boolean => {
|
|
107
|
+
return tick.position !== drawingArea.y + drawingArea.height;
|
|
108
|
+
};
|
package/src/lib/utils/types.ts
CHANGED
|
@@ -27,7 +27,7 @@ export type Series = {
|
|
|
27
27
|
/**
|
|
28
28
|
* Numeric data points; `null` entries represent gaps.
|
|
29
29
|
*/
|
|
30
|
-
data?:
|
|
30
|
+
data?: (number | null)[];
|
|
31
31
|
/**
|
|
32
32
|
* Human-readable label used in legends and tooltips.
|
|
33
33
|
*/
|
|
@@ -54,6 +54,9 @@ export type AxisConfigProps = {
|
|
|
54
54
|
* Fixed domain bounds or a function that adjusts the computed bounds.
|
|
55
55
|
* A partial object overrides only the specified bound(s).
|
|
56
56
|
* A function receives the auto-computed bounds and returns adjusted ones.
|
|
57
|
+
*
|
|
58
|
+
* The final domain is always rounded to nice boundaries via d3's `.nice()`,
|
|
59
|
+
* ensuring tick marks land on clean values (e.g. `[4, 98]` becomes `[0, 100]`).
|
|
57
60
|
*/
|
|
58
61
|
domain?: Partial<AxisBounds> | ((bounds: AxisBounds) => AxisBounds);
|
|
59
62
|
};
|