@ndmspc/ndmvr-core 1.1.2-rc.1 → 1.1.2-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +26 -22
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1010,6 +1010,7 @@ function et(e) {
|
|
|
1010
1010
|
if (!e) return;
|
|
1011
1011
|
let t = (e) => {
|
|
1012
1012
|
let t = -Infinity;
|
|
1013
|
+
if (!e) return null;
|
|
1013
1014
|
for (let n = 0; n < e.length; n++) {
|
|
1014
1015
|
let r = e[n];
|
|
1015
1016
|
r > t && (t = r);
|
|
@@ -1019,7 +1020,7 @@ function et(e) {
|
|
|
1019
1020
|
n[0] = { content: t(e.fArray) }, e.fArrays && Object.keys(e?.fArrays).forEach((r) => {
|
|
1020
1021
|
n[0] = {
|
|
1021
1022
|
...n[0],
|
|
1022
|
-
[r]: t(e.fArrays[r].values)
|
|
1023
|
+
[r]: e.fArrays[r].max ?? t(e.fArrays[r].values)
|
|
1023
1024
|
};
|
|
1024
1025
|
});
|
|
1025
1026
|
let r = (e, i = 1) => {
|
|
@@ -1029,7 +1030,7 @@ function et(e) {
|
|
|
1029
1030
|
let o = t(a.fArray);
|
|
1030
1031
|
(!(e in n[i]) || o > n[i][e]) && (n[i][e] = o), a.fArrays && Object.keys(a.fArrays).forEach((e) => {
|
|
1031
1032
|
let r = a.fArrays[e].max;
|
|
1032
|
-
(!(e in n[i]) || r > n[i][e]) && (n[i][e] = r), n[i][e] = Math.max(n[i][e], t(a.fArrays[e].values));
|
|
1033
|
+
(!(e in n[i]) || r > n[i][e]) && (n[i][e] = r), n[i][e] = Math.max(n[i][e], a.fArrays[e].max ?? t(a.fArrays[e].values));
|
|
1033
1034
|
}), a.children && r(a.children, i + 1);
|
|
1034
1035
|
});
|
|
1035
1036
|
});
|
|
@@ -1039,6 +1040,7 @@ function et(e) {
|
|
|
1039
1040
|
function tt(e, t) {
|
|
1040
1041
|
if (!e) return;
|
|
1041
1042
|
let n = (e) => {
|
|
1043
|
+
if (!e) return null;
|
|
1042
1044
|
let t = 0;
|
|
1043
1045
|
for (let n = 0; n < e.length; n++) {
|
|
1044
1046
|
let r = e[n];
|
|
@@ -1049,7 +1051,7 @@ function tt(e, t) {
|
|
|
1049
1051
|
r[0] = { content: n(e.fSumw2) }, e.fArrays && Object.keys(e?.fArrays).forEach((t) => {
|
|
1050
1052
|
e.fArrays[t].errors && (r[0] = {
|
|
1051
1053
|
...r[0],
|
|
1052
|
-
[t]: n(e.fArrays[t].errors)
|
|
1054
|
+
[t]: n(e.fArrays[t].errors) ?? Math.sqrt(e.fArrays[t].max)
|
|
1053
1055
|
});
|
|
1054
1056
|
});
|
|
1055
1057
|
let i = (e, t = 1) => {
|
|
@@ -1058,7 +1060,7 @@ function tt(e, t) {
|
|
|
1058
1060
|
if (!a) return;
|
|
1059
1061
|
let o = n(a.fSumw2), s = isNaN(o) ? 0 : o;
|
|
1060
1062
|
(!(e in r[t]) || s > r[t][e]) && (r[t][e] = s), a.fArrays && Object.keys(a.fArrays).forEach((e) => {
|
|
1061
|
-
a.fArrays[e].errors && ((!(e in r[t]) || s > r[t][e]) && (r[t][e] = s), r[t][e] = Math.max(r[t][e], n(a.fArrays[e].errors)));
|
|
1063
|
+
a.fArrays[e].errors && ((!(e in r[t]) || s > r[t][e]) && (r[t][e] = s), r[t][e] = Math.max(r[t][e], n(a.fArrays[e].errors) ?? Math.sqrt(a.fArrays[e].max)));
|
|
1062
1064
|
}), a.children && i(a.children, t + 1);
|
|
1063
1065
|
});
|
|
1064
1066
|
});
|
|
@@ -1073,6 +1075,7 @@ function nt(e, t) {
|
|
|
1073
1075
|
if (!e) return;
|
|
1074
1076
|
let n = (e) => {
|
|
1075
1077
|
let t = Infinity;
|
|
1078
|
+
if (!e) return null;
|
|
1076
1079
|
for (let n = 0; n < e.length; n++) {
|
|
1077
1080
|
let r = e[n];
|
|
1078
1081
|
r !== 0 && r < t && (t = r);
|
|
@@ -1082,17 +1085,17 @@ function nt(e, t) {
|
|
|
1082
1085
|
r[0] = { content: n(e.fSumw2) }, e.fArrays && Object.keys(e?.fArrays).forEach((t) => {
|
|
1083
1086
|
e.fArrays[t].errors && (r[0] = {
|
|
1084
1087
|
...r[0],
|
|
1085
|
-
[t]: n(e.fArrays[t].errors)
|
|
1088
|
+
[t]: n(e.fArrays[t].errors) ?? Math.sqrt(e.fArrays[t].min)
|
|
1086
1089
|
});
|
|
1087
1090
|
});
|
|
1088
|
-
let i = (
|
|
1089
|
-
r[
|
|
1090
|
-
|
|
1091
|
-
if (!
|
|
1092
|
-
let
|
|
1093
|
-
(!(
|
|
1094
|
-
|
|
1095
|
-
}),
|
|
1091
|
+
let i = (t, a = 1) => {
|
|
1092
|
+
r[a] || (r[a] = {}), Object.entries(t).forEach(([t, o]) => {
|
|
1093
|
+
o.forEach((o) => {
|
|
1094
|
+
if (!o) return;
|
|
1095
|
+
let s = n(o.fSumw2), c = isNaN(s) ? 0 : s;
|
|
1096
|
+
(!(t in r[a]) || c < r[a][t]) && (r[a][t] = c), o.fArrays && Object.keys(o.fArrays).forEach((t) => {
|
|
1097
|
+
o.fArrays[t].errors && ((!(t in r[a]) || c < r[a][t]) && (r[a][t] = c), r[a][t] = Math.min(r[a][t], n(o.fArrays[t]?.errors?.filter((e) => e > 0)) ?? Math.sqrt(e.fArrays[t].min)));
|
|
1098
|
+
}), o.children && i(o.children, a + 1);
|
|
1096
1099
|
});
|
|
1097
1100
|
});
|
|
1098
1101
|
};
|
|
@@ -1106,6 +1109,7 @@ function rt(e) {
|
|
|
1106
1109
|
if (!e) return;
|
|
1107
1110
|
let t = (e) => {
|
|
1108
1111
|
let t = Infinity;
|
|
1112
|
+
if (!e) return null;
|
|
1109
1113
|
for (let n = 0; n < e.length; n++) {
|
|
1110
1114
|
let r = e[n];
|
|
1111
1115
|
r < t && (t = r);
|
|
@@ -1115,17 +1119,17 @@ function rt(e) {
|
|
|
1115
1119
|
n[0] = { content: t(e.fArray.filter((e) => e !== 0)) }, e.fArrays && Object.keys(e?.fArrays).forEach((r) => {
|
|
1116
1120
|
n[0] = {
|
|
1117
1121
|
...n[0],
|
|
1118
|
-
[r]: t(e.fArrays[r]
|
|
1122
|
+
[r]: e.fArrays[r].min ?? t(e.fArrays[r]?.values?.filter((e) => e !== 0))
|
|
1119
1123
|
};
|
|
1120
1124
|
});
|
|
1121
|
-
let r = (
|
|
1122
|
-
n[
|
|
1123
|
-
|
|
1124
|
-
if (!
|
|
1125
|
-
let
|
|
1126
|
-
(!(
|
|
1127
|
-
(!(
|
|
1128
|
-
}),
|
|
1125
|
+
let r = (i, a = 1) => {
|
|
1126
|
+
n[a] || (n[a] = {}), Object.entries(i).forEach(([i, o]) => {
|
|
1127
|
+
o.forEach((o) => {
|
|
1128
|
+
if (!o) return;
|
|
1129
|
+
let s = t(o.fArray.filter((e) => e !== 0));
|
|
1130
|
+
(!(i in n[a]) || s < n[a][i]) && (n[a][i] = s), o.fArrays && Object.keys(o.fArrays).forEach((r) => {
|
|
1131
|
+
(!(r in n[a]) || s > n[a][r]) && (n[a][r] = s), n[a][r] = Math.min(n[a][r], e.fArrays[r].min ?? t(o.fArrays[r]?.values?.filter((e) => e !== 0)));
|
|
1132
|
+
}), o.children && r(o.children, a + 1);
|
|
1129
1133
|
});
|
|
1130
1134
|
});
|
|
1131
1135
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<div class="regionUI baseColor" style="bottom: 10px; right: 10px;">
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
|
-
`}},pe=async e=>{let t;t=e.startsWith(`root://`)?e.replace(/^root:\/\//,`https://`).replace(/\/\//g,`/`):e,console.log(`Fetching from URL: ${t}`);let n=await fetch(t);if(!n.ok)throw Error(`Response status: ${n.status}`);return n.json()},me=class{raycaster;mouse;cameraElement;sceneElement;singleClickTimer;dbClickTimeout;configSub;rendererElement;raycastOn;constructor(e,t){this.singleClickTimer=null,this.dbClickTimeout=190,this.raycastOn=!0,this.rendererElement=t,this.raycaster=new r.Raycaster,this.mouse=new r.Vector2,this.sceneElement=e,this.checkInterval=1,this.lastCheck=void 0,e.traverse(e=>{e.isCamera&&(this.cameraElement=e)}),this.mousemoveEventHandle=this.mousemoveEventHandle.bind(this),this.clickEventHandle=this.clickEventHandle.bind(this),this.setupRaycasting(),this.configSub=F().getObservable().subscribe(e=>{this.dbClickTimeout=e.config.environment.dbClickTimeout??190})}setupRaycasting(){window.addEventListener(`mousemove`,this.mousemoveEventHandle),window.addEventListener(`click`,this.clickEventHandle)}destroyRaycasting(){window.removeEventListener(`mousemove`,this.mousemoveEventHandle),window.removeEventListener(`click`,this.clickEventHandle)}toggleRaycasting(){this.raycastOn=!this.raycastOn,this.raycastOn?this.setupRaycasting():this.destroyRaycasting()}mousemoveEventHandle(e){let t=performance.now();t-this.lastCheck<this.checkInterval||(this.lastCheck=t,this.updateRaycaster(e))}clickEventHandle(e){let t=this.rendererElement.getBoundingClientRect();this.mouse.x=(e.clientX-t.left)/t.width*2-1,this.mouse.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.mouse,this.cameraElement);let n=Date.now(),r=(this.lastClick?n-this.lastClick:1/0)<this.dbClickTimeout;this.singleClickTimer&&=(clearTimeout(this.singleClickTimer),null),r?(this.raycaster._triggerSource=e.shiftKey?`shiftmousedbclick`:`mousedbclick`,this.handleRaycast()):this.singleClickTimer=setTimeout(()=>{this.raycaster._triggerSource=e.shiftKey?`shiftmouseclick`:`mouseclick`,this.handleRaycast(),this.singleClickTimer=null},this.dbClickTimeout),this.lastClick=n}handleRaycast(){this.raycaster.intersectObjects(this.sceneElement.children,!0).length}updateRaycaster(e){let t=this.rendererElement.getBoundingClientRect();this.mouse.x=(e.clientX-t.left)/t.width*2-1,this.mouse.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.mouse,this.cameraElement),this.raycaster._triggerSource=`mousemove`,this.raycaster.intersectObjects(this.sceneElement.children,!0)}},V=class{constructor(e){this.limits=new Int32Array(e),this.values=new Int32Array(e.length)}increment(){for(let e=0;e<this.values.length;e++){if(this.values[e]++,this.values[e]<this.limits[e])return!0;this.values[e]=0}return!1}getIndex(){let e=0,t=1;for(let n=0;n<this.values.length;n++)e+=this.values[n]*t,t*=this.limits[n];return e}setFromNumber(e){for(let t=0;t<this.limits.length;t++)this.values[t]=Math.floor(e%this.limits[t]),e=Math.floor(e/this.limits[t])}getValueAt(e){return this.values[e]}getValues(){return[...this.values]}reset(){this.values.fill(0)}};function he(e,t){return t<=0?e.fXmin:t>e.fNbins?e.fXmax:e.GetBinLowEdge(t+1)}function H(e,t,n,r,i,a,o){let s=t+1,c=e.GetBinLowEdge(s),l=he(e,s),u=Math.abs(l-c);if(o.size=u,o.pos=c+u*.5-e.fXmin,n){let t=(e.fXmax-e.fXmin)*e.fNbins/(n*e.fNbins);o.pos/=t,o.size/=t,o.size*=1-r,o.pos-=n*.5,o.pos+=i}}function ge(e,t,n,r,i,a,o){H(e.fXaxis,t.x,n?.x,r?.x,i?.x,a,o.x),H(e.fYaxis,t.y,n?.z,r?.y,i?.z,a,o.y),H(e.fZaxis,t.z,n?.y,r?.z,i?.y,a,o.z)}function _e(e){let t=e.y.size,n=e.y.pos;return e.y.size=e.z.size,e.y.pos=e.z.pos,e.z.size=t,e.z.pos=n,e}function ve(e,t,n,r,i,a,o){return ge(e,t,r,n,i,a,o),o}function U(e,t,n){return n.z.pos=2*e-n.z.pos,n}function W(e,t){if(e.length!==t.length)return!1;let n={};for(let t of e)n[t]=(n[t]||0)+1;for(let e of t){if(!n[e])return!1;n[e]--}return!0}function ye(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=Object.keys(e[n]),i=Object.keys(t[n]);if(r.length!==i.length)return!1;for(let i of r){if(!t[n].hasOwnProperty(i))return!1;let r=e[n][i],a=t[n][i];if(typeof r!=typeof a)return!1;if(typeof r==`object`){if(!r||!a){if(r!==a)return!1;continue}let e=Object.keys(r),t=Object.keys(a);if(e.length!==t.length)return!1;for(let t of e)if(!a.hasOwnProperty(t)||r[t]!==a[t])return!1}else if(r!==a)return!1}}return!0}function G(e,t,n,r){let i=Array(e.length).fill(0),a=(t,o,s)=>{let c=o.fXaxis.fNbins,l=o.fYaxis.fNbins;o.fZaxis.fNbins;let u=n.slice(-n.length+t+1).reduce((e,t)=>e*t,1);if(i[s]+=(e[t].x+e[t].y*c+e[t].z*c*l)*u,t+1<e.length){let n;n=o.children.content?o.children.content[o.getBin(e[t].x+1,e[t].y+1,e[t].z+1)]:o.children[r[0]][o.getBin(e[t].x+1,e[t].y+1,e[t].z+1)],s>t&&a(t+1,n,s)}};for(let n=0;n<e.length;n++)a(0,t,n);return i}function K(e,t,n){let r=Array(e.length).fill(0);for(let i=0;i<e.length;i++)if(r[i]=t.getBin(e[i].x+1,e[i].y+1,e[i].z+1),t.children)t=t.children?.content?t.children.content[r[i]]:t.children[n[0]]?.[r[i]];else return r;return r}function q(e,t,n,r,i,a=0){let o=[`x`,`y`,`z`],s=Number.parseInt(n._typename.substring(2,3),10),c={};if(e[0]){for(let t=0;t<s;t++){let r=o[t],i=n[`f${r.toUpperCase()}axis`],a=e[0][r];c[r]={min:i.GetBinLowEdge(a+1),max:i.GetBinCenter(a+1)*2-i.GetBinLowEdge(a+1),name:i.fName,title:i.fTitle,label:i.fLabels?.arr[a]?.fString}}c={...c,color:r.getColorAt(a,t),name:n.fName}}if(e[1]){let o;return n.children?.content?o=n.children.content[n.getBin(e[0].x+1,e[0].y+1,e[0].z+1)]:n.children?.[i[0]]&&(o=n.children[i[0]][n.getBin(e[0].x+1,e[0].y+1,e[0].z+1)]),[c,...q(e.slice(1),t,o,r,i,a+1)]}else return[c]}function be(e,t,n,r){let i=0,a=n.slice(1),o=[];for(let e=0;e<a.length;e++){let t=a.slice(e).reduce((e,t)=>e*t,1);o.push(t)}let s=(t,n)=>{let{fNbins:a}=n.fXaxis,{fNbins:c}=n.fYaxis,{fNbins:l}=n.fZaxis,u=e[t].x+e[t].y*a+e[t].z*a*c;if(i+=u*o[t],t+1<e.length){let i=xe(n,e[t],r);s(t+1,i)}};return s(0,t),i}function xe(e,t,n){let r=e.getBin(t.x+1,t.y+1,t.z+1);return e.children.content?e.children.content[r]:e.children[n[0]][r]}function J(e,t,n){let r=t.splice(0,1)[0];return t.length>0?J(e.children.content[r],t,n):e.children.content?e.children.content[r]:e.children[n][r]}function Se(e){if(!e)return;let t=e=>{let t=-1/0;for(let n=0;n<e.length;n++){let r=e[n];r>t&&(t=r)}return t},n=[];n[0]={content:t(e.fArray)},e.fArrays&&Object.keys(e?.fArrays).forEach(r=>{n[0]={...n[0],[r]:t(e.fArrays[r].values)}});let r=(e,i=1)=>{n[i]||(n[i]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=t(a.fArray);(!(e in n[i])||o>n[i][e])&&(n[i][e]=o),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{let r=a.fArrays[e].max;(!(e in n[i])||r>n[i][e])&&(n[i][e]=r),n[i][e]=Math.max(n[i][e],t(a.fArrays[e].values))}),a.children&&r(a.children,i+1)})})};return e.children&&r(e.children),n}function Ce(e,t){if(!e)return;let n=e=>{let t=0;for(let n=0;n<e.length;n++){let r=e[n];r>t&&(t=r)}return t},r=[];r[0]={content:n(e.fSumw2)},e.fArrays&&Object.keys(e?.fArrays).forEach(t=>{e.fArrays[t].errors&&(r[0]={...r[0],[t]:n(e.fArrays[t].errors)})});let i=(e,t=1)=>{r[t]||(r[t]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=n(a.fSumw2),s=isNaN(o)?0:o;(!(e in r[t])||s>r[t][e])&&(r[t][e]=s),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{a.fArrays[e].errors&&((!(e in r[t])||s>r[t][e])&&(r[t][e]=s),r[t][e]=Math.max(r[t][e],n(a.fArrays[e].errors)))}),a.children&&i(a.children,t+1)})})};e.children&&i(e.children);for(let e=0;e<r.length;e++)Object.keys(r[e]).forEach(n=>{r[e][n]===0&&(r[e][n]=Math.sqrt(t[e][n]))});return r}function we(e,t){if(!e)return;let n=e=>{let t=1/0;for(let n=0;n<e.length;n++){let r=e[n];r!==0&&r<t&&(t=r)}return t},r=[];r[0]={content:n(e.fSumw2)},e.fArrays&&Object.keys(e?.fArrays).forEach(t=>{e.fArrays[t].errors&&(r[0]={...r[0],[t]:n(e.fArrays[t].errors)})});let i=(e,t=1)=>{r[t]||(r[t]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=n(a.fSumw2),s=isNaN(o)?0:o;(!(e in r[t])||s<r[t][e])&&(r[t][e]=s),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{a.fArrays[e].errors&&((!(e in r[t])||s<r[t][e])&&(r[t][e]=s),r[t][e]=Math.min(r[t][e],n(a.fArrays[e].errors.filter(e=>e>0))))}),a.children&&i(a.children,t+1)})})};e.children&&i(e.children);for(let e=0;e<r.length;e++)Object.keys(r[e]).forEach(n=>{(r[e][n]===0||r[e][n]===1/0)&&(r[e][n]=Math.sqrt(t[e][n]))});return r}function Te(e){if(!e)return;let t=e=>{let t=1/0;for(let n=0;n<e.length;n++){let r=e[n];r<t&&(t=r)}return t},n=[];n[0]={content:t(e.fArray.filter(e=>e!==0))},e.fArrays&&Object.keys(e?.fArrays).forEach(r=>{n[0]={...n[0],[r]:t(e.fArrays[r].values.filter(e=>e!==0))}});let r=(e,i=1)=>{n[i]||(n[i]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=t(a.fArray.filter(e=>e!==0));(!(e in n[i])||o<n[i][e])&&(n[i][e]=o),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{(!(e in n[i])||o>n[i][e])&&(n[i][e]=o),n[i][e]=Math.min(n[i][e],t(a.fArrays[e].values.filter(e=>e!==0)))}),a.children&&r(a.children,i+1)})})};return e.children&&r(e.children),n}function Ee(e){if(!e)return;let t=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins,n=[];n.push(t);let r=(e,t=1)=>{let i=0;return t>=n.length&&n.push(1),Object.entries(e).forEach((e,a)=>{e[1].forEach(e=>{e&&(i=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins,i>n[t]&&(n[t]=i),e.children&&r(e.children,t+1))})}),n};return e.children&&r(e.children),n.push(1),n}function De(e,t,n){new r.Color(e.color.default.min).toArray(n,0),new r.Color(e.color.default.max).toArray(n,3);let i=1;e.color.layer.forEach(e=>{let t=i*6;new r.Color(e.min).toArray(n,t),new r.Color(e.max).toArray(n,t+3),i++}),e.color.set.forEach(e=>{let t=i*6;new r.Color(e.min).toArray(n,t),new r.Color(e.max).toArray(n,t+3),i++}),t.uniforms.colorPairs={value:n},t.uniformsNeedUpdate=!0}function Y(e,t,n,r,i,a){let o=((e,t,n)=>{let r=(e-t)/(n-t);return r>1&&(r=1),isNaN(r)||r===1/0?0:r})(t,n,r),s=0;return e.set[i]?s=1+e.layer.length+i:e.layer[a]&&(s=1+a),s+o}function X(e,t,n,r,i,a,o){if(!(1/e==-1/0||e<0))return o[0]=t[e],o[1]=t[e+1],o[2]=t[e+2],o[3]=n[e],o[4]=n[e+1],o[5]=n[e+2],o;let s=Math.abs(e),c=a===null?r[i]:r[i][a];return o[0]=c.pos[s],o[1]=c.pos[s+1],o[2]=c.pos[s+2],o[3]=c.scale[s],o[4]=c.scale[s+1],o[5]=c.scale[s+2],o}var Oe=e=>{if(!e)return!1;for(let t in e)if(t!==`content`&&Object.prototype.hasOwnProperty.call(e,t)&&e[t]&&typeof e[t]==`object`&&Object.keys(e[t]).length>0)return!0;return!1};function Z(e,t,n,r,i,a,o){let s=t.fXaxis.fNbins,c=t.fYaxis.fNbins,l=t.fZaxis.fNbins,u=0,d=0,f=new Float32Array((s*c*l-1)*3),p=new Float32Array((s*c*l-1)*3),m=new Float32Array(s*c*l-1),h=new Float32Array(s*c*l-1),g=new Float32Array(s*c*l-1),_=new Float32Array(6),v=new Float32Array(6),y=e=>{let t=x*3;f[t]=e[0],f[t+1]=e[1],f[t+2]=e[2],p[t]=e[3],p[t+1]=e[4],p[t+2]=e[5],m[x]=e[6],h[x]=e[7],g[x]=e[8]},b=(t,n,r,i)=>{X(t,f,p,e,r,i,_),X(n,f,p,e,r,i,v);let a=_[0]-_[3]*.5<v[0]-v[3]*.5?_[0]-_[3]*.5:v[0]-v[3]*.5,o=_[1]-_[4]*.5<v[1]-v[4]*.5?_[1]-_[4]*.5:v[1]-v[4]*.5,s=_[2]-_[5]*.5<v[2]-v[5]*.5?_[2]-_[5]*.5:v[2]-v[5]*.5,c=_[0]+_[3]*.5>v[0]+v[3]*.5?_[0]+_[3]*.5:v[0]+v[3]*.5,l=_[1]+_[4]*.5>v[1]+v[4]*.5?_[1]+_[4]*.5:v[1]+v[4]*.5,u=_[2]+_[5]*.5>v[2]+v[5]*.5?_[2]+_[5]*.5:v[2]+v[5]*.5,d=new Float32Array(9);return d[0]=(a+c)*.5,d[1]=(o+l)*.5,d[2]=(s+u)*.5,d[3]=c-a,d[4]=l-o,d[5]=u-s,d},x=0;for(let e=0;e<c;e++){for(let e=0;e<l;e++){let e=u+o,t=Array(s);for(let n=0;n<s;n++)t[n]=-n-e;for(;t.length>1;){let e=0,i=Math.floor(t.length/2);for(let o=0;o<i;o++){let i=t[e],o=t[e+1],s=b(i*3,o*3,n,r);t.splice(e,2,x),Q(s,a),s[6]=1/i==-1/0||i<0?i:g[i],s[7]=1/o==-1/0||o<0?o:g[o],s[8]=d,y(s),x+=1,d+=1,e+=1}}u+=s}let e=Array(l);for(let t=0;t<l;t++)e[t]=x-1-(l-1-t)*(s-1);for(;e.length>1;){let t=0,i=Math.floor(e.length/2);for(let o=0;o<i;o++){let i=e[t],o=e[t+1],s=b(i*3,o*3,n,r);e.splice(t,2,x),Q(s,a),s[6]=g[i],s[7]=g[o],s[8]=d,y(s),x+=1,d+=1,t+=1}}}let S=Array(c);for(let e=0;e<c;e++)S[e]=x-1-(c-1-e)*(s*l-1);for(;S.length>1;){let e=0,t=Math.floor(S.length/2);for(let i=0;i<t;i++){let t=S[e],i=S[e+1],o=b(t*3,i*3,n,r);S.splice(e,2,x),Q(o,a),o[6]=g[t],o[7]=g[i],o[8]=d,y(o),x+=1,d+=1,e+=1}}return{pos:f,scale:p,left:m,right:h}}function ke(e,t,n,r,i,a,o,s){let c=Array(e.length).fill().map(e=>[]);c[c.length-1]=Array.from({length:a.length},()=>[]),i===null?c[0]=[Z(e,t,n,null,a,o,0)]:(c[0]=Array(a.length),r.forEach(r=>c[0][a.indexOf(r)]=Z(e,t,n,a.indexOf(r),a,o,0)));let l=(t,n,i)=>{if(!t.children)return;let u=new V([t.fXaxis.fNbins,t.fYaxis.fNbins,t.fZaxis.fNbins]),d=t.fXaxis.fNbins*t.fYaxis.fNbins*t.fZaxis.fNbins,f=s.slice(1,n-1).reduce((e,t)=>e*t,s[1]),p=s[n];for(let m=0;m<d;m++){let d={x:u.getValueAt(0),y:u.getValueAt(1),z:u.getValueAt(2)};if(t?.children?.content){let r=t.children.content[t.getBin(d.x+1,d.y+1,d.z+1)];if(!r){if(u.increment()===!1)break;continue}c[n][m+i]=Z(e,r,n,null,a,o,(m+i)*p),l(r,n+1,(u.getIndex()+i)*f)}else Oe(t.children)&&r.forEach((r=>{let h=a.indexOf(r),g=(m+i)*p,_=!1;for(let t=g;t<g+s[n];t++)if(e[n][h].rendered[t]!==-1){_=!0;break}if(!_){c[n][h].push(null);return}let v=t.children[r][t.getBin(d.x+1,d.z+1,d.y+1)];v&&(c[n][h][m+i]=Z(e,v,n,h,a,o,(m+i)*p),l(v,n+1,(u.getIndex()+i)*f))}));if(u.increment()===!1)break}};return l(t,1,0),c}function Q(e,t){let n=t.elements,r=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]),i=Math.sqrt(n[4]*n[4]+n[5]*n[5]+n[6]*n[6]),a=Math.sqrt(n[8]*n[8]+n[9]*n[9]+n[10]*n[10]);e[0]=e[0]*r+n[12],e[1]=e[1]*i+n[13],e[2]=e[2]*a+n[14],e[3]*=r,e[4]*=i,e[5]*=a}var $=class{rootObj=void 0;origin=void 0;parentPath=[];path=void 0;title=void 0;range=[];isOnSet=null;isHistogramFilled=!0;constructor(e){this.rootObj=e,this.origin=this.rootObj,this.title=this.origin.fTitle,this.path=this.origin.fName}setOriginToChild(e,t,n){if(!e)return;let r=e.splice(0,1);if(this.origin?.children){if(this.origin.children?.content)this.parentPath.push({origin:this.origin,range:n.splice(0,1),bin:r}),this.origin=this.origin.children.content[r],this.isOnSet=null;else if(Object.keys(this.origin.children).includes(t)){if(this.parentPath.push({origin:this.origin,range:n.splice(0,1),bin:r}),!this.origin.children[t][r]){this.isHistogramFilled=!1,this.path+=`/empty`,this.origin=null;return}this.origin=this.origin.children[t][r],this.isOnSet=t}else{console.error(`Bad set or index specified.`);return}this.title=this.origin.fTitle,this.path=this.path+`/`+this.origin.fName,e.length>0&&this.setOriginToChild(e,t,n)}}getChildByPosition(e,t,n=this.origin){if(!e||e.length===0)return{...n};let r=e.splice(0,1)[0];return n?.children?n.children?.content?this.getChildByPosition(e,t,n.children.content[r]):Object.keys(n.children).includes(t)?this.getChildByPosition(e,t,n.children[t][r]):(console.error(`Bad set or index specified.`),null):{...n}}setOriginToParent(e=1){if(e<=0||this.parentPath.length===0)return;let t=this.path.lastIndexOf(`/`);this.path=this.path.slice(0,t);let n=this.parentPath.pop();n&&(this.origin=n.origin),this.title=this.origin.fTitle,this.setOriginToParent(e-1),this.isOnSet=null,this.isHistogramFilled=!0}},Ae=class{wireframe=void 0;instGeom=void 0;material=void 0;totalInstances=void 0;maxInstancesPerLayer=void 0;instancePositions=void 0;instanceScales=void 0;instanceColors=void 0;colorArray=void 0;configSub=void 0;stateSub=void 0;config=void 0;numOfavailableSets=void 0;visibility=!0;id=void 0;constructor(e,t,n,i){this.config=n,this.maxInstancesPerLayer=e,this.id=i;let a=new r.EdgesGeometry(new r.BoxGeometry(1,1,1));this.instGeom=new r.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=a.index;for(let e in a.attributes)this.instGeom.setAttribute(e,a.attributes[e]);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(`instancePosition`,new r.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute(`instanceScale`,new r.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute(`instanceColorIndex`,new r.InstancedBufferAttribute(this.instanceColors,1)),this.wireframe=new r.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,this.stateSub=v(this.id).getObservable().subscribe(e=>{this.numOfavailableSets=e.sets.length})}pushVisibleInstances(e,t,n){let i=this.wireframe.parent;i&&(i.remove(this.wireframe),this.instGeom.dispose());let a=this.config.display.start??0,o=this.config.display.end??e.length-1,s=[],c=e.length-1;{let t=(Array.isArray(e[c])?e[c][n]:e[c]).rendered,r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t[e]===-1?0:1;s[c]=r}for(let r=c-1;r>=0;r--){let i=(Array.isArray(e[r])?e[r][n]:e[r]).rendered,a=s[r+1],o=t[r+1]||0,c=new Uint8Array(i.length);for(let e=0;e<i.length;e++){if(i[e]!==-1){c[e]=1;continue}let t=e*o,n=t+o;for(let r=t;r<n;r++)if(a[r]){c[e]=1;break}}s[r]=c}let l=(e,t)=>e<a||e>o?!1:s[e][t]===1,u=(r,i)=>{let a=0,o=r,s=i;for(;o+1<e.length;){o++,s*=t[o];let i=e[o],c=Array.isArray(i)?i[n===-1?0:n]:i;for(let e=s;e<s+t[o];e++)if(c.rendered[e]!==-1){a=o-r;break}}return a},d=0;for(let t=0;t<e.length;t++){let n=e[t];if(!Array.isArray(n))for(let e=0;e<n.rendered.length;e++)l(t,e)&&d++}let f=new Float32Array(d*3),p=new Float32Array(d*3),m=new Float32Array(d),h=0;for(let t=0;t<e.length;t++){let r=e[t],i=this.getColorIndex(t,n);if(!Array.isArray(r)){for(let e=0;e<r.rendered.length;e++)if(l(t,e)){let n=u(t,e)*.05;f[h*3]=r.pos[e*3],f[h*3+1]=r.pos[e*3+1],f[h*3+2]=r.pos[e*3+2],p[h*3]=r.scale[e*3]+n,p[h*3+1]=r.scale[e*3+1]+n,p[h*3+2]=r.scale[e*3+2]+n,m[h++]=i}}}let g=new r.EdgesGeometry(new r.BoxGeometry(1,1,1));this.instGeom=new r.InstancedBufferGeometry,this.instGeom.instanceCount=d,this.instGeom.frustumCulled=!1,this.instGeom.index=g.index;let _=g.attributes;for(let e in _)this.instGeom.setAttribute(e,_[e]);this.instancePositions=f,this.instanceScales=p,this.instanceColors=m,this.instGeom.setAttribute(`instancePosition`,new r.InstancedBufferAttribute(f,3)),this.instGeom.setAttribute(`instanceScale`,new r.InstancedBufferAttribute(p,3)),this.instGeom.setAttribute(`instanceColorIndex`,new r.InstancedBufferAttribute(m,1)),this.wireframe=new r.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,i&&i.add(this.wireframe)}toggleVisibility(e,t,n){this.visibility=!this.visibility,this.visibility?this.pushVisibleInstances(e,t,n):this.clearWireframe()}dispose(){this.instancePositions=[],this.instanceScales=[],this.wireframe.parent.remove(this.wireframe),this.instGeom.dispose()}clearWireframe(){this.instancePositions=new Float32Array(3),this.instanceScales=new Float32Array(3),this.instanceColors=new Float32Array(1),this.instGeom.dispose(),this.instGeom.instanceCount=0}fillColorArray(){new r.Color(this.config.color.default).toArray(this.colorArray,0);let e=1;this.config.color.layer.map(e=>new r.Color(e)).forEach(t=>{let n=e*3;t.toArray(this.colorArray,n),e++}),this.config.color.set.map(e=>new r.Color(e)).forEach(t=>{let n=e*3;t.toArray(this.colorArray,n),e++}),this.material.uniforms.colorArray={value:this.colorArray},this.material.uniformsNeedUpdate=!0}createMaterial(){return new r.ShaderMaterial({vertexShader:`
|
|
36
|
+
`}},pe=async e=>{let t;t=e.startsWith(`root://`)?e.replace(/^root:\/\//,`https://`).replace(/\/\//g,`/`):e,console.log(`Fetching from URL: ${t}`);let n=await fetch(t);if(!n.ok)throw Error(`Response status: ${n.status}`);return n.json()},me=class{raycaster;mouse;cameraElement;sceneElement;singleClickTimer;dbClickTimeout;configSub;rendererElement;raycastOn;constructor(e,t){this.singleClickTimer=null,this.dbClickTimeout=190,this.raycastOn=!0,this.rendererElement=t,this.raycaster=new r.Raycaster,this.mouse=new r.Vector2,this.sceneElement=e,this.checkInterval=1,this.lastCheck=void 0,e.traverse(e=>{e.isCamera&&(this.cameraElement=e)}),this.mousemoveEventHandle=this.mousemoveEventHandle.bind(this),this.clickEventHandle=this.clickEventHandle.bind(this),this.setupRaycasting(),this.configSub=F().getObservable().subscribe(e=>{this.dbClickTimeout=e.config.environment.dbClickTimeout??190})}setupRaycasting(){window.addEventListener(`mousemove`,this.mousemoveEventHandle),window.addEventListener(`click`,this.clickEventHandle)}destroyRaycasting(){window.removeEventListener(`mousemove`,this.mousemoveEventHandle),window.removeEventListener(`click`,this.clickEventHandle)}toggleRaycasting(){this.raycastOn=!this.raycastOn,this.raycastOn?this.setupRaycasting():this.destroyRaycasting()}mousemoveEventHandle(e){let t=performance.now();t-this.lastCheck<this.checkInterval||(this.lastCheck=t,this.updateRaycaster(e))}clickEventHandle(e){let t=this.rendererElement.getBoundingClientRect();this.mouse.x=(e.clientX-t.left)/t.width*2-1,this.mouse.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.mouse,this.cameraElement);let n=Date.now(),r=(this.lastClick?n-this.lastClick:1/0)<this.dbClickTimeout;this.singleClickTimer&&=(clearTimeout(this.singleClickTimer),null),r?(this.raycaster._triggerSource=e.shiftKey?`shiftmousedbclick`:`mousedbclick`,this.handleRaycast()):this.singleClickTimer=setTimeout(()=>{this.raycaster._triggerSource=e.shiftKey?`shiftmouseclick`:`mouseclick`,this.handleRaycast(),this.singleClickTimer=null},this.dbClickTimeout),this.lastClick=n}handleRaycast(){this.raycaster.intersectObjects(this.sceneElement.children,!0).length}updateRaycaster(e){let t=this.rendererElement.getBoundingClientRect();this.mouse.x=(e.clientX-t.left)/t.width*2-1,this.mouse.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.mouse,this.cameraElement),this.raycaster._triggerSource=`mousemove`,this.raycaster.intersectObjects(this.sceneElement.children,!0)}},V=class{constructor(e){this.limits=new Int32Array(e),this.values=new Int32Array(e.length)}increment(){for(let e=0;e<this.values.length;e++){if(this.values[e]++,this.values[e]<this.limits[e])return!0;this.values[e]=0}return!1}getIndex(){let e=0,t=1;for(let n=0;n<this.values.length;n++)e+=this.values[n]*t,t*=this.limits[n];return e}setFromNumber(e){for(let t=0;t<this.limits.length;t++)this.values[t]=Math.floor(e%this.limits[t]),e=Math.floor(e/this.limits[t])}getValueAt(e){return this.values[e]}getValues(){return[...this.values]}reset(){this.values.fill(0)}};function he(e,t){return t<=0?e.fXmin:t>e.fNbins?e.fXmax:e.GetBinLowEdge(t+1)}function H(e,t,n,r,i,a,o){let s=t+1,c=e.GetBinLowEdge(s),l=he(e,s),u=Math.abs(l-c);if(o.size=u,o.pos=c+u*.5-e.fXmin,n){let t=(e.fXmax-e.fXmin)*e.fNbins/(n*e.fNbins);o.pos/=t,o.size/=t,o.size*=1-r,o.pos-=n*.5,o.pos+=i}}function ge(e,t,n,r,i,a,o){H(e.fXaxis,t.x,n?.x,r?.x,i?.x,a,o.x),H(e.fYaxis,t.y,n?.z,r?.y,i?.z,a,o.y),H(e.fZaxis,t.z,n?.y,r?.z,i?.y,a,o.z)}function _e(e){let t=e.y.size,n=e.y.pos;return e.y.size=e.z.size,e.y.pos=e.z.pos,e.z.size=t,e.z.pos=n,e}function ve(e,t,n,r,i,a,o){return ge(e,t,r,n,i,a,o),o}function U(e,t,n){return n.z.pos=2*e-n.z.pos,n}function W(e,t){if(e.length!==t.length)return!1;let n={};for(let t of e)n[t]=(n[t]||0)+1;for(let e of t){if(!n[e])return!1;n[e]--}return!0}function ye(e,t){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=Object.keys(e[n]),i=Object.keys(t[n]);if(r.length!==i.length)return!1;for(let i of r){if(!t[n].hasOwnProperty(i))return!1;let r=e[n][i],a=t[n][i];if(typeof r!=typeof a)return!1;if(typeof r==`object`){if(!r||!a){if(r!==a)return!1;continue}let e=Object.keys(r),t=Object.keys(a);if(e.length!==t.length)return!1;for(let t of e)if(!a.hasOwnProperty(t)||r[t]!==a[t])return!1}else if(r!==a)return!1}}return!0}function G(e,t,n,r){let i=Array(e.length).fill(0),a=(t,o,s)=>{let c=o.fXaxis.fNbins,l=o.fYaxis.fNbins;o.fZaxis.fNbins;let u=n.slice(-n.length+t+1).reduce((e,t)=>e*t,1);if(i[s]+=(e[t].x+e[t].y*c+e[t].z*c*l)*u,t+1<e.length){let n;n=o.children.content?o.children.content[o.getBin(e[t].x+1,e[t].y+1,e[t].z+1)]:o.children[r[0]][o.getBin(e[t].x+1,e[t].y+1,e[t].z+1)],s>t&&a(t+1,n,s)}};for(let n=0;n<e.length;n++)a(0,t,n);return i}function K(e,t,n){let r=Array(e.length).fill(0);for(let i=0;i<e.length;i++)if(r[i]=t.getBin(e[i].x+1,e[i].y+1,e[i].z+1),t.children)t=t.children?.content?t.children.content[r[i]]:t.children[n[0]]?.[r[i]];else return r;return r}function q(e,t,n,r,i,a=0){let o=[`x`,`y`,`z`],s=Number.parseInt(n._typename.substring(2,3),10),c={};if(e[0]){for(let t=0;t<s;t++){let r=o[t],i=n[`f${r.toUpperCase()}axis`],a=e[0][r];c[r]={min:i.GetBinLowEdge(a+1),max:i.GetBinCenter(a+1)*2-i.GetBinLowEdge(a+1),name:i.fName,title:i.fTitle,label:i.fLabels?.arr[a]?.fString}}c={...c,color:r.getColorAt(a,t),name:n.fName}}if(e[1]){let o;return n.children?.content?o=n.children.content[n.getBin(e[0].x+1,e[0].y+1,e[0].z+1)]:n.children?.[i[0]]&&(o=n.children[i[0]][n.getBin(e[0].x+1,e[0].y+1,e[0].z+1)]),[c,...q(e.slice(1),t,o,r,i,a+1)]}else return[c]}function be(e,t,n,r){let i=0,a=n.slice(1),o=[];for(let e=0;e<a.length;e++){let t=a.slice(e).reduce((e,t)=>e*t,1);o.push(t)}let s=(t,n)=>{let{fNbins:a}=n.fXaxis,{fNbins:c}=n.fYaxis,{fNbins:l}=n.fZaxis,u=e[t].x+e[t].y*a+e[t].z*a*c;if(i+=u*o[t],t+1<e.length){let i=xe(n,e[t],r);s(t+1,i)}};return s(0,t),i}function xe(e,t,n){let r=e.getBin(t.x+1,t.y+1,t.z+1);return e.children.content?e.children.content[r]:e.children[n[0]][r]}function J(e,t,n){let r=t.splice(0,1)[0];return t.length>0?J(e.children.content[r],t,n):e.children.content?e.children.content[r]:e.children[n][r]}function Se(e){if(!e)return;let t=e=>{let t=-1/0;if(!e)return null;for(let n=0;n<e.length;n++){let r=e[n];r>t&&(t=r)}return t},n=[];n[0]={content:t(e.fArray)},e.fArrays&&Object.keys(e?.fArrays).forEach(r=>{n[0]={...n[0],[r]:e.fArrays[r].max??t(e.fArrays[r].values)}});let r=(e,i=1)=>{n[i]||(n[i]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=t(a.fArray);(!(e in n[i])||o>n[i][e])&&(n[i][e]=o),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{let r=a.fArrays[e].max;(!(e in n[i])||r>n[i][e])&&(n[i][e]=r),n[i][e]=Math.max(n[i][e],a.fArrays[e].max??t(a.fArrays[e].values))}),a.children&&r(a.children,i+1)})})};return e.children&&r(e.children),n}function Ce(e,t){if(!e)return;let n=e=>{if(!e)return null;let t=0;for(let n=0;n<e.length;n++){let r=e[n];r>t&&(t=r)}return t},r=[];r[0]={content:n(e.fSumw2)},e.fArrays&&Object.keys(e?.fArrays).forEach(t=>{e.fArrays[t].errors&&(r[0]={...r[0],[t]:n(e.fArrays[t].errors)??Math.sqrt(e.fArrays[t].max)})});let i=(e,t=1)=>{r[t]||(r[t]={}),Object.entries(e).forEach(([e,a])=>{a.forEach(a=>{if(!a)return;let o=n(a.fSumw2),s=isNaN(o)?0:o;(!(e in r[t])||s>r[t][e])&&(r[t][e]=s),a.fArrays&&Object.keys(a.fArrays).forEach(e=>{a.fArrays[e].errors&&((!(e in r[t])||s>r[t][e])&&(r[t][e]=s),r[t][e]=Math.max(r[t][e],n(a.fArrays[e].errors)??Math.sqrt(a.fArrays[e].max)))}),a.children&&i(a.children,t+1)})})};e.children&&i(e.children);for(let e=0;e<r.length;e++)Object.keys(r[e]).forEach(n=>{r[e][n]===0&&(r[e][n]=Math.sqrt(t[e][n]))});return r}function we(e,t){if(!e)return;let n=e=>{let t=1/0;if(!e)return null;for(let n=0;n<e.length;n++){let r=e[n];r!==0&&r<t&&(t=r)}return t},r=[];r[0]={content:n(e.fSumw2)},e.fArrays&&Object.keys(e?.fArrays).forEach(t=>{e.fArrays[t].errors&&(r[0]={...r[0],[t]:n(e.fArrays[t].errors)??Math.sqrt(e.fArrays[t].min)})});let i=(t,a=1)=>{r[a]||(r[a]={}),Object.entries(t).forEach(([t,o])=>{o.forEach(o=>{if(!o)return;let s=n(o.fSumw2),c=isNaN(s)?0:s;(!(t in r[a])||c<r[a][t])&&(r[a][t]=c),o.fArrays&&Object.keys(o.fArrays).forEach(t=>{o.fArrays[t].errors&&((!(t in r[a])||c<r[a][t])&&(r[a][t]=c),r[a][t]=Math.min(r[a][t],n(o.fArrays[t]?.errors?.filter(e=>e>0))??Math.sqrt(e.fArrays[t].min)))}),o.children&&i(o.children,a+1)})})};e.children&&i(e.children);for(let e=0;e<r.length;e++)Object.keys(r[e]).forEach(n=>{(r[e][n]===0||r[e][n]===1/0)&&(r[e][n]=Math.sqrt(t[e][n]))});return r}function Te(e){if(!e)return;let t=e=>{let t=1/0;if(!e)return null;for(let n=0;n<e.length;n++){let r=e[n];r<t&&(t=r)}return t},n=[];n[0]={content:t(e.fArray.filter(e=>e!==0))},e.fArrays&&Object.keys(e?.fArrays).forEach(r=>{n[0]={...n[0],[r]:e.fArrays[r].min??t(e.fArrays[r]?.values?.filter(e=>e!==0))}});let r=(i,a=1)=>{n[a]||(n[a]={}),Object.entries(i).forEach(([i,o])=>{o.forEach(o=>{if(!o)return;let s=t(o.fArray.filter(e=>e!==0));(!(i in n[a])||s<n[a][i])&&(n[a][i]=s),o.fArrays&&Object.keys(o.fArrays).forEach(r=>{(!(r in n[a])||s>n[a][r])&&(n[a][r]=s),n[a][r]=Math.min(n[a][r],e.fArrays[r].min??t(o.fArrays[r]?.values?.filter(e=>e!==0)))}),o.children&&r(o.children,a+1)})})};return e.children&&r(e.children),n}function Ee(e){if(!e)return;let t=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins,n=[];n.push(t);let r=(e,t=1)=>{let i=0;return t>=n.length&&n.push(1),Object.entries(e).forEach((e,a)=>{e[1].forEach(e=>{e&&(i=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins,i>n[t]&&(n[t]=i),e.children&&r(e.children,t+1))})}),n};return e.children&&r(e.children),n.push(1),n}function De(e,t,n){new r.Color(e.color.default.min).toArray(n,0),new r.Color(e.color.default.max).toArray(n,3);let i=1;e.color.layer.forEach(e=>{let t=i*6;new r.Color(e.min).toArray(n,t),new r.Color(e.max).toArray(n,t+3),i++}),e.color.set.forEach(e=>{let t=i*6;new r.Color(e.min).toArray(n,t),new r.Color(e.max).toArray(n,t+3),i++}),t.uniforms.colorPairs={value:n},t.uniformsNeedUpdate=!0}function Y(e,t,n,r,i,a){let o=((e,t,n)=>{let r=(e-t)/(n-t);return r>1&&(r=1),isNaN(r)||r===1/0?0:r})(t,n,r),s=0;return e.set[i]?s=1+e.layer.length+i:e.layer[a]&&(s=1+a),s+o}function X(e,t,n,r,i,a,o){if(!(1/e==-1/0||e<0))return o[0]=t[e],o[1]=t[e+1],o[2]=t[e+2],o[3]=n[e],o[4]=n[e+1],o[5]=n[e+2],o;let s=Math.abs(e),c=a===null?r[i]:r[i][a];return o[0]=c.pos[s],o[1]=c.pos[s+1],o[2]=c.pos[s+2],o[3]=c.scale[s],o[4]=c.scale[s+1],o[5]=c.scale[s+2],o}var Oe=e=>{if(!e)return!1;for(let t in e)if(t!==`content`&&Object.prototype.hasOwnProperty.call(e,t)&&e[t]&&typeof e[t]==`object`&&Object.keys(e[t]).length>0)return!0;return!1};function Z(e,t,n,r,i,a,o){let s=t.fXaxis.fNbins,c=t.fYaxis.fNbins,l=t.fZaxis.fNbins,u=0,d=0,f=new Float32Array((s*c*l-1)*3),p=new Float32Array((s*c*l-1)*3),m=new Float32Array(s*c*l-1),h=new Float32Array(s*c*l-1),g=new Float32Array(s*c*l-1),_=new Float32Array(6),v=new Float32Array(6),y=e=>{let t=x*3;f[t]=e[0],f[t+1]=e[1],f[t+2]=e[2],p[t]=e[3],p[t+1]=e[4],p[t+2]=e[5],m[x]=e[6],h[x]=e[7],g[x]=e[8]},b=(t,n,r,i)=>{X(t,f,p,e,r,i,_),X(n,f,p,e,r,i,v);let a=_[0]-_[3]*.5<v[0]-v[3]*.5?_[0]-_[3]*.5:v[0]-v[3]*.5,o=_[1]-_[4]*.5<v[1]-v[4]*.5?_[1]-_[4]*.5:v[1]-v[4]*.5,s=_[2]-_[5]*.5<v[2]-v[5]*.5?_[2]-_[5]*.5:v[2]-v[5]*.5,c=_[0]+_[3]*.5>v[0]+v[3]*.5?_[0]+_[3]*.5:v[0]+v[3]*.5,l=_[1]+_[4]*.5>v[1]+v[4]*.5?_[1]+_[4]*.5:v[1]+v[4]*.5,u=_[2]+_[5]*.5>v[2]+v[5]*.5?_[2]+_[5]*.5:v[2]+v[5]*.5,d=new Float32Array(9);return d[0]=(a+c)*.5,d[1]=(o+l)*.5,d[2]=(s+u)*.5,d[3]=c-a,d[4]=l-o,d[5]=u-s,d},x=0;for(let e=0;e<c;e++){for(let e=0;e<l;e++){let e=u+o,t=Array(s);for(let n=0;n<s;n++)t[n]=-n-e;for(;t.length>1;){let e=0,i=Math.floor(t.length/2);for(let o=0;o<i;o++){let i=t[e],o=t[e+1],s=b(i*3,o*3,n,r);t.splice(e,2,x),Q(s,a),s[6]=1/i==-1/0||i<0?i:g[i],s[7]=1/o==-1/0||o<0?o:g[o],s[8]=d,y(s),x+=1,d+=1,e+=1}}u+=s}let e=Array(l);for(let t=0;t<l;t++)e[t]=x-1-(l-1-t)*(s-1);for(;e.length>1;){let t=0,i=Math.floor(e.length/2);for(let o=0;o<i;o++){let i=e[t],o=e[t+1],s=b(i*3,o*3,n,r);e.splice(t,2,x),Q(s,a),s[6]=g[i],s[7]=g[o],s[8]=d,y(s),x+=1,d+=1,t+=1}}}let S=Array(c);for(let e=0;e<c;e++)S[e]=x-1-(c-1-e)*(s*l-1);for(;S.length>1;){let e=0,t=Math.floor(S.length/2);for(let i=0;i<t;i++){let t=S[e],i=S[e+1],o=b(t*3,i*3,n,r);S.splice(e,2,x),Q(o,a),o[6]=g[t],o[7]=g[i],o[8]=d,y(o),x+=1,d+=1,e+=1}}return{pos:f,scale:p,left:m,right:h}}function ke(e,t,n,r,i,a,o,s){let c=Array(e.length).fill().map(e=>[]);c[c.length-1]=Array.from({length:a.length},()=>[]),i===null?c[0]=[Z(e,t,n,null,a,o,0)]:(c[0]=Array(a.length),r.forEach(r=>c[0][a.indexOf(r)]=Z(e,t,n,a.indexOf(r),a,o,0)));let l=(t,n,i)=>{if(!t.children)return;let u=new V([t.fXaxis.fNbins,t.fYaxis.fNbins,t.fZaxis.fNbins]),d=t.fXaxis.fNbins*t.fYaxis.fNbins*t.fZaxis.fNbins,f=s.slice(1,n-1).reduce((e,t)=>e*t,s[1]),p=s[n];for(let m=0;m<d;m++){let d={x:u.getValueAt(0),y:u.getValueAt(1),z:u.getValueAt(2)};if(t?.children?.content){let r=t.children.content[t.getBin(d.x+1,d.y+1,d.z+1)];if(!r){if(u.increment()===!1)break;continue}c[n][m+i]=Z(e,r,n,null,a,o,(m+i)*p),l(r,n+1,(u.getIndex()+i)*f)}else Oe(t.children)&&r.forEach((r=>{let h=a.indexOf(r),g=(m+i)*p,_=!1;for(let t=g;t<g+s[n];t++)if(e[n][h].rendered[t]!==-1){_=!0;break}if(!_){c[n][h].push(null);return}let v=t.children[r][t.getBin(d.x+1,d.z+1,d.y+1)];v&&(c[n][h][m+i]=Z(e,v,n,h,a,o,(m+i)*p),l(v,n+1,(u.getIndex()+i)*f))}));if(u.increment()===!1)break}};return l(t,1,0),c}function Q(e,t){let n=t.elements,r=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]),i=Math.sqrt(n[4]*n[4]+n[5]*n[5]+n[6]*n[6]),a=Math.sqrt(n[8]*n[8]+n[9]*n[9]+n[10]*n[10]);e[0]=e[0]*r+n[12],e[1]=e[1]*i+n[13],e[2]=e[2]*a+n[14],e[3]*=r,e[4]*=i,e[5]*=a}var $=class{rootObj=void 0;origin=void 0;parentPath=[];path=void 0;title=void 0;range=[];isOnSet=null;isHistogramFilled=!0;constructor(e){this.rootObj=e,this.origin=this.rootObj,this.title=this.origin.fTitle,this.path=this.origin.fName}setOriginToChild(e,t,n){if(!e)return;let r=e.splice(0,1);if(this.origin?.children){if(this.origin.children?.content)this.parentPath.push({origin:this.origin,range:n.splice(0,1),bin:r}),this.origin=this.origin.children.content[r],this.isOnSet=null;else if(Object.keys(this.origin.children).includes(t)){if(this.parentPath.push({origin:this.origin,range:n.splice(0,1),bin:r}),!this.origin.children[t][r]){this.isHistogramFilled=!1,this.path+=`/empty`,this.origin=null;return}this.origin=this.origin.children[t][r],this.isOnSet=t}else{console.error(`Bad set or index specified.`);return}this.title=this.origin.fTitle,this.path=this.path+`/`+this.origin.fName,e.length>0&&this.setOriginToChild(e,t,n)}}getChildByPosition(e,t,n=this.origin){if(!e||e.length===0)return{...n};let r=e.splice(0,1)[0];return n?.children?n.children?.content?this.getChildByPosition(e,t,n.children.content[r]):Object.keys(n.children).includes(t)?this.getChildByPosition(e,t,n.children[t][r]):(console.error(`Bad set or index specified.`),null):{...n}}setOriginToParent(e=1){if(e<=0||this.parentPath.length===0)return;let t=this.path.lastIndexOf(`/`);this.path=this.path.slice(0,t);let n=this.parentPath.pop();n&&(this.origin=n.origin),this.title=this.origin.fTitle,this.setOriginToParent(e-1),this.isOnSet=null,this.isHistogramFilled=!0}},Ae=class{wireframe=void 0;instGeom=void 0;material=void 0;totalInstances=void 0;maxInstancesPerLayer=void 0;instancePositions=void 0;instanceScales=void 0;instanceColors=void 0;colorArray=void 0;configSub=void 0;stateSub=void 0;config=void 0;numOfavailableSets=void 0;visibility=!0;id=void 0;constructor(e,t,n,i){this.config=n,this.maxInstancesPerLayer=e,this.id=i;let a=new r.EdgesGeometry(new r.BoxGeometry(1,1,1));this.instGeom=new r.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=a.index;for(let e in a.attributes)this.instGeom.setAttribute(e,a.attributes[e]);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(`instancePosition`,new r.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute(`instanceScale`,new r.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute(`instanceColorIndex`,new r.InstancedBufferAttribute(this.instanceColors,1)),this.wireframe=new r.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,this.stateSub=v(this.id).getObservable().subscribe(e=>{this.numOfavailableSets=e.sets.length})}pushVisibleInstances(e,t,n){let i=this.wireframe.parent;i&&(i.remove(this.wireframe),this.instGeom.dispose());let a=this.config.display.start??0,o=this.config.display.end??e.length-1,s=[],c=e.length-1;{let t=(Array.isArray(e[c])?e[c][n]:e[c]).rendered,r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t[e]===-1?0:1;s[c]=r}for(let r=c-1;r>=0;r--){let i=(Array.isArray(e[r])?e[r][n]:e[r]).rendered,a=s[r+1],o=t[r+1]||0,c=new Uint8Array(i.length);for(let e=0;e<i.length;e++){if(i[e]!==-1){c[e]=1;continue}let t=e*o,n=t+o;for(let r=t;r<n;r++)if(a[r]){c[e]=1;break}}s[r]=c}let l=(e,t)=>e<a||e>o?!1:s[e][t]===1,u=(r,i)=>{let a=0,o=r,s=i;for(;o+1<e.length;){o++,s*=t[o];let i=e[o],c=Array.isArray(i)?i[n===-1?0:n]:i;for(let e=s;e<s+t[o];e++)if(c.rendered[e]!==-1){a=o-r;break}}return a},d=0;for(let t=0;t<e.length;t++){let n=e[t];if(!Array.isArray(n))for(let e=0;e<n.rendered.length;e++)l(t,e)&&d++}let f=new Float32Array(d*3),p=new Float32Array(d*3),m=new Float32Array(d),h=0;for(let t=0;t<e.length;t++){let r=e[t],i=this.getColorIndex(t,n);if(!Array.isArray(r)){for(let e=0;e<r.rendered.length;e++)if(l(t,e)){let n=u(t,e)*.05;f[h*3]=r.pos[e*3],f[h*3+1]=r.pos[e*3+1],f[h*3+2]=r.pos[e*3+2],p[h*3]=r.scale[e*3]+n,p[h*3+1]=r.scale[e*3+1]+n,p[h*3+2]=r.scale[e*3+2]+n,m[h++]=i}}}let g=new r.EdgesGeometry(new r.BoxGeometry(1,1,1));this.instGeom=new r.InstancedBufferGeometry,this.instGeom.instanceCount=d,this.instGeom.frustumCulled=!1,this.instGeom.index=g.index;let _=g.attributes;for(let e in _)this.instGeom.setAttribute(e,_[e]);this.instancePositions=f,this.instanceScales=p,this.instanceColors=m,this.instGeom.setAttribute(`instancePosition`,new r.InstancedBufferAttribute(f,3)),this.instGeom.setAttribute(`instanceScale`,new r.InstancedBufferAttribute(p,3)),this.instGeom.setAttribute(`instanceColorIndex`,new r.InstancedBufferAttribute(m,1)),this.wireframe=new r.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,i&&i.add(this.wireframe)}toggleVisibility(e,t,n){this.visibility=!this.visibility,this.visibility?this.pushVisibleInstances(e,t,n):this.clearWireframe()}dispose(){this.instancePositions=[],this.instanceScales=[],this.wireframe.parent.remove(this.wireframe),this.instGeom.dispose()}clearWireframe(){this.instancePositions=new Float32Array(3),this.instanceScales=new Float32Array(3),this.instanceColors=new Float32Array(1),this.instGeom.dispose(),this.instGeom.instanceCount=0}fillColorArray(){new r.Color(this.config.color.default).toArray(this.colorArray,0);let e=1;this.config.color.layer.map(e=>new r.Color(e)).forEach(t=>{let n=e*3;t.toArray(this.colorArray,n),e++}),this.config.color.set.map(e=>new r.Color(e)).forEach(t=>{let n=e*3;t.toArray(this.colorArray,n),e++}),this.material.uniforms.colorArray={value:this.colorArray},this.material.uniformsNeedUpdate=!0}createMaterial(){return new r.ShaderMaterial({vertexShader:`
|
|
37
37
|
attribute vec3 instancePosition;
|
|
38
38
|
attribute vec3 instanceScale;
|
|
39
39
|
attribute float instanceColorIndex;
|