@stemy/ngx-utils 12.1.6 → 12.2.0
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/bundles/stemy-ngx-utils.umd.js +31 -0
- package/bundles/stemy-ngx-utils.umd.js.map +1 -1
- package/esm2015/ngx-utils/utils/math.utils.js +30 -1
- package/fesm2015/stemy-ngx-utils.js +29 -0
- package/fesm2015/stemy-ngx-utils.js.map +1 -1
- package/ngx-utils/utils/math.utils.d.ts +2 -0
- package/package.json +1 -1
|
@@ -11,5 +11,34 @@ export class MathUtils {
|
|
|
11
11
|
precision = Math.pow(10, precision);
|
|
12
12
|
return Math.round(value * precision / divider) / precision;
|
|
13
13
|
}
|
|
14
|
+
static approxIndex(x, values, epsilon = null) {
|
|
15
|
+
if (!Array.isArray(values) || values.length == 0) {
|
|
16
|
+
return -1;
|
|
17
|
+
}
|
|
18
|
+
let s = 0;
|
|
19
|
+
let e = values.length - 1;
|
|
20
|
+
while (s <= e) {
|
|
21
|
+
const i = Math.floor((s + e) / 2);
|
|
22
|
+
const v = values[i];
|
|
23
|
+
if (MathUtils.equal(v, x, epsilon)) {
|
|
24
|
+
return i;
|
|
25
|
+
}
|
|
26
|
+
if (v < x) {
|
|
27
|
+
s = i + 1;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
e = i - 1;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const m = Math.max(e, 0);
|
|
34
|
+
const a = values[s];
|
|
35
|
+
const b = values[m];
|
|
36
|
+
return Math.abs(a - x) < Math.abs(b - x) ? s : m;
|
|
37
|
+
}
|
|
38
|
+
static approximate(x, values, epsilon = null) {
|
|
39
|
+
var _a;
|
|
40
|
+
const index = MathUtils.approxIndex(x, values, epsilon);
|
|
41
|
+
return (_a = values[index]) !== null && _a !== void 0 ? _a : null;
|
|
42
|
+
}
|
|
14
43
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvbWF0aC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsTUFBTSxPQUFPLFNBQVM7SUFFbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFVBQWtCLElBQUk7UUFDckQsT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxZQUFvQixDQUFDLEVBQUUsVUFBa0IsQ0FBQztRQUNsRSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7UUFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDYjtpQkFBTTtnQkFDSCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7O1FBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBSSxJQUFJLENBQUM7SUFDakMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTWF0aFV0aWxzIHtcclxuXHJcbiAgICBzdGF0aWMgZXF1YWwoYTogbnVtYmVyLCBiOiBudW1iZXIsIGVwc2lsb246IG51bWJlciA9IG51bGwpOiBib29sZWFuIHtcclxuICAgICAgICBlcHNpbG9uID0gT2JqZWN0VXRpbHMuaXNOdW1iZXIoZXBzaWxvbikgPyBlcHNpbG9uIDogTWF0aC5FO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhhIC0gYikgPCBlcHNpbG9uO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjbGFtcCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgbWF4KSwgbWluKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByb3VuZCh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlciA9IDIsIGRpdmlkZXI6IG51bWJlciA9IDEpOiBudW1iZXIge1xyXG4gICAgICAgIHByZWNpc2lvbiA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xyXG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcHJlY2lzaW9uIC8gZGl2aWRlcikgLyBwcmVjaXNpb247XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFwcHJveEluZGV4KHg6IG51bWJlciwgdmFsdWVzOiBudW1iZXJbXSwgZXBzaWxvbjogbnVtYmVyID0gbnVsbCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykgfHwgdmFsdWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHMgPSAwO1xyXG4gICAgICAgIGxldCBlID0gdmFsdWVzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgd2hpbGUgKHMgPD0gZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcigocyArIGUpIC8gMik7XHJcbiAgICAgICAgICAgIGNvbnN0IHYgPSB2YWx1ZXNbaV07XHJcbiAgICAgICAgICAgIGlmIChNYXRoVXRpbHMuZXF1YWwodiwgeCwgZXBzaWxvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh2IDwgeCkge1xyXG4gICAgICAgICAgICAgICAgcyA9IGkgKyAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZSA9IGkgLSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChlLCAwKTtcclxuICAgICAgICBjb25zdCBhID0gdmFsdWVzW3NdO1xyXG4gICAgICAgIGNvbnN0IGIgPSB2YWx1ZXNbbV07XHJcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGEgLSB4KSA8IE1hdGguYWJzKGIgLSB4KSA/IHMgOiBtO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhcHByb3hpbWF0ZSh4OiBudW1iZXIsIHZhbHVlczogbnVtYmVyW10sIGVwc2lsb246IG51bWJlciA9IG51bGwpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gTWF0aFV0aWxzLmFwcHJveEluZGV4KHgsIHZhbHVlcywgZXBzaWxvbik7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlc1tpbmRleF0gPz8gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1217,6 +1217,35 @@ class MathUtils {
|
|
|
1217
1217
|
precision = Math.pow(10, precision);
|
|
1218
1218
|
return Math.round(value * precision / divider) / precision;
|
|
1219
1219
|
}
|
|
1220
|
+
static approxIndex(x, values, epsilon = null) {
|
|
1221
|
+
if (!Array.isArray(values) || values.length == 0) {
|
|
1222
|
+
return -1;
|
|
1223
|
+
}
|
|
1224
|
+
let s = 0;
|
|
1225
|
+
let e = values.length - 1;
|
|
1226
|
+
while (s <= e) {
|
|
1227
|
+
const i = Math.floor((s + e) / 2);
|
|
1228
|
+
const v = values[i];
|
|
1229
|
+
if (MathUtils.equal(v, x, epsilon)) {
|
|
1230
|
+
return i;
|
|
1231
|
+
}
|
|
1232
|
+
if (v < x) {
|
|
1233
|
+
s = i + 1;
|
|
1234
|
+
}
|
|
1235
|
+
else {
|
|
1236
|
+
e = i - 1;
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
const m = Math.max(e, 0);
|
|
1240
|
+
const a = values[s];
|
|
1241
|
+
const b = values[m];
|
|
1242
|
+
return Math.abs(a - x) < Math.abs(b - x) ? s : m;
|
|
1243
|
+
}
|
|
1244
|
+
static approximate(x, values, epsilon = null) {
|
|
1245
|
+
var _a;
|
|
1246
|
+
const index = MathUtils.approxIndex(x, values, epsilon);
|
|
1247
|
+
return (_a = values[index]) !== null && _a !== void 0 ? _a : null;
|
|
1248
|
+
}
|
|
1220
1249
|
}
|
|
1221
1250
|
|
|
1222
1251
|
/**
|