bezel-charts 1.6.0 → 1.7.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.
- package/README.md +31 -6
- package/dist/bezel-charts.iife.js +16 -13
- package/dist/bezel-charts.js +229 -4
- package/dist/bezel-charts.min.js +16 -13
- package/dist/charts/area.js +2 -2
- package/dist/charts/bars.js +2 -2
- package/dist/charts/boxplot.js +2 -2
- package/dist/charts/combo.js +5 -0
- package/dist/charts/donut.js +2 -2
- package/dist/charts/gauge.js +2 -2
- package/dist/charts/heatmap.js +2 -2
- package/dist/charts/histogram.js +2 -2
- package/dist/charts/line.js +2 -2
- package/dist/charts/progress.js +2 -2
- package/dist/charts/ring.js +2 -2
- package/dist/charts/scatter.js +2 -2
- package/dist/charts/shared-6SF4EQMI.js +2 -0
- package/dist/charts/{shared-CYFOZG36.js → shared-D5IXRVKV.js} +2 -2
- package/dist/charts/{shared-56ZZ4O3F.js → shared-Y6MBWBOE.js} +2 -2
- package/dist/charts/spark.js +2 -2
- package/package.json +6 -3
- package/src/charts/combo.js +160 -0
- package/src/element.js +1 -1
- package/src/entries/combo.js +10 -0
- package/src/index.js +2 -1
- package/src/render.js +1 -1
- package/dist/charts/shared-YIDF72XF.js +0 -2
package/dist/charts/bars.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{b as At,e as fa,f as oa,h as ua,j as ha}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{b as At,e as fa,f as oa,h as ua,j as ha}from"./shared-Y6MBWBOE.js";import{A as na,B as ea,C as la,D as za,E as ka,F as Oa,G as ia,a as Ut,b as U,c as $t,e as n,g as Wt,h as ot,j as ut,k as Ot,m as D,n as Et,o as S,p as w,r as L,s as St,t as wt,u as $,v as jt,w as ta,y as aa,z as ra}from"./shared-6SF4EQMI.js";var sa=40,ma=24;function ht(t,i){for(var m=Ot(t.values),Lt=ut(t.series),h=ut(t.labels),x=jt(t,i),b=m.length,d=Math.max.apply(null,[0].concat(m.map(function(a){return a.length}))),g=b>1,st=S(t.horizontal),M=g&&S(t.stacked),Nt=!g&&ut(t.color).filter(Boolean).length>1,H=m[0]||[],ga=[].concat.apply([],m),Tt=function(a,u){return m.reduce(function(e,A){return a<A.length&&A[a]*u>0?e+A[a]:e},0)},W=[],j=[],tt=[],_=0;M&&_<d;_++)j.push(Tt(_,1)),tt.push(Tt(_,-1)),W.push(j[_]+tt[_]);for(var mt=M?j.concat(tt):ga,Vt=mt.length?Math.max.apply(null,mt):0,gt=function(a){return Lt[a]||"Series "+(a+1)},at=g?oa(t.patterns,fa,"solid"):null,vt="",Gt=[],B=0;at&&B<b;B++)if(at(B)!=="solid"){var Ht=$t("g");vt+=ua(Ht,at(B),x[B%x.length],t.background||i.tile),Gt[B]="url(#"+Ht+")"}var X=function(a,u){return g?Gt[a]||x[a%x.length]:Nt?x[u%x.length]:x[0]},rt=at&&function(a,u,e){return'<rect x="'+n(u)+'" y="'+n(e+1)+'" width="10" height="10" rx="2" fill="'+X(a)+'"/>'},_t=function(a){return g||Nt||t.highlight==="none"||a===Vt?1:.5},Bt=function(a){return h[a]||"#"+(a+1)},Ct=function(a){return g?Bt(a)+m.map(function(u,e){return a<u.length?`
|
|
3
3
|
`+gt(e)+": "+w(u[a],t):""}).join("")+(M?`
|
|
4
4
|
Total: `+w(W[a],t):""):Bt(a)+": "+w(H[a],t)},va=na(t),nt=g||Lt.length?At(m.map(function(a,u){return gt(u)}),x,i,0,0,va.w,rt,rt&&15).height:0,Pt=M?1:b,C=g&&!M,c=C?10:14,Rt=3,et=st?Pt*c+(Pt-1)*Rt+(C?14:16):0,ca=st?nt+Math.max(1,d)*et-6:Wt(t.height,140)+nt,It=H.indexOf(Math.max.apply(null,H.length?H:[0]));return ea(t,i,ca,function(a,u,e,A){if(!d)return ta(i,a,u,e,A);var f=vt?"<defs>"+vt+"</defs>":"",N=u;nt&&(f+=At(m.map(function(r,l){return gt(l)}),x,i,a,u,e,rt,rt&&15).svg,N+=nt);var T=Math.min(0,Math.min.apply(null,mt)),P=Math.max(0,Vt);if(ot(t.goal)&&(T=Math.min(T,+t.goal),P=Math.max(P,+t.goal)),P===T&&(P=T+1),st){for(var ct=h.length?Math.min(e*.4,Math.max.apply(null,h.map(function(r){return D(r,12)}))+10):0,pt=M?[W.map(function(r){return w(r,t)})]:m.map(function(r){return r.map(function(l){return w(l,t)})}),pa=Math.max.apply(null,[].concat.apply([],pt).map(function(r){return D(r,C?10:11,!0)}))+10,lt=a+ct,it=e-ct-pa,dt=Math.max(P,0)||1,v=0;v<d;v++){var Z=N+v*et;h[v]!=null&&(f+=L(a,Z+(et-6)/2+4,Et(h[v],Math.floor(ct/6.7)),'fill="'+i.fg+'" font-family="'+Ut+'" font-size="12"')),M?(f+=da(v,lt,Z+5,it,dt),f+=L(a+e,Z+5+c/2+3.8,pt[0][v],'text-anchor="end" fill="'+i.fg+'" font-family="'+U+'" font-size="11" font-weight="600"')):m.forEach(function(r,l){if(!(v>=r.length)){var o=r[v],p=Z+(g?2:5)+l*(c+Rt),z=Math.max(0,o)/dt*it;g||(f+='<rect x="'+n(lt)+'" y="'+n(p)+'" width="'+n(it)+'" height="'+c+'" rx="'+c/2+'" fill="'+i.grid+'" fill-opacity=".6"/>'),z>0&&(f+='<rect x="'+n(lt)+'" y="'+n(p)+'" width="'+n(Math.max(c,z))+'" height="'+c+'" rx="'+c/2+'" fill="'+X(l,v)+'" fill-opacity="'+_t(o)+'"'+$(t,"bzc-gx",v*.06+l*.03)+"/>"),f+=L(a+e,p+c/2+3.8,pt[l][v],'text-anchor="end" fill="'+i.fg+'" font-family="'+U+'" font-size="'+(g?10:11)+'" font-weight="600"')}}),f+=wt(a,Z,e,et-6,Ct(v))}if(ot(t.goal)&&+t.goal>0){var Yt=lt+ +t.goal/dt*it;f+='<line x1="'+n(Yt)+'" x2="'+n(Yt)+'" y1="'+n(N-2)+'" y2="'+n(u+A+2)+'" stroke="'+i.fg+'" stroke-opacity=".55" stroke-dasharray="3 3"/>'}return f}function da(r,l,o,p,z){var k='<rect x="'+n(l)+'" y="'+n(o)+'" width="'+n(p)+'" height="'+c+'" rx="'+c/2+'" fill="'+i.grid+'" fill-opacity=".6"/>',I=0;return m.forEach(function(K,O){var Y=r<K.length?K[r]:0,E=Math.max(0,Y)/z*p;if(!(E<=0)){var G=I>0?1.5:0;k+='<rect x="'+n(l+I+G)+'" y="'+n(o)+'" width="'+n(Math.max(2,E-G))+'" height="'+c+'" rx="'+n(Math.min(3,E/2))+'" fill="'+X(O,r)+'"'+$(t,"bzc-gx",r*.06+O*.03)+"/>",I+=E}}),k}var Dt=h.length?Math.max.apply(null,h.map(function(r){return D(r,10,!0)})):0,Mt=h.length?Math.max(1,Math.ceil(d*(Dt+8)/e)):1,q=S(t.angleLabels)&&Mt>1,Xt=sa*Math.PI/180,Zt=function(r){return q?Et(r,ma):r};if(q){var Ma=e/d,R=0;h.forEach(function(r,l){R=Math.max(R,Math.cos(Xt)*D(Zt(r),10,!0)+4-(l+.5)*Ma)}),R=Math.min(R,e*.25),a+=R,e-=R,Mt=1}var qt=S(t.showValues)&&T<0?14:0,ya=q?Math.ceil(Math.sin(Xt)*Math.min(Dt,D("x".repeat(ma),10,!0)))+18:20,xa=(h.length?ya:2)+qt,Ft=S(t.showValues)?16:4,yt=A-(N-u)-xa-Ft,Jt=N+Ft,y=function(r){return Jt+yt-(r-T)/(P-T)*yt},F=e/d,J=Math.min(F*(C?.78:.62),C?b*30:56),Kt=C?Math.min(3,J/b*.15):0,V=M?J:(J-Kt*(b-1))/b,ft=y(0);f+='<line x1="'+a+'" x2="'+(a+e)+'" y1="'+n(ft)+'" y2="'+n(ft)+'" stroke="'+i.grid+'"/>';for(var s=0;s<d;s++){var xt=a+s*F+(F-J)/2;if(M?f+=ba(s,xt):m.forEach(function(r,l){if(!(s>=r.length)){var o=r[s],p=xt+l*(V+Kt),z=Math.min(y(o),ft),k=Math.abs(y(o)-ft);k>.5&&(f+='<rect x="'+n(p)+'" y="'+n(z)+'" width="'+n(V)+'" height="'+n(k)+'" rx="'+n(Math.min(6,V/2,k/2))+'" fill="'+X(l,s)+'" fill-opacity="'+_t(o)+'"'+$(t,o<0?"bzc-gn":"bzc-g",s*.05+l*.03)+"/>"),S(t.showValues)&&(f+=L(p+V/2,o<0?y(o)+12:y(o)-5,w(o,t,!0),'text-anchor="middle" fill="'+i.fg+'" font-family="'+U+'" font-size="'+(g?9:10)+'" font-weight="600"'))}}),h[s]!=null&&s%Mt===0){var bt=xt+J/2,zt=Jt+yt+qt+(q?12:15);f+=q?L(bt,zt,Zt(h[s]),St(i,10,'text-anchor="end" transform="rotate(-'+sa+" "+n(bt)+" "+n(zt)+')"')):L(bt,zt,h[s],St(i,10,'text-anchor="middle"'))}f+=wt(a+s*F,N,F,A-(N-u),Ct(s))}return ot(t.goal)&&(f+=aa(t,i,a,a+e,y(+t.goal))),f;function ba(r,l){var o="",p=0,z=0;if(m.forEach(function(I,K){var O=r<I.length?I[r]:0;if(O){var Y=O>0?p:z,E=Y+O;O>0?p=E:z=E;var G=y(Math.max(Y,E)),kt=y(Math.min(Y,E)),Q=kt-G,Qt=Y!==0?Math.min(1.5,Q/2):0;O>0?kt-=Qt:G+=Qt,Q=kt-G,Q>.5&&(o+='<rect x="'+n(l)+'" y="'+n(G)+'" width="'+n(V)+'" height="'+n(Q)+'" rx="'+n(Math.min(3,V/2,Q/2))+'" fill="'+X(K,r)+'"'+$(t,O<0?"bzc-gn":"bzc-g",r*.05+K*.03)+"/>")}}),S(t.showValues)){var k=W[r];o+=L(l+V/2,k<0?y(tt[r])+12:y(j[r])-5,w(k,t,!0),'text-anchor="middle" fill="'+i.fg+'" font-family="'+U+'" font-size="10" font-weight="600"')}return o}},{stat:ra(H,t,""),summary:d?M?b+" series stacked across "+d+" groups":g?b+" series across "+d+" groups":"highest "+(h[It]||"")+" "+w(H[It],t):"no data"})}ht.table=function(t){return ha(t,Ot(t.values).length>1&&S(t.stacked))};la("bars",ht);ia("bars");export{Oa as BezelChart,za as render,ka as toSVG};
|
package/dist/charts/boxplot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as pn,g as gn}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as pn,g as gn}from"./shared-Y6MBWBOE.js";import{B as fn,C as hn,D as xn,E as Mn,F as kn,G as cn,e as v,g as an,h as N,j as O,k as Q,m as B,n as en,o as tn,p as H,r as R,s as V,t as T,u as on,v as ln,w as un,y as mn}from"./shared-6SF4EQMI.js";function P(r,t){var o=Q(r.values),l=O(r.series),i=ln(r,t),f=o.length,e=tn(r.horizontal),h=O(r.color).length>1,C=O(r.mark).indexOf("mean")>=0,g=o.map(function(p){return dn(p,r.whiskers==="range")}),y=function(p){return l[p]||"Group "+(p+1)},d=an(r.height,e?Math.max(120,f*36+24):200),c=function(p){return H(p,r)},Y=g.map(function(p){return p.median}),vn=f===1?"median "+c(g[0].median)+", middle half "+c(g[0].q1)+" to "+c(g[0].q3):f+" groups, medians from "+c(Math.min.apply(null,Y))+" to "+c(Math.max.apply(null,Y));return fn(r,t,d,function(p,s,U,Z){if(!f)return un(t,p,s,U,Z);var _=Math.min.apply(null,g.map(function(n){return n.min})),j=Math.max.apply(null,g.map(function(n){return n.max}));N(r.goal)&&(_=Math.min(_,+r.goal),j=Math.max(j,+r.goal));var k=pn(_,j,4),x="",A=k.ticks.map(function(n){return H(n,r,!0)}),D=e?Math.min(U*.4,Math.max.apply(null,o.map(function(n,u){return B(y(u),11)}))+12):0,$=e?0:Math.max.apply(null,A.map(function(n){return B(n,10,!0)}))+10,q=p+(e?D:$),L=U-(e?D:$),w=Z-20,m=e?function(n){return q+(n-k.lo)/(k.hi-k.lo)*L}:function(n){return s+w-(n-k.lo)/(k.hi-k.lo)*w},S=(e?w:L)/f,b=Math.min(28,S*.28),J=function(n){return(e?s:q)+S*(n+.5)},G=function(n,u){return e?[u,n]:[n,u]},E=function(n,u,a,F,M){var I=G(n,u),z=G(a,F);return'<line x1="'+v(I[0])+'" y1="'+v(I[1])+'" x2="'+v(z[0])+'" y2="'+v(z[1])+'"'+M+"/>"};if(k.ticks.forEach(function(n,u){var a=m(n);x+=E(e?s:q,a,e?s+w:q+L,a,' stroke="'+t.grid+'"'+(n===0?"":' stroke-dasharray="2 4"'))+(e?R(a,s+w+15,A[u],V(t,10,'text-anchor="middle"')):R(q-8,a+3.5,A[u],V(t,10,'text-anchor="end"')))}),g.forEach(function(n,u){var a=J(u),F=h?i[u%i.length]:i[0],M=' stroke="'+F+'" stroke-width="1.5"';if(f>1||l.length){var I=qn(y(u),e?D-10:S-6,e?11:10,!e);x+=e?R(p,a+4,I,V(t,11,"",t.fg)):R(a,s+w+15,I,V(t,10,'text-anchor="middle"'))}if(n.n){var z=G(a-b,m(n.q1)),W=G(a+b,m(n.q3));if(x+="<g"+on(r,"bzc-a",Math.min(.6,u*.06))+">"+E(a,m(n.low),a,m(n.q1),M)+E(a,m(n.q3),a,m(n.high),M)+E(a-b/2,m(n.low),a+b/2,m(n.low),M)+E(a-b/2,m(n.high),a+b/2,m(n.high),M)+'<rect x="'+v(Math.min(z[0],W[0]))+'" y="'+v(Math.min(z[1],W[1]))+'" width="'+v(Math.abs(W[0]-z[0]))+'" height="'+v(Math.max(1,Math.abs(W[1]-z[1])))+'" rx="3" fill="'+F+'" fill-opacity=".22"'+M+"/>"+E(a-b,m(n.median),a+b,m(n.median),' stroke="'+F+'" stroke-width="2.5"'),n.outliers.forEach(function(sn){var rn=G(a,m(sn));x+='<circle cx="'+v(rn[0])+'" cy="'+v(rn[1])+'" r="2.5" fill="none"'+M+"/>"}),C){var nn=G(a,m(n.mean));x+=gn("diamond",nn[0],nn[1],4,' fill="'+(r.background||t.tile)+'"'+M)}x+="</g>"}}),N(r.goal)){var K=m(+r.goal);x+=e?E(K,s,K,s+w,' stroke="'+t.fg+'" stroke-opacity=".55" stroke-dasharray="4 4"'):mn(r,t,q,q+L,K)}return g.forEach(function(n,u){if(n.n){var a=y(u)+`
|
|
3
3
|
Median `+c(n.median)+`
|
|
4
4
|
Middle half `+c(n.q1)+" to "+c(n.q3)+`
|
|
5
5
|
`+(n.outliers.length?"Range without outliers ":"Range ")+c(n.low)+" to "+c(n.high)+(n.outliers.length?`
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{d as Vr,e as Xr}from"./shared-D5IXRVKV.js";import{a as Hr,b as Yr,c as er,d as Fr,e as Gr,f as tr,g as Ir,h as Rr}from"./shared-Y6MBWBOE.js";import{B as Ar,C as Nr,D as qr,E as jr,F as re,G as Dr,c as Or,e as l,g as wr,h as V,j as T,k as X,m as rr,o as Z,p as B,q as Cr,r as H,s as Y,t as Pr,u as Tr,v as _r,w as zr}from"./shared-6SF4EQMI.js";function ar(r,n){for(var o=X(r.values),k=X(r.line),b=_r(r,n),s=o.length,v=k.length,h=T(r.labels),O=T(r.series),w=T(r.lineSeries),g=s>1&&Z(r.stacked),M=Math.max.apply(null,[0].concat(o.concat(k).map(function(a){return a.length}))),d=Zr(r),_=wr(r.height,200),F=function(a){return O[a]||(s===1?"Bars":"Bars "+(a+1))},m=function(a){return w[a]||(v===1?"Line":"Line "+(a+1))},x=function(a){return b[a%b.length]},nr=function(a){return b[(s+a)%b.length]},Jr=function(a,f){return f<a.length?a[f]:0},J=tr(r.dash,Object.keys(er),"solid"),K=tr(r.markers,Fr,"none"),lr=s>1?tr(r.patterns,Gr,"solid"):null,Q=r.background||n.tile,ir="",fr=[],z=0;lr&&z<s;z++)if(lr(z)!=="solid"){var pr=Or("g");ir+=Rr(pr,lr(z),x(z),Q),fr[z]="url(#"+pr+")"}for(var Kr=function(a,f,L){if(a<s)return'<rect x="'+l(f)+'" y="'+l(L+1)+'" width="10" height="10" rx="2" fill="'+(fr[a]||x(a))+'"/>';var A=a-s,u=nr(A),c=J?er[J(A)]:"",G=K?K(A):"none";return'<line x1="'+l(f)+'" x2="'+l(f+18)+'" y1="'+l(L+6)+'" y2="'+l(L+6)+'" stroke="'+u+'" stroke-width="2.5" stroke-linecap="round"'+(c?' stroke-dasharray="'+c+'"':"")+"/>"+(G!=="none"?Ir(G,f+9,L+6,3.5,' fill="'+u+'" stroke="'+Q+'" stroke-width="1.5"'):"")},vr=[],gr=[],t=0;t<M;t++){var U=0,W=0;o.forEach(function(a){var f=Jr(a,t);g?f>=0?U+=f:W+=f:(U=Math.max(U,f),W=Math.min(W,f))}),vr.push(U),gr.push(W)}return Ar(r,n,_,function(a,f,L,A){if(!M||!s)return zr(n,a,f,L,A);var u=ir?"<defs>"+ir+"</defs>":"",c=f,G=Yr(o.map(function(e,i){return F(i)}).concat(k.map(function(e,i){return m(i)})),b,n,a,c,L,Kr,24);u+=G.svg,c+=G.height;var Qr=V(r.yLabel)||V(r.lineLabel);Qr&&(c+=16);var N=Hr(Math.min.apply(null,gr),Math.max.apply(null,vr),4),Ur=N.ticks.length-1,dr=[].concat.apply([],k),cr=Math.min.apply(null,dr),or=Math.max.apply(null,dr);Z(r.lineZero)&&(cr=Math.min(0,cr),or=Math.max(0,or));var E=v?ee(cr,or,Ur):null,kr=N.ticks.map(function(e){return B(e,r,!0)}),br=E?E.ticks.map(function(e){return B(e,d,!0)}):[],xr=Math.max.apply(null,kr.map(function(e){return rr(e,10,!0)}))+10,Wr=E?Math.max.apply(null,br.map(function(e){return rr(e,10,!0)}))+10:0,S=a+xr,I=L-xr-Wr,C=A-(c-f)-(h.length?20:4),R=I/M,D=function(e){return S+R*(e+.5)},sr=function(e){return c+C-(e-N.lo)/(N.hi-N.lo)*C},yr=function(e){return c+C-(e-E.lo)/(E.hi-E.lo)*C};N.ticks.forEach(function(e,i){var p=sr(e);u+='<line x1="'+l(S)+'" x2="'+l(S+I)+'" y1="'+l(p)+'" y2="'+l(p)+'" stroke="'+n.grid+'"'+(e===0?"":' stroke-dasharray="2 4"')+"/>"+H(S-8,p+3.5,kr[i],Y(n,10,'text-anchor="end"'))+(E?H(S+I+8,p+3.5,br[i],Y(n,10,'text-anchor="start"')):"")});var Mr=s===1?x(0):n.muted,Lr=v===1?nr(0):n.muted;if(u+='<line x1="'+l(S)+'" x2="'+l(S)+'" y1="'+l(c)+'" y2="'+l(c+C)+'" stroke="'+Mr+'" stroke-width="2"/>',E&&(u+='<line x1="'+l(S+I)+'" x2="'+l(S+I)+'" y1="'+l(c)+'" y2="'+l(c+C)+'" stroke="'+Lr+'" stroke-width="2"/>'),V(r.yLabel)&&(u+=H(a,c-8,r.yLabel,Y(n,10,"",s===1?Mr:n.fg))),V(r.lineLabel)&&E&&(u+=H(a+L,c-8,r.lineLabel,Y(n,10,'text-anchor="end"',v===1?Lr:n.fg))),h.length){var $r=Math.max(1,Math.ceil((Math.max.apply(null,h.map(function(e){return rr(e,10,!0)}))+10)/R));for(t=0;t<M;t+=$r)h[t]!=null&&(u+=H(D(t),c+C+15,h[t],Y(n,10,'text-anchor="middle"')))}var $=R*.72,Er=g?$:$/s;for(t=0;t<M;t++){var ur=0,hr=0;o.forEach(function(e,i){if(!(t>=e.length)){var p=e[t],y,P,mr=g?D(t)-$/2:D(t)-$/2+i*Er;g?p>=0?(y=ur,ur+=p,P=ur):(y=hr,hr+=p,P=hr):(y=0,P=p);var j=sr(y),Br=sr(P);u+='<rect x="'+l(mr+.5)+'" y="'+l(Math.min(j,Br))+'" width="'+l(Math.max(1,Er-1))+'" height="'+l(Math.abs(Br-j))+'" rx="2" fill="'+(fr[i]||x(i))+'"'+Tr(r,p<0?"bzc-gn":"bzc-g",Math.min(.6,t*.04))+"/>"}})}for(k.forEach(function(e,i){var p=nr(i),y=e.map(function(mr,j){return[D(j),yr(mr)]}),P=K?K(i):"none";u+=Vr(r,Cr(y,Z(r.straight)),p,i,J?er[J(i)]:""),P!=="none"?u+=Xr(r,P,e,D,yr,p,Q,i):u+='<circle cx="'+l(y[y.length-1][0])+'" cy="'+l(y[y.length-1][1])+'" r="4" fill="'+p+'" stroke="'+Q+'" stroke-width="2"/>'}),t=0;t<M;t++){var q=h[t]||"#"+(t+1),Sr=0;o.forEach(function(e,i){t<e.length&&(q+=`
|
|
3
|
+
`+F(i)+": "+B(e[t],r),Sr+=e[t])}),g&&(q+=`
|
|
4
|
+
Total: `+B(Sr,r)),k.forEach(function(e,i){t<e.length&&(q+=`
|
|
5
|
+
`+m(i)+": "+B(e[t],d))}),u+=Pr(D(t)-R/2,c,R,C,q)}return u},{summary:s+" bar series"+(g?" stacked":"")+" and "+v+(v===1?" line":" lines")+" over "+M+" points"})}ar.table=function(r){for(var n=X(r.values),o=X(r.line),k=T(r.labels),b=T(r.series),s=T(r.lineSeries),v=n.length,h=o.length,O=v>1&&Z(r.stacked),w=Zr(r),g=[],M=Math.max.apply(null,[0].concat(n.concat(o).map(function(m){return m.length}))),d=0;d<M;d++){var _=[k[d]||"#"+(d+1)],F=0;n.forEach(function(m){_.push(d<m.length?B(m[d],r):""),F+=d<m.length?m[d]:0}),O&&_.push(B(F,r)),o.forEach(function(m){_.push(d<m.length?B(m[d],w):"")}),g.push(_)}return{head:["Label"].concat(n.map(function(m,x){return b[x]||(v===1?"Bars":"Bars "+(x+1))}),O?["Total"]:[],o.map(function(m,x){return s[x]||(h===1?"Line":"Line "+(x+1))})),rows:g}};function Zr(r){return{prefix:r.linePrefix,suffix:r.lineSuffix,decimals:r.lineDecimals,compact:r.compact,lang:r.lang}}function ee(r,n,o){if(r===n)if(r===0)n=1;else{var k=Math.abs(r)*.1;r-=k,n+=k}for(var b=Math.pow(10,Math.floor(Math.log10((n-r)/o))),s=[1,2,5,10],v=0,h,O;h=s[v]*b,O=Math.floor(r/h)*h,!(O+o*h>=n-h*1e-9);)++v===4&&(v=1,b*=10);for(var w=[],g=0;g<=o;g++)w.push(+(O+g*h).toFixed(10));return{lo:w[0],hi:w[o],ticks:w}}Nr("combo",ar);Dr("combo");export{re as BezelChart,qr as render,jr as toSVG};
|
package/dist/charts/donut.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{B as Q,C as R,D as tt,E as rt,F as et,G as W,a as B,b as H,d as T,e as t,g as U,h as j,i as C,j as N,l as w,n as q,p as d,r as L,s as D,t as F,u as I,v as J,w as K,z as P}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{B as Q,C as R,D as tt,E as rt,F as et,G as W,a as B,b as H,d as T,e as t,g as U,h as j,i as C,j as N,l as w,n as q,p as d,r as L,s as D,t as F,u as I,v as J,w as K,z as P}from"./shared-6SF4EQMI.js";function O(e,l){var i=C(e.values).map(function(r){return Math.max(0,r)}),v=N(e.labels),f=J(e,l),a=i.slice(),g=v.slice();if(a.length>6){var V=a.map(function(r,s){return s}).sort(function(r,s){return i[s]-i[r]}),A=V.slice(0,5).sort(function(r,s){return r-s});a=A.map(function(r){return i[r]}),g=A.map(function(r){return v[r]||"#"+(r+1)}),a.push(w(V.slice(5).map(function(r){return i[r]}))),g.push("Other")}var m=w(a),X=U(e.height,150),Y=P(a,e,"");return Q(e,l,X,function(r,s,y,S){if(!m)return K(l,r,s,y,S);var h="",b=Math.min(S,y*.5),p=r+b/2,c=s+S/2,E=b*.16,G=(b-E)/2,M=0,Z=a.filter(Boolean).length>1?.9:0;a.forEach(function(u,o){var n=u/m*100;if(!(n<=0)){var z=Math.max(.01,n-Z);h+='<circle cx="'+t(p)+'" cy="'+t(c)+'" r="'+t(G)+'" fill="none" stroke="'+f[o%f.length]+'" stroke-width="'+t(E)+'" pathLength="100" stroke-dasharray="'+t(z)+" "+t(100-z)+'" stroke-dashoffset="'+t(-M)+'" transform="rotate(-90 '+t(p)+" "+t(c)+')"'+I(e,"bzc-a",o*.08)+"/>",M+=n}}),h+=L(p,c+2,d(m,e,!0),'text-anchor="middle" fill="'+l.fg+'" font-family="'+B+'" font-size="'+t(b*.17)+'" font-weight="800"'),h+=L(p,c+2+14,(j(e.centerLabel)?e.centerLabel:"Total").toUpperCase(),D(l,9,'text-anchor="middle" letter-spacing="1"'));var k=r+b+22,x=Math.min(24,S/a.length),_=c-x*a.length/2;return a.forEach(function(u,o){var n=_+o*x+x/2,z=Math.round(u/m*100),$=(g[o]||"#"+(o+1))+": "+d(u,e)+" ("+z+"%)";h+='<circle cx="'+t(k+4)+'" cy="'+t(n)+'" r="4" fill="'+f[o%f.length]+'"/>'+L(k+14,n+4,q(g[o]||"#"+(o+1),Math.floor((r+y-k-50)/6.7)),'fill="'+l.fg+'" font-family="'+B+'" font-size="12"')+L(r+y,n+4,z+"%",'text-anchor="end" fill="'+l.muted+'" font-family="'+H+'" font-size="11" font-weight="600"')+F(k,n-x/2,r+y-k,x,$)}),M=0,a.forEach(function(u,o){var n=u/m*100;n<=0||(h+='<circle cx="'+t(p)+'" cy="'+t(c)+'" r="'+t(G)+'" fill="none" stroke="#000" stroke-opacity="0" stroke-width="'+t(E)+'" pathLength="100" stroke-dasharray="'+t(n)+" "+t(100-n)+'" stroke-dashoffset="'+t(-M)+'" transform="rotate(-90 '+t(p)+" "+t(c)+')" class="bzc-hit" data-skip="" data-tip="'+T((g[o]||"#"+(o+1))+": "+d(u,e)+" ("+Math.round(n)+"%)")+'"/>',M+=n)}),h},{stat:Y,summary:"total "+d(m,e)+" across "+a.length+" parts"})}O.table=function(e){var l=C(e.values).map(function(f){return Math.max(0,f)}),i=N(e.labels),v=w(l);return{head:["Label","Value","Share"],rows:l.map(function(f,a){return[i[a]||"#"+(a+1),d(f,e),(v?Math.round(f/v*100):0)+"%"]})}};R("donut",O);W("donut");export{et as BezelChart,tt as render,rt as toSVG};
|
package/dist/charts/gauge.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{B as X,C as Y,D as ee,E as ae,F as te,G as Z,a as Q,e as a,f as N,g as d,h as g,i as z,j as F,p as i,r as y,s as L,t as T,u as C,v as U,w as W}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{B as X,C as Y,D as ee,E as ae,F as te,G as Z,a as Q,e as a,f as N,g as d,h as g,i as z,j as F,p as i,r as y,s as L,t as T,u as C,v as U,w as W}from"./shared-6SF4EQMI.js";function S(e,t){var h=z(e.values),s=h.length?h[0]:d(e.value,NaN),v=F(e.labels),r=d(e.min,0),n=d(e.max,100),_=d(e.height,130);n===r&&(n=r+1);var p=z(e.zones),E=U(e,t),H=F(e.color).filter(Boolean).length>1?E:[t.up,t.palette[3],t.down],G=E[0];if(p.length&&isFinite(s)){for(var w=0;w<p.length&&s>=p[w];)w++;G=H[Math.min(w,H.length-1)]}var $=!g(e.prefix)&&!g(e.suffix)&&r===0&&n===100,V=function(M){return i(M,e)+($?"%":"")};return X(e,t,_,function(M,I,A,P){if(!isFinite(s))return W(t,M,I,A,P);var f=Math.min(A/2,P-22),u=f*.16,l=f-u/2,m=M+A/2,c=I+f,B=N((s-r)/(n-r),0,1),x=function(R,k){var b=Math.PI*(1-R);return[m+k*Math.cos(b),c-k*Math.sin(b)]},j="M"+a(m-l)+","+a(c)+"A"+a(l)+","+a(l)+" 0 0 1 "+a(m+l)+","+a(c),o='<path d="'+j+'" fill="none" stroke="'+G+'" stroke-opacity=".16" stroke-width="'+a(u)+'" stroke-linecap="round"/>';p.length&&p.forEach(function(R){var k=N((R-r)/(n-r),0,1),b=x(k,l-u/2-3),O=x(k,l-u/2-8);o+='<line x1="'+a(b[0])+'" y1="'+a(b[1])+'" x2="'+a(O[0])+'" y2="'+a(O[1])+'" stroke="'+t.muted+'" stroke-width="1.5"/>'}),B>0&&(o+='<path d="'+j+'" fill="none" stroke="'+G+'" stroke-width="'+a(u)+'" stroke-linecap="round" pathLength="100" style="stroke-dasharray:'+a(B*100)+' 100"'+C(e,"bzc-s")+"/>");var q=x(B,l);if(o+='<circle cx="'+a(q[0])+'" cy="'+a(q[1])+'" r="'+a(u*.26)+'" fill="'+(e.background||t.tile)+'"'+C(e,"bzc-a",.9)+"/>",g(e.goal)){var D=N((+e.goal-r)/(n-r),0,1),J=x(D,l+u/2+4),K=x(D,l-u/2-4);o+='<line x1="'+a(J[0])+'" y1="'+a(J[1])+'" x2="'+a(K[0])+'" y2="'+a(K[1])+'" stroke="'+t.fg+'" stroke-width="2" stroke-linecap="round"/>'}return o+=y(m,c-f*.12,V(s),'text-anchor="middle" fill="'+t.fg+'" font-family="'+Q+'" font-size="'+a(f*.34)+'" font-weight="800"'),v[0]&&(o+=y(m,c-f*.12+16,v[0],L(t,10,'text-anchor="middle"'))),o+=y(m-l,c+18,i(r,e,!0),L(t,10,'text-anchor="middle"'))+y(m+l,c+18,i(n,e,!0),L(t,10,'text-anchor="middle"')),o+=T(m-f,c-f,f*2,f,(v[0]?v[0]+": ":"")+V(s)+" (range "+i(r,e)+" to "+i(n,e)+")"+(g(e.goal)?`
|
|
3
3
|
Goal: `+i(+e.goal,e):"")),o},{summary:isFinite(s)?V(s)+" on a scale of "+i(r,e)+" to "+i(n,e):"no data"})}S.table=function(e){var t=z(e.values),h=t.length?t[0]:d(e.value,NaN),s=F(e.labels),v=d(e.min,0),r=d(e.max,100),n=!g(e.prefix)&&!g(e.suffix)&&v===0&&r===100;return isFinite(h)?{head:["Label","Value"],rows:[[s[0]||"Reading",i(h,e)+(n?"%":"")],["Lowest",i(v,e)],["Highest",i(r,e)]].concat(g(e.goal)?[["Goal",i(+e.goal,e)]]:[])}:{head:["Label","Value"],rows:[]}};Y("gauge",S);Z("gauge");export{te as BezelChart,ee as render,ae as toSVG};
|
package/dist/charts/heatmap.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{A as J,B as K,C as N,D as ct,E as gt,F as ut,G as P,d as Y,e as i,h as $,i as O,l as S,p as g,r as o,s as h,v as q,w as A,z as H}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{A as J,B as K,C as N,D as ct,E as gt,F as ut,G as P,d as Y,e as i,h as $,i as O,l as S,p as g,r as o,s as h,v as q,w as A,z as H}from"./shared-6SF4EQMI.js";var Q={weekday:"short",day:"numeric",month:"short",year:"numeric"};function R(e,a){if($(e.start)&&/^\d{4}-\d{2}-\d{2}$/.test(String(e.start)))return new Date(String(e.start)+"T00:00:00Z");var t=new Date;return new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())-Math.max(0,a-1)*864e5)}function _(e,a){try{return new Intl.DateTimeFormat(e,Object.assign({timeZone:"UTC"},a))}catch{return new Intl.DateTimeFormat("en-GB",Object.assign({timeZone:"UTC"},a))}}function D(e,a){var t=O(e.values),u=q(e,a)[0],M=e.lang||"en-GB",s=R(e,t.length),v=(s.getUTCDay()+6)%7,d=Math.max(1,Math.ceil((v+t.length)/7)),L=J(e),T=28,x=Math.max(1,Math.floor((L.w-T)/10));if(d>x){var Z=(d-x)*7-v;t=t.slice(Z),s=new Date(s.getTime()+Z*864e5),v=0,d=x}var r=Math.min(18,(L.w-T)/d),j=r<8?1:3,p=r-j,tt=16+7*r+26,z=t.length?Math.max.apply(null,t):0,C=function(l){return _(M,l)},et=C({month:"short"}),at=C({weekday:"short"}),rt=C(Q),nt=H(t,e,"");return K(e,a,tt,function(l,F,I,mt){if(!t.length)return A(a,l,F,I,mt);var n="",it=l+T,U=F+16,V=-99,k=[.28,.5,.75,1];r>=9&&[0,2,4].forEach(function(X){var ht=new Date(Date.UTC(2024,0,1+X));n+=o(l,U+X*r+p/2+3.5,at.format(ht),h(a,9))});for(var m=0;m<t.length;m++){var E=v+m,W=Math.floor(E/7),lt=E%7,b=new Date(s.getTime()+m*864e5),y=it+W*r,st=U+lt*r;(b.getUTCDate()===1||m===0)&&y-V>30&&(n+=o(y,F+9,et.format(b),h(a,9)),V=y);var B=t[m]<=0||!z?0:Math.ceil(t[m]/z*4),ft=B?u:a.grid,ot=B?k[B-1]:.7;n+='<rect x="'+i(y)+'" y="'+i(st)+'" width="'+i(p)+'" height="'+i(p)+'" rx="'+i(p*.24)+'" fill="'+ft+'" fill-opacity="'+ot+'"'+(e.animate?' class="bzc-a" style="animation-delay:'+i(W*.012)+'s"':"")+' data-tip="'+Y(rt.format(b)+": "+g(t[m],e))+'"/>'}var w=U+7*r+14,c=10,G=l+I-5*(c+3)-30;n+=o(l,w+8,g(S(t),e,!0)+" in "+t.length+" days",h(a,10)),n+=o(G-6,w+8,"Less",h(a,9,'text-anchor="end"'));for(var f=0;f<5;f++)n+='<rect x="'+i(G+f*(c+3))+'" y="'+w+'" width="'+c+'" height="'+c+'" rx="2.5" fill="'+(f?u:a.grid)+'" fill-opacity="'+(f?k[f-1]:.7)+'"/>';return n+=o(G+5*(c+3)+3,w+8,"More",h(a,9)),n},{stat:nt,summary:g(S(t),e)+" across "+t.length+" days"})}D.table=function(e){var a=O(e.values),t=R(e,a.length),u=_(e.lang||"en-GB",Q);return{head:["Date","Value"],rows:a.map(function(M,s){return[u.format(new Date(t.getTime()+s*864e5)),g(M,e)]})}};N("heatmap",D);P("heatmap");export{ut as BezelChart,ct as render,gt as toSVG};
|
package/dist/charts/histogram.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as xt,b as yt,e as St,f as bt,h as wt}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as xt,b as yt,e as St,f as bt,h as wt}from"./shared-Y6MBWBOE.js";import{B as vt,C as dt,D as Ct,E as Nt,F as Rt,G as Mt,c as lt,e as f,g as B,h as U,j as X,k as ft,m as Z,o as ht,p as b,r as Y,s as D,t as st,u as mt,v as gt,w as pt}from"./shared-6SF4EQMI.js";function H(r,n){for(var t=kt(r),i=X(r.series),e=gt(r,n),s=B(r.height,190),u=t?t.S:[],m=u.length,g=m>1||i.length>0,M=ht(r.percent),k=function(o){return i[o]||"Series "+(o+1)},w=Object.assign({},r,{decimals:U(r.decimals)?r.decimals:t?t.dp:0}),p=function(o){return b(t.edge(o),w)+" to "+b(t.edge(o+1),w)},v=function(o,x){return Math.round(t.counts[o][x]/u[o].length*100)},F=function(o,x){return M?t.counts[o][x]/u[o].length*100:t.counts[o][x]},R=X(r.mark).filter(function(o){return o==="mean"||o==="median"}),E=m>1?bt(r.patterns,St,"solid"):null,W="",O=[],h=0;E&&h<m;h++)if(E(h)!=="solid"){var $=lt("g");W+=wt($,E(h),e[h%e.length],r.background||n.tile),O[h]="url(#"+$+")"}var q=E&&function(o,x,z){return'<rect x="'+f(x)+'" y="'+f(z+1)+'" width="10" height="10" rx="2" fill="'+(O[o]||e[o%e.length])+'"/>'},J=0,j=0;if(t){for(var d=0;d<t.count;d++)Et(t,d)>Et(t,J)&&(J=d);u.forEach(function(o){j+=o.length})}return vt(r,n,s,function(o,x,z,tt){if(!t)return pt(n,o,x,z,tt);var _=W?"<defs>"+W+"</defs>":"",y=x;if(g){var nt=yt(u.map(function(a,c){return k(c)}),e,n,o,y,z,q,q&&15);_+=nt.svg,y+=nt.height}var K=0;u.forEach(function(a,c){for(var l=0;l<t.count;l++)K=Math.max(K,F(c,l))});var T=xt(0,K||1,4),rt=T.ticks.map(function(a){return b(a,{lang:r.lang},!0)+(M?"%":"")}),at=Math.max.apply(null,rt.map(function(a){return Z(a,10,!0)}))+10,C=o+at,G=z-at,N=tt-(y-x)-20,I=G/t.count,L=function(a){return C+a*I},et=function(a){return y+N-(a-T.lo)/(T.hi-T.lo)*N};T.ticks.forEach(function(a,c){var l=et(a);_+='<line x1="'+f(C)+'" x2="'+f(C+G)+'" y1="'+f(l)+'" y2="'+f(l)+'" stroke="'+n.grid+'"'+(a===0?"":' stroke-dasharray="2 4"')+"/>"+Y(C-8,l+3.5,rt[c],D(n,10,'text-anchor="end"'))});for(var Q=[],S=0;S<=t.count;S++)Q.push(b(t.edge(S),w,!0));var Ot=Math.max(1,Math.ceil((Math.max.apply(null,Q.map(function(a){return Z(a,10,!0)}))*1.5+8)/I));for(S=0;S<=t.count;S+=Ot)_+=Y(L(S),y+N+15,Q[S],D(n,10,'text-anchor="'+(S===0?"start":S===t.count?"end":"middle")+'"'));u.forEach(function(a,c){for(var l=0;l<t.count;l++){var A=F(c,l);if(A){var ct=et(A);_+='<rect x="'+f(L(l)+.5)+'" y="'+f(ct)+'" width="'+f(Math.max(1,I-1))+'" height="'+f(y+N-ct)+'" fill="'+(O[c]||e[c%e.length])+'"'+(g?' fill-opacity=".55"':"")+mt(r,"bzc-g",Math.min(.6,l*.03))+"/>"}}});var ot=t.edge(0),_t=t.edge(t.count)-ot,P=[];if(u.forEach(function(a,c){R.forEach(function(l){var A=l==="mean"?Tt(a):At(a);P.push({x:C+(A-ot)/_t*G,c:g?e[c%e.length]:n.fg,t:(g?k(c)+" ":"")+l+" "+b(A,r)})})}),P.length){var V=P.map(function(a){return a.x}),ut=(Math.min.apply(null,V)+Math.max.apply(null,V))/2>C+G/2,Wt=ut?Math.min.apply(null,V)-5:Math.max.apply(null,V)+5;P.forEach(function(a,c){_+='<line x1="'+f(a.x)+'" x2="'+f(a.x)+'" y1="'+f(y)+'" y2="'+f(y+N)+'" stroke="'+a.c+'" stroke-width="1.5" stroke-dasharray="4 3"/>'+Y(Wt,y+9+c*12,a.t,D(n,10,'text-anchor="'+(ut?"end":"start")+'"',g?a.c:n.fg))})}for(d=0;d<t.count;d++){var it=p(d);u.forEach(function(a,c){it+=`
|
|
3
3
|
`+(g?k(c)+": ":"")+t.counts[c][d]+" ("+v(c,d)+"%)"}),_+=st(L(d),y,I,N,it)}return _},{summary:t?(g?m+" series, ":"")+j+" values in "+t.count+" ranges from "+b(t.edge(0),w)+" to "+b(t.edge(t.count),w)+", most in "+p(J):"no data"})}H.table=function(r){var n=kt(r),t=X(r.series);if(!n)return{head:["Range","Count"],rows:[]};for(var i=n.S.length>1||t.length>0,e=Object.assign({},r,{decimals:U(r.decimals)?r.decimals:n.dp}),s=[],u=0;u<n.count;u++){var m=[b(n.edge(u),e)+" to "+b(n.edge(u+1),e)];i?n.S.forEach(function(g,M){m.push(String(n.counts[M][u]))}):m.push(String(n.counts[0][u]),Math.round(n.counts[0][u]/n.S[0].length*100)+"%"),s.push(m)}return{head:["Range"].concat(i?n.S.map(function(g,M){return t[M]||"Series "+(M+1)}):["Count","Share"]),rows:s}};function zt(r){var n=Math.floor(Math.log10(r)),t=+("1e"+n),i=r/t,e=i<1.4142?1:i<2.2361?2:i<3.5355?2.5:i<7.0711?5:10;return{w:e*t,dp:Math.max(0,e===10?-n-1:-n)+(e===2.5?1:0)}}function kt(r){var n=ft(r.values),t=[].concat.apply([],n);if(!t.length)return null;var i=Math.min.apply(null,t),e=Math.max.apply(null,t),s=B(r.binWidth,0),u,m;if(s>0&&(e-i)/s<=200){var g=String(r.binWidth),M=g.indexOf(".");u=M<0?0:Math.min(6,g.length-M-1)}else{var k=B(r.bins,0)>0?Math.round(B(r.bins,0)):Math.ceil(Math.log2(t.length)+1);k=Math.min(Math.max(k,1),50),m=zt(e>i?(e-i)/k:Math.abs(i)||1),s=m.w,u=m.dp}for(var w=Math.floor(i/s),p=function(R){return Number(((w+R)*s).toFixed(u+3))};p(0)>i;)w--;for(var v=Math.max(1,Math.ceil((e-p(0))/s));v>1&&p(v-1)>=e;)v--;for(;p(v)<e;)v++;var F=n.map(function(R){for(var E=[],W=0;W<v;W++)E.push(0);return R.forEach(function(O){for(var h=Math.min(v-1,Math.max(0,Math.floor((O-p(0))/s)));h>0&&O<p(h);)h--;for(;h<v-1&&O>=p(h+1);)h++;E[h]++}),E});return{S:n,edge:p,count:v,counts:F,dp:u}}function Et(r,n){var t=0;return r.counts.forEach(function(i){t+=i[n]}),t}function Tt(r){var n=0;return r.forEach(function(t){n+=t}),n/r.length}function At(r){var n=r.slice().sort(function(i,e){return i-e}),t=Math.floor(n.length/2);return n.length%2?n[t]:(n[t-1]+n[t])/2}dt("histogram",H);Mt("histogram");export{Rt as BezelChart,Ct as render,Nt as toSVG};
|
package/dist/charts/line.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as ae,b as ie,c as le,d as se,e as oe}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as ae,b as ie,c as le,d as se,e as oe}from"./shared-D5IXRVKV.js";import{c as E,d as te,f as z,j as ne}from"./shared-Y6MBWBOE.js";import{B as j,C as ee,D as he,E as de,F as ve,G as re,c as N,e as f,g as T,j as w,k as Z,o as v,p as y,q as _,r as q,s as J,u as Q,v as R,w as U,x as W,z as $}from"./shared-6SF4EQMI.js";function g(e,s){var a=Z(e.values),M=w(e.series),x=w(e.labels),m=R(e,s),fe=T(e.height,170),u=Math.max.apply(null,[0].concat(a.map(function(o){return o.length}))),pe=W(e,x),G=a.length>1||M.length>0,me=$(a[0]||[],e,""),c=z(e.dash,Object.keys(E),"solid"),h=z(e.markers,te,"none"),b=e.background||s.tile,L=(c||h)&&le(m,c,h,b),A=function(o){return M[o]||"Series "+(o+1)};return j(e,s,fe,function(o,F,H,P){if(!u)return U(s,o,F,H,P);var V=[].concat.apply([],a),i=ae(e,s,{n:u,names:G?a.map(function(t,n){return A(n)}):null,pal:m,key:L,kw:L&&24,lo:Math.min.apply(null,V),hi:Math.max.apply(null,V),zero:v(e.zero),labels:x,notes:pe,tick:function(t){return y(t,e,!0)}},o,F,H,P),p=i.svg,S=i.X,O=i.Y,X=i.px,ue=i.pw,Y=i.top,B=i.ph;return a.forEach(function(t,n){var l=m[n%m.length],r=t.map(function(d,k){return[S(k),O(d)]});r.length===1&&(r=[[X,r[0][1]],[X+ue,r[0][1]]]);var C=_(r,v(e.straight));if(n===0){var D=N("g"),ce=r[r.length-1];p+='<defs><linearGradient id="'+D+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+l+'" stop-opacity=".26"/><stop offset="1" stop-color="'+l+'" stop-opacity="0"/></linearGradient></defs><path d="'+C+"L"+f(ce[0])+","+f(Y+B)+"L"+f(r[0][0])+","+f(Y+B)+'Z" fill="url(#'+D+')"'+Q(e,"bzc-a")+"/>"}var I=h?h(n):"none";if(p+=se(e,C,l,n,c?E[c(n)]:""),I!=="none")p+=oe(e,I,t,S,O,l,b,n);else{var K=r[r.length-1];p+='<circle cx="'+f(K[0])+'" cy="'+f(K[1])+'" r="4" fill="'+l+'" stroke="'+b+'" stroke-width="2"/>'}v(e.showValues)&&t.forEach(function(d,k){p+=q(S(k),O(d)-8,y(d,e,!0),J(s,9,'text-anchor="middle"'))})}),p+ie(e,s,i,u,function(t){var n=x[t]||"#"+(t+1);return a.forEach(function(l,r){t<l.length&&(n+=`
|
|
3
3
|
`+(G?A(r)+": ":"")+y(l[t],e))}),n})},{stat:me,summary:a.length+" series over "+u+" points"})}g.table=function(e){return ne(e)};ee("line",g);re("line");export{ve as BezelChart,he as render,de as toSVG};
|
package/dist/charts/progress.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{A as T,B as U,C as W,D as tr,E as ar,F as er,G as X,a as E,b as P,c as D,d as O,e as u,f as F,g as V,h as x,i as L,j as N,l as A,m as B,p as l,r as C,t as H,u as J,v as K,w as Q,z as R}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{A as T,B as U,C as W,D as tr,E as ar,F as er,G as X,a as E,b as P,c as D,d as O,e as u,f as F,g as V,h as x,i as L,j as N,l as A,m as B,p as l,r as C,t as H,u as J,v as K,w as Q,z as R}from"./shared-6SF4EQMI.js";function z(r,e){var f=L(r.values).map(function(a){return Math.max(0,a)}),h=N(r.labels),m=K(r,e),o=f.length===1,g=A(f),t=x(r.max)?V(r.max,100):o?100:g;t>0||(t=1);var S=!x(r.prefix)&&!x(r.suffix)&&t===100&&o,k=function(a){return l(a,r)+(S?"%":"")},Y=T(r),Z=Y.w,b=0,G=[];if(!o&&f.length){var M=0;b=1,f.forEach(function(a,y){var i=h[y]||"#"+(y+1),w=14+B(i,12)+6+B(l(a,r),11,!0)+18;M>0&&M+w>Z&&(M=0,b++),G.push({x:M,row:b-1,l:i}),M+=w})}var _=36+(b?12+b*20:0),$=R(f,r,"");return U(r,e,_,function(a,y,i,w){if(!f.length)return Q(e,a,y,i,w);var n="",p=y+22,I=D("c"),rr=o?k(f[0])+(S?"":" of "+l(t,r)):l(g,r)+" of "+l(t,r);o&&h[0]&&(n+=C(a,y+11,h[0],'fill="'+e.fg+'" font-family="'+E+'" font-size="12"')),n+=C(a+i,y+11,rr,'text-anchor="end" fill="'+e.fg+'" font-family="'+P+'" font-size="11" font-weight="600"'),n+='<rect x="'+a+'" y="'+p+'" width="'+i+'" height="14" rx="7" fill="'+e.grid+'" fill-opacity=".7"/>',n+='<clipPath id="'+I+'"><rect x="'+a+'" y="'+p+'" width="'+i+'" height="14" rx="7"/></clipPath><g clip-path="url(#'+I+')"><g'+J(r,"bzc-gx")+">";var d=0;if(f.forEach(function(s,v){var c=Math.min(s,Math.max(0,t-d))/t*i;c>0&&(n+='<rect x="'+u(a+d/t*i)+'" y="'+p+'" width="'+u(c)+'" height="14" fill="'+m[v%m.length]+'"/>'),v>0&&c>0&&(n+='<rect x="'+u(a+d/t*i-1)+'" y="'+p+'" width="2" height="14" fill="'+(r.background||e.tile)+'"/>'),d+=s}),n+="</g></g>",x(r.goal)){var j=a+F(+r.goal/t,0,1)*i;n+='<line x1="'+u(j)+'" x2="'+u(j)+'" y1="'+(p-4)+'" y2="'+(p+18)+'" stroke="'+e.fg+'" stroke-width="2" stroke-linecap="round"/>'}return d=0,f.forEach(function(s,v){var c=Math.min(s,Math.max(0,t-d))/t*i;c>0&&(n+=H(a+d/t*i,p-4,c,22,(h[v]||(o?"Progress":"#"+(v+1)))+": "+k(s)+(o?"":" ("+Math.round(s/t*100)+"%)"))),d+=s}),G.forEach(function(s,v){var c=a+s.x,q=p+14+12+s.row*20+8;n+='<circle cx="'+u(c+4)+'" cy="'+u(q)+'" r="4" fill="'+m[v%m.length]+'"/><text x="'+u(c+14)+'" y="'+u(q+4)+'" fill="'+e.fg+'" font-family="'+E+'" font-size="12">'+O(s.l)+'<tspan dx="6" fill="'+e.muted+'" font-family="'+P+'" font-size="11">'+O(l(f[v],r))+"</tspan></text>"}),n},{stat:$,summary:o?k(f[0])+(S?"":" of "+l(t,r)):l(g,r)+" of "+l(t,r)})}z.table=function(r){var e=L(r.values).map(function(g){return Math.max(0,g)}),f=N(r.labels),h=e.length===1,m=x(r.max)?V(r.max,100):h?100:A(e);m>0||(m=1);var o=!x(r.prefix)&&!x(r.suffix)&&m===100&&h;return h?{head:["Label","Value"],rows:[[f[0]||"Progress",l(e[0],r)+(o?"%":" of "+l(m,r))]]}:{head:["Label","Value","Share"],rows:e.map(function(g,t){return[f[t]||"#"+(t+1),l(g,r),Math.round(g/m*100)+"%"]})}};W("progress",z);X("progress");export{er as BezelChart,tr as render,ar as toSVG};
|
package/dist/charts/ring.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{B as P,C as Q,D as Y,E as Z,F as _,G as R,a as N,b as q,d as w,e as r,f as V,g as S,h as d,i as j,j as A,n as D,p as y,r as x,s as F,v as I,w as J,z as K}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{B as P,C as Q,D as Y,E as Z,F as _,G as R,a as N,b as q,d as w,e as r,f as V,g as S,h as d,i as j,j as A,n as D,p as y,r as x,s as F,v as I,w as J,z as K}from"./shared-6SF4EQMI.js";function O(t,i){var e=j(t.values),l=A(t.labels),u=I(t,i),p=S(t.max,100)||100,T=S(t.height,140),B=!d(t.prefix)&&!d(t.suffix)&&p===100,b=function(a){return y(a,t)+(B?"%":"")},U=K(e,t,"");return P(t,i,T,function(a,v,h,k){if(!e.length)return J(i,a,v,h,k);var c="",z=e.length===1,f=Math.min(k,z?h:h*.55),g=z?a+h/2:a+f/2,o=v+k/2,m=z?f*.12:V(f*.42/(e.length*1.35),5,16),W=m*.38;if(e.forEach(function(M,n){var s=f/2-m/2-n*(m+W);if(!(s<=m/2)){var C=V(M/p*100,0,100),G=u[n%u.length];c+='<circle cx="'+r(g)+'" cy="'+r(o)+'" r="'+r(s)+'" fill="none" stroke="'+G+'" stroke-opacity=".16" stroke-width="'+r(m)+'"/>',C>0&&(c+='<circle cx="'+r(g)+'" cy="'+r(o)+'" r="'+r(s)+'" fill="none" stroke="'+G+'" stroke-width="'+r(m)+'" stroke-linecap="round" pathLength="100" transform="rotate(-90 '+r(g)+" "+r(o)+')" style="stroke-dasharray:'+r(C)+" 100"+(t.animate?";animation-delay:"+n*.12+"s":"")+'"'+(t.animate?' class="bzc-s"':"")+"/>"),c+='<circle cx="'+r(g)+'" cy="'+r(o)+'" r="'+r(s+m/2)+'" fill="#000" fill-opacity="0" class="bzc-hit" data-tip="'+w((l[n]||"#"+(n+1))+": "+b(M)+(B?"":" of "+y(p,t)))+'"/>'}}),z)c+=x(g,o+f*.08,b(e[0]),'text-anchor="middle" fill="'+i.fg+'" font-family="'+N+'" font-size="'+r(f*.22)+'" font-weight="800"'),l[0]&&(c+=x(g,o+f*.08+16,l[0],F(i,10,'text-anchor="middle"')));else{var E=a+f+22,L=Math.min(26,k/e.length),X=o-L*e.length/2;e.forEach(function(M,n){var s=X+n*L+L/2;c+='<circle cx="'+r(E+4)+'" cy="'+r(s)+'" r="4" fill="'+u[n%u.length]+'"/>'+x(E+14,s+4,D(l[n]||"#"+(n+1),Math.floor((a+h-E-60)/6.7)),'fill="'+i.fg+'" font-family="'+N+'" font-size="12"')+x(a+h,s+4,b(M),'text-anchor="end" fill="'+i.fg+'" font-family="'+q+'" font-size="11" font-weight="600"')})}return c},{stat:U,summary:e.map(function(a,v){return(l[v]?l[v]+" ":"")+b(a)}).join(", ")})}O.table=function(t){var i=A(t.labels),e=S(t.max,100)||100,l=!d(t.prefix)&&!d(t.suffix)&&e===100;return{head:["Label","Value"],rows:j(t.values).map(function(u,p){return[i[p]||"#"+(p+1),y(u,t)+(l?"%":" of "+y(e,t))]})}};Q("ring",O);R("ring");export{_ as BezelChart,Y as render,Z as toSVG};
|
package/dist/charts/scatter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as T,b as va,d as da,f as ga,g as U,i as ba}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as T,b as va,d as da,f as ga,g as U,i as ba}from"./shared-Y6MBWBOE.js";import{B as ha,C as xa,D as Oa,E as Pa,F as za,G as ya,e as n,f as F,g as oa,h as x,j as H,k as N,o as R,p as E,r as P,s as w,t as sa,v as fa,w as ua,x as ma,y as pa}from"./shared-6SF4EQMI.js";function Xa(a,r){var y=Math.min(a.length,r.length);if(y<2)return null;var u=0,h=0,e;for(e=0;e<y;e++)u+=a[e],h+=r[e];u/=y,h/=y;var f=0,l=0,m=0;for(e=0;e<y;e++)f+=(a[e]-u)*(a[e]-u),l+=(r[e]-h)*(r[e]-h),m+=(a[e]-u)*(r[e]-h);if(!f)return null;var b=m/f;return{slope:b,intercept:h-b*u,r:l?m/Math.sqrt(f*l):0}}function I(a,r){for(var y=N(a.x),u=N(a.y),h=H(a.series),e=H(a.labels),f=fa(a,r),l=[],m=0;m<Math.max(y.length,u.length);m++){var b=y[m]||[],S=u[m]||[],z=Math.min(b.length,S.length);l.push({xs:b.slice(0,z),ys:S.slice(0,z)})}l=l.filter(function(o){return o.xs.length});var k=l.reduce(function(o,v){return o+v.xs.length},0),ka=oa(a.height,210),J=l.length>1||h.length>0,Ma=R(a.trend),Z=function(o){return h[o]||"Group "+(o+1)},$={decimals:a.decimals,compact:a.compact,lang:a.lang},La=ma(a,e),K=ga(a.markers,da,"circle"),Ea=a.background||r.tile,j=function(o){var v=K?K(o):"circle";return v==="none"?"circle":v},wa=K&&function(o,v,X){return U(j(o),v+4,X+6,4,' fill="'+f[o%f.length]+'"')};return ha(a,r,ka,function(o,v,X,aa){if(!k)return ua(r,o,v,X,aa);var p="",s=v;if(J){var ta=va(l.map(function(t,i){return Z(i)}),f,r,o,s,X,wa);p+=ta.svg,s+=ta.height}var ra=[].concat.apply([],l.map(function(t){return t.xs})),ea=[].concat.apply([],l.map(function(t){return t.ys})),Y=Math.min.apply(null,ea),q=Math.max.apply(null,ea);x(a.goal)&&(Y=Math.min(Y,+a.goal),q=Math.max(q,+a.goal)),R(a.zero)&&(Y=Math.min(0,Y),q=Math.max(0,q));var W=T(Y,q,4),A=T(Math.min.apply(null,ra),Math.max.apply(null,ra),5),na=W.ticks.map(function(t){return E(t,a,!0)}),la=ba(na)+(x(a.yLabel)?14:0),Sa=20+(x(a.xLabel)?16:0),d=o+la,M=X-la,g=aa-(s-v)-Sa,G=function(t){return d+6+(t-A.lo)/(A.hi-A.lo)*(M-12)},L=function(t){return s+6+g-6-(t-W.lo)/(W.hi-W.lo)*(g-6)};W.ticks.forEach(function(t,i){var c=L(t);p+='<line x1="'+n(d)+'" x2="'+n(d+M)+'" y1="'+n(c)+'" y2="'+n(c)+'" stroke="'+r.grid+'" stroke-dasharray="2 4"/>'+P(d-8,c+3.5,na[i],w(r,10,'text-anchor="end"'))});var Ga=Math.max(1,Math.ceil(A.ticks.length*44/M));if(A.ticks.forEach(function(t,i){if(!(i%Ga)){var c=G(t);p+='<line x1="'+n(c)+'" x2="'+n(c)+'" y1="'+n(s)+'" y2="'+n(s+g)+'" stroke="'+r.grid+'" stroke-dasharray="2 4"/>'+P(c,s+g+15,E(t,$,!0),w(r,10,'text-anchor="middle"'))}}),x(a.xLabel)&&(p+=P(d+M/2,s+g+32,a.xLabel,w(r,10,'text-anchor="middle" font-weight="600"'))),x(a.yLabel)){var ia=s+g/2;p+='<text x="'+n(o+4)+'" y="'+n(ia)+'" transform="rotate(-90 '+n(o+4)+" "+n(ia)+')" text-anchor="middle" '+w(r,10,'font-weight="600"')+' dominant-baseline="hanging">'+String(a.yLabel).replace(/[&<>"]/g,function(t){return{"&":"&","<":"<",">":">",'"':"""}[t]})+"</text>"}x(a.goal)&&(p+=pa(a,r,d,d+M,L(+a.goal))),Ma&&l.forEach(function(t,i){var c=Xa(t.xs,t.ys);if(c){var B=Math.min.apply(null,t.xs),O=Math.max.apply(null,t.xs),_=c.slope*B+c.intercept,C=c.slope*O+c.intercept,D=f[i%f.length];p+='<line x1="'+n(G(B))+'" y1="'+n(F(L(_),s,s+g))+'" x2="'+n(G(O))+'" y2="'+n(F(L(C),s,s+g))+'" stroke="'+D+'" stroke-width="2" stroke-dasharray="6 4" stroke-linecap="round" stroke-opacity=".9"/>',p+=P(Math.min(G(O),d+M)-2,F(L(C),s+10,s+g)-7,"r = "+c.r.toFixed(2),w(r,10,'text-anchor="end" font-weight="600"',D))}});var V=0,Q=k>150?3:4.5;l.forEach(function(t,i){var c=f[i%f.length];t.xs.forEach(function(B,O){var _=G(B),C=L(t.ys[O]),D=(e[V]?e[V]+`
|
|
3
3
|
`:J?Z(i)+`
|
|
4
4
|
`:"")+(x(a.xLabel)?a.xLabel:"x")+": "+E(B,$)+`
|
|
5
5
|
`+(x(a.yLabel)?a.yLabel:"y")+": "+E(t.ys[O],a);p+=U(j(i),_,C,Q,' fill="'+c+'" fill-opacity=".85" stroke="'+Ea+'" stroke-width="1.5"'+(a.animate?' class="bzc-a" style="animation-delay:'+n(Math.min(.8,V*.012))+'s"':"")),p+=sa(_-8,C-8,16,16,D),V++})});var ca=[];return l.forEach(function(t){t.xs.forEach(function(i,c){ca.push([G(i),L(t.ys[c])])})}),La.forEach(function(t){var i=ca[t.i];i&&(p+='<circle cx="'+n(i[0])+'" cy="'+n(i[1])+'" r="'+(Q+4)+'" fill="none" stroke="'+r.fg+'" stroke-width="1.5"/>'+P(F(i[0],d+30,d+M-30),i[1]-Q-9,t.text,w(r,10,'text-anchor="middle"',r.fg)))}),p},{summary:k+" points"+(J?" in "+l.length+" groups":"")})}I.table=function(a){var r=N(a.x),y=N(a.y),u=H(a.series),h=H(a.labels),e=r.length>1||u.length>0,f={decimals:a.decimals,compact:a.compact,lang:a.lang},l=[],m=0;return r.forEach(function(b,S){for(var z=y[S]||[],k=0;k<Math.min(b.length,z.length);k++,m++)l.push([h[m]||"#"+(m+1)].concat(e?[u[S]||"Group "+(S+1)]:[],[E(b[k],f),E(z[k],a)]))}),{head:["Point"].concat(e?["Group"]:[],[x(a.xLabel)?a.xLabel:"x",x(a.yLabel)?a.yLabel:"y"]),rows:l}};xa("scatter",I);ya("scatter");export{za as BezelChart,Oa as render,Pa as toSVG};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
var g={dark:{tile:"#15151d",bezel:"#000000",fg:"#f2f1f7",muted:"#8c8aa0",grid:"#2a2935",up:"#5EE6C8",down:"#F675A8",palette:["#9FA1FF","#F675A8","#5EE6C8","#FFC857","#7CC4FF","#FF8A5B"]},light:{tile:"#ffffff",bezel:"#000000",fg:"#17161f",muted:"#6b6980",grid:"#e8e6ef",up:"#12a383",down:"#d63f7c",palette:["#6E70F0","#E2508C","#16A884","#D99A0E","#2F8FE0","#EE6431"]}};var x="ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif",w="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace",W=0;function nt(t){return"bzc"+t+(++W).toString(36)+Math.random().toString(36).slice(2,6)}function h(t){return String(t??"").replace(/[&<>"']/g,function(e){return{"&":"&","<":"<",">":">",'"':""","'":"'"}[e]})}function s(t){return Math.round(t*100)/100}function u(t,e,r){return Math.max(e,Math.min(r,t))}function v(t,e){var r=parseFloat(t);return isFinite(r)?r:e}function c(t){return t!=null&&t!==""}function T(t){return Array.isArray(t)?t.map(function(e){var r=+e;return isFinite(r)?r:0}):c(t)?String(t).split(/[\s,;]+/).filter(Boolean).map(function(e){var r=+e;return isFinite(r)?r:0}):[]}function V(t){return Array.isArray(t)?t.map(String):c(t)?String(t).split(",").map(function(e){return e.trim()}):[]}function at(t){return Array.isArray(t)?Array.isArray(t[0])?t.map(T):[T(t)]:c(t)?String(t).split("|").map(T).filter(function(e){return e.length}):[]}function Y(t){return t.reduce(function(e,r){return e+r},0)}function ot(t,e,r){return String(t).length*e*(r?.6:.56)}function st(t,e){return t=String(t),t.length>e?t.slice(0,Math.max(1,e-1))+"\u2026":t}function C(t){return t===!0||t===""||t==="true"||t==="1"}function k(t,e,r){if(!isFinite(t))return"\u2013";var i=Math.abs(t),n;c(e.decimals)?n=u(parseInt(e.decimals,10)||0,0,6):n=t%1===0?0:i<10?2:i<100?1:0;var a={maximumFractionDigits:n,minimumFractionDigits:c(e.decimals)?n:0};(C(e.compact)||r)&&i>=1e4&&(a={notation:"compact",maximumFractionDigits:1});var o;try{o=new Intl.NumberFormat(e.lang||"en-GB",a).format(i)}catch{o=String(s(i))}return(t<0?"\u2212":"")+(e.prefix||"")+o+(e.suffix||"")}function lt(t,e){if(!t.length)return"";for(var r="M"+s(t[0][0])+","+s(t[0][1]),i=1;i<t.length;i++){var n=t[i-1],a=t[i];if(e)r+="L"+s(a[0])+","+s(a[1]);else{var o=(n[0]+a[0])/2;r+="C"+s(o)+","+s(n[1])+" "+s(o)+","+s(a[1])+" "+s(a[0])+","+s(a[1])}}return r}function p(t,e,r,i){return'<text x="'+s(t)+'" y="'+s(e)+'" '+(i||"")+">"+h(r)+"</text>"}function F(t,e,r,i){return'fill="'+(i||t.muted)+'" font-family="'+w+'" font-size="'+(e||10)+'"'+(r?" "+r:"")}function ct(t,e,r,i,n){return'<rect class="bzc-hit" x="'+s(t)+'" y="'+s(e)+'" width="'+s(Math.max(1,r))+'" height="'+s(Math.max(1,i))+'" fill="#000" fill-opacity="0" data-tip="'+h(n)+'"/>'}function ht(t,e,r){return t.animate?' class="'+e+'"'+(r?' style="animation-delay:'+s(r)+'s"':""):""}function ut(t,e){var r=V(t.color).filter(Boolean);return r.length?r:e.palette}function dt(t,e,r,i,n){return p(e+i/2,r+n/2+4,"No data yet",'text-anchor="middle" fill="'+t.muted+'" font-family="'+x+'" font-size="13"')}function ft(t,e){return c(t.notes)?String(t.notes).split(";").map(function(r){var i=r.indexOf(":");if(i<0)return null;var n=r.slice(0,i).trim(),a=r.slice(i+1).trim(),o=e.map(String).indexOf(n);return o<0&&String(parseInt(n,10))===n&&(o=parseInt(n,10)),o>=0&&a?{i:o,text:a}:null}).filter(Boolean):[]}function mt(t,e,r,i,n){var a=(c(t.goalLabel)?t.goalLabel:"Goal")+" "+k(v(t.goal,0),t);return'<line x1="'+s(r)+'" x2="'+s(i)+'" y1="'+s(n)+'" y2="'+s(n)+'" stroke="'+e.fg+'" stroke-opacity=".55" stroke-width="1.25" stroke-dasharray="4 4"/>'+p(i,n-5,a,F(e,10,'text-anchor="end"'))}function pt(t,e,r){var i=String(c(e.stat)?e.stat:r||"").toLowerCase();if(!i||i==="none"||!t.length)return null;var n=Y(t),a={last:t[t.length-1],total:n,sum:n,average:n/t.length,avg:n/t.length,max:Math.max.apply(null,t),min:Math.min.apply(null,t)};if(!(i in a))return null;var o=null;return i==="last"&&t.length>1&&e.delta!=="none"&&(o=t[t.length-1]-t[0]),{val:a[i],delta:o}}var N=["spark","line","area","bars","combo","histogram","boxplot","scatter","ring","donut","gauge","progress","heatmap"],z={};function wt(t,e){z[t]=e}var X=t=>t.replace(/-([a-z])/g,(e,r)=>r.toUpperCase());function U(t,e){if(!z[t])throw new Error(N.includes(t)?`Bezel Charts: the ${t} chart isn't loaded. Add import 'bezel-charts/${t}', or load dist/charts/${t}.js.`:`Bezel Charts: unknown chart type "${t}". Choose one of: ${N.join(", ")}.`);let r={};for(let[i,n]of Object.entries(e))r[X(i)]=n;return r}function A(t,e={}){let r=U(t,e);r.animate=C(r.animate),r.frame=r.frame==="none"?"none":"bezel";let i=r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme||"dark";return z[t](r,g[i])}function j(t,e={}){return z[t].table(U(t,e))}function $(t){return t.replace(/<rect class="bzc-hit"[^>]*\/>/g,"").replace(/<circle[^>]* class="bzc-hit"[^>]*\/>/g,"").replace(/ data-tip="[^"]*"/g,"")}function yt(t,e={}){return $(A(t,{...e,animate:!1}))}var q=["type","values","labels","series","heading","prefix","suffix","decimals","compact","color","theme","frame","width","height","goal","goal-label","notes","show-values","stat","delta","delta-label","max","min","value","zones","horizontal","straight","zero","start","lang","corners","background","center-label","highlight","x","y","x-label","y-label","trend","static","no-tooltips","stacked","angle-labels","dash","markers","patterns","bins","bin-width","mark","percent","whiskers","line","line-series","line-prefix","line-suffix","line-decimals","line-label","line-zero"],_=`:host{display:block;position:relative;max-width:100%}:host([hidden]){display:none}svg{display:block;max-width:100%;height:auto;overflow:visible}.tip{position:absolute;left:0;top:0;pointer-events:none;background:#0b0b10;color:#f2f1f7;font:600 12px/1.5 ${w};padding:7px 10px;border-radius:10px;white-space:pre;opacity:0;transform:translate(-50%,calc(-100% - 12px));transition:opacity .12s;z-index:3;border:1px solid #2a2935;box-shadow:0 8px 24px rgba(0,0,0,.35)}.tip.on{opacity:1}.c{outline:none}.c:focus-visible{outline:2px solid #fff;outline-offset:3px;box-shadow:0 0 0 7px #000}.k{stroke:currentColor;stroke-width:2;stroke-opacity:1}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media (forced-colors:active){.c:focus-visible{outline-color:Highlight}}`,Q={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1},J=()=>typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null,K=()=>{let t=typeof document<"u"&&document.documentElement?.getAttribute?.("data-theme");return t==="light"||t==="dark"?t:null},R=new Set;typeof MutationObserver=="function"&&typeof document<"u"&&document.documentElement&&new MutationObserver(()=>R.forEach(t=>t.refresh())).observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});var Z=typeof HTMLElement>"u"?class{}:HTMLElement,S=class extends Z{static get observedAttributes(){return q}static get themes(){return g}get resolvedTheme(){let e=this.getAttribute("theme");return e==="light"||e==="dark"?e:this.options.autoTheme}get chartType(){return this.getAttribute("type")||"spark"}connectedCallback(){this.shadowRoot||(this.attachShadow({mode:"open"}).innerHTML=`<style>${_}</style><div class="c" role="group" aria-roledescription="chart"></div><p class="sr" id="h">Use the arrow keys to step through the values.</p><div class="tip" aria-hidden="true"></div><div class="sr" aria-live="polite"></div><div class="sr"></div>`,[,this.#t,,this.#r,this.#s,this.#h]=this.shadowRoot.children,this.shadowRoot.addEventListener("pointermove",e=>this.#d(e)),this.shadowRoot.addEventListener("pointerdown",e=>this.#d(e)),this.addEventListener("pointerleave",()=>this.#r.classList.remove("on")),this.#t.addEventListener("keydown",e=>this.#g(e)),this.#t.addEventListener("blur",()=>this.#b())),R.add(this),this.#i=J(),this.#i?.addEventListener?.("change",this.#u),typeof ResizeObserver=="function"?(this.#o=new ResizeObserver(([e])=>{let r=Math.round(e.contentRect.width);(!this.#n||!this.hasAttribute("width")&&r>0&&Math.abs(r-this.#l)>1)&&this.#a()}),this.#o.observe(this)):this.#a()}disconnectedCallback(){R.delete(this),this.#o?.disconnect(),this.#i?.removeEventListener?.("change",this.#u)}attributeChangedCallback(){!this.#n||this.#c||(this.#c=!0,queueMicrotask(()=>{this.#c=!1,this.#a()}))}get options(){let e={};for(let r of q)this.hasAttribute(r)&&(e[r]=this.getAttribute(r));return e.width||(e.width=this.#l||360),e.autoTheme=K()||(this.#i?this.#i.matches?"dark":"light":"dark"),e}refresh(){this.#n&&this.#a()}toSVG(e={}){return $(A(this.chartType,{...this.options,...e,animate:!1}))}download(e){let r=URL.createObjectURL(new Blob([this.toSVG()],{type:"image/svg+xml"})),i=Object.assign(document.createElement("a"),{href:r,download:`${(e||this.getAttribute("heading")||this.chartType).replace(/[^\w-]+/g,"-").toLowerCase()}.svg`});document.body.append(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}#o=null;#t=null;#r=null;#s=null;#h=null;#e=-1;#i=null;#l=0;#n=!1;#c=!1;#u=()=>{let e=this.getAttribute("theme");(!e||e==="auto")&&this.refresh()};#a(){if(!this.shadowRoot)return;let e=Math.round(this.getBoundingClientRect?.().width||0);this.#l=e>0?e:360;let r=this.options;r.animate=!this.#n&&!this.hasAttribute("static");let i,n=null;try{i=A(this.chartType,r),n=j(this.chartType,r)}catch(d){i=`<p style="font:13px ${x};color:#d63f7c">${h(d.message)}</p>`}let a=this.#t;a.innerHTML=i.replace(/<title>[\s\S]*?<\/title>/,"");let o=a.querySelector("svg");o?(a.setAttribute("aria-label",o.getAttribute("aria-label")),o.removeAttribute("role"),o.removeAttribute("aria-label"),o.setAttribute("aria-hidden","true")):a.removeAttribute("aria-label");let l=!!o&&!this.hasAttribute("no-tooltips");l?(a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby","h")):(a.removeAttribute("tabindex"),a.removeAttribute("aria-describedby")),a.style.color=g[r.theme==="light"||r.theme==="dark"?r.theme:r.autoTheme].fg,a.style.borderRadius=`${r.frame==="none"?4:u(+r.corners||22,0,60)}px`,this.#h.innerHTML=n&&n.rows.length?tt(r.heading,n):"",this.#e>=0&&l&&this.shadowRoot.activeElement===a?this.#p(this.#e):this.#e=-1,this.#n=!0,this.dispatchEvent(new CustomEvent("bezel-render",{bubbles:!0}))}#d(e){if(this.hasAttribute("no-tooltips"))return;let r=e.target?.closest?.("[data-tip]");if(!r){this.#r.classList.remove("on");return}this.#f(r,e.clientX,e.clientY)}#f(e,r,i){let n=this.#r;n.textContent=e.getAttribute("data-tip");let a=this.getBoundingClientRect?.()||{left:0,top:0,width:0},o=n.offsetWidth/2;n.style.left=`${u(r-a.left,o,Math.max(o,a.width-o))}px`,n.style.top=`${i-a.top}px`,n.classList.add("on")}#m(){return[...this.#t.querySelectorAll("[data-tip]:not([data-skip])")]}#g(e){let r=this.#m(),i=r.length;if(!i)return;let n=this.#e,a=Q[e.key];if(a)this.chartType==="heatmap"&&/Left|Right/.test(e.key)&&(a*=7),n=n<0?a>0?0:i-1:u(n+a,0,i-1);else if(e.key==="Home"||e.key==="End")n=e.key==="Home"?0:i-1;else{e.key==="Escape"&&this.#b();return}e.preventDefault(),this.#p(n,!0)}#p(e,r){let i=this.#m();if(!i.length)return;e=u(e,0,i.length-1),this.#t.querySelector(".k")?.classList.remove("k");let n=i[e],a=n.getBoundingClientRect?.()||{left:0,top:0,width:0};n.classList.add("k"),this.#e=e,this.#f(n,a.left+a.width/2,a.top),r&&(this.#s.textContent=`${n.getAttribute("data-tip").replace(/\n/g,", ")}. ${e+1} of ${i.length}`)}#b(){this.#t.querySelector(".k")?.classList.remove("k"),this.#r.classList.remove("on"),this.#s.textContent="",this.#e=-1}};function tt(t,{head:e,rows:r}){let i=n=>n.map((a,o)=>o?`<td>${h(a)}</td>`:`<th scope="row">${h(a)}</th>`).join("");return`<table><caption>${h(t||"Chart data")}</caption><thead><tr>${e.map(n=>`<th scope="col">${h(n)}</th>`).join("")}</tr></thead><tbody>${r.map(n=>`<tr>${i(n)}</tr>`).join("")}</tbody></table>`}function St(t){typeof customElements>"u"||typeof HTMLElement>"u"||(customElements.get(`bezel-${t}`)||customElements.define(`bezel-${t}`,class extends S{get chartType(){return t}}),customElements.get("bezel-chart")||customElements.define("bezel-chart",class extends S{}))}function et(t){var e=Math.round(u(v(t.width,360),160,2400)),r=t.frame==="none"?0:4,i=t.frame==="none"?8:20;return{W:e,b:r,P:i,w:e-2*(r+i)}}var rt=".bzc-a{animation:bzc-in .6s ease both}.bzc-d{animation:bzc-draw 1.1s cubic-bezier(.3,.7,.2,1) both}.bzc-g{transform-box:fill-box;transform-origin:50% 100%;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gn{transform-box:fill-box;transform-origin:50% 0;animation:bzc-grow .7s cubic-bezier(.2,.8,.2,1) both}.bzc-gx{transform-box:fill-box;transform-origin:0 50%;animation:bzc-growx .8s cubic-bezier(.2,.8,.2,1) both}.bzc-s{animation:bzc-sweep 1.1s cubic-bezier(.2,.8,.2,1) both}@keyframes bzc-in{from{opacity:0}}@keyframes bzc-draw{from{stroke-dashoffset:1}}@keyframes bzc-grow{from{transform:scaleY(0)}}@keyframes bzc-growx{from{transform:scaleX(0)}}@keyframes bzc-sweep{from{stroke-dasharray:0 100}}@media (prefers-reduced-motion:reduce){[class^=bzc-]{animation:none!important}}";function Ft(t,e,r,i,n){var a=et(t),o=a.W,l=a.b,d=a.P,O=a.w,E=u(v(t.corners,22),0,60),f=l+d,y="";c(t.heading)&&(y+=p(l+d,f+10,String(t.heading).toUpperCase(),F(e,11,'font-weight="600" letter-spacing="1.3"')),f+=24);var m=n&&n.stat;if(m){if(y+=p(l+d,f+30,k(m.val,t),'fill="'+e.fg+'" font-family="'+x+'" font-size="32" font-weight="800" letter-spacing="-0.5"'),m.delta!=null){var M=m.delta>0,H=m.delta===0,I=t.delta==="inverse"?!M:M,D=H?e.muted:I?e.up:e.down,P=(H?"\u25CF ":M?"\u25B2 ":"\u25BC ")+k(Math.abs(m.delta),t)+" "+(c(t.deltaLabel)?t.deltaLabel:"since start");y+=p(l+d+O,f+28,P,'text-anchor="end" fill="'+D+'" font-family="'+w+'" font-size="11" font-weight="600"')}f+=44}var G=i(l+d,f,O,r),b=Math.round(f+r+d+l),L="";t.frame!=="none"?L='<rect width="'+o+'" height="'+b+'" rx="'+E+'" fill="'+e.bezel+'"/><rect x="'+l+'" y="'+l+'" width="'+(o-2*l)+'" height="'+(b-2*l)+'" rx="'+Math.max(0,E-l)+'" fill="'+(t.background||e.tile)+'"/>':c(t.background)&&(L='<rect width="'+o+'" height="'+b+'" rx="'+E+'" fill="'+t.background+'"/>');var B=(c(t.heading)?t.heading+": ":"")+(n&&n.summary||"chart");return'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 '+o+" "+b+'" width="'+o+'" height="'+b+'" role="img" aria-label="'+h(B)+'"><title>'+h(B)+"</title>"+(t.animate?"<style>"+rt+"</style>":"")+L+y+G+"</svg>"}export{x as a,w as b,nt as c,h as d,s as e,u as f,v as g,c as h,T as i,V as j,at as k,Y as l,ot as m,st as n,C as o,k as p,lt as q,p as r,F as s,ct as t,ht as u,ut as v,dt as w,ft as x,mt as y,pt as z,et as A,Ft as B,wt as C,A as D,yt as E,S as F,St as G};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as q,b as B,c as C,g as Y}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as q,b as B,c as C,g as Y}from"./shared-Y6MBWBOE.js";import{e as p,f as H,h as L,m as S,r as M,s as b,t as K,u as X,y as W}from"./shared-6SF4EQMI.js";function Q(e,t,r,i,l,h,u){var a="",n=l,s=r.n,k=r.labels;if(r.names){var c=B(r.names,r.pal,t,i,n,h,r.key,r.kw);a+=c.svg,n+=c.height}var f=r.lo,v=r.hi;L(e.goal)&&(f=Math.min(f,+e.goal),v=Math.max(v,+e.goal)),r.zero&&(f=Math.min(0,f),v=Math.max(0,v));var g=q(f,v,4),F=g.ticks.map(r.tick),A=Math.max.apply(null,F.map(function(o){return S(o,10,!0)}))+10,G=k.length?20:4,m=i+A,d=h-A,y=u-(n-l)-G,z=function(o){return s===1?m+d/2:m+o*d/(s-1)},D=function(o){return n+y-(o-g.lo)/(g.hi-g.lo)*y};if(g.ticks.forEach(function(o,w){var E=D(o);a+='<line x1="'+p(m)+'" x2="'+p(m+d)+'" y1="'+p(E)+'" y2="'+p(E)+'" stroke="'+t.grid+'"'+(o===0?"":' stroke-dasharray="2 4"')+"/>"+M(m-8,E+3.5,F[w],b(t,10,'text-anchor="end"'))}),k.length){for(var I=Math.max(1,Math.ceil(s*(Math.max.apply(null,k.map(function(o){return S(o,10,!0)}))+10)/d)),x=0;x<s;x+=I)if(k[x]!=null){var J=s>1&&x===0?"start":s>1&&x===s-1?"end":"middle";a+=M(z(x),n+y+15,k[x],b(t,10,'text-anchor="'+J+'"'))}}return r.notes.forEach(function(o){if(!(o.i>=s)){var w=z(o.i);a+='<line x1="'+p(w)+'" x2="'+p(w)+'" y1="'+p(n+12)+'" y2="'+p(n+y)+'" stroke="'+t.fg+'" stroke-opacity=".4" stroke-dasharray="3 3"/>'+M(H(w,m+30,m+d-30),n+8,o.text,b(t,10,'text-anchor="middle"',t.fg))}}),{svg:a,X:z,Y:D,px:m,pw:d,top:n,ph:y}}function R(e,t,r,i,l){for(var h=L(e.goal)?W(e,t,r.px,r.px+r.pw,r.Y(+e.goal)):"",u=i>1?r.pw/(i-1):r.pw,a=0;a<i;a++)h+=K(r.X(a)-u/2,r.top,u,r.ph,l(a));return h}function T(e,t,r,i){return function(l,h,u){var a=e[l%e.length],n=t?C[t(l)]:"",s=r?r(l):"none";return'<line x1="'+p(h)+'" x2="'+p(h+18)+'" y1="'+p(u+6)+'" y2="'+p(u+6)+'" stroke="'+a+'" stroke-width="2.5" stroke-linecap="round"'+(n?' stroke-dasharray="'+n+'"':"")+"/>"+(s!=="none"?Y(s,h+9,u+6,3.5,' fill="'+a+'" stroke="'+i+'" stroke-width="1.5"'):"")}}function U(e,t,r,i,l){return l?'<path d="'+t+'" fill="none" stroke="'+r+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="'+l+'"'+X(e,"bzc-a",i*.15)+"/>":'<path d="'+t+'" fill="none" stroke="'+r+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1'+(e.animate?";animation-delay:"+i*.15+"s":"")+'"'+(e.animate?' class="bzc-d"':"")+"/>"}function V(e,t,r,i,l,h,u,a){var n="",s=Math.ceil(r.length/40);return r.forEach(function(k,c){(c%s===0||c===r.length-1)&&(n+=Y(t,i(c),l(k),3.5,' fill="'+h+'" stroke="'+u+'" stroke-width="1.5"'+X(e,"bzc-a",.6+a*.15)))}),n}export{Q as a,R as b,T as c,U as d,V as e};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{a as w,e,j as d,k as x,m as g,p as v,r as L}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{a as w,e,j as d,k as x,m as g,p as v,r as L}from"./shared-6SF4EQMI.js";function m(r,t,a){if(r===t)if(r===0)t=1;else{var n=Math.abs(r)*.1;r-=n,t+=n}for(var l=(t-r)/(a||4),i=Math.pow(10,Math.floor(Math.log10(l))),u=l/i,o=(u<=1?1:u<=2?2:u<=5?5:10)*i,f=Math.floor(r/o)*o,h=Math.ceil(t/o)*o,s=[],c=f;c<=h+o/2;c+=o)s.push(+c.toFixed(10));return{lo:f,hi:h,ticks:s}}function E(r,t,a,n,l,i,u,o){var f=n,h=l,s="",c=o||13;return r.forEach(function(p,M){var S=c+g(p,12)+16;f>n&&f+S-16>n+i&&(f=n,h+=20),s+=(u?u(M,f,h):'<circle cx="'+e(f+4)+'" cy="'+e(h+6)+'" r="4" fill="'+t[M%t.length]+'"/>')+L(f+c,h+10,p,'fill="'+a.fg+'" font-family="'+w+'" font-size="12"'),f+=S}),{svg:s,height:h-l+24}}var T={solid:"",dashed:"7 5",dotted:"1 5",dashdot:"9 4 1 4"},A=["circle","square","triangle","diamond"],H=["solid","stripes","dots","grid"];function O(r,t,a){if(r==null||r===!1||r==="none"||r==="false")return null;var n=r===!0||r===""||r==="auto"?t:d(r).map(function(l){return t.indexOf(l)<0?a:l});return n.length?function(l){return n[l%n.length]}:null}function q(r,t,a,n,l){var i=n*1.15,u=n*.85;return r==="square"?'<rect x="'+e(t-u)+'" y="'+e(a-u)+'" width="'+e(2*u)+'" height="'+e(2*u)+'" rx="1"'+l+"/>":r==="triangle"?'<path d="M'+e(t)+","+e(a-i)+"L"+e(t+i)+","+e(a+u)+"L"+e(t-i)+","+e(a+u)+'Z"'+l+"/>":r==="diamond"?'<path d="M'+e(t)+","+e(a-i*1.1)+"L"+e(t+i)+","+e(a)+"L"+e(t)+","+e(a+i*1.1)+"L"+e(t-i)+","+e(a)+'Z"'+l+"/>":'<circle cx="'+e(t)+'" cy="'+e(a)+'" r="'+e(n)+'"'+l+"/>"}function N(r,t,a,n){var l=' stroke="'+n+'" stroke-opacity=".55" stroke-width="1.5"';return'<pattern id="'+r+'" width="6" height="6" patternUnits="userSpaceOnUse"'+(t==="dots"?"":' patternTransform="rotate(45)"')+'><rect width="6" height="6" fill="'+a+'"/>'+(t==="dots"?'<circle cx="3" cy="3" r="1.3" fill="'+n+'" fill-opacity=".55"/>':'<path d="M3,0V6'+(t==="grid"?"M0,3H6":"")+'"'+l+"/>")+"</pattern>"}function P(r){return Math.max.apply(null,r.map(function(t){return g(t,10,!0)}))+10}function U(r,t){for(var a=x(r.values),n=d(r.series),l=d(r.labels),i=[],u=Math.max.apply(null,[0].concat(a.map(function(c){return c.length}))),o=0;o<u;o++){var f=[l[o]||"#"+(o+1)],h=0;a.forEach(function(c){f.push(o<c.length?v(c[o],r):""),h+=o<c.length?c[o]:0}),t&&f.push(v(h,r)),i.push(f)}var s=a.length>1||n.length?a.map(function(c,p){return n[p]||"Series "+(p+1)}):["Value"];return{head:["Label"].concat(s,t?["Total"]:[]),rows:i}}export{m as a,E as b,T as c,A as d,H as e,O as f,q as g,N as h,P as i,U as j};
|
package/dist/charts/spark.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! Bezel Charts v1.
|
|
2
|
-
import{B as H,C as J,D as U,E as W,F as _,G as K,c as I,e as n,f as N,g as P,h as y,i as b,j as x,o as L,p as h,q as X,r as M,s as E,t as Y,u as z,v as Z,w as q,x as A,y as D,z as F}from"./shared-
|
|
1
|
+
/*! Bezel Charts v1.7.0 | MIT | github.com/ShazMoghaddam/bezel-charts */
|
|
2
|
+
import{B as H,C as J,D as U,E as W,F as _,G as K,c as I,e as n,f as N,g as P,h as y,i as b,j as x,o as L,p as h,q as X,r as M,s as E,t as Y,u as z,v as Z,w as q,x as A,y as D,z as F}from"./shared-6SF4EQMI.js";function k(t,l){var r=b(t.values),o=Z(t,l)[0],Q=P(t.height,64),G=x(t.labels),R=A(t,G),T=F(r,t,"last");return H(t,l,Q,function(i,c,p,f){if(!r.length)return q(l,i,c,p,f);var v=r.length===1?[r[0],r[0]]:r,u=Math.min.apply(null,v),m=Math.max.apply(null,v);y(t.goal)&&(u=Math.min(u,+t.goal),m=Math.max(m,+t.goal));var V=(m-u||Math.abs(m)||1)*.12;u-=V,m+=V;var O=function(a){return i+a*p/(v.length-1)},S=function(a){return c+f-(a-u)/(m-u)*f},d=v.map(function(a,e){return[O(e),S(a)]}),j=X(d,L(t.straight)),B=I("g"),g=d[d.length-1],s='<defs><linearGradient id="'+B+'" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="'+o+'" stop-opacity=".32"/><stop offset="1" stop-color="'+o+'" stop-opacity="0"/></linearGradient></defs>';[1/3,2/3].forEach(function(a){s+='<line x1="'+i+'" x2="'+(i+p)+'" y1="'+n(c+f*a)+'" y2="'+n(c+f*a)+'" stroke="'+l.grid+'" stroke-dasharray="2 4"/>'}),s+='<path d="'+j+"L"+n(g[0])+","+(c+f)+"L"+i+","+(c+f)+'Z" fill="url(#'+B+')"'+z(t,"bzc-a")+"/>",s+='<path d="'+j+'" fill="none" stroke="'+o+'" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" pathLength="1" style="stroke-dasharray:1"'+z(t,"bzc-d")+"/>",y(t.goal)&&(s+=D(t,l,i,i+p,S(+t.goal))),R.forEach(function(a){if(!(a.i>=r.length)){var e=d[a.i];s+='<circle cx="'+n(e[0])+'" cy="'+n(e[1])+'" r="3.5" fill="'+l.fg+'"/>'+M(N(e[0],i+30,i+p-30),e[1]-9,a.text,E(l,10,'text-anchor="middle"',l.fg))}}),s+='<circle cx="'+n(g[0])+'" cy="'+n(g[1])+'" r="9" fill="'+o+'" fill-opacity=".25"/><circle cx="'+n(g[0])+'" cy="'+n(g[1])+'" r="4.5" fill="'+o+'"/>',L(t.showValues)&&d.forEach(function(a,e){e<r.length&&(s+=M(a[0],a[1]-8,h(r[e],t,!0),E(l,9,'text-anchor="middle"')))});var C=r.length>1?p/(r.length-1):p;return r.forEach(function(a,e){s+=Y(O(e)-C/2,c-6,C,f+12,(G[e]||"#"+(e+1))+": "+h(a,t))}),s},{stat:T,summary:r.length?"latest "+h(r[r.length-1],t):"no data"})}k.table=function(t){var l=x(t.labels);return{head:["Label","Value"],rows:b(t.values).map(function(r,o){return[l[o]||"#"+(o+1),h(r,t)]})}};J("spark",k);K("spark");export{_ as BezelChart,U as render,W as toSVG};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bezel-charts",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Small, polished charts as zero-dependency web components. Sparklines, lines, areas, bars, histograms, box plots, rings, donuts, gauges, progress bars and heatmaps, with one-click static SVG export for READMEs.",
|
|
3
|
+
"version": "1.7.0",
|
|
4
|
+
"description": "Small, polished charts as zero-dependency web components. Sparklines, lines, areas, bars, bar and line combos, histograms, box plots, rings, donuts, gauges, progress bars and heatmaps, with one-click static SVG export for READMEs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/bezel-charts.js",
|
|
7
7
|
"module": "dist/bezel-charts.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"./line": "./dist/charts/line.js",
|
|
12
12
|
"./area": "./dist/charts/area.js",
|
|
13
13
|
"./bars": "./dist/charts/bars.js",
|
|
14
|
+
"./combo": "./dist/charts/combo.js",
|
|
14
15
|
"./histogram": "./dist/charts/histogram.js",
|
|
15
16
|
"./boxplot": "./dist/charts/boxplot.js",
|
|
16
17
|
"./scatter": "./dist/charts/scatter.js",
|
|
@@ -44,7 +45,9 @@
|
|
|
44
45
|
"readme",
|
|
45
46
|
"data-visualization",
|
|
46
47
|
"histogram",
|
|
47
|
-
"boxplot"
|
|
48
|
+
"boxplot",
|
|
49
|
+
"combo-chart",
|
|
50
|
+
"dual-axis"
|
|
48
51
|
],
|
|
49
52
|
"author": "Shaz Moghaddam (https://shazmoghaddam.github.io)",
|
|
50
53
|
"license": "MIT",
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { newId, r2, num, has, list, series, bool, fmt, tw, text, small, hit, anim, palette, emptyState, pathOf } from '../core/util.js';
|
|
2
|
+
import { niceScale, legend, styleOf, pattern, marker, DASHES, SHAPES, PATTERNS } from '../core/series.js';
|
|
3
|
+
import { seriesLine, pointMarks } from '../core/xy.js';
|
|
4
|
+
import { tile } from '../core/tile.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Bars and lines with different units on one chart: bars read against the left axis, lines against the right.
|
|
8
|
+
* The right axis gets the same number of steps as the left, so every gridline reads on both sides, and each axis
|
|
9
|
+
* carries a coloured rule matching its data. Several bar series sit side by side, or pile up with `stacked`.
|
|
10
|
+
*/
|
|
11
|
+
export default function combo(o, th) {
|
|
12
|
+
var B = series(o.values), L = series(o.line), pal = palette(o, th), k = B.length, m = L.length;
|
|
13
|
+
var labels = list(o.labels), bnames = list(o.series), lnames = list(o.lineSeries), stacked = k > 1 && bool(o.stacked);
|
|
14
|
+
var n = Math.max.apply(null, [0].concat(B.concat(L).map(function (s) { return s.length; })));
|
|
15
|
+
var lo = lineOpts(o), h = num(o.height, 200);
|
|
16
|
+
var barName = function (j) { return bnames[j] || (k === 1 ? 'Bars' : 'Bars ' + (j + 1)); };
|
|
17
|
+
var lineName = function (j) { return lnames[j] || (m === 1 ? 'Line' : 'Line ' + (j + 1)); };
|
|
18
|
+
var barCol = function (j) { return pal[j % pal.length]; }, lineCol = function (j) { return pal[(k + j) % pal.length]; };
|
|
19
|
+
var val = function (s, i) { return i < s.length ? s[i] : 0; };
|
|
20
|
+
|
|
21
|
+
var dashOf = styleOf(o.dash, Object.keys(DASHES), 'solid'), markOf = styleOf(o.markers, SHAPES, 'none');
|
|
22
|
+
var patOf = k > 1 ? styleOf(o.patterns, PATTERNS, 'solid') : null, bg = o.background || th.tile, defs = '', fills = [];
|
|
23
|
+
for (var q = 0; patOf && q < k; q++) {
|
|
24
|
+
if (patOf(q) === 'solid') continue;
|
|
25
|
+
var pid = newId('g');
|
|
26
|
+
defs += pattern(pid, patOf(q), barCol(q), bg);
|
|
27
|
+
fills[q] = 'url(#' + pid + ')';
|
|
28
|
+
}
|
|
29
|
+
// The legend shows a bar swatch for each bar series and a short line for each line.
|
|
30
|
+
var key = function (e, x, y) {
|
|
31
|
+
if (e < k) return '<rect x="' + r2(x) + '" y="' + r2(y + 1) + '" width="10" height="10" rx="2" fill="' + (fills[e] || barCol(e)) + '"/>';
|
|
32
|
+
var j = e - k, c = lineCol(j), dk = dashOf ? DASHES[dashOf(j)] : '', mk = markOf ? markOf(j) : 'none';
|
|
33
|
+
return '<line x1="' + r2(x) + '" x2="' + r2(x + 18) + '" y1="' + r2(y + 6) + '" y2="' + r2(y + 6) + '" stroke="' + c + '" stroke-width="2.5" stroke-linecap="round"' +
|
|
34
|
+
(dk ? ' stroke-dasharray="' + dk + '"' : '') + '/>' + (mk !== 'none' ? marker(mk, x + 9, y + 6, 3.5, ' fill="' + c + '" stroke="' + bg + '" stroke-width="1.5"') : '');
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Each column's bar extent: side by side, or piled up with positive parts above zero and negative parts below.
|
|
38
|
+
var tops = [], bottoms = [];
|
|
39
|
+
for (var i = 0; i < n; i++) {
|
|
40
|
+
var up = 0, down = 0;
|
|
41
|
+
B.forEach(function (s) {
|
|
42
|
+
var v = val(s, i);
|
|
43
|
+
if (stacked) { if (v >= 0) up += v; else down += v; }
|
|
44
|
+
else { up = Math.max(up, v); down = Math.min(down, v); }
|
|
45
|
+
});
|
|
46
|
+
tops.push(up); bottoms.push(down);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return tile(o, th, h, function (x0, y0, w, h) {
|
|
50
|
+
if (!n || !k) return emptyState(th, x0, y0, w, h);
|
|
51
|
+
var s = defs ? '<defs>' + defs + '</defs>' : '', top = y0;
|
|
52
|
+
var lg = legend(B.map(function (_, j) { return barName(j); }).concat(L.map(function (_, j) { return lineName(j); })), pal, th, x0, top, w, key, 24);
|
|
53
|
+
s += lg.svg;
|
|
54
|
+
top += lg.height;
|
|
55
|
+
var titled = has(o.yLabel) || has(o.lineLabel);
|
|
56
|
+
if (titled) top += 16;
|
|
57
|
+
// Left axis: bars, always including zero. Right axis: lines, with the same number of steps.
|
|
58
|
+
var sc = niceScale(Math.min.apply(null, bottoms), Math.max.apply(null, tops), 4), steps = sc.ticks.length - 1;
|
|
59
|
+
var all = [].concat.apply([], L);
|
|
60
|
+
var lmin = Math.min.apply(null, all), lmax = Math.max.apply(null, all);
|
|
61
|
+
if (bool(o.lineZero)) { lmin = Math.min(0, lmin); lmax = Math.max(0, lmax); }
|
|
62
|
+
var sc2 = m ? matched(lmin, lmax, steps) : null;
|
|
63
|
+
var tl = sc.ticks.map(function (t) { return fmt(t, o, true); }), tr = sc2 ? sc2.ticks.map(function (t) { return fmt(t, lo, true); }) : [];
|
|
64
|
+
var lw = Math.max.apply(null, tl.map(function (t) { return tw(t, 10, true); })) + 10;
|
|
65
|
+
var rw = sc2 ? Math.max.apply(null, tr.map(function (t) { return tw(t, 10, true); })) + 10 : 0;
|
|
66
|
+
var px = x0 + lw, pw = w - lw - rw, ph = h - (top - y0) - (labels.length ? 20 : 4), band = pw / n;
|
|
67
|
+
var X = function (i) { return px + band * (i + 0.5); };
|
|
68
|
+
var Y = function (v) { return top + ph - (v - sc.lo) / (sc.hi - sc.lo) * ph; };
|
|
69
|
+
var Y2 = function (v) { return top + ph - (v - sc2.lo) / (sc2.hi - sc2.lo) * ph; };
|
|
70
|
+
sc.ticks.forEach(function (t, i) {
|
|
71
|
+
var y = Y(t);
|
|
72
|
+
s += '<line x1="' + r2(px) + '" x2="' + r2(px + pw) + '" y1="' + r2(y) + '" y2="' + r2(y) + '" stroke="' + th.grid + '"' + (t === 0 ? '' : ' stroke-dasharray="2 4"') + '/>' +
|
|
73
|
+
text(px - 8, y + 3.5, tl[i], small(th, 10, 'text-anchor="end"')) + (sc2 ? text(px + pw + 8, y + 3.5, tr[i], small(th, 10, 'text-anchor="start"')) : '');
|
|
74
|
+
});
|
|
75
|
+
// A rule down each side in its data's colour, and titles above, so it's clear which axis belongs to what.
|
|
76
|
+
// With several series on one side, the rule takes the theme's text colour instead.
|
|
77
|
+
var leftC = k === 1 ? barCol(0) : th.muted, rightC = m === 1 ? lineCol(0) : th.muted;
|
|
78
|
+
s += '<line x1="' + r2(px) + '" x2="' + r2(px) + '" y1="' + r2(top) + '" y2="' + r2(top + ph) + '" stroke="' + leftC + '" stroke-width="2"/>';
|
|
79
|
+
if (sc2) s += '<line x1="' + r2(px + pw) + '" x2="' + r2(px + pw) + '" y1="' + r2(top) + '" y2="' + r2(top + ph) + '" stroke="' + rightC + '" stroke-width="2"/>';
|
|
80
|
+
if (has(o.yLabel)) s += text(x0, top - 8, o.yLabel, small(th, 10, '', k === 1 ? leftC : th.fg));
|
|
81
|
+
if (has(o.lineLabel) && sc2) s += text(x0 + w, top - 8, o.lineLabel, small(th, 10, 'text-anchor="end"', m === 1 ? rightC : th.fg));
|
|
82
|
+
if (labels.length) {
|
|
83
|
+
var every = Math.max(1, Math.ceil((Math.max.apply(null, labels.map(function (l) { return tw(l, 10, true); })) + 10) / band));
|
|
84
|
+
for (i = 0; i < n; i += every) if (labels[i] != null) s += text(X(i), top + ph + 15, labels[i], small(th, 10, 'text-anchor="middle"'));
|
|
85
|
+
}
|
|
86
|
+
// Bars: side by side within each column, or one pile per column.
|
|
87
|
+
var gw = band * 0.72, bw = stacked ? gw : gw / k;
|
|
88
|
+
for (i = 0; i < n; i++) {
|
|
89
|
+
var up = 0, down = 0;
|
|
90
|
+
B.forEach(function (ser, j) {
|
|
91
|
+
if (i >= ser.length) return;
|
|
92
|
+
var v = ser[i], a, b, x = stacked ? X(i) - gw / 2 : X(i) - gw / 2 + j * bw;
|
|
93
|
+
if (stacked) { if (v >= 0) { a = up; up += v; b = up; } else { a = down; down += v; b = down; } }
|
|
94
|
+
else { a = 0; b = v; }
|
|
95
|
+
var ya = Y(a), yb = Y(b);
|
|
96
|
+
s += '<rect x="' + r2(x + 0.5) + '" y="' + r2(Math.min(ya, yb)) + '" width="' + r2(Math.max(1, bw - 1)) + '" height="' + r2(Math.abs(yb - ya)) + '" rx="2" fill="' + (fills[j] || barCol(j)) + '"' +
|
|
97
|
+
anim(o, v < 0 ? 'bzc-gn' : 'bzc-g', Math.min(0.6, i * 0.04)) + '/>';
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// Lines over the bars, on the right axis.
|
|
101
|
+
L.forEach(function (ser, j) {
|
|
102
|
+
var c = lineCol(j), P = ser.map(function (v, i) { return [X(i), Y2(v)]; }), mk = markOf ? markOf(j) : 'none';
|
|
103
|
+
s += seriesLine(o, pathOf(P, bool(o.straight)), c, j, dashOf ? DASHES[dashOf(j)] : '');
|
|
104
|
+
if (mk !== 'none') s += pointMarks(o, mk, ser, X, Y2, c, bg, j);
|
|
105
|
+
else s += '<circle cx="' + r2(P[P.length - 1][0]) + '" cy="' + r2(P[P.length - 1][1]) + '" r="4" fill="' + c + '" stroke="' + bg + '" stroke-width="2"/>';
|
|
106
|
+
});
|
|
107
|
+
for (i = 0; i < n; i++) {
|
|
108
|
+
var tip = labels[i] || '#' + (i + 1), t = 0;
|
|
109
|
+
B.forEach(function (ser, j) { if (i < ser.length) { tip += '\n' + barName(j) + ': ' + fmt(ser[i], o); t += ser[i]; } });
|
|
110
|
+
if (stacked) tip += '\nTotal: ' + fmt(t, o);
|
|
111
|
+
L.forEach(function (ser, j) { if (i < ser.length) tip += '\n' + lineName(j) + ': ' + fmt(ser[i], lo); });
|
|
112
|
+
s += hit(X(i) - band / 2, top, band, ph, tip);
|
|
113
|
+
}
|
|
114
|
+
return s;
|
|
115
|
+
}, { summary: k + ' bar series' + (stacked ? ' stacked' : '') + ' and ' + m + (m === 1 ? ' line' : ' lines') + ' over ' + n + ' points' });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
combo.table = function (o) {
|
|
119
|
+
var B = series(o.values), L = series(o.line), labels = list(o.labels), bn = list(o.series), ln = list(o.lineSeries);
|
|
120
|
+
var k = B.length, m = L.length, stacked = k > 1 && bool(o.stacked), lo = lineOpts(o), rows = [];
|
|
121
|
+
var n = Math.max.apply(null, [0].concat(B.concat(L).map(function (s) { return s.length; })));
|
|
122
|
+
for (var i = 0; i < n; i++) {
|
|
123
|
+
var row = [labels[i] || '#' + (i + 1)], t = 0;
|
|
124
|
+
B.forEach(function (s) { row.push(i < s.length ? fmt(s[i], o) : ''); t += i < s.length ? s[i] : 0; });
|
|
125
|
+
if (stacked) row.push(fmt(t, o));
|
|
126
|
+
L.forEach(function (s) { row.push(i < s.length ? fmt(s[i], lo) : ''); });
|
|
127
|
+
rows.push(row);
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
head: ['Label'].concat(B.map(function (_, j) { return bn[j] || (k === 1 ? 'Bars' : 'Bars ' + (j + 1)); }), stacked ? ['Total'] : [],
|
|
131
|
+
L.map(function (_, j) { return ln[j] || (m === 1 ? 'Line' : 'Line ' + (j + 1)); })),
|
|
132
|
+
rows: rows,
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/** Number formatting for the line's axis and values, from line-prefix, line-suffix and line-decimals. */
|
|
137
|
+
function lineOpts(o) {
|
|
138
|
+
return { prefix: o.linePrefix, suffix: o.lineSuffix, decimals: o.lineDecimals, compact: o.compact, lang: o.lang };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* A round scale over min to max with exactly n steps, so its gridlines match another axis. Steps grow through
|
|
143
|
+
* 1, 2 and 5 times powers of ten until n of them reach from a round start past max.
|
|
144
|
+
*/
|
|
145
|
+
function matched(min, max, n) {
|
|
146
|
+
if (min === max) {
|
|
147
|
+
if (min === 0) max = 1;
|
|
148
|
+
else { var p = Math.abs(min) * 0.1; min -= p; max += p; }
|
|
149
|
+
}
|
|
150
|
+
var mag = Math.pow(10, Math.floor(Math.log10((max - min) / n))), steps = [1, 2, 5, 10], i = 0, step, lo;
|
|
151
|
+
for (;;) {
|
|
152
|
+
step = steps[i] * mag;
|
|
153
|
+
lo = Math.floor(min / step) * step;
|
|
154
|
+
if (lo + n * step >= max - step * 1e-9) break;
|
|
155
|
+
if (++i === 4) { i = 1; mag *= 10; }
|
|
156
|
+
}
|
|
157
|
+
var ticks = [];
|
|
158
|
+
for (var t = 0; t <= n; t++) ticks.push(+(lo + t * step).toFixed(10));
|
|
159
|
+
return { lo: ticks[0], hi: ticks[n], ticks: ticks };
|
|
160
|
+
}
|
package/src/element.js
CHANGED
|
@@ -7,7 +7,7 @@ export const ATTRIBUTES = [
|
|
|
7
7
|
'type', 'values', 'labels', 'series', 'heading', 'prefix', 'suffix', 'decimals', 'compact', 'color', 'theme', 'frame',
|
|
8
8
|
'width', 'height', 'goal', 'goal-label', 'notes', 'show-values', 'stat', 'delta', 'delta-label', 'max', 'min', 'value',
|
|
9
9
|
'zones', 'horizontal', 'straight', 'zero', 'start', 'lang', 'corners', 'background', 'center-label', 'highlight',
|
|
10
|
-
'x', 'y', 'x-label', 'y-label', 'trend', 'static', 'no-tooltips', 'stacked', 'angle-labels', 'dash', 'markers', 'patterns', 'bins', 'bin-width', 'mark', 'percent', 'whiskers',
|
|
10
|
+
'x', 'y', 'x-label', 'y-label', 'trend', 'static', 'no-tooltips', 'stacked', 'angle-labels', 'dash', 'markers', 'patterns', 'bins', 'bin-width', 'mark', 'percent', 'whiskers', 'line', 'line-series', 'line-prefix', 'line-suffix', 'line-decimals', 'line-label', 'line-zero',
|
|
11
11
|
];
|
|
12
12
|
|
|
13
13
|
const HOST_CSS =
|