@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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/{RCanvasPainter-DQGWienR.js → RCanvasPainter-BN1wz_jA.js} +1 -1
  3. package/dist/assets/RNTuple-B19bW6t4.js +1 -0
  4. package/dist/assets/{RPavePainter-CQHUOnSn.js → RPavePainter-BOw0-OFU.js} +1 -1
  5. package/dist/assets/{RTreeMapPainter-B2r2zCJG.js → RTreeMapPainter-DNojexp9.js} +1 -1
  6. package/dist/assets/{TASImagePainter-DRdiRLt1.js → TASImagePainter-BNJ5OAGP.js} +1 -1
  7. package/dist/assets/{TAnnotation3DPainter-BCJen6cS.js → TAnnotation3DPainter-BCGBhq-q.js} +1 -1
  8. package/dist/assets/{TArrowPainter-Dspl2Ikh.js → TArrowPainter-C7a0r3SV.js} +1 -1
  9. package/dist/assets/{TBoxPainter-BQEN4gj8.js → TBoxPainter-Djh43LYY.js} +1 -1
  10. package/dist/assets/{TEfficiencyPainter-TxRejkVD.js → TEfficiencyPainter-dXd5DL3h.js} +1 -1
  11. package/dist/assets/{TF1Painter-BuwSTmhs.js → TF1Painter-DwE8KsBp.js} +1 -1
  12. package/dist/assets/{TF2Painter-BTh6LWBk.js → TF2Painter-SGNNKiK5.js} +1 -1
  13. package/dist/assets/{TF3Painter-R5EVXlD4.js → TF3Painter-yaRyTX9u.js} +1 -1
  14. package/dist/assets/{TGaxisPainter-BJuDLLel.js → TGaxisPainter-DSiIbikC.js} +1 -1
  15. package/dist/assets/{TGraph2DPainter-aeM0xqgu.js → TGraph2DPainter-COqZBIPT.js} +1 -1
  16. package/dist/assets/{TGraphPainter-DLkx_1ES.js → TGraphPainter-Bp7xEbQz.js} +1 -1
  17. package/dist/assets/{TGraphPainter-CtqNpDiH.js → TGraphPainter-CurXuifu.js} +1 -1
  18. package/dist/assets/{TGraphPolarPainter-bMuBuvEZ.js → TGraphPolarPainter-u-FCb_Gb.js} +1 -1
  19. package/dist/assets/{TGraphTimePainter-D_1RHDMz.js → TGraphTimePainter-DDPwiVGX.js} +1 -1
  20. package/dist/assets/{TH1Painter-CMr7gXzd.js → TH1Painter-BXzutgI3.js} +1 -1
  21. package/dist/assets/{TH1Painter--tuoUZTH.js → TH1Painter-DyN-WKyv.js} +1 -1
  22. package/dist/assets/{TH2Painter-DHaL_lR_.js → TH2Painter-BpixRP4j.js} +1 -1
  23. package/dist/assets/{TH2Painter-BLfyBVB5.js → TH2Painter-DceuYQAL.js} +1 -1
  24. package/dist/assets/{TH3Painter-DLCndhZ0.js → TH3Painter-BA_W8tmJ.js} +1 -1
  25. package/dist/assets/{THStackPainter-B3TUpsVt.js → THStackPainter-BWLN_w9A.js} +1 -1
  26. package/dist/assets/{THistPainter-Df-RmCQH.js → THistPainter-B2S5BnuY.js} +1 -1
  27. package/dist/assets/{TLinePainter-RinEQkrM.js → TLinePainter-D8inyuoX.js} +1 -1
  28. package/dist/assets/{TMultiGraphPainter-BQyL8zWX.js → TMultiGraphPainter-DcwdyhOr.js} +1 -1
  29. package/dist/assets/{TPavePainter-Dx40jhkF.js → TPavePainter-1yngbgp8.js} +1 -1
  30. package/dist/assets/{TPiePainter-BaTIH6-e.js → TPiePainter-BgDv4srX.js} +1 -1
  31. package/dist/assets/{TPolyLinePainter-7_jf8MLI.js → TPolyLinePainter-BYlrAjCB.js} +1 -1
  32. package/dist/assets/{TPolyMarker3D-DYlLB9Ww.js → TPolyMarker3D-BaWOSDy6.js} +1 -1
  33. package/dist/assets/{TRatioPlotPainter-BvUop_Na.js → TRatioPlotPainter-CJgkL58z.js} +1 -1
  34. package/dist/assets/{TScatterPainter-CvLCMGW2.js → TScatterPainter-Bt11j8z8.js} +1 -1
  35. package/dist/assets/{TSplinePainter-DJPtQW6I.js → TSplinePainter-p6k_OB02.js} +1 -1
  36. package/dist/assets/{TTextPainter-BwCh-g5B.js → TTextPainter-B26aOYGd.js} +1 -1
  37. package/dist/assets/{TTree-CE4EQRMu.js → TTree-BtFtnLeD.js} +1 -1
  38. package/dist/assets/{TWebPaintingPainter-CexNsDDp.js → TWebPaintingPainter-CZ6lo-7N.js} +1 -1
  39. package/dist/assets/{draw3d-BPJMZpwL.js → draw3d-ejHvJRmG.js} +1 -1
  40. package/dist/assets/{func-C1jNXIub.js → func-C6FX2eN2.js} +1 -1
  41. package/dist/assets/{hist3d-DCmav5Ga.js → hist3d-D9VevdP6.js} +1 -1
  42. package/dist/assets/{latex3d-ITrfFgp8.js → latex3d-8Hbnfz6c.js} +1 -1
  43. package/dist/assets/{main-CvPDcTGr.js → main-DwRPe_ox.js} +191 -191
  44. package/dist/assets/{more-CGvLPt4r.js → more-64laEJ4X.js} +1 -1
  45. package/dist/assets/{ndmvr-aframe-core-Cw91_9_Y.js → ndmvr-aframe-core-DEHQ38JB.js} +4 -4
  46. package/dist/assets/{rntuple-BCwqxNeP.js → rntuple-i8TaG-6V.js} +1 -1
  47. package/dist/assets/{stress-Ihg3ljmc.js → stress-KrXoDujC.js} +1 -1
  48. package/dist/assets/{v7more-H3D-KQGQ.js → v7more-C-UZAxz1.js} +1 -1
  49. package/dist/docs/components/configuration/configuration/index.html +243 -238
  50. package/dist/docs/components/tutorial/canvas/canvas/index.html +1 -1
  51. package/dist/docs/components/tutorial/configurationChapter/configuration-chapter/index.html +1 -1
  52. package/dist/docs/components/tutorial/firstVisualization/first-visualization/index.html +1 -1
  53. package/dist/docs/components/tutorial/interactions/interactions/index.html +1 -1
  54. package/dist/docs/downloads/canvas.zip +0 -0
  55. package/dist/docs/downloads/configuration.zip +0 -0
  56. package/dist/docs/downloads/first-visualization.zip +0 -0
  57. package/dist/docs/downloads/interactions.zip +0 -0
  58. package/dist/docs/index.html +1 -1
  59. package/dist/docs/search/search_index.json +1 -1
  60. package/dist/docs/sitemap.xml.gz +0 -0
  61. package/dist/index.es.js +962 -953
  62. package/dist/index.html +2 -2
  63. package/dist/index.umd.js +10 -10
  64. package/dist/stress.html +2 -2
  65. package/package.json +1 -1
  66. package/dist/assets/RNTuple-L4uyxl3s.js +0 -1
