@pie-element/number-line 13.1.1 → 13.1.2-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure.js +2 -0
- package/controller.js +1 -0
- package/dist/_virtual/_rolldown/runtime.js +11 -0
- package/dist/author/arrows.d.ts +28 -0
- package/dist/author/arrows.js +69 -0
- package/dist/author/card-bar.d.ts +20 -0
- package/dist/author/card-bar.js +41 -0
- package/dist/author/defaults.d.ts +178 -0
- package/dist/author/defaults.js +144 -0
- package/dist/author/domain.d.ts +15 -0
- package/dist/author/domain.js +54 -0
- package/dist/author/index.d.ts +23 -0
- package/dist/author/index.js +89 -0
- package/dist/author/main.d.ts +44 -0
- package/dist/author/main.js +485 -0
- package/dist/author/number-text-field.d.ts +13 -0
- package/dist/author/number-text-field.js +13 -0
- package/dist/author/point-config.d.ts +25 -0
- package/dist/author/point-config.js +69 -0
- package/dist/author/size.d.ts +24 -0
- package/dist/author/size.js +48 -0
- package/dist/author/ticks.d.ts +22 -0
- package/dist/author/ticks.js +115 -0
- package/dist/author/utils.d.ts +9 -0
- package/dist/author/utils.js +4 -0
- package/dist/browser/author/index.js +40259 -0
- package/dist/browser/author/index.js.map +1 -0
- package/dist/browser/controller/index.js +569 -0
- package/dist/browser/controller/index.js.map +1 -0
- package/dist/browser/delivery/index.js +2 -0
- package/dist/browser/delivery-Ci_kZyOM.js +17903 -0
- package/dist/browser/delivery-Ci_kZyOM.js.map +1 -0
- package/dist/browser/dist-D5T-OaLo.js +19038 -0
- package/dist/browser/dist-D5T-OaLo.js.map +1 -0
- package/dist/browser/impureFunctionsAny.generated-Bqfato71.js +10162 -0
- package/dist/browser/impureFunctionsAny.generated-Bqfato71.js.map +1 -0
- package/dist/browser/number-line.css +2 -0
- package/dist/controller/defaults.d.ts +58 -0
- package/dist/controller/defaults.js +50 -0
- package/dist/controller/index.d.ts +47 -0
- package/dist/controller/index.js +165 -0
- package/dist/controller/tickUtils.d.ts +21 -0
- package/dist/controller/tickUtils.js +252 -0
- package/dist/controller/utils.d.ts +9 -0
- package/dist/controller/utils.js +68 -0
- package/dist/delivery/data-converter.d.ts +64 -0
- package/dist/delivery/data-converter.js +70 -0
- package/dist/delivery/draggable/index.d.ts +33 -0
- package/dist/delivery/draggable/index.js +39 -0
- package/dist/delivery/index.d.ts +35 -0
- package/dist/delivery/index.js +109 -0
- package/dist/delivery/number-line/colors.d.ts +11 -0
- package/dist/delivery/number-line/colors.js +5 -0
- package/dist/delivery/number-line/feedback.d.ts +19 -0
- package/dist/delivery/number-line/feedback.js +57 -0
- package/dist/delivery/number-line/graph/arrow.d.ts +30 -0
- package/dist/delivery/number-line/graph/arrow.js +27 -0
- package/dist/delivery/number-line/graph/elements/base.d.ts +16 -0
- package/dist/delivery/number-line/graph/elements/base.js +11 -0
- package/dist/delivery/number-line/graph/elements/builder.d.ts +33 -0
- package/dist/delivery/number-line/graph/elements/builder.js +30 -0
- package/dist/delivery/number-line/graph/elements/line.d.ts +51 -0
- package/dist/delivery/number-line/graph/elements/line.js +188 -0
- package/dist/delivery/number-line/graph/elements/point.d.ts +43 -0
- package/dist/delivery/number-line/graph/elements/point.js +127 -0
- package/dist/delivery/number-line/graph/elements/ray.d.ts +43 -0
- package/dist/delivery/number-line/graph/elements/ray.js +130 -0
- package/dist/delivery/number-line/graph/index.d.ts +59 -0
- package/dist/delivery/number-line/graph/index.js +196 -0
- package/dist/delivery/number-line/graph/line.d.ts +46 -0
- package/dist/delivery/number-line/graph/line.js +27 -0
- package/dist/delivery/number-line/graph/stacks.d.ts +10 -0
- package/dist/delivery/number-line/graph/stacks.js +40 -0
- package/dist/delivery/number-line/graph/tick-utils.d.ts +80 -0
- package/dist/delivery/number-line/graph/tick-utils.js +295 -0
- package/dist/delivery/number-line/graph/ticks.d.ts +46 -0
- package/dist/delivery/number-line/graph/ticks.js +115 -0
- package/dist/delivery/number-line/index.d.ts +35 -0
- package/dist/delivery/number-line/index.js +215 -0
- package/dist/delivery/number-line/point-chooser/button.d.ts +31 -0
- package/dist/delivery/number-line/point-chooser/button.js +36 -0
- package/dist/delivery/number-line/point-chooser/img.d.ts +10 -0
- package/dist/delivery/number-line/point-chooser/img.js +4 -0
- package/dist/delivery/number-line/point-chooser/index.d.ts +37 -0
- package/dist/delivery/number-line/point-chooser/index.js +154 -0
- package/dist/delivery/number-line/point-chooser/styles.d.ts +192 -0
- package/dist/delivery/number-line/transitions/fade.d.ts +34 -0
- package/dist/delivery/number-line/transitions/fade.js +75 -0
- package/dist/delivery/number-line/transitions/index.d.ts +10 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.iife.d.ts +8 -0
- package/dist/index.iife.js +197 -0
- package/dist/index.js +2 -0
- package/dist/runtime-support.d.ts +12 -0
- package/dist/runtime-support.js +12 -0
- package/package.json +87 -21
- package/CHANGELOG.json +0 -1247
- package/CHANGELOG.md +0 -2435
- package/LICENSE.md +0 -5
- package/README.md +0 -28
- package/configure/CHANGELOG.json +0 -827
- package/configure/CHANGELOG.md +0 -2082
- package/configure/lib/arrows.js +0 -89
- package/configure/lib/arrows.js.map +0 -1
- package/configure/lib/card-bar.js +0 -57
- package/configure/lib/card-bar.js.map +0 -1
- package/configure/lib/defaults.js +0 -177
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/domain.js +0 -87
- package/configure/lib/domain.js.map +0 -1
- package/configure/lib/index.js +0 -176
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/main.js +0 -815
- package/configure/lib/main.js.map +0 -1
- package/configure/lib/number-text-field.js +0 -26
- package/configure/lib/number-text-field.js.map +0 -1
- package/configure/lib/point-config.js +0 -84
- package/configure/lib/point-config.js.map +0 -1
- package/configure/lib/size.js +0 -66
- package/configure/lib/size.js.map +0 -1
- package/configure/lib/ticks.js +0 -234
- package/configure/lib/ticks.js.map +0 -1
- package/configure/lib/utils.js +0 -12
- package/configure/lib/utils.js.map +0 -1
- package/configure/package.json +0 -20
- package/controller/CHANGELOG.json +0 -332
- package/controller/CHANGELOG.md +0 -1360
- package/controller/lib/defaults.js +0 -56
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -430
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/tickUtils.js +0 -294
- package/controller/lib/tickUtils.js.map +0 -1
- package/controller/lib/utils.js +0 -168
- package/controller/lib/utils.js.map +0 -1
- package/controller/package.json +0 -20
- package/demo.gif +0 -0
- package/docs/config-schema.json +0 -2532
- package/docs/config-schema.json.md +0 -1844
- package/docs/demo/config.js +0 -8
- package/docs/demo/generate.js +0 -39
- package/docs/demo/index.html +0 -1
- package/docs/pie-schema.json +0 -2461
- package/docs/pie-schema.json.md +0 -1228
- package/docs/schemas/config.json +0 -256
- package/lib/data-converter.js +0 -96
- package/lib/data-converter.js.map +0 -1
- package/lib/draggable/index.js +0 -114
- package/lib/draggable/index.js.map +0 -1
- package/lib/index.js +0 -196
- package/lib/index.js.map +0 -1
- package/lib/number-line/colors.js +0 -11
- package/lib/number-line/colors.js.map +0 -1
- package/lib/number-line/feedback.js +0 -92
- package/lib/number-line/feedback.js.map +0 -1
- package/lib/number-line/graph/arrow.js +0 -44
- package/lib/number-line/graph/arrow.js.map +0 -1
- package/lib/number-line/graph/elements/base.js +0 -20
- package/lib/number-line/graph/elements/base.js.map +0 -1
- package/lib/number-line/graph/elements/builder.js +0 -37
- package/lib/number-line/graph/elements/builder.js.map +0 -1
- package/lib/number-line/graph/elements/line.js +0 -259
- package/lib/number-line/graph/elements/line.js.map +0 -1
- package/lib/number-line/graph/elements/point.js +0 -204
- package/lib/number-line/graph/elements/point.js.map +0 -1
- package/lib/number-line/graph/elements/ray.js +0 -190
- package/lib/number-line/graph/elements/ray.js.map +0 -1
- package/lib/number-line/graph/index.js +0 -262
- package/lib/number-line/graph/index.js.map +0 -1
- package/lib/number-line/graph/line.js +0 -38
- package/lib/number-line/graph/line.js.map +0 -1
- package/lib/number-line/graph/stacks.js +0 -78
- package/lib/number-line/graph/stacks.js.map +0 -1
- package/lib/number-line/graph/tick-utils.js +0 -347
- package/lib/number-line/graph/tick-utils.js.map +0 -1
- package/lib/number-line/graph/ticks.js +0 -188
- package/lib/number-line/graph/ticks.js.map +0 -1
- package/lib/number-line/index.js +0 -384
- package/lib/number-line/index.js.map +0 -1
- package/lib/number-line/point-chooser/button.js +0 -49
- package/lib/number-line/point-chooser/button.js.map +0 -1
- package/lib/number-line/point-chooser/img.js +0 -8
- package/lib/number-line/point-chooser/img.js.map +0 -1
- package/lib/number-line/point-chooser/index.js +0 -197
- package/lib/number-line/point-chooser/index.js.map +0 -1
- package/lib/number-line/point-chooser/styles.js +0 -77
- package/lib/number-line/point-chooser/styles.js.map +0 -1
- package/lib/number-line/transitions/fade.js +0 -88
- package/lib/number-line/transitions/fade.js.map +0 -1
- package/lib/number-line/transitions/index.js +0 -14
- package/lib/number-line/transitions/index.js.map +0 -1
|
@@ -1,347 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|
|
@@ -1,188 +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.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
|
|
@@ -1 +0,0 @@
|
|
|
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":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAEA,MAAMK,UAAU,GAAG,IAAAC,cAAM,EAAC,MAAM,CAAC,CAAC;EAChCC,UAAU,EAAE,MAAM;EAClBC,SAAS,EAAE,QAAQ;EACnBC,IAAI,EAAEC,eAAK,CAACC,OAAO,CAAC;AACtB,CAAC,CAAC;AAEF,MAAMC,UAAU,GAAG,IAAAN,cAAM,EAAC,MAAM,CAAC,CAAC;EAChCO,MAAM,EAAEH,eAAK,CAACC,OAAO,CAAC;AACxB,CAAC,CAAC;AAEK,MAAMG,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGE,kBAAS,CAACC,KAAK,CAAC;EAC3C;AACF;AACA;EACEC,KAAK,EAAEA,CAACC,KAAK,EAAEC,QAAQ,KAAK,CAAC,CAAC;EAC9B;AACF;AACA;EACEC,KAAK,EAAEA,CAACF,KAAK,EAAEC,QAAQ,EAAEE,aAAa,KAAK;IACzC,IAAID,KAAK,GAAGF,KAAK,CAACC,QAAQ,CAAC;IAC3B,IAAIC,KAAK,IAAI,CAAC,EAAE;MACd,OAAO,IAAIE,KAAK,CAAC,gBAAgBH,QAAQ,iBAAiBE,aAAa,EAAE,CAAC;IAC5E;EACF;AACF,CAAC,CAAC,CAACE,UAAU;AAEN,MAAMC,IAAI,SAASC,cAAK,CAACC,SAAS,CAAC;EAcxCC,WAAWA,CAACT,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACU,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,KAAK,GAAG;MACXC,OAAO,EAAE;QACPC,KAAK,EAAE,CAAC;QACRC,MAAM,EAAE,CAAC;QACTC,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE;MACL;IACF,CAAC;IACD,IAAI,CAACC,cAAc,GAAG,IAAI;EAC5B;EAEAC,aAAaA,CAAA,EAAG;IACd,IAAI,IAAI,CAACC,IAAI,EAAE;MACb,MAAM;QAAEN,KAAK;QAAEC,MAAM;QAAEC,CAAC;QAAEC;MAAE,CAAC,GAAG,IAAI,CAACG,IAAI,CAACC,OAAO,CAAC,CAAC;MACnD,IAAI,CAACD,IAAI,CAACE,YAAY,CAAC,GAAG,EAAGR,KAAK,GAAG,CAAC,GAAI,CAAC,CAAC,CAAC;MAC7C,IAAI,CAACS,QAAQ,CAAC;QAAEV,OAAO,EAAE;UAAEC,KAAK;UAAEC,MAAM;UAAEC,CAAC;UAAEC;QAAE;MAAE,CAAC,CAAC;IACrD;EACF;EAEAO,iBAAiBA,CAAA,EAAG;IAClB;IACA,IAAI,CAACN,cAAc,GAAG,IAAIO,cAAc,CAAC,MAAM;MAC7C,IAAI,CAACN,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAI,IAAI,CAACC,IAAI,EAAE;MACb,IAAI,CAACF,cAAc,CAACQ,OAAO,CAAC,IAAI,CAACN,IAAI,CAAC;IACxC;EACF;EAEAO,oBAAoBA,CAAA,EAAG;IACrB,IAAI,IAAI,CAACT,cAAc,EAAE;MACvB,IAAI,CAACA,cAAc,CAACU,UAAU,CAAC,CAAC;IAClC;EACF;EAEAC,MAAMA,CAAA,EAAG;IACP;IACA,IAAI;MAAEb,CAAC;MAAEC,CAAC;MAAEa,IAAI;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAAC/B,KAAK;IACjD,MAAMgC,eAAe,GAAGD,QAAQ,IAAIhB,CAAC,CAACkB,CAAC,KAAKlB,CAAC,CAACmB,CAAC,IAAInB,CAAC,CAACkB,CAAC,KAAK,CAAC,IAAIlB,CAAC,CAACmB,CAAC,KAAK,CAAC;IACzE,MAAMC,SAAS,GAAGN,IAAI,KAAK,OAAO;IAClC,MAAMf,MAAM,GAAGqB,SAAS,GAAG,EAAE,GAAG,EAAE;IAClC,MAAM;MAAEtB,KAAK,EAAEuB,SAAS,GAAG,CAAC;MAAEtB,MAAM,EAAEuB,UAAU,GAAG,CAAC;MAAEtB,CAAC,EAAEuB,KAAK,GAAG,CAAC;MAAEtB,CAAC,EAAEuB,KAAK,GAAG;IAAE,CAAC,GAAG,IAAI,CAAC5B,KAAK,CAACC,OAAO;IAEvG,MAAM4B,KAAK,GAAG,CAACT,QAAQ,GACrBU,MAAM,CAAC1B,CAAC,CAAC2B,OAAO,CAAC,CAAC,CAAC,CAAC,GAClB,CAACV,eAAe,GAClBjB,CAAC,CAACkB,CAAC,GAAGlB,CAAC,CAAC4B,CAAC,gBAEThE,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAAClE,MAAA,CAAAiE,OAAK,CAACE,QAAQ,qBACbnE,MAAA,CAAAiE,OAAA,CAAAC,aAAA;MAAO9B,CAAC,EAAC,GAAG;MAACgC,EAAE,EAAC;IAAQ,GACrBhC,CAAC,CAACkB,CAAC,GAAGlB,CAAC,CAAC4B,CACJ,CAAC,eACRhE,MAAA,CAAAiE,OAAA,CAAAC,aAAA;MAAO9B,CAAC,EAAC,GAAG;MAACgC,EAAE,EAAC;IAAQ,GACrBhC,CAAC,CAACmB,CACE,CACO,CACjB;IAED,oBACEvD,MAAA,CAAAiE,OAAA,CAAAC,aAAA;MAAGG,OAAO,EAAC,GAAG;MAACC,SAAS,EAAE,aAAanB,MAAM,CAACf,CAAC,CAAC,KAAKC,CAAC;IAAI,gBACxDrC,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACpD,UAAU;MAACyD,EAAE,EAAGpC,MAAM,GAAG,CAAC,GAAI,CAAC,CAAE;MAACqC,EAAE,EAAErC,MAAM,GAAG,CAAE;MAACsC,EAAE,EAAC,KAAK;MAACC,EAAE,EAAC;IAAK,CAAE,CAAC,EAEtErB,eAAe,iBACdrD,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACpD,UAAU;MACT2D,EAAE,EAAEd,KAAM;MACVe,EAAE,EAAEf,KAAK,GAAGF,SAAU;MACtBc,EAAE,EAAEX,KAAK,GAAGF,UAAU,GAAG,CAAE;MAC3Bc,EAAE,EAAEZ,KAAK,GAAGF,UAAU,GAAG;IAAE,CAC5B,CACF,EAEAF,SAAS,iBACRxD,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAAC3D,UAAU;MACToE,GAAG,EAAGnC,IAAI,IAAM,IAAI,CAACA,IAAI,GAAGA,IAAM;MAClCH,CAAC,EAAC,IAAI;MACNH,KAAK,EAAC,IAAI;MACVkC,EAAE,EAAC,QAAQ;MACXQ,UAAU,EAAEvB,eAAe,IAAI;IAAS,GAEvCQ,KACS,CAEb,CAAC;EAER;AACF;AAAC5C,OAAA,CAAAU,IAAA,GAAAA,IAAA;AAAA,IAAAkD,gBAAA,CAAAZ,OAAA,EAvGYtC,IAAI,eACI;EACjBU,CAAC,EAAEnB,kBAAS,CAAC4D,MAAM,CAACpD,UAAU;EAC9BU,CAAC,EAAElB,kBAAS,CAAC4D,MAAM,CAACpD,UAAU;EAC9BN,KAAK,EAAEF,kBAAS,CAAC6D,IAAI;EACrB3B,QAAQ,EAAElC,kBAAS,CAAC6D,IAAI;EACxB5B,MAAM,EAAEjC,kBAAS,CAAC8D,IAAI;EACtB9B,IAAI,EAAEhC,kBAAS,CAAC+D;AAClB,CAAC;AAAA,IAAAJ,gBAAA,CAAAZ,OAAA,EARUtC,IAAI,kBAUO;EACpBP,KAAK,EAAE;AACT,CAAC;AA6FI,MAAM8D,KAAK,SAAStD,cAAK,CAACC,SAAS,CAAC;EAgBzCoB,MAAMA,CAAA,EAAG;IACP,IAAI;MAAEkC,MAAM;MAAEjD,KAAK;MAAEkD,KAAK;MAAE/C,CAAC;MAAEe;IAAS,CAAC,GAAG,IAAI,CAAC/B,KAAK;IACtD,IAAI;MAAE8B;IAAO,CAAC,GAAG,IAAI,CAACkC,OAAO;IAE7B,MAAMC,QAAQ,GAAG,IAAAC,wBAAa,EAACJ,MAAM,EAAEjD,KAAK,EAAEkD,KAAK,EAAE;MAAEhC;IAAS,CAAC,CAAC;IAElE,oBACEpD,MAAA,CAAAiE,OAAA,CAAAC,aAAA,YACGoB,QAAQ,CAACE,GAAG,CAAC,CAAC;MAAEpD,CAAC;MAAEc;IAAK,CAAC,KAAK;MAC7B,oBACElD,MAAA,CAAAiE,OAAA,CAAAC,aAAA,CAACvC,IAAI;QACHyB,QAAQ,EAAEA,QAAS;QACnBhB,CAAC,EAAEA,CAAE;QACLC,CAAC,EAAEA,CAAE;QACLa,IAAI,EAAEA,IAAK;QACXC,MAAM,EAAEA,MAAO;QACfsC,GAAG,EAAE,GAAGrD,CAAC,IAAIc,IAAI,IAAIE,QAAQ;MAAG,CACjC,CAAC;IAEN,CAAC,CACA,CAAC;EAER;AACF;AAACnC,OAAA,CAAAiE,KAAA,GAAAA,KAAA;AAAA,IAAAL,gBAAA,CAAAZ,OAAA,EAvCYiB,KAAK,kBACM;EACpB/B,MAAM,EAAEjC,kBAAS,CAAC8D,IAAI,CAACtD;AACzB,CAAC;AAAA,IAAAmD,gBAAA,CAAAZ,OAAA,EAHUiB,KAAK,eAKG;EACjBC,MAAM,EAAEjE,kBAAS,CAACC,KAAK,CAAC;IACtBuE,GAAG,EAAExE,kBAAS,CAAC4D,MAAM,CAACpD,UAAU;IAChCiE,GAAG,EAAEzE,kBAAS,CAAC4D,MAAM,CAACpD;EACxB,CAAC,CAAC,CAACA,UAAU;EACb0B,QAAQ,EAAElC,kBAAS,CAAC6D,IAAI;EACxB7C,KAAK,EAAEhB,kBAAS,CAAC4D,MAAM;EACvBM,KAAK,EAAEpE,aAAa;EACpBqB,CAAC,EAAEnB,kBAAS,CAAC4D,MAAM,CAACpD;AACtB,CAAC;AAAA,IAAAkE,QAAA,GAAA3E,OAAA,CAAAgD,OAAA,GA2BYiB,KAAK","ignoreList":[]}
|