-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplotSvgMin.js
More file actions
1 lines (1 loc) · 15.2 KB
/
plotSvgMin.js
File metadata and controls
1 lines (1 loc) · 15.2 KB
1
{const a="Sans,Arial",b=2,c=1,d=12,f=10,g="Lucida Sans Typewriter,Courier",h=30,i=4,j=400,k=4,l=24,m=12,n=[10,10],o=[10,10],p=8,q=p/2,r=[1,2,5,10],s=["#0072BE","#DA5319","#EEB220","#7E2F8E","#77AD30","#4CBFEF","#A3142F"],t="http://www.w3.org/2000/svg",u=Math.round,v=Math.floor,w=Math.log10,x=Math.ceil,y=Array,z=y.isArray,A=1/0,B=document,C=null,D="none";function plotSvg(F,_,de,V,{color="",title="",subtitle="",xlabel="",ylabel="",xlim=[],ylim=[],style="-",marker="",legend={names:[],x:0,y:0,anchor:["right","top"],ref:["out","in"],boxed:1,fill:D},xScale="lin",yScale="lin",grid=!0,gridMinor=[],xtick=[],ytick=[],xticklbl=[],yticklbl=[],xtickangle=0,ytickangle=0,linTip=!0,buttons:he=[],add=[]}={}){const N=(e,t,r)=>e.setAttribute(t,r),L=(e,r,i)=>{var o,l="string"==typeof r?B.createElementNS(t,r):r;for(o in i)N(l,o,i[o]);return e!=C&&e.appendChild(l),l},E=(e,t,r,i,o,l=D,s=D,a=2,n=0)=>L(e,"rect",{x:t,y:r,width:i,height:o,rx:n,stroke:s,"stroke-width":a,fill:l,"vector-effect":"non-scaling-stroke"}),T=(e,t,r,i,o,l="middle",s=a,n="#000")=>{e=L(e,"text",{x:r,y:i,fill:n,"font-size":o,"text-anchor":l,"font-family":s,"stroke-width":1});return e.append(B.createTextNode(t)),e},M=(e,t,r,i,o,l="#000",s="",a=1)=>L(e,"line",{x1:t,y1:r,x2:i,y2:o,stroke:l,"stroke-width":a,"stroke-dasharray":s,"vector-effect":"non-scaling-stroke"}),ve=(e,t="",r="#000",i="",o=2)=>L(e,"polyline",{points:t,fill:D,stroke:r,"stroke-width":o,"stroke-dasharray":i,"vector-effect":"non-scaling-stroke"}),S=e=>B.getElementById(e),ge=(e,t)=>e.getAttribute(t),Y=e=>e.length,R=e=>{e=e.getBBox();return[e.x,e.y,e.width,e.height]},H=e=>[e.x.baseVal.value,e.y.baseVal.value,e.width.baseVal.value,e.height.baseVal.value],U=(e,t)=>L(C,e,{x:t[0],y:t[1],width:t[2],height:t[3]}),X=e=>[e.viewBox.baseVal.x,e.viewBox.baseVal.y,e.viewBox.baseVal.width,e.viewBox.baseVal.height],I=(e,t,r)=>{t=t!=C?"translate("+t[0]+" "+t[1]+")":"";t+=r!=C?"scale("+r[0]+" "+r[1]+")":"",N(e,"transform",t)},ye=e=>B.getElementsByClassName(e+"_"+F),me=S(F),O=B.createElement("div"),G=(L(me,O),N(O,"style","width:100%;height:100%;min-width:"+j+"px;min-height:200px;overflow:none"),L(O,"svg",{id:"s_"+F,width:"100%",height:"100%"})),K=H(G),P=(G.innerHTML+="<style>\n<![CDATA[\n.b:hover polyline{\nopacity:0.5;\n}\n]]>\n</style>\n",gridMinor),W=legend,ue=W.anchor,xe=W.ref,Z=L(C,"g",{"pointer-events":"visible",class:ue[0]+"_"+F+" "+ue[1]+"_"+F});Z.onclick=e=>Je(e,0),Z.ondblclick=e=>Je(e,V);let J=C,pe=C;if(0<Y(W.names)&&0<V&&0<Y(_)){J=L(Z,"svg",{id:"sl_"+F}),pe=L(J,"defs");let e=V,r=W.names;Y(r)>V&&(r=r.slice(0,e));for(let t=0;t<e;++t){const vt=t*(f+i)+f/2,gt=L(J,"g",{id:"lgi_"+F+"_"+t});let e="";t<Y(r)&&(e=r[t]),T(gt,e,2*i+h,vt+.35*f,f,"start",g,"#000"),ve(gt,"0,"+vt+" "+h/2+","+vt+" "+h+","+vt)}}const be=title.split("\n"),ke=subtitle.split("\n"),Q=L(G,"svg",{id:"st_"+F,overflow:"visible"});let $=0;if(0<Y(title))for(let e=0;e<Y(be);++e)$+=l+k,T(Q,be[e],"50%",$,l);if(0<Y(subtitle))for(let e=0;e<Y(ke);++e)$+=m+k,T(Q,ke[e],"50%",$,m);$+=k;const we=L(G,"g"),_e=L(we,"svg",{id:"s_btm_"+F,overflow:"visible"});if(0<Y(xlabel)){const text=T(_e,xlabel,"50%","100%",d);I(text,[0,-d/2])}const Be=L(G,"svg",{id:"sy_"+F,overflow:"visible"});if(0<Y(ylabel)){const text=T(Be,ylabel,"100%","50%",d);L(C,text,{"writing-mode":"vertical-rl","transform-origin":"center"}),I(text,[d,0],[-1,-1])}const Ve=L(G,"svg",{id:"s_bg_"+F,preserveAspectRatio:D,viewBox:"0 0 100 100"}),ee=L(G,"svg",{id:"sd_"+F,preserveAspectRatio:D,viewBox:"0 0 100 100"});ee.style.cursor="crosshair";let te=[!1,!1],Ne=[],Ee=[],re=[],ie=[],oe=[],le=[],se=[],Ae=[],ae=[],Fe=C,De=C;function Le(){ee.innerHTML="",N(ee,"viewBox","0 0 100 100"),Fe=L(ee,"defs"),""!=marker&&(fe("o",[L(C,"circle",{r:"5"})],1),fe("+",[M(C,0,-5,0,5,"","",""),M(C,-5,0,5,0,"","","")]),fe("*",[M(C,0,-5,0,5,"","",""),M(C,-5,0,5,0,"","",""),M(C,-3.5,-3.5,3.5,3.5,"","",""),M(C,-3.5,3.5,3.5,-3.5,"","","")]),fe(".",[L(C,"circle",{r:"1.5","stroke-width":3})]),fe("x",[M(C,-3.5,-3.5,3.5,3.5,"","",""),M(C,-3.5,3.5,3.5,-3.5,"","","")]),fe("_",[M(C,-5,0,5,0,"","","")]),fe("|",[M(C,0,-5,0,5,"","","")]),fe("sq",[E(C,-5,-5,10,10,"","","")],1),fe("^",[L(C,"polygon",{points:"-5 3, 0 -5, 5 3"})],1),fe("v",[L(C,"polygon",{points:"-5 -3, 0 5, 5 -3"})],1),fe("tr",[L(C,"polygon",{points:"-3 -5, 5 0, -3 5"})],1),fe("tl",[L(C,"polygon",{points:"-5 0, 3 5, 3 -5"})],1)),te=[!1,!1],Ne=_,Ee=de,re=xlim,ie=ylim,oe=xtick,le=ytick,"log"==xScale&&(Ne=_.map(w),1<Y(re)&&(re=re.map(w),isNaN(re[0])||isNaN(re[1])?re=[]:(re[0]=re[0]==-A?0:re[0],re[1]=re[1]==-A?0:re[1])),0<Y(oe)&&(oe=oe.map(w)),te[0]=!0),"log"==yScale&&(Ee=de.map(w),1<Y(ie)&&(ie=ie.map(w),isNaN(ie[0])||isNaN(ie[1])?ie=[]:(ie[0]=ie[0]==-A?0:ie[0],ie[1]=ie[1]==-A?0:ie[1])),0<Y(le)&&(le=le.map(w)),te[1]=!0);var e=Pe(Ne,re),t=Pe(Ee,ie),r=(ae=[e[0],t[0],e[1]-e[0],t[1]-t[0]],Y(P)<1?(se[0]="log"==xScale,se[1]="log"==yScale):1<Y(P)?(se[0]=P[0],se[1]=P[1]):(se[0]=P,se[1]=P),at(ae[2],n[0],te[0])),i=at(ae[3],n[1],te[1]),o=[0==Y(oe),0==Y(le)],l=(Ae=[(te[0]||se[0])&&o[0],(te[1]||se[1])&&o[1]],se=[se[0]&&o[0],se[1]&&o[1]],Y(re)<1&&4<=ae[2]/r&&(ae[0]=v(e[0]/r)*r,ae[2]=x(e[1]/r)*r-ae[0]),Y(ie)<1&&4<=ae[3]/i&&(ae[1]=v(t[0]/i)*i,ae[3]=x(t[1]/i)*i-ae[1]),axLblBb=st(ae),Y(de)/V),a=Y(_)==Y(de);if(!a&&l!=Y(_))throw new Error("Dimension must agree");var c=L(ee,"g",{id:"gp_"+F});for(let o=0;o<V;++o){var f=o%Y(s),d=z(style)?style[o]:style,h="url(#m"+(z(marker)?marker[o]:marker)+"_"+F+")",g=z(color)?o<Y(color)?color[o]:"":color,y=""==g?s[f]:g;let t="",r=2;switch(d){case":":t="2 3";break;case"--":t="12 6";break;case"-.":t="0 1.5 9 3 3 2.5";break;case"*":r=0}var f=J!=C&&.3==J.childNodes[o+1].style.opacity,m=L(c,"g",{id:"pl_"+F+"_"+o});m.style.display=f?D:"block";let i=C;J!=C&&(g="url(#ml"+(z(marker)?marker[o]:marker)+"_"+F+")",L(C,J.childNodes[o+1].childNodes[1],{"stroke-dasharray":t,"marker-mid":g,"stroke-width":r,stroke:y}));for(let e=0;e<l;++e){var u=a?Ne[o*l+e]:Ne[e],p=Ee[o*l+e],b=ee.createSVGPoint();isFinite(u)&&isFinite(p)?(i==C&&(i=ve(m,"",y,t,r),L(C,i,{"marker-start":h,"marker-mid":h,"marker-end":h,"stroke-width":r})),b.x=100*(u-ae[0])/ae[2],b.y=100-100*(p-ae[1])/ae[3],i.points.appendItem(b)):i=C}}De=E(ee,0,0,"100%","100%",D,"#000"),L(C,De,{id:"plr_"+F,"pointer-events":"visible"}),De.onclick=e=>rt(e)}Le();let Te=0,Me=0,Ce=0,ne=C,Se=C;const ze=axLblBb[1][2]+.5*d+1.5*d*(0<Y(ylabel))+k,Ye=axLblBb[0][3]+k+(1.5*d+k)*(0<Y(xlabel)),Re=K[3]-Ye-$,He=K[2]-ze-2*d,ce=[ze,$,He,Re],Ue=-K[3]+ce[1]+ce[3],Xe=1+2*W.boxed*i+2*W.y;if(J!=C){ne=Ke(Z,W);const yt=Re-Xe,mt=ne[3]>yt,ut=ne[2]>j?j:ne[2],xt=mt?yt:ne[3];L(C,J,{width:ut,height:xt,viewBox:"0 0 "+ut+" "+xt}),Se=Z.childNodes[0],Se.height.baseVal.value=xt+2*(W.boxed&&mt)*i,"out"==xe[0]&&("left"==ue[0]?(ce[0]+=ne[0]+ne[2]+i,Te+=ne[0]+ne[2]+i):ce[2]=ne[0]-ze-i),"out"==xe[1]&&(ce[3]-=ne[3],"top"==ue[1]?(ce[1]+=ne[3],Ce+=ne[3]):Me-=ne[3])}add.forEach(e=>Ke(e.group,e)),U(Ve,ce),U(ee,ce),U(Be,[Te,ce[1],ze,ce[3]]),U(_e,[0,K[3]+Me,ce[2],Ye]),U(Q,[ce[0],Ce,ce[2],$]),I(we,[ce[0],Ue]);const Ie=[K[2]-ce[2],K[3]-ce[3]],Oe=L(Q,"g",{id:"b_"+F,cursor:"pointer"}),je=(I(Oe,[0,ce[1]]),L(Oe,"g",{"stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round",class:"b right_"+F,"pointer-events":"visible"}));I(je,[ce[2]-18,-24]),ve(je,"8,0 8,16 2,9 8,16 14,9"),ve(je,"0,17 0,20 16,20 16,17"),E(je,0,0,21,21),je.onclick=()=>{We()};let Ge=0;function Ke(t,r){L(G,t);var o=R(t);let l=r.x,s=r.y;var a,n=r.anchor;return!r.boxed&&e.fill==D||(l+=i,s+=i,a=r.boxed?"#000":D,a=E(C,-i+o[0],-i+o[1],o[2]+2*i,o[3]+2*i,r.fill,a,1),t.insertBefore(a,t.firstChild)),l="in"==r.ref[0]?"right"==n[0]?ce[0]+ce[2]-l-o[2]:l+ce[0]:"right"==n[0]?K[2]-l-o[2]:l,s="in"==r.ref[1]?"bottom"==n[1]?ce[1]+ce[3]-s-o[3]:s+ce[1]:"bottom"==n[1]?K[3]-s-o[3]:s,l-=o[0]-.5,s-=o[1]-.5,N(t,"class",n[0]+"_"+F+" "+n[1]+"_"+F),I(t,[l,s]),(o=R(t))[0]+=l,o[1]+=s,o}function Pe(i,o){if(Y(o)<2){let e=Y(i),t=-A,r=A;for(;e--;)isFinite(i[e])&&(r=i[e]<r?i[e]:r,t=i[e]>t?i[e]:t);o=[r,t]}return o[0]==o[1]&&(o[0]=o[0]-.5,o[1]=o[1]+.5),o}function qe(t){const e=L(Oe,"g",{"pointer-events":"visible"}),r=L(e,"title"),i=E(e,0,-14,0,18,D),o=T(e,t.text,3,-1,12,"start",a,"grey"),l=R(o)[2]+6;let s=eval(t.init);function n(e){L(C,i,{stroke:e?"#73AFD7":"#A0A0A0","stroke-width":e?2.5:1.5}),N(o,"fill",e?"#000":"grey")}return r.append(B.createTextNode(t.hover)),L(C,i,{width:l,rx:3}),n(s),I(e,[Ge,-8]),e.onclick=()=>{if(s=!s,n(s),t.callback!=C)for(var e in attrs=t.callback(s),attrs)eval(e+"="+attrs[e]);t.redraw&&(Le(),Qe())},Ge+=l+5,e}function fe(e,t,r=0){var marker=L(Fe,"marker",{id:"m"+e+"_"+F,markerWidth:"10",markerHeight:"10",refX:"5",refY:"5",markerUnits:"userSpaceOnUse",fill:D,stroke:"context-stroke"});const i=L(marker,"g",{"stroke-width":1.5,"vector-effect":"non-scaling-stroke",class:"marker_"+F});I(i,[5,5],[1,1]),t.forEach(e=>L(i,e));t=L(pe,marker.cloneNode(!0),{id:"ml"+e+"_"+F});N(t.childNodes[0],"class",""),r&&L(Fe,marker.cloneNode(!0),{id:"mf"+e+"_"+F,fill:"context-stroke"})}function We(){Oe.style.display=D,ee.style.cursor="auto";var e=H(G),e='<svg width="'+e[2]+'" height="'+e[3]+'" xmlns="'+t+'">',e=new Blob([e,G.innerHTML,"</svg>"],{type:"image/svg+xml;charset=utf-8"}),e=URL.createObjectURL(e),r=B.createElement("a");r.href=e,r.download="snapshot_"+title+".svg",L(B.body,r),r.click(),r.remove(),Oe.style.display="block",ee.style.cursor="crosshair"}function Ze(e,t,r=0){var i=S("gpl_"+e+"_"+t),o=r?"block":D;S("pl_"+e+"_"+t).style.display=o,S("lgi_"+e+"_"+t).style.opacity=.3+.7*r,i!=C&&(i.style.display=o)}function Je(e,t){var r=Z.transform.baseVal[0].matrix.f,e=e.offsetY-r+X(J)[1],o=v(e/(f+i)),r=S("pl_"+F+"_"+o);if(r!=C){var l=r.style.display!=D,s=0==t?o+1:t;for(let e=0==t?o:0;e<s;++e)l?e==o&&0!=t||Ze(F,e):Ze(F,e,1)}}function Qe(){var e=H(G),t=H(ee),r=e[2]-Ie[0],o=e[3]-Ie[1],e=ye("right"),l=ye("bottom");if(t[2]!=r){N(ee,"width",r),N(Ve,"width",r),N(Q,"width",r),N(_e,"width",r);for(var s of e)s.transform.baseVal[0].matrix.e+=r-t[2]}if(t[3]!=o){N(ee,"height",o),N(Ve,"height",o),N(Be,"height",o),_e.y.baseVal.value+=o-t[3];for(var a of l)a.transform.baseVal[0].matrix.f+=o-t[3];J!=C&&(e=(l=(e=o-Xe)<ne[3])?e:ne[3],N(J,"height",e),J.viewBox.baseVal.height=e,Se.height.baseVal.value=e+2*(W.boxed&&l)*i)}it()}function $e(e){var t=H(J),r=X(J),t=ne[3]-t[3];return r[1]+=e.deltaY,r[1]<0&&(r[1]=0),t<r[1]&&(r[1]=t),J.viewBox.baseVal.y=r[1],!1}function et(e,t,r){var i=e[0]/100*t[2]+t[0],e=(1-e[1]/100)*t[3]+t[1];return[r[0]?10**i:i,r[1]?10**e:e]}function tt(e,t,r,i,o){let l=C,s=A,a=0,n=0;var c=S("gp_"+e),f=Y(c.children);for(let e=0;e<f;++e){var d=c.children[e],h=Y(d.children);for(let e=0;e<h;++e){var v=d.children[e],g=v.points,y=Y(g);if(d.style.display!=D)for(let e=1;e<y;++e){var m,u,x,p,b,k,w=g[e-1],_=g[e];t<w.x-i&&t<_.x-i||t>w.x+i&&t>_.x+i||r<w.y-o&&r<_.y-o||r>w.y+o&&r>_.y+o||(x=((m=_.x-w.x)*(t-w.x)+(u=_.y-w.y)*(r-w.y))/(m*m+u*u),1<=(x=((m=w.x+m*x)-t)*(m-t)/i/i+((u=w.y+u*x)-r)*(u-r)/o/o))||x>s||(s=x,l=d,x=w.x<t?t-w.x:w.x-t,p=w.y<r?r-w.y:w.y-r,b=_.x<t?t-_.x:_.x-t,k=_.y<r?r-_.y:_.y-r,x<b&&x<i&&p<o?(a=w.x,n=w.y):b<i&&k<o?(a=_.x,n=_.y):linTip&&0!=ge(v,"stroke-width")?(a=m,n=u):l=C)}}}return{ele:l,x:a,y:n}}function rt(t){var r=H(ee),i=X(ee),o=i[2]/r[2],n=i[3]/r[3],c=(t.offsetX-r[0])*o+i[0],t=(t.offsetY-r[1])*n+i[1],i=(result=tt(F,c,t,6*o,6*n)).ele;if(i!=C){var c=result.x,t=result.y,f="pl_"+F,d=i.id,f=d.slice(Y(f),Y(d)),d=S("lgi_"+F+f),i=i.childNodes[0],i=ge(i,"stroke"),h=et([c,t],ae,te);let e=S("gpl_"+F+f);e==C&&(e=L(ee,"g",{id:"gpl_"+F+f}));const g=L(e,"g",{class:"marker_"+F}),y=L(g,"g");f=E(y,0,-33,1,33,i,"#DFDFDF",1,rx=4);I(g,[c,t],[o,n]),g.onclick=e=>{e.ctrlKey?v(1):(g.remove(),1<e.detail&&ot(ae))},d!=C&&(text=T(y,d.textContent,2,-35,12,"start",a,"#fff"),L(C,text,{"font-weight":"bold"}),L(C,f,{y:-48,height:48})),T(y,"x: "+ht([h[0]]),2,-19,12,"start",a,"#fff"),T(y,"y: "+ht([h[1]]),2,-5,12,"start",a,"#fff");const m=R(g),u=(m[2]+=4,L(C,f,{width:m[2]}),d!=C&&M(y,0,-31,m[2],-31,"#fff"),M(g,0,0,6,-6));i=y.getBoundingClientRect();let l=i.right+5+O.offsetLeft>r[0]+r[2],s=i.y-5-O.offsetTop<r[1];function v(e){let t=5,r=-5,i=1,o=1;e&&([l,s]=[!s,l]),l&&(t=-m[2]-5,i=-1),s&&(r=m[3]+5,o=-1),I(y,[t,r]),I(u,C,[i,o])}v(!1),E(g,-2,-2,4,4,"#000"),L(g,"circle",{r:6,fill:D,"pointer-events":"visible"})}}function it(){var t=ye("marker");for(let e=0;e<Y(t);++e){var r=H(ee),i=X(ee),o=i[2]/r[2],i=i[3]/r[3];t[e].transform.baseVal[1].matrix.a=o,t[e].transform.baseVal[1].matrix.d=i}}function ot(e){var t=100*(e[0]-ae[0])/ae[2],r=100*(ae[1]+ae[3]-e[1]-e[3])/ae[3];ee.viewBox.baseVal.width=100*e[2]/ae[2],ee.viewBox.baseVal.height=100*e[3]/ae[3],ee.viewBox.baseVal.x=t,ee.viewBox.baseVal.y=r,L(C,De,{x:t,y:r}),st(e),it()}function lt(){var t=S("zoom_rect"+F);if(ee.style.cursor="crosshair",t!=(G.onmousemove=C)){var r=0==ge(t,"fill-opacity"),i=H(t);if(t.remove(),!~r||0!=i[2]&&0!=i[3]){var t=X(ee),o=H(ee);let e=[];e=r?[-i[2]/o[2],i[3]/o[3],1,1]:[(i[0]-o[0])/o[2],1-(i[1]+i[3]-o[1])/o[3],i[2]/o[2],i[3]/o[3]];r=[ae[0]+ae[2]*t[0]/100,ae[1]+ae[3]*(100-t[3]-t[1])/100,ae[2]*t[2]/100,ae[3]*t[3]/100];ot([r[0]+e[0]*r[2],r[1]+e[1]*r[3],e[2]*r[2],e[3]*r[3]])}}}function st(r){for(var i=[oe,le],e=[xticklbl,yticklbl],l=[xtickangle,ytickangle],s=[0,0],t=ye("cg");0<Y(t);)t[0].remove();for(let t=0;t<2;++t){var a=t?Be:_e,c=L(a,"g",{id:"ga"+a+"_"+F});const N=at(r[2+t],n[t],te[t]);var a=r[t]+r[2+t],f=x(r[t]/N)-1,a=v(a/N),h=0<Y(i[t])?i[t]:dt(f,1,a).map(e=>e*N),g=0<Y(e[t])?e[t]:te[t]?ht(h.map(e=>10**e)):ht(h),y=100*N/r[2+t],f=L(Ve,"defs",{class:"cg_"+F}),m=L(f,"g",{id:"mg"+t+"_"+F}),a=te[t]&&1==N,f=Ae[t]?o[t]/(2-a):1;const E=dt(10/f,10/f,10);if(1<f){te[t]&&1==N&&E.forEach((e,t)=>{E[t]=10*w(E[t])});for(let e=0;e<Y(E)-1;++e)nt(m,E[e]/10*y*(1-2*t),t,q,"2 4",se[t])}nt(m,0,t,p,"",grid);var a=l[t],u=(a=(a-(t?90:0))%180,h.map(e=>100*(e-r[t])/r[2+t])),b=a<-11?"end":11<a?"start":"middle";for(let e=0;e<Y(h);++e){var _,B=0<t?100-u[e]:u[e],V=t?[0,B]:[B,0],B=t?["100%",B+"%"]:[B+"%",k+.5*d*("middle"==b)];C;0<=u[e]&&(0<e||i)&&(_=T(c,g[e],B[0],B[1],d,b),L(C,_,{"dominant-baseline":"central",class:"cg_"+F,transform:"translate(-"+.5*d*t+" 0) rotate("+l[t]+")","transform-origin":B[0]+" "+B[1]})),L(Ve,"use",{href:"#mg"+t+"_"+F,x:V[0],y:V[1],class:"cg_"+F})}s[t]=R(c)}return s}function at(e,t,i){var t=e/t,o=v(w(t));const l=x(t/10**o);var s=r.findIndex(e=>e>=l),t=r[s]*10**o;return i&&1<=e&&t<1?1:t}function nt(e,t,r,i,o,l){let s=[t,0,0,i,t,100];0<r&&(s=[s[1],s[0],s[3],s[2],s[5],s[4]]),l&&M(e,s[0],s[1],s[4],s[5],"#DFDFDF",o);i=M(e,0,0,s[2],s[3]),t=M(e,-s[2],-s[3],0,0);I(i,[s[0],s[1]],[1,1]),I(t,[s[4],s[5]],[1,1]),L(C,i,{class:"marker_"+F}),L(C,t,{class:"marker_"+F})}function ct(e){let t=0;if(e.button==c||e.button==b&&e.ctrlKey)t=1;else if(e.button!=b)return;ee.style.cursor=t?"move":"zoom-in";const r=e.offsetX,i=e.offsetY;var e=E(G,r,i,0,0,"#000"),o=t?0:.3;L(C,e,{id:"zoom_rect"+F,"fill-opacity":o}),G.onmousemove=e=>ft(e,r,i)}function ft(e,t,r){var i=S("zoom_rect"+F),o=e.offsetX,e=e.offsetY,t=o-t,r=e-r,l=0==ge(i,"fill-opacity");l||0<=t?N(i,"width",t):L(C,i,{width:-t,x:o}),l||0<=r?N(i,"height",r):L(C,i,{height:-r,y:e})}function dt(t,r,e){var i=v((e-t)/r*(1+1e-12))+1;out=y(i);for(let e=0;e<i;++e)out[e]=t+r*e;return out}function ht(r){var i=["y","z","a","f","p","n","u","m","","k","M","G","T","P","E","Z","Y"],o=y(Y(r)),e=Y(r),l=Y(i);for(let t=0;t<e;++t){var s=r[t].toExponential(5).split(/e/);let e=v(+s[1]/3)+8;e>l-1?e=l-1:e<0&&(e=0),o[t]=u(s[0]*10**(+s[1]-3*(e-8))*1e3)/1e3+i[e]}return o}he.forEach(e=>qe(e)),G.oncontextmenu=e=>e.preventDefault(),ee.onmousedown=e=>ct(e),ee.ondblclick=()=>ot(ae),G.onmousedown=e=>e.preventDefault(),G.onmouseup=()=>lt(),0<Y(W.names)&&(Z.onwheel=e=>$e(e)),new ResizeObserver(()=>Qe()).observe(G),Qe()}}