@ndmspc/ndmvr-core 1.1.0-rc.6 → 1.1.0-rc.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -2636,7 +2636,7 @@ class $A {
|
|
|
2636
2636
|
(a) => a.target.id.includes("*") || a.target.id.includes(this.id)
|
|
2637
2637
|
)
|
|
2638
2638
|
).subscribe((a) => {
|
|
2639
|
-
const o = a.config.environment.
|
|
2639
|
+
const o = a.config.environment.canvasPads.filter((l) => l.id === this.id || l.id === "*");
|
|
2640
2640
|
o.length !== 0 && (this.position = o[0].limits.position, this.rotation = o[0].limits.rotation, this.scale = o[0].limits.scale, this.updateMesh());
|
|
2641
2641
|
});
|
|
2642
2642
|
}
|
package/dist/index.umd.js
CHANGED
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
void main() {
|
|
83
83
|
gl_FragColor = vec4(vColor, 1.0);
|
|
84
84
|
}
|
|
85
|
-
`,transparent:!1})}mouseClickDefault(t){var A,s,i,n;this.showChildHistogram(t.index),t.selectedArray!=="content"&&(t.jsrootObj.fArray=(A=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:A.values,t.jsrootObj.fSumw2=(s=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:s.errors,t.jsrootObj.fMinimum=(i=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:i.min,t.jsrootObj.fMaximum=(n=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:n.max),Ut().next({id:this.id+"-cinema",obj:t.jsrootObj})}mousemoveDefault(t){if(((d,C)=>{if(d.length!==C.length)return!1;for(let p=0;p<d.length;p++){const w=d[p],y=C[p];if(w.x!==y.x||w.y!==y.y||w.z!==y.z)return!1}return!0})(t.index,this.dirtyInstance)){this.dirtyInstance=null;return}const s=this.pointer.parentPath.map(d=>{const C=d.range[0];return{bin:d.bin[0],...C}});t.range=t.range.map((d,C)=>{const p=t.jsrootInstance[C];return{...d,bin:p}});const i={...t,level:s.length,range:s.concat(t.range)},{range:n,level:c,content:a,error:r,set:l,triggerSource:h,instanceId:u}=i,f={coords:n,level:c,content:a,error:r,set:l,triggerSource:h,instanceId:u};Ht().next(f)}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,A){this.mouseEvents.filter(s=>s.event===A).forEach(s=>s.function(t,this)),this.dirtyInstance=t.index}raycastHandler(t,A){try{const i=this.checkIntersectionBVH(t.ray)[0];if(i){const n=t._triggerSource;this.intersectionHandler(i,n),A.push(i)}}catch(s){console.log(s)}}handleStateChange(t){if(_t(t.sets,this.availableSets)&&(!_t(t.selectedSet,this.selectedSet)||this.selectedArray!==t.selectedArray)){this.selectedArray=t.selectedArray,this.selectedSet=t.selectedSet;const A=this.mesh.parent;this.instGeom.dispose(),A.remove(this.mesh),this.setupInsBufGeom(),A.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(A=>{A.procedure==="render"?this.renderHistogram(A.value.startIndex,A.value.endIndex,A.value.layer):A.procedure==="hide"&&this.hideChildHistogram(A.value)})}setPointerToChild(t,A){const s=this.mesh.parent;this.matrixCache=[],this.instGeom.dispose(),this.wireframe.dispose(),s.remove(this.mesh);const i=mt(t,A,this.pointer.origin,this.wireframe,this.selectedSet);if(this.pointer.setOriginToChild(dt(t,this.pointer.origin,this.selectedSet),A,i),!this.pointer.isHistogramFilled){this.mesh=xe(this.limits,this.setPointerToParent.bind(this)),s.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),s.add(this.mesh),s.add(this.wireframe.wireframe)},0),this.pointer.isOnSet&&this.wireframe.toggleVisibility(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(A))}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 A=Vt(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),i=this.maxInstancesPerLayer.slice(-this.maxInstancesPerLayer.length+t.length).reduce((n,c)=>n*c,1);this.renderHistogram(A.slice(-1)[0],A.slice(-1)[0]+i,t.length)}hideChildHistogram(t){if(t.length===1)return;const A=this.maxInstancesPerLayer.slice(t.length-1),s=this.maxInstancesPerLayer.slice(t.length-1,this.maxInstancesPerLayer.length-1),i=A.reduce((a,r)=>a*r,1),n=ke(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),c=Math.floor(n/i)*i;this.clearMatrixCacheRange(c,i,s,t.length-1),this.logRender({procedure:"hide",value:t}),this.renderHistogram(c,c+i,t.length-2),this.renderHistory.pop()}clearMatrixCacheRange(t,A,s,i){let n=t,c=A;const a={x:{pos:0,size:0},y:{pos:0,size:0},z:{pos:0,size:0}};for(let r=i+s.length-1;r>=i;r--){if(Array.isArray(this.matrixCache[r]))for(let l=0;l<this.matrixCache[r].length;l++)for(let h=n;h<n+c;h++)this.setMatrixCacheAt(r,l,h,a,-1);else for(let l=n;l<n+c;l++)this.setMatrixCacheAt(r,null,l,a,-1);r>i&&(n/=s[r-i],c/=s[r-i])}}setAvailableSets(t){var A;if((A=t.children)!=null&&A.content){const s=t.children.content.find(i=>i);this.setAvailableSets(s)}else if(t!=null&&t.children){const s=q(this.id).getValue();s.sets=Object.keys(t.children),s.selectedSet.length===0?(this.selectedSet.push(s.sets[0]),s.selectedSet.push(s.sets[0])):this.selectedSet.every(i=>s.sets.find(n=>n===i))||(s.selectedSet=[s.sets[0]]),q(this.id).next(s)}else{const s=q(this.id).getValue();s.sets=[],s.selectedSet=[]}}setAvailableArrays(t){var i;const A=q(this.id).getValue();A.arrays=[],t.fArrays&&(A.arrays=Object.keys(t.fArrays)),A.arrays.unshift("content");const s=n=>{var a;const c=n.find(r=>r);c.fArrays&&(A.arrays=A.arrays.concat(Object.keys(c.fArrays))),(a=c.children)!=null&&a.content&&s(c.children.content)};(i=t.children)!=null&&i.content&&s(t.children.content),q(this.id).next(A)}configSubjectHandler(t){var s;this.config=nt().mergeHistogramConfig((s=this==null?void 0:this.opts)==null?void 0:s.config),this.keyBindings=be(t.config.bindings);const A=t.config.environment.histogramPads.find(i=>i.id===this.id);A&&!ye(this.limits,A)&&this.renderHistory.length>0&&(this.limits={...A},this.renderHistogramHistory()),this.limits={...A}}keyDownHandler(t){const A=/^(?:Digit|Numpad)(\d+)$/,s=t.code.match(A);if(s){if(parseInt(s[1])>this.matrixCache.length)return;const i=new g.Object3D;i.scale.set(0,0,0),i.updateMatrix();let n=this.maxInstancesPerLayer.reduce((c,a)=>c*a,1);this.selectedSet.length>1&&(n*=this.selectedSet.length),this.setupMatrixCache(),this.wireframe.clearWireframe(),this.renderHistogram(0,this.totalInstances,parseInt(s[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,A,s,i,n){var c;if(n==="content"||!t.fArrays)return t.getBinContent(A+1,s+1,i+1);{const a=t.getBin(A+1,s+1,i+1);return(c=t.fArrays)==null?void 0:c[n].values[a]}}getBinError(t,A,s,i,n){var a;const c=t.getBin(A+1,s+1,i+1);return n==="content"||!t.fArrays?t.fSumw2.length!==0?t.fSumw2[c]:t.getBinError(c):(a=t.fArrays)==null?void 0:a[n].errors[c]}checkIntersectionBVH(t){const A=new g.Vector3,s=(r,l,h,u)=>{var f;if(l<0||1/l===-1/0){const d=l*-1,C=u&&u!=="content"?(f=this.matrixCache[r])==null?void 0:f[this.availableSets.indexOf(u)]:this.matrixCache[r];return C?new g.Box3().setFromCenterAndSize(new g.Vector3(C.pos[d*3],C.pos[d*3+1],C.pos[d*3+2]),new g.Vector3(C.scale[d*3],C.scale[d*3+1],C.scale[d*3+2])):void 0}else{const d=u&&u!=="content"?Array.isArray(this.BVHTree[r][this.availableSets.indexOf(u)])?this.BVHTree[r][this.availableSets.indexOf(u)][h]:this.BVHTree[r][this.availableSets.indexOf(u)]:this.BVHTree[r][h];return d?new g.Box3().setFromCenterAndSize(new g.Vector3(d.pos[l*3],d.pos[l*3+1],d.pos[l*3+2]),new g.Vector3(d.scale[l*3],d.scale[l*3+1],d.scale[l*3+2])):void 0}},i=(r,l)=>{let h=0,u=r,f=l;for(;u+1<this.matrixCache.length;){u++;const d=this.matrixCache[u];if(Array.isArray(d))this.selectedSet.forEach(C=>{const p=this.availableSets.indexOf(C);for(let w=f;w<f+this.maxInstancesPerLayer[u];w++)if(d[p].rendered[w]!==-1){h=u-r;break}});else{if(!d)return h;for(let C=f;C<f+this.maxInstancesPerLayer[u];C++)if(d.rendered[C]!==-1){h=u-r;break}}f*=this.maxInstancesPerLayer[u+1]}return h},n=(r,l,h,u)=>{const f=u&&u!=="content"?Array.isArray(this.BVHTree[h][this.availableSets.indexOf(u)])?this.BVHTree[h][this.availableSets.indexOf(u)][l]:this.BVHTree[h][this.availableSets.indexOf(u)]:this.BVHTree[h][l],d=s(h,f.left[r],l,u),C=s(h,f.right[r],l,u),p=[];return t.intersectBox(d,A)?p.push({index:f.left[r],target:A.clone(),distance:t.origin.distanceTo(A)}):p.push(null),t.intersectBox(C,A)?p.push({index:f.right[r],target:A.clone(),distance:t.origin.distanceTo(A)}):p.push(null),p},c=(r,l,h)=>{const u=[],f=C=>{if(C.index<0||1/C.index===-1/0){u.push(C);return}const[p,w]=n(C.index,l,r,h);p&&f(p),w&&f(w)},d=h&&h!=="content"?Array.isArray(this.BVHTree[r][this.availableSets.indexOf(h)])?this.BVHTree[r][this.availableSets.indexOf(h)][l]:this.BVHTree[r][this.availableSets.indexOf(h)]:this.BVHTree[r][l];return!d||d.length===0||f({index:d.left.length-1,target:null,distance:null}),u},a=(r,l,h=0,u=[],f=null)=>{const d=[],C=this.maxInstancesPerLayer[l+1],p=this.maxInstancesPerLayer[l]*this.maxInstancesPerLayer[l+1];return c(l,h,f).forEach(w=>{var x;const y=Math.abs(w.index)-h*this.maxInstancesPerLayer[l],b=y%r.fXaxis.fNbins,v=Math.floor(y%(r.fXaxis.fNbins*r.fYaxis.fNbins)/r.fXaxis.fNbins),I=Math.floor(y/(r.fXaxis.fNbins*r.fYaxis.fNbins)),M=[...u,{x:b,y:v,z:I}];if(r.children){const z=Object.entries(r.children).flatMap(([O,N])=>{const D=r.getBin(b+1,v+1,I+1),J=N==null?void 0:N[D];if(!J)return[];const H=h*p+(b+v*r.fXaxis.fNbins+I*(r.fXaxis.fNbins*r.fYaxis.fNbins))*C;if(!(i(l,H)>0))return[];let X=a(J,l+1,Math.abs(w.index),M,O);return O!=="content"&&(X=X.map(F=>({...F,set:O}))),X});if(z.length>0)d.push(...z);else{const O=h*this.maxInstancesPerLayer[l]+(b+v*r.fXaxis.fNbins+I*(r.fXaxis.fNbins*r.fYaxis.fNbins));(f&&f!=="content"?(x=this.matrixCache[l])==null?void 0:x[this.availableSets.indexOf(f)]:this.matrixCache[l]).rendered[O]!==-1&&d.push({index:M,target:w.target,distance:w.distance,set:f,selectedArray:this.selectedArray,instanceId:Vt(M,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:dt(M,this.pointer.origin,this.selectedSet),range:mt(M,f,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:r,content:this.getBinContent(r,b,v,I,this.selectedArray),error:this.getBinError(r,b,v,I,this.selectedArray)})}}else d.push({index:M,target:w.target,distance:w.distance,set:f,selectedArray:this.selectedArray,instanceId:Vt(M,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:dt(M,this.pointer.origin,this.selectedSet),range:mt(M,f,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,object:this.mesh,jsrootObj:r,content:this.getBinContent(r,b,v,I,this.selectedArray),error:this.getBinError(r,b,v,I,this.selectedArray)})}),d.sort((w,y)=>w.distance-y.distance)};if(this.pointer.isOnSet===null)return a(this.pointer.origin,0,0,[],this.pointer.isOnSet);{const r=this.selectedSet.map(h=>a(Jt(this.pointer.rootObj,this.pointer.parentPath.map(u=>u.bin[0]),h),0,0,[],h)).filter(h=>h.length!==0),l=Math.min(...r.map(h=>h[0].distance));return r.find(h=>h[0].distance===l)??[]}}dispatchSubjectHandler(t){if(!t.event.jsrootInstance){const A=t.event.index.map(i=>({x:i.x-1,y:i.y-1,z:i.z-1})),s=this.pointer.getChildByPosition(dt([...A]).slice(0,-1),t.event.set,this.selectedSet);t.event={index:A,set:t.event.set,jsrootInstance:dt(A,this.pointer.origin,this.selectedSet),range:mt(A,t.event.set,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:s,content:this.getBinContent(s,A[0].x+1,A[0].y+1,A[0].z+1,this.selectedArray),error:s.getBinError(A[0].x+1,A[0].y+1,A[0].z+1)}}this.intersectionHandler(t.event,t.event.source)}}class rA{constructor(e,t,A,s,i){m(this,"plane");m(this,"cinemaSub");m(this,"position");m(this,"rotation");m(this,"scale");m(this,"id");m(this,"configSub");const n=new g.PlaneGeometry(s.x,s.y),c=new g.MeshBasicMaterial({color:new g.Color().setHex(16777215),side:g.DoubleSide});this.plane||(this.plane=new g.Mesh(n,c),this.plane.position.set(t.x,t.y,t.z)),e&&this.updateTexture(e),this.id=i,this.position=t,this.rotation=A,this.scale=s,this.cinemaSub=Ut().getObservable().pipe(Q.filter(a=>a.id===this.id||a.id==="*")).subscribe(a=>{console.log("Caught at: ",this.id);const r=a.obj;S.makeImage({format:"png",option:"pE",object:r,width:1200,height:600}).then(l=>{this.updateTexture(l)})}),this.configSub=nt().getObservable().pipe(Q.filter(a=>a.target.id.includes("*")||a.target.id.includes(this.id))).subscribe(a=>{const r=a.config.environment.canvas.filter(l=>l.id===this.id||l.id==="*");r.length!==0&&(this.position=r[0].limits.position,this.rotation=r[0].limits.rotation,this.scale=r[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 e=Math.PI/180;this.plane.rotation.set(this.rotation.x*e,this.rotation.y*e,this.rotation.z*e)}updateTexture(e){if(!e){console.warn("updateTexture called with null/undefined");return}const t=new g.TextureLoader;if(typeof e=="string"&&(e.startsWith("data:")||e.startsWith("http")))t.load(e,A=>{this.plane.material.map=A,this.plane.material.needsUpdate=!0},void 0,A=>console.error("Texture load failed",A));else if(e instanceof HTMLImageElement){const A=new g.Texture(e);A.needsUpdate=!0,this.plane.material.map=A,this.plane.material.needsUpdate=!0}else console.error("Unsupported image type passed to updateTexture:",e)}remove(){this.plane.parent&&(this.plane.parent.remove(this.plane),this.cinemaSub.unsubscribe(),this.configSub.unsubscribe())}getPlane(){return this.plane}}class oA extends g.Loader{constructor(e){super(e)}load(e,t,A,s){const i=this,n=new g.FileLoader(this.manager);n.setPath(this.path),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,function(c){const a=i.parse(JSON.parse(c));t&&t(a)},A,s)}parse(e){return new aA(e)}}class aA{constructor(e){this.isFont=!0,this.type="Font",this.data=e}generateShapes(e,t=100,A="ltr"){const s=[],i=cA(e,t,this.data,A);for(let n=0,c=i.length;n<c;n++)s.push(...i[n].toShapes());return s}}function cA(o,e,t,A){const s=Array.from(o),i=e/t.resolution,n=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*i,c=[];let a=0,r=0;(A=="rtl"||A=="tb")&&s.reverse();for(let l=0;l<s.length;l++){const h=s[l];if(h===`
|
|
85
|
+
`,transparent:!1})}mouseClickDefault(t){var A,s,i,n;this.showChildHistogram(t.index),t.selectedArray!=="content"&&(t.jsrootObj.fArray=(A=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:A.values,t.jsrootObj.fSumw2=(s=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:s.errors,t.jsrootObj.fMinimum=(i=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:i.min,t.jsrootObj.fMaximum=(n=t.jsrootObj.fArrays[t.selectedArray])==null?void 0:n.max),Ut().next({id:this.id+"-cinema",obj:t.jsrootObj})}mousemoveDefault(t){if(((d,C)=>{if(d.length!==C.length)return!1;for(let p=0;p<d.length;p++){const w=d[p],y=C[p];if(w.x!==y.x||w.y!==y.y||w.z!==y.z)return!1}return!0})(t.index,this.dirtyInstance)){this.dirtyInstance=null;return}const s=this.pointer.parentPath.map(d=>{const C=d.range[0];return{bin:d.bin[0],...C}});t.range=t.range.map((d,C)=>{const p=t.jsrootInstance[C];return{...d,bin:p}});const i={...t,level:s.length,range:s.concat(t.range)},{range:n,level:c,content:a,error:r,set:l,triggerSource:h,instanceId:u}=i,f={coords:n,level:c,content:a,error:r,set:l,triggerSource:h,instanceId:u};Ht().next(f)}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,A){this.mouseEvents.filter(s=>s.event===A).forEach(s=>s.function(t,this)),this.dirtyInstance=t.index}raycastHandler(t,A){try{const i=this.checkIntersectionBVH(t.ray)[0];if(i){const n=t._triggerSource;this.intersectionHandler(i,n),A.push(i)}}catch(s){console.log(s)}}handleStateChange(t){if(_t(t.sets,this.availableSets)&&(!_t(t.selectedSet,this.selectedSet)||this.selectedArray!==t.selectedArray)){this.selectedArray=t.selectedArray,this.selectedSet=t.selectedSet;const A=this.mesh.parent;this.instGeom.dispose(),A.remove(this.mesh),this.setupInsBufGeom(),A.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(A=>{A.procedure==="render"?this.renderHistogram(A.value.startIndex,A.value.endIndex,A.value.layer):A.procedure==="hide"&&this.hideChildHistogram(A.value)})}setPointerToChild(t,A){const s=this.mesh.parent;this.matrixCache=[],this.instGeom.dispose(),this.wireframe.dispose(),s.remove(this.mesh);const i=mt(t,A,this.pointer.origin,this.wireframe,this.selectedSet);if(this.pointer.setOriginToChild(dt(t,this.pointer.origin,this.selectedSet),A,i),!this.pointer.isHistogramFilled){this.mesh=xe(this.limits,this.setPointerToParent.bind(this)),s.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),s.add(this.mesh),s.add(this.wireframe.wireframe)},0),this.pointer.isOnSet&&this.wireframe.toggleVisibility(this.matrixCache,this.maxInstancesPerLayer,this.availableSets.indexOf(A))}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 A=Vt(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),i=this.maxInstancesPerLayer.slice(-this.maxInstancesPerLayer.length+t.length).reduce((n,c)=>n*c,1);this.renderHistogram(A.slice(-1)[0],A.slice(-1)[0]+i,t.length)}hideChildHistogram(t){if(t.length===1)return;const A=this.maxInstancesPerLayer.slice(t.length-1),s=this.maxInstancesPerLayer.slice(t.length-1,this.maxInstancesPerLayer.length-1),i=A.reduce((a,r)=>a*r,1),n=ke(t,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),c=Math.floor(n/i)*i;this.clearMatrixCacheRange(c,i,s,t.length-1),this.logRender({procedure:"hide",value:t}),this.renderHistogram(c,c+i,t.length-2),this.renderHistory.pop()}clearMatrixCacheRange(t,A,s,i){let n=t,c=A;const a={x:{pos:0,size:0},y:{pos:0,size:0},z:{pos:0,size:0}};for(let r=i+s.length-1;r>=i;r--){if(Array.isArray(this.matrixCache[r]))for(let l=0;l<this.matrixCache[r].length;l++)for(let h=n;h<n+c;h++)this.setMatrixCacheAt(r,l,h,a,-1);else for(let l=n;l<n+c;l++)this.setMatrixCacheAt(r,null,l,a,-1);r>i&&(n/=s[r-i],c/=s[r-i])}}setAvailableSets(t){var A;if((A=t.children)!=null&&A.content){const s=t.children.content.find(i=>i);this.setAvailableSets(s)}else if(t!=null&&t.children){const s=q(this.id).getValue();s.sets=Object.keys(t.children),s.selectedSet.length===0?(this.selectedSet.push(s.sets[0]),s.selectedSet.push(s.sets[0])):this.selectedSet.every(i=>s.sets.find(n=>n===i))||(s.selectedSet=[s.sets[0]]),q(this.id).next(s)}else{const s=q(this.id).getValue();s.sets=[],s.selectedSet=[]}}setAvailableArrays(t){var i;const A=q(this.id).getValue();A.arrays=[],t.fArrays&&(A.arrays=Object.keys(t.fArrays)),A.arrays.unshift("content");const s=n=>{var a;const c=n.find(r=>r);c.fArrays&&(A.arrays=A.arrays.concat(Object.keys(c.fArrays))),(a=c.children)!=null&&a.content&&s(c.children.content)};(i=t.children)!=null&&i.content&&s(t.children.content),q(this.id).next(A)}configSubjectHandler(t){var s;this.config=nt().mergeHistogramConfig((s=this==null?void 0:this.opts)==null?void 0:s.config),this.keyBindings=be(t.config.bindings);const A=t.config.environment.histogramPads.find(i=>i.id===this.id);A&&!ye(this.limits,A)&&this.renderHistory.length>0&&(this.limits={...A},this.renderHistogramHistory()),this.limits={...A}}keyDownHandler(t){const A=/^(?:Digit|Numpad)(\d+)$/,s=t.code.match(A);if(s){if(parseInt(s[1])>this.matrixCache.length)return;const i=new g.Object3D;i.scale.set(0,0,0),i.updateMatrix();let n=this.maxInstancesPerLayer.reduce((c,a)=>c*a,1);this.selectedSet.length>1&&(n*=this.selectedSet.length),this.setupMatrixCache(),this.wireframe.clearWireframe(),this.renderHistogram(0,this.totalInstances,parseInt(s[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,A,s,i,n){var c;if(n==="content"||!t.fArrays)return t.getBinContent(A+1,s+1,i+1);{const a=t.getBin(A+1,s+1,i+1);return(c=t.fArrays)==null?void 0:c[n].values[a]}}getBinError(t,A,s,i,n){var a;const c=t.getBin(A+1,s+1,i+1);return n==="content"||!t.fArrays?t.fSumw2.length!==0?t.fSumw2[c]:t.getBinError(c):(a=t.fArrays)==null?void 0:a[n].errors[c]}checkIntersectionBVH(t){const A=new g.Vector3,s=(r,l,h,u)=>{var f;if(l<0||1/l===-1/0){const d=l*-1,C=u&&u!=="content"?(f=this.matrixCache[r])==null?void 0:f[this.availableSets.indexOf(u)]:this.matrixCache[r];return C?new g.Box3().setFromCenterAndSize(new g.Vector3(C.pos[d*3],C.pos[d*3+1],C.pos[d*3+2]),new g.Vector3(C.scale[d*3],C.scale[d*3+1],C.scale[d*3+2])):void 0}else{const d=u&&u!=="content"?Array.isArray(this.BVHTree[r][this.availableSets.indexOf(u)])?this.BVHTree[r][this.availableSets.indexOf(u)][h]:this.BVHTree[r][this.availableSets.indexOf(u)]:this.BVHTree[r][h];return d?new g.Box3().setFromCenterAndSize(new g.Vector3(d.pos[l*3],d.pos[l*3+1],d.pos[l*3+2]),new g.Vector3(d.scale[l*3],d.scale[l*3+1],d.scale[l*3+2])):void 0}},i=(r,l)=>{let h=0,u=r,f=l;for(;u+1<this.matrixCache.length;){u++;const d=this.matrixCache[u];if(Array.isArray(d))this.selectedSet.forEach(C=>{const p=this.availableSets.indexOf(C);for(let w=f;w<f+this.maxInstancesPerLayer[u];w++)if(d[p].rendered[w]!==-1){h=u-r;break}});else{if(!d)return h;for(let C=f;C<f+this.maxInstancesPerLayer[u];C++)if(d.rendered[C]!==-1){h=u-r;break}}f*=this.maxInstancesPerLayer[u+1]}return h},n=(r,l,h,u)=>{const f=u&&u!=="content"?Array.isArray(this.BVHTree[h][this.availableSets.indexOf(u)])?this.BVHTree[h][this.availableSets.indexOf(u)][l]:this.BVHTree[h][this.availableSets.indexOf(u)]:this.BVHTree[h][l],d=s(h,f.left[r],l,u),C=s(h,f.right[r],l,u),p=[];return t.intersectBox(d,A)?p.push({index:f.left[r],target:A.clone(),distance:t.origin.distanceTo(A)}):p.push(null),t.intersectBox(C,A)?p.push({index:f.right[r],target:A.clone(),distance:t.origin.distanceTo(A)}):p.push(null),p},c=(r,l,h)=>{const u=[],f=C=>{if(C.index<0||1/C.index===-1/0){u.push(C);return}const[p,w]=n(C.index,l,r,h);p&&f(p),w&&f(w)},d=h&&h!=="content"?Array.isArray(this.BVHTree[r][this.availableSets.indexOf(h)])?this.BVHTree[r][this.availableSets.indexOf(h)][l]:this.BVHTree[r][this.availableSets.indexOf(h)]:this.BVHTree[r][l];return!d||d.length===0||f({index:d.left.length-1,target:null,distance:null}),u},a=(r,l,h=0,u=[],f=null)=>{const d=[],C=this.maxInstancesPerLayer[l+1],p=this.maxInstancesPerLayer[l]*this.maxInstancesPerLayer[l+1];return c(l,h,f).forEach(w=>{var x;const y=Math.abs(w.index)-h*this.maxInstancesPerLayer[l],b=y%r.fXaxis.fNbins,v=Math.floor(y%(r.fXaxis.fNbins*r.fYaxis.fNbins)/r.fXaxis.fNbins),I=Math.floor(y/(r.fXaxis.fNbins*r.fYaxis.fNbins)),M=[...u,{x:b,y:v,z:I}];if(r.children){const z=Object.entries(r.children).flatMap(([O,N])=>{const D=r.getBin(b+1,v+1,I+1),J=N==null?void 0:N[D];if(!J)return[];const H=h*p+(b+v*r.fXaxis.fNbins+I*(r.fXaxis.fNbins*r.fYaxis.fNbins))*C;if(!(i(l,H)>0))return[];let X=a(J,l+1,Math.abs(w.index),M,O);return O!=="content"&&(X=X.map(F=>({...F,set:O}))),X});if(z.length>0)d.push(...z);else{const O=h*this.maxInstancesPerLayer[l]+(b+v*r.fXaxis.fNbins+I*(r.fXaxis.fNbins*r.fYaxis.fNbins));(f&&f!=="content"?(x=this.matrixCache[l])==null?void 0:x[this.availableSets.indexOf(f)]:this.matrixCache[l]).rendered[O]!==-1&&d.push({index:M,target:w.target,distance:w.distance,set:f,selectedArray:this.selectedArray,instanceId:Vt(M,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:dt(M,this.pointer.origin,this.selectedSet),range:mt(M,f,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:r,content:this.getBinContent(r,b,v,I,this.selectedArray),error:this.getBinError(r,b,v,I,this.selectedArray)})}}else d.push({index:M,target:w.target,distance:w.distance,set:f,selectedArray:this.selectedArray,instanceId:Vt(M,this.pointer.origin,this.maxInstancesPerLayer,this.selectedSet),jsrootInstance:dt(M,this.pointer.origin,this.selectedSet),range:mt(M,f,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,object:this.mesh,jsrootObj:r,content:this.getBinContent(r,b,v,I,this.selectedArray),error:this.getBinError(r,b,v,I,this.selectedArray)})}),d.sort((w,y)=>w.distance-y.distance)};if(this.pointer.isOnSet===null)return a(this.pointer.origin,0,0,[],this.pointer.isOnSet);{const r=this.selectedSet.map(h=>a(Jt(this.pointer.rootObj,this.pointer.parentPath.map(u=>u.bin[0]),h),0,0,[],h)).filter(h=>h.length!==0),l=Math.min(...r.map(h=>h[0].distance));return r.find(h=>h[0].distance===l)??[]}}dispatchSubjectHandler(t){if(!t.event.jsrootInstance){const A=t.event.index.map(i=>({x:i.x-1,y:i.y-1,z:i.z-1})),s=this.pointer.getChildByPosition(dt([...A]).slice(0,-1),t.event.set,this.selectedSet);t.event={index:A,set:t.event.set,jsrootInstance:dt(A,this.pointer.origin,this.selectedSet),range:mt(A,t.event.set,this.pointer.origin,this.wireframe,this.selectedSet),origin:this,jsrootObj:s,content:this.getBinContent(s,A[0].x+1,A[0].y+1,A[0].z+1,this.selectedArray),error:s.getBinError(A[0].x+1,A[0].y+1,A[0].z+1)}}this.intersectionHandler(t.event,t.event.source)}}class rA{constructor(e,t,A,s,i){m(this,"plane");m(this,"cinemaSub");m(this,"position");m(this,"rotation");m(this,"scale");m(this,"id");m(this,"configSub");const n=new g.PlaneGeometry(s.x,s.y),c=new g.MeshBasicMaterial({color:new g.Color().setHex(16777215),side:g.DoubleSide});this.plane||(this.plane=new g.Mesh(n,c),this.plane.position.set(t.x,t.y,t.z)),e&&this.updateTexture(e),this.id=i,this.position=t,this.rotation=A,this.scale=s,this.cinemaSub=Ut().getObservable().pipe(Q.filter(a=>a.id===this.id||a.id==="*")).subscribe(a=>{console.log("Caught at: ",this.id);const r=a.obj;S.makeImage({format:"png",option:"pE",object:r,width:1200,height:600}).then(l=>{this.updateTexture(l)})}),this.configSub=nt().getObservable().pipe(Q.filter(a=>a.target.id.includes("*")||a.target.id.includes(this.id))).subscribe(a=>{const r=a.config.environment.canvasPads.filter(l=>l.id===this.id||l.id==="*");r.length!==0&&(this.position=r[0].limits.position,this.rotation=r[0].limits.rotation,this.scale=r[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 e=Math.PI/180;this.plane.rotation.set(this.rotation.x*e,this.rotation.y*e,this.rotation.z*e)}updateTexture(e){if(!e){console.warn("updateTexture called with null/undefined");return}const t=new g.TextureLoader;if(typeof e=="string"&&(e.startsWith("data:")||e.startsWith("http")))t.load(e,A=>{this.plane.material.map=A,this.plane.material.needsUpdate=!0},void 0,A=>console.error("Texture load failed",A));else if(e instanceof HTMLImageElement){const A=new g.Texture(e);A.needsUpdate=!0,this.plane.material.map=A,this.plane.material.needsUpdate=!0}else console.error("Unsupported image type passed to updateTexture:",e)}remove(){this.plane.parent&&(this.plane.parent.remove(this.plane),this.cinemaSub.unsubscribe(),this.configSub.unsubscribe())}getPlane(){return this.plane}}class oA extends g.Loader{constructor(e){super(e)}load(e,t,A,s){const i=this,n=new g.FileLoader(this.manager);n.setPath(this.path),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,function(c){const a=i.parse(JSON.parse(c));t&&t(a)},A,s)}parse(e){return new aA(e)}}class aA{constructor(e){this.isFont=!0,this.type="Font",this.data=e}generateShapes(e,t=100,A="ltr"){const s=[],i=cA(e,t,this.data,A);for(let n=0,c=i.length;n<c;n++)s.push(...i[n].toShapes());return s}}function cA(o,e,t,A){const s=Array.from(o),i=e/t.resolution,n=(t.boundingBox.yMax-t.boundingBox.yMin+t.underlineThickness)*i,c=[];let a=0,r=0;(A=="rtl"||A=="tb")&&s.reverse();for(let l=0;l<s.length;l++){const h=s[l];if(h===`
|
|
86
86
|
`)a=0,r-=n;else{const u=lA(h,i,a,r,t);A=="tb"?(a=0,r+=t.ascender*i):a+=u.offsetX,c.push(u.path)}}return c}function lA(o,e,t,A,s){const i=s.glyphs[o]||s.glyphs["?"];if(!i){console.error('THREE.Font: character "'+o+'" does not exists in font family '+s.familyName+".");return}const n=new g.ShapePath;let c,a,r,l,h,u,f,d;if(i.o){const C=i._cachedOutline||(i._cachedOutline=i.o.split(" "));for(let p=0,w=C.length;p<w;)switch(C[p++]){case"m":c=C[p++]*e+t,a=C[p++]*e+A,n.moveTo(c,a);break;case"l":c=C[p++]*e+t,a=C[p++]*e+A,n.lineTo(c,a);break;case"q":r=C[p++]*e+t,l=C[p++]*e+A,h=C[p++]*e+t,u=C[p++]*e+A,n.quadraticCurveTo(h,u,r,l);break;case"b":r=C[p++]*e+t,l=C[p++]*e+A,h=C[p++]*e+t,u=C[p++]*e+A,f=C[p++]*e+t,d=C[p++]*e+A,n.bezierCurveTo(h,u,f,d,r,l);break}}return{offsetX:i.ha*e,path:n}}class hA{constructor(e,t={}){this.camera=e,this.options={backgroundColor:11184810,textColor:1,titleColor:0,padding:.002,lineHeight:.002,textSize:10,width:.031,...t},this.loader=new oA,this.queue=new Q.Subject;let A=!1,s=null;this.queueSub=this.queue.pipe(Q.concatMap(i=>A?(s=i,Q.EMPTY):(A=!0,Q.from(this.updateVisualization(i)).pipe(Q.finalize(()=>{if(A=!1,s){const n=s;s=null,this.queue.next(n)}}))))).subscribe(),this.group=new g.Group}parseData(e){const t=[];if(e.title&&t.push({text:e.title,isTitle:!0}),e.coords&&Array.isArray(e.coords)&&e.coords.forEach(A=>{Object.entries(A).forEach(([s,i])=>{if(i&&typeof i=="object"&&!("isColor"in i)){const n=`${s} = [${i.min.toFixed(2)}, ${i.max.toFixed(2)})`;t.push({text:n,isTitle:!1})}})}),e.index&&Array.isArray(e.index)&&e.index.forEach(A=>{let s=`bin = ${e.object.bins[e.instanceId]}`;Object.entries(A).forEach(([i,n])=>{s+=`, ${i}: ${n}`}),t.push({text:s,isTitle:!1})}),e.content!==void 0){const A=Number.isInteger(e.content)?`content = ${e.content}`:`content = ${e.content.toFixed(2)}`;t.push({text:A,isTitle:!1})}if(e.error!==void 0){const A=Number.isInteger(e.error)?`error = ${e.error}`:`error = ${e.error.toFixed(2)}`;t.push({text:A,isTitle:!1})}return t}createBackgroundPanel(e){const{width:t,backgroundColor:A}=this.options,s=new g.PlaneGeometry(t,e),i=new g.MeshBasicMaterial({color:A,side:g.DoubleSide});return new g.Mesh(s,i)}async updateVisualization(e){for(e===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 t=this.parseData(e);if(t.length===0)return;const{padding:A,lineHeight:s,textSize:i,textColor:n,titleColor:c,width:a}=this.options,r=t.length*s+A*2,l=this.createBackgroundPanel(r);this.group.add(l);const h=r/2-A-s/2;for(let b=0;b<t.length;b++){const v=t[b],I=h-b*s;try{const M=S.create("TLatex");M.fTitle=v.text,M.fTextAlign=12,M.fTextFont=2,M.fTitleFont=2,M.fLabelFont=2,M.fTextColor=v.isTitle?c:n,M.fTextSize=v.isTitle?i+2:i;const x=await S.build3d(M,"p",I*100,"","");x.scale.set(16e-5,16e-5,16e-5),x.position.x=-(a/2)+A,x.position.y=I,x.position.z=.001,this.group.add(x)}catch(M){console.error("Error creating text line:",M)}}const u=new g.Vector3(e.point.x,e.point.y,e.point.z);this.camera.worldToLocal(u);const f=new g.Vector3().subVectors(u,this.camera.position).normalize(),C=new g.Vector3().copy(this.camera.position).addScaledVector(f,.1),p=new g.Box3().setFromObject(this.group),w=new g.Vector3;p.getSize(w);const y=w.clone().multiplyScalar(.5);C.add(new g.Vector3(y.x,y.y,0)),this.group.position.copy(C),this.camera.add(this.group)}getGroup(){return this.group}setPosition(e,t,A){this.group.position.set(e,t,A)}setRotation(e,t,A){this.group.rotation.set(e,t,A)}clear(){for(;this.group.children.length>0;){const e=this.group.children[0];e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose(),this.group.remove(e)}}dispose(){for(this.queueSub.unsubscribe();this.group.children.length>0;){const e=this.group.children[0];e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose(),this.group.remove(e)}}}class uA{constructor(e,t,A){m(this,"histogramGroup");m(this,"binInfoComponent");m(this,"id");m(this,"configSub");m(this,"rootObj");m(this,"histoSub");m(this,"dummyEl");m(this,"defaultRaycastHandler");m(this,"mouseEvents",[]);m(this,"color",new g.Color);m(this,"colorTarget",new g.Color(65535));m(this,"buildPromise");this.id=e,this.rootObj=t,this.camera=A,this.histogramGroup=new g.Group,this.dummyEl=document.getElementById("dummyDiv"+e),this.dummyEl&&document.body.removeChild(this.dummyEl),this.binInfoComponent=new hA(this.camera,{backgroundColor:3556687,textColor:0,titleColor:0}),this.dummyEl=document.createElement("div"),this.dummyEl.id="dummyDiv"+e,document.body.appendChild(this.dummyEl),this.configSub=nt().getObservable().pipe(Q.filter(s=>s.target.id.includes("*")||s.target.id.includes(this.id))).subscribe(s=>{this.config={...s.config};const n=this.config.environment.histogramPads.find(c=>c.id===this.id).position;this.histogramGroup.position.set(n.x,n.y,n.z)}),this.sub=Nt().getObservable().pipe(Q.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==null?void 0: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(e){this.rootObj=e,this.histogramGroup.clear(),this.buildPromise=this.renderWithBuild3d()}renderWithBuild3d(){return S.build3d(this.rootObj).then(e=>{var n;const t=(n=this.config.environment.histogramPads.find(c=>c.id===this.id))==null?void 0:n.scale,A=new g.Box3().setFromObject(e),s=new g.Vector3;A.getSize(s),e.scale.set(t.x/s.x,t.z/s.y,t.y/s.z),e.rotateX(-Math.PI/2),e.translateZ(-(t.y/2)),this.histogramGroup.add(e);const i=this.getInstancedMesh();i&&(this.defaultRaycastHandler=i.raycast.bind(i),i.raycast=this.raycastHandler.bind(this))}).catch(e=>{const t=this.config.environment.histogramPads.find(A=>A.id===this.id);throw console.log("JSROOT was not able to build object: ",e,t),{message:e,scale:t==null?void 0:t.scale,position:t==null?void 0:t.position}})}raycastHandler(e,t){this.defaultRaycastHandler(e,t),setTimeout(()=>{const A=t.filter(h=>h.instanceId!==void 0).sort((h,u)=>h.distance-u.distance)[0];if(!A){this.mouseEvents.filter(h=>h.event==="mousemove").forEach(h=>h.function({instanceId:void 0,object:this.getInstancedMesh()},this));return}const s=A.object.bins[A.instanceId],i=this.rootObj.fXaxis.fNbins+2,n=this.rootObj.fYaxis.fNbins+2,c={x:s%i,y:Math.floor(s%(i*n)/i),z:Math.floor(s/(i*n))},a=this.getRangeByPosition([c]),r=this.rootObj.fName,l={...A,index:[c],coords:[{...a,bin:s,name:r}],content:this.rootObj.getBinContent(c.x,c.y,c.z),error:this.rootObj.getBinError(c.x,c.y,c.z)};this.mouseEvents.filter(h=>h.event===e._triggerSource).forEach(h=>h.function(l,this)),this.dirtyInstance=A.instanceId},0)}addEvent(e,t){(e==null?void 0:e.state)==="keydown"?this.keydownEvents.push({key:e.key,function:t}):(e==null?void 0:e.state)==="keyup"?this.keyupEvents.push({key:e.key,function:t}):this.mouseEvents.push({event:e,function:t})}removeEvent(e,t){const A=this.mouseEvents.find(s=>s===t);A&&this.mouseEvents.splice(A,1)}mouseClickDefault(e){console.log("mouseclick default")}mousemoveDefault(e){if(e.instanceId===this.dirtyInstance)return;const t=e.object;if(this.dirtyInstance!==void 0){t.getColorAt(this.dirtyInstance,this.color);const A=.5;this.color.lerp(this.colorTarget,-A/(1-A)),t.setColorAt(this.dirtyInstance,this.color)}this.dirtyInstance=e.instanceId,t.getColorAt(this.dirtyInstance,this.color),this.color.lerp(this.colorTarget,.5),t.setColorAt(this.dirtyInstance,this.color),t.instanceColor.needsUpdate=!0,this.binInfoComponent.queue.next(e),Ht().next(e)}shiftMouseClickDefault(e){console.log("shiftMouseClickDefault")}mouseDBClickDefault(e){console.log("mouseDBClickDefault")}shiftMouseDBClickDefault(e){console.log("shiftMouseDBClickDefault")}getInstancedMesh(e=this.histogramGroup){if(!e)return null;if(e.isInstancedMesh===!0)return e;if(e.children&&e.children.length>0)for(const t of e.children){const A=this.getInstancedMesh(t);if(A)return A}return null}getRangeByPosition(e){const t=["x","y","z"],A=Number.parseInt(this.rootObj._typename.substring(2,3),10);let s={};if(e[0]){for(let i=0;i<A;i++){const n=t[i],c=this.rootObj[`f${n.toUpperCase()}axis`],a=e[0][n];s[n]={min:c.GetBinLowEdge(a),max:c.GetBinCenter(a)*2-c.GetBinLowEdge(a),name:c.fName,title:c.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}}E.CanvasClass=rA,E.HistogramJsrootClass=uA,E.HistogramPointerClass=kt,E.MobileController=Ye,E.NdmvrRaycaster=He,E.THnPainter=nA,E.binInfoSubjectGet=Ht,E.brokerManagerGet=qt,E.canvasSubjectGet=Ut,E.configSubjectGet=nt,E.dispatchSubjectGet=Rt,E.fetchTFile=Pe,E.functionSubjectGet=Nt,E.getCameraComponent=Ne,E.histogramSubjectGet=Ee,E.httpRequest=fe,E.initNdmvrAframe=ue,E.inputDeviceSubjectGet=zt,E.stateSubjectGet=q,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|