@ledgerhq/lumen-ui-rnative-visualization 0.1.2 → 0.1.3

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 (152) hide show
  1. package/dist/module/lib/Components/Axis/Axis.types.js +2 -0
  2. package/dist/module/lib/Components/Axis/Axis.types.js.map +1 -0
  3. package/dist/module/lib/Components/Axis/XAxis/XAxis.js +81 -0
  4. package/dist/module/lib/Components/Axis/XAxis/XAxis.js.map +1 -0
  5. package/dist/module/lib/Components/Axis/XAxis/XAxis.test.js +121 -0
  6. package/dist/module/lib/Components/Axis/XAxis/XAxis.test.js.map +1 -0
  7. package/dist/module/lib/Components/Axis/XAxis/index.js +4 -0
  8. package/dist/module/lib/Components/Axis/XAxis/index.js.map +1 -0
  9. package/dist/module/lib/Components/Axis/XAxis/types.js +4 -0
  10. package/dist/module/lib/Components/Axis/XAxis/types.js.map +1 -0
  11. package/dist/module/lib/Components/Axis/YAxis/YAxis.js +81 -0
  12. package/dist/module/lib/Components/Axis/YAxis/YAxis.js.map +1 -0
  13. package/dist/module/lib/Components/Axis/YAxis/YAxis.test.js +121 -0
  14. package/dist/module/lib/Components/Axis/YAxis/YAxis.test.js.map +1 -0
  15. package/dist/module/lib/Components/Axis/YAxis/index.js +4 -0
  16. package/dist/module/lib/Components/Axis/YAxis/index.js.map +1 -0
  17. package/dist/module/lib/Components/Axis/YAxis/types.js +4 -0
  18. package/dist/module/lib/Components/Axis/YAxis/types.js.map +1 -0
  19. package/dist/module/lib/Components/CartesianChart/CartesianChart.js +123 -0
  20. package/dist/module/lib/Components/CartesianChart/CartesianChart.js.map +1 -0
  21. package/dist/module/lib/Components/CartesianChart/context/cartesianChartContext.js +10 -0
  22. package/dist/module/lib/Components/CartesianChart/context/cartesianChartContext.js.map +1 -0
  23. package/dist/module/lib/Components/CartesianChart/context/index.js +5 -0
  24. package/dist/module/lib/Components/CartesianChart/context/index.js.map +1 -0
  25. package/dist/module/lib/Components/CartesianChart/context/useBuildChartContext.js +75 -0
  26. package/dist/module/lib/Components/CartesianChart/context/useBuildChartContext.js.map +1 -0
  27. package/dist/module/lib/Components/CartesianChart/context/useBuildChartContext.test.js +279 -0
  28. package/dist/module/lib/Components/CartesianChart/context/useBuildChartContext.test.js.map +1 -0
  29. package/dist/module/lib/Components/CartesianChart/index.js +5 -0
  30. package/dist/module/lib/Components/CartesianChart/index.js.map +1 -0
  31. package/dist/module/lib/Components/CartesianChart/types.js +4 -0
  32. package/dist/module/lib/Components/CartesianChart/types.js.map +1 -0
  33. package/dist/module/lib/Components/Line/Line.js +72 -0
  34. package/dist/module/lib/Components/Line/Line.js.map +1 -0
  35. package/dist/module/lib/Components/Line/index.js +4 -0
  36. package/dist/module/lib/Components/Line/index.js.map +1 -0
  37. package/dist/module/lib/Components/Line/types.js +2 -0
  38. package/dist/module/lib/Components/Line/types.js.map +1 -0
  39. package/dist/module/lib/Components/Line/utils.js +38 -0
  40. package/dist/module/lib/Components/Line/utils.js.map +1 -0
  41. package/dist/module/lib/Components/LineChart/LineChart.js +70 -31
  42. package/dist/module/lib/Components/LineChart/LineChart.js.map +1 -1
  43. package/dist/module/lib/Components/LineChart/LineChart.stories.js +271 -2
  44. package/dist/module/lib/Components/LineChart/LineChart.stories.js.map +1 -1
  45. package/dist/module/lib/Components/LineChart/LineChart.test.js +84 -3
  46. package/dist/module/lib/Components/LineChart/LineChart.test.js.map +1 -1
  47. package/dist/module/lib/Components/LineChart/types.js +4 -0
  48. package/dist/module/lib/Components/LineChart/types.js.map +1 -0
  49. package/dist/module/lib/utils/domain/domain.js +93 -0
  50. package/dist/module/lib/utils/domain/domain.js.map +1 -0
  51. package/dist/module/lib/utils/domain/domain.test.js +152 -0
  52. package/dist/module/lib/utils/domain/domain.test.js.map +1 -0
  53. package/dist/module/lib/utils/index.js +0 -2
  54. package/dist/module/lib/utils/index.js.map +1 -1
  55. package/dist/module/lib/utils/scales/scales.js +41 -0
  56. package/dist/module/lib/utils/scales/scales.js.map +1 -0
  57. package/dist/module/lib/utils/scales/scales.test.js +173 -0
  58. package/dist/module/lib/utils/scales/scales.test.js.map +1 -0
  59. package/dist/module/lib/utils/ticks/ticks.js +55 -0
  60. package/dist/module/lib/utils/ticks/ticks.js.map +1 -0
  61. package/dist/module/lib/utils/ticks/ticks.test.js +121 -0
  62. package/dist/module/lib/utils/ticks/ticks.test.js.map +1 -0
  63. package/dist/module/lib/utils/types.js +2 -0
  64. package/dist/typescript/src/lib/Components/Axis/Axis.types.d.ts +33 -0
  65. package/dist/typescript/src/lib/Components/Axis/Axis.types.d.ts.map +1 -0
  66. package/dist/typescript/src/lib/Components/Axis/XAxis/XAxis.d.ts +4 -0
  67. package/dist/typescript/src/lib/Components/Axis/XAxis/XAxis.d.ts.map +1 -0
  68. package/dist/typescript/src/lib/Components/Axis/XAxis/index.d.ts +3 -0
  69. package/dist/typescript/src/lib/Components/Axis/XAxis/index.d.ts.map +1 -0
  70. package/dist/typescript/src/lib/Components/Axis/XAxis/types.d.ts +9 -0
  71. package/dist/typescript/src/lib/Components/Axis/XAxis/types.d.ts.map +1 -0
  72. package/dist/typescript/src/lib/Components/Axis/YAxis/YAxis.d.ts +4 -0
  73. package/dist/typescript/src/lib/Components/Axis/YAxis/YAxis.d.ts.map +1 -0
  74. package/dist/typescript/src/lib/Components/Axis/YAxis/index.d.ts +3 -0
  75. package/dist/typescript/src/lib/Components/Axis/YAxis/index.d.ts.map +1 -0
  76. package/dist/typescript/src/lib/Components/Axis/YAxis/types.d.ts +14 -0
  77. package/dist/typescript/src/lib/Components/Axis/YAxis/types.d.ts.map +1 -0
  78. package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts +3 -0
  79. package/dist/typescript/src/lib/Components/CartesianChart/CartesianChart.d.ts.map +1 -0
  80. package/dist/typescript/src/lib/Components/CartesianChart/context/cartesianChartContext.d.ts +8 -0
  81. package/dist/typescript/src/lib/Components/CartesianChart/context/cartesianChartContext.d.ts.map +1 -0
  82. package/dist/typescript/src/lib/Components/CartesianChart/context/index.d.ts +3 -0
  83. package/dist/typescript/src/lib/Components/CartesianChart/context/index.d.ts.map +1 -0
  84. package/dist/typescript/src/lib/Components/CartesianChart/context/useBuildChartContext.d.ts +23 -0
  85. package/dist/typescript/src/lib/Components/CartesianChart/context/useBuildChartContext.d.ts.map +1 -0
  86. package/dist/typescript/src/lib/Components/CartesianChart/index.d.ts +4 -0
  87. package/dist/typescript/src/lib/Components/CartesianChart/index.d.ts.map +1 -0
  88. package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts +46 -0
  89. package/dist/typescript/src/lib/Components/CartesianChart/types.d.ts.map +1 -0
  90. package/dist/typescript/src/lib/Components/Line/Line.d.ts +3 -0
  91. package/dist/typescript/src/lib/Components/Line/Line.d.ts.map +1 -0
  92. package/dist/typescript/src/lib/Components/Line/index.d.ts +3 -0
  93. package/dist/typescript/src/lib/Components/Line/index.d.ts.map +1 -0
  94. package/dist/typescript/src/lib/Components/Line/types.d.ts +24 -0
  95. package/dist/typescript/src/lib/Components/Line/types.d.ts.map +1 -0
  96. package/dist/typescript/src/lib/Components/Line/utils.d.ts +19 -0
  97. package/dist/typescript/src/lib/Components/Line/utils.d.ts.map +1 -0
  98. package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts +2 -8
  99. package/dist/typescript/src/lib/Components/LineChart/LineChart.d.ts.map +1 -1
  100. package/dist/typescript/src/lib/Components/LineChart/index.d.ts +1 -0
  101. package/dist/typescript/src/lib/Components/LineChart/index.d.ts.map +1 -1
  102. package/dist/typescript/src/lib/Components/LineChart/types.d.ts +62 -0
  103. package/dist/typescript/src/lib/Components/LineChart/types.d.ts.map +1 -0
  104. package/dist/typescript/src/lib/utils/domain/domain.d.ts +17 -0
  105. package/dist/typescript/src/lib/utils/domain/domain.d.ts.map +1 -0
  106. package/dist/typescript/src/lib/utils/index.d.ts +1 -1
  107. package/dist/typescript/src/lib/utils/index.d.ts.map +1 -1
  108. package/dist/typescript/src/lib/utils/scales/scales.d.ts +24 -0
  109. package/dist/typescript/src/lib/utils/scales/scales.d.ts.map +1 -0
  110. package/dist/typescript/src/lib/utils/ticks/ticks.d.ts +27 -0
  111. package/dist/typescript/src/lib/utils/ticks/ticks.d.ts.map +1 -0
  112. package/dist/typescript/src/lib/utils/types.d.ts +90 -6
  113. package/dist/typescript/src/lib/utils/types.d.ts.map +1 -1
  114. package/package.json +11 -1
  115. package/src/lib/Components/Axis/Axis.types.ts +32 -0
  116. package/src/lib/Components/Axis/XAxis/XAxis.test.tsx +89 -0
  117. package/src/lib/Components/Axis/XAxis/XAxis.tsx +111 -0
  118. package/src/lib/Components/Axis/XAxis/index.ts +2 -0
  119. package/src/lib/Components/Axis/XAxis/types.ts +9 -0
  120. package/src/lib/Components/Axis/YAxis/YAxis.test.tsx +89 -0
  121. package/src/lib/Components/Axis/YAxis/YAxis.tsx +110 -0
  122. package/src/lib/Components/Axis/YAxis/index.ts +2 -0
  123. package/src/lib/Components/Axis/YAxis/types.ts +14 -0
  124. package/src/lib/Components/CartesianChart/CartesianChart.tsx +153 -0
  125. package/src/lib/Components/CartesianChart/context/cartesianChartContext.ts +14 -0
  126. package/src/lib/Components/CartesianChart/context/index.ts +10 -0
  127. package/src/lib/Components/CartesianChart/context/useBuildChartContext.test.ts +224 -0
  128. package/src/lib/Components/CartesianChart/context/useBuildChartContext.ts +115 -0
  129. package/src/lib/Components/CartesianChart/index.ts +3 -0
  130. package/src/lib/Components/CartesianChart/types.ts +47 -0
  131. package/src/lib/Components/Line/Line.tsx +88 -0
  132. package/src/lib/Components/Line/index.ts +2 -0
  133. package/src/lib/Components/Line/types.ts +23 -0
  134. package/src/lib/Components/Line/utils.ts +72 -0
  135. package/src/lib/Components/LineChart/LineChart.stories.tsx +287 -4
  136. package/src/lib/Components/LineChart/LineChart.test.tsx +71 -2
  137. package/src/lib/Components/LineChart/LineChart.tsx +90 -34
  138. package/src/lib/Components/LineChart/index.ts +1 -0
  139. package/src/lib/Components/LineChart/types.ts +63 -0
  140. package/src/lib/utils/domain/domain.test.ts +129 -0
  141. package/src/lib/utils/domain/domain.ts +101 -0
  142. package/src/lib/utils/index.ts +11 -1
  143. package/src/lib/utils/scales/scales.test.ts +133 -0
  144. package/src/lib/utils/scales/scales.ts +67 -0
  145. package/src/lib/utils/ticks/ticks.test.ts +136 -0
  146. package/src/lib/utils/ticks/ticks.ts +82 -0
  147. package/src/lib/utils/types.ts +97 -6
  148. package/dist/module/lib/utils/math/index.js +0 -4
  149. package/dist/module/lib/utils/math/index.js.map +0 -1
  150. package/dist/typescript/src/lib/utils/math/index.d.ts +0 -1
  151. package/dist/typescript/src/lib/utils/math/index.d.ts.map +0 -1
  152. package/src/lib/utils/math/index.ts +0 -2
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from '@jest/globals';
4
+ import { computeDataLength, computeXDomain, computeYDomain } from "./domain.js";
5
+ const makeSeries = data => ({
6
+ id: 'test',
7
+ stroke: '#000',
8
+ data
9
+ });
10
+ describe('computeXDomain', () => {
11
+ it('should derive domain from longest series length', () => {
12
+ const result = computeXDomain([makeSeries([1, 2, 3]), makeSeries([1, 2, 3, 4, 5])]);
13
+ expect(result).toEqual({
14
+ min: 0,
15
+ max: 4
16
+ });
17
+ });
18
+ it('should return { 0, 0 } for empty series', () => {
19
+ const result = computeXDomain([]);
20
+ expect(result).toEqual({
21
+ min: 0,
22
+ max: 0
23
+ });
24
+ });
25
+ it('should use string axis data length', () => {
26
+ const result = computeXDomain([makeSeries([1, 2])], {
27
+ data: ['Mon', 'Tue', 'Wed']
28
+ });
29
+ expect(result).toEqual({
30
+ min: 0,
31
+ max: 2
32
+ });
33
+ });
34
+ it('should use numeric axis data min/max', () => {
35
+ const result = computeXDomain([makeSeries([1])], {
36
+ data: [10, 30, 20]
37
+ });
38
+ expect(result).toEqual({
39
+ min: 10,
40
+ max: 30
41
+ });
42
+ });
43
+ it('should apply partial domain override', () => {
44
+ const result = computeXDomain([makeSeries([1, 2, 3, 4, 5])], {
45
+ domain: {
46
+ min: 1
47
+ }
48
+ });
49
+ expect(result.min).toBe(1);
50
+ expect(result.max).toBe(4);
51
+ });
52
+ it('should apply full domain override', () => {
53
+ const result = computeXDomain([makeSeries([1, 2, 3])], {
54
+ domain: {
55
+ min: 0,
56
+ max: 10
57
+ }
58
+ });
59
+ expect(result).toEqual({
60
+ min: 0,
61
+ max: 10
62
+ });
63
+ });
64
+ it('should apply domain function override', () => {
65
+ const result = computeXDomain([makeSeries([1, 2, 3, 4, 5])], {
66
+ domain: bounds => ({
67
+ min: bounds.min - 1,
68
+ max: bounds.max + 1
69
+ })
70
+ });
71
+ expect(result).toEqual({
72
+ min: -1,
73
+ max: 5
74
+ });
75
+ });
76
+ });
77
+ describe('computeYDomain', () => {
78
+ it('should find min/max across all series values', () => {
79
+ const result = computeYDomain([makeSeries([10, 50, 30]), makeSeries([5, 80])]);
80
+ expect(result).toEqual({
81
+ min: 5,
82
+ max: 80
83
+ });
84
+ });
85
+ it('should skip null values', () => {
86
+ const result = computeYDomain([makeSeries([null, 10, null, 30, null])]);
87
+ expect(result).toEqual({
88
+ min: 10,
89
+ max: 30
90
+ });
91
+ });
92
+ it('should return { 0, 1 } when no data values exist', () => {
93
+ const result = computeYDomain([makeSeries([])]);
94
+ expect(result).toEqual({
95
+ min: 0,
96
+ max: 1
97
+ });
98
+ });
99
+ it('should handle series without data', () => {
100
+ const result = computeYDomain([{
101
+ id: 's',
102
+ stroke: '#000'
103
+ }]);
104
+ expect(result).toEqual({
105
+ min: 0,
106
+ max: 1
107
+ });
108
+ });
109
+ it('should apply partial domain override', () => {
110
+ const result = computeYDomain([makeSeries([10, 50])], {
111
+ domain: {
112
+ min: 0
113
+ }
114
+ });
115
+ expect(result).toEqual({
116
+ min: 0,
117
+ max: 50
118
+ });
119
+ });
120
+ it('should apply domain function override', () => {
121
+ const result = computeYDomain([makeSeries([10, 20, 30])], {
122
+ domain: bounds => ({
123
+ min: bounds.min - 5,
124
+ max: bounds.max + 5
125
+ })
126
+ });
127
+ expect(result).toEqual({
128
+ min: 5,
129
+ max: 35
130
+ });
131
+ });
132
+ });
133
+ describe('computeDataLength', () => {
134
+ it('should return longest series length', () => {
135
+ expect(computeDataLength([makeSeries([1, 2]), makeSeries([1, 2, 3, 4])])).toBe(4);
136
+ });
137
+ it('should return 0 for empty series', () => {
138
+ expect(computeDataLength([])).toBe(0);
139
+ });
140
+ it('should prefer axis data length when provided', () => {
141
+ expect(computeDataLength([makeSeries([1, 2, 3])], {
142
+ data: ['A', 'B', 'C', 'D', 'E']
143
+ })).toBe(5);
144
+ });
145
+ it('should handle series without data', () => {
146
+ expect(computeDataLength([{
147
+ id: 's',
148
+ stroke: '#000'
149
+ }])).toBe(0);
150
+ });
151
+ });
152
+ //# sourceMappingURL=domain.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","computeDataLength","computeXDomain","computeYDomain","makeSeries","data","id","stroke","result","toEqual","min","max","domain","toBe","bounds"],"sourceRoot":"../../../../../src","sources":["lib/utils/domain/domain.test.ts"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,2 @@
1
1
  "use strict";
