@equinor/esv-intersection 3.0.6 → 3.0.7
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/dist/datautils/findsample.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +21 -17
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +3 -2
- package/src/datautils/findsample.ts +19 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@equinor/esv-intersection",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.7",
|
|
4
4
|
"description": "Intersection component package with testing and automatic documentation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"build-storybook": "storybook build",
|
|
30
30
|
"prepare": "husky install",
|
|
31
31
|
"version": "changeset version && npm install --package-lock-only",
|
|
32
|
-
"release": "npm run build && changeset publish"
|
|
32
|
+
"release:npm": "npm run build && changeset publish",
|
|
33
|
+
"release:github": "npm run build && changeset publish --no-git-tag"
|
|
33
34
|
},
|
|
34
35
|
"lint-staged": {
|
|
35
36
|
"*": "prettier --write --ignore-unknown"
|
|
@@ -1,26 +1,34 @@
|
|
|
1
1
|
export function findIndexOfSample(data: number[][], pos: number): number {
|
|
2
|
+
if (data.length < 2) {
|
|
3
|
+
return -1;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const linearSearchLimit = 20;
|
|
2
7
|
let a = 0;
|
|
3
8
|
let b = data.length - 1;
|
|
4
|
-
|
|
5
|
-
let
|
|
6
|
-
let bPos = data[b][0];
|
|
9
|
+
let aPos = data[a]?.[0];
|
|
10
|
+
let bPos = data[b]?.[0];
|
|
7
11
|
|
|
8
12
|
while (b - a > linearSearchLimit) {
|
|
9
13
|
const splitAt = Math.floor((b + a) / 2);
|
|
10
|
-
const splitPos = data[splitAt][0];
|
|
14
|
+
const splitPos = data[splitAt]?.[0];
|
|
15
|
+
|
|
16
|
+
if (aPos == null || bPos == null || splitPos == null) {
|
|
17
|
+
return -1;
|
|
18
|
+
}
|
|
11
19
|
|
|
12
20
|
if (pos >= aPos && pos < splitPos) {
|
|
13
21
|
b = splitAt;
|
|
14
|
-
bPos = data[b][0];
|
|
22
|
+
bPos = data[b]?.[0];
|
|
15
23
|
} else if (pos >= splitPos && pos <= bPos) {
|
|
16
24
|
a = splitAt;
|
|
17
|
-
aPos = data[a][0];
|
|
25
|
+
aPos = data[a]?.[0];
|
|
18
26
|
} else if (pos <= aPos && pos > splitPos) {
|
|
19
27
|
b = splitAt;
|
|
20
|
-
bPos = data[b][0];
|
|
28
|
+
bPos = data[b]?.[0];
|
|
21
29
|
} else if (pos <= splitPos && pos >= bPos) {
|
|
22
30
|
a = splitAt;
|
|
23
|
-
aPos = data[a][0];
|
|
31
|
+
aPos = data[a]?.[0];
|
|
24
32
|
} else {
|
|
25
33
|
return -1;
|
|
26
34
|
}
|
|
@@ -28,9 +36,9 @@ export function findIndexOfSample(data: number[][], pos: number): number {
|
|
|
28
36
|
|
|
29
37
|
let index = -1;
|
|
30
38
|
for (let i = a; i < b; i++) {
|
|
31
|
-
const v1 = data[i][0];
|
|
32
|
-
const v2 = data[i + 1][0];
|
|
33
|
-
if (Math.min(v1, v2) <= pos && pos <= Math.max(v1, v2)) {
|
|
39
|
+
const v1 = data[i]?.[0];
|
|
40
|
+
const v2 = data[i + 1]?.[0];
|
|
41
|
+
if (v1 != null && v2 != null && Math.min(v1, v2) <= pos && pos <= Math.max(v1, v2)) {
|
|
34
42
|
index = i;
|
|
35
43
|
break;
|
|
36
44
|
}
|