@pie-element/number-line 13.1.2-next.2 → 13.1.2

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 (191) hide show
  1. package/CHANGELOG.json +1247 -0
  2. package/CHANGELOG.md +2441 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +28 -0
  5. package/configure/CHANGELOG.json +827 -0
  6. package/configure/CHANGELOG.md +2088 -0
  7. package/configure/lib/arrows.js +89 -0
  8. package/configure/lib/arrows.js.map +1 -0
  9. package/configure/lib/card-bar.js +57 -0
  10. package/configure/lib/card-bar.js.map +1 -0
  11. package/configure/lib/defaults.js +177 -0
  12. package/configure/lib/defaults.js.map +1 -0
  13. package/configure/lib/domain.js +87 -0
  14. package/configure/lib/domain.js.map +1 -0
  15. package/configure/lib/index.js +176 -0
  16. package/configure/lib/index.js.map +1 -0
  17. package/configure/lib/main.js +815 -0
  18. package/configure/lib/main.js.map +1 -0
  19. package/configure/lib/number-text-field.js +26 -0
  20. package/configure/lib/number-text-field.js.map +1 -0
  21. package/configure/lib/point-config.js +84 -0
  22. package/configure/lib/point-config.js.map +1 -0
  23. package/configure/lib/size.js +66 -0
  24. package/configure/lib/size.js.map +1 -0
  25. package/configure/lib/ticks.js +234 -0
  26. package/configure/lib/ticks.js.map +1 -0
  27. package/configure/lib/utils.js +12 -0
  28. package/configure/lib/utils.js.map +1 -0
  29. package/configure/package.json +20 -0
  30. package/controller/CHANGELOG.json +332 -0
  31. package/controller/CHANGELOG.md +1360 -0
  32. package/controller/lib/defaults.js +56 -0
  33. package/controller/lib/defaults.js.map +1 -0
  34. package/controller/lib/index.js +430 -0
  35. package/controller/lib/index.js.map +1 -0
  36. package/controller/lib/tickUtils.js +294 -0
  37. package/controller/lib/tickUtils.js.map +1 -0
  38. package/controller/lib/utils.js +168 -0
  39. package/controller/lib/utils.js.map +1 -0
  40. package/controller/package.json +20 -0
  41. package/demo.gif +0 -0
  42. package/docs/config-schema.json +2532 -0
  43. package/docs/config-schema.json.md +1844 -0
  44. package/docs/demo/config.js +8 -0
  45. package/docs/demo/generate.js +39 -0
  46. package/docs/demo/index.html +1 -0
  47. package/docs/pie-schema.json +2461 -0
  48. package/docs/pie-schema.json.md +1228 -0
  49. package/docs/schemas/config.json +256 -0
  50. package/lib/data-converter.js +96 -0
  51. package/lib/data-converter.js.map +1 -0
  52. package/lib/draggable/index.js +114 -0
  53. package/lib/draggable/index.js.map +1 -0
  54. package/lib/index.js +196 -0
  55. package/lib/index.js.map +1 -0
  56. package/lib/number-line/colors.js +11 -0
  57. package/lib/number-line/colors.js.map +1 -0
  58. package/lib/number-line/feedback.js +92 -0
  59. package/lib/number-line/feedback.js.map +1 -0
  60. package/lib/number-line/graph/arrow.js +44 -0
  61. package/lib/number-line/graph/arrow.js.map +1 -0
  62. package/lib/number-line/graph/elements/base.js +20 -0
  63. package/lib/number-line/graph/elements/base.js.map +1 -0
  64. package/lib/number-line/graph/elements/builder.js +37 -0
  65. package/lib/number-line/graph/elements/builder.js.map +1 -0
  66. package/lib/number-line/graph/elements/line.js +259 -0
  67. package/lib/number-line/graph/elements/line.js.map +1 -0
  68. package/lib/number-line/graph/elements/point.js +204 -0
  69. package/lib/number-line/graph/elements/point.js.map +1 -0
  70. package/lib/number-line/graph/elements/ray.js +190 -0
  71. package/lib/number-line/graph/elements/ray.js.map +1 -0
  72. package/lib/number-line/graph/index.js +262 -0
  73. package/lib/number-line/graph/index.js.map +1 -0
  74. package/lib/number-line/graph/line.js +38 -0
  75. package/lib/number-line/graph/line.js.map +1 -0
  76. package/lib/number-line/graph/stacks.js +78 -0
  77. package/lib/number-line/graph/stacks.js.map +1 -0
  78. package/lib/number-line/graph/tick-utils.js +347 -0
  79. package/lib/number-line/graph/tick-utils.js.map +1 -0
  80. package/lib/number-line/graph/ticks.js +188 -0
  81. package/lib/number-line/graph/ticks.js.map +1 -0
  82. package/lib/number-line/index.js +384 -0
  83. package/lib/number-line/index.js.map +1 -0
  84. package/lib/number-line/point-chooser/button.js +49 -0
  85. package/lib/number-line/point-chooser/button.js.map +1 -0
  86. package/lib/number-line/point-chooser/img.js +8 -0
  87. package/lib/number-line/point-chooser/img.js.map +1 -0
  88. package/lib/number-line/point-chooser/index.js +197 -0
  89. package/lib/number-line/point-chooser/index.js.map +1 -0
  90. package/lib/number-line/point-chooser/styles.js +77 -0
  91. package/lib/number-line/point-chooser/styles.js.map +1 -0
  92. package/lib/number-line/transitions/fade.js +88 -0
  93. package/lib/number-line/transitions/fade.js.map +1 -0
  94. package/lib/number-line/transitions/index.js +14 -0
  95. package/lib/number-line/transitions/index.js.map +1 -0
  96. package/package.json +21 -86
  97. package/configure.js +0 -2
  98. package/controller.js +0 -1
  99. package/dist/_virtual/_rolldown/runtime.js +0 -11
  100. package/dist/author/arrows.d.ts +0 -28
  101. package/dist/author/arrows.js +0 -69
  102. package/dist/author/card-bar.d.ts +0 -20
  103. package/dist/author/card-bar.js +0 -41
  104. package/dist/author/defaults.d.ts +0 -178
  105. package/dist/author/defaults.js +0 -144
  106. package/dist/author/domain.d.ts +0 -15
  107. package/dist/author/domain.js +0 -54
  108. package/dist/author/index.d.ts +0 -23
  109. package/dist/author/index.js +0 -89
  110. package/dist/author/main.d.ts +0 -44
  111. package/dist/author/main.js +0 -485
  112. package/dist/author/number-text-field.d.ts +0 -13
  113. package/dist/author/number-text-field.js +0 -13
  114. package/dist/author/point-config.d.ts +0 -25
  115. package/dist/author/point-config.js +0 -69
  116. package/dist/author/size.d.ts +0 -24
  117. package/dist/author/size.js +0 -48
  118. package/dist/author/ticks.d.ts +0 -22
  119. package/dist/author/ticks.js +0 -115
  120. package/dist/author/utils.d.ts +0 -9
  121. package/dist/author/utils.js +0 -4
  122. package/dist/browser/author/index.js +0 -40259
  123. package/dist/browser/author/index.js.map +0 -1
  124. package/dist/browser/controller/index.js +0 -569
  125. package/dist/browser/controller/index.js.map +0 -1
  126. package/dist/browser/delivery/index.js +0 -2
  127. package/dist/browser/delivery-DWjDT9Sz.js +0 -17910
  128. package/dist/browser/delivery-DWjDT9Sz.js.map +0 -1
  129. package/dist/browser/dist-D5T-OaLo.js +0 -19038
  130. package/dist/browser/dist-D5T-OaLo.js.map +0 -1
  131. package/dist/browser/impureFunctionsAny.generated-Bqfato71.js +0 -10162
  132. package/dist/browser/impureFunctionsAny.generated-Bqfato71.js.map +0 -1
  133. package/dist/browser/number-line.css +0 -2
  134. package/dist/controller/defaults.d.ts +0 -58
  135. package/dist/controller/defaults.js +0 -50
  136. package/dist/controller/index.d.ts +0 -47
  137. package/dist/controller/index.js +0 -165
  138. package/dist/controller/tickUtils.d.ts +0 -21
  139. package/dist/controller/tickUtils.js +0 -252
  140. package/dist/controller/utils.d.ts +0 -9
  141. package/dist/controller/utils.js +0 -68
  142. package/dist/delivery/data-converter.d.ts +0 -64
  143. package/dist/delivery/data-converter.js +0 -70
  144. package/dist/delivery/draggable/index.d.ts +0 -33
  145. package/dist/delivery/draggable/index.js +0 -39
  146. package/dist/delivery/index.d.ts +0 -35
  147. package/dist/delivery/index.js +0 -109
  148. package/dist/delivery/number-line/colors.d.ts +0 -11
  149. package/dist/delivery/number-line/colors.js +0 -5
  150. package/dist/delivery/number-line/feedback.d.ts +0 -19
  151. package/dist/delivery/number-line/feedback.js +0 -57
  152. package/dist/delivery/number-line/graph/arrow.d.ts +0 -30
  153. package/dist/delivery/number-line/graph/arrow.js +0 -27
  154. package/dist/delivery/number-line/graph/elements/base.d.ts +0 -16
  155. package/dist/delivery/number-line/graph/elements/base.js +0 -11
  156. package/dist/delivery/number-line/graph/elements/builder.d.ts +0 -33
  157. package/dist/delivery/number-line/graph/elements/builder.js +0 -30
  158. package/dist/delivery/number-line/graph/elements/line.d.ts +0 -51
  159. package/dist/delivery/number-line/graph/elements/line.js +0 -188
  160. package/dist/delivery/number-line/graph/elements/point.d.ts +0 -43
  161. package/dist/delivery/number-line/graph/elements/point.js +0 -127
  162. package/dist/delivery/number-line/graph/elements/ray.d.ts +0 -43
  163. package/dist/delivery/number-line/graph/elements/ray.js +0 -130
  164. package/dist/delivery/number-line/graph/index.d.ts +0 -59
  165. package/dist/delivery/number-line/graph/index.js +0 -196
  166. package/dist/delivery/number-line/graph/line.d.ts +0 -46
  167. package/dist/delivery/number-line/graph/line.js +0 -27
  168. package/dist/delivery/number-line/graph/stacks.d.ts +0 -10
  169. package/dist/delivery/number-line/graph/stacks.js +0 -40
  170. package/dist/delivery/number-line/graph/tick-utils.d.ts +0 -80
  171. package/dist/delivery/number-line/graph/tick-utils.js +0 -295
  172. package/dist/delivery/number-line/graph/ticks.d.ts +0 -46
  173. package/dist/delivery/number-line/graph/ticks.js +0 -115
  174. package/dist/delivery/number-line/index.d.ts +0 -35
  175. package/dist/delivery/number-line/index.js +0 -215
  176. package/dist/delivery/number-line/point-chooser/button.d.ts +0 -31
  177. package/dist/delivery/number-line/point-chooser/button.js +0 -36
  178. package/dist/delivery/number-line/point-chooser/img.d.ts +0 -10
  179. package/dist/delivery/number-line/point-chooser/img.js +0 -4
  180. package/dist/delivery/number-line/point-chooser/index.d.ts +0 -37
  181. package/dist/delivery/number-line/point-chooser/index.js +0 -154
  182. package/dist/delivery/number-line/point-chooser/styles.d.ts +0 -192
  183. package/dist/delivery/number-line/transitions/fade.d.ts +0 -34
  184. package/dist/delivery/number-line/transitions/fade.js +0 -75
  185. package/dist/delivery/number-line/transitions/index.d.ts +0 -10
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.iife.d.ts +0 -8
  188. package/dist/index.iife.js +0 -197
  189. package/dist/index.js +0 -2
  190. package/dist/runtime-support.d.ts +0 -12
  191. package/dist/runtime-support.js +0 -12
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.zeroBasedRange = exports.zbrErrorMessage = exports.snapTo = exports.snapElements = exports.simpleRange = exports.normalizeTicks = exports.labelMultiplier = exports.isMultiple = exports.getMinorLimits = exports.generateMinorValues = exports.generateMajorValuesForMinor = exports.fractionTickValues = exports.fractionSnapTo = exports.fractionRange = exports.fraction = exports.decimalTickValues = exports.closeTo = exports.buildTickDataAsFractions = exports.buildTickData = void 0;
7
+ var math = _interopRequireWildcard(require("mathjs"));
8
+ var _lodashEs = require("lodash-es");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ // All these functions are duplicated in controller/src/tickUtils
11
+
12
+ /*This will store the possible decimal tick values*/
13
+ const decimalTickValues = exports.decimalTickValues = [0.001, 0.01, 0.02, 0.04, 0.05, 0.1, 0.125, 0.2, 0.25, 0.5];
14
+
15
+ /*This will store the possible fraction tick values*/
16
+ const fractionTickValues = exports.fractionTickValues = ['1/1000', '1/100', '1/64', '1/50', '1/32', '1/25', '1/20', '1/16', '1/15', '1/12', '1/10', '1/9', '1/8', '1/7', '1/6', '1/5', '1/4', '1/3', '1/2'];
17
+
18
+ /*This const will store possible multiplier for label interval that needs to be multiplied
19
+ with tick interval with denominator represented with object key.*/
20
+ const labelMultiplier = exports.labelMultiplier = {
21
+ 1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
22
+ 2: [1, 2, 4, 6, 8, 10],
23
+ 3: [1, 3, 6, 9],
24
+ 4: [1, 2, 4, 8],
25
+ 5: [1, 5, 10],
26
+ 6: [1, 2, 3, 6],
27
+ 7: [1, 7],
28
+ 8: [1, 2, 4, 8],
29
+ 9: [1, 3, 9],
30
+ 10: [1, 2, 5, 10],
31
+ 12: [1, 2, 3, 4, 6],
32
+ 15: [1, 3, 5],
33
+ 16: [1, 2, 4, 8],
34
+ 20: [1, 2, 4, 5, 10],
35
+ 25: [1, 5],
36
+ 32: [1, 2, 4, 8],
37
+ 50: [1, 2, 5, 10],
38
+ 64: [1, 2, 4, 8],
39
+ 100: [1, 2, 4, 5, 10],
40
+ 1000: [1, 2, 4, 5, 8, 10]
41
+ };
42
+ const fractionRange = (start, end, interval) => {
43
+ const m = math.mod(math.abs(start), math.abs(interval));
44
+ if (!math.equal(m, 0)) {
45
+ throw new Error('start point must be divisible by interval');
46
+ }
47
+ if (math.equal(start, end)) {
48
+ return [];
49
+ }
50
+ const e = math.subtract(end, math.mod(end, math.abs(interval)));
51
+ const direction = math.larger(interval, 0) ? 'positive' : 'negative';
52
+ if (direction === 'negative' && math.largerEq(end, start)) {
53
+ throw new Error('start must be > than end when doing a negative decrement');
54
+ }
55
+ if (direction === 'positive' && math.smallerEq(end, start)) {
56
+ throw new Error('start must be < end when doing increments');
57
+ }
58
+ let compareFn;
59
+ if (direction === 'positive') {
60
+ compareFn = math.smallerEq;
61
+ } else if (math.equal(e, end)) {
62
+ compareFn = math.largerEq;
63
+ } else {
64
+ compareFn = math.larger;
65
+ }
66
+ const out = [];
67
+ let next = start;
68
+ while (compareFn(next, e)) {
69
+ out.push(next);
70
+ next = math.add(next, interval);
71
+ }
72
+ return out;
73
+ };
74
+ exports.fractionRange = fractionRange;
75
+ const zbrErrorMessage = (start, end) => `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;
76
+ exports.zbrErrorMessage = zbrErrorMessage;
77
+ const zeroBasedRange = (start, end, interval) => {
78
+ start = math.fraction(start);
79
+ end = math.fraction(end);
80
+ interval = math.fraction(interval);
81
+ const length = math.abs(math.subtract(end, start));
82
+ if (math.larger(length, math.abs(end))) {
83
+ throw new Error(zbrErrorMessage(start, end));
84
+ }
85
+ const a = {
86
+ start: math.abs(start),
87
+ end: math.abs(end),
88
+ interval: math.abs(interval),
89
+ multiplier: math.smaller(interval, 0) ? -1 : 1
90
+ };
91
+ const m = math.mod(a.start, a.interval);
92
+ const s = math.larger(m, 0) ? math.add(math.subtract(a.start, m), a.interval) : a.start;
93
+ const r = fractionRange(s, a.end, a.interval);
94
+ const out = a.multiplier === -1 ? r.map(v => math.multiply(v, -1)) : r;
95
+ if (math.smaller(interval, 0)) {
96
+ out.reverse();
97
+ }
98
+ return out;
99
+ };
100
+ exports.zeroBasedRange = zeroBasedRange;
101
+ const fmin = (a, b) => {
102
+ a = math.fraction(a);
103
+ b = math.fraction(b);
104
+ return math.smaller(a, b) ? a : b;
105
+ };
106
+ const fmax = (a, b) => {
107
+ a = math.fraction(a);
108
+ b = math.fraction(b);
109
+ return math.larger(a, b) ? a : b;
110
+ };
111
+ /**
112
+ * the lodash range was causing too much variance in the rounding errors
113
+ * such that it was hard to round the numbers.
114
+ * This is a more simplistic version but makes rounding work.
115
+ */
116
+ const simpleRange = (start, end, interval) => {
117
+ start = math.fraction(start);
118
+ end = math.fraction(end);
119
+ interval = math.fraction(interval);
120
+ const positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];
121
+ const negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];
122
+ let together = negativeRange.concat(positiveRange);
123
+ const out = (0, _lodashEs.uniqWith)(together, math.equal);
124
+ return out;
125
+ };
126
+ exports.simpleRange = simpleRange;
127
+ const closeTo = (a, b, precision) => {
128
+ precision = precision || 2;
129
+ const expectedDiff = Math.pow(10, -precision) / 2;
130
+ const receivedDiff = Math.abs(a - b);
131
+ return receivedDiff < expectedDiff;
132
+ };
133
+ exports.closeTo = closeTo;
134
+ const limit = (v, min, max) => {
135
+ if (math.smaller(fraction(v), fraction(min))) {
136
+ return min;
137
+ }
138
+ if (math.larger(fraction(v), fraction(max))) {
139
+ return max;
140
+ }
141
+ return v;
142
+ };
143
+
144
+ /*
145
+ * Function to get tick interval limits based on min, max and width entered by the user.
146
+ * @param domain object containing max and min value.
147
+ * @param width number represents width of number line.
148
+ * */
149
+ const getMinorLimits = (domain, width) => {
150
+ const end = domain.max - domain.min;
151
+ const min = math.number(math.multiply(10, math.divide(math.fraction(end), width)));
152
+ const max = math.number(math.multiply(20, min));
153
+ return {
154
+ min: min,
155
+ max: max
156
+ };
157
+ };
158
+ exports.getMinorLimits = getMinorLimits;
159
+ const isMultiple = (multiple, src) => {
160
+ const mod = math.mod(multiple, src);
161
+ return math.equal(mod, 0);
162
+ };
163
+
164
+ /**
165
+ * Accepts a fraction object {n,d,s} or number.
166
+ * @param {*} v
167
+ * @return mathjs.fraction
168
+ */
169
+ exports.isMultiple = isMultiple;
170
+ const fraction = v => {
171
+ if ((0, _lodashEs.isObject)(v)) {
172
+ return math.fraction(v.n * v.s, v.d);
173
+ } else if ((0, _lodashEs.isNumber)(v)) {
174
+ return math.fraction(v);
175
+ }
176
+ };
177
+ exports.fraction = fraction;
178
+ const normalizeTicks = (domain, width, ticks, opts) => {
179
+ const useLimit = opts ? opts.limit !== false : true;
180
+ const minorLimits = getMinorLimits(domain, width);
181
+ const minor = useLimit ? limit(fraction(ticks.minor), minorLimits.min, minorLimits.max) : fraction(ticks.minor);
182
+ const major = useLimit ? limit(fraction(ticks.major), minor, math.multiply(minor, 20)) : fraction(ticks.major);
183
+ const isMajorMultiple = isMultiple(major, minor);
184
+ if (!isMajorMultiple) {
185
+ const multiplier = math.divide(major, minor);
186
+ const multiplyBy = multiplier <= 2 ? 2 : Math.round(multiplier);
187
+
188
+ // major must be a multiple of minor
189
+ return {
190
+ minor,
191
+ major: math.multiply(minor, multiplyBy)
192
+ };
193
+ }
194
+ return {
195
+ major,
196
+ minor
197
+ };
198
+ };
199
+
200
+ /**
201
+ * Build ticks as an array of mathjs Fractions
202
+ */
203
+ exports.normalizeTicks = normalizeTicks;
204
+ const buildTickDataAsFractions = (domain, width, ticks, opts) => {
205
+ ticks = normalizeTicks(domain, width, ticks, opts);
206
+ const rng = simpleRange(domain.min, domain.max, ticks.minor);
207
+ const o = rng.filter(x => math.smallerEq(x, math.fraction(domain.max))).map(x => {
208
+ let type = 'minor';
209
+ const modulo = math.mod(x, ticks.major);
210
+ if (closeTo(math.number(modulo), 0)) {
211
+ type = 'major';
212
+ }
213
+ return {
214
+ x,
215
+ type
216
+ };
217
+ });
218
+ return o;
219
+ };
220
+
221
+ /*
222
+ * This function will generate tick interval values based on min and max limits of ticks.
223
+ * @param minorLimits object containing min and max values
224
+ * @return out object containing three arrays 1. fraction values, 2. decimal values,
225
+ * */
226
+ exports.buildTickDataAsFractions = buildTickDataAsFractions;
227
+ const generateMinorValues = minorLimits => {
228
+ let out = {
229
+ fraction: [],
230
+ decimal: []
231
+ };
232
+ decimalTickValues.forEach(value => {
233
+ if (value >= minorLimits.min && value <= minorLimits.max) {
234
+ out.decimal.push(value);
235
+ }
236
+ });
237
+ fractionTickValues.forEach(value => {
238
+ let decimalValue = math.number(math.fraction(value));
239
+ if (decimalValue >= minorLimits.min && decimalValue <= minorLimits.max) {
240
+ out.fraction.push(value);
241
+ }
242
+ });
243
+ return out;
244
+ };
245
+
246
+ /*
247
+ * This function will generate label interval values for provided tick interval value.
248
+ * @param minor number representing tick interval value.
249
+ * @param domain object containing min and max values.
250
+ * @param width number representing width of number line.
251
+ * @return out object containing three arrays 1. fraction values, 2. decimal values,
252
+ * */
253
+ exports.generateMinorValues = generateMinorValues;
254
+ const generateMajorValuesForMinor = (minor, domain, width) => {
255
+ let out = {
256
+ decimal: [],
257
+ fraction: []
258
+ };
259
+ let fraction = math.fraction(math.number(math.number(minor)));
260
+ let n = fraction.n;
261
+ let d = fraction.d;
262
+ if (n >= 1 && d === 1) {
263
+ for (let i = 1; i <= 10; i++) {
264
+ let num = math.number(math.multiply(n, i));
265
+ //Here we check if this major value can plot at least 2 points on number line.
266
+ let ticksData = {
267
+ minor: minor,
268
+ major: num
269
+ };
270
+ let output = buildTickData(domain, width, ticksData, {
271
+ fraction: undefined
272
+ });
273
+ if (output.filter(x => x.type === 'major').length > 1) {
274
+ out.fraction.push(num.toString());
275
+ out.decimal.push(num);
276
+ }
277
+ }
278
+ } else {
279
+ for (const multiplierKey in labelMultiplier[d]) {
280
+ let num = math.multiply(math.fraction(n, d), labelMultiplier[d][multiplierKey]);
281
+ //Here we check if this major value can plot at least 2 points on number line.
282
+ let ticksData = {
283
+ minor: minor,
284
+ major: math.number(num)
285
+ };
286
+ let output = buildTickData(domain, width, ticksData, {
287
+ fraction: undefined
288
+ });
289
+ if (output.filter(x => x.type === 'major').length > 1) {
290
+ if (num.d !== 1) {
291
+ out.fraction.push(num.n + '/' + num.d);
292
+ } else {
293
+ out.fraction.push(num.n.toString());
294
+ }
295
+ out.decimal.push(math.number(num));
296
+ }
297
+ }
298
+ }
299
+ return out;
300
+ };
301
+ exports.generateMajorValuesForMinor = generateMajorValuesForMinor;
302
+ const buildTickData = (domain, width, ticks, opts) => {
303
+ const result = buildTickDataAsFractions(domain, width, ticks, opts);
304
+ const out = result.map(o => opts.fraction ? o : {
305
+ ...o,
306
+ x: math.number(o.x) || 0
307
+ });
308
+ return out;
309
+ };
310
+ exports.buildTickData = buildTickData;
311
+ const fractionSnapTo = (min, max, interval, value) => {
312
+ value = fmax(fmin(value, max), min);
313
+ const mod = value.mod(interval);
314
+ let v;
315
+ const half = interval.div(2);
316
+ if (math.largerEq(math.abs(mod), half)) {
317
+ const d = interval.sub(math.abs(mod));
318
+ const fn = math.largerEq(value, 0) ? 'add' : 'sub';
319
+ v = value[fn](d);
320
+ } else {
321
+ const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';
322
+ v = value[fn2](math.abs(mod));
323
+ }
324
+ return v;
325
+ };
326
+ exports.fractionSnapTo = fractionSnapTo;
327
+ const snapTo = (min, max, interval, value) => {
328
+ const out = fractionSnapTo(math.fraction(min), math.fraction(max), math.fraction(interval), math.fraction(value));
329
+ return math.number(out);
330
+ };
331
+ exports.snapTo = snapTo;
332
+ const snapElements = (domain, ticks, elements) => {
333
+ return elements.map(e => {
334
+ const size = Number.isFinite(e.size) ? snapTo(0, e.size, ticks.minor, e.size) : undefined;
335
+ const domainPosition = snapTo(domain.min, domain.max, ticks.minor, e.domainPosition);
336
+ const out = {
337
+ ...e,
338
+ domainPosition
339
+ };
340
+ if (Number.isFinite(size)) {
341
+ out.size = size;
342
+ }
343
+ return out;
344
+ });
345
+ };
346
+ exports.snapElements = snapElements;
347
+ //# sourceMappingURL=tick-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick-utils.js","names":["math","_interopRequireWildcard","require","_lodashEs","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","decimalTickValues","exports","fractionTickValues","labelMultiplier","fractionRange","start","end","interval","m","mod","abs","equal","Error","subtract","direction","larger","largerEq","smallerEq","compareFn","out","next","push","add","zbrErrorMessage","zeroBasedRange","fraction","length","a","multiplier","smaller","s","map","v","multiply","reverse","fmin","b","fmax","simpleRange","positiveRange","negativeRange","together","concat","uniqWith","closeTo","precision","expectedDiff","Math","pow","receivedDiff","limit","min","max","getMinorLimits","domain","width","number","divide","isMultiple","multiple","src","isObject","d","isNumber","normalizeTicks","ticks","opts","useLimit","minorLimits","minor","major","isMajorMultiple","multiplyBy","round","buildTickDataAsFractions","rng","filter","x","type","modulo","generateMinorValues","decimal","forEach","value","decimalValue","generateMajorValuesForMinor","num","ticksData","output","buildTickData","undefined","toString","multiplierKey","result","fractionSnapTo","half","div","sub","fn","fn2","snapTo","snapElements","elements","size","Number","isFinite","domainPosition"],"sources":["../../../src/number-line/graph/tick-utils.js"],"sourcesContent":["import * as math from 'mathjs';\nimport { isNumber, isObject, uniqWith } from 'lodash-es';\n\n// All these functions are duplicated in controller/src/tickUtils\n\n/*This will store the possible decimal tick values*/\nexport const decimalTickValues = [0.001, 0.01, 0.02, 0.04, 0.05, 0.1, 0.125, 0.2, 0.25, 0.5];\n\n/*This will store the possible fraction tick values*/\nexport const fractionTickValues = [\n '1/1000',\n '1/100',\n '1/64',\n '1/50',\n '1/32',\n '1/25',\n '1/20',\n '1/16',\n '1/15',\n '1/12',\n '1/10',\n '1/9',\n '1/8',\n '1/7',\n '1/6',\n '1/5',\n '1/4',\n '1/3',\n '1/2',\n];\n\n/*This const will store possible multiplier for label interval that needs to be multiplied\nwith tick interval with denominator represented with object key.*/\nexport const labelMultiplier = {\n 1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n 2: [1, 2, 4, 6, 8, 10],\n 3: [1, 3, 6, 9],\n 4: [1, 2, 4, 8],\n 5: [1, 5, 10],\n 6: [1, 2, 3, 6],\n 7: [1, 7],\n 8: [1, 2, 4, 8],\n 9: [1, 3, 9],\n 10: [1, 2, 5, 10],\n 12: [1, 2, 3, 4, 6],\n 15: [1, 3, 5],\n 16: [1, 2, 4, 8],\n 20: [1, 2, 4, 5, 10],\n 25: [1, 5],\n 32: [1, 2, 4, 8],\n 50: [1, 2, 5, 10],\n 64: [1, 2, 4, 8],\n 100: [1, 2, 4, 5, 10],\n 1000: [1, 2, 4, 5, 8, 10],\n};\n\nexport const fractionRange = (start, end, interval) => {\n const m = math.mod(math.abs(start), math.abs(interval));\n if (!math.equal(m, 0)) {\n throw new Error('start point must be divisible by interval');\n }\n\n if (math.equal(start, end)) {\n return [];\n }\n\n const e = math.subtract(end, math.mod(end, math.abs(interval)));\n\n const direction = math.larger(interval, 0) ? 'positive' : 'negative';\n\n if (direction === 'negative' && math.largerEq(end, start)) {\n throw new Error('start must be > than end when doing a negative decrement');\n }\n if (direction === 'positive' && math.smallerEq(end, start)) {\n throw new Error('start must be < end when doing increments');\n }\n\n let compareFn;\n if (direction === 'positive') {\n compareFn = math.smallerEq;\n } else if (math.equal(e, end)) {\n compareFn = math.largerEq;\n } else {\n compareFn = math.larger;\n }\n\n const out = [];\n\n let next = start;\n while (compareFn(next, e)) {\n out.push(next);\n next = math.add(next, interval);\n }\n return out;\n};\n\nexport const zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nexport const zeroBasedRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const length = math.abs(math.subtract(end, start));\n\n if (math.larger(length, math.abs(end))) {\n throw new Error(zbrErrorMessage(start, end));\n }\n const a = {\n start: math.abs(start),\n end: math.abs(end),\n interval: math.abs(interval),\n multiplier: math.smaller(interval, 0) ? -1 : 1,\n };\n\n const m = math.mod(a.start, a.interval);\n const s = math.larger(m, 0) ? math.add(math.subtract(a.start, m), a.interval) : a.start;\n\n const r = fractionRange(s, a.end, a.interval);\n const out = a.multiplier === -1 ? r.map((v) => math.multiply(v, -1)) : r;\n\n if (math.smaller(interval, 0)) {\n out.reverse();\n }\n return out;\n};\n\nconst fmin = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.smaller(a, b) ? a : b;\n};\n\nconst fmax = (a, b) => {\n a = math.fraction(a);\n b = math.fraction(b);\n return math.larger(a, b) ? a : b;\n};\n/**\n * the lodash range was causing too much variance in the rounding errors\n * such that it was hard to round the numbers.\n * This is a more simplistic version but makes rounding work.\n */\nexport const simpleRange = (start, end, interval) => {\n start = math.fraction(start);\n end = math.fraction(end);\n interval = math.fraction(interval);\n\n const positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];\n\n const negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];\n let together = negativeRange.concat(positiveRange);\n\n const out = uniqWith(together, math.equal);\n return out;\n};\n\nexport const closeTo = (a, b, precision) => {\n precision = precision || 2;\n const expectedDiff = Math.pow(10, -precision) / 2;\n const receivedDiff = Math.abs(a - b);\n return receivedDiff < expectedDiff;\n};\n\nconst limit = (v, min, max) => {\n if (math.smaller(fraction(v), fraction(min))) {\n return min;\n }\n\n if (math.larger(fraction(v), fraction(max))) {\n return max;\n }\n\n return v;\n};\n\n/*\n * Function to get tick interval limits based on min, max and width entered by the user.\n * @param domain object containing max and min value.\n * @param width number represents width of number line.\n * */\nexport const getMinorLimits = (domain, width) => {\n const end = domain.max - domain.min;\n const min = math.number(math.multiply(10, math.divide(math.fraction(end), width)));\n const max = math.number(math.multiply(20, min));\n return {\n min: min,\n max: max,\n };\n};\n\nexport const isMultiple = (multiple, src) => {\n const mod = math.mod(multiple, src);\n return math.equal(mod, 0);\n};\n\n/**\n * Accepts a fraction object {n,d,s} or number.\n * @param {*} v\n * @return mathjs.fraction\n */\nexport const fraction = (v) => {\n if (isObject(v)) {\n return math.fraction(v.n * v.s, v.d);\n } else if (isNumber(v)) {\n return math.fraction(v);\n }\n};\n\nexport const normalizeTicks = (domain, width, ticks, opts) => {\n const useLimit = opts ? opts.limit !== false : true;\n const minorLimits = getMinorLimits(domain, width);\n\n const minor = useLimit ? limit(fraction(ticks.minor), minorLimits.min, minorLimits.max) : fraction(ticks.minor);\n const major = useLimit ? limit(fraction(ticks.major), minor, math.multiply(minor, 20)) : fraction(ticks.major);\n\n const isMajorMultiple = isMultiple(major, minor);\n\n if (!isMajorMultiple) {\n const multiplier = math.divide(major, minor);\n const multiplyBy = multiplier <= 2 ? 2 : Math.round(multiplier);\n\n // major must be a multiple of minor\n return { minor, major: math.multiply(minor, multiplyBy) };\n }\n\n return { major, minor };\n};\n\n/**\n * Build ticks as an array of mathjs Fractions\n */\nexport const buildTickDataAsFractions = (domain, width, ticks, opts) => {\n ticks = normalizeTicks(domain, width, ticks, opts);\n const rng = simpleRange(domain.min, domain.max, ticks.minor);\n\n const o = rng\n .filter((x) => math.smallerEq(x, math.fraction(domain.max)))\n .map((x) => {\n let type = 'minor';\n const modulo = math.mod(x, ticks.major);\n\n if (closeTo(math.number(modulo), 0)) {\n type = 'major';\n }\n\n return { x, type };\n });\n\n return o;\n};\n\n/*\n * This function will generate tick interval values based on min and max limits of ticks.\n * @param minorLimits object containing min and max values\n * @return out object containing three arrays 1. fraction values, 2. decimal values,\n * */\nexport const generateMinorValues = (minorLimits) => {\n let out = { fraction: [], decimal: [] };\n decimalTickValues.forEach((value) => {\n if (value >= minorLimits.min && value <= minorLimits.max) {\n out.decimal.push(value);\n }\n });\n fractionTickValues.forEach((value) => {\n let decimalValue = math.number(math.fraction(value));\n if (decimalValue >= minorLimits.min && decimalValue <= minorLimits.max) {\n out.fraction.push(value);\n }\n });\n return out;\n};\n\n/*\n * This function will generate label interval values for provided tick interval value.\n * @param minor number representing tick interval value.\n * @param domain object containing min and max values.\n * @param width number representing width of number line.\n * @return out object containing three arrays 1. fraction values, 2. decimal values,\n * */\nexport const generateMajorValuesForMinor = (minor, domain, width) => {\n let out = { decimal: [], fraction: [] };\n let fraction = math.fraction(math.number(math.number(minor)));\n let n = fraction.n;\n let d = fraction.d;\n if (n >= 1 && d === 1) {\n for (let i = 1; i <= 10; i++) {\n let num = math.number(math.multiply(n, i));\n //Here we check if this major value can plot at least 2 points on number line.\n let ticksData = { minor: minor, major: num };\n let output = buildTickData(domain, width, ticksData, { fraction: undefined });\n if (output.filter((x) => x.type === 'major').length > 1) {\n out.fraction.push(num.toString());\n out.decimal.push(num);\n }\n }\n } else {\n for (const multiplierKey in labelMultiplier[d]) {\n let num = math.multiply(math.fraction(n, d), labelMultiplier[d][multiplierKey]);\n //Here we check if this major value can plot at least 2 points on number line.\n let ticksData = { minor: minor, major: math.number(num) };\n let output = buildTickData(domain, width, ticksData, { fraction: undefined });\n if (output.filter((x) => x.type === 'major').length > 1) {\n if (num.d !== 1) {\n out.fraction.push(num.n + '/' + num.d);\n } else {\n out.fraction.push(num.n.toString());\n }\n out.decimal.push(math.number(num));\n }\n }\n }\n return out;\n};\n\nexport const buildTickData = (domain, width, ticks, opts) => {\n const result = buildTickDataAsFractions(domain, width, ticks, opts);\n\n const out = result.map((o) => (opts.fraction ? o : { ...o, x: math.number(o.x) || 0 }));\n\n return out;\n};\n\nexport const fractionSnapTo = (min, max, interval, value) => {\n value = fmax(fmin(value, max), min);\n const mod = value.mod(interval);\n let v;\n\n const half = interval.div(2);\n if (math.largerEq(math.abs(mod), half)) {\n const d = interval.sub(math.abs(mod));\n const fn = math.largerEq(value, 0) ? 'add' : 'sub';\n v = value[fn](d);\n } else {\n const fn2 = math.largerEq(value, 0) ? 'sub' : 'add';\n v = value[fn2](math.abs(mod));\n }\n return v;\n};\n\nexport const snapTo = (min, max, interval, value) => {\n const out = fractionSnapTo(math.fraction(min), math.fraction(max), math.fraction(interval), math.fraction(value));\n return math.number(out);\n};\n\nexport const snapElements = (domain, ticks, elements) => {\n return elements.map((e) => {\n const size = Number.isFinite(e.size) ? snapTo(0, e.size, ticks.minor, e.size) : undefined;\n const domainPosition = snapTo(domain.min, domain.max, ticks.minor, e.domainPosition);\n const out = { ...e, domainPosition };\n\n if (Number.isFinite(size)) {\n out.size = size;\n }\n\n return out;\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Ticks = exports.TickValidator = exports.Tick = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styles = require("@mui/material/styles");
12
+ var _tickUtils = require("./tick-utils");
13
+ var _renderUi = require("@pie-lib/render-ui");
14
+ const StyledText = (0, _styles.styled)('text')({
15
+ userSelect: 'none',
16
+ textAlign: 'center',
17
+ fill: _renderUi.color.primary()
18
+ });
19
+ const StyledLine = (0, _styles.styled)('line')({
20
+ stroke: _renderUi.color.primary()
21
+ });
22
+ const TickValidator = exports.TickValidator = _propTypes.default.shape({
23
+ /** the number of major ticks (including min + max)
24
+ * to display. cant be lower than 2.
25
+ */
26
+ major: (props, propName) => {},
27
+ /** the number of minor ticks to display between major ticks.
28
+ * Can't be less than zero.
29
+ */
30
+ minor: (props, propName, componentName) => {
31
+ let minor = props[propName];
32
+ if (minor <= 0) {
33
+ return new Error(`Invalid prop ${propName} must be > 0. ${componentName}`);
34
+ }
35
+ }
36
+ }).isRequired;
37
+ class Tick extends _react.default.Component {
38
+ constructor(props) {
39
+ super(props);
40
+ this.wasRendered = false;
41
+ this.state = {
42
+ textBox: {
43
+ width: 0,
44
+ height: 0,
45
+ x: 0,
46
+ y: 0
47
+ }
48
+ };
49
+ this.resizeObserver = null;
50
+ }
51
+ updateTextBox() {
52
+ if (this.text) {
53
+ const {
54
+ width,
55
+ height,
56
+ x,
57
+ y
58
+ } = this.text.getBBox();
59
+ this.text.setAttribute('x', width / 2 * -1);
60
+ this.setState({
61
+ textBox: {
62
+ width,
63
+ height,
64
+ x,
65
+ y
66
+ }
67
+ });
68
+ }
69
+ }
70
+ componentDidMount() {
71
+ // Set up ResizeObserver
72
+ this.resizeObserver = new ResizeObserver(() => {
73
+ this.updateTextBox();
74
+ });
75
+ if (this.text) {
76
+ this.resizeObserver.observe(this.text);
77
+ }
78
+ }
79
+ componentWillUnmount() {
80
+ if (this.resizeObserver) {
81
+ this.resizeObserver.disconnect();
82
+ }
83
+ }
84
+ render() {
85
+ //the domain value
86
+ let {
87
+ x,
88
+ y,
89
+ type,
90
+ xScale,
91
+ fraction
92
+ } = this.props;
93
+ const displayFraction = fraction && x.n !== x.d && x.n !== 0 && x.d !== 1;
94
+ const labelTick = type === 'major';
95
+ const height = labelTick ? 20 : 10;
96
+ const {
97
+ width: textWidth = 0,
98
+ height: textHeight = 0,
99
+ x: textX = 0,
100
+ y: textY = 0
101
+ } = this.state.textBox;
102
+ const xText = !fraction ? Number(x.toFixed(3)) : !displayFraction ? x.n * x.s : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("tspan", {
103
+ x: "0",
104
+ dy: "0.71em"
105
+ }, x.n * x.s), /*#__PURE__*/_react.default.createElement("tspan", {
106
+ x: "0",
107
+ dy: "1.11em"
108
+ }, x.d));
109
+ return /*#__PURE__*/_react.default.createElement("g", {
110
+ opacity: "1",
111
+ transform: `translate(${xScale(x)}, ${y})`
112
+ }, /*#__PURE__*/_react.default.createElement(StyledLine, {
113
+ y1: height / 2 * -1,
114
+ y2: height / 2,
115
+ x1: "0.5",
116
+ x2: "0.5"
117
+ }), displayFraction && /*#__PURE__*/_react.default.createElement(StyledLine, {
118
+ x1: textX,
119
+ x2: textX + textWidth,
120
+ y1: textY + textHeight / 2,
121
+ y2: textY + textHeight / 2
122
+ }), labelTick && /*#__PURE__*/_react.default.createElement(StyledText, {
123
+ ref: text => this.text = text,
124
+ y: "14",
125
+ width: "10",
126
+ dy: "0.71em",
127
+ textAnchor: displayFraction && 'middle'
128
+ }, xText));
129
+ }
130
+ }
131
+ exports.Tick = Tick;
132
+ (0, _defineProperty2.default)(Tick, "propTypes", {
133
+ y: _propTypes.default.number.isRequired,
134
+ x: _propTypes.default.number.isRequired,
135
+ major: _propTypes.default.bool,
136
+ fraction: _propTypes.default.bool,
137
+ xScale: _propTypes.default.func,
138
+ type: _propTypes.default.string
139
+ });
140
+ (0, _defineProperty2.default)(Tick, "defaultProps", {
141
+ major: false
142
+ });
143
+ class Ticks extends _react.default.Component {
144
+ render() {
145
+ let {
146
+ domain,
147
+ width,
148
+ ticks,
149
+ y,
150
+ fraction
151
+ } = this.props;
152
+ let {
153
+ xScale
154
+ } = this.context;
155
+ const tickData = (0, _tickUtils.buildTickData)(domain, width, ticks, {
156
+ fraction
157
+ });
158
+ return /*#__PURE__*/_react.default.createElement("g", null, tickData.map(({
159
+ x,
160
+ type
161
+ }) => {
162
+ return /*#__PURE__*/_react.default.createElement(Tick, {
163
+ fraction: fraction,
164
+ x: x,
165
+ y: y,
166
+ type: type,
167
+ xScale: xScale,
168
+ key: `${x}-${type}-${fraction}`
169
+ });
170
+ }));
171
+ }
172
+ }
173
+ exports.Ticks = Ticks;
174
+ (0, _defineProperty2.default)(Ticks, "contextTypes", {
175
+ xScale: _propTypes.default.func.isRequired
176
+ });
177
+ (0, _defineProperty2.default)(Ticks, "propTypes", {
178
+ domain: _propTypes.default.shape({
179
+ min: _propTypes.default.number.isRequired,
180
+ max: _propTypes.default.number.isRequired
181
+ }).isRequired,
182
+ fraction: _propTypes.default.bool,
183
+ width: _propTypes.default.number,
184
+ ticks: TickValidator,
185
+ y: _propTypes.default.number.isRequired
186
+ });
187
+ var _default = exports.default = Ticks;
188
+ //# sourceMappingURL=ticks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticks.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_tickUtils","_renderUi","StyledText","styled","userSelect","textAlign","fill","color","primary","StyledLine","stroke","TickValidator","exports","PropTypes","shape","major","props","propName","minor","componentName","Error","isRequired","Tick","React","Component","constructor","wasRendered","state","textBox","width","height","x","y","resizeObserver","updateTextBox","text","getBBox","setAttribute","setState","componentDidMount","ResizeObserver","observe","componentWillUnmount","disconnect","render","type","xScale","fraction","displayFraction","n","d","labelTick","textWidth","textHeight","textX","textY","xText","Number","toFixed","s","default","createElement","Fragment","dy","opacity","transform","y1","y2","x1","x2","ref","textAnchor","_defineProperty2","number","bool","func","string","Ticks","domain","ticks","context","tickData","buildTickData","map","key","min","max","_default"],"sources":["../../../src/number-line/graph/ticks.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { buildTickData } from './tick-utils';\nimport { color } from '@pie-lib/render-ui';\n\nconst StyledText = styled('text')({\n userSelect: 'none',\n textAlign: 'center',\n fill: color.primary(),\n});\n\nconst StyledLine = styled('line')({\n stroke: color.primary(),\n});\n\nexport const TickValidator = PropTypes.shape({\n /** the number of major ticks (including min + max)\n * to display. cant be lower than 2.\n */\n major: (props, propName) => {},\n /** the number of minor ticks to display between major ticks.\n * Can't be less than zero.\n */\n minor: (props, propName, componentName) => {\n let minor = props[propName];\n if (minor <= 0) {\n return new Error(`Invalid prop ${propName} must be > 0. ${componentName}`);\n }\n },\n}).isRequired;\n\nexport class Tick extends React.Component {\n static propTypes = {\n y: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n major: PropTypes.bool,\n fraction: PropTypes.bool,\n xScale: PropTypes.func,\n type: PropTypes.string,\n };\n\n static defaultProps = {\n major: false,\n };\n\n constructor(props) {\n super(props);\n this.wasRendered = false;\n this.state = {\n textBox: {\n width: 0,\n height: 0,\n x: 0,\n y: 0,\n },\n };\n this.resizeObserver = null;\n }\n\n updateTextBox() {\n if (this.text) {\n const { width, height, x, y } = this.text.getBBox();\n this.text.setAttribute('x', (width / 2) * -1);\n this.setState({ textBox: { width, height, x, y } });\n }\n }\n\n componentDidMount() {\n // Set up ResizeObserver\n this.resizeObserver = new ResizeObserver(() => {\n this.updateTextBox();\n });\n\n if (this.text) {\n this.resizeObserver.observe(this.text);\n }\n }\n\n componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n //the domain value\n let { x, y, type, xScale, fraction } = this.props;\n const displayFraction = fraction && x.n !== x.d && x.n !== 0 && x.d !== 1;\n const labelTick = type === 'major';\n const height = labelTick ? 20 : 10;\n const { width: textWidth = 0, height: textHeight = 0, x: textX = 0, y: textY = 0 } = this.state.textBox;\n\n const xText = !fraction ? (\n Number(x.toFixed(3))\n ) : !displayFraction ? (\n x.n * x.s\n ) : (\n <React.Fragment>\n <tspan x=\"0\" dy=\"0.71em\">\n {x.n * x.s}\n </tspan>\n <tspan x=\"0\" dy=\"1.11em\">\n {x.d}\n </tspan>\n </React.Fragment>\n );\n\n return (\n <g opacity=\"1\" transform={`translate(${xScale(x)}, ${y})`}>\n <StyledLine y1={(height / 2) * -1} y2={height / 2} x1=\"0.5\" x2=\"0.5\" />\n\n {displayFraction && (\n <StyledLine\n x1={textX}\n x2={textX + textWidth}\n y1={textY + textHeight / 2}\n y2={textY + textHeight / 2}\n />\n )}\n\n {labelTick && (\n <StyledText\n ref={(text) => (this.text = text)}\n y=\"14\"\n width=\"10\"\n dy=\"0.71em\"\n textAnchor={displayFraction && 'middle'}\n >\n {xText}\n </StyledText>\n )}\n </g>\n );\n }\n}\n\nexport class Ticks extends React.Component {\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n };\n\n static propTypes = {\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n }).isRequired,\n fraction: PropTypes.bool,\n width: PropTypes.number,\n ticks: TickValidator,\n y: PropTypes.number.isRequired,\n };\n\n render() {\n let { domain, width, ticks, y, fraction } = this.props;\n let { xScale } = this.context;\n\n const tickData = buildTickData(domain, width, ticks, { fraction });\n\n return (\n <g>\n {tickData.map(({ x, type }) => {\n return (\n <Tick\n fraction={fraction}\n x={x}\n y={y}\n type={type}\n xScale={xScale}\n key={`${x}-${type}-${fraction}`}\n />\n );\n })}\n </g>\n );\n }\n}\n\nexport default Ticks;\n"],"mappings":"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","ignoreList":[]}