usage-board 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/dist/public/_nuxt/4bxbFgue.js +260 -0
- package/dist/public/_nuxt/{D9KD20BD.js → BFuazmgM.js} +1 -1
- package/dist/public/_nuxt/{f_iPFAtL.js → BT5lZ84X.js} +1 -1
- package/dist/public/_nuxt/BWrHX8SV.js +21 -0
- package/dist/public/_nuxt/Bhg6RTpr.js +25 -0
- package/dist/public/_nuxt/CBNzCW3N.js +9 -0
- package/dist/public/_nuxt/CJwUiTrM.js +1 -0
- package/dist/public/_nuxt/DJtZPkAh.js +1 -0
- package/dist/public/_nuxt/DhnbCV8M.js +1 -0
- package/dist/public/_nuxt/{DsWoOjFk.js → Rw8uLrAX.js} +1 -1
- package/dist/public/_nuxt/builds/latest.json +1 -1
- package/dist/public/_nuxt/builds/meta/8e0230d2-a165-4dfa-b759-5387bcb88e4e.json +1 -0
- package/dist/public/_nuxt/entry.r-q4oQC0.css +1 -0
- package/dist/public/_nuxt/uC637M1z.js +119 -0
- package/dist/server/chunks/build/client.precomputed.mjs +1 -1
- package/dist/server/chunks/nitro/nitro.mjs +113 -88
- package/package.json +2 -2
- package/dist/public/_nuxt/B-CIibMz.js +0 -25
- package/dist/public/_nuxt/BFLIXB9O.js +0 -9
- package/dist/public/_nuxt/BNPuv5_2.js +0 -119
- package/dist/public/_nuxt/Brp07rVz.js +0 -3
- package/dist/public/_nuxt/Bvg0CuDs.js +0 -258
- package/dist/public/_nuxt/CvpNFEwm.js +0 -1
- package/dist/public/_nuxt/D3pogf62.js +0 -1
- package/dist/public/_nuxt/DUfyK9T8.js +0 -21
- package/dist/public/_nuxt/builds/meta/38460625-fa40-4f13-86da-ddec4bfb4ab8.json +0 -1
- package/dist/public/_nuxt/entry.CJkVK2j6.css +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import{K as fe,L as ve,M as At,N as Z,O as be,Q as Ht,R as lt,U as N,W,X as Nt,Y as z,Z as _t,$ as pt,a0 as $t,a1 as Yt,a2 as V,a3 as ye,a4 as Kt,a5 as _e,a6 as ke,a7 as xe,a8 as Qt,a9 as X,aa as Jt,ab as Se,ac as Te,ad as it,ae as Dt,af as Ae,ag as Mt,ah as $e,ai as Xt,aj as xt,ak as De,al as Ce,am as we,an as te,ao as Re,ap as Me,aq as Le,ar as Ue,as as Oe,at as Et,au as Pt,av as Ee,aw as Pe,ax as ee,I as jt,S as je,f as qt,z as ae,_ as ne,n as tt,g as Y,o as rt,q as Ve,ay as Ie,k as Zt,az as Fe,aA as Lt,p as We,aB as ze,s as Be,t as Ge,v as He,w as Ne,x as Ye,y as Ke,B as Xe,m as Q,H as qe,G as Ze,F as Qe}from"./4bxbFgue.js";import{_ as Je,a as ta,b as ea}from"./Bhg6RTpr.js";import{z as et,G as aa,p as na,i as mt,v as Vt,o as F,c as K,C as sa,E as oa,r as It,ai as Ct,ag as wt,ad as se,Q as oe,n as le,h as $,B as ht,w as M,a as U,t as j,b as S,D as C,K as St,J as Tt,S as Ft,Y as la,a9 as ia,d as I,a3 as ra,I as ca,a4 as ua}from"./CBNzCW3N.js";const da=Object.assign(Object.assign({},fe),{tooltip:void 0,annotations:void 0});class ga extends ve{constructor(e,t,n){var l;super(e),this._defaultConfig=da,this.config=this._defaultConfig,t&&(this.updateContainer(t,!0),this.component=t.component),n&&this.setData(n,!0),!((l=this.component)===null||l===void 0)&&l.datamodel.data&&this.render()}setData(e,t){var n;const{config:l}=this;this.component&&this.component.setData(e),t||this.render(),(n=l.tooltip)===null||n===void 0||n.hide()}updateContainer(e,t){super.updateContainer(e),this._removeAllChildren(),this.component=e.component,e.sizing&&(this.component.sizing=e.sizing),this.element.appendChild(this.component.element);const n=e.tooltip;n&&(n.hasContainer()||n.setContainer(this._container),n.setComponents([this.component]));const l=e.annotations;l&&this.element.appendChild(l.element),this.element.appendChild(this._svgDefs.node()),this.element.appendChild(this._svgDefsExternal.node()),t||this.render()}updateComponent(e,t){this.component.setConfig(e),t||this.render()}update(e,t,n){e&&this.updateContainer(e,!0),t&&this.updateComponent(t,!0),n&&this.setData(n,!0),this.render()}getFitWidthScale(){const{config:e,component:t}=this,n=t;if(!n.getWidth)return 1;const l=n.getWidth()+e.margin.left+e.margin.right;return this.width/l}_preRender(){var e,t;super._preRender(),this.component.setSize(this.width,this.height,this.containerWidth,this.containerHeight),this.component.setContainerMargin(this.config.margin),(e=this.config.annotations)===null||e===void 0||e.setSize(this.width,this.height,this.containerWidth,this.containerHeight),(t=this.config.annotations)===null||t===void 0||t.setContainerMargin(this.config.margin)}_render(e){var t,n;const{config:l,component:r}=this;super._render(e),r.g.attr("transform",`translate(${l.margin.left},${l.margin.top})`),r.render(e),(t=l.annotations)===null||t===void 0||t.render(e),l.tooltip&&l.tooltip.update(),(n=l.onRenderComplete)===null||n===void 0||n.call(l,this.svg.node(),l.margin,this.containerWidth,this.containerHeight,this.width,this.height)}render(e=this.config.duration){const{config:t,component:n}=this;if(t.sizing===At.Extend||t.sizing===At.FitWidth){const l=t.sizing===At.FitWidth,r=n,s=r.getWidth()+t.margin.left+t.margin.right,a=r.getHeight()+t.margin.top+t.margin.bottom,g=l?this.getFitWidthScale():1,i=this.svg.attr("width"),o=this.svg.attr("height"),h=s*g,m=a*g,b=i||o;Z(this.svg,b?e:0).attr("width",h).attr("height",m).attr("viewBox",`0 0 ${s} ${l?m:a}`).attr("preserveAspectRatio","xMinYMin")}else this.svg.attr("width",this.config.width||this.containerWidth).attr("height",this.config.height||this.containerHeight);this._resizeObserver||this._setUpResizeObserver(),cancelAnimationFrame(this._renderAnimationFrameId),this._renderAnimationFrameId=requestAnimationFrame(()=>{this._preRender(),this._render(e)})}_onResize(){var e;const{config:t}=this;super._onResize(),(e=t.tooltip)===null||e===void 0||e.hide()}destroy(){var e,t;const{component:n,config:l}=this;super.destroy(),n?.destroy(),(e=l.tooltip)===null||e===void 0||e.destroy(),(t=l.annotations)===null||t===void 0||t.destroy()}}function pa(p){return p.innerRadius}function ha(p){return p.outerRadius}function ma(p){return p.startAngle}function fa(p){return p.endAngle}function va(p){return p&&p.padAngle}function ba(p,e,t,n,l,r,s,a){var g=t-p,i=n-e,o=s-l,h=a-r,m=h*g-o*i;if(!(m*m<z))return m=(o*(e-r)-h*(p-l))/m,[p+m*g,e+m*i]}function bt(p,e,t,n,l,r,s){var a=p-t,g=e-n,i=(s?r:-r)/pt(a*a+g*g),o=i*g,h=-i*a,m=p+o,b=e+h,d=t+o,v=n+h,u=(m+d)/2,k=(b+v)/2,w=d-m,R=v-b,L=w*w+R*R,y=l-r,c=m*v-d*b,f=(R<0?-1:1)*pt(ye(0,y*y*L-c*c)),A=(c*R-w*f)/L,E=(-c*w-R*f)/L,P=(c*R+w*f)/L,T=(-c*w+R*f)/L,O=A-u,_=E-k,D=P-u,H=T-k;return O*O+_*_>D*D+H*H&&(A=P,E=T),{cx:A,cy:E,x01:-o,y01:-h,x11:A*(l/y-1),y11:E*(l/y-1)}}function ya(){var p=pa,e=ha,t=W(0),n=null,l=ma,r=fa,s=va,a=null,g=be(i);function i(){var o,h,m=+p.apply(this,arguments),b=+e.apply(this,arguments),d=l.apply(this,arguments)-Nt,v=r.apply(this,arguments)-Nt,u=Yt(v-d),k=v>d;if(a||(a=o=g()),b<m&&(h=b,b=m,m=h),!(b>z))a.moveTo(0,0);else if(u>_t-z)a.moveTo(b*lt(d),b*N(d)),a.arc(0,0,b,d,v,!k),m>z&&(a.moveTo(m*lt(v),m*N(v)),a.arc(0,0,m,v,d,k));else{var w=d,R=v,L=d,y=v,c=u,f=u,A=s.apply(this,arguments)/2,E=A>z&&(n?+n.apply(this,arguments):pt(m*m+b*b)),P=$t(Yt(b-m)/2,+t.apply(this,arguments)),T=P,O=P,_,D;if(E>z){var H=Kt(E/m*N(A)),at=Kt(E/b*N(A));(c-=H*2)>z?(H*=k?1:-1,L+=H,y-=H):(c=0,L=y=(d+v)/2),(f-=at*2)>z?(at*=k?1:-1,w+=at,R-=at):(f=0,w=R=(d+v)/2)}var q=b*lt(w),nt=b*N(w),ct=m*lt(y),J=m*N(y);if(P>z){var ut=b*lt(R),st=b*N(R),dt=m*lt(L),ft=m*N(L),G;if(u<Ht)if(G=ba(q,nt,dt,ft,ut,st,ct,J)){var gt=q-G[0],x=nt-G[1],B=ut-G[0],ot=st-G[1],Bt=1/N(_e((gt*B+x*ot)/(pt(gt*gt+x*x)*pt(B*B+ot*ot)))/2),Gt=pt(G[0]*G[0]+G[1]*G[1]);T=$t(P,(m-Gt)/(Bt-1)),O=$t(P,(b-Gt)/(Bt+1))}else T=O=0}f>z?O>z?(_=bt(dt,ft,q,nt,b,O,k),D=bt(ut,st,ct,J,b,O,k),a.moveTo(_.cx+_.x01,_.cy+_.y01),O<P?a.arc(_.cx,_.cy,O,V(_.y01,_.x01),V(D.y01,D.x01),!k):(a.arc(_.cx,_.cy,O,V(_.y01,_.x01),V(_.y11,_.x11),!k),a.arc(0,0,b,V(_.cy+_.y11,_.cx+_.x11),V(D.cy+D.y11,D.cx+D.x11),!k),a.arc(D.cx,D.cy,O,V(D.y11,D.x11),V(D.y01,D.x01),!k))):(a.moveTo(q,nt),a.arc(0,0,b,w,R,!k)):a.moveTo(q,nt),!(m>z)||!(c>z)?a.lineTo(ct,J):T>z?(_=bt(ct,J,ut,st,m,-T,k),D=bt(q,nt,dt,ft,m,-T,k),a.lineTo(_.cx+_.x01,_.cy+_.y01),T<P?a.arc(_.cx,_.cy,T,V(_.y01,_.x01),V(D.y01,D.x01),!k):(a.arc(_.cx,_.cy,T,V(_.y01,_.x01),V(_.y11,_.x11),!k),a.arc(0,0,m,V(_.cy+_.y11,_.cx+_.x11),V(D.cy+D.y11,D.cx+D.x11),k),a.arc(D.cx,D.cy,T,V(D.y11,D.x11),V(D.y01,D.x01),!k))):a.arc(0,0,m,y,L,k)}if(a.closePath(),o)return a=null,o+""||null}return i.centroid=function(){var o=(+p.apply(this,arguments)+ +e.apply(this,arguments))/2,h=(+l.apply(this,arguments)+ +r.apply(this,arguments))/2-Ht/2;return[lt(h)*o,N(h)*o]},i.innerRadius=function(o){return arguments.length?(p=typeof o=="function"?o:W(+o),i):p},i.outerRadius=function(o){return arguments.length?(e=typeof o=="function"?o:W(+o),i):e},i.cornerRadius=function(o){return arguments.length?(t=typeof o=="function"?o:W(+o),i):t},i.padRadius=function(o){return arguments.length?(n=o==null?null:typeof o=="function"?o:W(+o),i):n},i.startAngle=function(o){return arguments.length?(l=typeof o=="function"?o:W(+o),i):l},i.endAngle=function(o){return arguments.length?(r=typeof o=="function"?o:W(+o),i):r},i.padAngle=function(o){return arguments.length?(s=typeof o=="function"?o:W(+o),i):s},i.context=function(o){return arguments.length?(a=o??null,i):a},i}function _a(p,e){return e<p?-1:e>p?1:e>=p?0:NaN}function ka(p){return p}function xa(){var p=ka,e=_a,t=null,n=W(0),l=W(_t),r=W(0);function s(a){var g,i=(a=ke(a)).length,o,h,m=0,b=new Array(i),d=new Array(i),v=+n.apply(this,arguments),u=Math.min(_t,Math.max(-_t,l.apply(this,arguments)-v)),k,w=Math.min(Math.abs(u)/i,r.apply(this,arguments)),R=w*(u<0?-1:1),L;for(g=0;g<i;++g)(L=d[b[g]=g]=+p(a[g],g,a))>0&&(m+=L);for(e!=null?b.sort(function(y,c){return e(d[y],d[c])}):t!=null&&b.sort(function(y,c){return t(a[y],a[c])}),g=0,h=m?(u-i*R)/m:0;g<i;++g,v=k)o=b[g],L=d[o],k=v+(L>0?L*h:0)+R,d[o]={data:a[o],index:g,value:L,startAngle:v,endAngle:k,padAngle:w};return d}return s.value=function(a){return arguments.length?(p=typeof a=="function"?a:W(+a),s):p},s.sortValues=function(a){return arguments.length?(e=a,t=null,s):e},s.sort=function(a){return arguments.length?(t=a,e=null,s):t},s.startAngle=function(a){return arguments.length?(n=typeof a=="function"?a:W(+a),s):n},s.endAngle=function(a){return arguments.length?(l=typeof a=="function"?a:W(+a),s):l},s.padAngle=function(a){return arguments.length?(r=typeof a=="function"?a:W(+a),s):r},s}function Sa({x:p,y:e,w:t,h:n,tl:l=!1,tr:r=!1,bl:s=!1,br:a=!1,r:g=0}){let i;i=`M${p+g},${e}h${t-2*g}`;let o=r?g:0,h=r?0:g;return i+=`a${o},${o} 0 0 1 ${o},${o}`,i+=`h${h}v${h}`,i+=`v${n-2*g}`,o=a?g:0,h=a?0:g,i+=`a${o},${o} 0 0 1 ${-o},${o}`,i+=`v${h}h${-h}`,i+=`h${2*g-t}`,o=s?g:0,h=s?0:g,i+=`a${o},${o} 0 0 1 ${-o},${-o}`,i+=`h${-h}v${-h}`,i+=`v${2*g-n}`,o=l?g:0,h=l?0:g,i+=`a${o},${o} 0 0 1 ${o},${-o}`,i+=`v${-h}h${h}`,i+="z",i}const Ta=Object.assign(Object.assign({},xe),{color:void 0,barMaxWidth:void 0,barWidth:void 0,dataStep:void 0,barPadding:0,roundedCorners:2,cursor:null,barMinHeight1Px:!1,barMinHeightZeroValue:null,orientation:Qt.Vertical}),ie=X`
|
|
2
|
+
label: stacked-bar-component;
|
|
3
|
+
`,Aa=Jt`
|
|
4
|
+
:root {
|
|
5
|
+
--vis-stacked-bar-cursor: default;
|
|
6
|
+
--vis-stacked-bar-fill-color: var(--vis-color-main);
|
|
7
|
+
--vis-stacked-bar-stroke-color: none;
|
|
8
|
+
--vis-stacked-bar-stroke-width: 0px;
|
|
9
|
+
--vis-stacked-bar-hover-stroke-width: none;
|
|
10
|
+
--vis-stacked-bar-hover-stroke-color: none;
|
|
11
|
+
|
|
12
|
+
/* Dark Theme */
|
|
13
|
+
--vis-dark-stacked-bar-stroke-color: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
body.theme-dark ${`.${ie}`} {
|
|
17
|
+
--vis-stacked-bar-stroke-color: var(--vis-dark-stacked-bar-stroke-color);
|
|
18
|
+
}
|
|
19
|
+
`,kt=X`
|
|
20
|
+
label: bar;
|
|
21
|
+
fill: var(--vis-stacked-bar-fill-color);
|
|
22
|
+
stroke: var(--vis-stacked-bar-stroke-color);
|
|
23
|
+
stroke-width: var(--vis-stacked-bar-stroke-width);
|
|
24
|
+
cursor: var(--vis-stacked-bar-cursor);
|
|
25
|
+
|
|
26
|
+
&:hover {
|
|
27
|
+
stroke-width: var(--vis-stacked-bar-hover-stroke-width);
|
|
28
|
+
stroke: var(--vis-stacked-bar-hover-stroke-color);
|
|
29
|
+
}
|
|
30
|
+
`,Ut=X`
|
|
31
|
+
label: barGroup;
|
|
32
|
+
`,re=X`
|
|
33
|
+
label: barGroupExit;
|
|
34
|
+
`,$a=Object.freeze(Object.defineProperty({__proto__:null,bar:kt,barGroup:Ut,barGroupExit:re,globalStyles:Aa,root:ie},Symbol.toStringTag,{value:"Module"}));class Wt extends Se{constructor(e){super(),this._defaultConfig=Ta,this.config=this._defaultConfig,this.getAccessors=()=>Te(this.config.y)?this.config.y:[this.config.y],this.stacked=!0,this.events={},this._barData=[],e&&this.setConfig(e)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const e=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],t=this.dataScale.domain(),n=this._getBarWidth()/2,l=this._barData.map((b,d)=>it(b,this.config.x,d)),r=Dt(l),s=Ae(l),a=this.dataScale(r),g=this.dataScale(s),i=this.dataScale.invert(a+(e?n:-n)),o=this.dataScale.invert(g+(e?-n:n)),h=i<=t[0]?this.dataScale(t[0])-this.dataScale(i):0,m=o>t[1]?this.dataScale(o)-this.dataScale(t[1]):0;return{top:this.isVertical()?0:e?-m:h,bottom:this.isVertical()?0:e?-h:m,left:this.isVertical()?h:0,right:this.isVertical()?m:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===Qt.Vertical}_render(e){const{config:t}=this,n=Mt(e)?e:t.duration,l=this.getAccessors(),r=$e(this._barData,0,l,this._prevNegative);this._prevNegative=r.map(d=>!!d.isMostlyNegative);const s=this.g.selectAll(`.${Ut}`).data(this._barData,(d,v)=>{var u;return`${(u=Xt(d,t.id,v))!==null&&u!==void 0?u:v}`}),a=(d,v)=>{const u=this.dataScale(it(d,t.x,v)),k=this.isVertical()?u:0,w=this.isVertical()?0:u;return`translate(${k},${w})`},i=s.enter().append("g").attr("class",Ut).attr("transform",a).style("opacity",1).merge(s);Z(i,n).attr("transform",a).style("opacity",1);const o=s.exit().attr("class",re);Z(o,n).style("opacity",0).remove(),Z(o.selectAll(`.${kt}`),n).attr("transform",this.isVertical()?`translate(0,${this._height/3})`:`translate(${this._width/6},0)`);const h=i.selectAll(`.${kt}`).data((d,v)=>r.map((u,k)=>({datum:d,index:v,stacked:u[v],stackIndex:k,isEnding:k===r.length-1||k<=r.length-1&&r[k+1][v][0]!==u[v][1]})).filter(u=>u.stacked[0]!==u.stacked[1]),d=>d.stackIndex),b=h.enter().append("path").attr("class",kt).attr("d",d=>this._getBarPath(d,!0)).style("fill",d=>xt(d.datum,t.color,d.stackIndex)).merge(h);Z(b,n).attr("d",d=>this._getBarPath(d)).style("fill",d=>xt(d.datum,t.color,d.stackIndex)).style("cursor",d=>Xt(d.datum,t.cursor,d.stackIndex)),Z(h.exit(),n).style("opacity",0).remove()}_getBarWidth(){const{config:e,datamodel:{data:t}}=this;if(De(t))return 0;if(e.barWidth)return Dt([e.barWidth,e.barMaxWidth]);const n=this.dataScale.bandwidth,l=this.dataScale.domain?this.dataScale.domain():[];let s=1+(n?l.length:l[1]-l[0])/e.dataStep||!n&&t.filter((i,o)=>{const h=it(i,e.x,o);return h>=l[0]&&h<=l[1]}).length||t.length;!n&&s>=2&&(s+=1);const g=(s<2?1:1-e.barPadding)*(this.isVertical()?this._width:this._height)/s;return Dt([g,e.barMaxWidth])}_getVisibleData(){const{config:e,datamodel:{data:t}}=this,n=this._getBarWidth(),l=t.length<2?0:n/2,r=this.dataScale,s=Math.abs(r.invert(l)-r.invert(0));return t?.filter((g,i)=>{const o=it(g,e.x,i),h=r.domain(),m=+h[0],b=+h[1];return o>=m-s&&o<=b+s})}_getBarPath(e,t=!1){const{config:n}=this,l=this.getAccessors(),r=this._getBarWidth(),s=e.stacked[1]<0,a=e.isEnding,g=it(e.datum,l[e.stackIndex],e.index),i=t?0:Math.abs(this.valueScale(e.stacked[0])-this.valueScale(e.stacked[1])),o=!t&&n.barMinHeight1Px&&i<1&&isFinite(g)&&g!==n.barMinHeightZeroValue?1:i,h=t?this.valueScale(0):this.valueScale(s?e.stacked[0]:e.stacked[1])-(i<1&&n.barMinHeight1Px?1:0),m=-r/2,b=r,d=n.roundedCorners?Mt(n.roundedCorners)?+n.roundedCorners:b/2:0,v=te(d,0,Math.min(i,b)/2),u=this.yScale.range()[0]>this.yScale.range()[1];return Sa({x:this.isVertical()?m:h-o,y:this.isVertical()?h+(u?0:-o):m,w:this.isVertical()?b:o,h:this.isVertical()?o:b,tl:a&&(this.isVertical()?!s&&u||s&&!u:s),tr:a&&(this.isVertical()?!s&&u||s&&!u:!s),br:a&&(this.isVertical()?s&&u||!s&&!u:!s),bl:a&&(this.isVertical()?s&&u||!s&&!u:s),r:v})}getValueScaleExtent(e){const{datamodel:t}=this,n=this.getAccessors(),l=e?this._getVisibleData():t.data;return Ce(l,...n)}getDataScaleExtent(){const{config:e,datamodel:t}=this;return we(t.data,e.x)}getYDataExtent(e){return this.isVertical()?this.getValueScaleExtent(e):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}}Wt.selectors=$a;const Da=Object.assign(Object.assign({},Re),{id:(p,e)=>{var t;return(t=p.id)!==null&&t!==void 0?t:e},value:void 0,angleRange:[0,2*Math.PI],padAngle:0,sortFunction:void 0,cornerRadius:0,color:void 0,radius:void 0,arcWidth:20,centralLabel:void 0,centralSubLabel:void 0,centralSubLabelWrap:!0,showEmptySegments:!1,emptySegmentAngle:.5*Math.PI/180,showBackground:!0,backgroundAngleRange:void 0,centralLabelOffsetX:void 0,centralLabelOffsetY:void 0});function Ca(p,e){p.style("fill",t=>xt(t.data,e.color,t.index)).style("opacity",0).each((t,n,l)=>{const r=l[n],s=(t.startAngle+t.endAngle)/2,a=(t.endAngle-t.startAngle)/2;r._animState={startAngle:s-a,endAngle:s+a,innerRadius:t.innerRadius,outerRadius:t.outerRadius,padAngle:t.padAngle}})}function wa(p,e,t,n){p.style("transition",`fill ${n}ms`).style("fill",r=>xt(r.data,e.color,r.index));const l=r=>e.showEmptySegments||r.value?1:0;n?Z(p,n).style("opacity",l).attrTween("d",(s,a,g)=>{const i=g[a],o={startAngle:s.startAngle,endAngle:s.endAngle,innerRadius:s.innerRadius,outerRadius:s.outerRadius,padAngle:s.padAngle},h=Me(i._animState,o);return m=>(i._animState=h(m),t(i._animState))}):p.attr("d",t).style("opacity",l)}function Ra(p,e){Z(p,e).style("opacity",0).remove()}const ce=Array.from({length:4},(p,e)=>{const t=-Math.PI/2+e*Math.PI/2;return[t,t+Math.PI]}),[xn,Sn,Tn,An]=ce,ue=X`
|
|
35
|
+
label: donut-component;
|
|
36
|
+
`,Ma=Jt`
|
|
37
|
+
:root {
|
|
38
|
+
--vis-donut-central-label-font-size: 16px;
|
|
39
|
+
--vis-donut-central-label-text-color: #5b5f6d;
|
|
40
|
+
// Undefined by default to allow proper fallback to var(--vis-font-family)
|
|
41
|
+
/* --vis-donut-central-label-font-family: */
|
|
42
|
+
--vis-donut-central-label-font-weight: 600;
|
|
43
|
+
|
|
44
|
+
--vis-donut-central-sub-label-font-size: 12px;
|
|
45
|
+
--vis-donut-central-sub-label-text-color: #5b5f6d;
|
|
46
|
+
// Undefined by default to allow proper fallback to var(--vis-font-family)
|
|
47
|
+
/* --vis-donut-central-sub-label-font-family: */
|
|
48
|
+
--vis-donut-central-sub-label-font-weight: 500;
|
|
49
|
+
|
|
50
|
+
--vis-donut-background-color: #E7E9F3;
|
|
51
|
+
--vis-donut-segment-stroke-width: 0;
|
|
52
|
+
// The line segment color variable is not defined by default
|
|
53
|
+
// to allow it to fallback to the donut background color
|
|
54
|
+
/* --vis-donut-segment-stroke-color: none; */
|
|
55
|
+
|
|
56
|
+
--vis-dark-donut-central-label-text-color: #C2BECE;
|
|
57
|
+
--vis-dark-donut-central-sub-label-text-color: #C2BECE;
|
|
58
|
+
--vis-dark-donut-background-color: #18160C;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
body.theme-dark ${`.${ue}`} {
|
|
62
|
+
--vis-donut-central-label-text-color: var(--vis-dark-donut-central-label-text-color);
|
|
63
|
+
--vis-donut-central-sub-label-text-color: var(--vis-dark-donut-central-sub-label-text-color);
|
|
64
|
+
--vis-donut-background-color: var(--vis-dark-donut-background-color);
|
|
65
|
+
}
|
|
66
|
+
`,de=X`
|
|
67
|
+
label: background;
|
|
68
|
+
fill: var(--vis-donut-background-color);
|
|
69
|
+
`,Ot=X`
|
|
70
|
+
label: segment;
|
|
71
|
+
stroke-width: var(--vis-donut-segment-stroke-width);
|
|
72
|
+
stroke: var(--vis-donut-segment-stroke-color, var(--vis-donut-background-color));
|
|
73
|
+
`,ge=X`
|
|
74
|
+
label: segment-exit;
|
|
75
|
+
`,pe=X`
|
|
76
|
+
label: central-label;
|
|
77
|
+
text-anchor: middle;
|
|
78
|
+
dominant-baseline: middle;
|
|
79
|
+
font-size: var(--vis-donut-central-label-font-size);
|
|
80
|
+
font-family: var(--vis-donut-central-label-font-family, var(--vis-font-family));
|
|
81
|
+
font-weight: var(--vis-donut-central-label-font-weight);
|
|
82
|
+
fill: var(--vis-donut-central-label-text-color);
|
|
83
|
+
`,he=X`
|
|
84
|
+
label: central-label;
|
|
85
|
+
text-anchor: middle;
|
|
86
|
+
dominant-baseline: middle;
|
|
87
|
+
font-size: var(--vis-donut-central-sub-label-font-size);
|
|
88
|
+
font-family: var(--vis-donut-central-sub-label-font-family, var(--vis-font-family));
|
|
89
|
+
font-weight: var(--vis-donut-central-sub-label-font-weight);
|
|
90
|
+
fill: var(--vis-donut-central-sub-label-text-color);
|
|
91
|
+
`,La=Object.freeze(Object.defineProperty({__proto__:null,background:de,centralLabel:pe,centralSubLabel:he,root:ue,segment:Ot,segmentExit:ge,variables:Ma},Symbol.toStringTag,{value:"Module"}));class zt extends Le{constructor(e){super(),this._defaultConfig=Da,this.config=this._defaultConfig,this.datamodel=new Ue,this.arcGen=ya(),this.events={},e&&this.setConfig(e),this.arcBackground=this.g.append("path"),this.arcGroup=this.g.append("g"),this.centralLabel=this.g.append("text").attr("class",pe),this.centralSubLabel=this.g.append("text").attr("class",he)}get bleed(){return{top:0,bottom:0,left:0,right:0}}_render(e){var t,n,l,r,s,a,g,i,o,h,m,b,d,v;const{config:u,datamodel:k,bleed:w}=this,R=k.data.map((x,B)=>({index:B,datum:x})).filter(x=>u.showEmptySegments||it(x.datum,u.value,x.index)),L=Mt(e)?e:u.duration,[y,c,f,A]=ce.map(x=>u.angleRange&&u.angleRange[0]===x[0]&&u.angleRange[1]===x[1]),E=y||f,P=c||A,T=this._width*(P?2:1),O=this._height*(E?2:1),_=u.radius||Math.min(T-w.left-w.right,O-w.top-w.bottom)/2,D=u.arcWidth===0?0:te(_-u.arcWidth,0,_-1),H=this._height/2+(y?_/2:f?-_/2:0),at=this._width/2+(A?_/2:c?-_/2:0),q=`translate(${at},${H})`;this.arcGroup.attr("transform",q),this.arcGen.startAngle(x=>x.startAngle).endAngle(x=>x.endAngle).innerRadius(x=>x.innerRadius).outerRadius(x=>x.outerRadius).padAngle(x=>x.padAngle).cornerRadius(u.cornerRadius);const ct=xa().startAngle((n=(t=u.angleRange)===null||t===void 0?void 0:t[0])!==null&&n!==void 0?n:0).endAngle((r=(l=u.angleRange)===null||l===void 0?void 0:l[1])!==null&&r!==void 0?r:2*Math.PI).padAngle(u.padAngle).value(x=>it(x.datum,u.value,x.index)||0).sort((x,B)=>{var ot;return(ot=u.sortFunction)===null||ot===void 0?void 0:ot.call(u,x.datum,B.datum)})(R).map(x=>{const B=Object.assign(Object.assign({},x),{data:x.data.datum,index:x.data.index,innerRadius:D,outerRadius:_});return u.showEmptySegments&&x.endAngle-x.startAngle-x.padAngle<=Number.EPSILON&&(B.endAngle=x.startAngle+Math.max(u.emptySegmentAngle,u.padAngle),B.padAngle=x.padAngle/2),B}),J=this.arcGroup.selectAll(`.${Ot}`).data(ct,x=>u.id(x.data,x.index)),ut=J.enter().append("path").attr("class",Ot).call(Ca,u),st=J.merge(ut);st.call(wa,u,this.arcGen,L),st.sort((x,B)=>B.value-x.value),J.exit().attr("class",ge).call(Ra,L);const dt=c?"start":A?"end":"middle";this.centralLabel.attr("dy",u.centralSubLabel?"-0.55em":null).style("text-anchor",dt).text((s=u.centralLabel)!==null&&s!==void 0?s:null),this.centralSubLabel.attr("dy",u.centralLabel?"0.55em":null).style("text-anchor",dt).text((a=u.centralSubLabel)!==null&&a!==void 0?a:null),u.centralSubLabelWrap&&Oe(this.centralSubLabel,D*1.9);const ft=(u.centralLabelOffsetX||0)+at;let G=(u.centralLabelOffsetY||0)+H;E&&u.centralLabelOffsetX===void 0&&u.centralLabelOffsetY===void 0&&(G=(y?-this.centralSubLabel.node().getBoundingClientRect().height:f?this.centralLabel.node().getBoundingClientRect().height:0)+H);const gt=`translate(${ft},${G})`;this.centralLabel.attr("transform",gt),this.centralSubLabel.attr("transform",gt),this.arcBackground.attr("class",de).attr("visibility",u.showBackground?null:"hidden").attr("transform",q),Z(this.arcBackground,L).attr("d",this.arcGen({startAngle:(h=(i=(g=u.backgroundAngleRange)===null||g===void 0?void 0:g[0])!==null&&i!==void 0?i:(o=u.angleRange)===null||o===void 0?void 0:o[0])!==null&&h!==void 0?h:0,endAngle:(v=(b=(m=u.backgroundAngleRange)===null||m===void 0?void 0:m[1])!==null&&b!==void 0?b:(d=u.angleRange)===null||d===void 0?void 0:d[1])!==null&&v!==void 0?v:2*Math.PI,innerRadius:D,outerRadius:_}))}}zt.selectors=La;const Ua=et({__name:"index",props:{component:{},tooltip:{},annotations:{},duration:{},margin:{},padding:{},sizing:{},width:{},height:{},svgDefs:{},ariaLabel:{},data:{}},setup(p,{expose:e}){const t=p,{data:n}=aa(t),l=Et(t);let r;const s=oa({component:void 0,tooltip:void 0,annotations:void 0}),a=It(),g=()=>{r||a.value&&s.component&&(r=new ga(a.value,{...Ct(s)},n.value))};return na(()=>{var i;g(),(i=s.component)==null||i.config,r?.updateContainer({...Ct(l.value),...Ct(s)})}),mt(n,()=>{r?r.setData(n.value,!0):g()}),Vt(()=>r?.destroy()),wt(Pt,{data:n,update:i=>s.component=i,destroy:()=>s.component=void 0}),wt(Ee,{data:n,update:i=>s.tooltip=i,destroy:()=>{s.tooltip=void 0}}),wt(Pe,{data:n,update:i=>s.annotations=i,destroy:()=>{s.annotations=void 0}}),e({component:r}),(i,o)=>(F(),K("div",{"data-vis-single-container":"",ref_key:"elRef",ref:a,class:"unovis-single-container"},[sa(i.$slots,"default")],512))}}),Oa={"data-vis-component":""},Ea=Wt.selectors,Pa=et({__name:"index",props:{color:{type:[Function,String,Array,null]},barWidth:{},barMaxWidth:{},dataStep:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},cursor:{type:[Function,String,null]},barMinHeight1Px:{type:Boolean},barMinHeightZeroValue:{},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(p,{expose:e}){const t=se(Pt),n=p,l=$(()=>t.data.value??n.data),r=Et(n),s=It();return oe(()=>{le(()=>{var a;s.value=new Wt(r.value),(a=s.value)==null||a.setData(l.value),t.update(s.value)})}),Vt(()=>{var a;(a=s.value)==null||a.destroy(),t.destroy()}),mt(r,(a,g)=>{var i;ee(a,g)||(i=s.value)==null||i.setConfig(r.value)}),mt(l,()=>{var a;(a=s.value)==null||a.setData(l.value)}),e({component:s}),(a,g)=>(F(),K("div",Oa))}}),ja={"data-vis-component":""},Va=zt.selectors,Ia=et({__name:"index",props:{id:{type:Function},value:{type:[Function,Number,null]},angleRange:{},padAngle:{},sortFunction:{type:Function},cornerRadius:{},color:{type:[Function,String,Array,null]},radius:{},arcWidth:{},centralLabel:{},centralSubLabel:{},centralSubLabelWrap:{type:Boolean},showEmptySegments:{type:Boolean},emptySegmentAngle:{},showBackground:{type:Boolean},backgroundAngleRange:{},centralLabelOffsetX:{},centralLabelOffsetY:{},duration:{},events:{},attributes:{},data:{}},setup(p,{expose:e}){const t=se(Pt),n=p,l=$(()=>t.data.value??n.data),r=Et(n),s=It();return oe(()=>{le(()=>{var a;s.value=new zt(r.value),(a=s.value)==null||a.setData(l.value),t.update(s.value)})}),Vt(()=>{var a;(a=s.value)==null||a.destroy(),t.destroy()}),mt(r,(a,g)=>{var i;ee(a,g)||(i=s.value)==null||i.setConfig(r.value)}),mt(l,()=>{var a;(a=s.value)==null||a.setData(l.value)}),e({component:s}),(a,g)=>(F(),K("div",ja))}}),Fa={class:"mb-4 grid grid-cols-2 gap-3"},Wa={class:"rounded-md border px-3 py-2"},za={class:"mt-1 text-xl font-semibold tabular-nums"},Ba={class:"rounded-md border px-3 py-2"},Ga={class:"mt-1 text-xl font-semibold tabular-nums"},Ha={class:"mt-4 flex flex-wrap justify-center items-center gap-3 text-xs text-muted-foreground"},Na=et({name:"StatisticalAnalysisSessionAnalysisPanel",__name:"SessionAnalysisPanel",props:{items:{},totalSessions:{}},setup(p){const e=p,t=[{color:"#2563eb",key:"tokens",label:"Token Usage"},{color:"#b6d72f",key:"duration",label:"Duration"},{color:"#f97316",key:"cost",label:"Cost"}],n={cost:{color:t[2].color,label:t[2].label},duration:{color:t[1].color,label:t[1].label},tokens:{color:t[0].color,label:t[0].label}},l={bottom:32,left:120,right:12,top:8},r=$(()=>{const c=e.items.reduce((f,A)=>f+A.costUSD,0)/e.items.length;return tt(c)}),s=$(()=>{const c=new Map;for(const T of e.items){const O=c.get(T.project)??{costUSD:0,durationMinutes:0,sessionCount:0,tokenTotal:0};O.costUSD+=T.costUSD,O.durationMinutes+=i(T.duration),O.sessionCount+=1,O.tokenTotal+=T.tokenTotal,c.set(T.project,O)}const f=Array.from(c.entries()).map(([T,O])=>({project:T,...O})).sort((T,O)=>O.costUSD-T.costUSD),A=Math.max(...f.map(T=>T.tokenTotal),0),E=Math.max(...f.map(T=>T.durationMinutes),0),P=Math.max(...f.map(T=>T.costUSD),0);return f.map((T,O)=>({...T,costLabel:tt(T.costUSD),costScore:h(T.costUSD,P),durationLabel:o(T.durationMinutes),durationScore:h(T.durationMinutes,E),index:O,tokenLabel:Y(T.tokenTotal),tokenScore:h(T.tokenTotal,A)}))}),a=$(()=>s.value.map(c=>c.index)),g=$(()=>({[Ea.bar]:k}));function i(c){const f=c.match(/(\d+)h/)?.[1],A=c.match(/(\d+)m/)?.[1];return Number(f??0)*60+Number(A??0)}function o(c){const f=Math.floor(c/60),A=c%60;return f===0?`${A}m`:A===0?`${f}h`:`${f}h ${A}m`}function h(c,f){return f>0?c/f*100:0}function m(c){return c.index}function b(c){return c.tokenScore}function d(c){return c.durationScore}function v(c){return c.costScore}function u(c,f){return t[f]?.color??t[0].color}function k(c){const f=c.datum,A=t[c.stackIndex]??t[0],E=w(f,c.stackIndex);return`
|
|
92
|
+
<div class="grid min-w-44 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
|
|
93
|
+
<div class="font-medium text-foreground">${y(f.project)}</div>
|
|
94
|
+
<div class="flex items-center justify-between gap-4">
|
|
95
|
+
<span class="flex items-center gap-2 text-muted-foreground">
|
|
96
|
+
<span class="size-2 rounded-sm" style="background-color: ${A.color}"></span>
|
|
97
|
+
${A.label}
|
|
98
|
+
</span>
|
|
99
|
+
<span class="font-mono font-semibold text-foreground">${E}</span>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="grid gap-1 border-t pt-2 text-muted-foreground">
|
|
102
|
+
<div class="flex justify-between gap-4"><span>Tokens</span><span>${f.tokenLabel}</span></div>
|
|
103
|
+
<div class="flex justify-between gap-4"><span>Duration</span><span>${f.durationLabel}</span></div>
|
|
104
|
+
<div class="flex justify-between gap-4"><span>Cost</span><span>${f.costLabel}</span></div>
|
|
105
|
+
<div class="flex justify-between gap-4"><span>Sessions</span><span>${f.sessionCount}</span></div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
`}function w(c,f){return f===0?`${c.tokenLabel} tokens`:f===1?c.durationLabel:c.costLabel}function R(c){return c instanceof Date?"":s.value.find(f=>f.index===c)?.project??""}function L(c){return c instanceof Date?"":`${Math.round(c)}%`}function y(c){return c.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}return(c,f)=>{const A=ne,E=jt;return F(),ht(E,{description:"Token, duration, and cost grouped by project",icon:"lucide:messages-square",title:"Session Analysis"},{default:M(()=>[U("div",Fa,[U("div",Wa,[f[0]||(f[0]=U("p",{class:"text-xs text-muted-foreground"}," Total Sessions ",-1)),U("p",za,j(p.totalSessions),1)]),U("div",Ba,[f[1]||(f[1]=U("p",{class:"text-xs text-muted-foreground"}," Top Session Avg ",-1)),U("p",Ga,j(r.value),1)])]),S(A,{class:"h-80 w-full",config:n},{default:M(()=>[S(C(je),{"auto-margin":!1,data:s.value,height:320,margin:l,"y-direction":"south"},{default:M(()=>[S(C(Pa),{"bar-max-width":28,"bar-padding":.28,color:u,cursor:"pointer",orientation:"horizontal","rounded-corners":3,x:m,y:[b,d,v]},null,8,["y"]),S(C(qt),{"grid-line":!1,"tick-format":R,"tick-text-width":104,"tick-values":a.value,type:"y"},null,8,["tick-values"]),S(C(qt),{"num-ticks":4,"tick-format":L,type:"x"}),S(C(ae),{triggers:g.value},null,8,["triggers"])]),_:1},8,["data"])]),_:1}),U("div",Ha,[(F(),K(Tt,null,St(t,P=>U("div",{key:P.key,class:"flex items-center gap-2"},[U("span",{class:"size-2.5 rounded-sm",style:Ft({backgroundColor:P.color})},null,4),U("span",null,j(P.label),1)])),64))])]),_:1})}}}),Ya=Object.assign(Na,{__name:"StatisticalAnalysisSessionAnalysisPanel"}),Ka={class:"space-y-4"},Xa={class:"flex items-start justify-between gap-3"},qa={class:"min-w-0"},Za={class:"truncate text-sm font-medium"},Qa={class:"truncate text-xs text-muted-foreground"},Ja={class:"shrink-0 text-sm font-semibold tabular-nums"},tn={class:"h-2 overflow-hidden rounded-full bg-secondary"},en=et({name:"StatisticalAnalysisUsageBarList",__name:"UsageBarList",props:{items:{}},setup(p){function e(n){switch(n){case"green":return"bg-emerald-500";case"amber":return"bg-amber-500";case"sky":return"bg-sky-500";case"rose":return"bg-rose-500";default:return"bg-primary"}}function t(n){return`${Math.max(n.percent,n.percent>0?3:0)}%`}return(n,l)=>(F(),K("div",Ka,[(F(!0),K(Tt,null,St(p.items,r=>(F(),K("div",{key:r.label,class:"space-y-2"},[U("div",Xa,[U("div",qa,[U("p",Za,j(r.label),1),U("p",Qa,j(r.detail),1)]),U("span",Ja,j(r.value),1)]),U("div",tn,[U("div",{class:la(["h-full rounded-full transition-[width]",e(r.tone)]),style:Ft({width:t(r)})},null,6)])]))),128))]))}}),an=Object.assign(en,{__name:"StatisticalAnalysisUsageBarList"}),nn={class:"grid gap-6 lg:grid-cols-[220px_1fr] lg:items-center"},sn={class:"flex items-center justify-center"},on={class:"space-y-3"},ln={class:"flex min-w-0 items-center gap-2"},rn={class:"truncate text-sm text-muted-foreground"},cn={class:"text-sm font-semibold tabular-nums"},un={class:"w-12 text-right text-xs text-muted-foreground tabular-nums"},dn={class:"mt-5 border-t pt-4"},gn=et({name:"StatisticalAnalysisEfficiencyCachePanel",__name:"EfficiencyCachePanel",props:{dailyItems:{},items:{}},setup(p){const e=p,t=$(()=>e.dailyItems.reduce((d,v)=>d+v.inputTokens,0)),n=$(()=>e.dailyItems.reduce((d,v)=>d+v.cachedInputTokens,0)),l=$(()=>Math.max(t.value-n.value,0)),r=$(()=>t.value>0?n.value/t.value:0),s=$(()=>rt(r.value)),a=$(()=>[{color:"#059669",key:"cached",label:"Cached Input",shareLabel:rt(r.value),value:n.value,valueLabel:Y(n.value)},{color:"#0ea5e9",key:"fresh",label:"Fresh Input",shareLabel:rt(t.value>0?l.value/t.value:0),value:l.value,valueLabel:Y(l.value)}]),g=$(()=>Object.fromEntries(a.value.map(d=>[d.key,{color:d.color,label:d.label}]))),i=$(()=>({[Va.segment]:m}));function o(d){return d.value}function h(d){return d.color}function m(d){const v=d.data;return`
|
|
109
|
+
<div class="grid min-w-40 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
|
|
110
|
+
<div class="flex items-center gap-2 font-medium text-foreground">
|
|
111
|
+
<span class="size-2 rounded-sm" style="background-color: ${v.color}"></span>
|
|
112
|
+
${b(v.label)}
|
|
113
|
+
</div>
|
|
114
|
+
<div class="grid gap-1 text-muted-foreground">
|
|
115
|
+
<div class="flex justify-between gap-4"><span>Tokens</span><span class="font-mono font-medium text-foreground">${v.valueLabel}</span></div>
|
|
116
|
+
<div class="flex justify-between gap-4"><span>Share</span><span class="font-mono font-medium text-foreground">${v.shareLabel}</span></div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
`}function b(d){return d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}return(d,v)=>{const u=ne,k=an,w=jt;return F(),ht(w,{description:"Cached input ratio across total input tokens",icon:"lucide:gauge",title:"Efficiency / Cache"},{default:M(()=>[U("div",nn,[U("div",sn,[S(u,{class:"h-52 w-full max-w-56",config:C(g)},{default:M(()=>[S(C(Ua),{data:C(a),height:208},{default:M(()=>[S(C(Ia),{"arc-width":26,"central-label":C(s),"central-sub-label":"Hit Rate",color:h,"corner-radius":4,"pad-angle":.04,value:o},null,8,["central-label"]),S(C(ae),{triggers:C(i)},null,8,["triggers"])]),_:1},8,["data"])]),_:1},8,["config"])]),U("div",on,[(F(!0),K(Tt,null,St(C(a),R=>(F(),K("div",{key:R.key,class:"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3"},[U("div",ln,[U("span",{class:"size-2.5 shrink-0 rounded-full",style:Ft({backgroundColor:R.color})},null,4),U("span",rn,j(R.label),1)]),U("span",cn,j(R.valueLabel),1),U("span",un,j(R.shareLabel),1)]))),128))])]),U("div",dn,[S(k,{items:p.items},null,8,["items"])])]),_:1})}}}),pn=Object.assign(gn,{__name:"StatisticalAnalysisEfficiencyCachePanel"}),Rt=["claudeCode","codex","gemini"];function me(){const{payload:p}=ia(),e=$(()=>p.value?Rt.map(y=>p.value[y]):[]),t=$(()=>e.value.flatMap((y,c)=>y.sessionUsage.map(f=>({...f,id:`${Rt[c]}:${f.id}`,sessionId:`${Rt[c]}:${f.sessionId}`}))).sort((y,c)=>Date.parse(c.startedAt)-Date.parse(y.startedAt))),n=$(()=>hn(e.value.flatMap(y=>y.dailyTokenUsage))),l=$(()=>mn(e.value.flatMap(y=>y.monthlyModelUsage))),r=$(()=>Fe(t.value)),s=$(()=>n.value.reduce((y,c)=>y+c.costUSD,0)),a=$(()=>n.value.reduce((y,c)=>y+c.totalTokens,0)),g=$(()=>n.value.reduce((y,c)=>y+c.inputTokens,0)),i=$(()=>n.value.reduce((y,c)=>y+c.cachedInputTokens,0)),o=$(()=>n.value.reduce((y,c)=>y+c.outputTokens,0)),h=$(()=>n.value.reduce((y,c)=>y+c.reasoningOutputTokens,0)),m=$(()=>t.value.length),b=Ve(new Date),d=Ie(b),v=$(()=>n.value.find(y=>Lt(y.date)===b)),u=$(()=>n.value.find(y=>Lt(y.date)===d)),k=$(()=>Zt(v.value?.costUSD??0,u.value?.costUSD??0,tt)),w=$(()=>Zt(v.value?.totalTokens??0,u.value?.totalTokens??0,Y)),R=$(()=>{const y=new Map;for(const c of n.value)for(const[f,A]of Object.entries(c.models)){const E=y.get(f)??{activeDays:new Set,costUSD:0,inputTokens:0,outputTokens:0,totalTokens:0},P=c.totalTokens>0?A.totalTokens/c.totalTokens:0;E.activeDays.add(c.date),E.costUSD+=c.costUSD*P,E.inputTokens+=A.inputTokens,E.outputTokens+=A.outputTokens,E.totalTokens+=A.totalTokens,y.set(f,E)}return Array.from(y.entries()).map(([c,f],A)=>({label:c,value:tt(f.costUSD),detail:`${Y(f.totalTokens)} tokens / ${f.activeDays.size} active days`,percent:yt(f.costUSD,s.value)*100,tone:A===0?"sky":"green"})).sort((c,f)=>f.percent-c.percent)}),L=$(()=>{const y=yt(i.value,g.value),c=yt(h.value,a.value),f=yt(o.value,a.value);return[{label:"Cache Hit Rate",value:rt(y),detail:`${Y(i.value)} cached input tokens`,percent:y*100,tone:"green"},{label:"Reasoning Token Share",value:rt(c),detail:`${Y(h.value)} reasoning output tokens`,percent:c*100,tone:"amber"},{label:"Output Token Share",value:rt(f),detail:`${Y(o.value)} output tokens`,percent:f*100,tone:"sky"}]});return{cachedInputTokens:i,costGrowthTrend:k,dailyTokenUsage:n,efficiencyMetrics:L,inputTokens:g,modelUsage:R,monthlyModelUsage:l,outputTokens:o,projectUsage:r,reasoningOutputTokens:h,sessionUsage:t,totalCost:s,totalSessions:m,totalTokens:a,tokenGrowthTrend:w}}function hn(p){const e=new Map;for(const t of p){const n=Lt(t.date),l=e.get(n)??{cachedInputTokens:0,costUSD:0,date:We(n,t.date),inputTokens:0,models:new Map,outputTokens:0,reasoningOutputTokens:0,totalTokens:0};l.cachedInputTokens+=t.cachedInputTokens,l.costUSD+=t.costUSD,l.inputTokens+=t.inputTokens,l.outputTokens+=t.outputTokens,l.reasoningOutputTokens+=t.reasoningOutputTokens,l.totalTokens+=t.totalTokens;for(const[r,s]of Object.entries(t.models)){const a=l.models.get(r)??fn();a.cachedInputTokens+=s.cachedInputTokens,a.inputTokens+=s.inputTokens,a.isFallback=a.isFallback||s.isFallback,a.outputTokens+=s.outputTokens,a.reasoningOutputTokens+=s.reasoningOutputTokens,a.totalTokens+=s.totalTokens,l.models.set(r,a)}e.set(n,l)}return Array.from(e.entries()).sort((t,n)=>n[0].localeCompare(t[0])).map(([,t])=>({cachedInputTokens:t.cachedInputTokens,costUSD:ze(t.costUSD),date:t.date,inputTokens:t.inputTokens,models:Object.fromEntries(t.models.entries()),outputTokens:t.outputTokens,reasoningOutputTokens:t.reasoningOutputTokens,totalTokens:t.totalTokens}))}function mn(p){const e=new Map;for(const t of p){const n=`${t.month}__${t.model}`,l=e.get(n)??{model:t.model,month:t.month,tokenTotal:0};l.tokenTotal+=t.tokenTotal,e.set(n,l)}return Array.from(e.values()).sort((t,n)=>t.month.localeCompare(n.month)||t.model.localeCompare(n.model))}function fn(){return{cachedInputTokens:0,inputTokens:0,isFallback:!1,outputTokens:0,reasoningOutputTokens:0,totalTokens:0}}function yt(p,e){return e>0?p/e:0}const vt=10,vn=et({name:"StatisticalAnalysisTokensUsagePanel",__name:"TokensUsagePanel",setup(p){const{dailyTokenUsage:e}=me(),t=ua(1),n=$(()=>Math.max(1,Math.ceil(e.value.length/vt))),l=$(()=>{const s=(Math.min(t.value,n.value)-1)*vt;return e.value.slice(s,s+vt)});return mt(e,()=>{t.value=1}),(r,s)=>{const a=He,g=Ge,i=Be,o=Xe,h=Ne,m=Ye,b=Ke,d=jt;return F(),ht(d,{description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:M(()=>[S(m,null,{default:M(()=>[S(i,null,{default:M(()=>[S(g,null,{default:M(()=>[S(a,null,{default:M(()=>[...s[1]||(s[1]=[I("Date",-1)])]),_:1}),S(a,null,{default:M(()=>[...s[2]||(s[2]=[I("Models",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[3]||(s[3]=[I(" Input ",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[4]||(s[4]=[I(" Output ",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[5]||(s[5]=[I(" Reasoning ",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[6]||(s[6]=[I(" Cache Read ",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[7]||(s[7]=[I(" Total Tokens ",-1)])]),_:1}),S(a,{class:"text-right"},{default:M(()=>[...s[8]||(s[8]=[I(" Cost (USD) ",-1)])]),_:1})]),_:1})]),_:1}),S(h,null,{default:M(()=>[(F(!0),K(Tt,null,St(C(l),v=>(F(),ht(g,{key:v.date},{default:M(()=>[S(o,{class:"font-medium"},{default:M(()=>[I(j(v.date),1)]),_:2},1024),S(o,null,{default:M(()=>[I(j(Object.keys(v.models).join(", ")),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(C(Q)(v.inputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(C(Q)(v.outputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(C(Q)(v.reasoningOutputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(C(Q)(v.cachedInputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(C(Q)(v.totalTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:M(()=>[I(j(v.costUSD.toFixed(2)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),C(e).length>vt?(F(),ht(b,{key:0,page:C(t),"onUpdate:page":s[0]||(s[0]=v=>ra(t)?t.value=v:null),"page-count":C(n),"page-size":vt,total:C(e).length},null,8,["page","page-count","total"])):ca("",!0)]),_:1})}}}),bn=Object.assign(vn,{__name:"StatisticalAnalysisTokensUsagePanel"}),$n=et({__name:"index",setup(p){const{cachedInputTokens:e,costGrowthTrend:t,dailyTokenUsage:n,efficiencyMetrics:l,inputTokens:r,monthlyModelUsage:s,projectUsage:a,sessionUsage:g,totalCost:i,totalSessions:o,totalTokens:h,tokenGrowthTrend:m}=me(),b=$(()=>[{detail:`${tt(i.value)} total spend across all tools`,icon:"lucide:wallet",name:"Total Spend",trend:t.value.trend,trendTone:t.value.trendTone,value:tt(i.value)},{detail:`${Q(h.value)} total tokens across all tools`,icon:"solar:cpu-line-duotone",name:"Token Usage",trend:m.value.trend,trendTone:m.value.trendTone,value:Y(h.value)},{detail:`${Q(e.value)} of ${Q(r.value)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${Y(e.value)} cached`,trendTone:"neutral",value:rt(r.value>0?e.value/r.value:0)},{detail:`${tt(i.value)} across ${Q(o.value)} sessions`,icon:"lucide:receipt-text",name:"Avg Session Cost",trend:"across all tools",trendTone:"neutral",value:tt(o.value>0?i.value/o.value:0)}]);return(d,v)=>{const u=qe,k=Je,w=ta,R=ea,L=Ya,y=pn,c=bn,f=Ze,A=Qe;return F(),ht(A,null,{default:M(()=>[S(u,{cards:C(b)},null,8,["cards"]),S(f,null,{default:M(()=>[S(k,{"monthly-items":C(s),class:"md:col-span-8"},null,8,["monthly-items"]),S(w,{items:C(a),class:"md:col-span-4"},null,8,["items"]),S(R,{items:C(n),class:"md:col-span-12","heat-metric":"cost",title:"Usage Trend"},null,8,["items"]),S(L,{items:C(g),"total-sessions":C(o),class:"md:col-span-6"},null,8,["items","total-sessions"]),S(y,{"daily-items":C(n),items:C(l),class:"md:col-span-6"},null,8,["daily-items","items"]),S(c,{class:"md:col-span-12"})]),_:1})]),_:1})}}});export{$n as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const client_precomputed = ((h,j,k,m,o,q,u,x)=>({dependencies:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":{scripts:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h={resourceType:"script",module:true,prefetch:true,preload:true,file:"BFLIXB9O.js",name:"entry",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js",isEntry:true,dynamicImports:["layouts/default.vue","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue"],css:["entry.CJkVK2j6.css"]}},styles:{"entry.CJkVK2j6.css":j={file:"entry.CJkVK2j6.css",resourceType:"style",prefetch:true,preload:true}},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"entry.CJkVK2j6.css":j}},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{scripts:{},styles:{"error-404.B0EXnOcv.css":k={file:"error-404.B0EXnOcv.css",resourceType:"style",prefetch:true,preload:true},"entry.CJkVK2j6.css":j},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"f_iPFAtL.js",name:"error-404",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],css:["error-404.B0EXnOcv.css"]},"error-404.B0EXnOcv.css":k,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"error-404.B0EXnOcv.css":k,"entry.CJkVK2j6.css":j}},"error-404.B0EXnOcv.css":{scripts:{},styles:{},preload:{"error-404.B0EXnOcv.css":k},prefetch:{}},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{scripts:{},styles:{"error-500.CnSNZoEG.css":m={file:"error-500.CnSNZoEG.css",resourceType:"style",prefetch:true,preload:true},"entry.CJkVK2j6.css":j},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"D9KD20BD.js",name:"error-500",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],css:["error-500.CnSNZoEG.css"]},"error-500.CnSNZoEG.css":m,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"error-500.CnSNZoEG.css":m,"entry.CJkVK2j6.css":j}},"error-500.CnSNZoEG.css":{scripts:{},styles:{},preload:{"error-500.CnSNZoEG.css":m},prefetch:{}},"entry.CJkVK2j6.css":{scripts:{},styles:{},preload:{"entry.CJkVK2j6.css":j},prefetch:{}},"_Bvg0CuDs.js":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"_Bvg0CuDs.js":o={resourceType:"script",module:true,prefetch:true,preload:true,file:"Bvg0CuDs.js",name:"Page",imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"entry.CJkVK2j6.css":j}},"_B-CIibMz.js":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"_B-CIibMz.js":q={resourceType:"script",module:true,prefetch:true,preload:true,file:"B-CIibMz.js",name:"UsageHeatmapPanel",imports:["_Bvg0CuDs.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_Bvg0CuDs.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"entry.CJkVK2j6.css":j}},"_Brp07rVz.js":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"_Brp07rVz.js":u={resourceType:"script",module:true,prefetch:true,preload:true,file:"Brp07rVz.js",name:"TokenUsageTabsPanel",imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js","_Bvg0CuDs.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j,"_Bvg0CuDs.js":o},prefetch:{"entry.CJkVK2j6.css":j}},"_DsWoOjFk.js":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"_DsWoOjFk.js":x={resourceType:"script",module:true,prefetch:true,preload:true,file:"DsWoOjFk.js",name:"Skeleton.vue",imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j},prefetch:{"entry.CJkVK2j6.css":j}},"layouts/default.vue":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"layouts/default.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"D3pogf62.js",name:"default",src:"layouts/default.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js","_DsWoOjFk.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j,"_DsWoOjFk.js":x},prefetch:{"entry.CJkVK2j6.css":j}},"pages/[product].vue":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"pages/[product].vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"CvpNFEwm.js",name:"_product_",src:"pages/[product].vue",isDynamicEntry:true,imports:["_Bvg0CuDs.js","_B-CIibMz.js","_Brp07rVz.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_Bvg0CuDs.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j,"_B-CIibMz.js":q,"_Brp07rVz.js":u},prefetch:{"entry.CJkVK2j6.css":j}},"pages/index.vue":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"pages/index.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"BNPuv5_2.js",name:"index",src:"pages/index.vue",isDynamicEntry:true,imports:["_Bvg0CuDs.js","_B-CIibMz.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_Bvg0CuDs.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j,"_B-CIibMz.js":q},prefetch:{"entry.CJkVK2j6.css":j}},"pages/project.vue":{scripts:{},styles:{"entry.CJkVK2j6.css":j},preload:{"pages/project.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"DUfyK9T8.js",name:"project",src:"pages/project.vue",isDynamicEntry:true,imports:["_Brp07rVz.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js","_Bvg0CuDs.js","_DsWoOjFk.js"]},"_Brp07rVz.js":u,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.CJkVK2j6.css":j,"_Bvg0CuDs.js":o,"_DsWoOjFk.js":x},prefetch:{"entry.CJkVK2j6.css":j}}},entrypoints:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],modules:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{file:"f_iPFAtL.js",resourceType:"script",mimeType:void 0,module:true},"error-404.B0EXnOcv.css":{file:"error-404.B0EXnOcv.css",resourceType:"style",mimeType:void 0,module:void 0},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{file:"D9KD20BD.js",resourceType:"script",mimeType:void 0,module:true},"error-500.CnSNZoEG.css":{file:"error-500.CnSNZoEG.css",resourceType:"style",mimeType:void 0,module:void 0},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":{file:"BFLIXB9O.js",resourceType:"script",mimeType:void 0,module:true},"entry.CJkVK2j6.css":{file:"entry.CJkVK2j6.css",resourceType:"style",mimeType:void 0,module:void 0},"_B-CIibMz.js":{file:"B-CIibMz.js",resourceType:"script",mimeType:void 0,module:true},"_Brp07rVz.js":{file:"Brp07rVz.js",resourceType:"script",mimeType:void 0,module:true},"_Bvg0CuDs.js":{file:"Bvg0CuDs.js",resourceType:"script",mimeType:void 0,module:true},"_DsWoOjFk.js":{file:"DsWoOjFk.js",resourceType:"script",mimeType:void 0,module:true},"layouts/default.vue":{file:"D3pogf62.js",resourceType:"script",mimeType:void 0,module:true},"pages/[product].vue":{file:"CvpNFEwm.js",resourceType:"script",mimeType:void 0,module:true},"pages/index.vue":{file:"BNPuv5_2.js",resourceType:"script",mimeType:void 0,module:true},"pages/project.vue":{file:"DUfyK9T8.js",resourceType:"script",mimeType:void 0,module:true}}}))();
|
|
1
|
+
const client_precomputed = ((h,j,k,m,o,q,u,x)=>({dependencies:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":{scripts:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h={resourceType:"script",module:true,prefetch:true,preload:true,file:"CBNzCW3N.js",name:"entry",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js",isEntry:true,dynamicImports:["layouts/default.vue","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue"],css:["entry.r-q4oQC0.css"]}},styles:{"entry.r-q4oQC0.css":j={file:"entry.r-q4oQC0.css",resourceType:"style",prefetch:true,preload:true}},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"entry.r-q4oQC0.css":j}},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{scripts:{},styles:{"error-404.B0EXnOcv.css":k={file:"error-404.B0EXnOcv.css",resourceType:"style",prefetch:true,preload:true},"entry.r-q4oQC0.css":j},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"BT5lZ84X.js",name:"error-404",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],css:["error-404.B0EXnOcv.css"]},"error-404.B0EXnOcv.css":k,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"error-404.B0EXnOcv.css":k,"entry.r-q4oQC0.css":j}},"error-404.B0EXnOcv.css":{scripts:{},styles:{},preload:{"error-404.B0EXnOcv.css":k},prefetch:{}},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{scripts:{},styles:{"error-500.CnSNZoEG.css":m={file:"error-500.CnSNZoEG.css",resourceType:"style",prefetch:true,preload:true},"entry.r-q4oQC0.css":j},preload:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"BFuazmgM.js",name:"error-500",src:"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],css:["error-500.CnSNZoEG.css"]},"error-500.CnSNZoEG.css":m,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"error-500.CnSNZoEG.css":m,"entry.r-q4oQC0.css":j}},"error-500.CnSNZoEG.css":{scripts:{},styles:{},preload:{"error-500.CnSNZoEG.css":m},prefetch:{}},"entry.r-q4oQC0.css":{scripts:{},styles:{},preload:{"entry.r-q4oQC0.css":j},prefetch:{}},"_4bxbFgue.js":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"_4bxbFgue.js":o={resourceType:"script",module:true,prefetch:true,preload:true,file:"4bxbFgue.js",name:"Page",imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"entry.r-q4oQC0.css":j}},"_Bhg6RTpr.js":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"_Bhg6RTpr.js":q={resourceType:"script",module:true,prefetch:true,preload:true,file:"Bhg6RTpr.js",name:"UsageHeatmapPanel",imports:["_4bxbFgue.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_4bxbFgue.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"entry.r-q4oQC0.css":j}},"_DJtZPkAh.js":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"_DJtZPkAh.js":u={resourceType:"script",module:true,prefetch:true,preload:true,file:"DJtZPkAh.js",name:"TokenUsageTabsPanel",imports:["_4bxbFgue.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_4bxbFgue.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"entry.r-q4oQC0.css":j}},"_Rw8uLrAX.js":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"_Rw8uLrAX.js":x={resourceType:"script",module:true,prefetch:true,preload:true,file:"Rw8uLrAX.js",name:"Skeleton.vue",imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j},prefetch:{"entry.r-q4oQC0.css":j}},"layouts/default.vue":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"layouts/default.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"DhnbCV8M.js",name:"default",src:"layouts/default.vue",isDynamicEntry:true,imports:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js","_Rw8uLrAX.js"]},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j,"_Rw8uLrAX.js":x},prefetch:{"entry.r-q4oQC0.css":j}},"pages/[product].vue":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"pages/[product].vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"CJwUiTrM.js",name:"_product_",src:"pages/[product].vue",isDynamicEntry:true,imports:["_4bxbFgue.js","_Bhg6RTpr.js","_DJtZPkAh.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_4bxbFgue.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j,"_Bhg6RTpr.js":q,"_DJtZPkAh.js":u},prefetch:{"entry.r-q4oQC0.css":j}},"pages/index.vue":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"pages/index.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"uC637M1z.js",name:"index",src:"pages/index.vue",isDynamicEntry:true,imports:["_4bxbFgue.js","_Bhg6RTpr.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"]},"_4bxbFgue.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j,"_Bhg6RTpr.js":q},prefetch:{"entry.r-q4oQC0.css":j}},"pages/project.vue":{scripts:{},styles:{"entry.r-q4oQC0.css":j},preload:{"pages/project.vue":{resourceType:"script",module:true,prefetch:true,preload:true,file:"BWrHX8SV.js",name:"project",src:"pages/project.vue",isDynamicEntry:true,imports:["_4bxbFgue.js","../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js","_DJtZPkAh.js","_Rw8uLrAX.js"]},"_4bxbFgue.js":o,"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":h,"entry.r-q4oQC0.css":j,"_DJtZPkAh.js":u,"_Rw8uLrAX.js":x},prefetch:{"entry.r-q4oQC0.css":j}}},entrypoints:["../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js"],modules:{"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-404.vue":{file:"BT5lZ84X.js",resourceType:"script",mimeType:void 0,module:true},"error-404.B0EXnOcv.css":{file:"error-404.B0EXnOcv.css",resourceType:"style",mimeType:void 0,module:void 0},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/components/error-500.vue":{file:"BFuazmgM.js",resourceType:"script",mimeType:void 0,module:true},"error-500.CnSNZoEG.css":{file:"error-500.CnSNZoEG.css",resourceType:"style",mimeType:void 0,module:void 0},"../node_modules/.pnpm/nuxt@4.4.2_@babel+core@7.29.0_@babel+plugin-syntax-jsx@7.28.6_@babel+core@7.29.0__@emna_8a7a22b02193a79666d46692c90ea931/node_modules/nuxt/dist/app/entry.js":{file:"CBNzCW3N.js",resourceType:"script",mimeType:void 0,module:true},"entry.r-q4oQC0.css":{file:"entry.r-q4oQC0.css",resourceType:"style",mimeType:void 0,module:void 0},"_4bxbFgue.js":{file:"4bxbFgue.js",resourceType:"script",mimeType:void 0,module:true},"_Bhg6RTpr.js":{file:"Bhg6RTpr.js",resourceType:"script",mimeType:void 0,module:true},"_DJtZPkAh.js":{file:"DJtZPkAh.js",resourceType:"script",mimeType:void 0,module:true},"_Rw8uLrAX.js":{file:"Rw8uLrAX.js",resourceType:"script",mimeType:void 0,module:true},"layouts/default.vue":{file:"DhnbCV8M.js",resourceType:"script",mimeType:void 0,module:true},"pages/[product].vue":{file:"CJwUiTrM.js",resourceType:"script",mimeType:void 0,module:true},"pages/index.vue":{file:"uC637M1z.js",resourceType:"script",mimeType:void 0,module:true},"pages/project.vue":{file:"BWrHX8SV.js",resourceType:"script",mimeType:void 0,module:true}}}))();
|
|
2
2
|
|
|
3
3
|
export { client_precomputed as default };
|
|
@@ -4250,7 +4250,7 @@ function _expandFromEnv(value) {
|
|
|
4250
4250
|
const _inlineRuntimeConfig = {
|
|
4251
4251
|
"app": {
|
|
4252
4252
|
"baseURL": "/",
|
|
4253
|
-
"buildId": "
|
|
4253
|
+
"buildId": "8e0230d2-a165-4dfa-b759-5387bcb88e4e",
|
|
4254
4254
|
"buildAssetsDir": "/_nuxt/",
|
|
4255
4255
|
"cdnURL": ""
|
|
4256
4256
|
},
|
|
@@ -4278,7 +4278,7 @@ const _inlineRuntimeConfig = {
|
|
|
4278
4278
|
}
|
|
4279
4279
|
},
|
|
4280
4280
|
"public": {
|
|
4281
|
-
"appVersion": "2.
|
|
4281
|
+
"appVersion": "2.1.1",
|
|
4282
4282
|
"home": "/Users/tangchenghui"
|
|
4283
4283
|
},
|
|
4284
4284
|
"icon": {
|
|
@@ -4696,135 +4696,135 @@ const assets = {
|
|
|
4696
4696
|
"/logo.svg": {
|
|
4697
4697
|
"type": "image/svg+xml",
|
|
4698
4698
|
"etag": "\"1550-fwYFdULdJ83Qp0FjnnX31iQz9oI\"",
|
|
4699
|
-
"mtime": "2026-04-
|
|
4699
|
+
"mtime": "2026-04-24T02:58:12.966Z",
|
|
4700
4700
|
"size": 5456,
|
|
4701
4701
|
"path": "../public/logo.svg"
|
|
4702
4702
|
},
|
|
4703
4703
|
"/favicon.ico": {
|
|
4704
4704
|
"type": "image/vnd.microsoft.icon",
|
|
4705
4705
|
"etag": "\"1083e-LfyFZ+1JmdianDqe/sQN2Ou0IzQ\"",
|
|
4706
|
-
"mtime": "2026-04-
|
|
4706
|
+
"mtime": "2026-04-24T02:58:12.967Z",
|
|
4707
4707
|
"size": 67646,
|
|
4708
4708
|
"path": "../public/favicon.ico"
|
|
4709
4709
|
},
|
|
4710
|
-
"/
|
|
4711
|
-
"type": "text/plain; charset=utf-8",
|
|
4712
|
-
"etag": "\"18-j8OIsL9qGDmNZ+lHhp2tyH4XtaE\"",
|
|
4713
|
-
"mtime": "2026-04-23T15:26:51.056Z",
|
|
4714
|
-
"size": 24,
|
|
4715
|
-
"path": "../public/robots.txt"
|
|
4716
|
-
},
|
|
4717
|
-
"/_nuxt/B-CIibMz.js": {
|
|
4710
|
+
"/_nuxt/BFuazmgM.js": {
|
|
4718
4711
|
"type": "text/javascript; charset=utf-8",
|
|
4719
|
-
"etag": "\"
|
|
4720
|
-
"mtime": "2026-04-
|
|
4721
|
-
"size":
|
|
4722
|
-
"path": "../public/_nuxt/
|
|
4712
|
+
"etag": "\"d7b-m9yd+vTqksBw5d4Z83e8Isvz4QY\"",
|
|
4713
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4714
|
+
"size": 3451,
|
|
4715
|
+
"path": "../public/_nuxt/BFuazmgM.js"
|
|
4723
4716
|
},
|
|
4724
|
-
"/_nuxt/
|
|
4717
|
+
"/_nuxt/BT5lZ84X.js": {
|
|
4725
4718
|
"type": "text/javascript; charset=utf-8",
|
|
4726
|
-
"etag": "\"
|
|
4727
|
-
"mtime": "2026-04-
|
|
4728
|
-
"size":
|
|
4729
|
-
"path": "../public/_nuxt/
|
|
4719
|
+
"etag": "\"e99-EK3ipbFnVCZYZkTaEmK4FsQqrng\"",
|
|
4720
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4721
|
+
"size": 3737,
|
|
4722
|
+
"path": "../public/_nuxt/BT5lZ84X.js"
|
|
4730
4723
|
},
|
|
4731
|
-
"/_nuxt/
|
|
4724
|
+
"/_nuxt/Bhg6RTpr.js": {
|
|
4732
4725
|
"type": "text/javascript; charset=utf-8",
|
|
4733
|
-
"etag": "\"
|
|
4734
|
-
"mtime": "2026-04-
|
|
4735
|
-
"size":
|
|
4736
|
-
"path": "../public/_nuxt/
|
|
4726
|
+
"etag": "\"3edf-dmZjYllCNhb1feWht9I1ywmMMcQ\"",
|
|
4727
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4728
|
+
"size": 16095,
|
|
4729
|
+
"path": "../public/_nuxt/Bhg6RTpr.js"
|
|
4737
4730
|
},
|
|
4738
|
-
"/_nuxt/
|
|
4731
|
+
"/_nuxt/BWrHX8SV.js": {
|
|
4739
4732
|
"type": "text/javascript; charset=utf-8",
|
|
4740
|
-
"etag": "\"
|
|
4741
|
-
"mtime": "2026-04-
|
|
4742
|
-
"size":
|
|
4743
|
-
"path": "../public/_nuxt/
|
|
4733
|
+
"etag": "\"118d5-kAEh131voK5zxETtf7h2tgjpexo\"",
|
|
4734
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4735
|
+
"size": 71893,
|
|
4736
|
+
"path": "../public/_nuxt/BWrHX8SV.js"
|
|
4744
4737
|
},
|
|
4745
|
-
"/
|
|
4746
|
-
"type": "text/
|
|
4747
|
-
"etag": "\"
|
|
4748
|
-
"mtime": "2026-04-
|
|
4749
|
-
"size":
|
|
4750
|
-
"path": "../public/
|
|
4738
|
+
"/robots.txt": {
|
|
4739
|
+
"type": "text/plain; charset=utf-8",
|
|
4740
|
+
"etag": "\"18-j8OIsL9qGDmNZ+lHhp2tyH4XtaE\"",
|
|
4741
|
+
"mtime": "2026-04-24T02:58:12.966Z",
|
|
4742
|
+
"size": 24,
|
|
4743
|
+
"path": "../public/robots.txt"
|
|
4751
4744
|
},
|
|
4752
|
-
"/_nuxt/
|
|
4745
|
+
"/_nuxt/DJtZPkAh.js": {
|
|
4753
4746
|
"type": "text/javascript; charset=utf-8",
|
|
4754
|
-
"etag": "\"
|
|
4755
|
-
"mtime": "2026-04-
|
|
4756
|
-
"size":
|
|
4757
|
-
"path": "../public/_nuxt/
|
|
4747
|
+
"etag": "\"426c-eutmP9EdsmCQ9/RtzAWSF2ZW2yk\"",
|
|
4748
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4749
|
+
"size": 17004,
|
|
4750
|
+
"path": "../public/_nuxt/DJtZPkAh.js"
|
|
4758
4751
|
},
|
|
4759
|
-
"/_nuxt/
|
|
4752
|
+
"/_nuxt/DhnbCV8M.js": {
|
|
4760
4753
|
"type": "text/javascript; charset=utf-8",
|
|
4761
|
-
"etag": "\"
|
|
4762
|
-
"mtime": "2026-04-
|
|
4763
|
-
"size":
|
|
4764
|
-
"path": "../public/_nuxt/
|
|
4754
|
+
"etag": "\"15e4-W6Y9jwtKy6BavrPBN1TCd4R52ho\"",
|
|
4755
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4756
|
+
"size": 5604,
|
|
4757
|
+
"path": "../public/_nuxt/DhnbCV8M.js"
|
|
4765
4758
|
},
|
|
4766
|
-
"/_nuxt/
|
|
4759
|
+
"/_nuxt/CJwUiTrM.js": {
|
|
4767
4760
|
"type": "text/javascript; charset=utf-8",
|
|
4768
|
-
"etag": "\"
|
|
4769
|
-
"mtime": "2026-04-
|
|
4770
|
-
"size":
|
|
4771
|
-
"path": "../public/_nuxt/
|
|
4761
|
+
"etag": "\"1d4a-u5FSTzfK6IgIMj+9B6GVAxaDP/s\"",
|
|
4762
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4763
|
+
"size": 7498,
|
|
4764
|
+
"path": "../public/_nuxt/CJwUiTrM.js"
|
|
4772
4765
|
},
|
|
4773
|
-
"/_nuxt/
|
|
4766
|
+
"/_nuxt/Rw8uLrAX.js": {
|
|
4774
4767
|
"type": "text/javascript; charset=utf-8",
|
|
4775
|
-
"etag": "\"
|
|
4776
|
-
"mtime": "2026-04-
|
|
4777
|
-
"size":
|
|
4778
|
-
"path": "../public/_nuxt/
|
|
4768
|
+
"etag": "\"4c9e-bHjwueg6B8Rm+c+1J2NfcFTE9Z8\"",
|
|
4769
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4770
|
+
"size": 19614,
|
|
4771
|
+
"path": "../public/_nuxt/Rw8uLrAX.js"
|
|
4779
4772
|
},
|
|
4780
4773
|
"/_nuxt/error-404.B0EXnOcv.css": {
|
|
4781
4774
|
"type": "text/css; charset=utf-8",
|
|
4782
4775
|
"etag": "\"97e-kQ0ZEshAxA5Nrtoiwq6n4Sz6H94\"",
|
|
4783
|
-
"mtime": "2026-04-
|
|
4776
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4784
4777
|
"size": 2430,
|
|
4785
4778
|
"path": "../public/_nuxt/error-404.B0EXnOcv.css"
|
|
4786
4779
|
},
|
|
4780
|
+
"/_nuxt/4bxbFgue.js": {
|
|
4781
|
+
"type": "text/javascript; charset=utf-8",
|
|
4782
|
+
"etag": "\"41350-sUXoQ7YH8xgNgkCrTFtU+PUjr+g\"",
|
|
4783
|
+
"mtime": "2026-04-24T02:58:12.963Z",
|
|
4784
|
+
"size": 267088,
|
|
4785
|
+
"path": "../public/_nuxt/4bxbFgue.js"
|
|
4786
|
+
},
|
|
4787
4787
|
"/_nuxt/error-500.CnSNZoEG.css": {
|
|
4788
4788
|
"type": "text/css; charset=utf-8",
|
|
4789
4789
|
"etag": "\"773-muVEP28ocnl3dl4Mg2tNj2UV4+I\"",
|
|
4790
|
-
"mtime": "2026-04-
|
|
4790
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4791
4791
|
"size": 1907,
|
|
4792
4792
|
"path": "../public/_nuxt/error-500.CnSNZoEG.css"
|
|
4793
4793
|
},
|
|
4794
4794
|
"/_nuxt/builds/latest.json": {
|
|
4795
4795
|
"type": "application/json",
|
|
4796
|
-
"etag": "\"47-
|
|
4797
|
-
"mtime": "2026-04-
|
|
4796
|
+
"etag": "\"47-OM6hLfE4SY+bhKm62sfCIDfrhGU\"",
|
|
4797
|
+
"mtime": "2026-04-24T02:58:12.955Z",
|
|
4798
4798
|
"size": 71,
|
|
4799
4799
|
"path": "../public/_nuxt/builds/latest.json"
|
|
4800
4800
|
},
|
|
4801
|
-
"/_nuxt/builds/meta/
|
|
4801
|
+
"/_nuxt/builds/meta/8e0230d2-a165-4dfa-b759-5387bcb88e4e.json": {
|
|
4802
4802
|
"type": "application/json",
|
|
4803
|
-
"etag": "\"58-
|
|
4804
|
-
"mtime": "2026-04-
|
|
4803
|
+
"etag": "\"58-5jX5KhB4m02UFx7KEGmfWJPpoaA\"",
|
|
4804
|
+
"mtime": "2026-04-24T02:58:12.948Z",
|
|
4805
4805
|
"size": 88,
|
|
4806
|
-
"path": "../public/_nuxt/builds/meta/
|
|
4806
|
+
"path": "../public/_nuxt/builds/meta/8e0230d2-a165-4dfa-b759-5387bcb88e4e.json"
|
|
4807
4807
|
},
|
|
4808
|
-
"/_nuxt/
|
|
4809
|
-
"type": "text/css; charset=utf-8",
|
|
4810
|
-
"etag": "\"1d46d-stbCy1Tut4jJ9o/SQqQnCWyUQuw\"",
|
|
4811
|
-
"mtime": "2026-04-23T15:26:51.054Z",
|
|
4812
|
-
"size": 119917,
|
|
4813
|
-
"path": "../public/_nuxt/entry.CJkVK2j6.css"
|
|
4814
|
-
},
|
|
4815
|
-
"/_nuxt/f_iPFAtL.js": {
|
|
4808
|
+
"/_nuxt/uC637M1z.js": {
|
|
4816
4809
|
"type": "text/javascript; charset=utf-8",
|
|
4817
|
-
"etag": "\"
|
|
4818
|
-
"mtime": "2026-04-
|
|
4819
|
-
"size":
|
|
4820
|
-
"path": "../public/_nuxt/
|
|
4810
|
+
"etag": "\"a18b-IDwiSXCX5aevshGNg1krWuiXO6E\"",
|
|
4811
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4812
|
+
"size": 41355,
|
|
4813
|
+
"path": "../public/_nuxt/uC637M1z.js"
|
|
4821
4814
|
},
|
|
4822
|
-
"/_nuxt/
|
|
4815
|
+
"/_nuxt/CBNzCW3N.js": {
|
|
4823
4816
|
"type": "text/javascript; charset=utf-8",
|
|
4824
|
-
"etag": "\"
|
|
4825
|
-
"mtime": "2026-04-
|
|
4826
|
-
"size":
|
|
4827
|
-
"path": "../public/_nuxt/
|
|
4817
|
+
"etag": "\"4cea9-luduNFr7nuV6Gl5/r699pAMA5wY\"",
|
|
4818
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4819
|
+
"size": 315049,
|
|
4820
|
+
"path": "../public/_nuxt/CBNzCW3N.js"
|
|
4821
|
+
},
|
|
4822
|
+
"/_nuxt/entry.r-q4oQC0.css": {
|
|
4823
|
+
"type": "text/css; charset=utf-8",
|
|
4824
|
+
"etag": "\"1d4c5-XrvSWxRoEnXFXlc60WKf6SWSUqA\"",
|
|
4825
|
+
"mtime": "2026-04-24T02:58:12.964Z",
|
|
4826
|
+
"size": 120005,
|
|
4827
|
+
"path": "../public/_nuxt/entry.r-q4oQC0.css"
|
|
4828
4828
|
}
|
|
4829
4829
|
};
|
|
4830
4830
|
|
|
@@ -7129,6 +7129,20 @@ function getTrendTone(value) {
|
|
|
7129
7129
|
return "neutral";
|
|
7130
7130
|
}
|
|
7131
7131
|
|
|
7132
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : "undefined" !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
7133
|
+
|
|
7134
|
+
//#endregion
|
|
7135
|
+
//#region src/format.ts
|
|
7136
|
+
/**
|
|
7137
|
+
* Formats a number with locale-specific thousand separators
|
|
7138
|
+
* @param num - The number to format
|
|
7139
|
+
* @returns Formatted number string with commas as thousand separators
|
|
7140
|
+
* @example formatNumber(1234567890) // "1,234,567,890"
|
|
7141
|
+
*/
|
|
7142
|
+
function formatNumber(num) {
|
|
7143
|
+
return num.toLocaleString("en-US");
|
|
7144
|
+
}
|
|
7145
|
+
|
|
7132
7146
|
function parseJsonlFile(filePath) {
|
|
7133
7147
|
const content = readFileSync(filePath, "utf8");
|
|
7134
7148
|
if (!content.trim()) {
|
|
@@ -7186,7 +7200,7 @@ function buildDailyUsageGroups(events, options = {}) {
|
|
|
7186
7200
|
return groups;
|
|
7187
7201
|
}
|
|
7188
7202
|
function buildDailyTokenUsage(dailyGroups) {
|
|
7189
|
-
return Array.from(dailyGroups.values()).sort((a, b) =>
|
|
7203
|
+
return Array.from(dailyGroups.values()).sort((a, b) => b.dateKey.localeCompare(a.dateKey)).map((group) => ({
|
|
7190
7204
|
cachedInputTokens: group.cachedInputTokens,
|
|
7191
7205
|
costUSD: roundCurrency(group.costUSD),
|
|
7192
7206
|
date: group.displayLabel,
|
|
@@ -7274,7 +7288,7 @@ function buildMonthlyModelUsage(events, options = {}) {
|
|
|
7274
7288
|
})).sort((a, b) => a.month.localeCompare(b.month) || a.model.localeCompare(b.model));
|
|
7275
7289
|
}
|
|
7276
7290
|
function buildSessionRows(sessions, options = {}) {
|
|
7277
|
-
return sessions.map((session) => ({
|
|
7291
|
+
return [...sessions].sort((a, b) => getSessionSortTimestamp(b) - getSessionSortTimestamp(a)).map((session) => ({
|
|
7278
7292
|
cachedInputTokens: getCachedInputTokens(session, options),
|
|
7279
7293
|
costUSD: session.costUSD,
|
|
7280
7294
|
id: session.sessionId,
|
|
@@ -7312,12 +7326,21 @@ function toUsageSessionUsageItem(session, options = {}) {
|
|
|
7312
7326
|
week: getWeekLabel(startedAtDate)
|
|
7313
7327
|
};
|
|
7314
7328
|
}
|
|
7329
|
+
function getSessionSortTimestamp(session) {
|
|
7330
|
+
const startedAtTimestamp = Date.parse(session.startedAt);
|
|
7331
|
+
if (Number.isFinite(startedAtTimestamp)) {
|
|
7332
|
+
return startedAtTimestamp;
|
|
7333
|
+
}
|
|
7334
|
+
const lastActivityTimestamp = Date.parse(session.lastActivity);
|
|
7335
|
+
return Number.isFinite(lastActivityTimestamp) ? lastActivityTimestamp : 0;
|
|
7336
|
+
}
|
|
7315
7337
|
function buildOverviewCards(options) {
|
|
7316
7338
|
var _a, _b, _c, _d;
|
|
7317
7339
|
const tokenTrend = buildGrowthTrend(options.todayTotalTokens, options.previousDayTokens, formatCompactNumber);
|
|
7318
7340
|
const costTrend = buildGrowthTrend(options.todayTotalCost, options.previousDayCost, formatCurrency);
|
|
7319
7341
|
return [
|
|
7320
7342
|
{
|
|
7343
|
+
detail: `${formatNumber(options.todayTotalTokens)} tokens used today`,
|
|
7321
7344
|
icon: "solar:cpu-line-duotone",
|
|
7322
7345
|
name: "Today Tokens",
|
|
7323
7346
|
trend: tokenTrend.trend,
|
|
@@ -7325,6 +7348,7 @@ function buildOverviewCards(options) {
|
|
|
7325
7348
|
value: formatCompactNumber(options.todayTotalTokens)
|
|
7326
7349
|
},
|
|
7327
7350
|
{
|
|
7351
|
+
detail: `${formatCurrency(options.todayTotalCost)} spent today`,
|
|
7328
7352
|
icon: "lucide:wallet",
|
|
7329
7353
|
name: "Today Spend",
|
|
7330
7354
|
trend: costTrend.trend,
|
|
@@ -7332,6 +7356,7 @@ function buildOverviewCards(options) {
|
|
|
7332
7356
|
value: formatCurrency(options.todayTotalCost)
|
|
7333
7357
|
},
|
|
7334
7358
|
{
|
|
7359
|
+
detail: options.todayTopProject ? `${options.todayTopProject.project} with ${formatNumber(options.todayTopProject.sessionCount)} sessions today` : "No project sessions recorded today",
|
|
7335
7360
|
icon: "lucide:folder-git-2",
|
|
7336
7361
|
name: "Top Session Project",
|
|
7337
7362
|
trend: options.todayTopProject ? `${options.todayTopProject.sessionCount} sessions` : "No sessions",
|
|
@@ -7339,6 +7364,7 @@ function buildOverviewCards(options) {
|
|
|
7339
7364
|
value: (_b = (_a = options.todayTopProject) == null ? void 0 : _a.project) != null ? _b : "-"
|
|
7340
7365
|
},
|
|
7341
7366
|
{
|
|
7367
|
+
detail: options.todayTopModel ? `${options.todayTopModel.model} with ${formatNumber(options.todayTopModel.totalTokens)} tokens today` : "No model usage recorded today",
|
|
7342
7368
|
icon: "lucide:bot",
|
|
7343
7369
|
name: "Top Invoked Model",
|
|
7344
7370
|
trend: options.todayTopModel ? `${formatCompactNumber(options.todayTopModel.totalTokens)} tokens` : "No usage",
|
|
@@ -7351,7 +7377,8 @@ function buildLoadUsageResult(events, sessions, options = {}) {
|
|
|
7351
7377
|
var _a, _b, _c, _d, _e, _f;
|
|
7352
7378
|
const aggregateOptions = (_a = options.aggregateOptions) != null ? _a : {};
|
|
7353
7379
|
const sessionOptions = (_b = options.sessionOptions) != null ? _b : {};
|
|
7354
|
-
const
|
|
7380
|
+
const sortedSessions = [...sessions].sort((a, b) => getSessionSortTimestamp(b) - getSessionSortTimestamp(a));
|
|
7381
|
+
const sessionUsage = sortedSessions.map((session) => toUsageSessionUsageItem(session, sessionOptions));
|
|
7355
7382
|
const dailyGroups = buildDailyUsageGroups(events, aggregateOptions);
|
|
7356
7383
|
const todayDateKey = getDateKey(/* @__PURE__ */ new Date());
|
|
7357
7384
|
const previousDayDateKey = getPreviousDateKey(todayDateKey);
|
|
@@ -7377,7 +7404,7 @@ function buildLoadUsageResult(events, sessions, options = {}) {
|
|
|
7377
7404
|
todayTotalTokens
|
|
7378
7405
|
}),
|
|
7379
7406
|
projectUsage: buildProjectUsage(sessionUsage),
|
|
7380
|
-
sessionRows: buildSessionRows(
|
|
7407
|
+
sessionRows: buildSessionRows(sortedSessions, sessionOptions),
|
|
7381
7408
|
sessionUsage,
|
|
7382
7409
|
todayTopModel,
|
|
7383
7410
|
todayTopProject,
|
|
@@ -7736,8 +7763,6 @@ function cloneDate(date) {
|
|
|
7736
7763
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
7737
7764
|
}
|
|
7738
7765
|
|
|
7739
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : "undefined" !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
7740
|
-
|
|
7741
7766
|
const collections = {
|
|
7742
7767
|
};
|
|
7743
7768
|
|