// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later
// @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{qi as t}from"./lucide-icons-BdRF0moN.js";import{t as n}from"./jsx-runtime-By8HlURe.js";import{t as r}from"./dist-DQ82bf9M.js";import{t as i}from"./useQuery-rCAlChE8.js";import{n as a}from"./appRelays-Clm5NPIe.js";import{c as o}from"./chunk-62JRHF6Z-yJW_vgm4.js";import{t as s}from"./skeleton-CVls4GW9.js";import{a as c,i as l,n as u,r as d,t as f}from"./card-CthSADjg.js";import{a as p,h as m,i as h,m as g,n as _,o as v,r as y,t as b}from"./chart-BqErpqi8.js";var x=h({chartName:`BarChart`,GraphicalChild:m,defaultTooltipEventType:`axis`,validateTooltipEventTypes:[`axis`,`item`],axisComponents:[{axisType:`xAxis`,AxisComp:v},{axisType:`yAxis`,AxisComp:p}],formatAxisMap:g}),S=e(t(),1),C=[{tags:[`Ditto`],label:`Ditto`,color:`hsl(221, 83%, 53%)`},{tags:[`Agora`],label:`Agora`,color:`hsl(25, 95%, 53%)`},{tags:[`diVine`,`Divine`,`divine-web`,`divine-web/1.0`,`divine-mobile/1.0`,`diVine_bug_report`,`divine.video`,`openvine`],label:`diVine`,color:`hsl(280, 68%, 55%)`},{tags:[`Amethyst`],label:`Amethyst`,color:`hsl(258, 70%, 55%)`},{tags:[`Primal Web`,`Primal Android`,`Primal iOS`],label:`Primal`,color:`hsl(348, 83%, 47%)`},{tags:[`Wisp`],label:`Wisp`,color:`hsl(170, 75%, 42%)`}];function w(e){let[t,...n]=e;if(!t)return`/client`;let r=`/client/${encodeURIComponent(t)}`;return n.length===0?r:`${r}?${n.map(e=>`client=${encodeURIComponent(e)}`).join(`&`)}`}var T=n();function E({title:e,description:t,data:n,isLoading:r,bare:i}){let a=o(),h=(n??[]).filter(e=>e.count>0).map(e=>({name:e.client.label,value:e.count,fill:e.client.color,tags:e.client.tags})),g=Object.fromEntries((n??[]).map(e=>[e.client.label,{label:e.client.label,color:e.client.color}])),S=new Map(h.map(e=>[e.name,e.tags])),C=r||h.length===0?(0,T.jsx)(s,{className:`h-[200px] w-full`}):(0,T.jsx)(b,{config:g,className:`h-[200px] w-full`,children:(0,T.jsxs)(x,{data:h,layout:`vertical`,margin:{top:4,right:4,bottom:0,left:0},children:[(0,T.jsx)(v,{type:`number`,tickLine:!1,axisLine:!1,className:`text-xs`,tickFormatter:e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:e.toString()}),(0,T.jsx)(p,{type:`category`,dataKey:`name`,tickLine:!1,axisLine:!1,className:`text-xs`,width:80,interval:0,tick:({x:e,y:t,payload:n})=>{let r=S.get(n.value);return(0,T.jsx)(`text`,{x:e,y:t,dy:3,textAnchor:`end`,className:`fill-muted-foreground text-xs cursor-pointer hover:fill-foreground`,onClick:()=>{r?.length&&a(w(r))},children:n.value})}}),(0,T.jsx)(_,{content:(0,T.jsx)(y,{})}),(0,T.jsx)(m,{dataKey:`value`,radius:[0,4,4,0],className:`cursor-pointer`,onClick:e=>{e?.tags?.length&&a(w(e.tags))}})]})});return i?C:(0,T.jsxs)(f,{children:[(0,T.jsxs)(l,{className:`pb-2`,children:[(0,T.jsx)(c,{className:`text-sm font-medium`,children:e}),t&&(0,T.jsx)(d,{children:t})]}),(0,T.jsx)(u,{children:C})]})}function D(e){let{nostr:t}=r();return i({queryKey:[`client-counts`,JSON.stringify(e)],queryFn:async n=>{let r=t.relay(a);if(!r.count)throw Error(`Relay does not support NIP-45 COUNT`);return(await Promise.all(C.map(async t=>{let i={...e,"#client":t.tags};return{client:t,count:(await r.count([i],{signal:n.signal})).count}}))).sort((e,t)=>t.count-e.count)},staleTime:300*1e3})}var O=3600,k=720*O,A=`distinct:author`;function j(){let e=Math.floor(Date.now()/1e3)-k;return Math.floor(e/O)*O}function M({title:e=`Unique Users by Client`,description:t=`Distinct authors per client (last 30 days)`,bare:n}){let r=D({since:(0,S.useMemo)(()=>j(),[]),search:A});return(0,T.jsx)(E,{title:e,description:t,data:r.data,isLoading:r.isLoading,bare:n})}export{M as t};
// @license-end