package/dist/index.umd.js CHANGED
@@ -1,7 +1,7 @@
1
- (function(T,D){typeof exports=="object"&&typeof module<"u"?D(exports,require("rxjs"),require("jsroot"),require("three")):typeof define=="function"&&define.amd?define(["exports","rxjs","jsroot","three"],D):(T=typeof globalThis<"u"?globalThis:T||self,D(T.ndmvrAframe={},T.rxjs,T.JSROOT,T.THREE))})(this,(function(T,D,F,g){"use strict";class R{constructor(t,e,A,s){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()}connect(){if(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN))return console.log("WebSocket already connecting/connected to: "+this.url),this;this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.intentionalDisconnect=!1,this.connecting=!0,console.log("Trying to establish websocket connection on address: "+this.url);try{this.ws=new WebSocket(this.url)}catch(t){return console.error("Failed to create WebSocket:",t),this.connecting=!1,this.emitConnectionEvent("error",{error:t}),this}return this.ws.onopen=()=>{console.log("Websocket connection established on address: "+this.url),this.connected=!0,this.connecting=!1,this.reconnectAttempts=0,this.timeFlag=!1,this.emitConnectionEvent("connected",{url:this.url})},this.ws.onmessage=t=>{this.channel.next(t.data)},this.ws.onerror=t=>{console.error("WebSocket error on "+this.url+":",t),this.connecting=!1,this.timeFlag||(this.initTime=Date.now(),this.timeFlag=!0),this.emitConnectionEvent("error",{url:this.url,event:t}),!this.intentionalDisconnect&&this.shouldReconnect()&&this.scheduleReconnect()},this.ws.onclose=t=>{console.log("WebSocket closed on "+this.url+", code: "+t.code+", reason: "+t.reason);const e=this.connected;this.connected=!1,this.connecting=!1,this.ws=null,this.timeFlag||(this.initTime=Date.now(),this.timeFlag=!0),this.emitConnectionEvent("closed",{url:this.url,code:t.code,reason:t.reason,wasConnected:e}),!this.intentionalDisconnect&&this.shouldReconnect()&&this.scheduleReconnect()},this}shouldReconnect(){const t=this.initTime+this.timeout<Date.now(),e=this.reconnectAttempts>=this.maxReconnectAttempts;return!t&&!e}scheduleReconnect(){if(this.reconnectTimeout)return;this.reconnectAttempts++;const t=Math.min(500*this.reconnectAttempts,5e3);console.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${t}ms for ${this.url}`),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=null,this.intentionalDisconnect||this.connect()},t)}disconnect(){this.intentionalDisconnect=!0,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.ws&&((this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)&&this.ws.close(1e3,"Client disconnect"),this.ws=null),this.connected=!1,this.connecting=!1,this.reconnectAttempts=0}isConnected(){return this.connected&&this.ws&&this.ws.readyState===WebSocket.OPEN}isConnecting(){return this.connecting||this.ws&&this.ws.readyState===WebSocket.CONNECTING}getState(){if(!this.ws)return"CLOSED";switch(this.ws.readyState){case WebSocket.CONNECTING:return"CONNECTING";case WebSocket.OPEN:return"OPEN";case WebSocket.CLOSING:return"CLOSING";case WebSocket.CLOSED:return"CLOSED";default:return"UNKNOWN"}}emitConnectionEvent(t,e){const A={_brokerEvent:!0,type:t,url:this.url,timestamp:Date.now(),...e};this.channel.next(JSON.stringify(A))}send(t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.warn("Cannot send: WebSocket not open");return}this.ws.send(t)}subscribe(t){return this.channel.subscribe({next:A=>t(A)})}unsubscribe(t){t.unsubscribe()}}let K;class Gt{#t;#e;constructor(){this.#t=new D.ReplaySubject(1),this.#e=new Map}createWsFromParams=t=>{const e=t.get("autoConnect")==="true",A=Number(t.get("timeout"));t.getAll("ws").forEach(s=>{this.createWs(s,e,A)})};createWs=(t,e,A)=>{this.#e.has(t)&&this.#e.delete(t);const s=new R(t,e,this.#t,A);this.#e.set(t,s)};getBrokerByUrl=(t,e)=>{let A=this.#e.get(t);return A?e&&!A.isConnected()&&!A.isConnecting()&&A.connect():(A=new R(t,e,this.#t),this.#e.set(t,A)),A};connectWsByUrl=t=>{let e=this.#e.get(t);return e||(e=new R(t,!0,this.#t),this.#e.set(t,e)),e.connect(),e};disconnectWsByUrl=t=>{if(t){const e=this.#e.get(t);e&&e.disconnect()}else this.#e.forEach(e=>{e.disconnect()})};removeBrokerByUrl=t=>{const e=this.#e.get(t);e&&(e.disconnect(),this.#e.delete(t))};getBrokerStatus=t=>{const e=this.#e.get(t);return e?{exists:!0,connected:e.isConnected(),connecting:e.isConnecting(),state:e.getState(),url:e.url}:{exists:!1}};getAllBrokersStatus=()=>{const t={};return this.#e.forEach((e,A)=>{t[A]={connected:e.isConnected(),connecting:e.isConnecting(),state:e.getState()}}),t};getSubject=()=>this.#t}const wt=()=>(K||(K=new Gt),K),zt=()=>{wt().createWsFromParams(new URL(window.location.href).searchParams)},Tt=async o=>{try{const t=await fetch(o);if(!t.ok)throw new Error(`Response status: ${t.status}`);return t.json()}catch(t){throw t}};let _;class Dt{#t;constructor(){this.#t=new D.Subject}getObservable(){return this.#t.asObservable()}next(t){this.#t.next(t)}}const pt=()=>(_||(_=new Dt),_);let $;class Nt{#t;constructor(){this.#t=new D.BehaviorSubject({inputDevice:"keyboard"})}getObservable(){return this.#t.asObservable()}next(t){let e=this.#t.getValue();t.inputDevice&&(e.inputDevice=t.inputDevice),this.#t.next(t)}}const tt=()=>($||($=new Nt),$);let et=new Map;class jt{#t;constructor(){this.#t=new D.BehaviorSubject({sets:[],selectedSet:[],arrays:["content"],selectedArray:"content",minMaxValue:[]})}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){this.#t.next(t)}}const Y=o=>{if(!o)throw new Error("StateSubject id is undefined");return et.get(o)||et.set(o,new jt),et.get(o)};let At;class Ot{#t;constructor(){this.#t=new D.ReplaySubject}addFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:"add",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}setFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{this.#t.next({flag:"removeAll",target:A.target})}),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:"add",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}removeFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:A.event?"remove":"removeAll",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}getObservable(){return this.#t.asObservable()}}const st=()=>(At||(At=new Ot),At);class St{#t;#e;#s;#A;constructor(t){this.#t=t,this.#e=this.open(t)}static async open(t){return F.openFile(t)}async getHistogram(t,e,A){if(t===0)return this.#s.readObject("hMap");{let s=this.#A.reduce((n,r)=>n*r,1);for(let n=0;n<=t;n++)s/=this.#A[n]}}static async parseFile(t){const e=await this.open(t);await this.computeMaxInstancesPerLayer(e)}static async computeMaxInstancesPerLayer(t){if(!t)return;const e=await t.readObject("hMap");e.children={};const A=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins;let s=[];s.push(A);const n=async(i,a)=>{for(const c of Object.keys(e.children))for(let h=0;h<i.length;h+=100){const f=[],B=Math.min(h+100,i.length);for(let d=h;d<B;d++)f.push(a.readObject(`content/${i[d].fName}/${c}`));console.log(`Processing batch: ${h} to ${B-1} (${f.length} items)`),await Promise.all(f)}return console.log("done"),i.forEach(c=>{}),s},r=await t.readObject("content");return(await t.readObject(`content/${r.fKeys[0].fName}`)).fKeys.forEach(i=>{e.children[i.fName]=[]}),console.log(e),n(r.fKeys,t),s}}const Ut="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs0AAAKSCAYAAAApl+ajAAAIHHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBhZ2VudCUzRCUyMk1vemlsbGElMkY1LjAlMjAoV2luZG93cyUyME5UJTIwMTAuMCUzQiUyMFdpbjY0JTNCJTIweDY0JTNCJTIwcnYlM0ExNDcuMCklMjBHZWNrbyUyRjIwMTAwMTAxJTIwRmlyZWZveCUyRjE0Ny4wJTIyJTIwdmVyc2lvbiUzRCUyMjI5LjMuNCUyMiUyMHNjYWxlJTNEJTIyMSUyMiUyMGJvcmRlciUzRCUyMjAlMjIlM0UlMEElMjAlMjAlM0NkaWFncmFtJTIwaWQlM0QlMjJXODNfeE5jT2djZHpkOWl4aTEzSiUyMiUyMG5hbWUlM0QlMjJQYWdlLTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjE0MjYlMjIlMjBkeSUzRCUyMjc3OSUyMiUyMGdyaWQlM0QlMjIxJTIyJTIwZ3JpZFNpemUlM0QlMjIxMCUyMiUyMGd1aWRlcyUzRCUyMjElMjIlMjB0b29sdGlwcyUzRCUyMjElMjIlMjBjb25uZWN0JTNEJTIyMSUyMiUyMGFycm93cyUzRCUyMjElMjIlMjBmb2xkJTNEJTIyMSUyMiUyMHBhZ2UlM0QlMjIxJTIyJTIwcGFnZVNjYWxlJTNEJTIyMSUyMiUyMHBhZ2VXaWR0aCUzRCUyMjg1MCUyMiUyMHBhZ2VIZWlnaHQlM0QlMjIxMTAwJTIyJTIwbWF0aCUzRCUyMjAlMjIlMjBzaGFkb3clM0QlMjIwJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTNDcm9vdCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjAlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0Rib3R0b20lM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCaHRtbCUzRDElM0JzaGFwZSUzRG14Z3JhcGguYmFzaWMueCUzQmZpbGxDb2xvciUzRCUyM0VDNTE1MSUzQnN0cm9rZUNvbG9yJTNEJTIzNDEwMDAwJTNCJTIyJTIwdmFsdWUlM0QlMjIlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMGhlaWdodCUzRCUyMjU5MCUyMiUyMHdpZHRoJTNEJTIyNTkwJTIyJTIweCUzRCUyMjEyMCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTIlMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ0ZXh0JTNCaHRtbCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQnN0cm9rZUNvbG9yJTNEbm9uZSUzQmZpbGxDb2xvciUzRG5vbmUlM0JhbGlnbiUzRGNlbnRlciUzQnZlcnRpY2FsQWxpZ24lM0RtaWRkbGUlM0Jyb3VuZGVkJTNEMCUzQiUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0Jmb250JTIwZmFjZSUzRCUyNnF1b3QlM0JMdWNpZGElMjBDb25zb2xlJTI2cXVvdCUzQiUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDUwcHglM0IlMjZxdW90JTNCJTI2Z3QlM0IlMjZsdCUzQmIlMjZndCUzQkhpc3RvZ3JhbSUyMG5vdCUyMGZpbGxlZCUyNmx0JTNCJTJGYiUyNmd0JTNCJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjIlMjB2ZXJ0ZXglM0QlMjIx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";function Pt(o,t,e,{scale:A,padding:s,origin:n}){const r=o.config??{};r.environment||(r.environment={}),r.environment.histogramPads||(r.environment.histogramPads=[]);const u=r.environment.histogramPads;let i=1,a=t.length;if(typeof e=="string"){const f=e.match(/^grid(\d+)x(\d+)$/i);f?(i=parseInt(f[1],10),a=parseInt(f[2],10)):(e==="simple"||e==="flex")&&(i=1,a=t.length)}i*a<t.length&&(a=Math.ceil(Math.sqrt(t.length)),i=Math.ceil(t.length/a));let c=0,h=0;return t.forEach(f=>{const B=n.x+h*(A.x+s.x)+A.x/2,d=n.y+(i-1-c)*(A.y+s.y)+A.y/2,m=n.z-A.z/2;u.push({id:f,position:{x:B,y:d,z:m},scale:{...A},padding:{...s},origin:{...n},grid:{row:c,col:h,rows:i,cols:a,disp_kind:e}}),h++,h>=a&&(h=0,c++)}),o}function Yt(o){const t={resetHistogram:"r",goToPreviousLayer:"z",hideOutlines:"o"};o.bindings=o.bindings||{};for(const e in t)o.bindings.hasOwnProperty(e)||(o.bindings[e]=t[e]);return o}function it(o,t=null){const e=typeof o=="string"?JSON.parse(o):o;function A(i){if(Array.isArray(i))return i;if(i&&typeof i=="object"&&"type"in i){const a=i.prefix??"histogram",l=i.type.match(/grid(\d+)x(\d+)x(\d+)/);if(!l)return[i];const c=+l[1],h=+l[2],f=+l[3],B=i.scale||{x:1,y:1,z:1},d=i.padding||{x:0,y:0,z:0},m=i.origin||{x:0,y:0,z:0},w=new g.Vector3((B.x-d.x*(c-1))/c,(B.y-d.y*(h-1))/h,(B.z-d.z*(f-1))/f),b=[];let C=1;for(let x=0;x<c;x++)for(let y=0;y<h;y++)for(let p=0;p<f;p++)b.push({id:`${a}${C++}`,position:new g.Vector3(m.x+x*(w.x+d.x)+w.x/2,m.y+y*(w.y+d.y)+w.y/2,m.z-p*(w.z+d.z)-w.z/2),scale:w.clone()});return b}return[i]}function s(i){const a={};for(const l in i){const c=i[l];c&&typeof c=="object"&&"x"in c&&"y"in c&&"z"in c&&Object.keys(c).length===3?a[l]=new g.Vector3(c.x,c.y,c.z):typeof c=="string"&&c.startsWith("0x")?a[l]=new g.Color(parseInt(c)):c&&typeof c=="object"&&!Array.isArray(c)?a[l]=s(c):a[l]=c}return a}function n(i,a=null,l=null,c=!1){if(Array.isArray(i))return c?i:i.map(h=>n(h,a,i,!1));if(i&&typeof i=="object"){if(a==="histogramPads")return A(i).map(B=>s(B));if("x"in i&&"y"in i&&"z"in i&&Object.keys(i).length===3)return new g.Vector3(i.x,i.y,i.z);const h={};for(const f in i){const B=f==="histogramPads";h[f]=n(i[f],f,i,B)}return"target"in h||(h.target={entity:"*",id:"*"}),h}return typeof i=="string"&&i.startsWith("0x")?new g.Color(parseInt(i)):i}function r(i,a){if(!i||Array.isArray(a)||!a||typeof a!="object"||a instanceof g.Vector3||a instanceof g.Color)return a;const l={...i};for(const c in a){const h=i[c],f=a[c];h&&typeof h=="object"&&!Array.isArray(h)&&!(h instanceof g.Vector3)&&!(h instanceof g.Color)&&f&&typeof f=="object"&&!Array.isArray(f)&&!(f instanceof g.Vector3)&&!(f instanceof g.Color)?l[c]=r(h,f):l[c]=f}return l}const u=n(e);return r(t,u)}function Ht(o){for(const t in o)if(Object.prototype.hasOwnProperty.call(o,t))return!1;return!0}function Ft(o,t){return["scale","padding","position"].every(A=>o[A]?.x===t[A]?.x&&o[A]?.y===t[A]?.y&&o[A]?.z===t[A]?.z)}function Wt(o,t){const e=new g.TextureLoader().load(Ut);e.colorSpace=g.SRGBColorSpace;const A=new g.SpriteMaterial({map:e,transparent:!0}),s=new g.Sprite(A);return s.scale.set(...o.scale),s.position.set(...o.position),s.raycast=n=>{n._triggerSource==="shiftmousedbclick"&&t()},s}class Xt{#t;constructor(t){this.#t=F.parse(t)}static async parseJson(t){const e=F.parse(t),A=s=>{s&&typeof s=="object"&&(s.children&&Ht(s.children)?delete s.children:s.children&&Object.values(s.children).forEach(n=>{Array.isArray(n)&&n.forEach(r=>A(r))}))};return A(e),e}computeMaxInstancesPerLayer(){if(!this.#t)return;const t=this.#t.fXaxis.fNbins*this.#t.fYaxis.fNbins*this.#t.fZaxis.fNbins;let e=[];e.push(t);const A=(s,n=1)=>{let r=0;return n>=e.length&&e.push(0),Object.entries(s).forEach((u,i)=>{u[1].forEach(a=>{a&&(r=a.fXaxis.fNbins*a.fYaxis.fNbins*a.fZaxis.fNbins,r>e[n]&&(e[n]=r),a.children&&A(a.children,n+1))})}),e};return A(this.#t.children),Promise.resolve(e)}}let nt;class Vt{#t=new Map;getStream(t){return this.#t.has(t)||this.#t.set(t,new D.ReplaySubject(1)),this.#t.get(t).asObservable()}async next(t){if(!t.id)throw new Error("Missing id in event");if(typeof t.obj=="string")t.obj=await St.parseFile(t.obj);else if(typeof t.obj=="object")t.obj=await Xt.parseJson(t.obj),t.opts=t.opts||{},t.opts.config=it(t.opts.config);else throw new Error("Unsupported data type");this.#t.has(t.id)||this.#t.set(t.id,new D.ReplaySubject(1)),this.#t.get(t.id).next(t)}}const Jt=()=>(nt||(nt=new Vt),nt);let rt;class Lt{#t;constructor(){this.#t=new D.ReplaySubject(1)}getObservable(){return this.#t.asObservable()}next(t){this.#t.next(t)}}const ot=()=>(rt||(rt=new Lt),rt),kt={config:{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:.1,max:1},layer:[]},sets:{scale:{maximum:"relative"}},TH1ZScale:{default:.8,layer:[1,1,1,1],set:.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"}}};let at;class Zt{#t;constructor(){this.#t=new D.BehaviorSubject(it(kt,{}))}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){const e=it(t,this.#t.getValue());return this.#t.next(e),e}appendPads(t,e,A){const s=Pt(this.#t.getValue(),t,e,A);this.#t.next(s)}mergeHistogramConfig(t,e=this.#t.value.config.histogram){if(t==null)return e;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return t;const A=n=>Array.isArray(n)||n instanceof g.Color||n instanceof g.Vector3||n&&n.isColor===!0||n&&n.isVector3===!0;if(A(e))return A(t)?t:e;const s={...e};for(const n in t)t.hasOwnProperty(n)&&t[n]!==void 0&&(A(t[n])||A(s[n])?s[n]=t[n]:typeof t[n]=="object"&&t[n]!==null&&typeof s[n]=="object"&&s[n]!==null?s[n]=this.mergeHistogramConfig(t[n],s[n]):s[n]=t[n]);return s}}const W=()=>(at||(at=new Zt),at);let ct;class qt{#t;constructor(){this.#t=new D.ReplaySubject(1)}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){this.#t.next(t)}}const lt=()=>(ct||(ct=new qt),ct);let ht;class Rt{#t;#e;constructor(){this.#t=document.createElement("a-entity"),this.#t.id="cameraRig",this.#t.setAttribute("position","0 1.6 0"),this.#t.innerHTML=`
1
+ (function(T,D){typeof exports=="object"&&typeof module<"u"?D(exports,require("rxjs"),require("jsroot"),require("three")):typeof define=="function"&&define.amd?define(["exports","rxjs","jsroot","three"],D):(T=typeof globalThis<"u"?globalThis:T||self,D(T.ndmvrAframe={},T.rxjs,T.JSROOT,T.THREE))})(this,(function(T,D,W,d){"use strict";class K{constructor(t,e,A,s){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()}connect(){if(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN))return console.log("WebSocket already connecting/connected to: "+this.url),this;this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.intentionalDisconnect=!1,this.connecting=!0,console.log("Trying to establish websocket connection on address: "+this.url);try{this.ws=new WebSocket(this.url)}catch(t){return console.error("Failed to create WebSocket:",t),this.connecting=!1,this.emitConnectionEvent("error",{error:t}),this}return this.ws.onopen=()=>{console.log("Websocket connection established on address: "+this.url),this.connected=!0,this.connecting=!1,this.reconnectAttempts=0,this.timeFlag=!1,this.emitConnectionEvent("connected",{url:this.url})},this.ws.onmessage=t=>{this.channel.next(t.data)},this.ws.onerror=t=>{console.error("WebSocket error on "+this.url+":",t),this.connecting=!1,this.timeFlag||(this.initTime=Date.now(),this.timeFlag=!0),this.emitConnectionEvent("error",{url:this.url,event:t}),!this.intentionalDisconnect&&this.shouldReconnect()&&this.scheduleReconnect()},this.ws.onclose=t=>{console.log("WebSocket closed on "+this.url+", code: "+t.code+", reason: "+t.reason);const e=this.connected;this.connected=!1,this.connecting=!1,this.ws=null,this.timeFlag||(this.initTime=Date.now(),this.timeFlag=!0),this.emitConnectionEvent("closed",{url:this.url,code:t.code,reason:t.reason,wasConnected:e}),!this.intentionalDisconnect&&this.shouldReconnect()&&this.scheduleReconnect()},this}shouldReconnect(){const t=this.initTime+this.timeout<Date.now(),e=this.reconnectAttempts>=this.maxReconnectAttempts;return!t&&!e}scheduleReconnect(){if(this.reconnectTimeout)return;this.reconnectAttempts++;const t=Math.min(500*this.reconnectAttempts,5e3);console.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${t}ms for ${this.url}`),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=null,this.intentionalDisconnect||this.connect()},t)}disconnect(){this.intentionalDisconnect=!0,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.ws&&((this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)&&this.ws.close(1e3,"Client disconnect"),this.ws=null),this.connected=!1,this.connecting=!1,this.reconnectAttempts=0}isConnected(){return this.connected&&this.ws&&this.ws.readyState===WebSocket.OPEN}isConnecting(){return this.connecting||this.ws&&this.ws.readyState===WebSocket.CONNECTING}getState(){if(!this.ws)return"CLOSED";switch(this.ws.readyState){case WebSocket.CONNECTING:return"CONNECTING";case WebSocket.OPEN:return"OPEN";case WebSocket.CLOSING:return"CLOSING";case WebSocket.CLOSED:return"CLOSED";default:return"UNKNOWN"}}emitConnectionEvent(t,e){const A={_brokerEvent:!0,type:t,url:this.url,timestamp:Date.now(),...e};this.channel.next(JSON.stringify(A))}send(t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.warn("Cannot send: WebSocket not open");return}this.ws.send(t)}subscribe(t){return this.channel.subscribe({next:A=>t(A)})}unsubscribe(t){t.unsubscribe()}}let $;class zt{#t;#e;constructor(){this.#t=new D.ReplaySubject(1),this.#e=new Map}createWsFromParams=t=>{const e=t.get("autoConnect")==="true",A=Number(t.get("timeout"));t.getAll("ws").forEach(s=>{this.createWs(s,e,A)})};createWs=(t,e,A)=>{this.#e.has(t)&&this.#e.delete(t);const s=new K(t,e,this.#t,A);this.#e.set(t,s)};getBrokerByUrl=(t,e)=>{let A=this.#e.get(t);return A?e&&!A.isConnected()&&!A.isConnecting()&&A.connect():(A=new K(t,e,this.#t),this.#e.set(t,A)),A};connectWsByUrl=t=>{let e=this.#e.get(t);return e||(e=new K(t,!0,this.#t),this.#e.set(t,e)),e.connect(),e};disconnectWsByUrl=t=>{if(t){const e=this.#e.get(t);e&&e.disconnect()}else this.#e.forEach(e=>{e.disconnect()})};removeBrokerByUrl=t=>{const e=this.#e.get(t);e&&(e.disconnect(),this.#e.delete(t))};getBrokerStatus=t=>{const e=this.#e.get(t);return e?{exists:!0,connected:e.isConnected(),connecting:e.isConnecting(),state:e.getState(),url:e.url}:{exists:!1}};getAllBrokersStatus=()=>{const t={};return this.#e.forEach((e,A)=>{t[A]={connected:e.isConnected(),connecting:e.isConnecting(),state:e.getState()}}),t};getSubject=()=>this.#t}const pt=()=>($||($=new zt),$),Tt=()=>{pt().createWsFromParams(new URL(window.location.href).searchParams)},Dt=async a=>{try{const t=await fetch(a);if(!t.ok)throw new Error(`Response status: ${t.status}`);return t.json()}catch(t){throw t}};let _;class Nt{#t;constructor(){this.#t=new D.Subject}getObservable(){return this.#t.asObservable()}next(t){this.#t.next(t)}}const bt=()=>(_||(_=new Nt),_);let tt;class jt{#t;constructor(){this.#t=new D.BehaviorSubject({inputDevice:"keyboard"})}getObservable(){return this.#t.asObservable()}next(t){let e=this.#t.getValue();t.inputDevice&&(e.inputDevice=t.inputDevice),this.#t.next(t)}}const et=()=>(tt||(tt=new jt),tt);let At=new Map;class Ot{#t;constructor(){this.#t=new D.BehaviorSubject({sets:[],selectedSet:[],arrays:["content"],selectedArray:"content",minMaxValue:[]})}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){this.#t.next(t)}}const H=a=>{if(!a)throw new Error("StateSubject id is undefined");return At.get(a)||At.set(a,new Ot),At.get(a)};let st;class Pt{#t;constructor(){this.#t=new D.ReplaySubject}addFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:"add",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}setFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{this.#t.next({flag:"removeAll",target:A.target})}),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:"add",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}removeFunctions(t){if(!t)return;let e;t instanceof Array?e=t:e=Array.of(t),e.forEach(A=>{let s=A.target.id;s instanceof Array||(s=Array.of(s)),this.#t.next({flag:A.event?"remove":"removeAll",target:{entity:A.target.entity,id:s},event:A.event,function:A.function})})}getObservable(){return this.#t.asObservable()}}const it=()=>(st||(st=new Pt),st);class St{#t;#e;#s;#A;constructor(t){this.#t=t,this.#e=this.open(t)}static async open(t){return W.openFile(t)}async getHistogram(t,e,A){if(t===0)return this.#s.readObject("hMap");{let s=this.#A.reduce((i,r)=>i*r,1);for(let i=0;i<=t;i++)s/=this.#A[i]}}static async parseFile(t){const e=await this.open(t);await this.computeMaxInstancesPerLayer(e)}static async computeMaxInstancesPerLayer(t){if(!t)return;const e=await t.readObject("hMap");e.children={};const A=e.fXaxis.fNbins*e.fYaxis.fNbins*e.fZaxis.fNbins;let s=[];s.push(A);const i=async(n,o)=>{for(const l of Object.keys(e.children))for(let h=0;h<n.length;h+=100){const f=[],w=Math.min(h+100,n.length);for(let g=h;g<w;g++)f.push(o.readObject(`content/${n[g].fName}/${l}`));console.log(`Processing batch: ${h} to ${w-1} (${f.length} items)`),await Promise.all(f)}return console.log("done"),n.forEach(l=>{}),s},r=await t.readObject("content");return(await t.readObject(`content/${r.fKeys[0].fName}`)).fKeys.forEach(n=>{e.children[n.fName]=[]}),console.log(e),i(r.fKeys,t),s}}const Ut="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs0AAAKSCAYAAAApl+ajAAAIHHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBhZ2VudCUzRCUyMk1vemlsbGElMkY1LjAlMjAoV2luZG93cyUyME5UJTIwMTAuMCUzQiUyMFdpbjY0JTNCJTIweDY0JTNCJTIwcnYlM0ExNDcuMCklMjBHZWNrbyUyRjIwMTAwMTAxJTIwRmlyZWZveCUyRjE0Ny4wJTIyJTIwdmVyc2lvbiUzRCUyMjI5LjMuNCUyMiUyMHNjYWxlJTNEJTIyMSUyMiUyMGJvcmRlciUzRCUyMjAlMjIlM0UlMEElMjAlMjAlM0NkaWFncmFtJTIwaWQlM0QlMjJXODNfeE5jT2djZHpkOWl4aTEzSiUyMiUyMG5hbWUlM0QlMjJQYWdlLTIlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NteEdyYXBoTW9kZWwlMjBkeCUzRCUyMjE0MjYlMjIlMjBkeSUzRCUyMjc3OSUyMiUyMGdyaWQlM0QlMjIxJTIyJTIwZ3JpZFNpemUlM0QlMjIxMCUyMiUyMGd1aWRlcyUzRCUyMjElMjIlMjB0b29sdGlwcyUzRCUyMjElMjIlMjBjb25uZWN0JTNEJTIyMSUyMiUyMGFycm93cyUzRCUyMjElMjIlMjBmb2xkJTNEJTIyMSUyMiUyMHBhZ2UlM0QlMjIxJTIyJTIwcGFnZVNjYWxlJTNEJTIyMSUyMiUyMHBhZ2VXaWR0aCUzRCUyMjg1MCUyMiUyMHBhZ2VIZWlnaHQlM0QlMjIxMTAwJTIyJTIwbWF0aCUzRCUyMjAlMjIlMjBzaGFkb3clM0QlMjIwJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTNDcm9vdCUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMCUyMiUyMCUyRiUzRSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUzQ214Q2VsbCUyMGlkJTNEJTIyMSUyMiUyMHBhcmVudCUzRCUyMjAlMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTElMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ2ZXJ0aWNhbExhYmVsUG9zaXRpb24lM0Rib3R0b20lM0J2ZXJ0aWNhbEFsaWduJTNEdG9wJTNCaHRtbCUzRDElM0JzaGFwZSUzRG14Z3JhcGguYmFzaWMueCUzQmZpbGxDb2xvciUzRCUyM0VDNTE1MSUzQnN0cm9rZUNvbG9yJTNEJTIzNDEwMDAwJTNCJTIyJTIwdmFsdWUlM0QlMjIlMjIlMjB2ZXJ0ZXglM0QlMjIxJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNDbXhHZW9tZXRyeSUyMGhlaWdodCUzRCUyMjU5MCUyMiUyMHdpZHRoJTNEJTIyNTkwJTIyJTIweCUzRCUyMjEyMCUyMiUyMGFzJTNEJTIyZ2VvbWV0cnklMjIlMjAlMkYlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0MlMkZteENlbGwlM0UlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlM0NteENlbGwlMjBpZCUzRCUyMlVuNXRYNmJId2UtUm42VVZDLXlkLTIlMjIlMjBwYXJlbnQlM0QlMjIxJTIyJTIwc3R5bGUlM0QlMjJ0ZXh0JTNCaHRtbCUzRDElM0J3aGl0ZVNwYWNlJTNEd3JhcCUzQnN0cm9rZUNvbG9yJTNEbm9uZSUzQmZpbGxDb2xvciUzRG5vbmUlM0JhbGlnbiUzRGNlbnRlciUzQnZlcnRpY2FsQWxpZ24lM0RtaWRkbGUlM0Jyb3VuZGVkJTNEMCUzQiUyMiUyMHZhbHVlJTNEJTIyJTI2bHQlM0Jmb250JTIwZmFjZSUzRCUyNnF1b3QlM0JMdWNpZGElMjBDb25zb2xlJTI2cXVvdCUzQiUyMHN0eWxlJTNEJTI2cXVvdCUzQmZvbnQtc2l6ZSUzQSUyMDUwcHglM0IlMjZxdW90JTNCJTI2Z3QlM0IlMjZsdCUzQmIlMjZndCUzQkhpc3RvZ3JhbSUyMG5vdCUyMGZpbGxlZCUyNmx0JTNCJTJGYiUyNmd0JTNCJTI2bHQlM0IlMkZmb250JTI2Z3QlM0IlMjIlMjB2ZXJ0ZXglM0QlMjIx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";function Yt(a,t,e,{scale:A,padding:s,origin:i}){const r=a.config??{};r.environment||(r.environment={}),r.environment.histogramPads||(r.environment.histogramPads=[]);const u=r.environment.histogramPads;let n=1,o=t.length;if(typeof e=="string"){const f=e.match(/^grid(\d+)x(\d+)$/i);f?(n=parseInt(f[1],10),o=parseInt(f[2],10)):(e==="simple"||e==="flex")&&(n=1,o=t.length)}n*o<t.length&&(o=Math.ceil(Math.sqrt(t.length)),n=Math.ceil(t.length/o));let l=0,h=0;return t.forEach(f=>{const w=i.x+h*(A.x+s.x)+A.x/2,g=i.y+(n-1-l)*(A.y+s.y)+A.y/2,C=i.z-A.z/2;u.push({id:f,position:{x:w,y:g,z:C},scale:{...A},padding:{...s},origin:{...i},grid:{row:l,col:h,rows:n,cols:o,disp_kind:e}}),h++,h>=o&&(h=0,l++)}),a}function Ht(a){const t={resetHistogram:"r",goToPreviousLayer:"z",hideOutlines:"o"};a.bindings=a.bindings||{};for(const e in t)a.bindings.hasOwnProperty(e)||(a.bindings[e]=t[e]);return a}function nt(a,t=null){const e=typeof a=="string"?JSON.parse(a):a;function A(n){if(Array.isArray(n))return n;if(n&&typeof n=="object"&&"type"in n){const o=n.prefix??"histogram",c=n.type.match(/grid(\d+)x(\d+)x(\d+)/);if(!c)return[n];const l=+c[1],h=+c[2],f=+c[3],w=n.scale||{x:1,y:1,z:1},g=n.padding||{x:0,y:0,z:0},C=n.origin||{x:0,y:0,z:0},m=new d.Vector3((w.x-g.x*(l-1))/l,(w.y-g.y*(h-1))/h,(w.z-g.z*(f-1))/f),b=[];let B=1;for(let x=0;x<l;x++)for(let y=0;y<h;y++)for(let M=0;M<f;M++)b.push({id:`${o}${B++}`,position:new d.Vector3(C.x+x*(m.x+g.x)+m.x/2,C.y+y*(m.y+g.y)+m.y/2,C.z-M*(m.z+g.z)-m.z/2),scale:m.clone()});return b}return[n]}function s(n){const o={};for(const c in n){const l=n[c];l&&typeof l=="object"&&"x"in l&&"y"in l&&"z"in l&&Object.keys(l).length===3?o[c]=new d.Vector3(l.x,l.y,l.z):typeof l=="string"&&l.startsWith("0x")?o[c]=new d.Color(parseInt(l)):l&&typeof l=="object"&&!Array.isArray(l)?o[c]=s(l):o[c]=l}return o}function i(n,o=null,c=null,l=!1){if(Array.isArray(n))return l?n:n.map(h=>i(h,o,n,!1));if(n&&typeof n=="object"){if(o==="histogramPads")return A(n).map(w=>s(w));if("x"in n&&"y"in n&&"z"in n&&Object.keys(n).length===3)return new d.Vector3(n.x,n.y,n.z);const h={};for(const f in n){const w=f==="histogramPads";h[f]=i(n[f],f,n,w)}return"target"in h||(h.target={entity:"*",id:"*"}),h}return typeof n=="string"&&n.startsWith("0x")?new d.Color(parseInt(n)):n}function r(n,o){if(!n||Array.isArray(o)||!o||typeof o!="object"||o instanceof d.Vector3||o instanceof d.Color)return o;const c={...n};for(const l in o){const h=n[l],f=o[l];h&&typeof h=="object"&&!Array.isArray(h)&&!(h instanceof d.Vector3)&&!(h instanceof d.Color)&&f&&typeof f=="object"&&!Array.isArray(f)&&!(f instanceof d.Vector3)&&!(f instanceof d.Color)?c[l]=r(h,f):c[l]=f}return c}const u=i(e);return r(t,u)}function Ft(a){for(const t in a)if(Object.prototype.hasOwnProperty.call(a,t))return!1;return!0}function Wt(a,t){return["scale","padding","position"].every(A=>a[A]?.x===t[A]?.x&&a[A]?.y===t[A]?.y&&a[A]?.z===t[A]?.z)}function Xt(a,t){const e=new d.TextureLoader().load(Ut);e.colorSpace=d.SRGBColorSpace;const A=new d.SpriteMaterial({map:e,transparent:!0}),s=new d.Sprite(A);return s.scale.set(...a.scale),s.position.set(...a.position),s.raycast=i=>{i._triggerSource==="shiftmousedbclick"&&t()},s}class Vt{#t;constructor(t){this.#t=W.parse(t)}static async parseJson(t){const e=W.parse(t),A=s=>{s&&typeof s=="object"&&(s.children&&Ft(s.children)?delete s.children:s.children&&Object.values(s.children).forEach(i=>{Array.isArray(i)&&i.forEach(r=>A(r))}))};return A(e),e}computeMaxInstancesPerLayer(){if(!this.#t)return;const t=this.#t.fXaxis.fNbins*this.#t.fYaxis.fNbins*this.#t.fZaxis.fNbins;let e=[];e.push(t);const A=(s,i=1)=>{let r=0;return i>=e.length&&e.push(0),Object.entries(s).forEach((u,n)=>{u[1].forEach(o=>{o&&(r=o.fXaxis.fNbins*o.fYaxis.fNbins*o.fZaxis.fNbins,r>e[i]&&(e[i]=r),o.children&&A(o.children,i+1))})}),e};return A(this.#t.children),Promise.resolve(e)}}let rt;class Jt{#t=new Map;getStream(t){return this.#t.has(t)||this.#t.set(t,new D.ReplaySubject(1)),console.log("histogramSubjectGet with id: ",t),this.#t.get(t).asObservable()}async next(t){if(console.log("histogramSubjectNext with id: ",t.id," and event: ",t),!t.id)throw new Error("Missing id in event");if(typeof t.obj=="string")t.obj=await St.parseFile(t.obj);else if(typeof t.obj=="object")t.obj=await Vt.parseJson(t.obj),t.opts=t.opts||{},t.opts.config=nt(t.opts.config);else throw new Error("Unsupported data type");this.#t.has(t.id)||this.#t.set(t.id,new D.ReplaySubject(1)),this.#t.get(t.id).next(t)}}const Lt=()=>(rt||(rt=new Jt),rt);let ot;class kt{#t;constructor(){this.#t=new D.ReplaySubject(1)}getObservable(){return this.#t.asObservable()}next(t){this.#t.next(t)}}const at=()=>(ot||(ot=new kt),ot),Zt={config:{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:.1,max:1},layer:[]},sets:{scale:{maximum:"relative"}},TH1ZScale:{default:.8,layer:[1,1,1,1],set:.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"}}};let ct;class qt{#t;constructor(){this.#t=new D.BehaviorSubject(nt(Zt,{}))}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){const e=nt(t,this.#t.getValue());return this.#t.next(e),e}appendPads(t,e,A){const s=Yt(this.#t.getValue(),t,e,A);this.#t.next(s)}mergeHistogramConfig(t,e=this.#t.value.config.histogram){if(t==null)return e;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return t;const A=i=>Array.isArray(i)||i instanceof d.Color||i instanceof d.Vector3||i&&i.isColor===!0||i&&i.isVector3===!0;if(A(e))return A(t)?t:e;const s={...e};for(const i in t)t.hasOwnProperty(i)&&t[i]!==void 0&&(A(t[i])||A(s[i])?s[i]=t[i]: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]);return s}}const X=()=>(ct||(ct=new qt),ct);let lt;class Rt{#t;constructor(){this.#t=new D.ReplaySubject(1)}getObservable(){return this.#t.asObservable()}getValue(){return this.#t.getValue()}next(t){this.#t.next(t)}}const ht=()=>(lt||(lt=new Rt),lt);let ut;class Kt{#t;#e;constructor(){this.#t=document.createElement("a-entity"),this.#t.id="cameraRig",this.#t.setAttribute("position","0 1.6 0"),this.#t.innerHTML=`
2
2
  <a-camera id="camera" wasd-controls-custom="acceleration: 10" wasd-controls="acceleration: 50">
3
3
  </a-camera>
4
- `,this.#e=document.createElement("a-entity"),this.#e.id="oculus-controller",this.#e.setAttribute("oculus-controller",""),tt().getObservable().subscribe(this.handleStateChange.bind(this))}handleStateChange(t){const e=document.getElementById("cameraRig");if(t.inputDevice==="oculus"){if(!e||e.contains(this.#e))return;e.appendChild(this.#e)}else{if(!e||!e.contains(this.#e))return;e.removeChild(this.#e)}}getCamera(){return this.#t}}const Kt=()=>(ht||(ht=new Rt),ht.getCamera());let ut;class _t{#t;#e;constructor(){setTimeout(()=>{this.#t=document.getElementById("cameraRig"),this.#e=document.getElementById("camera")},100)}verticalMoveCamera=(t,e)=>{if(this.#t===null&&(this.#t=document.getElementById("cameraRig")),this.#t!==null){const A=new g.Vector3,s=this.#t.object3D.position.clone();t?(A.copy(s).add(new g.Vector3(0,+e,0)),this.#t.object3D.position.lerp(A,.5)):this.#t.object3D.position.y>1.6&&(A.copy(s).add(new g.Vector3(0,-e,0)),this.#t.object3D.position.lerp(A,.5))}};horizontalMoveCameraLocal=(t,e,A)=>{if(!this.#t||!this.#e)return;let s=new g.Vector2(t,e),n=this.#e.object3D.rotation.y;s.rotateAround(new g.Vector3(0,0),-n),s.normalize(),s.multiplyScalar(A),this.#t.object3D.position.x+=s.x,this.#t.object3D.position.z+=s.y};getCamera(){return this.#e}}const $t=()=>(ut||(ut=new _t),ut),bt="data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAws/8fNABrcJixPQsAAAAASUVORK5CYII=",te="data:image/png;base64,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",ee="data:image/png;base64,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";class Ae{#t;#e;#s;#A;constructor(){this.#s=$t(),setTimeout(()=>{this.setUpArrowListener(),this.setDownArrowListener()},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(),tt().getObservable().subscribe(t=>{if(t.inputDevice==="mobile")document.getElementById("container").appendChild(this.getController());else{const e=document.getElementById("container");if(!e||!e.contains(this.getController()))return;e.removeChild(this.getController())}})}getController(){return this.#A}upClickFunction(){this.#s.verticalMoveCamera(!0,.15)}downClickFunction(){this.#s.verticalMoveCamera(!1,.15)}startUpClick(t){t.preventDefault(),this.upClickFunction(),this.#t=setInterval(this.upClickFunction,10)}endUpClick(){clearInterval(this.#t)}startDownClick(t){t.preventDefault(),this.downClickFunction(),this.#e=setInterval(this.downClickFunction,10)}endDownClick(){clearInterval(this.#e)}setUpArrowListener(){const t=document.getElementById("up-arrow");t?(t.addEventListener("touchstart",this.startUpClick),t.addEventListener("touchend",this.endUpClick)):setTimeout(this.setUpArrowListener,100)}setDownArrowListener(){const t=document.getElementById("down-arrow");t?(t.addEventListener("touchstart",this.startDownClick),t.addEventListener("touchend",this.endDownClick)):setTimeout(this.setUpArrowListener,100)}clearUpArrowListener(){const t=document.getElementById("up-arrow");t&&(t.removeEventListener("touchstart",this.startUpClick),t.removeEventListener("touchend",this.endUpClick))}clearDownArrowListener(){const t=document.getElementById("down-arrow");t&&(t.removeEventListener("touchstart",this.startDownClick),t.removeEventListener("touchend",this.endDownClick))}initController(){this.#A=document.createElement("div"),this.#A.className="mainUI",this.#A.id="uiDiv",this.#A.oncontextmenu=t=>t.preventDefault(),this.#A.innerHTML=`
4
+ `,this.#e=document.createElement("a-entity"),this.#e.id="oculus-controller",this.#e.setAttribute("oculus-controller",""),et().getObservable().subscribe(this.handleStateChange.bind(this))}handleStateChange(t){const e=document.getElementById("cameraRig");if(t.inputDevice==="oculus"){if(!e||e.contains(this.#e))return;e.appendChild(this.#e)}else{if(!e||!e.contains(this.#e))return;e.removeChild(this.#e)}}getCamera(){return this.#t}}const $t=()=>(ut||(ut=new Kt),ut.getCamera());let ft;class _t{#t;#e;constructor(){setTimeout(()=>{this.#t=document.getElementById("cameraRig"),this.#e=document.getElementById("camera")},100)}verticalMoveCamera=(t,e)=>{if(this.#t===null&&(this.#t=document.getElementById("cameraRig")),this.#t!==null){const A=new d.Vector3,s=this.#t.object3D.position.clone();t?(A.copy(s).add(new d.Vector3(0,+e,0)),this.#t.object3D.position.lerp(A,.5)):this.#t.object3D.position.y>1.6&&(A.copy(s).add(new d.Vector3(0,-e,0)),this.#t.object3D.position.lerp(A,.5))}};horizontalMoveCameraLocal=(t,e,A)=>{if(!this.#t||!this.#e)return;let s=new d.Vector2(t,e),i=this.#e.object3D.rotation.y;s.rotateAround(new d.Vector3(0,0),-i),s.normalize(),s.multiplyScalar(A),this.#t.object3D.position.x+=s.x,this.#t.object3D.position.z+=s.y};getCamera(){return this.#e}}const te=()=>(ft||(ft=new _t),ft),Mt="data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAws/8fNABrcJixPQsAAAAASUVORK5CYII=",ee="data:image/png;base64,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",Ae="data:image/png;base64,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";class se{#t;#e;#s;#A;constructor(){this.#s=te(),setTimeout(()=>{this.setUpArrowListener(),this.setDownArrowListener()},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(),et().getObservable().subscribe(t=>{if(t.inputDevice==="mobile")document.getElementById("container").appendChild(this.getController());else{const e=document.getElementById("container");if(!e||!e.contains(this.getController()))return;e.removeChild(this.getController())}})}getController(){return this.#A}upClickFunction(){this.#s.verticalMoveCamera(!0,.15)}downClickFunction(){this.#s.verticalMoveCamera(!1,.15)}startUpClick(t){t.preventDefault(),this.upClickFunction(),this.#t=setInterval(this.upClickFunction,10)}endUpClick(){clearInterval(this.#t)}startDownClick(t){t.preventDefault(),this.downClickFunction(),this.#e=setInterval(this.downClickFunction,10)}endDownClick(){clearInterval(this.#e)}setUpArrowListener(){const t=document.getElementById("up-arrow");t?(t.addEventListener("touchstart",this.startUpClick),t.addEventListener("touchend",this.endUpClick)):setTimeout(this.setUpArrowListener,100)}setDownArrowListener(){const t=document.getElementById("down-arrow");t?(t.addEventListener("touchstart",this.startDownClick),t.addEventListener("touchend",this.endDownClick)):setTimeout(this.setUpArrowListener,100)}clearUpArrowListener(){const t=document.getElementById("up-arrow");t&&(t.removeEventListener("touchstart",this.startUpClick),t.removeEventListener("touchend",this.endUpClick))}clearDownArrowListener(){const t=document.getElementById("down-arrow");t&&(t.removeEventListener("touchstart",this.startDownClick),t.removeEventListener("touchend",this.endDownClick))}initController(){this.#A=document.createElement("div"),this.#A.className="mainUI",this.#A.id="uiDiv",this.#A.oncontextmenu=t=>t.preventDefault(),this.#A.innerHTML=`
5
5
  <div class="mainUI" id="uiDiv" oncontextmenu="event.preventDefault()">
6
6
  <!-- top-left-->
7
7
  <div class="regionUI skyColor" style="top: 10px; left: 10px;" oncontextmenu="event.preventDefault()">
@@ -15,16 +15,16 @@
15
15
  <div class="regionUI" style="bottom: 50px; left: 50px; flex-direction: column;">
16
16
  <div style="display: flex; flex-direction: row; margin-left: -32px;">
17
17
  <div id="up-arrow" class="buttonUI" style="width: 64px; height: 64px;">
18
- <img style="transform: rotate(0deg);" src="${bt}" alt="Up Arrow" />
18
+ <img style="transform: rotate(0deg);" src="${Mt}" alt="Up Arrow" />
19
19
  </div>
20
20
  <div id="down-arrow" class="buttonUI" style="width: 64px; height: 64px;">
21
- <img style="transform: rotate(180deg);" src="${bt}" alt="Down Arrow" />
21
+ <img style="transform: rotate(180deg);" src="${Mt}" alt="Down Arrow" />
22
22
  </div>
23
23
  </div>
24
24
  <div class="buttonUI" style="width: 128px; opacity: 0.8;">
25
- <img src="${te}" alt="Joystick Base" />
25
+ <img src="${ee}" alt="Joystick Base" />
26
26
  <div id="stick1" style="position: absolute;">
27
- <img src="${ee}" alt="Joystick Blue" />
27
+ <img src="${Ae}" alt="Joystick Blue" />
28
28
  </div>
29
29
  </div>
30
30
  </div>
@@ -33,7 +33,7 @@
33
33
  <div class="regionUI baseColor" style="bottom: 10px; right: 10px;">
34
34
  </div>
35
35
  </div>
36
- `}}const se=async o=>{let t;o.startsWith("root://")?t=o.replace(/^root:\/\//,"https://").replace(/\/\//g,"/"):t=o,console.log(`Fetching from URL: ${t}`);const e=await fetch(t);if(!e.ok)throw new Error(`Response status: ${e.status}`);return e.json()};class ie{raycaster;mouse;cameraElement;sceneElement;singleClickTimer;dbClickTimeout;configSub;rendererElement;raycastOn;constructor(t,e){this.singleClickTimer=null,this.dbClickTimeout=190,this.raycastOn=!0,this.rendererElement=e,this.raycaster=new g.Raycaster,this.mouse=new g.Vector2,this.sceneElement=t,this.checkInterval=1,this.lastCheck=void 0,t.traverse(A=>{A.isCamera&&(this.cameraElement=A)}),this.mousemoveEventHandle=this.mousemoveEventHandle.bind(this),this.clickEventHandle=this.clickEventHandle.bind(this),this.setupRaycasting(),this.configSub=W().getObservable().subscribe(A=>{this.dbClickTimeout=A.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(t){const e=performance.now();e-this.lastCheck<this.checkInterval||(this.lastCheck=e,this.updateRaycaster(t))}clickEventHandle(t){const e=this.rendererElement.getBoundingClientRect();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);const A=Date.now(),n=(this.lastClick?A-this.lastClick:1/0)<this.dbClickTimeout;this.singleClickTimer&&(clearTimeout(this.singleClickTimer),this.singleClickTimer=null),n?(this.raycaster._triggerSource=t.shiftKey?"shiftmousedbclick":"mousedbclick",this.handleRaycast()):this.singleClickTimer=setTimeout(()=>{this.raycaster._triggerSource=t.shiftKey?"shiftmouseclick":"mouseclick",this.handleRaycast(),this.singleClickTimer=null},this.dbClickTimeout),this.lastClick=A}handleRaycast(){this.raycaster.intersectObjects(this.sceneElement.children,!0).length>0}updateRaycaster(t){const e=this.rendererElement.getBoundingClientRect();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)}}class Mt{constructor(t){this.limits=new Int32Array(t),this.values=new Int32Array(t.length)}increment(){for(let t=0;t<this.values.length;t++){if(this.values[t]++,this.values[t]<this.limits[t])return!0;this.values[t]=0}return!1}getIndex(){let t=0,e=1;for(let A=0;A<this.values.length;A++)t+=this.values[A]*e,e*=this.limits[A];return t}setFromNumber(t){for(let e=0;e<this.limits.length;e++)this.values[e]=Math.floor(t%this.limits[e]),t=Math.floor(t/this.limits[e])}getValueAt(t){return this.values[t]}getValues(){return[...this.values]}reset(){this.values.fill(0)}}function ne(o,t){return t<=0?o.fXmin:t>o.fNbins?o.fXmax:o.GetBinLowEdge(t+1)}function ft(o,t,e,A,s,n,r){const u=t+1,i=o.GetBinLowEdge(u),a=ne(o,u),l=Math.abs(a-i);if(r.size=l,r.pos=i+l*.5-o.fXmin,e){const h=(o.fXmax-o.fXmin)*o.fNbins/(e*o.fNbins);r.pos/=h,r.size/=h,r.size*=1-A,r.pos-=e*.5,r.pos+=s}}function re(o,t,e,A,s,n,r){ft(o.fXaxis,t.x,e?.x,A?.x,s?.x,n,r.x),ft(o.fYaxis,t.y,e?.z,A?.y,s?.z,n,r.y),ft(o.fZaxis,t.z,e?.y,A?.z,s?.y,n,r.z)}function oe(o){const t=o.y.size,e=o.y.pos;return o.y.size=o.z.size,o.y.pos=o.z.pos,o.z.size=t,o.z.pos=e,o}function ae(o,t,e,A,s,n,r){return re(o,t,A,e,s,n,r),r}function ce(o,t,e){return e.z.pos=2*o-e.z.pos,e}function yt(o,t){if(o.length!==t.length)return!1;const e={};for(const A of o)e[A]=(e[A]||0)+1;for(const A of t){if(!e[A])return!1;e[A]--}return!0}function le(o,t){if(!Array.isArray(o)||!Array.isArray(t)||o.length!==t.length)return!1;for(let e=0;e<o.length;e++){const A=Object.keys(o[e]),s=Object.keys(t[e]);if(A.length!==s.length)return!1;for(const n of A){if(!t[e].hasOwnProperty(n))return!1;const r=o[e][n],u=t[e][n];if(typeof r!=typeof u)return!1;if(typeof r=="object"){if(!r||!u){if(r!==u)return!1;continue}const i=Object.keys(r),a=Object.keys(u);if(i.length!==a.length)return!1;for(const l of i)if(!u.hasOwnProperty(l)||r[l]!==u[l])return!1}else if(r!==u)return!1}}return!0}function gt(o,t,e,A){let s=Array(o.length).fill(0);const n=(r,u,i)=>{const a=u.fXaxis.fNbins,l=u.fYaxis.fNbins;u.fZaxis.fNbins;const h=e.slice(-e.length+r+1).reduce((f,B)=>f*B,1);if(s[i]+=(o[r].x+o[r].y*a+o[r].z*a*l)*h,r+1<o.length){let f;u.children.content?f=u.children.content[u.getBin(o[r].x+1,o[r].y+1,o[r].z+1)]:f=u.children[A[0]][u.getBin(o[r].x+1,o[r].y+1,o[r].z+1)],i>r&&n(r+1,f,i)}};for(let r=0;r<o.length;r++)n(0,t,r);return s}function J(o,t,e){let A=Array(o.length).fill(0);for(let s=0;s<o.length;s++)if(A[s]=t.getBin(o[s].x+1,o[s].y+1,o[s].z+1),t.children)t.children?.content?t=t.children.content[A[s]]:t=t.children[e[0]]?.[A[s]];else return A;return A}function L(o,t,e,A,s,n=0){const r=["x","y","z"],u=Number.parseInt(e._typename.substring(2,3),10);let i={};if(o[0]){for(let a=0;a<u;a++){const l=r[a],c=e[`f${l.toUpperCase()}axis`],h=o[0][l];i[l]={min:c.GetBinLowEdge(h+1),max:c.GetBinCenter(h+1)*2-c.GetBinLowEdge(h+1),name:c.fName,title:c.fTitle,label:c.fLabels?.arr[h]?.fString}}i={...i,color:A.getColorAt(n,t),name:e.fName}}if(o[1]){let a;return e.children?.content?a=e.children.content[e.getBin(o[0].x+1,o[0].y+1,o[0].z+1)]:e.children?.[s[0]]&&(a=e.children[s[0]][e.getBin(o[0].x+1,o[0].y+1,o[0].z+1)]),[i,...L(o.slice(1),t,a,A,s,n+1)]}else return[i]}function he(o,t,e,A){let s=0;const n=e.slice(1),r=[];for(let i=0;i<n.length;i++){const a=n.slice(i).reduce((l,c)=>l*c,1);r.push(a)}const u=(i,a)=>{const{fNbins:l}=a.fXaxis,{fNbins:c}=a.fYaxis,{fNbins:h}=a.fZaxis,f=o[i].x+o[i].y*l+o[i].z*l*c;if(s+=f*r[i],i+1<o.length){const B=ue(a,o[i],A);u(i+1,B)}};return u(0,t),s}function ue(o,t,e){const A=o.getBin(t.x+1,t.y+1,t.z+1);return o.children.content?o.children.content[A]:o.children[e[0]][A]}function dt(o,t,e){const A=t.splice(0,1)[0];return t.length>0?dt(o.children.content[A],t,e):o.children.content?o.children.content[A]:o.children[e][A]}function fe(o){if(!o)return;const t=s=>{let n=-1/0;for(let r=0;r<s.length;r++){const u=s[r];u>n&&(n=u)}return n},e=[];e[0]={content:t(o.fArray)},o.fArrays&&Object.keys(o?.fArrays).forEach(s=>{e[0]={...e[0],[s]:t(o.fArrays[s].values)}});const A=(s,n=1)=>{e[n]||(e[n]={}),Object.entries(s).forEach(([r,u])=>{u.forEach(i=>{if(!i)return;const a=t(i.fArray);(!(r in e[n])||a>e[n][r])&&(e[n][r]=a),i.fArrays&&Object.keys(i.fArrays).forEach(l=>{const c=i.fArrays[l].max;(!(l in e[n])||c>e[n][l])&&(e[n][l]=c),e[n][l]=Math.max(e[n][l],t(i.fArrays[l].values))}),i.children&&A(i.children,n+1)})})};return o.children&&A(o.children),e}function ge(o,t){if(!o)return;const e=n=>{let r=0;for(let u=0;u<n.length;u++){const i=n[u];i>r&&(r=i)}return r},A=[];A[0]={content:e(o.fSumw2)},o.fArrays&&Object.keys(o?.fArrays).forEach(n=>{o.fArrays[n].errors&&(A[0]={...A[0],[n]:e(o.fArrays[n].errors)})});const s=(n,r=1)=>{A[r]||(A[r]={}),Object.entries(n).forEach(([u,i])=>{i.forEach(a=>{if(!a)return;const l=e(a.fSumw2),c=isNaN(l)?0:l;(!(u in A[r])||c>A[r][u])&&(A[r][u]=c),a.fArrays&&Object.keys(a.fArrays).forEach(h=>{a.fArrays[h].errors&&((!(h in A[r])||c>A[r][h])&&(A[r][h]=c),A[r][h]=Math.max(A[r][h],e(a.fArrays[h].errors)))}),a.children&&s(a.children,r+1)})})};o.children&&s(o.children);for(let n=0;n<A.length;n++)Object.keys(A[n]).forEach(r=>{A[n][r]===0&&(A[n][r]=Math.sqrt(t[n][r]))});return A}function de(o,t){if(!o)return;const e=n=>{let r=1/0;for(let u=0;u<n.length;u++){const i=n[u];i<r&&(r=i)}return r},A=[];A[0]={content:e(o.fSumw2)},o.fArrays&&Object.keys(o?.fArrays).forEach(n=>{o.fArrays[n].errors&&(A[0]={...A[0],[n]:e(o.fArrays[n].errors)})});const s=(n,r=1)=>{A[r]||(A[r]={}),Object.entries(n).forEach(([u,i])=>{i.forEach(a=>{if(!a)return;const l=e(a.fSumw2),c=isNaN(l)?0:l;(!(u in A[r])||c<A[r][u])&&(A[r][u]=c),a.fArrays&&Object.keys(a.fArrays).forEach(h=>{a.fArrays[h].errors&&((!(h in A[r])||c<A[r][h])&&(A[r][h]=c),A[r][h]=Math.min(A[r][h],e(a.fArrays[h].errors.filter(f=>f>0))))}),a.children&&s(a.children,r+1)})})};o.children&&s(o.children);for(let n=0;n<A.length;n++)Object.keys(A[n]).forEach(r=>{(A[n][r]===0||A[n][r]===1/0)&&(A[n][r]=Math.sqrt(t[n][r]))});return A}function me(o){if(!o)return;const t=s=>{let n=1/0;for(let r=0;r<s.length;r++){const u=s[r];u<n&&(n=u)}return n},e=[];e[0]={content:t(o.fArray.filter(s=>s!==0))},o.fArrays&&Object.keys(o?.fArrays).forEach(s=>{e[0]={...e[0],[s]:t(o.fArrays[s].values.filter(n=>n!==0))}});const A=(s,n=1)=>{e[n]||(e[n]={}),Object.entries(s).forEach(([r,u])=>{u.forEach(i=>{if(!i)return;const a=t(i.fArray.filter(l=>l!==0));(!(r in e[n])||a<e[n][r])&&(e[n][r]=a),i.fArrays&&Object.keys(i.fArrays).forEach(l=>{(!(l in e[n])||a>e[n][l])&&(e[n][l]=a),e[n][l]=Math.min(e[n][l],t(i.fArrays[l].values.filter(c=>c!==0)))}),i.children&&A(i.children,n+1)})})};return o.children&&A(o.children),e}function Ce(o){if(!o)return;const t=o.fXaxis.fNbins*o.fYaxis.fNbins*o.fZaxis.fNbins;let e=[];e.push(t);const A=(s,n=1)=>{let r=0;return n>=e.length&&e.push(1),Object.entries(s).forEach((u,i)=>{u[1].forEach(a=>{a&&(r=a.fXaxis.fNbins*a.fYaxis.fNbins*a.fZaxis.fNbins,r>e[n]&&(e[n]=r),a.children&&A(a.children,n+1))})}),e};return o.children&&A(o.children),e.push(1),e}function Be(o,t,e){new g.Color(o.color.default.min).toArray(e,0),new g.Color(o.color.default.max).toArray(e,3);let A=1;o.color.layer.forEach(s=>{const n=A*6;new g.Color(s.min).toArray(e,n),new g.Color(s.max).toArray(e,n+3),A++}),o.color.set.forEach(s=>{const n=A*6;new g.Color(s.min).toArray(e,n),new g.Color(s.max).toArray(e,n+3),A++}),t.uniforms.colorPairs={value:e},t.uniformsNeedUpdate=!0}function xt(o,t,e,A,s,n){const u=((a,l,c)=>{let h=(a-l)/(c-l);return h>1&&(h=1),isNaN(h)||h===1/0?0:h})(t,e,A);let i=0;return o.set[s]?i=1+o.layer.length+s:o.layer[n]&&(i=1+n),i+u}function It(o,t,e,A,s,n,r){if(!(1/o===-1/0||o<0))return r[0]=t[o],r[1]=t[o+1],r[2]=t[o+2],r[3]=e[o],r[4]=e[o+1],r[5]=e[o+2],r;const i=Math.abs(o),a=n!==null?A[s][n]:A[s];return r[0]=a.pos[i],r[1]=a.pos[i+1],r[2]=a.pos[i+2],r[3]=a.scale[i],r[4]=a.scale[i+1],r[5]=a.scale[i+2],r}const we=o=>{if(!o)return!1;for(const t in o)if(t!=="content"&&Object.prototype.hasOwnProperty.call(o,t)&&o[t]&&typeof o[t]=="object"&&Object.keys(o[t]).length>0)return!0;return!1};function q(o,t,e,A,s,n,r){const u=t.fXaxis.fNbins,i=t.fYaxis.fNbins,a=t.fZaxis.fNbins;let l=0,c=0;const h=new Float32Array((u*i*a-1)*3),f=new Float32Array((u*i*a-1)*3),B=new Float32Array(u*i*a-1),d=new Float32Array(u*i*a-1),m=new Float32Array(u*i*a-1),w=new Float32Array(6),b=new Float32Array(6),C=I=>{const v=y*3;h[v]=I[0],h[v+1]=I[1],h[v+2]=I[2],f[v]=I[3],f[v+1]=I[4],f[v+2]=I[5],B[y]=I[6],d[y]=I[7],m[y]=I[8]},x=(I,v,Q,j)=>{It(I,h,f,o,Q,j,w),It(v,h,f,o,Q,j,b);const N=w[0]-w[3]*.5<b[0]-b[3]*.5?w[0]-w[3]*.5:b[0]-b[3]*.5,G=w[1]-w[4]*.5<b[1]-b[4]*.5?w[1]-w[4]*.5:b[1]-b[4]*.5,S=w[2]-w[5]*.5<b[2]-b[5]*.5?w[2]-w[5]*.5:b[2]-b[5]*.5,O=w[0]+w[3]*.5>b[0]+b[3]*.5?w[0]+w[3]*.5:b[0]+b[3]*.5,E=w[1]+w[4]*.5>b[1]+b[4]*.5?w[1]+w[4]*.5:b[1]+b[4]*.5,z=w[2]+w[5]*.5>b[2]+b[5]*.5?w[2]+w[5]*.5:b[2]+b[5]*.5,M=new Float32Array(9);return M[0]=(N+O)*.5,M[1]=(G+E)*.5,M[2]=(S+z)*.5,M[3]=O-N,M[4]=E-G,M[5]=z-S,M};let y=0;for(let I=0;I<i;I++){for(let Q=0;Q<a;Q++){const j=l+r;let N=new Array(u);for(let G=0;G<u;G++)N[G]=-G-j;for(;N.length>1;){let G=0;const S=Math.floor(N.length/2);for(let O=0;O<S;O++){const E=N[G],z=N[G+1],M=x(E*3,z*3,e,A);N.splice(G,2,y),mt(M,n),M[6]=1/E===-1/0||E<0?E:m[E],M[7]=1/z===-1/0||z<0?z:m[z],M[8]=c,C(M),y+=1,c+=1,G+=1}}l+=u}const v=new Array(a);for(let Q=0;Q<a;Q++)v[Q]=y-1-(a-1-Q)*(u-1);for(;v.length>1;){let Q=0;const j=Math.floor(v.length/2);for(let N=0;N<j;N++){const G=v[Q],S=v[Q+1],O=x(G*3,S*3,e,A);v.splice(Q,2,y),mt(O,n),O[6]=m[G],O[7]=m[S],O[8]=c,C(O),y+=1,c+=1,Q+=1}}}const p=new Array(i);for(let I=0;I<i;I++)p[I]=y-1-(i-1-I)*(u*a-1);for(;p.length>1;){let I=0;const v=Math.floor(p.length/2);for(let Q=0;Q<v;Q++){const j=p[I],N=p[I+1],G=x(j*3,N*3,e,A);p.splice(I,2,y),mt(G,n),G[6]=m[j],G[7]=m[N],G[8]=c,C(G),y+=1,c+=1,I+=1}}return{pos:h,scale:f,left:B,right:d}}function pe(o,t,e,A,s,n,r,u){const i=new Array(o.length).fill().map(l=>[]);i[i.length-1]=Array.from({length:n.length},()=>[]),s===null?i[0]=[q(o,t,e,null,n,r,0)]:(i[0]=new Array(n.length),A.forEach(l=>i[0][n.indexOf(l)]=q(o,t,e,n.indexOf(l),n,r,0)));const a=(l,c,h)=>{if(!l.children)return;const f=new Mt([l.fXaxis.fNbins,l.fYaxis.fNbins,l.fZaxis.fNbins]),B=l.fXaxis.fNbins*l.fYaxis.fNbins*l.fZaxis.fNbins,d=u.slice(1,c-1).reduce((w,b)=>w*b,u[1]),m=u[c];for(let w=0;w<B;w++){const b={x:f.getValueAt(0),y:f.getValueAt(1),z:f.getValueAt(2)};if(l?.children?.content){const C=l.children.content[l.getBin(b.x+1,b.y+1,b.z+1)];if(!C){if(f.increment()===!1)break;continue}i[c][w+h]=q(o,C,c,null,n,r,(w+h)*m),a(C,c+1,(f.getIndex()+h)*d)}else we(l.children)&&A.forEach((C=>{const x=n.indexOf(C),y=(w+h)*m;let p=!1;for(let v=y;v<y+u[c];v++)if(o[c][x].rendered[v]!==-1){p=!0;break}if(!p){i[c][x].push(null);return}const I=l.children[C][l.getBin(b.x+1,b.z+1,b.y+1)];I&&(i[c][x][w+h]=q(o,I,c,x,n,r,(w+h)*m),a(I,c+1,(f.getIndex()+h)*d))}));if(f.increment()===!1)break}};return a(t,1,0),i}function mt(o,t){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]),n=Math.sqrt(e[8]*e[8]+e[9]*e[9]+e[10]*e[10]);o[0]=o[0]*A+e[12],o[1]=o[1]*s+e[13],o[2]=o[2]*n+e[14],o[3]=o[3]*A,o[4]=o[4]*s,o[5]=o[5]*n}class Ct{rootObj=void 0;origin=void 0;parentPath=[];path=void 0;title=void 0;range=[];isOnSet=null;isHistogramFilled=!0;constructor(t){this.rootObj=t,this.origin=this.rootObj,this.title=this.origin.fTitle,this.path=this.origin.fName}setOriginToChild(t,e,A){if(!t)return;const s=t.splice(0,1);if(this.origin?.children){if(this.origin.children?.content)this.parentPath.push({origin:this.origin,range:A.splice(0,1),bin:s}),this.origin=this.origin.children.content[s],this.isOnSet=null;else if(Object.keys(this.origin.children).includes(e)){if(this.parentPath.push({origin:this.origin,range:A.splice(0,1),bin:s}),!this.origin.children[e][s]){this.isHistogramFilled=!1,this.path=this.path+"/empty",this.origin=null;return}this.origin=this.origin.children[e][s],this.isOnSet=e}else{console.error("Bad set or index specified.");return}this.title=this.origin.fTitle,this.path=this.path+"/"+this.origin.fName,t.length>0&&this.setOriginToChild(t,e,A)}}getChildByPosition(t,e,A=this.origin){if(!t||t.length===0)return{...A};const s=t.splice(0,1)[0];return A?.children?A.children?.content?this.getChildByPosition(t,e,A.children.content[s]):Object.keys(A.children).includes(e)?this.getChildByPosition(t,e,A.children[e][s]):(console.error("Bad set or index specified."),null):{...A}}setOriginToParent(t=1){if(t<=0||this.parentPath.length===0)return;const e=this.path.lastIndexOf("/");this.path=this.path.slice(0,e);const A=this.parentPath.pop();A&&(this.origin=A.origin),this.title=this.origin.fTitle,this.setOriginToParent(t-1),this.isOnSet=null,this.isHistogramFilled=!0}}class be{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(t,e,A,s){this.config=A,this.maxInstancesPerLayer=t,this.id=s;const n=new g.BoxGeometry(1,1,1),r=new g.EdgesGeometry(n);this.instGeom=new g.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=r.index;for(const u in r.attributes)this.instGeom.setAttribute(u,r.attributes[u]);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 g.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute("instanceScale",new g.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute("instanceColorIndex",new g.InstancedBufferAttribute(this.instanceColors,1)),this.wireframe=new g.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,this.stateSub=Y(this.id).getObservable().subscribe(u=>{this.numOfavailableSets=u.sets.length})}pushVisibleInstances(t,e,A){let s=this.wireframe.parent;s&&(s.remove(this.wireframe),this.instGeom.dispose());const n=this.config.display.start??0,r=this.config.display.end??t.length-1,u=[];let i=t.length-1;{const x=(Array.isArray(t[i])?t[i][A]:t[i]).rendered,y=new Uint8Array(x.length);for(let p=0;p<x.length;p++)y[p]=x[p]!==-1?1:0;u[i]=y}for(let C=i-1;C>=0;C--){const y=(Array.isArray(t[C])?t[C][A]:t[C]).rendered,p=u[C+1],I=e[C+1]||0,v=new Uint8Array(y.length);for(let Q=0;Q<y.length;Q++){if(y[Q]!==-1){v[Q]=1;continue}const j=Q*I,N=j+I;for(let G=j;G<N;G++)if(p[G]){v[Q]=1;break}}u[C]=v}const a=(C,x)=>C<n||C>r?!1:u[C][x]===1,l=(C,x)=>{let y=0,p=C,I=x;for(;p+1<t.length;){p++,I*=e[p];const v=t[p],Q=Array.isArray(v)?v[A===-1?0:A]:v;for(let j=I;j<I+e[p];j++)if(Q.rendered[j]!==-1){y=p-C;break}}return y};let c=0;for(let C=0;C<t.length;C++){const x=t[C];if(!Array.isArray(x))for(let y=0;y<x.rendered.length;y++)a(C,y)&&c++}const h=new Float32Array(c*3),f=new Float32Array(c*3),B=new Float32Array(c);let d=0;for(let C=0;C<t.length;C++){const x=t[C],y=this.getColorIndex(C,A);if(!Array.isArray(x)){for(let p=0;p<x.rendered.length;p++)if(a(C,p)){const I=l(C,p)*.05;h[d*3]=x.pos[p*3],h[d*3+1]=x.pos[p*3+1],h[d*3+2]=x.pos[p*3+2],f[d*3]=x.scale[p*3]+I,f[d*3+1]=x.scale[p*3+1]+I,f[d*3+2]=x.scale[p*3+2]+I,B[d++]=y}}}const m=new g.BoxGeometry(1,1,1),w=new g.EdgesGeometry(m);this.instGeom=new g.InstancedBufferGeometry,this.instGeom.instanceCount=c,this.instGeom.frustumCulled=!1,this.instGeom.index=w.index;const b=w.attributes;for(const C in b)this.instGeom.setAttribute(C,b[C]);this.instancePositions=h,this.instanceScales=f,this.instanceColors=B,this.instGeom.setAttribute("instancePosition",new g.InstancedBufferAttribute(h,3)),this.instGeom.setAttribute("instanceScale",new g.InstancedBufferAttribute(f,3)),this.instGeom.setAttribute("instanceColorIndex",new g.InstancedBufferAttribute(B,1)),this.wireframe=new g.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,s&&s.add(this.wireframe)}toggleVisibility(t,e,A){this.visibility=!this.visibility,this.visibility?this.pushVisibleInstances(t,e,A):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 g.Color(this.config.color.default).toArray(this.colorArray,0);let t=1;this.config.color.layer.map(e=>new g.Color(e)).forEach(e=>{const A=t*3;e.toArray(this.colorArray,A),t++}),this.config.color.set.map(e=>new g.Color(e)).forEach(e=>{const A=t*3;e.toArray(this.colorArray,A),t++}),this.material.uniforms.colorArray={value:this.colorArray},this.material.uniformsNeedUpdate=!0}createMaterial(){return new g.ShaderMaterial({vertexShader:`
36
+ `}}const ie=async a=>{let t;a.startsWith("root://")?t=a.replace(/^root:\/\//,"https://").replace(/\/\//g,"/"):t=a,console.log(`Fetching from URL: ${t}`);const e=await fetch(t);if(!e.ok)throw new Error(`Response status: ${e.status}`);return e.json()};class ne{raycaster;mouse;cameraElement;sceneElement;singleClickTimer;dbClickTimeout;configSub;rendererElement;raycastOn;constructor(t,e){this.singleClickTimer=null,this.dbClickTimeout=190,this.raycastOn=!0,this.rendererElement=e,this.raycaster=new d.Raycaster,this.mouse=new d.Vector2,this.sceneElement=t,this.checkInterval=1,this.lastCheck=void 0,t.traverse(A=>{A.isCamera&&(this.cameraElement=A)}),this.mousemoveEventHandle=this.mousemoveEventHandle.bind(this),this.clickEventHandle=this.clickEventHandle.bind(this),this.setupRaycasting(),this.configSub=X().getObservable().subscribe(A=>{this.dbClickTimeout=A.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(t){const e=performance.now();e-this.lastCheck<this.checkInterval||(this.lastCheck=e,this.updateRaycaster(t))}clickEventHandle(t){const e=this.rendererElement.getBoundingClientRect();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);const A=Date.now(),i=(this.lastClick?A-this.lastClick:1/0)<this.dbClickTimeout;this.singleClickTimer&&(clearTimeout(this.singleClickTimer),this.singleClickTimer=null),i?(this.raycaster._triggerSource=t.shiftKey?"shiftmousedbclick":"mousedbclick",this.handleRaycast()):this.singleClickTimer=setTimeout(()=>{this.raycaster._triggerSource=t.shiftKey?"shiftmouseclick":"mouseclick",this.handleRaycast(),this.singleClickTimer=null},this.dbClickTimeout),this.lastClick=A}handleRaycast(){this.raycaster.intersectObjects(this.sceneElement.children,!0).length>0}updateRaycaster(t){const e=this.rendererElement.getBoundingClientRect();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)}}class yt{constructor(t){this.limits=new Int32Array(t),this.values=new Int32Array(t.length)}increment(){for(let t=0;t<this.values.length;t++){if(this.values[t]++,this.values[t]<this.limits[t])return!0;this.values[t]=0}return!1}getIndex(){let t=0,e=1;for(let A=0;A<this.values.length;A++)t+=this.values[A]*e,e*=this.limits[A];return t}setFromNumber(t){for(let e=0;e<this.limits.length;e++)this.values[e]=Math.floor(t%this.limits[e]),t=Math.floor(t/this.limits[e])}getValueAt(t){return this.values[t]}getValues(){return[...this.values]}reset(){this.values.fill(0)}}function re(a,t){return t<=0?a.fXmin:t>a.fNbins?a.fXmax:a.GetBinLowEdge(t+1)}function dt(a,t,e,A,s,i,r){const u=t+1,n=a.GetBinLowEdge(u),o=re(a,u),c=Math.abs(o-n);if(r.size=c,r.pos=n+c*.5-a.fXmin,e){const h=(a.fXmax-a.fXmin)*a.fNbins/(e*a.fNbins);r.pos/=h,r.size/=h,r.size*=1-A,r.pos-=e*.5,r.pos+=s}}function oe(a,t,e,A,s,i,r){dt(a.fXaxis,t.x,e?.x,A?.x,s?.x,i,r.x),dt(a.fYaxis,t.y,e?.z,A?.y,s?.z,i,r.y),dt(a.fZaxis,t.z,e?.y,A?.z,s?.y,i,r.z)}function ae(a){const t=a.y.size,e=a.y.pos;return a.y.size=a.z.size,a.y.pos=a.z.pos,a.z.size=t,a.z.pos=e,a}function ce(a,t,e,A,s,i,r){return oe(a,t,A,e,s,i,r),r}function le(a,t,e){return e.z.pos=2*a-e.z.pos,e}function xt(a,t){if(a.length!==t.length)return!1;const e={};for(const A of a)e[A]=(e[A]||0)+1;for(const A of t){if(!e[A])return!1;e[A]--}return!0}function he(a,t){if(!Array.isArray(a)||!Array.isArray(t)||a.length!==t.length)return!1;for(let e=0;e<a.length;e++){const A=Object.keys(a[e]),s=Object.keys(t[e]);if(A.length!==s.length)return!1;for(const i of A){if(!t[e].hasOwnProperty(i))return!1;const r=a[e][i],u=t[e][i];if(typeof r!=typeof u)return!1;if(typeof r=="object"){if(!r||!u){if(r!==u)return!1;continue}const n=Object.keys(r),o=Object.keys(u);if(n.length!==o.length)return!1;for(const c of n)if(!u.hasOwnProperty(c)||r[c]!==u[c])return!1}else if(r!==u)return!1}}return!0}function gt(a,t,e,A){let s=Array(a.length).fill(0);const i=(r,u,n)=>{const o=u.fXaxis.fNbins,c=u.fYaxis.fNbins;u.fZaxis.fNbins;const h=e.slice(-e.length+r+1).reduce((f,w)=>f*w,1);if(s[n]+=(a[r].x+a[r].y*o+a[r].z*o*c)*h,r+1<a.length){let f;u.children.content?f=u.children.content[u.getBin(a[r].x+1,a[r].y+1,a[r].z+1)]:f=u.children[A[0]][u.getBin(a[r].x+1,a[r].y+1,a[r].z+1)],n>r&&i(r+1,f,n)}};for(let r=0;r<a.length;r++)i(0,t,r);return s}function L(a,t,e){let A=Array(a.length).fill(0);for(let s=0;s<a.length;s++)if(A[s]=t.getBin(a[s].x+1,a[s].y+1,a[s].z+1),t.children)t.children?.content?t=t.children.content[A[s]]:t=t.children[e[0]]?.[A[s]];else return A;return A}function k(a,t,e,A,s,i=0){const r=["x","y","z"],u=Number.parseInt(e._typename.substring(2,3),10);let n={};if(a[0]){for(let o=0;o<u;o++){const c=r[o],l=e[`f${c.toUpperCase()}axis`],h=a[0][c];n[c]={min:l.GetBinLowEdge(h+1),max:l.GetBinCenter(h+1)*2-l.GetBinLowEdge(h+1),name:l.fName,title:l.fTitle,label:l.fLabels?.arr[h]?.fString}}n={...n,color:A.getColorAt(i,t),name:e.fName}}if(a[1]){let o;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,...k(a.slice(1),t,o,A,s,i+1)]}else return[n]}function ue(a,t,e,A){let s=0;const i=e.slice(1),r=[];for(let n=0;n<i.length;n++){const o=i.slice(n).reduce((c,l)=>c*l,1);r.push(o)}const u=(n,o)=>{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;if(s+=f*r[n],n+1<a.length){const w=fe(o,a[n],A);u(n+1,w)}};return u(0,t),s}function fe(a,t,e){const A=a.getBin(t.x+1,t.y+1,t.z+1);return a.children.content?a.children.content[A]:a.children[e[0]][A]}function mt(a,t,e){const A=t.splice(0,1)[0];return t.length>0?mt(a.children.content[A],t,e):a.children.content?a.children.content[A]:a.children[e][A]}function de(a){if(!a)return;const t=s=>{let i=-1/0;for(let r=0;r<s.length;r++){const u=s[r];u>i&&(i=u)}return i},e=[];e[0]={content:t(a.fArray)},a.fArrays&&Object.keys(a?.fArrays).forEach(s=>{e[0]={...e[0],[s]:t(a.fArrays[s].values)}});const A=(s,i=1)=>{e[i]||(e[i]={}),Object.entries(s).forEach(([r,u])=>{u.forEach(n=>{if(!n)return;const o=t(n.fArray);(!(r in e[i])||o>e[i][r])&&(e[i][r]=o),n.fArrays&&Object.keys(n.fArrays).forEach(c=>{const l=n.fArrays[c].max;(!(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))}),n.children&&A(n.children,i+1)})})};return a.children&&A(a.children),e}function ge(a,t){if(!a)return;const e=i=>{let r=0;for(let u=0;u<i.length;u++){const n=i[u];n>r&&(r=n)}return r},A=[];A[0]={content:e(a.fSumw2)},a.fArrays&&Object.keys(a?.fArrays).forEach(i=>{a.fArrays[i].errors&&(A[0]={...A[0],[i]:e(a.fArrays[i].errors)})});const s=(i,r=1)=>{A[r]||(A[r]={}),Object.entries(i).forEach(([u,n])=>{n.forEach(o=>{if(!o)return;const c=e(o.fSumw2),l=isNaN(c)?0:c;(!(u in A[r])||l>A[r][u])&&(A[r][u]=l),o.fArrays&&Object.keys(o.fArrays).forEach(h=>{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)))}),o.children&&s(o.children,r+1)})})};a.children&&s(a.children);for(let i=0;i<A.length;i++)Object.keys(A[i]).forEach(r=>{A[i][r]===0&&(A[i][r]=Math.sqrt(t[i][r]))});return A}function me(a,t){if(!a)return;const e=i=>{let r=1/0;for(let u=0;u<i.length;u++){const n=i[u];n!==0&&n<r&&(r=n)}return r},A=[];A[0]={content:e(a.fSumw2)},a.fArrays&&Object.keys(a?.fArrays).forEach(i=>{a.fArrays[i].errors&&(A[0]={...A[0],[i]:e(a.fArrays[i].errors)})});const s=(i,r=1)=>{A[r]||(A[r]={}),Object.entries(i).forEach(([u,n])=>{n.forEach(o=>{if(!o)return;const c=e(o.fSumw2),l=isNaN(c)?0:c;(!(u in A[r])||l<A[r][u])&&(A[r][u]=l),o.fArrays&&Object.keys(o.fArrays).forEach(h=>{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))))}),o.children&&s(o.children,r+1)})})};a.children&&s(a.children);for(let i=0;i<A.length;i++)Object.keys(A[i]).forEach(r=>{(A[i][r]===0||A[i][r]===1/0)&&(A[i][r]=Math.sqrt(t[i][r]))});return A}function Ce(a){if(!a)return;const t=s=>{let i=1/0;for(let r=0;r<s.length;r++){const u=s[r];u<i&&(i=u)}return i},e=[];e[0]={content:t(a.fArray.filter(s=>s!==0))},a.fArrays&&Object.keys(a?.fArrays).forEach(s=>{e[0]={...e[0],[s]:t(a.fArrays[s].values.filter(i=>i!==0))}});const A=(s,i=1)=>{e[i]||(e[i]={}),Object.entries(s).forEach(([r,u])=>{u.forEach(n=>{if(!n)return;const o=t(n.fArray.filter(c=>c!==0));(!(r in e[i])||o<e[i][r])&&(e[i][r]=o),n.fArrays&&Object.keys(n.fArrays).forEach(c=>{(!(c in e[i])||o>e[i][c])&&(e[i][c]=o),e[i][c]=Math.min(e[i][c],t(n.fArrays[c].values.filter(l=>l!==0)))}),n.children&&A(n.children,i+1)})})};return a.children&&A(a.children),e}function Be(a){if(!a)return;const t=a.fXaxis.fNbins*a.fYaxis.fNbins*a.fZaxis.fNbins;let e=[];e.push(t);const A=(s,i=1)=>{let r=0;return i>=e.length&&e.push(1),Object.entries(s).forEach((u,n)=>{u[1].forEach(o=>{o&&(r=o.fXaxis.fNbins*o.fYaxis.fNbins*o.fZaxis.fNbins,r>e[i]&&(e[i]=r),o.children&&A(o.children,i+1))})}),e};return a.children&&A(a.children),e.push(1),e}function we(a,t,e){new d.Color(a.color.default.min).toArray(e,0),new d.Color(a.color.default.max).toArray(e,3);let A=1;a.color.layer.forEach(s=>{const i=A*6;new d.Color(s.min).toArray(e,i),new d.Color(s.max).toArray(e,i+3),A++}),a.color.set.forEach(s=>{const i=A*6;new d.Color(s.min).toArray(e,i),new d.Color(s.max).toArray(e,i+3),A++}),t.uniforms.colorPairs={value:e},t.uniformsNeedUpdate=!0}function It(a,t,e,A,s,i){const u=((o,c,l)=>{let h=(o-c)/(l-c);return h>1&&(h=1),isNaN(h)||h===1/0?0:h})(t,e,A);let n=0;return a.set[s]?n=1+a.layer.length+s:a.layer[i]&&(n=1+i),n+u}function vt(a,t,e,A,s,i,r){if(!(1/a===-1/0||a<0))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;const n=Math.abs(a),o=i!==null?A[s][i]:A[s];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}const pe=a=>{if(!a)return!1;for(const t in a)if(t!=="content"&&Object.prototype.hasOwnProperty.call(a,t)&&a[t]&&typeof a[t]=="object"&&Object.keys(a[t]).length>0)return!0;return!1};function R(a,t,e,A,s,i,r){const u=t.fXaxis.fNbins,n=t.fYaxis.fNbins,o=t.fZaxis.fNbins;let c=0,l=0;const h=new Float32Array((u*n*o-1)*3),f=new Float32Array((u*n*o-1)*3),w=new Float32Array(u*n*o-1),g=new Float32Array(u*n*o-1),C=new Float32Array(u*n*o-1),m=new Float32Array(6),b=new Float32Array(6),B=p=>{const v=y*3;h[v]=p[0],h[v+1]=p[1],h[v+2]=p[2],f[v]=p[3],f[v+1]=p[4],f[v+2]=p[5],w[y]=p[6],g[y]=p[7],C[y]=p[8]},x=(p,v,Q,j)=>{vt(p,h,f,a,Q,j,m),vt(v,h,f,a,Q,j,b);const N=m[0]-m[3]*.5<b[0]-b[3]*.5?m[0]-m[3]*.5:b[0]-b[3]*.5,G=m[1]-m[4]*.5<b[1]-b[4]*.5?m[1]-m[4]*.5:b[1]-b[4]*.5,U=m[2]-m[5]*.5<b[2]-b[5]*.5?m[2]-m[5]*.5:b[2]-b[5]*.5,O=m[0]+m[3]*.5>b[0]+b[3]*.5?m[0]+m[3]*.5:b[0]+b[3]*.5,P=m[1]+m[4]*.5>b[1]+b[4]*.5?m[1]+m[4]*.5:b[1]+b[4]*.5,z=m[2]+m[5]*.5>b[2]+b[5]*.5?m[2]+m[5]*.5:b[2]+b[5]*.5,E=new Float32Array(9);return E[0]=(N+O)*.5,E[1]=(G+P)*.5,E[2]=(U+z)*.5,E[3]=O-N,E[4]=P-G,E[5]=z-U,E};let y=0;for(let p=0;p<n;p++){for(let Q=0;Q<o;Q++){const j=c+r;let N=new Array(u);for(let G=0;G<u;G++)N[G]=-G-j;for(;N.length>1;){let G=0;const U=Math.floor(N.length/2);for(let O=0;O<U;O++){const P=N[G],z=N[G+1],E=x(P*3,z*3,e,A);N.splice(G,2,y),Ct(E,i),E[6]=1/P===-1/0||P<0?P:C[P],E[7]=1/z===-1/0||z<0?z:C[z],E[8]=l,B(E),y+=1,l+=1,G+=1}}c+=u}const v=new Array(o);for(let Q=0;Q<o;Q++)v[Q]=y-1-(o-1-Q)*(u-1);for(;v.length>1;){let Q=0;const j=Math.floor(v.length/2);for(let N=0;N<j;N++){const G=v[Q],U=v[Q+1],O=x(G*3,U*3,e,A);v.splice(Q,2,y),Ct(O,i),O[6]=C[G],O[7]=C[U],O[8]=l,B(O),y+=1,l+=1,Q+=1}}}const M=new Array(n);for(let p=0;p<n;p++)M[p]=y-1-(n-1-p)*(u*o-1);for(;M.length>1;){let p=0;const v=Math.floor(M.length/2);for(let Q=0;Q<v;Q++){const j=M[p],N=M[p+1],G=x(j*3,N*3,e,A);M.splice(p,2,y),Ct(G,i),G[6]=C[j],G[7]=C[N],G[8]=l,B(G),y+=1,l+=1,p+=1}}return{pos:h,scale:f,left:w,right:g}}function be(a,t,e,A,s,i,r,u){const n=new Array(a.length).fill().map(c=>[]);n[n.length-1]=Array.from({length:i.length},()=>[]),s===null?n[0]=[R(a,t,e,null,i,r,0)]:(n[0]=new Array(i.length),A.forEach(c=>n[0][i.indexOf(c)]=R(a,t,e,i.indexOf(c),i,r,0)));const o=(c,l,h)=>{if(!c.children)return;const f=new yt([c.fXaxis.fNbins,c.fYaxis.fNbins,c.fZaxis.fNbins]),w=c.fXaxis.fNbins*c.fYaxis.fNbins*c.fZaxis.fNbins,g=u.slice(1,l-1).reduce((m,b)=>m*b,u[1]),C=u[l];for(let m=0;m<w;m++){const b={x:f.getValueAt(0),y:f.getValueAt(1),z:f.getValueAt(2)};if(c?.children?.content){const B=c.children.content[c.getBin(b.x+1,b.y+1,b.z+1)];if(!B){if(f.increment()===!1)break;continue}n[l][m+h]=R(a,B,l,null,i,r,(m+h)*C),o(B,l+1,(f.getIndex()+h)*g)}else pe(c.children)&&A.forEach((B=>{const x=i.indexOf(B),y=(m+h)*C;let M=!1;for(let v=y;v<y+u[l];v++)if(a[l][x].rendered[v]!==-1){M=!0;break}if(!M){n[l][x].push(null);return}const p=c.children[B][c.getBin(b.x+1,b.z+1,b.y+1)];p&&(n[l][x][m+h]=R(a,p,l,x,i,r,(m+h)*C),o(p,l+1,(f.getIndex()+h)*g))}));if(f.increment()===!1)break}};return o(t,1,0),n}function Ct(a,t){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]);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}class Bt{rootObj=void 0;origin=void 0;parentPath=[];path=void 0;title=void 0;range=[];isOnSet=null;isHistogramFilled=!0;constructor(t){this.rootObj=t,this.origin=this.rootObj,this.title=this.origin.fTitle,this.path=this.origin.fName}setOriginToChild(t,e,A){if(!t)return;const s=t.splice(0,1);if(this.origin?.children){if(this.origin.children?.content)this.parentPath.push({origin:this.origin,range:A.splice(0,1),bin:s}),this.origin=this.origin.children.content[s],this.isOnSet=null;else if(Object.keys(this.origin.children).includes(e)){if(this.parentPath.push({origin:this.origin,range:A.splice(0,1),bin:s}),!this.origin.children[e][s]){this.isHistogramFilled=!1,this.path=this.path+"/empty",this.origin=null;return}this.origin=this.origin.children[e][s],this.isOnSet=e}else{console.error("Bad set or index specified.");return}this.title=this.origin.fTitle,this.path=this.path+"/"+this.origin.fName,t.length>0&&this.setOriginToChild(t,e,A)}}getChildByPosition(t,e,A=this.origin){if(!t||t.length===0)return{...A};const s=t.splice(0,1)[0];return A?.children?A.children?.content?this.getChildByPosition(t,e,A.children.content[s]):Object.keys(A.children).includes(e)?this.getChildByPosition(t,e,A.children[e][s]):(console.error("Bad set or index specified."),null):{...A}}setOriginToParent(t=1){if(t<=0||this.parentPath.length===0)return;const e=this.path.lastIndexOf("/");this.path=this.path.slice(0,e);const A=this.parentPath.pop();A&&(this.origin=A.origin),this.title=this.origin.fTitle,this.setOriginToParent(t-1),this.isOnSet=null,this.isHistogramFilled=!0}}class Me{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(t,e,A,s){this.config=A,this.maxInstancesPerLayer=t,this.id=s;const i=new d.BoxGeometry(1,1,1),r=new d.EdgesGeometry(i);this.instGeom=new d.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=r.index;for(const u in r.attributes)this.instGeom.setAttribute(u,r.attributes[u]);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 d.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute("instanceScale",new d.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute("instanceColorIndex",new d.InstancedBufferAttribute(this.instanceColors,1)),this.wireframe=new d.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,this.stateSub=H(this.id).getObservable().subscribe(u=>{this.numOfavailableSets=u.sets.length})}pushVisibleInstances(t,e,A){let s=this.wireframe.parent;s&&(s.remove(this.wireframe),this.instGeom.dispose());const i=this.config.display.start??0,r=this.config.display.end??t.length-1,u=[];let n=t.length-1;{const x=(Array.isArray(t[n])?t[n][A]:t[n]).rendered,y=new Uint8Array(x.length);for(let M=0;M<x.length;M++)y[M]=x[M]!==-1?1:0;u[n]=y}for(let B=n-1;B>=0;B--){const y=(Array.isArray(t[B])?t[B][A]:t[B]).rendered,M=u[B+1],p=e[B+1]||0,v=new Uint8Array(y.length);for(let Q=0;Q<y.length;Q++){if(y[Q]!==-1){v[Q]=1;continue}const j=Q*p,N=j+p;for(let G=j;G<N;G++)if(M[G]){v[Q]=1;break}}u[B]=v}const o=(B,x)=>B<i||B>r?!1:u[B][x]===1,c=(B,x)=>{let y=0,M=B,p=x;for(;M+1<t.length;){M++,p*=e[M];const v=t[M],Q=Array.isArray(v)?v[A===-1?0:A]:v;for(let j=p;j<p+e[M];j++)if(Q.rendered[j]!==-1){y=M-B;break}}return y};let l=0;for(let B=0;B<t.length;B++){const x=t[B];if(!Array.isArray(x))for(let y=0;y<x.rendered.length;y++)o(B,y)&&l++}const h=new Float32Array(l*3),f=new Float32Array(l*3),w=new Float32Array(l);let g=0;for(let B=0;B<t.length;B++){const x=t[B],y=this.getColorIndex(B,A);if(!Array.isArray(x)){for(let M=0;M<x.rendered.length;M++)if(o(B,M)){const p=c(B,M)*.05;h[g*3]=x.pos[M*3],h[g*3+1]=x.pos[M*3+1],h[g*3+2]=x.pos[M*3+2],f[g*3]=x.scale[M*3]+p,f[g*3+1]=x.scale[M*3+1]+p,f[g*3+2]=x.scale[M*3+2]+p,w[g++]=y}}}const C=new d.BoxGeometry(1,1,1),m=new d.EdgesGeometry(C);this.instGeom=new d.InstancedBufferGeometry,this.instGeom.instanceCount=l,this.instGeom.frustumCulled=!1,this.instGeom.index=m.index;const b=m.attributes;for(const B in b)this.instGeom.setAttribute(B,b[B]);this.instancePositions=h,this.instanceScales=f,this.instanceColors=w,this.instGeom.setAttribute("instancePosition",new d.InstancedBufferAttribute(h,3)),this.instGeom.setAttribute("instanceScale",new d.InstancedBufferAttribute(f,3)),this.instGeom.setAttribute("instanceColorIndex",new d.InstancedBufferAttribute(w,1)),this.wireframe=new d.LineSegments(this.instGeom,this.material),this.wireframe.frustumCulled=!1,s&&s.add(this.wireframe)}toggleVisibility(t,e,A){this.visibility=!this.visibility,this.visibility?this.pushVisibleInstances(t,e,A):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 d.Color(this.config.color.default).toArray(this.colorArray,0);let t=1;this.config.color.layer.map(e=>new d.Color(e)).forEach(e=>{const A=t*3;e.toArray(this.colorArray,A),t++}),this.config.color.set.map(e=>new d.Color(e)).forEach(e=>{const A=t*3;e.toArray(this.colorArray,A),t++}),this.material.uniforms.colorArray={value:this.colorArray},this.material.uniformsNeedUpdate=!0}createMaterial(){return new d.ShaderMaterial({vertexShader:`
37
37
  attribute vec3 instancePosition;
38
38
  attribute vec3 instanceScale;
39
39
  attribute float instanceColorIndex;
@@ -54,7 +54,7 @@
54
54
  void main() {
55
55
  gl_FragColor = vec4(vColor, 1.0);
56
56
  }
57
- `,transparent:!1})}getColorIndex(t,e){return this.config.color.set[e]?this.config.color.layer.length+1:this.config.color.layer[t]?t+1:0}getColorAt(t,e){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}}class Me{id=void 0;functionSub=void 0;configSub=void 0;dispatchSub=void 0;rootObj=void 0;config=void 0;limits={scale:{x:20,y:10,z:20},position:{x:0,y:0,z:-5}};mouseEvents=[];keydownEvents=[];keyupEvents=[];keyBindings={};renderHistory=[];opts=void 0;constructor(t,e,A){this.rootObj=t.obj,this.id=e,this.opts=A,this.config=W().mergeHistogramConfig(this?.opts?.config),this.functionSub=st().getObservable().pipe(D.filter(s=>s.target.entity==="nested-histogram"&&(s.target.id.includes("*")||s.target.id.includes(this.id)))).subscribe(s=>this.functionSubjectHandler(s)),this.configSub=W().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>this.configSubjectHandler(s)),this.dispatchSub=pt().getObservable().pipe(D.filter(s=>s.target.id==="*"||s.target.id===this.id)).subscribe(s=>this.dispatchSubjectHandler(s)),this.initDefaultFunctions()}remove(){this.functionSub.unsubscribe(),this.configSub.unsubscribe(),this.dispatchSub.unsubscribe(),window.removeEventListener("keydown",this.keyDownHandler),window.removeEventListener("keydown",this.keyUpHandler)}initDefaultFunctions(){this.keyDownHandler=this.keyDownHandler.bind(this),this.keyUpHandler=this.keyUpHandler.bind(this),this.raycastHandler=this.raycastHandler.bind(this),this.mouseClickDefault=this.mouseClickDefault.bind(this),this.mousemoveDefault=this.mousemoveDefault.bind(this),this.shiftMouseClickDefault=this.shiftMouseClickDefault.bind(this),this.mouseDBClickDefault=this.mouseDBClickDefault.bind(this),this.shiftMouseDBClickDefault=this.shiftMouseDBClickDefault.bind(this),window.addEventListener("keydown",this.keyDownHandler),window.addEventListener("keydown",this.keyUpHandler),this.addEvent("mouseclick",this.mouseClickDefault),this.addEvent("mousemove",this.mousemoveDefault),this.addEvent("shiftmouseclick",this.shiftMouseClickDefault),this.addEvent("mousedbclick",this.mouseDBClickDefault),this.addEvent("shiftmousedbclick",this.shiftMouseDBClickDefault)}configSubjectHandler(t){console.log("default configSubjectHandler: ",t)}functionSubjectHandler(t){if(t.flag==="add")if(t.function)this.addEvent(t.event,t.function);else switch(t.event){case"mousemove":this.addEvent(t.event,this.mousemoveDefault);break;case"mouseclick":this.addEvent(t.event,this.mouseClickDefault);break;case"shiftmouseclick":this.addEvent(t.event,this.shiftMouseClickDefault);break;case"mousedbclick":this.addEvent(t.event,this.mouseDBClickDefault);break;case"shiftmousedbclick":this.addEvent(t.event,this.shiftMouseDBClickDefault);break}else if(t.flag==="remove"&&t.function)this.removeEvent(t.event,t.function);else if(t.flag==="remove")switch(t?.state){case"keydown":this.keydownEvents=[];break;case"keyup":this.keyupEvents=[];break;default:this.mouseEvents=this.mouseEvents.filter(e=>e.event!==t.event)}else t.flag==="removeAll"&&(this.keydownEvents=[],this.keyupEvents=[],this.mouseEvents=[])}addEvent(t,e){t?.state==="keydown"?this.keydownEvents.push({key:t.key,function:e}):t?.state==="keyup"?this.keyupEvents.push({key:t.key,function:e}):this.mouseEvents.push({event:t,function:e})}removeEvent(t,e){const A=this.mouseEvents.find(s=>s===e);A&&this.mouseEvents.splice(A,1)}mouseClickDefault(t){console.log("mouse click default")}mousemoveDefault(t){console.log("mouse move default")}shiftMouseClickDefault(t){console.log("shift mouse click")}mouseDBClickDefault(t){console.log("mouseDBClick default")}shiftMouseDBClickDefault(t){console.log("shift mouse db click default")}dispatchSubjectHandler(t){console.log("dispatch: ",t)}}class ye extends Me{stateSub=void 0;pointer=void 0;wireframe=void 0;BVHTree=[];minMaxValue=[];maxInstancesPerLayer=void 0;maxContentPerLayer=void 0;maxErrorPerLayer=void 0;totalInstances=void 0;color=new g.Color;matrixCache=void 0;selectedSet=[];selectedArray="content";availableSets=[];dirtyInstance=[];mesh=void 0;instGeom=void 0;material=void 0;instancePositions=void 0;instanceScales=void 0;instanceColors=void 0;colorArray=void 0;constructor(t,e,A){super(t,e,A),this.pointer=new Ct(this.rootObj),this.handleStateChange=this.handleStateChange.bind(this),this.stateSub=Y(this.id).getObservable().subscribe(this.handleStateChange),this.init(!0),this.renderHistogram(0,this.totalInstances,0)}updateHistogram(t){let e;const A=this.mesh.parent;console.log("UPDATE V CORE_____________",A,", mesh: ",this.mesh),A&&(console.log("UPDATE V CORE_____________ PRESIEL",A),A.remove(this.mesh),this.pointer.isHistogramFilled&&(e=this.mesh.raycast,this.mesh.raycast=()=>{},this.wireframe.dispose(),this.instGeom.dispose()),this.matrixCache=[],this.BVHTree=[],this.availableSets=[],this.selectedSet=[],this.minMaxValue=[],Y(this.id).next({sets:[],selectedSet:[],arrays:["content"],selectedArray:"content",minMaxValue:[]}),this.rootObj=t.obj,this.pointer=new Ct(this.rootObj),this.init(!0),this.renderHistogram(0,this.totalInstances,0),setTimeout(()=>{A.add(this.mesh),this.mesh.raycast=e},0),A.add(this.wireframe.wireframe))}remove(){super.remove(),this.matrixCache=[],this.instGeom.dispose(),this.mesh.parent&&(this.mesh.parent.remove(this.mesh),this.wireframe.dispose()),this.stateSub.unsubscribe()}init(t=!1){if(this.maxInstancesPerLayer=Ce(this.pointer.origin),t){this.maxContentPerLayer=fe(this.pointer.origin),this.minContentPerLayer=me(this.pointer.origin),this.maxErrorPerLayer=ge(this.pointer.origin,this.maxContentPerLayer),this.minErrorPerLayer=de(this.pointer.origin,this.minContentPerLayer),this.setAvailableSets(this.pointer.origin),this.setAvailableArrays(this.pointer.origin);const e=new Array(this.maxContentPerLayer.length);for(let A=0;A<this.maxContentPerLayer.length;A++)e[A]={},Object.keys(this.maxContentPerLayer[A]).forEach(s=>{e[A][s]={value:{min:this.minContentPerLayer[A][s],max:this.maxContentPerLayer[A][s]},error:{min:this.minErrorPerLayer[A][s],max:this.maxErrorPerLayer[A][s]}}});console.log("minMaxValues: ",e),Y(this.id).next({...Y(this.id).getValue(),minMaxValue:e})}this.totalInstances=this.maxInstancesPerLayer.reduce((e,A)=>e*A,1),this.setupInsBufGeom(),this.wireframe=new be(this.maxInstancesPerLayer,this.matrixCache,this.config.wireframe,this.id)}setupMatrixCache(){this.matrixCache=new Array(this.maxInstancesPerLayer.length-1);const t=this.availableSets.length>0;t&&(this.matrixCache[this.matrixCache.length-1]=new Array(this.availableSets.length));let e=this.maxInstancesPerLayer[0];for(let s=0;s<this.maxInstancesPerLayer.length-1-(t?1:0);s++)this.matrixCache[s]={pos:new Float32Array(e*3),scale:new Float32Array(e*3),rendered:new Float32Array(e).fill(-1)},e*=this.maxInstancesPerLayer[s+1];if(!t)return;const A=this.matrixCache[this.matrixCache.length-1];for(let s=0;s<A.length;s++)A[s]={pos:new Float32Array(e*3),scale:new Float32Array(e*3),rendered:new Float32Array(e).fill(-1)}}setupInsBufGeom(){this.setupMatrixCache();let t=this.maxInstancesPerLayer.reduce((A,s)=>A*s,1);this.selectedSet.length>1&&(t*=this.selectedSet.length);const e=new g.BoxGeometry(1,1,1);this.instGeom=new g.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=e.index;for(const A in e.attributes)this.instGeom.setAttribute(A,e.attributes[A]);this.material=this.createMaterial(),this.colorArray=new Float32Array(192),this.material.uniforms.colorArray={value:this.colorArray},Be(this.config,this.material,this.colorArray),this.instancePositions=new Float32Array(3),this.instanceScales=new Float32Array(3),this.instanceColors=new Float32Array(1),this.instGeom.setAttribute("instancePosition",new g.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute("instanceScale",new g.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute("instanceColorIndex",new g.InstancedBufferAttribute(this.instanceColors,1)),this.mesh=new g.Mesh(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}pushVisibleInstances(){let t=this.mesh.parent;t&&(t.remove(this.mesh),this.instGeom.dispose());let e=0;for(let a=0;a<this.matrixCache.length;a++){const l=this.matrixCache[a];if(Array.isArray(l))for(let c=0;c<l.length;c++){const h=l[c];for(let f=0;f<h.rendered.length;f++)h.rendered[f]!==-1&&e++}else for(let c=0;c<l.rendered.length;c++)l.rendered[c]!==-1&&e++}const A=new Float32Array(e*3),s=new Float32Array(e*3),n=new Float32Array(e);let r=0;for(let a=0;a<this.matrixCache.length;a++){const l=this.matrixCache[a];if(Array.isArray(l))for(let c=0;c<l.length;c++){const h=l[c];for(let f=0;f<h.rendered.length;f++)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],n[r++]=h.rendered[f])}else for(let c=0;c<l.rendered.length;c++)l.rendered[c]!==-1&&(A[r*3]=l.pos[c*3],A[r*3+1]=l.pos[c*3+1],A[r*3+2]=l.pos[c*3+2],s[r*3]=l.scale[c*3],s[r*3+1]=l.scale[c*3+1],s[r*3+2]=l.scale[c*3+2],n[r++]=l.rendered[c])}const u=new g.BoxGeometry(1,1,1);this.instGeom=new g.InstancedBufferGeometry,this.instGeom.instanceCount=e,this.instGeom.frustumCulled=!1,this.instGeom.index=u.index;const i=u.attributes;for(const a in i)this.instGeom.setAttribute(a,i[a]);this.instancePositions=A,this.instanceScales=s,this.instanceColors=n,this.instGeom.setAttribute("instancePosition",new g.InstancedBufferAttribute(A,3)),this.instGeom.setAttribute("instanceScale",new g.InstancedBufferAttribute(s,3)),this.instGeom.setAttribute("instanceColorIndex",new g.InstancedBufferAttribute(n,1)),this.mesh=new g.Mesh(this.instGeom,this.material),this.mesh.raycast=this.raycastHandler,this.mesh.frustumCulled=!1,t&&t.add(this.mesh)}setMatrixCacheAt(t,e,A,s,n){const r=e!==null?this.matrixCache[t][e]:this.matrixCache[t];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]=n}renderHistogram(t,e,A){if(!this.pointer||A>=this.maxInstancesPerLayer.length-1)return;this.logRender({procedure:"render",value:{startIndex:t,endIndex:e,layer:A}});const s={x:{size:0,pos:0},y:{size:0,pos:0},z:{size:0,pos:0}},n=async(r,u,i,a,l,c)=>{if(i>A||!a)return;const h=new Mt([a.fXaxis.fNbins,a.fYaxis.fNbins,a.fZaxis.fNbins]);let f,B,d,m,w,b;const C=a.fArrays?.[this.selectedArray]?.outside??!1,x=this.selectedSet.indexOf(c),y=this.availableSets.indexOf(c),p=this.config.scale.scaleBy==="value";if(c)if(this.config.scale.sets==="fixed")({min:f,max:B}=this.minMaxValue[i+this.pointer.parentPath.length][c].value),{min:m,max:d}=this.minMaxValue[i+this.pointer.parentPath.length][c].error;else if(this.config.scale.sets==="relative"){const E=a.fSumw2.filter(M=>M!==0),z=p?a.fArray.filter(M=>M!==0):E;f=Math.min(...z),B=Math.max(...z),d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][c],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][c]}else f=p?this.minContentPerLayer[i+this.pointer.parentPath.length][c]:-.1,B=p?this.maxContentPerLayer[i+this.pointer.parentPath.length][c]:this.maxErrorPerLayer[i+this.pointer.parentPath.length][c],d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][c],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][c];else if(this.selectedArray!=="content"&&a.fArrays)if(this.config.scale.parameter==="fixed")({min:f,max:B}=this.minMaxValue[i+this.pointer.parentPath.length][this.selectedArray].value),{min:m,max:d}=this.minMaxValue[i+this.pointer.parentPath.length][this.selectedArray].error;else if(this.config.scale.parameter==="relative"){const E=a.fArrays[this.selectedArray].errors.filter(M=>M!==0),z=p?a.fArrays[this.selectedArray].values.filter(M=>M!==0):E;f=Math.min(...z),B=Math.max(...z),d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][this.selectedArray],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][this.selectedArray]}else f=p?this.minContentPerLayer[i+this.pointer.parentPath.length][this.selectedArray]:-.1,B=p?this.maxContentPerLayer[i+this.pointer.parentPath.length][this.selectedArray]:this.maxErrorPerLayer[i+this.pointer.parentPath.length][this.selectedArray],d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][this.selectedArray],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][this.selectedArray];else{const E=this.pointer.isOnSet??"content";if(this.config.scale.content==="fixed")({min:f,max:B}=this.minMaxValue[i+this.pointer.parentPath.length][E].value),{min:m,max:d}=this.minMaxValue[i+this.pointer.parentPath.length][E].error;else if(this.config.scale.content==="relative"){const z=a.fSumw2.filter(H=>H!==0),M=p?a.fArray.filter(H=>H!==0):z;f=Math.min(...M),B=Math.max(...M),d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][E],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][E]}else f=p?this.minContentPerLayer[i+this.pointer.parentPath.length][E]:-.1,B=p?this.maxContentPerLayer[i+this.pointer.parentPath.length][E]:this.maxErrorPerLayer[i+this.pointer.parentPath.length][E],d=this.maxErrorPerLayer[i+this.pointer.parentPath.length][E],m=this.minErrorPerLayer[i+this.pointer.parentPath.length][E]}f===B&&(f=B-.2);const I=a._typename.substring(0,3)==="TH3",v=a._typename.substring(0,3)==="TH2",Q=a._typename.substring(0,3)==="TH1",j=this.maxInstancesPerLayer.slice(i+1).reduce((E,z)=>E*z,1);h.setFromNumber(r/j);const N=this.config.padding.layer[i]??this.config.padding.default;let G=!this.config.padding.layer[i]&&Q?{x:N.x,y:N.y,z:N.z}:{...N};c&&this.config.padding.sets&&Q&&(G={x:this.config.padding.sets.x,y:0,z:0}),this.pointer.isOnSet&&(G={x:0,y:0,z:0});const{min:S,max:O}=this.config.scale?.[i]?this.config.scale?.[i]:this.config.scale.default;for(let E=r;E<u;E+=j){const z={x:h.getValueAt(0),y:h.getValueAt(1),z:h.getValueAt(2)},M=ce(l.position.z,l.scale.z,oe(ae(a,z,G,l?.scale,l?.position,i,s))),H=this.getBinContent(a,z.x,z.y,z.z,this.selectedArray),vt=this.getBinError(a,z.x,z.y,z.z,this.selectedArray),k=this.config.scale.scaleBy==="value"?H:vt;let X=this.config.scale.scaleBy==="value"?f:m;const Bt=this.config.scale.scaleBy==="value"?B:d;X===Bt&&(X-=X*.1);let U=1;if(k>=X==!C){const P=(k-X)/(Bt-X);if(!C)U=Number.isInteger(k)&&k===0&&this.config.scale.scaleBy==="value"?U=0:(O-S)*P+S,U>1&&(U=1);else{const V=(H-w)/(b-w);U=Number.isInteger(H)&&H===0?U=0:(O-S)*V+S}}else U=0;this.config.color.scaleBy==="value"?this.color=xt(this.config.color,k,X,Bt,y,i):this.color=xt(this.config.color,vt,m,d,y,i);const Z=M.y.size*U;if(U===0)M.x.size=0,M.z.size=0,M.y.size=0;else if(I)M.x.size*=U,M.z.size*=U,M.y.size=Z;else if(v)M.y.pos-=(M.y.size-Z)/2,M.y.size=Z;else if(M.y.pos-=(M.y.size-Z)/2,M.y.size=Z,c){const P=this.config.TH1ZScale.set;M.z.size=P||.01}else this.config.TH1ZScale?.layer?.[i]?M.z.size=l.scale.z*this.config.TH1ZScale.layer[i]:M.z.size=l.scale.z*this.config.TH1ZScale.default;if(c)M.z.size=.01,M.z.pos+=(x-(this.selectedSet.length-1)/2)*.1,this.setMatrixCacheAt(i,y,E/j,M,i===A&&U!==0?this.color:-1);else{let P=null;this.pointer.isOnSet&&(M.z.size=.01,M.z.pos+=(x-(this.selectedSet.length-1)/2)*.1,P=this.availableSets.indexOf(this.pointer.isOnSet)),this.setMatrixCacheAt(i,P,E/j,M,i===A&&U!==0?this.color:-1)}if(i===A){let P=E;c&&(P+=this.totalInstances*x)}else{const P=a.getBin(z.x+1,z.y+1,z.z+1);let V;const Et={position:new g.Vector3(M.x.pos,M.y.pos,M.z.pos),scale:new g.Vector3(M.x.size,M.y.size,M.z.size)};a.children.content?(V=a.children.content[P],n(E,u,i+1,V,Et)):this.selectedSet.forEach(Qt=>{V=a.children[Qt][P],n(E,u,i+1,V,Et,Qt)})}if(!h.increment())break}};(this.pointer.isOnSet?Promise.all(this.selectedSet.map(r=>n(t,e,0,dt(this.pointer.rootObj,this.pointer.parentPath.map(u=>u.bin[0]),r),this.limits,r))):n(t,e,0,this.pointer.origin,this.limits)).then(()=>{setTimeout(()=>{this.pointer.isOnSet||this.wireframe.pushVisibleInstances(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(this.selectedSet[0])),this.pushVisibleInstances();const r=this.availableSets.indexOf(this.pointer.isOnSet)===-1?null:this.availableSets.indexOf(this.pointer.isOnSet);this.BVHTree=pe(this.matrixCache,this.pointer.origin,0,this.selectedSet,r,this.availableSets,this.mesh.matrixWorld,this.maxInstancesPerLayer)},0)})}createMaterial(){return new g.ShaderMaterial({vertexShader:`
57
+ `,transparent:!1})}getColorIndex(t,e){return this.config.color.set[e]?this.config.color.layer.length+1:this.config.color.layer[t]?t+1:0}getColorAt(t,e){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}}class ye{id=void 0;functionSub=void 0;configSub=void 0;dispatchSub=void 0;rootObj=void 0;config=void 0;limits={scale:{x:20,y:10,z:20},position:{x:0,y:0,z:-5}};mouseEvents=[];keydownEvents=[];keyupEvents=[];keyBindings={};renderHistory=[];opts=void 0;constructor(t,e,A){this.rootObj=t.obj,this.id=e,this.opts=A,this.config=X().mergeHistogramConfig(this?.opts?.config),this.functionSub=it().getObservable().pipe(D.filter(s=>s.target.entity==="nested-histogram"&&(s.target.id.includes("*")||s.target.id.includes(this.id)))).subscribe(s=>this.functionSubjectHandler(s)),this.configSub=X().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>this.configSubjectHandler(s)),this.dispatchSub=bt().getObservable().pipe(D.filter(s=>s.target.id==="*"||s.target.id===this.id)).subscribe(s=>this.dispatchSubjectHandler(s)),this.initDefaultFunctions()}remove(){this.functionSub.unsubscribe(),this.configSub.unsubscribe(),this.dispatchSub.unsubscribe(),window.removeEventListener("keydown",this.keyDownHandler),window.removeEventListener("keydown",this.keyUpHandler)}initDefaultFunctions(){this.keyDownHandler=this.keyDownHandler.bind(this),this.keyUpHandler=this.keyUpHandler.bind(this),this.raycastHandler=this.raycastHandler.bind(this),this.mouseClickDefault=this.mouseClickDefault.bind(this),this.mousemoveDefault=this.mousemoveDefault.bind(this),this.shiftMouseClickDefault=this.shiftMouseClickDefault.bind(this),this.mouseDBClickDefault=this.mouseDBClickDefault.bind(this),this.shiftMouseDBClickDefault=this.shiftMouseDBClickDefault.bind(this),window.addEventListener("keydown",this.keyDownHandler),window.addEventListener("keydown",this.keyUpHandler),this.addEvent("mouseclick",this.mouseClickDefault),this.addEvent("mousemove",this.mousemoveDefault),this.addEvent("shiftmouseclick",this.shiftMouseClickDefault),this.addEvent("mousedbclick",this.mouseDBClickDefault),this.addEvent("shiftmousedbclick",this.shiftMouseDBClickDefault)}configSubjectHandler(t){console.log("default configSubjectHandler: ",t)}functionSubjectHandler(t){if(t.flag==="add")if(t.function)this.addEvent(t.event,t.function);else switch(t.event){case"mousemove":this.addEvent(t.event,this.mousemoveDefault);break;case"mouseclick":this.addEvent(t.event,this.mouseClickDefault);break;case"shiftmouseclick":this.addEvent(t.event,this.shiftMouseClickDefault);break;case"mousedbclick":this.addEvent(t.event,this.mouseDBClickDefault);break;case"shiftmousedbclick":this.addEvent(t.event,this.shiftMouseDBClickDefault);break}else if(t.flag==="remove"&&t.function)this.removeEvent(t.event,t.function);else if(t.flag==="remove")switch(t?.state){case"keydown":this.keydownEvents=[];break;case"keyup":this.keyupEvents=[];break;default:this.mouseEvents=this.mouseEvents.filter(e=>e.event!==t.event)}else t.flag==="removeAll"&&(this.keydownEvents=[],this.keyupEvents=[],this.mouseEvents=[])}addEvent(t,e){t?.state==="keydown"?this.keydownEvents.push({key:t.key,function:e}):t?.state==="keyup"?this.keyupEvents.push({key:t.key,function:e}):this.mouseEvents.push({event:t,function:e})}removeEvent(t,e){const A=this.mouseEvents.find(s=>s===e);A&&this.mouseEvents.splice(A,1)}mouseClickDefault(t){console.log("mouse click default")}mousemoveDefault(t){console.log("mouse move default")}shiftMouseClickDefault(t){console.log("shift mouse click")}mouseDBClickDefault(t){console.log("mouseDBClick default")}shiftMouseDBClickDefault(t){console.log("shift mouse db click default")}dispatchSubjectHandler(t){console.log("dispatch: ",t)}}class xe extends ye{stateSub=void 0;pointer=void 0;wireframe=void 0;BVHTree=[];minMaxValue=[];maxInstancesPerLayer=void 0;maxContentPerLayer=void 0;maxErrorPerLayer=void 0;totalInstances=void 0;color=new d.Color;matrixCache=void 0;selectedSet=[];selectedArray="content";availableSets=[];dirtyInstance=[];mesh=void 0;instGeom=void 0;material=void 0;instancePositions=void 0;instanceScales=void 0;instanceColors=void 0;colorArray=void 0;constructor(t,e,A){if(!t||!t.obj)throw console.error("THnPainter constructor: histo or histo.obj is undefined",t),new Error("THnPainter: histo or histo.obj is undefined");super(t,e,A),console.log("THnPainter constructor start: "),this.pointer=new Bt(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")}async updateHistogram(t){if(!t||!t.obj)throw console.error("THnPainter constructor: histo or histo.obj is undefined",t),new Error("THnPainter: histo or histo.obj is undefined");console.log("THnPainter updateHistogram start => histo: ",t,", mesh: ",this.mesh,"uuid: ",this.mesh.uuid,"mesh.parent: ",this?.mesh?.parent??"undefined");let e;const A=this.mesh.parent;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=()=>{},this.wireframe.dispose(),this.instGeom.dispose()),this.matrixCache=[],this.BVHTree=[],this.availableSets=[],this.selectedSet=[],this.minMaxValue=[],H(this.id).next({sets:[],selectedSet:[],arrays:["content"],selectedArray:"content",minMaxValue:[]}),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 Bt(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)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");else throw new ReferenceError("THnPainter: parent is undefined")}remove(){super.remove(),this.matrixCache=[],this.instGeom.dispose(),this.mesh.parent&&(this.mesh.parent.remove(this.mesh),this.wireframe.dispose()),this.stateSub.unsubscribe()}init(t=!1){if(this.maxInstancesPerLayer=Be(this.pointer.origin),t){this.maxContentPerLayer=de(this.pointer.origin),this.minContentPerLayer=Ce(this.pointer.origin),this.maxErrorPerLayer=ge(this.pointer.origin,this.maxContentPerLayer),this.minErrorPerLayer=me(this.pointer.origin,this.minContentPerLayer),this.setAvailableSets(this.pointer.origin),this.setAvailableArrays(this.pointer.origin);const e=new Array(this.maxContentPerLayer.length);for(let A=0;A<this.maxContentPerLayer.length;A++)e[A]={},Object.keys(this.maxContentPerLayer[A]).forEach(s=>{e[A][s]={value:{min:this.minContentPerLayer[A][s],max:this.maxContentPerLayer[A][s]},error:{min:this.minErrorPerLayer[A][s],max:this.maxErrorPerLayer[A][s]}}});console.log("minMaxValues: ",e),H(this.id).next({...H(this.id).getValue(),minMaxValue:e})}this.totalInstances=this.maxInstancesPerLayer.reduce((e,A)=>e*A,1),this.setupInsBufGeom(),this.wireframe=new Me(this.maxInstancesPerLayer,this.matrixCache,this.config.wireframe,this.id)}setupMatrixCache(){this.matrixCache=new Array(this.maxInstancesPerLayer.length-1);const t=this.availableSets.length>0;t&&(this.matrixCache[this.matrixCache.length-1]=new Array(this.availableSets.length));let e=this.maxInstancesPerLayer[0];for(let s=0;s<this.maxInstancesPerLayer.length-1-(t?1:0);s++)this.matrixCache[s]={pos:new Float32Array(e*3),scale:new Float32Array(e*3),rendered:new Float32Array(e).fill(-1)},e*=this.maxInstancesPerLayer[s+1];if(!t)return;const A=this.matrixCache[this.matrixCache.length-1];for(let s=0;s<A.length;s++)A[s]={pos:new Float32Array(e*3),scale:new Float32Array(e*3),rendered:new Float32Array(e).fill(-1)}}setupInsBufGeom(){this.setupMatrixCache();let t=this.maxInstancesPerLayer.reduce((A,s)=>A*s,1);this.selectedSet.length>1&&(t*=this.selectedSet.length);const e=new d.BoxGeometry(1,1,1);this.instGeom=new d.InstancedBufferGeometry,this.instGeom.instanceCount=0,this.instGeom.frustumCulled=!1,this.instGeom.index=e.index;for(const A in e.attributes)this.instGeom.setAttribute(A,e.attributes[A]);this.material=this.createMaterial(),this.colorArray=new Float32Array(192),this.material.uniforms.colorArray={value:this.colorArray},we(this.config,this.material,this.colorArray),this.instancePositions=new Float32Array(3),this.instanceScales=new Float32Array(3),this.instanceColors=new Float32Array(1),this.instGeom.setAttribute("instancePosition",new d.InstancedBufferAttribute(this.instancePositions,3)),this.instGeom.setAttribute("instanceScale",new d.InstancedBufferAttribute(this.instanceScales,3)),this.instGeom.setAttribute("instanceColorIndex",new d.InstancedBufferAttribute(this.instanceColors,1)),this.mesh=new d.Mesh(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}pushVisibleInstances(){let t=this.mesh.parent;t&&(t.remove(this.mesh),this.instGeom.dispose());let e=0;for(let o=0;o<this.matrixCache.length;o++){const c=this.matrixCache[o];if(Array.isArray(c))for(let l=0;l<c.length;l++){const h=c[l];for(let f=0;f<h.rendered.length;f++)h.rendered[f]!==-1&&e++}else for(let l=0;l<c.rendered.length;l++)c.rendered[l]!==-1&&e++}const A=new Float32Array(e*3),s=new Float32Array(e*3),i=new Float32Array(e);let r=0;for(let o=0;o<this.matrixCache.length;o++){const c=this.matrixCache[o];if(Array.isArray(c))for(let l=0;l<c.length;l++){const h=c[l];for(let f=0;f<h.rendered.length;f++)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])}else for(let l=0;l<c.rendered.length;l++)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])}const u=new d.BoxGeometry(1,1,1);this.instGeom=new d.InstancedBufferGeometry,this.instGeom.instanceCount=e,this.instGeom.frustumCulled=!1,this.instGeom.index=u.index;const n=u.attributes;for(const o in n)this.instGeom.setAttribute(o,n[o]);this.instancePositions=A,this.instanceScales=s,this.instanceColors=i,this.instGeom.setAttribute("instancePosition",new d.InstancedBufferAttribute(A,3)),this.instGeom.setAttribute("instanceScale",new d.InstancedBufferAttribute(s,3)),this.instGeom.setAttribute("instanceColorIndex",new d.InstancedBufferAttribute(i,1)),this.mesh=new d.Mesh(this.instGeom,this.material),this.mesh.raycast=this.raycastHandler,this.mesh.frustumCulled=!1,t&&t.add(this.mesh)}setMatrixCacheAt(t,e,A,s,i){const r=e!==null?this.matrixCache[t][e]:this.matrixCache[t];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}async renderHistogram(t,e,A){if(!this.pointer||A>=this.maxInstancesPerLayer.length-1)return;this.logRender({procedure:"render",value:{startIndex:t,endIndex:e,layer:A}});const s={x:{size:0,pos:0},y:{size:0,pos:0},z:{size:0,pos:0}},i=async(u,n,o,c,l,h)=>{if(o>A||!c)return;const f=new yt([c.fXaxis.fNbins,c.fYaxis.fNbins,c.fZaxis.fNbins]);let w,g,C,m,b,B;const x=c.fArrays?.[this.selectedArray]?.outside??!1,y=this.selectedSet.indexOf(h),M=this.availableSets.indexOf(h),p=this.config.scale.scaleBy==="value";if(h)if(this.config.scale.sets==="fixed")({min:w,max:g}=this.minMaxValue[o+this.pointer.parentPath.length][h].value),{min:m,max:C}=this.minMaxValue[o+this.pointer.parentPath.length][h].error;else if(this.config.scale.sets==="relative"){const z=c.fSumw2.filter(I=>I!==0),E=p?c.fArray.filter(I=>I!==0):z;w=Math.min(...E),g=Math.max(...E),C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][h],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][h]}else w=p?this.minContentPerLayer[o+this.pointer.parentPath.length][h]:-.1,g=p?this.maxContentPerLayer[o+this.pointer.parentPath.length][h]:this.maxErrorPerLayer[o+this.pointer.parentPath.length][h],C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][h],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][h];else if(this.selectedArray!=="content"&&c.fArrays)if(this.config.scale.parameter==="fixed")({min:w,max:g}=this.minMaxValue[o+this.pointer.parentPath.length][this.selectedArray].value),{min:m,max:C}=this.minMaxValue[o+this.pointer.parentPath.length][this.selectedArray].error;else if(this.config.scale.parameter==="relative"){const z=c.fArrays[this.selectedArray].errors.filter(I=>I!==0),E=p?c.fArrays[this.selectedArray].values.filter(I=>I!==0):z;w=Math.min(...E),g=Math.max(...E),C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][this.selectedArray],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][this.selectedArray]}else w=p?this.minContentPerLayer[o+this.pointer.parentPath.length][this.selectedArray]:-.1,g=p?this.maxContentPerLayer[o+this.pointer.parentPath.length][this.selectedArray]:this.maxErrorPerLayer[o+this.pointer.parentPath.length][this.selectedArray],C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][this.selectedArray],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][this.selectedArray];else{const z=this.pointer.isOnSet??"content";if(this.config.scale.content==="fixed")({min:w,max:g}=this.minMaxValue[o+this.pointer.parentPath.length][z].value),{min:m,max:C}=this.minMaxValue[o+this.pointer.parentPath.length][z].error;else if(this.config.scale.content==="relative"){const E=c.fSumw2.filter(F=>F!==0),I=p?c.fArray.filter(F=>F!==0):E;w=Math.min(...I),g=Math.max(...I),C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][z],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][z]}else w=p?this.minContentPerLayer[o+this.pointer.parentPath.length][z]:-.1,g=p?this.maxContentPerLayer[o+this.pointer.parentPath.length][z]:this.maxErrorPerLayer[o+this.pointer.parentPath.length][z],C=this.maxErrorPerLayer[o+this.pointer.parentPath.length][z],m=this.minErrorPerLayer[o+this.pointer.parentPath.length][z]}w===g&&(w=g-.2);const v=c._typename.substring(0,3)==="TH3",Q=c._typename.substring(0,3)==="TH2",j=c._typename.substring(0,3)==="TH1",N=this.maxInstancesPerLayer.slice(o+1).reduce((z,E)=>z*E,1);f.setFromNumber(u/N);const G=this.config.padding.layer[o]??this.config.padding.default;let U=!this.config.padding.layer[o]&&j?{x:G.x,y:G.y,z:G.z}:{...G};h&&this.config.padding.sets&&j&&(U={x:this.config.padding.sets.x,y:0,z:0}),this.pointer.isOnSet&&(U={x:0,y:0,z:0});const{min:O,max:P}=this.config.scale?.layer?.[o]?this.config.scale?.layer[o]:this.config.scale.default;for(let z=u;z<n;z+=N){const E={x:f.getValueAt(0),y:f.getValueAt(1),z:f.getValueAt(2)},I=le(l.position.z,l.scale.z,ae(ce(c,E,U,l?.scale,l?.position,o,s))),F=this.getBinContent(c,E.x,E.y,E.z,this.selectedArray),Et=this.getBinError(c,E.x,E.y,E.z,this.selectedArray),Z=this.config.scale.scaleBy==="value"?F:Et;let V=this.config.scale.scaleBy==="value"?w:m;const wt=this.config.scale.scaleBy==="value"?g:C;V===wt&&(V-=V*.1);let S=1;if(Z>=V==!x){const Y=(Z-V)/(wt-V);if(!x)S=Number.isInteger(Z)&&Z===0&&this.config.scale.scaleBy==="value"?S=0:(P-O)*Y+O,S>1&&(S=1);else{const J=(F-b)/(B-b);S=Number.isInteger(F)&&F===0?S=0:(P-O)*J+O}}else S=0;this.config.color.scaleBy==="value"?this.color=It(this.config.color,Z,V,wt,M,o):this.color=It(this.config.color,Et,m,C,M,o);const q=I.y.size*S;if(S===0)I.x.size=0,I.z.size=0,I.y.size=0;else if(v)I.x.size*=S,I.z.size*=S,I.y.size=q;else if(Q)I.y.pos-=(I.y.size-q)/2,I.y.size=q;else if(I.y.pos-=(I.y.size-q)/2,I.y.size=q,h){const Y=this.config.TH1ZScale.set;I.z.size=Y||.01}else this.config.TH1ZScale?.layer?.[o]?I.z.size=l.scale.z*this.config.TH1ZScale.layer[o]:I.z.size=l.scale.z*this.config.TH1ZScale.default;if(h)I.z.size=.01,I.z.pos+=(y-(this.selectedSet.length-1)/2)*.1,this.setMatrixCacheAt(o,M,z/N,I,o===A&&S!==0?this.color:-1);else{let Y=null;this.pointer.isOnSet&&(I.z.size=.01,I.z.pos+=(y-(this.selectedSet.length-1)/2)*.1,Y=this.availableSets.indexOf(this.pointer.isOnSet)),this.setMatrixCacheAt(o,Y,z/N,I,o===A&&S!==0?this.color:-1)}if(o===A){let Y=z;h&&(Y+=this.totalInstances*y)}else{const Y=c.getBin(E.x+1,E.y+1,E.z+1);let J;const Qt={position:new d.Vector3(I.x.pos,I.y.pos,I.z.pos),scale:new d.Vector3(I.x.size,I.y.size,I.z.size)};c.children.content?(J=c.children.content[Y],i(z,n,o+1,J,Qt)):this.selectedSet.forEach(Gt=>{J=c.children[Gt][Y],i(z,n,o+1,J,Qt,Gt)})}if(!f.increment())break}};this.pointer.isOnSet?await Promise.all(this.selectedSet.map(u=>i(t,e,0,mt(this.pointer.rootObj,this.pointer.parentPath.map(n=>n.bin[0]),u),this.limits,u))):await i(t,e,0,this.pointer.origin,this.limits),this.pointer.isOnSet||this.wireframe.pushVisibleInstances(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(this.selectedSet[0])),this.pushVisibleInstances();const r=this.availableSets.indexOf(this.pointer.isOnSet)===-1?null:this.availableSets.indexOf(this.pointer.isOnSet);return this.BVHTree=be(this.matrixCache,this.pointer.origin,0,this.selectedSet,r,this.availableSets,this.mesh.matrixWorld,this.maxInstancesPerLayer),this.mesh}createMaterial(){return new d.ShaderMaterial({vertexShader:`
58
58
  attribute vec3 instancePosition;
59
59
  attribute vec3 instanceScale;
60
60
  attribute float instanceColorIndex;
@@ -82,5 +82,5 @@
82
82
  void main() {
83
83
  gl_FragColor = vec4(vColor, 1.0);
84
84
  }
85
- `,transparent:!1})}mouseClickDefault(t){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),ot().next({id:this.id+"-cinema",obj:t.jsrootObj})}mousemoveDefault(t){if(((f,B)=>{if(f.length!==B.length)return!1;for(let d=0;d<f.length;d++){const m=f[d],w=B[d];if(m.x!==w.x||m.y!==w.y||m.z!==w.z)return!1}return!0})(t.index,this.dirtyInstance)){this.dirtyInstance=null;return}const A=this.pointer.parentPath.map(f=>{const B=f.range[0];return{bin:f.bin[0],...B}});t.range=t.range.map((f,B)=>{const d=t.jsrootInstance[B];return{...f,bin:d}});const s={...t,level:A.length,range:A.concat(t.range)},{range:n,level:r,content:u,error:i,set:a,triggerSource:l,instanceId:c}=s,h={coords:n,level:r,content:u,error:i,set:a,triggerSource:l,instanceId:c};lt().next(h)}shiftMouseClickDefault(t){this.hideChildHistogram(t.index)}mouseDBClickDefault(t){t.set?this.setPointerToChild(t.index,t.set):this.setPointerToChild(t.index,this.selectedSet[0])}shiftMouseDBClickDefault(t){this.setPointerToParent()}intersectionHandler(t,e){this.mouseEvents.filter(A=>A.event===e).forEach(A=>A.function(t,this)),this.dirtyInstance=t.index}raycastHandler(t,e){try{const s=this.checkIntersectionBVH(t.ray)[0];if(s){const n=t._triggerSource;this.intersectionHandler(s,n),e.push(s)}}catch(A){console.log(A)}}handleStateChange(t){if(yt(t.sets,this.availableSets)&&(!yt(t.selectedSet,this.selectedSet)||this.selectedArray!==t.selectedArray)){this.selectedArray=t.selectedArray,this.selectedSet=t.selectedSet;const e=this.mesh.parent;this.instGeom.dispose(),e.remove(this.mesh),this.setupInsBufGeom(),e.add(this.mesh),this.renderHistogramHistory()}else this.minMaxValue.length!==0&&le(t.minMaxValue,this.minMaxValue)?this.renderHistogramHistory():(this.availableSets=t.sets,this.selectedSet=t.selectedSet,this.minMaxValue=t.minMaxValue)}renderHistogramHistory(){const t=this.renderHistory;this.renderHistory=[],t.forEach(e=>{e.procedure==="render"?this.renderHistogram(e.value.startIndex,e.value.endIndex,e.value.layer):e.procedure==="hide"&&this.hideChildHistogram(e.value)})}setPointerToChild(t,e){const A=this.mesh.parent;this.matrixCache=[],this.instGeom.dispose(),this.wireframe.dispose(),A.remove(this.mesh);const s=L(t,e,this.pointer.origin,this.wireframe,this.selectedSet);if(this.pointer.setOriginToChild(J(t,this.pointer.origin,this.selectedSet),e,s),!this.pointer.isHistogramFilled){this.mesh=Wt(this.limits,this.setPointerToParent.bind(this)),A.add(this.mesh);return}this.init(!1),console.log("path: ",this.pointer.path),console.log("title: ",this.pointer.title),setTimeout(()=>{this.renderHistogram(0,this.totalInstances,0),A.add(this.mesh),A.add(this.wireframe.wireframe)},0),this.pointer.isOnSet&&this.wireframe.toggleVisibility(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(e))}setPointerToParent(){const t=this.mesh.parent;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)}showChildHistogram(t){const e=gt(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),s=this.maxInstancesPerLayer.slice(-this.maxInstancesPerLayer.length+t.length).reduce((n,r)=>n*r,1);this.renderHistogram(e.slice(-1)[0],e.slice(-1)[0]+s,t.length)}hideChildHistogram(t){if(t.length===1)return;const e=this.maxInstancesPerLayer.slice(t.length-1),A=this.maxInstancesPerLayer.slice(t.length-1,this.maxInstancesPerLayer.length-1),s=e.reduce((u,i)=>u*i,1),n=he(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),r=Math.floor(n/s)*s;this.clearMatrixCacheRange(r,s,A,t.length-1),this.logRender({procedure:"hide",value:t}),this.renderHistogram(r,r+s,t.length-2),this.renderHistory.pop()}clearMatrixCacheRange(t,e,A,s){let n=t,r=e;const u={x:{pos:0,size:0},y:{pos:0,size:0},z:{pos:0,size:0}};for(let i=s+A.length-1;i>=s;i--){if(Array.isArray(this.matrixCache[i]))for(let a=0;a<this.matrixCache[i].length;a++)for(let l=n;l<n+r;l++)this.setMatrixCacheAt(i,a,l,u,-1);else for(let a=n;a<n+r;a++)this.setMatrixCacheAt(i,null,a,u,-1);i>s&&(n/=A[i-s],r/=A[i-s])}}setAvailableSets(t){if(t.children?.content){const e=t.children.content.find(A=>A);this.setAvailableSets(e)}else if(t?.children){const e=Y(this.id).getValue();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]]),Y(this.id).next(e)}else{const e=Y(this.id).getValue();e.sets=[],e.selectedSet=[]}}setAvailableArrays(t){const e=Y(this.id).getValue();e.arrays=[],t.fArrays&&(e.arrays=Object.keys(t.fArrays)),e.arrays.unshift("content");const A=s=>{const n=s.find(r=>r);n.fArrays&&(e.arrays=e.arrays.concat(Object.keys(n.fArrays))),n.children?.content&&A(n.children.content)};t.children?.content&&A(t.children.content),Y(this.id).next(e)}configSubjectHandler(t){this.config=W().mergeHistogramConfig(this?.opts?.config),this.keyBindings=Yt(t.config.bindings);const e=t.config.environment.histogramPads.find(A=>A.id===this.id);e&&!Ft(this.limits,e)&&this.renderHistory.length>0&&(this.limits={...e},this.renderHistogramHistory()),this.limits={...e}}keyDownHandler(t){const e=/^(?:Digit|Numpad)(\d+)$/,A=t.code.match(e);if(A){if(parseInt(A[1])>this.matrixCache.length)return;const s=new g.Object3D;s.scale.set(0,0,0),s.updateMatrix();let n=this.maxInstancesPerLayer.reduce((r,u)=>r*u,1);this.selectedSet.length>1&&(n*=this.selectedSet.length),this.setupMatrixCache(),this.wireframe.clearWireframe(),this.renderHistogram(0,this.totalInstances,parseInt(A[1])-1)}else t.key===this.keyBindings.hideOutlines?this.wireframe.toggleVisibility(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(this.selectedSet[0])):t.key===this.keyBindings.resetHistogram?this.resetHistogram():t.key===this.keyBindings.goToPreviousLayer&&this.setPointerToParent()}keyUpHandler(t){}resetHistogram(){this.updateHistogram({obj:this.rootObj})}logRender(t){t.procedure==="render"&&t.value.startIndex===0&&t.value.endIndex===this.totalInstances&&(this.renderHistory=[]),this.renderHistory.push(t)}getBinContent(t,e,A,s,n){if(n==="content"||!t.fArrays)return t.getBinContent(e+1,A+1,s+1);{const r=t.getBin(e+1,A+1,s+1);return t.fArrays?.[n].values[r]}}getBinError(t,e,A,s,n){const r=t.getBin(e+1,A+1,s+1);return n==="content"||!t.fArrays?t.fSumw2.length!==0?t.fSumw2[r]:t.getBinError(r):t.fArrays?.[n].errors[r]}checkIntersectionBVH(t){const e=new g.Vector3,A=(i,a,l,c)=>{if(a<0||1/a===-1/0){const h=a*-1,f=c&&c!=="content"?this.matrixCache[i]?.[this.availableSets.indexOf(c)]:this.matrixCache[i];return f?new g.Box3().setFromCenterAndSize(new g.Vector3(f.pos[h*3],f.pos[h*3+1],f.pos[h*3+2]),new g.Vector3(f.scale[h*3],f.scale[h*3+1],f.scale[h*3+2])):void 0}else{const h=c&&c!=="content"?Array.isArray(this.BVHTree[i][this.availableSets.indexOf(c)])?this.BVHTree[i][this.availableSets.indexOf(c)][l]:this.BVHTree[i][this.availableSets.indexOf(c)]:this.BVHTree[i][l];return h?new g.Box3().setFromCenterAndSize(new g.Vector3(h.pos[a*3],h.pos[a*3+1],h.pos[a*3+2]),new g.Vector3(h.scale[a*3],h.scale[a*3+1],h.scale[a*3+2])):void 0}},s=(i,a)=>{let l=0,c=i,h=a;for(;c+1<this.matrixCache.length;){c++;const f=this.matrixCache[c];if(Array.isArray(f))this.selectedSet.forEach(B=>{const d=this.availableSets.indexOf(B);for(let m=h;m<h+this.maxInstancesPerLayer[c];m++)if(f[d].rendered[m]!==-1){l=c-i;break}});else{if(!f)return l;for(let B=h;B<h+this.maxInstancesPerLayer[c];B++)if(f.rendered[B]!==-1){l=c-i;break}}h*=this.maxInstancesPerLayer[c+1]}return l},n=(i,a,l,c)=>{const h=c&&c!=="content"?Array.isArray(this.BVHTree[l][this.availableSets.indexOf(c)])?this.BVHTree[l][this.availableSets.indexOf(c)][a]:this.BVHTree[l][this.availableSets.indexOf(c)]:this.BVHTree[l][a],f=A(l,h.left[i],a,c),B=A(l,h.right[i],a,c),d=[];return t.intersectBox(f,e)?d.push({index:h.left[i],target:e.clone(),distance:t.origin.distanceTo(e)}):d.push(null),t.intersectBox(B,e)?d.push({index:h.right[i],target:e.clone(),distance:t.origin.distanceTo(e)}):d.push(null),d},r=(i,a,l)=>{const c=[],h=B=>{if(B.index<0||1/B.index===-1/0){c.push(B);return}const[d,m]=n(B.index,a,i,l);d&&h(d),m&&h(m)},f=l&&l!=="content"?Array.isArray(this.BVHTree[i][this.availableSets.indexOf(l)])?this.BVHTree[i][this.availableSets.indexOf(l)][a]:this.BVHTree[i][this.availableSets.indexOf(l)]:this.BVHTree[i][a];return!f||f.length===0||h({index:f.left.length-1,target:null,distance:null}),c},u=(i,a,l=0,c=[],h=null)=>{const f=[],B=this.maxInstancesPerLayer[a+1],d=this.maxInstancesPerLayer[a]*this.maxInstancesPerLayer[a+1];return r(a,l,h).forEach(m=>{const w=Math.abs(m.index)-l*this.maxInstancesPerLayer[a],b=w%i.fXaxis.fNbins,C=Math.floor(w%(i.fXaxis.fNbins*i.fYaxis.fNbins)/i.fXaxis.fNbins),x=Math.floor(w/(i.fXaxis.fNbins*i.fYaxis.fNbins)),y=[...c,{x:b,y:C,z:x}];if(i.children){const I=Object.entries(i.children).flatMap(([v,Q])=>{const j=i.getBin(b+1,C+1,x+1),N=Q?.[j];if(!N)return[];const G=l*d+(b+C*i.fXaxis.fNbins+x*(i.fXaxis.fNbins*i.fYaxis.fNbins))*B;if(!(s(a,G)>0))return[];let O=u(N,a+1,Math.abs(m.index),y,v);return v!=="content"&&(O=O.map(E=>({...E,set:v}))),O});if(I.length>0)f.push(...I);else{const v=l*this.maxInstancesPerLayer[a]+(b+C*i.fXaxis.fNbins+x*(i.fXaxis.fNbins*i.fYaxis.fNbins));(h&&h!=="content"?this.matrixCache[a]?.[this.availableSets.indexOf(h)]:this.matrixCache[a]).rendered[v]!==-1&&f.push({index:y,target:m.target,distance:m.distance,set:h,selectedArray:this.selectedArray,instanceId:gt(y,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:J(y,this.pointer.origin,this.selectedSet),range:L(y,h,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:i,content:this.getBinContent(i,b,C,x,this.selectedArray),error:this.getBinError(i,b,C,x,this.selectedArray)})}}else f.push({index:y,target:m.target,distance:m.distance,set:h,selectedArray:this.selectedArray,instanceId:gt(y,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:J(y,this.pointer.origin,this.selectedSet),range:L(y,h,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,object:this.mesh,jsrootObj:i,content:this.getBinContent(i,b,C,x,this.selectedArray),error:this.getBinError(i,b,C,x,this.selectedArray)})}),f.sort((m,w)=>m.distance-w.distance)};if(this.pointer.isOnSet===null)return u(this.pointer.origin,0,0,[],this.pointer.isOnSet);{const i=this.selectedSet.map(l=>u(dt(this.pointer.rootObj,this.pointer.parentPath.map(c=>c.bin[0]),l),0,0,[],l)).filter(l=>l.length!==0),a=Math.min(...i.map(l=>l[0].distance));return i.find(l=>l[0].distance===a)??[]}}dispatchSubjectHandler(t){if(!t.event.jsrootInstance){const e=t.event.index.map(s=>({x:s.x-1,y:s.y-1,z:s.z-1})),A=this.pointer.getChildByPosition(J([...e]).slice(0,-1),t.event.set,this.selectedSet);t.event={index:e,set:t.event.set,jsrootInstance:J(e,this.pointer.origin,this.selectedSet),range:L(e,t.event.set,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:A,content:this.getBinContent(A,e[0].x+1,e[0].y+1,e[0].z+1,this.selectedArray),error:A.getBinError(e[0].x+1,e[0].y+1,e[0].z+1)}}this.intersectionHandler(t.event,t.event.source)}}class xe{plane=void 0;cinemaSub=void 0;position;rotation;scale;id;configSub=void 0;constructor(t,e,A,s,n){const r=new g.PlaneGeometry(s.x,s.y),u=new g.MeshBasicMaterial({color:new g.Color().setHex(16777215),side:g.DoubleSide});this.plane||(this.plane=new g.Mesh(r,u),this.plane.position.set(e.x,e.y,e.z)),t&&this.updateTexture(t),this.id=n,this.position=e,this.rotation=A,this.scale=s,this.cinemaSub=ot().getObservable().pipe(D.filter(i=>i.id===this.id||i.id==="*")).subscribe(i=>{const a=i.obj;F.makeImage({format:"png",option:"pE",object:a,width:1200,height:600}).then(l=>{this.updateTexture(l)})}),this.configSub=W().getObservable().pipe(D.filter(i=>i.target.id.includes("*")||i.target.id.includes(this.id))).subscribe(i=>{const a=i.config.environment.canvasPads.filter(l=>l.id===this.id||l.id==="*");a.length!==0&&(this.position=a[0].limits.position,this.rotation=a[0].limits.rotation,this.scale=a[0].limits.scale,this.updateMesh())})}updateMesh(){this.plane.scale.set(this.scale.x,this.scale.y,this.scale.z),this.plane.position.set(this.position.x,this.position.y,this.position.z);const t=Math.PI/180;this.plane.rotation.set(this.rotation.x*t,this.rotation.y*t,this.rotation.z*t)}updateTexture(t){if(!t){console.warn("updateTexture called with null/undefined");return}const e=new g.TextureLoader;if(typeof t=="string"&&(t.startsWith("data:")||t.startsWith("http")))e.load(t,A=>{this.plane.material.map=A,this.plane.material.needsUpdate=!0},void 0,A=>console.error("Texture load failed",A));else if(t instanceof HTMLImageElement){const A=new g.Texture(t);A.needsUpdate=!0,this.plane.material.map=A,this.plane.material.needsUpdate=!0}else console.error("Unsupported image type passed to updateTexture:",t)}remove(){this.plane.parent&&(this.plane.parent.remove(this.plane),this.cinemaSub.unsubscribe(),this.configSub.unsubscribe())}getPlane(){return this.plane}}class Ie extends g.Loader{constructor(t){super(t)}load(t,e,A,s){const n=this,r=new g.FileLoader(this.manager);r.setPath(this.path),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(t,function(u){const i=n.parse(JSON.parse(u));e&&e(i)},A,s)}parse(t){return new ve(t)}}class ve{constructor(t){this.isFont=!0,this.type="Font",this.data=t}generateShapes(t,e=100,A="ltr"){const s=[],n=Ee(t,e,this.data,A);for(let r=0,u=n.length;r<u;r++)s.push(...n[r].toShapes());return s}}function Ee(o,t,e,A){const s=Array.from(o),n=t/e.resolution,r=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*n,u=[];let i=0,a=0;(A=="rtl"||A=="tb")&&s.reverse();for(let l=0;l<s.length;l++){const c=s[l];if(c===`
86
- `)i=0,a-=r;else{const h=Qe(c,n,i,a,e);A=="tb"?(i=0,a+=e.ascender*n):i+=h.offsetX,u.push(h.path)}}return u}function Qe(o,t,e,A,s){const n=s.glyphs[o]||s.glyphs["?"];if(!n){console.error('THREE.Font: character "'+o+'" does not exists in font family '+s.familyName+".");return}const r=new g.ShapePath;let u,i,a,l,c,h,f,B;if(n.o){const d=n._cachedOutline||(n._cachedOutline=n.o.split(" "));for(let m=0,w=d.length;m<w;)switch(d[m++]){case"m":u=d[m++]*t+e,i=d[m++]*t+A,r.moveTo(u,i);break;case"l":u=d[m++]*t+e,i=d[m++]*t+A,r.lineTo(u,i);break;case"q":a=d[m++]*t+e,l=d[m++]*t+A,c=d[m++]*t+e,h=d[m++]*t+A,r.quadraticCurveTo(c,h,a,l);break;case"b":a=d[m++]*t+e,l=d[m++]*t+A,c=d[m++]*t+e,h=d[m++]*t+A,f=d[m++]*t+e,B=d[m++]*t+A,r.bezierCurveTo(c,h,f,B,a,l);break}}return{offsetX:n.ha*t,path:r}}class Ge{constructor(t,e={}){this.camera=t,this.options={backgroundColor:11184810,textColor:1,titleColor:0,padding:.002,lineHeight:.002,textSize:10,width:.031,...e},this.loader=new Ie,this.queue=new D.Subject;let A=!1,s=null;this.queueSub=this.queue.pipe(D.concatMap(n=>A?(s=n,D.EMPTY):(A=!0,D.from(this.updateVisualization(n)).pipe(D.finalize(()=>{if(A=!1,s){const r=s;s=null,this.queue.next(r)}}))))).subscribe(),this.group=new g.Group}parseData(t){const e=[];if(t.title&&e.push({text:t.title,isTitle:!0}),t.coords&&Array.isArray(t.coords)&&t.coords.forEach(A=>{Object.entries(A).forEach(([s,n])=>{if(n&&typeof n=="object"&&!("isColor"in n)){const r=`${s} = [${n.min.toFixed(2)}, ${n.max.toFixed(2)})`;e.push({text:r,isTitle:!1})}})}),t.index&&Array.isArray(t.index)&&t.index.forEach(A=>{let s=`bin = ${t.object.bins[t.instanceId]}`;Object.entries(A).forEach(([n,r])=>{s+=`, ${n}: ${r}`}),e.push({text:s,isTitle:!1})}),t.content!==void 0){const A=Number.isInteger(t.content)?`content = ${t.content}`:`content = ${t.content.toFixed(2)}`;e.push({text:A,isTitle:!1})}if(t.error!==void 0){const A=Number.isInteger(t.error)?`error = ${t.error}`:`error = ${t.error.toFixed(2)}`;e.push({text:A,isTitle:!1})}return e}createBackgroundPanel(t){const{width:e,backgroundColor:A}=this.options,s=new g.PlaneGeometry(e,t),n=new g.MeshBasicMaterial({color:A,side:g.DoubleSide});return new g.Mesh(s,n)}async updateVisualization(t){for(t===null&&this.clear();this.group.children.length>0;){const C=this.group.children[0];C.geometry&&C.geometry.dispose(),C.material&&C.material.dispose(),this.group.remove(C)}const e=this.parseData(t);if(e.length===0)return;const{padding:A,lineHeight:s,textSize:n,textColor:r,titleColor:u,width:i}=this.options,a=e.length*s+A*2,l=this.createBackgroundPanel(a);this.group.add(l);const c=a/2-A-s/2;for(let C=0;C<e.length;C++){const x=e[C],y=c-C*s;try{const p=F.create("TLatex");p.fTitle=x.text,p.fTextAlign=12,p.fTextFont=2,p.fTitleFont=2,p.fLabelFont=2,p.fTextColor=x.isTitle?u:r,p.fTextSize=x.isTitle?n+2:n;const I=await F.build3d(p,"p",y*100,"","");I.scale.set(16e-5,16e-5,16e-5),I.position.x=-(i/2)+A,I.position.y=y,I.position.z=.001,this.group.add(I)}catch(p){console.error("Error creating text line:",p)}}const h=new g.Vector3(t.point.x,t.point.y,t.point.z);this.camera.worldToLocal(h);const f=new g.Vector3().subVectors(h,this.camera.position).normalize(),d=new g.Vector3().copy(this.camera.position).addScaledVector(f,.1),m=new g.Box3().setFromObject(this.group),w=new g.Vector3;m.getSize(w);const b=w.clone().multiplyScalar(.5);d.add(new g.Vector3(b.x,b.y,0)),this.group.position.copy(d),this.camera.add(this.group)}getGroup(){return this.group}setPosition(t,e,A){this.group.position.set(t,e,A)}setRotation(t,e,A){this.group.rotation.set(t,e,A)}clear(){for(;this.group.children.length>0;){const t=this.group.children[0];t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose(),this.group.remove(t)}}dispose(){for(this.queueSub.unsubscribe();this.group.children.length>0;){const t=this.group.children[0];t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose(),this.group.remove(t)}}}class ze{histogramGroup=void 0;binInfoComponent=void 0;id=void 0;configSub=void 0;rootObj=void 0;histoSub=void 0;dummyEl=void 0;defaultRaycastHandler=void 0;mouseEvents=[];color=new g.Color;colorTarget=new g.Color(65535);buildPromise=void 0;constructor(t,e,A){this.id=t,this.rootObj=e,this.camera=A,this.histogramGroup=new g.Group,this.dummyEl=document.getElementById("dummyDiv"+t),this.dummyEl&&document.body.removeChild(this.dummyEl),this.binInfoComponent=new Ge(this.camera,{backgroundColor:3556687,textColor:0,titleColor:0}),this.dummyEl=document.createElement("div"),this.dummyEl.id="dummyDiv"+t,document.body.appendChild(this.dummyEl),this.configSub=W().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>{this.config={...s.config};const r=this.config.environment.histogramPads.find(u=>u.id===this.id).position;this.histogramGroup.position.set(r.x,r.y,r.z)}),this.sub=st().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>{if(s.flag==="add")if(s.function)this.addEvent(s.event,s.function);else switch(s.event){case"mousemove":this.addEvent(s.event,this.mousemoveDefault);break;case"mouseclick":this.addEvent(s.event,this.mouseClickDefault);break;case"shiftmouseclick":this.addEvent(s.event,this.shiftMouseClickDefault);break;case"mousedbclick":this.addEvent(s.event,this.mouseDBClickDefault);break;case"shiftmousedbclick":this.addEvent(s.event,this.shiftMouseDBClickDefault);break}else if(s.flag==="remove"&&s.function)this.removeEvent(s.event,s.function);else if(s.flag==="remove")switch(s?.state){case"keydown":this.keydownEvents=[];break;case"keyup":this.keyupEvents=[];break;default:this.mouseEvents=this.mouseEvents.filter(n=>n.event!==s.event),this.mousemoveDefault({object:this.getInstancedMesh(),instanceId:null})}else s.flag==="removeAll"&&(this.keydownEvents=[],this.keyupEvents=[],this.mouseEvents=[])}),this.raycastHandler=this.raycastHandler.bind(this),this.mouseClickDefault=this.mouseClickDefault.bind(this),this.mousemoveDefault=this.mousemoveDefault.bind(this),this.shiftMouseClickDefault=this.shiftMouseClickDefault.bind(this),this.mouseDBClickDefault=this.mouseDBClickDefault.bind(this),this.shiftMouseDBClickDefault=this.shiftMouseDBClickDefault.bind(this),this.addEvent("mouseclick",this.mouseClickDefault),this.addEvent("mousemove",this.mousemoveDefault),this.addEvent("shiftmouseclick",this.shiftMouseClickDefault),this.addEvent("mousedbclick",this.mouseDBClickDefault),this.addEvent("shiftmousedbclick",this.shiftMouseDBClickDefault),this.buildPromise=this.renderWithBuild3d()}updateHistogram(t){this.rootObj=t,this.histogramGroup.clear(),this.buildPromise=this.renderWithBuild3d()}renderWithBuild3d(){return F.build3d(this.rootObj).then(t=>{const e=this.config.environment.histogramPads.find(r=>r.id===this.id)?.scale,A=new g.Box3().setFromObject(t),s=new g.Vector3;A.getSize(s),t.scale.set(e.x/s.x,e.z/s.y,e.y/s.z),t.rotateX(-Math.PI/2),t.translateZ(-(e.y/2)),this.histogramGroup.add(t);const n=this.getInstancedMesh();n&&(this.defaultRaycastHandler=n.raycast.bind(n),n.raycast=this.raycastHandler.bind(this))}).catch(t=>{const e=this.config.environment.histogramPads.find(A=>A.id===this.id);throw console.log("JSROOT was not able to build object: ",t,e),{message:t,scale:e?.scale,position:e?.position}})}raycastHandler(t,e){this.defaultRaycastHandler(t,e),setTimeout(()=>{const A=e.filter(c=>c.instanceId!==void 0).sort((c,h)=>c.distance-h.distance)[0];if(!A){this.mouseEvents.filter(c=>c.event==="mousemove").forEach(c=>c.function({instanceId:void 0,object:this.getInstancedMesh()},this));return}const s=A.object.bins[A.instanceId],n=this.rootObj.fXaxis.fNbins+2,r=this.rootObj.fYaxis.fNbins+2,u={x:s%n,y:Math.floor(s%(n*r)/n),z:Math.floor(s/(n*r))},i=this.getRangeByPosition([u]),a=this.rootObj.fName,l={...A,index:[u],coords:[{...i,bin:s,name:a}],content:this.rootObj.getBinContent(u.x,u.y,u.z),error:this.rootObj.getBinError(u.x,u.y,u.z)};this.mouseEvents.filter(c=>c.event===t._triggerSource).forEach(c=>c.function(l,this)),this.dirtyInstance=A.instanceId},0)}addEvent(t,e){t?.state==="keydown"?this.keydownEvents.push({key:t.key,function:e}):t?.state==="keyup"?this.keyupEvents.push({key:t.key,function:e}):this.mouseEvents.push({event:t,function:e})}removeEvent(t,e){const A=this.mouseEvents.find(s=>s===e);A&&this.mouseEvents.splice(A,1)}mouseClickDefault(t){console.log("mouseclick default")}mousemoveDefault(t){if(t.instanceId===this.dirtyInstance)return;const e=t.object;if(this.dirtyInstance!==void 0){e.getColorAt(this.dirtyInstance,this.color);const A=.5;this.color.lerp(this.colorTarget,-A/(1-A)),e.setColorAt(this.dirtyInstance,this.color)}this.dirtyInstance=t.instanceId,e.getColorAt(this.dirtyInstance,this.color),this.color.lerp(this.colorTarget,.5),e.setColorAt(this.dirtyInstance,this.color),e.instanceColor.needsUpdate=!0,this.binInfoComponent.queue.next(t),lt().next(t)}shiftMouseClickDefault(t){console.log("shiftMouseClickDefault")}mouseDBClickDefault(t){console.log("mouseDBClickDefault")}shiftMouseDBClickDefault(t){console.log("shiftMouseDBClickDefault")}getInstancedMesh(t=this.histogramGroup){if(!t)return null;if(t.isInstancedMesh===!0)return t;if(t.children&&t.children.length>0)for(const e of t.children){const A=this.getInstancedMesh(e);if(A)return A}return null}getRangeByPosition(t){const e=["x","y","z"],A=Number.parseInt(this.rootObj._typename.substring(2,3),10);let s={};if(t[0]){for(let n=0;n<A;n++){const r=e[n],u=this.rootObj[`f${r.toUpperCase()}axis`],i=t[0][r];s[r]={min:u.GetBinLowEdge(i),max:u.GetBinCenter(i)*2-u.GetBinLowEdge(i),name:u.fName,title:u.fTitle}}s={...s,color:new g.Color(0)}}return s}remove(){this.histogramGroup.parent.remove(this.histogramGroup),this.dummyEl=document.getElementById("dummyDiv"+this.id),this.dummyEl&&document.body.removeChild(this.dummyEl),this.configSub.unsubscribe(),this.sub.unsubscribe()}getHistogramMesh(){return this.histogramGroup}}T.CanvasClass=xe,T.HistogramJsrootClass=ze,T.HistogramPointerClass=Ct,T.MobileController=Ae,T.NdmvrRaycaster=ie,T.THnPainter=ye,T.binInfoSubjectGet=lt,T.brokerManagerGet=wt,T.canvasSubjectGet=ot,T.configSubjectGet=W,T.dispatchSubjectGet=pt,T.fetchTFile=se,T.functionSubjectGet=st,T.getCameraComponent=Kt,T.histogramSubjectGet=Jt,T.httpRequest=Tt,T.initNdmvrAframe=zt,T.inputDeviceSubjectGet=tt,T.stateSubjectGet=Y,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})}));
85
+ `,transparent:!1})}mouseClickDefault(t){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),at().next({id:this.id+"-cinema",obj:t.jsrootObj})}mousemoveDefault(t){if(((f,w)=>{if(f.length!==w.length)return!1;for(let g=0;g<f.length;g++){const C=f[g],m=w[g];if(C.x!==m.x||C.y!==m.y||C.z!==m.z)return!1}return!0})(t.index,this.dirtyInstance)){this.dirtyInstance=null;return}const A=this.pointer.parentPath.map(f=>{const w=f.range[0];return{bin:f.bin[0],...w}});t.range=t.range.map((f,w)=>{const g=t.jsrootInstance[w];return{...f,bin:g}});const s={...t,level:A.length,range:A.concat(t.range)},{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};ht().next(h)}shiftMouseClickDefault(t){this.hideChildHistogram(t.index)}mouseDBClickDefault(t){t.set?this.setPointerToChild(t.index,t.set):this.setPointerToChild(t.index,this.selectedSet[0])}shiftMouseDBClickDefault(t){this.setPointerToParent()}intersectionHandler(t,e){this.mouseEvents.filter(A=>A.event===e).forEach(A=>A.function(t,this)),this.dirtyInstance=t.index}raycastHandler(t,e){try{const s=this.checkIntersectionBVH(t.ray)[0];if(s){const i=t._triggerSource;this.intersectionHandler(s,i),e.push(s)}}catch(A){console.log(A)}}handleStateChange(t){if(xt(t.sets,this.availableSets)&&(!xt(t.selectedSet,this.selectedSet)||this.selectedArray!==t.selectedArray)){this.selectedArray=t.selectedArray,this.selectedSet=t.selectedSet;const e=this.mesh.parent;this.instGeom.dispose(),e.remove(this.mesh),this.setupInsBufGeom(),e.add(this.mesh),this.renderHistogramHistory()}else this.minMaxValue.length!==0&&he(t.minMaxValue,this.minMaxValue)?this.renderHistogramHistory():(this.availableSets=t.sets,this.selectedSet=t.selectedSet,this.minMaxValue=t.minMaxValue)}async renderHistogramHistory(){const t=this.renderHistory;this.renderHistory=[];for(const e of t)e.procedure==="render"?await this.renderHistogram(e.value.startIndex,e.value.endIndex,e.value.layer):e.procedure==="hide"&&this.hideChildHistogram(e.value)}async setPointerToChild(t,e){const A=this.mesh.parent;this.matrixCache=[],this.instGeom.dispose(),this.wireframe.dispose(),A.remove(this.mesh);const s=k(t,e,this.pointer.origin,this.wireframe,this.selectedSet);if(this.pointer.setOriginToChild(L(t,this.pointer.origin,this.selectedSet),e,s),!this.pointer.isHistogramFilled){this.mesh=Xt(this.limits,this.setPointerToParent.bind(this)),A.add(this.mesh);return}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(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(e))}async setPointerToParent(){const t=this.mesh.parent;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)}showChildHistogram(t){const e=gt(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),s=this.maxInstancesPerLayer.slice(-this.maxInstancesPerLayer.length+t.length).reduce((i,r)=>i*r,1);this.renderHistogram(e.slice(-1)[0],e.slice(-1)[0]+s,t.length)}hideChildHistogram(t){if(t.length===1)return;const e=this.maxInstancesPerLayer.slice(t.length-1),A=this.maxInstancesPerLayer.slice(t.length-1,this.maxInstancesPerLayer.length-1),s=e.reduce((u,n)=>u*n,1),i=ue(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),r=Math.floor(i/s)*s;this.clearMatrixCacheRange(r,s,A,t.length-1),this.logRender({procedure:"hide",value:t}),this.renderHistogram(r,r+s,t.length-2),this.renderHistory.pop()}clearMatrixCacheRange(t,e,A,s){let i=t,r=e;const u={x:{pos:0,size:0},y:{pos:0,size:0},z:{pos:0,size:0}};for(let n=s+A.length-1;n>=s;n--){if(Array.isArray(this.matrixCache[n]))for(let o=0;o<this.matrixCache[n].length;o++)for(let c=i;c<i+r;c++)this.setMatrixCacheAt(n,o,c,u,-1);else for(let o=i;o<i+r;o++)this.setMatrixCacheAt(n,null,o,u,-1);n>s&&(i/=A[n-s],r/=A[n-s])}}setAvailableSets(t){if(t.children?.content){const e=t.children.content.find(A=>A);this.setAvailableSets(e)}else if(t?.children){const e=H(this.id).getValue();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)}else{const e=H(this.id).getValue();e.sets=[],e.selectedSet=[]}}setAvailableArrays(t){const e=H(this.id).getValue();e.arrays=[],t.fArrays&&(e.arrays=Object.keys(t.fArrays)),e.arrays.unshift("content");const A=s=>{const i=s.find(r=>r);i.fArrays&&(e.arrays=e.arrays.concat(Object.keys(i.fArrays))),i.children?.content&&A(i.children.content)};t.children?.content&&A(t.children.content),H(this.id).next(e)}configSubjectHandler(t){this.config=X().mergeHistogramConfig(this?.opts?.config),this.keyBindings=Ht(t.config.bindings);const e=t.config.environment.histogramPads.find(A=>A.id===this.id);e&&!Wt(this.limits,e)&&this.renderHistory.length>0&&(this.limits={...e},this.renderHistogramHistory()),this.limits={...e}}keyDownHandler(t){const e=/^(?:Digit|Numpad)(\d+)$/,A=t.code.match(e);if(A){if(parseInt(A[1])>this.matrixCache.length)return;const s=new d.Object3D;s.scale.set(0,0,0),s.updateMatrix();let i=this.maxInstancesPerLayer.reduce((r,u)=>r*u,1);this.selectedSet.length>1&&(i*=this.selectedSet.length),this.setupMatrixCache(),this.wireframe.clearWireframe(),this.renderHistogram(0,this.totalInstances,parseInt(A[1])-1)}else t.key===this.keyBindings.hideOutlines?this.wireframe.toggleVisibility(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(this.selectedSet[0])):t.key===this.keyBindings.resetHistogram?this.resetHistogram():t.key===this.keyBindings.goToPreviousLayer&&this.setPointerToParent()}keyUpHandler(t){}resetHistogram(){this.updateHistogram({obj:this.rootObj})}logRender(t){t.procedure==="render"&&t.value.startIndex===0&&t.value.endIndex===this.totalInstances&&(this.renderHistory=[]),this.renderHistory.push(t)}getBinContent(t,e,A,s,i){if(i==="content"||!t.fArrays)return t.getBinContent(e+1,A+1,s+1);{const r=t.getBin(e+1,A+1,s+1);return t.fArrays?.[i].values[r]}}getBinError(t,e,A,s,i){const r=t.getBin(e+1,A+1,s+1);return i==="content"||!t.fArrays?t.fSumw2.length!==0?t.fSumw2[r]:t.getBinError(r):t.fArrays?.[i].errors[r]}checkIntersectionBVH(t){const e=new d.Vector3,A=(n,o,c,l)=>{if(o<0||1/o===-1/0){const h=o*-1,f=l&&l!=="content"?this.matrixCache[n]?.[this.availableSets.indexOf(l)]:this.matrixCache[n];return f?new d.Box3().setFromCenterAndSize(new d.Vector3(f.pos[h*3],f.pos[h*3+1],f.pos[h*3+2]),new d.Vector3(f.scale[h*3],f.scale[h*3+1],f.scale[h*3+2])):void 0}else{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];return h?new d.Box3().setFromCenterAndSize(new d.Vector3(h.pos[o*3],h.pos[o*3+1],h.pos[o*3+2]),new d.Vector3(h.scale[o*3],h.scale[o*3+1],h.scale[o*3+2])):void 0}},s=(n,o)=>{let c=0,l=n,h=o;for(;l+1<this.matrixCache.length;){l++;const f=this.matrixCache[l];if(Array.isArray(f))this.selectedSet.forEach(w=>{const g=this.availableSets.indexOf(w);for(let C=h;C<h+this.maxInstancesPerLayer[l];C++)if(f[g].rendered[C]!==-1){c=l-n;break}});else{if(!f)return c;for(let w=h;w<h+this.maxInstancesPerLayer[l];w++)if(f.rendered[w]!==-1){c=l-n;break}}h*=this.maxInstancesPerLayer[l+1]}return c},i=(n,o,c,l)=>{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),w=A(c,h.right[n],o,l),g=[];return t.intersectBox(f,e)?g.push({index:h.left[n],target:e.clone(),distance:t.origin.distanceTo(e)}):g.push(null),t.intersectBox(w,e)?g.push({index:h.right[n],target:e.clone(),distance:t.origin.distanceTo(e)}):g.push(null),g},r=(n,o,c)=>{const l=[],h=w=>{if(w.index<0||1/w.index===-1/0){l.push(w);return}const[g,C]=i(w.index,o,n,c);g&&h(g),C&&h(C)},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];return!f||f.length===0||h({index:f.left.length-1,target:null,distance:null}),l},u=(n,o,c=0,l=[],h=null)=>{const f=[],w=this.maxInstancesPerLayer[o+1],g=this.maxInstancesPerLayer[o]*this.maxInstancesPerLayer[o+1];return r(o,c,h).forEach(C=>{const m=Math.abs(C.index)-c*this.maxInstancesPerLayer[o],b=m%n.fXaxis.fNbins,B=Math.floor(m%(n.fXaxis.fNbins*n.fYaxis.fNbins)/n.fXaxis.fNbins),x=Math.floor(m/(n.fXaxis.fNbins*n.fYaxis.fNbins)),y=[...l,{x:b,y:B,z:x}];if(n.children){const p=Object.entries(n.children).flatMap(([v,Q])=>{const j=n.getBin(b+1,B+1,x+1),N=Q?.[j];if(!N)return[];const G=c*g+(b+B*n.fXaxis.fNbins+x*(n.fXaxis.fNbins*n.fYaxis.fNbins))*w;if(!(s(o,G)>0))return[];let O=u(N,o+1,Math.abs(C.index),y,v);return v!=="content"&&(O=O.map(P=>({...P,set:v}))),O});if(p.length>0)f.push(...p);else{const v=c*this.maxInstancesPerLayer[o]+(b+B*n.fXaxis.fNbins+x*(n.fXaxis.fNbins*n.fYaxis.fNbins));(h&&h!=="content"?this.matrixCache[o]?.[this.availableSets.indexOf(h)]:this.matrixCache[o]).rendered[v]!==-1&&f.push({index:y,target:C.target,distance:C.distance,set:h,selectedArray:this.selectedArray,instanceId:gt(y,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:L(y,this.pointer.origin,this.selectedSet),range:k(y,h,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:n,content:this.getBinContent(n,b,B,x,this.selectedArray),error:this.getBinError(n,b,B,x,this.selectedArray)})}}else f.push({index:y,target:C.target,distance:C.distance,set:h,selectedArray:this.selectedArray,instanceId:gt(y,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:L(y,this.pointer.origin,this.selectedSet),range:k(y,h,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,object:this.mesh,jsrootObj:n,content:this.getBinContent(n,b,B,x,this.selectedArray),error:this.getBinError(n,b,B,x,this.selectedArray)})}),f.sort((C,m)=>C.distance-m.distance)};if(this.pointer.isOnSet===null)return u(this.pointer.origin,0,0,[],this.pointer.isOnSet);{const n=this.selectedSet.map(c=>u(mt(this.pointer.rootObj,this.pointer.parentPath.map(l=>l.bin[0]),c),0,0,[],c)).filter(c=>c.length!==0),o=Math.min(...n.map(c=>c[0].distance));return n.find(c=>c[0].distance===o)??[]}}dispatchSubjectHandler(t){if(!t.event.jsrootInstance){const e=t.event.index.map(s=>({x:s.x-1,y:s.y-1,z:s.z-1})),A=this.pointer.getChildByPosition(L([...e]).slice(0,-1),t.event.set,this.selectedSet);t.event={index:e,set:t.event.set,jsrootInstance:L(e,this.pointer.origin,this.selectedSet),range:k(e,t.event.set,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:A,content:this.getBinContent(A,e[0].x+1,e[0].y+1,e[0].z+1,this.selectedArray),error:A.getBinError(e[0].x+1,e[0].y+1,e[0].z+1)}}this.intersectionHandler(t.event,t.event.source)}}class Ie{plane=void 0;cinemaSub=void 0;position;rotation;scale;id;configSub=void 0;constructor(t,e,A,s,i){const r=new d.PlaneGeometry(s.x,s.y),u=new d.MeshBasicMaterial({color:new d.Color().setHex(16777215),side:d.DoubleSide});this.plane||(this.plane=new d.Mesh(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=at().getObservable().pipe(D.filter(n=>n.id===this.id||n.id==="*")).subscribe(n=>{console.log("Caught at: ",this.id);const o=n.obj;W.makeImage({format:"png",option:"pE",object:o,width:1200,height:600}).then(c=>{this.updateTexture(c)})}),this.configSub=X().getObservable().pipe(D.filter(n=>n.target.id.includes("*")||n.target.id.includes(this.id))).subscribe(n=>{const o=n.config.environment.canvasPads.filter(c=>c.id===this.id||c.id==="*");o.length!==0&&(this.position=o[0].limits.position,this.rotation=o[0].limits.rotation,this.scale=o[0].limits.scale,this.updateMesh())})}updateMesh(){this.plane.scale.set(this.scale.x,this.scale.y,this.scale.z),this.plane.position.set(this.position.x,this.position.y,this.position.z);const t=Math.PI/180;this.plane.rotation.set(this.rotation.x*t,this.rotation.y*t,this.rotation.z*t)}updateTexture(t){if(!t){console.warn("updateTexture called with null/undefined");return}const e=new d.TextureLoader;if(typeof t=="string"&&(t.startsWith("data:")||t.startsWith("http")))e.load(t,A=>{this.plane.material.map=A,this.plane.material.needsUpdate=!0},void 0,A=>console.error("Texture load failed",A));else if(t instanceof HTMLImageElement){const A=new d.Texture(t);A.needsUpdate=!0,this.plane.material.map=A,this.plane.material.needsUpdate=!0}else console.error("Unsupported image type passed to updateTexture:",t)}remove(){this.plane.parent&&(this.plane.parent.remove(this.plane),this.cinemaSub.unsubscribe(),this.configSub.unsubscribe())}getPlane(){return this.plane}}class ve extends d.Loader{constructor(t){super(t)}load(t,e,A,s){const i=this,r=new d.FileLoader(this.manager);r.setPath(this.path),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(t,function(u){const n=i.parse(JSON.parse(u));e&&e(n)},A,s)}parse(t){return new Ee(t)}}class Ee{constructor(t){this.isFont=!0,this.type="Font",this.data=t}generateShapes(t,e=100,A="ltr"){const s=[],i=Qe(t,e,this.data,A);for(let r=0,u=i.length;r<u;r++)s.push(...i[r].toShapes());return s}}function Qe(a,t,e,A){const s=Array.from(a),i=t/e.resolution,r=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*i,u=[];let n=0,o=0;(A=="rtl"||A=="tb")&&s.reverse();for(let c=0;c<s.length;c++){const l=s[c];if(l===`
86
+ `)n=0,o-=r;else{const h=Ge(l,i,n,o,e);A=="tb"?(n=0,o+=e.ascender*i):n+=h.offsetX,u.push(h.path)}}return u}function Ge(a,t,e,A,s){const i=s.glyphs[a]||s.glyphs["?"];if(!i){console.error('THREE.Font: character "'+a+'" does not exists in font family '+s.familyName+".");return}const r=new d.ShapePath;let u,n,o,c,l,h,f,w;if(i.o){const g=i._cachedOutline||(i._cachedOutline=i.o.split(" "));for(let C=0,m=g.length;C<m;)switch(g[C++]){case"m":u=g[C++]*t+e,n=g[C++]*t+A,r.moveTo(u,n);break;case"l":u=g[C++]*t+e,n=g[C++]*t+A,r.lineTo(u,n);break;case"q":o=g[C++]*t+e,c=g[C++]*t+A,l=g[C++]*t+e,h=g[C++]*t+A,r.quadraticCurveTo(l,h,o,c);break;case"b":o=g[C++]*t+e,c=g[C++]*t+A,l=g[C++]*t+e,h=g[C++]*t+A,f=g[C++]*t+e,w=g[C++]*t+A,r.bezierCurveTo(l,h,f,w,o,c);break}}return{offsetX:i.ha*t,path:r}}class ze{constructor(t,e={}){this.camera=t,this.options={backgroundColor:11184810,textColor:1,titleColor:0,padding:.002,lineHeight:.002,textSize:10,width:.031,...e},this.loader=new ve,this.queue=new D.Subject;let A=!1,s=null;this.queueSub=this.queue.pipe(D.concatMap(i=>A?(s=i,D.EMPTY):(A=!0,D.from(this.updateVisualization(i)).pipe(D.finalize(()=>{if(A=!1,s){const r=s;s=null,this.queue.next(r)}}))))).subscribe(),this.group=new d.Group}parseData(t){const e=[];if(t.title&&e.push({text:t.title,isTitle:!0}),t.coords&&Array.isArray(t.coords)&&t.coords.forEach(A=>{Object.entries(A).forEach(([s,i])=>{if(i&&typeof i=="object"&&!("isColor"in i)){const r=`${s} = [${i.min.toFixed(2)}, ${i.max.toFixed(2)})`;e.push({text:r,isTitle:!1})}})}),t.index&&Array.isArray(t.index)&&t.index.forEach(A=>{let s=`bin = ${t.object.bins[t.instanceId]}`;Object.entries(A).forEach(([i,r])=>{s+=`, ${i}: ${r}`}),e.push({text:s,isTitle:!1})}),t.content!==void 0){const A=Number.isInteger(t.content)?`content = ${t.content}`:`content = ${t.content.toFixed(2)}`;e.push({text:A,isTitle:!1})}if(t.error!==void 0){const A=Number.isInteger(t.error)?`error = ${t.error}`:`error = ${t.error.toFixed(2)}`;e.push({text:A,isTitle:!1})}return e}createBackgroundPanel(t){const{width:e,backgroundColor:A}=this.options,s=new d.PlaneGeometry(e,t),i=new d.MeshBasicMaterial({color:A,side:d.DoubleSide});return new d.Mesh(s,i)}async updateVisualization(t){for(t===null&&this.clear();this.group.children.length>0;){const B=this.group.children[0];B.geometry&&B.geometry.dispose(),B.material&&B.material.dispose(),this.group.remove(B)}const e=this.parseData(t);if(e.length===0)return;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);this.group.add(c);const l=o/2-A-s/2;for(let B=0;B<e.length;B++){const x=e[B],y=l-B*s;try{const M=W.create("TLatex");M.fTitle=x.text,M.fTextAlign=12,M.fTextFont=2,M.fTitleFont=2,M.fLabelFont=2,M.fTextColor=x.isTitle?u:r,M.fTextSize=x.isTitle?i+2:i;const p=await W.build3d(M,"p",y*100,"","");p.scale.set(16e-5,16e-5,16e-5),p.position.x=-(n/2)+A,p.position.y=y,p.position.z=.001,this.group.add(p)}catch(M){console.error("Error creating text line:",M)}}const h=new d.Vector3(t.point.x,t.point.y,t.point.z);this.camera.worldToLocal(h);const f=new d.Vector3().subVectors(h,this.camera.position).normalize(),g=new d.Vector3().copy(this.camera.position).addScaledVector(f,.1),C=new d.Box3().setFromObject(this.group),m=new d.Vector3;C.getSize(m);const b=m.clone().multiplyScalar(.5);g.add(new d.Vector3(b.x,b.y,0)),this.group.position.copy(g),this.camera.add(this.group)}getGroup(){return this.group}setPosition(t,e,A){this.group.position.set(t,e,A)}setRotation(t,e,A){this.group.rotation.set(t,e,A)}clear(){for(;this.group.children.length>0;){const t=this.group.children[0];t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose(),this.group.remove(t)}}dispose(){for(this.queueSub.unsubscribe();this.group.children.length>0;){const t=this.group.children[0];t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose(),this.group.remove(t)}}}class Te{histogramGroup=void 0;binInfoComponent=void 0;id=void 0;configSub=void 0;rootObj=void 0;histoSub=void 0;dummyEl=void 0;defaultRaycastHandler=void 0;mouseEvents=[];color=new d.Color;colorTarget=new d.Color(65535);buildPromise=void 0;constructor(t,e,A){this.id=t,this.rootObj=e,this.camera=A,this.histogramGroup=new d.Group,this.dummyEl=document.getElementById("dummyDiv"+t),this.dummyEl&&document.body.removeChild(this.dummyEl),this.binInfoComponent=new ze(this.camera,{backgroundColor:3556687,textColor:0,titleColor:0}),this.dummyEl=document.createElement("div"),this.dummyEl.id="dummyDiv"+t,document.body.appendChild(this.dummyEl),this.configSub=X().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>{this.config={...s.config};const r=this.config.environment.histogramPads.find(u=>u.id===this.id).position;this.histogramGroup.position.set(r.x,r.y,r.z)}),this.sub=it().getObservable().pipe(D.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>{if(s.flag==="add")if(s.function)this.addEvent(s.event,s.function);else switch(s.event){case"mousemove":this.addEvent(s.event,this.mousemoveDefault);break;case"mouseclick":this.addEvent(s.event,this.mouseClickDefault);break;case"shiftmouseclick":this.addEvent(s.event,this.shiftMouseClickDefault);break;case"mousedbclick":this.addEvent(s.event,this.mouseDBClickDefault);break;case"shiftmousedbclick":this.addEvent(s.event,this.shiftMouseDBClickDefault);break}else if(s.flag==="remove"&&s.function)this.removeEvent(s.event,s.function);else if(s.flag==="remove")switch(s?.state){case"keydown":this.keydownEvents=[];break;case"keyup":this.keyupEvents=[];break;default:this.mouseEvents=this.mouseEvents.filter(i=>i.event!==s.event),this.mousemoveDefault({object:this.getInstancedMesh(),instanceId:null})}else s.flag==="removeAll"&&(this.keydownEvents=[],this.keyupEvents=[],this.mouseEvents=[])}),this.raycastHandler=this.raycastHandler.bind(this),this.mouseClickDefault=this.mouseClickDefault.bind(this),this.mousemoveDefault=this.mousemoveDefault.bind(this),this.shiftMouseClickDefault=this.shiftMouseClickDefault.bind(this),this.mouseDBClickDefault=this.mouseDBClickDefault.bind(this),this.shiftMouseDBClickDefault=this.shiftMouseDBClickDefault.bind(this),this.addEvent("mouseclick",this.mouseClickDefault),this.addEvent("mousemove",this.mousemoveDefault),this.addEvent("shiftmouseclick",this.shiftMouseClickDefault),this.addEvent("mousedbclick",this.mouseDBClickDefault),this.addEvent("shiftmousedbclick",this.shiftMouseDBClickDefault),this.buildPromise=this.renderWithBuild3d()}updateHistogram(t){this.rootObj=t,this.histogramGroup.clear(),this.buildPromise=this.renderWithBuild3d()}renderWithBuild3d(){return W.build3d(this.rootObj).then(t=>{const e=this.config.environment.histogramPads.find(r=>r.id===this.id)?.scale,A=new d.Box3().setFromObject(t),s=new d.Vector3;A.getSize(s),t.scale.set(e.x/s.x,e.z/s.y,e.y/s.z),t.rotateX(-Math.PI/2),t.translateZ(-(e.y/2)),this.histogramGroup.add(t);const i=this.getInstancedMesh();i&&(this.defaultRaycastHandler=i.raycast.bind(i),i.raycast=this.raycastHandler.bind(this))}).catch(t=>{const e=this.config.environment.histogramPads.find(A=>A.id===this.id);throw console.log("JSROOT was not able to build object: ",t,e),{message:t,scale:e?.scale,position:e?.position}})}raycastHandler(t,e){this.defaultRaycastHandler(t,e),setTimeout(()=>{const A=e.filter(l=>l.instanceId!==void 0).sort((l,h)=>l.distance-h.distance)[0];if(!A){this.mouseEvents.filter(l=>l.event==="mousemove").forEach(l=>l.function({instanceId:void 0,object:this.getInstancedMesh()},this));return}const s=A.object.bins[A.instanceId],i=this.rootObj.fXaxis.fNbins+2,r=this.rootObj.fYaxis.fNbins+2,u={x:s%i,y:Math.floor(s%(i*r)/i),z:Math.floor(s/(i*r))},n=this.getRangeByPosition([u]),o=this.rootObj.fName,c={...A,index:[u],coords:[{...n,bin:s,name:o}],content:this.rootObj.getBinContent(u.x,u.y,u.z),error:this.rootObj.getBinError(u.x,u.y,u.z)};this.mouseEvents.filter(l=>l.event===t._triggerSource).forEach(l=>l.function(c,this)),this.dirtyInstance=A.instanceId},0)}addEvent(t,e){t?.state==="keydown"?this.keydownEvents.push({key:t.key,function:e}):t?.state==="keyup"?this.keyupEvents.push({key:t.key,function:e}):this.mouseEvents.push({event:t,function:e})}removeEvent(t,e){const A=this.mouseEvents.find(s=>s===e);A&&this.mouseEvents.splice(A,1)}mouseClickDefault(t){console.log("mouseclick default")}mousemoveDefault(t){if(t.instanceId===this.dirtyInstance)return;const e=t.object;if(this.dirtyInstance!==void 0){e.getColorAt(this.dirtyInstance,this.color);const A=.5;this.color.lerp(this.colorTarget,-A/(1-A)),e.setColorAt(this.dirtyInstance,this.color)}this.dirtyInstance=t.instanceId,e.getColorAt(this.dirtyInstance,this.color),this.color.lerp(this.colorTarget,.5),e.setColorAt(this.dirtyInstance,this.color),e.instanceColor.needsUpdate=!0,this.binInfoComponent.queue.next(t),ht().next(t)}shiftMouseClickDefault(t){console.log("shiftMouseClickDefault")}mouseDBClickDefault(t){console.log("mouseDBClickDefault")}shiftMouseDBClickDefault(t){console.log("shiftMouseDBClickDefault")}getInstancedMesh(t=this.histogramGroup){if(!t)return null;if(t.isInstancedMesh===!0)return t;if(t.children&&t.children.length>0)for(const e of t.children){const A=this.getInstancedMesh(e);if(A)return A}return null}getRangeByPosition(t){const e=["x","y","z"],A=Number.parseInt(this.rootObj._typename.substring(2,3),10);let s={};if(t[0]){for(let i=0;i<A;i++){const r=e[i],u=this.rootObj[`f${r.toUpperCase()}axis`],n=t[0][r];s[r]={min:u.GetBinLowEdge(n),max:u.GetBinCenter(n)*2-u.GetBinLowEdge(n),name:u.fName,title:u.fTitle}}s={...s,color:new d.Color(0)}}return s}remove(){this.histogramGroup.parent.remove(this.histogramGroup),this.dummyEl=document.getElementById("dummyDiv"+this.id),this.dummyEl&&document.body.removeChild(this.dummyEl),this.configSub.unsubscribe(),this.sub.unsubscribe()}getHistogramMesh(){return this.histogramGroup}}T.CanvasClass=Ie,T.HistogramJsrootClass=Te,T.HistogramPointerClass=Bt,T.MobileController=se,T.NdmvrRaycaster=ne,T.THnPainter=xe,T.binInfoSubjectGet=ht,T.brokerManagerGet=pt,T.canvasSubjectGet=at,T.configSubjectGet=X,T.dispatchSubjectGet=bt,T.fetchTFile=ie,T.functionSubjectGet=it,T.getCameraComponent=$t,T.histogramSubjectGet=Lt,T.httpRequest=Dt,T.initNdmvrAframe=Tt,T.inputDeviceSubjectGet=et,T.stateSubjectGet=H,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})}));