@pie-element/number-line 12.0.0-beta.1 → 12.0.0-next.42

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.
@@ -1,297 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getMinorLimits = exports.generateMinorValues = exports.generateMajorValuesForMinor = void 0;
8
- var math = _interopRequireWildcard(require("mathjs"));
9
- var _uniqWith = _interopRequireDefault(require("lodash/uniqWith"));
10
- var _isObject = _interopRequireDefault(require("lodash/isObject"));
11
- var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
12
- 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); }
13
- // All these functions are duplicated in src/number-line/graph/tick-utils
14
-
15
- /*This will store the possible decimal tick values*/
16
- const decimalTickValues = [0.001, 0.01, 0.02, 0.04, 0.05, 0.1, 0.125, 0.2, 0.25, 0.5];
17
-
18
- /*This will store the possible fraction tick values*/
19
- const 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'];
20
-
21
- /*This const will store possible multiplier for label interval that needs to be multiplied
22
- with tick interval with denominator represented with object key.*/
23
- const labelMultiplier = {
24
- 1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
25
- 2: [1, 2, 4, 6, 8, 10],
26
- 3: [1, 3, 6, 9],
27
- 4: [1, 2, 4, 8],
28
- 5: [1, 5, 10],
29
- 6: [1, 2, 3, 6],
30
- 7: [1, 7],
31
- 8: [1, 2, 4, 8],
32
- 9: [1, 3, 9],
33
- 10: [1, 2, 5, 10],
34
- 12: [1, 2, 3, 4, 6],
35
- 15: [1, 3, 5],
36
- 16: [1, 2, 4, 8],
37
- 20: [1, 2, 4, 5, 10],
38
- 25: [1, 5],
39
- 32: [1, 2, 4, 8],
40
- 50: [1, 2, 5, 10],
41
- 64: [1, 2, 4, 8],
42
- 100: [1, 2, 4, 5, 10],
43
- 1000: [1, 2, 4, 5, 8, 10]
44
- };
45
- const fractionRange = (start, end, interval) => {
46
- const m = math.mod(math.abs(start), math.abs(interval));
47
- if (!math.equal(m, 0)) {
48
- throw new Error('start point must be divisible by interval');
49
- }
50
- if (math.equal(start, end)) {
51
- return [];
52
- }
53
- const e = math.subtract(end, math.mod(end, math.abs(interval)));
54
- const direction = math.larger(interval, 0) ? 'positive' : 'negative';
55
- if (direction === 'negative' && math.largerEq(end, start)) {
56
- throw new Error('start must be > than end when doing a negative decrement');
57
- }
58
- if (direction === 'positive' && math.smallerEq(end, start)) {
59
- throw new Error('start must be < end when doing increments');
60
- }
61
- const compareFn = direction === 'positive' ? math.smallerEq : math.equal(e, end) ? math.largerEq : math.larger;
62
- const out = [];
63
- let next = start;
64
- while (compareFn(next, e)) {
65
- out.push(next);
66
- next = math.add(next, interval);
67
- }
68
- return out;
69
- };
70
- const zbrErrorMessage = (start, end) => `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;
71
- const zeroBasedRange = (start, end, interval) => {
72
- start = math.fraction(start);
73
- end = math.fraction(end);
74
- interval = math.fraction(interval);
75
- const length = math.abs(math.subtract(end, start));
76
- if (math.larger(length, math.abs(end))) {
77
- throw new Error(zbrErrorMessage(start, end));
78
- }
79
- const a = {
80
- start: math.abs(start),
81
- end: math.abs(end),
82
- interval: math.abs(interval),
83
- multiplier: math.smaller(interval, 0) ? -1 : 1
84
- };
85
- const m = math.mod(a.start, a.interval);
86
- const s = math.larger(m, 0) ? math.add(math.subtract(a.start, m), a.interval) : a.start;
87
- const r = fractionRange(s, a.end, a.interval);
88
- const out = a.multiplier === -1 ? r.map(v => math.multiply(v, -1)) : r;
89
- if (math.smaller(interval, 0)) {
90
- out.reverse();
91
- }
92
- return out;
93
- };
94
- const fmin = (a, b) => {
95
- a = math.fraction(a);
96
- b = math.fraction(b);
97
- return math.smaller(a, b) ? a : b;
98
- };
99
- const fmax = (a, b) => {
100
- a = math.fraction(a);
101
- b = math.fraction(b);
102
- return math.larger(a, b) ? a : b;
103
- };
104
- /**
105
- * the lodash range was causing too much variance in the rounding errors
106
- * such that it was hard to round the numbers.
107
- * This is a more simplistic version but makes rounding work.
108
- */
109
- const simpleRange = (start, end, interval) => {
110
- start = math.fraction(start);
111
- end = math.fraction(end);
112
- interval = math.fraction(interval);
113
- const positiveRange = math.larger(end, 0) ? zeroBasedRange(fmax(0, start), end, interval) : [];
114
- const negativeRange = math.smaller(start, 0) ? zeroBasedRange(fmin(0, end), start, math.multiply(interval, -1)) : [];
115
- let together = negativeRange.concat(positiveRange);
116
- const out = (0, _uniqWith.default)(together, math.equal);
117
- return out;
118
- };
119
- const closeTo = (a, b, precision) => {
120
- precision = precision || 2;
121
- const expectedDiff = Math.pow(10, -precision) / 2;
122
- const receivedDiff = Math.abs(a - b);
123
- return receivedDiff < expectedDiff;
124
- };
125
- const limit = (v, min, max) => {
126
- if (math.smaller(fraction(v), fraction(min))) {
127
- return min;
128
- }
129
- if (math.larger(fraction(v), fraction(max))) {
130
- return max;
131
- }
132
- return v;
133
- };
134
-
135
- /*
136
- * Function to get tick interval limits based on min, max and width entered by the user.
137
- * @param domain object containing max and min value.
138
- * @param width number represents width of number line.
139
- * */
140
- const getMinorLimits = (domain, width) => {
141
- const end = domain.max - domain.min;
142
- const min = math.number(math.multiply(10, math.divide(math.fraction(end), width)));
143
- const max = math.number(math.multiply(20, min));
144
- return {
145
- min: min,
146
- max: max
147
- };
148
- };
149
- exports.getMinorLimits = getMinorLimits;
150
- const isMultiple = (multiple, src) => {
151
- const mod = math.mod(multiple, src);
152
- return math.equal(mod, 0);
153
- };
154
-
155
- /**
156
- * Accepts a fraction object {n,d,s} or number.
157
- * @param {*} v
158
- * @return mathjs.fraction
159
- */
160
- const fraction = v => {
161
- if ((0, _isObject.default)(v)) {
162
- return math.fraction(v.n * v.s, v.d);
163
- } else if ((0, _isNumber.default)(v)) {
164
- return math.fraction(v);
165
- }
166
- };
167
- const normalizeTicks = (domain, width, ticks, opts) => {
168
- const useLimit = opts ? opts.limit !== false : true;
169
- const minorLimits = getMinorLimits(domain, width);
170
- const minor = useLimit ? limit(fraction(ticks.minor), minorLimits.min, minorLimits.max) : fraction(ticks.minor);
171
- const major = useLimit ? limit(fraction(ticks.major), minor, math.multiply(minor, 20)) : fraction(ticks.major);
172
- const isMajorMultiple = isMultiple(major, minor);
173
- if (!isMajorMultiple) {
174
- const multiplier = math.divide(major, minor);
175
- const multiplyBy = multiplier <= 2 ? 2 : Math.round(multiplier);
176
-
177
- // major must be a multiple of minor
178
- return {
179
- minor,
180
- major: math.multiply(minor, multiplyBy)
181
- };
182
- }
183
- return {
184
- major,
185
- minor
186
- };
187
- };
188
-
189
- /**
190
- * Build ticks as an array of mathjs Fractions
191
- */
192
- const buildTickDataAsFractions = (domain, width, ticks, opts) => {
193
- ticks = normalizeTicks(domain, width, ticks, opts);
194
- const rng = simpleRange(domain.min, domain.max, ticks.minor);
195
- const o = rng.filter(x => math.smallerEq(x, math.fraction(domain.max))).map(x => {
196
- let type = 'minor';
197
- const modulo = math.mod(x, ticks.major);
198
- if (closeTo(math.number(modulo), 0)) {
199
- type = 'major';
200
- }
201
- return {
202
- x,
203
- type
204
- };
205
- });
206
- return o;
207
- };
208
-
209
- /*
210
- * This function will generate tick interval values based on min and max limits of ticks.
211
- * @param minorLimits object containing min and max values
212
- * @return out object containing three arrays 1. fraction values, 2. decimal values,
213
- * */
214
- const generateMinorValues = minorLimits => {
215
- let out = {
216
- fraction: [],
217
- decimal: []
218
- };
219
- decimalTickValues.forEach(value => {
220
- if (value >= minorLimits.min && value <= minorLimits.max) {
221
- out.decimal.push(value);
222
- }
223
- });
224
- fractionTickValues.forEach(value => {
225
- let decimalValue = math.number(math.fraction(value));
226
- if (decimalValue >= minorLimits.min && decimalValue <= minorLimits.max) {
227
- out.fraction.push(value);
228
- }
229
- });
230
- return out;
231
- };
232
-
233
- /*
234
- * This function will generate label interval values for provided tick interval value.
235
- * @param minor number representing tick interval value.
236
- * @param domain object containing min and max values.
237
- * @param width number representing width of number line.
238
- * @return out object containing three arrays 1. fraction values, 2. decimal values,
239
- * */
240
- exports.generateMinorValues = generateMinorValues;
241
- const generateMajorValuesForMinor = (minor, domain, width) => {
242
- let out = {
243
- decimal: [],
244
- fraction: []
245
- };
246
- let fraction = math.fraction(math.number(math.number(minor)));
247
- let n = fraction.n;
248
- let d = fraction.d;
249
- if (n >= 1 && d === 1) {
250
- for (let i = 1; i <= 10; i++) {
251
- let num = math.number(math.multiply(n, i));
252
- //Here we check if this major value can plot at least 2 points on number line.
253
- let ticksData = {
254
- minor: minor,
255
- major: num
256
- };
257
- let output = buildTickData(domain, width, ticksData, {
258
- fraction: undefined
259
- });
260
- if (output.filter(x => x.type === 'major').length > 1) {
261
- out.fraction.push(num.toString());
262
- out.decimal.push(num);
263
- }
264
- }
265
- } else {
266
- for (const multiplierKey in labelMultiplier[d]) {
267
- let num = math.multiply(math.fraction(n, d), labelMultiplier[d][multiplierKey]);
268
- //Here we check if this major value can plot at least 2 points on number line.
269
- let ticksData = {
270
- minor: minor,
271
- major: math.number(num)
272
- };
273
- let output = buildTickData(domain, width, ticksData, {
274
- fraction: undefined
275
- });
276
- if (output.filter(x => x.type === 'major').length > 1) {
277
- if (num.d !== 1) {
278
- out.fraction.push(num.n + '/' + num.d);
279
- } else {
280
- out.fraction.push(num.n.toString());
281
- }
282
- out.decimal.push(math.number(num));
283
- }
284
- }
285
- }
286
- return out;
287
- };
288
- exports.generateMajorValuesForMinor = generateMajorValuesForMinor;
289
- const buildTickData = (domain, width, ticks, opts) => {
290
- const result = buildTickDataAsFractions(domain, width, ticks, opts);
291
- const out = result.map(o => opts.fraction ? o : {
292
- ...o,
293
- x: math.number(o.x) || 0
294
- });
295
- return out;
296
- };
297
- //# sourceMappingURL=tickUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tickUtils.js","names":["math","_interopRequireWildcard","require","_uniqWith","_interopRequireDefault","_isObject","_isNumber","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","decimalTickValues","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","exports","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"],"sources":["../src/tickUtils.js"],"sourcesContent":["import * as math from 'mathjs';\nimport uniqWith from 'lodash/uniqWith';\nimport isObject from 'lodash/isObject';\nimport isNumber from 'lodash/isNumber';\n\n// All these functions are duplicated in src/number-line/graph/tick-utils\n\n/*This will store the possible decimal tick values*/\nconst 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*/\nconst 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.*/\nconst 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\nconst 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 const compareFn = direction === 'positive' ? math.smallerEq : math.equal(e, end) ? math.largerEq : math.larger;\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\nconst zbrErrorMessage = (start, end) =>\n `Can only do a positive or negative range, but got: start: ${start} and end:${end}`;\n\nconst 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 */\nconst 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\nconst 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\nconst 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 */\nconst 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\nconst 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 */\nconst 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\nconst 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"],"mappings":"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","ignoreList":[]}
@@ -1,168 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.reloadTicksData = void 0;
7
- var math = _interopRequireWildcard(require("mathjs"));
8
- var _tickUtils = require("./tickUtils");
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
- /*
11
- * This function is duplicated in configure/main.js
12
- * This function will update major value whenever minor value is changed or tick type is changed
13
- * @param graph object containing domain, ticks and width value
14
- * @return graph object with updated ticks values
15
- * */
16
- const updateMajorValue = graph => {
17
- const {
18
- domain,
19
- ticks,
20
- width
21
- } = graph;
22
- const majorValues = (0, _tickUtils.generateMajorValuesForMinor)(ticks.minor, domain, width);
23
- if (majorValues.decimal.indexOf(ticks.major) === -1) {
24
- let currIndex = 0;
25
- if (ticks.tickIntervalType === 'Integer') {
26
- currIndex = majorValues.decimal.length > 4 ? 4 : majorValues.decimal.length - 1;
27
- } else {
28
- currIndex = majorValues.decimal.length - 1;
29
- }
30
- ticks.major = majorValues.decimal[currIndex];
31
- }
32
- graph.fraction = ticks.tickIntervalType === 'Fraction' && ticks.major < 1;
33
- return {
34
- ...graph,
35
- ticks
36
- };
37
- };
38
-
39
- /*
40
- * This function is duplicated in configure/main.js
41
- * This function will reload ticks data whenever graph object is changed and also sets required tick object
42
- * for rendering Ticks Components.
43
- * @param graph object containing domain, ticks and width value
44
- * @return graph object with updated ticks values
45
- * */
46
-
47
- const reloadTicksData = graph => {
48
- const {
49
- domain,
50
- ticks = {},
51
- width
52
- } = graph;
53
- //Set tick interval type if not present for legacy number line models depending upon minor value
54
- if (!ticks.tickIntervalType) {
55
- if (ticks.minor > 0.5) {
56
- ticks.tickIntervalType = 'Integer';
57
- } else {
58
- ticks.tickIntervalType = 'Decimal';
59
- }
60
- }
61
- // This section will calculate minor and major values array and assign respective value
62
- // to different tick types object
63
- const minorLimits = (0, _tickUtils.getMinorLimits)(domain, width);
64
- if (minorLimits.min >= 1) {
65
- /*
66
- * In this scenario only integer tick will be enabled
67
- * */
68
- ticks.tickIntervalType = 'Integer';
69
- ticks.minor = ticks.minor < 1 ? math.number(math.ceil(minorLimits.min)) : ticks.minor >= math.number(math.ceil(minorLimits.min)) && ticks.minor <= math.number(math.floor(minorLimits.max)) ? ticks.minor : math.number(math.ceil(minorLimits.min));
70
- ticks.integerTick = ticks.minor;
71
- const minorValues = {
72
- decimal: [],
73
- fraction: []
74
- };
75
- ticks.fractionTick = '0';
76
- ticks.decimalTick = 0;
77
- } else if (minorLimits.min >= 0 && minorLimits.max < 1) {
78
- /*
79
- * In this scenario only decimal or fraction tick will be enabled
80
- * */
81
- if (ticks.tickIntervalType === 'Integer') {
82
- ticks.tickIntervalType = 'Fraction';
83
- }
84
- const minorValues = (0, _tickUtils.generateMinorValues)(minorLimits);
85
- let minValue = math.number(math.fraction(minorValues.fraction[0]));
86
- let maxValue = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));
87
- if (ticks.minor < minValue || ticks.minor > maxValue) {
88
- switch (ticks.tickIntervalType) {
89
- case 'Fraction':
90
- ticks.minor = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));
91
- ticks.fractionTick = minorValues.fraction[minorValues.fraction.length - 1];
92
- ticks.decimalTick = minorValues.decimal[0];
93
- break;
94
- case 'Decimal':
95
- case 'Integer':
96
- ticks.minor = minorValues.decimal[minorValues.decimal.length - 1];
97
- ticks.decimalTick = minorValues.decimal[minorValues.decimal.length - 1];
98
- ticks.fractionTick = minorValues.fraction[0];
99
- }
100
- } else {
101
- switch (ticks.tickIntervalType) {
102
- case 'Fraction':
103
- let fraction = math.fraction(math.number(ticks.minor));
104
- ticks.fractionTick = fraction.n + '/' + fraction.d;
105
- ticks.decimalTick = ticks.decimalTick ? ticks.decimalTick : minorValues.decimal[0];
106
- break;
107
- case 'Decimal':
108
- case 'Integer':
109
- ticks.decimalTick = ticks.minor;
110
- ticks.fractionTick = ticks.fractionTick ? ticks.fractionTick : minorValues.fraction[0];
111
- }
112
- }
113
- ticks.integerTick = 1;
114
- } else if (minorLimits.min < 1 && minorLimits.max >= 1) {
115
- /*
116
- * In this scenario all integer, decimal or fraction tick will be enabled
117
- * */
118
- const minorValues = (0, _tickUtils.generateMinorValues)(minorLimits);
119
- if (!(ticks.minor >= minorLimits.min && ticks.minor <= minorLimits.max)) {
120
- if (minorLimits.min > 0.5) {
121
- ticks.tickIntervalType = 'Integer';
122
- }
123
- switch (ticks.tickIntervalType) {
124
- case 'Integer':
125
- ticks.minor = math.number(math.ceil(minorLimits.min));
126
- ticks.integerTick = ticks.minor;
127
- ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];
128
- ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];
129
- break;
130
- case 'Decimal':
131
- ticks.minor = minorValues.decimal[0];
132
- ticks.integerTick = 1;
133
- ticks.decimalTick = ticks.minor;
134
- ticks.fractionTick = minorValues.fraction[0];
135
- break;
136
- case 'Fraction':
137
- ticks.minor = math.number(math.fraction(minorValues.fraction[0]));
138
- ticks.integerTick = 1;
139
- ticks.decimalTick = minorValues.decimal[0];
140
- ticks.fractionTick = minorValues.fraction[0];
141
- }
142
- } else {
143
- switch (ticks.tickIntervalType) {
144
- case 'Integer':
145
- ticks.integerTick = ticks.minor;
146
- ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];
147
- ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];
148
- break;
149
- case 'Decimal':
150
- ticks.integerTick = 1;
151
- ticks.decimalTick = ticks.minor;
152
- ticks.fractionTick = minorValues.fraction[0];
153
- break;
154
- case 'Fraction':
155
- ticks.integerTick = 1;
156
- ticks.decimalTick = minorValues.decimal[0];
157
- let fraction = math.fraction(math.number(ticks.minor));
158
- ticks.fractionTick = fraction.n + '/' + fraction.d;
159
- }
160
- }
161
- }
162
- return updateMajorValue({
163
- ...graph,
164
- ticks
165
- });
166
- };
167
- exports.reloadTicksData = reloadTicksData;
168
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["math","_interopRequireWildcard","require","_tickUtils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","updateMajorValue","graph","domain","ticks","width","majorValues","generateMajorValuesForMinor","minor","decimal","indexOf","major","currIndex","tickIntervalType","length","fraction","reloadTicksData","minorLimits","getMinorLimits","min","number","ceil","floor","max","integerTick","minorValues","fractionTick","decimalTick","generateMinorValues","minValue","maxValue","d","exports"],"sources":["../src/utils.js"],"sourcesContent":["import * as math from 'mathjs';\nimport { generateMajorValuesForMinor, generateMinorValues, getMinorLimits } from './tickUtils';\n\n/*\n * This function is duplicated in configure/main.js\n * This function will update major value whenever minor value is changed or tick type is changed\n * @param graph object containing domain, ticks and width value\n * @return graph object with updated ticks values\n * */\nconst updateMajorValue = (graph) => {\n const { domain, ticks, width } = graph;\n const majorValues = generateMajorValuesForMinor(ticks.minor, domain, width);\n if (majorValues.decimal.indexOf(ticks.major) === -1) {\n let currIndex = 0;\n if (ticks.tickIntervalType === 'Integer') {\n currIndex = majorValues.decimal.length > 4 ? 4 : majorValues.decimal.length - 1;\n } else {\n currIndex = majorValues.decimal.length - 1;\n }\n ticks.major = majorValues.decimal[currIndex];\n }\n graph.fraction = ticks.tickIntervalType === 'Fraction' && ticks.major < 1;\n return { ...graph, ticks };\n};\n\n/*\n * This function is duplicated in configure/main.js\n * This function will reload ticks data whenever graph object is changed and also sets required tick object\n * for rendering Ticks Components.\n * @param graph object containing domain, ticks and width value\n * @return graph object with updated ticks values\n * */\n\nexport const reloadTicksData = (graph) => {\n const { domain, ticks = {}, width } = graph;\n //Set tick interval type if not present for legacy number line models depending upon minor value\n if (!ticks.tickIntervalType) {\n if (ticks.minor > 0.5) {\n ticks.tickIntervalType = 'Integer';\n } else {\n ticks.tickIntervalType = 'Decimal';\n }\n }\n // This section will calculate minor and major values array and assign respective value\n // to different tick types object\n const minorLimits = getMinorLimits(domain, width);\n if (minorLimits.min >= 1) {\n /*\n * In this scenario only integer tick will be enabled\n * */\n ticks.tickIntervalType = 'Integer';\n ticks.minor =\n ticks.minor < 1\n ? math.number(math.ceil(minorLimits.min))\n : ticks.minor >= math.number(math.ceil(minorLimits.min)) &&\n ticks.minor <= math.number(math.floor(minorLimits.max))\n ? ticks.minor\n : math.number(math.ceil(minorLimits.min));\n ticks.integerTick = ticks.minor;\n const minorValues = { decimal: [], fraction: [] };\n ticks.fractionTick = '0';\n ticks.decimalTick = 0;\n } else if (minorLimits.min >= 0 && minorLimits.max < 1) {\n /*\n * In this scenario only decimal or fraction tick will be enabled\n * */\n if (ticks.tickIntervalType === 'Integer') {\n ticks.tickIntervalType = 'Fraction';\n }\n const minorValues = generateMinorValues(minorLimits);\n let minValue = math.number(math.fraction(minorValues.fraction[0]));\n let maxValue = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));\n if (ticks.minor < minValue || ticks.minor > maxValue) {\n switch (ticks.tickIntervalType) {\n case 'Fraction':\n ticks.minor = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));\n ticks.fractionTick = minorValues.fraction[minorValues.fraction.length - 1];\n ticks.decimalTick = minorValues.decimal[0];\n break;\n case 'Decimal':\n case 'Integer':\n ticks.minor = minorValues.decimal[minorValues.decimal.length - 1];\n ticks.decimalTick = minorValues.decimal[minorValues.decimal.length - 1];\n ticks.fractionTick = minorValues.fraction[0];\n }\n } else {\n switch (ticks.tickIntervalType) {\n case 'Fraction':\n let fraction = math.fraction(math.number(ticks.minor));\n ticks.fractionTick = fraction.n + '/' + fraction.d;\n ticks.decimalTick = ticks.decimalTick ? ticks.decimalTick : minorValues.decimal[0];\n break;\n case 'Decimal':\n case 'Integer':\n ticks.decimalTick = ticks.minor;\n ticks.fractionTick = ticks.fractionTick ? ticks.fractionTick : minorValues.fraction[0];\n }\n }\n ticks.integerTick = 1;\n } else if (minorLimits.min < 1 && minorLimits.max >= 1) {\n /*\n * In this scenario all integer, decimal or fraction tick will be enabled\n * */\n const minorValues = generateMinorValues(minorLimits);\n if (!(ticks.minor >= minorLimits.min && ticks.minor <= minorLimits.max)) {\n if (minorLimits.min > 0.5) {\n ticks.tickIntervalType = 'Integer';\n }\n switch (ticks.tickIntervalType) {\n case 'Integer':\n ticks.minor = math.number(math.ceil(minorLimits.min));\n ticks.integerTick = ticks.minor;\n ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];\n ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];\n break;\n case 'Decimal':\n ticks.minor = minorValues.decimal[0];\n ticks.integerTick = 1;\n ticks.decimalTick = ticks.minor;\n ticks.fractionTick = minorValues.fraction[0];\n break;\n case 'Fraction':\n ticks.minor = math.number(math.fraction(minorValues.fraction[0]));\n ticks.integerTick = 1;\n ticks.decimalTick = minorValues.decimal[0];\n ticks.fractionTick = minorValues.fraction[0];\n }\n } else {\n switch (ticks.tickIntervalType) {\n case 'Integer':\n ticks.integerTick = ticks.minor;\n ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];\n ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];\n break;\n case 'Decimal':\n ticks.integerTick = 1;\n ticks.decimalTick = ticks.minor;\n ticks.fractionTick = minorValues.fraction[0];\n break;\n case 'Fraction':\n ticks.integerTick = 1;\n ticks.decimalTick = minorValues.decimal[0];\n let fraction = math.fraction(math.number(ticks.minor));\n ticks.fractionTick = fraction.n + '/' + fraction.d;\n }\n }\n }\n return updateMajorValue({ ...graph, ticks });\n};\n"],"mappings":"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","ignoreList":[]}