@stemy/ngx-utils 12.1.6 → 12.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/stemy-ngx-utils.umd.js +40 -2
- package/bundles/stemy-ngx-utils.umd.js.map +1 -1
- package/esm2015/ngx-utils/utils/file-system.js +6 -1
- package/esm2015/ngx-utils/utils/math.utils.js +32 -2
- package/fesm2015/stemy-ngx-utils.js +37 -2
- package/fesm2015/stemy-ngx-utils.js.map +1 -1
- package/ngx-utils/utils/math.utils.d.ts +3 -0
- package/package.json +1 -1
- package/stemy-ngx-utils.metadata.json +1 -1
|
@@ -14,7 +14,12 @@ export class FileSystemEntry {
|
|
|
14
14
|
}
|
|
15
15
|
open() {
|
|
16
16
|
this.result = this.result || this.openCb(this.data, this);
|
|
17
|
+
this.result.then(res => {
|
|
18
|
+
if (Array.isArray(res))
|
|
19
|
+
return;
|
|
20
|
+
this.result = null;
|
|
21
|
+
});
|
|
17
22
|
return this.result;
|
|
18
23
|
}
|
|
19
24
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zeXN0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL2ZpbGUtc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxlQUFlO0lBUXhCLFlBQXFCLEtBQWEsRUFDYixJQUFZLEVBQ1osS0FBYSxFQUNiLElBQVMsRUFDVCxNQUF1QixFQUN0QixNQUE2QjtRQUw5QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1QsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDbkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQzdFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPO1lBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpbGVTeXN0ZW1FbnRyeU9wZW5SZXN1bHQgPSBSZWFkb25seUFycmF5PEZpbGVTeXN0ZW1FbnRyeT4gfCBudWxsO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsZVN5c3RlbUVudHJ5T3BlbkNiID0gKGRhdGE6IGFueSwgcGFyZW50OiBGaWxlU3lzdGVtRW50cnkpID0+IFByb21pc2U8RmlsZVN5c3RlbUVudHJ5T3BlblJlc3VsdD47XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZVN5c3RlbUVudHJ5IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVzdWx0OiBQcm9taXNlPEZpbGVTeXN0ZW1FbnRyeU9wZW5SZXN1bHQ+O1xyXG5cclxuICAgIHJlYWRvbmx5IHBhdGg6IFJlYWRvbmx5QXJyYXk8RmlsZVN5c3RlbUVudHJ5PjtcclxuICAgIHJlYWRvbmx5IGxldmVsOiBudW1iZXI7XHJcbiAgICByZWFkb25seSBjbGFzc2VzOiBSZWFkb25seUFycmF5PHN0cmluZz47XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbGFiZWw6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IG1ldGE6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGltYWdlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBkYXRhOiBhbnksXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBwYXJlbnQ6IEZpbGVTeXN0ZW1FbnRyeSxcclxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBvcGVuQ2I6IEZpbGVTeXN0ZW1FbnRyeU9wZW5DYikge1xyXG4gICAgICAgIHRoaXMucGF0aCA9ICFwYXJlbnQgPyBbdGhpc10gOiBwYXJlbnQucGF0aC5jb25jYXQoW3RoaXNdKTtcclxuICAgICAgICB0aGlzLmxldmVsID0gdGhpcy5wYXRoLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgdGhpcy5jbGFzc2VzID0gdGhpcy5wYXRoXHJcbiAgICAgICAgICAgIC5maWx0ZXIodCA9PiB0eXBlb2YgdC5kYXRhID09PSBcInN0cmluZ1wiICYmIHQuZGF0YS5sZW5ndGggPiAwKS5tYXAodCA9PiB0LmRhdGEpXHJcbiAgICAgICAgICAgIC5jb25jYXQoW2BsZXZlbC0ke3RoaXMubGV2ZWx9YF0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4oKTogUHJvbWlzZTxGaWxlU3lzdGVtRW50cnlPcGVuUmVzdWx0PiB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSB0aGlzLnJlc3VsdCB8fCB0aGlzLm9wZW5DYih0aGlzLmRhdGEsIHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzdWx0LnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ObjectUtils } from "./object.utils";
|
|
2
2
|
export class MathUtils {
|
|
3
3
|
static equal(a, b, epsilon = null) {
|
|
4
|
-
epsilon = ObjectUtils.isNumber(epsilon) ? epsilon :
|
|
4
|
+
epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : MathUtils.EPSILON;
|
|
5
5
|
return Math.abs(a - b) < epsilon;
|
|
6
6
|
}
|
|
7
7
|
static clamp(value, min, max) {
|
|
@@ -11,5 +11,35 @@ 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
|
-
|
|
44
|
+
MathUtils.EPSILON = 1e-9;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvbWF0aC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsTUFBTSxPQUFPLFNBQVM7SUFJbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFVBQWtCLElBQUk7UUFDckQsT0FBTyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDaEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxZQUFvQixDQUFDLEVBQUUsVUFBa0IsQ0FBQztRQUNsRSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7UUFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDYjtpQkFBTTtnQkFDSCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQVMsRUFBRSxNQUFnQixFQUFFLFVBQWtCLElBQUk7O1FBQ2xFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBSSxJQUFJLENBQUM7SUFDakMsQ0FBQzs7QUEzQ2UsaUJBQU8sR0FBVyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi9vYmplY3QudXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXRoVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSBFUFNJTE9OOiBudW1iZXIgPSAxZS05O1xyXG5cclxuICAgIHN0YXRpYyBlcXVhbChhOiBudW1iZXIsIGI6IG51bWJlciwgZXBzaWxvbjogbnVtYmVyID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGVwc2lsb24gPSBPYmplY3RVdGlscy5pc051bWJlcihlcHNpbG9uKSA/IGVwc2lsb24gOiBNYXRoVXRpbHMuRVBTSUxPTjtcclxuICAgICAgICByZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDwgZXBzaWxvbjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY2xhbXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odmFsdWUsIG1heCksIG1pbilcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcm91bmQodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIgPSAyLCBkaXZpZGVyOiBudW1iZXIgPSAxKTogbnVtYmVyIHtcclxuICAgICAgICBwcmVjaXNpb24gPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHByZWNpc2lvbiAvIGRpdmlkZXIpIC8gcHJlY2lzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhcHByb3hJbmRleCh4OiBudW1iZXIsIHZhbHVlczogbnVtYmVyW10sIGVwc2lsb246IG51bWJlciA9IG51bGwpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZXMpIHx8IHZhbHVlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBzID0gMDtcclxuICAgICAgICBsZXQgZSA9IHZhbHVlcy5sZW5ndGggLSAxO1xyXG4gICAgICAgIHdoaWxlIChzIDw9IGUpIHtcclxuICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguZmxvb3IoKHMgKyBlKSAvIDIpO1xyXG4gICAgICAgICAgICBjb25zdCB2ID0gdmFsdWVzW2ldO1xyXG4gICAgICAgICAgICBpZiAoTWF0aFV0aWxzLmVxdWFsKHYsIHgsIGVwc2lsb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodiA8IHgpIHtcclxuICAgICAgICAgICAgICAgIHMgPSBpICsgMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGUgPSBpIC0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoZSwgMCk7XHJcbiAgICAgICAgY29uc3QgYSA9IHZhbHVlc1tzXTtcclxuICAgICAgICBjb25zdCBiID0gdmFsdWVzW21dO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhhIC0geCkgPCBNYXRoLmFicyhiIC0geCkgPyBzIDogbTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXBwcm94aW1hdGUoeDogbnVtYmVyLCB2YWx1ZXM6IG51bWJlcltdLCBlcHNpbG9uOiBudW1iZXIgPSBudWxsKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IE1hdGhVdGlscy5hcHByb3hJbmRleCh4LCB2YWx1ZXMsIGVwc2lsb24pO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZXNbaW5kZXhdID8/IG51bGw7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -995,6 +995,11 @@ class FileSystemEntry {
|
|
|
995
995
|
}
|
|
996
996
|
open() {
|
|
997
997
|
this.result = this.result || this.openCb(this.data, this);
|
|
998
|
+
this.result.then(res => {
|
|
999
|
+
if (Array.isArray(res))
|
|
1000
|
+
return;
|
|
1001
|
+
this.result = null;
|
|
1002
|
+
});
|
|
998
1003
|
return this.result;
|
|
999
1004
|
}
|
|
1000
1005
|
}
|
|
@@ -1207,7 +1212,7 @@ LoaderUtils.stylePromises = {};
|
|
|
1207
1212
|
|
|
1208
1213
|
class MathUtils {
|
|
1209
1214
|
static equal(a, b, epsilon = null) {
|
|
1210
|
-
epsilon = ObjectUtils.isNumber(epsilon) ? epsilon :
|
|
1215
|
+
epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : MathUtils.EPSILON;
|
|
1211
1216
|
return Math.abs(a - b) < epsilon;
|
|
1212
1217
|
}
|
|
1213
1218
|
static clamp(value, min, max) {
|
|
@@ -1217,7 +1222,37 @@ class MathUtils {
|
|
|
1217
1222
|
precision = Math.pow(10, precision);
|
|
1218
1223
|
return Math.round(value * precision / divider) / precision;
|
|
1219
1224
|
}
|
|
1220
|
-
|
|
1225
|
+
static approxIndex(x, values, epsilon = null) {
|
|
1226
|
+
if (!Array.isArray(values) || values.length == 0) {
|
|
1227
|
+
return -1;
|
|
1228
|
+
}
|
|
1229
|
+
let s = 0;
|
|
1230
|
+
let e = values.length - 1;
|
|
1231
|
+
while (s <= e) {
|
|
1232
|
+
const i = Math.floor((s + e) / 2);
|
|
1233
|
+
const v = values[i];
|
|
1234
|
+
if (MathUtils.equal(v, x, epsilon)) {
|
|
1235
|
+
return i;
|
|
1236
|
+
}
|
|
1237
|
+
if (v < x) {
|
|
1238
|
+
s = i + 1;
|
|
1239
|
+
}
|
|
1240
|
+
else {
|
|
1241
|
+
e = i - 1;
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
const m = Math.max(e, 0);
|
|
1245
|
+
const a = values[s];
|
|
1246
|
+
const b = values[m];
|
|
1247
|
+
return Math.abs(a - x) < Math.abs(b - x) ? s : m;
|
|
1248
|
+
}
|
|
1249
|
+
static approximate(x, values, epsilon = null) {
|
|
1250
|
+
var _a;
|
|
1251
|
+
const index = MathUtils.approxIndex(x, values, epsilon);
|
|
1252
|
+
return (_a = values[index]) !== null && _a !== void 0 ? _a : null;
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
MathUtils.EPSILON = 1e-9;
|
|
1221
1256
|
|
|
1222
1257
|
/**
|
|
1223
1258
|
* Use this service to determine which is the current environment
|