2
-
3
- export * from "./types.js";
4
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["lib/utils/index.ts"],"mappings":";;AAAA,cAAc,YAAS","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["lib/utils/index.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ import { scaleBand, scaleLinear, scaleLog } from 'd3-scale';
4
+ export const getNumericScale = ({
5
+ scaleType,
6
+ domain,
7
+ range
8
+ }) => {
9
+ const scale = scaleType === 'log' ? scaleLog() : scaleLinear();
10
+ return scale.domain([domain.min, domain.max]).range([range.min, range.max]);
11
+ };
12
+ export const getCategoricalScale = ({
13
+ domain,
14
+ range,
15
+ padding = 0.1
16
+ }) => {
17
+ const domainArray = Array.from({
18
+ length: domain.max - domain.min + 1
19
+ }, (_, i) => domain.min + i);
20
+ return scaleBand().domain(domainArray).range([range.min, range.max]).paddingInner(padding).paddingOuter(padding / 2);
21
+ };
22
+
23
+ /**
24
+ * Checks if a scale type config value refers to a band (categorical) scale.
25
+ */
26
+ export const isBandScaleType = scaleType => scaleType === 'band';
27
+
28
+ /**
29
+ * Checks if a scale is a categorical scale.
30
+ */
31
+ export const isCategoricalScale = scale => {
32
+ return 'bandwidth' in scale && typeof scale.bandwidth === 'function';
33
+ };
34
+
35
+ /**
36
+ * Checks if a scale is a numeric scale.
37
+ */
38
+ export const isNumericScale = scale => {
39
+ return !isCategoricalScale(scale);
40
+ };
41
+ //# sourceMappingURL=scales.js.map
@@ -0,0 +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,CAACF,MAAM,CAAC,CAACA,MAAM,CAACG,GAAG,EAAEH,MAAM,CAACI,GAAG,CAAC,CAAC,CAACH,KAAK,CAAC,CAACA,KAAK,CAACE,GAAG,EAAEF,KAAK,CAACG,GAAG,CAAC,CAAC;AAC7E,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAClCL,MAAM;EACNC,KAAK;EACLK,OAAO,GAAG;AAKZ,CAAC,KAAuB;EACtB,MAAMC,WAAW,GAAGC,KAAK,CAACC,IAAI,CAC5B;IAAEC,MAAM,EAAEV,MAAM,CAACI,GAAG,GAAGJ,MAAM,CAACG,GAAG,GAAG;EAAE,CAAC,EACvC,CAACQ,CAAC,EAAEC,CAAC,KAAKZ,MAAM,CAACG,GAAG,GAAGS,CACzB,CAAC;EACD,OAAOjB,SAAS,CAAS,CAAC,CACvBK,MAAM,CAACO,WAAW,CAAC,CACnBN,KAAK,CAAC,CAACA,KAAK,CAACE,GAAG,EAAEF,KAAK,CAACG,GAAG,CAAC,CAAC,CAC7BS,YAAY,CAACP,OAAO,CAAC,CACrBQ,YAAY,CAACR,OAAO,GAAG,CAAC,CAAC;AAC9B,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMS,eAAe,GAC1BhB,SAAuC,IACfA,SAAS,KAAK,MAAM;;AAE9C;AACA;AACA;AACA,OAAO,MAAMiB,kBAAkB,GAC7Bd,KAAyB,IACK;EAC9B,OAAO,WAAW,IAAIA,KAAK,IAAI,OAAOA,KAAK,CAACe,SAAS,KAAK,UAAU;AACtE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GACzBhB,KAAyB,IACC;EAC1B,OAAO,CAACc,kBAAkB,CAACd,KAAK,CAAC;AACnC,CAAC","ignoreList":[]}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it } from '@jest/globals';
4
+ import { getCategoricalScale, getNumericScale, isBandScaleType, isCategoricalScale, isNumericScale } from "./scales.js";
5
+ describe('getNumericScale', () => {
6
+ it('should create a linear scale mapping domain to range', () => {
7
+ const scale = getNumericScale({
8
+ scaleType: 'linear',
9
+ domain: {
10
+ min: 0,
11
+ max: 100
12
+ },
13
+ range: {
14
+ min: 0,
15
+ max: 500
16
+ }
17
+ });
18
+ expect(scale(0)).toBe(0);
19
+ expect(scale(50)).toBe(250);
20
+ expect(scale(100)).toBe(500);
21
+ });
22
+ it('should create a log scale', () => {
23
+ const scale = getNumericScale({
24
+ scaleType: 'log',
25
+ domain: {
26
+ min: 1,
27
+ max: 1000
28
+ },
29
+ range: {
30
+ min: 0,
31
+ max: 300
32
+ }
33
+ });
34
+ expect(scale(1)).toBe(0);
35
+ expect(scale(1000)).toBe(300);
36
+ });
37
+ it('should set correct domain', () => {
38
+ const scale = getNumericScale({
39
+ scaleType: 'linear',
40
+ domain: {
41
+ min: 10,
42
+ max: 50
43
+ },
44
+ range: {
45
+ min: 0,
46
+ max: 200
47
+ }
48
+ });
49
+ const domain = scale.domain();
50
+ expect(domain[0]).toBe(10);
51
+ expect(domain[1]).toBe(50);
52
+ });
53
+ it('should set correct range', () => {
54
+ const scale = getNumericScale({
55
+ scaleType: 'linear',
56
+ domain: {
57
+ min: 0,
58
+ max: 100
59
+ },
60
+ range: {
61
+ min: 20,
62
+ max: 400
63
+ }
64
+ });
65
+ const range = scale.range();
66
+ expect(range[0]).toBe(20);
67
+ expect(range[1]).toBe(400);
68
+ });
69
+ });
70
+ describe('getCategoricalScale', () => {
71
+ it('should create a band scale with correct domain', () => {
72
+ const scale = getCategoricalScale({
73
+ domain: {
74
+ min: 0,
75
+ max: 3
76
+ },
77
+ range: {
78
+ min: 0,
79
+ max: 400
80
+ },
81
+ padding: 0
82
+ });
83
+ expect(scale.domain()).toEqual([0, 1, 2, 3]);
84
+ });
85
+ it('should have non-zero bandwidth', () => {
86
+ const scale = getCategoricalScale({
87
+ domain: {
88
+ min: 0,
89
+ max: 4
90
+ },
91
+ range: {
92
+ min: 0,
93
+ max: 500
94
+ }
95
+ });
96
+ expect(scale.bandwidth()).toBeGreaterThan(0);
97
+ });
98
+ it('should map values within the range', () => {
99
+ const scale = getCategoricalScale({
100
+ domain: {
101
+ min: 0,
102
+ max: 2
103
+ },
104
+ range: {
105
+ min: 0,
106
+ max: 300
107
+ },
108
+ padding: 0
109
+ });
110
+ expect(scale(0)).toBeGreaterThanOrEqual(0);
111
+ expect((scale(2) ?? 0) + scale.bandwidth()).toBeLessThanOrEqual(300);
112
+ });
113
+ it('should handle custom domain offset', () => {
114
+ const scale = getCategoricalScale({
115
+ domain: {
116
+ min: 5,
117
+ max: 7
118
+ },
119
+ range: {
120
+ min: 0,
121
+ max: 300
122
+ },
123
+ padding: 0
124
+ });
125
+ expect(scale.domain()).toEqual([5, 6, 7]);
126
+ });
127
+ });
128
+ describe('isBandScaleType', () => {
129
+ it('should return true for band scale type', () => {
130
+ expect(isBandScaleType('band')).toBe(true);
131
+ });
132
+ it('should return false for linear scale type', () => {
133
+ expect(isBandScaleType('linear')).toBe(false);
134
+ });
135
+ it('should return false for log scale type', () => {
136
+ expect(isBandScaleType('log')).toBe(false);
137
+ });
138
+ it('should return false for undefined', () => {
139
+ expect(isBandScaleType(undefined)).toBe(false);
140
+ });
141
+ });
142
+ describe('isCategoricalScale / isNumericScale', () => {
143
+ const numericScale = getNumericScale({
144
+ scaleType: 'linear',
145
+ domain: {
146
+ min: 0,
147
+ max: 100
148
+ },
149
+ range: {
150
+ min: 0,
151
+ max: 500
152
+ }
153
+ });
154
+ const bandScale = getCategoricalScale({
155
+ domain: {
156
+ min: 0,
157
+ max: 4
158
+ },
159
+ range: {
160
+ min: 0,
161
+ max: 500
162
+ }
163
+ });
164
+ it('should identify a numeric scale', () => {
165
+ expect(isNumericScale(numericScale)).toBe(true);
166
+ expect(isCategoricalScale(numericScale)).toBe(false);
167
+ });
168
+ it('should identify a categorical scale', () => {
169
+ expect(isCategoricalScale(bandScale)).toBe(true);
170
+ expect(isNumericScale(bandScale)).toBe(false);
171
+ });
172
+ });
173
+ //# sourceMappingURL=scales.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","getCategoricalScale","getNumericScale","isBandScaleType","isCategoricalScale","isNumericScale","scale","scaleType","domain","min","max","range","toBe","padding","toEqual","bandwidth","toBeGreaterThan","toBeGreaterThanOrEqual","toBeLessThanOrEqual","undefined","numericScale","bandScale"],"sourceRoot":"../../../../../src","sources":["lib/utils/scales/scales.test.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import { isCategoricalScale, isNumericScale } from "../scales/scales.js";
4
+ export const APPROXIMATE_TICK_COUNT = 5;
5
+ /**
6
+ * Resolves which numeric tick values should appear on the axis.
7
+ * Explicit ticks take priority, then scale-specific defaults.
8
+ */
9
+ export const getTickValues = (scale, explicitTicks) => {
10
+ if (explicitTicks) return explicitTicks;
11
+ if (isCategoricalScale(scale)) return scale.domain();
12
+ if (isNumericScale(scale)) return scale.ticks(APPROXIMATE_TICK_COUNT);
13
+ return [];
14
+ };
15
+
16
+ /**
17
+ * Converts a tick value to its pixel position on the axis.
18
+ * Band scales are centered within the band.
19
+ */
20
+ export const getTickPosition = (scale, tick) => {
21
+ if (isCategoricalScale(scale)) {
22
+ return (scale(tick) ?? 0) + scale.bandwidth() / 2;
23
+ }
24
+ return scale(tick);
25
+ };
26
+
27
+ /**
28
+ * Resolves the display label for a tick value.
29
+ * Priority: formatter > string label lookup > raw value.
30
+ */
31
+ export const getTickLabel = (tick, axisData, formatter) => {
32
+ const hasStringLabels = axisData && Array.isArray(axisData) && typeof axisData[0] === 'string';
33
+ if (formatter) {
34
+ const rawValue = hasStringLabels && axisData[tick] !== undefined ? axisData[tick] : tick;
35
+ return String(formatter(rawValue));
36
+ }
37
+ if (hasStringLabels && axisData[tick] !== undefined) {
38
+ return String(axisData[tick]);
39
+ }
40
+ return String(tick);
41
+ };
42
+
43
+ /**
44
+ * Builds the complete tick data array from a scale and axis configuration.
45
+ */
46
+ export const buildTicksData = (scale, axisConfig, explicitTicks, formatter) => {
47
+ const tickValues = getTickValues(scale, explicitTicks);
48
+ const axisData = axisConfig?.data;
49
+ return tickValues.map(tick => ({
50
+ position: getTickPosition(scale, tick),
51
+ value: tick,
52
+ label: getTickLabel(tick, axisData, formatter)
53
+ }));
54
+ };
55
+ //# sourceMappingURL=ticks.js.map
@@ -0,0 +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;AAGrE,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","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ import { describe, expect, it, jest } from '@jest/globals';
4
+ import { getCategoricalScale, getNumericScale } from "../scales/scales.js";
5
+ import { buildTicksData, getTickLabel, getTickPosition, getTickValues } from "./ticks.js";
6
+ const numericScale = getNumericScale({
7
+ scaleType: 'linear',
8
+ domain: {
9
+ min: 0,
10
+ max: 100
11
+ },
12
+ range: {
13
+ min: 0,
14
+ max: 500
15
+ }
16
+ });
17
+ const bandScale = getCategoricalScale({
18
+ domain: {
19
+ min: 0,
20
+ max: 4
21
+ },
22
+ range: {
23
+ min: 0,
24
+ max: 500
25
+ },
26
+ padding: 0
27
+ });
28
+ describe('getTickValues', () => {
29
+ it('should return explicit ticks when provided', () => {
30
+ expect(getTickValues(numericScale, [0, 25, 50])).toEqual([0, 25, 50]);
31
+ });
32
+ it('should return scale.ticks() for numeric scales', () => {
33
+ const ticks = getTickValues(numericScale);
34
+ expect(ticks.length).toBeGreaterThan(0);
35
+ expect(ticks).toContain(0);
36
+ expect(ticks).toContain(100);
37
+ });
38
+ it('should return full domain for band scales', () => {
39
+ expect(getTickValues(bandScale)).toEqual([0, 1, 2, 3, 4]);
40
+ });
41
+ });
42
+ describe('getTickPosition', () => {
43
+ it('should map value through numeric scale', () => {
44
+ expect(getTickPosition(numericScale, 0)).toBe(0);
45
+ expect(getTickPosition(numericScale, 50)).toBe(250);
46
+ expect(getTickPosition(numericScale, 100)).toBe(500);
47
+ });
48
+ it('should center within band for categorical scale', () => {
49
+ const pos = getTickPosition(bandScale, 0);
50
+ const bandwidth = bandScale.bandwidth();
51
+ expect(pos).toBe((bandScale(0) ?? 0) + bandwidth / 2);
52
+ });
53
+ });
54
+ describe('getTickLabel', () => {
55
+ it('should return stringified tick value by default', () => {
56
+ expect(getTickLabel(42, undefined)).toBe('42');
57
+ });
58
+ it('should look up string labels from axis data', () => {
59
+ const axisData = ['Jan', 'Feb', 'Mar'];
60
+ expect(getTickLabel(0, axisData)).toBe('Jan');
61
+ expect(getTickLabel(1, axisData)).toBe('Feb');
62
+ });
63
+ it('should fall back to tick value when index is out of range', () => {
64
+ const axisData = ['Jan', 'Feb'];
65
+ expect(getTickLabel(5, axisData)).toBe('5');
66
+ });
67
+ it('should apply formatter with raw string label when available', () => {
68
+ const axisData = ['January', 'February'];
69
+ const formatter = jest.fn(v => `${String(v).slice(0, 3)}`);
70
+ expect(getTickLabel(0, axisData, formatter)).toBe('Jan');
71
+ expect(formatter).toHaveBeenCalledWith('January');
72
+ });
73
+ it('should apply formatter with numeric value when no string labels', () => {
74
+ const formatter = jest.fn(v => `$${v}`);
75
+ expect(getTickLabel(10, undefined, formatter)).toBe('$10');
76
+ expect(formatter).toHaveBeenCalledWith(10);
77
+ });
78
+ it('should apply formatter with numeric data', () => {
79
+ const axisData = [100, 200, 300];
80
+ const formatter = jest.fn(v => `${v}!`);
81
+ expect(getTickLabel(1, axisData, formatter)).toBe('1!');
82
+ expect(formatter).toHaveBeenCalledWith(1);
83
+ });
84
+ });
85
+ describe('buildTicksData', () => {
86
+ it('should combine position, value, and label for each tick', () => {
87
+ const result = buildTicksData(numericScale);
88
+ expect(result.length).toBeGreaterThan(0);
89
+ for (const tick of result) {
90
+ expect(tick).toHaveProperty('position');
91
+ expect(tick).toHaveProperty('value');
92
+ expect(tick).toHaveProperty('label');
93
+ expect(typeof tick.position).toBe('number');
94
+ expect(typeof tick.label).toBe('string');
95
+ }
96
+ });
97
+ it('should use explicit ticks when provided', () => {
98
+ const result = buildTicksData(numericScale, undefined, [0, 50, 100]);
99
+ expect(result).toHaveLength(3);
100
+ expect(result.map(t => t.value)).toEqual([0, 50, 100]);
101
+ });
102
+ it('should resolve string labels from axis config', () => {
103
+ const result = buildTicksData(bandScale, {
104
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
105
+ });
106
+ expect(result[0].label).toBe('Mon');
107
+ expect(result[1].label).toBe('Tue');
108
+ });
109
+ it('should apply tick formatter', () => {
110
+ const formatter = v => `$${v}`;
111
+ const result = buildTicksData(numericScale, undefined, [0, 50], formatter);
112
+ expect(result[0].label).toBe('$0');
113
+ expect(result[1].label).toBe('$50');
114
+ });
115
+ it('should compute correct positions for numeric scale', () => {
116
+ const result = buildTicksData(numericScale, undefined, [0, 100]);
117
+ expect(result[0].position).toBe(0);
118
+ expect(result[1].position).toBe(500);
119
+ });
120
+ });
121
+ //# sourceMappingURL=ticks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["describe","expect","it","jest","getCategoricalScale","getNumericScale","buildTicksData","getTickLabel","getTickPosition","getTickValues","numericScale","scaleType","domain","min","max","range","bandScale","padding","toEqual","ticks","length","toBeGreaterThan","toContain","toBe","pos","bandwidth","undefined","axisData","formatter","fn","v","String","slice","toHaveBeenCalledWith","result","tick","toHaveProperty","position","label","toHaveLength","map","t","value","data"],"sourceRoot":"../../../../../src","sources":["lib/utils/ticks/ticks.test.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,4 @@
1
1
  "use strict";
