@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
@@ -1 +1 @@
1
- import{a7 as U,bI as H,a5 as C,bJ as R,bq as j,ai as T,a2 as A,ad as g,al as x,bK as K,bL as B,aA as L,ae as d,s as b,bM as W,aX as V,aT as J,aC as y,am as v,bN as q,aK as M,ah as Q,ay as G,aL as tt,bO as it,bP as et,bQ as st,bR as nt,a6 as rt,bu as w,bS as ft,a3 as at,aN as ot}from"./ndmvr-aframe-core-Cw91_9_Y.js";import{drawObjectTitle as ht,TPavePainter as N}from"./TPavePainter-Dx40jhkF.js";const I=1,Y=2,lt=3,ct=4,ut=5,mt=0,xt=1,$=2,_="only-check";class dt{constructor(){this.reset()}reset(){Object.assign(this,{Axis:0,RevX:!1,RevY:!1,SymlogX:0,SymlogY:0,xticks:null,yticks:null,Bar:!1,BarStyle:0,Curve:!1,Hist:1,Line:!1,Fill:!1,Error:0,ErrorKind:-1,errorX:d.fErrorX,Mark:!1,Same:!1,Scat:!1,ScatCoef:1,Func:!0,AllFunc:!1,Arrow:!1,Box:!1,BoxStyle:0,Text:!1,TextAngle:0,TextKind:"",Char:0,Color:!1,Contour:0,Cjust:!1,Lego:0,Surf:0,Off:0,Tri:0,Proj:0,AxisPos:0,Ortho:d.fOrthoCamera,Spec:!1,Pie:!1,List:!1,Zscale:!1,Zvert:!0,PadPalette:!1,Candle:"",Violin:"",Scaled:null,Circular:0,Poisson:mt,GLBox:0,GLColor:!1,Project:"",ProfileProj:"",Profile2DProj:"",System:I,AutoColor:!1,NoStat:!1,ForceStat:!1,PadStats:!1,PadTitle:!1,AutoZoom:!1,HighRes:0,Zero:1,Palette:0,BaseLine:!1,ShowEmpty:!1,Optimize:L.OptimizeDraw,Mode3D:!1,x3dscale:1,y3dscale:1,SwapXY:!1,Render3D:w.Render3D.Default,FrontBox:!0,BackBox:!0,need_fillcol:!1,minimum:g,maximum:g,ymin:0,ymax:0,cutg:null,IgnoreMainScale:!1,IgnorePalette:!1})}isCartesian(){return this.System===I}is3d(){return this.Lego||this.Surf}decodeSumw2(i,s){const t=i.fSumw2?.length??0;let r=!1;for(let n=0;n<t;++n)if(i.fSumw2[n]>0){r=!0;break}(Number.isInteger(this.Error)||s)&&(this.Error=r?1:0),(Number.isInteger(this.Hist)||s)&&(this.Hist=r?0:1),(Number.isInteger(this.Zero)||s)&&(this.Zero=r?0:1)}canHavePalette(){return this.ndim===3?this.BoxStyle===12||this.BoxStyle===13||this.GLBox===12:this.ndim===1?this.Lego===12||this.Lego===14:this.Mode3D?this.Lego===12||this.Lego===14||this.Surf===11||this.Surf===12:this.Color||this.Contour||this.Hist||this.Axis?!0:!this.Scat&&!this.Box&&!this.Arrow&&!this.Proj&&!this.Candle&&!this.Violin&&!this.Text}decode(i,s,t,r,n,a){if(this.orginal=i,this.cutg_name="",M(i)&&s===2){const c=i.lastIndexOf("["),m=i.lastIndexOf("]");c>=0&&m>c+1&&i.at(c-1)!==":"&&(this.cutg_name=i.slice(c+1,m),i=i.slice(0,c)+i.slice(m+1),this.cutg=r?.findInPrimitives(this.cutg_name,ft),this.cutg&&(this.cutg.$redraw_pad=!0))}const e=new at(i);s===1&&this.decodeSumw2(t,!0),this.ndim=s||1,e.check("USE_PAD_TITLE"),e.check("USE_PAD_PALETTE"),e.check("USE_PAD_STATS"),e.check("IGNORE_PALETTE")&&(this.IgnorePalette=!0),e.check("PAL",!0)&&(this.Palette=e.partAsInt()),e.check("MINIMUM:",!0)?(this.ominimum=!0,this.minimum=parseFloat(e.part)):(this.ominimum=!1,this.minimum=t.fMinimum),e.check("MAXIMUM:",!0)?(this.omaximum=!0,this.maximum=parseFloat(e.part)):(this.omaximum=!1,this.maximum=t.fMaximum),!this.ominimum&&!this.omaximum&&this.minimum===this.maximum&&(this.minimum=this.maximum=g),this.ohmin=e.check("HMIN:",!0),this.hmin=this.ohmin?parseFloat(e.part):void 0,this.ohmax=e.check("HMAX:",!0),this.hmax=this.ohmax?parseFloat(e.part):void 0,this.zoom_min_max=e.check("ZOOM_MIN_MAX"),e.check("HTITLE:",!0)&&(t.fTitle=decodeURIComponent(e.getPart(!0))),e.check("XTITLE:",!0)&&(t.fXaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("YTITLE:",!0)&&(t.fYaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("ZTITLE:",!0)&&(t.fZaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("POISSON2")&&(this.Poisson=$),e.check("POISSON")&&(this.Poisson=xt),e.check("SHOWEMPTY")&&(this.ShowEmpty=!0),e.check("NOOPTIMIZE")&&(this.Optimize=0),e.check("OPTIMIZE")&&(this.Optimize=2),e.check("AUTOCOL")&&(this.AutoColor=!0),e.check("AUTOZOOM")&&(this.AutoZoom=!0),e.check("OPTSTAT",!0)&&(this.optstat=e.partAsInt()),e.check("OPTFIT",!0)&&(this.optfit=e.partAsInt()),e.check("XTICKS:","array")&&(this.xticks=e.array),this.ndim>1&&e.check("YTICKS:","array")&&(this.yticks=e.array),(this.optstat||this.optfit)&&t?.SetBit(T,!1),e.check("ALLBINS")&&t&&(t.fXaxis.fFirst=0,t.fXaxis.fLast=t.fXaxis.fNbins+1,t.fXaxis.SetBit(x.kAxisRange),this.ndim>1&&(t.fYaxis.fFirst=0,t.fYaxis.fLast=t.fYaxis.fNbins+1,t.fYaxis.SetBit(x.kAxisRange)),this.ndim>2&&(t.fZaxis.fFirst=0,t.fZaxis.fLast=t.fZaxis.fNbins+1,t.fZaxis.SetBit(x.kAxisRange))),e.check("NOSTAT")&&(this.NoStat=!0),e.check("STAT")&&(this.ForceStat=!0),e.check("NOTOOLTIP")&&a?.setTooltipAllowed(!1),e.check("TOOLTIP")&&a?.setTooltipAllowed(!0),e.check("SYMLOGX",!0)&&(this.SymlogX=e.partAsInt(0,3)),e.check("SYMLOGY",!0)&&(this.SymlogY=e.partAsInt(0,3)),e.check("X3DSC",!0)&&(this.x3dscale=e.partAsInt(0,100)/100),e.check("Y3DSC",!0)&&(this.y3dscale=e.partAsInt(0,100)/100),(e.check("PERSPECTIVE")||e.check("PERSP"))&&(this.Ortho=!1),e.check("ORTHO")&&(this.Ortho=!0);let f=0,o=0,l="";if(e.check("LOG2XY")&&(f=o=2),e.check("LOGXY")&&(f=o=1),e.check("LOG2X")&&(f=2),e.check("LOGX")&&(f=1),e.check("LOG2Y")&&(o=2),e.check("LOGY")&&(o=1),f&&n&&(n.fLogx=f,n.fUxmin=0,n.fUxmax=1,n.fX1=0,n.fX2=1),o&&n&&(n.fLogy=o,n.fUymin=0,n.fUymax=1,n.fY1=0,n.fY2=1),e.check("LOG2Z")&&n&&(n.fLogz=2),e.check("LOGZ")&&n&&(n.fLogz=1),e.check("LOGV")&&n&&(n.fLogv=1),e.check("GRIDXY")&&n&&(n.fGridx=n.fGridy=1),e.check("GRIDX")&&n&&(n.fGridx=1),e.check("GRIDY")&&n&&(n.fGridy=1),e.check("TICKXY2")&&n&&(n.fTickx=n.fTicky=2),e.check("TICKX2")&&n&&(n.fTickx=2),e.check("TICKY2")&&n&&(n.fTicky=2),e.check("TICKZ2")&&n&&(n.fTickz=2),e.check("TICKXY")&&n&&(n.fTickx=n.fTicky=1),e.check("TICKX")&&n&&(n.fTickx=1),e.check("TICKY")&&n&&(n.fTicky=1),e.check("TICKZ")&&n&&(n.fTickz=1),e.check("GRAYSCALE")&&r?.setGrayscale(!0),e.check("FILL_","color")&&(this.histoFillColor=e.color,this.histoFillPattern=1001),e.check("FILLPAT_",!0)&&(this.histoFillPattern=e.partAsInt()),e.check("LINE_","color")&&(this.histoLineColor=a.getColor(e.color)),e.check("WIDTH_",!0)&&(this.histoLineWidth=e.partAsInt()),e.check("XAXIS_","color")&&(t.fXaxis.fAxisColor=t.fXaxis.fLabelColor=t.fXaxis.fTitleColor=e.color),e.check("YAXIS_","color")&&(t.fYaxis.fAxisColor=t.fYaxis.fLabelColor=t.fYaxis.fTitleColor=e.color),e.check("X+")&&(this.AxisPos=10,this.second_x=!!a?.getMainPainter()),e.check("Y+")&&(this.AxisPos+=1,this.second_y=!!a?.getMainPainter()),e.check("SAME0")&&(this.Same=this.IgnoreMainScale=!0),e.check("SAMES")&&(this.Same=this.ForceStat=!0),e.check("SAME")&&(this.Same=this.Func=!0),e.check("SPEC")&&(this.Spec=!0),e.check("BASE0")||e.check("MIN0")?this.BaseLine=0:d.fHistMinimumZero&&(this.BaseLine=0),e.check("PIE")&&(this.Pie=!0),e.check("CANDLE",!0)&&(this.Candle=e.part||"1"),e.check("VIOLIN",!0)&&(this.Violin=e.part||"1",delete this.Candle),e.check("NOSCALED")&&(this.Scaled=!1),e.check("SCALED")&&(this.Scaled=!0),e.check("GLBOX",!0)&&(this.GLBox=10+e.partAsInt()),e.check("GLCOL")&&(this.GLColor=!0),e.check("GL"),(e.check("CIRCULAR",!0)||e.check("CIRC",!0))&&(this.Circular=11,e.part.indexOf("0")>=0&&(this.Circular=10),e.part.indexOf("1")>=0&&(this.Circular=11),e.part.indexOf("2")>=0&&(this.Circular=12)),this.Chord=e.check("CHORD"),e.check("LEGO",!0)&&(this.Lego=1,e.part.indexOf("0")>=0&&(this.Zero=!1),e.part.indexOf("1")>=0&&(this.Lego=11),e.part.indexOf("2")>=0&&(this.Lego=12),e.part.indexOf("3")>=0&&(this.Lego=13),e.part.indexOf("4")>=0&&(this.Lego=14),l=e.part,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),e.check("R3D_",!0)&&(this.Render3D=w.Render3D.fromString(e.part.toLowerCase())),e.check("POL")&&(this.System=Y),e.check("CYL")&&(this.System=lt),e.check("SPH")&&(this.System=ct),e.check("PSR")&&(this.System=ut),e.check("SURF",!0)&&(this.Surf=e.partAsInt(10,1),l=e.part,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),e.check("TF3",!0)&&(l=e.part),e.check("ISO",!0)&&(l=e.part),e.check("LIST")&&(this.List=!0),e.check("CONT",!0)&&s>1&&(this.Contour=1,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1),e.part.indexOf("1")>=0?this.Contour=11:e.part.indexOf("2")>=0?this.Contour=12:e.part.indexOf("3")>=0?this.Contour=13:e.part.indexOf("4")>=0&&(this.Contour=14)),e.check("HBAR",!0)?this.BarStyle=20:e.check("BAR",!0)&&(this.BarStyle=10),this.BarStyle>0&&(this.Hist=!1,this.need_fillcol=!0,this.BarStyle+=e.partAsInt()),e.check("ARR")&&(this.Arrow=!0),e.check("BOX",!0)&&(this.BoxStyle=10,e.part.indexOf("1")>=0?this.BoxStyle=11:e.part.indexOf("2")>=0?this.BoxStyle=12:e.part.indexOf("3")>=0&&(this.BoxStyle=13),e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),this.Box=this.BoxStyle>0,e.check("CJUST")&&(this.Cjust=!0),e.check("COL7")&&(this.Color=7),e.check("COL")&&(this.Color=!0),e.check("CHAR")&&(this.Char=1),e.check("ALLFUNC")&&(this.AllFunc=!0),e.check("FUNC")&&(this.Func=!0,this.Hist=!1),e.check("HAXISG")&&(this.Axis=3,this.SwapXY=1),e.check("HAXIS")&&(this.Axis=1,this.SwapXY=1),e.check("HAXIG")&&(this.Axis=2,this.SwapXY=1),e.check("AXISG")&&(this.Axis=3),e.check("AXIS")&&(this.Axis=1),e.check("AXIG")&&(this.Axis=2),e.check("TEXT",!0)&&(this.Text=!0,this.Hist=!1,this.TextAngle=Math.min(e.partAsInt(),90),e.part.indexOf("N")>=0&&(this.TextKind="N"),e.part.indexOf("E0")>=0&&(this.TextLine=!0),e.part.indexOf("E")>=0&&(this.TextKind="E")),e.check("SCAT=",!0)&&(this.Scat=!0,this.ScatCoef=parseFloat(e.part),(!Number.isFinite(this.ScatCoef)||this.ScatCoef<=0)&&(this.ScatCoef=1)),e.check("SCAT")&&(this.Scat=!0),e.check("TRI",!0)&&(this.Color=!1,this.Tri=1,l=e.part,e.part.indexOf("ERR")>=0&&(this.Error=!0)),e.check("AITOFF")&&(this.Proj=1),e.check("MERCATOR")&&(this.Proj=2),e.check("SINUSOIDAL")&&(this.Proj=3),e.check("PARABOLIC")&&(this.Proj=4),e.check("MOLLWEIDE")&&(this.Proj=5),this.Proj>0&&(this.Contour=14),e.check("PROJXY",!0)){let c=!0;t?._typename===R&&e.part&&!Number.isInteger(Number.parseInt(e.part))&&(this.Profile2DProj=e.part,c=e.check("PROJXY",!0)),c&&(this.Project="XY"+e.partAsInt(0,1))}e.check("PROJX",!0)&&(t?._typename===H?this.ProfileProj=e.part||"B":this.Project="X"+e.part),e.check("PROJY",!0)&&(this.Project="Y"+e.part),e.check("PROJ")&&(this.Project="Y1"),l&&(l.indexOf("FB")>=0&&(this.FrontBox=!1),l.indexOf("BB")>=0&&(this.BackBox=!1)),s===3&&e.check("FB")&&(this.FrontBox=!1),s===3&&e.check("BB")&&(this.BackBox=!1),e.check("PFC")&&!this._pfc&&(this._pfc=2),(e.check("PLC")||this.AutoColor)&&!this._plc&&(this._plc=2),e.check("PMC")&&!this._pmc&&(this._pmc=2);const h=(c,m,u)=>{if(m==="fZaxis"&&s<3&&!this.Lego&&!this.Surf)return;let k=e.check(c);n&&n["$"+c]&&(k=!0,n["$"+c]=void 0),k&&t&&t[m].SetBit(u,!0)};if(h("OTX","fXaxis",x.kOppositeTitle),h("OTY","fYaxis",x.kOppositeTitle),h("OTZ","fZaxis",x.kOppositeTitle),h("CTX","fXaxis",x.kCenterTitle),h("CTY","fYaxis",x.kCenterTitle),h("CTZ","fZaxis",x.kCenterTitle),h("MLX","fXaxis",x.kMoreLogLabels),h("MLY","fYaxis",x.kMoreLogLabels),h("MLZ","fZaxis",x.kMoreLogLabels),h("NOEX","fXaxis",x.kNoExponent),h("NOEY","fYaxis",x.kNoExponent),h("NOEZ","fZaxis",x.kNoExponent),(e.check("RX")||n?.$RX)&&(this.RevX=!0),(e.check("RY")||n?.$RY)&&(this.RevY=!0),e.check("L")&&(this.Line=!0,this.Hist=!1),e.check("F")&&(this.Fill=!0,this.need_fillcol=!0),e.check("A")&&(this.Axis=-1),n?.$ratio_pad==="up")this.Same||(this.Axis=0),t.fXaxis.fLabelSize=0,t.fXaxis.fTitle="",t.fYaxis.$use_top_pad=!0;else if(n?.$ratio_pad==="low"){this.Same||(this.Axis=0),t.fXaxis.$use_top_pad=!0,t.fYaxis.$use_top_pad=!0,t.fXaxis.fTitle="x";const c=a?.getCanvPainter().findPainterFor(null,"upper_pad",ot)?.getFramePainter();c&&(a.zoom_xmin=c.scale_xmin,a.zoom_xmax=c.scale_xmax)}e.check("B1")&&(this.BarStyle=1,this.BaseLine=0,this.Hist=!1,this.need_fillcol=!0),e.check("B")&&(this.BarStyle=1,this.Hist=!1,this.need_fillcol=!0),e.check("C")&&(this.Curve=!0,this.Hist=!1),e.check("][")&&(this.Off=1,this.Hist=!0),e.check("HIST")&&(this.Hist=!0,this.Func=!0,this.Error=!1),this.Bar=this.BarStyle>0,delete this.MarkStyle,e.check("P0")&&(this.Mark=!0,this.Hist=!1,this.Zero=!0),e.check("P")&&(this.Mark=!0,this.Hist=!1,this.Zero=!1),e.check("HZ")&&(this.Zscale=!0,this.Zvert=!1),e.check("Z")&&(this.Zscale=!0),e.check("*")&&(this.Mark=!0,this.MarkStyle=3,this.Hist=!1),e.check("H")&&(this.Hist=!0),e.check("E",!0)&&(this.Error=!0,s===1&&(this.Zero=!1,this.Hist===1&&(this.Hist=!1),Number.isInteger(parseInt(e.part[0]))&&(this.ErrorKind=parseInt(e.part[0])),(this.ErrorKind===3||this.ErrorKind===4)&&(this.need_fillcol=!0),this.ErrorKind===0&&(this.Zero=!0),e.part.indexOf("X0")>=0&&(this.errorX=0))),e.check("9")&&(this.HighRes=1),e.check("0")&&(this.Zero=!1),this.Color&&e.check("1")&&(this.Zero=!1),(this.Lego>0||s===3||(this.Surf>0||this.Error)&&s===2)&&(this.Mode3D=!0),a?.isTF1()&&s===1&&this.Hist===1&&!this.Line&&!this.Fill&&!this.Curve&&!this.Mark&&(this.Hist=!1,this.Curve=L.FuncAsCurve,this.Line=!this.Curve,this.Fill=!0),this.Surf===15&&(this.System===Y||this.System===I)&&(this.Surf=13)}swap_xy(){return this.BarStyle>=20||this.SwapXY}asString(i,s){let t="",r="";return this.Zscale&&(r=this.Zvert?"Z":"HZ"),this.Mode3D?(this.Lego?(t="LEGO",this.Zero||(t+="0"),this.Lego>10&&(t+=this.Lego-10),t+=r):this.Surf&&(t="SURF"+(this.Surf-10),t+=r),this.FrontBox||(t+="FB"),this.BackBox||(t+="BB"),this.x3dscale!==1&&(t+=`_X3DSC${Math.round(this.x3dscale*100)}`),this.y3dscale!==1&&(t+=`_Y3DSC${Math.round(this.y3dscale*100)}`)):(this.Candle?t="CANDLE"+this.Candle:this.Violin?t="VIOLIN"+this.Violin:this.Scat?t="SCAT":this.Color?(t="COL",this.Zero||(t+="0"),t+=r,this.Axis<0&&(t+="A")):this.Contour?(t="CONT",this.Contour>10&&(t+=this.Contour-10),t+=r):this.Bar?t=this.BaseLine===!1?"B":"B1":this.Mark?t=this.Zero?"P0":"P":this.Line?(t+="L",this.Fill&&(t+="F")):this.Off&&(t="]["),this.Error&&(t+="E",this.ErrorKind>=0&&(t+=this.ErrorKind),this.errorX===0&&(t+="X0")),this.Cjust&&(t+=" CJUST"),this.Hist===!0&&(t+="HIST"),this.Text&&(t+="TEXT",this.TextAngle&&(t+=this.TextAngle),t+=this.TextKind)),this.Palette&&this.canHavePalette()&&(t+=`_PAL${this.Palette}`),this.is3d()&&this.Ortho&&i&&(t+="_ORTHO"),this.ProfileProj&&(t+="_PROJX"+this.ProfileProj),this.Profile2DProj&&(t+="_PROJXY"+this.Profile2DProj),this.Proj&&(t+="_PROJ"+this.Proj),this.ShowEmpty&&(t+="_SHOWEMPTY"),this.Same?t+=this.ForceStat?"SAMES":"SAME":i&&t&&(this.ForceStat||this.StatEnabled===!0?t+="_STAT":(this.NoStat||this.StatEnabled===!1)&&(t+="_NOSTAT")),i&&s&&t&&(s.fLogx===2?t+="_LOG2X":s.fLogx&&(t+="_LOGX"),s.fLogy===2?t+="_LOG2Y":s.fLogy&&(t+="_LOGY"),s.fLogz===2?t+="_LOG2Z":s.fLogz&&(t+="_LOGZ"),s.fGridx&&(t+="_GRIDX"),s.fGridy&&(t+="_GRIDY"),s.fTickx===2?t+="_TICKX2":s.fTickx&&(t+="_TICKX"),s.fTicky===2?t+="_TICKY2":s.fTicky&&(t+="_TICKY"),s.fTickz===2?t+="_TICKZ2":s.fTickz&&(t+="_TICKZ")),this.cutg_name&&(t+=` [${this.cutg_name}]`),t}exact_values_range(){return this.ohmin&&this.ohmax}}class gt{constructor(i,s){this.arr=[],this.colzmin=i,this.colzmax=s,this.below_min_indx=-1,this.exact_min_indx=0}getLevels(){return this.arr}createNormal(i,s,t){if(s){this.colzmax<=0&&(this.colzmax=1),this.colzmin<=0&&(t===void 0||t<=0?this.colzmin=1e-4*this.colzmax:this.colzmin=t<3||t>100?.3*t:1),this.colzmin>=this.colzmax&&(this.colzmin=1e-4*this.colzmax);const r=Math.log(this.colzmin)/Math.log(10),n=Math.log(this.colzmax)/Math.log(10),a=(n-r)/i;this.arr.push(this.colzmin);for(let e=1;e<i;e++)this.arr.push(Math.exp((r+a*e)*Math.log(10)));this.arr.push(this.colzmax),this.custom=!0}else{this.colzmin===this.colzmax&&this.colzmin&&(this.colzmax+=.01*Math.abs(this.colzmax),this.colzmin-=.01*Math.abs(this.colzmin));const r=(this.colzmax-this.colzmin)/i;for(let n=0;n<=i;n++)this.arr.push(this.colzmin+r*n)}}createCustom(i){this.custom=!0;for(let s=0;s<i.length;++s)this.arr.push(i[s]);this.colzmax>this.arr.at(-1)&&this.arr.push(this.colzmax)}configIndicies(i,s){this.below_min_indx=i,this.exact_min_indx=s}getContourIndex(i){if(i<this.colzmin)return this.below_min_indx;if(i===this.colzmin)return this.exact_min_indx;if(!this.custom)return Math.floor(.01+(i-this.colzmin)*(this.arr.length-1)/(this.colzmax-this.colzmin));let s=0,t=this.arr.length-1;if(i<this.arr[0])return-1;if(i>=this.arr[t])return t;for(;s<t-1;){const r=Math.round((s+t)/2);this.arr[r]>i?t=r:s=r}return s}getPaletteColor(i,s){const t=this.getContourIndex(s);if(t<0)return null;const r=i.calcColorIndex(t,this.arr.length);return i.getColor(r)}getPaletteIndex(i,s){const t=this.getContourIndex(s);return t<0?null:i.calcColorIndex(t,this.arr.length)}}class Z{#i;#e;#n;#t;#s;constructor(i,s,t,r,n){this.#t=i,this.#s=s;const a=[],e=[],f=r===!0;this.#e=[],this.#n=[],f||s?.forEachPainterInPad(o=>{o.isSecondary(i)&&o.getSecondaryId()?.match(/^func_|^indx_/)&&a.push(o)},"objects");for(let o=0;o<t?.arr.length;++o){const l=t.arr[o],h=t.opt[o];if(!l?._typename||C(i.needDrawFunc)&&!i.needDrawFunc(i.getObject(),l))continue;let c=null,m=-1;if(!f){for(let u=0;u<a.length;++u)if(a[u].matchObjectType(l._typename)&&a[u].getObjectName()===l.fName){c=a[u],m=u;break}!c&&l.fName&&(c=s?.findPainterFor(null,l.fName,l._typename))}c?(c.updateObject(l,h),m>=0&&(a.splice(m,1),e.push(c))):(this.#e[o]=l,this.#n[o]=h)}if(v(r)){const o=a.indexOf(r);o>=0&&a.splice(o,1),n&&e.indexOf(r)<0&&e.push(r)}a.length&&s?.cleanPrimitives(o=>a.indexOf(o)>=0),e.length&&(this.#i=e)}drawNext(i){if(this.#i){const a=this.#i.shift();return this.#i.length||(this.#i=void 0),G(a.redraw()).then(()=>this.drawNext(0))}if(!this.#e||i>=this.#e.length)return this.#e=this.#n=void 0,Promise.resolve(this.#t);const s=this.#e[i],t=this.#n[i];if(!s||this.#s?.findPainterFor(s))return this.drawNext(i+1);const r=s?.fName?`func_${s.fName}`:`indx_${i}`;return s.$main_painter=this.#t,(N.canDraw(s)?N.draw(this.#s,s,t):this.#s.drawObject(this.#s,s,t)).then(a=>(a.setSecondaryId(this.#t,r),this.drawNext(i+1)))}}const Ct=A(10),E=A(16),O=A(17);class kt extends U{#i;#e;#n;#t;#s;#r;#f;constructor(i,s){super(i,s),this.draw_content=!0,this.nbinsx=this.nbinsy=0,this.mode3d=!1}getHisto(){return this.getObject()}getAxis(i){const s=this.getObject();switch(i){case"x":return s?.fXaxis;case"y":return s?.fYaxis;case"z":return s?.fZaxis}return null}isTProfile(){return this.matchObjectType(H)}isTF1(){return!1}isTH2Poly(){return this.matchObjectType(/^TH2Poly/)||this.matchObjectType(/^TProfile2Poly/)}clear3DScene(){const i=this.getFramePainter();C(i?.create3DScene)&&i.create3DScene(-1),this.mode3d=!1}cleanup(){this.clear3DScene(),this.clearHistPalette(),this.#r=void 0,super.cleanup()}getDimension(){const i=this.getHisto();return i?i._typename.match(/^TH2/)||i._typename===R?2:i._typename.match(/^TH3/)||i._typename===j?3:this.isTH2Poly()?2:1:0}decodeOptions(i){const s=this.getHisto(),t=this.getDimension(),r=this.getPadPainter(),n=r?.getRootPad(!0);let a=this.getOptions(!0);a?.reset?a.reset():a=this.setOptions(new dt,!0),this.lineatt?.setUsed(!1),this.fillatt?.setUsed(!1),this.markeratt?.setUsed(!1),a.decode(i||s.fOption,t,s,r,n,this),this.storeDrawOpt(i)}copyOptionsFrom(i){if(i===this)return;const s=this.getOptions(),t=i.getOptions();s.Mode3D=t.Mode3D,s.Zero=t.Zero,t.Mode3D?(s.Lego=t.Lego,s.Surf=t.Surf):(s.Color=t.Color,s.Contour=t.Contour)}copyOptionsToOthers(){this.forEachPainter(i=>{i!==this&&C(i.copyOptionsFrom)&&i.copyOptionsFrom(this)},"objects")}scanContent(){}checkPadRange(){this.isMainPainter()&&(this.check_pad_range=this.getOptions().Same?"pad_range":!0)}createHistDrawAttributes(i){const s=this.getHisto(),t=this.getOptions();if(t._pfc>1||t._plc>1||t._pmc>1){const r=this.getPadPainter();if(C(r?.getAutoColor)){const n=r.getAutoColor(s.$num_histos);this.#t="",t._pfc>1&&(t._pfc=1,s.fFillColor=n,this.#t+=`SetFillColor(${n});;`,this.deleteAttr("fill")),t._plc>1&&(t._plc=1,s.fLineColor=n,this.#t+=`SetLineColor(${n});;`,this.deleteAttr("line")),t._pmc>1&&(t._pmc=1,s.fMarkerColor=n,this.#t+=`SetMarkerColor(${n});;`,this.deleteAttr("marker"))}}i?this.deleteAttr():(this.createAttFill({attr:s,color:t.histoFillColor,pattern:t.histoFillPattern,kind:1}),this.createAttLine({attr:s,color0:t.histoLineColor,width:t.histoLineWidth}))}updateAxes(i,s,t){const r=(n,a,e)=>{n.fTitle=a.fTitle,n.fLabels=a.fLabels,n.fXmin=a.fXmin,n.fXmax=a.fXmax,n.fTimeDisplay=a.fTimeDisplay,n.fTimeFormat=a.fTimeFormat,n.fAxisColor=a.fAxisColor,n.fLabelColor=a.fLabelColor,n.fLabelFont=a.fLabelFont,n.fLabelOffset=a.fLabelOffset,n.fLabelSize=a.fLabelSize,n.fNdivisions=a.fNdivisions,n.fTickLength=a.fTickLength,n.fTitleColor=a.fTitleColor,n.fTitleFont=a.fTitleFont,n.fTitleOffset=a.fTitleOffset,n.fTitleSize=a.fTitleSize,e&&(n.fFirst=a.fFirst,n.fLast=a.fLast,n.fBits=a.fBits)};r(i.fXaxis,s.fXaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("x")),r(i.fYaxis,s.fYaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("y")),r(i.fZaxis,s.fZaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("z"))}updateObject(i,s){const t=this.getHisto(),r=this.getFramePainter(),n=this.getPadPainter(),a=this.getOptions();if(i!==t){if(!this.matchObjectType(i))return!1;const e=n?.findPainterFor(this.findStat());t.TestBit(T)!==i.TestBit(T)&&(t.SetBit(T,i.TestBit(T)),e&&(e.Enabled=!t.TestBit(T)&&!a.NoStat,e.Enabled||e.removeG())),t.SetBit(E,i.TestBit(E)),this.hasSnapId()&&(t.fName=i.fName,a._pfc=a._plc=a._pmc=0),a._pfc||(t.fFillColor=i.fFillColor),t.fFillStyle=i.fFillStyle,a._plc||(t.fLineColor=i.fLineColor),t.fLineStyle=i.fLineStyle,t.fLineWidth=i.fLineWidth,a._pmc||(t.fMarkerColor=i.fMarkerColor),t.fMarkerSize=i.fMarkerSize,t.fMarkerStyle=i.fMarkerStyle,t.fEntries=i.fEntries,t.fTsumw=i.fTsumw,t.fTsumwx=i.fTsumwx,t.fTsumwx2=i.fTsumwx2,t.fXaxis.fNbins=i.fXaxis.fNbins,this.getDimension()>1&&(t.fTsumwy=i.fTsumwy,t.fTsumwy2=i.fTsumwy2,t.fTsumwxy=i.fTsumwxy,t.fYaxis.fNbins=i.fYaxis.fNbins,this.getDimension()>2&&(t.fTsumwz=i.fTsumwz,t.fTsumwz2=i.fTsumwz2,t.fTsumwxz=i.fTsumwxz,t.fTsumwyz=i.fTsumwyz,t.fZaxis.fNbins=i.fZaxis.fNbins)),this.updateAxes(t,i,r),t.fArray=i.fArray,t.fNcells=i.fNcells,t.fTitle=i.fTitle,t.fMinimum=i.fMinimum,t.fMaximum=i.fMaximum,t.fSumw2=i.fSumw2,a.ominimum||(a.minimum=t.fMinimum),a.omaximum||(a.maximum=t.fMaximum),this.getDimension()===1&&a.decodeSumw2(t),this.isTProfile()?t.fBinEntries=i.fBinEntries:this.isTH2Poly()&&(t.fBins=i.fBins),this.#s=new Z(this,n,i.fFunctions,e,this.#f);const f=t.fOption!==i.fOption;t.fOption=i.fOption,(s!==void 0&&a.original!==s||f)&&this.decodeOptions(s||t.fOption)}return a.ominimum||(a.minimum=t.fMinimum),a.omaximum||(a.maximum=t.fMaximum),!a.ominimum&&!a.omaximum&&a.minimum===a.maximum&&(a.minimum=a.maximum=g),(!r||!r.zoomChangedInteractive())&&this.checkPadRange(),this.scanContent(),this.histogram_updated=!0,!0}accessMM(i,s){const t=i?"minimum":"maximum",r=this.getOptions();if(s===void 0)return r[t];r[t]=s,this.interactiveRedraw("pad",i?`exec:SetMinimum(${s})`:`exec:SetMaximum(${s})`)}extractAxesProperties(i){const s=n=>{n.fXbins.length>=n.fNbins?(n.GetBinCoord=function(a){const e=Math.round(a);if(e<=0)return this.fXmin;if(e>this.fNbins)return this.fXmax;if(e===a)return this.fXbins[e];const f=a<e?e-1:e+1;return this.fXbins[e]*Math.abs(a-f)+this.fXbins[f]*Math.abs(a-e)},n.FindBin=function(a,e){for(let f=1;f<this.fXbins.length;++f)if(a<this.fXbins[f])return Math.floor(f-1+e);return this.fNbins}):(n.$binwidth=(n.fXmax-n.fXmin)/(n.fNbins||1),n.GetBinCoord=function(a){return this.fXmin+a*this.$binwidth},n.FindBin=function(a,e){return Math.floor((a-this.fXmin)/this.$binwidth+e)})};this.nbinsx=this.nbinsy=this.nbinsz=0;const t=this.getHisto(),r=this.getOptions();this.nbinsx=t.fXaxis.fNbins,this.xmin=t.fXaxis.fXmin,this.xmax=t.fXaxis.fXmax,t.fXaxis.TestBit(x.kAxisRange)&&t.fXaxis.fFirst!==t.fXaxis.fLast&&(t.fXaxis.fFirst===0&&(this.xmin=t.fXaxis.GetBinLowEdge(0)),t.fXaxis.fLast===this.nbinsx+1&&(this.xmax=t.fXaxis.GetBinLowEdge(this.nbinsx+2))),s(t.fXaxis),this.ymin=t.fYaxis.fXmin,this.ymax=t.fYaxis.fXmax,i===1&&r.exact_values_range()&&(this.ymin=r.hmin,this.ymax=r.hmax),i>1&&(this.nbinsy=t.fYaxis.fNbins,t.fYaxis.TestBit(x.kAxisRange)&&t.fYaxis.fFirst!==t.fYaxis.fLast&&(t.fYaxis.fFirst===0&&(this.ymin=t.fYaxis.GetBinLowEdge(0)),t.fYaxis.fLast===this.nbinsy+1&&(this.ymax=t.fYaxis.GetBinLowEdge(this.nbinsy+2))),s(t.fYaxis),this.zmin=t.fZaxis.fXmin,this.zmax=t.fZaxis.fXmax,i===2&&r.ohmin&&r.ohmax&&(this.zmin=r.hmin,this.zmax=r.hmax)),i>2&&(this.nbinsz=t.fZaxis.fNbins,t.fZaxis.TestBit(x.kAxisRange)&&t.fZaxis.fFirst!==t.fZaxis.fLast&&(t.fZaxis.fFirst===0&&(this.zmin=t.fZaxis.GetBinLowEdge(0)),t.fZaxis.fLast===this.nbinsz+1&&(this.zmax=t.fZaxis.GetBinLowEdge(this.nbinsz+2))),s(t.fZaxis))}async drawAxes(){const i=this.getFramePainter();if(!i)return!1;const s=this.getHisto(),t=this.getOptions();if(this.ymin===this.ymax&&(this.ymax+=1),!this.isMainPainter()){const n={second_x:t.AxisPos>=10,second_y:t.AxisPos%10===1,hist_painter:this};return!n.second_x&&!n.second_y||i.hasDrawnAxes(n.second_x,n.second_y)?!1:(i.setAxes2Ranges(n.second_x,s.fXaxis,this.xmin,this.xmax,n.second_y,s.fYaxis,this.ymin,this.ymax),i.createXY2(n),i.drawAxes2(n.second_x,n.second_y))}if(i.setAxesRanges(s.fXaxis,this.xmin,this.xmax,s.fYaxis,this.ymin,this.ymax,s.fZaxis,0,0),i.createXY({ndim:this.getDimension(),check_pad_range:this.check_pad_range,zoom_xmin:this.zoom_xmin,zoom_xmax:this.zoom_xmax,zoom_ymin:this.zoom_ymin,zoom_ymax:this.zoom_ymax,xmin_nz:s.$xmin_nz,ymin_nz:this.ymin_nz??s.$ymin_nz,swap_xy:t.swap_xy(),xticks:t.xticks,yticks:t.yticks,reverse_x:t.RevX,reverse_y:t.RevY,symlog_x:t.SymlogX,symlog_y:t.SymlogY,Proj:t.Proj,extra_y_space:t.Text&&t.BarStyle>0,hist_painter:this}),delete this.check_pad_range,delete this.zoom_xmin,delete this.zoom_xmax,delete this.zoom_ymin,delete this.zoom_ymax,t.Same)return!1;const r=t.Axis<0||t.Axis===2;return i.drawAxes(!1,r,r,t.AxisPos,t.Zscale&&t.Zvert,t.Zscale&&!t.Zvert,t.Axis!==1)}processOnlineChange(i){const s=this.getCanvPainter();C(s?.processChanges)&&s.processChanges(i,this)}fillWebObjectOptions(i){this.#t&&i&&(i.fcust="auto_exec:"+this.#t,this.#t=void 0)}toggleTitle(i){const s=this.getHisto();if(!this.isMainPainter()||!s)return!1;if(i===_)return!s.TestBit(O);s.InvertBit(O),this.updateHistTitle().then(()=>this.processOnlineChange(`exec:SetBit(TH1::kNoTitle,${s.TestBit(O)?1:0})`))}async updateHistTitle(i){const s=this.getOptions(),t=this.getHisto();return ht(this,i,this.isMainPainter()&&!s.Same&&s.Axis<=0,!t.TestBit(O))}async drawHistTitle(){return this.updateHistTitle(!0)}processTitleChange(i){const s=this.getHisto(),t=this.getPadPainter()?.findPainterFor(null,K);if(!s||!t)return null;if(i==="check")return!this.isMainPainter()||this.getOptions().Same?null:s;t.clearPave(),t.addText(s.fTitle),t.redraw(),this.submitCanvExec(`SetTitle("${s.fTitle}")`)}updateStatWebCanvas(){if(!this.hasSnapId())return;const i=this.findStat(),s=this.getPadPainter()?.findPainterFor(i);s&&!s.hasSnapId()&&s.redraw()}findStat(){return this.findFunction(B,"stats")}toggleStat(i){const s=this.getPadPainter();let t=this.findStat(),r;if(i||(i=""),t)r=s.findPainterFor(t);else{if(i.indexOf("-check")>0)return!1;t=this.createStat(!0)}if(i===_)return r?.Enabled||!1;if(i==="fitpar-check")return t?.fOptFit||!1;if(i==="fitpar-toggle")return t?(t.fOptFit=t.fOptFit?0:1111,r?.redraw(),!0):!1;let n;return r?(r.Enabled=!r.Enabled,this.getOptions().StatEnabled=r.Enabled,r.redraw(),n=r.Enabled):n=N.draw(s,t),this.processOnlineChange(`exec:SetBit(TH1::kNoStats,${n?0:1})`,this),n}isIgnoreStatsFill(){return!this.getObject()||!this.draw_content&&!this.#f&&!this.hasSnapId()}createStat(i){const s=this.getHisto(),t=this.getOptions();if(!s||!i&&!t.ForceStat&&(t.NoStat||s.TestBit(T)||!L.AutoStat||!this.isMainPainter()))return null;const r=d;let n=this.findStat(),a=t.optstat,e=t.optfit;return a!==void 0?(n&&(n.fOptStat=a),t.optstat=void 0):a=s.$custom_stat||r.fOptStat,e!==void 0?(n&&(n.fOptFit=e),t.optfit=void 0):e=r.fOptFit,!n&&!a&&!e?null:(this.#f=!0,n||(n=b(B),Object.assign(n,{fName:"stats",fOptStat:a,fOptFit:e,fX1NDC:r.fStatX-r.fStatW,fY1NDC:r.fStatY-r.fStatH,fX2NDC:r.fStatX,fY2NDC:r.fStatY,fTextAlign:12}),n.AddText(s.fName),this.addFunction(n),n))}findFunction(i,s){const t=this.getHisto()?.fFunctions?.arr;if(!t)return null;for(let r=0;r<t.length;++r){const n=t[r];if(!(s&&n.fName!==s)&&n._typename===i)return n}return null}addFunction(i,s){const t=this.getHisto();!t||!i||(t.fFunctions||(t.fFunctions=b(W)),s?t.fFunctions.AddFirst(i):t.fFunctions.Add(i))}needDrawFunc(i,s){const t=this.getOptions();return s._typename===B?s.fName!=="stats"||!i.TestBit(T)&&!t.NoStat:s._typename===V||s._typename===J?t.AllFunc||!s.TestBit(A(9)):s._typename==="TGraphDelaunay"||s._typename==="TGraphDelaunay2D"?!1:s._typename!==y}async drawFunctions(){return new Z(this,this.getPadPainter(),this.getHisto().fFunctions,!0).drawNext(0)}async updateFunctions(){const i=this.#s?.drawNext(0)??this;return this.#s=void 0,i}getSelectIndex(i,s,t){let r,n=this.getAxis(i);const a=this[`nbins${i}`]??0,e=this.getOptions();e.second_x&&i==="x"&&(i="x2"),e.second_y&&i==="y"&&(i="y2");const f=this.getFramePainter(),o=f?f[`zoom_${i}min`]:0,l=f?f[`zoom_${i}max`]:0;return o!==l&&n?(s==="left"?r=n.FindBin(o,t||0):r=n.FindBin(l,(t||0)+.5),r<0?r=0:r>a&&(r=a)):r=s==="left"?0:a,n&&(n.fFirst===n.fLast||!n.TestBit(x.kAxisRange)||n.fFirst===1&&n.fLast===a)&&(n=null),s==="left"?(r=Math.max(r,0),n&&n.fFirst>1&&r<n.fFirst?r=n.fFirst-1:n?.fFirst===0&&(r=-1)):(r=Math.min(r,a),n&&n.fLast<=a&&r>n.fLast?r=n.fLast:n?.fLast===a+1&&(r=a+1)),r}unzoomUserRange(i,s,t){const r=this.getHisto(),n=this.getOptions();if(!r)return!1;let a=!1;const e=o=>!o||!o.TestBit(x.kAxisRange)||o.fFirst===o.fLast||o.fFirst<=1&&o.fLast>=o.fNbins?!1:(o.InvertBit(x.kAxisRange),!0),f=o=>this.getDimension()!==o||n.minimum===g&&n.maximum===g||!this.draw_content?!1:(n.minimum=n.maximum=g,this.scanContent(),!0);return i&&e(r.fXaxis)&&(a=!0),s&&(e(r.fYaxis)||f(1))&&(a=!0),t&&(e(r.fZaxis)||f(2))&&(a=!0),a}async addInteractivity(){const i=this.isMainPainter(),s=this.getOptions().AxisPos>0;return(i||s?this.getFramePainter():null)?.addInteractivity(!i&&s)??!1}changeUserRange(i,s){const t=this.getHisto(),r=t?t[`f${s}axis`]:null;if(!r)return;let n=`[1,${r.fNbins}]`;r.TestBit(x.kAxisRange)&&(n=`[${r.fFirst},${r.fLast}]`),i.input(`Enter user range for axis ${s} like [1,${r.fNbins}]`,n).then(a=>{if(!a||(a=JSON.parse(a),!a||a.length!==2))return;const e=parseInt(a[0]),f=parseInt(a[1]);!Number.isInteger(e)||!Number.isInteger(f)||(r.fFirst=e,r.fLast=f,r.SetBit(x.kAxisRange,r.fFirst<r.fLast&&r.fFirst>=1&&r.fLast<=r.fNbins),this.interactiveRedraw())})}changeValuesRange(i){const s=this.getOptions();let t;s.minimum!==g&&s.maximum!==g?t=`[${s.minimum},${s.maximum}]`:t=`[${this.gminbin},${this.gmaxbin}]`,i.input("Enter min/max hist values or empty string to reset",t).then(r=>{r=r?JSON.parse(r):[],!v(r)||r.length!==2||!Number.isFinite(r[0])||!Number.isFinite(r[1])?s.minimum=s.maximum=g:(s.minimum=r[0],s.maximum=r[1]),this.interactiveRedraw()})}executeMenuCommand(i,s){if(super.executeMenuCommand(i,s))return!0;if(i.fClassName===q){const t=M(i.$execid)?i.$execid.indexOf("#"):-1,r=t>0?i.$execid.slice(t+1):"x",n=this.getFramePainter();if(i.fName==="UnZoom")return n?.unzoom(r),!0;if(i.fName==="SetRange"){const a=n?.getAxis(r),e=JSON.parse(`[${s}]`);a&&e?.length===2&&n?.zoom(r,a.GetBinLowEdge(e[0]),a.GetBinLowEdge(e[1]+1))}else if(i.fName==="SetRangeUser"){const a=JSON.parse(`[${s}]`);a?.length===2&&n?.zoom(r,a[0],a[1])}}return!1}fillContextMenuItems(i){const s=this.getHisto(),t=this.getFramePainter(),r=this.getOptions();if(s){if(r.Axis<=0&&!this.isTF1()&&i.addchk(this.toggleStat(_),"Show statbox",()=>this.toggleStat()),this.isMainPainter()&&(i.sub("Title"),i.addchk(this.toggleTitle(_),"Show",()=>this.toggleTitle()),i.add("Edit",()=>i.input("Enter histogram title",s.fTitle).then(n=>{Q(s,n),this.interactiveRedraw()})),i.endsub()),this.draw_content&&(this.getDimension()===1?i.add("User range X",()=>this.changeUserRange(i,"X")):(i.sub("User ranges"),i.add("X",()=>this.changeUserRange(i,"X")),i.add("Y",()=>this.changeUserRange(i,"Y")),this.getDimension()>2?i.add("Z",()=>this.changeUserRange(i,"Z")):i.add("Values",()=>this.changeValuesRange(i)),i.endsub()),C(this.fillHistContextMenu)&&this.fillHistContextMenu(i),i.addRedrawMenu(this.getPrimary())),r.Mode3D){i.size()>0&&i.separator();const n=this.getMainPainter()||this;i.addchk(n.isTooltipAllowed(),"Show tooltips",()=>n.setTooltipAllowed("toggle")),i.addchk(t?.enable_highlight,"Highlight bins",()=>{t.enable_highlight=!t.enable_highlight,!t.enable_highlight&&t.mode3d&&C(t.highlightBin3D)&&t.highlightBin3D(null)}),C(t?.render3D)&&(i.addchk(n.options.FrontBox,"Front box",()=>{n.options.FrontBox=!n.options.FrontBox,t.render3D()}),i.addchk(n.options.BackBox,"Back box",()=>{n.options.BackBox=!n.options.BackBox,t.render3D()}),i.addchk(t.camera?.isOrthographicCamera,"Orthographic camera",a=>{n.options.Ortho=a,t.change3DCamera(a)})),this.draw_content&&(i.addchk(!r.Zero,"Suppress zeros",()=>{r.Zero=!r.Zero,this.interactiveRedraw("pad")}),(r.Lego===12||r.Lego===14)&&(i.addchk(r.Zscale,"Z scale",()=>this.toggleColz()),this.fillPaletteMenu(i,!0))),C(n.control?.reset)&&i.add("Reset camera",()=>n.control.reset())}this.histogram_updated&&t.zoomChangedInteractive()&&i.add("Let update zoom",()=>t.zoomChangedInteractive("reset"))}}getSnapId(i){return this.isTF1()&&(i==="x"||i==="y"||i==="z")&&(i="hist#"+i),super.getSnapId(i)}autoZoom(){}clickButton(i){const s=this.getFramePainter();if(!this.isMainPainter()||!s)return!1;switch(i){case"ToggleZoom":if(s.zoom_xmin!==s.zoom_xmax||s.zoom_ymin!==s.zoom_ymax||s.zoom_zmin!==s.zoom_zmax){const t=s.unzoom();return s.zoomChangedInteractive("reset"),t}if(this.draw_content)return this.autoZoom();break;case"ToggleLogX":return s.toggleAxisLog("x");case"ToggleLogY":return s.toggleAxisLog("y");case"ToggleLogZ":return s.toggleAxisLog("z");case"ToggleStatBox":return G(this.toggleStat());case"ToggleColorZ":return this.toggleColz()}return!1}fillToolbar(i){const s=this.getPadPainter();s&&(s.addPadButton("auto_zoom","Toggle between unzoom and autozoom-in","ToggleZoom","Ctrl *"),s.addPadButton("arrow_right","Toggle log x","ToggleLogX","PageDown"),s.addPadButton("arrow_up","Toggle log y","ToggleLogY","PageUp"),this.getDimension()>1&&s.addPadButton("arrow_diag","Toggle log z","ToggleLogZ"),s.addPadButton("statbox","Toggle stat box","ToggleStatBox"),i||s.showPadButtons())}get3DToolTip(i){const s=this.getHisto(),t={bin:i,name:s.fName,title:s.fTitle};switch(this.getDimension()){case 1:t.ix=i,t.iy=1,t.value=s.getBinContent(t.ix),t.error=s.getBinError(i),t.lines=this.getBinTooltips(i-1);break;case 2:t.ix=i%(this.nbinsx+2),t.iy=(i-t.ix)/(this.nbinsx+2),t.value=s.getBinContent(t.ix,t.iy),t.error=s.getBinError(i),t.lines=this.getBinTooltips(t.ix-1,t.iy-1);break;case 3:t.ix=i%(this.nbinsx+2),t.iy=(i-t.ix)/(this.nbinsx+2)%(this.nbinsy+2),t.iz=(i-t.ix-t.iy*(this.nbinsx+2))/(this.nbinsx+2)/(this.nbinsy+2),t.value=s.getBinContent(t.ix,t.iy,t.iz),t.error=s.getBinError(i),t.lines=this.getBinTooltips(t.ix-1,t.iy-1,t.iz-1);break}return t}createContour(i,s,t,r,n){const a=new gt(s,t),e=this.getDimension(),f=this.isTH2Poly(),o=this.getFramePainter(),l=this.getOptions();if(n)a.createCustom(n);else{i<2&&(i=d.fNumberContours);const h=this.getPadPainter()?.getRootPad(!0),c=h?.fLogv??(e===2&&h?.fLogz);a.createNormal(i,c??0,r)}return a.configIndicies(l.Zero&&!f?-1:0,a.colzmin||!l.Zero||f?0:-1),o&&e<3&&!o.mode3d&&(o.zmin=a.colzmin,o.zmax=a.colzmax),this.#r=a,a}#a(i,s){const t=this.getOptions(),r=this!==i&&(i?.minbin!==void 0||i?.options.ohmin)&&!t.IgnoreMainScale&&!i?.tt_handle?.ScatterPlot?i:this;let n,a=r.minbin,e=r.maxbin,f=r.minposbin;a===e&&(r.options.ohmin&&r.options.ohmax?(a=r.options.hmin,e=r.options.hmax,f=Math.max(a,e*1e-10)):(a=r.gminbin,e=r.gmaxbin,f=r.gminposbin));let o=a,l=e;if(t.minimum!==g&&(a=t.minimum,o=Math.min(o,a),n=!0),t.maximum!==g&&(e=t.maximum,l=Math.max(l,e),n=!1),a>=e&&(n||!a?e=a+1:a=e-1),s?.zoomChangedInteractive("z")){const h=s.zoom_zmin!==s.zoom_zmax;a=h?s.zoom_zmin:o,e=h?s.zoom_zmax:l}return{zmin:a,zmax:e,zminpos:f,gzmin:o,gzmax:l}}getContour(i){if(i===!1||this.#r&&i!==!0)return this.#r;const s=this.getMainPainter(),t=this.getFramePainter(),r=s?.getContour(!1);if(r&&s!==this&&!this.getOptions().IgnoreMainScale)return this.#r=r,r;const n=this.getObject(),a=this.#a(s,t);let e=0,f;n.fContour?.length>1&&(n.TestBit(Ct)?f=n.fContour:e=n.fContour.length);const o=this.createContour(e,a.zmin,a.zmax,a.zminpos,f);return this.getDimension()<3&&t&&(t.zmin=a.gzmin,t.zmax=a.gzmax,a.gzmin!==o.colzmin||a.gzmax!==o.colzmax?(t.zoom_zmin=o.colzmin,t.zoom_zmax=o.colzmax):t.zoom_zmin=t.zoom_zmax=0),o}getContourLevels(i){return this.getContour(i).getLevels()}getHistPalette(i){let s=i?null:this.#n;if(s)return s;const t=this.getPadPainter(),r=this.getOptions();return r.Palette||C(t?.getCustomPalette)&&(s=t.getCustomPalette()),s||(s=tt(r.Palette,t?.isGrayscale())),this.#n=s,s}clearHistPalette(){this.#n=void 0}fillPaletteMenu(i,s){const t=this.getOptions();if(i.addPaletteMenu(t.Palette||L.Palette,r=>{t.Palette=parseInt(r),this.getHistPalette(!0),this.redraw()}),!s){i.add("Default position",()=>{this.drawColorPalette(t.Zscale,!1,!0).then(()=>this.processOnlineChange("drawopt"))},"Set default position for palette");const r=this.findFunction(y),n=r?r.fX2NDC-r.fX1NDC<r.fY2NDC-r.fY1NDC:!0;i.addchk(n,"Vertical",a=>{t.Zvert=a,this.drawColorPalette(t.Zscale,!1,"toggle").then(()=>this.processOnlineChange("drawopt"))},"Toggle palette vertical/horizontal flag"),i.add("Bring to front",()=>this.getPadPainter()?.findPainterFor(r)?.bringToFront())}}async drawColorPalette(i,s,t){const r=this.getOptions(),n=t==="toggle";if(r.IgnorePalette)return null;const a=this.getMainPainter();if(a&&a!==this&&a.draw_content!==!1&&a.options.Zscale)return null;const e=this.getPadPainter();let f=this.findFunction(y),o=e?.findPainterFor(f);const l=!!f;if(!o&&!f&&!r.Axis&&(o=e?.findPainterFor(void 0,void 0,y),o&&(f=o.getObject(),this.addFunction(f,!0))),!i)return o&&!r.Same&&(r.Zvert=o.isPaletteVertical(),o.Enabled=!1,o.removeG()),null;if(f)o?.isPaletteVertical()!==void 0&&!n&&(r.Zvert=o.isPaletteVertical());else{if(f=b(y),t||(t=!r.Same),f.fInit=1,f.$can_move=t,f.$generated=!0,r.Zvert?Object.assign(f,{fX1NDC:1.005-d.fPadRightMargin,fX2NDC:1.045-d.fPadRightMargin,fY1NDC:d.fPadBottomMargin,fY2NDC:1-d.fPadTopMargin}):Object.assign(f,{fX1NDC:d.fPadLeftMargin,fX2NDC:1-d.fPadRightMargin,fY1NDC:1.005-d.fPadTopMargin,fY2NDC:1.045-d.fPadTopMargin}),Object.assign(f.fAxis,{fChopt:"+",fLineSyle:1,fLineWidth:1,fTextAngle:0,fTextAlign:11}),this.getDimension()===2){const u=this.getHisto().fZaxis;Object.assign(f.fAxis,{fTitle:u.fTitle,fTitleSize:u.fTitleSize,fTitleOffset:u.fTitleOffset,fTitleColor:u.fTitleColor,fLineColor:u.fAxisColor,fTextSize:u.fLabelSize,fTextColor:u.fLabelColor,fTextFont:u.fLabelFont,fLabelOffset:u.fLabelOffset})}this.addFunction(f,!0)}const h=this.getFramePainter();if(t&&h&&f.$can_move)if(r.Zvert){if(n){const u=f.fY2NDC-f.fY1NDC;f.fX1NDC=h.fX2NDC+.005,f.fX2NDC=f.fX1NDC+u}f.fX1NDC>(h.fX1NDC+h.fX2NDC)*.5?(f.fX2NDC=h.fX2NDC+.005+(f.fX2NDC-f.fX1NDC),f.fX1NDC=h.fX2NDC+.005):(f.fX1NDC=h.fX1NDC-.03-(f.fX2NDC-f.fX1NDC),f.fX2NDC=h.fX1NDC-.03),f.fY1NDC=h.fY1NDC,f.fY2NDC=h.fY2NDC}else{if(n){const u=f.fX2NDC-f.fX1NDC;f.fY1NDC=h.fY2NDC+.005,f.fY2NDC=f.fY1NDC+u}f.fX1NDC=h.fX1NDC,f.fX2NDC=h.fX2NDC,f.fY2NDC>(h.fY1NDC+h.fY2NDC)*.5?(f.fY2NDC=h.fY2NDC+.005+(f.fY2NDC-f.fY1NDC),f.fY1NDC=h.fY2NDC+.005):(f.fY1NDC=h.fY1NDC-.05-(f.fY2NDC-f.fY1NDC),f.fY2NDC=h.fY1NDC-.05)}f.$main_painter=this;let c="bring_stats_front",m;if(s&&(c+=";postpone"),t&&!this.#i&&(c+=";can_move"),r.Cjust&&(c+=";cjust"),!o)m=N.draw(e,f,c).then(u=>{o=u,o.setSecondaryId(this,l&&!f.$generated?`func_${f.fName}`:void 0)});else{if(o.Enabled=!0,s)return o;m=o.drawPave(c)}return m.then(()=>{r.Zvert=o.isPaletteVertical(),o.redraw=()=>{};let u=!1;if(t&&h&&!this.#i){const p=e?.getRootPad(!0);r.Zvert?(f.fX1NDC>.5&&h.fX2NDC>f.fX1NDC?(u=!0,h.fX2NDC=f.fX1NDC-.01,h.fX1NDC>h.fX2NDC-.1&&(h.fX1NDC=Math.max(0,h.fX2NDC-.1))):f.fX2NDC<.5&&h.fX1NDC<f.fX2NDC&&(u=!0,h.fX1NDC=f.fX2NDC+.05,h.fX2NDC<h.fX1NDC+.1&&(h.fX2NDC=Math.min(1,h.fX1NDC+.1))),u&&p&&(p.fLeftMargin=h.fX1NDC,p.fRightMargin=1-h.fX2NDC)):(f.fY1NDC>.5&&h.fY2NDC>f.fY1NDC?(u=!0,h.fY2NDC=f.fY1NDC-.01,h.fY1NDC>h.fY2NDC-.1&&(h.fY1NDC=Math.max(0,h.fXYNDC-.1))):f.fY2NDC<.5&&h.fY1NDC<f.fY2NDC&&(u=!0,h.fY1NDC=f.fY2NDC+.05,h.fXYNDC<h.fY1NDC+.1&&(h.fY2NDC=Math.min(1,h.fY1NDC+.1))),u&&p&&(p.fTopMargin=h.fY1NDC,p.fBottomMargin=1-h.fY2NDC))}return u?(this.#i=!0,h.redraw(),(s?Promise.resolve(!0):this.redraw()).then(()=>(this.#i=void 0,o))):o})}toggleColz(){const i=this.getOptions();if(i.canHavePalette())return i.Zscale=!i.Zscale,this.drawColorPalette(i.Zscale,!1,!0).then(()=>this.processOnlineChange("drawopt"))}toggleMode3D(){const i=this.getOptions();return i.Mode3D=!i.Mode3D,i.Mode3D&&!i.Surf&&!i.Lego&&!i.Error&&(this.nbinsx>=50||this.nbinsy>=50?i.Lego=i.Scat?13:14:i.Lego=i.Scat?1:12,i.Zero=!1),this.copyOptionsToOthers(),this.interactiveRedraw("pad","drawopt")}getHistGrFuncs(i=!0){let s;if(this.isUseFrame()){const t=this.getOptions();if(s=this.getFramePainter()?.getGrFuncs(t.second_x,t.second_y),s)return s}return s=this.getAxisToSvgFunc(!1,i,!1)||{x:t=>t,y:t=>t},s.$painter=this,s.grx=s.x,s.gry=s.y,s.logx=s.pad?.fLogx,s.logy=s.pad?.fLogy,s.swap_xy=function(){return this.fp?.swap_xy()??!1},s.getFrameWidth=function(){return this.$painter.getPadPainter().getPadWidth()},s.getFrameHeight=function(){return this.$painter.getPadPainter().getPadHeight()},s.isAxisZoomed=function(){return!1},s.revertAxis=function(t,r){return this.$painter.svgToAxis(t,r)},s.axisAsText=function(t,r){return r.toString()},s}prepareDraw(i){i||(i={rounding:!0,extra:0,middle:0}),i.extra===void 0&&(i.extra=0),i.middle===void 0&&(i.middle=0),i.pixel_density&&(i.rounding=!0);const s=this.getHisto(),t=this.getOptions(),r=s.fXaxis,n=s.fYaxis,a=this.getHistGrFuncs(i.rounding),e=this.getDimension(),f={i1:i.nozoom?0:this.getSelectIndex("x","left",0-i.extra),i2:i.nozoom?this.nbinsx:this.getSelectIndex("x","right",1+i.extra),j1:e===1||i.nozoom?0:this.getSelectIndex("y","left",0-i.extra),j2:e===1?1:i.nozoom?this.nbinsy:this.getSelectIndex("y","right",1+i.extra),min:0,max:0,sumz:0,xbar1:0,xbar2:1,ybar1:0,ybar2:1,width:a?.getFrameWidth()??600,height:a?.getFrameHeight()??400};if((i.use3d&&!a.size_x3d||!a.size_y3d)&&(i.use3d=!1),i.cutg){let p=f.i2,X=f.i1,z=f.j2,F=f.j1;for(let S=f.i1;S<f.i2;++S)for(let P=f.j1;P<f.j2;++P)i.cutg.IsInside(r.GetBinCoord(S+i.middle),n.GetBinCoord(P+i.middle))&&(p=Math.min(p,S),X=Math.max(X,S+1),z=Math.min(z,P),F=Math.max(F,P+1));Object.assign(f,{i1:p,i2:X,j1:z,j2:F})}let o,l,h,c,m,u;for(f.grx=f.i1<0?{}:new Float32Array(f.i2+1),f.gry=f.j1<0?{}:new Float32Array(f.j2+1),typeof s.fBarOffset=="number"&&typeof s.fBarWidth=="number"&&(s.fBarOffset||s.fBarWidth!==1e3)&&(s.fBarOffset<=1e3?f.xbar1=f.ybar1=.001*s.fBarOffset:s.fBarOffset<=3e3?f.xbar1=.001*(s.fBarOffset-2e3):s.fBarOffset<=5e3&&(f.ybar1=.001*(s.fBarOffset-4e3)),s.fBarWidth<=1e3?(f.xbar2=Math.min(1,f.xbar1+.001*s.fBarWidth),f.ybar2=Math.min(1,f.ybar1+.001*s.fBarWidth)):s.fBarWidth<=3e3?f.xbar2=Math.min(1,f.xbar1+.001*(s.fBarWidth-2e3)):s.fBarWidth<=5e3&&(f.ybar2=Math.min(1,f.ybar1+.001*(s.fBarWidth-4e3)))),i.original&&(f.original=!0,f.origx=f.i1<0?{}:new Float32Array(f.i2+1),f.origy=f.j1<0?{}:new Float32Array(f.j2+1)),o=f.i1;o<=f.i2;++o){if(h=r.GetBinCoord(o+i.middle),a.logx&&h<=0){f.i1=o+1;continue}f.origx&&(f.origx[o]=h),f.grx[o]=a.grx(h),i.rounding&&(f.grx[o]=Math.round(f.grx[o])),i.use3d&&(f.grx[o]<-a.size_x3d&&(f.grx[o]=-a.size_x3d,t.RevX?f.i2=o:f.i1=o),f.grx[o]>a.size_x3d&&(f.grx[o]=a.size_x3d,t.RevX?f.i1=o:f.i2=o))}if(e===1)f.gry[0]=a.gry(0),f.gry[1]=a.gry(1);else for(l=f.j1;l<=f.j2;++l){if(c=n.GetBinCoord(l+i.middle),a.logy&&c<=0){f.j1=l+1;continue}f.origy&&(f.origy[l]=c),f.gry[l]=a.gry(c),i.rounding&&(f.gry[l]=Math.round(f.gry[l])),i.use3d&&(f.gry[l]<-a.size_y3d&&(f.gry[l]=-a.size_y3d,t.RevY?f.j2=l:f.j1=l),f.gry[l]>a.size_y3d&&(f.gry[l]=a.size_y3d,t.RevY?f.j1=l:f.j2=l))}let k=!0;for(this.minposbin=0,o=f.i1;o<f.i2;++o)for(l=f.j1;l<f.j2;++l){if(m=s.getBinContent(o+1,l+1),f.sumz+=m,i.pixel_density){if(u=(f.grx[o+1]-f.grx[o])*(f.gry[l]-f.gry[l+1]),u<=0)continue;f.max=Math.max(f.max,m),m>0&&(m<f.min||f.min===0)&&(f.min=m),m/=u}k?(this.maxbin=this.minbin=m,k=!1):(this.maxbin=Math.max(this.maxbin,m),this.minbin=Math.min(this.minbin,m)),m>0&&(this.minposbin===0||m<this.minposbin)&&(this.minposbin=m)}return k&&(this.maxbin=this.minbin=0),this.#r=void 0,i.zrange&&Object.assign(f,this.#a(this.getMainPainter(),this.getFramePainter())),f}getAxisBinTip(i,s,t){const r=this.getHistGrFuncs(),n=r[`${i}_handle`],a=s.GetBinLowEdge(t+1);if(n.kind===it)return r.axisAsText(i,a);const e=s.GetBinLowEdge(t+2);return n.kind===et||this.isTF1()?r.axisAsText(i,(a+e)/2):`[${r.axisAsText(i,a)}, ${r.axisAsText(i,e)})`}getBinErrors(i,s,t){const r=i.getBinError(s),n={low:r,up:r},a=this.getOptions().Poisson||i.fBinStatErrOpt;if(!a||i.fSumw2.fN&&i.fTsumw!==i.fTsumw2||t<0)return n;const e=a===$?.05:1-.682689492,f=Math.round(t);return n.poisson=!0,n.low=f===0?0:t-st(e/2,f,1),n.up=nt(e/2,f+1,1)-t,n}_checkAssign(){const i=this.getPadPainter()?.getMainPainter();this.getOptions().Same?this.#e=!i:i||this.setAsMainPainter()}isUseFrame(){return!this.#e}static async _drawHist(i,s){const t=!M(s)||s.toLowerCase().indexOf("same")<0;return rt(i,t).then(()=>(i.decodeOptions(s),i._checkAssign(),i.isTH2Poly()&&i.options.Mode3D&&(i.options.Lego=12),i.checkPadRange(),i.scanContent(),i.createStat(),i.callDrawFunc())).then(()=>i.drawFunctions()).then(()=>i.drawHistTitle()).then(()=>{if(!i.Mode3D&&i.options.AutoZoom)return i.autoZoom()}).then(()=>{if(i.options.Project&&!i.mode3d&&C(i.toggleProjection))return i.toggleProjection(i.options.Project)}).then(()=>(i.fillToolbar(),i))}}export{Z as F,gt as H,kt as T,Y as a,lt as b,ct as c,ut as d,I as k};
1
+ import{a7 as U,bI as H,a5 as C,bJ as R,bq as j,ai as T,a2 as A,ad as g,al as x,bK as K,bL as B,aA as L,ae as d,s as b,bM as W,aX as V,aT as J,aC as y,am as v,bN as q,aK as M,ah as Q,ay as G,aL as tt,bO as it,bP as et,bQ as st,bR as nt,a6 as rt,bu as w,bS as ft,a3 as at,aN as ot}from"./ndmvr-aframe-core-DEHQ38JB.js";import{drawObjectTitle as ht,TPavePainter as N}from"./TPavePainter-1yngbgp8.js";const I=1,Y=2,lt=3,ct=4,ut=5,mt=0,xt=1,$=2,_="only-check";class dt{constructor(){this.reset()}reset(){Object.assign(this,{Axis:0,RevX:!1,RevY:!1,SymlogX:0,SymlogY:0,xticks:null,yticks:null,Bar:!1,BarStyle:0,Curve:!1,Hist:1,Line:!1,Fill:!1,Error:0,ErrorKind:-1,errorX:d.fErrorX,Mark:!1,Same:!1,Scat:!1,ScatCoef:1,Func:!0,AllFunc:!1,Arrow:!1,Box:!1,BoxStyle:0,Text:!1,TextAngle:0,TextKind:"",Char:0,Color:!1,Contour:0,Cjust:!1,Lego:0,Surf:0,Off:0,Tri:0,Proj:0,AxisPos:0,Ortho:d.fOrthoCamera,Spec:!1,Pie:!1,List:!1,Zscale:!1,Zvert:!0,PadPalette:!1,Candle:"",Violin:"",Scaled:null,Circular:0,Poisson:mt,GLBox:0,GLColor:!1,Project:"",ProfileProj:"",Profile2DProj:"",System:I,AutoColor:!1,NoStat:!1,ForceStat:!1,PadStats:!1,PadTitle:!1,AutoZoom:!1,HighRes:0,Zero:1,Palette:0,BaseLine:!1,ShowEmpty:!1,Optimize:L.OptimizeDraw,Mode3D:!1,x3dscale:1,y3dscale:1,SwapXY:!1,Render3D:w.Render3D.Default,FrontBox:!0,BackBox:!0,need_fillcol:!1,minimum:g,maximum:g,ymin:0,ymax:0,cutg:null,IgnoreMainScale:!1,IgnorePalette:!1})}isCartesian(){return this.System===I}is3d(){return this.Lego||this.Surf}decodeSumw2(i,s){const t=i.fSumw2?.length??0;let r=!1;for(let n=0;n<t;++n)if(i.fSumw2[n]>0){r=!0;break}(Number.isInteger(this.Error)||s)&&(this.Error=r?1:0),(Number.isInteger(this.Hist)||s)&&(this.Hist=r?0:1),(Number.isInteger(this.Zero)||s)&&(this.Zero=r?0:1)}canHavePalette(){return this.ndim===3?this.BoxStyle===12||this.BoxStyle===13||this.GLBox===12:this.ndim===1?this.Lego===12||this.Lego===14:this.Mode3D?this.Lego===12||this.Lego===14||this.Surf===11||this.Surf===12:this.Color||this.Contour||this.Hist||this.Axis?!0:!this.Scat&&!this.Box&&!this.Arrow&&!this.Proj&&!this.Candle&&!this.Violin&&!this.Text}decode(i,s,t,r,n,a){if(this.orginal=i,this.cutg_name="",M(i)&&s===2){const c=i.lastIndexOf("["),m=i.lastIndexOf("]");c>=0&&m>c+1&&i.at(c-1)!==":"&&(this.cutg_name=i.slice(c+1,m),i=i.slice(0,c)+i.slice(m+1),this.cutg=r?.findInPrimitives(this.cutg_name,ft),this.cutg&&(this.cutg.$redraw_pad=!0))}const e=new at(i);s===1&&this.decodeSumw2(t,!0),this.ndim=s||1,e.check("USE_PAD_TITLE"),e.check("USE_PAD_PALETTE"),e.check("USE_PAD_STATS"),e.check("IGNORE_PALETTE")&&(this.IgnorePalette=!0),e.check("PAL",!0)&&(this.Palette=e.partAsInt()),e.check("MINIMUM:",!0)?(this.ominimum=!0,this.minimum=parseFloat(e.part)):(this.ominimum=!1,this.minimum=t.fMinimum),e.check("MAXIMUM:",!0)?(this.omaximum=!0,this.maximum=parseFloat(e.part)):(this.omaximum=!1,this.maximum=t.fMaximum),!this.ominimum&&!this.omaximum&&this.minimum===this.maximum&&(this.minimum=this.maximum=g),this.ohmin=e.check("HMIN:",!0),this.hmin=this.ohmin?parseFloat(e.part):void 0,this.ohmax=e.check("HMAX:",!0),this.hmax=this.ohmax?parseFloat(e.part):void 0,this.zoom_min_max=e.check("ZOOM_MIN_MAX"),e.check("HTITLE:",!0)&&(t.fTitle=decodeURIComponent(e.getPart(!0))),e.check("XTITLE:",!0)&&(t.fXaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("YTITLE:",!0)&&(t.fYaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("ZTITLE:",!0)&&(t.fZaxis.fTitle=decodeURIComponent(e.getPart(!0))),e.check("POISSON2")&&(this.Poisson=$),e.check("POISSON")&&(this.Poisson=xt),e.check("SHOWEMPTY")&&(this.ShowEmpty=!0),e.check("NOOPTIMIZE")&&(this.Optimize=0),e.check("OPTIMIZE")&&(this.Optimize=2),e.check("AUTOCOL")&&(this.AutoColor=!0),e.check("AUTOZOOM")&&(this.AutoZoom=!0),e.check("OPTSTAT",!0)&&(this.optstat=e.partAsInt()),e.check("OPTFIT",!0)&&(this.optfit=e.partAsInt()),e.check("XTICKS:","array")&&(this.xticks=e.array),this.ndim>1&&e.check("YTICKS:","array")&&(this.yticks=e.array),(this.optstat||this.optfit)&&t?.SetBit(T,!1),e.check("ALLBINS")&&t&&(t.fXaxis.fFirst=0,t.fXaxis.fLast=t.fXaxis.fNbins+1,t.fXaxis.SetBit(x.kAxisRange),this.ndim>1&&(t.fYaxis.fFirst=0,t.fYaxis.fLast=t.fYaxis.fNbins+1,t.fYaxis.SetBit(x.kAxisRange)),this.ndim>2&&(t.fZaxis.fFirst=0,t.fZaxis.fLast=t.fZaxis.fNbins+1,t.fZaxis.SetBit(x.kAxisRange))),e.check("NOSTAT")&&(this.NoStat=!0),e.check("STAT")&&(this.ForceStat=!0),e.check("NOTOOLTIP")&&a?.setTooltipAllowed(!1),e.check("TOOLTIP")&&a?.setTooltipAllowed(!0),e.check("SYMLOGX",!0)&&(this.SymlogX=e.partAsInt(0,3)),e.check("SYMLOGY",!0)&&(this.SymlogY=e.partAsInt(0,3)),e.check("X3DSC",!0)&&(this.x3dscale=e.partAsInt(0,100)/100),e.check("Y3DSC",!0)&&(this.y3dscale=e.partAsInt(0,100)/100),(e.check("PERSPECTIVE")||e.check("PERSP"))&&(this.Ortho=!1),e.check("ORTHO")&&(this.Ortho=!0);let f=0,o=0,l="";if(e.check("LOG2XY")&&(f=o=2),e.check("LOGXY")&&(f=o=1),e.check("LOG2X")&&(f=2),e.check("LOGX")&&(f=1),e.check("LOG2Y")&&(o=2),e.check("LOGY")&&(o=1),f&&n&&(n.fLogx=f,n.fUxmin=0,n.fUxmax=1,n.fX1=0,n.fX2=1),o&&n&&(n.fLogy=o,n.fUymin=0,n.fUymax=1,n.fY1=0,n.fY2=1),e.check("LOG2Z")&&n&&(n.fLogz=2),e.check("LOGZ")&&n&&(n.fLogz=1),e.check("LOGV")&&n&&(n.fLogv=1),e.check("GRIDXY")&&n&&(n.fGridx=n.fGridy=1),e.check("GRIDX")&&n&&(n.fGridx=1),e.check("GRIDY")&&n&&(n.fGridy=1),e.check("TICKXY2")&&n&&(n.fTickx=n.fTicky=2),e.check("TICKX2")&&n&&(n.fTickx=2),e.check("TICKY2")&&n&&(n.fTicky=2),e.check("TICKZ2")&&n&&(n.fTickz=2),e.check("TICKXY")&&n&&(n.fTickx=n.fTicky=1),e.check("TICKX")&&n&&(n.fTickx=1),e.check("TICKY")&&n&&(n.fTicky=1),e.check("TICKZ")&&n&&(n.fTickz=1),e.check("GRAYSCALE")&&r?.setGrayscale(!0),e.check("FILL_","color")&&(this.histoFillColor=e.color,this.histoFillPattern=1001),e.check("FILLPAT_",!0)&&(this.histoFillPattern=e.partAsInt()),e.check("LINE_","color")&&(this.histoLineColor=a.getColor(e.color)),e.check("WIDTH_",!0)&&(this.histoLineWidth=e.partAsInt()),e.check("XAXIS_","color")&&(t.fXaxis.fAxisColor=t.fXaxis.fLabelColor=t.fXaxis.fTitleColor=e.color),e.check("YAXIS_","color")&&(t.fYaxis.fAxisColor=t.fYaxis.fLabelColor=t.fYaxis.fTitleColor=e.color),e.check("X+")&&(this.AxisPos=10,this.second_x=!!a?.getMainPainter()),e.check("Y+")&&(this.AxisPos+=1,this.second_y=!!a?.getMainPainter()),e.check("SAME0")&&(this.Same=this.IgnoreMainScale=!0),e.check("SAMES")&&(this.Same=this.ForceStat=!0),e.check("SAME")&&(this.Same=this.Func=!0),e.check("SPEC")&&(this.Spec=!0),e.check("BASE0")||e.check("MIN0")?this.BaseLine=0:d.fHistMinimumZero&&(this.BaseLine=0),e.check("PIE")&&(this.Pie=!0),e.check("CANDLE",!0)&&(this.Candle=e.part||"1"),e.check("VIOLIN",!0)&&(this.Violin=e.part||"1",delete this.Candle),e.check("NOSCALED")&&(this.Scaled=!1),e.check("SCALED")&&(this.Scaled=!0),e.check("GLBOX",!0)&&(this.GLBox=10+e.partAsInt()),e.check("GLCOL")&&(this.GLColor=!0),e.check("GL"),(e.check("CIRCULAR",!0)||e.check("CIRC",!0))&&(this.Circular=11,e.part.indexOf("0")>=0&&(this.Circular=10),e.part.indexOf("1")>=0&&(this.Circular=11),e.part.indexOf("2")>=0&&(this.Circular=12)),this.Chord=e.check("CHORD"),e.check("LEGO",!0)&&(this.Lego=1,e.part.indexOf("0")>=0&&(this.Zero=!1),e.part.indexOf("1")>=0&&(this.Lego=11),e.part.indexOf("2")>=0&&(this.Lego=12),e.part.indexOf("3")>=0&&(this.Lego=13),e.part.indexOf("4")>=0&&(this.Lego=14),l=e.part,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),e.check("R3D_",!0)&&(this.Render3D=w.Render3D.fromString(e.part.toLowerCase())),e.check("POL")&&(this.System=Y),e.check("CYL")&&(this.System=lt),e.check("SPH")&&(this.System=ct),e.check("PSR")&&(this.System=ut),e.check("SURF",!0)&&(this.Surf=e.partAsInt(10,1),l=e.part,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),e.check("TF3",!0)&&(l=e.part),e.check("ISO",!0)&&(l=e.part),e.check("LIST")&&(this.List=!0),e.check("CONT",!0)&&s>1&&(this.Contour=1,e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1),e.part.indexOf("1")>=0?this.Contour=11:e.part.indexOf("2")>=0?this.Contour=12:e.part.indexOf("3")>=0?this.Contour=13:e.part.indexOf("4")>=0&&(this.Contour=14)),e.check("HBAR",!0)?this.BarStyle=20:e.check("BAR",!0)&&(this.BarStyle=10),this.BarStyle>0&&(this.Hist=!1,this.need_fillcol=!0,this.BarStyle+=e.partAsInt()),e.check("ARR")&&(this.Arrow=!0),e.check("BOX",!0)&&(this.BoxStyle=10,e.part.indexOf("1")>=0?this.BoxStyle=11:e.part.indexOf("2")>=0?this.BoxStyle=12:e.part.indexOf("3")>=0&&(this.BoxStyle=13),e.part.indexOf("Z")>=0&&(this.Zscale=!0),e.part.indexOf("H")>=0&&(this.Zvert=!1)),this.Box=this.BoxStyle>0,e.check("CJUST")&&(this.Cjust=!0),e.check("COL7")&&(this.Color=7),e.check("COL")&&(this.Color=!0),e.check("CHAR")&&(this.Char=1),e.check("ALLFUNC")&&(this.AllFunc=!0),e.check("FUNC")&&(this.Func=!0,this.Hist=!1),e.check("HAXISG")&&(this.Axis=3,this.SwapXY=1),e.check("HAXIS")&&(this.Axis=1,this.SwapXY=1),e.check("HAXIG")&&(this.Axis=2,this.SwapXY=1),e.check("AXISG")&&(this.Axis=3),e.check("AXIS")&&(this.Axis=1),e.check("AXIG")&&(this.Axis=2),e.check("TEXT",!0)&&(this.Text=!0,this.Hist=!1,this.TextAngle=Math.min(e.partAsInt(),90),e.part.indexOf("N")>=0&&(this.TextKind="N"),e.part.indexOf("E0")>=0&&(this.TextLine=!0),e.part.indexOf("E")>=0&&(this.TextKind="E")),e.check("SCAT=",!0)&&(this.Scat=!0,this.ScatCoef=parseFloat(e.part),(!Number.isFinite(this.ScatCoef)||this.ScatCoef<=0)&&(this.ScatCoef=1)),e.check("SCAT")&&(this.Scat=!0),e.check("TRI",!0)&&(this.Color=!1,this.Tri=1,l=e.part,e.part.indexOf("ERR")>=0&&(this.Error=!0)),e.check("AITOFF")&&(this.Proj=1),e.check("MERCATOR")&&(this.Proj=2),e.check("SINUSOIDAL")&&(this.Proj=3),e.check("PARABOLIC")&&(this.Proj=4),e.check("MOLLWEIDE")&&(this.Proj=5),this.Proj>0&&(this.Contour=14),e.check("PROJXY",!0)){let c=!0;t?._typename===R&&e.part&&!Number.isInteger(Number.parseInt(e.part))&&(this.Profile2DProj=e.part,c=e.check("PROJXY",!0)),c&&(this.Project="XY"+e.partAsInt(0,1))}e.check("PROJX",!0)&&(t?._typename===H?this.ProfileProj=e.part||"B":this.Project="X"+e.part),e.check("PROJY",!0)&&(this.Project="Y"+e.part),e.check("PROJ")&&(this.Project="Y1"),l&&(l.indexOf("FB")>=0&&(this.FrontBox=!1),l.indexOf("BB")>=0&&(this.BackBox=!1)),s===3&&e.check("FB")&&(this.FrontBox=!1),s===3&&e.check("BB")&&(this.BackBox=!1),e.check("PFC")&&!this._pfc&&(this._pfc=2),(e.check("PLC")||this.AutoColor)&&!this._plc&&(this._plc=2),e.check("PMC")&&!this._pmc&&(this._pmc=2);const h=(c,m,u)=>{if(m==="fZaxis"&&s<3&&!this.Lego&&!this.Surf)return;let k=e.check(c);n&&n["$"+c]&&(k=!0,n["$"+c]=void 0),k&&t&&t[m].SetBit(u,!0)};if(h("OTX","fXaxis",x.kOppositeTitle),h("OTY","fYaxis",x.kOppositeTitle),h("OTZ","fZaxis",x.kOppositeTitle),h("CTX","fXaxis",x.kCenterTitle),h("CTY","fYaxis",x.kCenterTitle),h("CTZ","fZaxis",x.kCenterTitle),h("MLX","fXaxis",x.kMoreLogLabels),h("MLY","fYaxis",x.kMoreLogLabels),h("MLZ","fZaxis",x.kMoreLogLabels),h("NOEX","fXaxis",x.kNoExponent),h("NOEY","fYaxis",x.kNoExponent),h("NOEZ","fZaxis",x.kNoExponent),(e.check("RX")||n?.$RX)&&(this.RevX=!0),(e.check("RY")||n?.$RY)&&(this.RevY=!0),e.check("L")&&(this.Line=!0,this.Hist=!1),e.check("F")&&(this.Fill=!0,this.need_fillcol=!0),e.check("A")&&(this.Axis=-1),n?.$ratio_pad==="up")this.Same||(this.Axis=0),t.fXaxis.fLabelSize=0,t.fXaxis.fTitle="",t.fYaxis.$use_top_pad=!0;else if(n?.$ratio_pad==="low"){this.Same||(this.Axis=0),t.fXaxis.$use_top_pad=!0,t.fYaxis.$use_top_pad=!0,t.fXaxis.fTitle="x";const c=a?.getCanvPainter().findPainterFor(null,"upper_pad",ot)?.getFramePainter();c&&(a.zoom_xmin=c.scale_xmin,a.zoom_xmax=c.scale_xmax)}e.check("B1")&&(this.BarStyle=1,this.BaseLine=0,this.Hist=!1,this.need_fillcol=!0),e.check("B")&&(this.BarStyle=1,this.Hist=!1,this.need_fillcol=!0),e.check("C")&&(this.Curve=!0,this.Hist=!1),e.check("][")&&(this.Off=1,this.Hist=!0),e.check("HIST")&&(this.Hist=!0,this.Func=!0,this.Error=!1),this.Bar=this.BarStyle>0,delete this.MarkStyle,e.check("P0")&&(this.Mark=!0,this.Hist=!1,this.Zero=!0),e.check("P")&&(this.Mark=!0,this.Hist=!1,this.Zero=!1),e.check("HZ")&&(this.Zscale=!0,this.Zvert=!1),e.check("Z")&&(this.Zscale=!0),e.check("*")&&(this.Mark=!0,this.MarkStyle=3,this.Hist=!1),e.check("H")&&(this.Hist=!0),e.check("E",!0)&&(this.Error=!0,s===1&&(this.Zero=!1,this.Hist===1&&(this.Hist=!1),Number.isInteger(parseInt(e.part[0]))&&(this.ErrorKind=parseInt(e.part[0])),(this.ErrorKind===3||this.ErrorKind===4)&&(this.need_fillcol=!0),this.ErrorKind===0&&(this.Zero=!0),e.part.indexOf("X0")>=0&&(this.errorX=0))),e.check("9")&&(this.HighRes=1),e.check("0")&&(this.Zero=!1),this.Color&&e.check("1")&&(this.Zero=!1),(this.Lego>0||s===3||(this.Surf>0||this.Error)&&s===2)&&(this.Mode3D=!0),a?.isTF1()&&s===1&&this.Hist===1&&!this.Line&&!this.Fill&&!this.Curve&&!this.Mark&&(this.Hist=!1,this.Curve=L.FuncAsCurve,this.Line=!this.Curve,this.Fill=!0),this.Surf===15&&(this.System===Y||this.System===I)&&(this.Surf=13)}swap_xy(){return this.BarStyle>=20||this.SwapXY}asString(i,s){let t="",r="";return this.Zscale&&(r=this.Zvert?"Z":"HZ"),this.Mode3D?(this.Lego?(t="LEGO",this.Zero||(t+="0"),this.Lego>10&&(t+=this.Lego-10),t+=r):this.Surf&&(t="SURF"+(this.Surf-10),t+=r),this.FrontBox||(t+="FB"),this.BackBox||(t+="BB"),this.x3dscale!==1&&(t+=`_X3DSC${Math.round(this.x3dscale*100)}`),this.y3dscale!==1&&(t+=`_Y3DSC${Math.round(this.y3dscale*100)}`)):(this.Candle?t="CANDLE"+this.Candle:this.Violin?t="VIOLIN"+this.Violin:this.Scat?t="SCAT":this.Color?(t="COL",this.Zero||(t+="0"),t+=r,this.Axis<0&&(t+="A")):this.Contour?(t="CONT",this.Contour>10&&(t+=this.Contour-10),t+=r):this.Bar?t=this.BaseLine===!1?"B":"B1":this.Mark?t=this.Zero?"P0":"P":this.Line?(t+="L",this.Fill&&(t+="F")):this.Off&&(t="]["),this.Error&&(t+="E",this.ErrorKind>=0&&(t+=this.ErrorKind),this.errorX===0&&(t+="X0")),this.Cjust&&(t+=" CJUST"),this.Hist===!0&&(t+="HIST"),this.Text&&(t+="TEXT",this.TextAngle&&(t+=this.TextAngle),t+=this.TextKind)),this.Palette&&this.canHavePalette()&&(t+=`_PAL${this.Palette}`),this.is3d()&&this.Ortho&&i&&(t+="_ORTHO"),this.ProfileProj&&(t+="_PROJX"+this.ProfileProj),this.Profile2DProj&&(t+="_PROJXY"+this.Profile2DProj),this.Proj&&(t+="_PROJ"+this.Proj),this.ShowEmpty&&(t+="_SHOWEMPTY"),this.Same?t+=this.ForceStat?"SAMES":"SAME":i&&t&&(this.ForceStat||this.StatEnabled===!0?t+="_STAT":(this.NoStat||this.StatEnabled===!1)&&(t+="_NOSTAT")),i&&s&&t&&(s.fLogx===2?t+="_LOG2X":s.fLogx&&(t+="_LOGX"),s.fLogy===2?t+="_LOG2Y":s.fLogy&&(t+="_LOGY"),s.fLogz===2?t+="_LOG2Z":s.fLogz&&(t+="_LOGZ"),s.fGridx&&(t+="_GRIDX"),s.fGridy&&(t+="_GRIDY"),s.fTickx===2?t+="_TICKX2":s.fTickx&&(t+="_TICKX"),s.fTicky===2?t+="_TICKY2":s.fTicky&&(t+="_TICKY"),s.fTickz===2?t+="_TICKZ2":s.fTickz&&(t+="_TICKZ")),this.cutg_name&&(t+=` [${this.cutg_name}]`),t}exact_values_range(){return this.ohmin&&this.ohmax}}class gt{constructor(i,s){this.arr=[],this.colzmin=i,this.colzmax=s,this.below_min_indx=-1,this.exact_min_indx=0}getLevels(){return this.arr}createNormal(i,s,t){if(s){this.colzmax<=0&&(this.colzmax=1),this.colzmin<=0&&(t===void 0||t<=0?this.colzmin=1e-4*this.colzmax:this.colzmin=t<3||t>100?.3*t:1),this.colzmin>=this.colzmax&&(this.colzmin=1e-4*this.colzmax);const r=Math.log(this.colzmin)/Math.log(10),n=Math.log(this.colzmax)/Math.log(10),a=(n-r)/i;this.arr.push(this.colzmin);for(let e=1;e<i;e++)this.arr.push(Math.exp((r+a*e)*Math.log(10)));this.arr.push(this.colzmax),this.custom=!0}else{this.colzmin===this.colzmax&&this.colzmin&&(this.colzmax+=.01*Math.abs(this.colzmax),this.colzmin-=.01*Math.abs(this.colzmin));const r=(this.colzmax-this.colzmin)/i;for(let n=0;n<=i;n++)this.arr.push(this.colzmin+r*n)}}createCustom(i){this.custom=!0;for(let s=0;s<i.length;++s)this.arr.push(i[s]);this.colzmax>this.arr.at(-1)&&this.arr.push(this.colzmax)}configIndicies(i,s){this.below_min_indx=i,this.exact_min_indx=s}getContourIndex(i){if(i<this.colzmin)return this.below_min_indx;if(i===this.colzmin)return this.exact_min_indx;if(!this.custom)return Math.floor(.01+(i-this.colzmin)*(this.arr.length-1)/(this.colzmax-this.colzmin));let s=0,t=this.arr.length-1;if(i<this.arr[0])return-1;if(i>=this.arr[t])return t;for(;s<t-1;){const r=Math.round((s+t)/2);this.arr[r]>i?t=r:s=r}return s}getPaletteColor(i,s){const t=this.getContourIndex(s);if(t<0)return null;const r=i.calcColorIndex(t,this.arr.length);return i.getColor(r)}getPaletteIndex(i,s){const t=this.getContourIndex(s);return t<0?null:i.calcColorIndex(t,this.arr.length)}}class Z{#i;#e;#n;#t;#s;constructor(i,s,t,r,n){this.#t=i,this.#s=s;const a=[],e=[],f=r===!0;this.#e=[],this.#n=[],f||s?.forEachPainterInPad(o=>{o.isSecondary(i)&&o.getSecondaryId()?.match(/^func_|^indx_/)&&a.push(o)},"objects");for(let o=0;o<t?.arr.length;++o){const l=t.arr[o],h=t.opt[o];if(!l?._typename||C(i.needDrawFunc)&&!i.needDrawFunc(i.getObject(),l))continue;let c=null,m=-1;if(!f){for(let u=0;u<a.length;++u)if(a[u].matchObjectType(l._typename)&&a[u].getObjectName()===l.fName){c=a[u],m=u;break}!c&&l.fName&&(c=s?.findPainterFor(null,l.fName,l._typename))}c?(c.updateObject(l,h),m>=0&&(a.splice(m,1),e.push(c))):(this.#e[o]=l,this.#n[o]=h)}if(v(r)){const o=a.indexOf(r);o>=0&&a.splice(o,1),n&&e.indexOf(r)<0&&e.push(r)}a.length&&s?.cleanPrimitives(o=>a.indexOf(o)>=0),e.length&&(this.#i=e)}drawNext(i){if(this.#i){const a=this.#i.shift();return this.#i.length||(this.#i=void 0),G(a.redraw()).then(()=>this.drawNext(0))}if(!this.#e||i>=this.#e.length)return this.#e=this.#n=void 0,Promise.resolve(this.#t);const s=this.#e[i],t=this.#n[i];if(!s||this.#s?.findPainterFor(s))return this.drawNext(i+1);const r=s?.fName?`func_${s.fName}`:`indx_${i}`;return s.$main_painter=this.#t,(N.canDraw(s)?N.draw(this.#s,s,t):this.#s.drawObject(this.#s,s,t)).then(a=>(a.setSecondaryId(this.#t,r),this.drawNext(i+1)))}}const Ct=A(10),E=A(16),O=A(17);class kt extends U{#i;#e;#n;#t;#s;#r;#f;constructor(i,s){super(i,s),this.draw_content=!0,this.nbinsx=this.nbinsy=0,this.mode3d=!1}getHisto(){return this.getObject()}getAxis(i){const s=this.getObject();switch(i){case"x":return s?.fXaxis;case"y":return s?.fYaxis;case"z":return s?.fZaxis}return null}isTProfile(){return this.matchObjectType(H)}isTF1(){return!1}isTH2Poly(){return this.matchObjectType(/^TH2Poly/)||this.matchObjectType(/^TProfile2Poly/)}clear3DScene(){const i=this.getFramePainter();C(i?.create3DScene)&&i.create3DScene(-1),this.mode3d=!1}cleanup(){this.clear3DScene(),this.clearHistPalette(),this.#r=void 0,super.cleanup()}getDimension(){const i=this.getHisto();return i?i._typename.match(/^TH2/)||i._typename===R?2:i._typename.match(/^TH3/)||i._typename===j?3:this.isTH2Poly()?2:1:0}decodeOptions(i){const s=this.getHisto(),t=this.getDimension(),r=this.getPadPainter(),n=r?.getRootPad(!0);let a=this.getOptions(!0);a?.reset?a.reset():a=this.setOptions(new dt,!0),this.lineatt?.setUsed(!1),this.fillatt?.setUsed(!1),this.markeratt?.setUsed(!1),a.decode(i||s.fOption,t,s,r,n,this),this.storeDrawOpt(i)}copyOptionsFrom(i){if(i===this)return;const s=this.getOptions(),t=i.getOptions();s.Mode3D=t.Mode3D,s.Zero=t.Zero,t.Mode3D?(s.Lego=t.Lego,s.Surf=t.Surf):(s.Color=t.Color,s.Contour=t.Contour)}copyOptionsToOthers(){this.forEachPainter(i=>{i!==this&&C(i.copyOptionsFrom)&&i.copyOptionsFrom(this)},"objects")}scanContent(){}checkPadRange(){this.isMainPainter()&&(this.check_pad_range=this.getOptions().Same?"pad_range":!0)}createHistDrawAttributes(i){const s=this.getHisto(),t=this.getOptions();if(t._pfc>1||t._plc>1||t._pmc>1){const r=this.getPadPainter();if(C(r?.getAutoColor)){const n=r.getAutoColor(s.$num_histos);this.#t="",t._pfc>1&&(t._pfc=1,s.fFillColor=n,this.#t+=`SetFillColor(${n});;`,this.deleteAttr("fill")),t._plc>1&&(t._plc=1,s.fLineColor=n,this.#t+=`SetLineColor(${n});;`,this.deleteAttr("line")),t._pmc>1&&(t._pmc=1,s.fMarkerColor=n,this.#t+=`SetMarkerColor(${n});;`,this.deleteAttr("marker"))}}i?this.deleteAttr():(this.createAttFill({attr:s,color:t.histoFillColor,pattern:t.histoFillPattern,kind:1}),this.createAttLine({attr:s,color0:t.histoLineColor,width:t.histoLineWidth}))}updateAxes(i,s,t){const r=(n,a,e)=>{n.fTitle=a.fTitle,n.fLabels=a.fLabels,n.fXmin=a.fXmin,n.fXmax=a.fXmax,n.fTimeDisplay=a.fTimeDisplay,n.fTimeFormat=a.fTimeFormat,n.fAxisColor=a.fAxisColor,n.fLabelColor=a.fLabelColor,n.fLabelFont=a.fLabelFont,n.fLabelOffset=a.fLabelOffset,n.fLabelSize=a.fLabelSize,n.fNdivisions=a.fNdivisions,n.fTickLength=a.fTickLength,n.fTitleColor=a.fTitleColor,n.fTitleFont=a.fTitleFont,n.fTitleOffset=a.fTitleOffset,n.fTitleSize=a.fTitleSize,e&&(n.fFirst=a.fFirst,n.fLast=a.fLast,n.fBits=a.fBits)};r(i.fXaxis,s.fXaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("x")),r(i.fYaxis,s.fYaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("y")),r(i.fZaxis,s.fZaxis,this.hasSnapId()&&!t?.zoomChangedInteractive("z"))}updateObject(i,s){const t=this.getHisto(),r=this.getFramePainter(),n=this.getPadPainter(),a=this.getOptions();if(i!==t){if(!this.matchObjectType(i))return!1;const e=n?.findPainterFor(this.findStat());t.TestBit(T)!==i.TestBit(T)&&(t.SetBit(T,i.TestBit(T)),e&&(e.Enabled=!t.TestBit(T)&&!a.NoStat,e.Enabled||e.removeG())),t.SetBit(E,i.TestBit(E)),this.hasSnapId()&&(t.fName=i.fName,a._pfc=a._plc=a._pmc=0),a._pfc||(t.fFillColor=i.fFillColor),t.fFillStyle=i.fFillStyle,a._plc||(t.fLineColor=i.fLineColor),t.fLineStyle=i.fLineStyle,t.fLineWidth=i.fLineWidth,a._pmc||(t.fMarkerColor=i.fMarkerColor),t.fMarkerSize=i.fMarkerSize,t.fMarkerStyle=i.fMarkerStyle,t.fEntries=i.fEntries,t.fTsumw=i.fTsumw,t.fTsumwx=i.fTsumwx,t.fTsumwx2=i.fTsumwx2,t.fXaxis.fNbins=i.fXaxis.fNbins,this.getDimension()>1&&(t.fTsumwy=i.fTsumwy,t.fTsumwy2=i.fTsumwy2,t.fTsumwxy=i.fTsumwxy,t.fYaxis.fNbins=i.fYaxis.fNbins,this.getDimension()>2&&(t.fTsumwz=i.fTsumwz,t.fTsumwz2=i.fTsumwz2,t.fTsumwxz=i.fTsumwxz,t.fTsumwyz=i.fTsumwyz,t.fZaxis.fNbins=i.fZaxis.fNbins)),this.updateAxes(t,i,r),t.fArray=i.fArray,t.fNcells=i.fNcells,t.fTitle=i.fTitle,t.fMinimum=i.fMinimum,t.fMaximum=i.fMaximum,t.fSumw2=i.fSumw2,a.ominimum||(a.minimum=t.fMinimum),a.omaximum||(a.maximum=t.fMaximum),this.getDimension()===1&&a.decodeSumw2(t),this.isTProfile()?t.fBinEntries=i.fBinEntries:this.isTH2Poly()&&(t.fBins=i.fBins),this.#s=new Z(this,n,i.fFunctions,e,this.#f);const f=t.fOption!==i.fOption;t.fOption=i.fOption,(s!==void 0&&a.original!==s||f)&&this.decodeOptions(s||t.fOption)}return a.ominimum||(a.minimum=t.fMinimum),a.omaximum||(a.maximum=t.fMaximum),!a.ominimum&&!a.omaximum&&a.minimum===a.maximum&&(a.minimum=a.maximum=g),(!r||!r.zoomChangedInteractive())&&this.checkPadRange(),this.scanContent(),this.histogram_updated=!0,!0}accessMM(i,s){const t=i?"minimum":"maximum",r=this.getOptions();if(s===void 0)return r[t];r[t]=s,this.interactiveRedraw("pad",i?`exec:SetMinimum(${s})`:`exec:SetMaximum(${s})`)}extractAxesProperties(i){const s=n=>{n.fXbins.length>=n.fNbins?(n.GetBinCoord=function(a){const e=Math.round(a);if(e<=0)return this.fXmin;if(e>this.fNbins)return this.fXmax;if(e===a)return this.fXbins[e];const f=a<e?e-1:e+1;return this.fXbins[e]*Math.abs(a-f)+this.fXbins[f]*Math.abs(a-e)},n.FindBin=function(a,e){for(let f=1;f<this.fXbins.length;++f)if(a<this.fXbins[f])return Math.floor(f-1+e);return this.fNbins}):(n.$binwidth=(n.fXmax-n.fXmin)/(n.fNbins||1),n.GetBinCoord=function(a){return this.fXmin+a*this.$binwidth},n.FindBin=function(a,e){return Math.floor((a-this.fXmin)/this.$binwidth+e)})};this.nbinsx=this.nbinsy=this.nbinsz=0;const t=this.getHisto(),r=this.getOptions();this.nbinsx=t.fXaxis.fNbins,this.xmin=t.fXaxis.fXmin,this.xmax=t.fXaxis.fXmax,t.fXaxis.TestBit(x.kAxisRange)&&t.fXaxis.fFirst!==t.fXaxis.fLast&&(t.fXaxis.fFirst===0&&(this.xmin=t.fXaxis.GetBinLowEdge(0)),t.fXaxis.fLast===this.nbinsx+1&&(this.xmax=t.fXaxis.GetBinLowEdge(this.nbinsx+2))),s(t.fXaxis),this.ymin=t.fYaxis.fXmin,this.ymax=t.fYaxis.fXmax,i===1&&r.exact_values_range()&&(this.ymin=r.hmin,this.ymax=r.hmax),i>1&&(this.nbinsy=t.fYaxis.fNbins,t.fYaxis.TestBit(x.kAxisRange)&&t.fYaxis.fFirst!==t.fYaxis.fLast&&(t.fYaxis.fFirst===0&&(this.ymin=t.fYaxis.GetBinLowEdge(0)),t.fYaxis.fLast===this.nbinsy+1&&(this.ymax=t.fYaxis.GetBinLowEdge(this.nbinsy+2))),s(t.fYaxis),this.zmin=t.fZaxis.fXmin,this.zmax=t.fZaxis.fXmax,i===2&&r.ohmin&&r.ohmax&&(this.zmin=r.hmin,this.zmax=r.hmax)),i>2&&(this.nbinsz=t.fZaxis.fNbins,t.fZaxis.TestBit(x.kAxisRange)&&t.fZaxis.fFirst!==t.fZaxis.fLast&&(t.fZaxis.fFirst===0&&(this.zmin=t.fZaxis.GetBinLowEdge(0)),t.fZaxis.fLast===this.nbinsz+1&&(this.zmax=t.fZaxis.GetBinLowEdge(this.nbinsz+2))),s(t.fZaxis))}async drawAxes(){const i=this.getFramePainter();if(!i)return!1;const s=this.getHisto(),t=this.getOptions();if(this.ymin===this.ymax&&(this.ymax+=1),!this.isMainPainter()){const n={second_x:t.AxisPos>=10,second_y:t.AxisPos%10===1,hist_painter:this};return!n.second_x&&!n.second_y||i.hasDrawnAxes(n.second_x,n.second_y)?!1:(i.setAxes2Ranges(n.second_x,s.fXaxis,this.xmin,this.xmax,n.second_y,s.fYaxis,this.ymin,this.ymax),i.createXY2(n),i.drawAxes2(n.second_x,n.second_y))}if(i.setAxesRanges(s.fXaxis,this.xmin,this.xmax,s.fYaxis,this.ymin,this.ymax,s.fZaxis,0,0),i.createXY({ndim:this.getDimension(),check_pad_range:this.check_pad_range,zoom_xmin:this.zoom_xmin,zoom_xmax:this.zoom_xmax,zoom_ymin:this.zoom_ymin,zoom_ymax:this.zoom_ymax,xmin_nz:s.$xmin_nz,ymin_nz:this.ymin_nz??s.$ymin_nz,swap_xy:t.swap_xy(),xticks:t.xticks,yticks:t.yticks,reverse_x:t.RevX,reverse_y:t.RevY,symlog_x:t.SymlogX,symlog_y:t.SymlogY,Proj:t.Proj,extra_y_space:t.Text&&t.BarStyle>0,hist_painter:this}),delete this.check_pad_range,delete this.zoom_xmin,delete this.zoom_xmax,delete this.zoom_ymin,delete this.zoom_ymax,t.Same)return!1;const r=t.Axis<0||t.Axis===2;return i.drawAxes(!1,r,r,t.AxisPos,t.Zscale&&t.Zvert,t.Zscale&&!t.Zvert,t.Axis!==1)}processOnlineChange(i){const s=this.getCanvPainter();C(s?.processChanges)&&s.processChanges(i,this)}fillWebObjectOptions(i){this.#t&&i&&(i.fcust="auto_exec:"+this.#t,this.#t=void 0)}toggleTitle(i){const s=this.getHisto();if(!this.isMainPainter()||!s)return!1;if(i===_)return!s.TestBit(O);s.InvertBit(O),this.updateHistTitle().then(()=>this.processOnlineChange(`exec:SetBit(TH1::kNoTitle,${s.TestBit(O)?1:0})`))}async updateHistTitle(i){const s=this.getOptions(),t=this.getHisto();return ht(this,i,this.isMainPainter()&&!s.Same&&s.Axis<=0,!t.TestBit(O))}async drawHistTitle(){return this.updateHistTitle(!0)}processTitleChange(i){const s=this.getHisto(),t=this.getPadPainter()?.findPainterFor(null,K);if(!s||!t)return null;if(i==="check")return!this.isMainPainter()||this.getOptions().Same?null:s;t.clearPave(),t.addText(s.fTitle),t.redraw(),this.submitCanvExec(`SetTitle("${s.fTitle}")`)}updateStatWebCanvas(){if(!this.hasSnapId())return;const i=this.findStat(),s=this.getPadPainter()?.findPainterFor(i);s&&!s.hasSnapId()&&s.redraw()}findStat(){return this.findFunction(B,"stats")}toggleStat(i){const s=this.getPadPainter();let t=this.findStat(),r;if(i||(i=""),t)r=s.findPainterFor(t);else{if(i.indexOf("-check")>0)return!1;t=this.createStat(!0)}if(i===_)return r?.Enabled||!1;if(i==="fitpar-check")return t?.fOptFit||!1;if(i==="fitpar-toggle")return t?(t.fOptFit=t.fOptFit?0:1111,r?.redraw(),!0):!1;let n;return r?(r.Enabled=!r.Enabled,this.getOptions().StatEnabled=r.Enabled,r.redraw(),n=r.Enabled):n=N.draw(s,t),this.processOnlineChange(`exec:SetBit(TH1::kNoStats,${n?0:1})`,this),n}isIgnoreStatsFill(){return!this.getObject()||!this.draw_content&&!this.#f&&!this.hasSnapId()}createStat(i){const s=this.getHisto(),t=this.getOptions();if(!s||!i&&!t.ForceStat&&(t.NoStat||s.TestBit(T)||!L.AutoStat||!this.isMainPainter()))return null;const r=d;let n=this.findStat(),a=t.optstat,e=t.optfit;return a!==void 0?(n&&(n.fOptStat=a),t.optstat=void 0):a=s.$custom_stat||r.fOptStat,e!==void 0?(n&&(n.fOptFit=e),t.optfit=void 0):e=r.fOptFit,!n&&!a&&!e?null:(this.#f=!0,n||(n=b(B),Object.assign(n,{fName:"stats",fOptStat:a,fOptFit:e,fX1NDC:r.fStatX-r.fStatW,fY1NDC:r.fStatY-r.fStatH,fX2NDC:r.fStatX,fY2NDC:r.fStatY,fTextAlign:12}),n.AddText(s.fName),this.addFunction(n),n))}findFunction(i,s){const t=this.getHisto()?.fFunctions?.arr;if(!t)return null;for(let r=0;r<t.length;++r){const n=t[r];if(!(s&&n.fName!==s)&&n._typename===i)return n}return null}addFunction(i,s){const t=this.getHisto();!t||!i||(t.fFunctions||(t.fFunctions=b(W)),s?t.fFunctions.AddFirst(i):t.fFunctions.Add(i))}needDrawFunc(i,s){const t=this.getOptions();return s._typename===B?s.fName!=="stats"||!i.TestBit(T)&&!t.NoStat:s._typename===V||s._typename===J?t.AllFunc||!s.TestBit(A(9)):s._typename==="TGraphDelaunay"||s._typename==="TGraphDelaunay2D"?!1:s._typename!==y}async drawFunctions(){return new Z(this,this.getPadPainter(),this.getHisto().fFunctions,!0).drawNext(0)}async updateFunctions(){const i=this.#s?.drawNext(0)??this;return this.#s=void 0,i}getSelectIndex(i,s,t){let r,n=this.getAxis(i);const a=this[`nbins${i}`]??0,e=this.getOptions();e.second_x&&i==="x"&&(i="x2"),e.second_y&&i==="y"&&(i="y2");const f=this.getFramePainter(),o=f?f[`zoom_${i}min`]:0,l=f?f[`zoom_${i}max`]:0;return o!==l&&n?(s==="left"?r=n.FindBin(o,t||0):r=n.FindBin(l,(t||0)+.5),r<0?r=0:r>a&&(r=a)):r=s==="left"?0:a,n&&(n.fFirst===n.fLast||!n.TestBit(x.kAxisRange)||n.fFirst===1&&n.fLast===a)&&(n=null),s==="left"?(r=Math.max(r,0),n&&n.fFirst>1&&r<n.fFirst?r=n.fFirst-1:n?.fFirst===0&&(r=-1)):(r=Math.min(r,a),n&&n.fLast<=a&&r>n.fLast?r=n.fLast:n?.fLast===a+1&&(r=a+1)),r}unzoomUserRange(i,s,t){const r=this.getHisto(),n=this.getOptions();if(!r)return!1;let a=!1;const e=o=>!o||!o.TestBit(x.kAxisRange)||o.fFirst===o.fLast||o.fFirst<=1&&o.fLast>=o.fNbins?!1:(o.InvertBit(x.kAxisRange),!0),f=o=>this.getDimension()!==o||n.minimum===g&&n.maximum===g||!this.draw_content?!1:(n.minimum=n.maximum=g,this.scanContent(),!0);return i&&e(r.fXaxis)&&(a=!0),s&&(e(r.fYaxis)||f(1))&&(a=!0),t&&(e(r.fZaxis)||f(2))&&(a=!0),a}async addInteractivity(){const i=this.isMainPainter(),s=this.getOptions().AxisPos>0;return(i||s?this.getFramePainter():null)?.addInteractivity(!i&&s)??!1}changeUserRange(i,s){const t=this.getHisto(),r=t?t[`f${s}axis`]:null;if(!r)return;let n=`[1,${r.fNbins}]`;r.TestBit(x.kAxisRange)&&(n=`[${r.fFirst},${r.fLast}]`),i.input(`Enter user range for axis ${s} like [1,${r.fNbins}]`,n).then(a=>{if(!a||(a=JSON.parse(a),!a||a.length!==2))return;const e=parseInt(a[0]),f=parseInt(a[1]);!Number.isInteger(e)||!Number.isInteger(f)||(r.fFirst=e,r.fLast=f,r.SetBit(x.kAxisRange,r.fFirst<r.fLast&&r.fFirst>=1&&r.fLast<=r.fNbins),this.interactiveRedraw())})}changeValuesRange(i){const s=this.getOptions();let t;s.minimum!==g&&s.maximum!==g?t=`[${s.minimum},${s.maximum}]`:t=`[${this.gminbin},${this.gmaxbin}]`,i.input("Enter min/max hist values or empty string to reset",t).then(r=>{r=r?JSON.parse(r):[],!v(r)||r.length!==2||!Number.isFinite(r[0])||!Number.isFinite(r[1])?s.minimum=s.maximum=g:(s.minimum=r[0],s.maximum=r[1]),this.interactiveRedraw()})}executeMenuCommand(i,s){if(super.executeMenuCommand(i,s))return!0;if(i.fClassName===q){const t=M(i.$execid)?i.$execid.indexOf("#"):-1,r=t>0?i.$execid.slice(t+1):"x",n=this.getFramePainter();if(i.fName==="UnZoom")return n?.unzoom(r),!0;if(i.fName==="SetRange"){const a=n?.getAxis(r),e=JSON.parse(`[${s}]`);a&&e?.length===2&&n?.zoom(r,a.GetBinLowEdge(e[0]),a.GetBinLowEdge(e[1]+1))}else if(i.fName==="SetRangeUser"){const a=JSON.parse(`[${s}]`);a?.length===2&&n?.zoom(r,a[0],a[1])}}return!1}fillContextMenuItems(i){const s=this.getHisto(),t=this.getFramePainter(),r=this.getOptions();if(s){if(r.Axis<=0&&!this.isTF1()&&i.addchk(this.toggleStat(_),"Show statbox",()=>this.toggleStat()),this.isMainPainter()&&(i.sub("Title"),i.addchk(this.toggleTitle(_),"Show",()=>this.toggleTitle()),i.add("Edit",()=>i.input("Enter histogram title",s.fTitle).then(n=>{Q(s,n),this.interactiveRedraw()})),i.endsub()),this.draw_content&&(this.getDimension()===1?i.add("User range X",()=>this.changeUserRange(i,"X")):(i.sub("User ranges"),i.add("X",()=>this.changeUserRange(i,"X")),i.add("Y",()=>this.changeUserRange(i,"Y")),this.getDimension()>2?i.add("Z",()=>this.changeUserRange(i,"Z")):i.add("Values",()=>this.changeValuesRange(i)),i.endsub()),C(this.fillHistContextMenu)&&this.fillHistContextMenu(i),i.addRedrawMenu(this.getPrimary())),r.Mode3D){i.size()>0&&i.separator();const n=this.getMainPainter()||this;i.addchk(n.isTooltipAllowed(),"Show tooltips",()=>n.setTooltipAllowed("toggle")),i.addchk(t?.enable_highlight,"Highlight bins",()=>{t.enable_highlight=!t.enable_highlight,!t.enable_highlight&&t.mode3d&&C(t.highlightBin3D)&&t.highlightBin3D(null)}),C(t?.render3D)&&(i.addchk(n.options.FrontBox,"Front box",()=>{n.options.FrontBox=!n.options.FrontBox,t.render3D()}),i.addchk(n.options.BackBox,"Back box",()=>{n.options.BackBox=!n.options.BackBox,t.render3D()}),i.addchk(t.camera?.isOrthographicCamera,"Orthographic camera",a=>{n.options.Ortho=a,t.change3DCamera(a)})),this.draw_content&&(i.addchk(!r.Zero,"Suppress zeros",()=>{r.Zero=!r.Zero,this.interactiveRedraw("pad")}),(r.Lego===12||r.Lego===14)&&(i.addchk(r.Zscale,"Z scale",()=>this.toggleColz()),this.fillPaletteMenu(i,!0))),C(n.control?.reset)&&i.add("Reset camera",()=>n.control.reset())}this.histogram_updated&&t.zoomChangedInteractive()&&i.add("Let update zoom",()=>t.zoomChangedInteractive("reset"))}}getSnapId(i){return this.isTF1()&&(i==="x"||i==="y"||i==="z")&&(i="hist#"+i),super.getSnapId(i)}autoZoom(){}clickButton(i){const s=this.getFramePainter();if(!this.isMainPainter()||!s)return!1;switch(i){case"ToggleZoom":if(s.zoom_xmin!==s.zoom_xmax||s.zoom_ymin!==s.zoom_ymax||s.zoom_zmin!==s.zoom_zmax){const t=s.unzoom();return s.zoomChangedInteractive("reset"),t}if(this.draw_content)return this.autoZoom();break;case"ToggleLogX":return s.toggleAxisLog("x");case"ToggleLogY":return s.toggleAxisLog("y");case"ToggleLogZ":return s.toggleAxisLog("z");case"ToggleStatBox":return G(this.toggleStat());case"ToggleColorZ":return this.toggleColz()}return!1}fillToolbar(i){const s=this.getPadPainter();s&&(s.addPadButton("auto_zoom","Toggle between unzoom and autozoom-in","ToggleZoom","Ctrl *"),s.addPadButton("arrow_right","Toggle log x","ToggleLogX","PageDown"),s.addPadButton("arrow_up","Toggle log y","ToggleLogY","PageUp"),this.getDimension()>1&&s.addPadButton("arrow_diag","Toggle log z","ToggleLogZ"),s.addPadButton("statbox","Toggle stat box","ToggleStatBox"),i||s.showPadButtons())}get3DToolTip(i){const s=this.getHisto(),t={bin:i,name:s.fName,title:s.fTitle};switch(this.getDimension()){case 1:t.ix=i,t.iy=1,t.value=s.getBinContent(t.ix),t.error=s.getBinError(i),t.lines=this.getBinTooltips(i-1);break;case 2:t.ix=i%(this.nbinsx+2),t.iy=(i-t.ix)/(this.nbinsx+2),t.value=s.getBinContent(t.ix,t.iy),t.error=s.getBinError(i),t.lines=this.getBinTooltips(t.ix-1,t.iy-1);break;case 3:t.ix=i%(this.nbinsx+2),t.iy=(i-t.ix)/(this.nbinsx+2)%(this.nbinsy+2),t.iz=(i-t.ix-t.iy*(this.nbinsx+2))/(this.nbinsx+2)/(this.nbinsy+2),t.value=s.getBinContent(t.ix,t.iy,t.iz),t.error=s.getBinError(i),t.lines=this.getBinTooltips(t.ix-1,t.iy-1,t.iz-1);break}return t}createContour(i,s,t,r,n){const a=new gt(s,t),e=this.getDimension(),f=this.isTH2Poly(),o=this.getFramePainter(),l=this.getOptions();if(n)a.createCustom(n);else{i<2&&(i=d.fNumberContours);const h=this.getPadPainter()?.getRootPad(!0),c=h?.fLogv??(e===2&&h?.fLogz);a.createNormal(i,c??0,r)}return a.configIndicies(l.Zero&&!f?-1:0,a.colzmin||!l.Zero||f?0:-1),o&&e<3&&!o.mode3d&&(o.zmin=a.colzmin,o.zmax=a.colzmax),this.#r=a,a}#a(i,s){const t=this.getOptions(),r=this!==i&&(i?.minbin!==void 0||i?.options.ohmin)&&!t.IgnoreMainScale&&!i?.tt_handle?.ScatterPlot?i:this;let n,a=r.minbin,e=r.maxbin,f=r.minposbin;a===e&&(r.options.ohmin&&r.options.ohmax?(a=r.options.hmin,e=r.options.hmax,f=Math.max(a,e*1e-10)):(a=r.gminbin,e=r.gmaxbin,f=r.gminposbin));let o=a,l=e;if(t.minimum!==g&&(a=t.minimum,o=Math.min(o,a),n=!0),t.maximum!==g&&(e=t.maximum,l=Math.max(l,e),n=!1),a>=e&&(n||!a?e=a+1:a=e-1),s?.zoomChangedInteractive("z")){const h=s.zoom_zmin!==s.zoom_zmax;a=h?s.zoom_zmin:o,e=h?s.zoom_zmax:l}return{zmin:a,zmax:e,zminpos:f,gzmin:o,gzmax:l}}getContour(i){if(i===!1||this.#r&&i!==!0)return this.#r;const s=this.getMainPainter(),t=this.getFramePainter(),r=s?.getContour(!1);if(r&&s!==this&&!this.getOptions().IgnoreMainScale)return this.#r=r,r;const n=this.getObject(),a=this.#a(s,t);let e=0,f;n.fContour?.length>1&&(n.TestBit(Ct)?f=n.fContour:e=n.fContour.length);const o=this.createContour(e,a.zmin,a.zmax,a.zminpos,f);return this.getDimension()<3&&t&&(t.zmin=a.gzmin,t.zmax=a.gzmax,a.gzmin!==o.colzmin||a.gzmax!==o.colzmax?(t.zoom_zmin=o.colzmin,t.zoom_zmax=o.colzmax):t.zoom_zmin=t.zoom_zmax=0),o}getContourLevels(i){return this.getContour(i).getLevels()}getHistPalette(i){let s=i?null:this.#n;if(s)return s;const t=this.getPadPainter(),r=this.getOptions();return r.Palette||C(t?.getCustomPalette)&&(s=t.getCustomPalette()),s||(s=tt(r.Palette,t?.isGrayscale())),this.#n=s,s}clearHistPalette(){this.#n=void 0}fillPaletteMenu(i,s){const t=this.getOptions();if(i.addPaletteMenu(t.Palette||L.Palette,r=>{t.Palette=parseInt(r),this.getHistPalette(!0),this.redraw()}),!s){i.add("Default position",()=>{this.drawColorPalette(t.Zscale,!1,!0).then(()=>this.processOnlineChange("drawopt"))},"Set default position for palette");const r=this.findFunction(y),n=r?r.fX2NDC-r.fX1NDC<r.fY2NDC-r.fY1NDC:!0;i.addchk(n,"Vertical",a=>{t.Zvert=a,this.drawColorPalette(t.Zscale,!1,"toggle").then(()=>this.processOnlineChange("drawopt"))},"Toggle palette vertical/horizontal flag"),i.add("Bring to front",()=>this.getPadPainter()?.findPainterFor(r)?.bringToFront())}}async drawColorPalette(i,s,t){const r=this.getOptions(),n=t==="toggle";if(r.IgnorePalette)return null;const a=this.getMainPainter();if(a&&a!==this&&a.draw_content!==!1&&a.options.Zscale)return null;const e=this.getPadPainter();let f=this.findFunction(y),o=e?.findPainterFor(f);const l=!!f;if(!o&&!f&&!r.Axis&&(o=e?.findPainterFor(void 0,void 0,y),o&&(f=o.getObject(),this.addFunction(f,!0))),!i)return o&&!r.Same&&(r.Zvert=o.isPaletteVertical(),o.Enabled=!1,o.removeG()),null;if(f)o?.isPaletteVertical()!==void 0&&!n&&(r.Zvert=o.isPaletteVertical());else{if(f=b(y),t||(t=!r.Same),f.fInit=1,f.$can_move=t,f.$generated=!0,r.Zvert?Object.assign(f,{fX1NDC:1.005-d.fPadRightMargin,fX2NDC:1.045-d.fPadRightMargin,fY1NDC:d.fPadBottomMargin,fY2NDC:1-d.fPadTopMargin}):Object.assign(f,{fX1NDC:d.fPadLeftMargin,fX2NDC:1-d.fPadRightMargin,fY1NDC:1.005-d.fPadTopMargin,fY2NDC:1.045-d.fPadTopMargin}),Object.assign(f.fAxis,{fChopt:"+",fLineSyle:1,fLineWidth:1,fTextAngle:0,fTextAlign:11}),this.getDimension()===2){const u=this.getHisto().fZaxis;Object.assign(f.fAxis,{fTitle:u.fTitle,fTitleSize:u.fTitleSize,fTitleOffset:u.fTitleOffset,fTitleColor:u.fTitleColor,fLineColor:u.fAxisColor,fTextSize:u.fLabelSize,fTextColor:u.fLabelColor,fTextFont:u.fLabelFont,fLabelOffset:u.fLabelOffset})}this.addFunction(f,!0)}const h=this.getFramePainter();if(t&&h&&f.$can_move)if(r.Zvert){if(n){const u=f.fY2NDC-f.fY1NDC;f.fX1NDC=h.fX2NDC+.005,f.fX2NDC=f.fX1NDC+u}f.fX1NDC>(h.fX1NDC+h.fX2NDC)*.5?(f.fX2NDC=h.fX2NDC+.005+(f.fX2NDC-f.fX1NDC),f.fX1NDC=h.fX2NDC+.005):(f.fX1NDC=h.fX1NDC-.03-(f.fX2NDC-f.fX1NDC),f.fX2NDC=h.fX1NDC-.03),f.fY1NDC=h.fY1NDC,f.fY2NDC=h.fY2NDC}else{if(n){const u=f.fX2NDC-f.fX1NDC;f.fY1NDC=h.fY2NDC+.005,f.fY2NDC=f.fY1NDC+u}f.fX1NDC=h.fX1NDC,f.fX2NDC=h.fX2NDC,f.fY2NDC>(h.fY1NDC+h.fY2NDC)*.5?(f.fY2NDC=h.fY2NDC+.005+(f.fY2NDC-f.fY1NDC),f.fY1NDC=h.fY2NDC+.005):(f.fY1NDC=h.fY1NDC-.05-(f.fY2NDC-f.fY1NDC),f.fY2NDC=h.fY1NDC-.05)}f.$main_painter=this;let c="bring_stats_front",m;if(s&&(c+=";postpone"),t&&!this.#i&&(c+=";can_move"),r.Cjust&&(c+=";cjust"),!o)m=N.draw(e,f,c).then(u=>{o=u,o.setSecondaryId(this,l&&!f.$generated?`func_${f.fName}`:void 0)});else{if(o.Enabled=!0,s)return o;m=o.drawPave(c)}return m.then(()=>{r.Zvert=o.isPaletteVertical(),o.redraw=()=>{};let u=!1;if(t&&h&&!this.#i){const p=e?.getRootPad(!0);r.Zvert?(f.fX1NDC>.5&&h.fX2NDC>f.fX1NDC?(u=!0,h.fX2NDC=f.fX1NDC-.01,h.fX1NDC>h.fX2NDC-.1&&(h.fX1NDC=Math.max(0,h.fX2NDC-.1))):f.fX2NDC<.5&&h.fX1NDC<f.fX2NDC&&(u=!0,h.fX1NDC=f.fX2NDC+.05,h.fX2NDC<h.fX1NDC+.1&&(h.fX2NDC=Math.min(1,h.fX1NDC+.1))),u&&p&&(p.fLeftMargin=h.fX1NDC,p.fRightMargin=1-h.fX2NDC)):(f.fY1NDC>.5&&h.fY2NDC>f.fY1NDC?(u=!0,h.fY2NDC=f.fY1NDC-.01,h.fY1NDC>h.fY2NDC-.1&&(h.fY1NDC=Math.max(0,h.fXYNDC-.1))):f.fY2NDC<.5&&h.fY1NDC<f.fY2NDC&&(u=!0,h.fY1NDC=f.fY2NDC+.05,h.fXYNDC<h.fY1NDC+.1&&(h.fY2NDC=Math.min(1,h.fY1NDC+.1))),u&&p&&(p.fTopMargin=h.fY1NDC,p.fBottomMargin=1-h.fY2NDC))}return u?(this.#i=!0,h.redraw(),(s?Promise.resolve(!0):this.redraw()).then(()=>(this.#i=void 0,o))):o})}toggleColz(){const i=this.getOptions();if(i.canHavePalette())return i.Zscale=!i.Zscale,this.drawColorPalette(i.Zscale,!1,!0).then(()=>this.processOnlineChange("drawopt"))}toggleMode3D(){const i=this.getOptions();return i.Mode3D=!i.Mode3D,i.Mode3D&&!i.Surf&&!i.Lego&&!i.Error&&(this.nbinsx>=50||this.nbinsy>=50?i.Lego=i.Scat?13:14:i.Lego=i.Scat?1:12,i.Zero=!1),this.copyOptionsToOthers(),this.interactiveRedraw("pad","drawopt")}getHistGrFuncs(i=!0){let s;if(this.isUseFrame()){const t=this.getOptions();if(s=this.getFramePainter()?.getGrFuncs(t.second_x,t.second_y),s)return s}return s=this.getAxisToSvgFunc(!1,i,!1)||{x:t=>t,y:t=>t},s.$painter=this,s.grx=s.x,s.gry=s.y,s.logx=s.pad?.fLogx,s.logy=s.pad?.fLogy,s.swap_xy=function(){return this.fp?.swap_xy()??!1},s.getFrameWidth=function(){return this.$painter.getPadPainter().getPadWidth()},s.getFrameHeight=function(){return this.$painter.getPadPainter().getPadHeight()},s.isAxisZoomed=function(){return!1},s.revertAxis=function(t,r){return this.$painter.svgToAxis(t,r)},s.axisAsText=function(t,r){return r.toString()},s}prepareDraw(i){i||(i={rounding:!0,extra:0,middle:0}),i.extra===void 0&&(i.extra=0),i.middle===void 0&&(i.middle=0),i.pixel_density&&(i.rounding=!0);const s=this.getHisto(),t=this.getOptions(),r=s.fXaxis,n=s.fYaxis,a=this.getHistGrFuncs(i.rounding),e=this.getDimension(),f={i1:i.nozoom?0:this.getSelectIndex("x","left",0-i.extra),i2:i.nozoom?this.nbinsx:this.getSelectIndex("x","right",1+i.extra),j1:e===1||i.nozoom?0:this.getSelectIndex("y","left",0-i.extra),j2:e===1?1:i.nozoom?this.nbinsy:this.getSelectIndex("y","right",1+i.extra),min:0,max:0,sumz:0,xbar1:0,xbar2:1,ybar1:0,ybar2:1,width:a?.getFrameWidth()??600,height:a?.getFrameHeight()??400};if((i.use3d&&!a.size_x3d||!a.size_y3d)&&(i.use3d=!1),i.cutg){let p=f.i2,X=f.i1,z=f.j2,F=f.j1;for(let S=f.i1;S<f.i2;++S)for(let P=f.j1;P<f.j2;++P)i.cutg.IsInside(r.GetBinCoord(S+i.middle),n.GetBinCoord(P+i.middle))&&(p=Math.min(p,S),X=Math.max(X,S+1),z=Math.min(z,P),F=Math.max(F,P+1));Object.assign(f,{i1:p,i2:X,j1:z,j2:F})}let o,l,h,c,m,u;for(f.grx=f.i1<0?{}:new Float32Array(f.i2+1),f.gry=f.j1<0?{}:new Float32Array(f.j2+1),typeof s.fBarOffset=="number"&&typeof s.fBarWidth=="number"&&(s.fBarOffset||s.fBarWidth!==1e3)&&(s.fBarOffset<=1e3?f.xbar1=f.ybar1=.001*s.fBarOffset:s.fBarOffset<=3e3?f.xbar1=.001*(s.fBarOffset-2e3):s.fBarOffset<=5e3&&(f.ybar1=.001*(s.fBarOffset-4e3)),s.fBarWidth<=1e3?(f.xbar2=Math.min(1,f.xbar1+.001*s.fBarWidth),f.ybar2=Math.min(1,f.ybar1+.001*s.fBarWidth)):s.fBarWidth<=3e3?f.xbar2=Math.min(1,f.xbar1+.001*(s.fBarWidth-2e3)):s.fBarWidth<=5e3&&(f.ybar2=Math.min(1,f.ybar1+.001*(s.fBarWidth-4e3)))),i.original&&(f.original=!0,f.origx=f.i1<0?{}:new Float32Array(f.i2+1),f.origy=f.j1<0?{}:new Float32Array(f.j2+1)),o=f.i1;o<=f.i2;++o){if(h=r.GetBinCoord(o+i.middle),a.logx&&h<=0){f.i1=o+1;continue}f.origx&&(f.origx[o]=h),f.grx[o]=a.grx(h),i.rounding&&(f.grx[o]=Math.round(f.grx[o])),i.use3d&&(f.grx[o]<-a.size_x3d&&(f.grx[o]=-a.size_x3d,t.RevX?f.i2=o:f.i1=o),f.grx[o]>a.size_x3d&&(f.grx[o]=a.size_x3d,t.RevX?f.i1=o:f.i2=o))}if(e===1)f.gry[0]=a.gry(0),f.gry[1]=a.gry(1);else for(l=f.j1;l<=f.j2;++l){if(c=n.GetBinCoord(l+i.middle),a.logy&&c<=0){f.j1=l+1;continue}f.origy&&(f.origy[l]=c),f.gry[l]=a.gry(c),i.rounding&&(f.gry[l]=Math.round(f.gry[l])),i.use3d&&(f.gry[l]<-a.size_y3d&&(f.gry[l]=-a.size_y3d,t.RevY?f.j2=l:f.j1=l),f.gry[l]>a.size_y3d&&(f.gry[l]=a.size_y3d,t.RevY?f.j1=l:f.j2=l))}let k=!0;for(this.minposbin=0,o=f.i1;o<f.i2;++o)for(l=f.j1;l<f.j2;++l){if(m=s.getBinContent(o+1,l+1),f.sumz+=m,i.pixel_density){if(u=(f.grx[o+1]-f.grx[o])*(f.gry[l]-f.gry[l+1]),u<=0)continue;f.max=Math.max(f.max,m),m>0&&(m<f.min||f.min===0)&&(f.min=m),m/=u}k?(this.maxbin=this.minbin=m,k=!1):(this.maxbin=Math.max(this.maxbin,m),this.minbin=Math.min(this.minbin,m)),m>0&&(this.minposbin===0||m<this.minposbin)&&(this.minposbin=m)}return k&&(this.maxbin=this.minbin=0),this.#r=void 0,i.zrange&&Object.assign(f,this.#a(this.getMainPainter(),this.getFramePainter())),f}getAxisBinTip(i,s,t){const r=this.getHistGrFuncs(),n=r[`${i}_handle`],a=s.GetBinLowEdge(t+1);if(n.kind===it)return r.axisAsText(i,a);const e=s.GetBinLowEdge(t+2);return n.kind===et||this.isTF1()?r.axisAsText(i,(a+e)/2):`[${r.axisAsText(i,a)}, ${r.axisAsText(i,e)})`}getBinErrors(i,s,t){const r=i.getBinError(s),n={low:r,up:r},a=this.getOptions().Poisson||i.fBinStatErrOpt;if(!a||i.fSumw2.fN&&i.fTsumw!==i.fTsumw2||t<0)return n;const e=a===$?.05:1-.682689492,f=Math.round(t);return n.poisson=!0,n.low=f===0?0:t-st(e/2,f,1),n.up=nt(e/2,f+1,1)-t,n}_checkAssign(){const i=this.getPadPainter()?.getMainPainter();this.getOptions().Same?this.#e=!i:i||this.setAsMainPainter()}isUseFrame(){return!this.#e}static async _drawHist(i,s){const t=!M(s)||s.toLowerCase().indexOf("same")<0;return rt(i,t).then(()=>(i.decodeOptions(s),i._checkAssign(),i.isTH2Poly()&&i.options.Mode3D&&(i.options.Lego=12),i.checkPadRange(),i.scanContent(),i.createStat(),i.callDrawFunc())).then(()=>i.drawFunctions()).then(()=>i.drawHistTitle()).then(()=>{if(!i.Mode3D&&i.options.AutoZoom)return i.autoZoom()}).then(()=>{if(i.options.Project&&!i.mode3d&&C(i.toggleProjection))return i.toggleProjection(i.options.Project)}).then(()=>(i.fillToolbar(),i))}}export{Z as F,gt as H,kt as T,Y as a,lt as b,ct as c,ut as d,I as k};
@@ -1 +1 @@
1
- import{a7 as c,a2 as f,a3 as o,a1 as d,a0 as y,a6 as u}from"./ndmvr-aframe-core-Cw91_9_Y.js";const r=f(14);class x extends c{#t;moveStart(t,s){const i=Math.max(1,Math.sqrt((this.x1-this.x2)**2+(this.y1-this.y2)**2)),e=Math.sqrt((t-this.x1)**2+(s-this.y1)**2)/i,h=Math.sqrt((t-this.x2)**2+(s-this.y2)**2)/i;e>.9?this.#t=1:h>.9?this.#t=-1:this.#t=0}moveDrag(t,s){this.#t!==1&&(this.x1+=t,this.y1+=s),this.#t!==-1&&(this.x2+=t,this.y2+=s),this.getG().select("path").attr("d",this.createPath())}moveEnd(t){if(t)return;const s=this.getObject();let i="",e=this.svgToAxis("x",this.x1,this.isndc),h=this.svgToAxis("x",this.x2,this.isndc),a=this.svgToAxis("y",this.y1,this.isndc),n=this.svgToAxis("y",this.y2,this.isndc);this.swap_xy&&([e,a,h,n]=[a,e,n,h]),s.fX1=e,s.fX2=h,s.fY1=a,s.fY2=n,this.#t!==1&&(i+=`SetX1(${e});;SetY1(${a});;`),this.#t!==-1&&(i+=`SetX2(${h});;SetY2(${n});;`),this.submitCanvExec(i+"Notify();;")}getUserRanges(){const t=this.getObject();if(t.TestBit(r))return null;const i=Math.min(t.fX1,t.fX2),e=Math.max(t.fX1,t.fX2),h=Math.min(t.fY1,t.fY2),a=Math.max(t.fY1,t.fY2);return{minx:i,miny:h,maxx:e,maxy:a}}prepareDraw(){const t=this.getObject();this.isndc=t.TestBit(r);const s=this.isndc?!1:new o(this.getDrawOpt()).check("FRAME");this.createG(s?"frame2d":void 0),this.swap_xy=s&&this.getFramePainter()?.swap_xy();const i=this.getAxisToSvgFunc(this.isndc,!0);this.x1=i.x(t.fX1),this.y1=i.y(t.fY1),this.x2=i.x(t.fX2),this.y2=i.y(t.fY2),this.swap_xy&&([this.x1,this.y1,this.x2,this.y2]=[this.y1,this.x1,this.y2,this.x2]),this.createAttLine({attr:t})}createPath(){const t=Math.round(this.x1),s=Math.round(this.x2),i=Math.round(this.y1),e=Math.round(this.y2);return`M${t},${i}`+(t===s?`V${e}`:i===e?`H${s}`:`L${s},${e}`)}addExtras(){}redraw(){this.prepareDraw();const t=this.appendPath(this.createPath()).call(this.lineatt.func);return this.getObject()?.$do_not_draw?t.remove():(this.addExtras(t),d(this),y(this)),this}static async draw(t,s,i){const e=new x(t,s,i);return u(e,!1).then(()=>e.redraw())}}export{x as TLinePainter};
1
+ import{a7 as c,a2 as f,a3 as o,a1 as d,a0 as y,a6 as u}from"./ndmvr-aframe-core-DEHQ38JB.js";const r=f(14);class x extends c{#t;moveStart(t,s){const i=Math.max(1,Math.sqrt((this.x1-this.x2)**2+(this.y1-this.y2)**2)),e=Math.sqrt((t-this.x1)**2+(s-this.y1)**2)/i,h=Math.sqrt((t-this.x2)**2+(s-this.y2)**2)/i;e>.9?this.#t=1:h>.9?this.#t=-1:this.#t=0}moveDrag(t,s){this.#t!==1&&(this.x1+=t,this.y1+=s),this.#t!==-1&&(this.x2+=t,this.y2+=s),this.getG().select("path").attr("d",this.createPath())}moveEnd(t){if(t)return;const s=this.getObject();let i="",e=this.svgToAxis("x",this.x1,this.isndc),h=this.svgToAxis("x",this.x2,this.isndc),a=this.svgToAxis("y",this.y1,this.isndc),n=this.svgToAxis("y",this.y2,this.isndc);this.swap_xy&&([e,a,h,n]=[a,e,n,h]),s.fX1=e,s.fX2=h,s.fY1=a,s.fY2=n,this.#t!==1&&(i+=`SetX1(${e});;SetY1(${a});;`),this.#t!==-1&&(i+=`SetX2(${h});;SetY2(${n});;`),this.submitCanvExec(i+"Notify();;")}getUserRanges(){const t=this.getObject();if(t.TestBit(r))return null;const i=Math.min(t.fX1,t.fX2),e=Math.max(t.fX1,t.fX2),h=Math.min(t.fY1,t.fY2),a=Math.max(t.fY1,t.fY2);return{minx:i,miny:h,maxx:e,maxy:a}}prepareDraw(){const t=this.getObject();this.isndc=t.TestBit(r);const s=this.isndc?!1:new o(this.getDrawOpt()).check("FRAME");this.createG(s?"frame2d":void 0),this.swap_xy=s&&this.getFramePainter()?.swap_xy();const i=this.getAxisToSvgFunc(this.isndc,!0);this.x1=i.x(t.fX1),this.y1=i.y(t.fY1),this.x2=i.x(t.fX2),this.y2=i.y(t.fY2),this.swap_xy&&([this.x1,this.y1,this.x2,this.y2]=[this.y1,this.x1,this.y2,this.x2]),this.createAttLine({attr:t})}createPath(){const t=Math.round(this.x1),s=Math.round(this.x2),i=Math.round(this.y1),e=Math.round(this.y2);return`M${t},${i}`+(t===s?`V${e}`:i===e?`H${s}`:`L${s},${e}`)}addExtras(){}redraw(){this.prepareDraw();const t=this.appendPath(this.createPath()).call(this.lineatt.func);return this.getObject()?.$do_not_draw?t.remove():(this.addExtras(t),d(this),y(this)),this}static async draw(t,s,i){const e=new x(t,s,i);return u(e,!1).then(()=>e.redraw())}}export{x as TLinePainter};
@@ -1 +1 @@
1
- import{a7 as L,a2 as j,ad as y,ag as G,ak as D,s as X,aP as F,aQ as S,aj as R,ai as Y,a3 as _,a6 as $}from"./ndmvr-aframe-core-Cw91_9_Y.js";import{F as b}from"./THistPainter-Df-RmCQH.js";import{T as O,P as A}from"./TH1Painter--tuoUZTH.js";import{TGraphPainter as I}from"./TGraphPainter-DLkx_1ES.js";import{TH2Painter as B}from"./TH2Painter-BLfyBVB5.js";import{T as C}from"./TGraphPainter-CtqNpDiH.js";import"./TPavePainter-Dx40jhkF.js";import"./func-C1jNXIub.js";import"./hist3d-DCmav5Ga.js";import"./latex3d-ITrfFgp8.js";import"./TH2Painter-DHaL_lR_.js";import"./TH1Painter-CMr7gXzd.js";const E=j(17);let W=class H extends L{#i;#t;#s;#r;#a;#n;#e;constructor(a,i){super(a,i),this.#i=null,this.#t=[]}cleanup(){this.#t=[],this.#n=void 0,this.#e=void 0,this.#a=void 0,this.#r=void 0,super.cleanup()}is3d(){return this.#n}updateObject(a){if(!this.matchObjectType(a))return!1;const i=this.getObject(),e=a.fGraphs,n=this.getPadPainter();i.fTitle=a.fTitle;let h=!1;if(this.#i){const m=this.scanGraphsRange(e,a.fHistogram,n?.getRootPad(!0),!0);this.#i.updateObject(m)&&(h=!0)}const t=Math.min(e.arr.length,this.#t.length);for(let m=0;m<t;++m)this.#t[m].updateObject(e.arr[m],(e.opt[m]||this.#r)+this.#a)&&(h=!0);return this.#s=new b(this,n,a.fFunctions),h}async redraw(a){const i=this.#i?.redraw(a)??Promise.resolve(!0),e=async n=>n>=this.#t.length?this:this.#t[n].redraw(a).then(()=>e(n+1));return i.then(()=>e(0)).then(()=>{const n=this.#s?.drawNext(0)??this;return this.#s=void 0,n})}scanGraphsRange(a,i,e,n){const h=this.getObject(),t={xmin:0,xmax:0,ymin:0,ymax:0,first:!0},m=(s,u)=>Math.abs(u-s)<1e-6;let r,f,p=!1,l=!1,c,w=!1;e&&(p=e.fLogx,l=e.fLogv??e.fLogy),this.is3d()&&i&&!i.fXaxis.fLabels&&(i=null),i?(w=m(i.fMinimum,-.05)&&m(i.fMaximum,1.05)&&m(i.fXaxis.fXmin,-.05)&&m(i.fXaxis.fXmax,1.05),c=i):c=a.arr[0]?.fHistogram,a.arr.forEach(s=>{if(s.fNpoints!==0){s.TestBit(E)&&(n=!0),t.first&&(t.xmin=t.xmax=s.fX[0],t.ymin=t.ymax=s.fY[0],t.first=!1);for(let u=0;u<s.fNpoints;++u)t.xmin=Math.min(t.xmin,s.fX[u]),t.xmax=Math.max(t.xmax,s.fX[u]),t.ymin=Math.min(t.ymin,s.fY[u]),t.ymax=Math.max(t.ymax,s.fY[u])}}),t.xmin===t.xmax&&(t.xmax+=1),t.ymin===t.ymax&&(t.ymax+=1);const P=.05*(t.xmax-t.xmin),T=.05*(t.ymax-t.ymin);let d=t.xmin-P,o=t.xmax+P;l?(t.ymin<=0&&(t.ymin=.001*t.ymax),f=t.ymin/(1+.5*Math.log10(t.ymax/t.ymin)),r=t.ymax*(1+.2*Math.log10(t.ymax/t.ymin))):(f=t.ymin-T,r=t.ymax+T),f<0&&t.ymin>=0&&(f=0),r>0&&t.ymax<=0&&(r=0);const k=f,v=r;if(d<0&&t.xmin>=0&&(d=p?.9*t.xmin:0),o>0&&t.xmax<=0&&(o=p?1.1*t.xmax:0),h.fMinimum!==y&&(t.ymin=f=h.fMinimum),h.fMaximum!==y&&(t.ymax=r=h.fMaximum),f<0&&t.ymin>=0&&l&&(f=.9*t.ymin),r>0&&t.ymax<=0&&l&&(r=1.1*t.ymax),f<=0&&l&&(f=.001*r),!l&&f>0&&f<.05*r&&(f=0),d<=0&&p&&(d=o>1e3?1:.001*o),!i||n||w){let s,u;if(this.is3d()){i=G(D,a.arr.length,10),s=i.fXaxis,s.fXmin=0,s.fXmax=a.arr.length,s.fLabels=X(F);for(let x=0;x<a.arr.length;x++){const g=X(S);g.fString=a.arr[x].fTitle||`gr${x}`,g.fUniqueID=a.arr.length-x,s.fLabels.Add(g,"")}s=i.fYaxis,u=i.fZaxis}else i=G(c?._typename??R,c?.fXaxis.fNbins??10),s=i.fXaxis,u=i.fYaxis;if(c&&(Object.assign(s,c.fXaxis),u.fTitle=c.fYaxis.fTitle),i.fTitle=h.fTitle,i.fTitle.indexOf(";")>=0){const x=i.fTitle.split(";");i.fTitle=x[0],x[1]&&(s.fTitle=x[1]),x[2]&&(u.fTitle=x[2])}s.fLabels||(s.fXmin=d,s.fXmax=o)}const M=this.is3d()?i.fZaxis:i.fYaxis;return M.fXmin=Math.min(f,k),M.fXmax=Math.max(r,v),i.fMinimum===y&&(i.fMinimum=f),i.fMaximum===y&&(i.fMaximum=r),i.fBits|=Y,i}async drawAxisHist(a,i){return O.draw(this.getDrawDom(),a,i)}async drawGraph(a,i,e){return I.draw(a,i,e)}async drawNextGraph(a,i){const e=this.getObject().fGraphs;if(a>=e.arr.length)return this;const n=e.arr[a],h=(e.opt[a]||this.#r)+this.#a,t=e.arr.length-a,m=`graphs_${a}`;if(i){const r=i.getSubPadPainter(a+1);return r?(r.cleanPrimitives(!0),this.drawGraph(r,n,h,t).then(f=>(f&&(f.setSecondaryId(this,m),this.#t.push(f)),this.drawNextGraph(a+1,i)))):this}return this.#a&&(n.$num_graphs=e.arr.length),this.drawGraph(this.getPadPainter(),n,h,t).then(r=>(r&&(r.setSecondaryId(this,m),this.#t.push(r)),this.drawNextGraph(a+1)))}fillContextMenuItems(a){a.addRedrawMenu(this)}async redrawWith(a,i){if(!i){this.#i=null,this.#t=[];const r=this.getPadPainter();r?.removePrimitive(this,!0),this.#e&&r?.divide(0,0)}const e=new _(a),n=this.getObject();this.#n=e.check("3D"),this.#a="",this.#e=e.check("PADS"),["PFC","PLC","PMC"].forEach(r=>{e.check(r)&&(this.#a+=" "+r)});let h="",t=null;e.check("FB")&&this.is3d()&&(h+="FB"),A.forEach(r=>{e.check(r)&&(h+=";"+r)}),this.#r=e.remain();let m=Promise.resolve(!0);if(this.#e)m=$(this,!1).then(()=>(t=this.getPadPainter(),t.divide(n.fGraphs.arr.length,0,!0)));else if(e.check("A")||!this.getMainPainter()){const r=this.scanGraphsRange(n.fGraphs,n.fHistogram,this.getPadPainter()?.getRootPad(!0));m=this.drawAxisHist(r,h).then(f=>{f.setSecondaryId(this,"hist"),this.#i=f})}return m.then(()=>(this.addToPadPrimitives(),this.drawNextGraph(0,t))).then(()=>this.#e?this:new b(this,this.getPadPainter(),this.getObject().fFunctions,!0).drawNext(0))}static async draw(a,i,e){return new H(a,i,e).redrawWith(e,!0)}};class N extends W{async drawAxisHist(a,i){const e=this.getDrawDom();return this.is3d()?B.draw(e,a,"LEGO"+i):O.draw(e,a,i)}async drawGraph(a,i,e,n){return this.is3d()&&(e+=`pos3d_${n}`),C.draw(a,i,e)}static async draw(a,i,e){return new N(a,i,e).redrawWith(e,!0)}}export{N as TMultiGraphPainter};
1
+ import{a7 as L,a2 as j,ad as y,ag as G,ak as D,s as X,aP as F,aQ as S,aj as R,ai as Y,a3 as _,a6 as $}from"./ndmvr-aframe-core-DEHQ38JB.js";import{F as b}from"./THistPainter-B2S5BnuY.js";import{T as O,P as A}from"./TH1Painter-DyN-WKyv.js";import{TGraphPainter as I}from"./TGraphPainter-Bp7xEbQz.js";import{TH2Painter as B}from"./TH2Painter-DceuYQAL.js";import{T as C}from"./TGraphPainter-CurXuifu.js";import"./TPavePainter-1yngbgp8.js";import"./func-C6FX2eN2.js";import"./hist3d-D9VevdP6.js";import"./latex3d-8Hbnfz6c.js";import"./TH2Painter-BpixRP4j.js";import"./TH1Painter-BXzutgI3.js";const E=j(17);let W=class H extends L{#i;#t;#s;#r;#a;#n;#e;constructor(a,i){super(a,i),this.#i=null,this.#t=[]}cleanup(){this.#t=[],this.#n=void 0,this.#e=void 0,this.#a=void 0,this.#r=void 0,super.cleanup()}is3d(){return this.#n}updateObject(a){if(!this.matchObjectType(a))return!1;const i=this.getObject(),e=a.fGraphs,n=this.getPadPainter();i.fTitle=a.fTitle;let h=!1;if(this.#i){const m=this.scanGraphsRange(e,a.fHistogram,n?.getRootPad(!0),!0);this.#i.updateObject(m)&&(h=!0)}const t=Math.min(e.arr.length,this.#t.length);for(let m=0;m<t;++m)this.#t[m].updateObject(e.arr[m],(e.opt[m]||this.#r)+this.#a)&&(h=!0);return this.#s=new b(this,n,a.fFunctions),h}async redraw(a){const i=this.#i?.redraw(a)??Promise.resolve(!0),e=async n=>n>=this.#t.length?this:this.#t[n].redraw(a).then(()=>e(n+1));return i.then(()=>e(0)).then(()=>{const n=this.#s?.drawNext(0)??this;return this.#s=void 0,n})}scanGraphsRange(a,i,e,n){const h=this.getObject(),t={xmin:0,xmax:0,ymin:0,ymax:0,first:!0},m=(s,u)=>Math.abs(u-s)<1e-6;let r,f,p=!1,l=!1,c,w=!1;e&&(p=e.fLogx,l=e.fLogv??e.fLogy),this.is3d()&&i&&!i.fXaxis.fLabels&&(i=null),i?(w=m(i.fMinimum,-.05)&&m(i.fMaximum,1.05)&&m(i.fXaxis.fXmin,-.05)&&m(i.fXaxis.fXmax,1.05),c=i):c=a.arr[0]?.fHistogram,a.arr.forEach(s=>{if(s.fNpoints!==0){s.TestBit(E)&&(n=!0),t.first&&(t.xmin=t.xmax=s.fX[0],t.ymin=t.ymax=s.fY[0],t.first=!1);for(let u=0;u<s.fNpoints;++u)t.xmin=Math.min(t.xmin,s.fX[u]),t.xmax=Math.max(t.xmax,s.fX[u]),t.ymin=Math.min(t.ymin,s.fY[u]),t.ymax=Math.max(t.ymax,s.fY[u])}}),t.xmin===t.xmax&&(t.xmax+=1),t.ymin===t.ymax&&(t.ymax+=1);const P=.05*(t.xmax-t.xmin),T=.05*(t.ymax-t.ymin);let d=t.xmin-P,o=t.xmax+P;l?(t.ymin<=0&&(t.ymin=.001*t.ymax),f=t.ymin/(1+.5*Math.log10(t.ymax/t.ymin)),r=t.ymax*(1+.2*Math.log10(t.ymax/t.ymin))):(f=t.ymin-T,r=t.ymax+T),f<0&&t.ymin>=0&&(f=0),r>0&&t.ymax<=0&&(r=0);const k=f,v=r;if(d<0&&t.xmin>=0&&(d=p?.9*t.xmin:0),o>0&&t.xmax<=0&&(o=p?1.1*t.xmax:0),h.fMinimum!==y&&(t.ymin=f=h.fMinimum),h.fMaximum!==y&&(t.ymax=r=h.fMaximum),f<0&&t.ymin>=0&&l&&(f=.9*t.ymin),r>0&&t.ymax<=0&&l&&(r=1.1*t.ymax),f<=0&&l&&(f=.001*r),!l&&f>0&&f<.05*r&&(f=0),d<=0&&p&&(d=o>1e3?1:.001*o),!i||n||w){let s,u;if(this.is3d()){i=G(D,a.arr.length,10),s=i.fXaxis,s.fXmin=0,s.fXmax=a.arr.length,s.fLabels=X(F);for(let x=0;x<a.arr.length;x++){const g=X(S);g.fString=a.arr[x].fTitle||`gr${x}`,g.fUniqueID=a.arr.length-x,s.fLabels.Add(g,"")}s=i.fYaxis,u=i.fZaxis}else i=G(c?._typename??R,c?.fXaxis.fNbins??10),s=i.fXaxis,u=i.fYaxis;if(c&&(Object.assign(s,c.fXaxis),u.fTitle=c.fYaxis.fTitle),i.fTitle=h.fTitle,i.fTitle.indexOf(";")>=0){const x=i.fTitle.split(";");i.fTitle=x[0],x[1]&&(s.fTitle=x[1]),x[2]&&(u.fTitle=x[2])}s.fLabels||(s.fXmin=d,s.fXmax=o)}const M=this.is3d()?i.fZaxis:i.fYaxis;return M.fXmin=Math.min(f,k),M.fXmax=Math.max(r,v),i.fMinimum===y&&(i.fMinimum=f),i.fMaximum===y&&(i.fMaximum=r),i.fBits|=Y,i}async drawAxisHist(a,i){return O.draw(this.getDrawDom(),a,i)}async drawGraph(a,i,e){return I.draw(a,i,e)}async drawNextGraph(a,i){const e=this.getObject().fGraphs;if(a>=e.arr.length)return this;const n=e.arr[a],h=(e.opt[a]||this.#r)+this.#a,t=e.arr.length-a,m=`graphs_${a}`;if(i){const r=i.getSubPadPainter(a+1);return r?(r.cleanPrimitives(!0),this.drawGraph(r,n,h,t).then(f=>(f&&(f.setSecondaryId(this,m),this.#t.push(f)),this.drawNextGraph(a+1,i)))):this}return this.#a&&(n.$num_graphs=e.arr.length),this.drawGraph(this.getPadPainter(),n,h,t).then(r=>(r&&(r.setSecondaryId(this,m),this.#t.push(r)),this.drawNextGraph(a+1)))}fillContextMenuItems(a){a.addRedrawMenu(this)}async redrawWith(a,i){if(!i){this.#i=null,this.#t=[];const r=this.getPadPainter();r?.removePrimitive(this,!0),this.#e&&r?.divide(0,0)}const e=new _(a),n=this.getObject();this.#n=e.check("3D"),this.#a="",this.#e=e.check("PADS"),["PFC","PLC","PMC"].forEach(r=>{e.check(r)&&(this.#a+=" "+r)});let h="",t=null;e.check("FB")&&this.is3d()&&(h+="FB"),A.forEach(r=>{e.check(r)&&(h+=";"+r)}),this.#r=e.remain();let m=Promise.resolve(!0);if(this.#e)m=$(this,!1).then(()=>(t=this.getPadPainter(),t.divide(n.fGraphs.arr.length,0,!0)));else if(e.check("A")||!this.getMainPainter()){const r=this.scanGraphsRange(n.fGraphs,n.fHistogram,this.getPadPainter()?.getRootPad(!0));m=this.drawAxisHist(r,h).then(f=>{f.setSecondaryId(this,"hist"),this.#i=f})}return m.then(()=>(this.addToPadPrimitives(),this.drawNextGraph(0,t))).then(()=>this.#e?this:new b(this,this.getPadPainter(),this.getObject().fFunctions,!0).drawNext(0))}static async draw(a,i,e){return new H(a,i,e).redrawWith(e,!0)}};class N extends W{async drawAxisHist(a,i){const e=this.getDrawDom();return this.is3d()?B.draw(e,a,"LEGO"+i):O.draw(e,a,i)}async drawGraph(a,i,e,n){return this.is3d()&&(e+=`pos3d_${n}`),C.draw(a,i,e)}static async draw(a,i,e){return new N(a,i,e).redrawWith(e,!0)}}export{N as TMultiGraphPainter};
@@ -1 +1 @@
1
- import{a7 as bt,c5 as _t,c6 as Ot,ae as u,c7 as Yt,aC as Z,aK as G,c8 as j,a5 as U,a2 as Xt,$ as at,c9 as nt,ca as ft,cb as H,bL as st,cc as ut,cd as xt,ce as Nt,cf as Ft,cg as Lt,aA as K,ch as q,a8 as lt,ci as At,cj as kt,aO as Rt,aU as pt,am as Bt,al as Mt,bv as Et,ba as J,bG as Ht,aE as gt,b0 as It,ck as Gt,bK as Q,cl as Wt,ac as $t,a6 as Vt,bn as Zt,s as jt,bT as Ut}from"./ndmvr-aframe-core-Cw91_9_Y.js";const Pt=Xt(17),yt="postitle",wt="autoplace",zt="brNDC";function Kt(E){const e=(t,i)=>Math.abs(t-i)<.001;return e(E.fX1NDC,u.fStatX-u.fStatW)&&e(E.fY1NDC,u.fStatY-u.fStatH)&&e(E.fX2NDC,u.fStatX)&&e(E.fY2NDC,u.fStatY)}class mt extends bt{#i;#a;#e;#t;#r;#n;#s;constructor(e,t,i){super(e,t,i),this.Enabled=!0,this.UseContextMenu=!0}async autoPlaceLegend(e,t,i){let f=this.getPadPainter().getFrameSvg().selectChild(".main_layer").node().outerHTML;f=_t(f),f=`<svg xmlns="${Ot}"`+f.slice(4);const r=t?.fLeftMargin??u.fPadLeftMargin,l=t?.fRightMargin??u.fPadRightMargin,o=t?.fTopMargin??u.fPadTopMargin,a=t?.fBottomMargin??u.fPadBottomMargin;return Yt(f).then(s=>{if(!s)return!1;let d=100,x=100;const p=s.getContext("2d"),c=p.getImageData(0,0,s.width,s.height).data,S=Math.floor(s.width/d),$=Math.floor(s.height/x),w=new Array(d*x);c.length!==s.width*s.height*4&&(console.log(`Image size missmatch in TLegend autoplace ${c.length} expected ${s.width*s.height*4}`),d=x=0);for(let h=0;h<d;++h){const P=h*S,g=P+S;for(let T=0;T<x;++T){const z=T*$,D=z+$;let v=0;for(let L=P;L<g&&!v;++L)for(let M=z;M<D;++M){const C=(M*s.width+L)*4;if(c[C]||c[C+1]||c[C+2]||c[C+3]){v=1;break}}w[T*d+h]=v}}const m=.3/Math.max(.2,1-r-l),N=Math.min(.5,Math.max(.1,e.fPrimitives.arr.length*.05))/Math.max(.2,1-o-a),O=Math.round(m*d),Y=Math.round(N*x),y=(h,P)=>{for(let g=h;g<h+O;++g)for(let T=P;T<P+Y;++T)if(w[T*d+g])return!1;return!0};for(let h=0;h<d-O;++h)for(let P=x-Y-1;P>=0;--P)if(y(h,P))return e.fX1NDC=r+h/d*(1-r-l),e.fX2NDC=e.fX1NDC+m*(1-r-l),e.fY2NDC=1-o-P/x*(1-a-o),e.fY1NDC=e.fY2NDC-N*(1-a-o),!0}).then(s=>{if(s||i)return s;e.fX1NDC=Math.max(r??0,e.fX2NDC-.3),e.fX2NDC=Math.min(e.fX1NDC+.3,1-l);const d=Math.max(e.fPrimitives?e.fPrimitives.arr.length*.05:0,.2);return e.fY2NDC=Math.min(1-o,e.fY1NDC+d),e.fY1NDC=Math.max(e.fY2NDC-d,a),!0})}getPaveDrawOption(){let e=this.getDrawOpt();return(this.isStats()||!e)&&(e=this.getObject()?.fOption),e||zt}setPaveDrawOption(e){this.isStats()?this.getObject().fOption=e:this.storeDrawOpt(e)}async drawPave(e){if(!this.Enabled)return this.removeG(),this;const t=this.getObject(),i=this.getPaveDrawOption().toUpperCase(),n=this.getFramePainter(),f=this.getPadPainter(),r=f.getRootPad(!0);if(n?.getDrawDom()===null)return this;let l,o,a;t.fInit===0&&(this.stored=Object.assign({},t),t.fInit=1,t._typename===Z&&!t.fX1&&!t.fX2&&!t.fY1&&!t.fY2?n?(t.fX1NDC=n.fX2NDC+.01,t.fX2NDC=Math.min(.96,n.fX2NDC+.06),t.fY1NDC=n.fY1NDC,t.fY2NDC=n.fY2NDC):(t.fX2NDC=.8,t.fX1NDC=.9,t.fY1NDC=.1,t.fY2NDC=.9):t.fOption.indexOf("NDC")>=0?(t.fX1NDC<1e-20&&t.fX2NDC<1e-20&&(t.fX1NDC=t.fX1,t.fX2NDC=t.fX2),t.fY1NDC<1e-20&&t.fY2NDC<1e-20&&(t.fY1NDC=t.fY1,t.fY2NDC=t.fY2)):r&&r.fX1===0&&r.fX2===1&&r.fY1===0&&r.fY2===1&&G(e)&&e.indexOf("postpone")>=0?(t.fInit=0,t.fX1NDC=t.fY1NDC=.99,t.fX2NDC=t.fY2NDC=1):r?(r.fLogx&&(t.fX1>0&&(t.fX1=Math.log10(t.fX1)),t.fX2>0&&(t.fX2=Math.log10(t.fX2))),r.fLogy&&(t.fY1>0&&(t.fY1=Math.log10(t.fY1)),t.fY2>0&&(t.fY2=Math.log10(t.fY2))),t.fX1NDC=(t.fX1-r.fX1)/(r.fX2-r.fX1),t.fY1NDC=(t.fY1-r.fY1)/(r.fY2-r.fY1),t.fX2NDC=(t.fX2-r.fX1)/(r.fX2-r.fX1),t.fY2NDC=(t.fY2-r.fY1)/(r.fY2-r.fY1)):(t.fX1NDC=t.fY1NDC=.1,t.fX2NDC=t.fY2NDC=.9));let s=Promise.resolve(!0);return t._typename===j&&(this.AutoPlace||t.fX1NDC===t.fX2NDC&&t.fY1NDC===t.fY2NDC)&&(s=this.autoPlaceLegend(t,r).then(d=>(delete this.AutoPlace,d||(t.fX1NDC=n.fX2NDC-.2,t.fX2NDC=n.fX2NDC,t.fY1NDC=n.fY2NDC-.1,t.fY2NDC=n.fY2NDC),d))),s.then(()=>{if(this.isStats()&&!this.NoFillStats&&!f.isFastDrawing()){const m=t.$main_painter||this.getMainPainter();if(U(m?.fillStatistic)){let N=t.fOptStat,O=t.fOptFit;if((t.TestBit(Pt)||!Number.isInteger(N))&&(N=u.fOptStat),(t.TestBit(Pt)||!Number.isInteger(O))&&(O=u.fOptFit),m.fillStatistic(this,N,O)){let Y=t.fLines?.arr.length||0;const y=Y>0&&!this.moved_interactive&&Kt(t),h=this.#r&&this.#n>1?u.fStatH:0;h&&(Y-=this.#s);let P=u.fStatH,g=u.fStatW;this.#r&&(g=1.8*u.fStatW),u.fStatFontSize<=0||u.fStatFont%10===3?P=Y*.25*u.fStatH:u.fStatFontSize<1&&(P=Y*u.fStatFontSize),y?(t.fX1NDC=Math.max(.005,t.fX2NDC-g),t.fY1NDC=Math.max(.005,t.fY2NDC-P-h)):(t.fY1NDC>t.fY2NDC&&(t.fY2NDC=Math.min(.995,t.fY1NDC+P+h)),t.fX1NDC>t.fX2NDC&&(t.fY2NDC=Math.min(.995,t.fX1NDC+g)))}}}const d=f.getPadRect(),x=t.fBorderSize,p=i.indexOf("NB")>=0,c=i.indexOf("L")>=0?-1:i.indexOf("R")>=0?1:0,S=i.indexOf("T")>=0?-1:i.indexOf("B")>=0?1:0,$=this.createG();this.#i=Math.round(t.fX1NDC*d.width),this.#a=Math.round((1-t.fY2NDC)*d.height),o=Math.round((t.fX2NDC-t.fX1NDC)*d.width),a=Math.round((t.fY2NDC-t.fY1NDC)*d.height);const w=i.indexOf("ARC")>=0&&t.fCornerRadius>0?Math.round(Math.min(o,a)*t.fCornerRadius):0;if(at($,this.#i,this.#a),this.createAttLine({attr:t,width:x>0?t.fLineWidth:0}),this.createAttFill({attr:t}),this.fillatt.empty()&&w&&this.fillatt.setSolidColor(this.getColor(t.fFillColor)||"white"),t._typename===nt){const m=Math.round(a/2),N=Math.round(o/2),O=`l${N},${-m}l${N},${m}l${-N},${m}z`;this.fillatt.empty()||this.drawBorder($,o,a,0,O),l=$.append("svg:path").attr("d","M0,"+m+O).call(this.fillatt.func).call(this.lineatt.func);const Y=$.append("svg:g");return at(Y,Math.round(o/4),Math.round(a/4)),this.drawPaveText(N,m,e,Y)}if(t.fNpaves)for(let m=t.fNpaves-1;m>0;--m)$.append("svg:path").attr("d",`M${c*4*m},${S*4*m}h${o}v${a}h${-o}z`).call(this.fillatt.func).call(this.lineatt.func);else this.drawBorder($,o,a,w);switch((!this.isBatchMode()||!this.fillatt.empty()||!this.lineatt.empty()&&!p)&&(w?l=$.append("svg:rect").attr("width",o).attr("height",a).attr("rx",w):l=$.append("svg:path").attr("d",`M0,0H${o}V${a}H0Z`),l.call(this.fillatt.func),p||l.call(this.lineatt.func)),t._typename){case xt:case ut:return this.drawPaveLabel(o,a,e);case st:return this.drawPaveStats(o,a,e);case H:case ft:case nt:return this.drawPaveText(o,a,e);case j:return this.drawLegend(o,a,e);case Z:return this.drawPaletteAxis(o,a,e)}}).then(()=>this.isBatchMode()||t._typename===Nt?this:(l?.style("pointer-events","visibleFill").on("mouseenter",()=>this.showObjectStatus()),Ft(this,{obj:t,x:this.#i,y:this.#a,width:o,height:a,minwidth:10,minheight:20,canselect:!0,ctxmenu:Lt.touches&&K.ContextMenu&&this.UseContextMenu,redraw:()=>{this.moved_interactive=!0,this.interactiveRedraw(!1,"pave_moved").then(()=>this.drawPave())}}),this.UseContextMenu&&K.ContextMenu&&this.getG().on("contextmenu",d=>this.paveContextMenu(d)),this.isPalette()&&this.interactivePaletteAxis(o,a),this))}drawBorder(e,t,i,n,f){const r=this.getObject(),l=this.getPaveDrawOption().toUpperCase().replaceAll("ARC","").replaceAll("NDC",""),o=this.isPalette()||l.indexOf("NB")>=0,a=l.indexOf("L")>=0?-1:l.indexOf("R")>=0?1:0,s=l.indexOf("T")>=0?-1:l.indexOf("B")>=0?1:0;if(r.fBorderSize<2||r.fShadowColor===0||!a&&!s||o)return;const d=this.getColor(r.fShadowColor),x=r.fBorderSize,p=!this.lineatt.empty()&&this.lineatt.width>2?`${this.lineatt.width-1}px`:"1px";if(f)e.append("svg:path").attr("d",`M0,${Math.round(i/2)+x}${f}`).style("fill",d).style("stroke",d).style("stroke-width",p);else if(n)e.append("svg:rect").attr("width",t).attr("height",i).attr("rx",n).attr("x",a*x).attr("y",s*x).style("fill",d).style("stroke",d).style("stroke-width",p);else{let c;a<0&&s<0?c=`M0,0v${i-x-1}h${1-x}v${2-i}h${t-2}v${x-1}z`:a<0&&s>0?c=`M0,${i}v${x+1-i}h${1-x}v${i-2}h${t-2}v${1-x}z`:a>0&&s<0?c=`M${x+1},0v${1-x}h${t-2}v${i-2}h${1-x}v${x+1-i}z`:c=`M${t},${x+1}h${x-1}v${i-2}h${2-t}v${1-x}h${t-x-2}z`,e.append("svg:path").attr("d",c).style("fill",d).style("stroke",d).style("stroke-width",p)}}fillWebObjectOptions(e){const t=this.getObject();return t?.fInit&&(e.fcust="pave",e.fopt=[t.fX1NDC,t.fY1NDC,t.fX2NDC,t.fY2NDC],t.fName==="stats"&&this.isStats()&&t.fLines.arr.forEach(i=>{(i._typename===q||i._typename===lt)&&(e.fcust+=`;;${i.fTitle}`)})),e}async drawPaveLabel(e,t){const i=this.getObject();return!i.fLabel||!i.fLabel.trim()?this:(this.createAttText({attr:i,can_rotate:!1}),this.startTextDrawingAsync(this.textatt.font,t/1.2).then(()=>this.drawText(this.textatt.createArg({width:e,height:t,text:i.fLabel,norotate:!0}))).then(()=>this.finishTextDrawing()))}drawPaveStats(e,t){const i=this.getObject(),n=[],f=[];let r=0,l=0,o=0;for(let p=0;p<i.fLines.arr.length;++p){const c=i.fLines.arr[p];(c._typename===q||c._typename===lt)&&(n.push(c.fTitle),f.push(c.fTextColor))}const a=n.length;for(let p=0;p<a;++p){const c=n[p];if(p>0&&(o=Math.max(o,c.length)),p===0||c.indexOf("|")<0)continue;r===0&&(r=p);const S=c.split("|");S.length>l&&(l=S.length)}const s=t/a,d=i.fMargin*e;let x=!1;return this.createAttText({attr:i,can_rotate:!1}),this.startTextDrawingAsync(this.textatt.font,t/(a*1.2)).then(()=>{if(a===1)this.drawText(this.textatt.createArg({width:e,height:t,text:n[0],latex:1,norotate:!0}));else for(let c=0;c<a;++c){const S=c*s,$=f[c]>1?this.getColor(f[c]):this.textatt.color;if(r&&c>=r){const w=n[c].split("|");for(let m=0;m<w.length;++m)this.drawText({align:"middle",x:e*m/l,y:S,latex:0,width:e/l,height:s,text:w[m],color:$})}else if(n[c].indexOf("=")<0){if(c===0){x=!0;const w=Math.max(o,Math.round((e-2*d)/s/.65));n[c].length>w+5&&(n[c]=n[c].slice(0,w+2)+"...")}this.drawText({align:c===0?"middle":"start",x:d,y:S,width:e-2*d,height:s,text:n[c],color:$})}else{const w=n[c].split("="),m=[];for(let N=0;N<2;++N){const O={align:N===0?"start":"end",x:d,y:S,width:e-2*d,height:s,text:N>0?w[N].trimStart():w[N].trimEnd(),color:$,_expected_width:e-2*d,_args:m,post_process(Y){this._args[0].ready&&this._args[1].ready&&Y.scaleTextDrawing(1.05*(this._args[0].result_width+this._args[1].result_width)/this._expected_width,Y.getG())}};m.push(O)}for(let N=0;N<2;++N)this.drawText(m[N])}}let p="";if(i.fBorderSize>0&&x&&(p+=`M0,${Math.round(s)}h${e}`),r>0&&l>1){for(let c=r;c<a;++c)p+=`M0,${Math.round(c*s)}h${e}`;for(let c=0;c<l-1;++c)p+=`M${Math.round(e/l*(c+1))},${Math.round(r*s)}V${t}`}return p&&this.appendPath(p).call(this.lineatt.func),this.finishTextDrawing(void 0,a>1)})}async drawPaveText(e,t,i,n){const f=this.getObject(),r=f.fLines?.arr||[],l=r.length,o=this.getPadPainter(),a=o.getPadHeight(),s=f.fLabel.length,d=[],x=f.fMargin*e,p=t/(l||1),c=.85*p;let S=0;this.createAttText({attr:f,can_rotate:!1}),l===1&&this.textatt.size>0&&(S=Math.max(3,this.textatt.getSize(o))),n||(n=this.getG());const $=l===1&&o.isFastDrawing();let w=0,m=0,N=0,O=0;return r.forEach(y=>{y._typename!==q&&y._typename!==lt||!y.fTitle?.trim()||(w++,(y.fX||y.fY||y.fTextSize)&&m++,!y.fTextSize&&!this.textatt.size&&(N=Math.max(N,At(y.fTitle,this.textatt.font,c))))}),N&&(O=c,N>.92*e&&(O*=.92*e/N),O=Math.round(O)),(w>m?this.startTextDrawingAsync(this.textatt.font,this.$postitle?this.textatt.getSize(o,1,.05):c,n,S):Promise.resolve()).then(()=>{for(let y=0;y<l;++y){const h=r[y],P=y*p;switch(h._typename){case q:case lt:{if(!h.fTitle||!h.fTitle.trim())continue;let g=h.fTextColor?this.getColor(h.fTextColor):"";g||(g=this.textatt.color);const T=h.fTextAlign||this.textatt.align,z=T%10,D=(T-z)/10;if(h.fX||h.fY||h.fTextSize){const v=h.fX?h.fX*e:D===1?x:D===2?e/2:e-x,L=h.fY?(1-h.fY)*t:P+(z===2?p/2:z===3?p:0),M=n.append("svg:g");d.push(this.startTextDrawingAsync(this.textatt.font,this.textatt.getAltSize(h.fTextSize,o)||O,M).then(()=>this.drawText({align:T,x:v,y:L,text:h.fTitle,color:g,latex:h._typename===q?0:1,draw_g:M,fast:$})).then(()=>this.finishTextDrawing(M)))}else{const v={x:0,y:P,draw_g:n,latex:h._typename===q?0:1,text:h.fTitle,color:g,fast:$};this.$postitle?v.post_process=function(L){L.$titlebox=this.box}:(v.align=T,v.x=D===1?x:0,v.width=D===2?e:e-x,v.y=P+.05*p,v.height=.9*p),this.drawText(v)}break}case Rt:{const g=h.fX1?Math.round(h.fX1*e):0,T=h.fX2?Math.round(h.fX2*e):e,z=h.fY1?Math.round((1-h.fY1)*t):Math.round(P+p*.5),D=h.fY2?Math.round((1-h.fY2)*t):Math.round(P+p*.5),v=this.createAttLine(h);n.append("svg:path").attr("d",`M${g},${z}L${T},${D}`).call(v.func);break}case kt:{const g=h.fX1?Math.round(h.fX1*e):0,T=h.fX2?Math.round(h.fX2*e):e,z=h.fY1?Math.round((1-h.fY1)*t):Math.round(P),D=h.fY2?Math.round((1-h.fY2)*t):Math.round(P+p),v=this.createAttFill(h);n.append("svg:path").attr("d",`M${g},${z}H${T}V${D}H${g}Z`).call(v.func);break}}}return w>m&&d.push(this.finishTextDrawing(n,w>m+1)),this.isTitle()&&this.getG().style("display",w?null:"none"),Promise.all(d).then(()=>this)}).then(()=>{if(!s)return;const y=Math.round(e*.5),h=Math.round(a*.04),P=n.append("svg:g");return at(P,Math.round(e*.25),Math.round(-a*.02)),this.drawBorder(P,y,h),P.append("svg:path").attr("d",`M0,0h${y}v${h}h${-y}z`).call(this.fillatt.func).call(this.lineatt.func),this.startTextDrawingAsync(this.textatt.font,.9*h,P).then(()=>this.drawText({align:22,x:0,y:0,width:y,height:h,text:f.fLabel,color:this.textatt.color,draw_g:P})).then(()=>d.push(this.finishTextDrawing(P)))}).then(()=>this)}format(e,t){t||(t="stat");const i=this.getObject();switch(t){case"stat":t=i.fStatFormat||u.fStatFormat;break;case"fit":t=i.fFitFormat||u.fFitFormat;break;case"entries":if(Math.abs(e)<1e9&&Math.round(e)===e)return e.toFixed(0);t="14.7g";break}return pt(e,t||"6.4g")}drawLegend(e,t){const i=this.getObject(),n=i.fPrimitives.arr.length,f=Math.max(1,i.fNColumns);let r=Math.round(n/f),l=!1,o=!1;r*f<n&&r++;const a=g=>!g.fObject&&!g.fOption&&(!g.fLabel||!g.fLabel.trim());for(let g=0;g<n;++g){const T=i.fPrimitives.arr[g];a(T)?f===1&&r--:T.fLabel&&(l=!0,(T.fTextFont&&T.fTextFont!==i.fTextFont||T.fTextSize&&T.fTextSize!==i.fTextSize)&&(o=!0))}r<1&&(r=1);const s=Math.round(.03*e/f),d=Math.round(.03*t),x=(t-2*d)/(r+(r-1)*i.fEntrySeparation),p=x*i.fEntrySeparation;let c=s,S=(e-2*s-(f-1)*c)/f;i.fColumnSeparation&&(S=(e-2*s)/(f+(f-1)*i.fColumnSeparation),c=S*i.fColumnSeparation);const $=new Array(f+1).fill(s),w=S*i.fMargin;if(f>1){const g=new Array(f).fill(1),T=e-2*s-(f-1)*c-f*w;for(let D=0;D<n;++D){const v=i.fPrimitives.arr[D];if(a(v))continue;const L=D%f;g[L]=Math.max(g[L],v.fLabel.length)}let z=0;for(let D=0;D<f;++D)z+=g[D];for(let D=0;D<f-1;++D)$[D+1]=$[D]+w+g[D]/z*T+c}$[f]=e-s;let m=x,N=0,O=!1;this.createAttText({attr:i,can_rotate:!1});const Y=this.getPadPainter(),y=this.textatt.getSize(Y);y&&y<m&&(m=N=y);const h=[];return(l&&!o?this.startTextDrawingAsync(this.textatt.font,m,void 0,N):Promise.resolve()).then(()=>{for(let g=0,T=-1;g<n;++g){const z=i.fPrimitives.arr[g];if(a(z))continue;f===1?++T:T=g;const D=z.fOption.toLowerCase(),v=T%f,L=(T-v)/f,M=Math.round($[v]),C=Math.round(d+L*(x+p)),b=Math.round(M+w),F=Math.round(M+(w-s)/2),W=Math.round(C+x*.1),V=Math.round(x*.8),I=Math.round(C+x*.5),k=z.fObject,vt=D.indexOf("f")!==-1,ot=D.indexOf("l")!==-1,ht=D.indexOf("e")!==-1,Ct=D.indexOf("p")!==-1;let St=z,Tt=z,dt=z,A=null,rt=!1;if(Bt(k)&&("fLineColor"in k&&(dt=k),"fFillColor"in k&&(St=k),"fMarkerColor"in k&&(Tt=k),A=Y.findPainterFor(k)),vt){const R=A?.fillatt?.used?A.fillatt:this.createAttFill(St);let X;!ot&&!ht&&!Ct&&(X=A?.lineatt?.used?A.lineatt:this.createAttLine(dt),X.empty()&&(X=null)),(!R.empty()||X)&&(rt=!0,this.appendPath(`M${M},${W}v${V}h${b-s-M}v${-V}z`).call(R.func).call(X?X.func:()=>{}))}if(ot||ht){const R=A?.lineatt?.used?A.lineatt:this.createAttLine(dt);if(!R.empty()&&(rt=!0,ot&&this.appendPath(`M${M},${I}h${b-s-M}`).call(R.func),ht)){let X=0,_=x*.05;U(A?.getHisto)&&A.options?.ErrorKind===1?X=1:U(A?.getGraph)&&k?.fLineWidth!==void 0&&k?.fMarkerSize!==void 0&&(X=A.options?.Ends??1,_=k.fLineWidth+u.fEndErrorSize,X>1&&(_=Math.max(_,k.fMarkerSize*8*.66)));const Dt=X===3?.2:0,tt=Math.round(C+x*Dt),et=Math.round(C+x*(1-Dt)),B=Math.round(_*.66);_=Math.round(_);let it=`M${F},${tt}V${et}`;switch(X){case 1:it+=`M${F-_},${tt}h${2*_}M${F-_},${et}h${2*_}`;break;case 2:it+=`M${F-_},${tt+B}v${-B}h${2*_}v${B}M${F-_},${et-B}v${B}h${2*_}v${-B}`;break;case 3:it+=`M${F-_},${tt}h${2*_}l${-_},${-B}zM${F-_},${et}h${2*_}l${-_},${B}z`;break;case 4:it+=`M${F-_},${tt+B}l${_},${-B}l${_},${B}M${F-_},${et-B}l${_},${B}l${_},${-B}`;break}this.appendPath(it).call(R.func).style("fill",X>1?"none":null)}}if(Ct){const R=A?.markeratt?.used?A.markeratt:this.createAttMarker(Tt);R.empty()||(rt=!0,this.appendPath(R.create(F,I)).call(R.func))}!rt&&A?.lineatt&&!A.lineatt.empty()&&this.appendPath(`M${M},${W}v${V}h${b-s-M}v${-V}z`).style("fill","none").call(A.lineatt.func);let ct=b;if(G(D)&&D.toLowerCase()!=="h"?O=!0:O||(ct=M),z.fLabel){const R=this.createAttText({attr:z,std:!1,attr_alt:i}),X={draw_g:this.getG(),align:R.align,x:ct,width:Math.round($[v+1]-ct),y:C,height:Math.round(x),scale:o&&!z.fTextSize||!i.fTextSize,text:z.fLabel,color:R.color};o?(X.draw_g=this.getG().append("svg:g"),h.push(this.startTextDrawingAsync(R.font,R.getSize(Y),X.draw_g,N).then(()=>this.drawText(X)).then(()=>this.finishTextDrawing(X.draw_g)))):this.drawText(X)}}return l&&!o&&h.push(this.finishTextDrawing()),Promise.all(h)})}isPaletteVertical(){return this.#e}drawPaletteAxis(e,t,i){const n=this.getObject(),f=n.fAxis,r=this.getG(),l=G(i)&&i.indexOf("can_move")>=0,o=G(i)&&i.indexOf("postpone")>=0,a=G(i)&&i.indexOf("cjust")>=0,s=G(i)&&i.indexOf("bring_stats_front")>=0,d=this.getPadPainter(),x=d.getPadWidth(),p=d.getPadHeight(),c=d.getRootPad(!0),S=n.$main_painter||this.getMainPainter(),$=this.getFramePainter(),w=S.getContour(!1),m=w?.getLevels(),N=U(S.getDimension)&&S.getDimension()===3,O=U(S.getZaxis),Y=c?.fLogv??(N?!1:c?.fLogz),y=S.getHistPalette(),h=O?S.getZaxis():S.getObject()?.fZaxis,P=c?.fTickz?.35:.7;let g=0,T=100,z,D,v,L=0;if(this.#e=n.fX2NDC-n.fX1NDC<n.fY2NDC-n.fY1NDC,f.fTickSize=.03,typeof h?.fLabelOffset<"u"&&!N&&(f.fBits=h.fBits&~Mt.kTickMinus&~Mt.kTickPlus,f.fTitle=h.fTitle,f.fTickSize=h.fTickLength,f.fTitleSize=h.fTitleSize,f.fTitleOffset=h.fTitleOffset,f.fTextColor=h.fTitleColor,f.fTextFont=h.fTitleFont,f.fLineColor=h.fAxisColor,f.fLabelSize=h.fLabelSize,f.fLabelColor=h.fLabelColor,f.fLabelFont=h.fLabelFont,f.fLabelOffset=h.fLabelOffset,this.z_handle.setHistPainter(S,O?"hist#z":"z"),this.z_handle.source_axis=h),w&&$&&!N?$.zmin!==void 0&&$.zmax!==void 0&&$.zmin!==$.zmax?(z=$.zmin,D=$.zmax,g=$.zoom_zmin,T=$.zoom_zmax,g===T&&(g=z,T=D)):(g=m.at(0),T=m.at(-1)):S.gmaxbin!==void 0&&S.gminbin!==void 0?(g=S.gminbin,T=S.gmaxbin):S.hmin!==void 0&&S.hmax!==void 0&&(g=S.hmin,T=S.hmax),r.selectAll("rect").style("fill","white"),(z===void 0||D===void 0||z===D)&&(z=g,D=T),this.#e?(this.#t=n.fX2NDC<.5,f.fChopt="S+"+(this.#t?"R":"L"),this.z_handle.configureAxis("zaxis",z,D,g,T,!0,[0,t],{log:Y,fixed_ticks:a?m:null,maxTickSize:Math.round(e*P),swap_side:this.#t,minposbin:S.gminposbin}),v=this.#t?null:`translate(${e})`,c?.fTickz&&(L=this.#t?e:-e)):(this.#t=n.fY1NDC>.5,f.fChopt="S+",this.z_handle.configureAxis("zaxis",z,D,g,T,!1,[0,e],{log:Y,fixed_ticks:a?m:null,maxTickSize:Math.round(t*P),swap_side:this.#t,minposbin:S.gminposbin}),v=this.#t?null:`translate(0,${t})`,c?.fTickz&&(L=this.#t?t:-t)),!w||!y||o)this.appendPath(`M0,0H${e}V${t}H0Z`).style("fill","white");else for(let M=0;M<m.length-1;++M){let C=Math.round(this.z_handle.gr(m[M])),b=Math.round(this.z_handle.gr(m[M+1])),F=.5,W;if(this.#e){if(b>=t||C<0)continue;C+=1,C>t?(C>b+1&&(F=.5*(t-b)/(C-b-1)),C=t,b<0&&(b=0)):b<0&&(C>1&&(F=1-.5*C/(C-b-1)),b=0),W=`M0,${b}H${e}V${C}H0Z`}else{if(C>=e||b<0)continue;b+=1,b>e?(b>C+1&&(F=1-.5*(e-C)/(b-C-1)),b=e,C<0&&(C=0)):C<0&&(b>1&&(F=.5*(b-1)/(b-C-1)),C=0),W=`M${C},0V${t}H${b}V0Z`}const V=m[M]*F+m[M+1]*(1-F),I=w.getPaletteColor(y,V);if(!I)continue;const k=this.appendPath(W).style("fill",I).property("fill0",I).property("fill1",Et(I).darker(.5).formatRgb());this.isBatchMode()||(this.isTooltipAllowed()&&k.on("mouseover",function(){J(this).transition().duration(100).style("fill",J(this).property("fill1"))}).on("mouseout",function(){J(this).transition().duration(100).style("fill",J(this).property("fill0"))}).append("svg:title").text(this.z_handle.axisAsText(m[M])+" - "+this.z_handle.axisAsText(m[M+1])),K.Zooming&&k.on("dblclick",()=>this.getFramePainter().unzoomSingle("z")))}return s&&this.getPadPainter()?.findPainterFor(null,"",st)?.bringToFront(),this.z_handle.drawAxis(r,e,t,v,L).then(()=>{let M;if(l)if(K.ApproxTextSize||Ht()){M={x:this.#i,y:this.#a,width:e,height:t};const C=this.z_handle.labelsFont?.size||14;if(this.#e){const b=(this.z_handle._maxlbllen||3)*.6*C;M.width+=b,this.#t&&(M.x-=b)}else M.height+=C,this.#t&&(M.y-=C)}else"getBoundingClientRect"in r.node()&&(M=r.node().getBoundingClientRect());if(!M)return this;if(this.#e){const C=this.#i+parseInt(M.width)-Math.round(.995*x)+3;C>0&&(this.#i-=C,at(r,this.#i,this.#a),n.fX1NDC-=C/x,n.fX2NDC-=C/x)}else{const C=Math.round((1.05-u.fTitleY)*p)-M.y;C>0&&(this.#a+=C,at(r,this.#i,this.#a),n.fY1NDC-=C/p,n.fY2NDC-=C/p)}return this})}interactivePaletteAxis(e,t){let i=!1,n=0,f=0,r=null;const l=s=>{if(!i)return;s.preventDefault();const d=gt(s,this.getG().node());this.#e?(f=Math.min(Math.max(d[1],0),t),r.attr("y",Math.min(n,f)).attr("height",Math.abs(f-n))):(f=Math.min(Math.max(d[0],0),e),r.attr("x",Math.min(n,f)).attr("width",Math.abs(f-n)))},o=s=>{if(!i)return;s.preventDefault(),J(window).on("mousemove.colzoomRect",null).on("mouseup.colzoomRect",null),r.remove(),r=null,i=!1;const d=this.z_handle.revertPoint(n),x=this.z_handle.revertPoint(f);this.getFramePainter().zoomSingle("z",Math.min(d,x),Math.max(d,x),!0)},a=s=>{if(i)return;i=!0,s.preventDefault(),s.stopPropagation();const d=gt(s,this.getG().node());r=this.getG().append("svg:rect").attr("id","colzoomRect").call(Ut,!0),this.#e?(n=f=d[1],r.attr("x","0").attr("width",e).attr("y",n).attr("height",1)):(n=f=d[0],r.attr("x",n).attr("width",1).attr("y",0).attr("height",t)),J(window).on("mousemove.colzoomRect",l).on("mouseup.colzoomRect",o,!0)};K.Zooming&&this.getG().selectAll(".axis_zoom").on("mousedown",a).on("dblclick",()=>this.getFramePainter().zoomSingle("z",0,0,!0)),K.ZoomWheel&&this.getG().on("wheel",s=>{const d=gt(s,this.getG().node()),x=this.#e?1-d[1]/t:d[0]/e,p=this.z_handle.analyzeWheelEvent(s,x);p?.changed&&this.getFramePainter().zoomSingle("z",p.min,p.max,!0)})}fillContextMenuItems(e){const t=this.getObject(),i=this.isStats()?"SetOption":"SetDrawOption";e.sub("Shadow"),e.addSizeMenu("size",0,12,1,t.fBorderSize,a=>{t.fBorderSize=a,this.interactiveRedraw(!0,`exec:SetBorderSize(${a})`)}),e.addColorMenu("color",t.fShadowColor,a=>{t.fShadowColor=a,this.interactiveRedraw(!0,It(a,"SetShadowColor"))});const n=["nb","tr","tl","br","bl"];let f="",r=this.getPaveDrawOption(),l=r;n.forEach(a=>{const s=l.indexOf(a);s>=0&&!f&&(f=a,l=l.slice(0,s)+l.slice(s+a.length))}),e.addSelectMenu("positon",n,f||"nb",a=>{a+=l,this.setPaveDrawOption(a),this.interactiveRedraw(!0,`exec:${i}("${a}")`)},"Direction of pave shadow or nb - off"),e.endsub(),e.sub("Corner");const o=r.toLowerCase().indexOf("arc");if(e.addchk(o>=0,"arc",a=>{a?r+=" arc":r=r.slice(0,o)+r.slice(o+3),this.setPaveDrawOption(r),this.interactiveRedraw(!0,`exec:${i}("${r}")`)},"Usage of ARC draw option"),e.addSizeMenu("radius",0,.2,.02,t.fCornerRadius,a=>{t.fCornerRadius=a,this.interactiveRedraw(!0,`exec:SetCornerRadius(${a})`)},"Corner radius when ARC is enabled"),e.endsub(),(this.isStats()||this.isPaveText()||this.isPavesText())&&(e.add("Label",()=>e.input("Enter new label",t.fLabel).then(a=>{t.fLabel=a,this.interactiveRedraw("pad",`exec:SetLabel("${a}")`)})),e.addSizeMenu("Margin",0,.2,.02,t.fMargin,a=>{t.fMargin=a,this.interactiveRedraw(!0,`exec:SetMargin(${a})`)})),this.isStats()){e.add("Default position",()=>{t.fX2NDC=u.fStatX,t.fX1NDC=t.fX2NDC-u.fStatW,t.fY2NDC=u.fStatY,t.fY1NDC=t.fY2NDC-u.fStatH,t.fInit=1,this.interactiveRedraw(!0,"pave_moved")}),e.add("Save to gStyle",()=>{u.fStatX=t.fX2NDC,u.fStatW=t.fX2NDC-t.fX1NDC,u.fStatY=t.fY2NDC,u.fStatH=t.fY2NDC-t.fY1NDC,this.fillatt?.saveToStyle("fStatColor","fStatStyle"),u.fStatTextColor=t.fTextColor,u.fStatFontSize=t.fTextSize,u.fStatFont=t.fTextFont,u.fFitFormat=t.fFitFormat,u.fStatFormat=t.fStatFormat,u.fOptStat=t.fOptStat,u.fOptFit=t.fOptFit},"Store stats attributes to gStyle"),e.separator(),e.add("SetStatFormat",()=>{e.input("Enter StatFormat",t.fStatFormat).then(s=>{s&&(t.fStatFormat=s,this.interactiveRedraw(!0,`exec:SetStatFormat("${s}")`))})}),e.add("SetFitFormat",()=>{e.input("Enter FitFormat",t.fFitFormat).then(s=>{s&&(t.fFitFormat=s,this.interactiveRedraw(!0,`exec:SetFitFormat("${s}")`))})}),e.sub("SetOptStat",()=>{e.input("Enter OptStat",t.fOptStat,"int").then(s=>{t.fOptStat=s,this.interactiveRedraw(!0,`exec:SetOptStat(${s})`)})});const a=(s,d)=>{let x=s<10?t.fOptStat:t.fOptFit;x=parseInt(parseInt(x)/parseInt(Math.pow(10,s%10)))%10,e.addchk(x,d,x*100+s,p=>{const c=parseInt(p/100);let S=p%100<10?t.fOptStat:t.fOptFit;S-=(c>0?c:-1)*parseInt(Math.pow(10,p%10)),p%100<10?(t.fOptStat=S,this.interactiveRedraw(!0,`exec:SetOptStat(${S})`)):(t.fOptFit=S,this.interactiveRedraw(!0,`exec:SetOptFit(${S})`))})};a(0,"Histogram name"),a(1,"Entries"),a(2,"Mean"),a(3,"Std Dev"),a(4,"Underflow"),a(5,"Overflow"),a(6,"Integral"),a(7,"Skewness"),a(8,"Kurtosis"),e.endsub(),e.sub("SetOptFit",()=>{e.input("Enter OptStat",t.fOptFit,"int").then(s=>{t.fOptFit=s,this.interactiveRedraw(!0,`exec:SetOptFit(${s})`)})}),a(10,"Fit parameters"),a(11,"Par errors"),a(12,"Chi square / NDF"),a(13,"Probability"),e.endsub(),e.separator()}else this.isPaveText()||this.isPavesText()?(this.isPavesText()&&e.addSizeMenu("Paves",1,10,1,t.fNpaves,a=>{t.fNpaves=a,this.interactiveRedraw(!0,`exec:SetNpaves(${a})`)}),this.isTitle()&&(e.add("Default position",()=>{t.fX1NDC=u.fTitleW>0?u.fTitleX-u.fTitleW/2:u.fPadLeftMargin,t.fY1NDC=u.fTitleY-Math.min(u.fTitleFontSize*1.1,.06),t.fX2NDC=u.fTitleW>0?u.fTitleX+u.fTitleW/2:1-u.fPadRightMargin,t.fY2NDC=u.fTitleY,t.fInit=1,this.interactiveRedraw(!0,"pave_moved")}),e.add("Save to gStyle",()=>{u.fTitleX=(t.fX2NDC+t.fX1NDC)/2,u.fTitleY=t.fY2NDC,this.fillatt?.saveToStyle("fTitleColor","fTitleStyle"),u.fTitleTextColor=t.fTextColor,u.fTitleFontSize=t.fTextSize,u.fTitleFont=t.fTextFont},"Store title position and graphical attributes to gStyle"))):t._typename===j&&(e.sub("Legend"),e.add("Autoplace",()=>{this.autoPlaceLegend(t,this.getPadPainter()?.getRootPad(!0),!0).then(a=>{a&&this.interactiveRedraw(!0,"pave_moved")})}),e.addSizeMenu("Entry separation",0,1,.1,t.fEntrySeparation,a=>{t.fEntrySeparation=a,this.interactiveRedraw(!0,`exec:SetEntrySeparation(${a})`)},"Vertical entries separation, meaningful values between 0 and 1"),e.addSizeMenu("Columns separation",0,1,.1,t.fColumnSeparation,a=>{t.fColumnSeparation=a,this.interactiveRedraw(!0,`exec:SetColumnSeparation(${a})`)},"Horizontal columns separation, meaningful values between 0 and 1"),e.addSizeMenu("Num columns",1,7,1,t.fNColumns,a=>{t.fNColumns=a,this.interactiveRedraw(!0,`exec:SetNColumns(${a})`)},"Number of columns in the legend"),e.endsub())}paveContextMenu(e){if(this.z_handle){const t=this.getFramePainter();U(t?.showContextMenu)&&t.showContextMenu("pal",e)}else Gt(e,this)}isStats(){return this.matchObjectType(st)}isPaveText(){return this.matchObjectType(H)}isPavesText(){return this.matchObjectType(ft)}isPalette(){return this.matchObjectType(Z)}isTitle(){return this.isPaveText()&&this.getObject()?.fName===Q}clearPave(){this.getObject().Clear()}addText(e){this.getObject().AddText(e)}getBestFormat(e,t){const i=e.indexOf("e"),n=e.indexOf(".");return i>=0?e.indexOf("+")<0||t>=1?`.${i-n-1}e`:".1f":n<0?".1f":`.${e.length-n-1}f`}fillFunctionStat(e,t,i=1){if(this.#r=t&&e,!this.#r)return!1;this.#n=i,this.#s=0;const n=i===1?t%10:1,f=i===1?Math.floor(t/10)%10:1,r=i===1?Math.floor(t/100)%10:1,l=i===1?Math.floor(t/1e3)%10:0;if(r&&(this.addText("#chi^{2} / ndf = "+this.format(e.fChisquare,"fit")+" / "+e.fNDF),this.#s++),l&&(this.addText("Prob = "+this.format(Wt(e.fChisquare,e.fNDF))),this.#s++),n)for(let o=0;o<e.GetNumPars();++o){const a=e.GetParName(o);let s=e.GetParValue(o),d=e.GetParError(o);s===void 0?(s="<not avail>",d=null):(s=this.format(Number(s),"fit"),f&&d!==void 0&&(d=pt(d,this.getBestFormat(s,d)),!Number(d)&&e.GetParError(o)&&(d=pt(e.GetParError(o),"4.2g")))),f&&d?this.addText(`${a} = ${s} #pm ${d}`):this.addText(`${a} = ${s}`),this.#s++}return!0}isDummyPos(e){return e?!e.fInit&&!e.fX1&&!e.fX2&&!e.fY1&&!e.fY2&&!e.fX1NDC&&!e.fX2NDC&&!e.fY1NDC&&!e.fY2NDC:!0}updateObject(e,t){if(!this.matchObjectType(e))return!1;const i=this.getObject(),n=t===wt;switch(!i.$modifiedNDC&&!this.isDummyPos(e)&&(this.stored&&!e.fInit&&this.stored.fX1===e.fX1&&this.stored.fX2===e.fX2&&this.stored.fY1===e.fY1&&this.stored.fY2===e.fY2?(this.stored.fX1NDC!==e.fX1NDC&&(i.fX1NDC=e.fX1NDC),this.stored.fX2NDC!==e.fX2NDC&&(i.fX2NDC=e.fX2NDC),this.stored.fY1NDC!==e.fY1NDC&&(i.fY1NDC=e.fY1NDC),this.stored.fY2NDC!==e.fY2NDC&&(i.fY2NDC=e.fY2NDC)):(i.fInit=e.fInit,i.fX1=e.fX1,i.fX2=e.fX2,i.fY1=e.fY1,i.fY2=e.fY2,i.fX1NDC=e.fX1NDC,i.fX2NDC=e.fX2NDC,i.fY1NDC=e.fY1NDC,i.fY2NDC=e.fY2NDC),this.stored=Object.assign({},e)),i.fOption=e.fOption,i.fBorderSize=e.fBorderSize,i.fTextColor!==void 0&&e.fTextColor!==void 0&&(i.fTextAngle=e.fTextAngle,i.fTextSize=e.fTextSize,i.fTextAlign=e.fTextAlign,i.fTextColor=e.fTextColor,i.fTextFont=e.fTextFont),e._typename){case nt:case H:i.fLines=$t(e.fLines);break;case ft:i.fLines=$t(e.fLines),i.fNpaves=e.fNpaves;break;case xt:case ut:i.fLabel=e.fLabel;break;case st:i.fOptStat=e.fOptStat,i.fOptFit=e.fOptFit;break;case j:{const f=i.fPrimitives;if(i.fPrimitives=e.fPrimitives,i.fNColumns=e.fNColumns,this.AutoPlace=n,f?.arr?.length&&f?.arr?.length===i.fPrimitives?.arr?.length)for(let r=0;r<f.arr.length;++r){const l=f.arr[r].fObject,o=i.fPrimitives.arr[r].fObject;l&&o&&l._typename===o._typename&&l.fName===o.fName&&(i.fPrimitives.arr[r].fObject=l)}return!0}case Z:i.fBorderSize=1,i.fShadowColor=0;break;default:return!1}return this.storeDrawOpt(n?zt:t),!0}async redraw(){return this.drawPave()}cleanup(){this.z_handle?.cleanup(),delete this.z_handle;const e=this.getObject();e&&delete e.$main_painter,super.cleanup()}setTitlePosition(e,t,i){const n=u.fTitleX,f=u.fTitleY,r=u.fTitleAlign%10,l=(u.fTitleAlign-r)/10;let o=u.fTitleW,a=u.fTitleH,s=!1;return a<=0&&(i?a=1.1*i/this.getPadPainter().getPadHeight():(a=.05,s=!0)),o<=0&&(t?o=Math.min(.7,.02+t/this.getPadPainter().getPadWidth()):(o=.5,s=!0)),e.fX1NDC=l<2?n:l>2?n-o:n-o/2,e.fY1NDC=r<2?f:r>2?f-a:f-a/2,e.fX2NDC=e.fX1NDC+o,e.fY2NDC=e.fY1NDC+a,e.fInit=1,s}static canDraw(e){const t=e?._typename;return t===Nt||t===xt||t===ut||t===st||t===H||t===ft||t===nt||t===j||t===Z}static async draw(e,t,i){const n=i,f=i===yt,r=i===wt;(f||r||G(i)&&i.indexOf(";")>=0)&&(i="");const l=new mt(e,t,i);return Vt(l,!1).then(()=>{if(l.isTitle()){const o=l.getPadPainter(),a=o.findPainterFor(null,Q,H);a&&a!==l?o.removePrimitive(a):(f||l.isDummyPos(t))&&l.setTitlePosition(t)&&(l.$postitle=!0)}else t._typename===Z?(t.fBorderSize=1,t.fShadowColor=0,t.fAxis&&(t.fAxis.fChopt||(t.fAxis.fChopt="+"),t.fAxis.fNdiv||(t.fAxis.fNdiv=12),t.fAxis.fLabelOffset||(t.fAxis.fLabelOffset=.005)),l.z_handle=new Zt(l.getPadPainter(),t.fAxis,!0),l.UseContextMenu=!0):t._typename===j&&(l.AutoPlace=r);return l.NoFillStats=t.fName!=="stats",l.drawPave(n)}).then(()=>{const o=l.$postitle&&l.$titlebox;return o&&l.setTitlePosition(t,l.$titlebox.width,l.$titlebox.height),delete l.$postitle,delete l.$titlebox,o?l.drawPave(n):l})}}async function Jt(E,e,t,i){if(!t)return E;const n=u,f=E.getObject(),r=E.getPadPainter(),l=i&&n.fOptTitle>0;if(e){let s=r.findInPrimitives(Q,H);return s?(s.Clear(),l&&s.AddText(f.fTitle),E):(s=jt(H),Object.assign(s,{fName:Q,fOption:"blNDC",fFillColor:n.fTitleColor,fFillStyle:n.fTitleStyle,fBorderSize:n.fTitleBorderSize,fTextFont:n.fTitleFont,fTextSize:n.fTitleFontSize,fTextColor:n.fTitleTextColor,fTextAlign:22}),l&&s.AddText(f.fTitle),mt.draw(r,s,yt).then(d=>(d?.setSecondaryId(E,Q),E)))}const o=r?.findPainterFor(null,Q,H),a=o?.getObject();return!o||!a?E:(a.Clear(),l&&a.AddText(f.fTitle),o.redraw().then(()=>E))}export{mt as TPavePainter,Jt as drawObjectTitle,yt as kPosTitle};
1
+ import{a7 as bt,c5 as _t,c6 as Ot,ae as u,c7 as Yt,aC as Z,aK as G,c8 as j,a5 as U,a2 as Xt,$ as at,c9 as nt,ca as ft,cb as H,bL as st,cc as ut,cd as xt,ce as Nt,cf as Ft,cg as Lt,aA as K,ch as q,a8 as lt,ci as At,cj as kt,aO as Rt,aU as pt,am as Bt,al as Mt,bv as Et,ba as J,bG as Ht,aE as gt,b0 as It,ck as Gt,bK as Q,cl as Wt,ac as $t,a6 as Vt,bn as Zt,s as jt,bT as Ut}from"./ndmvr-aframe-core-DEHQ38JB.js";const Pt=Xt(17),yt="postitle",wt="autoplace",zt="brNDC";function Kt(E){const e=(t,i)=>Math.abs(t-i)<.001;return e(E.fX1NDC,u.fStatX-u.fStatW)&&e(E.fY1NDC,u.fStatY-u.fStatH)&&e(E.fX2NDC,u.fStatX)&&e(E.fY2NDC,u.fStatY)}class mt extends bt{#i;#a;#e;#t;#r;#n;#s;constructor(e,t,i){super(e,t,i),this.Enabled=!0,this.UseContextMenu=!0}async autoPlaceLegend(e,t,i){let f=this.getPadPainter().getFrameSvg().selectChild(".main_layer").node().outerHTML;f=_t(f),f=`<svg xmlns="${Ot}"`+f.slice(4);const r=t?.fLeftMargin??u.fPadLeftMargin,l=t?.fRightMargin??u.fPadRightMargin,o=t?.fTopMargin??u.fPadTopMargin,a=t?.fBottomMargin??u.fPadBottomMargin;return Yt(f).then(s=>{if(!s)return!1;let d=100,x=100;const p=s.getContext("2d"),c=p.getImageData(0,0,s.width,s.height).data,S=Math.floor(s.width/d),$=Math.floor(s.height/x),w=new Array(d*x);c.length!==s.width*s.height*4&&(console.log(`Image size missmatch in TLegend autoplace ${c.length} expected ${s.width*s.height*4}`),d=x=0);for(let h=0;h<d;++h){const P=h*S,g=P+S;for(let T=0;T<x;++T){const z=T*$,D=z+$;let v=0;for(let L=P;L<g&&!v;++L)for(let M=z;M<D;++M){const C=(M*s.width+L)*4;if(c[C]||c[C+1]||c[C+2]||c[C+3]){v=1;break}}w[T*d+h]=v}}const m=.3/Math.max(.2,1-r-l),N=Math.min(.5,Math.max(.1,e.fPrimitives.arr.length*.05))/Math.max(.2,1-o-a),O=Math.round(m*d),Y=Math.round(N*x),y=(h,P)=>{for(let g=h;g<h+O;++g)for(let T=P;T<P+Y;++T)if(w[T*d+g])return!1;return!0};for(let h=0;h<d-O;++h)for(let P=x-Y-1;P>=0;--P)if(y(h,P))return e.fX1NDC=r+h/d*(1-r-l),e.fX2NDC=e.fX1NDC+m*(1-r-l),e.fY2NDC=1-o-P/x*(1-a-o),e.fY1NDC=e.fY2NDC-N*(1-a-o),!0}).then(s=>{if(s||i)return s;e.fX1NDC=Math.max(r??0,e.fX2NDC-.3),e.fX2NDC=Math.min(e.fX1NDC+.3,1-l);const d=Math.max(e.fPrimitives?e.fPrimitives.arr.length*.05:0,.2);return e.fY2NDC=Math.min(1-o,e.fY1NDC+d),e.fY1NDC=Math.max(e.fY2NDC-d,a),!0})}getPaveDrawOption(){let e=this.getDrawOpt();return(this.isStats()||!e)&&(e=this.getObject()?.fOption),e||zt}setPaveDrawOption(e){this.isStats()?this.getObject().fOption=e:this.storeDrawOpt(e)}async drawPave(e){if(!this.Enabled)return this.removeG(),this;const t=this.getObject(),i=this.getPaveDrawOption().toUpperCase(),n=this.getFramePainter(),f=this.getPadPainter(),r=f.getRootPad(!0);if(n?.getDrawDom()===null)return this;let l,o,a;t.fInit===0&&(this.stored=Object.assign({},t),t.fInit=1,t._typename===Z&&!t.fX1&&!t.fX2&&!t.fY1&&!t.fY2?n?(t.fX1NDC=n.fX2NDC+.01,t.fX2NDC=Math.min(.96,n.fX2NDC+.06),t.fY1NDC=n.fY1NDC,t.fY2NDC=n.fY2NDC):(t.fX2NDC=.8,t.fX1NDC=.9,t.fY1NDC=.1,t.fY2NDC=.9):t.fOption.indexOf("NDC")>=0?(t.fX1NDC<1e-20&&t.fX2NDC<1e-20&&(t.fX1NDC=t.fX1,t.fX2NDC=t.fX2),t.fY1NDC<1e-20&&t.fY2NDC<1e-20&&(t.fY1NDC=t.fY1,t.fY2NDC=t.fY2)):r&&r.fX1===0&&r.fX2===1&&r.fY1===0&&r.fY2===1&&G(e)&&e.indexOf("postpone")>=0?(t.fInit=0,t.fX1NDC=t.fY1NDC=.99,t.fX2NDC=t.fY2NDC=1):r?(r.fLogx&&(t.fX1>0&&(t.fX1=Math.log10(t.fX1)),t.fX2>0&&(t.fX2=Math.log10(t.fX2))),r.fLogy&&(t.fY1>0&&(t.fY1=Math.log10(t.fY1)),t.fY2>0&&(t.fY2=Math.log10(t.fY2))),t.fX1NDC=(t.fX1-r.fX1)/(r.fX2-r.fX1),t.fY1NDC=(t.fY1-r.fY1)/(r.fY2-r.fY1),t.fX2NDC=(t.fX2-r.fX1)/(r.fX2-r.fX1),t.fY2NDC=(t.fY2-r.fY1)/(r.fY2-r.fY1)):(t.fX1NDC=t.fY1NDC=.1,t.fX2NDC=t.fY2NDC=.9));let s=Promise.resolve(!0);return t._typename===j&&(this.AutoPlace||t.fX1NDC===t.fX2NDC&&t.fY1NDC===t.fY2NDC)&&(s=this.autoPlaceLegend(t,r).then(d=>(delete this.AutoPlace,d||(t.fX1NDC=n.fX2NDC-.2,t.fX2NDC=n.fX2NDC,t.fY1NDC=n.fY2NDC-.1,t.fY2NDC=n.fY2NDC),d))),s.then(()=>{if(this.isStats()&&!this.NoFillStats&&!f.isFastDrawing()){const m=t.$main_painter||this.getMainPainter();if(U(m?.fillStatistic)){let N=t.fOptStat,O=t.fOptFit;if((t.TestBit(Pt)||!Number.isInteger(N))&&(N=u.fOptStat),(t.TestBit(Pt)||!Number.isInteger(O))&&(O=u.fOptFit),m.fillStatistic(this,N,O)){let Y=t.fLines?.arr.length||0;const y=Y>0&&!this.moved_interactive&&Kt(t),h=this.#r&&this.#n>1?u.fStatH:0;h&&(Y-=this.#s);let P=u.fStatH,g=u.fStatW;this.#r&&(g=1.8*u.fStatW),u.fStatFontSize<=0||u.fStatFont%10===3?P=Y*.25*u.fStatH:u.fStatFontSize<1&&(P=Y*u.fStatFontSize),y?(t.fX1NDC=Math.max(.005,t.fX2NDC-g),t.fY1NDC=Math.max(.005,t.fY2NDC-P-h)):(t.fY1NDC>t.fY2NDC&&(t.fY2NDC=Math.min(.995,t.fY1NDC+P+h)),t.fX1NDC>t.fX2NDC&&(t.fY2NDC=Math.min(.995,t.fX1NDC+g)))}}}const d=f.getPadRect(),x=t.fBorderSize,p=i.indexOf("NB")>=0,c=i.indexOf("L")>=0?-1:i.indexOf("R")>=0?1:0,S=i.indexOf("T")>=0?-1:i.indexOf("B")>=0?1:0,$=this.createG();this.#i=Math.round(t.fX1NDC*d.width),this.#a=Math.round((1-t.fY2NDC)*d.height),o=Math.round((t.fX2NDC-t.fX1NDC)*d.width),a=Math.round((t.fY2NDC-t.fY1NDC)*d.height);const w=i.indexOf("ARC")>=0&&t.fCornerRadius>0?Math.round(Math.min(o,a)*t.fCornerRadius):0;if(at($,this.#i,this.#a),this.createAttLine({attr:t,width:x>0?t.fLineWidth:0}),this.createAttFill({attr:t}),this.fillatt.empty()&&w&&this.fillatt.setSolidColor(this.getColor(t.fFillColor)||"white"),t._typename===nt){const m=Math.round(a/2),N=Math.round(o/2),O=`l${N},${-m}l${N},${m}l${-N},${m}z`;this.fillatt.empty()||this.drawBorder($,o,a,0,O),l=$.append("svg:path").attr("d","M0,"+m+O).call(this.fillatt.func).call(this.lineatt.func);const Y=$.append("svg:g");return at(Y,Math.round(o/4),Math.round(a/4)),this.drawPaveText(N,m,e,Y)}if(t.fNpaves)for(let m=t.fNpaves-1;m>0;--m)$.append("svg:path").attr("d",`M${c*4*m},${S*4*m}h${o}v${a}h${-o}z`).call(this.fillatt.func).call(this.lineatt.func);else this.drawBorder($,o,a,w);switch((!this.isBatchMode()||!this.fillatt.empty()||!this.lineatt.empty()&&!p)&&(w?l=$.append("svg:rect").attr("width",o).attr("height",a).attr("rx",w):l=$.append("svg:path").attr("d",`M0,0H${o}V${a}H0Z`),l.call(this.fillatt.func),p||l.call(this.lineatt.func)),t._typename){case xt:case ut:return this.drawPaveLabel(o,a,e);case st:return this.drawPaveStats(o,a,e);case H:case ft:case nt:return this.drawPaveText(o,a,e);case j:return this.drawLegend(o,a,e);case Z:return this.drawPaletteAxis(o,a,e)}}).then(()=>this.isBatchMode()||t._typename===Nt?this:(l?.style("pointer-events","visibleFill").on("mouseenter",()=>this.showObjectStatus()),Ft(this,{obj:t,x:this.#i,y:this.#a,width:o,height:a,minwidth:10,minheight:20,canselect:!0,ctxmenu:Lt.touches&&K.ContextMenu&&this.UseContextMenu,redraw:()=>{this.moved_interactive=!0,this.interactiveRedraw(!1,"pave_moved").then(()=>this.drawPave())}}),this.UseContextMenu&&K.ContextMenu&&this.getG().on("contextmenu",d=>this.paveContextMenu(d)),this.isPalette()&&this.interactivePaletteAxis(o,a),this))}drawBorder(e,t,i,n,f){const r=this.getObject(),l=this.getPaveDrawOption().toUpperCase().replaceAll("ARC","").replaceAll("NDC",""),o=this.isPalette()||l.indexOf("NB")>=0,a=l.indexOf("L")>=0?-1:l.indexOf("R")>=0?1:0,s=l.indexOf("T")>=0?-1:l.indexOf("B")>=0?1:0;if(r.fBorderSize<2||r.fShadowColor===0||!a&&!s||o)return;const d=this.getColor(r.fShadowColor),x=r.fBorderSize,p=!this.lineatt.empty()&&this.lineatt.width>2?`${this.lineatt.width-1}px`:"1px";if(f)e.append("svg:path").attr("d",`M0,${Math.round(i/2)+x}${f}`).style("fill",d).style("stroke",d).style("stroke-width",p);else if(n)e.append("svg:rect").attr("width",t).attr("height",i).attr("rx",n).attr("x",a*x).attr("y",s*x).style("fill",d).style("stroke",d).style("stroke-width",p);else{let c;a<0&&s<0?c=`M0,0v${i-x-1}h${1-x}v${2-i}h${t-2}v${x-1}z`:a<0&&s>0?c=`M0,${i}v${x+1-i}h${1-x}v${i-2}h${t-2}v${1-x}z`:a>0&&s<0?c=`M${x+1},0v${1-x}h${t-2}v${i-2}h${1-x}v${x+1-i}z`:c=`M${t},${x+1}h${x-1}v${i-2}h${2-t}v${1-x}h${t-x-2}z`,e.append("svg:path").attr("d",c).style("fill",d).style("stroke",d).style("stroke-width",p)}}fillWebObjectOptions(e){const t=this.getObject();return t?.fInit&&(e.fcust="pave",e.fopt=[t.fX1NDC,t.fY1NDC,t.fX2NDC,t.fY2NDC],t.fName==="stats"&&this.isStats()&&t.fLines.arr.forEach(i=>{(i._typename===q||i._typename===lt)&&(e.fcust+=`;;${i.fTitle}`)})),e}async drawPaveLabel(e,t){const i=this.getObject();return!i.fLabel||!i.fLabel.trim()?this:(this.createAttText({attr:i,can_rotate:!1}),this.startTextDrawingAsync(this.textatt.font,t/1.2).then(()=>this.drawText(this.textatt.createArg({width:e,height:t,text:i.fLabel,norotate:!0}))).then(()=>this.finishTextDrawing()))}drawPaveStats(e,t){const i=this.getObject(),n=[],f=[];let r=0,l=0,o=0;for(let p=0;p<i.fLines.arr.length;++p){const c=i.fLines.arr[p];(c._typename===q||c._typename===lt)&&(n.push(c.fTitle),f.push(c.fTextColor))}const a=n.length;for(let p=0;p<a;++p){const c=n[p];if(p>0&&(o=Math.max(o,c.length)),p===0||c.indexOf("|")<0)continue;r===0&&(r=p);const S=c.split("|");S.length>l&&(l=S.length)}const s=t/a,d=i.fMargin*e;let x=!1;return this.createAttText({attr:i,can_rotate:!1}),this.startTextDrawingAsync(this.textatt.font,t/(a*1.2)).then(()=>{if(a===1)this.drawText(this.textatt.createArg({width:e,height:t,text:n[0],latex:1,norotate:!0}));else for(let c=0;c<a;++c){const S=c*s,$=f[c]>1?this.getColor(f[c]):this.textatt.color;if(r&&c>=r){const w=n[c].split("|");for(let m=0;m<w.length;++m)this.drawText({align:"middle",x:e*m/l,y:S,latex:0,width:e/l,height:s,text:w[m],color:$})}else if(n[c].indexOf("=")<0){if(c===0){x=!0;const w=Math.max(o,Math.round((e-2*d)/s/.65));n[c].length>w+5&&(n[c]=n[c].slice(0,w+2)+"...")}this.drawText({align:c===0?"middle":"start",x:d,y:S,width:e-2*d,height:s,text:n[c],color:$})}else{const w=n[c].split("="),m=[];for(let N=0;N<2;++N){const O={align:N===0?"start":"end",x:d,y:S,width:e-2*d,height:s,text:N>0?w[N].trimStart():w[N].trimEnd(),color:$,_expected_width:e-2*d,_args:m,post_process(Y){this._args[0].ready&&this._args[1].ready&&Y.scaleTextDrawing(1.05*(this._args[0].result_width+this._args[1].result_width)/this._expected_width,Y.getG())}};m.push(O)}for(let N=0;N<2;++N)this.drawText(m[N])}}let p="";if(i.fBorderSize>0&&x&&(p+=`M0,${Math.round(s)}h${e}`),r>0&&l>1){for(let c=r;c<a;++c)p+=`M0,${Math.round(c*s)}h${e}`;for(let c=0;c<l-1;++c)p+=`M${Math.round(e/l*(c+1))},${Math.round(r*s)}V${t}`}return p&&this.appendPath(p).call(this.lineatt.func),this.finishTextDrawing(void 0,a>1)})}async drawPaveText(e,t,i,n){const f=this.getObject(),r=f.fLines?.arr||[],l=r.length,o=this.getPadPainter(),a=o.getPadHeight(),s=f.fLabel.length,d=[],x=f.fMargin*e,p=t/(l||1),c=.85*p;let S=0;this.createAttText({attr:f,can_rotate:!1}),l===1&&this.textatt.size>0&&(S=Math.max(3,this.textatt.getSize(o))),n||(n=this.getG());const $=l===1&&o.isFastDrawing();let w=0,m=0,N=0,O=0;return r.forEach(y=>{y._typename!==q&&y._typename!==lt||!y.fTitle?.trim()||(w++,(y.fX||y.fY||y.fTextSize)&&m++,!y.fTextSize&&!this.textatt.size&&(N=Math.max(N,At(y.fTitle,this.textatt.font,c))))}),N&&(O=c,N>.92*e&&(O*=.92*e/N),O=Math.round(O)),(w>m?this.startTextDrawingAsync(this.textatt.font,this.$postitle?this.textatt.getSize(o,1,.05):c,n,S):Promise.resolve()).then(()=>{for(let y=0;y<l;++y){const h=r[y],P=y*p;switch(h._typename){case q:case lt:{if(!h.fTitle||!h.fTitle.trim())continue;let g=h.fTextColor?this.getColor(h.fTextColor):"";g||(g=this.textatt.color);const T=h.fTextAlign||this.textatt.align,z=T%10,D=(T-z)/10;if(h.fX||h.fY||h.fTextSize){const v=h.fX?h.fX*e:D===1?x:D===2?e/2:e-x,L=h.fY?(1-h.fY)*t:P+(z===2?p/2:z===3?p:0),M=n.append("svg:g");d.push(this.startTextDrawingAsync(this.textatt.font,this.textatt.getAltSize(h.fTextSize,o)||O,M).then(()=>this.drawText({align:T,x:v,y:L,text:h.fTitle,color:g,latex:h._typename===q?0:1,draw_g:M,fast:$})).then(()=>this.finishTextDrawing(M)))}else{const v={x:0,y:P,draw_g:n,latex:h._typename===q?0:1,text:h.fTitle,color:g,fast:$};this.$postitle?v.post_process=function(L){L.$titlebox=this.box}:(v.align=T,v.x=D===1?x:0,v.width=D===2?e:e-x,v.y=P+.05*p,v.height=.9*p),this.drawText(v)}break}case Rt:{const g=h.fX1?Math.round(h.fX1*e):0,T=h.fX2?Math.round(h.fX2*e):e,z=h.fY1?Math.round((1-h.fY1)*t):Math.round(P+p*.5),D=h.fY2?Math.round((1-h.fY2)*t):Math.round(P+p*.5),v=this.createAttLine(h);n.append("svg:path").attr("d",`M${g},${z}L${T},${D}`).call(v.func);break}case kt:{const g=h.fX1?Math.round(h.fX1*e):0,T=h.fX2?Math.round(h.fX2*e):e,z=h.fY1?Math.round((1-h.fY1)*t):Math.round(P),D=h.fY2?Math.round((1-h.fY2)*t):Math.round(P+p),v=this.createAttFill(h);n.append("svg:path").attr("d",`M${g},${z}H${T}V${D}H${g}Z`).call(v.func);break}}}return w>m&&d.push(this.finishTextDrawing(n,w>m+1)),this.isTitle()&&this.getG().style("display",w?null:"none"),Promise.all(d).then(()=>this)}).then(()=>{if(!s)return;const y=Math.round(e*.5),h=Math.round(a*.04),P=n.append("svg:g");return at(P,Math.round(e*.25),Math.round(-a*.02)),this.drawBorder(P,y,h),P.append("svg:path").attr("d",`M0,0h${y}v${h}h${-y}z`).call(this.fillatt.func).call(this.lineatt.func),this.startTextDrawingAsync(this.textatt.font,.9*h,P).then(()=>this.drawText({align:22,x:0,y:0,width:y,height:h,text:f.fLabel,color:this.textatt.color,draw_g:P})).then(()=>d.push(this.finishTextDrawing(P)))}).then(()=>this)}format(e,t){t||(t="stat");const i=this.getObject();switch(t){case"stat":t=i.fStatFormat||u.fStatFormat;break;case"fit":t=i.fFitFormat||u.fFitFormat;break;case"entries":if(Math.abs(e)<1e9&&Math.round(e)===e)return e.toFixed(0);t="14.7g";break}return pt(e,t||"6.4g")}drawLegend(e,t){const i=this.getObject(),n=i.fPrimitives.arr.length,f=Math.max(1,i.fNColumns);let r=Math.round(n/f),l=!1,o=!1;r*f<n&&r++;const a=g=>!g.fObject&&!g.fOption&&(!g.fLabel||!g.fLabel.trim());for(let g=0;g<n;++g){const T=i.fPrimitives.arr[g];a(T)?f===1&&r--:T.fLabel&&(l=!0,(T.fTextFont&&T.fTextFont!==i.fTextFont||T.fTextSize&&T.fTextSize!==i.fTextSize)&&(o=!0))}r<1&&(r=1);const s=Math.round(.03*e/f),d=Math.round(.03*t),x=(t-2*d)/(r+(r-1)*i.fEntrySeparation),p=x*i.fEntrySeparation;let c=s,S=(e-2*s-(f-1)*c)/f;i.fColumnSeparation&&(S=(e-2*s)/(f+(f-1)*i.fColumnSeparation),c=S*i.fColumnSeparation);const $=new Array(f+1).fill(s),w=S*i.fMargin;if(f>1){const g=new Array(f).fill(1),T=e-2*s-(f-1)*c-f*w;for(let D=0;D<n;++D){const v=i.fPrimitives.arr[D];if(a(v))continue;const L=D%f;g[L]=Math.max(g[L],v.fLabel.length)}let z=0;for(let D=0;D<f;++D)z+=g[D];for(let D=0;D<f-1;++D)$[D+1]=$[D]+w+g[D]/z*T+c}$[f]=e-s;let m=x,N=0,O=!1;this.createAttText({attr:i,can_rotate:!1});const Y=this.getPadPainter(),y=this.textatt.getSize(Y);y&&y<m&&(m=N=y);const h=[];return(l&&!o?this.startTextDrawingAsync(this.textatt.font,m,void 0,N):Promise.resolve()).then(()=>{for(let g=0,T=-1;g<n;++g){const z=i.fPrimitives.arr[g];if(a(z))continue;f===1?++T:T=g;const D=z.fOption.toLowerCase(),v=T%f,L=(T-v)/f,M=Math.round($[v]),C=Math.round(d+L*(x+p)),b=Math.round(M+w),F=Math.round(M+(w-s)/2),W=Math.round(C+x*.1),V=Math.round(x*.8),I=Math.round(C+x*.5),k=z.fObject,vt=D.indexOf("f")!==-1,ot=D.indexOf("l")!==-1,ht=D.indexOf("e")!==-1,Ct=D.indexOf("p")!==-1;let St=z,Tt=z,dt=z,A=null,rt=!1;if(Bt(k)&&("fLineColor"in k&&(dt=k),"fFillColor"in k&&(St=k),"fMarkerColor"in k&&(Tt=k),A=Y.findPainterFor(k)),vt){const R=A?.fillatt?.used?A.fillatt:this.createAttFill(St);let X;!ot&&!ht&&!Ct&&(X=A?.lineatt?.used?A.lineatt:this.createAttLine(dt),X.empty()&&(X=null)),(!R.empty()||X)&&(rt=!0,this.appendPath(`M${M},${W}v${V}h${b-s-M}v${-V}z`).call(R.func).call(X?X.func:()=>{}))}if(ot||ht){const R=A?.lineatt?.used?A.lineatt:this.createAttLine(dt);if(!R.empty()&&(rt=!0,ot&&this.appendPath(`M${M},${I}h${b-s-M}`).call(R.func),ht)){let X=0,_=x*.05;U(A?.getHisto)&&A.options?.ErrorKind===1?X=1:U(A?.getGraph)&&k?.fLineWidth!==void 0&&k?.fMarkerSize!==void 0&&(X=A.options?.Ends??1,_=k.fLineWidth+u.fEndErrorSize,X>1&&(_=Math.max(_,k.fMarkerSize*8*.66)));const Dt=X===3?.2:0,tt=Math.round(C+x*Dt),et=Math.round(C+x*(1-Dt)),B=Math.round(_*.66);_=Math.round(_);let it=`M${F},${tt}V${et}`;switch(X){case 1:it+=`M${F-_},${tt}h${2*_}M${F-_},${et}h${2*_}`;break;case 2:it+=`M${F-_},${tt+B}v${-B}h${2*_}v${B}M${F-_},${et-B}v${B}h${2*_}v${-B}`;break;case 3:it+=`M${F-_},${tt}h${2*_}l${-_},${-B}zM${F-_},${et}h${2*_}l${-_},${B}z`;break;case 4:it+=`M${F-_},${tt+B}l${_},${-B}l${_},${B}M${F-_},${et-B}l${_},${B}l${_},${-B}`;break}this.appendPath(it).call(R.func).style("fill",X>1?"none":null)}}if(Ct){const R=A?.markeratt?.used?A.markeratt:this.createAttMarker(Tt);R.empty()||(rt=!0,this.appendPath(R.create(F,I)).call(R.func))}!rt&&A?.lineatt&&!A.lineatt.empty()&&this.appendPath(`M${M},${W}v${V}h${b-s-M}v${-V}z`).style("fill","none").call(A.lineatt.func);let ct=b;if(G(D)&&D.toLowerCase()!=="h"?O=!0:O||(ct=M),z.fLabel){const R=this.createAttText({attr:z,std:!1,attr_alt:i}),X={draw_g:this.getG(),align:R.align,x:ct,width:Math.round($[v+1]-ct),y:C,height:Math.round(x),scale:o&&!z.fTextSize||!i.fTextSize,text:z.fLabel,color:R.color};o?(X.draw_g=this.getG().append("svg:g"),h.push(this.startTextDrawingAsync(R.font,R.getSize(Y),X.draw_g,N).then(()=>this.drawText(X)).then(()=>this.finishTextDrawing(X.draw_g)))):this.drawText(X)}}return l&&!o&&h.push(this.finishTextDrawing()),Promise.all(h)})}isPaletteVertical(){return this.#e}drawPaletteAxis(e,t,i){const n=this.getObject(),f=n.fAxis,r=this.getG(),l=G(i)&&i.indexOf("can_move")>=0,o=G(i)&&i.indexOf("postpone")>=0,a=G(i)&&i.indexOf("cjust")>=0,s=G(i)&&i.indexOf("bring_stats_front")>=0,d=this.getPadPainter(),x=d.getPadWidth(),p=d.getPadHeight(),c=d.getRootPad(!0),S=n.$main_painter||this.getMainPainter(),$=this.getFramePainter(),w=S.getContour(!1),m=w?.getLevels(),N=U(S.getDimension)&&S.getDimension()===3,O=U(S.getZaxis),Y=c?.fLogv??(N?!1:c?.fLogz),y=S.getHistPalette(),h=O?S.getZaxis():S.getObject()?.fZaxis,P=c?.fTickz?.35:.7;let g=0,T=100,z,D,v,L=0;if(this.#e=n.fX2NDC-n.fX1NDC<n.fY2NDC-n.fY1NDC,f.fTickSize=.03,typeof h?.fLabelOffset<"u"&&!N&&(f.fBits=h.fBits&~Mt.kTickMinus&~Mt.kTickPlus,f.fTitle=h.fTitle,f.fTickSize=h.fTickLength,f.fTitleSize=h.fTitleSize,f.fTitleOffset=h.fTitleOffset,f.fTextColor=h.fTitleColor,f.fTextFont=h.fTitleFont,f.fLineColor=h.fAxisColor,f.fLabelSize=h.fLabelSize,f.fLabelColor=h.fLabelColor,f.fLabelFont=h.fLabelFont,f.fLabelOffset=h.fLabelOffset,this.z_handle.setHistPainter(S,O?"hist#z":"z"),this.z_handle.source_axis=h),w&&$&&!N?$.zmin!==void 0&&$.zmax!==void 0&&$.zmin!==$.zmax?(z=$.zmin,D=$.zmax,g=$.zoom_zmin,T=$.zoom_zmax,g===T&&(g=z,T=D)):(g=m.at(0),T=m.at(-1)):S.gmaxbin!==void 0&&S.gminbin!==void 0?(g=S.gminbin,T=S.gmaxbin):S.hmin!==void 0&&S.hmax!==void 0&&(g=S.hmin,T=S.hmax),r.selectAll("rect").style("fill","white"),(z===void 0||D===void 0||z===D)&&(z=g,D=T),this.#e?(this.#t=n.fX2NDC<.5,f.fChopt="S+"+(this.#t?"R":"L"),this.z_handle.configureAxis("zaxis",z,D,g,T,!0,[0,t],{log:Y,fixed_ticks:a?m:null,maxTickSize:Math.round(e*P),swap_side:this.#t,minposbin:S.gminposbin}),v=this.#t?null:`translate(${e})`,c?.fTickz&&(L=this.#t?e:-e)):(this.#t=n.fY1NDC>.5,f.fChopt="S+",this.z_handle.configureAxis("zaxis",z,D,g,T,!1,[0,e],{log:Y,fixed_ticks:a?m:null,maxTickSize:Math.round(t*P),swap_side:this.#t,minposbin:S.gminposbin}),v=this.#t?null:`translate(0,${t})`,c?.fTickz&&(L=this.#t?t:-t)),!w||!y||o)this.appendPath(`M0,0H${e}V${t}H0Z`).style("fill","white");else for(let M=0;M<m.length-1;++M){let C=Math.round(this.z_handle.gr(m[M])),b=Math.round(this.z_handle.gr(m[M+1])),F=.5,W;if(this.#e){if(b>=t||C<0)continue;C+=1,C>t?(C>b+1&&(F=.5*(t-b)/(C-b-1)),C=t,b<0&&(b=0)):b<0&&(C>1&&(F=1-.5*C/(C-b-1)),b=0),W=`M0,${b}H${e}V${C}H0Z`}else{if(C>=e||b<0)continue;b+=1,b>e?(b>C+1&&(F=1-.5*(e-C)/(b-C-1)),b=e,C<0&&(C=0)):C<0&&(b>1&&(F=.5*(b-1)/(b-C-1)),C=0),W=`M${C},0V${t}H${b}V0Z`}const V=m[M]*F+m[M+1]*(1-F),I=w.getPaletteColor(y,V);if(!I)continue;const k=this.appendPath(W).style("fill",I).property("fill0",I).property("fill1",Et(I).darker(.5).formatRgb());this.isBatchMode()||(this.isTooltipAllowed()&&k.on("mouseover",function(){J(this).transition().duration(100).style("fill",J(this).property("fill1"))}).on("mouseout",function(){J(this).transition().duration(100).style("fill",J(this).property("fill0"))}).append("svg:title").text(this.z_handle.axisAsText(m[M])+" - "+this.z_handle.axisAsText(m[M+1])),K.Zooming&&k.on("dblclick",()=>this.getFramePainter().unzoomSingle("z")))}return s&&this.getPadPainter()?.findPainterFor(null,"",st)?.bringToFront(),this.z_handle.drawAxis(r,e,t,v,L).then(()=>{let M;if(l)if(K.ApproxTextSize||Ht()){M={x:this.#i,y:this.#a,width:e,height:t};const C=this.z_handle.labelsFont?.size||14;if(this.#e){const b=(this.z_handle._maxlbllen||3)*.6*C;M.width+=b,this.#t&&(M.x-=b)}else M.height+=C,this.#t&&(M.y-=C)}else"getBoundingClientRect"in r.node()&&(M=r.node().getBoundingClientRect());if(!M)return this;if(this.#e){const C=this.#i+parseInt(M.width)-Math.round(.995*x)+3;C>0&&(this.#i-=C,at(r,this.#i,this.#a),n.fX1NDC-=C/x,n.fX2NDC-=C/x)}else{const C=Math.round((1.05-u.fTitleY)*p)-M.y;C>0&&(this.#a+=C,at(r,this.#i,this.#a),n.fY1NDC-=C/p,n.fY2NDC-=C/p)}return this})}interactivePaletteAxis(e,t){let i=!1,n=0,f=0,r=null;const l=s=>{if(!i)return;s.preventDefault();const d=gt(s,this.getG().node());this.#e?(f=Math.min(Math.max(d[1],0),t),r.attr("y",Math.min(n,f)).attr("height",Math.abs(f-n))):(f=Math.min(Math.max(d[0],0),e),r.attr("x",Math.min(n,f)).attr("width",Math.abs(f-n)))},o=s=>{if(!i)return;s.preventDefault(),J(window).on("mousemove.colzoomRect",null).on("mouseup.colzoomRect",null),r.remove(),r=null,i=!1;const d=this.z_handle.revertPoint(n),x=this.z_handle.revertPoint(f);this.getFramePainter().zoomSingle("z",Math.min(d,x),Math.max(d,x),!0)},a=s=>{if(i)return;i=!0,s.preventDefault(),s.stopPropagation();const d=gt(s,this.getG().node());r=this.getG().append("svg:rect").attr("id","colzoomRect").call(Ut,!0),this.#e?(n=f=d[1],r.attr("x","0").attr("width",e).attr("y",n).attr("height",1)):(n=f=d[0],r.attr("x",n).attr("width",1).attr("y",0).attr("height",t)),J(window).on("mousemove.colzoomRect",l).on("mouseup.colzoomRect",o,!0)};K.Zooming&&this.getG().selectAll(".axis_zoom").on("mousedown",a).on("dblclick",()=>this.getFramePainter().zoomSingle("z",0,0,!0)),K.ZoomWheel&&this.getG().on("wheel",s=>{const d=gt(s,this.getG().node()),x=this.#e?1-d[1]/t:d[0]/e,p=this.z_handle.analyzeWheelEvent(s,x);p?.changed&&this.getFramePainter().zoomSingle("z",p.min,p.max,!0)})}fillContextMenuItems(e){const t=this.getObject(),i=this.isStats()?"SetOption":"SetDrawOption";e.sub("Shadow"),e.addSizeMenu("size",0,12,1,t.fBorderSize,a=>{t.fBorderSize=a,this.interactiveRedraw(!0,`exec:SetBorderSize(${a})`)}),e.addColorMenu("color",t.fShadowColor,a=>{t.fShadowColor=a,this.interactiveRedraw(!0,It(a,"SetShadowColor"))});const n=["nb","tr","tl","br","bl"];let f="",r=this.getPaveDrawOption(),l=r;n.forEach(a=>{const s=l.indexOf(a);s>=0&&!f&&(f=a,l=l.slice(0,s)+l.slice(s+a.length))}),e.addSelectMenu("positon",n,f||"nb",a=>{a+=l,this.setPaveDrawOption(a),this.interactiveRedraw(!0,`exec:${i}("${a}")`)},"Direction of pave shadow or nb - off"),e.endsub(),e.sub("Corner");const o=r.toLowerCase().indexOf("arc");if(e.addchk(o>=0,"arc",a=>{a?r+=" arc":r=r.slice(0,o)+r.slice(o+3),this.setPaveDrawOption(r),this.interactiveRedraw(!0,`exec:${i}("${r}")`)},"Usage of ARC draw option"),e.addSizeMenu("radius",0,.2,.02,t.fCornerRadius,a=>{t.fCornerRadius=a,this.interactiveRedraw(!0,`exec:SetCornerRadius(${a})`)},"Corner radius when ARC is enabled"),e.endsub(),(this.isStats()||this.isPaveText()||this.isPavesText())&&(e.add("Label",()=>e.input("Enter new label",t.fLabel).then(a=>{t.fLabel=a,this.interactiveRedraw("pad",`exec:SetLabel("${a}")`)})),e.addSizeMenu("Margin",0,.2,.02,t.fMargin,a=>{t.fMargin=a,this.interactiveRedraw(!0,`exec:SetMargin(${a})`)})),this.isStats()){e.add("Default position",()=>{t.fX2NDC=u.fStatX,t.fX1NDC=t.fX2NDC-u.fStatW,t.fY2NDC=u.fStatY,t.fY1NDC=t.fY2NDC-u.fStatH,t.fInit=1,this.interactiveRedraw(!0,"pave_moved")}),e.add("Save to gStyle",()=>{u.fStatX=t.fX2NDC,u.fStatW=t.fX2NDC-t.fX1NDC,u.fStatY=t.fY2NDC,u.fStatH=t.fY2NDC-t.fY1NDC,this.fillatt?.saveToStyle("fStatColor","fStatStyle"),u.fStatTextColor=t.fTextColor,u.fStatFontSize=t.fTextSize,u.fStatFont=t.fTextFont,u.fFitFormat=t.fFitFormat,u.fStatFormat=t.fStatFormat,u.fOptStat=t.fOptStat,u.fOptFit=t.fOptFit},"Store stats attributes to gStyle"),e.separator(),e.add("SetStatFormat",()=>{e.input("Enter StatFormat",t.fStatFormat).then(s=>{s&&(t.fStatFormat=s,this.interactiveRedraw(!0,`exec:SetStatFormat("${s}")`))})}),e.add("SetFitFormat",()=>{e.input("Enter FitFormat",t.fFitFormat).then(s=>{s&&(t.fFitFormat=s,this.interactiveRedraw(!0,`exec:SetFitFormat("${s}")`))})}),e.sub("SetOptStat",()=>{e.input("Enter OptStat",t.fOptStat,"int").then(s=>{t.fOptStat=s,this.interactiveRedraw(!0,`exec:SetOptStat(${s})`)})});const a=(s,d)=>{let x=s<10?t.fOptStat:t.fOptFit;x=parseInt(parseInt(x)/parseInt(Math.pow(10,s%10)))%10,e.addchk(x,d,x*100+s,p=>{const c=parseInt(p/100);let S=p%100<10?t.fOptStat:t.fOptFit;S-=(c>0?c:-1)*parseInt(Math.pow(10,p%10)),p%100<10?(t.fOptStat=S,this.interactiveRedraw(!0,`exec:SetOptStat(${S})`)):(t.fOptFit=S,this.interactiveRedraw(!0,`exec:SetOptFit(${S})`))})};a(0,"Histogram name"),a(1,"Entries"),a(2,"Mean"),a(3,"Std Dev"),a(4,"Underflow"),a(5,"Overflow"),a(6,"Integral"),a(7,"Skewness"),a(8,"Kurtosis"),e.endsub(),e.sub("SetOptFit",()=>{e.input("Enter OptStat",t.fOptFit,"int").then(s=>{t.fOptFit=s,this.interactiveRedraw(!0,`exec:SetOptFit(${s})`)})}),a(10,"Fit parameters"),a(11,"Par errors"),a(12,"Chi square / NDF"),a(13,"Probability"),e.endsub(),e.separator()}else this.isPaveText()||this.isPavesText()?(this.isPavesText()&&e.addSizeMenu("Paves",1,10,1,t.fNpaves,a=>{t.fNpaves=a,this.interactiveRedraw(!0,`exec:SetNpaves(${a})`)}),this.isTitle()&&(e.add("Default position",()=>{t.fX1NDC=u.fTitleW>0?u.fTitleX-u.fTitleW/2:u.fPadLeftMargin,t.fY1NDC=u.fTitleY-Math.min(u.fTitleFontSize*1.1,.06),t.fX2NDC=u.fTitleW>0?u.fTitleX+u.fTitleW/2:1-u.fPadRightMargin,t.fY2NDC=u.fTitleY,t.fInit=1,this.interactiveRedraw(!0,"pave_moved")}),e.add("Save to gStyle",()=>{u.fTitleX=(t.fX2NDC+t.fX1NDC)/2,u.fTitleY=t.fY2NDC,this.fillatt?.saveToStyle("fTitleColor","fTitleStyle"),u.fTitleTextColor=t.fTextColor,u.fTitleFontSize=t.fTextSize,u.fTitleFont=t.fTextFont},"Store title position and graphical attributes to gStyle"))):t._typename===j&&(e.sub("Legend"),e.add("Autoplace",()=>{this.autoPlaceLegend(t,this.getPadPainter()?.getRootPad(!0),!0).then(a=>{a&&this.interactiveRedraw(!0,"pave_moved")})}),e.addSizeMenu("Entry separation",0,1,.1,t.fEntrySeparation,a=>{t.fEntrySeparation=a,this.interactiveRedraw(!0,`exec:SetEntrySeparation(${a})`)},"Vertical entries separation, meaningful values between 0 and 1"),e.addSizeMenu("Columns separation",0,1,.1,t.fColumnSeparation,a=>{t.fColumnSeparation=a,this.interactiveRedraw(!0,`exec:SetColumnSeparation(${a})`)},"Horizontal columns separation, meaningful values between 0 and 1"),e.addSizeMenu("Num columns",1,7,1,t.fNColumns,a=>{t.fNColumns=a,this.interactiveRedraw(!0,`exec:SetNColumns(${a})`)},"Number of columns in the legend"),e.endsub())}paveContextMenu(e){if(this.z_handle){const t=this.getFramePainter();U(t?.showContextMenu)&&t.showContextMenu("pal",e)}else Gt(e,this)}isStats(){return this.matchObjectType(st)}isPaveText(){return this.matchObjectType(H)}isPavesText(){return this.matchObjectType(ft)}isPalette(){return this.matchObjectType(Z)}isTitle(){return this.isPaveText()&&this.getObject()?.fName===Q}clearPave(){this.getObject().Clear()}addText(e){this.getObject().AddText(e)}getBestFormat(e,t){const i=e.indexOf("e"),n=e.indexOf(".");return i>=0?e.indexOf("+")<0||t>=1?`.${i-n-1}e`:".1f":n<0?".1f":`.${e.length-n-1}f`}fillFunctionStat(e,t,i=1){if(this.#r=t&&e,!this.#r)return!1;this.#n=i,this.#s=0;const n=i===1?t%10:1,f=i===1?Math.floor(t/10)%10:1,r=i===1?Math.floor(t/100)%10:1,l=i===1?Math.floor(t/1e3)%10:0;if(r&&(this.addText("#chi^{2} / ndf = "+this.format(e.fChisquare,"fit")+" / "+e.fNDF),this.#s++),l&&(this.addText("Prob = "+this.format(Wt(e.fChisquare,e.fNDF))),this.#s++),n)for(let o=0;o<e.GetNumPars();++o){const a=e.GetParName(o);let s=e.GetParValue(o),d=e.GetParError(o);s===void 0?(s="<not avail>",d=null):(s=this.format(Number(s),"fit"),f&&d!==void 0&&(d=pt(d,this.getBestFormat(s,d)),!Number(d)&&e.GetParError(o)&&(d=pt(e.GetParError(o),"4.2g")))),f&&d?this.addText(`${a} = ${s} #pm ${d}`):this.addText(`${a} = ${s}`),this.#s++}return!0}isDummyPos(e){return e?!e.fInit&&!e.fX1&&!e.fX2&&!e.fY1&&!e.fY2&&!e.fX1NDC&&!e.fX2NDC&&!e.fY1NDC&&!e.fY2NDC:!0}updateObject(e,t){if(!this.matchObjectType(e))return!1;const i=this.getObject(),n=t===wt;switch(!i.$modifiedNDC&&!this.isDummyPos(e)&&(this.stored&&!e.fInit&&this.stored.fX1===e.fX1&&this.stored.fX2===e.fX2&&this.stored.fY1===e.fY1&&this.stored.fY2===e.fY2?(this.stored.fX1NDC!==e.fX1NDC&&(i.fX1NDC=e.fX1NDC),this.stored.fX2NDC!==e.fX2NDC&&(i.fX2NDC=e.fX2NDC),this.stored.fY1NDC!==e.fY1NDC&&(i.fY1NDC=e.fY1NDC),this.stored.fY2NDC!==e.fY2NDC&&(i.fY2NDC=e.fY2NDC)):(i.fInit=e.fInit,i.fX1=e.fX1,i.fX2=e.fX2,i.fY1=e.fY1,i.fY2=e.fY2,i.fX1NDC=e.fX1NDC,i.fX2NDC=e.fX2NDC,i.fY1NDC=e.fY1NDC,i.fY2NDC=e.fY2NDC),this.stored=Object.assign({},e)),i.fOption=e.fOption,i.fBorderSize=e.fBorderSize,i.fTextColor!==void 0&&e.fTextColor!==void 0&&(i.fTextAngle=e.fTextAngle,i.fTextSize=e.fTextSize,i.fTextAlign=e.fTextAlign,i.fTextColor=e.fTextColor,i.fTextFont=e.fTextFont),e._typename){case nt:case H:i.fLines=$t(e.fLines);break;case ft:i.fLines=$t(e.fLines),i.fNpaves=e.fNpaves;break;case xt:case ut:i.fLabel=e.fLabel;break;case st:i.fOptStat=e.fOptStat,i.fOptFit=e.fOptFit;break;case j:{const f=i.fPrimitives;if(i.fPrimitives=e.fPrimitives,i.fNColumns=e.fNColumns,this.AutoPlace=n,f?.arr?.length&&f?.arr?.length===i.fPrimitives?.arr?.length)for(let r=0;r<f.arr.length;++r){const l=f.arr[r].fObject,o=i.fPrimitives.arr[r].fObject;l&&o&&l._typename===o._typename&&l.fName===o.fName&&(i.fPrimitives.arr[r].fObject=l)}return!0}case Z:i.fBorderSize=1,i.fShadowColor=0;break;default:return!1}return this.storeDrawOpt(n?zt:t),!0}async redraw(){return this.drawPave()}cleanup(){this.z_handle?.cleanup(),delete this.z_handle;const e=this.getObject();e&&delete e.$main_painter,super.cleanup()}setTitlePosition(e,t,i){const n=u.fTitleX,f=u.fTitleY,r=u.fTitleAlign%10,l=(u.fTitleAlign-r)/10;let o=u.fTitleW,a=u.fTitleH,s=!1;return a<=0&&(i?a=1.1*i/this.getPadPainter().getPadHeight():(a=.05,s=!0)),o<=0&&(t?o=Math.min(.7,.02+t/this.getPadPainter().getPadWidth()):(o=.5,s=!0)),e.fX1NDC=l<2?n:l>2?n-o:n-o/2,e.fY1NDC=r<2?f:r>2?f-a:f-a/2,e.fX2NDC=e.fX1NDC+o,e.fY2NDC=e.fY1NDC+a,e.fInit=1,s}static canDraw(e){const t=e?._typename;return t===Nt||t===xt||t===ut||t===st||t===H||t===ft||t===nt||t===j||t===Z}static async draw(e,t,i){const n=i,f=i===yt,r=i===wt;(f||r||G(i)&&i.indexOf(";")>=0)&&(i="");const l=new mt(e,t,i);return Vt(l,!1).then(()=>{if(l.isTitle()){const o=l.getPadPainter(),a=o.findPainterFor(null,Q,H);a&&a!==l?o.removePrimitive(a):(f||l.isDummyPos(t))&&l.setTitlePosition(t)&&(l.$postitle=!0)}else t._typename===Z?(t.fBorderSize=1,t.fShadowColor=0,t.fAxis&&(t.fAxis.fChopt||(t.fAxis.fChopt="+"),t.fAxis.fNdiv||(t.fAxis.fNdiv=12),t.fAxis.fLabelOffset||(t.fAxis.fLabelOffset=.005)),l.z_handle=new Zt(l.getPadPainter(),t.fAxis,!0),l.UseContextMenu=!0):t._typename===j&&(l.AutoPlace=r);return l.NoFillStats=t.fName!=="stats",l.drawPave(n)}).then(()=>{const o=l.$postitle&&l.$titlebox;return o&&l.setTitlePosition(t,l.$titlebox.width,l.$titlebox.height),delete l.$postitle,delete l.$titlebox,o?l.drawPave(n):l})}}async function Jt(E,e,t,i){if(!t)return E;const n=u,f=E.getObject(),r=E.getPadPainter(),l=i&&n.fOptTitle>0;if(e){let s=r.findInPrimitives(Q,H);return s?(s.Clear(),l&&s.AddText(f.fTitle),E):(s=jt(H),Object.assign(s,{fName:Q,fOption:"blNDC",fFillColor:n.fTitleColor,fFillStyle:n.fTitleStyle,fBorderSize:n.fTitleBorderSize,fTextFont:n.fTitleFont,fTextSize:n.fTitleFontSize,fTextColor:n.fTitleTextColor,fTextAlign:22}),l&&s.AddText(f.fTitle),mt.draw(r,s,yt).then(d=>(d?.setSecondaryId(E,Q),E)))}const o=r?.findPainterFor(null,Q,H),a=o?.getObject();return!o||!a?E:(a.Clear(),l&&a.AddText(f.fTitle),o.redraw().then(()=>E))}export{mt as TPavePainter,Jt as drawObjectTitle,yt as kPosTitle};
@@ -1 +1 @@
1
- import{a7 as D,a3 as _,$ as b,aU as S,a0 as v,a1 as I,a$ as A,b0 as T,a6 as L}from"./ndmvr-aframe-core-Cw91_9_Y.js";import{drawObjectTitle as F}from"./TPavePainter-Dx40jhkF.js";class R extends D{#r;#l;#e;#i;#o;#f;#n;#s;#a;#h;#t;#c;decodeOptions(i){const s=new _(i),a=this.getOptions();a.is3d=s.check("3D"),a.lblor=0,a.sort=0,a.samecolor=!1,a.same=s.check("SAME"),s.check("SC")&&(a.samecolor=!0),s.check("T")&&(a.lblor=2),s.check("R")&&(a.lblor=1),s.check(">")&&(a.sort=1),s.check("<")&&(a.sort=-1)}#d(i,s){if(!i&&!s||!this.#o||!this.#e||!this.#i)return null;let a=Math.atan2(s/this.#i,i/this.#e);for(;a<.5*Math.PI;)a+=2*Math.PI;return this.#o.find(f=>f.a1<a&&a<f.a2||f.a1<a+2*Math.PI&&a+2*Math.PI<f.a2)}moveStart(i,s){if(!i&&!s||!this.#o||!this.#e||!this.#i)return;let a=Math.atan2(s/this.#i,i/this.#e);for(;a<.5*Math.PI;)a+=2*Math.PI;const f=this.getObject(),u=Math.sqrt((i/this.#e)**2+(s/this.#i)**2),x=this.#d(i,s);this.#t=u>.95&&i>this.#e*.95&&this.options.is3d?"n-resize":x&&u-x.offset<.7?"grab":"w-resize",this.#f=i,this.#n=s,this.getG().style("cursor",this.#t),this.#t==="grab"?(this.#h=x.n,this.#s=u,this.#a=f.fPieSlices[this.#h].fRadiusOffset):this.#t==="n-resize"?(this.#c=this.getPadPainter().getPadHeight(),this.#s=f.fAngle3D,this.#a=s):(this.#s=a,this.#a=f.fAngularOffset)}moveDrag(i,s){this.#f+=i,this.#n+=s;const a=this.getObject();if(this.#t==="grab"){const f=Math.sqrt((this.#f/this.#e)**2+(this.#n/this.#i)**2);a.fPieSlices[this.#h].fRadiusOffset=Math.max(0,this.#a+.25*(f-this.#s))}else if(this.#t==="n-resize")a.fAngle3D=Math.max(5,Math.min(85,this.#s+(this.#n-this.#a)/this.#c*180));else{const f=Math.atan2(this.#n/this.#i,this.#f/this.#e);a.fAngularOffset=this.#a-(f-this.#s)/Math.PI*180}this.drawPie()}moveEnd(i){if(i)return;const s=this.getObject();let a;this.#t==="grab"?a=`SetEntryRadiusOffset(${this.#h},${s.fPieSlices[this.#h].fRadiusOffset})`:this.#t==="n-resize"?a=`SetAngle3D(${s.fAngle3D})`:a=`SetAngularOffset(${s.fAngularOffset})`,a&&this.submitCanvExec(a+";;Notify();;"),this.#t=null,this.getG().style("cursor",null)}updateObject(i,s){return this.matchObjectType(i)?(this.decodeOptions(s),Object.assign(this.getObject(),i),!0):!1}async drawPie(){const i=this.createG(),s=this.getObject(),a=this.getOptions(),f=this.getPadPainter(),u=s.fRadius;this.#r=this.axisToSvg("x",s.fX),this.#l=this.axisToSvg("y",s.fY);let x=u,h=1;a.is3d&&(x*=Math.sin(s.fAngle3D/180*Math.PI),h=this.axisToSvg("y",s.fY-s.fHeight)-this.#l),i.style("cursor",this.#t||null),this.createAttText({attr:s});const l=this.axisToSvg("x",s.fX+u)-this.#r,M=this.axisToSvg("y",s.fY-x)-this.#l,E=e=>{for(;e<.5*Math.PI;)e+=2*Math.PI;for(;e>=2.5*Math.PI;)e-=2*Math.PI;return Math.abs(e-1.5*Math.PI)};b(i,this.#r,this.#l);const g=[];let y=0,p=-s.fAngularOffset/180*Math.PI;for(;p<=2*Math.PI;)p+=2*Math.PI;for(let e=0;e<s.fPieSlices.length;e++){const t=s.fPieSlices[e],n=t.fValue;y+=n,g.push({n:e,value:n,slice:t,offset:t.fRadiusOffset,attline:this.createAttLine(t),attfill:this.createAttFill(t)})}a.sort!==0&&g.sort((e,t)=>a.sort*(e.value-t.value));for(let e=0;e<g.length;e++){const t=g[e];if(t.seq=e,t.a2=p,p-=t.value/y*2*Math.PI,t.a1=p,t.x1=Math.round(l*Math.cos(t.a1)),t.y1=Math.round(M*Math.sin(t.a1)),t.x2=Math.round(l*Math.cos(t.a2)),t.y2=Math.round(M*Math.sin(t.a2)),t.offset){const n=u>0?t.offset/u:.1,d=(t.a1+t.a2)/2;t.dx=Math.round(l*n*Math.cos(d)),t.dy=Math.round(M*n*Math.sin(d))}else t.dx=t.dy=0}const P=(e,t)=>{const n=i.append("svg:path").attr("d",t).call(e.attline.func).call(e.attfill.func);e.offset&&b(n,e.dx,e.dy)},w=(e,t)=>{let n=e.a1,d=0;for(;d<=e.a1;)d+=Math.PI;for(;n<e.a2;)d>=e.a2?(t(n,e.a2,e),n=e.a2):(t(n,d,e),n=d,d+=Math.PI)},O=(e,t,n)=>{if(E((e+t)/2)<.5*Math.PI)return;const d=Math.round(l*Math.cos(e)),c=Math.round(M*Math.sin(e)),r=Math.round(l*Math.cos(t)),o=Math.round(M*Math.sin(t));P(n,`M${d},${c}a${l},${M},0,0,1,${r-d},${o-c}v${h}a${l},${M},0,0,0,${d-r},${c-o}z`)},$=(e,t,n)=>{P(n,`M0,0v${h}l${e},${t}v${-h}z`)};for(let e=0;e<g.length;e++){const t=g[e];a.is3d?(t.pie_path="",w(t,(n,d)=>{const c=Math.round(l*Math.cos(n)),r=Math.round(M*Math.sin(n)),o=Math.round(l*Math.cos(d)),C=Math.round(M*Math.sin(d));t.pie_path+=`a${l},${M},0,0,1,${o-c},${C-r}`})):t.pie_path=`a${l},${M},0,0,1,${t.x2-t.x1},${t.y2-t.y1}`}if(a.is3d){let e=-1,t=Math.PI/2;for(let c=0;c<g.length;c++){const r=g[c];P(r,`M0,${h}l${r.x1},${r.y1}${r.pie_path}z`),r.a1<=1.5*Math.PI&&r.a2>=1.5*Math.PI?e=c:r.a1<=3.5*Math.PI&&r.a2>=3.5*Math.PI&&(e=c,t=2.5*Math.PI)}e<0&&(console.error("fail to find start index, use default"),e=0);let n=e,d=g.length;for(;g[n].a1>t&&d-- >0;){const c=g[n];n++,n===g.length&&(n=0,t+=2*Math.PI);const r=g[n];(c.offset||r.offset)&&($(c.x1,c.y1,c),$(r.x2,r.y2,r)),w(c,O)}for(n=e;d-- >0;){const c=g[n];n=n===0?g.length-1:n-1;const r=g[n];(c.offset||r.offset)&&($(c.x2,c.y2,c),$(r.x1,r.y1,r)),w(r,O)}}for(let e=0;e<g.length;e++){const t=g[e];P(t,`M0,0l${t.x1},${t.y1}${t.pie_path}z`)}return this.startTextDrawingAsync(this.textatt.font,this.textatt.getSize(f),i).then(()=>{for(let e=0;e<g.length;e++){const t=g[e],n=t.slice,d=(t.a1+t.a2)/2,c=y?n.fValue/y:0;let r=s.fLabelFormat;r=r.replaceAll("%txt",n.fTitle),r=r.replaceAll("%val",S(n.fValue,s.fValueFormat)),r=r.replaceAll("%frac",S(c,s.fFractionFormat)),r=r.replaceAll("%perc",S(c*100,s.fPercentFormat)+"%");const o={draw_g:i,x:t.dx+l*(1+s.fLabelsOffset)*Math.cos(d),y:t.dy+M*(1+s.fLabelsOffset)*Math.sin(d),latex:1,align:22,text:r};a.samecolor&&(o.color=this.getColor(n.fFillColor)),a.lblor===1?(o.rotate=Math.atan2(o.y,o.x)/Math.PI*180,o.x>0?o.align=12:(o.align=32,o.rotate+=180)):a.lblor===2?(o.rotate=Math.atan2(t.y2-t.y1,t.x2-t.x1)/Math.PI*180,o.rotate>90||o.rotate<-90?(o.rotate+=180,o.align=21):o.align=23):o.x>=0&&o.y>=0?(o.align=13,a.is3d&&(o.y+=h)):o.x>0&&o.y<0?o.align=11:o.x<0&&o.y>=0?(o.align=33,a.is3d&&(o.y+=h)):o.x<0&&o.y<0&&(o.align=31),this.drawText(o)}return this.finishTextDrawing(i)}).then(()=>(this.#e=l,this.#i=M,this.#o=g,this))}async drawTitle(i){return F(this,i,!this.options.same,!0)}async redraw(){return this.drawPie().then(()=>this.drawTitle()).then(()=>(v(this),I(this),this))}fillContextMenuItems(i){const s=this.getObject();if(i.add("Change title",()=>i.input("Enter new title",s.fTitle).then(l=>{s.fTitle=l,this.interactiveRedraw("pad",`exec:SetTitle("${l}")`)})),i.add("Angular offset",()=>i.input("Enter new angular offset",s.fAngularOffset,"float").then(l=>{s.fAngularOffset=l,this.interactiveRedraw("pad",`exec:SetAngularOffset(${l})`)})),this.options.is3d&&i.add("Angle 3D",()=>i.input("Enter new angle 3D",s.fAngle3D,"float",0,90).then(l=>{s.fAngle3D=l,this.interactiveRedraw("pad",`exec:SetAngle3D(${l})`)})),!i.getEventPosition())return;const a=this.getPadPainter()?.getPadSvg(),f=a.node().getBoundingClientRect(),u=i.getEventPosition().clientX-f.left-a.node().clientLeft,x=i.getEventPosition().clientY-f.top-a.node().clientTop,h=this.#d(u-this.#r,x-this.#l);h&&(i.sub(`Slice${h.n}`),i.add("Title",()=>i.input("Enter new title",h.slice.fTitle).then(l=>{h.slice.fTitle=l,this.interactiveRedraw("pad",`exec:SetEntryLabel(${h.n},"${l}")`)})),i.add("Offset",()=>i.input("Enter new slice offset",h.slice.fRadiusOffset,"float",0,1).then(l=>{h.slice.fRadiusOffset=l,this.interactiveRedraw("pad",`exec:SetEntryRadiusOffset(${h.n},${l})`)})),i.sub("Line att"),i.addSizeMenu("width",1,10,1,h.attline.width,l=>{h.slice.fLineWidth=l,this.interactiveRedraw("pad",`exec:SetEntryLineWidth(${h.n},${l})`)}),h.attline.nocolor||i.addColorMenu("color",h.attline.color,l=>{h.slice.fLineColor=A(l).id,this.interactiveRedraw("pad",T(l,"SetEntryLineColor",h.n))}),i.addLineStyleMenu("style",h.attline.style,l=>{h.slice.fLineStyle=l,this.interactiveRedraw("pad",`exec:SetEntryLineStyle(${h.n},${l})`)}),i.endsub(),i.sub("Fill att"),i.addColorMenu("color",h.attfill.colorindx,l=>{h.slice.fFillColor=A(l).id,this.interactiveRedraw("pad",T(l,"SetEntryFillColor",h.n))},h.attfill.kind),i.addFillStyleMenu("style",h.attfill.pattern,h.attfill.colorindx,l=>{h.slice.fFillStyle=l,this.interactiveRedraw("pad",`exec:SetEntryFillStyle(${h.n},${l})`)}),i.endsub(),i.endsub())}static async draw(i,s,a){const f=new R(i,s,a);return f.decodeOptions(a),L(f,!1).then(()=>f.drawPie()).then(()=>f.drawTitle(!0)).then(()=>(v(f),I(f),f))}}export{R as TPiePainter};
1
+ import{a7 as D,a3 as _,$ as b,aU as S,a0 as v,a1 as I,a$ as A,b0 as T,a6 as L}from"./ndmvr-aframe-core-DEHQ38JB.js";import{drawObjectTitle as F}from"./TPavePainter-1yngbgp8.js";class R extends D{#r;#l;#e;#i;#o;#f;#n;#s;#a;#h;#t;#c;decodeOptions(i){const s=new _(i),a=this.getOptions();a.is3d=s.check("3D"),a.lblor=0,a.sort=0,a.samecolor=!1,a.same=s.check("SAME"),s.check("SC")&&(a.samecolor=!0),s.check("T")&&(a.lblor=2),s.check("R")&&(a.lblor=1),s.check(">")&&(a.sort=1),s.check("<")&&(a.sort=-1)}#d(i,s){if(!i&&!s||!this.#o||!this.#e||!this.#i)return null;let a=Math.atan2(s/this.#i,i/this.#e);for(;a<.5*Math.PI;)a+=2*Math.PI;return this.#o.find(f=>f.a1<a&&a<f.a2||f.a1<a+2*Math.PI&&a+2*Math.PI<f.a2)}moveStart(i,s){if(!i&&!s||!this.#o||!this.#e||!this.#i)return;let a=Math.atan2(s/this.#i,i/this.#e);for(;a<.5*Math.PI;)a+=2*Math.PI;const f=this.getObject(),u=Math.sqrt((i/this.#e)**2+(s/this.#i)**2),x=this.#d(i,s);this.#t=u>.95&&i>this.#e*.95&&this.options.is3d?"n-resize":x&&u-x.offset<.7?"grab":"w-resize",this.#f=i,this.#n=s,this.getG().style("cursor",this.#t),this.#t==="grab"?(this.#h=x.n,this.#s=u,this.#a=f.fPieSlices[this.#h].fRadiusOffset):this.#t==="n-resize"?(this.#c=this.getPadPainter().getPadHeight(),this.#s=f.fAngle3D,this.#a=s):(this.#s=a,this.#a=f.fAngularOffset)}moveDrag(i,s){this.#f+=i,this.#n+=s;const a=this.getObject();if(this.#t==="grab"){const f=Math.sqrt((this.#f/this.#e)**2+(this.#n/this.#i)**2);a.fPieSlices[this.#h].fRadiusOffset=Math.max(0,this.#a+.25*(f-this.#s))}else if(this.#t==="n-resize")a.fAngle3D=Math.max(5,Math.min(85,this.#s+(this.#n-this.#a)/this.#c*180));else{const f=Math.atan2(this.#n/this.#i,this.#f/this.#e);a.fAngularOffset=this.#a-(f-this.#s)/Math.PI*180}this.drawPie()}moveEnd(i){if(i)return;const s=this.getObject();let a;this.#t==="grab"?a=`SetEntryRadiusOffset(${this.#h},${s.fPieSlices[this.#h].fRadiusOffset})`:this.#t==="n-resize"?a=`SetAngle3D(${s.fAngle3D})`:a=`SetAngularOffset(${s.fAngularOffset})`,a&&this.submitCanvExec(a+";;Notify();;"),this.#t=null,this.getG().style("cursor",null)}updateObject(i,s){return this.matchObjectType(i)?(this.decodeOptions(s),Object.assign(this.getObject(),i),!0):!1}async drawPie(){const i=this.createG(),s=this.getObject(),a=this.getOptions(),f=this.getPadPainter(),u=s.fRadius;this.#r=this.axisToSvg("x",s.fX),this.#l=this.axisToSvg("y",s.fY);let x=u,h=1;a.is3d&&(x*=Math.sin(s.fAngle3D/180*Math.PI),h=this.axisToSvg("y",s.fY-s.fHeight)-this.#l),i.style("cursor",this.#t||null),this.createAttText({attr:s});const l=this.axisToSvg("x",s.fX+u)-this.#r,M=this.axisToSvg("y",s.fY-x)-this.#l,E=e=>{for(;e<.5*Math.PI;)e+=2*Math.PI;for(;e>=2.5*Math.PI;)e-=2*Math.PI;return Math.abs(e-1.5*Math.PI)};b(i,this.#r,this.#l);const g=[];let y=0,p=-s.fAngularOffset/180*Math.PI;for(;p<=2*Math.PI;)p+=2*Math.PI;for(let e=0;e<s.fPieSlices.length;e++){const t=s.fPieSlices[e],n=t.fValue;y+=n,g.push({n:e,value:n,slice:t,offset:t.fRadiusOffset,attline:this.createAttLine(t),attfill:this.createAttFill(t)})}a.sort!==0&&g.sort((e,t)=>a.sort*(e.value-t.value));for(let e=0;e<g.length;e++){const t=g[e];if(t.seq=e,t.a2=p,p-=t.value/y*2*Math.PI,t.a1=p,t.x1=Math.round(l*Math.cos(t.a1)),t.y1=Math.round(M*Math.sin(t.a1)),t.x2=Math.round(l*Math.cos(t.a2)),t.y2=Math.round(M*Math.sin(t.a2)),t.offset){const n=u>0?t.offset/u:.1,d=(t.a1+t.a2)/2;t.dx=Math.round(l*n*Math.cos(d)),t.dy=Math.round(M*n*Math.sin(d))}else t.dx=t.dy=0}const P=(e,t)=>{const n=i.append("svg:path").attr("d",t).call(e.attline.func).call(e.attfill.func);e.offset&&b(n,e.dx,e.dy)},w=(e,t)=>{let n=e.a1,d=0;for(;d<=e.a1;)d+=Math.PI;for(;n<e.a2;)d>=e.a2?(t(n,e.a2,e),n=e.a2):(t(n,d,e),n=d,d+=Math.PI)},O=(e,t,n)=>{if(E((e+t)/2)<.5*Math.PI)return;const d=Math.round(l*Math.cos(e)),c=Math.round(M*Math.sin(e)),r=Math.round(l*Math.cos(t)),o=Math.round(M*Math.sin(t));P(n,`M${d},${c}a${l},${M},0,0,1,${r-d},${o-c}v${h}a${l},${M},0,0,0,${d-r},${c-o}z`)},$=(e,t,n)=>{P(n,`M0,0v${h}l${e},${t}v${-h}z`)};for(let e=0;e<g.length;e++){const t=g[e];a.is3d?(t.pie_path="",w(t,(n,d)=>{const c=Math.round(l*Math.cos(n)),r=Math.round(M*Math.sin(n)),o=Math.round(l*Math.cos(d)),C=Math.round(M*Math.sin(d));t.pie_path+=`a${l},${M},0,0,1,${o-c},${C-r}`})):t.pie_path=`a${l},${M},0,0,1,${t.x2-t.x1},${t.y2-t.y1}`}if(a.is3d){let e=-1,t=Math.PI/2;for(let c=0;c<g.length;c++){const r=g[c];P(r,`M0,${h}l${r.x1},${r.y1}${r.pie_path}z`),r.a1<=1.5*Math.PI&&r.a2>=1.5*Math.PI?e=c:r.a1<=3.5*Math.PI&&r.a2>=3.5*Math.PI&&(e=c,t=2.5*Math.PI)}e<0&&(console.error("fail to find start index, use default"),e=0);let n=e,d=g.length;for(;g[n].a1>t&&d-- >0;){const c=g[n];n++,n===g.length&&(n=0,t+=2*Math.PI);const r=g[n];(c.offset||r.offset)&&($(c.x1,c.y1,c),$(r.x2,r.y2,r)),w(c,O)}for(n=e;d-- >0;){const c=g[n];n=n===0?g.length-1:n-1;const r=g[n];(c.offset||r.offset)&&($(c.x2,c.y2,c),$(r.x1,r.y1,r)),w(r,O)}}for(let e=0;e<g.length;e++){const t=g[e];P(t,`M0,0l${t.x1},${t.y1}${t.pie_path}z`)}return this.startTextDrawingAsync(this.textatt.font,this.textatt.getSize(f),i).then(()=>{for(let e=0;e<g.length;e++){const t=g[e],n=t.slice,d=(t.a1+t.a2)/2,c=y?n.fValue/y:0;let r=s.fLabelFormat;r=r.replaceAll("%txt",n.fTitle),r=r.replaceAll("%val",S(n.fValue,s.fValueFormat)),r=r.replaceAll("%frac",S(c,s.fFractionFormat)),r=r.replaceAll("%perc",S(c*100,s.fPercentFormat)+"%");const o={draw_g:i,x:t.dx+l*(1+s.fLabelsOffset)*Math.cos(d),y:t.dy+M*(1+s.fLabelsOffset)*Math.sin(d),latex:1,align:22,text:r};a.samecolor&&(o.color=this.getColor(n.fFillColor)),a.lblor===1?(o.rotate=Math.atan2(o.y,o.x)/Math.PI*180,o.x>0?o.align=12:(o.align=32,o.rotate+=180)):a.lblor===2?(o.rotate=Math.atan2(t.y2-t.y1,t.x2-t.x1)/Math.PI*180,o.rotate>90||o.rotate<-90?(o.rotate+=180,o.align=21):o.align=23):o.x>=0&&o.y>=0?(o.align=13,a.is3d&&(o.y+=h)):o.x>0&&o.y<0?o.align=11:o.x<0&&o.y>=0?(o.align=33,a.is3d&&(o.y+=h)):o.x<0&&o.y<0&&(o.align=31),this.drawText(o)}return this.finishTextDrawing(i)}).then(()=>(this.#e=l,this.#i=M,this.#o=g,this))}async drawTitle(i){return F(this,i,!this.options.same,!0)}async redraw(){return this.drawPie().then(()=>this.drawTitle()).then(()=>(v(this),I(this),this))}fillContextMenuItems(i){const s=this.getObject();if(i.add("Change title",()=>i.input("Enter new title",s.fTitle).then(l=>{s.fTitle=l,this.interactiveRedraw("pad",`exec:SetTitle("${l}")`)})),i.add("Angular offset",()=>i.input("Enter new angular offset",s.fAngularOffset,"float").then(l=>{s.fAngularOffset=l,this.interactiveRedraw("pad",`exec:SetAngularOffset(${l})`)})),this.options.is3d&&i.add("Angle 3D",()=>i.input("Enter new angle 3D",s.fAngle3D,"float",0,90).then(l=>{s.fAngle3D=l,this.interactiveRedraw("pad",`exec:SetAngle3D(${l})`)})),!i.getEventPosition())return;const a=this.getPadPainter()?.getPadSvg(),f=a.node().getBoundingClientRect(),u=i.getEventPosition().clientX-f.left-a.node().clientLeft,x=i.getEventPosition().clientY-f.top-a.node().clientTop,h=this.#d(u-this.#r,x-this.#l);h&&(i.sub(`Slice${h.n}`),i.add("Title",()=>i.input("Enter new title",h.slice.fTitle).then(l=>{h.slice.fTitle=l,this.interactiveRedraw("pad",`exec:SetEntryLabel(${h.n},"${l}")`)})),i.add("Offset",()=>i.input("Enter new slice offset",h.slice.fRadiusOffset,"float",0,1).then(l=>{h.slice.fRadiusOffset=l,this.interactiveRedraw("pad",`exec:SetEntryRadiusOffset(${h.n},${l})`)})),i.sub("Line att"),i.addSizeMenu("width",1,10,1,h.attline.width,l=>{h.slice.fLineWidth=l,this.interactiveRedraw("pad",`exec:SetEntryLineWidth(${h.n},${l})`)}),h.attline.nocolor||i.addColorMenu("color",h.attline.color,l=>{h.slice.fLineColor=A(l).id,this.interactiveRedraw("pad",T(l,"SetEntryLineColor",h.n))}),i.addLineStyleMenu("style",h.attline.style,l=>{h.slice.fLineStyle=l,this.interactiveRedraw("pad",`exec:SetEntryLineStyle(${h.n},${l})`)}),i.endsub(),i.sub("Fill att"),i.addColorMenu("color",h.attfill.colorindx,l=>{h.slice.fFillColor=A(l).id,this.interactiveRedraw("pad",T(l,"SetEntryFillColor",h.n))},h.attfill.kind),i.addFillStyleMenu("style",h.attfill.pattern,h.attfill.colorindx,l=>{h.slice.fFillStyle=l,this.interactiveRedraw("pad",`exec:SetEntryFillStyle(${h.n},${l})`)}),i.endsub(),i.endsub())}static async draw(i,s,a){const f=new R(i,s,a);return f.decodeOptions(a),L(f,!1).then(()=>f.drawPie()).then(()=>f.drawTitle(!0)).then(()=>(v(f),I(f),f))}}export{R as TPiePainter};
@@ -1 +1 @@
1
- import{a7 as l,$ as f,a2 as x,cm as d,aK as g,a0 as m,a1 as u,a6 as y}from"./ndmvr-aframe-core-Cw91_9_Y.js";const o=x(14);class c extends l{#t;#s;#e;moveDrag(s,t){this.#t+=s,this.#s+=t,f(this.getG().select("path"),this.#t,this.#s)}moveEnd(s){if(s)return;const t=this.getObject(),i=this.getAxisToSvgFunc(this.#e);let a="";for(let e=0;e<=t.fLastPoint;++e){const r=this.svgToAxis("x",i.x(t.fX[e])+this.#t,this.#e),n=this.svgToAxis("y",i.y(t.fY[e])+this.#s,this.#e);t.fX[e]=r,t.fY[e]=n,a+=`SetPoint(${e},${r},${n});;`}this.submitCanvExec(a+"Notify();;"),this.redraw()}getUserRanges(){const s=this.getObject();if(s.TestBit(o)||!s.fLastPoint)return null;let i=s.fX[0],a=i,e=s.fY[0],r=e;for(let n=1;n<=s.fLastPoint;++n)i=Math.min(i,s.fX[n]),a=Math.max(a,s.fX[n]),e=Math.min(e,s.fY[n]),r=Math.max(r,s.fY[n]);return{minx:i,miny:e,maxx:a,maxy:r}}redraw(){const s=this.createG(),t=this.getObject(),i=t.TestBit(o),a=this.getDrawOpt()||t.fOption,e=t._typename===d&&g(a)&&a.toLowerCase().indexOf("f")>=0,r=this.getAxisToSvgFunc(i);this.createAttLine({attr:t}),this.createAttFill({attr:t,enable:e});let n="";for(let h=0;h<=t.fLastPoint;++h)n+=`${h>0?"L":"M"}${r.x(t.fX[h])},${r.y(t.fY[h])}`;return s.append("svg:path").attr("d",n+(e?"Z":"")).call(e?()=>{}:this.lineatt.func).call(this.fillatt.func),m(this),u(this),this.#t=this.#s=0,this.#e=i,this}static async draw(s,t,i){const a=new c(s,t,i);return y(a,!1).then(()=>a.redraw())}}export{c as TPolyLinePainter};
1
+ import{a7 as l,$ as f,a2 as x,cm as d,aK as g,a0 as m,a1 as u,a6 as y}from"./ndmvr-aframe-core-DEHQ38JB.js";const o=x(14);class c extends l{#t;#s;#e;moveDrag(s,t){this.#t+=s,this.#s+=t,f(this.getG().select("path"),this.#t,this.#s)}moveEnd(s){if(s)return;const t=this.getObject(),i=this.getAxisToSvgFunc(this.#e);let a="";for(let e=0;e<=t.fLastPoint;++e){const r=this.svgToAxis("x",i.x(t.fX[e])+this.#t,this.#e),n=this.svgToAxis("y",i.y(t.fY[e])+this.#s,this.#e);t.fX[e]=r,t.fY[e]=n,a+=`SetPoint(${e},${r},${n});;`}this.submitCanvExec(a+"Notify();;"),this.redraw()}getUserRanges(){const s=this.getObject();if(s.TestBit(o)||!s.fLastPoint)return null;let i=s.fX[0],a=i,e=s.fY[0],r=e;for(let n=1;n<=s.fLastPoint;++n)i=Math.min(i,s.fX[n]),a=Math.max(a,s.fX[n]),e=Math.min(e,s.fY[n]),r=Math.max(r,s.fY[n]);return{minx:i,miny:e,maxx:a,maxy:r}}redraw(){const s=this.createG(),t=this.getObject(),i=t.TestBit(o),a=this.getDrawOpt()||t.fOption,e=t._typename===d&&g(a)&&a.toLowerCase().indexOf("f")>=0,r=this.getAxisToSvgFunc(i);this.createAttLine({attr:t}),this.createAttFill({attr:t,enable:e});let n="";for(let h=0;h<=t.fLastPoint;++h)n+=`${h>0?"L":"M"}${r.x(t.fX[h])},${r.y(t.fY[h])}`;return s.append("svg:path").attr("d",n+(e?"Z":"")).call(e?()=>{}:this.lineatt.func).call(this.fillatt.func),m(this),u(this),this.#t=this.#s=0,this.#e=i,this}static async draw(s,t,i){const a=new c(s,t,i);return y(a,!1).then(()=>a.redraw())}}export{c as TPolyLinePainter};
@@ -1 +1 @@
1
- import{am as z,aA as d,aB as P}from"./ndmvr-aframe-core-Cw91_9_Y.js";async function M(){const e=this.$fp||this.getFramePainter();if(delete this.$fp,!z(e)||!e.grx||!e.gry||!e.grz)return this;const l=this.getObject(),x=5e4,i=l.fP;let r=1,n=0;for(let t=0;t<i.length;t+=3)i[t]<e.scale_xmin||i[t]>e.scale_xmax||i[t+1]<e.scale_ymin||i[t+1]>e.scale_ymax||i[t+2]<e.scale_zmin||i[t+2]>e.scale_zmax||++n;d.OptimizeDraw>0&&n>x&&(r=Math.max(2,Math.floor(n/x)));const f=Math.floor(n/r),o=new P(f,e.webgl,e.size_x3d/100),h=new Int32Array(f);let c=0,_=0;for(let t=0;t<i.length;t+=3)i[t]<e.scale_xmin||i[t]>e.scale_xmax||i[t+1]<e.scale_ymin||i[t+1]>e.scale_ymax||i[t+2]<e.scale_zmin||i[t+2]>e.scale_zmax||r>1&&(c=(c+1)%r,c)||(h[_++]=t,o.addPoint(e.grx(i[t]),e.gry(i[t+1]),e.grz(i[t+2])));return o.createPoints({color:this.getColor(l.fMarkerColor),style:l.fMarkerStyle}).then(t=>(t.tip_color=l.fMarkerColor===3?16711680:65280,t.tip_name=l.fName||"Poly3D",t.poly=l,t.fp=e,t.scale0=.7*o.scale,t.index=h,e.add3DMesh(t,this,!0),t.tooltip=function(m){let s=Math.floor(m.index/this.nvertex);if(s<0||s>=this.index.length)return null;s=this.index[s];const a=this.fp,y=a.grx(this.poly.fP[s]),p=a.gry(this.poly.fP[s+1]),g=a.grz(this.poly.fP[s+2]);return{x1:y-this.scale0,x2:y+this.scale0,y1:p-this.scale0,y2:p+this.scale0,z1:g-this.scale0,z2:g+this.scale0,color:this.tip_color,lines:[this.tip_name,"pnt: "+s/3,"x: "+a.axisAsText("x",this.poly.fP[s]),"y: "+a.axisAsText("y",this.poly.fP[s+1]),"z: "+a.axisAsText("z",this.poly.fP[s+2])]}},e.render3D(100),this))}export{M as d};
1
+ import{am as z,aA as d,aB as P}from"./ndmvr-aframe-core-DEHQ38JB.js";async function M(){const e=this.$fp||this.getFramePainter();if(delete this.$fp,!z(e)||!e.grx||!e.gry||!e.grz)return this;const l=this.getObject(),x=5e4,i=l.fP;let r=1,n=0;for(let t=0;t<i.length;t+=3)i[t]<e.scale_xmin||i[t]>e.scale_xmax||i[t+1]<e.scale_ymin||i[t+1]>e.scale_ymax||i[t+2]<e.scale_zmin||i[t+2]>e.scale_zmax||++n;d.OptimizeDraw>0&&n>x&&(r=Math.max(2,Math.floor(n/x)));const f=Math.floor(n/r),o=new P(f,e.webgl,e.size_x3d/100),h=new Int32Array(f);let c=0,_=0;for(let t=0;t<i.length;t+=3)i[t]<e.scale_xmin||i[t]>e.scale_xmax||i[t+1]<e.scale_ymin||i[t+1]>e.scale_ymax||i[t+2]<e.scale_zmin||i[t+2]>e.scale_zmax||r>1&&(c=(c+1)%r,c)||(h[_++]=t,o.addPoint(e.grx(i[t]),e.gry(i[t+1]),e.grz(i[t+2])));return o.createPoints({color:this.getColor(l.fMarkerColor),style:l.fMarkerStyle}).then(t=>(t.tip_color=l.fMarkerColor===3?16711680:65280,t.tip_name=l.fName||"Poly3D",t.poly=l,t.fp=e,t.scale0=.7*o.scale,t.index=h,e.add3DMesh(t,this,!0),t.tooltip=function(m){let s=Math.floor(m.index/this.nvertex);if(s<0||s>=this.index.length)return null;s=this.index[s];const a=this.fp,y=a.grx(this.poly.fP[s]),p=a.gry(this.poly.fP[s+1]),g=a.grz(this.poly.fP[s+2]);return{x1:y-this.scale0,x2:y+this.scale0,y1:p-this.scale0,y2:p+this.scale0,z1:g-this.scale0,z2:g+this.scale0,color:this.tip_color,lines:[this.tip_name,"pnt: "+s/3,"x: "+a.axisAsText("x",this.poly.fP[s]),"y: "+a.axisAsText("y",this.poly.fP[s+1]),"z: "+a.axisAsText("z",this.poly.fP[s+2])]}},e.render3D(100),this))}export{M as d};
@@ -1 +1 @@
1
- import{a7 as C,aN as h,a5 as F,s as X,aO as G,a6 as y}from"./ndmvr-aframe-core-Cw91_9_Y.js";import{TLinePainter as b}from"./TLinePainter-RinEQkrM.js";const T="upper_pad",g="lower_pad",k="top_pad";class x extends C{#t;setGridsRange(i,r,n,e,f){const a=this.getObject();if(i===r){const t=this.getPadPainter()?.findPainterFor(a.fLowerPad,g,h)?.getFramePainter()?.x_handle;if(!t)return;i===0?(i=t.full_min,r=t.full_max):(i=t.scale_min,r=t.scale_max)}a.fGridlines.forEach(t=>{t.fX1=i,t.fX2=r});const o=Math.min(a.fGridlines.length,a.fGridlinePositions.length);for(let t=0;t<o;++t){const d=a.fGridlinePositions[t],s=a.fGridlines[t];n!=="ignorey"&&(s.$do_not_draw=n!==e&&(d<n||d>e),s.fY1=s.fY2=d),f?.findPainterFor(s)?.redraw()}}configureInteractive(){const i=this.getObject(),r=this.getPadPainter(),n=r.findPainterFor(i.fUpperPad,T,h),e=n?.getFramePainter(),f=r.findPainterFor(i.fLowerPad,g,h),a=f?.getFramePainter();!n||!f||(f.forEachPainterInPad(o=>{F(o?.testEditable)&&o.testEditable(!1)}),this.setGridsRange(a.scale_xmin,a.scale_xmax,a.scale_ymin,a.scale_ymax,f),!(n._ratio_interactive&&f._ratio_interactive)&&(n._ratio_interactive=!0,f._ratio_interactive=!0,e.o_zoom=e.zoom,e._ratio_low_fp=a,e._ratio_painter=this,e.zoom=function(o,t,d,s,_,l){return this.o_zoom(o,t,d,s,_,l).then(u=>(this._ratio_painter.setGridsRange(e.scale_xmin,e.scale_xmax,"ignory"),this._ratio_low_fp.o_zoom(e.scale_xmin,e.scale_xmax).then(()=>u)))},e.o_sizeChanged=e.sizeChanged,e.sizeChanged=function(){this.o_sizeChanged(),this._ratio_low_fp.fX1NDC=this.fX1NDC,this._ratio_low_fp.fX2NDC=this.fX2NDC,this._ratio_low_fp.o_sizeChanged()},a.o_zoom=a.zoom,a._ratio_up_fp=e,a._ratio_painter=this,a.zoom=function(o,t,d,s,_,l){return o===t?(o=e.xmin,t=e.xmax):(o=Math.min(o,e.xmin),t=Math.max(t,e.xmax)),this._ratio_painter.setGridsRange(o,t,d,s),this._ratio_up_fp.o_zoom(o,t).then(()=>this.o_zoom(o,t,d,s,_,l))},a.o_sizeChanged=a.sizeChanged,a.sizeChanged=function(){this.o_sizeChanged(),this._ratio_up_fp.fX1NDC=this.fX1NDC,this._ratio_up_fp.fX2NDC=this.fX2NDC,this._ratio_up_fp.o_sizeChanged()}))}async redrawOld(){const i=this.getObject(),r=this.getPadPainter(),n=r.findPainterFor(i.fTopPad,k,h),e=r.getRootPad(),f=e.fFrameFillStyle===0?1:0,a=e.fTickx||f,o=e.fTicky||f;n?.disablePadDrawing();const t=r.findPainterFor(i.fUpperPad,T,h),d=t?.getMainPainter(),s=t?.getFramePainter(),_=r.findPainterFor(i.fLowerPad,g,h),l=_?.getMainPainter(),u=_?.getFramePainter();let w=Promise.resolve(!0);if(t&&d&&s&&u&&!t._ratio_configured){t._ratio_configured=!0,d.options.Axis=0;const c=d.getHisto();c.fYaxis.$use_top_pad=!0,c.fXaxis.fLabelSize=0,c.fXaxis.fTitle="",t.getRootPad().fTickx=a,t.getRootPad().fTicky=o,w=t.redrawPad()}return w.then(()=>{if(!_||!l||!u||!s||_._ratio_configured)return this;_._ratio_configured=!0,l.options.Axis=0;const c=l.getHisto();c.fXaxis.fTitle="x",c.fXaxis.$use_top_pad=!0,c.fYaxis.$use_top_pad=!0,_.getRootPad().fTickx=a,_.getRootPad().fTicky=o;const m=[];return i.fGridlinePositions.length&&i.fGridlines.length<i.fGridlinePositions.length&&i.fGridlinePositions.forEach(P=>{let z=!1;if(i.fGridlines.forEach(p=>{p.fY1===p.fY2&&Math.abs(p.fY1-P)<1e-6&&(z=!0)}),!z){const p=X(G);p.fX1=s.scale_xmin,p.fX2=s.scale_xmax,p.fY1=p.fY2=P,p.fLineStyle=2,i.fGridlines.push(p),m.push(b.draw(_,p))}}),Promise.all(m).then(()=>u.zoomSingle("x",s.scale_xmin,s.scale_xmax)).then(P=>P?!0:_.redrawPad()).then(()=>this)})}async redraw(){const i=this.getObject(),r=this.getPadPainter();if(this.#t===void 0&&(this.#t=!!r.findPainterFor(i.fTopPad,k,h)),r.$userInteractive=()=>this.configureInteractive(),this.#t)return this.redrawOld();const n=r.getRootPad(),e=n.fFrameFillStyle===0?1:0,f=n.fTickx||e,a=n.fTicky||e;return i.fTopPad.$disable_drawing=!0,i.fUpperPad.$ratio_pad="up",i.fUpperPad.fTickx=f,i.fUpperPad.fTicky=a,i.fLowerPad.$ratio_pad="low",i.fLowerPad.fTickx=f,i.fLowerPad.fTicky=a,this}static async draw(i,r,n){const e=new x(i,r,n);return y(e,!1).then(()=>e.redraw())}}export{x as TRatioPlotPainter};
1
+ import{a7 as C,aN as h,a5 as F,s as X,aO as G,a6 as y}from"./ndmvr-aframe-core-DEHQ38JB.js";import{TLinePainter as b}from"./TLinePainter-D8inyuoX.js";const T="upper_pad",g="lower_pad",k="top_pad";class x extends C{#t;setGridsRange(i,r,n,e,f){const a=this.getObject();if(i===r){const t=this.getPadPainter()?.findPainterFor(a.fLowerPad,g,h)?.getFramePainter()?.x_handle;if(!t)return;i===0?(i=t.full_min,r=t.full_max):(i=t.scale_min,r=t.scale_max)}a.fGridlines.forEach(t=>{t.fX1=i,t.fX2=r});const o=Math.min(a.fGridlines.length,a.fGridlinePositions.length);for(let t=0;t<o;++t){const d=a.fGridlinePositions[t],s=a.fGridlines[t];n!=="ignorey"&&(s.$do_not_draw=n!==e&&(d<n||d>e),s.fY1=s.fY2=d),f?.findPainterFor(s)?.redraw()}}configureInteractive(){const i=this.getObject(),r=this.getPadPainter(),n=r.findPainterFor(i.fUpperPad,T,h),e=n?.getFramePainter(),f=r.findPainterFor(i.fLowerPad,g,h),a=f?.getFramePainter();!n||!f||(f.forEachPainterInPad(o=>{F(o?.testEditable)&&o.testEditable(!1)}),this.setGridsRange(a.scale_xmin,a.scale_xmax,a.scale_ymin,a.scale_ymax,f),!(n._ratio_interactive&&f._ratio_interactive)&&(n._ratio_interactive=!0,f._ratio_interactive=!0,e.o_zoom=e.zoom,e._ratio_low_fp=a,e._ratio_painter=this,e.zoom=function(o,t,d,s,_,l){return this.o_zoom(o,t,d,s,_,l).then(u=>(this._ratio_painter.setGridsRange(e.scale_xmin,e.scale_xmax,"ignory"),this._ratio_low_fp.o_zoom(e.scale_xmin,e.scale_xmax).then(()=>u)))},e.o_sizeChanged=e.sizeChanged,e.sizeChanged=function(){this.o_sizeChanged(),this._ratio_low_fp.fX1NDC=this.fX1NDC,this._ratio_low_fp.fX2NDC=this.fX2NDC,this._ratio_low_fp.o_sizeChanged()},a.o_zoom=a.zoom,a._ratio_up_fp=e,a._ratio_painter=this,a.zoom=function(o,t,d,s,_,l){return o===t?(o=e.xmin,t=e.xmax):(o=Math.min(o,e.xmin),t=Math.max(t,e.xmax)),this._ratio_painter.setGridsRange(o,t,d,s),this._ratio_up_fp.o_zoom(o,t).then(()=>this.o_zoom(o,t,d,s,_,l))},a.o_sizeChanged=a.sizeChanged,a.sizeChanged=function(){this.o_sizeChanged(),this._ratio_up_fp.fX1NDC=this.fX1NDC,this._ratio_up_fp.fX2NDC=this.fX2NDC,this._ratio_up_fp.o_sizeChanged()}))}async redrawOld(){const i=this.getObject(),r=this.getPadPainter(),n=r.findPainterFor(i.fTopPad,k,h),e=r.getRootPad(),f=e.fFrameFillStyle===0?1:0,a=e.fTickx||f,o=e.fTicky||f;n?.disablePadDrawing();const t=r.findPainterFor(i.fUpperPad,T,h),d=t?.getMainPainter(),s=t?.getFramePainter(),_=r.findPainterFor(i.fLowerPad,g,h),l=_?.getMainPainter(),u=_?.getFramePainter();let w=Promise.resolve(!0);if(t&&d&&s&&u&&!t._ratio_configured){t._ratio_configured=!0,d.options.Axis=0;const c=d.getHisto();c.fYaxis.$use_top_pad=!0,c.fXaxis.fLabelSize=0,c.fXaxis.fTitle="",t.getRootPad().fTickx=a,t.getRootPad().fTicky=o,w=t.redrawPad()}return w.then(()=>{if(!_||!l||!u||!s||_._ratio_configured)return this;_._ratio_configured=!0,l.options.Axis=0;const c=l.getHisto();c.fXaxis.fTitle="x",c.fXaxis.$use_top_pad=!0,c.fYaxis.$use_top_pad=!0,_.getRootPad().fTickx=a,_.getRootPad().fTicky=o;const m=[];return i.fGridlinePositions.length&&i.fGridlines.length<i.fGridlinePositions.length&&i.fGridlinePositions.forEach(P=>{let z=!1;if(i.fGridlines.forEach(p=>{p.fY1===p.fY2&&Math.abs(p.fY1-P)<1e-6&&(z=!0)}),!z){const p=X(G);p.fX1=s.scale_xmin,p.fX2=s.scale_xmax,p.fY1=p.fY2=P,p.fLineStyle=2,i.fGridlines.push(p),m.push(b.draw(_,p))}}),Promise.all(m).then(()=>u.zoomSingle("x",s.scale_xmin,s.scale_xmax)).then(P=>P?!0:_.redrawPad()).then(()=>this)})}async redraw(){const i=this.getObject(),r=this.getPadPainter();if(this.#t===void 0&&(this.#t=!!r.findPainterFor(i.fTopPad,k,h)),r.$userInteractive=()=>this.configureInteractive(),this.#t)return this.redrawOld();const n=r.getRootPad(),e=n.fFrameFillStyle===0?1:0,f=n.fTickx||e,a=n.fTicky||e;return i.fTopPad.$disable_drawing=!0,i.fUpperPad.$ratio_pad="up",i.fUpperPad.fTickx=f,i.fUpperPad.fTicky=a,i.fLowerPad.$ratio_pad="low",i.fLowerPad.fTickx=f,i.fLowerPad.fTicky=a,this}static async draw(i,r,n){const e=new x(i,r,n);return y(e,!1).then(()=>e.redraw())}}export{x as TRatioPlotPainter};
@@ -1 +1 @@
1
- import{aC as u,s as _,a5 as P,aL as y,ad as c,aM as H}from"./ndmvr-aframe-core-Cw91_9_Y.js";import{TGraphPainter as z}from"./TGraphPainter-DLkx_1ES.js";import{H as N}from"./THistPainter-Df-RmCQH.js";import{T as G}from"./TH2Painter-DHaL_lR_.js";import"./TH1Painter--tuoUZTH.js";import"./func-C1jNXIub.js";import"./TPavePainter-Dx40jhkF.js";class M extends z{#e;#t;cleanup(){this.clearHistPalette(),this.#t=void 0,super.cleanup()}getGraph(){return this.getObject()?.fGraph}getContour(){return this.#t}isScatter(){return!0}getHistRangeMargin(){return this.getObject()?.fMargin??.1}async drawAxisHisto(){const e=this.isDummyHistogram("x"),i=this.isDummyHistogram("y"),t=this.createHistogram(e,i);return G.draw(this.getDrawDom(),t,this.getOptions().Axis+";IGNORE_PALETTE")}getPalette(){const e=this.getGraph();let i=e?.fFunctions?.arr?.find(t=>t._typename===u);if(!i&&e){i=_(u);const t=this.get_fp();Object.assign(i,{fX1NDC:t.fX2NDC+.005,fX2NDC:t.fX2NDC+.05,fY1NDC:t.fY1NDC,fY2NDC:t.fY2NDC,fInit:1,$can_move:!0}),Object.assign(i.fAxis,{fChopt:"+",fLineColor:1,fLineSyle:1,fLineWidth:1,fTextAngle:0,fTextAlign:11,fNdiv:510}),e.fFunctions.AddFirst(i,"")}return i}_updateMembers(e,i){return e.fBits=i.fBits,e.fTitle=i.fTitle,e.fNpoints=i.fNpoints,e.fColor=i.fColor,e.fSize=i.fSize,e.fMargin=i.fMargin,e.fMinMarkerSize=i.fMinMarkerSize,e.fMaxMarkerSize=i.fMaxMarkerSize,super._updateMembers(e.fGraph,i.fGraph)}getZaxis(){return this.getHistogram()?.fZaxis}canZoomInside(e,i,t){if(e!=="z")return super.canZoomInside(e,i,t);const n=this.#t?.getLevels();if(!n)return!1;for(let o=0;o<n.length-1;++o)if(i<=n[o]&&t>=n[o+1])return!0;return!1}getHistPalette(e){let i=e?null:this.#e;if(i)return i;const t=this.getPadPainter();return P(t?.getCustomPalette)&&(i=t.getCustomPalette()),i||(i=y(this.getOptions().Palette,t?.isGrayscale())),this.#e=i,i}clearHistPalette(){this.#e=void 0}async drawGraph(){const e=this.get_fp(),i=this.getMainPainter(),t=this.getObject(),n=this.getHistogram();let o=1,l=0,m;if(!e||!i||!t)return;if(t.fColor){const a=this.getPalette();a&&(a.$main_painter=this),m=this.getHistPalette();let r=t.fColor[0],s=t.fColor[0];for(let f=1;f<t.fColor.length;++f)r=Math.min(r,t.fColor[f]),s=Math.max(s,t.fColor[f]);s<=r?s=r<0?.9*r:r>0?1.1*r:1:r>0&&r<.3*s&&(r=0),this.#t=new N(r,s),this.#t.createNormal(30),this.#t.configIndicies(0,0),e.zmin=r,e.zmax=s,!e.zoomChangedInteractive("z")&&n&&n.fMinimum!==c&&n.fMaximum!==c&&(e.zoom_zmin=n.fMinimum,e.zoom_zmax=n.fMaximum)}if(t.fSize){let a=t.fSize[0],r=t.fSize[0];for(let s=1;s<t.fSize.length;++s)a=Math.min(a,t.fSize[s]),r=Math.max(r,t.fSize[s]);r<=a&&(r=a<0?.9*a:a>0?1.1*a:1),o=(t.fMaxMarkerSize-t.fMinMarkerSize)/(r-a),l=a}const C=this.createG(!e.pad_layer),h=e.getGrFuncs(),d=e.zoom_zmin!==e.zoom_zmax&&t.fColor,g=this._getBins();for(let a=0;a<g.length;++a){if(d&&(t.fColor[a]<e.zoom_zmin||t.fColor[a]>e.zoom_zmax))continue;const r=g[a],s=h.grx(r.x),f=h.gry(r.y),x=t.fSize?t.fMinMarkerSize+o*(t.fSize[a]-l):t.fMarkerSize,S=t.fColor?this.#t.getPaletteColor(m,t.fColor[a]):this.getColor(t.fMarkerColor),p=new H({color:S,size:x,style:t.fMarkerStyle});C.append("svg:path").attr("d",p.create(s,f)).call(p.func)}return this}static async draw(e,i,t){return z._drawGraph(new M(e,i),t)}}export{M as TScatterPainter};
1
+ import{aC as u,s as _,a5 as P,aL as y,ad as c,aM as H}from"./ndmvr-aframe-core-DEHQ38JB.js";import{TGraphPainter as z}from"./TGraphPainter-Bp7xEbQz.js";import{H as N}from"./THistPainter-B2S5BnuY.js";import{T as G}from"./TH2Painter-BpixRP4j.js";import"./TH1Painter-DyN-WKyv.js";import"./func-C6FX2eN2.js";import"./TPavePainter-1yngbgp8.js";class M extends z{#e;#t;cleanup(){this.clearHistPalette(),this.#t=void 0,super.cleanup()}getGraph(){return this.getObject()?.fGraph}getContour(){return this.#t}isScatter(){return!0}getHistRangeMargin(){return this.getObject()?.fMargin??.1}async drawAxisHisto(){const e=this.isDummyHistogram("x"),i=this.isDummyHistogram("y"),t=this.createHistogram(e,i);return G.draw(this.getDrawDom(),t,this.getOptions().Axis+";IGNORE_PALETTE")}getPalette(){const e=this.getGraph();let i=e?.fFunctions?.arr?.find(t=>t._typename===u);if(!i&&e){i=_(u);const t=this.get_fp();Object.assign(i,{fX1NDC:t.fX2NDC+.005,fX2NDC:t.fX2NDC+.05,fY1NDC:t.fY1NDC,fY2NDC:t.fY2NDC,fInit:1,$can_move:!0}),Object.assign(i.fAxis,{fChopt:"+",fLineColor:1,fLineSyle:1,fLineWidth:1,fTextAngle:0,fTextAlign:11,fNdiv:510}),e.fFunctions.AddFirst(i,"")}return i}_updateMembers(e,i){return e.fBits=i.fBits,e.fTitle=i.fTitle,e.fNpoints=i.fNpoints,e.fColor=i.fColor,e.fSize=i.fSize,e.fMargin=i.fMargin,e.fMinMarkerSize=i.fMinMarkerSize,e.fMaxMarkerSize=i.fMaxMarkerSize,super._updateMembers(e.fGraph,i.fGraph)}getZaxis(){return this.getHistogram()?.fZaxis}canZoomInside(e,i,t){if(e!=="z")return super.canZoomInside(e,i,t);const n=this.#t?.getLevels();if(!n)return!1;for(let o=0;o<n.length-1;++o)if(i<=n[o]&&t>=n[o+1])return!0;return!1}getHistPalette(e){let i=e?null:this.#e;if(i)return i;const t=this.getPadPainter();return P(t?.getCustomPalette)&&(i=t.getCustomPalette()),i||(i=y(this.getOptions().Palette,t?.isGrayscale())),this.#e=i,i}clearHistPalette(){this.#e=void 0}async drawGraph(){const e=this.get_fp(),i=this.getMainPainter(),t=this.getObject(),n=this.getHistogram();let o=1,l=0,m;if(!e||!i||!t)return;if(t.fColor){const a=this.getPalette();a&&(a.$main_painter=this),m=this.getHistPalette();let r=t.fColor[0],s=t.fColor[0];for(let f=1;f<t.fColor.length;++f)r=Math.min(r,t.fColor[f]),s=Math.max(s,t.fColor[f]);s<=r?s=r<0?.9*r:r>0?1.1*r:1:r>0&&r<.3*s&&(r=0),this.#t=new N(r,s),this.#t.createNormal(30),this.#t.configIndicies(0,0),e.zmin=r,e.zmax=s,!e.zoomChangedInteractive("z")&&n&&n.fMinimum!==c&&n.fMaximum!==c&&(e.zoom_zmin=n.fMinimum,e.zoom_zmax=n.fMaximum)}if(t.fSize){let a=t.fSize[0],r=t.fSize[0];for(let s=1;s<t.fSize.length;++s)a=Math.min(a,t.fSize[s]),r=Math.max(r,t.fSize[s]);r<=a&&(r=a<0?.9*a:a>0?1.1*a:1),o=(t.fMaxMarkerSize-t.fMinMarkerSize)/(r-a),l=a}const C=this.createG(!e.pad_layer),h=e.getGrFuncs(),d=e.zoom_zmin!==e.zoom_zmax&&t.fColor,g=this._getBins();for(let a=0;a<g.length;++a){if(d&&(t.fColor[a]<e.zoom_zmin||t.fColor[a]>e.zoom_zmax))continue;const r=g[a],s=h.grx(r.x),f=h.gry(r.y),x=t.fSize?t.fMinMarkerSize+o*(t.fSize[a]-l):t.fMarkerSize,S=t.fColor?this.#t.getPaletteColor(m,t.fColor[a]):this.getColor(t.fMarkerColor),p=new H({color:S,size:x,style:t.fMarkerStyle});C.append("svg:path").attr("d",p.create(s,f)).call(p.func)}return this}static async draw(e,i,t){return z._drawGraph(new M(e,i),t)}}export{M as TScatterPainter};