@unblind/react 0.1.0-alpha.20 → 0.1.0-alpha.22

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 CHANGED
@@ -1,2 +1,2 @@
1
- import{QueryClient as xe,QueryClientProvider as Je,useQueryClient as Ze}from"@tanstack/react-query";import{createContext as et,useCallback as tt,useContext as rt,useMemo as Se}from"react";import{jsx as Pe}from"react/jsx-runtime";var Re=et(void 0);function oe({children:e,queryClient:t,queryClientConfig:r,apiBaseUrl:o="/api/unblind",fetchImpl:i}){let n=Se(()=>{if(t)return t;let s={refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},l={defaultOptions:{queries:s}};return r?new xe({...r,defaultOptions:{...r.defaultOptions,queries:{...s,...r.defaultOptions?.queries}}}):new xe(l)},[t,r]),a=Se(()=>({apiBaseUrl:o,fetchImpl:i}),[o,i]);return Pe(Je,{client:n,children:Pe(Re.Provider,{value:a,children:e})})}function D(){let e=rt(Re);if(!e)throw new Error("useUnblindConfig must be used within an UnblindClientProvider. Please wrap your app or component tree with <UnblindClientProvider>.");return e}function ke(){let e=Ze();return tt(async()=>{await e.refetchQueries({queryKey:["unblind","timeseries"]})},[e])}import{createContext as it,useContext as Ae,useMemo as K}from"react";import{jsx as z,jsxs as ot}from"react/jsx-runtime";function ie(){return z("div",{className:"ub-default",children:ot("div",{className:"ub-empty-content",children:[z("div",{className:"ub-empty-icon-wrapper",children:z("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"ub-icon",children:z("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),z("p",{className:"ub-empty-text","data-text":"No data available for this time range"})]})})}function ne(){return z("div",{className:"ub-default-error"})}function se(){return z("div",{className:"ub-default-loading","data-text":"Loading"})}import{jsx as st}from"react/jsx-runtime";var ae=it(void 0);function X({children:e,timeRange:t,startTime:r,endTime:o,interval:i,attributes:n,groupBy:a,operator:s,appearance:l,tooltip:m,colors:f,fill:g,hideAxis:h,hideCursor:c,relativeTimeAxis:b,invertSort:y}){let d=Ae(ae),v=l?.components?.Loading||d?.appearance?.components?.Loading,T=l?.components?.Error||d?.appearance?.components?.Error,x=l?.components?.Tooltip||d?.appearance?.components?.Tooltip,p=l?.components?.Empty||d?.appearance?.components?.Empty,C=typeof m?.hide=="boolean"?m?.hide:d?.tooltip?.hide,R=typeof m?.visibilityLimit=="number"?m?.visibilityLimit:d?.tooltip?.visibilityLimit,k=K(()=>({components:{...v&&{Loading:v},...T&&{Error:T},...x&&{Tooltip:x},...p&&{Empty:p}}}),[v,T,x,p]),A=K(()=>({hide:C,visibilityLimit:R}),[C,R]),w=K(()=>({timeRange:t??d?.timeRange,startTime:r??d?.startTime,endTime:o??d?.endTime,interval:i??d?.interval,attributes:n??d?.attributes,groupBy:a??d?.groupBy,operator:s??d?.operator,colors:f??d?.colors,relativeTimeAxis:typeof b=="boolean"?b:d?.relativeTimeAxis,fill:typeof g=="boolean"?g:d?.fill,hideAxis:typeof h=="boolean"?h:d?.hideAxis,hideCursor:typeof c=="boolean"?c:d?.hideCursor,invertSort:typeof y=="boolean"?y:d?.invertSort,appearance:k,tooltip:A}),[t,r,o,i,n,a,s,f,g,b,h,c,k,A,d,y]);return st(ae.Provider,{value:w,children:e})}var nt="6h";function I(){let e=Ae(ae);return K(()=>({...e,timeRange:e?.timeRange||nt,appearance:{components:{Loading:e?.appearance?.components?.Loading??se,Error:e?.appearance?.components?.Error??ne,Empty:e?.appearance?.components?.Empty??ie,Tooltip:e?.appearance?.components?.Tooltip}}}),[e])}import{jsx as Le}from"react/jsx-runtime";function at({children:e,queryClient:t,apiBaseUrl:r,fetchImpl:o,timeRange:i,startTime:n,endTime:a,interval:s,attributes:l,groupBy:m,operator:f,appearance:g,tooltip:h,colors:c,fill:b,hideAxis:y,hideCursor:d,relativeTimeAxis:v,invertSort:T}){return Le(oe,{queryClient:t,apiBaseUrl:r,fetchImpl:o,children:Le(X,{timeRange:i,startTime:n,endTime:a,interval:s,attributes:l,groupBy:m,operator:f,appearance:g,tooltip:h,colors:c,fill:b,hideAxis:y,hideCursor:d,relativeTimeAxis:v,invertSort:T,children:e})})}import{useQuery as lt}from"@tanstack/react-query";function ct(){let{apiBaseUrl:e,fetchImpl:t=fetch}=D(),r=lt({queryKey:["unblind","metrics"],queryFn:async()=>{let o=await t(`${e}/metrics`,{headers:{"Content-Type":"application/json"}});if(!o.ok)throw new Error("Error loading metrics metadata");if(o.status===200){let{data:i}=await o.json();return i}else throw new Error("Unexpected status code")}});return{metrics:r.data,isLoading:r.isLoading,hasError:r.isError,refetch:r.refetch}}import{useQuery as dt}from"@tanstack/react-query";import{useMemo as j}from"react";import ut from"ms";function we({scope:e,props:t}){return t.timeRange||t.startTime&&t.endTime?t:e}function pt(e){let t=Math.floor(Date.now()/1e3);return[t-Math.floor(ut(e)/1e3),t]}function _(e,t,r){let o,i;if(typeof t=="number"&&typeof r=="number")o=t,i=r;else if(e){let[n,a]=pt(e);o=n,i=a}else throw new Error("Either timeRange or both startTime and endTime must be provided");return[o,i]}import{useMemo as mt}from"react";function Q(e){let t=I(),{timeRange:r,startTime:o,endTime:i}=we({props:e,scope:t});return mt(()=>({timeRange:r,startTime:o,endTime:i}),[r,o,i])}function le(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{startTime:o,endTime:i,timeRange:n}=Q(e),{queries:a,interval:s}=e,l=j(()=>a.map(p=>p.metrics.join(",")).join(","),[a]),m=j(()=>a.map(p=>{let C=p.attributes;if(!C)return"";let R=Object.keys(C);return R.length===0?"":R.map(k=>k+":"+C[k]?.join(",")).join(",")}).join(","),[a]),f=j(()=>a.map(p=>p.operator),[a]),g=j(()=>a.map(p=>p.groupBy).join(", "),[a]),c=dt({queryKey:["unblind","timeseries",l,m,o,i,n,s,f,g],queryFn:async()=>{if(!l)throw new Error("Missing required parameters");if(l.length===0)throw new Error("No series provided");let[p,C]=_(n,o,i),R={queries:a,startTime:p,endTime:C,interval:s},k=await r(`${t}/tenants/timeseries`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)});if(!k.ok)throw new Error("Error fetching metric");let{series:A,times:w,metadata:M}=await k.json();if(!A)throw console.error("Series not found"),new Error("Series not found");return{series:A,times:w,metadata:M}},enabled:!!l&&(typeof o=="number"&&typeof i=="number"||!!n)}),{metadata:b,series:y,times:d}=j(()=>c.data?{series:c.data.series,times:c.data.times,metadata:c.data.metadata}:{series:[],times:[],metadata:{}},[c]),v=c.isLoading,T=c.isFetching,x=c.isError;return{data:{series:y,times:d,metadata:b},isLoading:v,isFetching:T,hasError:x,refetch:c.refetch}}import{useQuery as ht}from"@tanstack/react-query";import{useMemo as ft}from"react";function gt(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{startTime:o,endTime:i,timeRange:n}=Q(e),s=ht({queryKey:["unblind","usage",n,o,i],queryFn:async()=>{let[g,h]=_(n,o,i),c=`${t}/tenants/usage`,b=await r(c,{headers:{"Content-Type":"application/json"},body:JSON.stringify({startTime:g,endTime:h})});if(!b.ok)throw new Error("Error fetching usage");let{data:y}=await b.json();if(!y)throw new Error("usage not found");return y},enabled:typeof o=="number"&&typeof i=="number"||!!n}),l=ft(()=>s.data?s.data||[]:[],[s]),m=s.isLoading||s.isRefetching,f=s.isError;return{usage:l,isLoading:m,hasError:f,refetch:s.refetch}}import{useInfiniteQuery as bt}from"@tanstack/react-query";import{useMemo as yt}from"react";function Tt(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{timeRange:o,startTime:i,endTime:n}=Q(e),{attributes:a,body:s,severity:l,traceId:m,spanId:f,logId:g}=e,h=bt({queryKey:["unblind","logs",o,i,n,s,l,g,JSON.stringify(a)],queryFn:async({pageParam:b})=>{let[y,d]=_(o,i,n),v=await r(`${t}/tenants/logs`,{method:"POST",body:JSON.stringify({attributes:a,body:s,severity:l,traceId:m,spanId:f,logId:g,startTime:y,endTime:d,pagination:{page:b}}),headers:{"Content-Type":"application/json"}});if(!v.ok)throw new Error("Error fetching logs");let{data:T,nextPage:x}=await v.json();if(!T)throw new Error("data not found");return{data:T,nextPage:x}},initialPageParam:void 0,getNextPageParam:b=>b.nextPage});return{logs:yt(()=>h.data?h.data.pages.flatMap(b=>b.data||[]):[],[h.data]),isLoading:h.isLoading,hasError:h.isError,hasNextPage:h.hasNextPage??!1,fetchNextPage:h.fetchNextPage,isFetchingNextPage:h.isFetchingNextPage,refetch:h.refetch}}import{useEffect as gr,useMemo as br}from"react";import{useEffect as mr,useRef as dr}from"react";import hr from"uplot";var G=e=>"value"in e,Y=e=>"from"in e&&"to"in e;import Z from"uplot";import{getValueFormat as jt}from"@unblind/units";import{dateTimeFormat as vt,dateTimeFormatTimeAgo as Ct,systemDateFormats as ce}from"@unblind/units";var L={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:24192e5,year:31536e6},$={second:[1,2,5,10,15,30],minute:[1,2,5,10,15,30],hour:[1,2,3,4,6,8,12],day:[1,2,3,7,14],month:[1,2,3,6],year:[1,2,5,10,20,50,100]};function xt(e,t,r,o){if(t>7*L.day){let i=ce.interval.year,n=Math.round(L.year/L.day)*L.day;if(Math.round(t/L.day)*L.day===n)i=ce.interval.year;else{if(t<=L.year)return e.map(s=>{let l=new Date(s);return(o==="UTC"?l.getUTCDate():l.getDate())===1?l.toLocaleDateString(void 0,{month:"short",year:"numeric",timeZone:o}):l.toLocaleDateString(void 0,{day:"numeric",month:"short",timeZone:o})});i=ce.interval.day}return e.map(s=>vt(s,{format:i,timeZone:o}))}return e.map(i=>{let n=new Date(i),a=t<L.minute,s=t<L.second,l=n.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:o});return(l==="00:00"||l==="24:00")&&!a&&!s?n.toLocaleDateString(void 0,{day:"2-digit",month:"short",timeZone:o}):n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:a?"2-digit":void 0,fractionalSecondDigits:s?3:void 0,hour12:!1,timeZone:o})})}function St(e){let t=[{size:L.second/1e3,increments:$.second},{size:L.minute/1e3,increments:$.minute},{size:L.hour/1e3,increments:$.hour},{size:L.day/1e3,increments:$.day},{size:L.month/1e3,increments:$.month},{size:L.year/1e3,increments:$.year}];for(let i of t)for(let n of i.increments){let a=i.size*n;if(a>=e)return{increment:a*1e3,multiplier:n}}let r=t[t.length-1],o=r.increments[r.increments.length-1];return{increment:r.size*o*1e3,multiplier:o}}function Pt(e,t,r){return[t,r]}function Rt(e,t,r){return t.length===0?[]:t.map((o,i)=>i===0||i===t.length-1?Ct(o*1e3,{timeZone:r}):"")}function kt(e,t,r){let o=e.scales.x,i=((o?.max??0)-(o?.min??0))*1e3,n=Math.floor(e.width/100),a=i/1e3/n,{increment:s}=St(a),l=t.map(m=>m*1e3);return xt(l,s,i,r)}function Ue(e,t,r=!1,o=!1){let i=r?(a,s,l,m)=>Pt(a,l,m):void 0,n=r?(a,s)=>Rt(a,s,t):(a,s)=>kt(a,s,t);return{font:H(e),labelFont:H(e),grid:{show:!1,width:.5},ticks:{width:.5},splits:i,values:n,size:20,show:!o,align:r?2:void 0,space:(a,s,l,m,f)=>f<400?100:f<800?150:250}}import{computePosition as At,flip as Lt,offset as wt}from"@floating-ui/dom";import{createRoot as Ut}from"react-dom/client";var Et=4,Mt=8,ue=class{overlay=null;reactRoot=null;renderedUplot=null;initialize(){this.overlay||(this.overlay=document.createElement("div"),this.overlay.id="unblind-tooltip-overlay",this.overlay.style.display="none",this.overlay.style.position="fixed",this.overlay.style.pointerEvents="none",this.overlay.style.zIndex="9999",document.body.appendChild(this.overlay),this.reactRoot=Ut(this.overlay))}getOverlay(){return this.overlay}render(t,r){this.reactRoot?(this.reactRoot.render(r),this.renderedUplot=t):this.renderedUplot=null}show(){this.overlay&&(this.overlay.style.display="block")}hide(t){if(t!==this.renderedUplot){console.warn("Hide call plot");return}this.overlay&&(this.overlay.style.display="none"),this.render(null,null)}getRenderedUplot(){return this.renderedUplot}async positionTooltip(t){let r=this.getOverlay();if(r){let{x:o,y:i}=await At({getBoundingClientRect:()=>({x:t.left,y:t.top,width:0,height:0,top:t.top,left:t.left,right:t.left,bottom:t.top})},r,{placement:"top-start",strategy:"fixed",middleware:[wt({mainAxis:Et,crossAxis:Mt}),Lt()]});r.style.left=`${o}px`,r.style.top=`${i}px`}}},E=new ue;import{dateTimeFormat as Ee}from"@unblind/units";import{createContext as Nt,Fragment as Dt,useContext as Vt}from"react";import{Fragment as Qt,jsx as u,jsxs as S}from"react/jsx-runtime";var Ot=6,Me=Nt(null);function J(){let e=Vt(Me);if(!e)throw new Error("useTooltipSerie must be used within a SerieProvider");return e}function It({serie:e,children:t}){return u(Me.Provider,{value:e,children:t})}function pe({className:e="ub-tooltip-divider",...t}){return u("hr",{role:"presentation",...t,className:e})}function zt({formattedTime:e,unitCategory:t,tooltipSerieList:r,visibilityLimit:o,invertSort:i}){let n=r.slice(0,o),a=r.slice(o);return S("div",{className:"ub-tooltip ub-tooltip-multiple-metrics",children:[S(fe,{children:[u(ge,{children:e}),u("div",{className:"ub-tooltip-header-right",children:u(Bt,{children:t})})]}),u(pe,{}),S(he,{children:[n.map(s=>S(de,{serie:s,children:[u(ye,{}),u(Te,{children:u(Ne,{})}),u(be,{})]},s.metric.name)),u(me,{series:a,invertSort:i})]})]})}function qt({formattedTime:e,tooltipSerieList:t,visibilityLimit:r,invertSort:o}){let i=t[0],n=t.slice(0,r),a=t.slice(r);return S("div",{className:"ub-tooltip ub-tooltip-multiple-attributes",children:[S(fe,{children:[u(ge,{children:e}),u("div",{className:"ub-tooltip-header-right",children:u("span",{className:"ub-tooltip-serie-metric",children:Ve(i?.metric.name||"")})})]}),u(pe,{}),S(he,{children:[n.map((s,l)=>S(de,{serie:s,children:[u(ye,{}),u(Te,{children:u(De,{})}),u(be,{})]},"serie_"+l)),u(me,{series:a,invertSort:o})]})]})}function Ft({formattedTime:e,tooltipSerieList:t,unitCategory:r,visibilityLimit:o,invertSort:i}){let n=t.slice(0,o),a=t.slice(o);return S("div",{className:"ub-tooltip ub-tooltip-multiple-attributes",children:[S(fe,{children:[u(ge,{children:e}),u("div",{className:"ub-tooltip-header-right",children:u("span",{className:"ub-tooltip-unit-category",children:r})})]}),u(pe,{}),S(he,{children:[n.map((s,l)=>S(de,{serie:s,children:[u(ye,{}),S(Te,{children:[u(Ne,{}),u(De,{})]}),u(be,{})]},"serie"+l)),u(me,{series:a,invertSort:i})]})]})}function Bt(e){return u("span",{className:"ub-tooltip-unit-category",children:e.children})}function me({series:e,invertSort:t}){let r=e[0]?.formattedValue,o=!e.some(n=>(n.value||0)>0),i=!e.some(n=>n.value!==void 0);return e.length>0?i?u("span",{className:"ub-tooltip-summary",children:S("span",{children:["+",e.length," more with no data"]})}):o?u("span",{className:"ub-tooltip-summary",children:S("span",{children:["+",e.length," more with zero values"]})}):S("span",{className:"ub-tooltip-summary",children:[S("span",{children:["+",e.length," more with "]}),u("span",{children:`${t?"\u2265":"\u2264"} ${r}`})]}):u(Qt,{})}function de(e){return u(It,{serie:e.serie,children:u("div",{className:"ub-tooltip-serie",children:e.children})})}function he(e){return u("div",{className:"ub-tooltip-content",children:e.children})}function fe(e){return u("div",{className:"ub-tooltip-header",children:e.children})}function ge(e){return u("div",{className:"ub-tooltip-datetime",children:e.children})}function Ne(){let e=J();return u("span",{className:"ub-tooltip-serie-metric",children:Ve(e.metric.name)})}function be(){let e=J();return e.formattedValue?u("span",{className:"ub-tooltip-serie-value",children:e.formattedValue}):u("span",{className:"ub-tooltip-serie-value-empty",children:"\u2013"})}function ye(){let e=J();return u("span",{style:{backgroundColor:e.color},className:"ub-tooltip-serie-color"})}function Te(e){return u("span",{className:"ub-tooltip-serie-label ub-truncate",children:e.children})}function De(){let{attributes:e}=J();if(!e)return null;let t=Object.values(e);return u("div",{className:"ub-tooltip-serie-attributes ub-truncate",children:t.map((r,o)=>S(Dt,{children:[u("span",{className:"ub-tooltip-serie-attribute-value",children:r}),o<t.length-1&&u("span",{"data-text":", ",className:"ub-tooltip-serie-attribute-divider"})]},"tooltip-"+r))})}function _t({tooltipSerieList:e,invertSort:t}){return t?e.sort((r,o)=>(Number(r.value)||0)-(Number(o.value)||0)):e.sort((r,o)=>(Number(o.value)||0)-(Number(r.value)||0))}function Ve(e,t){let r=e.split(/[._-]/),o=r[r.length-1]||"";return t?o:o.charAt(0).toUpperCase()+o.slice(1).toLowerCase()}function Oe({timestamp:e,tooltipSerieList:t,timeZone:r,spansMultipleDays:o,hasMultipleMetrics:i,hasAttributes:n,invertSort:a,visibilityLimit:s}){let l=_t({tooltipSerieList:t,invertSort:a}),m=o?Ee(e*1e3,{format:"MMM DD, HH:mm",timeZone:r}):Ee(e*1e3,{format:"HH:mm",timeZone:r}),f=s||Ot;return n?n&&!i?u(qt,{formattedTime:m,tooltipSerieList:l,visibilityLimit:f,invertSort:a}):u(Ft,{formattedTime:m,unitCategory:"",tooltipSerieList:l,visibilityLimit:f,invertSort:a}):u(zt,{formattedTime:m,unitCategory:"",tooltipSerieList:l,visibilityLimit:f,invertSort:a})}import{jsx as Ie}from"react/jsx-runtime";function $t(e,t){if(!e||e.length===0)return!1;let r=e[0],o=e[e.length-1];if(r==null||o==null)return!1;let i=new Date(r*1e3),n=new Date(o*1e3),a=s=>t==="UTC"?`${s.getUTCFullYear()}-${s.getUTCMonth()}-${s.getUTCDate()}`:s.toLocaleDateString(void 0,{timeZone:t});return a(i)!==a(n)}function Ht(e,t){let r=!1;for(let i=1;i<e.series.length;i++)if(e.data[i]?.[t]!=null){r=!0;break}if(r)return t;let o=e.data[0].length;for(let i=1;t+i<o||t-i>=0;i++){let n=t-i,a=t+i;if(n>=0){for(let s=1;s<e.series.length;s++)if(e.data[s]?.[n]!=null)return n}if(a<o){for(let s=1;s<e.series.length;s++)if(e.data[s]?.[a]!=null)return a}}return t}function Wt(e,t,r,o,i,n,a){let s=[],l=e.data[0],m=new Set,f=new Set,g=!1;for(let h=1;h<e.series.length;h++){let c=e.data[h]?.[t]??null;if(o&&c!=null&&h>1){let C=e.data[h-1]?.[t]??0;c=c-C}let b=e.series[h],y=n?.[h-1];if(!y){console.warn("Original serie not found");continue}let d=i[y.metric];if(!d){console.warn("Metric metadata not found");continue}m.add(y.metric);let v=y?.attributes;if(v&&Object.keys(v).length>0){g=!0;for(let C in v)f.add(C)}let T=b?.stroke,x=typeof T=="function"?T(e,h):T??"#ffffff00",p=c==null?void 0:r?r(c):String(c);s.push({metric:d,color:x,value:c===null?void 0:c,formattedValue:p,attributes:v,serie:b})}return{tooltipSerieList:s,hasAttributes:g,hasMultipleMetrics:m.size>1,hasMultipleAttributes:f.size>1,spansMultipleDays:$t(l,a)}}function ze(e,t,r,o,i,n,a,s){let l,m,f,g=!1;function h(){let c=l.getBoundingClientRect();m=c.left,f=c.top}return{hooks:{init:c=>{E.initialize(),l=c.over,window.addEventListener("scroll",h,!0),window.addEventListener("resize",h),l.onmouseenter=()=>{g=!0,E.show()},l.onmouseleave=()=>{g=!1,E.getRenderedUplot()===c&&E.hide(c)},h()},setSize:()=>{h()},setCursor:c=>{let{left:b,top:y,idx:d}=c.cursor;if(!g||d==null){E.getRenderedUplot()===c&&E.hide(c);return}let T=Ht(c,d),x=c.data[0][T];if(x===void 0)return;let{tooltipSerieList:p,hasAttributes:C,hasMultipleAttributes:R,hasMultipleMetrics:k,spansMultipleDays:A}=Wt(c,T,e,t,r,n,o);E.show();let w=i,M=w?Ie(w,{timestamp:x,tooltipSerieList:p,timeZone:o}):Ie(Oe,{timestamp:x,tooltipSerieList:p,timeZone:o,spansMultipleDays:A,stacked:t,hasAttributes:C,hasMultipleAttributes:R,hasMultipleMetrics:k,visibilityLimit:a,invertSort:s});E.render(c,M),E.positionTooltip({left:(b||0)+m,top:(y||0)+f})},destroy(c){window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",h),l&&(l.onmouseenter=null,l.onmouseleave=null),E.getRenderedUplot()===c&&E.hide(c)}}}}var ee=["oklch(0.70 0.24 293)","oklch(0.85 0.18 95)","oklch(0.65 0.25 255)","oklch(0.72 0.26 27)","oklch(0.70 0.22 150)","oklch(0.78 0.18 50)","oklch(0.72 0.18 215)","oklch(0.70 0.27 301)","oklch(0.75 0.20 90)","oklch(0.68 0.23 277)","oklch(0.70 0.18 193)","oklch(0.68 0.25 4)"],H=e=>`${getComputedStyle(document.documentElement).getPropertyValue("--ub-chart-font-size").trim()} ${e}`,qe=(e,t)=>{let r=e;return t&&t.unit&&t.unit.code&&t.unit.code!=="1"&&(!r&&t.unit?r=t.unit.code:r&&t.unit.code!==r&&(r=void 0)),r};function Gt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Array.isArray(e.fill)&&Array.isArray(e.border)}function Kt(e){return Array.isArray(e)}var Xt=12,Yt=({isFilling:e,useSolid:t,index:r})=>{let o=r%Xt+1;return e?t?`--ub-chart-serie-color-${o}`:`--ub-chart-serie-fill-color-${o}`:`--ub-chart-serie-color-${o}`},Fe=(e,t,r,o,i,n)=>{let a=o==="bar"||o==="area";if(r)return Kt(r)?r[t]:Gt(r)?n?r.fill[t]:r.border[t]:r(e,t,o,n);let s=Yt({isFilling:n,useSolid:a,index:t}),l=i.getPropertyValue(s).trim();return l||(n&&a?ee[t%ee.length]?.replace(")"," / 0.4)"):ee[t%ee.length])},Jt=e=>{let t=Z.paths.bars({size:[.6,100],radius:0,gap:0}),r=Z.paths.linear({alignGaps:0}),o=Z.paths.spline({alignGaps:1}),i=Z.paths.stepped({alignGaps:1});switch(e){case"line":return r;case"bar":return t;case"area":return r;case"step":return i;case"spline":return o;default:return r}},Zt=(e,t,r,o,i)=>Fe(e,t,r,o,i,!0),er=(e,t)=>{switch(e){case"bar":return 1;case"line":return t?1.5:2;case"spline":return t?1.5:2;case"area":return 1;case"step":return 1.5;default:return 1}},tr=(e,t,r)=>{if(t<0||r<0)return[t,r];let o=e.posToVal(t,"x"),i=e.data[0];if(!i||i.length===0)return[t,r];let n=0,a=0,s=i.length-1;for(;s-a>1;){let c=Math.floor((a+s)/2),b=i[c];b!=null&&b<o?a=c:s=c}let l=i[a],m=i[s];l!=null&&m!=null?n=Math.abs(l-o)<Math.abs(m-o)?a:s:l!=null?n=a:m!=null&&(n=s);let f=n;for(let c=n;c>=0;c--){let b=!1;for(let y=1;y<e.data.length;y++){let d=e.data[y];if(d&&d[c]!=null){b=!0;break}}if(b){f=c;break}}let g=i[f];return g==null?[t,r]:[e.valToPos(g,"x"),r]},rr=(e,t)=>{let r=t.getPropertyValue("--ub-chart-font-color").trim(),o=t.getPropertyValue("--ub-chart-grid-color").trim(),i=e.axes?.[0],n=e.axes?.[1];return i&&(i.stroke=r,i.grid?i.grid.stroke=o:i.grid={stroke:o}),n&&(n.stroke=r,n.grid?n.grid.stroke=o:n.grid={stroke:o}),e},or=(e,t)=>e.getPropertyValue(`--ub-chart-threshold-${t}`).trim()||e.getPropertyValue("--ub-chart-threshold-default").trim(),ir=(e,t)=>e.getPropertyValue(`--ub-chart-threshold-${t}-fill`).trim()||e.getPropertyValue("--ub-chart-threshold-default-fill").trim(),nr=e=>{switch(e){case"bold":return 2;case"line":return 1;case"dashed":return 1;default:return 1}},sr=e=>e==="line"?void 0:[5,5],ar=(e,t)=>{if(t){let r=[];return t.forEach(o=>{let i={label:o.label,stroke:or(e,o.level),width:nr(),dash:sr(o.type),points:{show:!1,size:0},spanGaps:!0,show:!0,auto:!1};G(o)||r.push(i),r.push(i)}),r}else return[]},lr=(e,t,r,o)=>{if(!o||!o.some(n=>Y(n)))return t.bands;let i=o.map((n,a)=>G(n)?null:{series:[e.length+a*2+1,e.length+a*2+2],fill:ir(r,n.level),dir:1}).filter(n=>n!==null);return[...t.bands,...i]},cr=(e,t,r,o,i,n,a)=>{let s=er(t,o);return[{},...e.map((l,m)=>({label:l.metric,stroke:Fe(l,m,r,t,n),width:s,points:{show:!1},spanGaps:!0,paths:Jt(t),fill:o||i?Zt(l,m,r,t,n):void 0})),...ar(n,a)]},ur=e=>typeof e=="string"&&String(e).toLowerCase().trim()==="by"?"bytes":e,Be=(e,t,r,o,i,n,a,s,l,m,f,g,h,c,b,y,d,v,T,x)=>{let p=window.getComputedStyle(e),C=p.fontFamily,R=e?.clientWidth??1050,k=e?.clientHeight??250,A=ur(o),w=jt(A==="1"?null:A),M=V=>{let N=w(V);return N.text+(N.suffix?.trim()||"")},F={width:R,height:k,scales:{y:{range:_e(o,b,y)}},plugins:h?[]:[ze(M,a,t,m,f,i,T,x)],padding:g?[8,10,8,48]:[8,10,8,18],cursor:{y:!1,sync:{key:"_"},drag:{setScale:!0,x:!0,y:!1},move:tr,show:!v},series:cr(i,n,s,l,a,p,c),bands:lr(i,r,p,c),axes:[Ue(C,m,g,d),Qe(w,C,d)],legend:{show:!1}};return rr(F,p)};var $e=(e,t=4)=>{let r=e/t,o=Math.pow(10,Math.floor(Math.log10(r))),i=r/o,n;return i>5?n=10*o:i>2?n=5*o:i>1?n=2*o:n=o,Math.ceil(e/n)*n},P=(e,t)=>typeof e=="number"?e:t,_e=(e,t,r)=>(o,i,n)=>{if(i===0&&n===0)return[P(t,0),P(r,100)];let a=1,s=n*(1+a),l=i<0?i*(1+a):i*(1-a);if(e==="percent"||e==="percentunit"){let g=e==="percent"?100:1;return n>g?i<0?[P(t,l),P(r,s)]:[P(t,0),P(r,s)]:i<0?[P(t,l),P(r,g)]:[P(t,0),P(r,g)]}if(n<=.9999)return i<=0?[P(t,l),P(r,1)]:[P(t,0),P(r,1)];let m=$e(s),f=$e(Math.abs(l));return i<0?[P(r,-f),P(r,m)]:[P(t,0),P(r,m)]},pr=(e,t,r,o)=>{let i=e.axes[r];if(o>1)return i?._size||0;let n=(i?.ticks?.size||0)+(i?.gap||0),a=(t??[]).reduce((s,l)=>l.length>s.length?l:s,"");return a!=""&&(e.ctx.font=i?.font?.[0]??e.ctx.font,n+=e.ctx.measureText(a).width/devicePixelRatio),Math.ceil(n)};function Qe(e,t,r){return{gap:0,font:H(t),labelFont:H(t),grid:{show:!0,width:.5},ticks:{width:.5},values:(o,i)=>i.map(n=>{let a=e(n);return a.text+(a.suffix?.trim()||"")}),size:pr,space:(o,i,n,a,s)=>{let l=o.height;return l<=100?30:l<=150?35:l<=200?45:l<=250?55:l<=300?60:70},show:!r}}function He(e,t){let r=[],o=e[0],i=o.length,n=Array(i).fill(0),a=[o];if(e.forEach((s,l)=>{l!==0&&(t?a.push(s):a.push(s.map((m,f)=>n[f]=n[f]+(m||0))))}),!t)for(let s=1;s<e.length-1;s++)r.push({series:[s+1,s]});return{data:a,bands:r.filter(s=>s.series[1]>-1)}}import{jsx as fr}from"react/jsx-runtime";function ve(e){let{times:t,series:r,metadata:o,type:i,className:n,timeZone:a,options:s,tooltip:l,colors:m,tooltipComponent:f,unit:g,fill:h=!1,thresholds:c,min:b,max:y,hideAxis:d,hideCursor:v,relativeTimeAxis:T,invertSort:x}=e,{hide:p,visibilityLimit:C}=l||{},R=dr(null),k=I(),A=m||k.colors;return mr(()=>{if(!r||r.length===0){console.warn("No series provided");return}let w=[t],M=g;r.forEach(U=>{let B=o[U.metric];g||(M=qe(M,B)),w.push(U.values)});let F=i==="bar"||i==="area",V=He(w,!F);c&&c.forEach(U=>{G(U)?V.data.push(new Array(t.length).fill(U.value)):Y(U)&&(V.data.push(new Array(t.length).fill(U.from)),V.data.push(new Array(t.length).fill(U.to)))});let N=R.current,W=null;if(N){let U=Be(N,o,V,M,r,i,F,A,h,a,f,T,p,c,b,y,d,v,C,x);W=new hr({...U,...s},V.data,N);let B=new ResizeObserver(()=>{W?.setSize({width:N.clientWidth,height:N.clientHeight})});return B.observe(N),()=>{W?.destroy(),B.disconnect()}}},[r,t,i,o,a,f,T,A,h,g,p,c,b,y,s,d,v]),fr("div",{ref:R,className:"ub-chart-container"+(n?` ${n}`:"")})}import{jsx as q}from"react/jsx-runtime";function yr({metrics:e,operator:t,attributes:r,groupBy:o,interval:i,type:n="line",className:a,appearance:s,unit:l,thresholds:m,min:f,max:g,colors:h,tooltip:c,fill:b,hideAxis:y,hideCursor:d,relativeTimeAxis:v,onResponse:T,invertSort:x}){let p=I(),C=i??p.interval,R=r??p.attributes,k=o??p.groupBy,A=t??p.operator,w=typeof v=="boolean"?v:p.relativeTimeAxis,M=h??p.colors,F=typeof b=="boolean"?b:p.fill,V=typeof x=="boolean"?x:p.invertSort,N=typeof y=="boolean"?y:p.hideAxis,W=typeof d=="boolean"?d:p.hideCursor,U=s?.components?.Tooltip??p.appearance.components.Tooltip,B=br(()=>({hide:c?.hide??p.tooltip?.hide,visibilityLimit:c?.visibilityLimit??p.tooltip?.visibilityLimit}),[c?.hide,p.tooltip?.hide,c?.visibilityLimit,p.tooltip?.visibilityLimit]),te=le({queries:(Array.isArray(e)?e:[e]).map(O=>({metrics:[O],operator:A,attributes:R,groupBy:k})),timeRange:p.timeRange,startTime:p.startTime,endTime:p.endTime,interval:C}),{isLoading:We,data:je,hasError:Ge}=te,{series:Ce,times:Ke,metadata:Xe}=je,Ye=Ce.every(O=>O.isEmpty),re=`ub-chart-container${a?` ${a}`:""}`;if(gr(()=>{T&&T(te)},[te,T]),We){let O=s?.components?.Loading??p.appearance.components.Loading;return q("div",{className:re,children:q(O,{})})}if(Ge){let O=s?.components?.Error??p.appearance.components.Error;return q("div",{className:re,children:q(O,{})})}if(Ye){let O=s?.components?.Empty??p.appearance.components.Empty;return q("div",{className:re,children:q(O,{})})}return q(ve,{times:Ke,series:Ce,metadata:Xe,type:n,className:a,tooltip:B,colors:M,relativeTimeAxis:w,unit:l,fill:F,tooltipComponent:U,thresholds:m,min:f,max:g,hideAxis:N,hideCursor:W,invertSort:V})}export{ve as Chart,ie as Empty,ne as Error,se as Loading,X as Scope,yr as Timeseries,at as UnblindProvider,Tt as useLogs,ct as useMetrics,ke as useRefresh,I as useScope,le as useTimeseries,gt as useUsage};
1
+ import{QueryClient as Me,QueryClientProvider as rt,useQueryClient as ot}from"@tanstack/react-query";import{createContext as it,useCallback as nt,useContext as st,useMemo as Ue}from"react";import{jsx as Ee}from"react/jsx-runtime";var Ne=it(void 0);function ce({children:e,queryClient:t,queryClientConfig:r,apiBaseUrl:i="/api/unblind",fetchImpl:o}){let n=Ue(()=>{if(t)return t;let a={refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},l={defaultOptions:{queries:a}};return r?new Me({...r,defaultOptions:{...r.defaultOptions,queries:{...a,...r.defaultOptions?.queries}}}):new Me(l)},[t,r]),s=Ue(()=>({apiBaseUrl:i,fetchImpl:o}),[i,o]);return Ee(rt,{client:n,children:Ee(Ne.Provider,{value:s,children:e})})}function D(){let e=st(Ne);if(!e)throw new Error("useUnblindConfig must be used within an UnblindClientProvider. Please wrap your app or component tree with <UnblindClientProvider>.");return e}function De(){let e=ot();return nt(async()=>{await e.refetchQueries({queryKey:["unblind","timeseries"]})},[e])}import{createContext as lt,useContext as Ve,useMemo as ee}from"react";import{jsx as F,jsxs as at}from"react/jsx-runtime";function ue(){return F("div",{className:"ub-default",children:at("div",{className:"ub-empty-content",children:[F("div",{className:"ub-empty-icon-wrapper",children:F("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"ub-icon",children:F("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),F("p",{className:"ub-empty-text","data-text":"No data available for this time range"})]})})}function pe(){return F("div",{className:"ub-default-error"})}function me(){return F("div",{className:"ub-default-loading","data-text":"Loading"})}import{jsx as ut}from"react/jsx-runtime";var de=lt(void 0);function te({children:e,timeRange:t,startTime:r,endTime:i,interval:o,attributes:n,groupBy:s,operator:a,appearance:l,tooltip:c,colors:g,fill:d,hideAxis:h,hideCursor:u,relativeTimeAxis:m,invertSort:b,disableSuggestedLabel:v}){let f=Ve(de),x=l?.components?.Loading||f?.appearance?.components?.Loading,C=l?.components?.Error||f?.appearance?.components?.Error,y=l?.components?.Tooltip||f?.appearance?.components?.Tooltip,T=l?.components?.Empty||f?.appearance?.components?.Empty,R=typeof c?.hide=="boolean"?c?.hide:f?.tooltip?.hide,k=typeof c?.visibilityLimit=="number"?c?.visibilityLimit:f?.tooltip?.visibilityLimit,S=ee(()=>({components:{...x&&{Loading:x},...C&&{Error:C},...y&&{Tooltip:y},...T&&{Empty:T}}}),[x,C,y,T]),U=ee(()=>({hide:R,visibilityLimit:k}),[R,k]),w=ee(()=>({timeRange:t??f?.timeRange,startTime:r??f?.startTime,endTime:i??f?.endTime,interval:o??f?.interval,attributes:n??f?.attributes,groupBy:s??f?.groupBy,operator:a??f?.operator,colors:g??f?.colors,relativeTimeAxis:typeof m=="boolean"?m:f?.relativeTimeAxis,fill:typeof d=="boolean"?d:f?.fill,hideAxis:typeof h=="boolean"?h:f?.hideAxis,hideCursor:typeof u=="boolean"?u:f?.hideCursor,invertSort:typeof b=="boolean"?b:f?.invertSort,disableSuggestedLabel:typeof v=="boolean"?v:f?.disableSuggestedLabel,appearance:S,tooltip:U}),[t,r,i,o,n,s,a,g,d,m,h,u,S,U,f,b,v]);return ut(de.Provider,{value:w,children:e})}var ct="6h";function V(){let e=Ve(de);return ee(()=>({...e,timeRange:e?.timeRange||ct,appearance:{components:{Loading:e?.appearance?.components?.Loading??me,Error:e?.appearance?.components?.Error??pe,Empty:e?.appearance?.components?.Empty??ue,Tooltip:e?.appearance?.components?.Tooltip}}}),[e])}import{jsx as Oe}from"react/jsx-runtime";function pt({children:e,queryClient:t,apiBaseUrl:r,fetchImpl:i,timeRange:o,startTime:n,endTime:s,interval:a,attributes:l,groupBy:c,operator:g,appearance:d,tooltip:h,colors:u,fill:m,hideAxis:b,hideCursor:v,relativeTimeAxis:f,invertSort:x,disableSuggestedLabel:C}){return Oe(ce,{queryClient:t,apiBaseUrl:r,fetchImpl:i,children:Oe(te,{timeRange:o,startTime:n,endTime:s,interval:a,attributes:l,groupBy:c,operator:g,appearance:d,tooltip:h,colors:u,fill:m,hideAxis:b,hideCursor:v,relativeTimeAxis:f,invertSort:x,disableSuggestedLabel:C,children:e})})}import{useQuery as mt}from"@tanstack/react-query";function dt(){let{apiBaseUrl:e,fetchImpl:t=fetch}=D(),r=mt({queryKey:["unblind","metrics"],queryFn:async()=>{let i=await t(`${e}/metrics`,{headers:{"Content-Type":"application/json"}});if(!i.ok)throw new Error("Error loading metrics metadata");if(i.status===200){let{data:o}=await i.json();return o}else throw new Error("Unexpected status code")}});return{metrics:r.data,isLoading:r.isLoading,hasError:r.isError,refetch:r.refetch}}import{useQuery as bt}from"@tanstack/react-query";import{useMemo as X}from"react";import ft from"ms";function Ie({scope:e,props:t}){return t.timeRange||t.startTime&&t.endTime?t:e}function ht(e){let t=Math.floor(Date.now()/1e3);return[t-Math.floor(ft(e)/1e3),t]}function Q(e,t,r){let i,o;if(typeof t=="number"&&typeof r=="number")i=t,o=r;else if(e){let[n,s]=ht(e);i=n,o=s}else throw new Error("Either timeRange or both startTime and endTime must be provided");return[i,o]}import{useMemo as gt}from"react";function $(e){let t=V(),{timeRange:r,startTime:i,endTime:o}=Ie({props:e,scope:t});return gt(()=>({timeRange:r,startTime:i,endTime:o}),[r,i,o])}function fe(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{startTime:i,endTime:o,timeRange:n}=$(e),{queries:s,interval:a}=e,l=X(()=>s.map(y=>y.metrics.join(",")).join(","),[s]),c=X(()=>s.map(y=>{let T=y.attributes;if(!T)return"";let R=Object.keys(T);return R.length===0?"":R.map(k=>k+":"+T[k]?.join(",")).join(",")}).join(","),[s]),g=X(()=>s.map(y=>y.operator),[s]),d=X(()=>s.map(y=>y.groupBy).join(", "),[s]),u=bt({queryKey:["unblind","timeseries",l,c,i,o,n,a,g,d],queryFn:async()=>{if(!l)throw new Error("Missing required parameters");if(l.length===0)throw new Error("No series provided");let[y,T]=Q(n,i,o),R={queries:s,startTime:y,endTime:T,interval:a},k=await r(`${t}/tenants/timeseries`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)});if(!k.ok)throw new Error("Error fetching metric");let{series:S,times:U,metadata:w}=await k.json();if(!S)throw console.error("Series not found"),new Error("Series not found");return{series:S,times:U,metadata:w}},enabled:!!l&&(typeof i=="number"&&typeof o=="number"||!!n)}),{metadata:m,series:b,times:v}=X(()=>u.data?{series:u.data.series,times:u.data.times,metadata:u.data.metadata}:{series:[],times:[],metadata:{}},[u]),f=u.isLoading,x=u.isFetching,C=u.isError;return{data:{series:b,times:v,metadata:m},isLoading:f,isFetching:x,hasError:C,refetch:u.refetch}}import{useQuery as yt}from"@tanstack/react-query";import{useMemo as Tt}from"react";function vt(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{startTime:i,endTime:o,timeRange:n}=$(e),a=yt({queryKey:["unblind","usage",n,i,o],queryFn:async()=>{let[d,h]=Q(n,i,o),u=`${t}/tenants/usage`,m=await r(u,{headers:{"Content-Type":"application/json"},body:JSON.stringify({startTime:d,endTime:h})});if(!m.ok)throw new Error("Error fetching usage");let{data:b}=await m.json();if(!b)throw new Error("usage not found");return b},enabled:typeof i=="number"&&typeof o=="number"||!!n}),l=Tt(()=>a.data?a.data||[]:[],[a]),c=a.isLoading||a.isRefetching,g=a.isError;return{usage:l,isLoading:c,hasError:g,refetch:a.refetch}}import{useInfiniteQuery as Ct}from"@tanstack/react-query";import{useMemo as xt}from"react";function St(e){let{apiBaseUrl:t,fetchImpl:r=fetch}=D(),{timeRange:i,startTime:o,endTime:n}=$(e),{attributes:s,body:a,severity:l,traceId:c,spanId:g,logId:d}=e,h=Ct({queryKey:["unblind","logs",i,o,n,a,l,d,JSON.stringify(s)],queryFn:async({pageParam:m})=>{let[b,v]=Q(i,o,n),f=await r(`${t}/tenants/logs`,{method:"POST",body:JSON.stringify({attributes:s,body:a,severity:l,traceId:c,spanId:g,logId:d,startTime:b,endTime:v,pagination:{page:m}}),headers:{"Content-Type":"application/json"}});if(!f.ok)throw new Error("Error fetching logs");let{data:x,nextPage:C}=await f.json();if(!x)throw new Error("data not found");return{data:x,nextPage:C}},initialPageParam:void 0,getNextPageParam:m=>m.nextPage});return{logs:xt(()=>h.data?h.data.pages.flatMap(m=>m.data||[]):[],[h.data]),isLoading:h.isLoading,hasError:h.isError,hasNextPage:h.hasNextPage??!1,fetchNextPage:h.fetchNextPage,isFetchingNextPage:h.isFetchingNextPage,refetch:h.refetch}}var Y=e=>"value"in e,re=e=>"from"in e&&"to"in e;function he(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.label=="string"}import{useEffect as yr,useMemo as Ae}from"react";import{useEffect as fr,useRef as hr}from"react";import gr from"uplot";import ie from"uplot";import{getValueFormat as Kt}from"@unblind/units";import{dateTimeFormat as Pt,dateTimeFormatTimeAgo as Lt,systemDateFormats as ge}from"@unblind/units";var M={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:24192e5,year:31536e6},W={second:[1,2,5,10,15,30],minute:[1,2,5,10,15,30],hour:[1,2,3,4,6,8,12],day:[1,2,3,7,14],month:[1,2,3,6],year:[1,2,5,10,20,50,100]};function Rt(e,t,r,i){if(t>7*M.day){let o=ge.interval.year,n=Math.round(M.year/M.day)*M.day;if(Math.round(t/M.day)*M.day===n)o=ge.interval.year;else{if(t<=M.year)return e.map(a=>{let l=new Date(a);return(i==="UTC"?l.getUTCDate():l.getDate())===1?l.toLocaleDateString(void 0,{month:"short",year:"numeric",timeZone:i}):l.toLocaleDateString(void 0,{day:"numeric",month:"short",timeZone:i})});o=ge.interval.day}return e.map(a=>Pt(a,{format:o,timeZone:i}))}return e.map(o=>{let n=new Date(o),s=t<M.minute,a=t<M.second,l=n.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:i});return(l==="00:00"||l==="24:00")&&!s&&!a?n.toLocaleDateString(void 0,{day:"2-digit",month:"short",timeZone:i}):n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:s?"2-digit":void 0,fractionalSecondDigits:a?3:void 0,hour12:!1,timeZone:i})})}function kt(e){let t=[{size:M.second/1e3,increments:W.second},{size:M.minute/1e3,increments:W.minute},{size:M.hour/1e3,increments:W.hour},{size:M.day/1e3,increments:W.day},{size:M.month/1e3,increments:W.month},{size:M.year/1e3,increments:W.year}];for(let o of t)for(let n of o.increments){let s=o.size*n;if(s>=e)return{increment:s*1e3,multiplier:n}}let r=t[t.length-1],i=r.increments[r.increments.length-1];return{increment:r.size*i*1e3,multiplier:i}}function At(e,t,r){return[t,r]}function wt(e,t,r){return t.length===0?[]:t.map((i,o)=>o===0||o===t.length-1?Lt(i*1e3,{timeZone:r}):"")}function Mt(e,t,r){let i=e.scales.x,o=((i?.max??0)-(i?.min??0))*1e3,n=Math.floor(e.width/100),s=o/1e3/n,{increment:a}=kt(s),l=t.map(c=>c*1e3);return Rt(l,a,o,r)}function ze(e,t,r=!1,i=!1){let o=r?(s,a,l,c)=>At(s,l,c):void 0,n=r?(s,a)=>wt(s,a,t):(s,a)=>Mt(s,a,t);return{font:j(e),labelFont:j(e),grid:{show:!1,width:.5},ticks:{width:.5},splits:o,values:n,size:20,show:!i,align:r?2:void 0,space:(s,a,l,c,g)=>g<400?100:g<800?150:250}}import{computePosition as Ut,flip as Et,offset as Nt}from"@floating-ui/dom";import{createRoot as Dt}from"react-dom/client";var Vt=4,Ot=8,be=class{overlay=null;reactRoot=null;renderedUplot=null;initialize(){this.overlay||(this.overlay=document.createElement("div"),this.overlay.id="unblind-tooltip-overlay",this.overlay.style.display="none",this.overlay.style.position="fixed",this.overlay.style.pointerEvents="none",this.overlay.style.zIndex="9999",document.body.appendChild(this.overlay),this.reactRoot=Dt(this.overlay))}getOverlay(){return this.overlay}render(t,r){this.reactRoot?(this.reactRoot.render(r),this.renderedUplot=t):this.renderedUplot=null}show(){this.overlay&&(this.overlay.style.display="block")}hide(t){if(t!==this.renderedUplot){console.warn("Hide call plot");return}this.overlay&&(this.overlay.style.display="none"),this.render(null,null)}getRenderedUplot(){return this.renderedUplot}async positionTooltip(t){let r=this.getOverlay();if(r){let{x:i,y:o}=await Ut({getBoundingClientRect:()=>({x:t.left,y:t.top,width:0,height:0,top:t.top,left:t.left,right:t.left,bottom:t.top})},r,{placement:"top-start",strategy:"fixed",middleware:[Nt({mainAxis:Vt,crossAxis:Ot}),Et()]});r.style.left=`${i}px`,r.style.top=`${o}px`}}},E=new be;import{dateTimeFormat as qe}from"@unblind/units";import{createContext as Fe,Fragment as It,useContext as Be}from"react";import{Fragment as $t,jsx as p,jsxs as A}from"react/jsx-runtime";var zt=6,_e=Fe(null);function oe(){let e=Be(_e);if(!e)throw new Error("useTooltipSerie must be used within a SerieProvider");return e}function qt({serie:e,children:t}){return p(_e.Provider,{value:e,children:t})}var He=Fe(null);function J(){let e=Be(He);if(!e)throw new Error("useTooltipSerie must be used within a SerieProvider");return e}function ye({formattedTime:e,tooltip:t,children:r}){return p(He.Provider,{value:{formattedTime:e,disableSuggestedLabel:t.disableSuggestedLabel,invertSort:t.invertSort,visibilityLimit:t.visibilityLimit||zt},children:r})}function Te({className:e="ub-tooltip-divider",...t}){return p("hr",{role:"presentation",...t,className:e})}function Ft({unitCategory:e,tooltipSerieList:t}){let{visibilityLimit:r,formattedTime:i}=J(),o=t.slice(0,r),n=t.slice(r);return A("div",{className:"ub-tooltip ub-tooltip-multiple-metrics",children:[A(Se,{children:[p(Pe,{children:i}),p("div",{className:"ub-tooltip-header-right",children:p(Ht,{children:e})})]}),p(Te,{}),A("div",{children:[p(xe,{children:o.map(s=>A(Ce,{serie:s,children:[p(Re,{}),p(Qe,{}),p(Le,{})]},s.metric.name))}),p(ve,{series:n})]})]})}function Bt({tooltipSerieList:e}){let{visibilityLimit:t,disableSuggestedLabel:r,formattedTime:i}=J(),o=e[0],n=e.slice(0,t),s=e.slice(t);return A("div",{className:"ub-tooltip ub-tooltip-multiple-attributes",children:[A(Se,{children:[p(Pe,{children:i}),p("div",{className:"ub-tooltip-header-right",children:p("span",{className:"ub-tooltip-serie-metric",children:o?.metric.label||!r&&o?.metric.suggestedLabel||o?.metric.name})})]}),p(Te,{}),A("div",{children:[p(xe,{children:n.map((a,l)=>A(Ce,{serie:a,children:[p(Re,{}),p($e,{}),p(Le,{})]},"serie_"+l))}),p(ve,{series:s})]})]})}function _t({tooltipSerieList:e,unitCategory:t}){let{visibilityLimit:r,formattedTime:i}=J(),o=e.slice(0,r),n=e.slice(r);return A("div",{className:"ub-tooltip ub-tooltip-multiple-metrics-attributes",children:[A(Se,{children:[p(Pe,{children:i}),p("div",{className:"ub-tooltip-header-right",children:p("span",{className:"ub-tooltip-unit-category",children:t})})]}),p(Te,{}),A("div",{children:[p(xe,{children:o.map((s,a)=>A(Ce,{serie:s,children:[p(Re,{}),p(Qe,{}),p($e,{}),p(Le,{})]},"serie"+a))}),p(ve,{series:n})]})]})}function Ht(e){return p("span",{className:"ub-tooltip-unit-category",children:e.children})}function ve({series:e}){let t=e[0]?.formattedValue,r=!e.some(n=>(n.value||0)>0),i=!e.some(n=>n.value!==void 0),{invertSort:o}=J();return e.length>0?i?p("span",{className:"ub-tooltip-summary",children:A("span",{children:["+",e.length," more with no data"]})}):r?p("span",{className:"ub-tooltip-summary",children:A("span",{children:["+",e.length," more with zero values"]})}):A("span",{className:"ub-tooltip-summary",children:[A("span",{children:["+",e.length," more with "]}),p("span",{children:`${o?"\u2265":"\u2264"} ${t}`})]}):p($t,{})}function Ce(e){return p(qt,{serie:e.serie,children:p("div",{className:"ub-tooltip-serie",children:e.children})})}function xe(e){return p("div",{className:"ub-tooltip-content",children:e.children})}function Se(e){return p("div",{className:"ub-tooltip-header",children:e.children})}function Pe(e){return p("div",{className:"ub-tooltip-datetime",children:e.children})}function Qe(){let e=oe(),{disableSuggestedLabel:t}=J();return p("span",{className:"ub-tooltip-serie-metric ub-truncate",children:e.metric.label||!t&&e.metric.suggestedLabel||e.metric.name})}function Le(){let e=oe();return e.formattedValue?p("span",{className:"ub-tooltip-serie-value ub-truncate",children:e.formattedValue}):p("span",{className:"ub-tooltip-serie-value-empty",children:"\u2013"})}function Re(){let e=oe();return p("span",{style:{backgroundColor:e.color},className:"ub-tooltip-serie-color"})}function $e(){let{attributes:e}=oe();if(!e)return null;let t=Object.values(e);return p("div",{className:"ub-tooltip-serie-attributes ub-truncate",children:t.map((r,i)=>A(It,{children:[p("span",{className:"ub-tooltip-serie-attribute-value",children:r}),i<t.length-1&&p("span",{"data-text":", ",className:"ub-tooltip-serie-attribute-divider"})]},"tooltip-"+r))})}function Qt({tooltipSerieList:e,invertSort:t}){return t?e.sort((r,i)=>(Number(r.value)||0)-(Number(i.value)||0)):e.sort((r,i)=>(Number(i.value)||0)-(Number(r.value)||0))}function We({timestamp:e,tooltipSerieList:t,timeZone:r,spansMultipleDays:i,hasMultipleMetrics:o,hasAttributes:n,invertSort:s,visibilityLimit:a,disableSuggestedLabel:l}){let c=Qt({tooltipSerieList:t,invertSort:s}),g=i?qe(e*1e3,{format:"MMM DD, HH:mm",timeZone:r}):qe(e*1e3,{format:"HH:mm",timeZone:r});return n?n&&!o?p(ye,{tooltip:{invertSort:s,visibilityLimit:a,disableSuggestedLabel:l},formattedTime:g,children:p(Bt,{tooltipSerieList:c})}):p(ye,{tooltip:{invertSort:s,visibilityLimit:a,disableSuggestedLabel:l},formattedTime:g,children:p(_t,{unitCategory:"",tooltipSerieList:c})}):p(ye,{tooltip:{invertSort:s,visibilityLimit:a,disableSuggestedLabel:l},formattedTime:g,children:p(Ft,{unitCategory:"",tooltipSerieList:c})})}import{jsx as je}from"react/jsx-runtime";function Wt(e,t){if(!e||e.length===0)return!1;let r=e[0],i=e[e.length-1];if(r==null||i==null)return!1;let o=new Date(r*1e3),n=new Date(i*1e3),s=a=>t==="UTC"?`${a.getUTCFullYear()}-${a.getUTCMonth()}-${a.getUTCDate()}`:a.toLocaleDateString(void 0,{timeZone:t});return s(o)!==s(n)}function jt(e,t){let r=!1;for(let o=1;o<e.series.length;o++)if(e.data[o]?.[t]!=null){r=!0;break}if(r)return t;let i=e.data[0].length;for(let o=1;t+o<i||t-o>=0;o++){let n=t-o,s=t+o;if(n>=0){for(let a=1;a<e.series.length;a++)if(e.data[a]?.[n]!=null)return n}if(s<i){for(let a=1;a<e.series.length;a++)if(e.data[a]?.[s]!=null)return s}}return t}function Gt(e,t,r,i,o,n,s){let a=[],l=e.data[0],c=new Set,g=new Set,d=!1;for(let h=1;h<e.series.length;h++){let u=e.data[h]?.[t]??null;if(i&&u!=null&&h>1){let T=e.data[h-1]?.[t]??0;u=u-T}let m=e.series[h],b=n?.[h-1];if(!b){console.warn("Original serie not found");continue}let v=o[b.metric];if(!v){console.warn("Metric metadata not found");continue}c.add(b.metric);let f=b?.attributes;if(f&&Object.keys(f).length>0){d=!0;for(let T in f)g.add(T)}let x=m?.stroke,C=typeof x=="function"?x(e,h):x??"#ffffff00",y=u==null?void 0:r?r(u):String(u);a.push({metric:v,color:C,value:u===null?void 0:u,formattedValue:y,attributes:f,serie:m})}return{tooltipSerieList:a,hasAttributes:d,hasMultipleMetrics:c.size>1,hasMultipleAttributes:g.size>1,spansMultipleDays:Wt(l,s)}}function Ge(e,t,r,i,o,n,s,a,l){let c,g,d,h=!1;function u(){let m=c.getBoundingClientRect();g=m.left,d=m.top}return{hooks:{init:m=>{E.initialize(),c=m.over,window.addEventListener("scroll",u,!0),window.addEventListener("resize",u),c.onmouseenter=()=>{h=!0,E.show()},c.onmouseleave=()=>{h=!1,E.getRenderedUplot()===m&&E.hide(m)},u()},setSize:()=>{u()},setCursor:m=>{let{left:b,top:v,idx:f}=m.cursor;if(!h||f==null){E.getRenderedUplot()===m&&E.hide(m);return}let C=jt(m,f),y=m.data[0][C];if(y===void 0)return;let{tooltipSerieList:T,hasAttributes:R,hasMultipleAttributes:k,hasMultipleMetrics:S,spansMultipleDays:U}=Gt(m,C,e,t,r,n,i);E.show();let w=o,O=w?je(w,{timestamp:y,tooltipSerieList:T,timeZone:i}):je(We,{timestamp:y,tooltipSerieList:T,timeZone:i,spansMultipleDays:U,stacked:t,hasAttributes:R,hasMultipleAttributes:k,hasMultipleMetrics:S,visibilityLimit:s,invertSort:a,disableSuggestedLabel:l});E.render(m,O),E.positionTooltip({left:(b||0)+g,top:(v||0)+d})},destroy(m){window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u),c&&(c.onmouseenter=null,c.onmouseleave=null),E.getRenderedUplot()===m&&E.hide(m)}}}}var ne=["oklch(0.70 0.24 293)","oklch(0.85 0.18 95)","oklch(0.65 0.25 255)","oklch(0.72 0.26 27)","oklch(0.70 0.22 150)","oklch(0.78 0.18 50)","oklch(0.72 0.18 215)","oklch(0.70 0.27 301)","oklch(0.75 0.20 90)","oklch(0.68 0.23 277)","oklch(0.70 0.18 193)","oklch(0.68 0.25 4)"],j=e=>`${getComputedStyle(document.documentElement).getPropertyValue("--ub-chart-font-size").trim()} ${e}`,Ke=(e,t)=>{let r=e;return t&&t.unit&&t.unit.code&&t.unit.code!=="1"&&(!r&&t.unit?r=t.unit.code:r&&t.unit.code!==r&&(r=void 0)),r};function Xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Array.isArray(e.fill)&&Array.isArray(e.border)}function Yt(e){return Array.isArray(e)}var Jt=12,Zt=({isFilling:e,useSolid:t,index:r})=>{let i=r%Jt+1;return e?t?`--ub-chart-serie-color-${i}`:`--ub-chart-serie-fill-color-${i}`:`--ub-chart-serie-color-${i}`},Xe=(e,t,r,i,o,n)=>{let s=i==="bar"||i==="area";if(r)return Yt(r)?r[t]:Xt(r)?n?r.fill[t]:r.border[t]:r(e,t,i,n);let a=Zt({isFilling:n,useSolid:s,index:t}),l=o.getPropertyValue(a).trim();return l||(n&&s?ne[t%ne.length]?.replace(")"," / 0.4)"):ne[t%ne.length])},er=e=>{let t=ie.paths.bars({size:[.6,100],radius:0,gap:0}),r=ie.paths.linear({alignGaps:0}),i=ie.paths.spline({alignGaps:1}),o=ie.paths.stepped({alignGaps:1});switch(e){case"line":return r;case"bar":return t;case"area":return r;case"step":return o;case"spline":return i;default:return r}},tr=(e,t,r,i,o)=>Xe(e,t,r,i,o,!0),rr=(e,t)=>{switch(e){case"bar":return 1;case"line":return t?1.5:2;case"spline":return t?1.5:2;case"area":return 1;case"step":return 1.5;default:return 1}},or=(e,t,r)=>{if(t<0||r<0)return[t,r];let i=e.posToVal(t,"x"),o=e.data[0];if(!o||o.length===0)return[t,r];let n=0,s=0,a=o.length-1;for(;a-s>1;){let u=Math.floor((s+a)/2),m=o[u];m!=null&&m<i?s=u:a=u}let l=o[s],c=o[a];l!=null&&c!=null?n=Math.abs(l-i)<Math.abs(c-i)?s:a:l!=null?n=s:c!=null&&(n=a);let g=n;for(let u=n;u>=0;u--){let m=!1;for(let b=1;b<e.data.length;b++){let v=e.data[b];if(v&&v[u]!=null){m=!0;break}}if(m){g=u;break}}let d=o[g];return d==null?[t,r]:[e.valToPos(d,"x"),r]},ir=(e,t)=>{let r=t.getPropertyValue("--ub-chart-font-color").trim(),i=t.getPropertyValue("--ub-chart-grid-color").trim(),o=e.axes?.[0],n=e.axes?.[1];return o&&(o.stroke=r,o.grid?o.grid.stroke=i:o.grid={stroke:i}),n&&(n.stroke=r,n.grid?n.grid.stroke=i:n.grid={stroke:i}),e},nr=(e,t)=>e.getPropertyValue(`--ub-chart-threshold-${t}`).trim()||e.getPropertyValue("--ub-chart-threshold-default").trim(),sr=(e,t)=>e.getPropertyValue(`--ub-chart-threshold-${t}-fill`).trim()||e.getPropertyValue("--ub-chart-threshold-default-fill").trim(),ar=e=>{switch(e){case"bold":return 2;case"line":return 1;case"dashed":return 1;default:return 1}},lr=e=>e==="line"?void 0:[5,5],cr=(e,t)=>{if(t){let r=[];return t.forEach(i=>{let o={label:i.label,stroke:nr(e,i.level),width:ar(),dash:lr(i.type),points:{show:!1,size:0},spanGaps:!0,show:!0,auto:!1};Y(i)||r.push(o),r.push(o)}),r}else return[]},ur=(e,t,r,i)=>{if(!i||!i.some(n=>re(n)))return t.bands;let o=i.map((n,s)=>Y(n)?null:{series:[e.length+s*2+1,e.length+s*2+2],fill:sr(r,n.level),dir:1}).filter(n=>n!==null);return[...t.bands,...o]},pr=(e,t,r,i,o,n,s)=>{let a=rr(t,i);return[{},...e.map((l,c)=>({label:l.metric,stroke:Xe(l,c,r,t,n),width:a,points:{show:!1},spanGaps:!0,paths:er(t),fill:i||o?tr(l,c,r,t,n):void 0})),...cr(n,s)]},mr=e=>typeof e=="string"&&String(e).toLowerCase().trim()==="by"?"bytes":e,Ye=(e,t,r,i,o,n,s,a,l,c,g,d,h,u,m,b,v,f,x,C,y)=>{let T=window.getComputedStyle(e),R=T.fontFamily,k=e?.clientWidth??1050,S=e?.clientHeight??250,U=mr(i),w=Kt(U==="1"?null:U),O=I=>{let P=w(I);return P.text+(P.suffix?.trim()||"")},_={width:k,height:S,scales:{y:{range:Je(i,m,b)}},plugins:h?[]:[Ge(O,s,t,c,g,o,x,C,y)],padding:d?[8,10,8,48]:[8,10,8,18],cursor:{y:!1,sync:{key:"_"},drag:{setScale:!0,x:!0,y:!1},move:or,show:!f},series:pr(o,n,a,l,s,T,u),bands:ur(o,r,T,u),axes:[ze(R,c,d,v),Ze(w,R,v)],legend:{show:!1}};return ir(_,T)};var et=(e,t=4)=>{let r=e/t,i=Math.pow(10,Math.floor(Math.log10(r))),o=r/i,n;return o>5?n=10*i:o>2?n=5*i:o>1?n=2*i:n=i,Math.ceil(e/n)*n},L=(e,t)=>typeof e=="number"?e:t,Je=(e,t,r)=>(i,o,n)=>{if(o===0&&n===0)return[L(t,0),L(r,100)];let s=1,a=n*(1+s),l=o<0?o*(1+s):o*(1-s);if(e==="percent"||e==="percentunit"){let d=e==="percent"?100:1;return n>d?o<0?[L(t,l),L(r,a)]:[L(t,0),L(r,a)]:o<0?[L(t,l),L(r,d)]:[L(t,0),L(r,d)]}if(n<=.9999)return o<=0?[L(t,l),L(r,1)]:[L(t,0),L(r,1)];let c=et(a),g=et(Math.abs(l));return o<0?[L(r,-g),L(r,c)]:[L(t,0),L(r,c)]},dr=(e,t,r,i)=>{let o=e.axes[r];if(i>1)return o?._size||0;let n=(o?.ticks?.size||0)+(o?.gap||0),s=(t??[]).reduce((a,l)=>l.length>a.length?l:a,"");return s!=""&&(e.ctx.font=o?.font?.[0]??e.ctx.font,n+=e.ctx.measureText(s).width/devicePixelRatio),Math.ceil(n)};function Ze(e,t,r){return{gap:0,font:j(t),labelFont:j(t),grid:{show:!0,width:.5},ticks:{width:.5},values:(i,o)=>o.map(n=>{let s=e(n);return s.text+(s.suffix?.trim()||"")}),size:dr,space:(i,o,n,s,a)=>{let l=i.height;return l<=100?30:l<=150?35:l<=200?45:l<=250?55:l<=300?60:70},show:!r}}function tt(e,t){let r=[],i=e[0],o=i.length,n=Array(o).fill(0),s=[i];if(e.forEach((a,l)=>{l!==0&&(t?s.push(a):s.push(a.map((c,g)=>n[g]=n[g]+(c||0))))}),!t)for(let a=1;a<e.length-1;a++)r.push({series:[a+1,a]});return{data:s,bands:r.filter(a=>a.series[1]>-1)}}import{jsx as br}from"react/jsx-runtime";function ke(e){let{times:t,series:r,metadata:i,type:o,className:n,timeZone:s,options:a,tooltip:l,colors:c,tooltipComponent:g,unit:d,fill:h,thresholds:u,min:m,max:b,hideAxis:v,hideCursor:f,relativeTimeAxis:x,invertSort:C,disableSuggestedLabel:y}=e,{hide:T,visibilityLimit:R}=l||{},k=hr(null),S=V(),U=typeof x=="boolean"?x:S.relativeTimeAxis,w=c??S.colors,O=typeof h=="boolean"?h:S.fill||!1,_=typeof C=="boolean"?C:S.invertSort,I=typeof y=="boolean"?y:S.disableSuggestedLabel,P=typeof v=="boolean"?v:S.hideAxis,z=typeof f=="boolean"?f:S.hideCursor,se=typeof R=="boolean"?R:S.tooltip?.visibilityLimit,q=typeof T=="boolean"?T:S.tooltip?.hide;return fr(()=>{if(!r||r.length===0){console.warn("No series provided");return}let G=[t],ae=d;r.forEach(N=>{let Z=i[N.metric];d||(ae=Ke(ae,Z)),G.push(N.values)});let we=o==="bar"||o==="area",K=tt(G,!we);u&&u.forEach(N=>{Y(N)?K.data.push(new Array(t.length).fill(N.value)):re(N)&&(K.data.push(new Array(t.length).fill(N.from)),K.data.push(new Array(t.length).fill(N.to)))});let H=k.current,le=null;if(H){let N=Ye(H,i,K,ae,r,o,we,w,O,s,g,U,q,u,m,b,P,z,se,_,I);le=new gr({...N,...a},K.data,H);let Z=new ResizeObserver(()=>{le?.setSize({width:H.clientWidth,height:H.clientHeight})});return Z.observe(H),()=>{le?.destroy(),Z.disconnect()}}},[r,t,o,i,s,g,U,w,O,d,q,u,m,b,a,P,z,_,se,I]),br("div",{ref:k,className:"ub-chart-container"+(n?` ${n}`:"")})}import{jsx as B}from"react/jsx-runtime";function Tr({metrics:e,operator:t,attributes:r,groupBy:i,interval:o,type:n="line",className:s,appearance:a,tooltip:l,onResponse:c,...g}){let d=V(),h=o??d.interval,u=r??d.attributes,m=i??d.groupBy,b=t??d.operator,v=a?.components?.Tooltip??d.appearance.components.Tooltip,f=Ae(()=>({hide:l?.hide??d.tooltip?.hide,visibilityLimit:l?.visibilityLimit??d.tooltip?.visibilityLimit}),[l?.hide,d.tooltip?.hide,l?.visibilityLimit,d.tooltip?.visibilityLimit]),{queries:x,metadataLabels:C}=Ae(()=>{let P=Array.isArray(e)?e:[e],z={};return{queries:P.map(q=>{let G=he(q)?q.name:q;return he(q)&&(z[G]=q.label),{metrics:[G],operator:b,attributes:u,groupBy:m}}),metadataLabels:z}},[e,b,u,m]),y=fe({queries:x,timeRange:d.timeRange,startTime:d.startTime,endTime:d.endTime,interval:h}),{isLoading:T,data:R,hasError:k}=y,{series:S,times:U,metadata:w}=R,O=S.every(P=>P.isEmpty),_=Ae(()=>Object.keys(C).length===0?w:Object.fromEntries(Object.entries(w).map(([P,z])=>[P,{...z,label:C[P]??z.suggestedLabel??P}])),[C,w]),I=`ub-chart-container${s?` ${s}`:""}`;if(yr(()=>{c&&c(y)},[y,c]),T){let P=a?.components?.Loading??d.appearance.components.Loading;return B("div",{className:I,children:B(P,{})})}if(k){let P=a?.components?.Error??d.appearance.components.Error;return B("div",{className:I,children:B(P,{})})}if(O){let P=a?.components?.Empty??d.appearance.components.Empty;return B("div",{className:I,children:B(P,{})})}return B(ke,{times:U,series:S,metadata:_,type:n,className:s,tooltip:f,tooltipComponent:v,...g})}export{ke as Chart,ue as Empty,pe as Error,me as Loading,te as Scope,Tr as Timeseries,pt as UnblindProvider,St as useLogs,dt as useMetrics,De as useRefresh,V as useScope,fe as useTimeseries,vt as useUsage};
2
2
  //# sourceMappingURL=index.mjs.map