baselode 0.1.21 → 0.1.22
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/baselode.js +911 -873
- package/dist/baselode.js.map +1 -1
- package/dist/{baselode3dScene-CLEvddGM.js → baselode3dScene-4nzt80B1.js} +941 -880
- package/dist/baselode3dScene-4nzt80B1.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/tool-ui.js +376 -355
- package/dist/tool-ui.js.map +1 -1
- package/package.json +1 -1
- package/dist/baselode3dScene-CLEvddGM.js.map +0 -1
package/dist/baselode.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { _ as Nt, w as
|
|
2
|
-
import {
|
|
1
|
+
import { _ as Nt, w as U, H as N, P as de, F as M, T as O, c as vt, L as re, a as oe, D as V, A as Y, b as W, E as pe, N as ge, d as Ee, M as ve, G as le, e as ce, B as Et, f as et, g as $e, h as ze, i as tt, j as Ge, k as At, l as nt, m as St, n as Tt, o as Lt, p as It } from "./baselode3dScene-4nzt80B1.js";
|
|
2
|
+
import { q as vr, r as Er, s as Ar, t as Sr, u as Tr, v as Lr, x as Ir, y as Cr, z as Mr, C as Pr, I as Or, J as xr, K as Dr, O as Rr, Q as zr, R as Fr, S as $r, U as kr, V as wr, W as Ur, X as Hr, Y as Gr, Z as Br, $ as Vr, a0 as jr, a1 as Yr, a2 as Wr, a3 as qr, a4 as Xr, a5 as Kr, a6 as Zr, a7 as Jr, a8 as Qr, a9 as eo, aa as to, ab as no, ac as ro, ad as oo, ae as so, af as io, ag as ao, ah as lo, ai as co, aj as uo, ak as mo, al as fo, am as ho, an as po, ao as go, ap as bo, aq as yo, ar as _o, as as No, at as vo, au as Eo, av as Ao, aw as So, ax as To, ay as Lo, az as Io, aA as Co, aB as Mo, aC as Po, aD as Oo, aE as xo, aF as Do, aG as Ro, aH as zo, aI as Fo, aJ as $o, aK as ko, aL as wo, aM as Uo, aN as Ho, aO as Go, aP as Bo, aQ as Vo, aR as jo, aS as Yo, aT as Wo, aU as qo, aV as Xo, aW as Ko, aX as Zo, aY as Jo, aZ as Qo, a_ as es, a$ as ts, b0 as ns, b1 as rs, b2 as os, b3 as ss, b4 as is, b5 as as, b6 as ls, b7 as cs, b8 as us, b9 as ds, ba as ms, bb as fs, bc as hs, bd as ps, be as gs, bf as bs, bg as ys, bh as _s, bi as Ns, bj as vs, bk as Es, bl as As } from "./baselode3dScene-4nzt80B1.js";
|
|
3
3
|
import J from "papaparse";
|
|
4
|
-
import { jsxs as
|
|
5
|
-
import { useRef as
|
|
6
|
-
import
|
|
4
|
+
import { jsxs as w, jsx as S, Fragment as Ct } from "react/jsx-runtime";
|
|
5
|
+
import { useRef as ye, useState as K, useEffect as te, useMemo as ee, useCallback as Pe } from "react";
|
|
6
|
+
import Oe from "plotly.js-dist-min";
|
|
7
7
|
import * as Q from "three";
|
|
8
|
-
function
|
|
8
|
+
function Ae(e) {
|
|
9
9
|
return (e || "").toString().trim().toLowerCase().replace(/\s+/g, "_");
|
|
10
10
|
}
|
|
11
11
|
function ie(e, n = null, t = null) {
|
|
@@ -13,21 +13,21 @@ function ie(e, n = null, t = null) {
|
|
|
13
13
|
if (t) {
|
|
14
14
|
for (const [i, s] of Object.entries(t))
|
|
15
15
|
if (i != null && s != null) {
|
|
16
|
-
const a =
|
|
16
|
+
const a = Ae(i), l = Ae(s);
|
|
17
17
|
r[a] = l;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
const o = {};
|
|
21
21
|
for (const [i, s] of Object.entries(e)) {
|
|
22
|
-
const a =
|
|
22
|
+
const a = Ae(i), l = r[a] || a;
|
|
23
23
|
o[l] = s;
|
|
24
24
|
}
|
|
25
25
|
return o;
|
|
26
26
|
}
|
|
27
|
-
function
|
|
27
|
+
function Pn(e, n = null, t = null) {
|
|
28
28
|
return e.map((r) => ie(r, n, t));
|
|
29
29
|
}
|
|
30
|
-
const
|
|
30
|
+
const Mt = /* @__PURE__ */ new Set([
|
|
31
31
|
"hole_id",
|
|
32
32
|
"holeid",
|
|
33
33
|
"id",
|
|
@@ -59,14 +59,14 @@ const Lt = /* @__PURE__ */ new Set([
|
|
|
59
59
|
"todepth",
|
|
60
60
|
"comment",
|
|
61
61
|
"z"
|
|
62
|
-
]),
|
|
63
|
-
function
|
|
62
|
+
]), Ie = (e, n = null) => ie(e, null, n);
|
|
63
|
+
function Pt(e) {
|
|
64
64
|
return { holeId: e[N] };
|
|
65
65
|
}
|
|
66
66
|
function rt(e, n = null) {
|
|
67
67
|
const t = e[N], r = t !== void 0 ? `${t}`.trim() : "";
|
|
68
68
|
if (!r) return null;
|
|
69
|
-
const o = e[de] || e.project || e.project_code, i = Number(e[
|
|
69
|
+
const o = e[de] || e.project || e.project_code, i = Number(e[M]), s = Number(e[O]);
|
|
70
70
|
return !Number.isFinite(i) || !Number.isFinite(s) || s <= i ? null : {
|
|
71
71
|
holeId: r,
|
|
72
72
|
project: o,
|
|
@@ -90,7 +90,7 @@ function ot(e, n) {
|
|
|
90
90
|
r.push(c), r.push({ ...c, z: a });
|
|
91
91
|
}), { id: e, project: (o = t[0]) == null ? void 0 : o.project, points: r };
|
|
92
92
|
}
|
|
93
|
-
function
|
|
93
|
+
function On(e, n = null) {
|
|
94
94
|
return new Promise((t, r) => {
|
|
95
95
|
const o = /* @__PURE__ */ new Set();
|
|
96
96
|
J.parse(e, {
|
|
@@ -98,18 +98,18 @@ function Pn(e, n = null) {
|
|
|
98
98
|
dynamicTyping: !0,
|
|
99
99
|
skipEmptyLines: !0,
|
|
100
100
|
step: (i) => {
|
|
101
|
-
const a =
|
|
101
|
+
const a = Ie(i.data, n)[N];
|
|
102
102
|
a !== void 0 && `${a}`.trim() !== "" && o.add(`${a}`.trim());
|
|
103
103
|
},
|
|
104
104
|
complete: () => t(Array.from(o)),
|
|
105
|
-
error: (i) => r(
|
|
105
|
+
error: (i) => r(U("parseAssayHoleIds", i))
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
-
function
|
|
110
|
-
return Object.entries(e || {}).some(([n, t]) => !(
|
|
109
|
+
function Ot(e) {
|
|
110
|
+
return Object.entries(e || {}).some(([n, t]) => !(Mt.has(n) || t == null || typeof t == "string" && t.trim() === ""));
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function xt(e, n = null) {
|
|
113
113
|
return new Promise((t, r) => {
|
|
114
114
|
const o = /* @__PURE__ */ new Map();
|
|
115
115
|
J.parse(e, {
|
|
@@ -117,9 +117,9 @@ function Ot(e, n = null) {
|
|
|
117
117
|
dynamicTyping: !0,
|
|
118
118
|
skipEmptyLines: !0,
|
|
119
119
|
step: (i) => {
|
|
120
|
-
const s =
|
|
121
|
-
if (!
|
|
122
|
-
const l =
|
|
120
|
+
const s = Ie(i.data, n);
|
|
121
|
+
if (!Ot(s)) return;
|
|
122
|
+
const l = Pt(s).holeId;
|
|
123
123
|
if (l !== void 0 && `${l}`.trim() !== "") {
|
|
124
124
|
const u = `${l}`.trim();
|
|
125
125
|
o.has(u) || o.set(u, {
|
|
@@ -128,15 +128,15 @@ function Ot(e, n = null) {
|
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
complete: () => t(Array.from(o.values())),
|
|
131
|
-
error: (i) => r(
|
|
131
|
+
error: (i) => r(U("parseAssayHoleIdsWithAssays", i))
|
|
132
132
|
});
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function Dt(e, n, t = null, r = null) {
|
|
136
136
|
return new Promise((o, i) => {
|
|
137
137
|
const s = `${n}`.trim();
|
|
138
138
|
if (!s) {
|
|
139
|
-
i(
|
|
139
|
+
i(U("parseAssayHole", new Error("Missing hole id")));
|
|
140
140
|
return;
|
|
141
141
|
}
|
|
142
142
|
const a = [];
|
|
@@ -145,7 +145,7 @@ function xt(e, n, t = null, r = null) {
|
|
|
145
145
|
dynamicTyping: !0,
|
|
146
146
|
skipEmptyLines: !0,
|
|
147
147
|
step: (l) => {
|
|
148
|
-
const u =
|
|
148
|
+
const u = Ie(l.data, r), c = rt(u, r);
|
|
149
149
|
c && `${c.holeId}`.trim() === s && a.push(c);
|
|
150
150
|
},
|
|
151
151
|
complete: () => {
|
|
@@ -156,11 +156,11 @@ function xt(e, n, t = null, r = null) {
|
|
|
156
156
|
const l = ot(s, a);
|
|
157
157
|
o(l);
|
|
158
158
|
},
|
|
159
|
-
error: (l) => i(
|
|
159
|
+
error: (l) => i(U("parseAssayHole", l))
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
|
-
function
|
|
163
|
+
function Rt(e, n = null, t = null) {
|
|
164
164
|
return new Promise((r, o) => {
|
|
165
165
|
J.parse(e, {
|
|
166
166
|
header: !0,
|
|
@@ -169,23 +169,23 @@ function Dt(e, n = null, t = null) {
|
|
|
169
169
|
complete: (i) => {
|
|
170
170
|
const s = /* @__PURE__ */ new Map();
|
|
171
171
|
i.data.forEach((l) => {
|
|
172
|
-
const u =
|
|
172
|
+
const u = Ie(l, t), c = rt(u, t);
|
|
173
173
|
c && (s.has(c.holeId) || s.set(c.holeId, []), s.get(c.holeId).push(c));
|
|
174
174
|
});
|
|
175
175
|
const a = Array.from(s.entries()).map(([l, u]) => ot(l, u));
|
|
176
176
|
r({ holes: a });
|
|
177
177
|
},
|
|
178
|
-
error: (i) => o(
|
|
178
|
+
error: (i) => o(U("parseAssaysCSV", i))
|
|
179
179
|
});
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function xn(e = {}) {
|
|
183
183
|
const n = {};
|
|
184
184
|
return Object.entries(e || {}).forEach(([t, r]) => {
|
|
185
|
-
t && (n[
|
|
185
|
+
t && (n[Ae(t)] = r);
|
|
186
186
|
}), n;
|
|
187
187
|
}
|
|
188
|
-
function
|
|
188
|
+
function Dn(e = {}, n = [], t) {
|
|
189
189
|
for (const r of n) {
|
|
190
190
|
const o = e[r];
|
|
191
191
|
if (o != null && `${o}`.trim() !== "")
|
|
@@ -193,7 +193,7 @@ function xn(e = {}, n = [], t) {
|
|
|
193
193
|
}
|
|
194
194
|
return t;
|
|
195
195
|
}
|
|
196
|
-
const
|
|
196
|
+
const zt = 4;
|
|
197
197
|
function st(e = [], n = "") {
|
|
198
198
|
if (!e.length) return [];
|
|
199
199
|
if (!n) return e;
|
|
@@ -202,7 +202,7 @@ function st(e = [], n = "") {
|
|
|
202
202
|
const r = e[t], o = e.filter((i, s) => s !== t);
|
|
203
203
|
return [r, ...o];
|
|
204
204
|
}
|
|
205
|
-
function
|
|
205
|
+
function Se({
|
|
206
206
|
property: e = "",
|
|
207
207
|
chartType: n = "",
|
|
208
208
|
categoricalProps: t = [],
|
|
@@ -214,7 +214,7 @@ function Te({
|
|
|
214
214
|
function it({
|
|
215
215
|
holeIds: e = [],
|
|
216
216
|
focusedHoleId: n = "",
|
|
217
|
-
plotCount: t =
|
|
217
|
+
plotCount: t = zt,
|
|
218
218
|
defaultProp: r = "",
|
|
219
219
|
categoricalProps: o = [],
|
|
220
220
|
commentProps: i = [],
|
|
@@ -222,7 +222,7 @@ function it({
|
|
|
222
222
|
} = {}) {
|
|
223
223
|
const a = st(e, n);
|
|
224
224
|
return Array.from({ length: t }).map((l, u) => {
|
|
225
|
-
const c = a[u] || e[u] || "", d =
|
|
225
|
+
const c = a[u] || e[u] || "", d = Se({
|
|
226
226
|
property: r,
|
|
227
227
|
chartType: "",
|
|
228
228
|
categoricalProps: o,
|
|
@@ -236,7 +236,7 @@ function it({
|
|
|
236
236
|
};
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
|
-
function
|
|
239
|
+
function Te(e = []) {
|
|
240
240
|
const n = e.flatMap((a) => a.points || []), { numericCols: t, categoricalCols: r, commentCols: o, byType: i } = vt(n), s = t[0] || r[0] || "";
|
|
241
241
|
return {
|
|
242
242
|
numericProps: t,
|
|
@@ -246,15 +246,15 @@ function Ie(e = []) {
|
|
|
246
246
|
defaultProp: s
|
|
247
247
|
};
|
|
248
248
|
}
|
|
249
|
-
async function
|
|
250
|
-
return await
|
|
249
|
+
async function Ft(e, n = null) {
|
|
250
|
+
return await xt(e);
|
|
251
251
|
}
|
|
252
252
|
async function $t(e, n, t = null) {
|
|
253
|
-
return await
|
|
253
|
+
return await Dt(e, n);
|
|
254
254
|
}
|
|
255
255
|
function kt(e = [], n = "") {
|
|
256
256
|
if (!e.length) return null;
|
|
257
|
-
const { numericProps: t, categoricalProps: r, commentProps: o, columnMeta: i, defaultProp: s } =
|
|
257
|
+
const { numericProps: t, categoricalProps: r, commentProps: o, columnMeta: i, defaultProp: s } = Te(e), a = e.map((u) => u.id || u.holeId).filter(Boolean), l = it({
|
|
258
258
|
holeIds: a,
|
|
259
259
|
focusedHoleId: n,
|
|
260
260
|
plotCount: 4,
|
|
@@ -273,34 +273,34 @@ function kt(e = [], n = "") {
|
|
|
273
273
|
traceConfigs: l
|
|
274
274
|
};
|
|
275
275
|
}
|
|
276
|
-
async function
|
|
277
|
-
const { holes: r } = await
|
|
276
|
+
async function Rn(e, n = "", t = null) {
|
|
277
|
+
const { holes: r } = await Rt(e, t), o = kt(r, n);
|
|
278
278
|
if (!o) throw new Error("No valid assay intervals found.");
|
|
279
279
|
return o;
|
|
280
280
|
}
|
|
281
|
-
function
|
|
281
|
+
function zn(e, n = null) {
|
|
282
282
|
return new Promise((t, r) => {
|
|
283
283
|
J.parse(e, {
|
|
284
284
|
header: !0,
|
|
285
285
|
dynamicTyping: !0,
|
|
286
286
|
skipEmptyLines: !0,
|
|
287
287
|
complete: (o) => {
|
|
288
|
-
const i = o.data.map((s) =>
|
|
288
|
+
const i = o.data.map((s) => wt(s, n)).filter((s) => s[N] && Number.isFinite(s[V]) && Number.isFinite(s[W]) && Number.isFinite(s[Y]));
|
|
289
289
|
t(i);
|
|
290
290
|
},
|
|
291
|
-
error: (o) => r(
|
|
291
|
+
error: (o) => r(U("parseSurveyCSV", o))
|
|
292
292
|
});
|
|
293
293
|
});
|
|
294
294
|
}
|
|
295
|
-
function
|
|
296
|
-
const t = ie(e, null, n), r = t[N], o = t[de] || t.project || t.project_code, i =
|
|
295
|
+
function wt(e, n = null) {
|
|
296
|
+
const t = ie(e, null, n), r = t[N], o = t[de] || t.project || t.project_code, i = he(t[re]), s = he(t[oe]), a = he(t[V]), l = he(t[W]), u = he(t[Y]), c = he(t.maxdepth);
|
|
297
297
|
return {
|
|
298
298
|
raw: t,
|
|
299
299
|
[N]: r,
|
|
300
300
|
[de]: o,
|
|
301
301
|
[re]: i,
|
|
302
302
|
[oe]: s,
|
|
303
|
-
[
|
|
303
|
+
[V]: a,
|
|
304
304
|
[W]: l,
|
|
305
305
|
[Y]: u,
|
|
306
306
|
maxdepth: c,
|
|
@@ -311,90 +311,90 @@ function Ft(e, n = null) {
|
|
|
311
311
|
surveydepth: a
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
|
-
const
|
|
314
|
+
const he = (e) => {
|
|
315
315
|
const n = Number(e);
|
|
316
316
|
return Number.isFinite(n) ? n : void 0;
|
|
317
317
|
};
|
|
318
|
-
function
|
|
318
|
+
function Fn(e, n) {
|
|
319
319
|
var u, c, d, m;
|
|
320
320
|
const t = /* @__PURE__ */ new Map();
|
|
321
321
|
e.forEach((f) => {
|
|
322
|
-
const
|
|
323
|
-
if (!
|
|
324
|
-
const
|
|
325
|
-
t.has(
|
|
322
|
+
const b = (f[N] || f.holeId || f.id || "").toString().trim();
|
|
323
|
+
if (!b) return;
|
|
324
|
+
const p = b.toLowerCase();
|
|
325
|
+
t.has(p) || t.set(p, f);
|
|
326
326
|
});
|
|
327
327
|
const r = ((u = e[0]) == null ? void 0 : u.lat) ?? ((c = e[0]) == null ? void 0 : c[re]) ?? 0, o = ((d = e[0]) == null ? void 0 : d.lng) ?? ((m = e[0]) == null ? void 0 : m[oe]) ?? 0, i = 111132, s = 111320 * Math.cos(r * Math.PI / 180), a = /* @__PURE__ */ new Map();
|
|
328
328
|
n.forEach((f) => {
|
|
329
|
-
const
|
|
330
|
-
if (!
|
|
331
|
-
const
|
|
332
|
-
a.has(
|
|
329
|
+
const b = (f[N] || "").toString().trim();
|
|
330
|
+
if (!b) return;
|
|
331
|
+
const p = b.toLowerCase();
|
|
332
|
+
a.has(p) || a.set(p, []), a.get(p).push(f);
|
|
333
333
|
});
|
|
334
334
|
const l = [];
|
|
335
|
-
return a.forEach((f,
|
|
336
|
-
const
|
|
337
|
-
if (!
|
|
338
|
-
const
|
|
339
|
-
if (!
|
|
340
|
-
const g =
|
|
341
|
-
let
|
|
342
|
-
for (let
|
|
343
|
-
const
|
|
344
|
-
if (!
|
|
345
|
-
|
|
346
|
-
x:
|
|
347
|
-
y:
|
|
335
|
+
return a.forEach((f, b) => {
|
|
336
|
+
const p = t.get(b);
|
|
337
|
+
if (!p) return;
|
|
338
|
+
const v = f.filter((A) => Number.isFinite(A[V] ?? A.surveydepth)).sort((A, z) => (A[V] ?? A.surveydepth) - (z[V] ?? z.surveydepth));
|
|
339
|
+
if (!v.length) return;
|
|
340
|
+
const g = p.lat ?? p[re], L = p.lng ?? p[oe], C = 111132, j = 111320 * Math.cos(g * Math.PI / 180), H = (L - o) * s, $ = (g - r) * i, D = [];
|
|
341
|
+
let R = 0, G = 0, h = 0;
|
|
342
|
+
for (let A = 0; A < v.length; A += 1) {
|
|
343
|
+
const z = v[A], E = v[A - 1], _ = z[V] ?? z.surveydepth, y = z[Y] ?? z.azimuth, I = z[W] ?? z.dip;
|
|
344
|
+
if (!E) {
|
|
345
|
+
D.push({
|
|
346
|
+
x: H + R,
|
|
347
|
+
y: $ + G,
|
|
348
348
|
z: 0,
|
|
349
|
-
md:
|
|
350
|
-
azimuth:
|
|
351
|
-
dip:
|
|
349
|
+
md: _,
|
|
350
|
+
azimuth: y,
|
|
351
|
+
dip: I
|
|
352
352
|
});
|
|
353
353
|
continue;
|
|
354
354
|
}
|
|
355
|
-
const F =
|
|
356
|
-
if (
|
|
357
|
-
const
|
|
358
|
-
Math.sin(
|
|
359
|
-
), me =
|
|
360
|
-
|
|
361
|
-
x:
|
|
362
|
-
y:
|
|
363
|
-
z: -
|
|
355
|
+
const F = E[V] ?? E.surveydepth, T = E[Y] ?? E.azimuth, x = E[W] ?? E.dip, B = _ - F;
|
|
356
|
+
if (B <= 0) continue;
|
|
357
|
+
const k = Be(x), q = Be(I), X = Fe(T), ae = Fe(y), _e = Math.acos(
|
|
358
|
+
Math.sin(k) * Math.sin(q) * Math.cos(X - ae) + Math.cos(k) * Math.cos(q)
|
|
359
|
+
), me = _e > 1e-6 ? 2 / _e * Math.tan(_e / 2) : 1, Me = 0.5 * B * (Math.sin(k) * Math.cos(X) + Math.sin(q) * Math.cos(ae)) * me, fe = 0.5 * B * (Math.sin(k) * Math.sin(X) + Math.sin(q) * Math.sin(ae)) * me, _t = 0.5 * B * (Math.cos(k) + Math.cos(q)) * me;
|
|
360
|
+
R += Me, G += fe, h += _t, D.push({
|
|
361
|
+
x: H + R,
|
|
362
|
+
y: $ + G,
|
|
363
|
+
z: -h,
|
|
364
364
|
// render with z up; depth down
|
|
365
|
-
md:
|
|
366
|
-
azimuth:
|
|
367
|
-
dip:
|
|
365
|
+
md: _,
|
|
366
|
+
azimuth: y,
|
|
367
|
+
dip: I
|
|
368
368
|
});
|
|
369
369
|
}
|
|
370
|
-
const
|
|
371
|
-
...
|
|
372
|
-
lat: g +
|
|
373
|
-
lng:
|
|
370
|
+
const P = D.map((A) => ({
|
|
371
|
+
...A,
|
|
372
|
+
lat: g + A.y / C,
|
|
373
|
+
lng: L + A.x / j
|
|
374
374
|
}));
|
|
375
375
|
l.push({
|
|
376
|
-
id:
|
|
377
|
-
project:
|
|
378
|
-
points:
|
|
379
|
-
collar:
|
|
376
|
+
id: p[N] || p.holeId || b,
|
|
377
|
+
project: p[de] || p.project_id || p.project || "",
|
|
378
|
+
points: P,
|
|
379
|
+
collar: p
|
|
380
380
|
});
|
|
381
381
|
}), l;
|
|
382
382
|
}
|
|
383
|
-
const
|
|
383
|
+
const Fe = (e) => e * Math.PI / 180, Be = (e) => {
|
|
384
384
|
const n = Number(e), t = 90 + (Number.isFinite(n) ? n : 0), r = Math.min(180, Math.max(0, t));
|
|
385
|
-
return
|
|
385
|
+
return Fe(r);
|
|
386
386
|
};
|
|
387
|
-
function
|
|
387
|
+
function ne(e, n = void 0) {
|
|
388
388
|
const t = Number(e);
|
|
389
389
|
return Number.isFinite(t) ? t : n;
|
|
390
390
|
}
|
|
391
391
|
function Ve(e) {
|
|
392
392
|
return e == null ? "" : `${e}`.trim();
|
|
393
393
|
}
|
|
394
|
-
function
|
|
394
|
+
function Le(e = [], n = null) {
|
|
395
395
|
const t = n || "hole_id", o = [t, "hole_id", "holeId", "id"].find((i) => e.some((s) => Ve(s == null ? void 0 : s[i])));
|
|
396
396
|
if (!o)
|
|
397
|
-
throw
|
|
397
|
+
throw U("canonicalizeHoleIdRows", new Error(`hole id column '${t}' not found`));
|
|
398
398
|
return {
|
|
399
399
|
aliasCol: o,
|
|
400
400
|
rows: e.map((i) => ({
|
|
@@ -410,7 +410,7 @@ function xe(e, n) {
|
|
|
410
410
|
const t = je(e), r = je(n), o = Math.cos(r) * Math.sin(t), i = Math.cos(r) * Math.cos(t), s = Math.sin(r) * -1;
|
|
411
411
|
return { ca: o, cb: i, cc: s };
|
|
412
412
|
}
|
|
413
|
-
function
|
|
413
|
+
function Ut(e, n, t, r, o, i = "minimum_curvature") {
|
|
414
414
|
const s = xe(n, t), a = xe(r, o);
|
|
415
415
|
if (i === "tangential")
|
|
416
416
|
return {
|
|
@@ -439,12 +439,12 @@ function wt(e, n, t, r, o, i = "minimum_curvature") {
|
|
|
439
439
|
dip: o
|
|
440
440
|
};
|
|
441
441
|
}
|
|
442
|
-
function
|
|
442
|
+
function ke(e = [], n = [], t = {}) {
|
|
443
443
|
const {
|
|
444
444
|
step: r = 1,
|
|
445
445
|
holeIdCol: o = null,
|
|
446
446
|
method: i = "minimum_curvature"
|
|
447
|
-
} = t, s = Number.isFinite(Number(r)) && Number(r) > 0 ? Number(r) : 1, a =
|
|
447
|
+
} = t, s = Number.isFinite(Number(r)) && Number(r) > 0 ? Number(r) : 1, a = Le(e, o), l = Le(n, o || a.aliasCol);
|
|
448
448
|
if (!a.rows.length || !l.rows.length) return [];
|
|
449
449
|
const u = /* @__PURE__ */ new Map();
|
|
450
450
|
a.rows.forEach((m) => {
|
|
@@ -456,81 +456,81 @@ function Fe(e = [], n = [], t = {}) {
|
|
|
456
456
|
});
|
|
457
457
|
const d = [];
|
|
458
458
|
return c.forEach((m, f) => {
|
|
459
|
-
const
|
|
460
|
-
if (!
|
|
461
|
-
const
|
|
462
|
-
...
|
|
463
|
-
from:
|
|
464
|
-
azimuth:
|
|
465
|
-
dip:
|
|
466
|
-
})).filter((
|
|
467
|
-
if (!
|
|
468
|
-
let
|
|
469
|
-
const
|
|
459
|
+
const b = u.get(f);
|
|
460
|
+
if (!b) return;
|
|
461
|
+
const p = [...m].map((D) => ({
|
|
462
|
+
...D,
|
|
463
|
+
from: ne(D.from),
|
|
464
|
+
azimuth: ne(D.azimuth),
|
|
465
|
+
dip: ne(D.dip)
|
|
466
|
+
})).filter((D) => Number.isFinite(D.from) && Number.isFinite(D.azimuth) && Number.isFinite(D.dip)).sort((D, R) => D.from - R.from);
|
|
467
|
+
if (!p.length) return;
|
|
468
|
+
let v = ne(b.x, 0), g = ne(b.y, 0), L = ne(b.z, 0), C = p[0].from;
|
|
469
|
+
const j = p[0].azimuth, H = p[0].dip, $ = {
|
|
470
470
|
hole_id: f,
|
|
471
|
-
md:
|
|
472
|
-
x:
|
|
471
|
+
md: C,
|
|
472
|
+
x: v,
|
|
473
473
|
y: g,
|
|
474
|
-
z:
|
|
475
|
-
azimuth:
|
|
476
|
-
dip:
|
|
474
|
+
z: L,
|
|
475
|
+
azimuth: j,
|
|
476
|
+
dip: H
|
|
477
477
|
};
|
|
478
|
-
a.aliasCol !== "hole_id" &&
|
|
479
|
-
for (let
|
|
480
|
-
const
|
|
481
|
-
if (
|
|
482
|
-
const
|
|
483
|
-
for (let
|
|
484
|
-
|
|
485
|
-
const
|
|
486
|
-
|
|
487
|
-
const
|
|
478
|
+
a.aliasCol !== "hole_id" && b[a.aliasCol] !== void 0 && ($[a.aliasCol] = b[a.aliasCol]), d.push($);
|
|
479
|
+
for (let D = 0; D < p.length - 1; D += 1) {
|
|
480
|
+
const R = p[D], G = p[D + 1], h = R.from, A = G.from - h;
|
|
481
|
+
if (A <= 0) continue;
|
|
482
|
+
const z = Math.max(1, Math.ceil(A / s)), E = A / z;
|
|
483
|
+
for (let _ = 0; _ < z; _ += 1) {
|
|
484
|
+
C += E;
|
|
485
|
+
const y = (C - h) / A, I = R.azimuth + y * (G.azimuth - R.azimuth), F = R.dip + y * (G.dip - R.dip), T = Ut(E, R.azimuth, R.dip, G.azimuth, G.dip, i);
|
|
486
|
+
v += T.dx, g += T.dy, L += T.dz;
|
|
487
|
+
const x = {
|
|
488
488
|
hole_id: f,
|
|
489
|
-
md:
|
|
490
|
-
x:
|
|
489
|
+
md: C,
|
|
490
|
+
x: v,
|
|
491
491
|
y: g,
|
|
492
|
-
z:
|
|
493
|
-
azimuth: i === "minimum_curvature" ?
|
|
494
|
-
dip: i === "minimum_curvature" ? F :
|
|
492
|
+
z: L,
|
|
493
|
+
azimuth: i === "minimum_curvature" ? I : T.azimuth,
|
|
494
|
+
dip: i === "minimum_curvature" ? F : T.dip
|
|
495
495
|
};
|
|
496
|
-
a.aliasCol !== "hole_id" &&
|
|
496
|
+
a.aliasCol !== "hole_id" && b[a.aliasCol] !== void 0 && (x[a.aliasCol] = b[a.aliasCol]), d.push(x);
|
|
497
497
|
}
|
|
498
498
|
}
|
|
499
499
|
}), d;
|
|
500
500
|
}
|
|
501
501
|
function Ht(e, n, t = {}) {
|
|
502
|
-
return
|
|
502
|
+
return ke(e, n, { ...t, method: "minimum_curvature" });
|
|
503
503
|
}
|
|
504
504
|
function $n(e, n, t = {}) {
|
|
505
|
-
return
|
|
505
|
+
return ke(e, n, { ...t, method: "tangential" });
|
|
506
506
|
}
|
|
507
507
|
function kn(e, n, t = {}) {
|
|
508
|
-
return
|
|
508
|
+
return ke(e, n, { ...t, method: "balanced_tangential" });
|
|
509
509
|
}
|
|
510
|
-
function
|
|
510
|
+
function wn(e, n, t = {}) {
|
|
511
511
|
return Ht(e, n, t);
|
|
512
512
|
}
|
|
513
513
|
function Gt(e, n) {
|
|
514
514
|
if (!e.length || !Number.isFinite(n)) return null;
|
|
515
515
|
let t = null, r = 1 / 0;
|
|
516
516
|
for (let o = 0; o < e.length; o += 1) {
|
|
517
|
-
const i = e[o], s =
|
|
517
|
+
const i = e[o], s = ne(i.md);
|
|
518
518
|
if (!Number.isFinite(s)) continue;
|
|
519
519
|
const a = Math.abs(s - n);
|
|
520
520
|
a < r && (r = a, t = i);
|
|
521
521
|
}
|
|
522
522
|
return t;
|
|
523
523
|
}
|
|
524
|
-
function
|
|
525
|
-
const r = t.holeIdCol || "hole_id", o =
|
|
524
|
+
function Un(e = [], n = [], t = {}) {
|
|
525
|
+
const r = t.holeIdCol || "hole_id", o = Le(e, r), i = Le(n, r);
|
|
526
526
|
if (!o.rows.length || !i.rows.length) return [...o.rows];
|
|
527
527
|
const s = /* @__PURE__ */ new Map();
|
|
528
528
|
return i.rows.forEach((a) => {
|
|
529
529
|
a.hole_id && (s.has(a.hole_id) || s.set(a.hole_id, []), s.get(a.hole_id).push(a));
|
|
530
530
|
}), s.forEach((a, l) => {
|
|
531
|
-
s.set(l, [...a].sort((u, c) =>
|
|
531
|
+
s.set(l, [...a].sort((u, c) => ne(u.md, 0) - ne(c.md, 0)));
|
|
532
532
|
}), o.rows.map((a) => {
|
|
533
|
-
const l =
|
|
533
|
+
const l = ne(a.from), u = ne(a.to), c = Number.isFinite(l) && Number.isFinite(u) ? 0.5 * (l + u) : void 0;
|
|
534
534
|
if (!a.hole_id || !Number.isFinite(c)) return { ...a };
|
|
535
535
|
const d = Gt(s.get(a.hole_id) || [], c);
|
|
536
536
|
if (!d) return { ...a };
|
|
@@ -549,14 +549,14 @@ function Hn(e, n = null) {
|
|
|
549
549
|
complete: (o) => {
|
|
550
550
|
const i = /* @__PURE__ */ new Map();
|
|
551
551
|
o.data.forEach((a, l) => {
|
|
552
|
-
const u = ie(a, null, n), c = u[N], d = c !== void 0 ? `${c}`.trim() : "", m = u[
|
|
553
|
-
!d || m === null || m === void 0 || f === null || f === void 0 ||
|
|
552
|
+
const u = ie(a, null, n), c = u[N], d = c !== void 0 ? `${c}`.trim() : "", m = u[pe] ?? u.x, f = u[ge] ?? u.y, b = u[Ee] ?? u.z, p = u.order ?? l;
|
|
553
|
+
!d || m === null || m === void 0 || f === null || f === void 0 || b === null || b === void 0 || (i.has(d) || i.set(d, []), i.get(d).push({
|
|
554
554
|
...u,
|
|
555
555
|
holeId: d,
|
|
556
|
-
order:
|
|
556
|
+
order: p,
|
|
557
557
|
x: Number(m) ?? 0,
|
|
558
558
|
y: Number(f) ?? 0,
|
|
559
|
-
z: Number(
|
|
559
|
+
z: Number(b) ?? 0
|
|
560
560
|
}));
|
|
561
561
|
});
|
|
562
562
|
const s = Array.from(i.entries()).map(([a, l]) => ({
|
|
@@ -570,11 +570,11 @@ function Hn(e, n = null) {
|
|
|
570
570
|
}));
|
|
571
571
|
t({ holes: s });
|
|
572
572
|
},
|
|
573
|
-
error: (o) => r(
|
|
573
|
+
error: (o) => r(U("parseDrillholesCSV", o))
|
|
574
574
|
});
|
|
575
575
|
});
|
|
576
576
|
}
|
|
577
|
-
function
|
|
577
|
+
function be(e) {
|
|
578
578
|
return e ? Array.isArray(e) ? [...e] : [] : [];
|
|
579
579
|
}
|
|
580
580
|
function Z(e) {
|
|
@@ -592,22 +592,22 @@ function Ne(e = [], n = []) {
|
|
|
592
592
|
return 0;
|
|
593
593
|
}), t;
|
|
594
594
|
}
|
|
595
|
-
function
|
|
595
|
+
function Bt(e = [], n = "Intervals") {
|
|
596
596
|
if (!e.length) return;
|
|
597
|
-
const t = Ne(e, [N,
|
|
597
|
+
const t = Ne(e, [N, M, O]), r = /* @__PURE__ */ new Map();
|
|
598
598
|
t.forEach((o) => {
|
|
599
|
-
const i = `${(o == null ? void 0 : o[N]) ?? ""}`.trim(), s = Number(o == null ? void 0 : o[
|
|
599
|
+
const i = `${(o == null ? void 0 : o[N]) ?? ""}`.trim(), s = Number(o == null ? void 0 : o[M]), a = Number(o == null ? void 0 : o[O]);
|
|
600
600
|
if (!i || !Number.isFinite(s) || !Number.isFinite(a)) return;
|
|
601
601
|
const l = r.get(i);
|
|
602
602
|
if (Number.isFinite(l) && s < l)
|
|
603
|
-
throw
|
|
603
|
+
throw U(
|
|
604
604
|
"validateNoOverlappingIntervals",
|
|
605
605
|
new Error(`${n} intervals overlap for hole '${i}': from=${s} is less than previous to=${l}`)
|
|
606
606
|
);
|
|
607
607
|
r.set(i, a);
|
|
608
608
|
});
|
|
609
609
|
}
|
|
610
|
-
function
|
|
610
|
+
function Vt(e, n = {}) {
|
|
611
611
|
return new Promise((t, r) => {
|
|
612
612
|
J.parse(e, {
|
|
613
613
|
header: !0,
|
|
@@ -615,14 +615,14 @@ function Bt(e, n = {}) {
|
|
|
615
615
|
skipEmptyLines: !0,
|
|
616
616
|
...n,
|
|
617
617
|
complete: (o) => t(Array.isArray(o == null ? void 0 : o.data) ? o.data : []),
|
|
618
|
-
error: (o) => r(
|
|
618
|
+
error: (o) => r(U("loadTable(csv)", o))
|
|
619
619
|
});
|
|
620
620
|
});
|
|
621
621
|
}
|
|
622
|
-
function
|
|
622
|
+
function jt(e = [], n = null, t = null) {
|
|
623
623
|
return e.map((r) => ie(r, n, t));
|
|
624
624
|
}
|
|
625
|
-
async function
|
|
625
|
+
async function Ce(e, n = {}) {
|
|
626
626
|
const {
|
|
627
627
|
kind: t = "csv",
|
|
628
628
|
columnMap: r = null,
|
|
@@ -631,11 +631,11 @@ async function Me(e, n = {}) {
|
|
|
631
631
|
} = n;
|
|
632
632
|
let s;
|
|
633
633
|
if (Array.isArray(e))
|
|
634
|
-
s =
|
|
634
|
+
s = be(e);
|
|
635
635
|
else if (t === "csv")
|
|
636
|
-
s = await
|
|
637
|
-
else throw t === "parquet" || t === "sql" ?
|
|
638
|
-
return
|
|
636
|
+
s = await Vt(e, i);
|
|
637
|
+
else throw t === "parquet" || t === "sql" ? U("loadTable", new Error(`Unsupported kind in JS runtime: ${t}`)) : U("loadTable", new Error(`Unsupported kind: ${t}`));
|
|
638
|
+
return jt(s, r, o);
|
|
639
639
|
}
|
|
640
640
|
async function Gn(e, n = {}) {
|
|
641
641
|
const {
|
|
@@ -643,102 +643,102 @@ async function Gn(e, n = {}) {
|
|
|
643
643
|
sourceColumnMap: r = null,
|
|
644
644
|
keepAll: o = !0,
|
|
645
645
|
...i
|
|
646
|
-
} = n, s = await
|
|
646
|
+
} = n, s = await Ce(e, { ...i, sourceColumnMap: r });
|
|
647
647
|
if (!s.some((m) => N in m))
|
|
648
|
-
throw
|
|
649
|
-
const l = s.some((m) =>
|
|
648
|
+
throw U("loadCollars", new Error(`Collar table missing column: ${N}`));
|
|
649
|
+
const l = s.some((m) => pe in m && ge in m), u = s.some((m) => re in m && oe in m);
|
|
650
650
|
if (!l && !u)
|
|
651
|
-
throw
|
|
651
|
+
throw U("loadCollars", new Error("Collar table missing coordinate columns (need easting/northing or latitude/longitude)"));
|
|
652
652
|
const c = s.map((m) => {
|
|
653
653
|
const f = { ...m };
|
|
654
654
|
if (N in f) {
|
|
655
|
-
const
|
|
656
|
-
f[N] =
|
|
655
|
+
const b = f[N];
|
|
656
|
+
f[N] = b == null ? "" : `${b}`.trim();
|
|
657
657
|
}
|
|
658
|
-
return re in f && (f[re] = Z(f[re])), oe in f && (f[oe] = Z(f[oe])),
|
|
658
|
+
return re in f && (f[re] = Z(f[re])), oe in f && (f[oe] = Z(f[oe])), Ee in f && (f[Ee] = Z(f[Ee])), pe in f && (f[pe] = Z(f[pe])), ge in f && (f[ge] = Z(f[ge])), !("datasource_hole_id" in f) && N in f && (f.datasource_hole_id = f[N]), f;
|
|
659
659
|
});
|
|
660
|
-
if (!c.every((m) => !(!m[N] || u && (!Number.isFinite(m[re]) || !Number.isFinite(m[oe])) || l && !u && (!Number.isFinite(m[
|
|
661
|
-
throw
|
|
660
|
+
if (!c.every((m) => !(!m[N] || u && (!Number.isFinite(m[re]) || !Number.isFinite(m[oe])) || l && !u && (!Number.isFinite(m[pe]) || !Number.isFinite(m[ge])))))
|
|
661
|
+
throw U("loadCollars", new Error("Collar table has missing required values"));
|
|
662
662
|
return c;
|
|
663
663
|
}
|
|
664
|
-
async function
|
|
664
|
+
async function Bn(e, n = {}) {
|
|
665
665
|
const {
|
|
666
666
|
sourceColumnMap: t = null,
|
|
667
667
|
keepAll: r = !0,
|
|
668
668
|
...o
|
|
669
|
-
} = n, i = await
|
|
669
|
+
} = n, i = await Ce(e, { ...o, sourceColumnMap: t }), s = [N, V, Y, W];
|
|
670
670
|
for (const u of s)
|
|
671
671
|
if (!i.some((d) => u in d))
|
|
672
|
-
throw
|
|
672
|
+
throw U("loadSurveys", new Error(`Survey table missing column: ${u}`));
|
|
673
673
|
const a = i.map((u) => {
|
|
674
674
|
const c = { ...u };
|
|
675
675
|
if (N in c) {
|
|
676
676
|
const d = c[N];
|
|
677
677
|
c[N] = d == null ? "" : `${d}`.trim();
|
|
678
678
|
}
|
|
679
|
-
return
|
|
679
|
+
return V in c && (c[V] = Z(c[V])), O in c && (c[O] = Z(c[O])), Y in c && (c[Y] = Z(c[Y])), W in c && (c[W] = Z(c[W])), c;
|
|
680
680
|
});
|
|
681
|
-
if (!a.every((u) => !(!u[N] || !Number.isFinite(u[
|
|
682
|
-
throw
|
|
683
|
-
return Ne(a, [N,
|
|
681
|
+
if (!a.every((u) => !(!u[N] || !Number.isFinite(u[V]) || !Number.isFinite(u[Y]) || !Number.isFinite(u[W]))))
|
|
682
|
+
throw U("loadSurveys", new Error("Survey table has missing required values"));
|
|
683
|
+
return Ne(a, [N, V]);
|
|
684
684
|
}
|
|
685
|
-
async function
|
|
685
|
+
async function Vn(e, n = {}) {
|
|
686
686
|
const {
|
|
687
687
|
sourceColumnMap: t = null,
|
|
688
688
|
keepAll: r = !0,
|
|
689
689
|
...o
|
|
690
|
-
} = n, i = await
|
|
690
|
+
} = n, i = await Ce(e, { ...o, sourceColumnMap: t }), s = [N, M, O];
|
|
691
691
|
for (const u of s)
|
|
692
692
|
if (!i.some((d) => u in d))
|
|
693
|
-
throw
|
|
693
|
+
throw U("loadAssays", new Error(`Assay table missing column: ${u}`));
|
|
694
694
|
const a = i.map((u) => {
|
|
695
695
|
const c = { ...u };
|
|
696
696
|
if (N in c) {
|
|
697
697
|
const d = c[N];
|
|
698
698
|
c[N] = d == null ? "" : `${d}`.trim();
|
|
699
699
|
}
|
|
700
|
-
return
|
|
700
|
+
return M in c && (c[M] = Z(c[M])), O in c && (c[O] = Z(c[O])), M in c && O in c && Number.isFinite(c[M]) && Number.isFinite(c[O]) && (c[ve] = 0.5 * (c[M] + c[O])), c;
|
|
701
701
|
});
|
|
702
|
-
if (!a.every((u) => !(!u[N] || !Number.isFinite(u[
|
|
703
|
-
throw
|
|
704
|
-
return Ne(a, [N,
|
|
702
|
+
if (!a.every((u) => !(!u[N] || !Number.isFinite(u[M]) || !Number.isFinite(u[O]) || !(u[O] > u[M]))))
|
|
703
|
+
throw U("loadAssays", new Error("Assay table has missing required values"));
|
|
704
|
+
return Ne(a, [N, M, O]);
|
|
705
705
|
}
|
|
706
|
-
async function
|
|
706
|
+
async function jn(e, n = {}) {
|
|
707
707
|
const {
|
|
708
708
|
sourceColumnMap: t = null,
|
|
709
709
|
keepAll: r = !0,
|
|
710
710
|
...o
|
|
711
|
-
} = n, i = await
|
|
711
|
+
} = n, i = await Ce(e, { ...o, sourceColumnMap: t }), s = [N, M, O];
|
|
712
712
|
for (const c of s)
|
|
713
713
|
if (!i.some((m) => c in m))
|
|
714
|
-
throw
|
|
714
|
+
throw U("loadGeology", new Error(`Geology table missing column: ${c}`));
|
|
715
715
|
const a = i.map((c) => {
|
|
716
716
|
const d = { ...c };
|
|
717
717
|
if (N in d) {
|
|
718
|
-
const
|
|
719
|
-
d[N] =
|
|
718
|
+
const b = d[N];
|
|
719
|
+
d[N] = b == null ? "" : `${b}`.trim();
|
|
720
720
|
}
|
|
721
|
-
|
|
721
|
+
M in d && (d[M] = Z(d[M])), O in d && (d[O] = Z(d[O])), M in d && O in d && Number.isFinite(d[M]) && Number.isFinite(d[O]) && (d[O] === d[M] && (d[M] = Math.round(d[M] * 1e3) / 1e3, d[O] = d[M] + 1e-3), d[ve] = 0.5 * (d[M] + d[O]));
|
|
722
722
|
const m = d[le] !== void 0 && d[le] !== null && `${d[le]}`.trim() !== "", f = d[ce] !== void 0 && d[ce] !== null && `${d[ce]}`.trim() !== "";
|
|
723
723
|
return !m && f && (d[le] = d[ce]), m && !f && (d[ce] = d[le]), d;
|
|
724
724
|
});
|
|
725
|
-
if (!a.every((c) => !(!c[N] || !Number.isFinite(c[
|
|
726
|
-
throw
|
|
725
|
+
if (!a.every((c) => !(!c[N] || !Number.isFinite(c[M]) || !Number.isFinite(c[O]) || !(c[O] > c[M]))))
|
|
726
|
+
throw U("loadGeology", new Error("Geology table has missing or invalid interval values"));
|
|
727
727
|
if (!a.some((c) => {
|
|
728
728
|
const d = c[le], m = c[ce];
|
|
729
729
|
return d != null && `${d}`.trim() !== "" || m != null && `${m}`.trim() !== "";
|
|
730
730
|
}))
|
|
731
|
-
throw
|
|
732
|
-
if (
|
|
731
|
+
throw U("loadGeology", new Error(`Geology table missing categorical columns: ${le} or ${ce}`));
|
|
732
|
+
if (Bt(a, "Geology"), !r) {
|
|
733
733
|
const c = new Set(Object.keys(Et));
|
|
734
734
|
return Ne(
|
|
735
735
|
a.map((d) => Object.fromEntries(Object.entries(d).filter(([m]) => c.has(m)))),
|
|
736
|
-
[N,
|
|
736
|
+
[N, M, O]
|
|
737
737
|
);
|
|
738
738
|
}
|
|
739
|
-
return Ne(a, [N,
|
|
739
|
+
return Ne(a, [N, M, O]);
|
|
740
740
|
}
|
|
741
|
-
function
|
|
741
|
+
function Yn(e = [], n = [], t = {}) {
|
|
742
742
|
const r = Array.isArray(t.onCols) && t.onCols.length ? t.onCols : [N];
|
|
743
743
|
if (!n.length) return [...e];
|
|
744
744
|
const o = (s) => r.map((a) => `${(s == null ? void 0 : s[a]) ?? ""}`).join("|"), i = /* @__PURE__ */ new Map();
|
|
@@ -753,10 +753,10 @@ function jn(e = [], n = [], t = {}) {
|
|
|
753
753
|
}), l;
|
|
754
754
|
});
|
|
755
755
|
}
|
|
756
|
-
function
|
|
756
|
+
function Wn(e = [], n = null) {
|
|
757
757
|
return n == null ? [...e] : e.length ? e.some((r) => de in r) ? e.filter((r) => (r == null ? void 0 : r[de]) === n) : [...e] : [];
|
|
758
758
|
}
|
|
759
|
-
function
|
|
759
|
+
function qn(e = [], n = []) {
|
|
760
760
|
return e.map((t) => {
|
|
761
761
|
const r = { ...t };
|
|
762
762
|
return n.forEach((o) => {
|
|
@@ -766,7 +766,7 @@ function Wn(e = [], n = []) {
|
|
|
766
766
|
}), r;
|
|
767
767
|
});
|
|
768
768
|
}
|
|
769
|
-
function
|
|
769
|
+
function Xn({
|
|
770
770
|
collars: e = [],
|
|
771
771
|
surveys: n = [],
|
|
772
772
|
assays: t = [],
|
|
@@ -775,18 +775,18 @@ function qn({
|
|
|
775
775
|
metadata: i = {}
|
|
776
776
|
} = {}) {
|
|
777
777
|
return {
|
|
778
|
-
collars:
|
|
779
|
-
surveys:
|
|
780
|
-
assays:
|
|
781
|
-
geology:
|
|
782
|
-
structures:
|
|
778
|
+
collars: be(e),
|
|
779
|
+
surveys: be(n),
|
|
780
|
+
assays: be(t),
|
|
781
|
+
geology: be(r),
|
|
782
|
+
structures: be(o),
|
|
783
783
|
metadata: i || {}
|
|
784
784
|
};
|
|
785
785
|
}
|
|
786
786
|
const we = (e, n = null) => ie(e, null, n);
|
|
787
|
-
function
|
|
787
|
+
function Yt(e) {
|
|
788
788
|
if (!e.length) return null;
|
|
789
|
-
const n = e[0], t =
|
|
789
|
+
const n = e[0], t = M in n && O in n, r = V in n && !t;
|
|
790
790
|
return t ? "interval" : r ? "point" : null;
|
|
791
791
|
}
|
|
792
792
|
function se(e) {
|
|
@@ -796,10 +796,10 @@ function se(e) {
|
|
|
796
796
|
function at(e) {
|
|
797
797
|
const n = e[N] !== void 0 ? `${e[N]}`.trim() : "";
|
|
798
798
|
if (!n) return null;
|
|
799
|
-
const t = se(e[
|
|
799
|
+
const t = se(e[V]);
|
|
800
800
|
return t === null ? null : {
|
|
801
801
|
[N]: n,
|
|
802
|
-
[
|
|
802
|
+
[V]: t,
|
|
803
803
|
[W]: se(e[W]),
|
|
804
804
|
[Y]: se(e[Y]),
|
|
805
805
|
comments: e.comments != null ? `${e.comments}` : null,
|
|
@@ -809,13 +809,13 @@ function at(e) {
|
|
|
809
809
|
function lt(e) {
|
|
810
810
|
const n = e[N] !== void 0 ? `${e[N]}`.trim() : "";
|
|
811
811
|
if (!n) return null;
|
|
812
|
-
const t = se(e[
|
|
812
|
+
const t = se(e[M]), r = se(e[O]);
|
|
813
813
|
if (t === null || r === null || r <= t) return null;
|
|
814
814
|
const o = 0.5 * (t + r);
|
|
815
815
|
return {
|
|
816
816
|
[N]: n,
|
|
817
|
-
[
|
|
818
|
-
[
|
|
817
|
+
[M]: t,
|
|
818
|
+
[O]: r,
|
|
819
819
|
mid: o,
|
|
820
820
|
[W]: se(e[W]),
|
|
821
821
|
[Y]: se(e[Y]),
|
|
@@ -824,7 +824,7 @@ function lt(e) {
|
|
|
824
824
|
...e
|
|
825
825
|
};
|
|
826
826
|
}
|
|
827
|
-
function
|
|
827
|
+
function Kn(e) {
|
|
828
828
|
const n = [], t = [];
|
|
829
829
|
for (const r of e) {
|
|
830
830
|
const o = [], i = se(r[W]), s = se(r[Y]);
|
|
@@ -832,7 +832,7 @@ function Xn(e) {
|
|
|
832
832
|
}
|
|
833
833
|
return { valid: n, errors: t };
|
|
834
834
|
}
|
|
835
|
-
function
|
|
835
|
+
function Zn(e, n = null) {
|
|
836
836
|
return new Promise((t, r) => {
|
|
837
837
|
const o = {
|
|
838
838
|
header: !0,
|
|
@@ -846,13 +846,13 @@ function Kn(e, n = null) {
|
|
|
846
846
|
}
|
|
847
847
|
t(s);
|
|
848
848
|
},
|
|
849
|
-
error: (i) => r(
|
|
849
|
+
error: (i) => r(U("parseStructuralPointsCSV", i))
|
|
850
850
|
};
|
|
851
851
|
typeof e == "string" && !e.startsWith("data:") && e.includes(`
|
|
852
852
|
`) ? J.parse(e, o) : J.parse(e, o);
|
|
853
853
|
});
|
|
854
854
|
}
|
|
855
|
-
function
|
|
855
|
+
function Jn(e, n = null) {
|
|
856
856
|
return new Promise((t, r) => {
|
|
857
857
|
J.parse(e, {
|
|
858
858
|
header: !0,
|
|
@@ -866,11 +866,11 @@ function Zn(e, n = null) {
|
|
|
866
866
|
}
|
|
867
867
|
t(i);
|
|
868
868
|
},
|
|
869
|
-
error: (o) => r(
|
|
869
|
+
error: (o) => r(U("parseStructuralIntervalsCSV", o))
|
|
870
870
|
});
|
|
871
871
|
});
|
|
872
872
|
}
|
|
873
|
-
function
|
|
873
|
+
function Wt(e, n = N) {
|
|
874
874
|
const t = /* @__PURE__ */ new Map();
|
|
875
875
|
for (const r of e) {
|
|
876
876
|
const o = r[n] != null ? String(r[n]).trim() : "";
|
|
@@ -878,16 +878,16 @@ function Yt(e, n = N) {
|
|
|
878
878
|
}
|
|
879
879
|
return Array.from(t.values());
|
|
880
880
|
}
|
|
881
|
-
function
|
|
881
|
+
function qt(e, n = null) {
|
|
882
882
|
return new Promise((t, r) => {
|
|
883
883
|
J.parse(e, {
|
|
884
884
|
header: !0,
|
|
885
885
|
dynamicTyping: !0,
|
|
886
886
|
skipEmptyLines: !0,
|
|
887
887
|
complete: (o) => {
|
|
888
|
-
const i = o.data.map((l) => we(l, n)), s =
|
|
888
|
+
const i = o.data.map((l) => we(l, n)), s = Yt(i);
|
|
889
889
|
if (!s) {
|
|
890
|
-
r(
|
|
890
|
+
r(U(
|
|
891
891
|
"parseStructuralCSV",
|
|
892
892
|
new Error("Structural CSV requires either 'depth' (point) or 'from'/'to' (interval) columns")
|
|
893
893
|
));
|
|
@@ -900,11 +900,11 @@ function Wt(e, n = null) {
|
|
|
900
900
|
}
|
|
901
901
|
t({ schema: s, rows: a });
|
|
902
902
|
},
|
|
903
|
-
error: (o) => r(
|
|
903
|
+
error: (o) => r(U("parseStructuralCSV", o))
|
|
904
904
|
});
|
|
905
905
|
});
|
|
906
906
|
}
|
|
907
|
-
function
|
|
907
|
+
function Xt(e) {
|
|
908
908
|
return new Promise((n) => {
|
|
909
909
|
J.parse(e, {
|
|
910
910
|
header: !0,
|
|
@@ -915,30 +915,30 @@ function qt(e) {
|
|
|
915
915
|
for (const i of t.data) {
|
|
916
916
|
const s = ie(i), a = s[N] != null ? `${s[N]}`.trim() : "";
|
|
917
917
|
if (!a) continue;
|
|
918
|
-
const l = Number(s[
|
|
918
|
+
const l = Number(s[M]), u = Number(s[O]);
|
|
919
919
|
if (!Number.isFinite(l) || !Number.isFinite(u) || u <= l) continue;
|
|
920
|
-
const c = (l + u) / 2, { [W]: d, [Y]: m, ...f } = s,
|
|
920
|
+
const c = (l + u) / 2, { [W]: d, [Y]: m, ...f } = s, b = {
|
|
921
921
|
...f,
|
|
922
922
|
[N]: a,
|
|
923
|
-
[
|
|
924
|
-
[
|
|
923
|
+
[M]: l,
|
|
924
|
+
[O]: u,
|
|
925
925
|
[ve]: c,
|
|
926
|
-
[
|
|
926
|
+
[V]: c,
|
|
927
927
|
// unified depth field for y-axis rendering
|
|
928
928
|
_source: "assay"
|
|
929
929
|
};
|
|
930
|
-
r.has(a) || r.set(a, []), r.get(a).push(
|
|
930
|
+
r.has(a) || r.set(a, []), r.get(a).push(b);
|
|
931
931
|
}
|
|
932
932
|
const o = Array.from(r.entries()).map(([i, s]) => ({
|
|
933
933
|
holeId: i,
|
|
934
|
-
points: s.sort((a, l) => a[
|
|
934
|
+
points: s.sort((a, l) => a[M] - l[M])
|
|
935
935
|
}));
|
|
936
936
|
n(o);
|
|
937
937
|
}
|
|
938
938
|
});
|
|
939
939
|
});
|
|
940
940
|
}
|
|
941
|
-
function
|
|
941
|
+
function Kt(e) {
|
|
942
942
|
return new Promise((n) => {
|
|
943
943
|
J.parse(e, {
|
|
944
944
|
header: !0,
|
|
@@ -949,15 +949,15 @@ function Xt(e) {
|
|
|
949
949
|
for (const o of t.data) {
|
|
950
950
|
const i = ie(o), s = (i[N] ?? "").toString().trim();
|
|
951
951
|
if (!s) continue;
|
|
952
|
-
const a = Number(i[
|
|
952
|
+
const a = Number(i[M]), l = Number(i[O]);
|
|
953
953
|
if (!Number.isFinite(a) || !Number.isFinite(l) || l <= a) continue;
|
|
954
954
|
const u = (a + l) / 2, { [W]: c, [Y]: d, ...m } = i, f = {
|
|
955
955
|
...m,
|
|
956
956
|
[N]: s,
|
|
957
|
-
[
|
|
958
|
-
[
|
|
957
|
+
[M]: a,
|
|
958
|
+
[O]: l,
|
|
959
959
|
[ve]: u,
|
|
960
|
-
[
|
|
960
|
+
[V]: u,
|
|
961
961
|
_source: "geology"
|
|
962
962
|
};
|
|
963
963
|
r.has(s) || r.set(s, []), r.get(s).push(f);
|
|
@@ -965,20 +965,20 @@ function Xt(e) {
|
|
|
965
965
|
n({
|
|
966
966
|
holes: Array.from(r.entries()).map(([o, i]) => ({
|
|
967
967
|
holeId: o,
|
|
968
|
-
points: i.sort((s, a) => s[
|
|
968
|
+
points: i.sort((s, a) => s[M] - a[M])
|
|
969
969
|
}))
|
|
970
970
|
});
|
|
971
971
|
}
|
|
972
972
|
});
|
|
973
973
|
});
|
|
974
974
|
}
|
|
975
|
-
async function
|
|
975
|
+
async function Qn({ assayCsv: e, structuralCsv: n, geologyCsv: t } = {}) {
|
|
976
976
|
const [r, o, i] = await Promise.all([
|
|
977
|
-
e ?
|
|
978
|
-
n ?
|
|
979
|
-
({ rows: a }) =>
|
|
977
|
+
e ? Xt(e) : Promise.resolve([]),
|
|
978
|
+
n ? qt(n).then(
|
|
979
|
+
({ rows: a }) => Wt(a.map((l) => ({ ...l, _source: "structural" })))
|
|
980
980
|
) : Promise.resolve([]),
|
|
981
|
-
t ?
|
|
981
|
+
t ? Kt(t).then(({ holes: a }) => a) : Promise.resolve([])
|
|
982
982
|
]), s = new Map(r.map((a) => [a.holeId, { ...a, points: [...a.points] }]));
|
|
983
983
|
for (const a of [...o, ...i]) {
|
|
984
984
|
const l = a.holeId;
|
|
@@ -991,7 +991,7 @@ async function Jn({ assayCsv: e, structuralCsv: n, geologyCsv: t } = {}) {
|
|
|
991
991
|
}
|
|
992
992
|
return { holes: Array.from(s.values()) };
|
|
993
993
|
}
|
|
994
|
-
function
|
|
994
|
+
function er(e, n, t, r, o = {}) {
|
|
995
995
|
const i = o.fromCol || "from", s = o.toCol || "to", a = o.holeCol || "hole_id";
|
|
996
996
|
if (!e || !e.length) return [];
|
|
997
997
|
const l = {};
|
|
@@ -1001,45 +1001,45 @@ function Qn(e, n, t, r, o = {}) {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
const u = [];
|
|
1003
1003
|
for (const [c, d] of Object.entries(l)) {
|
|
1004
|
-
const f = [...d].sort((g,
|
|
1005
|
-
const
|
|
1006
|
-
return Number.isFinite(
|
|
1004
|
+
const f = [...d].sort((g, L) => Number(g[i]) - Number(L[i])).filter((g) => {
|
|
1005
|
+
const L = Number(g[n]);
|
|
1006
|
+
return Number.isFinite(L) && L >= t;
|
|
1007
1007
|
});
|
|
1008
1008
|
if (!f.length) continue;
|
|
1009
|
-
const
|
|
1010
|
-
let
|
|
1009
|
+
const b = [];
|
|
1010
|
+
let p = [], v = null;
|
|
1011
1011
|
for (const g of f) {
|
|
1012
|
-
const
|
|
1013
|
-
|
|
1012
|
+
const L = Number(g[i]), C = Number(g[s]);
|
|
1013
|
+
v === null || Math.abs(L - v) > 1e-6 ? (p.length && b.push(p), p = [g]) : p.push(g), v = C;
|
|
1014
1014
|
}
|
|
1015
|
-
|
|
1016
|
-
for (const g of
|
|
1017
|
-
const
|
|
1018
|
-
if (
|
|
1019
|
-
let
|
|
1020
|
-
for (const
|
|
1021
|
-
const
|
|
1022
|
-
|
|
1015
|
+
p.length && b.push(p);
|
|
1016
|
+
for (const g of b) {
|
|
1017
|
+
const L = Number(g[0][i]), C = Number(g[g.length - 1][s]), j = C - L;
|
|
1018
|
+
if (j < r) continue;
|
|
1019
|
+
let H = 0, $ = 0;
|
|
1020
|
+
for (const h of g) {
|
|
1021
|
+
const P = Number(h[n]), A = Number(h[s]) - Number(h[i]);
|
|
1022
|
+
H += P * A, $ += A;
|
|
1023
1023
|
}
|
|
1024
|
-
const
|
|
1024
|
+
const D = H / $, R = g.length, G = `${j.toFixed(1)} m @ ${D.toFixed(2)} ${n}`;
|
|
1025
1025
|
u.push({
|
|
1026
1026
|
[a]: c,
|
|
1027
1027
|
assay_field: n,
|
|
1028
|
-
[i]:
|
|
1029
|
-
[s]:
|
|
1030
|
-
length:
|
|
1031
|
-
avg_grade:
|
|
1032
|
-
n_samples:
|
|
1033
|
-
label:
|
|
1028
|
+
[i]: L,
|
|
1029
|
+
[s]: C,
|
|
1030
|
+
length: j,
|
|
1031
|
+
avg_grade: D,
|
|
1032
|
+
n_samples: R,
|
|
1033
|
+
label: G
|
|
1034
1034
|
});
|
|
1035
1035
|
}
|
|
1036
1036
|
}
|
|
1037
1037
|
return u;
|
|
1038
1038
|
}
|
|
1039
1039
|
const ct = ["depth", "md", "measured_depth", "dept", "z"];
|
|
1040
|
-
function
|
|
1041
|
-
if (e[
|
|
1042
|
-
const r = Number(e[
|
|
1040
|
+
function Zt(e) {
|
|
1041
|
+
if (e[V] !== void 0) {
|
|
1042
|
+
const r = Number(e[V]);
|
|
1043
1043
|
if (Number.isFinite(r)) return r;
|
|
1044
1044
|
}
|
|
1045
1045
|
for (const r of ct)
|
|
@@ -1047,12 +1047,12 @@ function Kt(e) {
|
|
|
1047
1047
|
const o = Number(e[r]);
|
|
1048
1048
|
if (Number.isFinite(o)) return o;
|
|
1049
1049
|
}
|
|
1050
|
-
const n = Number(e[
|
|
1050
|
+
const n = Number(e[M]), t = Number(e[O]);
|
|
1051
1051
|
return Number.isFinite(n) && Number.isFinite(t) && t >= n ? (n + t) / 2 : null;
|
|
1052
1052
|
}
|
|
1053
|
-
function
|
|
1053
|
+
function Jt(e) {
|
|
1054
1054
|
if (e.length === 0) return [];
|
|
1055
|
-
const n = /* @__PURE__ */ new Set([N,
|
|
1055
|
+
const n = /* @__PURE__ */ new Set([N, V, M, O, ve, ...ct]);
|
|
1056
1056
|
return Object.keys(e[0]).filter((r) => !n.has(r)).filter((r) => {
|
|
1057
1057
|
let o = 0;
|
|
1058
1058
|
for (const i of e) {
|
|
@@ -1062,18 +1062,18 @@ function Zt(e) {
|
|
|
1062
1062
|
return o / e.length > 0.5;
|
|
1063
1063
|
});
|
|
1064
1064
|
}
|
|
1065
|
-
function
|
|
1065
|
+
function tr(e, n = null) {
|
|
1066
1066
|
const r = J.parse(e, {
|
|
1067
1067
|
header: !0,
|
|
1068
1068
|
skipEmptyLines: !0,
|
|
1069
1069
|
dynamicTyping: !1
|
|
1070
1070
|
}).data || [];
|
|
1071
1071
|
if (r.length === 0) return [];
|
|
1072
|
-
const o = r.map((l) => ie(l, null, n)), i =
|
|
1072
|
+
const o = r.map((l) => ie(l, null, n)), i = Jt(o), s = /* @__PURE__ */ new Map();
|
|
1073
1073
|
for (const l of o) {
|
|
1074
1074
|
const u = l[N] != null ? `${l[N]}`.trim() : "";
|
|
1075
1075
|
if (!u) continue;
|
|
1076
|
-
const c =
|
|
1076
|
+
const c = Zt(l);
|
|
1077
1077
|
c === null || c < 0 || (s.has(u) || s.set(u, []), s.get(u).push({ depth: c, row: l }));
|
|
1078
1078
|
}
|
|
1079
1079
|
const a = [];
|
|
@@ -1082,9 +1082,9 @@ function er(e, n = null) {
|
|
|
1082
1082
|
const c = {};
|
|
1083
1083
|
for (const d of i) {
|
|
1084
1084
|
const m = [], f = [];
|
|
1085
|
-
for (const { depth:
|
|
1086
|
-
const
|
|
1087
|
-
Number.isFinite(
|
|
1085
|
+
for (const { depth: b, row: p } of u) {
|
|
1086
|
+
const v = Number(p[d]);
|
|
1087
|
+
Number.isFinite(v) && v !== et && (m.push(b), f.push(v));
|
|
1088
1088
|
}
|
|
1089
1089
|
m.length >= 2 && (c[d] = { depths: m, values: f });
|
|
1090
1090
|
}
|
|
@@ -1092,7 +1092,7 @@ function er(e, n = null) {
|
|
|
1092
1092
|
}
|
|
1093
1093
|
return a;
|
|
1094
1094
|
}
|
|
1095
|
-
function
|
|
1095
|
+
function nr(e, n = null, t = {}) {
|
|
1096
1096
|
const r = [];
|
|
1097
1097
|
for (const { holeId: o, channels: i } of e) {
|
|
1098
1098
|
const s = n && i[n] ? n : Object.keys(i)[0];
|
|
@@ -1108,7 +1108,7 @@ function ut(e) {
|
|
|
1108
1108
|
const t = e.slice(0, n).trim().toUpperCase(), r = e.slice(n + 1), o = r.match(/^(\S*)\s*(.*)/s), i = o ? o[1] : "", s = o ? o[2] : r, a = s.lastIndexOf(":"), l = a >= 0 ? s.slice(0, a).trim() : s.trim(), u = a >= 0 ? s.slice(a + 1).trim() : "";
|
|
1109
1109
|
return { mnem: t, unit: i, value: l, description: u };
|
|
1110
1110
|
}
|
|
1111
|
-
function
|
|
1111
|
+
function Qt(e) {
|
|
1112
1112
|
const n = [];
|
|
1113
1113
|
let t = null;
|
|
1114
1114
|
for (const r of e.split(/\r?\n/)) {
|
|
@@ -1127,49 +1127,49 @@ function Ye(e = []) {
|
|
|
1127
1127
|
}
|
|
1128
1128
|
return n;
|
|
1129
1129
|
}
|
|
1130
|
-
function
|
|
1131
|
-
var g,
|
|
1132
|
-
const t =
|
|
1130
|
+
function rr(e, n = {}) {
|
|
1131
|
+
var g, L, C, j, H, $, D, R, G;
|
|
1132
|
+
const t = Qt(e), r = t.find((h) => h.type === "V"), o = t.find((h) => h.type === "W"), i = t.find((h) => h.type === "C"), s = t.find((h) => h.type === "A");
|
|
1133
1133
|
if (!s) return [];
|
|
1134
1134
|
const a = Ye(r == null ? void 0 : r.lines), l = Ye(o == null ? void 0 : o.lines), u = [];
|
|
1135
|
-
for (const
|
|
1136
|
-
const
|
|
1137
|
-
if (!
|
|
1138
|
-
const
|
|
1139
|
-
|
|
1135
|
+
for (const h of (i == null ? void 0 : i.lines) ?? []) {
|
|
1136
|
+
const P = h.trimStart();
|
|
1137
|
+
if (!P || P.startsWith("#")) continue;
|
|
1138
|
+
const A = ut(h);
|
|
1139
|
+
A && u.push(A);
|
|
1140
1140
|
}
|
|
1141
|
-
(((
|
|
1141
|
+
(((L = (g = a.WRAP) == null ? void 0 : g.value) == null ? void 0 : L.trim().toUpperCase()) ?? "NO") === "YES" && console.warn(
|
|
1142
1142
|
"parseLasFile: WRAP YES is not supported. Data rows may be read incorrectly."
|
|
1143
1143
|
);
|
|
1144
|
-
const d = n.holeId ?? (((
|
|
1144
|
+
const d = n.holeId ?? (((j = (C = l.WELL) == null ? void 0 : C.value) == null ? void 0 : j.trim()) || null) ?? ((($ = (H = l.UWI) == null ? void 0 : H.value) == null ? void 0 : $.trim()) || null) ?? (((R = (D = l.API) == null ? void 0 : D.value) == null ? void 0 : R.trim()) || null) ?? "unknown";
|
|
1145
1145
|
let m = et;
|
|
1146
|
-
if ((
|
|
1147
|
-
const
|
|
1148
|
-
Number.isFinite(
|
|
1146
|
+
if ((G = l.NULL) != null && G.value) {
|
|
1147
|
+
const h = Number(l.NULL.value);
|
|
1148
|
+
Number.isFinite(h) && (m = h);
|
|
1149
1149
|
}
|
|
1150
1150
|
if (n.nullSentinel !== void 0 && (m = n.nullSentinel), u.length === 0) return [];
|
|
1151
|
-
const f = u.slice(1),
|
|
1152
|
-
for (const { mnem:
|
|
1153
|
-
|
|
1154
|
-
const
|
|
1155
|
-
for (const { mnem:
|
|
1156
|
-
h
|
|
1157
|
-
for (const
|
|
1158
|
-
const
|
|
1159
|
-
if (!
|
|
1160
|
-
const
|
|
1161
|
-
if (
|
|
1162
|
-
const
|
|
1163
|
-
if (!(!Number.isFinite(
|
|
1164
|
-
for (let
|
|
1165
|
-
const
|
|
1166
|
-
Number.isFinite(
|
|
1151
|
+
const f = u.slice(1), b = {};
|
|
1152
|
+
for (const { mnem: h, unit: P } of f)
|
|
1153
|
+
b[h.toLowerCase()] = P;
|
|
1154
|
+
const p = {};
|
|
1155
|
+
for (const { mnem: h } of f)
|
|
1156
|
+
p[h.toLowerCase()] = { depths: [], values: [] };
|
|
1157
|
+
for (const h of s.lines) {
|
|
1158
|
+
const P = h.trimStart();
|
|
1159
|
+
if (!P || P.startsWith("#")) continue;
|
|
1160
|
+
const A = P.split(/\s+/);
|
|
1161
|
+
if (A.length < 2) continue;
|
|
1162
|
+
const z = Number(A[0]);
|
|
1163
|
+
if (!(!Number.isFinite(z) || z === m))
|
|
1164
|
+
for (let E = 0; E < f.length; E++) {
|
|
1165
|
+
const _ = f[E].mnem.toLowerCase(), y = Number(A[E + 1]);
|
|
1166
|
+
Number.isFinite(y) && y !== m && (p[_].depths.push(z), p[_].values.push(y));
|
|
1167
1167
|
}
|
|
1168
1168
|
}
|
|
1169
|
-
const
|
|
1170
|
-
for (const [
|
|
1171
|
-
|
|
1172
|
-
return Object.keys(
|
|
1169
|
+
const v = {};
|
|
1170
|
+
for (const [h, P] of Object.entries(p))
|
|
1171
|
+
P.depths.length >= 2 && (v[h] = P);
|
|
1172
|
+
return Object.keys(v).length === 0 ? [] : [{ holeId: d, units: b, channels: v }];
|
|
1173
1173
|
}
|
|
1174
1174
|
const dt = [
|
|
1175
1175
|
"#0f172a",
|
|
@@ -1182,11 +1182,11 @@ const dt = [
|
|
|
1182
1182
|
"#db2777",
|
|
1183
1183
|
"#65a30d",
|
|
1184
1184
|
"#9333ea"
|
|
1185
|
-
],
|
|
1185
|
+
], en = { l: 42, r: 4, t: 4, b: 36 }, We = 10, qe = 11, tn = 6;
|
|
1186
1186
|
function mt(e = {}) {
|
|
1187
1187
|
return {
|
|
1188
1188
|
...e,
|
|
1189
|
-
margin:
|
|
1189
|
+
margin: en,
|
|
1190
1190
|
autosize: !0,
|
|
1191
1191
|
width: void 0,
|
|
1192
1192
|
xaxis: {
|
|
@@ -1201,7 +1201,7 @@ function mt(e = {}) {
|
|
|
1201
1201
|
...e.xaxis && e.xaxis.title && e.xaxis.title.font || {},
|
|
1202
1202
|
size: qe
|
|
1203
1203
|
},
|
|
1204
|
-
standoff: (e.xaxis && e.xaxis.title && e.xaxis.title.standoff) ??
|
|
1204
|
+
standoff: (e.xaxis && e.xaxis.title && e.xaxis.title.standoff) ?? tn
|
|
1205
1205
|
}
|
|
1206
1206
|
},
|
|
1207
1207
|
yaxis: {
|
|
@@ -1221,51 +1221,51 @@ function mt(e = {}) {
|
|
|
1221
1221
|
}
|
|
1222
1222
|
};
|
|
1223
1223
|
}
|
|
1224
|
-
function
|
|
1224
|
+
function nn(e, {
|
|
1225
1225
|
tailScale: n = 5,
|
|
1226
1226
|
colorBy: t = null,
|
|
1227
1227
|
palette: r = dt,
|
|
1228
|
-
depthCol: o =
|
|
1228
|
+
depthCol: o = V,
|
|
1229
1229
|
dipCol: i = W,
|
|
1230
1230
|
azCol: s = Y,
|
|
1231
1231
|
template: a = void 0
|
|
1232
1232
|
} = {}) {
|
|
1233
1233
|
const l = e.filter(
|
|
1234
|
-
(
|
|
1234
|
+
(p) => p[o] != null && p[i] != null && p[s] != null
|
|
1235
1235
|
);
|
|
1236
1236
|
if (!l.length)
|
|
1237
1237
|
return { data: [], layout: {} };
|
|
1238
1238
|
const u = {};
|
|
1239
|
-
t && [...new Set(l.map((
|
|
1240
|
-
u[
|
|
1239
|
+
t && [...new Set(l.map((v) => v[t]).filter((v) => v != null))].sort().forEach((v, g) => {
|
|
1240
|
+
u[v] = r[g % r.length];
|
|
1241
1241
|
});
|
|
1242
1242
|
const c = /* @__PURE__ */ new Map(), d = [];
|
|
1243
|
-
for (const
|
|
1244
|
-
const
|
|
1245
|
-
c.has(
|
|
1246
|
-
const
|
|
1247
|
-
|
|
1248
|
-
const
|
|
1243
|
+
for (const p of l) {
|
|
1244
|
+
const v = Number(p[o]), g = Number(p[i]), L = Number(p[s]), C = t ? p[t] ?? "_default" : "_default", j = t ? u[C] ?? "#0f172a" : "#0f172a";
|
|
1245
|
+
c.has(C) || c.set(C, { xs: [], ys: [], dips: [], azs: [], color: j });
|
|
1246
|
+
const H = c.get(C);
|
|
1247
|
+
H.xs.push(g), H.ys.push(v), H.dips.push(g), H.azs.push(L);
|
|
1248
|
+
const $ = L * Math.PI / 180, D = n * (Math.abs(g) / 90), R = Math.sin($) * D, G = Math.cos($) * D;
|
|
1249
1249
|
d.push({
|
|
1250
1250
|
type: "line",
|
|
1251
1251
|
x0: g,
|
|
1252
|
-
y0:
|
|
1253
|
-
x1: g +
|
|
1254
|
-
y1:
|
|
1255
|
-
line: { color:
|
|
1252
|
+
y0: v,
|
|
1253
|
+
x1: g + R,
|
|
1254
|
+
y1: v + G,
|
|
1255
|
+
line: { color: j, width: 2 }
|
|
1256
1256
|
});
|
|
1257
1257
|
}
|
|
1258
1258
|
const m = [], f = t && c.size > 1;
|
|
1259
|
-
for (const [
|
|
1259
|
+
for (const [p, v] of c.entries())
|
|
1260
1260
|
m.push({
|
|
1261
1261
|
type: "scatter",
|
|
1262
|
-
x:
|
|
1263
|
-
y:
|
|
1262
|
+
x: v.xs,
|
|
1263
|
+
y: v.ys,
|
|
1264
1264
|
mode: "markers",
|
|
1265
|
-
name:
|
|
1266
|
-
marker: { size: 8, color:
|
|
1267
|
-
showlegend: f &&
|
|
1268
|
-
customdata:
|
|
1265
|
+
name: p !== "_default" ? String(p) : void 0,
|
|
1266
|
+
marker: { size: 8, color: v.color },
|
|
1267
|
+
showlegend: f && p !== "_default",
|
|
1268
|
+
customdata: v.dips.map((g, L) => [g, v.azs[L]]),
|
|
1269
1269
|
hovertemplate: "Depth: %{y}<br>Dip: %{customdata[0]}<br>Az: %{customdata[1]}<extra></extra>"
|
|
1270
1270
|
});
|
|
1271
1271
|
return { data: m, layout: {
|
|
@@ -1281,21 +1281,21 @@ function tn(e, {
|
|
|
1281
1281
|
},
|
|
1282
1282
|
yaxis: { title: "Depth (m)", autorange: "reversed" },
|
|
1283
1283
|
showlegend: !!f,
|
|
1284
|
-
template: a !== void 0 ? a :
|
|
1284
|
+
template: a !== void 0 ? a : $e
|
|
1285
1285
|
} };
|
|
1286
1286
|
}
|
|
1287
|
-
function
|
|
1287
|
+
function or(e, {
|
|
1288
1288
|
labelCol: n = "structure_type",
|
|
1289
1289
|
palette: t = dt,
|
|
1290
|
-
fromCol: r =
|
|
1291
|
-
toCol: o =
|
|
1290
|
+
fromCol: r = M,
|
|
1291
|
+
toCol: o = O,
|
|
1292
1292
|
template: i = void 0
|
|
1293
1293
|
} = {}) {
|
|
1294
1294
|
const s = e.filter((m) => m[r] != null && m[o] != null && Number(m[o]) > Number(m[r])).filter((m) => {
|
|
1295
1295
|
const f = m[n];
|
|
1296
1296
|
if (f == null) return !1;
|
|
1297
|
-
const
|
|
1298
|
-
return
|
|
1297
|
+
const b = String(f).trim();
|
|
1298
|
+
return b !== "" && !/^(nan|null|none)$/i.test(b);
|
|
1299
1299
|
}).map((m) => ({ from: Number(m[r]), to: Number(m[o]), label: String(m[n]).trim() })).sort((m, f) => m.from - f.from);
|
|
1300
1300
|
if (!s.length)
|
|
1301
1301
|
return { data: [], layout: {} };
|
|
@@ -1328,7 +1328,7 @@ function rr(e, {
|
|
|
1328
1328
|
xaxis: { range: [0, 1], visible: !1, fixedrange: !0 },
|
|
1329
1329
|
yaxis: { title: "Depth (m)", autorange: "reversed" },
|
|
1330
1330
|
showlegend: !1,
|
|
1331
|
-
template: i !== void 0 ? i :
|
|
1331
|
+
template: i !== void 0 ? i : $e
|
|
1332
1332
|
}) };
|
|
1333
1333
|
}
|
|
1334
1334
|
function Xe(e, n) {
|
|
@@ -1339,10 +1339,10 @@ function Xe(e, n) {
|
|
|
1339
1339
|
o && o.length + 1 + i.length > n ? (r.push(o), o = i) : o = o ? `${o} ${i}` : i;
|
|
1340
1340
|
return o && r.push(o), r.join("<br>");
|
|
1341
1341
|
}
|
|
1342
|
-
function
|
|
1342
|
+
function rn(e, {
|
|
1343
1343
|
commentCol: n = "comments",
|
|
1344
|
-
fromCol: t =
|
|
1345
|
-
toCol: r =
|
|
1344
|
+
fromCol: t = M,
|
|
1345
|
+
toCol: r = O,
|
|
1346
1346
|
bgColor: o = "#f1f5f9",
|
|
1347
1347
|
borderColor: i = "#cbd5e1",
|
|
1348
1348
|
textColor: s = "#1e293b",
|
|
@@ -1350,14 +1350,14 @@ function nn(e, {
|
|
|
1350
1350
|
template: l = void 0
|
|
1351
1351
|
} = {}) {
|
|
1352
1352
|
const u = e.filter((g) => g[t] != null && g[r] != null && Number(g[r]) > Number(g[t])).map((g) => {
|
|
1353
|
-
const
|
|
1354
|
-
return { from: Number(g[t]), to: Number(g[r]), comment:
|
|
1355
|
-
}).sort((g,
|
|
1353
|
+
const L = g[n], C = L != null && String(L).trim() !== "" && String(L) !== "null" ? String(L).trim() : "";
|
|
1354
|
+
return { from: Number(g[t]), to: Number(g[r]), comment: C };
|
|
1355
|
+
}).sort((g, L) => g.from - L.from);
|
|
1356
1356
|
if (!u.length)
|
|
1357
1357
|
return { data: [], layout: {} };
|
|
1358
|
-
const c = [], d = [], m = [], f = [],
|
|
1358
|
+
const c = [], d = [], m = [], f = [], b = [];
|
|
1359
1359
|
for (const g of u) {
|
|
1360
|
-
const
|
|
1360
|
+
const L = 0.5 * (g.from + g.to), C = !!g.comment;
|
|
1361
1361
|
c.push({
|
|
1362
1362
|
type: "rect",
|
|
1363
1363
|
xref: "x",
|
|
@@ -1366,10 +1366,10 @@ function nn(e, {
|
|
|
1366
1366
|
x1: 1,
|
|
1367
1367
|
y0: g.from,
|
|
1368
1368
|
y1: g.to,
|
|
1369
|
-
fillcolor:
|
|
1369
|
+
fillcolor: C ? o : "rgba(0,0,0,0)",
|
|
1370
1370
|
line: { color: i, width: 1 },
|
|
1371
1371
|
layer: "below"
|
|
1372
|
-
}),
|
|
1372
|
+
}), C && (d.push(0.5), m.push(L), f.push(Xe(g.comment, a)), b.push(`${g.from.toFixed(3)}–${g.to.toFixed(3)} m<br>${Xe(g.comment, 40)}`));
|
|
1373
1373
|
}
|
|
1374
1374
|
return { data: d.length ? [{
|
|
1375
1375
|
type: "scatter",
|
|
@@ -1379,7 +1379,7 @@ function nn(e, {
|
|
|
1379
1379
|
text: f,
|
|
1380
1380
|
textposition: "middle center",
|
|
1381
1381
|
textfont: { color: s, size: 10 },
|
|
1382
|
-
hovertext:
|
|
1382
|
+
hovertext: b,
|
|
1383
1383
|
hoverinfo: "text",
|
|
1384
1384
|
showlegend: !1
|
|
1385
1385
|
}] : [], layout: mt({
|
|
@@ -1388,17 +1388,17 @@ function nn(e, {
|
|
|
1388
1388
|
xaxis: { range: [0, 1], visible: !1, fixedrange: !0 },
|
|
1389
1389
|
yaxis: { title: "Depth (m)", autorange: "reversed" },
|
|
1390
1390
|
showlegend: !1,
|
|
1391
|
-
template: l !== void 0 ? l :
|
|
1391
|
+
template: l !== void 0 ? l : $e
|
|
1392
1392
|
}) };
|
|
1393
1393
|
}
|
|
1394
|
-
function
|
|
1394
|
+
function sr(e, {
|
|
1395
1395
|
symbolSize: n = 10,
|
|
1396
1396
|
xCol: t = "easting",
|
|
1397
1397
|
yCol: r = "northing"
|
|
1398
1398
|
} = {}) {
|
|
1399
1399
|
const o = e[t] != null ? Number(e[t]) : null, i = e[r] != null ? Number(e[r]) : null, s = e[W] != null ? Number(e[W]) : null, a = e[Y] != null ? Number(e[Y]) : null;
|
|
1400
1400
|
if (o === null || i === null || s === null || a === null) return null;
|
|
1401
|
-
const l = (a - 90 + 360) % 360, u = l * Math.PI / 180, c = a * Math.PI / 180, d = n * Math.sin(u), m = n * Math.cos(u), f = n * 0.4 * (s / 90),
|
|
1401
|
+
const l = (a - 90 + 360) % 360, u = l * Math.PI / 180, c = a * Math.PI / 180, d = n * Math.sin(u), m = n * Math.cos(u), f = n * 0.4 * (s / 90), b = f * Math.sin(c), p = f * Math.cos(c);
|
|
1402
1402
|
return {
|
|
1403
1403
|
strike: l,
|
|
1404
1404
|
dipValue: s,
|
|
@@ -1408,11 +1408,11 @@ function or(e, {
|
|
|
1408
1408
|
strikeY0: i - m,
|
|
1409
1409
|
strikeX1: o + d,
|
|
1410
1410
|
strikeY1: i + m,
|
|
1411
|
-
tickX1: o +
|
|
1412
|
-
tickY1: i +
|
|
1411
|
+
tickX1: o + b,
|
|
1412
|
+
tickY1: i + p
|
|
1413
1413
|
};
|
|
1414
1414
|
}
|
|
1415
|
-
function
|
|
1415
|
+
function on({
|
|
1416
1416
|
holeId: e,
|
|
1417
1417
|
hole: n,
|
|
1418
1418
|
holeOptions: t,
|
|
@@ -1437,7 +1437,7 @@ function ft(e, n) {
|
|
|
1437
1437
|
if (!(typeof n != "string" || !n) && !(e == null || typeof e != "object"))
|
|
1438
1438
|
return e[n];
|
|
1439
1439
|
}
|
|
1440
|
-
function
|
|
1440
|
+
function sn(e, n) {
|
|
1441
1441
|
const t = [], r = /* @__PURE__ */ new Set();
|
|
1442
1442
|
for (const o of e || []) {
|
|
1443
1443
|
const i = ft(o, n);
|
|
@@ -1445,10 +1445,10 @@ function on(e, n) {
|
|
|
1445
1445
|
}
|
|
1446
1446
|
return t;
|
|
1447
1447
|
}
|
|
1448
|
-
function
|
|
1448
|
+
function an(e, n, t) {
|
|
1449
1449
|
return t == null || t === "" ? e || [] : (e || []).filter((r) => ft(r, n) === t);
|
|
1450
1450
|
}
|
|
1451
|
-
function
|
|
1451
|
+
function ln({
|
|
1452
1452
|
chartOptions: e,
|
|
1453
1453
|
showHoleSelect: n,
|
|
1454
1454
|
showPropertySelect: t,
|
|
@@ -1460,11 +1460,11 @@ function an({
|
|
|
1460
1460
|
chartType: r !== !1 && (e || []).length > 1
|
|
1461
1461
|
};
|
|
1462
1462
|
}
|
|
1463
|
-
const
|
|
1464
|
-
function
|
|
1463
|
+
const ht = "markers+line";
|
|
1464
|
+
function cn(e, n) {
|
|
1465
1465
|
var r;
|
|
1466
1466
|
const t = nt(e);
|
|
1467
|
-
return t.some((o) => o.value === n) ? n : ((r = t[0]) == null ? void 0 : r.value) ||
|
|
1467
|
+
return t.some((o) => o.value === n) ? n : ((r = t[0]) == null ? void 0 : r.value) || ht;
|
|
1468
1468
|
}
|
|
1469
1469
|
function Ke(e) {
|
|
1470
1470
|
const n = typeof e == "string" ? e : e.holeId, t = typeof e == "string" ? e : e.label || e.holeId;
|
|
@@ -1474,11 +1474,11 @@ function Ze(e) {
|
|
|
1474
1474
|
const n = typeof e == "string" ? e : e.value, t = typeof e == "string" ? e : e.label ?? e.value;
|
|
1475
1475
|
return [n, t];
|
|
1476
1476
|
}
|
|
1477
|
-
function
|
|
1477
|
+
function un({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r }) {
|
|
1478
1478
|
const o = (e == null ? void 0 : e.kind) || "hole";
|
|
1479
1479
|
if (o === "field") {
|
|
1480
1480
|
const s = e.value ?? "", a = e.options || [], l = e.label || "Selection";
|
|
1481
|
-
return /* @__PURE__ */
|
|
1481
|
+
return /* @__PURE__ */ w(
|
|
1482
1482
|
"select",
|
|
1483
1483
|
{
|
|
1484
1484
|
className: "plot-select plot-select--field",
|
|
@@ -1487,20 +1487,20 @@ function cn({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r
|
|
|
1487
1487
|
disabled: a.length === 0,
|
|
1488
1488
|
"aria-label": l,
|
|
1489
1489
|
children: [
|
|
1490
|
-
a.length === 0 && /* @__PURE__ */
|
|
1491
|
-
!s && a.length > 0 && /* @__PURE__ */
|
|
1490
|
+
a.length === 0 && /* @__PURE__ */ S("option", { value: "", children: "—" }),
|
|
1491
|
+
!s && a.length > 0 && /* @__PURE__ */ S("option", { value: "", disabled: !0, hidden: !0, children: `Select ${l.toLowerCase()}` }),
|
|
1492
1492
|
a.map((u) => {
|
|
1493
1493
|
const [c, d] = Ze(u);
|
|
1494
|
-
return /* @__PURE__ */
|
|
1494
|
+
return /* @__PURE__ */ S("option", { value: c, children: d }, c);
|
|
1495
1495
|
})
|
|
1496
1496
|
]
|
|
1497
1497
|
}
|
|
1498
1498
|
);
|
|
1499
1499
|
}
|
|
1500
1500
|
if (o === "group+hole") {
|
|
1501
|
-
const s = e.groupBy, a = e.groupValue ?? "", l = e.groupLabel || "Group", u = e.groupOptions ||
|
|
1502
|
-
return /* @__PURE__ */
|
|
1503
|
-
/* @__PURE__ */
|
|
1501
|
+
const s = e.groupBy, a = e.groupValue ?? "", l = e.groupLabel || "Group", u = e.groupOptions || sn(n, s), c = an(n, s, a);
|
|
1502
|
+
return /* @__PURE__ */ w(Ct, { children: [
|
|
1503
|
+
/* @__PURE__ */ w(
|
|
1504
1504
|
"select",
|
|
1505
1505
|
{
|
|
1506
1506
|
className: "plot-select plot-select--group",
|
|
@@ -1509,20 +1509,20 @@ function cn({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r
|
|
|
1509
1509
|
disabled: u.length === 0,
|
|
1510
1510
|
"aria-label": l,
|
|
1511
1511
|
children: [
|
|
1512
|
-
u.length === 0 && /* @__PURE__ */
|
|
1512
|
+
u.length === 0 && /* @__PURE__ */ w("option", { value: "", children: [
|
|
1513
1513
|
"No ",
|
|
1514
1514
|
l.toLowerCase(),
|
|
1515
1515
|
"s"
|
|
1516
1516
|
] }),
|
|
1517
|
-
!a && u.length > 0 && /* @__PURE__ */
|
|
1517
|
+
!a && u.length > 0 && /* @__PURE__ */ S("option", { value: "", disabled: !0, hidden: !0, children: `Select ${l.toLowerCase()}` }),
|
|
1518
1518
|
u.map((d) => {
|
|
1519
1519
|
const [m, f] = Ze(d);
|
|
1520
|
-
return /* @__PURE__ */
|
|
1520
|
+
return /* @__PURE__ */ S("option", { value: m, children: f }, m);
|
|
1521
1521
|
})
|
|
1522
1522
|
]
|
|
1523
1523
|
}
|
|
1524
1524
|
),
|
|
1525
|
-
/* @__PURE__ */
|
|
1525
|
+
/* @__PURE__ */ w(
|
|
1526
1526
|
"select",
|
|
1527
1527
|
{
|
|
1528
1528
|
className: "plot-select plot-select--hole",
|
|
@@ -1531,11 +1531,11 @@ function cn({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r
|
|
|
1531
1531
|
disabled: c.length === 0,
|
|
1532
1532
|
"aria-label": "Hole",
|
|
1533
1533
|
children: [
|
|
1534
|
-
c.length === 0 && /* @__PURE__ */
|
|
1535
|
-
!t && c.length > 0 && /* @__PURE__ */
|
|
1534
|
+
c.length === 0 && /* @__PURE__ */ S("option", { value: "", children: "No holes" }),
|
|
1535
|
+
!t && c.length > 0 && /* @__PURE__ */ S("option", { value: "", disabled: !0, hidden: !0, children: "Select a hole" }),
|
|
1536
1536
|
c.map((d) => {
|
|
1537
1537
|
const [m, f] = Ke(d);
|
|
1538
|
-
return /* @__PURE__ */
|
|
1538
|
+
return /* @__PURE__ */ S("option", { value: m, children: f }, m);
|
|
1539
1539
|
})
|
|
1540
1540
|
]
|
|
1541
1541
|
}
|
|
@@ -1543,7 +1543,7 @@ function cn({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r
|
|
|
1543
1543
|
] });
|
|
1544
1544
|
}
|
|
1545
1545
|
const i = n.length > 0;
|
|
1546
|
-
return /* @__PURE__ */
|
|
1546
|
+
return /* @__PURE__ */ w(
|
|
1547
1547
|
"select",
|
|
1548
1548
|
{
|
|
1549
1549
|
className: "plot-select plot-select--hole",
|
|
@@ -1552,132 +1552,165 @@ function cn({ selector: e, holeOptions: n, selectedHoleId: t, onConfigChange: r
|
|
|
1552
1552
|
disabled: !i,
|
|
1553
1553
|
"aria-label": "Hole",
|
|
1554
1554
|
children: [
|
|
1555
|
-
!i && /* @__PURE__ */
|
|
1556
|
-
!t && i && /* @__PURE__ */
|
|
1555
|
+
!i && /* @__PURE__ */ S("option", { value: "", children: "No holes loaded" }),
|
|
1556
|
+
!t && i && /* @__PURE__ */ S("option", { value: "", disabled: !0, hidden: !0, children: "Select a hole" }),
|
|
1557
1557
|
n.map((s) => {
|
|
1558
1558
|
const [a, l] = Ke(s);
|
|
1559
|
-
return /* @__PURE__ */
|
|
1559
|
+
return /* @__PURE__ */ S("option", { value: a, children: l }, a);
|
|
1560
1560
|
})
|
|
1561
1561
|
]
|
|
1562
1562
|
}
|
|
1563
1563
|
);
|
|
1564
1564
|
}
|
|
1565
|
-
function
|
|
1565
|
+
function ir({
|
|
1566
1566
|
config: e,
|
|
1567
1567
|
graph: n,
|
|
1568
1568
|
holeOptions: t = [],
|
|
1569
1569
|
propertyOptions: r = [],
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1570
|
+
propertyMeta: o,
|
|
1571
|
+
onConfigChange: i,
|
|
1572
|
+
template: s,
|
|
1573
|
+
showHoleSelect: a = !0,
|
|
1574
|
+
showPropertySelect: l = !0,
|
|
1575
|
+
showChartTypeSelect: u = !0,
|
|
1576
|
+
holeSelector: c
|
|
1576
1577
|
}) {
|
|
1577
|
-
const
|
|
1578
|
-
holeId:
|
|
1579
|
-
hole:
|
|
1578
|
+
const d = ye(null), m = ye(null), f = n == null ? void 0 : n.hole, b = (n == null ? void 0 : n.points) || [], p = (e == null ? void 0 : e.property) || "", v = o == null ? void 0 : o[p], g = (e == null ? void 0 : e.chartType) || ht, L = (e == null ? void 0 : e.holeId) || "", C = (n == null ? void 0 : n.displayType) || (n != null && n.isComment ? ze : n != null && n.isCategorical ? Ge : At), j = nt(C), H = cn(C, g), [$, D] = K(""), [R, G] = K({ width: 0, height: 0 }), h = on({
|
|
1579
|
+
holeId: L,
|
|
1580
|
+
hole: f,
|
|
1580
1581
|
holeOptions: t,
|
|
1581
|
-
property:
|
|
1582
|
+
property: p,
|
|
1582
1583
|
propertyOptions: r,
|
|
1583
|
-
displayType:
|
|
1584
|
-
points:
|
|
1585
|
-
renderError:
|
|
1586
|
-
}),
|
|
1587
|
-
chartOptions:
|
|
1588
|
-
showHoleSelect:
|
|
1589
|
-
showPropertySelect:
|
|
1590
|
-
showChartTypeSelect:
|
|
1591
|
-
}),
|
|
1592
|
-
return
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
const
|
|
1597
|
-
|
|
1584
|
+
displayType: C,
|
|
1585
|
+
points: b,
|
|
1586
|
+
renderError: $
|
|
1587
|
+
}), P = h.kind !== "chart", A = ln({
|
|
1588
|
+
chartOptions: j,
|
|
1589
|
+
showHoleSelect: a,
|
|
1590
|
+
showPropertySelect: l,
|
|
1591
|
+
showChartTypeSelect: u
|
|
1592
|
+
}), z = r.length > 0;
|
|
1593
|
+
return te(() => {
|
|
1594
|
+
const E = d.current;
|
|
1595
|
+
if (!E || typeof ResizeObserver > "u") return;
|
|
1596
|
+
let _ = 0;
|
|
1597
|
+
const y = () => {
|
|
1598
|
+
_ && cancelAnimationFrame(_), _ = requestAnimationFrame(() => {
|
|
1599
|
+
const F = Math.max(0, Math.floor(E.clientWidth)), T = Math.max(0, Math.floor(E.clientHeight));
|
|
1600
|
+
G((x) => x.width === F && x.height === T ? x : { width: F, height: T });
|
|
1601
|
+
});
|
|
1602
|
+
};
|
|
1603
|
+
y();
|
|
1604
|
+
const I = new ResizeObserver(y);
|
|
1605
|
+
return I.observe(E), () => {
|
|
1606
|
+
_ && cancelAnimationFrame(_), I.disconnect();
|
|
1607
|
+
};
|
|
1608
|
+
}, []), te(() => {
|
|
1609
|
+
if (h.kind !== "chart") return;
|
|
1610
|
+
const E = m.current;
|
|
1611
|
+
if (!E || R.width <= 0 || R.height <= 0) return;
|
|
1612
|
+
const _ = C === ze, y = C === tt;
|
|
1613
|
+
let I;
|
|
1598
1614
|
try {
|
|
1599
|
-
|
|
1600
|
-
points:
|
|
1601
|
-
isCategorical:
|
|
1602
|
-
property:
|
|
1603
|
-
chartType:
|
|
1604
|
-
template:
|
|
1615
|
+
_ ? I = rn(b, { commentCol: p, fromCol: "from", toCol: "to" }) : y ? I = nn(b) : I = St({
|
|
1616
|
+
points: b,
|
|
1617
|
+
isCategorical: C === Ge,
|
|
1618
|
+
property: p,
|
|
1619
|
+
chartType: H,
|
|
1620
|
+
template: s,
|
|
1621
|
+
meta: v
|
|
1605
1622
|
});
|
|
1606
1623
|
} catch (x) {
|
|
1607
|
-
console.error("Plot build error", x),
|
|
1624
|
+
console.error("Plot build error", x), D((x == null ? void 0 : x.message) || "Plot build error");
|
|
1608
1625
|
return;
|
|
1609
1626
|
}
|
|
1610
|
-
if ((!(
|
|
1627
|
+
if ((!(I != null && I.data) || I.data.length === 0) && !_)
|
|
1611
1628
|
return;
|
|
1612
|
-
const
|
|
1629
|
+
const F = {
|
|
1613
1630
|
displayModeBar: !0,
|
|
1614
|
-
responsive: !
|
|
1615
|
-
useResizeHandler: !0,
|
|
1631
|
+
responsive: !1,
|
|
1616
1632
|
modeBarButtonsToRemove: ["select2d", "lasso2d", "autoScale2d"]
|
|
1633
|
+
}, T = {
|
|
1634
|
+
...I.layout,
|
|
1635
|
+
autosize: !1,
|
|
1636
|
+
width: R.width,
|
|
1637
|
+
height: R.height
|
|
1617
1638
|
};
|
|
1618
1639
|
try {
|
|
1619
|
-
|
|
1620
|
-
S && S.parentElement && Ee.Plots.resize(S);
|
|
1621
|
-
});
|
|
1640
|
+
D(""), Oe.react(E, I.data, T, F);
|
|
1622
1641
|
} catch (x) {
|
|
1623
|
-
console.error("Plot render error", x),
|
|
1642
|
+
console.error("Plot render error", x), D((x == null ? void 0 : x.message) || "Plot render error");
|
|
1624
1643
|
}
|
|
1625
1644
|
return () => {
|
|
1626
|
-
if (
|
|
1645
|
+
if (E)
|
|
1627
1646
|
try {
|
|
1628
|
-
|
|
1647
|
+
Oe.purge(E);
|
|
1629
1648
|
} catch (x) {
|
|
1630
1649
|
console.warn("Plot purge error", x);
|
|
1631
1650
|
}
|
|
1632
1651
|
};
|
|
1633
|
-
}, [
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1652
|
+
}, [
|
|
1653
|
+
h.kind,
|
|
1654
|
+
f,
|
|
1655
|
+
p,
|
|
1656
|
+
v,
|
|
1657
|
+
H,
|
|
1658
|
+
C,
|
|
1659
|
+
b,
|
|
1660
|
+
s,
|
|
1661
|
+
R.width,
|
|
1662
|
+
R.height
|
|
1663
|
+
]), te(() => {
|
|
1664
|
+
const E = m.current;
|
|
1665
|
+
if (!E || typeof ResizeObserver > "u") return;
|
|
1666
|
+
const _ = new ResizeObserver(() => {
|
|
1637
1667
|
try {
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1668
|
+
if (E && E.data) {
|
|
1669
|
+
const y = Math.max(0, Math.floor(E.clientWidth)), I = Math.max(0, Math.floor(E.clientHeight));
|
|
1670
|
+
y > 0 && I > 0 && Oe.relayout(E, { width: y, height: I, autosize: !1 });
|
|
1671
|
+
}
|
|
1672
|
+
} catch (y) {
|
|
1673
|
+
console.warn("Plot resize error", y);
|
|
1641
1674
|
}
|
|
1642
1675
|
});
|
|
1643
|
-
return
|
|
1644
|
-
}, [
|
|
1645
|
-
/* @__PURE__ */
|
|
1646
|
-
|
|
1647
|
-
selector:
|
|
1676
|
+
return _.observe(E), () => _.disconnect();
|
|
1677
|
+
}, [h.kind]), /* @__PURE__ */ w("div", { className: `plot-card${P ? " empty" : ""}`, children: [
|
|
1678
|
+
/* @__PURE__ */ w("header", { className: "plot-card__controls", children: [
|
|
1679
|
+
A.hole && /* @__PURE__ */ S("div", { className: "plot-title", children: un({
|
|
1680
|
+
selector: c,
|
|
1648
1681
|
holeOptions: t,
|
|
1649
|
-
selectedHoleId:
|
|
1650
|
-
onConfigChange:
|
|
1682
|
+
selectedHoleId: L,
|
|
1683
|
+
onConfigChange: i
|
|
1651
1684
|
}) }),
|
|
1652
|
-
(
|
|
1653
|
-
|
|
1685
|
+
(A.property || A.chartType) && /* @__PURE__ */ w("div", { className: "plot-controls column", children: [
|
|
1686
|
+
A.property && /* @__PURE__ */ w(
|
|
1654
1687
|
"select",
|
|
1655
1688
|
{
|
|
1656
1689
|
className: "plot-select plot-select--property",
|
|
1657
|
-
value:
|
|
1658
|
-
onChange: (
|
|
1659
|
-
disabled: !
|
|
1690
|
+
value: p,
|
|
1691
|
+
onChange: (E) => i && i({ property: E.target.value }),
|
|
1692
|
+
disabled: !z,
|
|
1660
1693
|
"aria-label": "Property",
|
|
1661
1694
|
children: [
|
|
1662
|
-
!
|
|
1663
|
-
!
|
|
1664
|
-
r.map((
|
|
1695
|
+
!z && /* @__PURE__ */ S("option", { value: "", children: "—" }),
|
|
1696
|
+
!p && z && /* @__PURE__ */ S("option", { value: "", disabled: !0, hidden: !0, children: "Select a property" }),
|
|
1697
|
+
r.map((E) => /* @__PURE__ */ S("option", { value: E, children: Tt(E, o == null ? void 0 : o[E]) }, E))
|
|
1665
1698
|
]
|
|
1666
1699
|
}
|
|
1667
1700
|
),
|
|
1668
|
-
|
|
1701
|
+
A.chartType && /* @__PURE__ */ S(
|
|
1669
1702
|
"select",
|
|
1670
1703
|
{
|
|
1671
1704
|
className: "plot-select plot-select--chart-type",
|
|
1672
|
-
value:
|
|
1673
|
-
onChange: (
|
|
1705
|
+
value: H,
|
|
1706
|
+
onChange: (E) => i && i({ chartType: E.target.value }),
|
|
1674
1707
|
"aria-label": "Chart type",
|
|
1675
|
-
children:
|
|
1708
|
+
children: j.map((E) => /* @__PURE__ */ S("option", { value: E.value, children: E.label }, E.value))
|
|
1676
1709
|
}
|
|
1677
1710
|
)
|
|
1678
1711
|
] })
|
|
1679
1712
|
] }),
|
|
1680
|
-
/* @__PURE__ */
|
|
1713
|
+
/* @__PURE__ */ S("div", { className: "plot-card__body", ref: d, children: h.kind === "chart" ? /* @__PURE__ */ S("div", { className: "plotly-chart", ref: m }) : /* @__PURE__ */ S("div", { className: "placeholder", children: h.text }) })
|
|
1681
1714
|
] });
|
|
1682
1715
|
}
|
|
1683
1716
|
function Je(e, n) {
|
|
@@ -1694,7 +1727,7 @@ function Je(e, n) {
|
|
|
1694
1727
|
}
|
|
1695
1728
|
return Array.from(t.values());
|
|
1696
1729
|
}
|
|
1697
|
-
function
|
|
1730
|
+
function dn(e, n) {
|
|
1698
1731
|
if (!e || !n) return [];
|
|
1699
1732
|
const t = /* @__PURE__ */ new Set(), r = [];
|
|
1700
1733
|
for (const o of e.points || []) {
|
|
@@ -1705,146 +1738,146 @@ function un(e, n) {
|
|
|
1705
1738
|
}
|
|
1706
1739
|
return r;
|
|
1707
1740
|
}
|
|
1708
|
-
function
|
|
1741
|
+
function ar({
|
|
1709
1742
|
initialFocusedHoleId: e = "",
|
|
1710
1743
|
sourceFile: n = null,
|
|
1711
1744
|
extraHoles: t = [],
|
|
1712
1745
|
plotCount: r = 4
|
|
1713
1746
|
} = {}) {
|
|
1714
|
-
const [o, i] = K([]), [s, a] = K([]), [l, u] = K([]), [c, d] = K([]), [m, f] = K([]), [
|
|
1715
|
-
|
|
1716
|
-
!n ||
|
|
1717
|
-
if (!
|
|
1718
|
-
const
|
|
1719
|
-
a(
|
|
1720
|
-
holeIds:
|
|
1721
|
-
focusedHoleId:
|
|
1747
|
+
const [o, i] = K([]), [s, a] = K([]), [l, u] = K([]), [c, d] = K([]), [m, f] = K([]), [b, p] = K({}), [v, g] = K(""), [L, C] = K([]), [j, H] = K(""), [$, D] = K(e || ""), [R, G] = K([]), h = ye(null);
|
|
1748
|
+
te(() => {
|
|
1749
|
+
!n || h.current === n || (h.current = n, Ft(n).then((_) => {
|
|
1750
|
+
if (!_) return;
|
|
1751
|
+
const y = Array.from(new Map(_.map((I) => [I.holeId, I])).values());
|
|
1752
|
+
a(y), C(it({
|
|
1753
|
+
holeIds: y.map((I) => I.holeId),
|
|
1754
|
+
focusedHoleId: $,
|
|
1722
1755
|
plotCount: r,
|
|
1723
1756
|
defaultProp: "",
|
|
1724
1757
|
categoricalProps: c,
|
|
1725
1758
|
commentProps: m,
|
|
1726
1759
|
numericDefaultChartType: "markers+line"
|
|
1727
1760
|
}));
|
|
1728
|
-
}).catch((
|
|
1729
|
-
console.info("Assay metadata load skipped:",
|
|
1761
|
+
}).catch((_) => {
|
|
1762
|
+
console.info("Assay metadata load skipped:", _.message);
|
|
1730
1763
|
}));
|
|
1731
|
-
}, [n,
|
|
1764
|
+
}, [n, $, r, c, m]), te(() => {
|
|
1732
1765
|
if (!(t != null && t.length)) return;
|
|
1733
|
-
const
|
|
1734
|
-
a((
|
|
1735
|
-
const
|
|
1736
|
-
return F.length ? [...
|
|
1766
|
+
const _ = t.map((y) => ({ holeId: y.id || y.holeId })).filter((y) => y.holeId);
|
|
1767
|
+
a((y) => {
|
|
1768
|
+
const I = new Set(y.map((T) => T.holeId)), F = _.filter((T) => !I.has(T.holeId));
|
|
1769
|
+
return F.length ? [...y, ...F] : y;
|
|
1737
1770
|
});
|
|
1738
|
-
}, [t]),
|
|
1739
|
-
|
|
1740
|
-
}, [
|
|
1771
|
+
}, [t]), te(() => {
|
|
1772
|
+
H((_) => _ && _.startsWith("Loading ") && _.includes(" for hole ") ? _ : "");
|
|
1773
|
+
}, [L]), te(() => {
|
|
1741
1774
|
if (!s.length) {
|
|
1742
|
-
|
|
1775
|
+
C([]);
|
|
1743
1776
|
return;
|
|
1744
1777
|
}
|
|
1745
|
-
const
|
|
1746
|
-
|
|
1778
|
+
const _ = st(s.map((y) => y.holeId), $);
|
|
1779
|
+
C((y) => Array.from({ length: r }).map((F, T) => {
|
|
1747
1780
|
var X;
|
|
1748
|
-
const
|
|
1749
|
-
property:
|
|
1750
|
-
chartType:
|
|
1781
|
+
const x = y[T] || {}, B = s.some((ae) => ae.holeId === x.holeId) ? x.holeId : _[T] || ((X = s[T]) == null ? void 0 : X.holeId) || "", k = x.property || v, q = Se({
|
|
1782
|
+
property: k,
|
|
1783
|
+
chartType: x.chartType,
|
|
1751
1784
|
categoricalProps: c,
|
|
1752
1785
|
commentProps: m,
|
|
1753
1786
|
numericDefaultChartType: "markers+line"
|
|
1754
1787
|
});
|
|
1755
|
-
return { holeId:
|
|
1788
|
+
return { holeId: B, property: k, chartType: q };
|
|
1756
1789
|
}));
|
|
1757
|
-
}, [s,
|
|
1790
|
+
}, [s, $, v, c, m, r]), te(() => {
|
|
1758
1791
|
if (!n) return;
|
|
1759
|
-
|
|
1760
|
-
const
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
const
|
|
1764
|
-
[...
|
|
1792
|
+
L.map((y) => y.holeId).filter(Boolean).forEach((y) => {
|
|
1793
|
+
const I = o.some((T) => (T.id || T.holeId) === y), F = R.includes(y);
|
|
1794
|
+
I || F || (G((T) => [...T, y]), $t(n, y).then((T) => {
|
|
1795
|
+
G((x) => x.filter((B) => B !== y)), T && i((x) => {
|
|
1796
|
+
const B = Je(
|
|
1797
|
+
[...x.filter((q) => (q.id || q.holeId) !== y), T],
|
|
1765
1798
|
t
|
|
1766
|
-
),
|
|
1767
|
-
return u(
|
|
1799
|
+
), k = Te(B);
|
|
1800
|
+
return u(k.numericProps), d(k.categoricalProps), f(k.commentProps), p(k.columnMeta), !v && k.defaultProp && (g(k.defaultProp), C((q) => q.map((X) => ({
|
|
1768
1801
|
...X,
|
|
1769
|
-
property: X.property ||
|
|
1770
|
-
chartType:
|
|
1771
|
-
property: X.property ||
|
|
1802
|
+
property: X.property || k.defaultProp,
|
|
1803
|
+
chartType: Se({
|
|
1804
|
+
property: X.property || k.defaultProp,
|
|
1772
1805
|
chartType: X.chartType,
|
|
1773
|
-
categoricalProps:
|
|
1774
|
-
commentProps:
|
|
1806
|
+
categoricalProps: k.categoricalProps,
|
|
1807
|
+
commentProps: k.commentProps,
|
|
1775
1808
|
numericDefaultChartType: "markers+line"
|
|
1776
1809
|
})
|
|
1777
|
-
})))),
|
|
1810
|
+
})))), B;
|
|
1778
1811
|
});
|
|
1779
|
-
}).catch((
|
|
1780
|
-
console.error(
|
|
1812
|
+
}).catch((T) => {
|
|
1813
|
+
console.error(T), G((x) => x.filter((B) => B !== y)), H(T.message || `Error loading hole ${y}`);
|
|
1781
1814
|
}));
|
|
1782
1815
|
});
|
|
1783
|
-
}, [
|
|
1784
|
-
t != null && t.length && i((
|
|
1785
|
-
if (!
|
|
1786
|
-
const F =
|
|
1787
|
-
return u(F.numericProps), d(F.categoricalProps), f(F.commentProps),
|
|
1816
|
+
}, [L, n, o, R, v, t]), te(() => {
|
|
1817
|
+
t != null && t.length && i((_) => {
|
|
1818
|
+
if (!_.length) {
|
|
1819
|
+
const F = Te(t);
|
|
1820
|
+
return u(F.numericProps), d(F.categoricalProps), f(F.commentProps), p(F.columnMeta), !v && F.defaultProp && g(F.defaultProp), t;
|
|
1788
1821
|
}
|
|
1789
|
-
const
|
|
1790
|
-
return u(
|
|
1822
|
+
const y = Je(_, t), I = Te(y);
|
|
1823
|
+
return u(I.numericProps), d(I.categoricalProps), f(I.commentProps), p(I.columnMeta), !v && I.defaultProp && g(I.defaultProp), y;
|
|
1791
1824
|
});
|
|
1792
1825
|
}, [t]);
|
|
1793
|
-
const
|
|
1826
|
+
const P = ee(
|
|
1794
1827
|
() => [...l, ...c, ...m],
|
|
1795
1828
|
[l, c, m]
|
|
1796
|
-
),
|
|
1797
|
-
() => s.map((
|
|
1829
|
+
), A = ee(
|
|
1830
|
+
() => s.map((_) => ({ holeId: _.holeId, label: _.holeId })).sort((_, y) => _.label.localeCompare(y.label)),
|
|
1798
1831
|
[s]
|
|
1799
|
-
),
|
|
1800
|
-
const
|
|
1801
|
-
return Array.from({ length: r }).map((
|
|
1802
|
-
const F =
|
|
1803
|
-
let
|
|
1804
|
-
|
|
1805
|
-
const
|
|
1832
|
+
), z = ee(() => {
|
|
1833
|
+
const _ = [...l, ...c, ...m];
|
|
1834
|
+
return Array.from({ length: r }).map((y, I) => {
|
|
1835
|
+
const F = L[I] || {}, T = o.find((fe) => (fe.id || fe.holeId) === F.holeId) || null, x = T ? _.filter((fe) => Lt(T, fe)) : _;
|
|
1836
|
+
let B = F.property || v;
|
|
1837
|
+
T && !x.includes(B) && (B = x[0] || B);
|
|
1838
|
+
const k = m.includes(B), q = !k && c.includes(B), X = !k && !q && B === "dip", ae = k ? "comment" : X ? "tadpole" : q ? "categorical" : "numeric", _e = X ? "tadpole" : F.chartType || (k ? "comment" : q ? "categorical" : "markers+line"), me = F.holeId || (T == null ? void 0 : T.id) || (T == null ? void 0 : T.holeId) || "", Me = X ? (T == null ? void 0 : T.points) || [] : k ? dn(T, B) : It(T, B, q);
|
|
1806
1839
|
return {
|
|
1807
|
-
config: { holeId: me, property:
|
|
1808
|
-
hole:
|
|
1809
|
-
loading:
|
|
1840
|
+
config: { holeId: me, property: B, chartType: _e },
|
|
1841
|
+
hole: T,
|
|
1842
|
+
loading: R.includes(F.holeId),
|
|
1810
1843
|
isCategorical: q,
|
|
1811
|
-
isComment:
|
|
1844
|
+
isComment: k,
|
|
1812
1845
|
isTadpole: X,
|
|
1813
1846
|
displayType: ae,
|
|
1814
|
-
points:
|
|
1815
|
-
propertyOptions:
|
|
1847
|
+
points: Me,
|
|
1848
|
+
propertyOptions: x,
|
|
1816
1849
|
label: me
|
|
1817
1850
|
};
|
|
1818
1851
|
});
|
|
1819
|
-
}, [
|
|
1820
|
-
|
|
1821
|
-
const F = [...
|
|
1822
|
-
return
|
|
1823
|
-
property:
|
|
1824
|
-
chartType:
|
|
1852
|
+
}, [L, o, v, c, m, R, r, l]), E = (_, y) => {
|
|
1853
|
+
C((I) => {
|
|
1854
|
+
const F = [...I], x = { ...F[_] || {}, ...y };
|
|
1855
|
+
return y.property && (x.chartType = Se({
|
|
1856
|
+
property: y.property,
|
|
1857
|
+
chartType: x.chartType,
|
|
1825
1858
|
categoricalProps: c,
|
|
1826
1859
|
commentProps: m,
|
|
1827
1860
|
numericDefaultChartType: "markers+line"
|
|
1828
|
-
})), F[
|
|
1861
|
+
})), F[_] = x, F;
|
|
1829
1862
|
});
|
|
1830
1863
|
};
|
|
1831
1864
|
return {
|
|
1832
|
-
error:
|
|
1833
|
-
focusedHoleId:
|
|
1834
|
-
setFocusedHoleId:
|
|
1835
|
-
setError:
|
|
1865
|
+
error: j,
|
|
1866
|
+
focusedHoleId: $,
|
|
1867
|
+
setFocusedHoleId: D,
|
|
1868
|
+
setError: H,
|
|
1836
1869
|
holeCount: s.length,
|
|
1837
1870
|
numericProps: l,
|
|
1838
1871
|
categoricalProps: c,
|
|
1839
1872
|
commentProps: m,
|
|
1840
|
-
columnMeta:
|
|
1841
|
-
propertyOptions:
|
|
1842
|
-
labeledHoleOptions:
|
|
1843
|
-
traceGraphs:
|
|
1844
|
-
handleConfigChange:
|
|
1873
|
+
columnMeta: b,
|
|
1874
|
+
propertyOptions: P,
|
|
1875
|
+
labeledHoleOptions: A,
|
|
1876
|
+
traceGraphs: z,
|
|
1877
|
+
handleConfigChange: E
|
|
1845
1878
|
};
|
|
1846
1879
|
}
|
|
1847
|
-
function
|
|
1880
|
+
function pt(e) {
|
|
1848
1881
|
return Array.isArray(e) ? e : [];
|
|
1849
1882
|
}
|
|
1850
1883
|
function De(e) {
|
|
@@ -1859,9 +1892,9 @@ function gt(e = {}) {
|
|
|
1859
1892
|
z: De(e.z)
|
|
1860
1893
|
};
|
|
1861
1894
|
}
|
|
1862
|
-
function
|
|
1895
|
+
function mn(e = [], n = [0, 0], t = 0) {
|
|
1863
1896
|
const [r, o] = n, i = Number(t) * Math.PI / 180, s = Math.cos(i), a = Math.sin(i);
|
|
1864
|
-
return
|
|
1897
|
+
return pt(e).map(gt).map((l) => {
|
|
1865
1898
|
if (!Number.isFinite(l.x) || !Number.isFinite(l.y)) return { ...l };
|
|
1866
1899
|
const u = l.x - r, c = l.y - o;
|
|
1867
1900
|
return {
|
|
@@ -1871,12 +1904,12 @@ function dn(e = [], n = [0, 0], t = 0) {
|
|
|
1871
1904
|
};
|
|
1872
1905
|
});
|
|
1873
1906
|
}
|
|
1874
|
-
function
|
|
1875
|
-
const o =
|
|
1907
|
+
function fn(e = [], n = [0, 0], t = 0, r = 50) {
|
|
1908
|
+
const o = mn(e, n, t), i = 0.5 * Number(r || 0);
|
|
1876
1909
|
return !Number.isFinite(i) || i <= 0 ? o : o.filter((s) => Number.isFinite(s.across) && Math.abs(s.across) <= i);
|
|
1877
1910
|
}
|
|
1878
|
-
function
|
|
1879
|
-
let r =
|
|
1911
|
+
function lr(e = [], n = null, t = null) {
|
|
1912
|
+
let r = pt(e).map(gt);
|
|
1880
1913
|
if (Array.isArray(n) && n.length === 2) {
|
|
1881
1914
|
const [o, i] = n;
|
|
1882
1915
|
r = r.filter((s) => Number.isFinite(s.z) && s.z <= Number(o) && s.z >= Number(i));
|
|
@@ -1886,27 +1919,27 @@ function ar(e = [], n = null, t = null) {
|
|
|
1886
1919
|
color_value: o == null ? void 0 : o[t]
|
|
1887
1920
|
}))), r;
|
|
1888
1921
|
}
|
|
1889
|
-
function
|
|
1890
|
-
let i =
|
|
1922
|
+
function cr(e = [], n = [0, 0], t = 0, r = 50, o = null) {
|
|
1923
|
+
let i = fn(e, n, t, r);
|
|
1891
1924
|
return o && (i = i.map((s) => ({
|
|
1892
1925
|
...s,
|
|
1893
1926
|
color_value: s == null ? void 0 : s[o]
|
|
1894
1927
|
}))), i;
|
|
1895
1928
|
}
|
|
1896
|
-
function
|
|
1929
|
+
function Ue(e) {
|
|
1897
1930
|
return Array.isArray(e) ? e : [];
|
|
1898
1931
|
}
|
|
1899
|
-
function
|
|
1932
|
+
function He(e = {}) {
|
|
1900
1933
|
return e.hole_id ?? e.holeId ?? e.id;
|
|
1901
1934
|
}
|
|
1902
1935
|
function ue(e, n = void 0) {
|
|
1903
1936
|
const t = Number(e);
|
|
1904
1937
|
return Number.isFinite(t) ? t : n;
|
|
1905
1938
|
}
|
|
1906
|
-
function
|
|
1939
|
+
function ur(e = [], n = null) {
|
|
1907
1940
|
const t = /* @__PURE__ */ new Map();
|
|
1908
|
-
|
|
1909
|
-
const i =
|
|
1941
|
+
Ue(e).forEach((o) => {
|
|
1942
|
+
const i = He(o);
|
|
1910
1943
|
if (i == null || `${i}`.trim() === "") return;
|
|
1911
1944
|
const s = `${i}`;
|
|
1912
1945
|
t.has(s) || t.set(s, []), t.get(s).push(o);
|
|
@@ -1923,9 +1956,9 @@ function cr(e = [], n = null) {
|
|
|
1923
1956
|
n && (a.color = s.map((l) => l == null ? void 0 : l[n])), r.push(a);
|
|
1924
1957
|
}), r;
|
|
1925
1958
|
}
|
|
1926
|
-
function
|
|
1927
|
-
return
|
|
1928
|
-
hole_id:
|
|
1959
|
+
function dr(e = [], n = 1, t = null) {
|
|
1960
|
+
return Ue(e).map((r) => ({
|
|
1961
|
+
hole_id: He(r),
|
|
1929
1962
|
from: r == null ? void 0 : r.from,
|
|
1930
1963
|
to: r == null ? void 0 : r.to,
|
|
1931
1964
|
radius: n,
|
|
@@ -1933,14 +1966,14 @@ function ur(e = [], n = 1, t = null) {
|
|
|
1933
1966
|
value: t ? r == null ? void 0 : r[t] : null
|
|
1934
1967
|
}));
|
|
1935
1968
|
}
|
|
1936
|
-
function
|
|
1937
|
-
return n ?
|
|
1938
|
-
hole_id:
|
|
1969
|
+
function mr(e = [], n = null) {
|
|
1970
|
+
return n ? Ue(e).filter((t) => Object.prototype.hasOwnProperty.call(t || {}, n)).map((t) => ({
|
|
1971
|
+
hole_id: He(t),
|
|
1939
1972
|
label: t == null ? void 0 : t[n],
|
|
1940
1973
|
depth: 0.5 * (ue(t == null ? void 0 : t.from, 0) + ue(t == null ? void 0 : t.to, 0))
|
|
1941
1974
|
})) : [];
|
|
1942
1975
|
}
|
|
1943
|
-
function
|
|
1976
|
+
function fr({
|
|
1944
1977
|
controlMode: e = "orbit",
|
|
1945
1978
|
onToggleFly: n = () => {
|
|
1946
1979
|
},
|
|
@@ -1954,13 +1987,13 @@ function mr({
|
|
|
1954
1987
|
onToggleDarkBackground: s = () => {
|
|
1955
1988
|
}
|
|
1956
1989
|
}) {
|
|
1957
|
-
return /* @__PURE__ */
|
|
1958
|
-
/* @__PURE__ */
|
|
1959
|
-
/* @__PURE__ */
|
|
1960
|
-
/* @__PURE__ */
|
|
1961
|
-
/* @__PURE__ */
|
|
1962
|
-
/* @__PURE__ */
|
|
1963
|
-
/* @__PURE__ */
|
|
1990
|
+
return /* @__PURE__ */ w("div", { className: "baselode-3d-controls", children: [
|
|
1991
|
+
/* @__PURE__ */ S("button", { type: "button", className: "ghost-button", onClick: t, children: "Recenter to (0,0,0)" }),
|
|
1992
|
+
/* @__PURE__ */ S("button", { type: "button", className: "ghost-button", onClick: r, children: "Look down" }),
|
|
1993
|
+
/* @__PURE__ */ S("button", { type: "button", className: "ghost-button", onClick: o, children: "Fit to scene" }),
|
|
1994
|
+
/* @__PURE__ */ S("button", { type: "button", className: "ghost-button", onClick: n, children: e === "orbit" ? "Enable fly controls" : "Disable fly controls" }),
|
|
1995
|
+
/* @__PURE__ */ w("label", { className: "baselode-3d-controls-checkbox", children: [
|
|
1996
|
+
/* @__PURE__ */ S(
|
|
1964
1997
|
"input",
|
|
1965
1998
|
{
|
|
1966
1999
|
type: "checkbox",
|
|
@@ -1972,7 +2005,7 @@ function mr({
|
|
|
1972
2005
|
] })
|
|
1973
2006
|
] });
|
|
1974
2007
|
}
|
|
1975
|
-
function
|
|
2008
|
+
function hr({
|
|
1976
2009
|
properties: e = [],
|
|
1977
2010
|
selectedProperty: n = "",
|
|
1978
2011
|
onPropertyChange: t = () => {
|
|
@@ -1986,9 +2019,9 @@ function fr({
|
|
|
1986
2019
|
}
|
|
1987
2020
|
}) {
|
|
1988
2021
|
var l, u;
|
|
1989
|
-
return /* @__PURE__ */
|
|
1990
|
-
/* @__PURE__ */
|
|
1991
|
-
/* @__PURE__ */
|
|
2022
|
+
return /* @__PURE__ */ w("div", { className: "bm-widget", children: [
|
|
2023
|
+
/* @__PURE__ */ S("label", { className: "bm-widget__label", htmlFor: "bm-property-select", children: "Color by" }),
|
|
2024
|
+
/* @__PURE__ */ w(
|
|
1992
2025
|
"select",
|
|
1993
2026
|
{
|
|
1994
2027
|
id: "bm-property-select",
|
|
@@ -1996,19 +2029,19 @@ function fr({
|
|
|
1996
2029
|
value: n,
|
|
1997
2030
|
onChange: (c) => t(c.target.value),
|
|
1998
2031
|
children: [
|
|
1999
|
-
e.length === 0 && /* @__PURE__ */
|
|
2000
|
-
e.map((c) => /* @__PURE__ */
|
|
2032
|
+
e.length === 0 && /* @__PURE__ */ S("option", { value: "", children: "— no attributes —" }),
|
|
2033
|
+
e.map((c) => /* @__PURE__ */ S("option", { value: c, children: c }, c))
|
|
2001
2034
|
]
|
|
2002
2035
|
}
|
|
2003
2036
|
),
|
|
2004
|
-
i && i.type === "numeric" && /* @__PURE__ */
|
|
2005
|
-
/* @__PURE__ */
|
|
2006
|
-
/* @__PURE__ */
|
|
2007
|
-
/* @__PURE__ */
|
|
2037
|
+
i && i.type === "numeric" && /* @__PURE__ */ w("div", { className: "bm-widget__scale", children: [
|
|
2038
|
+
/* @__PURE__ */ S("span", { className: "bm-widget__scale-label bm-widget__scale-label--min", children: ((l = i.min) == null ? void 0 : l.toFixed(2)) ?? "—" }),
|
|
2039
|
+
/* @__PURE__ */ S("div", { className: "bm-widget__scale-bar" }),
|
|
2040
|
+
/* @__PURE__ */ S("span", { className: "bm-widget__scale-label bm-widget__scale-label--max", children: ((u = i.max) == null ? void 0 : u.toFixed(2)) ?? "—" })
|
|
2008
2041
|
] }),
|
|
2009
|
-
i && i.type === "categorical" && /* @__PURE__ */
|
|
2042
|
+
i && i.type === "categorical" && /* @__PURE__ */ S("div", { className: "bm-widget__categories", children: (i.categories || []).map((c, d) => {
|
|
2010
2043
|
const m = Math.round(d / Math.max(i.categories.length, 1) * 360);
|
|
2011
|
-
return /* @__PURE__ */
|
|
2044
|
+
return /* @__PURE__ */ S(
|
|
2012
2045
|
"span",
|
|
2013
2046
|
{
|
|
2014
2047
|
className: "bm-widget__category-chip",
|
|
@@ -2018,12 +2051,12 @@ function fr({
|
|
|
2018
2051
|
c
|
|
2019
2052
|
);
|
|
2020
2053
|
}) }),
|
|
2021
|
-
/* @__PURE__ */
|
|
2054
|
+
/* @__PURE__ */ w("label", { className: "bm-widget__label", htmlFor: "bm-opacity-slider", children: [
|
|
2022
2055
|
"Opacity (",
|
|
2023
2056
|
Math.round(r * 100),
|
|
2024
2057
|
"%)"
|
|
2025
2058
|
] }),
|
|
2026
|
-
/* @__PURE__ */
|
|
2059
|
+
/* @__PURE__ */ S(
|
|
2027
2060
|
"input",
|
|
2028
2061
|
{
|
|
2029
2062
|
id: "bm-opacity-slider",
|
|
@@ -2036,10 +2069,10 @@ function fr({
|
|
|
2036
2069
|
onChange: (c) => o(parseFloat(c.target.value))
|
|
2037
2070
|
}
|
|
2038
2071
|
),
|
|
2039
|
-
s && /* @__PURE__ */
|
|
2040
|
-
/* @__PURE__ */
|
|
2041
|
-
/* @__PURE__ */
|
|
2042
|
-
/* @__PURE__ */
|
|
2072
|
+
s && /* @__PURE__ */ w("div", { className: "bm-widget__popup", children: [
|
|
2073
|
+
/* @__PURE__ */ w("div", { className: "bm-widget__popup-header", children: [
|
|
2074
|
+
/* @__PURE__ */ S("span", { children: "Block attributes" }),
|
|
2075
|
+
/* @__PURE__ */ S(
|
|
2043
2076
|
"button",
|
|
2044
2077
|
{
|
|
2045
2078
|
type: "button",
|
|
@@ -2050,19 +2083,19 @@ function fr({
|
|
|
2050
2083
|
}
|
|
2051
2084
|
)
|
|
2052
2085
|
] }),
|
|
2053
|
-
/* @__PURE__ */
|
|
2054
|
-
/* @__PURE__ */
|
|
2055
|
-
/* @__PURE__ */
|
|
2086
|
+
/* @__PURE__ */ S("table", { className: "bm-widget__popup-table", children: /* @__PURE__ */ S("tbody", { children: Object.entries(s).map(([c, d]) => /* @__PURE__ */ w("tr", { children: [
|
|
2087
|
+
/* @__PURE__ */ S("th", { children: c }),
|
|
2088
|
+
/* @__PURE__ */ S("td", { children: d == null ? "—" : String(d) })
|
|
2056
2089
|
] }, c)) }) })
|
|
2057
2090
|
] })
|
|
2058
2091
|
] });
|
|
2059
2092
|
}
|
|
2060
|
-
const
|
|
2093
|
+
const hn = [
|
|
2061
2094
|
{ minZoom: 0, lodKey: "thumb" },
|
|
2062
2095
|
{ minZoom: 4, lodKey: "medium" },
|
|
2063
2096
|
{ minZoom: 7, lodKey: "full" }
|
|
2064
|
-
],
|
|
2065
|
-
function pn(e, n, t =
|
|
2097
|
+
], bt = 50;
|
|
2098
|
+
function pn(e, n, t = hn) {
|
|
2066
2099
|
var i;
|
|
2067
2100
|
const r = e.lod_urls;
|
|
2068
2101
|
if (!r || typeof r != "object" || Array.isArray(r))
|
|
@@ -2072,10 +2105,10 @@ function pn(e, n, t = fn) {
|
|
|
2072
2105
|
n >= s.minZoom && (o = s.lodKey);
|
|
2073
2106
|
return r[o] || e.image_url || "";
|
|
2074
2107
|
}
|
|
2075
|
-
function
|
|
2108
|
+
function gn(e) {
|
|
2076
2109
|
return [...e].sort((n, t) => (n.from_depth ?? 0) - (t.from_depth ?? 0));
|
|
2077
2110
|
}
|
|
2078
|
-
function
|
|
2111
|
+
function bn(e) {
|
|
2079
2112
|
const n = {};
|
|
2080
2113
|
for (const t of e) {
|
|
2081
2114
|
const r = t.photo_set != null && t.photo_set !== "" ? String(t.photo_set) : "default";
|
|
@@ -2093,13 +2126,13 @@ function yn(e, n, t = 10) {
|
|
|
2093
2126
|
}
|
|
2094
2127
|
return r;
|
|
2095
2128
|
}
|
|
2096
|
-
function
|
|
2129
|
+
function _n(e) {
|
|
2097
2130
|
return e >= 9 ? 1 : e >= 7 ? 2 : e >= 5 ? 5 : e >= 3 ? 10 : 20;
|
|
2098
2131
|
}
|
|
2099
|
-
function
|
|
2132
|
+
function yt(e) {
|
|
2100
2133
|
return `tray_${String(e).padStart(3, "0")}.jpg`;
|
|
2101
2134
|
}
|
|
2102
|
-
function
|
|
2135
|
+
function Nn(e, n, t, r, o = "Tray Images", i = yt) {
|
|
2103
2136
|
const s = (t ?? "").replace(/\/$/, ""), a = (r ?? "").replace(/\/$/, "");
|
|
2104
2137
|
return n.map((l, u) => {
|
|
2105
2138
|
const c = l.filename ?? i(u), d = l.photoSet ?? o;
|
|
@@ -2116,97 +2149,97 @@ function _n(e, n, t, r, o = "Tray Images", i = bt) {
|
|
|
2116
2149
|
};
|
|
2117
2150
|
});
|
|
2118
2151
|
}
|
|
2119
|
-
function pr(e, n, t =
|
|
2152
|
+
function pr(e, n, t = bt) {
|
|
2120
2153
|
const r = n / 5;
|
|
2121
2154
|
return Math.max(1, Math.round(e * t * r));
|
|
2122
2155
|
}
|
|
2123
|
-
const Re = 5, Qe = 1.12,
|
|
2124
|
-
function
|
|
2156
|
+
const Re = 5, Qe = 1.12, vn = 0.05, En = 40;
|
|
2157
|
+
function An({
|
|
2125
2158
|
photos: e = [],
|
|
2126
2159
|
holeId: n = "",
|
|
2127
2160
|
initialZoom: t = 5,
|
|
2128
2161
|
transform: r,
|
|
2129
2162
|
onTransformChange: o
|
|
2130
2163
|
}) {
|
|
2131
|
-
const [i, s] = K({ scale: 1, tx: 0, ty: 0 }), a = r ?? i, l =
|
|
2164
|
+
const [i, s] = K({ scale: 1, tx: 0, ty: 0 }), a = r ?? i, l = ye(a);
|
|
2132
2165
|
l.current = a;
|
|
2133
|
-
const u =
|
|
2134
|
-
(
|
|
2135
|
-
const
|
|
2136
|
-
o ? o(
|
|
2166
|
+
const u = Pe(
|
|
2167
|
+
(h) => {
|
|
2168
|
+
const P = typeof h == "function" ? h(l.current) : h;
|
|
2169
|
+
o ? o(P) : s(P);
|
|
2137
2170
|
},
|
|
2138
2171
|
[o]
|
|
2139
|
-
), [c, d] = K(!1), m =
|
|
2140
|
-
const
|
|
2141
|
-
for (const
|
|
2142
|
-
const
|
|
2143
|
-
|
|
2172
|
+
), [c, d] = K(!1), m = ye(null), f = ye(null), b = ee(() => gn(e), [e]), p = ee(() => bn(b), [b]), v = ee(() => {
|
|
2173
|
+
const h = /* @__PURE__ */ new Set();
|
|
2174
|
+
for (const P of e) {
|
|
2175
|
+
const A = P.photo_set != null && P.photo_set !== "" ? String(P.photo_set) : "default";
|
|
2176
|
+
h.add(A);
|
|
2144
2177
|
}
|
|
2145
|
-
return [...
|
|
2146
|
-
}, [e]), { minDepth: g, maxDepth:
|
|
2147
|
-
if (!
|
|
2148
|
-
const
|
|
2178
|
+
return [...h];
|
|
2179
|
+
}, [e]), { minDepth: g, maxDepth: L } = ee(() => {
|
|
2180
|
+
if (!b.length) return { minDepth: 0, maxDepth: 0 };
|
|
2181
|
+
const h = b.map((P) => P.to_depth ?? P.from_depth ?? 0);
|
|
2149
2182
|
return {
|
|
2150
|
-
minDepth:
|
|
2151
|
-
maxDepth: Math.max(...
|
|
2183
|
+
minDepth: b[0].from_depth ?? 0,
|
|
2184
|
+
maxDepth: Math.max(...h)
|
|
2152
2185
|
};
|
|
2153
|
-
}, [
|
|
2154
|
-
() => Math.max(1, Math.round((
|
|
2155
|
-
[g,
|
|
2156
|
-
),
|
|
2157
|
-
const
|
|
2158
|
-
return yn(g,
|
|
2159
|
-
}, [g,
|
|
2186
|
+
}, [b]), C = bt * Re / 5, j = ee(
|
|
2187
|
+
() => Math.max(1, Math.round((L - g) * C)),
|
|
2188
|
+
[g, L, C]
|
|
2189
|
+
), H = ee(() => {
|
|
2190
|
+
const h = _n(Re);
|
|
2191
|
+
return yn(g, L, h);
|
|
2192
|
+
}, [g, L]), $ = 540 * Re / 5, D = ee(
|
|
2160
2193
|
() => Math.max(1, Math.min(10, Math.round(t * a.scale))),
|
|
2161
2194
|
[t, a.scale]
|
|
2162
|
-
),
|
|
2163
|
-
|
|
2164
|
-
const
|
|
2165
|
-
u((
|
|
2166
|
-
const
|
|
2195
|
+
), R = Pe((h) => {
|
|
2196
|
+
h.preventDefault();
|
|
2197
|
+
const P = h.deltaY < 0 ? Qe : 1 / Qe, A = f.current.getBoundingClientRect(), z = h.clientX - A.left, E = h.clientY - A.top;
|
|
2198
|
+
u((_) => {
|
|
2199
|
+
const y = Math.max(vn, Math.min(En, _.scale * P)), I = y / _.scale;
|
|
2167
2200
|
return {
|
|
2168
|
-
scale:
|
|
2169
|
-
tx:
|
|
2170
|
-
ty:
|
|
2201
|
+
scale: y,
|
|
2202
|
+
tx: z - (z - _.tx) * I,
|
|
2203
|
+
ty: E - (E - _.ty) * I
|
|
2171
2204
|
};
|
|
2172
2205
|
});
|
|
2173
2206
|
}, [u]);
|
|
2174
|
-
|
|
2175
|
-
const
|
|
2176
|
-
if (
|
|
2177
|
-
return
|
|
2178
|
-
}, [
|
|
2179
|
-
const
|
|
2180
|
-
|
|
2181
|
-
x:
|
|
2182
|
-
y:
|
|
2207
|
+
te(() => {
|
|
2208
|
+
const h = f.current;
|
|
2209
|
+
if (h)
|
|
2210
|
+
return h.addEventListener("wheel", R, { passive: !1 }), () => h.removeEventListener("wheel", R);
|
|
2211
|
+
}, [R]);
|
|
2212
|
+
const G = Pe((h) => {
|
|
2213
|
+
h.button === 0 && (h.preventDefault(), m.current = {
|
|
2214
|
+
x: h.clientX,
|
|
2215
|
+
y: h.clientY,
|
|
2183
2216
|
tx: l.current.tx,
|
|
2184
2217
|
ty: l.current.ty
|
|
2185
2218
|
}, d(!0));
|
|
2186
2219
|
}, []);
|
|
2187
|
-
return
|
|
2188
|
-
const
|
|
2220
|
+
return te(() => {
|
|
2221
|
+
const h = (A) => {
|
|
2189
2222
|
if (!m.current) return;
|
|
2190
|
-
const { tx:
|
|
2191
|
-
u((
|
|
2192
|
-
...
|
|
2193
|
-
tx:
|
|
2194
|
-
ty:
|
|
2223
|
+
const { tx: z, ty: E, x: _, y } = m.current;
|
|
2224
|
+
u((I) => ({
|
|
2225
|
+
...I,
|
|
2226
|
+
tx: z + (A.clientX - _),
|
|
2227
|
+
ty: E + (A.clientY - y)
|
|
2195
2228
|
}));
|
|
2196
|
-
},
|
|
2229
|
+
}, P = () => {
|
|
2197
2230
|
m.current = null, d(!1);
|
|
2198
2231
|
};
|
|
2199
|
-
return window.addEventListener("mousemove",
|
|
2200
|
-
window.removeEventListener("mousemove",
|
|
2232
|
+
return window.addEventListener("mousemove", h), window.addEventListener("mouseup", P), () => {
|
|
2233
|
+
window.removeEventListener("mousemove", h), window.removeEventListener("mouseup", P);
|
|
2201
2234
|
};
|
|
2202
|
-
}, [u]), /* @__PURE__ */
|
|
2203
|
-
/* @__PURE__ */
|
|
2204
|
-
n && /* @__PURE__ */
|
|
2205
|
-
/* @__PURE__ */
|
|
2235
|
+
}, [u]), /* @__PURE__ */ w("div", { className: "core-photo-table", children: [
|
|
2236
|
+
/* @__PURE__ */ w("div", { className: "core-photo-controls", children: [
|
|
2237
|
+
n && /* @__PURE__ */ S("span", { className: "core-photo-hole-id", children: n }),
|
|
2238
|
+
/* @__PURE__ */ w("span", { className: "core-photo-zoom-label", children: [
|
|
2206
2239
|
Math.round(a.scale * 100),
|
|
2207
2240
|
"%"
|
|
2208
2241
|
] }),
|
|
2209
|
-
/* @__PURE__ */
|
|
2242
|
+
/* @__PURE__ */ S(
|
|
2210
2243
|
"button",
|
|
2211
2244
|
{
|
|
2212
2245
|
className: "core-photo-zoom-btn",
|
|
@@ -2217,92 +2250,92 @@ function En({
|
|
|
2217
2250
|
}
|
|
2218
2251
|
)
|
|
2219
2252
|
] }),
|
|
2220
|
-
e.length > 0 && /* @__PURE__ */
|
|
2221
|
-
/* @__PURE__ */
|
|
2222
|
-
|
|
2253
|
+
e.length > 0 && /* @__PURE__ */ w("div", { className: "core-photo-col-headers", children: [
|
|
2254
|
+
/* @__PURE__ */ S("div", { className: "core-photo-ruler-spacer" }),
|
|
2255
|
+
v.map((h) => /* @__PURE__ */ S(
|
|
2223
2256
|
"div",
|
|
2224
2257
|
{
|
|
2225
2258
|
className: "core-photo-set-header",
|
|
2226
|
-
style: { width:
|
|
2227
|
-
children:
|
|
2259
|
+
style: { width: $ },
|
|
2260
|
+
children: h
|
|
2228
2261
|
},
|
|
2229
|
-
|
|
2262
|
+
h
|
|
2230
2263
|
))
|
|
2231
2264
|
] }),
|
|
2232
|
-
e.length === 0 ? /* @__PURE__ */
|
|
2265
|
+
e.length === 0 ? /* @__PURE__ */ S("div", { className: "core-photo-empty", children: "No photos to display." }) : /* @__PURE__ */ S(
|
|
2233
2266
|
"div",
|
|
2234
2267
|
{
|
|
2235
2268
|
className: `core-photo-scroll${c ? " is-dragging" : ""}`,
|
|
2236
2269
|
ref: f,
|
|
2237
|
-
onMouseDown:
|
|
2238
|
-
children: /* @__PURE__ */
|
|
2270
|
+
onMouseDown: G,
|
|
2271
|
+
children: /* @__PURE__ */ w(
|
|
2239
2272
|
"div",
|
|
2240
2273
|
{
|
|
2241
2274
|
className: "core-photo-inner",
|
|
2242
2275
|
style: {
|
|
2243
|
-
height:
|
|
2276
|
+
height: j,
|
|
2244
2277
|
transform: `translate(${a.tx}px, ${a.ty}px) scale(${a.scale})`,
|
|
2245
2278
|
transformOrigin: "0 0"
|
|
2246
2279
|
},
|
|
2247
2280
|
children: [
|
|
2248
|
-
/* @__PURE__ */
|
|
2281
|
+
/* @__PURE__ */ S(
|
|
2249
2282
|
"div",
|
|
2250
2283
|
{
|
|
2251
2284
|
className: "core-photo-depth-ruler",
|
|
2252
|
-
style: { height:
|
|
2253
|
-
children:
|
|
2285
|
+
style: { height: j },
|
|
2286
|
+
children: H.map(({ depth: h, label: P }) => /* @__PURE__ */ S(
|
|
2254
2287
|
"div",
|
|
2255
2288
|
{
|
|
2256
2289
|
className: "core-photo-depth-marker",
|
|
2257
2290
|
style: {
|
|
2258
|
-
top: Math.round((
|
|
2291
|
+
top: Math.round((h - g) * C)
|
|
2259
2292
|
},
|
|
2260
|
-
children:
|
|
2293
|
+
children: P
|
|
2261
2294
|
},
|
|
2262
|
-
|
|
2295
|
+
h
|
|
2263
2296
|
))
|
|
2264
2297
|
}
|
|
2265
2298
|
),
|
|
2266
|
-
|
|
2299
|
+
v.map((h) => /* @__PURE__ */ S(
|
|
2267
2300
|
"div",
|
|
2268
2301
|
{
|
|
2269
2302
|
className: "core-photo-col-body",
|
|
2270
|
-
style: { height:
|
|
2271
|
-
children: h
|
|
2272
|
-
const
|
|
2273
|
-
(
|
|
2274
|
-
),
|
|
2303
|
+
style: { height: j, width: $ },
|
|
2304
|
+
children: p[h].map((P) => {
|
|
2305
|
+
const A = P.from_depth ?? 0, z = P.to_depth ?? A, E = Math.round(
|
|
2306
|
+
(A - g) * C
|
|
2307
|
+
), _ = Math.max(
|
|
2275
2308
|
2,
|
|
2276
|
-
Math.round((
|
|
2277
|
-
),
|
|
2278
|
-
return /* @__PURE__ */
|
|
2309
|
+
Math.round((z - A) * C)
|
|
2310
|
+
), y = pn(P, D);
|
|
2311
|
+
return /* @__PURE__ */ w(
|
|
2279
2312
|
"div",
|
|
2280
2313
|
{
|
|
2281
2314
|
className: "core-photo-item",
|
|
2282
|
-
style: { top:
|
|
2283
|
-
title: `${
|
|
2315
|
+
style: { top: E, height: _, width: $ },
|
|
2316
|
+
title: `${A}–${z} m`,
|
|
2284
2317
|
children: [
|
|
2285
|
-
|
|
2318
|
+
y ? /* @__PURE__ */ S(
|
|
2286
2319
|
"img",
|
|
2287
2320
|
{
|
|
2288
|
-
src:
|
|
2289
|
-
alt: `Core ${
|
|
2321
|
+
src: y,
|
|
2322
|
+
alt: `Core ${A}–${z} m`,
|
|
2290
2323
|
loading: "lazy"
|
|
2291
2324
|
}
|
|
2292
|
-
) : /* @__PURE__ */
|
|
2293
|
-
|
|
2294
|
-
|
|
2325
|
+
) : /* @__PURE__ */ S("div", { className: "core-photo-no-image" }),
|
|
2326
|
+
_ >= 18 && /* @__PURE__ */ w("span", { className: "core-photo-item-label", children: [
|
|
2327
|
+
A,
|
|
2295
2328
|
"–",
|
|
2296
|
-
|
|
2329
|
+
z,
|
|
2297
2330
|
" m"
|
|
2298
2331
|
] })
|
|
2299
2332
|
]
|
|
2300
2333
|
},
|
|
2301
|
-
`${
|
|
2334
|
+
`${P.hole_id ?? ""}-${A}-${z}-${h}`
|
|
2302
2335
|
);
|
|
2303
2336
|
})
|
|
2304
2337
|
},
|
|
2305
|
-
|
|
2338
|
+
h
|
|
2306
2339
|
))
|
|
2307
2340
|
]
|
|
2308
2341
|
}
|
|
@@ -2311,23 +2344,23 @@ function En({
|
|
|
2311
2344
|
)
|
|
2312
2345
|
] });
|
|
2313
2346
|
}
|
|
2314
|
-
function
|
|
2347
|
+
function gr({
|
|
2315
2348
|
holeId: e = "",
|
|
2316
2349
|
trays: n = [],
|
|
2317
2350
|
thumbBaseUrl: t = "",
|
|
2318
2351
|
fullBaseUrl: r = "",
|
|
2319
2352
|
photoSet: o = "Tray Images",
|
|
2320
|
-
getFilename: i =
|
|
2353
|
+
getFilename: i = yt,
|
|
2321
2354
|
initialZoom: s = 5,
|
|
2322
2355
|
transform: a,
|
|
2323
2356
|
onTransformChange: l
|
|
2324
2357
|
}) {
|
|
2325
2358
|
const u = ee(
|
|
2326
|
-
() =>
|
|
2359
|
+
() => Nn(e, n, t, r, o, i),
|
|
2327
2360
|
[e, n, t, r, o, i]
|
|
2328
2361
|
);
|
|
2329
|
-
return /* @__PURE__ */
|
|
2330
|
-
|
|
2362
|
+
return /* @__PURE__ */ S(
|
|
2363
|
+
An,
|
|
2331
2364
|
{
|
|
2332
2365
|
photos: u,
|
|
2333
2366
|
holeId: e,
|
|
@@ -2337,7 +2370,7 @@ function hr({
|
|
|
2337
2370
|
}
|
|
2338
2371
|
);
|
|
2339
2372
|
}
|
|
2340
|
-
function
|
|
2373
|
+
function br(e) {
|
|
2341
2374
|
const n = typeof e == "string" ? JSON.parse(e) : e;
|
|
2342
2375
|
if (n.schema_version !== "1.0")
|
|
2343
2376
|
throw new Error(
|
|
@@ -2365,7 +2398,7 @@ function gr(e) {
|
|
|
2365
2398
|
blocks: t
|
|
2366
2399
|
};
|
|
2367
2400
|
}
|
|
2368
|
-
function
|
|
2401
|
+
function Sn(e) {
|
|
2369
2402
|
const n = new Q.BufferGeometry(), t = new Float32Array(e.vertices.length * 3);
|
|
2370
2403
|
e.vertices.forEach(([o, i, s], a) => {
|
|
2371
2404
|
t[a * 3] = o, t[a * 3 + 1] = i, t[a * 3 + 2] = s;
|
|
@@ -2378,8 +2411,8 @@ function An(e) {
|
|
|
2378
2411
|
function yr(e, n, t = {}) {
|
|
2379
2412
|
const { defaultOpacity: r = 1 } = t, o = new Q.Group();
|
|
2380
2413
|
return n.blocks.forEach((i) => {
|
|
2381
|
-
var
|
|
2382
|
-
const s =
|
|
2414
|
+
var p, v;
|
|
2415
|
+
const s = Sn(i), a = ((p = i.material) == null ? void 0 : p.color) ?? "#888888", l = ((v = i.material) == null ? void 0 : v.opacity) ?? r, u = l < 1, c = new Q.MeshStandardMaterial({
|
|
2383
2416
|
color: new Q.Color(a),
|
|
2384
2417
|
opacity: l,
|
|
2385
2418
|
transparent: u,
|
|
@@ -2390,219 +2423,224 @@ function yr(e, n, t = {}) {
|
|
|
2390
2423
|
id: i.id,
|
|
2391
2424
|
attributes: i.attributes
|
|
2392
2425
|
};
|
|
2393
|
-
const m = new Q.EdgesGeometry(s, 15), f = new Q.LineBasicMaterial({ color: "#ffffbb", linewidth: 1 }),
|
|
2394
|
-
|
|
2426
|
+
const m = new Q.EdgesGeometry(s, 15), f = new Q.LineBasicMaterial({ color: "#ffffbb", linewidth: 1 }), b = new Q.LineSegments(m, f);
|
|
2427
|
+
b.visible = !1, d.add(b), o.add(d);
|
|
2395
2428
|
}), e.add(o), o;
|
|
2396
2429
|
}
|
|
2397
2430
|
export {
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2431
|
+
vr as ALPHA,
|
|
2432
|
+
Er as ASSAY_COLOR_PALETTE_10,
|
|
2433
|
+
Mt as ASSAY_NON_VALUE_FIELDS,
|
|
2401
2434
|
Y as AZIMUTH,
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2435
|
+
Ar as BASELODE_COLORWAY,
|
|
2436
|
+
Sr as BASELODE_DARK,
|
|
2437
|
+
Tr as BASELODE_DARK_TEMPLATE,
|
|
2438
|
+
Lr as BASELODE_DARK_TEMPLATE_NAME,
|
|
2406
2439
|
Ir as BASELODE_DATA_MODEL_DRILL_ASSAY,
|
|
2407
2440
|
Cr as BASELODE_DATA_MODEL_DRILL_COLLAR,
|
|
2408
2441
|
Et as BASELODE_DATA_MODEL_DRILL_GEOLOGY,
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2442
|
+
Mr as BASELODE_DATA_MODEL_DRILL_SURVEY,
|
|
2443
|
+
Pr as BASELODE_DATA_MODEL_GEOPHYSICS,
|
|
2444
|
+
Or as BASELODE_DATA_MODEL_STRUCTURAL_POINT,
|
|
2445
|
+
xr as BASELODE_DATA_MODEL_SURFACE_SAMPLE,
|
|
2446
|
+
Dr as BASELODE_LIGHT,
|
|
2447
|
+
Rr as BASELODE_LIGHT_TEMPLATE,
|
|
2448
|
+
zr as BASELODE_LIGHT_TEMPLATE_NAME,
|
|
2449
|
+
$e as BASELODE_TEMPLATE,
|
|
2450
|
+
Fr as BASELODE_TEMPLATE_NAME,
|
|
2451
|
+
bt as BASE_PIXELS_PER_METRE,
|
|
2419
2452
|
$r as BETA,
|
|
2420
2453
|
kr as BUILTIN_COLOUR_MAPS,
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2454
|
+
fr as Baselode3DControls,
|
|
2455
|
+
wr as Baselode3DScene,
|
|
2456
|
+
hr as BlockModelWidget,
|
|
2457
|
+
Ur as CHART_OPTIONS,
|
|
2425
2458
|
Hr as COLLAR_ID,
|
|
2426
2459
|
Gr as COMMENTS,
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2460
|
+
Br as COMMENT_COLUMN_NAMES,
|
|
2461
|
+
Vr as COMMODITY_COLOURS,
|
|
2462
|
+
jr as CRS,
|
|
2463
|
+
An as CorePhotoTable,
|
|
2464
|
+
gr as CorePhotoViewer,
|
|
2465
|
+
Yr as DATASOURCE,
|
|
2466
|
+
Wr as DATASOURCE_HOLE_ID,
|
|
2467
|
+
qr as DATASOURCE_SAMPLE_ID,
|
|
2468
|
+
Xr as DATASOURCE_SURFACE_SAMPLE_ID,
|
|
2469
|
+
Kr as DATE_END,
|
|
2470
|
+
Zr as DATE_START,
|
|
2471
|
+
Jr as DEFAULT_ATTRIBUTE_COLUMN,
|
|
2472
|
+
Qr as DEFAULT_COLUMN_MAP,
|
|
2473
|
+
hn as DEFAULT_LOD_BREAKPOINTS,
|
|
2474
|
+
eo as DEFAULT_UNIT_COLUMN,
|
|
2475
|
+
V as DEPTH,
|
|
2441
2476
|
W as DIP,
|
|
2442
|
-
|
|
2477
|
+
Ge as DISPLAY_CATEGORICAL,
|
|
2443
2478
|
ze as DISPLAY_COMMENT,
|
|
2444
|
-
|
|
2479
|
+
to as DISPLAY_HIDDEN,
|
|
2445
2480
|
At as DISPLAY_NUMERIC,
|
|
2446
2481
|
tt as DISPLAY_TADPOLE,
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2482
|
+
pe as EASTING,
|
|
2483
|
+
Ee as ELEVATION,
|
|
2484
|
+
no as ERROR_COLOR,
|
|
2485
|
+
ro as EXTRA,
|
|
2486
|
+
oo as FALLBACK_COLOUR,
|
|
2487
|
+
so as FOV_MAX_DEG,
|
|
2488
|
+
io as FOV_MIN_DEG,
|
|
2489
|
+
M as FROM,
|
|
2455
2490
|
le as GEOLOGY_CODE,
|
|
2456
2491
|
ce as GEOLOGY_DESCRIPTION,
|
|
2457
|
-
|
|
2492
|
+
ao as GEOPHYSICS_NULL,
|
|
2458
2493
|
et as GEOPHYSICS_NULL_SENTINEL,
|
|
2459
|
-
|
|
2494
|
+
lo as HIDDEN_COLUMNS,
|
|
2460
2495
|
N as HOLE_ID,
|
|
2461
|
-
|
|
2496
|
+
co as HOLE_TYPE,
|
|
2462
2497
|
re as LATITUDE,
|
|
2463
|
-
|
|
2498
|
+
uo as LITHOLOGY_COLOURS,
|
|
2464
2499
|
oe as LONGITUDE,
|
|
2465
|
-
|
|
2500
|
+
mo as MAX_DEPTH,
|
|
2466
2501
|
ve as MID,
|
|
2467
2502
|
ge as NORTHING,
|
|
2468
|
-
|
|
2469
|
-
|
|
2503
|
+
fo as NUMERIC_LINE_COLOR,
|
|
2504
|
+
ho as NUMERIC_MARKER_COLOR,
|
|
2470
2505
|
de as PROJECT_ID,
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2506
|
+
po as REPORT_NUMBER,
|
|
2507
|
+
go as SAMPLE_ID,
|
|
2508
|
+
bo as STRIKE,
|
|
2509
|
+
yo as STRIP_LOG_DEFAULT_COLOR,
|
|
2510
|
+
_o as STRIP_LOG_DEFAULT_LATERAL_OFFSET,
|
|
2511
|
+
No as STRIP_LOG_DEFAULT_PANEL_WIDTH,
|
|
2512
|
+
vo as SURFACE_SAMPLE_ID,
|
|
2513
|
+
Eo as SURFACE_SAMPLE_TYPE,
|
|
2514
|
+
Ao as SURVEY_TYPE,
|
|
2515
|
+
O as TO,
|
|
2516
|
+
ir as TracePlot,
|
|
2482
2517
|
yr as addGradeBlocksToScene,
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2518
|
+
So as addRasterOverlay,
|
|
2519
|
+
To as alphaBetaToNormal,
|
|
2520
|
+
mr as annotationsFromIntervals,
|
|
2521
|
+
Xn as assembleDataset,
|
|
2522
|
+
Un as attachAssayPositions,
|
|
2488
2523
|
kn as balancedTangentialDesurvey,
|
|
2489
2524
|
kt as buildAssayState,
|
|
2490
|
-
|
|
2491
|
-
|
|
2525
|
+
Lo as buildCategoricalStripLogConfig,
|
|
2526
|
+
rn as buildCommentsConfig,
|
|
2492
2527
|
yn as buildDepthMarkers,
|
|
2493
|
-
|
|
2528
|
+
Io as buildEqualRangeColorScale,
|
|
2494
2529
|
It as buildIntervalPoints,
|
|
2495
2530
|
St as buildPlotConfig,
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2531
|
+
sr as buildStrikeDipSymbol,
|
|
2532
|
+
Co as buildStripLogGroup,
|
|
2533
|
+
Mo as buildStripLogLinePoints,
|
|
2534
|
+
Po as buildStructuralDiscs,
|
|
2535
|
+
or as buildStructuralStripConfig,
|
|
2536
|
+
nn as buildTadpoleConfig,
|
|
2537
|
+
wn as buildTraces,
|
|
2538
|
+
Nn as buildTrayPhotos,
|
|
2539
|
+
Oo as buildViewSignature,
|
|
2540
|
+
xo as calculateBlockVolume,
|
|
2541
|
+
Do as calculatePropertyStats,
|
|
2507
2542
|
vt as classifyColumns,
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2543
|
+
Ro as clearRasterOverlays,
|
|
2544
|
+
zo as clearStripLogs,
|
|
2545
|
+
qn as coerceNumeric,
|
|
2546
|
+
Fo as computeStructuralPositions,
|
|
2547
|
+
$o as createRasterOverlay,
|
|
2548
|
+
ko as defaultChartType,
|
|
2549
|
+
yt as defaultTrayFilename,
|
|
2515
2550
|
pr as depthIntervalToPixels,
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2551
|
+
_n as depthMarkerInterval,
|
|
2552
|
+
Te as deriveAssayProps,
|
|
2553
|
+
wo as derivePropertyMeta,
|
|
2554
|
+
Fn as desurveyTraces,
|
|
2555
|
+
Uo as dipAzimuthToNormal,
|
|
2556
|
+
Ho as dolly,
|
|
2557
|
+
Go as emitViewChangeIfNeeded,
|
|
2558
|
+
Bo as filterBlocks,
|
|
2559
|
+
Wn as filterByProject,
|
|
2560
|
+
Vo as fitCameraToBounds,
|
|
2561
|
+
jo as focusOnLastBounds,
|
|
2562
|
+
Tt as formatPropertyLabel,
|
|
2563
|
+
nr as geophysicsToStripLogs,
|
|
2564
|
+
Yo as getBlockStats,
|
|
2565
|
+
Wo as getCategoryHexColor,
|
|
2529
2566
|
nt as getChartOptions,
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2567
|
+
qo as getColorForValue,
|
|
2568
|
+
Xo as getColour,
|
|
2569
|
+
Ko as getEqualRangeBinIndex,
|
|
2570
|
+
Zo as getEqualRangeColor,
|
|
2571
|
+
Jo as getHoleVerticalExtent,
|
|
2572
|
+
Qo as getRasterOverlay,
|
|
2573
|
+
es as getViewState,
|
|
2574
|
+
Sn as gradeBlockToThreeGeometry,
|
|
2575
|
+
bn as groupPhotosBySet,
|
|
2576
|
+
Wt as groupRowsByHole,
|
|
2577
|
+
Lt as holeHasData,
|
|
2578
|
+
ts as interpolateTrace,
|
|
2579
|
+
dr as intervalsAsTubes,
|
|
2580
|
+
Yn as joinAssaysToTraces,
|
|
2581
|
+
ns as listRasterOverlays,
|
|
2582
|
+
Rn as loadAssayFile,
|
|
2546
2583
|
$t as loadAssayHole,
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2584
|
+
Ft as loadAssayMetadata,
|
|
2585
|
+
Vn as loadAssays,
|
|
2586
|
+
rs as loadBlockModelMetadata,
|
|
2550
2587
|
Gn as loadCollars,
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2588
|
+
jn as loadGeology,
|
|
2589
|
+
br as loadGradeBlocksFromJson,
|
|
2590
|
+
Bn as loadSurveys,
|
|
2591
|
+
Ce as loadTable,
|
|
2592
|
+
os as logDataInfo,
|
|
2593
|
+
ss as logDataWarning,
|
|
2594
|
+
is as lookDown,
|
|
2558
2595
|
Ht as minimumCurvatureDesurvey,
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2596
|
+
as as normalizeBlockRow,
|
|
2597
|
+
ls as normalizeBounds,
|
|
2598
|
+
xn as normalizeCsvRow,
|
|
2599
|
+
Ae as normalizeFieldName,
|
|
2600
|
+
cs as normalizeStripLogOptions,
|
|
2601
|
+
us as pan,
|
|
2602
|
+
Xt as parseAssayCsvTextToHoles,
|
|
2603
|
+
Dt as parseAssayHole,
|
|
2604
|
+
On as parseAssayHoleIds,
|
|
2605
|
+
xt as parseAssayHoleIdsWithAssays,
|
|
2606
|
+
Rt as parseAssaysCSV,
|
|
2607
|
+
ds as parseBlockModelCSV,
|
|
2571
2608
|
Hn as parseDrillholesCSV,
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2609
|
+
Kt as parseGeologyCsvText,
|
|
2610
|
+
tr as parseGeophysicsCSV,
|
|
2611
|
+
rr as parseLasFile,
|
|
2612
|
+
qt as parseStructuralCSV,
|
|
2613
|
+
Jn as parseStructuralIntervalsCSV,
|
|
2614
|
+
Zn as parseStructuralPointsCSV,
|
|
2615
|
+
zn as parseSurveyCSV,
|
|
2616
|
+
Qn as parseUnifiedDataset,
|
|
2617
|
+
Dn as pickFirstPresent,
|
|
2618
|
+
lr as planView,
|
|
2619
|
+
mn as projectTraceToSection,
|
|
2620
|
+
ms as recenterCameraToOrigin,
|
|
2621
|
+
fs as removeRasterOverlay,
|
|
2585
2622
|
st as reorderHoleIds,
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2623
|
+
hs as resolveColourMap,
|
|
2624
|
+
ps as resolvePropertyLabelParts,
|
|
2625
|
+
cr as sectionView,
|
|
2626
|
+
fn as sectionWindow,
|
|
2589
2627
|
pn as selectPhotoLodUrl,
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2628
|
+
gs as setControlMode,
|
|
2629
|
+
bs as setFov,
|
|
2630
|
+
ys as setRasterOverlayElevation,
|
|
2631
|
+
_s as setRasterOverlayOpacity,
|
|
2632
|
+
Ns as setRasterOverlayVisibility,
|
|
2633
|
+
vs as setStripLogs,
|
|
2634
|
+
Es as setViewState,
|
|
2635
|
+
er as significantIntercepts,
|
|
2636
|
+
gn as sortPhotosByDepth,
|
|
2599
2637
|
ie as standardizeColumns,
|
|
2600
|
-
|
|
2638
|
+
Pn as standardizeRowArray,
|
|
2601
2639
|
$n as tangentialDesurvey,
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2640
|
+
As as toError,
|
|
2641
|
+
ur as tracesAsSegments,
|
|
2642
|
+
ar as useDrillholeTraceGrid,
|
|
2643
|
+
Kn as validateStructuralPoints,
|
|
2644
|
+
U as withDataErrorContext
|
|
2607
2645
|
};
|
|
2608
2646
|
//# sourceMappingURL=baselode.js.map
|