2
+
3
+ export {};
2
4
  //# sourceMappingURL=types.js.map
@@ -0,0 +1,33 @@
1
+ export type BaseAxisProps = {
2
+ /**
3
+ * Whether to render grid lines at each tick.
4
+ * @default false
5
+ */
6
+ showGrid?: boolean;
7
+ /**
8
+ * Appearance of the grid lines.
9
+ * @default 'dashed'
10
+ */
11
+ gridLineStyle?: 'solid' | 'dashed';
12
+ /**
13
+ * Whether to render the axis baseline.
14
+ * @default false
15
+ */
16
+ showLine?: boolean;
17
+ /**
18
+ * Whether to render tick marks at each tick position.
19
+ * @default false
20
+ */
21
+ showTickMark?: boolean;
22
+ /**
23
+ * Explicit tick positions along the axis.
24
+ * When omitted, ticks are computed automatically from the scale.
25
+ */
26
+ ticks?: number[];
27
+ /**
28
+ * Formats a tick value into its display label.
29
+ * Receives the raw tick value (number or string label) and must return a string.
30
+ */
31
+ tickLabelFormatter?: (value: number | string) => string;
32
+ };
33
+ //# sourceMappingURL=Axis.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Axis.types.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/Components/Axis/Axis.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACzD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { XAxisProps } from './types';
2
+ export declare const DEFAULT_AXIS_HEIGHT = 28;
3
+ export declare const XAxis: ({ gridLineStyle, position, showGrid, showLine, showTickMark, ticks: ticksProp, tickLabelFormatter, }: XAxisProps) => import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=XAxis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XAxis.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/XAxis/XAxis.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,KAAK,GAAI,sGAQnB,UAAU,mDAwFZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { XAxis, DEFAULT_AXIS_HEIGHT } from './XAxis';
2
+ export type { XAxisProps } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/Components/Axis/XAxis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}