@ndmspc/ndmvr-core 1.1.0-rc.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/assets/{RCanvasPainter-DQGWienR.js → RCanvasPainter-BN1wz_jA.js} +1 -1
- package/dist/assets/RNTuple-B19bW6t4.js +1 -0
- package/dist/assets/{RPavePainter-CQHUOnSn.js → RPavePainter-BOw0-OFU.js} +1 -1
- package/dist/assets/{RTreeMapPainter-B2r2zCJG.js → RTreeMapPainter-DNojexp9.js} +1 -1
- package/dist/assets/{TASImagePainter-DRdiRLt1.js → TASImagePainter-BNJ5OAGP.js} +1 -1
- package/dist/assets/{TAnnotation3DPainter-BCJen6cS.js → TAnnotation3DPainter-BCGBhq-q.js} +1 -1
- package/dist/assets/{TArrowPainter-Dspl2Ikh.js → TArrowPainter-C7a0r3SV.js} +1 -1
- package/dist/assets/{TBoxPainter-BQEN4gj8.js → TBoxPainter-Djh43LYY.js} +1 -1
- package/dist/assets/{TEfficiencyPainter-TxRejkVD.js → TEfficiencyPainter-dXd5DL3h.js} +1 -1
- package/dist/assets/{TF1Painter-BuwSTmhs.js → TF1Painter-DwE8KsBp.js} +1 -1
- package/dist/assets/{TF2Painter-BTh6LWBk.js → TF2Painter-SGNNKiK5.js} +1 -1
- package/dist/assets/{TF3Painter-R5EVXlD4.js → TF3Painter-yaRyTX9u.js} +1 -1
- package/dist/assets/{TGaxisPainter-BJuDLLel.js → TGaxisPainter-DSiIbikC.js} +1 -1
- package/dist/assets/{TGraph2DPainter-aeM0xqgu.js → TGraph2DPainter-COqZBIPT.js} +1 -1
- package/dist/assets/{TGraphPainter-DLkx_1ES.js → TGraphPainter-Bp7xEbQz.js} +1 -1
- package/dist/assets/{TGraphPainter-CtqNpDiH.js → TGraphPainter-CurXuifu.js} +1 -1
- package/dist/assets/{TGraphPolarPainter-bMuBuvEZ.js → TGraphPolarPainter-u-FCb_Gb.js} +1 -1
- package/dist/assets/{TGraphTimePainter-D_1RHDMz.js → TGraphTimePainter-DDPwiVGX.js} +1 -1
- package/dist/assets/{TH1Painter-CMr7gXzd.js → TH1Painter-BXzutgI3.js} +1 -1
- package/dist/assets/{TH1Painter--tuoUZTH.js → TH1Painter-DyN-WKyv.js} +1 -1
- package/dist/assets/{TH2Painter-DHaL_lR_.js → TH2Painter-BpixRP4j.js} +1 -1
- package/dist/assets/{TH2Painter-BLfyBVB5.js → TH2Painter-DceuYQAL.js} +1 -1
- package/dist/assets/{TH3Painter-DLCndhZ0.js → TH3Painter-BA_W8tmJ.js} +1 -1
- package/dist/assets/{THStackPainter-B3TUpsVt.js → THStackPainter-BWLN_w9A.js} +1 -1
- package/dist/assets/{THistPainter-Df-RmCQH.js → THistPainter-B2S5BnuY.js} +1 -1
- package/dist/assets/{TLinePainter-RinEQkrM.js → TLinePainter-D8inyuoX.js} +1 -1
- package/dist/assets/{TMultiGraphPainter-BQyL8zWX.js → TMultiGraphPainter-DcwdyhOr.js} +1 -1
- package/dist/assets/{TPavePainter-Dx40jhkF.js → TPavePainter-1yngbgp8.js} +1 -1
- package/dist/assets/{TPiePainter-BaTIH6-e.js → TPiePainter-BgDv4srX.js} +1 -1
- package/dist/assets/{TPolyLinePainter-7_jf8MLI.js → TPolyLinePainter-BYlrAjCB.js} +1 -1
- package/dist/assets/{TPolyMarker3D-DYlLB9Ww.js → TPolyMarker3D-BaWOSDy6.js} +1 -1
- package/dist/assets/{TRatioPlotPainter-BvUop_Na.js → TRatioPlotPainter-CJgkL58z.js} +1 -1
- package/dist/assets/{TScatterPainter-CvLCMGW2.js → TScatterPainter-Bt11j8z8.js} +1 -1
- package/dist/assets/{TSplinePainter-DJPtQW6I.js → TSplinePainter-p6k_OB02.js} +1 -1
- package/dist/assets/{TTextPainter-BwCh-g5B.js → TTextPainter-B26aOYGd.js} +1 -1
- package/dist/assets/{TTree-CE4EQRMu.js → TTree-BtFtnLeD.js} +1 -1
- package/dist/assets/{TWebPaintingPainter-CexNsDDp.js → TWebPaintingPainter-CZ6lo-7N.js} +1 -1
- package/dist/assets/{draw3d-BPJMZpwL.js → draw3d-ejHvJRmG.js} +1 -1
- package/dist/assets/{func-C1jNXIub.js → func-C6FX2eN2.js} +1 -1
- package/dist/assets/{hist3d-DCmav5Ga.js → hist3d-D9VevdP6.js} +1 -1
- package/dist/assets/{latex3d-ITrfFgp8.js → latex3d-8Hbnfz6c.js} +1 -1
- package/dist/assets/{main-CvPDcTGr.js → main-DwRPe_ox.js} +191 -191
- package/dist/assets/{more-CGvLPt4r.js → more-64laEJ4X.js} +1 -1
- package/dist/assets/{ndmvr-aframe-core-Cw91_9_Y.js → ndmvr-aframe-core-DEHQ38JB.js} +4 -4
- package/dist/assets/{rntuple-BCwqxNeP.js → rntuple-i8TaG-6V.js} +1 -1
- package/dist/assets/{stress-Ihg3ljmc.js → stress-KrXoDujC.js} +1 -1
- package/dist/assets/{v7more-H3D-KQGQ.js → v7more-C-UZAxz1.js} +1 -1
- package/dist/docs/components/configuration/configuration/index.html +243 -238
- package/dist/docs/components/tutorial/canvas/canvas/index.html +1 -1
- package/dist/docs/components/tutorial/configurationChapter/configuration-chapter/index.html +1 -1
- package/dist/docs/components/tutorial/firstVisualization/first-visualization/index.html +1 -1
- package/dist/docs/components/tutorial/interactions/interactions/index.html +1 -1
- package/dist/docs/downloads/canvas.zip +0 -0
- package/dist/docs/downloads/configuration.zip +0 -0
- package/dist/docs/downloads/first-visualization.zip +0 -0
- package/dist/docs/downloads/interactions.zip +0 -0
- package/dist/docs/index.html +1 -1
- package/dist/docs/search/search_index.json +1 -1
- package/dist/docs/sitemap.xml.gz +0 -0
- package/dist/index.es.js +962 -953
- package/dist/index.html +2 -2
- package/dist/index.umd.js +10 -10
- package/dist/stress.html +2 -2
- package/package.json +1 -1
- package/dist/assets/RNTuple-L4uyxl3s.js +0 -1
package/dist/index.es.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ReplaySubject as
|
|
2
|
-
import { openFile as
|
|
3
|
-
import { TextureLoader as
|
|
4
|
-
class
|
|
1
|
+
import { ReplaySubject as L, Subject as Dt, BehaviorSubject as pt, filter as X, concatMap as Vt, from as kt, finalize as Zt, EMPTY as qt } from "rxjs";
|
|
2
|
+
import { openFile as Rt, parse as yt, makeImage as Kt, create as $t, build3d as Nt } from "jsroot";
|
|
3
|
+
import { TextureLoader as jt, SRGBColorSpace as _t, SpriteMaterial as te, Sprite as ee, Vector3 as T, Color as j, Vector2 as Ot, Raycaster as Ae, BoxGeometry as $, EdgesGeometry as It, InstancedBufferGeometry as _, InstancedBufferAttribute as S, LineSegments as vt, ShaderMaterial as Pt, Mesh as tt, Object3D as se, Box3 as et, PlaneGeometry as Ut, MeshBasicMaterial as Yt, DoubleSide as St, Texture as ie, Loader as ne, FileLoader as re, ShapePath as oe, Group as Ht } from "three";
|
|
4
|
+
class st {
|
|
5
5
|
constructor(t, e, A, s) {
|
|
6
6
|
this.url = t, this.ws = null, this.channel = A, this.connected = !1, this.connecting = !1, this.intentionalDisconnect = !1, this.reconnectAttempts = 0, this.maxReconnectAttempts = 10, this.reconnectTimeout = null, this.initTime = Date.now(), this.timeout = s || 6e4, this.timeFlag = !0, e && this.connect();
|
|
7
7
|
}
|
|
@@ -88,12 +88,12 @@ class At {
|
|
|
88
88
|
t.unsubscribe();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
let
|
|
92
|
-
class
|
|
91
|
+
let it;
|
|
92
|
+
class ae {
|
|
93
93
|
#t;
|
|
94
94
|
#e;
|
|
95
95
|
constructor() {
|
|
96
|
-
this.#t = new
|
|
96
|
+
this.#t = new L(1), this.#e = /* @__PURE__ */ new Map();
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Function that adds ws to its map,
|
|
@@ -109,16 +109,16 @@ class oe {
|
|
|
109
109
|
};
|
|
110
110
|
createWs = (t, e, A) => {
|
|
111
111
|
this.#e.has(t) && this.#e.delete(t);
|
|
112
|
-
const s = new
|
|
112
|
+
const s = new st(t, e, this.#t, A);
|
|
113
113
|
this.#e.set(t, s);
|
|
114
114
|
};
|
|
115
115
|
getBrokerByUrl = (t, e) => {
|
|
116
116
|
let A = this.#e.get(t);
|
|
117
|
-
return A ? e && !A.isConnected() && !A.isConnecting() && A.connect() : (A = new
|
|
117
|
+
return A ? e && !A.isConnected() && !A.isConnecting() && A.connect() : (A = new st(t, e, this.#t), this.#e.set(t, A)), A;
|
|
118
118
|
};
|
|
119
119
|
connectWsByUrl = (t) => {
|
|
120
120
|
let e = this.#e.get(t);
|
|
121
|
-
return e || (e = new
|
|
121
|
+
return e || (e = new st(t, !0, this.#t), this.#e.set(t, e)), e.connect(), e;
|
|
122
122
|
};
|
|
123
123
|
/**
|
|
124
124
|
* Function that disconnects ws,
|
|
@@ -168,11 +168,11 @@ class oe {
|
|
|
168
168
|
};
|
|
169
169
|
getSubject = () => this.#t;
|
|
170
170
|
}
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
},
|
|
171
|
+
const ce = () => (it || (it = new ae()), it), rA = () => {
|
|
172
|
+
ce().createWsFromParams(new URL(window.location.href).searchParams);
|
|
173
|
+
}, oA = async (a) => {
|
|
174
174
|
try {
|
|
175
|
-
const t = await fetch(
|
|
175
|
+
const t = await fetch(a);
|
|
176
176
|
if (!t.ok)
|
|
177
177
|
throw new Error(`Response status: ${t.status}`);
|
|
178
178
|
return t.json();
|
|
@@ -180,11 +180,11 @@ const ae = () => (st || (st = new oe()), st), nA = () => {
|
|
|
180
180
|
throw t;
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
|
-
let
|
|
184
|
-
class
|
|
183
|
+
let nt;
|
|
184
|
+
class le {
|
|
185
185
|
#t;
|
|
186
186
|
constructor() {
|
|
187
|
-
this.#t = new
|
|
187
|
+
this.#t = new Dt();
|
|
188
188
|
}
|
|
189
189
|
getObservable() {
|
|
190
190
|
return this.#t.asObservable();
|
|
@@ -193,12 +193,12 @@ class ce {
|
|
|
193
193
|
this.#t.next(t);
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
|
-
const
|
|
197
|
-
let
|
|
198
|
-
class
|
|
196
|
+
const he = () => (nt || (nt = new le()), nt);
|
|
197
|
+
let rt;
|
|
198
|
+
class ue {
|
|
199
199
|
#t;
|
|
200
200
|
constructor() {
|
|
201
|
-
this.#t = new
|
|
201
|
+
this.#t = new pt({
|
|
202
202
|
inputDevice: "keyboard"
|
|
203
203
|
});
|
|
204
204
|
}
|
|
@@ -210,12 +210,12 @@ class he {
|
|
|
210
210
|
t.inputDevice && (e.inputDevice = t.inputDevice), this.#t.next(t);
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
|
-
const
|
|
214
|
-
let
|
|
215
|
-
class
|
|
213
|
+
const Ft = () => (rt || (rt = new ue()), rt);
|
|
214
|
+
let ot = /* @__PURE__ */ new Map();
|
|
215
|
+
class fe {
|
|
216
216
|
#t;
|
|
217
217
|
constructor() {
|
|
218
|
-
this.#t = new
|
|
218
|
+
this.#t = new pt({
|
|
219
219
|
sets: [],
|
|
220
220
|
selectedSet: [],
|
|
221
221
|
arrays: ["content"],
|
|
@@ -233,15 +233,15 @@ class ue {
|
|
|
233
233
|
this.#t.next(t);
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
|
-
const
|
|
237
|
-
if (!
|
|
238
|
-
return
|
|
236
|
+
const H = (a) => {
|
|
237
|
+
if (!a) throw new Error("StateSubject id is undefined");
|
|
238
|
+
return ot.get(a) || ot.set(a, new fe()), ot.get(a);
|
|
239
239
|
};
|
|
240
|
-
let
|
|
241
|
-
class
|
|
240
|
+
let at;
|
|
241
|
+
class de {
|
|
242
242
|
#t;
|
|
243
243
|
constructor() {
|
|
244
|
-
this.#t = new
|
|
244
|
+
this.#t = new L();
|
|
245
245
|
}
|
|
246
246
|
/**
|
|
247
247
|
* Function that takes functions and proposes them to histogram with add flag.
|
|
@@ -311,7 +311,7 @@ class fe {
|
|
|
311
311
|
return this.#t.asObservable();
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
const
|
|
314
|
+
const Wt = () => (at || (at = new de()), at);
|
|
315
315
|
class ge {
|
|
316
316
|
#t;
|
|
317
317
|
#e;
|
|
@@ -321,15 +321,15 @@ class ge {
|
|
|
321
321
|
this.#t = t, this.#e = this.open(t);
|
|
322
322
|
}
|
|
323
323
|
static async open(t) {
|
|
324
|
-
return
|
|
324
|
+
return Rt(t);
|
|
325
325
|
}
|
|
326
326
|
async getHistogram(t, e, A) {
|
|
327
327
|
if (t === 0)
|
|
328
328
|
return this.#s.readObject("hMap");
|
|
329
329
|
{
|
|
330
|
-
let s = this.#A.reduce((
|
|
331
|
-
for (let
|
|
332
|
-
s /= this.#A[
|
|
330
|
+
let s = this.#A.reduce((i, r) => i * r, 1);
|
|
331
|
+
for (let i = 0; i <= t; i++)
|
|
332
|
+
s /= this.#A[i];
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
static async parseFile(t) {
|
|
@@ -343,158 +343,158 @@ class ge {
|
|
|
343
343
|
const A = e.fXaxis.fNbins * e.fYaxis.fNbins * e.fZaxis.fNbins;
|
|
344
344
|
let s = [];
|
|
345
345
|
s.push(A);
|
|
346
|
-
const
|
|
347
|
-
for (const
|
|
348
|
-
for (let h = 0; h <
|
|
349
|
-
const f = [],
|
|
350
|
-
for (let
|
|
351
|
-
f.push(
|
|
352
|
-
console.log(`Processing batch: ${h} to ${
|
|
346
|
+
const i = async (n, o) => {
|
|
347
|
+
for (const l of Object.keys(e.children))
|
|
348
|
+
for (let h = 0; h < n.length; h += 100) {
|
|
349
|
+
const f = [], B = Math.min(h + 100, n.length);
|
|
350
|
+
for (let d = h; d < B; d++)
|
|
351
|
+
f.push(o.readObject(`content/${n[d].fName}/${l}`));
|
|
352
|
+
console.log(`Processing batch: ${h} to ${B - 1} (${f.length} items)`), await Promise.all(f);
|
|
353
353
|
}
|
|
354
|
-
return console.log("done"),
|
|
354
|
+
return console.log("done"), n.forEach((l) => {
|
|
355
355
|
}), s;
|
|
356
356
|
}, r = await t.readObject("content");
|
|
357
|
-
return (await t.readObject(`content/${r.fKeys[0].fName}`)).fKeys.forEach((
|
|
358
|
-
e.children[
|
|
359
|
-
}), console.log(e),
|
|
357
|
+
return (await t.readObject(`content/${r.fKeys[0].fName}`)).fKeys.forEach((n) => {
|
|
358
|
+
e.children[n.fName] = [];
|
|
359
|
+
}), console.log(e), i(r.fKeys, t), s;
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
|
-
const de = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs0AAAKSCAYAAAApl+ajAAAIHHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBhZ2VudCUzRCUyMk1vemlsbGElMkY1LjAlMjAoV2luZG93cyUyME5UJTIwMTAuMCUzQiUyMFdpbjY0JTNCJTIweDY0JTNCJTIwcnYlM0ExNDcuMCklMjBHZWNrbyUyRjIwMTAwMTAxJTIwRmlyZWZveCUyRjE0Ny4wJTIyJTIwdmVyc2lvbiUzRCUyMjI5LjMuNCUyMiUyMHNjYWxlJTNEJTIyMSUyMiUyMGJvcmRlciUzRCUyMjAlMjIlM0UlMEElMjAlMjAlM0NkaWFncmFtJTIwaWQlM0QlMjJXODNfeE5jT2djZHpkOWl4aTEzSiUyMiUyMG5hbWUlM0QlMjJQYWdlLTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjE0MjYlMjIlMjBkeSUzRCUyMjc3OSUyMiUyMGdyaWQlM0QlMjIxJTIyJTIwZ3JpZFNpemUlM0QlMjIxMCUyMiUyMGd1aWRlcyUzRCUyMjElMjIlMjB0b29sdGlwcyUzRCUyMjElMjIlMjBjb25uZWN0JTNEJTIyMSUyMiUyMGFycm93cyUzRCUyMjElMjIlMjBmb2xkJTNEJTIyMSUyMiUyMHBhZ2UlM0QlMjIxJTIyJTIwcGFnZVNjYWxlJTNEJTIyMSUyMiUyMHBhZ2VXaWR0aCUzRCUyMjg1MCUyMiUyMHBhZ2VIZWlnaHQlM0QlMjIxMTAwJTIyJTIwbWF0aCUzRCUyMjAlMjIlMjBzaGFkb3clM0QlMjIwJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTNDcm9vdCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjAlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0Rib3R0b20lM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCaHRtbCUzRDElM0JzaGFwZSUzRG14Z3JhcGguYmFzaWMueCUzQmZpbGxDb2xvciUzRCUyM0VDNTE1MSUzQnN0cm9rZUNvbG9yJTNEJTIzNDEwMDAwJTNCJTIyJTIwdmFsdWUlM0QlMjIlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMGhlaWdodCUzRCUyMjU5MCUyMiUyMHdpZHRoJTNEJTIyNTkwJTIyJTIweCUzRCUyMjEyMCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTIlMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ0ZXh0JTNCaHRtbCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQnN0cm9rZUNvbG9yJTNEbm9uZSUzQmZpbGxDb2xvciUzRG5vbmUlM0JhbGlnbiUzRGNlbnRlciUzQnZlcnRpY2FsQWxpZ24lM0RtaWRkbGUlM0Jyb3VuZGVkJTNEMCUzQiUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0Jmb250JTIwZmFjZSUzRCUyNnF1b3QlM0JMdWNpZGElMjBDb25zb2xlJTI2cXVvdCUzQiUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDUwcHglM0IlMjZxdW90JTNCJTI2Z3QlM0IlMjZsdCUzQmIlMjZndCUzQkhpc3RvZ3JhbSUyMG5vdCUyMGZpbGxlZCUyNmx0JTNCJTJGYiUyNmd0JTNCJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjIlMjB2ZXJ0ZXglM0QlMjIx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";
|
|
363
|
-
function
|
|
364
|
-
const r =
|
|
362
|
+
const me = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs0AAAKSCAYAAAApl+ajAAAIHHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBhZ2VudCUzRCUyMk1vemlsbGElMkY1LjAlMjAoV2luZG93cyUyME5UJTIwMTAuMCUzQiUyMFdpbjY0JTNCJTIweDY0JTNCJTIwcnYlM0ExNDcuMCklMjBHZWNrbyUyRjIwMTAwMTAxJTIwRmlyZWZveCUyRjE0Ny4wJTIyJTIwdmVyc2lvbiUzRCUyMjI5LjMuNCUyMiUyMHNjYWxlJTNEJTIyMSUyMiUyMGJvcmRlciUzRCUyMjAlMjIlM0UlMEElMjAlMjAlM0NkaWFncmFtJTIwaWQlM0QlMjJXODNfeE5jT2djZHpkOWl4aTEzSiUyMiUyMG5hbWUlM0QlMjJQYWdlLTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjE0MjYlMjIlMjBkeSUzRCUyMjc3OSUyMiUyMGdyaWQlM0QlMjIxJTIyJTIwZ3JpZFNpemUlM0QlMjIxMCUyMiUyMGd1aWRlcyUzRCUyMjElMjIlMjB0b29sdGlwcyUzRCUyMjElMjIlMjBjb25uZWN0JTNEJTIyMSUyMiUyMGFycm93cyUzRCUyMjElMjIlMjBmb2xkJTNEJTIyMSUyMiUyMHBhZ2UlM0QlMjIxJTIyJTIwcGFnZVNjYWxlJTNEJTIyMSUyMiUyMHBhZ2VXaWR0aCUzRCUyMjg1MCUyMiUyMHBhZ2VIZWlnaHQlM0QlMjIxMTAwJTIyJTIwbWF0aCUzRCUyMjAlMjIlMjBzaGFkb3clM0QlMjIwJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTNDcm9vdCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjAlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0Rib3R0b20lM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCaHRtbCUzRDElM0JzaGFwZSUzRG14Z3JhcGguYmFzaWMueCUzQmZpbGxDb2xvciUzRCUyM0VDNTE1MSUzQnN0cm9rZUNvbG9yJTNEJTIzNDEwMDAwJTNCJTIyJTIwdmFsdWUlM0QlMjIlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMGhlaWdodCUzRCUyMjU5MCUyMiUyMHdpZHRoJTNEJTIyNTkwJTIyJTIweCUzRCUyMjEyMCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTIlMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ0ZXh0JTNCaHRtbCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQnN0cm9rZUNvbG9yJTNEbm9uZSUzQmZpbGxDb2xvciUzRG5vbmUlM0JhbGlnbiUzRGNlbnRlciUzQnZlcnRpY2FsQWxpZ24lM0RtaWRkbGUlM0Jyb3VuZGVkJTNEMCUzQiUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0Jmb250JTIwZmFjZSUzRCUyNnF1b3QlM0JMdWNpZGElMjBDb25zb2xlJTI2cXVvdCUzQiUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDUwcHglM0IlMjZxdW90JTNCJTI2Z3QlM0IlMjZsdCUzQmIlMjZndCUzQkhpc3RvZ3JhbSUyMG5vdCUyMGZpbGxlZCUyNmx0JTNCJTJGYiUyNmd0JTNCJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjIlMjB2ZXJ0ZXglM0QlMjIx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";
|
|
363
|
+
function Ce(a, t, e, { scale: A, padding: s, origin: i }) {
|
|
364
|
+
const r = a.config ?? {};
|
|
365
365
|
r.environment || (r.environment = {}), r.environment.histogramPads || (r.environment.histogramPads = []);
|
|
366
366
|
const u = r.environment.histogramPads;
|
|
367
|
-
let
|
|
367
|
+
let n = 1, o = t.length;
|
|
368
368
|
if (typeof e == "string") {
|
|
369
369
|
const f = e.match(/^grid(\d+)x(\d+)$/i);
|
|
370
|
-
f ? (
|
|
370
|
+
f ? (n = parseInt(f[1], 10), o = parseInt(f[2], 10)) : (e === "simple" || e === "flex") && (n = 1, o = t.length);
|
|
371
371
|
}
|
|
372
|
-
|
|
373
|
-
let
|
|
372
|
+
n * o < t.length && (o = Math.ceil(Math.sqrt(t.length)), n = Math.ceil(t.length / o));
|
|
373
|
+
let l = 0, h = 0;
|
|
374
374
|
return t.forEach((f) => {
|
|
375
|
-
const
|
|
375
|
+
const B = i.x + h * (A.x + s.x) + A.x / 2, d = i.y + (n - 1 - l) * (A.y + s.y) + A.y / 2, m = i.z - A.z / 2;
|
|
376
376
|
u.push({
|
|
377
377
|
id: f,
|
|
378
|
-
position: { x:
|
|
378
|
+
position: { x: B, y: d, z: m },
|
|
379
379
|
scale: { ...A },
|
|
380
380
|
padding: { ...s },
|
|
381
|
-
origin: { ...
|
|
381
|
+
origin: { ...i },
|
|
382
382
|
grid: {
|
|
383
|
-
row:
|
|
383
|
+
row: l,
|
|
384
384
|
col: h,
|
|
385
|
-
rows:
|
|
386
|
-
cols:
|
|
385
|
+
rows: n,
|
|
386
|
+
cols: o,
|
|
387
387
|
disp_kind: e
|
|
388
388
|
}
|
|
389
|
-
}), h++, h >=
|
|
390
|
-
}),
|
|
389
|
+
}), h++, h >= o && (h = 0, l++);
|
|
390
|
+
}), a;
|
|
391
391
|
}
|
|
392
|
-
function
|
|
392
|
+
function Be(a) {
|
|
393
393
|
const t = {
|
|
394
394
|
resetHistogram: "r",
|
|
395
395
|
goToPreviousLayer: "z",
|
|
396
396
|
hideOutlines: "o"
|
|
397
397
|
};
|
|
398
|
-
|
|
398
|
+
a.bindings = a.bindings || {};
|
|
399
399
|
for (const e in t)
|
|
400
|
-
|
|
401
|
-
return
|
|
400
|
+
a.bindings.hasOwnProperty(e) || (a.bindings[e] = t[e]);
|
|
401
|
+
return a;
|
|
402
402
|
}
|
|
403
|
-
function
|
|
404
|
-
const e = typeof
|
|
405
|
-
function A(
|
|
406
|
-
if (Array.isArray(
|
|
407
|
-
if (
|
|
408
|
-
const
|
|
409
|
-
if (!
|
|
410
|
-
const
|
|
411
|
-
(
|
|
412
|
-
(
|
|
413
|
-
(
|
|
403
|
+
function Bt(a, t = null) {
|
|
404
|
+
const e = typeof a == "string" ? JSON.parse(a) : a;
|
|
405
|
+
function A(n) {
|
|
406
|
+
if (Array.isArray(n)) return n;
|
|
407
|
+
if (n && typeof n == "object" && "type" in n) {
|
|
408
|
+
const o = n.prefix ?? "histogram", c = n.type.match(/grid(\d+)x(\d+)x(\d+)/);
|
|
409
|
+
if (!c) return [n];
|
|
410
|
+
const l = +c[1], h = +c[2], f = +c[3], B = n.scale || { x: 1, y: 1, z: 1 }, d = n.padding || { x: 0, y: 0, z: 0 }, m = n.origin || { x: 0, y: 0, z: 0 }, g = new T(
|
|
411
|
+
(B.x - d.x * (l - 1)) / l,
|
|
412
|
+
(B.y - d.y * (h - 1)) / h,
|
|
413
|
+
(B.z - d.z * (f - 1)) / f
|
|
414
414
|
), p = [];
|
|
415
|
-
let
|
|
416
|
-
for (let x = 0; x <
|
|
415
|
+
let C = 1;
|
|
416
|
+
for (let x = 0; x < l; x++)
|
|
417
417
|
for (let M = 0; M < h; M++)
|
|
418
|
-
for (let
|
|
418
|
+
for (let b = 0; b < f; b++)
|
|
419
419
|
p.push({
|
|
420
|
-
id: `${
|
|
420
|
+
id: `${o}${C++}`,
|
|
421
421
|
position: new T(
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
422
|
+
m.x + x * (g.x + d.x) + g.x / 2,
|
|
423
|
+
m.y + M * (g.y + d.y) + g.y / 2,
|
|
424
|
+
m.z - b * (g.z + d.z) - g.z / 2
|
|
425
425
|
),
|
|
426
|
-
scale:
|
|
426
|
+
scale: g.clone()
|
|
427
427
|
});
|
|
428
428
|
return p;
|
|
429
429
|
}
|
|
430
|
-
return [
|
|
430
|
+
return [n];
|
|
431
431
|
}
|
|
432
|
-
function s(
|
|
433
|
-
const
|
|
434
|
-
for (const
|
|
435
|
-
const
|
|
436
|
-
|
|
432
|
+
function s(n) {
|
|
433
|
+
const o = {};
|
|
434
|
+
for (const c in n) {
|
|
435
|
+
const l = n[c];
|
|
436
|
+
l && typeof l == "object" && "x" in l && "y" in l && "z" in l && Object.keys(l).length === 3 ? o[c] = new T(l.x, l.y, l.z) : typeof l == "string" && l.startsWith("0x") ? o[c] = new j(parseInt(l)) : l && typeof l == "object" && !Array.isArray(l) ? o[c] = s(l) : o[c] = l;
|
|
437
437
|
}
|
|
438
|
-
return
|
|
439
|
-
}
|
|
440
|
-
function n
|
|
441
|
-
if (Array.isArray(
|
|
442
|
-
return
|
|
443
|
-
if (
|
|
444
|
-
if (
|
|
445
|
-
return A(
|
|
446
|
-
if ("x" in
|
|
447
|
-
return new T(
|
|
438
|
+
return o;
|
|
439
|
+
}
|
|
440
|
+
function i(n, o = null, c = null, l = !1) {
|
|
441
|
+
if (Array.isArray(n))
|
|
442
|
+
return l ? n : n.map((h) => i(h, o, n, !1));
|
|
443
|
+
if (n && typeof n == "object") {
|
|
444
|
+
if (o === "histogramPads")
|
|
445
|
+
return A(n).map((B) => s(B));
|
|
446
|
+
if ("x" in n && "y" in n && "z" in n && Object.keys(n).length === 3)
|
|
447
|
+
return new T(n.x, n.y, n.z);
|
|
448
448
|
const h = {};
|
|
449
|
-
for (const f in
|
|
450
|
-
const
|
|
451
|
-
h[f] = n
|
|
449
|
+
for (const f in n) {
|
|
450
|
+
const B = f === "histogramPads";
|
|
451
|
+
h[f] = i(n[f], f, n, B);
|
|
452
452
|
}
|
|
453
453
|
return "target" in h || (h.target = { entity: "*", id: "*" }), h;
|
|
454
454
|
}
|
|
455
|
-
return typeof
|
|
456
|
-
}
|
|
457
|
-
function r(
|
|
458
|
-
if (!
|
|
459
|
-
return
|
|
460
|
-
const
|
|
461
|
-
for (const
|
|
462
|
-
const h =
|
|
463
|
-
h && typeof h == "object" && !Array.isArray(h) && !(h instanceof T) && !(h instanceof
|
|
455
|
+
return typeof n == "string" && n.startsWith("0x") ? new j(parseInt(n)) : n;
|
|
456
|
+
}
|
|
457
|
+
function r(n, o) {
|
|
458
|
+
if (!n || Array.isArray(o) || !o || typeof o != "object" || o instanceof T || o instanceof j)
|
|
459
|
+
return o;
|
|
460
|
+
const c = { ...n };
|
|
461
|
+
for (const l in o) {
|
|
462
|
+
const h = n[l], f = o[l];
|
|
463
|
+
h && typeof h == "object" && !Array.isArray(h) && !(h instanceof T) && !(h instanceof j) && f && typeof f == "object" && !Array.isArray(f) && !(f instanceof T) && !(f instanceof j) ? c[l] = r(h, f) : c[l] = f;
|
|
464
464
|
}
|
|
465
|
-
return
|
|
465
|
+
return c;
|
|
466
466
|
}
|
|
467
|
-
const u =
|
|
467
|
+
const u = i(e);
|
|
468
468
|
return r(t, u);
|
|
469
469
|
}
|
|
470
|
-
function
|
|
471
|
-
for (const t in
|
|
472
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
470
|
+
function we(a) {
|
|
471
|
+
for (const t in a)
|
|
472
|
+
if (Object.prototype.hasOwnProperty.call(a, t))
|
|
473
473
|
return !1;
|
|
474
474
|
return !0;
|
|
475
475
|
}
|
|
476
|
-
function
|
|
476
|
+
function pe(a, t) {
|
|
477
477
|
return ["scale", "padding", "position"].every(
|
|
478
|
-
(A) =>
|
|
478
|
+
(A) => a[A]?.x === t[A]?.x && a[A]?.y === t[A]?.y && a[A]?.z === t[A]?.z
|
|
479
479
|
);
|
|
480
480
|
}
|
|
481
|
-
function
|
|
482
|
-
const e = new
|
|
481
|
+
function be(a, t) {
|
|
482
|
+
const e = new jt().load(me);
|
|
483
483
|
e.colorSpace = _t;
|
|
484
|
-
const A = new
|
|
485
|
-
return s.scale.set(...
|
|
486
|
-
|
|
484
|
+
const A = new te({ map: e, transparent: !0 }), s = new ee(A);
|
|
485
|
+
return s.scale.set(...a.scale), s.position.set(...a.position), s.raycast = (i) => {
|
|
486
|
+
i._triggerSource === "shiftmousedbclick" && t();
|
|
487
487
|
}, s;
|
|
488
488
|
}
|
|
489
|
-
class
|
|
489
|
+
class Me {
|
|
490
490
|
#t;
|
|
491
491
|
constructor(t) {
|
|
492
|
-
this.#t =
|
|
492
|
+
this.#t = yt(t);
|
|
493
493
|
}
|
|
494
494
|
static async parseJson(t) {
|
|
495
|
-
const e =
|
|
496
|
-
s && typeof s == "object" && (s.children &&
|
|
497
|
-
Array.isArray(
|
|
495
|
+
const e = yt(t), A = (s) => {
|
|
496
|
+
s && typeof s == "object" && (s.children && we(s.children) ? delete s.children : s.children && Object.values(s.children).forEach((i) => {
|
|
497
|
+
Array.isArray(i) && i.forEach((r) => A(r));
|
|
498
498
|
}));
|
|
499
499
|
};
|
|
500
500
|
return A(e), e;
|
|
@@ -504,41 +504,41 @@ class be {
|
|
|
504
504
|
const t = this.#t.fXaxis.fNbins * this.#t.fYaxis.fNbins * this.#t.fZaxis.fNbins;
|
|
505
505
|
let e = [];
|
|
506
506
|
e.push(t);
|
|
507
|
-
const A = (s,
|
|
507
|
+
const A = (s, i = 1) => {
|
|
508
508
|
let r = 0;
|
|
509
|
-
return
|
|
510
|
-
u[1].forEach((
|
|
511
|
-
|
|
509
|
+
return i >= e.length && e.push(0), Object.entries(s).forEach((u, n) => {
|
|
510
|
+
u[1].forEach((o) => {
|
|
511
|
+
o && (r = o.fXaxis.fNbins * o.fYaxis.fNbins * o.fZaxis.fNbins, r > e[i] && (e[i] = r), o.children && A(o.children, i + 1));
|
|
512
512
|
});
|
|
513
513
|
}), e;
|
|
514
514
|
};
|
|
515
515
|
return A(this.#t.children), Promise.resolve(e);
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
-
let
|
|
519
|
-
class
|
|
518
|
+
let ct;
|
|
519
|
+
class xe {
|
|
520
520
|
#t = /* @__PURE__ */ new Map();
|
|
521
521
|
// id → ReplaySubject(1)
|
|
522
522
|
getStream(t) {
|
|
523
|
-
return this.#t.has(t) || this.#t.set(t, new
|
|
523
|
+
return this.#t.has(t) || this.#t.set(t, new L(1)), console.log("histogramSubjectGet with id: ", t), this.#t.get(t).asObservable();
|
|
524
524
|
}
|
|
525
525
|
async next(t) {
|
|
526
|
-
if (!t.id) throw new Error("Missing id in event");
|
|
526
|
+
if (console.log("histogramSubjectNext with id: ", t.id, " and event: ", t), !t.id) throw new Error("Missing id in event");
|
|
527
527
|
if (typeof t.obj == "string")
|
|
528
528
|
t.obj = await ge.parseFile(t.obj);
|
|
529
529
|
else if (typeof t.obj == "object")
|
|
530
|
-
t.obj = await
|
|
530
|
+
t.obj = await Me.parseJson(t.obj), t.opts = t.opts || {}, t.opts.config = Bt(t.opts.config);
|
|
531
531
|
else
|
|
532
532
|
throw new Error("Unsupported data type");
|
|
533
|
-
this.#t.has(t.id) || this.#t.set(t.id, new
|
|
533
|
+
this.#t.has(t.id) || this.#t.set(t.id, new L(1)), this.#t.get(t.id).next(t);
|
|
534
534
|
}
|
|
535
535
|
}
|
|
536
|
-
const
|
|
537
|
-
let
|
|
538
|
-
class
|
|
536
|
+
const aA = () => (ct || (ct = new xe()), ct);
|
|
537
|
+
let lt;
|
|
538
|
+
class ye {
|
|
539
539
|
#t;
|
|
540
540
|
constructor() {
|
|
541
|
-
this.#t = new
|
|
541
|
+
this.#t = new L(1);
|
|
542
542
|
}
|
|
543
543
|
getObservable() {
|
|
544
544
|
return this.#t.asObservable();
|
|
@@ -547,14 +547,14 @@ class xe {
|
|
|
547
547
|
this.#t.next(t);
|
|
548
548
|
}
|
|
549
549
|
}
|
|
550
|
-
const
|
|
551
|
-
config:
|
|
550
|
+
const Xt = () => (lt || (lt = new ye()), lt), Ie = { environment: { dbClickTimeout: 200, desktopSpeed: 10, vrSpeed: 10, camera: { position: { x: 0, y: 1.7, z: 10 } }, canvasPads: [{ id: "pad1-cinema", limits: { position: { x: 0, y: 25, z: -35 }, rotation: { x: 8, y: 0, z: 0 }, scale: { x: 6, y: 5, z: 1 } } }], histogramPads: { type: "grid1x1x1", prefix: "pad", scale: { x: 20, y: 10, z: 10 }, padding: { x: 0, y: 0, z: 0 }, origin: { x: -10, y: 0, z: -5 } } }, histogram: { padding: { default: { x: 0, y: 0, z: 0 }, layer: [], sets: { x: 0, y: 0, z: 0 } }, scale: { scaleBy: "value", content: "global", parameter: "fixed", sets: "relative", default: { min: 0.1, max: 1 }, layer: [] }, sets: { scale: { maximum: "relative" } }, TH1ZScale: { default: 0.8, layer: [1, 1, 1, 1], set: 0.01 }, wireframe: { display: { start: 0, end: 99 }, displaySets: !1, layer: [], color: { default: "0x00FF00", layer: ["0x000000", "0x0B3D91", "0x00FF00", "0x00FFFF"], set: [] } }, color: { colorBy: "error", default: { min: "0x0000ff", max: "0xff0000" }, layer: [], set: [{ min: "0x222222", max: "0xffaa00" }, { min: "0x00ffff", max: "0xff7f00" }, { min: "0x00ff00", max: "0x800080" }, { min: "0x0000ff", max: "0xff0000" }] } }, bindings: { resetHistogram: "r", goToPreviousLayer: "z", hideOutlines: "o" } }, ve = {
|
|
551
|
+
config: Ie
|
|
552
552
|
};
|
|
553
|
-
let
|
|
554
|
-
class
|
|
553
|
+
let ht;
|
|
554
|
+
class Ee {
|
|
555
555
|
#t;
|
|
556
556
|
constructor() {
|
|
557
|
-
this.#t = new
|
|
557
|
+
this.#t = new pt(Bt(ve, {}));
|
|
558
558
|
}
|
|
559
559
|
getObservable() {
|
|
560
560
|
return this.#t.asObservable();
|
|
@@ -563,11 +563,11 @@ class ve {
|
|
|
563
563
|
return this.#t.getValue();
|
|
564
564
|
}
|
|
565
565
|
next(t) {
|
|
566
|
-
const e =
|
|
566
|
+
const e = Bt(t, this.#t.getValue());
|
|
567
567
|
return this.#t.next(e), e;
|
|
568
568
|
}
|
|
569
569
|
appendPads(t, e, A) {
|
|
570
|
-
const s =
|
|
570
|
+
const s = Ce(this.#t.getValue(), t, e, A);
|
|
571
571
|
this.#t.next(s);
|
|
572
572
|
}
|
|
573
573
|
mergeHistogramConfig(t, e = this.#t.value.config.histogram) {
|
|
@@ -575,22 +575,22 @@ class ve {
|
|
|
575
575
|
return e;
|
|
576
576
|
if (typeof e != "object" || e === null || typeof t != "object" || t === null)
|
|
577
577
|
return t;
|
|
578
|
-
const A = (
|
|
579
|
-
|
|
578
|
+
const A = (i) => Array.isArray(i) || i instanceof j || i instanceof T || i && i.isColor === !0 || // Handle converted THREE.Color objects
|
|
579
|
+
i && i.isVector3 === !0;
|
|
580
580
|
if (A(e))
|
|
581
581
|
return A(t) ? t : e;
|
|
582
582
|
const s = { ...e };
|
|
583
|
-
for (const
|
|
584
|
-
t.hasOwnProperty(
|
|
583
|
+
for (const i in t)
|
|
584
|
+
t.hasOwnProperty(i) && t[i] !== void 0 && (A(t[i]) || A(s[i]) ? s[i] = t[i] : /* Recursively merge if both are plain objects */ typeof t[i] == "object" && t[i] !== null && typeof s[i] == "object" && s[i] !== null ? s[i] = this.mergeHistogramConfig(t[i], s[i]) : s[i] = t[i]);
|
|
585
585
|
return s;
|
|
586
586
|
}
|
|
587
587
|
}
|
|
588
|
-
const V = () => (
|
|
589
|
-
let
|
|
590
|
-
class
|
|
588
|
+
const V = () => (ht || (ht = new Ee()), ht);
|
|
589
|
+
let ut;
|
|
590
|
+
class Qe {
|
|
591
591
|
#t;
|
|
592
592
|
constructor() {
|
|
593
|
-
this.#t = new
|
|
593
|
+
this.#t = new L(1);
|
|
594
594
|
}
|
|
595
595
|
getObservable() {
|
|
596
596
|
return this.#t.asObservable();
|
|
@@ -602,16 +602,16 @@ class Ee {
|
|
|
602
602
|
this.#t.next(t);
|
|
603
603
|
}
|
|
604
604
|
}
|
|
605
|
-
const
|
|
606
|
-
let
|
|
607
|
-
class
|
|
605
|
+
const Jt = () => (ut || (ut = new Qe()), ut);
|
|
606
|
+
let ft;
|
|
607
|
+
class ze {
|
|
608
608
|
#t;
|
|
609
609
|
#e;
|
|
610
610
|
constructor() {
|
|
611
611
|
this.#t = document.createElement("a-entity"), this.#t.id = "cameraRig", this.#t.setAttribute("position", "0 1.6 0"), this.#t.innerHTML = `
|
|
612
612
|
<a-camera id="camera" wasd-controls-custom="acceleration: 10" wasd-controls="acceleration: 50">
|
|
613
613
|
</a-camera>
|
|
614
|
-
`, this.#e = document.createElement("a-entity"), this.#e.id = "oculus-controller", this.#e.setAttribute("oculus-controller", ""),
|
|
614
|
+
`, this.#e = document.createElement("a-entity"), this.#e.id = "oculus-controller", this.#e.setAttribute("oculus-controller", ""), Ft().getObservable().subscribe(
|
|
615
615
|
this.handleStateChange.bind(this)
|
|
616
616
|
);
|
|
617
617
|
}
|
|
@@ -629,9 +629,9 @@ class Qe {
|
|
|
629
629
|
return this.#t;
|
|
630
630
|
}
|
|
631
631
|
}
|
|
632
|
-
const
|
|
633
|
-
let
|
|
634
|
-
class
|
|
632
|
+
const cA = () => (ft || (ft = new ze()), ft.getCamera());
|
|
633
|
+
let dt;
|
|
634
|
+
class Ge {
|
|
635
635
|
#t;
|
|
636
636
|
#e;
|
|
637
637
|
constructor() {
|
|
@@ -653,23 +653,23 @@ class ze {
|
|
|
653
653
|
};
|
|
654
654
|
horizontalMoveCameraLocal = (t, e, A) => {
|
|
655
655
|
if (!this.#t || !this.#e) return;
|
|
656
|
-
let s = new
|
|
657
|
-
s.rotateAround(new T(0, 0), -
|
|
656
|
+
let s = new Ot(t, e), i = this.#e.object3D.rotation.y;
|
|
657
|
+
s.rotateAround(new T(0, 0), -i), s.normalize(), s.multiplyScalar(A), this.#t.object3D.position.x += s.x, this.#t.object3D.position.z += s.y;
|
|
658
658
|
};
|
|
659
659
|
getCamera() {
|
|
660
660
|
return this.#e;
|
|
661
661
|
}
|
|
662
662
|
}
|
|
663
|
-
const Ge = () => (ft || (ft = new ze()), ft), vt = "data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAws/8fNABrcJixPQsAAAAASUVORK5CYII=", Te = "data:image/png;base64,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", De = "data:image/png;base64,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";
|
|
664
|
-
class
|
|
663
|
+
const Te = () => (dt || (dt = new Ge()), dt), Et = "data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAws/8fNABrcJixPQsAAAAASUVORK5CYII=", De = "data:image/png;base64,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", Ne = "data:image/png;base64,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";
|
|
664
|
+
class lA {
|
|
665
665
|
#t;
|
|
666
666
|
#e;
|
|
667
667
|
#s;
|
|
668
668
|
#A;
|
|
669
669
|
constructor() {
|
|
670
|
-
this.#s =
|
|
670
|
+
this.#s = Te(), setTimeout(() => {
|
|
671
671
|
this.setUpArrowListener(), this.setDownArrowListener();
|
|
672
|
-
}, 100), this.setUpArrowListener = this.setUpArrowListener.bind(this), this.startUpClick = this.startUpClick.bind(this), this.endUpClick = this.endUpClick.bind(this), this.upClickFunction = this.upClickFunction.bind(this), this.setDownArrowListener = this.setDownArrowListener.bind(this), this.startDownClick = this.startDownClick.bind(this), this.endDownClick = this.endDownClick.bind(this), this.downClickFunction = this.downClickFunction.bind(this), this.initController(),
|
|
672
|
+
}, 100), this.setUpArrowListener = this.setUpArrowListener.bind(this), this.startUpClick = this.startUpClick.bind(this), this.endUpClick = this.endUpClick.bind(this), this.upClickFunction = this.upClickFunction.bind(this), this.setDownArrowListener = this.setDownArrowListener.bind(this), this.startDownClick = this.startDownClick.bind(this), this.endDownClick = this.endDownClick.bind(this), this.downClickFunction = this.downClickFunction.bind(this), this.initController(), Ft().getObservable().subscribe((t) => {
|
|
673
673
|
if (t.inputDevice === "mobile")
|
|
674
674
|
document.getElementById("container").appendChild(this.getController());
|
|
675
675
|
else {
|
|
@@ -741,16 +741,16 @@ class cA {
|
|
|
741
741
|
<div class="regionUI" style="bottom: 50px; left: 50px; flex-direction: column;">
|
|
742
742
|
<div style="display: flex; flex-direction: row; margin-left: -32px;">
|
|
743
743
|
<div id="up-arrow" class="buttonUI" style="width: 64px; height: 64px;">
|
|
744
|
-
<img style="transform: rotate(0deg);" src="${
|
|
744
|
+
<img style="transform: rotate(0deg);" src="${Et}" alt="Up Arrow" />
|
|
745
745
|
</div>
|
|
746
746
|
<div id="down-arrow" class="buttonUI" style="width: 64px; height: 64px;">
|
|
747
|
-
<img style="transform: rotate(180deg);" src="${
|
|
747
|
+
<img style="transform: rotate(180deg);" src="${Et}" alt="Down Arrow" />
|
|
748
748
|
</div>
|
|
749
749
|
</div>
|
|
750
750
|
<div class="buttonUI" style="width: 128px; opacity: 0.8;">
|
|
751
|
-
<img src="${
|
|
751
|
+
<img src="${De}" alt="Joystick Base" />
|
|
752
752
|
<div id="stick1" style="position: absolute;">
|
|
753
|
-
<img src="${
|
|
753
|
+
<img src="${Ne}" alt="Joystick Blue" />
|
|
754
754
|
</div>
|
|
755
755
|
</div>
|
|
756
756
|
</div>
|
|
@@ -762,15 +762,15 @@ class cA {
|
|
|
762
762
|
`;
|
|
763
763
|
}
|
|
764
764
|
}
|
|
765
|
-
const
|
|
765
|
+
const hA = async (a) => {
|
|
766
766
|
let t;
|
|
767
|
-
|
|
767
|
+
a.startsWith("root://") ? t = a.replace(/^root:\/\//, "https://").replace(/\/\//g, "/") : t = a, console.log(`Fetching from URL: ${t}`);
|
|
768
768
|
const e = await fetch(t);
|
|
769
769
|
if (!e.ok)
|
|
770
770
|
throw new Error(`Response status: ${e.status}`);
|
|
771
771
|
return e.json();
|
|
772
772
|
};
|
|
773
|
-
class
|
|
773
|
+
class uA {
|
|
774
774
|
raycaster;
|
|
775
775
|
mouse;
|
|
776
776
|
cameraElement;
|
|
@@ -781,7 +781,7 @@ class hA {
|
|
|
781
781
|
rendererElement;
|
|
782
782
|
raycastOn;
|
|
783
783
|
constructor(t, e) {
|
|
784
|
-
this.singleClickTimer = null, this.dbClickTimeout = 190, this.raycastOn = !0, this.rendererElement = e, this.raycaster = new
|
|
784
|
+
this.singleClickTimer = null, this.dbClickTimeout = 190, this.raycastOn = !0, this.rendererElement = e, this.raycaster = new Ae(), this.mouse = new Ot(), this.sceneElement = t, this.checkInterval = 1, this.lastCheck = void 0, t.traverse((A) => {
|
|
785
785
|
A.isCamera && (this.cameraElement = A);
|
|
786
786
|
}), this.mousemoveEventHandle = this.mousemoveEventHandle.bind(this), this.clickEventHandle = this.clickEventHandle.bind(this), this.setupRaycasting(), this.configSub = V().getObservable().subscribe((A) => {
|
|
787
787
|
this.dbClickTimeout = A.config.environment.dbClickTimeout ?? 190;
|
|
@@ -803,8 +803,8 @@ class hA {
|
|
|
803
803
|
clickEventHandle(t) {
|
|
804
804
|
const e = this.rendererElement.getBoundingClientRect();
|
|
805
805
|
this.mouse.x = (t.clientX - e.left) / e.width * 2 - 1, this.mouse.y = -((t.clientY - e.top) / e.height) * 2 + 1, this.raycaster.setFromCamera(this.mouse, this.cameraElement);
|
|
806
|
-
const A = Date.now(),
|
|
807
|
-
this.singleClickTimer && (clearTimeout(this.singleClickTimer), this.singleClickTimer = null),
|
|
806
|
+
const A = Date.now(), i = (this.lastClick ? A - this.lastClick : 1 / 0) < this.dbClickTimeout;
|
|
807
|
+
this.singleClickTimer && (clearTimeout(this.singleClickTimer), this.singleClickTimer = null), i ? (this.raycaster._triggerSource = t.shiftKey ? "shiftmousedbclick" : "mousedbclick", this.handleRaycast()) : this.singleClickTimer = setTimeout(() => {
|
|
808
808
|
this.raycaster._triggerSource = t.shiftKey ? "shiftmouseclick" : "mouseclick", this.handleRaycast(), this.singleClickTimer = null;
|
|
809
809
|
}, this.dbClickTimeout), this.lastClick = A;
|
|
810
810
|
}
|
|
@@ -816,7 +816,7 @@ class hA {
|
|
|
816
816
|
this.mouse.x = (t.clientX - e.left) / e.width * 2 - 1, this.mouse.y = -((t.clientY - e.top) / e.height) * 2 + 1, this.raycaster.setFromCamera(this.mouse, this.cameraElement), this.raycaster._triggerSource = "mousemove", this.raycaster.intersectObjects(this.sceneElement.children, !0);
|
|
817
817
|
}
|
|
818
818
|
}
|
|
819
|
-
class
|
|
819
|
+
class Lt {
|
|
820
820
|
constructor(t) {
|
|
821
821
|
this.limits = new Int32Array(t), this.values = new Int32Array(t.length);
|
|
822
822
|
}
|
|
@@ -847,33 +847,33 @@ class Jt {
|
|
|
847
847
|
this.values.fill(0);
|
|
848
848
|
}
|
|
849
849
|
}
|
|
850
|
-
function
|
|
851
|
-
return t <= 0 ?
|
|
850
|
+
function je(a, t) {
|
|
851
|
+
return t <= 0 ? a.fXmin : t > a.fNbins ? a.fXmax : a.GetBinLowEdge(t + 1);
|
|
852
852
|
}
|
|
853
|
-
function gt(
|
|
854
|
-
const u = t + 1,
|
|
855
|
-
if (r.size =
|
|
856
|
-
const h = (
|
|
853
|
+
function gt(a, t, e, A, s, i, r) {
|
|
854
|
+
const u = t + 1, n = a.GetBinLowEdge(u), o = je(a, u), c = Math.abs(o - n);
|
|
855
|
+
if (r.size = c, r.pos = n + c * 0.5 - a.fXmin, e) {
|
|
856
|
+
const h = (a.fXmax - a.fXmin) * a.fNbins / (e * a.fNbins);
|
|
857
857
|
r.pos /= h, r.size /= h, r.size *= 1 - A, r.pos -= e * 0.5, r.pos += s;
|
|
858
858
|
}
|
|
859
859
|
}
|
|
860
|
-
function
|
|
861
|
-
gt(
|
|
860
|
+
function Oe(a, t, e, A, s, i, r) {
|
|
861
|
+
gt(a.fXaxis, t.x, e?.x, A?.x, s?.x, i, r.x), gt(a.fYaxis, t.y, e?.z, A?.y, s?.z, i, r.y), gt(a.fZaxis, t.z, e?.y, A?.z, s?.y, i, r.z);
|
|
862
862
|
}
|
|
863
|
-
function
|
|
864
|
-
const t =
|
|
865
|
-
return
|
|
863
|
+
function Pe(a) {
|
|
864
|
+
const t = a.y.size, e = a.y.pos;
|
|
865
|
+
return a.y.size = a.z.size, a.y.pos = a.z.pos, a.z.size = t, a.z.pos = e, a;
|
|
866
866
|
}
|
|
867
|
-
function Ue(
|
|
868
|
-
return
|
|
867
|
+
function Ue(a, t, e, A, s, i, r) {
|
|
868
|
+
return Oe(a, t, A, e, s, i, r), r;
|
|
869
869
|
}
|
|
870
|
-
function Ye(
|
|
871
|
-
return e.z.pos = 2 *
|
|
870
|
+
function Ye(a, t, e) {
|
|
871
|
+
return e.z.pos = 2 * a - e.z.pos, e;
|
|
872
872
|
}
|
|
873
|
-
function
|
|
874
|
-
if (
|
|
873
|
+
function Qt(a, t) {
|
|
874
|
+
if (a.length !== t.length) return !1;
|
|
875
875
|
const e = {};
|
|
876
|
-
for (const A of
|
|
876
|
+
for (const A of a)
|
|
877
877
|
e[A] = (e[A] || 0) + 1;
|
|
878
878
|
for (const A of t) {
|
|
879
879
|
if (!e[A])
|
|
@@ -882,17 +882,17 @@ function Et(o, t) {
|
|
|
882
882
|
}
|
|
883
883
|
return !0;
|
|
884
884
|
}
|
|
885
|
-
function
|
|
886
|
-
if (!Array.isArray(
|
|
885
|
+
function Se(a, t) {
|
|
886
|
+
if (!Array.isArray(a) || !Array.isArray(t) || a.length !== t.length)
|
|
887
887
|
return !1;
|
|
888
|
-
for (let e = 0; e <
|
|
889
|
-
const A = Object.keys(
|
|
888
|
+
for (let e = 0; e < a.length; e++) {
|
|
889
|
+
const A = Object.keys(a[e]), s = Object.keys(t[e]);
|
|
890
890
|
if (A.length !== s.length)
|
|
891
891
|
return !1;
|
|
892
|
-
for (const
|
|
893
|
-
if (!t[e].hasOwnProperty(
|
|
892
|
+
for (const i of A) {
|
|
893
|
+
if (!t[e].hasOwnProperty(i))
|
|
894
894
|
return !1;
|
|
895
|
-
const r =
|
|
895
|
+
const r = a[e][i], u = t[e][i];
|
|
896
896
|
if (typeof r != typeof u)
|
|
897
897
|
return !1;
|
|
898
898
|
if (typeof r == "object") {
|
|
@@ -900,11 +900,11 @@ function Pe(o, t) {
|
|
|
900
900
|
if (r !== u) return !1;
|
|
901
901
|
continue;
|
|
902
902
|
}
|
|
903
|
-
const
|
|
904
|
-
if (
|
|
903
|
+
const n = Object.keys(r), o = Object.keys(u);
|
|
904
|
+
if (n.length !== o.length)
|
|
905
905
|
return !1;
|
|
906
|
-
for (const
|
|
907
|
-
if (!u.hasOwnProperty(
|
|
906
|
+
for (const c of n)
|
|
907
|
+
if (!u.hasOwnProperty(c) || r[c] !== u[c])
|
|
908
908
|
return !1;
|
|
909
909
|
} else if (r !== u)
|
|
910
910
|
return !1;
|
|
@@ -912,418 +912,418 @@ function Pe(o, t) {
|
|
|
912
912
|
}
|
|
913
913
|
return !0;
|
|
914
914
|
}
|
|
915
|
-
function
|
|
916
|
-
let s = Array(
|
|
917
|
-
const
|
|
918
|
-
const
|
|
915
|
+
function mt(a, t, e, A) {
|
|
916
|
+
let s = Array(a.length).fill(0);
|
|
917
|
+
const i = (r, u, n) => {
|
|
918
|
+
const o = u.fXaxis.fNbins, c = u.fYaxis.fNbins;
|
|
919
919
|
u.fZaxis.fNbins;
|
|
920
920
|
const h = e.slice(
|
|
921
921
|
-e.length + r + 1
|
|
922
|
-
).reduce((f,
|
|
923
|
-
if (s[
|
|
922
|
+
).reduce((f, B) => f * B, 1);
|
|
923
|
+
if (s[n] += (a[r].x + a[r].y * o + a[r].z * o * c) * h, r + 1 < a.length) {
|
|
924
924
|
let f;
|
|
925
925
|
u.children.content ? f = u.children.content[u.getBin(
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
926
|
+
a[r].x + 1,
|
|
927
|
+
a[r].y + 1,
|
|
928
|
+
a[r].z + 1
|
|
929
929
|
)] : f = u.children[A[0]][u.getBin(
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
)],
|
|
930
|
+
a[r].x + 1,
|
|
931
|
+
a[r].y + 1,
|
|
932
|
+
a[r].z + 1
|
|
933
|
+
)], n > r && i(r + 1, f, n);
|
|
934
934
|
}
|
|
935
935
|
};
|
|
936
|
-
for (let r = 0; r <
|
|
937
|
-
|
|
936
|
+
for (let r = 0; r < a.length; r++)
|
|
937
|
+
i(0, t, r);
|
|
938
938
|
return s;
|
|
939
939
|
}
|
|
940
|
-
function
|
|
941
|
-
let A = Array(
|
|
942
|
-
for (let s = 0; s <
|
|
940
|
+
function q(a, t, e) {
|
|
941
|
+
let A = Array(a.length).fill(0);
|
|
942
|
+
for (let s = 0; s < a.length; s++)
|
|
943
943
|
if (A[s] = t.getBin(
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
944
|
+
a[s].x + 1,
|
|
945
|
+
a[s].y + 1,
|
|
946
|
+
a[s].z + 1
|
|
947
947
|
), t.children)
|
|
948
948
|
t.children?.content ? t = t.children.content[A[s]] : t = t.children[e[0]]?.[A[s]];
|
|
949
949
|
else
|
|
950
950
|
return A;
|
|
951
951
|
return A;
|
|
952
952
|
}
|
|
953
|
-
function
|
|
953
|
+
function R(a, t, e, A, s, i = 0) {
|
|
954
954
|
const r = ["x", "y", "z"], u = Number.parseInt(e._typename.substring(2, 3), 10);
|
|
955
|
-
let
|
|
956
|
-
if (
|
|
957
|
-
for (let
|
|
958
|
-
const
|
|
959
|
-
|
|
960
|
-
min:
|
|
961
|
-
max:
|
|
962
|
-
name:
|
|
963
|
-
title:
|
|
964
|
-
label:
|
|
955
|
+
let n = {};
|
|
956
|
+
if (a[0]) {
|
|
957
|
+
for (let o = 0; o < u; o++) {
|
|
958
|
+
const c = r[o], l = e[`f${c.toUpperCase()}axis`], h = a[0][c];
|
|
959
|
+
n[c] = {
|
|
960
|
+
min: l.GetBinLowEdge(h + 1),
|
|
961
|
+
max: l.GetBinCenter(h + 1) * 2 - l.GetBinLowEdge(h + 1),
|
|
962
|
+
name: l.fName,
|
|
963
|
+
title: l.fTitle,
|
|
964
|
+
label: l.fLabels?.arr[h]?.fString
|
|
965
965
|
};
|
|
966
966
|
}
|
|
967
|
-
|
|
967
|
+
n = { ...n, color: A.getColorAt(i, t), name: e.fName };
|
|
968
968
|
}
|
|
969
|
-
if (
|
|
970
|
-
let
|
|
971
|
-
return e.children?.content ?
|
|
969
|
+
if (a[1]) {
|
|
970
|
+
let o;
|
|
971
|
+
return e.children?.content ? o = e.children.content[e.getBin(a[0].x + 1, a[0].y + 1, a[0].z + 1)] : e.children?.[s[0]] && (o = e.children[s[0]][e.getBin(a[0].x + 1, a[0].y + 1, a[0].z + 1)]), [n, ...R(a.slice(1), t, o, A, s, i + 1)];
|
|
972
972
|
} else
|
|
973
|
-
return [
|
|
973
|
+
return [n];
|
|
974
974
|
}
|
|
975
|
-
function
|
|
975
|
+
function He(a, t, e, A) {
|
|
976
976
|
let s = 0;
|
|
977
|
-
const
|
|
978
|
-
for (let
|
|
979
|
-
const
|
|
980
|
-
r.push(
|
|
981
|
-
}
|
|
982
|
-
const u = (
|
|
983
|
-
const { fNbins:
|
|
984
|
-
if (s += f * r[
|
|
985
|
-
const
|
|
986
|
-
u(
|
|
977
|
+
const i = e.slice(1), r = [];
|
|
978
|
+
for (let n = 0; n < i.length; n++) {
|
|
979
|
+
const o = i.slice(n).reduce((c, l) => c * l, 1);
|
|
980
|
+
r.push(o);
|
|
981
|
+
}
|
|
982
|
+
const u = (n, o) => {
|
|
983
|
+
const { fNbins: c } = o.fXaxis, { fNbins: l } = o.fYaxis, { fNbins: h } = o.fZaxis, f = a[n].x + a[n].y * c + a[n].z * c * l;
|
|
984
|
+
if (s += f * r[n], n + 1 < a.length) {
|
|
985
|
+
const B = Fe(o, a[n], A);
|
|
986
|
+
u(n + 1, B);
|
|
987
987
|
}
|
|
988
988
|
};
|
|
989
989
|
return u(0, t), s;
|
|
990
990
|
}
|
|
991
|
-
function
|
|
992
|
-
const A =
|
|
991
|
+
function Fe(a, t, e) {
|
|
992
|
+
const A = a.getBin(
|
|
993
993
|
t.x + 1,
|
|
994
994
|
t.y + 1,
|
|
995
995
|
t.z + 1
|
|
996
996
|
);
|
|
997
|
-
return
|
|
997
|
+
return a.children.content ? a.children.content[A] : a.children[e[0]][A];
|
|
998
998
|
}
|
|
999
|
-
function
|
|
999
|
+
function wt(a, t, e) {
|
|
1000
1000
|
const A = t.splice(0, 1)[0];
|
|
1001
|
-
return t.length > 0 ?
|
|
1001
|
+
return t.length > 0 ? wt(a.children.content[A], t, e) : a.children.content ? a.children.content[A] : a.children[e][A];
|
|
1002
1002
|
}
|
|
1003
|
-
function
|
|
1004
|
-
if (!
|
|
1003
|
+
function We(a) {
|
|
1004
|
+
if (!a) return;
|
|
1005
1005
|
const t = (s) => {
|
|
1006
|
-
let
|
|
1006
|
+
let i = -1 / 0;
|
|
1007
1007
|
for (let r = 0; r < s.length; r++) {
|
|
1008
1008
|
const u = s[r];
|
|
1009
|
-
u >
|
|
1009
|
+
u > i && (i = u);
|
|
1010
1010
|
}
|
|
1011
|
-
return
|
|
1011
|
+
return i;
|
|
1012
1012
|
}, e = [];
|
|
1013
|
-
e[0] = { content: t(
|
|
1013
|
+
e[0] = { content: t(a.fArray) }, a.fArrays && Object.keys(a?.fArrays).forEach((s) => {
|
|
1014
1014
|
e[0] = {
|
|
1015
1015
|
...e[0],
|
|
1016
|
-
[s]: t(
|
|
1016
|
+
[s]: t(a.fArrays[s].values)
|
|
1017
1017
|
};
|
|
1018
1018
|
});
|
|
1019
|
-
const A = (s,
|
|
1020
|
-
e[
|
|
1021
|
-
u.forEach((
|
|
1022
|
-
if (!
|
|
1023
|
-
const
|
|
1024
|
-
(!(r in e[
|
|
1025
|
-
const
|
|
1026
|
-
(!(
|
|
1027
|
-
}),
|
|
1019
|
+
const A = (s, i = 1) => {
|
|
1020
|
+
e[i] || (e[i] = {}), Object.entries(s).forEach(([r, u]) => {
|
|
1021
|
+
u.forEach((n) => {
|
|
1022
|
+
if (!n) return;
|
|
1023
|
+
const o = t(n.fArray);
|
|
1024
|
+
(!(r in e[i]) || o > e[i][r]) && (e[i][r] = o), n.fArrays && Object.keys(n.fArrays).forEach((c) => {
|
|
1025
|
+
const l = n.fArrays[c].max;
|
|
1026
|
+
(!(c in e[i]) || l > e[i][c]) && (e[i][c] = l), e[i][c] = Math.max(e[i][c], t(n.fArrays[c].values));
|
|
1027
|
+
}), n.children && A(n.children, i + 1);
|
|
1028
1028
|
});
|
|
1029
1029
|
});
|
|
1030
1030
|
};
|
|
1031
|
-
return
|
|
1031
|
+
return a.children && A(a.children), e;
|
|
1032
1032
|
}
|
|
1033
|
-
function
|
|
1034
|
-
if (!
|
|
1035
|
-
const e = (
|
|
1033
|
+
function Xe(a, t) {
|
|
1034
|
+
if (!a) return;
|
|
1035
|
+
const e = (i) => {
|
|
1036
1036
|
let r = 0;
|
|
1037
|
-
for (let u = 0; u <
|
|
1038
|
-
const
|
|
1039
|
-
|
|
1037
|
+
for (let u = 0; u < i.length; u++) {
|
|
1038
|
+
const n = i[u];
|
|
1039
|
+
n > r && (r = n);
|
|
1040
1040
|
}
|
|
1041
1041
|
return r;
|
|
1042
1042
|
}, A = [];
|
|
1043
|
-
A[0] = { content: e(
|
|
1044
|
-
|
|
1043
|
+
A[0] = { content: e(a.fSumw2) }, a.fArrays && Object.keys(a?.fArrays).forEach((i) => {
|
|
1044
|
+
a.fArrays[i].errors && (A[0] = {
|
|
1045
1045
|
...A[0],
|
|
1046
|
-
[
|
|
1046
|
+
[i]: e(a.fArrays[i].errors)
|
|
1047
1047
|
});
|
|
1048
1048
|
});
|
|
1049
|
-
const s = (
|
|
1050
|
-
A[r] || (A[r] = {}), Object.entries(
|
|
1051
|
-
|
|
1052
|
-
if (!
|
|
1053
|
-
const
|
|
1054
|
-
(!(u in A[r]) ||
|
|
1055
|
-
|
|
1056
|
-
}),
|
|
1049
|
+
const s = (i, r = 1) => {
|
|
1050
|
+
A[r] || (A[r] = {}), Object.entries(i).forEach(([u, n]) => {
|
|
1051
|
+
n.forEach((o) => {
|
|
1052
|
+
if (!o) return;
|
|
1053
|
+
const c = e(o.fSumw2), l = isNaN(c) ? 0 : c;
|
|
1054
|
+
(!(u in A[r]) || l > A[r][u]) && (A[r][u] = l), o.fArrays && Object.keys(o.fArrays).forEach((h) => {
|
|
1055
|
+
o.fArrays[h].errors && ((!(h in A[r]) || l > A[r][h]) && (A[r][h] = l), A[r][h] = Math.max(A[r][h], e(o.fArrays[h].errors)));
|
|
1056
|
+
}), o.children && s(o.children, r + 1);
|
|
1057
1057
|
});
|
|
1058
1058
|
});
|
|
1059
1059
|
};
|
|
1060
|
-
|
|
1061
|
-
for (let
|
|
1062
|
-
Object.keys(A[
|
|
1063
|
-
A[
|
|
1060
|
+
a.children && s(a.children);
|
|
1061
|
+
for (let i = 0; i < A.length; i++)
|
|
1062
|
+
Object.keys(A[i]).forEach((r) => {
|
|
1063
|
+
A[i][r] === 0 && (A[i][r] = Math.sqrt(t[i][r]));
|
|
1064
1064
|
});
|
|
1065
1065
|
return A;
|
|
1066
1066
|
}
|
|
1067
|
-
function
|
|
1068
|
-
if (!
|
|
1069
|
-
const e = (
|
|
1067
|
+
function Je(a, t) {
|
|
1068
|
+
if (!a) return;
|
|
1069
|
+
const e = (i) => {
|
|
1070
1070
|
let r = 1 / 0;
|
|
1071
|
-
for (let u = 0; u <
|
|
1072
|
-
const
|
|
1073
|
-
|
|
1071
|
+
for (let u = 0; u < i.length; u++) {
|
|
1072
|
+
const n = i[u];
|
|
1073
|
+
n !== 0 && n < r && (r = n);
|
|
1074
1074
|
}
|
|
1075
1075
|
return r;
|
|
1076
1076
|
}, A = [];
|
|
1077
|
-
A[0] = { content: e(
|
|
1078
|
-
|
|
1077
|
+
A[0] = { content: e(a.fSumw2) }, a.fArrays && Object.keys(a?.fArrays).forEach((i) => {
|
|
1078
|
+
a.fArrays[i].errors && (A[0] = {
|
|
1079
1079
|
...A[0],
|
|
1080
|
-
[
|
|
1080
|
+
[i]: e(a.fArrays[i].errors)
|
|
1081
1081
|
});
|
|
1082
1082
|
});
|
|
1083
|
-
const s = (
|
|
1084
|
-
A[r] || (A[r] = {}), Object.entries(
|
|
1085
|
-
|
|
1086
|
-
if (!
|
|
1087
|
-
const
|
|
1088
|
-
(!(u in A[r]) ||
|
|
1089
|
-
|
|
1090
|
-
}),
|
|
1083
|
+
const s = (i, r = 1) => {
|
|
1084
|
+
A[r] || (A[r] = {}), Object.entries(i).forEach(([u, n]) => {
|
|
1085
|
+
n.forEach((o) => {
|
|
1086
|
+
if (!o) return;
|
|
1087
|
+
const c = e(o.fSumw2), l = isNaN(c) ? 0 : c;
|
|
1088
|
+
(!(u in A[r]) || l < A[r][u]) && (A[r][u] = l), o.fArrays && Object.keys(o.fArrays).forEach((h) => {
|
|
1089
|
+
o.fArrays[h].errors && ((!(h in A[r]) || l < A[r][h]) && (A[r][h] = l), A[r][h] = Math.min(A[r][h], e(o.fArrays[h].errors.filter((f) => f > 0))));
|
|
1090
|
+
}), o.children && s(o.children, r + 1);
|
|
1091
1091
|
});
|
|
1092
1092
|
});
|
|
1093
1093
|
};
|
|
1094
|
-
|
|
1095
|
-
for (let
|
|
1096
|
-
Object.keys(A[
|
|
1097
|
-
(A[
|
|
1094
|
+
a.children && s(a.children);
|
|
1095
|
+
for (let i = 0; i < A.length; i++)
|
|
1096
|
+
Object.keys(A[i]).forEach((r) => {
|
|
1097
|
+
(A[i][r] === 0 || A[i][r] === 1 / 0) && (A[i][r] = Math.sqrt(t[i][r]));
|
|
1098
1098
|
});
|
|
1099
1099
|
return A;
|
|
1100
1100
|
}
|
|
1101
|
-
function
|
|
1102
|
-
if (!
|
|
1101
|
+
function Le(a) {
|
|
1102
|
+
if (!a) return;
|
|
1103
1103
|
const t = (s) => {
|
|
1104
|
-
let
|
|
1104
|
+
let i = 1 / 0;
|
|
1105
1105
|
for (let r = 0; r < s.length; r++) {
|
|
1106
1106
|
const u = s[r];
|
|
1107
|
-
u <
|
|
1107
|
+
u < i && (i = u);
|
|
1108
1108
|
}
|
|
1109
|
-
return
|
|
1109
|
+
return i;
|
|
1110
1110
|
}, e = [];
|
|
1111
1111
|
e[0] = {
|
|
1112
|
-
content: t(
|
|
1113
|
-
},
|
|
1112
|
+
content: t(a.fArray.filter((s) => s !== 0))
|
|
1113
|
+
}, a.fArrays && Object.keys(a?.fArrays).forEach((s) => {
|
|
1114
1114
|
e[0] = {
|
|
1115
1115
|
...e[0],
|
|
1116
1116
|
[s]: t(
|
|
1117
|
-
|
|
1117
|
+
a.fArrays[s].values.filter((i) => i !== 0)
|
|
1118
1118
|
)
|
|
1119
1119
|
};
|
|
1120
1120
|
});
|
|
1121
|
-
const A = (s,
|
|
1122
|
-
e[
|
|
1123
|
-
u.forEach((
|
|
1124
|
-
if (!
|
|
1125
|
-
const
|
|
1126
|
-
(!(r in e[
|
|
1127
|
-
(!(
|
|
1128
|
-
e[
|
|
1129
|
-
t(
|
|
1121
|
+
const A = (s, i = 1) => {
|
|
1122
|
+
e[i] || (e[i] = {}), Object.entries(s).forEach(([r, u]) => {
|
|
1123
|
+
u.forEach((n) => {
|
|
1124
|
+
if (!n) return;
|
|
1125
|
+
const o = t(n.fArray.filter((c) => c !== 0));
|
|
1126
|
+
(!(r in e[i]) || o < e[i][r]) && (e[i][r] = o), n.fArrays && Object.keys(n.fArrays).forEach((c) => {
|
|
1127
|
+
(!(c in e[i]) || o > e[i][c]) && (e[i][c] = o), e[i][c] = Math.min(
|
|
1128
|
+
e[i][c],
|
|
1129
|
+
t(n.fArrays[c].values.filter((l) => l !== 0))
|
|
1130
1130
|
);
|
|
1131
|
-
}),
|
|
1131
|
+
}), n.children && A(n.children, i + 1);
|
|
1132
1132
|
});
|
|
1133
1133
|
});
|
|
1134
1134
|
};
|
|
1135
|
-
return
|
|
1135
|
+
return a.children && A(a.children), e;
|
|
1136
1136
|
}
|
|
1137
|
-
function Ve(
|
|
1138
|
-
if (!
|
|
1139
|
-
const t =
|
|
1137
|
+
function Ve(a) {
|
|
1138
|
+
if (!a) return;
|
|
1139
|
+
const t = a.fXaxis.fNbins * a.fYaxis.fNbins * a.fZaxis.fNbins;
|
|
1140
1140
|
let e = [];
|
|
1141
1141
|
e.push(t);
|
|
1142
|
-
const A = (s,
|
|
1142
|
+
const A = (s, i = 1) => {
|
|
1143
1143
|
let r = 0;
|
|
1144
|
-
return
|
|
1145
|
-
u[1].forEach((
|
|
1146
|
-
|
|
1144
|
+
return i >= e.length && e.push(1), Object.entries(s).forEach((u, n) => {
|
|
1145
|
+
u[1].forEach((o) => {
|
|
1146
|
+
o && (r = o.fXaxis.fNbins * o.fYaxis.fNbins * o.fZaxis.fNbins, r > e[i] && (e[i] = r), o.children && A(o.children, i + 1));
|
|
1147
1147
|
});
|
|
1148
1148
|
}), e;
|
|
1149
1149
|
};
|
|
1150
|
-
return
|
|
1150
|
+
return a.children && A(a.children), e.push(1), e;
|
|
1151
1151
|
}
|
|
1152
|
-
function
|
|
1153
|
-
new
|
|
1152
|
+
function ke(a, t, e) {
|
|
1153
|
+
new j(a.color.default.min).toArray(e, 0), new j(a.color.default.max).toArray(e, 3);
|
|
1154
1154
|
let A = 1;
|
|
1155
|
-
|
|
1156
|
-
const
|
|
1157
|
-
new
|
|
1158
|
-
}),
|
|
1159
|
-
const
|
|
1160
|
-
new
|
|
1155
|
+
a.color.layer.forEach((s) => {
|
|
1156
|
+
const i = A * 6;
|
|
1157
|
+
new j(s.min).toArray(e, i), new j(s.max).toArray(e, i + 3), A++;
|
|
1158
|
+
}), a.color.set.forEach((s) => {
|
|
1159
|
+
const i = A * 6;
|
|
1160
|
+
new j(s.min).toArray(e, i), new j(s.max).toArray(e, i + 3), A++;
|
|
1161
1161
|
}), t.uniforms.colorPairs = { value: e }, t.uniformsNeedUpdate = !0;
|
|
1162
1162
|
}
|
|
1163
|
-
function
|
|
1164
|
-
const u = ((
|
|
1165
|
-
let h = (
|
|
1163
|
+
function zt(a, t, e, A, s, i) {
|
|
1164
|
+
const u = ((o, c, l) => {
|
|
1165
|
+
let h = (o - c) / (l - c);
|
|
1166
1166
|
return h > 1 && (h = 1), isNaN(h) || h === 1 / 0 ? 0 : h;
|
|
1167
1167
|
})(t, e, A);
|
|
1168
|
-
let
|
|
1169
|
-
return
|
|
1168
|
+
let n = 0;
|
|
1169
|
+
return a.set[s] ? n = 1 + a.layer.length + s : a.layer[i] && (n = 1 + i), n + u;
|
|
1170
1170
|
}
|
|
1171
|
-
function
|
|
1172
|
-
if (!(1 /
|
|
1173
|
-
return r[0] = t[
|
|
1174
|
-
const
|
|
1175
|
-
return r[0] =
|
|
1171
|
+
function Gt(a, t, e, A, s, i, r) {
|
|
1172
|
+
if (!(1 / a === -1 / 0 || a < 0))
|
|
1173
|
+
return r[0] = t[a], r[1] = t[a + 1], r[2] = t[a + 2], r[3] = e[a], r[4] = e[a + 1], r[5] = e[a + 2], r;
|
|
1174
|
+
const n = Math.abs(a), o = i !== null ? A[s][i] : A[s];
|
|
1175
|
+
return r[0] = o.pos[n], r[1] = o.pos[n + 1], r[2] = o.pos[n + 2], r[3] = o.scale[n], r[4] = o.scale[n + 1], r[5] = o.scale[n + 2], r;
|
|
1176
1176
|
}
|
|
1177
|
-
const
|
|
1178
|
-
if (!
|
|
1179
|
-
for (const t in
|
|
1180
|
-
if (t !== "content" && Object.prototype.hasOwnProperty.call(
|
|
1177
|
+
const Ze = (a) => {
|
|
1178
|
+
if (!a) return !1;
|
|
1179
|
+
for (const t in a)
|
|
1180
|
+
if (t !== "content" && Object.prototype.hasOwnProperty.call(a, t) && a[t] && typeof a[t] == "object" && Object.keys(a[t]).length > 0)
|
|
1181
1181
|
return !0;
|
|
1182
1182
|
return !1;
|
|
1183
1183
|
};
|
|
1184
|
-
function
|
|
1185
|
-
const u = t.fXaxis.fNbins,
|
|
1186
|
-
let
|
|
1187
|
-
const h = new Float32Array((u *
|
|
1184
|
+
function K(a, t, e, A, s, i, r) {
|
|
1185
|
+
const u = t.fXaxis.fNbins, n = t.fYaxis.fNbins, o = t.fZaxis.fNbins;
|
|
1186
|
+
let c = 0, l = 0;
|
|
1187
|
+
const h = new Float32Array((u * n * o - 1) * 3), f = new Float32Array((u * n * o - 1) * 3), B = new Float32Array(u * n * o - 1), d = new Float32Array(u * n * o - 1), m = new Float32Array(u * n * o - 1), g = new Float32Array(6), p = new Float32Array(6), C = (w) => {
|
|
1188
1188
|
const I = M * 3;
|
|
1189
|
-
h[I] =
|
|
1190
|
-
}, x = (
|
|
1191
|
-
|
|
1192
|
-
const G =
|
|
1193
|
-
return
|
|
1189
|
+
h[I] = w[0], h[I + 1] = w[1], h[I + 2] = w[2], f[I] = w[3], f[I + 1] = w[4], f[I + 2] = w[5], B[M] = w[6], d[M] = w[7], m[M] = w[8];
|
|
1190
|
+
}, x = (w, I, E, D) => {
|
|
1191
|
+
Gt(w, h, f, a, E, D, g), Gt(I, h, f, a, E, D, p);
|
|
1192
|
+
const G = g[0] - g[3] * 0.5 < p[0] - p[3] * 0.5 ? g[0] - g[3] * 0.5 : p[0] - p[3] * 0.5, Q = g[1] - g[4] * 0.5 < p[1] - p[4] * 0.5 ? g[1] - g[4] * 0.5 : p[1] - p[4] * 0.5, U = g[2] - g[5] * 0.5 < p[2] - p[5] * 0.5 ? g[2] - g[5] * 0.5 : p[2] - p[5] * 0.5, N = g[0] + g[3] * 0.5 > p[0] + p[3] * 0.5 ? g[0] + g[3] * 0.5 : p[0] + p[3] * 0.5, O = g[1] + g[4] * 0.5 > p[1] + p[4] * 0.5 ? g[1] + g[4] * 0.5 : p[1] + p[4] * 0.5, z = g[2] + g[5] * 0.5 > p[2] + p[5] * 0.5 ? g[2] + g[5] * 0.5 : p[2] + p[5] * 0.5, v = new Float32Array(9);
|
|
1193
|
+
return v[0] = (G + N) * 0.5, v[1] = (Q + O) * 0.5, v[2] = (U + z) * 0.5, v[3] = N - G, v[4] = O - Q, v[5] = z - U, v;
|
|
1194
1194
|
};
|
|
1195
1195
|
let M = 0;
|
|
1196
|
-
for (let
|
|
1197
|
-
for (let E = 0; E <
|
|
1198
|
-
const D =
|
|
1196
|
+
for (let w = 0; w < n; w++) {
|
|
1197
|
+
for (let E = 0; E < o; E++) {
|
|
1198
|
+
const D = c + r;
|
|
1199
1199
|
let G = new Array(u);
|
|
1200
1200
|
for (let Q = 0; Q < u; Q++)
|
|
1201
1201
|
G[Q] = -Q - D;
|
|
1202
1202
|
for (; G.length > 1; ) {
|
|
1203
1203
|
let Q = 0;
|
|
1204
|
-
const
|
|
1205
|
-
for (let
|
|
1206
|
-
const
|
|
1207
|
-
G.splice(Q, 2, M),
|
|
1204
|
+
const U = Math.floor(G.length / 2);
|
|
1205
|
+
for (let N = 0; N < U; N++) {
|
|
1206
|
+
const O = G[Q], z = G[Q + 1], v = x(O * 3, z * 3, e, A);
|
|
1207
|
+
G.splice(Q, 2, M), Ct(v, i), v[6] = 1 / O === -1 / 0 || O < 0 ? O : m[O], v[7] = 1 / z === -1 / 0 || z < 0 ? z : m[z], v[8] = l, C(v), M += 1, l += 1, Q += 1;
|
|
1208
1208
|
}
|
|
1209
1209
|
}
|
|
1210
|
-
|
|
1210
|
+
c += u;
|
|
1211
1211
|
}
|
|
1212
|
-
const I = new Array(
|
|
1213
|
-
for (let E = 0; E <
|
|
1214
|
-
I[E] = M - 1 - (
|
|
1212
|
+
const I = new Array(o);
|
|
1213
|
+
for (let E = 0; E < o; E++)
|
|
1214
|
+
I[E] = M - 1 - (o - 1 - E) * (u - 1);
|
|
1215
1215
|
for (; I.length > 1; ) {
|
|
1216
1216
|
let E = 0;
|
|
1217
1217
|
const D = Math.floor(I.length / 2);
|
|
1218
1218
|
for (let G = 0; G < D; G++) {
|
|
1219
|
-
const Q = I[E],
|
|
1220
|
-
I.splice(E, 2, M),
|
|
1219
|
+
const Q = I[E], U = I[E + 1], N = x(Q * 3, U * 3, e, A);
|
|
1220
|
+
I.splice(E, 2, M), Ct(N, i), N[6] = m[Q], N[7] = m[U], N[8] = l, C(N), M += 1, l += 1, E += 1;
|
|
1221
1221
|
}
|
|
1222
1222
|
}
|
|
1223
1223
|
}
|
|
1224
|
-
const
|
|
1225
|
-
for (let
|
|
1226
|
-
w
|
|
1227
|
-
for (;
|
|
1228
|
-
let
|
|
1229
|
-
const I = Math.floor(
|
|
1224
|
+
const b = new Array(n);
|
|
1225
|
+
for (let w = 0; w < n; w++)
|
|
1226
|
+
b[w] = M - 1 - (n - 1 - w) * (u * o - 1);
|
|
1227
|
+
for (; b.length > 1; ) {
|
|
1228
|
+
let w = 0;
|
|
1229
|
+
const I = Math.floor(b.length / 2);
|
|
1230
1230
|
for (let E = 0; E < I; E++) {
|
|
1231
|
-
const D = w
|
|
1232
|
-
|
|
1231
|
+
const D = b[w], G = b[w + 1], Q = x(D * 3, G * 3, e, A);
|
|
1232
|
+
b.splice(w, 2, M), Ct(Q, i), Q[6] = m[D], Q[7] = m[G], Q[8] = l, C(Q), M += 1, l += 1, w += 1;
|
|
1233
1233
|
}
|
|
1234
1234
|
}
|
|
1235
1235
|
return {
|
|
1236
1236
|
pos: h,
|
|
1237
1237
|
scale: f,
|
|
1238
|
-
left:
|
|
1239
|
-
right:
|
|
1238
|
+
left: B,
|
|
1239
|
+
right: d
|
|
1240
1240
|
};
|
|
1241
1241
|
}
|
|
1242
|
-
function
|
|
1243
|
-
const
|
|
1244
|
-
|
|
1245
|
-
{ length:
|
|
1242
|
+
function qe(a, t, e, A, s, i, r, u) {
|
|
1243
|
+
const n = new Array(a.length).fill().map((c) => []);
|
|
1244
|
+
n[n.length - 1] = Array.from(
|
|
1245
|
+
{ length: i.length },
|
|
1246
1246
|
() => []
|
|
1247
|
-
), s === null ?
|
|
1248
|
-
|
|
1247
|
+
), s === null ? n[0] = [K(
|
|
1248
|
+
a,
|
|
1249
1249
|
t,
|
|
1250
1250
|
e,
|
|
1251
1251
|
null,
|
|
1252
|
-
|
|
1252
|
+
i,
|
|
1253
1253
|
r,
|
|
1254
1254
|
0
|
|
1255
|
-
)] : (
|
|
1256
|
-
|
|
1255
|
+
)] : (n[0] = new Array(i.length), A.forEach((c) => n[0][i.indexOf(c)] = K(
|
|
1256
|
+
a,
|
|
1257
1257
|
t,
|
|
1258
1258
|
e,
|
|
1259
|
-
|
|
1260
|
-
|
|
1259
|
+
i.indexOf(c),
|
|
1260
|
+
i,
|
|
1261
1261
|
r,
|
|
1262
1262
|
0
|
|
1263
1263
|
)));
|
|
1264
|
-
const
|
|
1265
|
-
if (!
|
|
1266
|
-
const f = new
|
|
1264
|
+
const o = (c, l, h) => {
|
|
1265
|
+
if (!c.children) return;
|
|
1266
|
+
const f = new Lt(
|
|
1267
1267
|
[
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1268
|
+
c.fXaxis.fNbins,
|
|
1269
|
+
c.fYaxis.fNbins,
|
|
1270
|
+
c.fZaxis.fNbins
|
|
1271
1271
|
]
|
|
1272
|
-
),
|
|
1273
|
-
for (let
|
|
1272
|
+
), B = c.fXaxis.fNbins * c.fYaxis.fNbins * c.fZaxis.fNbins, d = u.slice(1, l - 1).reduce((g, p) => g * p, u[1]), m = u[l];
|
|
1273
|
+
for (let g = 0; g < B; g++) {
|
|
1274
1274
|
const p = { x: f.getValueAt(0), y: f.getValueAt(1), z: f.getValueAt(2) };
|
|
1275
|
-
if (
|
|
1276
|
-
const
|
|
1277
|
-
if (!
|
|
1275
|
+
if (c?.children?.content) {
|
|
1276
|
+
const C = c.children.content[c.getBin(p.x + 1, p.y + 1, p.z + 1)];
|
|
1277
|
+
if (!C) {
|
|
1278
1278
|
if (f.increment() === !1) break;
|
|
1279
1279
|
continue;
|
|
1280
1280
|
}
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1281
|
+
n[l][g + h] = K(
|
|
1282
|
+
a,
|
|
1283
|
+
C,
|
|
1284
|
+
l,
|
|
1285
1285
|
null,
|
|
1286
|
-
|
|
1286
|
+
i,
|
|
1287
1287
|
r,
|
|
1288
|
-
(
|
|
1289
|
-
),
|
|
1290
|
-
} else
|
|
1291
|
-
const x =
|
|
1292
|
-
let
|
|
1293
|
-
for (let I = M; I < M + u[
|
|
1294
|
-
if (
|
|
1295
|
-
|
|
1288
|
+
(g + h) * m
|
|
1289
|
+
), o(C, l + 1, (f.getIndex() + h) * d);
|
|
1290
|
+
} else Ze(c.children) && A.forEach(((C) => {
|
|
1291
|
+
const x = i.indexOf(C), M = (g + h) * m;
|
|
1292
|
+
let b = !1;
|
|
1293
|
+
for (let I = M; I < M + u[l]; I++)
|
|
1294
|
+
if (a[l][x].rendered[I] !== -1) {
|
|
1295
|
+
b = !0;
|
|
1296
1296
|
break;
|
|
1297
1297
|
}
|
|
1298
|
-
if (!
|
|
1299
|
-
|
|
1298
|
+
if (!b) {
|
|
1299
|
+
n[l][x].push(null);
|
|
1300
1300
|
return;
|
|
1301
1301
|
}
|
|
1302
|
-
const
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1302
|
+
const w = c.children[C][c.getBin(p.x + 1, p.z + 1, p.y + 1)];
|
|
1303
|
+
w && (n[l][x][g + h] = K(
|
|
1304
|
+
a,
|
|
1305
|
+
w,
|
|
1306
|
+
l,
|
|
1307
1307
|
x,
|
|
1308
|
-
|
|
1308
|
+
i,
|
|
1309
1309
|
r,
|
|
1310
|
-
(
|
|
1311
|
-
),
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
(f.getIndex() + h) *
|
|
1310
|
+
(g + h) * m
|
|
1311
|
+
), o(
|
|
1312
|
+
w,
|
|
1313
|
+
l + 1,
|
|
1314
|
+
(f.getIndex() + h) * d
|
|
1315
1315
|
));
|
|
1316
1316
|
}));
|
|
1317
1317
|
if (f.increment() === !1) break;
|
|
1318
1318
|
}
|
|
1319
1319
|
};
|
|
1320
|
-
return
|
|
1320
|
+
return o(t, 1, 0), n;
|
|
1321
1321
|
}
|
|
1322
|
-
function
|
|
1323
|
-
const e = t.elements, A = Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]), s = Math.sqrt(e[4] * e[4] + e[5] * e[5] + e[6] * e[6]),
|
|
1324
|
-
|
|
1322
|
+
function Ct(a, t) {
|
|
1323
|
+
const e = t.elements, A = Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]), s = Math.sqrt(e[4] * e[4] + e[5] * e[5] + e[6] * e[6]), i = Math.sqrt(e[8] * e[8] + e[9] * e[9] + e[10] * e[10]);
|
|
1324
|
+
a[0] = a[0] * A + e[12], a[1] = a[1] * s + e[13], a[2] = a[2] * i + e[14], a[3] = a[3] * A, a[4] = a[4] * s, a[5] = a[5] * i;
|
|
1325
1325
|
}
|
|
1326
|
-
class
|
|
1326
|
+
class Tt {
|
|
1327
1327
|
rootObj = void 0;
|
|
1328
1328
|
origin = void 0;
|
|
1329
1329
|
parentPath = [];
|
|
@@ -1388,7 +1388,7 @@ class Gt {
|
|
|
1388
1388
|
A && (this.origin = A.origin), this.title = this.origin.fTitle, this.setOriginToParent(t - 1), this.isOnSet = null, this.isHistogramFilled = !0;
|
|
1389
1389
|
}
|
|
1390
1390
|
}
|
|
1391
|
-
class
|
|
1391
|
+
class Re {
|
|
1392
1392
|
wireframe = void 0;
|
|
1393
1393
|
instGeom = void 0;
|
|
1394
1394
|
material = void 0;
|
|
@@ -1406,87 +1406,87 @@ class qe {
|
|
|
1406
1406
|
id = void 0;
|
|
1407
1407
|
constructor(t, e, A, s) {
|
|
1408
1408
|
this.config = A, this.maxInstancesPerLayer = t, this.id = s;
|
|
1409
|
-
const
|
|
1409
|
+
const i = new $(1, 1, 1), r = new It(i);
|
|
1410
1410
|
this.instGeom = new _(), this.instGeom.instanceCount = 0, this.instGeom.frustumCulled = !1, this.instGeom.index = r.index;
|
|
1411
1411
|
for (const u in r.attributes)
|
|
1412
1412
|
this.instGeom.setAttribute(u, r.attributes[u]);
|
|
1413
1413
|
this.material = this.createMaterial(), this.colorArray = new Float32Array(96), this.fillColorArray(), this.instancePositions = new Float32Array(3), this.instanceScales = new Float32Array(3), this.instanceColors = new Float32Array(1), this.instGeom.setAttribute(
|
|
1414
1414
|
"instancePosition",
|
|
1415
|
-
new
|
|
1415
|
+
new S(this.instancePositions, 3)
|
|
1416
1416
|
), this.instGeom.setAttribute(
|
|
1417
1417
|
"instanceScale",
|
|
1418
|
-
new
|
|
1418
|
+
new S(this.instanceScales, 3)
|
|
1419
1419
|
), this.instGeom.setAttribute(
|
|
1420
1420
|
"instanceColorIndex",
|
|
1421
|
-
new
|
|
1422
|
-
), this.wireframe = new
|
|
1421
|
+
new S(this.instanceColors, 1)
|
|
1422
|
+
), this.wireframe = new vt(this.instGeom, this.material), this.wireframe.frustumCulled = !1, this.stateSub = H(this.id).getObservable().subscribe((u) => {
|
|
1423
1423
|
this.numOfavailableSets = u.sets.length;
|
|
1424
1424
|
});
|
|
1425
1425
|
}
|
|
1426
1426
|
pushVisibleInstances(t, e, A) {
|
|
1427
1427
|
let s = this.wireframe.parent;
|
|
1428
1428
|
s && (s.remove(this.wireframe), this.instGeom.dispose());
|
|
1429
|
-
const
|
|
1430
|
-
let
|
|
1429
|
+
const i = this.config.display.start ?? 0, r = this.config.display.end ?? t.length - 1, u = [];
|
|
1430
|
+
let n = t.length - 1;
|
|
1431
1431
|
{
|
|
1432
|
-
const x = (Array.isArray(t[
|
|
1433
|
-
for (let
|
|
1434
|
-
u[
|
|
1432
|
+
const x = (Array.isArray(t[n]) ? t[n][A] : t[n]).rendered, M = new Uint8Array(x.length);
|
|
1433
|
+
for (let b = 0; b < x.length; b++) M[b] = x[b] !== -1 ? 1 : 0;
|
|
1434
|
+
u[n] = M;
|
|
1435
1435
|
}
|
|
1436
|
-
for (let
|
|
1437
|
-
const M = (Array.isArray(t[
|
|
1436
|
+
for (let C = n - 1; C >= 0; C--) {
|
|
1437
|
+
const M = (Array.isArray(t[C]) ? t[C][A] : t[C]).rendered, b = u[C + 1], w = e[C + 1] || 0, I = new Uint8Array(M.length);
|
|
1438
1438
|
for (let E = 0; E < M.length; E++) {
|
|
1439
1439
|
if (M[E] !== -1) {
|
|
1440
1440
|
I[E] = 1;
|
|
1441
1441
|
continue;
|
|
1442
1442
|
}
|
|
1443
|
-
const D = E *
|
|
1443
|
+
const D = E * w, G = D + w;
|
|
1444
1444
|
for (let Q = D; Q < G; Q++)
|
|
1445
|
-
if (
|
|
1445
|
+
if (b[Q]) {
|
|
1446
1446
|
I[E] = 1;
|
|
1447
1447
|
break;
|
|
1448
1448
|
}
|
|
1449
1449
|
}
|
|
1450
|
-
u[
|
|
1450
|
+
u[C] = I;
|
|
1451
1451
|
}
|
|
1452
|
-
const
|
|
1453
|
-
let M = 0,
|
|
1454
|
-
for (;
|
|
1455
|
-
|
|
1456
|
-
const I = t[
|
|
1457
|
-
for (let D =
|
|
1452
|
+
const o = (C, x) => C < i || C > r ? !1 : u[C][x] === 1, c = (C, x) => {
|
|
1453
|
+
let M = 0, b = C, w = x;
|
|
1454
|
+
for (; b + 1 < t.length; ) {
|
|
1455
|
+
b++, w *= e[b];
|
|
1456
|
+
const I = t[b], E = Array.isArray(I) ? I[A === -1 ? 0 : A] : I;
|
|
1457
|
+
for (let D = w; D < w + e[b]; D++)
|
|
1458
1458
|
if (E.rendered[D] !== -1) {
|
|
1459
|
-
M =
|
|
1459
|
+
M = b - C;
|
|
1460
1460
|
break;
|
|
1461
1461
|
}
|
|
1462
1462
|
}
|
|
1463
1463
|
return M;
|
|
1464
1464
|
};
|
|
1465
|
-
let
|
|
1466
|
-
for (let
|
|
1467
|
-
const x = t[
|
|
1465
|
+
let l = 0;
|
|
1466
|
+
for (let C = 0; C < t.length; C++) {
|
|
1467
|
+
const x = t[C];
|
|
1468
1468
|
if (!Array.isArray(x))
|
|
1469
1469
|
for (let M = 0; M < x.rendered.length; M++)
|
|
1470
|
-
|
|
1470
|
+
o(C, M) && l++;
|
|
1471
1471
|
}
|
|
1472
|
-
const h = new Float32Array(
|
|
1473
|
-
let
|
|
1474
|
-
for (let
|
|
1475
|
-
const x = t[
|
|
1472
|
+
const h = new Float32Array(l * 3), f = new Float32Array(l * 3), B = new Float32Array(l);
|
|
1473
|
+
let d = 0;
|
|
1474
|
+
for (let C = 0; C < t.length; C++) {
|
|
1475
|
+
const x = t[C], M = this.getColorIndex(C, A);
|
|
1476
1476
|
if (!Array.isArray(x)) {
|
|
1477
|
-
for (let
|
|
1478
|
-
if (
|
|
1479
|
-
const
|
|
1480
|
-
h[
|
|
1477
|
+
for (let b = 0; b < x.rendered.length; b++)
|
|
1478
|
+
if (o(C, b)) {
|
|
1479
|
+
const w = c(C, b) * 0.05;
|
|
1480
|
+
h[d * 3] = x.pos[b * 3], h[d * 3 + 1] = x.pos[b * 3 + 1], h[d * 3 + 2] = x.pos[b * 3 + 2], f[d * 3] = x.scale[b * 3] + w, f[d * 3 + 1] = x.scale[b * 3 + 1] + w, f[d * 3 + 2] = x.scale[b * 3 + 2] + w, B[d++] = M;
|
|
1481
1481
|
}
|
|
1482
1482
|
}
|
|
1483
1483
|
}
|
|
1484
|
-
const
|
|
1485
|
-
this.instGeom = new _(), this.instGeom.instanceCount =
|
|
1486
|
-
const p =
|
|
1487
|
-
for (const
|
|
1488
|
-
this.instGeom.setAttribute(
|
|
1489
|
-
this.instancePositions = h, this.instanceScales = f, this.instanceColors =
|
|
1484
|
+
const m = new $(1, 1, 1), g = new It(m);
|
|
1485
|
+
this.instGeom = new _(), this.instGeom.instanceCount = l, this.instGeom.frustumCulled = !1, this.instGeom.index = g.index;
|
|
1486
|
+
const p = g.attributes;
|
|
1487
|
+
for (const C in p)
|
|
1488
|
+
this.instGeom.setAttribute(C, p[C]);
|
|
1489
|
+
this.instancePositions = h, this.instanceScales = f, this.instanceColors = B, this.instGeom.setAttribute("instancePosition", new S(h, 3)), this.instGeom.setAttribute("instanceScale", new S(f, 3)), this.instGeom.setAttribute("instanceColorIndex", new S(B, 1)), this.wireframe = new vt(this.instGeom, this.material), this.wireframe.frustumCulled = !1, s && s.add(this.wireframe);
|
|
1490
1490
|
}
|
|
1491
1491
|
//TODO cool
|
|
1492
1492
|
toggleVisibility(t, e, A) {
|
|
@@ -1502,19 +1502,19 @@ class qe {
|
|
|
1502
1502
|
}
|
|
1503
1503
|
//TODO cool
|
|
1504
1504
|
fillColorArray() {
|
|
1505
|
-
new
|
|
1505
|
+
new j(this.config.color.default).toArray(this.colorArray, 0);
|
|
1506
1506
|
let t = 1;
|
|
1507
|
-
this.config.color.layer.map((e) => new
|
|
1507
|
+
this.config.color.layer.map((e) => new j(e)).forEach((e) => {
|
|
1508
1508
|
const A = t * 3;
|
|
1509
1509
|
e.toArray(this.colorArray, A), t++;
|
|
1510
|
-
}), this.config.color.set.map((e) => new
|
|
1510
|
+
}), this.config.color.set.map((e) => new j(e)).forEach((e) => {
|
|
1511
1511
|
const A = t * 3;
|
|
1512
1512
|
e.toArray(this.colorArray, A), t++;
|
|
1513
1513
|
}), this.material.uniforms.colorArray = { value: this.colorArray }, this.material.uniformsNeedUpdate = !0;
|
|
1514
1514
|
}
|
|
1515
1515
|
//TODO cool
|
|
1516
1516
|
createMaterial() {
|
|
1517
|
-
return new
|
|
1517
|
+
return new Pt({
|
|
1518
1518
|
vertexShader: `
|
|
1519
1519
|
attribute vec3 instancePosition;
|
|
1520
1520
|
attribute vec3 instanceScale;
|
|
@@ -1550,7 +1550,7 @@ class qe {
|
|
|
1550
1550
|
return this.config.color.set[e] ? this.config.color.set[e] : this.config.color.layer[t] ? this.config.color.layer[t] : this.config.color.default;
|
|
1551
1551
|
}
|
|
1552
1552
|
}
|
|
1553
|
-
class
|
|
1553
|
+
class Ke {
|
|
1554
1554
|
id = void 0;
|
|
1555
1555
|
functionSub = void 0;
|
|
1556
1556
|
// stateSub = undefined;
|
|
@@ -1570,16 +1570,16 @@ class Re {
|
|
|
1570
1570
|
opts = void 0;
|
|
1571
1571
|
//
|
|
1572
1572
|
constructor(t, e, A) {
|
|
1573
|
-
this.rootObj = t.obj, this.id = e, this.opts = A, this.config = V().mergeHistogramConfig(this?.opts?.config), this.functionSub =
|
|
1574
|
-
|
|
1573
|
+
this.rootObj = t.obj, this.id = e, this.opts = A, this.config = V().mergeHistogramConfig(this?.opts?.config), this.functionSub = Wt().getObservable().pipe(
|
|
1574
|
+
X(
|
|
1575
1575
|
(s) => s.target.entity === "nested-histogram" && (s.target.id.includes("*") || s.target.id.includes(this.id))
|
|
1576
1576
|
)
|
|
1577
1577
|
).subscribe((s) => this.functionSubjectHandler(s)), this.configSub = V().getObservable().pipe(
|
|
1578
|
-
|
|
1578
|
+
X(
|
|
1579
1579
|
(s) => s.target.id.includes("*") || s.target.id.includes(this.id)
|
|
1580
1580
|
)
|
|
1581
|
-
).subscribe((s) => this.configSubjectHandler(s)), this.dispatchSub =
|
|
1582
|
-
|
|
1581
|
+
).subscribe((s) => this.configSubjectHandler(s)), this.dispatchSub = he().getObservable().pipe(
|
|
1582
|
+
X((s) => s.target.id === "*" || s.target.id === this.id)
|
|
1583
1583
|
).subscribe((s) => this.dispatchSubjectHandler(s)), this.initDefaultFunctions();
|
|
1584
1584
|
}
|
|
1585
1585
|
remove() {
|
|
@@ -1674,7 +1674,7 @@ class Re {
|
|
|
1674
1674
|
console.log("dispatch: ", t);
|
|
1675
1675
|
}
|
|
1676
1676
|
}
|
|
1677
|
-
class
|
|
1677
|
+
class fA extends Ke {
|
|
1678
1678
|
stateSub = void 0;
|
|
1679
1679
|
pointer = void 0;
|
|
1680
1680
|
wireframe = void 0;
|
|
@@ -1684,7 +1684,7 @@ class uA extends Re {
|
|
|
1684
1684
|
maxContentPerLayer = void 0;
|
|
1685
1685
|
maxErrorPerLayer = void 0;
|
|
1686
1686
|
totalInstances = void 0;
|
|
1687
|
-
color = new
|
|
1687
|
+
color = new j();
|
|
1688
1688
|
matrixCache = void 0;
|
|
1689
1689
|
selectedSet = [];
|
|
1690
1690
|
selectedArray = "content";
|
|
@@ -1698,21 +1698,27 @@ class uA extends Re {
|
|
|
1698
1698
|
instanceColors = void 0;
|
|
1699
1699
|
colorArray = void 0;
|
|
1700
1700
|
constructor(t, e, A) {
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1701
|
+
if (!t || !t.obj)
|
|
1702
|
+
throw console.error("THnPainter constructor: histo or histo.obj is undefined", t), new Error("THnPainter: histo or histo.obj is undefined");
|
|
1703
|
+
super(t, e, A), console.log("THnPainter constructor start: "), this.pointer = new Tt(this.rootObj), this.handleStateChange = this.handleStateChange.bind(this), this.stateSub = H(this.id).getObservable().subscribe(this.handleStateChange), this.init(!0), console.log("THnPainter constructor end, mesh: ", this.mesh, "meshParent: ", this?.mesh?.parent ?? "undefined");
|
|
1704
|
+
}
|
|
1705
|
+
async updateHistogram(t) {
|
|
1706
|
+
if (!t || !t.obj)
|
|
1707
|
+
throw console.error("THnPainter constructor: histo or histo.obj is undefined", t), new Error("THnPainter: histo or histo.obj is undefined");
|
|
1708
|
+
console.log("THnPainter updateHistogram start => histo: ", t, ", mesh: ", this.mesh, "uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined");
|
|
1704
1709
|
let e;
|
|
1705
1710
|
const A = this.mesh.parent;
|
|
1706
|
-
console.log("
|
|
1707
|
-
}, this.wireframe.dispose(), this.instGeom.dispose()), this.matrixCache = [], this.BVHTree = [], this.availableSets = [], this.selectedSet = [], this.minMaxValue = [],
|
|
1711
|
+
if (console.log("THnPainter updateHistogram parent is defined, removing mesh: ", this.mesh, "uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined"), this.pointer.isHistogramFilled && (e = this.mesh.raycast, this.mesh.raycast = () => {
|
|
1712
|
+
}, this.wireframe.dispose(), this.instGeom.dispose()), this.matrixCache = [], this.BVHTree = [], this.availableSets = [], this.selectedSet = [], this.minMaxValue = [], H(this.id).next({
|
|
1708
1713
|
sets: [],
|
|
1709
1714
|
selectedSet: [],
|
|
1710
1715
|
arrays: ["content"],
|
|
1711
1716
|
selectedArray: "content",
|
|
1712
1717
|
minMaxValue: []
|
|
1713
|
-
}), this.rootObj = t.obj, this.pointer = new
|
|
1714
|
-
A.add(this.mesh), this.mesh.
|
|
1715
|
-
|
|
1718
|
+
}), A && (console.log("THnPainter updateHistogram parent is undefined", this.mesh, "uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined"), A.remove(this.mesh)), console.log("THnPainter re-init in update: ", t, "mesh.uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined"), this.rootObj = t.obj, this.pointer = new Tt(this.rootObj), this.init(!0), await this.renderHistogram(0, this.totalInstances, 0), this.mesh.raycast = e, console.log("THnPainter re-init in update SUCCESSFULL, now adding mesh to parent: ", t, "mesh.uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined"), A)
|
|
1719
|
+
A.add(this.mesh), A.add(this.wireframe.wireframe), console.log("THnPainter mesh successfully added to parent: ", this.mesh, "uuid: ", this.mesh.uuid, "mesh.parent: ", this?.mesh?.parent ?? "undefined");
|
|
1720
|
+
else
|
|
1721
|
+
throw new ReferenceError("THnPainter: parent is undefined");
|
|
1716
1722
|
}
|
|
1717
1723
|
remove() {
|
|
1718
1724
|
super.remove(), this.matrixCache = [], this.instGeom.dispose(), this.mesh.parent && (this.mesh.parent.remove(this.mesh), this.wireframe.dispose()), this.stateSub.unsubscribe();
|
|
@@ -1722,7 +1728,7 @@ class uA extends Re {
|
|
|
1722
1728
|
* */
|
|
1723
1729
|
init(t = !1) {
|
|
1724
1730
|
if (this.maxInstancesPerLayer = Ve(this.pointer.origin), t) {
|
|
1725
|
-
this.maxContentPerLayer =
|
|
1731
|
+
this.maxContentPerLayer = We(this.pointer.origin), this.minContentPerLayer = Le(this.pointer.origin), this.maxErrorPerLayer = Xe(this.pointer.origin, this.maxContentPerLayer), this.minErrorPerLayer = Je(this.pointer.origin, this.minContentPerLayer), this.setAvailableSets(this.pointer.origin), this.setAvailableArrays(this.pointer.origin);
|
|
1726
1732
|
const e = new Array(this.maxContentPerLayer.length);
|
|
1727
1733
|
for (let A = 0; A < this.maxContentPerLayer.length; A++)
|
|
1728
1734
|
e[A] = {}, Object.keys(this.maxContentPerLayer[A]).forEach((s) => {
|
|
@@ -1731,11 +1737,11 @@ class uA extends Re {
|
|
|
1731
1737
|
error: { min: this.minErrorPerLayer[A][s], max: this.maxErrorPerLayer[A][s] }
|
|
1732
1738
|
};
|
|
1733
1739
|
});
|
|
1734
|
-
console.log("minMaxValues: ", e),
|
|
1735
|
-
{ ...
|
|
1740
|
+
console.log("minMaxValues: ", e), H(this.id).next(
|
|
1741
|
+
{ ...H(this.id).getValue(), minMaxValue: e }
|
|
1736
1742
|
);
|
|
1737
1743
|
}
|
|
1738
|
-
this.totalInstances = this.maxInstancesPerLayer.reduce((e, A) => e * A, 1), this.setupInsBufGeom(), this.wireframe = new
|
|
1744
|
+
this.totalInstances = this.maxInstancesPerLayer.reduce((e, A) => e * A, 1), this.setupInsBufGeom(), this.wireframe = new Re(
|
|
1739
1745
|
this.maxInstancesPerLayer,
|
|
1740
1746
|
this.matrixCache,
|
|
1741
1747
|
this.config.wireframe,
|
|
@@ -1766,61 +1772,61 @@ class uA extends Re {
|
|
|
1766
1772
|
this.setupMatrixCache();
|
|
1767
1773
|
let t = this.maxInstancesPerLayer.reduce((A, s) => A * s, 1);
|
|
1768
1774
|
this.selectedSet.length > 1 && (t *= this.selectedSet.length);
|
|
1769
|
-
const e = new
|
|
1775
|
+
const e = new $(1, 1, 1);
|
|
1770
1776
|
this.instGeom = new _(), this.instGeom.instanceCount = 0, this.instGeom.frustumCulled = !1, this.instGeom.index = e.index;
|
|
1771
1777
|
for (const A in e.attributes)
|
|
1772
1778
|
this.instGeom.setAttribute(A, e.attributes[A]);
|
|
1773
|
-
this.material = this.createMaterial(), this.colorArray = new Float32Array(192), this.material.uniforms.colorArray = { value: this.colorArray },
|
|
1779
|
+
this.material = this.createMaterial(), this.colorArray = new Float32Array(192), this.material.uniforms.colorArray = { value: this.colorArray }, ke(this.config, this.material, this.colorArray), this.instancePositions = new Float32Array(3), this.instanceScales = new Float32Array(3), this.instanceColors = new Float32Array(1), this.instGeom.setAttribute(
|
|
1774
1780
|
"instancePosition",
|
|
1775
|
-
new
|
|
1781
|
+
new S(this.instancePositions, 3)
|
|
1776
1782
|
), this.instGeom.setAttribute(
|
|
1777
1783
|
"instanceScale",
|
|
1778
|
-
new
|
|
1784
|
+
new S(this.instanceScales, 3)
|
|
1779
1785
|
), this.instGeom.setAttribute(
|
|
1780
1786
|
"instanceColorIndex",
|
|
1781
|
-
new
|
|
1782
|
-
), this.mesh = new
|
|
1787
|
+
new S(this.instanceColors, 1)
|
|
1788
|
+
), this.mesh = new tt(this.instGeom, this.material), this.mesh.raycast = this.raycastHandler, this.mesh.frustumCulled = !1, this.material.uniforms.colorArray = { value: this.colorArray }, this.mesh.material.uniformsNeedUpdate = !0;
|
|
1783
1789
|
}
|
|
1784
1790
|
pushVisibleInstances() {
|
|
1785
1791
|
let t = this.mesh.parent;
|
|
1786
1792
|
t && (t.remove(this.mesh), this.instGeom.dispose());
|
|
1787
1793
|
let e = 0;
|
|
1788
|
-
for (let
|
|
1789
|
-
const
|
|
1790
|
-
if (Array.isArray(
|
|
1791
|
-
for (let
|
|
1792
|
-
const h = l
|
|
1794
|
+
for (let o = 0; o < this.matrixCache.length; o++) {
|
|
1795
|
+
const c = this.matrixCache[o];
|
|
1796
|
+
if (Array.isArray(c))
|
|
1797
|
+
for (let l = 0; l < c.length; l++) {
|
|
1798
|
+
const h = c[l];
|
|
1793
1799
|
for (let f = 0; f < h.rendered.length; f++)
|
|
1794
1800
|
h.rendered[f] !== -1 && e++;
|
|
1795
1801
|
}
|
|
1796
1802
|
else
|
|
1797
|
-
for (let
|
|
1798
|
-
|
|
1803
|
+
for (let l = 0; l < c.rendered.length; l++)
|
|
1804
|
+
c.rendered[l] !== -1 && e++;
|
|
1799
1805
|
}
|
|
1800
|
-
const A = new Float32Array(e * 3), s = new Float32Array(e * 3),
|
|
1806
|
+
const A = new Float32Array(e * 3), s = new Float32Array(e * 3), i = new Float32Array(e);
|
|
1801
1807
|
let r = 0;
|
|
1802
|
-
for (let
|
|
1803
|
-
const
|
|
1804
|
-
if (Array.isArray(
|
|
1805
|
-
for (let
|
|
1806
|
-
const h = l
|
|
1808
|
+
for (let o = 0; o < this.matrixCache.length; o++) {
|
|
1809
|
+
const c = this.matrixCache[o];
|
|
1810
|
+
if (Array.isArray(c))
|
|
1811
|
+
for (let l = 0; l < c.length; l++) {
|
|
1812
|
+
const h = c[l];
|
|
1807
1813
|
for (let f = 0; f < h.rendered.length; f++)
|
|
1808
|
-
h.rendered[f] !== -1 && (A[r * 3] = h.pos[f * 3], A[r * 3 + 1] = h.pos[f * 3 + 1], A[r * 3 + 2] = h.pos[f * 3 + 2], s[r * 3] = h.scale[f * 3], s[r * 3 + 1] = h.scale[f * 3 + 1], s[r * 3 + 2] = h.scale[f * 3 + 2],
|
|
1814
|
+
h.rendered[f] !== -1 && (A[r * 3] = h.pos[f * 3], A[r * 3 + 1] = h.pos[f * 3 + 1], A[r * 3 + 2] = h.pos[f * 3 + 2], s[r * 3] = h.scale[f * 3], s[r * 3 + 1] = h.scale[f * 3 + 1], s[r * 3 + 2] = h.scale[f * 3 + 2], i[r++] = h.rendered[f]);
|
|
1809
1815
|
}
|
|
1810
1816
|
else
|
|
1811
|
-
for (let
|
|
1812
|
-
|
|
1817
|
+
for (let l = 0; l < c.rendered.length; l++)
|
|
1818
|
+
c.rendered[l] !== -1 && (A[r * 3] = c.pos[l * 3], A[r * 3 + 1] = c.pos[l * 3 + 1], A[r * 3 + 2] = c.pos[l * 3 + 2], s[r * 3] = c.scale[l * 3], s[r * 3 + 1] = c.scale[l * 3 + 1], s[r * 3 + 2] = c.scale[l * 3 + 2], i[r++] = c.rendered[l]);
|
|
1813
1819
|
}
|
|
1814
|
-
const u = new
|
|
1820
|
+
const u = new $(1, 1, 1);
|
|
1815
1821
|
this.instGeom = new _(), this.instGeom.instanceCount = e, this.instGeom.frustumCulled = !1, this.instGeom.index = u.index;
|
|
1816
|
-
const
|
|
1817
|
-
for (const
|
|
1818
|
-
this.instGeom.setAttribute(
|
|
1819
|
-
this.instancePositions = A, this.instanceScales = s, this.instanceColors =
|
|
1822
|
+
const n = u.attributes;
|
|
1823
|
+
for (const o in n)
|
|
1824
|
+
this.instGeom.setAttribute(o, n[o]);
|
|
1825
|
+
this.instancePositions = A, this.instanceScales = s, this.instanceColors = i, this.instGeom.setAttribute("instancePosition", new S(A, 3)), this.instGeom.setAttribute("instanceScale", new S(s, 3)), this.instGeom.setAttribute("instanceColorIndex", new S(i, 1)), this.mesh = new tt(this.instGeom, this.material), this.mesh.raycast = this.raycastHandler, this.mesh.frustumCulled = !1, t && t.add(this.mesh);
|
|
1820
1826
|
}
|
|
1821
|
-
setMatrixCacheAt(t, e, A, s,
|
|
1827
|
+
setMatrixCacheAt(t, e, A, s, i) {
|
|
1822
1828
|
const r = e !== null ? this.matrixCache[t][e] : this.matrixCache[t];
|
|
1823
|
-
r.pos[A * 3] = s.x.pos, r.pos[A * 3 + 1] = s.y.pos, r.pos[A * 3 + 2] = s.z.pos, r.scale[A * 3] = s.x.size, r.scale[A * 3 + 1] = s.y.size, r.scale[A * 3 + 2] = s.z.size, r.rendered[A] =
|
|
1829
|
+
r.pos[A * 3] = s.x.pos, r.pos[A * 3 + 1] = s.y.pos, r.pos[A * 3 + 2] = s.z.pos, r.scale[A * 3] = s.x.size, r.scale[A * 3 + 1] = s.y.size, r.scale[A * 3 + 2] = s.z.size, r.rendered[A] = i;
|
|
1824
1830
|
}
|
|
1825
1831
|
/**
|
|
1826
1832
|
* @desc Render whole or part of histogram.
|
|
@@ -1831,7 +1837,7 @@ class uA extends Re {
|
|
|
1831
1837
|
* Bins of the deepest layer are offset by 1.
|
|
1832
1838
|
* Bins from each upward layer are offset by maximum number of layer beneath.
|
|
1833
1839
|
* */
|
|
1834
|
-
renderHistogram(t, e, A) {
|
|
1840
|
+
async renderHistogram(t, e, A) {
|
|
1835
1841
|
if (!this.pointer || A >= this.maxInstancesPerLayer.length - 1) return;
|
|
1836
1842
|
this.logRender({
|
|
1837
1843
|
procedure: "render",
|
|
@@ -1845,180 +1851,180 @@ class uA extends Re {
|
|
|
1845
1851
|
x: { size: 0, pos: 0 },
|
|
1846
1852
|
y: { size: 0, pos: 0 },
|
|
1847
1853
|
z: { size: 0, pos: 0 }
|
|
1848
|
-
},
|
|
1849
|
-
if (
|
|
1850
|
-
const
|
|
1851
|
-
[
|
|
1854
|
+
}, i = async (u, n, o, c, l, h) => {
|
|
1855
|
+
if (o > A || !c) return;
|
|
1856
|
+
const f = new Lt(
|
|
1857
|
+
[c.fXaxis.fNbins, c.fYaxis.fNbins, c.fZaxis.fNbins]
|
|
1852
1858
|
);
|
|
1853
|
-
let
|
|
1854
|
-
const
|
|
1855
|
-
if (
|
|
1859
|
+
let B, d, m, g, p, C;
|
|
1860
|
+
const x = c.fArrays?.[this.selectedArray]?.outside ?? !1, M = this.selectedSet.indexOf(h), b = this.availableSets.indexOf(h), w = this.config.scale.scaleBy === "value";
|
|
1861
|
+
if (h)
|
|
1856
1862
|
if (this.config.scale.sets === "fixed")
|
|
1857
|
-
({ min:
|
|
1863
|
+
({ min: B, max: d } = this.minMaxValue[o + this.pointer.parentPath.length][h].value), { min: g, max: m } = this.minMaxValue[o + this.pointer.parentPath.length][h].error;
|
|
1858
1864
|
else if (this.config.scale.sets === "relative") {
|
|
1859
|
-
const
|
|
1860
|
-
|
|
1865
|
+
const z = c.fSumw2.filter((y) => y !== 0), v = w ? c.fArray.filter((y) => y !== 0) : z;
|
|
1866
|
+
B = Math.min(...v), d = Math.max(...v), m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][h], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][h];
|
|
1861
1867
|
} else
|
|
1862
|
-
|
|
1863
|
-
else if (this.selectedArray !== "content" &&
|
|
1868
|
+
B = w ? this.minContentPerLayer[o + this.pointer.parentPath.length][h] : -0.1, d = w ? this.maxContentPerLayer[o + this.pointer.parentPath.length][h] : this.maxErrorPerLayer[o + this.pointer.parentPath.length][h], m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][h], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][h];
|
|
1869
|
+
else if (this.selectedArray !== "content" && c.fArrays)
|
|
1864
1870
|
if (this.config.scale.parameter === "fixed")
|
|
1865
|
-
({ min:
|
|
1871
|
+
({ min: B, max: d } = this.minMaxValue[o + this.pointer.parentPath.length][this.selectedArray].value), { min: g, max: m } = this.minMaxValue[o + this.pointer.parentPath.length][this.selectedArray].error;
|
|
1866
1872
|
else if (this.config.scale.parameter === "relative") {
|
|
1867
|
-
const
|
|
1868
|
-
|
|
1873
|
+
const z = c.fArrays[this.selectedArray].errors.filter((y) => y !== 0), v = w ? c.fArrays[this.selectedArray].values.filter((y) => y !== 0) : z;
|
|
1874
|
+
B = Math.min(...v), d = Math.max(...v), m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][this.selectedArray], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][this.selectedArray];
|
|
1869
1875
|
} else
|
|
1870
|
-
|
|
1876
|
+
B = w ? this.minContentPerLayer[o + this.pointer.parentPath.length][this.selectedArray] : -0.1, d = w ? this.maxContentPerLayer[o + this.pointer.parentPath.length][this.selectedArray] : this.maxErrorPerLayer[o + this.pointer.parentPath.length][this.selectedArray], m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][this.selectedArray], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][this.selectedArray];
|
|
1871
1877
|
else {
|
|
1872
|
-
const
|
|
1878
|
+
const z = this.pointer.isOnSet ?? "content";
|
|
1873
1879
|
if (this.config.scale.content === "fixed")
|
|
1874
|
-
({ min:
|
|
1880
|
+
({ min: B, max: d } = this.minMaxValue[o + this.pointer.parentPath.length][z].value), { min: g, max: m } = this.minMaxValue[o + this.pointer.parentPath.length][z].error;
|
|
1875
1881
|
else if (this.config.scale.content === "relative") {
|
|
1876
|
-
const
|
|
1877
|
-
|
|
1882
|
+
const v = c.fSumw2.filter((F) => F !== 0), y = w ? c.fArray.filter((F) => F !== 0) : v;
|
|
1883
|
+
B = Math.min(...y), d = Math.max(...y), m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][z], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][z];
|
|
1878
1884
|
} else
|
|
1879
|
-
|
|
1885
|
+
B = w ? this.minContentPerLayer[o + this.pointer.parentPath.length][z] : -0.1, d = w ? this.maxContentPerLayer[o + this.pointer.parentPath.length][z] : this.maxErrorPerLayer[o + this.pointer.parentPath.length][z], m = this.maxErrorPerLayer[o + this.pointer.parentPath.length][z], g = this.minErrorPerLayer[o + this.pointer.parentPath.length][z];
|
|
1880
1886
|
}
|
|
1881
|
-
|
|
1882
|
-
const
|
|
1883
|
-
|
|
1884
|
-
const
|
|
1885
|
-
let
|
|
1886
|
-
|
|
1887
|
-
const { min:
|
|
1888
|
-
for (let
|
|
1889
|
-
const
|
|
1890
|
-
x:
|
|
1891
|
-
y:
|
|
1892
|
-
z:
|
|
1893
|
-
},
|
|
1887
|
+
B === d && (B = d - 0.2);
|
|
1888
|
+
const I = c._typename.substring(0, 3) === "TH3", E = c._typename.substring(0, 3) === "TH2", D = c._typename.substring(0, 3) === "TH1", G = this.maxInstancesPerLayer.slice(o + 1).reduce((z, v) => z * v, 1);
|
|
1889
|
+
f.setFromNumber(u / G);
|
|
1890
|
+
const Q = this.config.padding.layer[o] ?? this.config.padding.default;
|
|
1891
|
+
let U = !this.config.padding.layer[o] && D ? { x: Q.x, y: Q.y, z: Q.z } : { ...Q };
|
|
1892
|
+
h && this.config.padding.sets && D && (U = { x: this.config.padding.sets.x, y: 0, z: 0 }), this.pointer.isOnSet && (U = { x: 0, y: 0, z: 0 });
|
|
1893
|
+
const { min: N, max: O } = this.config.scale?.layer?.[o] ? this.config.scale?.layer[o] : this.config.scale.default;
|
|
1894
|
+
for (let z = u; z < n; z += G) {
|
|
1895
|
+
const v = {
|
|
1896
|
+
x: f.getValueAt(0),
|
|
1897
|
+
y: f.getValueAt(1),
|
|
1898
|
+
z: f.getValueAt(2)
|
|
1899
|
+
}, y = Ye(
|
|
1894
1900
|
l.position.z,
|
|
1895
1901
|
l.scale.z,
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1902
|
+
Pe(Ue(
|
|
1903
|
+
c,
|
|
1904
|
+
v,
|
|
1905
|
+
U,
|
|
1900
1906
|
l?.scale,
|
|
1901
1907
|
l?.position,
|
|
1902
|
-
|
|
1908
|
+
o,
|
|
1903
1909
|
s
|
|
1904
1910
|
))
|
|
1905
|
-
),
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1911
|
+
), F = this.getBinContent(
|
|
1912
|
+
c,
|
|
1913
|
+
v.x,
|
|
1914
|
+
v.y,
|
|
1915
|
+
v.z,
|
|
1910
1916
|
this.selectedArray
|
|
1911
|
-
),
|
|
1912
|
-
let
|
|
1913
|
-
const
|
|
1914
|
-
|
|
1915
|
-
let
|
|
1916
|
-
if (
|
|
1917
|
-
const Y = (
|
|
1918
|
-
if (!
|
|
1919
|
-
|
|
1917
|
+
), bt = this.getBinError(c, v.x, v.y, v.z, this.selectedArray), k = this.config.scale.scaleBy === "value" ? F : bt;
|
|
1918
|
+
let W = this.config.scale.scaleBy === "value" ? B : g;
|
|
1919
|
+
const At = this.config.scale.scaleBy === "value" ? d : m;
|
|
1920
|
+
W === At && (W -= W * 0.1);
|
|
1921
|
+
let P = 1;
|
|
1922
|
+
if (k >= W == !x) {
|
|
1923
|
+
const Y = (k - W) / (At - W);
|
|
1924
|
+
if (!x)
|
|
1925
|
+
P = Number.isInteger(k) && k === 0 && this.config.scale.scaleBy === "value" ? P = 0 : (O - N) * Y + N, P > 1 && (P = 1);
|
|
1920
1926
|
else {
|
|
1921
|
-
const
|
|
1922
|
-
|
|
1927
|
+
const J = (F - p) / (C - p);
|
|
1928
|
+
P = Number.isInteger(F) && F === 0 ? P = 0 : (O - N) * J + N;
|
|
1923
1929
|
}
|
|
1924
1930
|
} else
|
|
1925
|
-
|
|
1926
|
-
this.config.color.scaleBy === "value" ? this.color =
|
|
1931
|
+
P = 0;
|
|
1932
|
+
this.config.color.scaleBy === "value" ? this.color = zt(
|
|
1927
1933
|
this.config.color,
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
) : this.color =
|
|
1934
|
+
k,
|
|
1935
|
+
W,
|
|
1936
|
+
At,
|
|
1937
|
+
b,
|
|
1938
|
+
o
|
|
1939
|
+
) : this.color = zt(
|
|
1934
1940
|
this.config.color,
|
|
1935
|
-
|
|
1936
|
-
d,
|
|
1941
|
+
bt,
|
|
1937
1942
|
g,
|
|
1938
|
-
|
|
1939
|
-
|
|
1943
|
+
m,
|
|
1944
|
+
b,
|
|
1945
|
+
o
|
|
1940
1946
|
);
|
|
1941
|
-
const
|
|
1942
|
-
if (
|
|
1943
|
-
|
|
1944
|
-
else if (y)
|
|
1945
|
-
b.x.size *= U, b.z.size *= U, b.y.size = k;
|
|
1947
|
+
const Z = y.y.size * P;
|
|
1948
|
+
if (P === 0)
|
|
1949
|
+
y.x.size = 0, y.z.size = 0, y.y.size = 0;
|
|
1946
1950
|
else if (I)
|
|
1947
|
-
|
|
1948
|
-
else if (
|
|
1951
|
+
y.x.size *= P, y.z.size *= P, y.y.size = Z;
|
|
1952
|
+
else if (E)
|
|
1953
|
+
y.y.pos -= (y.y.size - Z) / 2, y.y.size = Z;
|
|
1954
|
+
else if (y.y.pos -= (y.y.size - Z) / 2, y.y.size = Z, h) {
|
|
1949
1955
|
const Y = this.config.TH1ZScale.set;
|
|
1950
|
-
|
|
1956
|
+
y.z.size = Y || 0.01;
|
|
1951
1957
|
} else
|
|
1952
|
-
this.config.TH1ZScale?.layer?.[
|
|
1953
|
-
if (
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
M,
|
|
1957
|
-
v / D,
|
|
1958
|
+
this.config.TH1ZScale?.layer?.[o] ? y.z.size = l.scale.z * this.config.TH1ZScale.layer[o] : y.z.size = l.scale.z * this.config.TH1ZScale.default;
|
|
1959
|
+
if (h)
|
|
1960
|
+
y.z.size = 0.01, y.z.pos += (M - (this.selectedSet.length - 1) / 2) * 0.1, this.setMatrixCacheAt(
|
|
1961
|
+
o,
|
|
1958
1962
|
b,
|
|
1959
|
-
|
|
1963
|
+
z / G,
|
|
1964
|
+
y,
|
|
1965
|
+
o === A && P !== 0 ? this.color : -1
|
|
1960
1966
|
);
|
|
1961
1967
|
else {
|
|
1962
1968
|
let Y = null;
|
|
1963
|
-
this.pointer.isOnSet && (
|
|
1964
|
-
|
|
1969
|
+
this.pointer.isOnSet && (y.z.size = 0.01, y.z.pos += (M - (this.selectedSet.length - 1) / 2) * 0.1, Y = this.availableSets.indexOf(this.pointer.isOnSet)), this.setMatrixCacheAt(
|
|
1970
|
+
o,
|
|
1965
1971
|
Y,
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1972
|
+
z / G,
|
|
1973
|
+
y,
|
|
1974
|
+
o === A && P !== 0 ? this.color : -1
|
|
1969
1975
|
);
|
|
1970
1976
|
}
|
|
1971
|
-
if (
|
|
1972
|
-
let Y =
|
|
1973
|
-
|
|
1977
|
+
if (o === A) {
|
|
1978
|
+
let Y = z;
|
|
1979
|
+
h && (Y += this.totalInstances * M);
|
|
1974
1980
|
} else {
|
|
1975
|
-
const Y =
|
|
1976
|
-
let
|
|
1977
|
-
const
|
|
1978
|
-
position: new T(
|
|
1979
|
-
scale: new T(
|
|
1981
|
+
const Y = c.getBin(v.x + 1, v.y + 1, v.z + 1);
|
|
1982
|
+
let J;
|
|
1983
|
+
const Mt = {
|
|
1984
|
+
position: new T(y.x.pos, y.y.pos, y.z.pos),
|
|
1985
|
+
scale: new T(y.x.size, y.y.size, y.z.size)
|
|
1980
1986
|
};
|
|
1981
|
-
|
|
1982
|
-
|
|
1987
|
+
c.children.content ? (J = c.children.content[Y], i(z, n, o + 1, J, Mt)) : this.selectedSet.forEach((xt) => {
|
|
1988
|
+
J = c.children[xt][Y], i(z, n, o + 1, J, Mt, xt);
|
|
1983
1989
|
});
|
|
1984
1990
|
}
|
|
1985
|
-
if (!
|
|
1991
|
+
if (!f.increment()) break;
|
|
1986
1992
|
}
|
|
1987
1993
|
};
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
this.pointer.rootObj,
|
|
1994
|
-
this.pointer.parentPath.map((u) => u.bin[0]),
|
|
1995
|
-
r
|
|
1996
|
-
),
|
|
1997
|
-
this.limits,
|
|
1998
|
-
r
|
|
1999
|
-
))) : n(t, e, 0, this.pointer.origin, this.limits)).then(() => {
|
|
2000
|
-
setTimeout(() => {
|
|
2001
|
-
this.pointer.isOnSet || this.wireframe.pushVisibleInstances(
|
|
2002
|
-
this.matrixCache,
|
|
2003
|
-
this.maxInstancesPerLayer,
|
|
2004
|
-
this.availableSets.indexOf(this.selectedSet[0])
|
|
2005
|
-
), this.pushVisibleInstances();
|
|
2006
|
-
const r = this.availableSets.indexOf(this.pointer.isOnSet) === -1 ? null : this.availableSets.indexOf(this.pointer.isOnSet);
|
|
2007
|
-
this.BVHTree = Ze(
|
|
2008
|
-
this.matrixCache,
|
|
2009
|
-
this.pointer.origin,
|
|
1994
|
+
this.pointer.isOnSet ? await Promise.all(
|
|
1995
|
+
this.selectedSet.map(
|
|
1996
|
+
(u) => i(
|
|
1997
|
+
t,
|
|
1998
|
+
e,
|
|
2010
1999
|
0,
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2000
|
+
wt(
|
|
2001
|
+
this.pointer.rootObj,
|
|
2002
|
+
this.pointer.parentPath.map((n) => n.bin[0]),
|
|
2003
|
+
u
|
|
2004
|
+
),
|
|
2005
|
+
this.limits,
|
|
2006
|
+
u
|
|
2007
|
+
)
|
|
2008
|
+
)
|
|
2009
|
+
) : await i(t, e, 0, this.pointer.origin, this.limits), this.pointer.isOnSet || this.wireframe.pushVisibleInstances(
|
|
2010
|
+
this.matrixCache,
|
|
2011
|
+
this.maxInstancesPerLayer,
|
|
2012
|
+
this.availableSets.indexOf(this.selectedSet[0])
|
|
2013
|
+
), this.pushVisibleInstances();
|
|
2014
|
+
const r = this.availableSets.indexOf(this.pointer.isOnSet) === -1 ? null : this.availableSets.indexOf(this.pointer.isOnSet);
|
|
2015
|
+
return this.BVHTree = qe(
|
|
2016
|
+
this.matrixCache,
|
|
2017
|
+
this.pointer.origin,
|
|
2018
|
+
0,
|
|
2019
|
+
this.selectedSet,
|
|
2020
|
+
r,
|
|
2021
|
+
this.availableSets,
|
|
2022
|
+
this.mesh.matrixWorld,
|
|
2023
|
+
this.maxInstancesPerLayer
|
|
2024
|
+
), this.mesh;
|
|
2019
2025
|
}
|
|
2020
2026
|
createMaterial() {
|
|
2021
|
-
return new
|
|
2027
|
+
return new Pt({
|
|
2022
2028
|
vertexShader: `
|
|
2023
2029
|
attribute vec3 instancePosition;
|
|
2024
2030
|
attribute vec3 instanceScale;
|
|
@@ -2053,18 +2059,18 @@ class uA extends Re {
|
|
|
2053
2059
|
});
|
|
2054
2060
|
}
|
|
2055
2061
|
mouseClickDefault(t) {
|
|
2056
|
-
this.showChildHistogram(t.index), t.selectedArray !== "content" && (t.jsrootObj.fArray = t.jsrootObj.fArrays[t.selectedArray]?.values, t.jsrootObj.fSumw2 = t.jsrootObj.fArrays[t.selectedArray]?.errors, t.jsrootObj.fMinimum = t.jsrootObj.fArrays[t.selectedArray]?.min, t.jsrootObj.fMaximum = t.jsrootObj.fArrays[t.selectedArray]?.max),
|
|
2062
|
+
this.showChildHistogram(t.index), t.selectedArray !== "content" && (t.jsrootObj.fArray = t.jsrootObj.fArrays[t.selectedArray]?.values, t.jsrootObj.fSumw2 = t.jsrootObj.fArrays[t.selectedArray]?.errors, t.jsrootObj.fMinimum = t.jsrootObj.fArrays[t.selectedArray]?.min, t.jsrootObj.fMaximum = t.jsrootObj.fArrays[t.selectedArray]?.max), Xt().next({
|
|
2057
2063
|
id: this.id + "-cinema",
|
|
2058
2064
|
// id: "*",
|
|
2059
2065
|
obj: t.jsrootObj
|
|
2060
2066
|
});
|
|
2061
2067
|
}
|
|
2062
2068
|
mousemoveDefault(t) {
|
|
2063
|
-
if (((f,
|
|
2064
|
-
if (f.length !==
|
|
2065
|
-
for (let
|
|
2066
|
-
const
|
|
2067
|
-
if (
|
|
2069
|
+
if (((f, B) => {
|
|
2070
|
+
if (f.length !== B.length) return !1;
|
|
2071
|
+
for (let d = 0; d < f.length; d++) {
|
|
2072
|
+
const m = f[d], g = B[d];
|
|
2073
|
+
if (m.x !== g.x || m.y !== g.y || m.z !== g.z) return !1;
|
|
2068
2074
|
}
|
|
2069
2075
|
return !0;
|
|
2070
2076
|
})(t.index, this.dirtyInstance)) {
|
|
@@ -2072,22 +2078,22 @@ class uA extends Re {
|
|
|
2072
2078
|
return;
|
|
2073
2079
|
}
|
|
2074
2080
|
const A = this.pointer.parentPath.map((f) => {
|
|
2075
|
-
const
|
|
2081
|
+
const B = f.range[0];
|
|
2076
2082
|
return {
|
|
2077
2083
|
bin: f.bin[0],
|
|
2078
|
-
...
|
|
2084
|
+
...B
|
|
2079
2085
|
};
|
|
2080
2086
|
});
|
|
2081
|
-
t.range = t.range.map((f,
|
|
2082
|
-
const
|
|
2083
|
-
return { ...f, bin:
|
|
2087
|
+
t.range = t.range.map((f, B) => {
|
|
2088
|
+
const d = t.jsrootInstance[B];
|
|
2089
|
+
return { ...f, bin: d };
|
|
2084
2090
|
});
|
|
2085
2091
|
const s = {
|
|
2086
2092
|
...t,
|
|
2087
2093
|
level: A.length,
|
|
2088
2094
|
range: A.concat(t.range)
|
|
2089
|
-
}, { range:
|
|
2090
|
-
|
|
2095
|
+
}, { range: i, level: r, content: u, error: n, set: o, triggerSource: c, instanceId: l } = s, h = { coords: i, level: r, content: u, error: n, set: o, triggerSource: c, instanceId: l };
|
|
2096
|
+
Jt().next(h);
|
|
2091
2097
|
}
|
|
2092
2098
|
shiftMouseClickDefault(t) {
|
|
2093
2099
|
this.hideChildHistogram(t.index);
|
|
@@ -2105,29 +2111,29 @@ class uA extends Re {
|
|
|
2105
2111
|
try {
|
|
2106
2112
|
const s = this.checkIntersectionBVH(t.ray)[0];
|
|
2107
2113
|
if (s) {
|
|
2108
|
-
const
|
|
2109
|
-
this.intersectionHandler(s,
|
|
2114
|
+
const i = t._triggerSource;
|
|
2115
|
+
this.intersectionHandler(s, i), e.push(s);
|
|
2110
2116
|
}
|
|
2111
2117
|
} catch (A) {
|
|
2112
2118
|
console.log(A);
|
|
2113
2119
|
}
|
|
2114
2120
|
}
|
|
2115
2121
|
handleStateChange(t) {
|
|
2116
|
-
if (
|
|
2122
|
+
if (Qt(t.sets, this.availableSets) && (!Qt(t.selectedSet, this.selectedSet) || this.selectedArray !== t.selectedArray)) {
|
|
2117
2123
|
this.selectedArray = t.selectedArray, this.selectedSet = t.selectedSet;
|
|
2118
2124
|
const e = this.mesh.parent;
|
|
2119
2125
|
this.instGeom.dispose(), e.remove(this.mesh), this.setupInsBufGeom(), e.add(this.mesh), this.renderHistogramHistory();
|
|
2120
|
-
} else this.minMaxValue.length !== 0 &&
|
|
2126
|
+
} else this.minMaxValue.length !== 0 && Se(t.minMaxValue, this.minMaxValue) ? this.renderHistogramHistory() : (this.availableSets = t.sets, this.selectedSet = t.selectedSet, this.minMaxValue = t.minMaxValue);
|
|
2121
2127
|
}
|
|
2122
|
-
renderHistogramHistory() {
|
|
2128
|
+
async renderHistogramHistory() {
|
|
2123
2129
|
const t = this.renderHistory;
|
|
2124
|
-
this.renderHistory = []
|
|
2125
|
-
|
|
2130
|
+
this.renderHistory = [];
|
|
2131
|
+
for (const e of t)
|
|
2132
|
+
e.procedure === "render" ? await this.renderHistogram(
|
|
2126
2133
|
e.value.startIndex,
|
|
2127
2134
|
e.value.endIndex,
|
|
2128
2135
|
e.value.layer
|
|
2129
2136
|
) : e.procedure === "hide" && this.hideChildHistogram(e.value);
|
|
2130
|
-
});
|
|
2131
2137
|
}
|
|
2132
2138
|
/**
|
|
2133
2139
|
* @desc Method to set pointers origin to one of origins child.
|
|
@@ -2137,10 +2143,10 @@ class uA extends Re {
|
|
|
2137
2143
|
* @param set Specifies from which set should child be chosen.
|
|
2138
2144
|
* If children contains sets, parameter need to be specified.
|
|
2139
2145
|
* */
|
|
2140
|
-
setPointerToChild(t, e) {
|
|
2146
|
+
async setPointerToChild(t, e) {
|
|
2141
2147
|
const A = this.mesh.parent;
|
|
2142
2148
|
this.matrixCache = [], this.instGeom.dispose(), this.wireframe.dispose(), A.remove(this.mesh);
|
|
2143
|
-
const s =
|
|
2149
|
+
const s = R(
|
|
2144
2150
|
t,
|
|
2145
2151
|
e,
|
|
2146
2152
|
this.pointer.origin,
|
|
@@ -2148,23 +2154,25 @@ class uA extends Re {
|
|
|
2148
2154
|
this.selectedSet
|
|
2149
2155
|
);
|
|
2150
2156
|
if (this.pointer.setOriginToChild(
|
|
2151
|
-
|
|
2157
|
+
q(t, this.pointer.origin, this.selectedSet),
|
|
2152
2158
|
e,
|
|
2153
2159
|
s
|
|
2154
2160
|
), !this.pointer.isHistogramFilled) {
|
|
2155
|
-
this.mesh =
|
|
2161
|
+
this.mesh = be(this.limits, this.setPointerToParent.bind(this)), A.add(this.mesh);
|
|
2156
2162
|
return;
|
|
2157
2163
|
}
|
|
2158
|
-
this.init(!1), console.log("path: ", this.pointer.path), console.log("title: ", this.pointer.title),
|
|
2159
|
-
this.
|
|
2160
|
-
|
|
2164
|
+
this.init(!1), console.log("path: ", this.pointer.path), console.log("title: ", this.pointer.title), await this.renderHistogram(0, this.totalInstances, 0), A.add(this.mesh), A.add(this.wireframe.wireframe), this.pointer.isOnSet && this.wireframe.toggleVisibility(
|
|
2165
|
+
this.matrixCache,
|
|
2166
|
+
this.maxInstancesPerLayer,
|
|
2167
|
+
this.availableSets.indexOf(e)
|
|
2168
|
+
);
|
|
2161
2169
|
}
|
|
2162
2170
|
/**
|
|
2163
2171
|
* @desc Method to set pointers origin to its parent.
|
|
2164
2172
|
* * */
|
|
2165
|
-
setPointerToParent() {
|
|
2173
|
+
async setPointerToParent() {
|
|
2166
2174
|
const t = this.mesh.parent;
|
|
2167
|
-
t.remove(this.mesh), this.pointer.isHistogramFilled && (this.matrixCache = [], this.instGeom.dispose(), this.wireframe.dispose()), this.pointer.setOriginToParent(1), console.log("path: ", this.pointer.path), console.log("title: ", this.pointer.title), this.init(!1), this.renderHistogram(0, this.totalInstances, 0), t.add(this.mesh), t.add(this.wireframe.wireframe);
|
|
2175
|
+
t.remove(this.mesh), this.pointer.isHistogramFilled && (this.matrixCache = [], this.instGeom.dispose(), this.wireframe.dispose()), this.pointer.setOriginToParent(1), console.log("path: ", this.pointer.path), console.log("title: ", this.pointer.title), this.init(!1), await this.renderHistogram(0, this.totalInstances, 0), t.add(this.mesh), t.add(this.wireframe.wireframe);
|
|
2168
2176
|
}
|
|
2169
2177
|
/**
|
|
2170
2178
|
* @desc Method to show (render) histogram that is currently represented by bin.
|
|
@@ -2172,14 +2180,14 @@ class uA extends Re {
|
|
|
2172
2180
|
* e.g. ([{x: 1, y: 3, z: 2}, {x: 89, 0, 0}])
|
|
2173
2181
|
* */
|
|
2174
2182
|
showChildHistogram(t) {
|
|
2175
|
-
const e =
|
|
2183
|
+
const e = mt(
|
|
2176
2184
|
t,
|
|
2177
2185
|
this.pointer.origin,
|
|
2178
2186
|
this.maxInstancesPerLayer,
|
|
2179
2187
|
this.selectedSet
|
|
2180
2188
|
), s = this.maxInstancesPerLayer.slice(
|
|
2181
2189
|
-this.maxInstancesPerLayer.length + t.length
|
|
2182
|
-
).reduce((
|
|
2190
|
+
).reduce((i, r) => i * r, 1);
|
|
2183
2191
|
this.renderHistogram(
|
|
2184
2192
|
e.slice(-1)[0],
|
|
2185
2193
|
e.slice(-1)[0] + s,
|
|
@@ -2199,14 +2207,14 @@ class uA extends Re {
|
|
|
2199
2207
|
t.length - 1,
|
|
2200
2208
|
this.maxInstancesPerLayer.length - 1
|
|
2201
2209
|
), s = e.reduce(
|
|
2202
|
-
(u,
|
|
2210
|
+
(u, n) => u * n,
|
|
2203
2211
|
1
|
|
2204
|
-
),
|
|
2212
|
+
), i = He(
|
|
2205
2213
|
t,
|
|
2206
2214
|
this.pointer.origin,
|
|
2207
2215
|
this.maxInstancesPerLayer,
|
|
2208
2216
|
this.selectedSet
|
|
2209
|
-
), r = Math.floor(
|
|
2217
|
+
), r = Math.floor(i / s) * s;
|
|
2210
2218
|
this.clearMatrixCacheRange(
|
|
2211
2219
|
r,
|
|
2212
2220
|
s,
|
|
@@ -2231,21 +2239,21 @@ class uA extends Re {
|
|
|
2231
2239
|
* @param baseLayerIndex start index of layer from which cache is cleared.
|
|
2232
2240
|
* */
|
|
2233
2241
|
clearMatrixCacheRange(t, e, A, s) {
|
|
2234
|
-
let
|
|
2242
|
+
let i = t, r = e;
|
|
2235
2243
|
const u = {
|
|
2236
2244
|
x: { pos: 0, size: 0 },
|
|
2237
2245
|
y: { pos: 0, size: 0 },
|
|
2238
2246
|
z: { pos: 0, size: 0 }
|
|
2239
2247
|
};
|
|
2240
|
-
for (let
|
|
2241
|
-
if (Array.isArray(this.matrixCache[
|
|
2242
|
-
for (let
|
|
2243
|
-
for (let
|
|
2244
|
-
this.setMatrixCacheAt(
|
|
2248
|
+
for (let n = s + A.length - 1; n >= s; n--) {
|
|
2249
|
+
if (Array.isArray(this.matrixCache[n]))
|
|
2250
|
+
for (let o = 0; o < this.matrixCache[n].length; o++)
|
|
2251
|
+
for (let c = i; c < i + r; c++)
|
|
2252
|
+
this.setMatrixCacheAt(n, o, c, u, -1);
|
|
2245
2253
|
else
|
|
2246
|
-
for (let
|
|
2247
|
-
this.setMatrixCacheAt(
|
|
2248
|
-
|
|
2254
|
+
for (let o = i; o < i + r; o++)
|
|
2255
|
+
this.setMatrixCacheAt(n, null, o, u, -1);
|
|
2256
|
+
n > s && (i /= A[n - s], r /= A[n - s]);
|
|
2249
2257
|
}
|
|
2250
2258
|
}
|
|
2251
2259
|
/**
|
|
@@ -2258,28 +2266,28 @@ class uA extends Re {
|
|
|
2258
2266
|
const e = t.children.content.find((A) => A);
|
|
2259
2267
|
this.setAvailableSets(e);
|
|
2260
2268
|
} else if (t?.children) {
|
|
2261
|
-
const e =
|
|
2262
|
-
e.sets = Object.keys(t.children), e.selectedSet.length === 0 ? (this.selectedSet.push(e.sets[0]), e.selectedSet.push(e.sets[0])) : this.selectedSet.every((A) => e.sets.find((s) => s === A)) || (e.selectedSet = [e.sets[0]]),
|
|
2269
|
+
const e = H(this.id).getValue();
|
|
2270
|
+
e.sets = Object.keys(t.children), e.selectedSet.length === 0 ? (this.selectedSet.push(e.sets[0]), e.selectedSet.push(e.sets[0])) : this.selectedSet.every((A) => e.sets.find((s) => s === A)) || (e.selectedSet = [e.sets[0]]), H(this.id).next(e);
|
|
2263
2271
|
} else {
|
|
2264
|
-
const e =
|
|
2272
|
+
const e = H(this.id).getValue();
|
|
2265
2273
|
e.sets = [], e.selectedSet = [];
|
|
2266
2274
|
}
|
|
2267
2275
|
}
|
|
2268
2276
|
setAvailableArrays(t) {
|
|
2269
|
-
const e =
|
|
2277
|
+
const e = H(this.id).getValue();
|
|
2270
2278
|
e.arrays = [], t.fArrays && (e.arrays = Object.keys(t.fArrays)), e.arrays.unshift("content");
|
|
2271
2279
|
const A = (s) => {
|
|
2272
|
-
const
|
|
2273
|
-
|
|
2280
|
+
const i = s.find((r) => r);
|
|
2281
|
+
i.fArrays && (e.arrays = e.arrays.concat(Object.keys(i.fArrays))), i.children?.content && A(i.children.content);
|
|
2274
2282
|
};
|
|
2275
|
-
t.children?.content && A(t.children.content),
|
|
2283
|
+
t.children?.content && A(t.children.content), H(this.id).next(e);
|
|
2276
2284
|
}
|
|
2277
2285
|
configSubjectHandler(t) {
|
|
2278
|
-
this.config = V().mergeHistogramConfig(this?.opts?.config), this.keyBindings =
|
|
2286
|
+
this.config = V().mergeHistogramConfig(this?.opts?.config), this.keyBindings = Be(t.config.bindings);
|
|
2279
2287
|
const e = t.config.environment.histogramPads.find(
|
|
2280
2288
|
(A) => A.id === this.id
|
|
2281
2289
|
);
|
|
2282
|
-
e && !
|
|
2290
|
+
e && !pe(this.limits, e) && this.renderHistory.length > 0 && (this.limits = { ...e }, this.renderHistogramHistory()), this.limits = { ...e };
|
|
2283
2291
|
}
|
|
2284
2292
|
/**
|
|
2285
2293
|
* @desc Key down handler for nested histogram.
|
|
@@ -2290,10 +2298,10 @@ class uA extends Re {
|
|
|
2290
2298
|
const e = /^(?:Digit|Numpad)(\d+)$/, A = t.code.match(e);
|
|
2291
2299
|
if (A) {
|
|
2292
2300
|
if (parseInt(A[1]) > this.matrixCache.length) return;
|
|
2293
|
-
const s = new
|
|
2301
|
+
const s = new se();
|
|
2294
2302
|
s.scale.set(0, 0, 0), s.updateMatrix();
|
|
2295
|
-
let
|
|
2296
|
-
this.selectedSet.length > 1 && (
|
|
2303
|
+
let i = this.maxInstancesPerLayer.reduce((r, u) => r * u, 1);
|
|
2304
|
+
this.selectedSet.length > 1 && (i *= this.selectedSet.length), this.setupMatrixCache(), this.wireframe.clearWireframe(), this.renderHistogram(
|
|
2297
2305
|
0,
|
|
2298
2306
|
this.totalInstances,
|
|
2299
2307
|
parseInt(A[1]) - 1
|
|
@@ -2327,133 +2335,133 @@ class uA extends Re {
|
|
|
2327
2335
|
logRender(t) {
|
|
2328
2336
|
t.procedure === "render" && t.value.startIndex === 0 && t.value.endIndex === this.totalInstances && (this.renderHistory = []), this.renderHistory.push(t);
|
|
2329
2337
|
}
|
|
2330
|
-
getBinContent(t, e, A, s,
|
|
2331
|
-
if (
|
|
2338
|
+
getBinContent(t, e, A, s, i) {
|
|
2339
|
+
if (i === "content" || !t.fArrays)
|
|
2332
2340
|
return t.getBinContent(e + 1, A + 1, s + 1);
|
|
2333
2341
|
{
|
|
2334
2342
|
const r = t.getBin(e + 1, A + 1, s + 1);
|
|
2335
|
-
return t.fArrays?.[
|
|
2343
|
+
return t.fArrays?.[i].values[r];
|
|
2336
2344
|
}
|
|
2337
2345
|
}
|
|
2338
|
-
getBinError(t, e, A, s,
|
|
2346
|
+
getBinError(t, e, A, s, i) {
|
|
2339
2347
|
const r = t.getBin(e + 1, A + 1, s + 1);
|
|
2340
|
-
return
|
|
2348
|
+
return i === "content" || !t.fArrays ? t.fSumw2.length !== 0 ? t.fSumw2[r] : t.getBinError(r) : t.fArrays?.[i].errors[r];
|
|
2341
2349
|
}
|
|
2342
2350
|
checkIntersectionBVH(t) {
|
|
2343
|
-
const e = new T(), A = (
|
|
2344
|
-
if (
|
|
2345
|
-
const h =
|
|
2346
|
-
return f ? new
|
|
2351
|
+
const e = new T(), A = (n, o, c, l) => {
|
|
2352
|
+
if (o < 0 || 1 / o === -1 / 0) {
|
|
2353
|
+
const h = o * -1, f = l && l !== "content" ? this.matrixCache[n]?.[this.availableSets.indexOf(l)] : this.matrixCache[n];
|
|
2354
|
+
return f ? new et().setFromCenterAndSize(
|
|
2347
2355
|
new T(f.pos[h * 3], f.pos[h * 3 + 1], f.pos[h * 3 + 2]),
|
|
2348
2356
|
new T(f.scale[h * 3], f.scale[h * 3 + 1], f.scale[h * 3 + 2])
|
|
2349
2357
|
) : void 0;
|
|
2350
2358
|
} else {
|
|
2351
|
-
const h =
|
|
2352
|
-
return h ? new
|
|
2353
|
-
new T(h.pos[
|
|
2354
|
-
new T(h.scale[
|
|
2359
|
+
const h = l && l !== "content" ? Array.isArray(this.BVHTree[n][this.availableSets.indexOf(l)]) ? this.BVHTree[n][this.availableSets.indexOf(l)][c] : this.BVHTree[n][this.availableSets.indexOf(l)] : this.BVHTree[n][c];
|
|
2360
|
+
return h ? new et().setFromCenterAndSize(
|
|
2361
|
+
new T(h.pos[o * 3], h.pos[o * 3 + 1], h.pos[o * 3 + 2]),
|
|
2362
|
+
new T(h.scale[o * 3], h.scale[o * 3 + 1], h.scale[o * 3 + 2])
|
|
2355
2363
|
) : void 0;
|
|
2356
2364
|
}
|
|
2357
|
-
}, s = (
|
|
2358
|
-
let
|
|
2359
|
-
for (;
|
|
2360
|
-
|
|
2361
|
-
const f = this.matrixCache[
|
|
2365
|
+
}, s = (n, o) => {
|
|
2366
|
+
let c = 0, l = n, h = o;
|
|
2367
|
+
for (; l + 1 < this.matrixCache.length; ) {
|
|
2368
|
+
l++;
|
|
2369
|
+
const f = this.matrixCache[l];
|
|
2362
2370
|
if (Array.isArray(f))
|
|
2363
|
-
this.selectedSet.forEach((
|
|
2364
|
-
const
|
|
2365
|
-
for (let
|
|
2366
|
-
if (f[
|
|
2367
|
-
|
|
2371
|
+
this.selectedSet.forEach((B) => {
|
|
2372
|
+
const d = this.availableSets.indexOf(B);
|
|
2373
|
+
for (let m = h; m < h + this.maxInstancesPerLayer[l]; m++)
|
|
2374
|
+
if (f[d].rendered[m] !== -1) {
|
|
2375
|
+
c = l - n;
|
|
2368
2376
|
break;
|
|
2369
2377
|
}
|
|
2370
2378
|
});
|
|
2371
2379
|
else {
|
|
2372
|
-
if (!f) return
|
|
2373
|
-
for (let
|
|
2374
|
-
if (f.rendered[
|
|
2375
|
-
|
|
2380
|
+
if (!f) return c;
|
|
2381
|
+
for (let B = h; B < h + this.maxInstancesPerLayer[l]; B++)
|
|
2382
|
+
if (f.rendered[B] !== -1) {
|
|
2383
|
+
c = l - n;
|
|
2376
2384
|
break;
|
|
2377
2385
|
}
|
|
2378
2386
|
}
|
|
2379
|
-
h *= this.maxInstancesPerLayer[
|
|
2387
|
+
h *= this.maxInstancesPerLayer[l + 1];
|
|
2380
2388
|
}
|
|
2381
|
-
return
|
|
2382
|
-
},
|
|
2383
|
-
const h =
|
|
2384
|
-
return t.intersectBox(f, e) ?
|
|
2385
|
-
index: h.left[
|
|
2389
|
+
return c;
|
|
2390
|
+
}, i = (n, o, c, l) => {
|
|
2391
|
+
const h = l && l !== "content" ? Array.isArray(this.BVHTree[c][this.availableSets.indexOf(l)]) ? this.BVHTree[c][this.availableSets.indexOf(l)][o] : this.BVHTree[c][this.availableSets.indexOf(l)] : this.BVHTree[c][o], f = A(c, h.left[n], o, l), B = A(c, h.right[n], o, l), d = [];
|
|
2392
|
+
return t.intersectBox(f, e) ? d.push({
|
|
2393
|
+
index: h.left[n],
|
|
2386
2394
|
target: e.clone(),
|
|
2387
2395
|
distance: t.origin.distanceTo(e)
|
|
2388
|
-
}) :
|
|
2389
|
-
index: h.right[
|
|
2396
|
+
}) : d.push(null), t.intersectBox(B, e) ? d.push({
|
|
2397
|
+
index: h.right[n],
|
|
2390
2398
|
target: e.clone(),
|
|
2391
2399
|
distance: t.origin.distanceTo(e)
|
|
2392
|
-
}) :
|
|
2393
|
-
}, r = (
|
|
2394
|
-
const
|
|
2395
|
-
if (
|
|
2396
|
-
|
|
2400
|
+
}) : d.push(null), d;
|
|
2401
|
+
}, r = (n, o, c) => {
|
|
2402
|
+
const l = [], h = (B) => {
|
|
2403
|
+
if (B.index < 0 || 1 / B.index === -1 / 0) {
|
|
2404
|
+
l.push(B);
|
|
2397
2405
|
return;
|
|
2398
2406
|
}
|
|
2399
|
-
const [
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2407
|
+
const [d, m] = i(
|
|
2408
|
+
B.index,
|
|
2409
|
+
o,
|
|
2410
|
+
n,
|
|
2411
|
+
c
|
|
2404
2412
|
);
|
|
2405
|
-
|
|
2406
|
-
}, f =
|
|
2413
|
+
d && h(d), m && h(m);
|
|
2414
|
+
}, f = c && c !== "content" ? Array.isArray(this.BVHTree[n][this.availableSets.indexOf(c)]) ? this.BVHTree[n][this.availableSets.indexOf(c)][o] : this.BVHTree[n][this.availableSets.indexOf(c)] : this.BVHTree[n][o];
|
|
2407
2415
|
return !f || f.length === 0 || h({
|
|
2408
2416
|
index: f.left.length - 1,
|
|
2409
2417
|
target: null,
|
|
2410
2418
|
distance: null
|
|
2411
|
-
}),
|
|
2412
|
-
}, u = (
|
|
2413
|
-
const f = [],
|
|
2414
|
-
return r(
|
|
2415
|
-
const
|
|
2416
|
-
|
|
2419
|
+
}), l;
|
|
2420
|
+
}, u = (n, o, c = 0, l = [], h = null) => {
|
|
2421
|
+
const f = [], B = this.maxInstancesPerLayer[o + 1], d = this.maxInstancesPerLayer[o] * this.maxInstancesPerLayer[o + 1];
|
|
2422
|
+
return r(o, c, h).forEach((m) => {
|
|
2423
|
+
const g = Math.abs(m.index) - c * this.maxInstancesPerLayer[o], p = g % n.fXaxis.fNbins, C = Math.floor(
|
|
2424
|
+
g % (n.fXaxis.fNbins * n.fYaxis.fNbins) / n.fXaxis.fNbins
|
|
2417
2425
|
), x = Math.floor(
|
|
2418
|
-
|
|
2419
|
-
), M = [...
|
|
2420
|
-
if (
|
|
2421
|
-
const
|
|
2422
|
-
const D =
|
|
2426
|
+
g / (n.fXaxis.fNbins * n.fYaxis.fNbins)
|
|
2427
|
+
), M = [...l, { x: p, y: C, z: x }];
|
|
2428
|
+
if (n.children) {
|
|
2429
|
+
const w = Object.entries(n.children).flatMap(([I, E]) => {
|
|
2430
|
+
const D = n.getBin(p + 1, C + 1, x + 1), G = E?.[D];
|
|
2423
2431
|
if (!G) return [];
|
|
2424
|
-
const Q =
|
|
2425
|
-
if (!(s(
|
|
2426
|
-
let
|
|
2432
|
+
const Q = c * d + (p + C * n.fXaxis.fNbins + x * (n.fXaxis.fNbins * n.fYaxis.fNbins)) * B;
|
|
2433
|
+
if (!(s(o, Q) > 0)) return [];
|
|
2434
|
+
let N = u(
|
|
2427
2435
|
G,
|
|
2428
|
-
|
|
2429
|
-
Math.abs(
|
|
2436
|
+
o + 1,
|
|
2437
|
+
Math.abs(m.index),
|
|
2430
2438
|
M,
|
|
2431
2439
|
I
|
|
2432
2440
|
);
|
|
2433
|
-
return I !== "content" && (
|
|
2441
|
+
return I !== "content" && (N = N.map((O) => ({ ...O, set: I }))), N;
|
|
2434
2442
|
});
|
|
2435
|
-
if (
|
|
2436
|
-
f.push(...
|
|
2443
|
+
if (w.length > 0)
|
|
2444
|
+
f.push(...w);
|
|
2437
2445
|
else {
|
|
2438
|
-
const I =
|
|
2439
|
-
(h && h !== "content" ? this.matrixCache[
|
|
2446
|
+
const I = c * this.maxInstancesPerLayer[o] + (p + C * n.fXaxis.fNbins + x * (n.fXaxis.fNbins * n.fYaxis.fNbins));
|
|
2447
|
+
(h && h !== "content" ? this.matrixCache[o]?.[this.availableSets.indexOf(h)] : this.matrixCache[o]).rendered[I] !== -1 && f.push({
|
|
2440
2448
|
index: M,
|
|
2441
|
-
target:
|
|
2442
|
-
distance:
|
|
2449
|
+
target: m.target,
|
|
2450
|
+
distance: m.distance,
|
|
2443
2451
|
set: h,
|
|
2444
2452
|
selectedArray: this.selectedArray,
|
|
2445
|
-
instanceId:
|
|
2453
|
+
instanceId: mt(
|
|
2446
2454
|
M,
|
|
2447
2455
|
this.pointer.origin,
|
|
2448
2456
|
this.maxInstancesPerLayer,
|
|
2449
2457
|
this.selectedSet
|
|
2450
2458
|
),
|
|
2451
|
-
jsrootInstance:
|
|
2459
|
+
jsrootInstance: q(
|
|
2452
2460
|
M,
|
|
2453
2461
|
this.pointer.origin,
|
|
2454
2462
|
this.selectedSet
|
|
2455
2463
|
),
|
|
2456
|
-
range:
|
|
2464
|
+
range: R(
|
|
2457
2465
|
M,
|
|
2458
2466
|
h,
|
|
2459
2467
|
this.pointer.origin,
|
|
@@ -2461,30 +2469,30 @@ class uA extends Re {
|
|
|
2461
2469
|
this.selectedSet
|
|
2462
2470
|
),
|
|
2463
2471
|
origin: this,
|
|
2464
|
-
jsrootObj:
|
|
2465
|
-
content: this.getBinContent(
|
|
2466
|
-
error: this.getBinError(
|
|
2472
|
+
jsrootObj: n,
|
|
2473
|
+
content: this.getBinContent(n, p, C, x, this.selectedArray),
|
|
2474
|
+
error: this.getBinError(n, p, C, x, this.selectedArray)
|
|
2467
2475
|
});
|
|
2468
2476
|
}
|
|
2469
2477
|
} else
|
|
2470
2478
|
f.push({
|
|
2471
2479
|
index: M,
|
|
2472
|
-
target:
|
|
2473
|
-
distance:
|
|
2480
|
+
target: m.target,
|
|
2481
|
+
distance: m.distance,
|
|
2474
2482
|
set: h,
|
|
2475
2483
|
selectedArray: this.selectedArray,
|
|
2476
|
-
instanceId:
|
|
2484
|
+
instanceId: mt(
|
|
2477
2485
|
M,
|
|
2478
2486
|
this.pointer.origin,
|
|
2479
2487
|
this.maxInstancesPerLayer,
|
|
2480
2488
|
this.selectedSet
|
|
2481
2489
|
),
|
|
2482
|
-
jsrootInstance:
|
|
2490
|
+
jsrootInstance: q(
|
|
2483
2491
|
M,
|
|
2484
2492
|
this.pointer.origin,
|
|
2485
2493
|
this.selectedSet
|
|
2486
2494
|
),
|
|
2487
|
-
range:
|
|
2495
|
+
range: R(
|
|
2488
2496
|
M,
|
|
2489
2497
|
h,
|
|
2490
2498
|
this.pointer.origin,
|
|
@@ -2493,45 +2501,45 @@ class uA extends Re {
|
|
|
2493
2501
|
),
|
|
2494
2502
|
origin: this,
|
|
2495
2503
|
object: this.mesh,
|
|
2496
|
-
jsrootObj:
|
|
2497
|
-
content: this.getBinContent(
|
|
2498
|
-
error: this.getBinError(
|
|
2504
|
+
jsrootObj: n,
|
|
2505
|
+
content: this.getBinContent(n, p, C, x, this.selectedArray),
|
|
2506
|
+
error: this.getBinError(n, p, C, x, this.selectedArray)
|
|
2499
2507
|
});
|
|
2500
|
-
}), f.sort((
|
|
2508
|
+
}), f.sort((m, g) => m.distance - g.distance);
|
|
2501
2509
|
};
|
|
2502
2510
|
if (this.pointer.isOnSet === null)
|
|
2503
2511
|
return u(this.pointer.origin, 0, 0, [], this.pointer.isOnSet);
|
|
2504
2512
|
{
|
|
2505
|
-
const
|
|
2506
|
-
|
|
2513
|
+
const n = this.selectedSet.map((c) => u(
|
|
2514
|
+
wt(
|
|
2507
2515
|
this.pointer.rootObj,
|
|
2508
|
-
this.pointer.parentPath.map((
|
|
2509
|
-
|
|
2516
|
+
this.pointer.parentPath.map((l) => l.bin[0]),
|
|
2517
|
+
c
|
|
2510
2518
|
),
|
|
2511
2519
|
0,
|
|
2512
2520
|
0,
|
|
2513
2521
|
[],
|
|
2514
|
-
|
|
2515
|
-
)).filter((
|
|
2516
|
-
return
|
|
2522
|
+
c
|
|
2523
|
+
)).filter((c) => c.length !== 0), o = Math.min(...n.map((c) => c[0].distance));
|
|
2524
|
+
return n.find((c) => c[0].distance === o) ?? [];
|
|
2517
2525
|
}
|
|
2518
2526
|
}
|
|
2519
2527
|
dispatchSubjectHandler(t) {
|
|
2520
2528
|
if (!t.event.jsrootInstance) {
|
|
2521
2529
|
const e = t.event.index.map((s) => ({ x: s.x - 1, y: s.y - 1, z: s.z - 1 })), A = this.pointer.getChildByPosition(
|
|
2522
|
-
|
|
2530
|
+
q([...e]).slice(0, -1),
|
|
2523
2531
|
t.event.set,
|
|
2524
2532
|
this.selectedSet
|
|
2525
2533
|
);
|
|
2526
2534
|
t.event = {
|
|
2527
2535
|
index: e,
|
|
2528
2536
|
set: t.event.set,
|
|
2529
|
-
jsrootInstance:
|
|
2537
|
+
jsrootInstance: q(
|
|
2530
2538
|
e,
|
|
2531
2539
|
this.pointer.origin,
|
|
2532
2540
|
this.selectedSet
|
|
2533
2541
|
),
|
|
2534
|
-
range:
|
|
2542
|
+
range: R(
|
|
2535
2543
|
e,
|
|
2536
2544
|
t.event.set,
|
|
2537
2545
|
this.pointer.origin,
|
|
@@ -2553,7 +2561,7 @@ class uA extends Re {
|
|
|
2553
2561
|
this.intersectionHandler(t.event, t.event.source);
|
|
2554
2562
|
}
|
|
2555
2563
|
}
|
|
2556
|
-
class
|
|
2564
|
+
class dA {
|
|
2557
2565
|
plane = void 0;
|
|
2558
2566
|
cinemaSub = void 0;
|
|
2559
2567
|
position;
|
|
@@ -2561,25 +2569,26 @@ class fA {
|
|
|
2561
2569
|
scale;
|
|
2562
2570
|
id;
|
|
2563
2571
|
configSub = void 0;
|
|
2564
|
-
constructor(t, e, A, s,
|
|
2572
|
+
constructor(t, e, A, s, i) {
|
|
2565
2573
|
const r = new Ut(s.x, s.y), u = new Yt({
|
|
2566
|
-
color: new
|
|
2567
|
-
side:
|
|
2574
|
+
color: new j().setHex(16777215),
|
|
2575
|
+
side: St
|
|
2568
2576
|
});
|
|
2569
|
-
this.plane || (this.plane = new
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2577
|
+
this.plane || (this.plane = new tt(r, u), this.plane.position.set(e.x, e.y, e.z)), t && this.updateTexture(t), this.id = i, this.position = e, this.rotation = A, this.scale = s, this.cinemaSub = Xt().getObservable().pipe(X((n) => n.id === this.id || n.id === "*")).subscribe((n) => {
|
|
2578
|
+
console.log("Caught at: ", this.id);
|
|
2579
|
+
const o = n.obj;
|
|
2580
|
+
Kt({ format: "png", option: "pE", object: o, width: 1200, height: 600 }).then(
|
|
2581
|
+
(c) => {
|
|
2582
|
+
this.updateTexture(c);
|
|
2574
2583
|
}
|
|
2575
2584
|
);
|
|
2576
2585
|
}), this.configSub = V().getObservable().pipe(
|
|
2577
|
-
|
|
2578
|
-
(
|
|
2586
|
+
X(
|
|
2587
|
+
(n) => n.target.id.includes("*") || n.target.id.includes(this.id)
|
|
2579
2588
|
)
|
|
2580
|
-
).subscribe((
|
|
2581
|
-
const
|
|
2582
|
-
|
|
2589
|
+
).subscribe((n) => {
|
|
2590
|
+
const o = n.config.environment.canvasPads.filter((c) => c.id === this.id || c.id === "*");
|
|
2591
|
+
o.length !== 0 && (this.position = o[0].limits.position, this.rotation = o[0].limits.rotation, this.scale = o[0].limits.scale, this.updateMesh());
|
|
2583
2592
|
});
|
|
2584
2593
|
}
|
|
2585
2594
|
updateMesh() {
|
|
@@ -2596,7 +2605,7 @@ class fA {
|
|
|
2596
2605
|
console.warn("updateTexture called with null/undefined");
|
|
2597
2606
|
return;
|
|
2598
2607
|
}
|
|
2599
|
-
const e = new
|
|
2608
|
+
const e = new jt();
|
|
2600
2609
|
if (typeof t == "string" && (t.startsWith("data:") || t.startsWith("http")))
|
|
2601
2610
|
e.load(
|
|
2602
2611
|
t,
|
|
@@ -2607,7 +2616,7 @@ class fA {
|
|
|
2607
2616
|
(A) => console.error("Texture load failed", A)
|
|
2608
2617
|
);
|
|
2609
2618
|
else if (t instanceof HTMLImageElement) {
|
|
2610
|
-
const A = new
|
|
2619
|
+
const A = new ie(t);
|
|
2611
2620
|
A.needsUpdate = !0, this.plane.material.map = A, this.plane.material.needsUpdate = !0;
|
|
2612
2621
|
} else
|
|
2613
2622
|
console.error("Unsupported image type passed to updateTexture:", t);
|
|
@@ -2619,7 +2628,7 @@ class fA {
|
|
|
2619
2628
|
return this.plane;
|
|
2620
2629
|
}
|
|
2621
2630
|
}
|
|
2622
|
-
class
|
|
2631
|
+
class $e extends ne {
|
|
2623
2632
|
/**
|
|
2624
2633
|
* Constructs a new font loader.
|
|
2625
2634
|
*
|
|
@@ -2638,10 +2647,10 @@ class Ke extends ie {
|
|
|
2638
2647
|
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
2639
2648
|
*/
|
|
2640
2649
|
load(t, e, A, s) {
|
|
2641
|
-
const
|
|
2650
|
+
const i = this, r = new re(this.manager);
|
|
2642
2651
|
r.setPath(this.path), r.setRequestHeader(this.requestHeader), r.setWithCredentials(this.withCredentials), r.load(t, function(u) {
|
|
2643
|
-
const
|
|
2644
|
-
e && e(
|
|
2652
|
+
const n = i.parse(JSON.parse(u));
|
|
2653
|
+
e && e(n);
|
|
2645
2654
|
}, A, s);
|
|
2646
2655
|
}
|
|
2647
2656
|
/**
|
|
@@ -2673,57 +2682,57 @@ class _e {
|
|
|
2673
2682
|
* @return {Array<Shape>} An array of shapes representing the text.
|
|
2674
2683
|
*/
|
|
2675
2684
|
generateShapes(t, e = 100, A = "ltr") {
|
|
2676
|
-
const s = [],
|
|
2677
|
-
for (let r = 0, u =
|
|
2678
|
-
s.push(...
|
|
2685
|
+
const s = [], i = tA(t, e, this.data, A);
|
|
2686
|
+
for (let r = 0, u = i.length; r < u; r++)
|
|
2687
|
+
s.push(...i[r].toShapes());
|
|
2679
2688
|
return s;
|
|
2680
2689
|
}
|
|
2681
2690
|
}
|
|
2682
|
-
function
|
|
2683
|
-
const s = Array.from(
|
|
2684
|
-
let
|
|
2691
|
+
function tA(a, t, e, A) {
|
|
2692
|
+
const s = Array.from(a), i = t / e.resolution, r = (e.boundingBox.yMax - e.boundingBox.yMin + e.underlineThickness) * i, u = [];
|
|
2693
|
+
let n = 0, o = 0;
|
|
2685
2694
|
(A == "rtl" || A == "tb") && s.reverse();
|
|
2686
|
-
for (let
|
|
2687
|
-
const
|
|
2688
|
-
if (
|
|
2695
|
+
for (let c = 0; c < s.length; c++) {
|
|
2696
|
+
const l = s[c];
|
|
2697
|
+
if (l === `
|
|
2689
2698
|
`)
|
|
2690
|
-
|
|
2699
|
+
n = 0, o -= r;
|
|
2691
2700
|
else {
|
|
2692
|
-
const h =
|
|
2693
|
-
A == "tb" ? (
|
|
2701
|
+
const h = eA(l, i, n, o, e);
|
|
2702
|
+
A == "tb" ? (n = 0, o += e.ascender * i) : n += h.offsetX, u.push(h.path);
|
|
2694
2703
|
}
|
|
2695
2704
|
}
|
|
2696
2705
|
return u;
|
|
2697
2706
|
}
|
|
2698
|
-
function
|
|
2699
|
-
const
|
|
2700
|
-
if (!
|
|
2701
|
-
console.error('THREE.Font: character "' +
|
|
2707
|
+
function eA(a, t, e, A, s) {
|
|
2708
|
+
const i = s.glyphs[a] || s.glyphs["?"];
|
|
2709
|
+
if (!i) {
|
|
2710
|
+
console.error('THREE.Font: character "' + a + '" does not exists in font family ' + s.familyName + ".");
|
|
2702
2711
|
return;
|
|
2703
2712
|
}
|
|
2704
|
-
const r = new
|
|
2705
|
-
let u,
|
|
2706
|
-
if (
|
|
2707
|
-
const
|
|
2708
|
-
for (let
|
|
2709
|
-
switch (
|
|
2713
|
+
const r = new oe();
|
|
2714
|
+
let u, n, o, c, l, h, f, B;
|
|
2715
|
+
if (i.o) {
|
|
2716
|
+
const d = i._cachedOutline || (i._cachedOutline = i.o.split(" "));
|
|
2717
|
+
for (let m = 0, g = d.length; m < g; )
|
|
2718
|
+
switch (d[m++]) {
|
|
2710
2719
|
case "m":
|
|
2711
|
-
u =
|
|
2720
|
+
u = d[m++] * t + e, n = d[m++] * t + A, r.moveTo(u, n);
|
|
2712
2721
|
break;
|
|
2713
2722
|
case "l":
|
|
2714
|
-
u =
|
|
2723
|
+
u = d[m++] * t + e, n = d[m++] * t + A, r.lineTo(u, n);
|
|
2715
2724
|
break;
|
|
2716
2725
|
case "q":
|
|
2717
|
-
|
|
2726
|
+
o = d[m++] * t + e, c = d[m++] * t + A, l = d[m++] * t + e, h = d[m++] * t + A, r.quadraticCurveTo(l, h, o, c);
|
|
2718
2727
|
break;
|
|
2719
2728
|
case "b":
|
|
2720
|
-
|
|
2729
|
+
o = d[m++] * t + e, c = d[m++] * t + A, l = d[m++] * t + e, h = d[m++] * t + A, f = d[m++] * t + e, B = d[m++] * t + A, r.bezierCurveTo(l, h, f, B, o, c);
|
|
2721
2730
|
break;
|
|
2722
2731
|
}
|
|
2723
2732
|
}
|
|
2724
|
-
return { offsetX:
|
|
2733
|
+
return { offsetX: i.ha * t, path: r };
|
|
2725
2734
|
}
|
|
2726
|
-
class
|
|
2735
|
+
class AA {
|
|
2727
2736
|
constructor(t, e = {}) {
|
|
2728
2737
|
this.camera = t, this.options = {
|
|
2729
2738
|
backgroundColor: 11184810,
|
|
@@ -2736,18 +2745,18 @@ class eA {
|
|
|
2736
2745
|
textSize: 10,
|
|
2737
2746
|
width: 0.031,
|
|
2738
2747
|
...e
|
|
2739
|
-
}, this.loader = new
|
|
2748
|
+
}, this.loader = new $e(), this.queue = new Dt();
|
|
2740
2749
|
let A = !1, s = null;
|
|
2741
2750
|
this.queueSub = this.queue.pipe(
|
|
2742
|
-
Vt((
|
|
2743
|
-
|
|
2751
|
+
Vt((i) => A ? (s = i, qt) : (A = !0, kt(this.updateVisualization(i)).pipe(
|
|
2752
|
+
Zt(() => {
|
|
2744
2753
|
if (A = !1, s) {
|
|
2745
2754
|
const r = s;
|
|
2746
2755
|
s = null, this.queue.next(r);
|
|
2747
2756
|
}
|
|
2748
2757
|
})
|
|
2749
2758
|
)))
|
|
2750
|
-
).subscribe(), this.group = new
|
|
2759
|
+
).subscribe(), this.group = new Ht();
|
|
2751
2760
|
}
|
|
2752
2761
|
/**
|
|
2753
2762
|
* Parse bin data and extract display information
|
|
@@ -2755,16 +2764,16 @@ class eA {
|
|
|
2755
2764
|
parseData(t) {
|
|
2756
2765
|
const e = [];
|
|
2757
2766
|
if (t.title && e.push({ text: t.title, isTitle: !0 }), t.coords && Array.isArray(t.coords) && t.coords.forEach((A) => {
|
|
2758
|
-
Object.entries(A).forEach(([s,
|
|
2759
|
-
if (
|
|
2760
|
-
const r = `${s} = [${
|
|
2767
|
+
Object.entries(A).forEach(([s, i]) => {
|
|
2768
|
+
if (i && typeof i == "object" && !("isColor" in i)) {
|
|
2769
|
+
const r = `${s} = [${i.min.toFixed(2)}, ${i.max.toFixed(2)})`;
|
|
2761
2770
|
e.push({ text: r, isTitle: !1 });
|
|
2762
2771
|
}
|
|
2763
2772
|
});
|
|
2764
2773
|
}), t.index && Array.isArray(t.index) && t.index.forEach((A) => {
|
|
2765
2774
|
let s = `bin = ${t.object.bins[t.instanceId]}`;
|
|
2766
|
-
Object.entries(A).forEach(([
|
|
2767
|
-
s += `, ${
|
|
2775
|
+
Object.entries(A).forEach(([i, r]) => {
|
|
2776
|
+
s += `, ${i}: ${r}`;
|
|
2768
2777
|
}), e.push({ text: s, isTitle: !1 });
|
|
2769
2778
|
}), t.content !== void 0) {
|
|
2770
2779
|
const A = Number.isInteger(t.content) ? `content = ${t.content}` : `content = ${t.content.toFixed(2)}`;
|
|
@@ -2780,11 +2789,11 @@ class eA {
|
|
|
2780
2789
|
* Create background panel
|
|
2781
2790
|
*/
|
|
2782
2791
|
createBackgroundPanel(t) {
|
|
2783
|
-
const { width: e, backgroundColor: A } = this.options, s = new Ut(e, t),
|
|
2792
|
+
const { width: e, backgroundColor: A } = this.options, s = new Ut(e, t), i = new Yt({
|
|
2784
2793
|
color: A,
|
|
2785
|
-
side:
|
|
2794
|
+
side: St
|
|
2786
2795
|
});
|
|
2787
|
-
return new
|
|
2796
|
+
return new tt(s, i);
|
|
2788
2797
|
}
|
|
2789
2798
|
/**
|
|
2790
2799
|
* Update the 3D visualization
|
|
@@ -2792,31 +2801,31 @@ class eA {
|
|
|
2792
2801
|
*/
|
|
2793
2802
|
async updateVisualization(t) {
|
|
2794
2803
|
for (t === null && this.clear(); this.group.children.length > 0; ) {
|
|
2795
|
-
const
|
|
2796
|
-
|
|
2804
|
+
const C = this.group.children[0];
|
|
2805
|
+
C.geometry && C.geometry.dispose(), C.material && C.material.dispose(), this.group.remove(C);
|
|
2797
2806
|
}
|
|
2798
2807
|
const e = this.parseData(t);
|
|
2799
2808
|
if (e.length === 0) return;
|
|
2800
|
-
const { padding: A, lineHeight: s, textSize:
|
|
2801
|
-
this.group.add(
|
|
2802
|
-
const
|
|
2803
|
-
for (let
|
|
2804
|
-
const x = e[
|
|
2809
|
+
const { padding: A, lineHeight: s, textSize: i, textColor: r, titleColor: u, width: n } = this.options, o = e.length * s + A * 2, c = this.createBackgroundPanel(o);
|
|
2810
|
+
this.group.add(c);
|
|
2811
|
+
const l = o / 2 - A - s / 2;
|
|
2812
|
+
for (let C = 0; C < e.length; C++) {
|
|
2813
|
+
const x = e[C], M = l - C * s;
|
|
2805
2814
|
try {
|
|
2806
|
-
const
|
|
2807
|
-
|
|
2808
|
-
const
|
|
2809
|
-
|
|
2810
|
-
} catch (
|
|
2811
|
-
console.error("Error creating text line:",
|
|
2815
|
+
const b = $t("TLatex");
|
|
2816
|
+
b.fTitle = x.text, b.fTextAlign = 12, b.fTextFont = 2, b.fTitleFont = 2, b.fLabelFont = 2, b.fTextColor = x.isTitle ? u : r, b.fTextSize = x.isTitle ? i + 2 : i;
|
|
2817
|
+
const w = await Nt(b, "p", M * 100, "", "");
|
|
2818
|
+
w.scale.set(16e-5, 16e-5, 16e-5), w.position.x = -(n / 2) + A, w.position.y = M, w.position.z = 1e-3, this.group.add(w);
|
|
2819
|
+
} catch (b) {
|
|
2820
|
+
console.error("Error creating text line:", b);
|
|
2812
2821
|
}
|
|
2813
2822
|
}
|
|
2814
2823
|
const h = new T(t.point.x, t.point.y, t.point.z);
|
|
2815
2824
|
this.camera.worldToLocal(h);
|
|
2816
|
-
const f = new T().subVectors(h, this.camera.position).normalize(),
|
|
2817
|
-
|
|
2818
|
-
const p =
|
|
2819
|
-
|
|
2825
|
+
const f = new T().subVectors(h, this.camera.position).normalize(), d = new T().copy(this.camera.position).addScaledVector(f, 0.1), m = new et().setFromObject(this.group), g = new T();
|
|
2826
|
+
m.getSize(g);
|
|
2827
|
+
const p = g.clone().multiplyScalar(0.5);
|
|
2828
|
+
d.add(new T(p.x, p.y, 0)), this.group.position.copy(d), this.camera.add(this.group);
|
|
2820
2829
|
}
|
|
2821
2830
|
/**
|
|
2822
2831
|
* Get the THREE.Group containing the visualization
|
|
@@ -2865,11 +2874,11 @@ class gA {
|
|
|
2865
2874
|
dummyEl = void 0;
|
|
2866
2875
|
defaultRaycastHandler = void 0;
|
|
2867
2876
|
mouseEvents = [];
|
|
2868
|
-
color = new
|
|
2869
|
-
colorTarget = new
|
|
2877
|
+
color = new j();
|
|
2878
|
+
colorTarget = new j(65535);
|
|
2870
2879
|
buildPromise = void 0;
|
|
2871
2880
|
constructor(t, e, A) {
|
|
2872
|
-
this.id = t, this.rootObj = e, this.camera = A, this.histogramGroup = new
|
|
2881
|
+
this.id = t, this.rootObj = e, this.camera = A, this.histogramGroup = new Ht(), this.dummyEl = document.getElementById("dummyDiv" + t), this.dummyEl && document.body.removeChild(this.dummyEl), this.binInfoComponent = new AA(
|
|
2873
2882
|
this.camera,
|
|
2874
2883
|
{
|
|
2875
2884
|
backgroundColor: 3556687,
|
|
@@ -2878,12 +2887,12 @@ class gA {
|
|
|
2878
2887
|
titleColor: 0
|
|
2879
2888
|
// ROOT color index
|
|
2880
2889
|
}
|
|
2881
|
-
), this.dummyEl = document.createElement("div"), this.dummyEl.id = "dummyDiv" + t, document.body.appendChild(this.dummyEl), this.configSub = V().getObservable().pipe(
|
|
2890
|
+
), this.dummyEl = document.createElement("div"), this.dummyEl.id = "dummyDiv" + t, document.body.appendChild(this.dummyEl), this.configSub = V().getObservable().pipe(X((s) => s.target.id.includes("*") || s.target.id.includes(this.id))).subscribe((s) => {
|
|
2882
2891
|
this.config = { ...s.config };
|
|
2883
2892
|
const r = this.config.environment.histogramPads.find((u) => u.id === this.id).position;
|
|
2884
2893
|
this.histogramGroup.position.set(r.x, r.y, r.z);
|
|
2885
|
-
}), this.sub =
|
|
2886
|
-
|
|
2894
|
+
}), this.sub = Wt().getObservable().pipe(
|
|
2895
|
+
X(
|
|
2887
2896
|
(s) => s.target.id.includes("*") || s.target.id.includes(this.id)
|
|
2888
2897
|
)
|
|
2889
2898
|
).subscribe((s) => {
|
|
@@ -2919,7 +2928,7 @@ class gA {
|
|
|
2919
2928
|
this.keyupEvents = [];
|
|
2920
2929
|
break;
|
|
2921
2930
|
default:
|
|
2922
|
-
this.mouseEvents = this.mouseEvents.filter((
|
|
2931
|
+
this.mouseEvents = this.mouseEvents.filter((i) => i.event !== s.event), this.mousemoveDefault({
|
|
2923
2932
|
object: this.getInstancedMesh(),
|
|
2924
2933
|
instanceId: null
|
|
2925
2934
|
});
|
|
@@ -2931,15 +2940,15 @@ class gA {
|
|
|
2931
2940
|
this.rootObj = t, this.histogramGroup.clear(), this.buildPromise = this.renderWithBuild3d();
|
|
2932
2941
|
}
|
|
2933
2942
|
renderWithBuild3d() {
|
|
2934
|
-
return
|
|
2935
|
-
const e = this.config.environment.histogramPads.find((r) => r.id === this.id)?.scale, A = new
|
|
2943
|
+
return Nt(this.rootObj).then((t) => {
|
|
2944
|
+
const e = this.config.environment.histogramPads.find((r) => r.id === this.id)?.scale, A = new et().setFromObject(t), s = new T();
|
|
2936
2945
|
A.getSize(s), t.scale.set(
|
|
2937
2946
|
e.x / s.x,
|
|
2938
2947
|
e.z / s.y,
|
|
2939
2948
|
e.y / s.z
|
|
2940
2949
|
), t.rotateX(-Math.PI / 2), t.translateZ(-(e.y / 2)), this.histogramGroup.add(t);
|
|
2941
|
-
const
|
|
2942
|
-
|
|
2950
|
+
const i = this.getInstancedMesh();
|
|
2951
|
+
i && (this.defaultRaycastHandler = i.raycast.bind(i), i.raycast = this.raycastHandler.bind(this));
|
|
2943
2952
|
}).catch((t) => {
|
|
2944
2953
|
const e = this.config.environment.histogramPads.find((A) => A.id === this.id);
|
|
2945
2954
|
throw console.log("JSROOT was not able to build object: ", t, e), {
|
|
@@ -2951,9 +2960,9 @@ class gA {
|
|
|
2951
2960
|
}
|
|
2952
2961
|
raycastHandler(t, e) {
|
|
2953
2962
|
this.defaultRaycastHandler(t, e), setTimeout(() => {
|
|
2954
|
-
const A = e.filter((
|
|
2963
|
+
const A = e.filter((l) => l.instanceId !== void 0).sort((l, h) => l.distance - h.distance)[0];
|
|
2955
2964
|
if (!A) {
|
|
2956
|
-
this.mouseEvents.filter((
|
|
2965
|
+
this.mouseEvents.filter((l) => l.event === "mousemove").forEach((l) => l.function(
|
|
2957
2966
|
{
|
|
2958
2967
|
instanceId: void 0,
|
|
2959
2968
|
object: this.getInstancedMesh()
|
|
@@ -2962,18 +2971,18 @@ class gA {
|
|
|
2962
2971
|
));
|
|
2963
2972
|
return;
|
|
2964
2973
|
}
|
|
2965
|
-
const s = A.object.bins[A.instanceId],
|
|
2966
|
-
x: s %
|
|
2967
|
-
y: Math.floor(s % (
|
|
2968
|
-
z: Math.floor(s / (
|
|
2969
|
-
},
|
|
2974
|
+
const s = A.object.bins[A.instanceId], i = this.rootObj.fXaxis.fNbins + 2, r = this.rootObj.fYaxis.fNbins + 2, u = {
|
|
2975
|
+
x: s % i,
|
|
2976
|
+
y: Math.floor(s % (i * r) / i),
|
|
2977
|
+
z: Math.floor(s / (i * r))
|
|
2978
|
+
}, n = this.getRangeByPosition([u]), o = this.rootObj.fName, c = {
|
|
2970
2979
|
...A,
|
|
2971
2980
|
index: [u],
|
|
2972
|
-
coords: [{ ...
|
|
2981
|
+
coords: [{ ...n, bin: s, name: o }],
|
|
2973
2982
|
content: this.rootObj.getBinContent(u.x, u.y, u.z),
|
|
2974
2983
|
error: this.rootObj.getBinError(u.x, u.y, u.z)
|
|
2975
2984
|
};
|
|
2976
|
-
this.mouseEvents.filter((
|
|
2985
|
+
this.mouseEvents.filter((l) => l.event === t._triggerSource).forEach((l) => l.function(c, this)), this.dirtyInstance = A.instanceId;
|
|
2977
2986
|
}, 0);
|
|
2978
2987
|
}
|
|
2979
2988
|
/**
|
|
@@ -3014,7 +3023,7 @@ class gA {
|
|
|
3014
3023
|
const A = 0.5;
|
|
3015
3024
|
this.color.lerp(this.colorTarget, -A / (1 - A)), e.setColorAt(this.dirtyInstance, this.color);
|
|
3016
3025
|
}
|
|
3017
|
-
this.dirtyInstance = t.instanceId, e.getColorAt(this.dirtyInstance, this.color), this.color.lerp(this.colorTarget, 0.5), e.setColorAt(this.dirtyInstance, this.color), e.instanceColor.needsUpdate = !0, this.binInfoComponent.queue.next(t),
|
|
3026
|
+
this.dirtyInstance = t.instanceId, e.getColorAt(this.dirtyInstance, this.color), this.color.lerp(this.colorTarget, 0.5), e.setColorAt(this.dirtyInstance, this.color), e.instanceColor.needsUpdate = !0, this.binInfoComponent.queue.next(t), Jt().next(t);
|
|
3018
3027
|
}
|
|
3019
3028
|
shiftMouseClickDefault(t) {
|
|
3020
3029
|
console.log("shiftMouseClickDefault");
|
|
@@ -3045,16 +3054,16 @@ class gA {
|
|
|
3045
3054
|
const e = ["x", "y", "z"], A = Number.parseInt(this.rootObj._typename.substring(2, 3), 10);
|
|
3046
3055
|
let s = {};
|
|
3047
3056
|
if (t[0]) {
|
|
3048
|
-
for (let
|
|
3049
|
-
const r = e[
|
|
3057
|
+
for (let i = 0; i < A; i++) {
|
|
3058
|
+
const r = e[i], u = this.rootObj[`f${r.toUpperCase()}axis`], n = t[0][r];
|
|
3050
3059
|
s[r] = {
|
|
3051
|
-
min: u.GetBinLowEdge(
|
|
3052
|
-
max: u.GetBinCenter(
|
|
3060
|
+
min: u.GetBinLowEdge(n),
|
|
3061
|
+
max: u.GetBinCenter(n) * 2 - u.GetBinLowEdge(n),
|
|
3053
3062
|
name: u.fName,
|
|
3054
3063
|
title: u.fTitle
|
|
3055
3064
|
};
|
|
3056
3065
|
}
|
|
3057
|
-
s = { ...s, color: new
|
|
3066
|
+
s = { ...s, color: new j(0) };
|
|
3058
3067
|
}
|
|
3059
3068
|
return s;
|
|
3060
3069
|
}
|
|
@@ -3066,23 +3075,23 @@ class gA {
|
|
|
3066
3075
|
}
|
|
3067
3076
|
}
|
|
3068
3077
|
export {
|
|
3069
|
-
|
|
3078
|
+
dA as CanvasClass,
|
|
3070
3079
|
gA as HistogramJsrootClass,
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3080
|
+
Tt as HistogramPointerClass,
|
|
3081
|
+
lA as MobileController,
|
|
3082
|
+
uA as NdmvrRaycaster,
|
|
3083
|
+
fA as THnPainter,
|
|
3084
|
+
Jt as binInfoSubjectGet,
|
|
3085
|
+
ce as brokerManagerGet,
|
|
3086
|
+
Xt as canvasSubjectGet,
|
|
3078
3087
|
V as configSubjectGet,
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
+
he as dispatchSubjectGet,
|
|
3089
|
+
hA as fetchTFile,
|
|
3090
|
+
Wt as functionSubjectGet,
|
|
3091
|
+
cA as getCameraComponent,
|
|
3092
|
+
aA as histogramSubjectGet,
|
|
3093
|
+
oA as httpRequest,
|
|
3094
|
+
rA as initNdmvrAframe,
|
|
3095
|
+
Ft as inputDeviceSubjectGet,
|
|
3096
|
+
H as stateSubjectGet
|
|
3088
3097
|
};
|