wurk 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/controllers/wurk/api/serializers.rb +1 -1
  4. data/app/controllers/wurk/api_controller.rb +2 -1
  5. data/app/controllers/wurk/extensions_controller.rb +1 -1
  6. data/config/routes.rb +1 -1
  7. data/lib/wurk/version.rb +1 -1
  8. data/lib/wurk/web/extension.rb +1 -1
  9. data/vendor/assets/dashboard/assets/ArgsValue-BUqJa-eG.js +1 -0
  10. data/vendor/assets/dashboard/assets/BatchDetail-C5dkqAzp.js +1 -0
  11. data/vendor/assets/dashboard/assets/Batches-bgkXn8tc.js +1 -0
  12. data/vendor/assets/dashboard/assets/Busy-QSHBFXhy.js +1 -0
  13. data/vendor/assets/dashboard/assets/Cron-CUHppvTA.js +1 -0
  14. data/vendor/assets/dashboard/assets/Dashboard-CzPudckV.js +1 -0
  15. data/vendor/assets/dashboard/assets/Dead-BIq4Nz_i.js +1 -0
  16. data/vendor/assets/dashboard/assets/Extension-CW36i9R1.js +1 -0
  17. data/vendor/assets/dashboard/assets/JobDetailModal-BhNdWSp7.js +2 -0
  18. data/vendor/assets/dashboard/assets/Limiters-CiI_DfUK.js +1 -0
  19. data/vendor/assets/dashboard/assets/Metrics-BzZ8ugms.js +1 -0
  20. data/vendor/assets/dashboard/assets/Modal-DzVfgsSF.js +1 -0
  21. data/vendor/assets/dashboard/assets/PageHeader-Dp3qhX3e.js +1 -0
  22. data/vendor/assets/dashboard/assets/Profiles-BTtIlTdR.js +1 -0
  23. data/vendor/assets/dashboard/assets/Queues-BuXoxQ4W.js +1 -0
  24. data/vendor/assets/dashboard/assets/Retries-D4HAPaOQ.js +1 -0
  25. data/vendor/assets/dashboard/assets/Scheduled-6NCZYVJh.js +1 -0
  26. data/vendor/assets/dashboard/assets/Search-JaB_-52c.js +1 -0
  27. data/vendor/assets/dashboard/assets/charts-6uvCyY0x.js +1 -0
  28. data/vendor/assets/dashboard/assets/i18n-gIeA5VLo.js +1 -0
  29. data/vendor/assets/dashboard/assets/index-BDG9tvBA.css +1 -0
  30. data/vendor/assets/dashboard/assets/index-DWfWAGBc.js +141 -0
  31. data/vendor/assets/dashboard/assets/useJobSetActions-DTDaAoWr.js +1 -0
  32. data/vendor/assets/dashboard/assets/usePageParam-BcAvRko-.js +1 -0
  33. data/vendor/assets/dashboard/assets/useSort-D5Am4bGq.js +1 -0
  34. data/vendor/assets/dashboard/index.html +3 -2
  35. data/vendor/assets/dashboard/wurk-manifest.json +2 -2
  36. metadata +27 -27
  37. data/vendor/assets/dashboard/assets/AreaChart-BrEBs9bV.js +0 -53
  38. data/vendor/assets/dashboard/assets/ArgsValue-CiJzEwxS.js +0 -1
  39. data/vendor/assets/dashboard/assets/BatchDetail-Cu1LFfNV.js +0 -1
  40. data/vendor/assets/dashboard/assets/Batches-pf4zKSuU.js +0 -1
  41. data/vendor/assets/dashboard/assets/Busy-Lv6K2ZkR.js +0 -1
  42. data/vendor/assets/dashboard/assets/Cron-BcnQ2Kev.js +0 -1
  43. data/vendor/assets/dashboard/assets/Dashboard-DMO-cH6d.js +0 -1
  44. data/vendor/assets/dashboard/assets/Dead-o9K-1fo2.js +0 -1
  45. data/vendor/assets/dashboard/assets/Extension-MTUtXQuK.js +0 -1
  46. data/vendor/assets/dashboard/assets/JobDetailModal-DKYvp6QS.js +0 -2
  47. data/vendor/assets/dashboard/assets/Limiters-Bv9WgiHP.js +0 -1
  48. data/vendor/assets/dashboard/assets/Metrics-DnAsLwWl.js +0 -7
  49. data/vendor/assets/dashboard/assets/Modal-CvD-1IKA.js +0 -1
  50. data/vendor/assets/dashboard/assets/PageHeader-B-0cTQeM.js +0 -1
  51. data/vendor/assets/dashboard/assets/Profiles-S_WCoS6S.js +0 -1
  52. data/vendor/assets/dashboard/assets/Queues-B6qQmaoY.js +0 -1
  53. data/vendor/assets/dashboard/assets/Retries-BagJsqI0.js +0 -1
  54. data/vendor/assets/dashboard/assets/Scheduled-DPzzoJkC.js +0 -1
  55. data/vendor/assets/dashboard/assets/Search-jWG793ku.js +0 -1
  56. data/vendor/assets/dashboard/assets/index-DcfzJOIq.js +0 -126
  57. data/vendor/assets/dashboard/assets/index-DdkkU3x4.css +0 -1
  58. data/vendor/assets/dashboard/assets/useJobSetActions-BCW6DHSe.js +0 -1
  59. data/vendor/assets/dashboard/assets/useMutation-NUbe15ar.js +0 -1
  60. data/vendor/assets/dashboard/assets/usePageParam-BDV1DCDQ.js +0 -1
  61. data/vendor/assets/dashboard/assets/useSort-BPPxnBBo.js +0 -1
@@ -1 +0,0 @@
1
- import{c as e}from"./index-DcfzJOIq.js";import{o as t}from"./utils-DDJC7tJV.js";var n=e();function r({str:e,max:r}){return e===`[]`||e===``?(0,n.jsx)(`span`,{style:{color:`var(--text-muted)`},children:`—`}):(0,n.jsx)(`span`,{title:e,children:t(e,r)})}export{r as t};
@@ -1 +0,0 @@
1
- import{C as e,_ as t,b as n,c as r,g as i,i as a,n as o,o as s}from"./index-DcfzJOIq.js";import{a as c}from"./utils-DDJC7tJV.js";var l=e(n(),1),u=r();function d({label:e,children:t}){return(0,u.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:2},children:[(0,u.jsx)(`span`,{style:{fontSize:11,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:e}),(0,u.jsx)(`span`,{style:{fontVariantNumeric:`tabular-nums`},children:t})]})}function f({label:e,jids:t}){return t.length===0?null:(0,u.jsxs)(`div`,{style:{marginTop:`1.5rem`},children:[(0,u.jsxs)(`h2`,{style:{fontSize:14,margin:`0 0 0.5rem`},children:[e,` `,(0,u.jsx)(`span`,{className:`badge badge-muted`,children:t.length})]}),(0,u.jsx)(`div`,{className:`table-wrapper`,children:(0,u.jsx)(`table`,{children:(0,u.jsx)(`tbody`,{children:t.map(e=>(0,u.jsx)(`tr`,{children:(0,u.jsx)(`td`,{style:{fontFamily:`monospace`,fontSize:12},children:e})},e))})})})]})}function p(){let{bid:e=``}=t();(0,l.useEffect)(()=>{document.title=`${a(`nav.batches`)} — Wurk`},[]);let{data:n,isLoading:r,isError:p}=s({queryKey:[`batch`,e],queryFn:()=>fetch(`/wurk/api/batches/${encodeURIComponent(e)}`).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()})});if(r)return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`div`,{className:`section-header`,style:{gap:`0.75rem`},children:(0,u.jsxs)(i,{to:`/batches`,className:`btn btn-sm`,children:[`← `,a(`nav.batches`)]})}),(0,u.jsx)(`div`,{style:{marginTop:`1rem`},children:(0,u.jsx)(o,{count:8})})]});if(p||!n)return(0,u.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)});let m=n.total-n.pending,h=n.total>0?Math.round(m/n.total*100):0;return(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`div`,{className:`section-header`,style:{gap:`0.75rem`},children:[(0,u.jsxs)(i,{to:`/batches`,className:`btn btn-sm`,children:[`← `,a(`nav.batches`)]}),(0,u.jsx)(`h1`,{className:`page-title`,style:{margin:0,fontFamily:`monospace`,fontSize:16},children:n.bid}),n.complete?(0,u.jsx)(`span`,{className:`badge badge-success`,children:`complete`}):(0,u.jsxs)(`span`,{className:`badge badge-accent`,children:[h,`%`]}),n.invalidated&&(0,u.jsx)(`span`,{className:`badge badge-danger`,children:`invalidated`})]}),n.description&&(0,u.jsx)(`p`,{style:{color:`var(--text-muted)`,marginTop:0},children:n.description}),(0,u.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(140px, 1fr))`,gap:`1rem`,marginTop:`1rem`},children:[(0,u.jsx)(d,{label:`Total`,children:n.total.toLocaleString()}),(0,u.jsx)(d,{label:`Pending`,children:n.pending.toLocaleString()}),(0,u.jsx)(d,{label:`Failures`,children:n.failures.toLocaleString()}),(0,u.jsx)(d,{label:`Children`,children:n.child_count.toLocaleString()}),(0,u.jsx)(d,{label:`Created`,children:n.created_at?c(n.created_at):`—`}),(0,u.jsx)(d,{label:`Completed`,children:n.complete_at?c(n.complete_at):`—`}),n.parent_bid&&(0,u.jsx)(d,{label:`Parent`,children:n.parent_bid}),n.tags.length>0&&(0,u.jsx)(d,{label:`Tags`,children:n.tags.join(`, `)})]}),(0,u.jsx)(f,{label:`Failed jobs`,jids:n.failed_jids}),(0,u.jsx)(f,{label:`Dead jobs`,jids:n.dead_jids})]})}export{p as default};
@@ -1 +0,0 @@
1
- import{C as e,b as t,c as n,g as r,i,o as a,r as o}from"./index-DcfzJOIq.js";import{a as s,o as c}from"./utils-DDJC7tJV.js";import{n as l,t as u}from"./usePageParam-BDV1DCDQ.js";import{n as d,t as f}from"./useSort-BPPxnBBo.js";import{t as p}from"./PageHeader-B-0cTQeM.js";var m=e(t(),1),h=n(),g=25,_={bid:e=>e.bid,description:e=>e.description??``,total:e=>e.total,pending:e=>e.pending,failures:e=>e.failures,progress:e=>e.total>0?(e.total-e.pending)/e.total:0,created:e=>e.created_at??null};function v(){let[e,t]=u();(0,m.useEffect)(()=>{document.title=`${i(`nav.batches`)} — Wurk`},[]);let{data:n,isLoading:v,isError:y}=a({queryKey:[`batches`,e],queryFn:()=>fetch(`/wurk/api/batches?page=${e-1}&count=${g}`).then(e=>e.json())}),{sorted:b,sort:x,toggle:S}=f(n?.batches??[],_);return v?(0,h.jsxs)(`div`,{children:[(0,h.jsx)(p,{icon:`fa-table-cells-large`,title:i(`nav.batches`),summary:i(`summaries.batches`)}),(0,h.jsx)(o,{rows:8,cols:7})]}):y||!n?(0,h.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:i(`common.error`)}):(0,h.jsxs)(`div`,{children:[(0,h.jsx)(p,{icon:`fa-table-cells-large`,title:i(`nav.batches`),summary:i(`summaries.batches`),children:(0,h.jsx)(`span`,{className:`badge badge-accent`,children:n.total.toLocaleString()})}),b.length===0?(0,h.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`table-wrapper`,children:(0,h.jsxs)(`table`,{children:[(0,h.jsx)(`thead`,{children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(d,{label:`BID`,sortKey:`bid`,sort:x,onSort:S}),(0,h.jsx)(d,{label:`Description`,sortKey:`description`,sort:x,onSort:S}),(0,h.jsx)(d,{label:i(`table.total`),sortKey:`total`,sort:x,onSort:S}),(0,h.jsx)(d,{label:i(`table.pending`),sortKey:`pending`,sort:x,onSort:S}),(0,h.jsx)(d,{label:`Failures`,sortKey:`failures`,sort:x,onSort:S}),(0,h.jsx)(d,{label:`Progress`,sortKey:`progress`,sort:x,onSort:S}),(0,h.jsx)(d,{label:`Created`,sortKey:`created`,sort:x,onSort:S})]})}),(0,h.jsx)(`tbody`,{children:b.map(e=>{let t=e.total-e.pending,n=e.total>0?t/e.total*100:0;return(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`td`,{style:{fontFamily:`monospace`,fontSize:12},children:(0,h.jsx)(r,{to:`/batches/${e.bid}`,title:e.bid,children:c(e.bid,14)})}),(0,h.jsx)(`td`,{title:e.description??``,children:c(e.description??`—`,40)}),(0,h.jsx)(`td`,{children:e.total.toLocaleString()}),(0,h.jsx)(`td`,{style:{color:e.pending>0?`var(--warning)`:`var(--success)`},children:e.pending.toLocaleString()}),(0,h.jsx)(`td`,{style:{color:e.failures>0?`var(--danger)`:void 0},children:e.failures.toLocaleString()}),(0,h.jsx)(`td`,{style:{width:100},children:(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,h.jsx)(`div`,{className:`progress-bar-track`,style:{flex:1},children:(0,h.jsx)(`div`,{className:`progress-bar-fill`,style:{width:`${n}%`,background:e.failures>0?`var(--danger)`:`var(--success)`}})}),(0,h.jsxs)(`span`,{style:{fontSize:11,color:`var(--text-muted)`,minWidth:32},children:[Math.round(n),`%`]})]})}),(0,h.jsx)(`td`,{children:e.created_at?s(e.created_at):`—`})]},e.bid)})})]})}),(0,h.jsx)(l,{page:e,total:n.total,count:g,onChange:t})]})]})}export{v as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./useMutation-NUbe15ar.js";import{C as t,a as n,b as r,c as i,i as a,n as o,o as s,s as c}from"./index-DcfzJOIq.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./utils-DDJC7tJV.js";import{t as h}from"./PageHeader-B-0cTQeM.js";import{t as g}from"./Modal-CvD-1IKA.js";import{t as _}from"./ArgsValue-CiJzEwxS.js";var v=t(r(),1),y=i();function b(e){let t=new Map;for(let n of e){let e=t.get(n.hostname);e||(e={hostname:n.hostname,processes:[],busy:0,concurrency:0,rssKb:0},t.set(n.hostname,e)),e.processes.push(n),e.busy+=n.busy,e.concurrency+=n.concurrency,e.rssKb+=n.rss??0,e.cpuModel??=n.cpu_model??void 0,e.cores??=n.cores,e.memoryTotalKb??=n.memory_total_kb}return[...t.values()].sort((e,t)=>e.hostname.localeCompare(t.hostname))}function x(e){return e>90?`var(--danger)`:e>70?`var(--warning)`:`var(--accent)`}var S={fontSize:11,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.04em`};function C({proc:e}){let{data:t}=s({queryKey:[`workers`],queryFn:()=>fetch(`/wurk/api/workers`).then(e=>e.json()),refetchInterval:5e3}),n=(t??[]).filter(t=>t.process_id===e.identity);return(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(200px, 1fr))`,gap:`0.75rem`,marginBottom:`1rem`},children:[[a(`busy.identity`),(0,y.jsx)(`code`,{style:{fontSize:12},children:e.identity})],[`PID`,e.pid],[a(`busy.started`),e.started_at?(0,y.jsx)(`span`,{title:u(e.started_at),children:l(e.started_at)}):`—`],[a(`busy.heartbeat`),(0,y.jsx)(`span`,{title:u(e.beat),children:l(e.beat)})],[`${a(`table.busy`)} / ${a(`table.concurrency`)}`,`${e.busy} / ${e.concurrency}`],[a(`busy.rss`),p(e.rss??0)],[a(`busy.rtt`),e.rtt_us?`${(e.rtt_us/1e3).toFixed(1)} ${a(`common.ms`)}`:`—`],[a(`busy.version`),e.version??`—`],[a(`busy.tag`),e.tag||`—`],[a(`busy.labels`),e.labels?.length?e.labels.join(`, `):`—`]].map(([e,t])=>(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:S,children:e}),(0,y.jsx)(`div`,{style:{fontSize:14},children:t})]},String(e)))}),(0,y.jsx)(`div`,{style:{...S,marginBottom:`0.25rem`},children:a(`table.queues`)}),(0,y.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`0.25rem`,marginBottom:`1rem`},children:e.queues.map(e=>(0,y.jsx)(`span`,{className:`badge badge-muted`,children:e},e))}),(0,y.jsxs)(`h3`,{className:`section-title`,style:{marginBottom:`0.5rem`},children:[a(`busy.running_jobs`),` `,(0,y.jsx)(`span`,{className:`badge badge-muted`,children:n.length})]}),n.length===0?(0,y.jsx)(`div`,{className:`empty-state`,style:{padding:`1rem`},children:a(`busy.no_running`)}):(0,y.jsx)(`div`,{className:`table-wrapper`,children:(0,y.jsxs)(`table`,{children:[(0,y.jsx)(`thead`,{children:(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`th`,{children:a(`table.jid`)}),(0,y.jsx)(`th`,{children:a(`table.class`)}),(0,y.jsx)(`th`,{children:a(`table.queue`)}),(0,y.jsx)(`th`,{children:a(`table.args`)}),(0,y.jsx)(`th`,{children:a(`busy.running_since`)})]})}),(0,y.jsx)(`tbody`,{children:n.map(e=>(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:f(e.jid,12)}),(0,y.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,y.jsx)(`td`,{children:(0,y.jsx)(`span`,{className:`badge badge-muted`,children:e.queue})}),(0,y.jsx)(`td`,{children:(0,y.jsx)(_,{str:m(e.args),max:40})}),(0,y.jsx)(`td`,{title:u(e.run_at),children:l(e.run_at)})]},`${e.thread_id}-${e.jid}`))})]})})]})}function w({group:e}){let t=e.memoryTotalKb?Math.min(100,e.rssKb/e.memoryTotalKb*100):null;return(0,y.jsxs)(`div`,{style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.75rem`,marginBottom:`0.75rem`},children:[(0,y.jsxs)(`span`,{style:{fontWeight:600,fontSize:15},children:[(0,y.jsx)(`i`,{className:`fa-solid fa-server`,style:{color:`var(--text-muted)`,marginRight:`0.5rem`}}),e.hostname]}),(0,y.jsxs)(`span`,{className:`badge badge-muted`,children:[e.processes.length,` `,a(`dashboard.processes`).toLowerCase()]}),e.cpuModel&&(0,y.jsxs)(`span`,{className:`badge badge-muted`,title:e.cpuModel,children:[(0,y.jsx)(`i`,{className:`fa-solid fa-microchip`,style:{marginRight:`0.35rem`}}),f(e.cpuModel,40)]}),e.cores!=null&&e.cores>0&&(0,y.jsx)(`span`,{className:`badge badge-muted`,children:a(`busy.cores`,{n:e.cores})}),e.rssKb>0&&(0,y.jsxs)(`span`,{className:`badge badge-muted`,title:t==null?void 0:`${t.toFixed(1)}% ${a(`busy.of_total_ram`)}`,children:[(0,y.jsx)(`i`,{className:`fa-solid fa-memory`,style:{marginRight:`0.35rem`}}),p(e.rssKb),e.memoryTotalKb?` / ${p(e.memoryTotalKb)}`:``]}),(0,y.jsxs)(`span`,{className:`badge badge-muted`,style:{fontVariantNumeric:`tabular-nums`},children:[a(`table.busy`),` `,e.busy,` / `,e.concurrency]})]})}function T(){let{data:t}=n(),r=t?.read_only??!1,i=c(),[u,f]=(0,v.useState)(null);(0,v.useEffect)(()=>{document.title=`${a(`nav.busy`)} — Wurk`},[]);let{data:m,isLoading:_,isError:T}=s({queryKey:[`processes`],queryFn:()=>fetch(`/wurk/api/processes`).then(e=>e.json()),refetchInterval:5e3}),E=e({mutationFn:async e=>{let{signal:t}=e,n=e.scope===`all`?`all`:e.identity,r=await fetch(`/wurk/api/busy/${t}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({identity:n})});if(!r.ok)throw Error(`${t} failed (${r.status})`);return r},onSuccess:()=>i.invalidateQueries({queryKey:[`processes`]})}),D=e=>window.confirm(a(`actions.confirm`,{action:a(`actions.stop`),scope:e}));if(_)return(0,y.jsxs)(`div`,{children:[(0,y.jsx)(h,{icon:`fa-gears`,title:a(`nav.busy`),summary:a(`summaries.busy`)}),(0,y.jsx)(o,{count:6})]});if(T||!m)return(0,y.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)});let O=m.some(e=>!e.embedded),k=b(m),A=m.find(e=>e.identity===u)??null;return(0,y.jsxs)(`div`,{children:[(0,y.jsx)(h,{icon:`fa-gears`,title:a(`nav.busy`),summary:a(`summaries.busy`),children:(0,y.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.6rem`},children:[(0,y.jsxs)(`span`,{className:`badge badge-muted`,children:[m.length,` `,a(`dashboard.processes`).toLowerCase()]}),k.length>1&&(0,y.jsx)(`span`,{className:`badge badge-muted`,children:a(`busy.hosts`,{n:k.length})}),!r&&O&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{className:`btn btn-sm btn-ghost`,disabled:E.isPending,onClick:()=>E.mutate({signal:`quiet`,scope:`all`}),children:`${a(`actions.quiet`)} ${a(`actions.all_suffix`)}`}),(0,y.jsx)(`button`,{className:`btn btn-sm btn-ghost btn-danger`,disabled:E.isPending,onClick:()=>D(a(`actions.scope_all_processes`))&&E.mutate({signal:`stop`,scope:`all`}),children:`${a(`actions.stop`)} ${a(`actions.all_suffix`)}`})]})]})}),m.length===0?(0,y.jsx)(`div`,{className:`empty-state`,children:a(`common.empty`)}):k.map(e=>(0,y.jsxs)(`section`,{style:{marginBottom:`1.5rem`},children:[(0,y.jsx)(w,{group:e}),(0,y.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(min(100%, 320px), 1fr))`,gap:`1rem`},children:e.processes.map(e=>{let t=e.concurrency>0?e.busy/e.concurrency*100:0,n=Date.now()/1e3-e.beat<30;return(0,y.jsxs)(`div`,{className:`card row-clickable`,onClick:()=>e.identity&&f(e.identity),children:[(0,y.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,marginBottom:`0.75rem`},children:[(0,y.jsxs)(`div`,{children:[(0,y.jsxs)(`div`,{style:{fontWeight:600,fontSize:15},children:[`PID `,e.pid]}),(0,y.jsxs)(`div`,{style:{color:`var(--text-muted)`,fontSize:12},children:[e.tag||e.hostname,e.started_at?` · ${a(`busy.up_for`)} ${d(Date.now()/1e3-e.started_at)}`:``]})]}),(0,y.jsxs)(`div`,{style:{display:`flex`,gap:`0.375rem`},children:[n&&(0,y.jsx)(`span`,{className:`live-dot`,title:`Heartbeat OK`}),e.quiet&&(0,y.jsx)(`span`,{className:`badge badge-warning`,children:`Quiet`}),e.embedded&&(0,y.jsx)(`span`,{className:`badge badge-muted`,children:`embedded`})]})]}),(0,y.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr 1fr`,gap:`0.5rem`,marginBottom:`0.75rem`},children:[(0,y.jsxs)(`div`,{children:[(0,y.jsxs)(`div`,{style:S,children:[a(`table.busy`),` / `,a(`table.concurrency`)]}),(0,y.jsxs)(`div`,{style:{fontWeight:600,fontSize:18,fontVariantNumeric:`tabular-nums`},children:[e.busy,` / `,e.concurrency]})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:S,children:a(`busy.heartbeat`)}),(0,y.jsx)(`div`,{style:{fontSize:13,color:n?`var(--success)`:`var(--danger)`},children:l(e.beat)})]}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:S,children:a(`busy.rss`)}),(0,y.jsx)(`div`,{style:{fontSize:13},children:p(e.rss??0)})]})]}),(0,y.jsx)(`div`,{className:`progress-bar-track`,style:{marginBottom:`0.75rem`},children:(0,y.jsx)(`div`,{className:`progress-bar-fill`,style:{width:`${t}%`,background:x(t)}})}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`div`,{style:{...S,marginBottom:`0.25rem`},children:a(`table.queues`)}),(0,y.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`0.25rem`},children:e.queues.map(e=>(0,y.jsx)(`span`,{className:`badge badge-muted`,children:e},e))})]}),!r&&!e.embedded&&(0,y.jsxs)(`div`,{style:{display:`flex`,gap:`0.4rem`,marginTop:`0.85rem`},onClick:e=>e.stopPropagation(),children:[(0,y.jsx)(`button`,{className:`btn btn-sm`,disabled:E.isPending,onClick:()=>E.mutate({signal:`quiet`,scope:`one`,identity:e.identity}),children:a(`actions.quiet`)}),(0,y.jsx)(`button`,{className:`btn btn-sm btn-danger`,disabled:E.isPending,onClick:()=>D(a(`actions.scope_this_process`))&&E.mutate({signal:`stop`,scope:`one`,identity:e.identity}),children:a(`actions.stop`)})]})]},e.identity??`${e.hostname}-${e.pid}`)})})]},e.hostname)),(0,y.jsx)(g,{open:A!==null,onClose:()=>f(null),title:A?`${A.hostname} · PID ${A.pid}`:``,width:780,children:A&&(0,y.jsx)(C,{proc:A})})]})}export{T as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./useMutation-NUbe15ar.js";import{C as t,a as n,b as r,c as i,i as a,o,r as s,s as c}from"./index-DcfzJOIq.js";import{a as l,i as u,o as d}from"./utils-DDJC7tJV.js";import{n as f,t as p}from"./useSort-BPPxnBBo.js";import{t as m}from"./PageHeader-B-0cTQeM.js";import{t as h}from"./Modal-CvD-1IKA.js";var g=t(r(),1),_=i(),v={schedule:e=>e.schedule,klass:e=>e.klass,queue:e=>e.queue,last_fire:e=>e.last_fire_at,next_fire:e=>e.next_fire_at,status:e=>e.paused?`paused`:`active`};function y(){let t=c(),{data:r}=n(),i=r?.read_only??!1,[y,b]=(0,g.useState)(null);(0,g.useEffect)(()=>{document.title=`${a(`nav.cron`)} — Wurk`},[]);let{data:x,isLoading:S,isError:C}=o({queryKey:[`cron`],queryFn:()=>fetch(`/wurk/api/cron`).then(e=>e.json()),refetchInterval:15e3}),w=(e,t)=>fetch(`/wurk/api/cron/${e}/${t}`,{method:`POST`}),T=e({mutationFn:({lid:e,paused:t})=>w(e,t?`unpause`:`pause`),onSuccess:()=>t.invalidateQueries({queryKey:[`cron`]})}),E=e({mutationFn:e=>w(e,`enqueue`),onSuccess:()=>t.invalidateQueries({queryKey:[`cron`]})}),{data:D,isLoading:O,isError:k}=o({queryKey:[`cron-history`,y?.lid],queryFn:()=>fetch(`/wurk/api/cron/${y.lid}/history`).then(e=>e.json()).then(e=>e.history),enabled:y!==null}),{sorted:A,sort:j,toggle:M}=p(x??[],v);return S?(0,_.jsxs)(`div`,{children:[(0,_.jsx)(m,{icon:`fa-stopwatch`,title:a(`nav.cron`),summary:a(`summaries.cron`)}),(0,_.jsx)(s,{rows:8,cols:i?6:7})]}):C||!x?(0,_.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}):(0,_.jsxs)(`div`,{children:[(0,_.jsx)(m,{icon:`fa-stopwatch`,title:a(`nav.cron`),summary:a(`summaries.cron`),children:(0,_.jsx)(`span`,{className:`badge badge-muted`,children:x.length})}),x.length===0?(0,_.jsx)(`div`,{className:`empty-state`,children:a(`common.empty`)}):(0,_.jsx)(`div`,{className:`table-wrapper`,children:(0,_.jsxs)(`table`,{children:[(0,_.jsx)(`thead`,{children:(0,_.jsxs)(`tr`,{children:[(0,_.jsx)(f,{label:`Schedule`,sortKey:`schedule`,sort:j,onSort:M}),(0,_.jsx)(f,{label:a(`table.class`),sortKey:`klass`,sort:j,onSort:M}),(0,_.jsx)(f,{label:a(`table.queue`),sortKey:`queue`,sort:j,onSort:M}),(0,_.jsx)(f,{label:`Last fire`,sortKey:`last_fire`,sort:j,onSort:M}),(0,_.jsx)(f,{label:`Next fire`,sortKey:`next_fire`,sort:j,onSort:M}),(0,_.jsx)(f,{label:a(`table.status`),sortKey:`status`,sort:j,onSort:M}),!i&&(0,_.jsx)(`th`,{})]})}),(0,_.jsx)(`tbody`,{children:A.map(e=>(0,_.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>b(e),children:[(0,_.jsx)(`td`,{style:{fontFamily:`monospace`,fontSize:12},title:e.tz??void 0,children:e.schedule}),(0,_.jsx)(`td`,{title:e.klass,children:d(e.klass,32)}),(0,_.jsx)(`td`,{children:e.queue}),(0,_.jsx)(`td`,{style:{color:`var(--text-muted)`},children:e.last_fire_at?l(e.last_fire_at):`—`}),(0,_.jsx)(`td`,{style:{color:e.paused?`var(--text-muted)`:`var(--accent)`},children:e.paused?`—`:e.next_fire_at?l(e.next_fire_at):`—`}),(0,_.jsx)(`td`,{children:e.paused?(0,_.jsx)(`span`,{className:`badge badge-muted`,children:`paused`}):(0,_.jsx)(`span`,{className:`badge badge-success`,children:`active`})}),!i&&(0,_.jsx)(`td`,{onClick:e=>e.stopPropagation(),children:(0,_.jsxs)(`div`,{style:{display:`flex`,gap:`0.4rem`},children:[(0,_.jsx)(`button`,{className:`btn btn-sm`,disabled:T.isPending,onClick:()=>T.mutate({lid:e.lid,paused:e.paused}),children:e.paused?`Resume`:`Pause`}),(0,_.jsx)(`button`,{className:`btn btn-sm`,disabled:E.isPending,onClick:()=>E.mutate(e.lid),children:`Enqueue`})]})})]},e.lid))})]})}),(0,_.jsx)(h,{open:y!==null,onClose:()=>b(null),title:y?`${a(`cron.history_title`)} — ${d(y.klass,40)}`:a(`cron.history_title`),children:O?(0,_.jsx)(s,{rows:6,cols:2}):k?(0,_.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}):!D||D.length===0?(0,_.jsx)(`div`,{className:`empty-state`,children:a(`cron.no_history`)}):(0,_.jsx)(`div`,{className:`table-wrapper`,children:(0,_.jsxs)(`table`,{children:[(0,_.jsx)(`thead`,{children:(0,_.jsxs)(`tr`,{children:[(0,_.jsx)(`th`,{children:a(`cron.fired`)}),(0,_.jsx)(`th`,{children:a(`table.jid`)})]})}),(0,_.jsx)(`tbody`,{children:D.map(([e,t])=>(0,_.jsxs)(`tr`,{children:[(0,_.jsx)(`td`,{style:{color:`var(--text-muted)`},title:u(e),children:l(e)}),(0,_.jsx)(`td`,{style:{fontFamily:`monospace`,fontSize:12},children:t})]},t))})]})})})]})}export{y as default};
@@ -1 +0,0 @@
1
- import{C as e,b as t,c as n,g as r,i,n as a,o,r as s,t as c}from"./index-DcfzJOIq.js";import{n as l}from"./utils-DDJC7tJV.js";import{I as u,a as d,j as f,r as p,t as m,xt as h}from"./AreaChart-BrEBs9bV.js";var g=e(t(),1),_=e=>1-(1-e)**3,v=()=>typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;function y(e,t=700){let[n,r]=(0,g.useState)(0),i=(0,g.useRef)(0),a=(0,g.useRef)(null);return(0,g.useEffect)(()=>{if(v()||!Number.isFinite(e)){i.current=e,r(e);return}let n=i.current;if(n===e)return;let o=performance.now(),s=c=>{let l=Math.min((c-o)/t,1),u=n+(e-n)*_(l);i.current=u,r(u),l<1&&(a.current=requestAnimationFrame(s))};return a.current=requestAnimationFrame(s),()=>{a.current!==null&&cancelAnimationFrame(a.current)}},[e,t]),n}var b=n();function x({value:e}){let t=y(e);return(0,b.jsx)(b.Fragment,{children:Math.round(t).toLocaleString()})}function S(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}var C=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,desc_key:`dashboard.range_1h_desc`},{key:`24h`,bucket:`1m`,window:`24h`,desc_key:`dashboard.range_24h_desc`},{key:`7d`,bucket:`5m`,window:`7d`,desc_key:`dashboard.range_7d_desc`},{key:`30d`,bucket:`1h`,window:`30d`,desc_key:`dashboard.range_30d_desc`}],w=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function T({pct:e,goodWhenUp:t}){if(e===null)return(0,b.jsx)(`span`,{className:`obs-metric__sub`,children:i(`dashboard.vs_last_hour`)});let n=e>=0;return(0,b.jsxs)(`span`,{className:`obs-metric__sub`,children:[(0,b.jsxs)(`span`,{className:n===t?`up`:`down`,children:[n?`▲`:`▼`,` `,n?`+`:``,e,`%`]}),` `,i(`dashboard.vs_last_hour`)]})}function E({sse:e}){let[t,n]=(0,g.useState)(0),_=C[t];(0,g.useEffect)(()=>{document.title=`${i(`nav.dashboard`)} — Wurk`},[]);let{data:v,isLoading:y,isError:E}=o({queryKey:[`stats`],queryFn:()=>fetch(`/wurk/api/stats`).then(e=>e.json()),enabled:!e.connected,refetchInterval:e.connected?!1:5e3}),{data:D,isPending:O}=o({queryKey:[`history`,_.bucket,_.window],queryFn:()=>fetch(`/wurk/api/history/${_.bucket}?window=${_.window}`).then(e=>e.json()),refetchInterval:3e4}),k=e.stats??v??null,A=(D?.series??[]).map(e=>({...e,label:w(e.at,_.bucket)})),j=`slice`in _?_.slice:void 0,M=j?A.slice(-j):A,N=M.some(e=>e.processed>0||e.failed>0);if(y&&!k)return(0,b.jsxs)(`div`,{className:`obs`,children:[(0,b.jsx)(a,{count:4}),(0,b.jsx)(s,{rows:6,cols:4})]});if(E&&!k)return(0,b.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:i(`common.error`)});if(!k)return(0,b.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)});let P=[{key:`processed`,label:i(`dashboard.processed`),value:k.processed,icon:`fa-circle-check`,to:`/metrics`,sub:(0,b.jsx)(T,{pct:S(A,`processed`),goodWhenUp:!0})},{key:`failed`,label:i(`dashboard.failed`),value:k.failed,icon:`fa-triangle-exclamation`,to:`/retries`,sub:(0,b.jsx)(T,{pct:S(A,`failed`),goodWhenUp:!1})},{key:`expired`,label:i(`dashboard.expired`),value:k.expired,icon:`fa-ban`,to:`/dead`,sub:(0,b.jsx)(`span`,{className:`obs-metric__sub`,children:k.expired===0?i(`dashboard.stable_threshold`):i(`dashboard.above_threshold`)})},{key:`busy`,label:i(`dashboard.busy`),value:k.busy,icon:`fa-spinner`,to:`/busy`,sub:(0,b.jsx)(`span`,{className:`obs-metric__sub`,children:k.busy===0?i(`dashboard.system_idle`):i(`dashboard.processing`)})}],F=[{key:`enqueued`,label:i(`dashboard.enqueued`),value:k.enqueued,to:`/queues`},{key:`retries`,label:i(`dashboard.retries`),value:k.retries,to:`/retries`},{key:`scheduled`,label:i(`dashboard.scheduled`),value:k.scheduled,to:`/scheduled`},{key:`dead`,label:i(`dashboard.dead`),value:k.dead,to:`/dead`}];return(0,b.jsxs)(`div`,{className:`obs`,children:[(0,b.jsx)(`div`,{className:`obs-metrics`,children:P.map(e=>(0,b.jsxs)(r,{className:`obs-card obs-metric obs-card--link`,to:e.to,children:[(0,b.jsxs)(`div`,{className:`obs-metric__head`,children:[(0,b.jsx)(`span`,{className:`obs-mono`,children:e.label}),(0,b.jsx)(`i`,{className:`fa-solid ${e.icon} obs-metric__icon`,"aria-hidden":`true`})]}),(0,b.jsx)(`span`,{className:`obs-metric__value`,children:(0,b.jsx)(x,{value:e.value})}),e.sub,(0,b.jsx)(`i`,{className:`fa-solid fa-arrow-right obs-card__go`,"aria-hidden":`true`})]},e.key))}),(0,b.jsxs)(`div`,{className:`obs-card obs-panel`,children:[(0,b.jsxs)(`div`,{className:`obs-panel__head`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`h2`,{className:`obs-panel__title`,children:i(`dashboard.performance_insight`)}),(0,b.jsx)(`p`,{className:`obs-panel__sub`,children:i(`dashboard.perf_subtitle`,{range:i(_.desc_key)})})]}),(0,b.jsxs)(`div`,{className:`obs-panel__controls`,children:[(0,b.jsx)(`div`,{className:`obs-seg`,role:`tablist`,"aria-label":`Time range`,children:C.map((e,r)=>(0,b.jsx)(`button`,{role:`tab`,"aria-selected":r===t,className:r===t?`is-active`:``,onClick:()=>n(r),children:e.key},e.key))}),(0,b.jsxs)(`div`,{className:`obs-legend`,children:[(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`i`,{className:`dot dot--processed`}),` `,i(`dashboard.processed`)]}),(0,b.jsxs)(`span`,{children:[(0,b.jsx)(`i`,{className:`dot dot--failed`}),` `,i(`dashboard.failed`)]})]})]})]}),(0,b.jsx)(`div`,{className:`obs-chartbox`,children:O?(0,b.jsx)(c,{height:320}):N?(0,b.jsx)(h,{width:`100%`,height:320,children:(0,b.jsxs)(m,{data:M,margin:{top:8,right:8,left:0,bottom:0},children:[(0,b.jsx)(`defs`,{children:(0,b.jsxs)(`linearGradient`,{id:`obsProcessed`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,b.jsx)(`stop`,{offset:`0%`,stopColor:`#fafafa`,stopOpacity:.22}),(0,b.jsx)(`stop`,{offset:`95%`,stopColor:`#fafafa`,stopOpacity:0})]})}),(0,b.jsx)(f,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.06)`}),(0,b.jsx)(p,{dataKey:`label`,tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,minTickGap:64,interval:`preserveStartEnd`}),(0,b.jsx)(u,{contentStyle:{background:`#161618`,border:`1px solid #272729`,borderRadius:6,fontSize:12,fontFamily:`JetBrains Mono, monospace`},labelStyle:{color:`#a1a1aa`},cursor:{stroke:`rgba(255,255,255,0.25)`,strokeWidth:1}}),(0,b.jsx)(d,{type:`monotone`,dataKey:`processed`,name:i(`dashboard.processed`),stroke:`#fafafa`,strokeWidth:2,fill:`url(#obsProcessed)`,dot:!1,activeDot:{r:4,fill:`#fafafa`,stroke:`#09090b`,strokeWidth:2},animationDuration:1100,animationEasing:`ease-out`}),(0,b.jsx)(d,{type:`monotone`,dataKey:`failed`,name:i(`dashboard.failed`),stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`transparent`,dot:!1,activeDot:{r:3,fill:`#a1a1aa`,stroke:`#09090b`,strokeWidth:2},animationDuration:1100,animationBegin:250,animationEasing:`ease-out`})]})}):(0,b.jsx)(`div`,{className:`empty-state`,style:{height:320,display:`grid`,placeItems:`center`},children:i(`dashboard.no_history`)})})]}),(0,b.jsx)(`div`,{className:`obs-stats`,children:F.map(e=>(0,b.jsxs)(r,{className:`obs-card obs-stat obs-card--link`,to:e.to,children:[(0,b.jsx)(`span`,{className:`obs-mono`,children:e.label}),(0,b.jsx)(`span`,{className:`obs-stat__value`,children:(0,b.jsx)(x,{value:e.value})}),(0,b.jsx)(`i`,{className:`fa-solid fa-arrow-right obs-card__go`,"aria-hidden":`true`})]},e.key))}),(0,b.jsxs)(`div`,{className:`obs-card obs-table`,children:[(0,b.jsxs)(`div`,{className:`obs-table__head`,children:[(0,b.jsx)(`h2`,{className:`obs-table__title`,children:i(`table.queues`)}),(0,b.jsxs)(r,{className:`obs-table__link`,to:`/queues`,children:[`View All `,(0,b.jsx)(`i`,{className:`fa-solid fa-arrow-right`,"aria-hidden":`true`})]})]}),k.queues.length===0?(0,b.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)}):(0,b.jsx)(`div`,{className:`obs-tablescroll`,children:(0,b.jsxs)(`table`,{children:[(0,b.jsx)(`thead`,{children:(0,b.jsxs)(`tr`,{children:[(0,b.jsx)(`th`,{children:`Name`}),(0,b.jsx)(`th`,{children:i(`table.size`)}),(0,b.jsx)(`th`,{children:i(`table.latency`)}),(0,b.jsx)(`th`,{children:i(`table.status`)})]})}),(0,b.jsx)(`tbody`,{children:k.queues.map(e=>(0,b.jsxs)(`tr`,{children:[(0,b.jsx)(`td`,{style:{fontWeight:500,color:`var(--obs-text)`},children:e.name}),(0,b.jsx)(`td`,{children:(0,b.jsx)(x,{value:e.size})}),(0,b.jsx)(`td`,{title:`${e.latency.toFixed(3)}s`,children:l(e.latency)}),(0,b.jsx)(`td`,{children:e.paused?(0,b.jsx)(`span`,{className:`obs-chip obs-chip--paused`,children:i(`dashboard.paused`)}):(0,b.jsx)(`span`,{className:`obs-chip obs-chip--active`,children:i(`dashboard.active`)})})]},e.name))})]})})]}),(0,b.jsxs)(`div`,{className:`obs-card obs-cta`,children:[(0,b.jsx)(`span`,{className:`obs-cta__icon`,children:(0,b.jsx)(`i`,{className:`fa-solid fa-bolt`,"aria-hidden":`true`})}),(0,b.jsx)(`h2`,{className:`obs-cta__title`,children:i(`dashboard.strapline`)}),(0,b.jsx)(`p`,{className:`obs-cta__text`,children:i(`dashboard.tagline`)}),(0,b.jsxs)(`div`,{className:`obs-cta__actions`,children:[(0,b.jsxs)(`a`,{className:`obs-btn obs-btn--primary`,href:`https://developerz-ai.github.io/wurk/`,target:`_blank`,rel:`noreferrer`,children:[(0,b.jsx)(`i`,{className:`fa-solid fa-download`,"aria-hidden":`true`}),` `,i(`dashboard.install`)]}),(0,b.jsxs)(`a`,{className:`obs-btn obs-btn--ghost`,href:`https://github.com/developerz-ai/wurk/wiki`,target:`_blank`,rel:`noreferrer`,children:[(0,b.jsx)(`i`,{className:`fa-solid fa-book`,"aria-hidden":`true`}),` `,i(`dashboard.docs`)]})]})]})]})}export{E as default};
@@ -1 +0,0 @@
1
- import{C as e,a as t,b as n,c as r,i,o as a,r as o}from"./index-DcfzJOIq.js";import{a as s,i as c,o as l,t as u}from"./utils-DDJC7tJV.js";import{n as d,t as f}from"./usePageParam-BDV1DCDQ.js";import{n as p,t as m}from"./useSort-BPPxnBBo.js";import{t as h}from"./PageHeader-B-0cTQeM.js";import{t as g}from"./ArgsValue-CiJzEwxS.js";import{t as _}from"./JobDetailModal-DKYvp6QS.js";import{i as v,n as y,r as b,t as x}from"./useJobSetActions-BCW6DHSe.js";var S=e(n(),1),C=r(),w=25,T={jid:e=>e.jid,klass:e=>e.klass,args:e=>u(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,failed_at:e=>e.at},E=[{cmd:`retry`,label:i(`actions.retry`)},{cmd:`delete`,label:i(`actions.delete`),danger:!0}];function D(){let[e,n]=f(),[r,D]=(0,S.useState)(null),[O,k]=(0,S.useState)(null),{data:A}=t(),j=A?.read_only??!1,M=b(),{single:N,bulk:P,all:F}=y(`dead`),I=N.isPending||P.isPending||F.isPending;(0,S.useEffect)(()=>{document.title=`${i(`nav.dead`)} — Wurk`},[]);let{data:L,isLoading:R,isError:z}=a({queryKey:[`dead`,e],queryFn:()=>fetch(`/wurk/api/dead?page=${e-1}&count=${w}`).then(e=>e.json())}),{sorted:B,sort:V,toggle:H}=m(L?.entries??[],T),U=B.map(x);if(R)return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-skull`,title:i(`nav.dead`),summary:i(`summaries.dead`)}),(0,C.jsx)(o,{rows:8,cols:7})]});if(z||!L)return(0,C.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:i(`common.error`)});let W=U.length>0&&U.every(e=>M.selected.has(e));return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-skull`,title:i(`nav.dead`),summary:i(`summaries.dead`),children:(0,C.jsx)(`span`,{className:`badge badge-danger`,children:L.total.toLocaleString()})}),B.length===0?(0,C.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)}):(0,C.jsxs)(C.Fragment,{children:[!j&&(0,C.jsx)(v,{bulk:E,all:E,selectedCount:M.count,total:L.total,pending:I,onBulk:e=>P.mutate({keys:[...M.selected],cmd:e},{onSuccess:M.clear}),onAll:e=>F.mutate(e,{onSuccess:M.clear})}),(0,C.jsx)(`div`,{className:`table-wrapper`,children:(0,C.jsxs)(`table`,{children:[(0,C.jsx)(`thead`,{children:(0,C.jsxs)(`tr`,{children:[!j&&(0,C.jsx)(`th`,{className:`row-action`,children:(0,C.jsx)(`input`,{type:`checkbox`,checked:W,onChange:()=>M.toggleAll(U),"aria-label":`Select all`})}),(0,C.jsx)(p,{label:i(`table.jid`),sortKey:`jid`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.class`),sortKey:`klass`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.args`),sortKey:`args`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.error`),sortKey:`error_class`,sort:V,onSort:H}),(0,C.jsx)(p,{label:`Message`,sortKey:`error_message`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.failed_at`),sortKey:`failed_at`,sort:V,onSort:H})]})}),(0,C.jsx)(`tbody`,{children:B.map(e=>{let t=u(e.args),n=x(e);return(0,C.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>{D(e),k(n)},children:[!j&&(0,C.jsx)(`td`,{className:`row-action`,onClick:e=>e.stopPropagation(),children:(0,C.jsx)(`input`,{type:`checkbox`,checked:M.selected.has(n),onChange:()=>M.toggle(n),"aria-label":`Select job`})}),(0,C.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:l(e.jid,12)}),(0,C.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,C.jsx)(`td`,{children:(0,C.jsx)(g,{str:t,max:40})}),(0,C.jsx)(`td`,{title:e.error_class??``,style:{color:`var(--danger)`},children:l(e.error_class,25)}),(0,C.jsx)(`td`,{title:e.error_message??``,children:l(e.error_message,40)}),(0,C.jsx)(`td`,{title:c(e.at),children:s(e.at)})]},e.jid)})})]})}),(0,C.jsx)(d,{page:e,total:L.total,count:w,onChange:n})]}),(0,C.jsx)(_,{entry:r,atLabel:i(`table.failed_at`),actions:j?void 0:E,pending:N.isPending,onAction:e=>O&&N.mutate({key:O,cmd:e},{onSuccess:()=>{D(null),k(null)}}),onClose:()=>{D(null),k(null)}})]})}export{D as default};
@@ -1 +0,0 @@
1
- import{C as e,_ as t,a as n,b as r,c as i,i as a,r as o,t as s}from"./index-DcfzJOIq.js";import{t as c}from"./PageHeader-B-0cTQeM.js";var l=e(r(),1),u=i();function d(){let{tab:e=``}=t(),{data:r}=n(),i=e=>e.replace(/\/+$/,``),a=r?.custom_tabs?.find(t=>i(t.path)===i(e)),o=a?.name??e;return a?.ext_name?(0,u.jsx)(f,{extName:a.ext_name,indexPath:e,title:o},a.ext_name):(0,u.jsx)(p,{tab:e,title:o})}function f({extName:e,indexPath:t,title:n}){let r=`/wurk/ext/${e}/`,[i,d]=(0,l.useState)(null),[f,p]=(0,l.useState)(!1),m=(0,l.useRef)(0),h=(0,l.useCallback)(async(e,t)=>{let n=++m.current;try{let i=await fetch(r+e,t),a=await i.text();if(n!==m.current)return;p(!i.ok&&i.status!==404),d(a)}catch{n===m.current&&p(!0)}},[r]);return(0,l.useEffect)(()=>{h(t.replace(/\/+$/,``))},[h,t]),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c,{icon:`fa-puzzle-piece`,title:n,summary:a(`extension.summary`)}),f&&(0,u.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}),i===null&&!f&&(0,u.jsxs)(`div`,{className:`skeleton-stack`,children:[(0,u.jsx)(s,{height:`1.5rem`,width:`40%`}),(0,u.jsx)(o,{rows:6,cols:4})]}),i!==null&&!f&&(0,u.jsx)(`div`,{className:`card ext-view`,onClick:e=>{let t=e.target.closest(`a`);if(!t?.getAttribute(`href`))return;let n=new URL(t.href,window.location.origin);n.origin!==window.location.origin||!n.pathname.startsWith(r)||(e.preventDefault(),h(n.pathname.slice(r.length)+n.search))},onSubmit:e=>{let t=e.target,n=new URL(t.getAttribute(`action`)||window.location.href,window.location.origin);if(n.origin!==window.location.origin||!n.pathname.startsWith(r))return;e.preventDefault();let i=new FormData(t);if((t.method||`get`).toUpperCase()===`GET`){let e=new URLSearchParams(Array.from(i.entries())).toString();h(`${n.pathname.slice(r.length)}${e?`?${e}`:``}`)}else h(n.pathname.slice(r.length)+n.search,{method:`POST`,body:i})},dangerouslySetInnerHTML:{__html:i}})]})}function p({tab:e,title:t}){let n=`/wurk/${e}?wurk_ext_embed=1`;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c,{icon:`fa-puzzle-piece`,title:t,summary:a(`extension.summary`),children:(0,u.jsxs)(`a`,{className:`btn btn-sm`,href:`/wurk/${e}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,u.jsx)(`i`,{className:`fa-solid fa-arrow-up-right-from-square`,style:{marginInlineEnd:`0.4rem`}}),a(`extension.open`)]})}),(0,u.jsx)(`iframe`,{title:t,src:n,style:{width:`100%`,height:`calc(100vh - 11rem)`,border:`1px solid var(--border)`,borderRadius:`var(--radius)`,background:`var(--surface)`}})]})}export{d as default};
@@ -1,2 +0,0 @@
1
- import{c as e,i as t}from"./index-DcfzJOIq.js";import{a as n,i as r,t as i}from"./utils-DDJC7tJV.js";import{t as a}from"./Modal-CvD-1IKA.js";var o=e();function s({label:e,children:t,mono:n}){return(0,o.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,o.jsx)(`span`,{style:{fontSize:11,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:e}),(0,o.jsx)(`span`,{style:{fontSize:13,fontFamily:n?`ui-monospace, monospace`:void 0,wordBreak:`break-word`},children:t})]})}function c({entry:e,atLabel:c,actions:l,onAction:u,pending:d=!1,onClose:f}){let p=l&&l.length>0&&u?(0,o.jsx)(`div`,{style:{display:`flex`,gap:`0.5rem`,justifyContent:`flex-end`,flexWrap:`wrap`},children:l.map(e=>(0,o.jsx)(`button`,{className:`btn btn-sm${e.danger?` btn-danger`:``}`,disabled:d,onClick:()=>{d||e.danger&&!window.confirm(t(`actions.confirm`,{action:e.label,scope:t(`job.detail`).toLowerCase()}))||u(e.cmd)},children:e.label},e.cmd))}):void 0;return(0,o.jsx)(a,{open:e!==null,onClose:f,title:e?.klass??t(`job.detail`),width:680,footer:p,children:e&&(0,o.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`1rem`},children:[(0,o.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(160px, 1fr))`,gap:`0.9rem`},children:[(0,o.jsx)(s,{label:t(`job.class`),children:e.klass}),e.queue&&(0,o.jsx)(s,{label:t(`job.queue`),children:e.queue}),(0,o.jsx)(s,{label:t(`job.jid`),mono:!0,children:e.jid}),typeof e.retry_count==`number`&&(0,o.jsx)(s,{label:t(`job.retries`),children:e.retry_count}),e.enqueued_at!=null&&(0,o.jsxs)(s,{label:t(`job.enqueued`),mono:!0,children:[r(e.enqueued_at),` (`,n(e.enqueued_at),`)`]}),e.at!=null&&(0,o.jsxs)(s,{label:c??t(`job.at`),mono:!0,children:[r(e.at),` (`,n(e.at),`)`]})]}),(0,o.jsx)(s,{label:t(`job.args`),mono:!0,children:i(e.args)===`[]`||i(e.args)===``?(0,o.jsx)(`span`,{style:{color:`var(--text-muted)`},children:`—`}):(0,o.jsx)(`pre`,{style:{margin:0,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:i(e.args)})}),(e.error_class||e.error_message)&&(0,o.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,o.jsx)(`span`,{style:{fontSize:11,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.04em`},children:t(`job.error`)}),(0,o.jsxs)(`span`,{style:{fontSize:13,color:`var(--danger)`,wordBreak:`break-word`},children:[e.error_class,e.error_message?`: ${e.error_message}`:``]})]}),e.error_backtrace&&e.error_backtrace.length>0&&(0,o.jsx)(s,{label:t(`job.backtrace`),children:(0,o.jsx)(`pre`,{className:`job-backtrace`,children:e.error_backtrace.join(`
2
- `)})}),e.custom_rows&&e.custom_rows.length>0&&(0,o.jsx)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(160px, 1fr))`,gap:`0.9rem`},children:e.custom_rows.map(([e,t],n)=>(0,o.jsx)(s,{label:e,children:t},`${e}-${n}`))})]})})}export{c as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./useMutation-NUbe15ar.js";import{C as t,a as n,b as r,c as i,i as a,o,r as s,s as c}from"./index-DcfzJOIq.js";import{n as l,t as u}from"./usePageParam-BDV1DCDQ.js";import{n as d,t as f}from"./useSort-BPPxnBBo.js";import{t as p}from"./PageHeader-B-0cTQeM.js";var m=t(r(),1),h=i(),g=25,_={name:e=>e.name,type:e=>e.type,used:e=>e.status?.used??0,limit:e=>e.status?.limit??null,usage:e=>{let t=e.status?.used??0,n=e.status?.limit??null;return n&&n>0?t/n:0},status:e=>e.status?.[`available?`]??!0?`available`:`exhausted`};function v(){let t=c(),{data:r}=n(),i=r?.read_only??!1,[v,y]=u();(0,m.useEffect)(()=>{document.title=`${a(`nav.limiters`)} — Wurk`},[]);let{data:b,isLoading:x,isError:S}=o({queryKey:[`limiters`,v],queryFn:()=>fetch(`/wurk/api/limiters?page=${v-1}&count=${g}`).then(e=>e.json()),refetchInterval:5e3}),C=e({mutationFn:e=>fetch(`/wurk/api/limiters/${encodeURIComponent(e)}/reset`,{method:`POST`}),onSuccess:()=>t.invalidateQueries({queryKey:[`limiters`]})}),{sorted:w,sort:T,toggle:E}=f(b?.limiters??[],_);return x?(0,h.jsxs)(`div`,{children:[(0,h.jsx)(p,{icon:`fa-gauge`,title:a(`nav.limiters`),summary:a(`summaries.limiters`)}),(0,h.jsx)(s,{rows:8,cols:i?6:7})]}):S||!b?(0,h.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}):(0,h.jsxs)(`div`,{children:[(0,h.jsx)(p,{icon:`fa-gauge`,title:a(`nav.limiters`),summary:a(`summaries.limiters`),children:(0,h.jsx)(`span`,{className:`badge badge-muted`,children:b.total.toLocaleString()})}),w.length===0?(0,h.jsx)(`div`,{className:`empty-state`,children:a(`common.empty`)}):(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(`div`,{className:`table-wrapper`,children:(0,h.jsxs)(`table`,{children:[(0,h.jsx)(`thead`,{children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(d,{label:`Name`,sortKey:`name`,sort:T,onSort:E}),(0,h.jsx)(d,{label:`Type`,sortKey:`type`,sort:T,onSort:E}),(0,h.jsx)(d,{label:`Used`,sortKey:`used`,sort:T,onSort:E}),(0,h.jsx)(d,{label:`Limit`,sortKey:`limit`,sort:T,onSort:E}),(0,h.jsx)(d,{label:`Usage`,sortKey:`usage`,sort:T,onSort:E}),(0,h.jsx)(d,{label:`Status`,sortKey:`status`,sort:T,onSort:E}),!i&&(0,h.jsx)(`th`,{})]})}),(0,h.jsx)(`tbody`,{children:w.map(e=>{let t=e.status,n=t?.used??0,r=t?.limit??null,a=r&&r>0?Math.min(n/r*100,100):0,o=a>90?`var(--danger)`:a>70?`var(--warning)`:`var(--success)`,s=t?.[`available?`]??!0,c=t?Object.entries(t).filter(([e])=>![`used`,`limit`,`reset_at`,`available?`].includes(e)).map(([e,t])=>`${e}=${t}`).join(` `):``;return(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`td`,{style:{fontWeight:500},title:e.name,children:e.name}),(0,h.jsx)(`td`,{children:(0,h.jsx)(`span`,{className:`badge badge-accent`,children:e.type})}),(0,h.jsx)(`td`,{style:{fontVariantNumeric:`tabular-nums`},title:c,children:n.toLocaleString()}),(0,h.jsx)(`td`,{style:{fontVariantNumeric:`tabular-nums`},children:r==null?`∞`:r.toLocaleString()}),(0,h.jsx)(`td`,{style:{width:160},children:r==null?(0,h.jsx)(`span`,{style:{color:`var(--text-muted)`},children:`—`}):(0,h.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,h.jsx)(`div`,{className:`progress-bar-track`,style:{flex:1},children:(0,h.jsx)(`div`,{className:`progress-bar-fill`,style:{width:`${a}%`,background:o}})}),(0,h.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`,minWidth:36},children:[Math.round(a),`%`]})]})}),(0,h.jsx)(`td`,{children:s?(0,h.jsx)(`span`,{className:`badge badge-success`,children:`available`}):(0,h.jsx)(`span`,{className:`badge badge-danger`,children:`exhausted`})}),!i&&(0,h.jsx)(`td`,{children:(0,h.jsx)(`button`,{className:`btn btn-sm`,disabled:C.isPending,onClick:()=>C.mutate(e.name),children:`Reset`})})]},e.name)})})]})}),(0,h.jsx)(l,{page:v,total:b.total,count:g,onChange:y})]})]})}export{v as default};
@@ -1,7 +0,0 @@
1
- import{C as e,b as t,c as n,i as r,o as i,t as a,y as o}from"./index-DcfzJOIq.js";import{n as s,o as c}from"./utils-DDJC7tJV.js";import{$ as l,$t as u,A as d,At as f,B as p,Bt as m,C as h,Ct as g,D as _,Dt as v,E as y,Et as b,F as x,Ft as S,G as C,Gt as ee,H as w,Ht as T,I as E,It as te,J as D,Jt as ne,K as O,Kt as k,L as re,Lt as A,M as ie,Mt as ae,N as oe,Nt as se,O as ce,Ot as le,P as ue,Pt as de,Q as fe,Qt as pe,R as me,Rt as j,S as he,St as M,T as ge,Tt as _e,U as ve,Ut as ye,V as be,Vt as N,W as P,Wt as F,X as xe,Xt as Se,Y as I,Yt as Ce,Z as we,Zt as Te,_ as Ee,_t as De,a as Oe,an as ke,at as Ae,b as je,bt as Me,c as Ne,ct as Pe,d as Fe,dt as Ie,en as Le,et as Re,f as ze,ft as Be,g as Ve,gt as He,h as Ue,ht as L,i as We,in as Ge,it as Ke,j as qe,jt as Je,k as Ye,kt as Xe,l as Ze,lt as Qe,m as $e,mt as et,n as tt,nn as nt,nt as rt,o as R,ot as it,p as at,pt as ot,q as st,qt as z,r as ct,rn as lt,rt as ut,s as B,st as dt,t as ft,tn as pt,tt as mt,u as ht,ut as gt,v as _t,vt,w as yt,wt as bt,x as xt,xt as St,y as Ct,yt as wt,z as Tt,zt as V}from"./AreaChart-BrEBs9bV.js";var Et=Math.cos,Dt=Math.sin,H=Math.sqrt,U=Math.PI;U/2;var Ot=2*U,kt={draw(e,t){let n=H(t/U);e.moveTo(n,0),e.arc(0,0,n,0,Ot)}},At={draw(e,t){let n=H(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},jt=H(1/3),Mt=jt*2,Nt={draw(e,t){let n=H(t/Mt),r=n*jt;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Pt={draw(e,t){let n=H(t),r=-n/2;e.rect(r,r,n,n)}},Ft=.8908130915292852,It=Dt(U/10)/Dt(7*U/10),Lt=Dt(Ot/10)*It,Rt=-Et(Ot/10)*It,zt={draw(e,t){let n=H(t*Ft),r=Lt*n,i=Rt*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=Ot*t/5,o=Et(a),s=Dt(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},Bt=H(3),Vt={draw(e,t){let n=-H(t/(Bt*3));e.moveTo(0,n*2),e.lineTo(-Bt*n,-n),e.lineTo(Bt*n,-n),e.closePath()}},W=-.5,G=H(3)/2,Ht=1/H(12),Ut=(Ht/2+1)*3,Wt={draw(e,t){let n=H(t/Ut),r=n/2,i=n*Ht,a=r,o=n*Ht+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(W*r-G*i,G*r+W*i),e.lineTo(W*a-G*o,G*a+W*o),e.lineTo(W*s-G*c,G*s+W*c),e.lineTo(W*r+G*i,W*i-G*r),e.lineTo(W*a+G*o,W*o-G*a),e.lineTo(W*s+G*c,W*c-G*s),e.closePath()}};function Gt(e,t){let n=null,r=pe(i);e=typeof e==`function`?e:u(e||kt),t=typeof t==`function`?t:u(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:u(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:u(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}var K=e(t()),Kt=[`type`,`size`,`sizeType`];function qt(){return qt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qt.apply(null,arguments)}function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Yt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Jt(Object(n),!0).forEach(function(t){Xt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Xt(e,t,n){return(t=Zt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zt(e){var t=Qt(e,`string`);return typeof t==`symbol`?t:t+``}function Qt(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function $t(e,t){if(e==null)return{};var n,r,i=en(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function en(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var tn={symbolCircle:kt,symbolCross:At,symbolDiamond:Nt,symbolSquare:Pt,symbolStar:zt,symbolTriangle:Vt,symbolWye:Wt},nn=Math.PI/180,rn=e=>tn[`symbol${Se(e)}`]||kt,an=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*nn;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},on=(e,t)=>{tn[`symbol${Se(e)}`]=t},sn=e=>{var t=e.type,n=t===void 0?`circle`:t,r=e.size,i=r===void 0?64:r,a=e.sizeType,o=a===void 0?`area`:a,s=Yt(Yt({},$t(e,Kt)),{},{type:n,size:i,sizeType:o}),c=`circle`;typeof n==`string`&&(c=n);var l=()=>{var e=rn(c),t=Gt().type(e).size(an(i,o,c))();if(t!==null)return t},u=s.className,d=s.cx,f=s.cy,p=pt(s);return z(d)&&z(f)&&z(i)?K.createElement(`path`,qt({},p,{className:Ge(`recharts-symbols`,u),transform:`translate(${d}, ${f})`,d:l()})):null};sn.registerSymbol=on;function cn(){return cn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},cn.apply(null,arguments)}function ln(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function un(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ln(Object(n),!0).forEach(function(t){dn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ln(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function dn(e,t,n){return(t=fn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fn(e){var t=pn(e,`string`);return typeof t==`symbol`?t:t+``}function pn(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var q=32,mn={align:`center`,iconSize:14,inactiveColor:`#ccc`,layout:`horizontal`,verticalAlign:`middle`,labelStyle:{}};function hn(e){if(typeof e==`object`&&e&&`strokeDasharray`in e)return String(e.strokeDasharray)}function gn(e){var t=e.data,n=e.iconType,r=e.inactiveColor,i=q/2,a=q/6,o=q/3,s=t.inactive?r:t.color,c=n??t.type;if(c===`none`)return null;if(c===`plainline`)return K.createElement(`line`,{strokeWidth:4,fill:`none`,stroke:s,strokeDasharray:hn(t.payload),x1:0,y1:i,x2:q,y2:i,className:`recharts-legend-icon`});if(c===`line`)return K.createElement(`path`,{strokeWidth:4,fill:`none`,stroke:s,d:`M0,${i}h${o}
2
- A${a},${a},0,1,1,${2*o},${i}
3
- H${q}M${2*o},${i}
4
- A${a},${a},0,1,1,${o},${i}`,className:`recharts-legend-icon`});if(c===`rect`)return K.createElement(`path`,{stroke:`none`,fill:s,d:`M0,${q/8}h${q}v${q*3/4}h${-q}z`,className:`recharts-legend-icon`});if(K.isValidElement(t.legendIcon)){var l=un({},t);return delete l.legendIcon,K.cloneElement(t.legendIcon,l)}return K.createElement(sn,{fill:s,cx:i,cy:i,size:q,sizeType:`diameter`,type:c})}function _n(e){var t=e.payload,n=e.iconSize,r=e.layout,i=e.formatter,a=e.inactiveColor,o=e.iconType,s=e.labelStyle,c={x:0,y:0,width:q,height:q},l={display:r===`horizontal`?`inline-block`:`block`,marginRight:10},u={display:`inline-block`,verticalAlign:`middle`,marginRight:4};return t.map((t,r)=>{var d=t.formatter||i,f=Ge({"recharts-legend-item":!0,[`legend-item-${r}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var p=typeof s==`object`?un({},s):{};p.color=t.inactive?a:p.color||t.color;var m=d?d(t.value,t,r):t.value;return K.createElement(`li`,cn({className:f,style:l,key:`legend-item-${r}`},T(e,t,r)),K.createElement(Le,{width:n,height:n,viewBox:c,style:u,"aria-label":t.value==null?`legend icon`:`${t.value} legend icon`},K.createElement(gn,{data:t,iconType:o,inactiveColor:a})),K.createElement(`span`,{className:`recharts-legend-item-text`,style:p},m))})}var vn=e=>{var t=N(e,mn),n=t.payload,r=t.layout,i=t.align;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return K.createElement(`ul`,{className:`recharts-default-legend`,style:a},K.createElement(_n,cn({},t,{payload:n})))};function yn(){return V(te)}var bn=o(),xn=[`contextPayload`];function Sn(){return Sn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sn.apply(null,arguments)}function Cn(e,t){return On(e)||Dn(e,t)||Tn(e,t)||wn()}function wn(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
5
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Tn(e,t){if(e){if(typeof e==`string`)return En(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?En(e,t):void 0}}function En(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Dn(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function On(e){if(Array.isArray(e))return e}function kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function J(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?kn(Object(n),!0).forEach(function(t){An(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function An(e,t,n){return(t=jn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function jn(e){var t=Mn(e,`string`);return typeof t==`symbol`?t:t+``}function Mn(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Nn(e,t){if(e==null)return{};var n,r,i=Pn(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Pn(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Fn(e){return e.value}function In(e){var t=e.contextPayload,n=Nn(e,xn),r=m(t,e.payloadUniqBy,Fn),i=J(J({},n),{},{payload:r});return K.isValidElement(e.content)?K.cloneElement(e.content,i):typeof e.content==`function`?K.createElement(e.content,i):K.createElement(vn,i)}function Ln(e,t,n,r,i,a){var o=t.layout,s=t.align,c=t.verticalAlign,l,u;return(!e||(e.left===void 0||e.left===null)&&(e.right===void 0||e.right===null))&&(l=s===`center`&&o===`vertical`?{left:((r||0)-a.width)/2}:s===`right`?{right:n&&n.right||0}:{left:n&&n.left||0}),(!e||(e.top===void 0||e.top===null)&&(e.bottom===void 0||e.bottom===null))&&(u=c===`middle`?{top:((i||0)-a.height)/2}:c===`bottom`?{bottom:n&&n.bottom||0}:{top:n&&n.top||0}),J(J({},l),u)}function Rn(e){var t=e.align,n=e.layout,r=e.verticalAlign,i=e.itemSorter,a=j();return(0,K.useLayoutEffect)(()=>{a(ot({align:t,layout:n,verticalAlign:r,itemSorter:i}))},[a,t,n,r,i]),null}function zn(e){var t=e.width,n=e.height,r=j();return(0,K.useLayoutEffect)(()=>{r(et({width:t,height:n}))},[r,t,n]),(0,K.useLayoutEffect)(()=>()=>{r(et({width:0,height:0}))},[r]),null}function Bn(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var Vn={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,labelStyle:{},layout:`horizontal`,verticalAlign:`bottom`};function Hn(e){var t=N(e,Vn),n=yn(),r=ke(),i=Me(),a=t.width,o=t.height,s=t.wrapperStyle,c=t.portal,l=Cn(S([n]),2),u=l[0],d=l[1],f=wt(),p=De();if(f==null||p==null)return null;var m=f-(i?.left||0)-(i?.right||0),h=Bn(t.layout,o,a,m),g=c?s:J(J({position:`absolute`,width:h?.width||a||`auto`,height:h?.height||o||`auto`},Ln(s,t,i,f,p,u)),s),_=c??r;return _==null||n==null?null:(0,bn.createPortal)(K.createElement(`div`,{className:`recharts-legend-wrapper`,style:g,ref:d},K.createElement(Rn,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!c&&K.createElement(zn,{width:u.width,height:u.height}),K.createElement(In,Sn({},t,h,{margin:i,chartWidth:f,chartHeight:p,contextPayload:n}))),_)}var Un=K.memo(Hn,Be);Un.displayName=`Legend`;var Wn=e=>null;Wn.displayName=`Cell`;var Gn=[`animationElapsedTime`,`isAnimating`,`isEntrance`,`visibleLength`,`strokeDasharray`,`connectNulls`];function Kn(){return Kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kn.apply(null,arguments)}function qn(e,t){if(e==null)return{};var n,r,i=Jn(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Jn(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Yn(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function Xn(e,t){return`${t}px ${e}px`}function Zn(e){return e.length%2==0?e:[...e,...e]}function Qn(e,t){for(var n=[],r=0;r<t;++r)n.push(...e);return n}function $n(e,t,n){var r=Zn(n),i=r.reduce((e,t)=>e+t,0);if(!i)return Xn(t,e);for(var a=Math.floor(e/i),o=e%i,s=[],c=0,l=0;c<r.length;l+=(u=r[c])??0,++c){var u,d=r[c];if(d!=null&&l+d>o){s=[...r.slice(0,c),o-l];break}}var f=s.length%2==0?[0,t]:[t];return[...Qn(r,a),...s,...f].map(e=>`${e}px`).join(`, `)}function er(e,t,n){return e?$n(n,t,`${e}`.split(/[,\s]+/gim).map(e=>parseFloat(e))):Xn(t,n)}function tr(e){e.animationElapsedTime,e.isAnimating,e.isEntrance;var t=e.visibleLength,n=e.strokeDasharray,r=e.connectNulls,i=qn(e,Gn),a=r??!1,o;if(t!=null){var s=i.pathRef;o=er(n,Yn(s?.current??null),t)}else n!=null&&(o=String(n));return K.createElement(Ie,Kn({},i,{connectNulls:a,strokeDasharray:o}))}function nr(e){var t=(0,K.useRef)(0),n=(0,K.useRef)(0),r=(0,K.useRef)(!1),i=(0,K.useRef)(e);return i.current!==e&&(t.current=n.current,i.current=e),(0,K.useCallback)((e,i)=>{if(r.current)return null;var a=Math.min(Te(t.current+e*i),i);return e>0&&i>0&&(n.current=Math.max(n.current,a),a>=i)?(r.current=!0,null):a},[])}var rr=[`children`];function ir(e,t){if(e==null)return{};var n,r,i=ar(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ar(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var or=(0,K.createContext)({data:[],xAxisId:`xAxis-0`,yAxisId:`yAxis-0`,dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0});function sr(e){var t=e.children,n=ir(e,rr);return K.createElement(or.Provider,{value:n},t)}var cr=(e,t,n,r)=>C(e,`xAxis`,t,r),lr=(e,t,n,r)=>I(e,`xAxis`,t,r),ur=(e,t,n,r)=>C(e,`yAxis`,n,r),dr=(e,t,n,r)=>I(e,`yAxis`,n,r),fr=A([L,cr,ur,lr,dr],(e,t,n,r,i)=>ae(e,`xAxis`)?_e(t,r,!1):_e(n,i,!1)),pr=(e,t,n,r,i)=>i;function mr(e){return e.type===`line`}var hr=A([L,cr,ur,lr,dr,A([xe,pr],(e,t)=>e.filter(mr).find(e=>e.id===t)),fr,Qe],(e,t,n,r,i,a,o,s)=>{var c=s.chartData,l=s.dataStartIndex,u=s.dataEndIndex;if(!(a==null||t==null||n==null||r==null||i==null||r.length===0||i.length===0||o==null||e!==`horizontal`&&e!==`vertical`)){var d=a.dataKey,f=a.data,p=f!=null&&f.length>0?f:c?.slice(l,u+1);if(p!=null)return zr({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:p})}}),gr=[`id`],_r=[`type`,`layout`,`connectNulls`,`needClip`,`shape`,`strokeDasharray`],vr=[`activeDot`,`animateNewValues`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`hide`,`isAnimationActive`,`label`,`legendType`,`xAxisId`,`yAxisId`,`id`];function yr(){return yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yr.apply(null,arguments)}function br(e,t){if(e==null)return{};var n,r,i=xr(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function xr(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Sr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Sr(Object(n),!0).forEach(function(t){Cr(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sr(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Cr(e,t,n){return(t=wr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function wr(e){var t=Tr(e,`string`);return typeof t==`symbol`?t:t+``}function Tr(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Er(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function Dr(e){var t=0,n=0;for(var r of e)r.status===`matched`&&r.prev.x!=null&&r.next.x!=null&&(t+=r.next.x-r.prev.x,n++);return n>0?t/n:0}var Or={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,animationInterpolateFn:(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(e=>e.status===`removed`?[]:[e.next]);var n=Dr(e),r=[];for(var i of e)if(i.status===`matched`)r.push(Y(Y({},i.next),{},{x:F(i.prev.x,i.next.x,t),y:F(i.prev.y,i.next.y,t)}));else if(i.status===`added`)if(i.next.x!=null){var a=i.next.x-n;r.push(Y(Y({},i.next),{},{x:F(a,i.next.x,t),y:i.next.y}))}else r.push(i.next);else if(i.status===`removed`&&i.prev.x!=null){var o=i.prev.x+n;r.push(Y(Y({},i.prev),{},{x:F(i.prev.x,o,t),y:i.prev.y}))}return r},animationMatchBy:$e,connectNulls:!1,dot:!0,fill:`#fff`,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`line`,shape:tr,stroke:`#3182bd`,strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:ut.line,type:`linear`},kr=e=>{var t=e.dataKey,n=e.name,r=e.stroke,i=e.legendType;return[{inactive:e.hide,dataKey:t,type:i,color:r,value:f(n,t),payload:e}]},Ar=K.memo(e=>{var t=e.dataKey,n=e.data,r=e.stroke,i=e.strokeWidth,a=e.fill,o=e.name,s=e.hide,c=e.unit,l=e.formatter,u=e.tooltipType,d=e.id,p={dataDefinedOnItem:n,getPosition:Ce,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:f(o,t),hide:s,type:u,color:r,unit:c,formatter:l,graphicalItemId:d}};return K.createElement(Ct,{tooltipEntrySettings:p})});function jr(e){var t=e.clipPathId,n=e.points,r=e.props,i=r.dot,a=r.dataKey,o=r.needClip;r.id;var s=nt(br(r,gr));return K.createElement(y,{points:n,dot:i,className:`recharts-line-dots`,dotClassName:`recharts-line-dot`,dataKey:a,baseProps:s,needClip:o,clipPathId:t})}function Mr(e){var t=e.showLabels,n=e.children,r=e.points,i=(0,K.useMemo)(()=>r?.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return Y(Y({},t),{},{value:e.value,payload:e.payload,viewBox:t,parentViewBox:void 0,fill:void 0})}),[r]);return K.createElement(Ye,{value:t?i:void 0},n)}function Nr(e){var t=e.clipPathId,n=e.pathRef,r=e.points,i=e.props,a=e.animationElapsedTime,o=e.isAnimating,s=e.isEntrance,c=e.visibleLength,l=i.type,u=i.layout,d=i.connectNulls,f=i.needClip,p=i.shape,m=i.strokeDasharray,h=Y(Y({},pt(br(i,_r))),{},{fill:`none`,className:`recharts-line-curve`,clipPath:f?`url(#clipPath-${t})`:void 0,points:r,type:l,layout:u,connectNulls:d,strokeDasharray:m??i.strokeDasharray,pathRef:n,animationElapsedTime:a,isAnimating:o,isEntrance:i.animateNewValues?s:!1,visibleLength:c});return K.createElement(K.Fragment,null,r?.length>1&&K.createElement(Ne,{option:p,DefaultShape:Or.shape,shapeProps:h}),K.createElement(jr,{points:r,clipPathId:t,props:i}))}function Pr(e){var t=e.clipPathId,n=e.props,r=e.pathRef,i=e.previousPointsRef,a=n.points,o=n.isAnimationActive,s=n.animationBegin,c=n.animationDuration,l=n.animationEasing,u=n.animationMatchBy,f=n.animationInterpolateFn,p=n.layout,m=Er(r.current),h=ze(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,_=h.handleAnimationStart,v=h.handleAnimationEnd,y=!g,b=nr(a),x=(0,K.useCallback)(e=>e>0&&m>0,[m]);return K.createElement(Mr,{points:a,showLabels:y},n.children,K.createElement(Fe,{animationInput:a,animationIdPrefix:`recharts-line-`,items:a,previousItemsRef:i,isAnimationActive:o,animationBegin:s,animationDuration:c,animationEasing:l,onAnimationStart:_,onAnimationEnd:v,animationInterpolateFn:f,animationMatchBy:u,shouldUpdatePreviousRef:x,layout:p},(e,i,a)=>{var o=g||i<1,s=o?b(i,m):null;return K.createElement(Nr,{props:n,points:e,clipPathId:t,pathRef:r,animationElapsedTime:i,isAnimating:o,isEntrance:a,visibleLength:s})}),K.createElement(d,{label:n.label}))}function Fr(e){var t=e.clipPathId,n=e.props,r=(0,K.useRef)(null),i=(0,K.useRef)(null);return K.createElement(Pr,{props:n,clipPathId:t,previousPointsRef:r,pathRef:i})}var Ir=(e,t)=>({x:e.x??void 0,y:e.y??void 0,value:e.value,errorVal:Je(e.payload,t)}),Lr=class extends K.Component{render(){var e=this.props,t=e.hide,n=e.dot,r=e.points,i=e.className,a=e.xAxisId,o=e.yAxisId,s=e.top,c=e.left,l=e.width,u=e.height,d=e.id,f=e.needClip,p=e.zIndex;if(t)return null;var m=Ge(`recharts-line`,i),h=d,g=Ze(n),_=g.r,v=g.strokeWidth,y=ce(n),b=_*2+v,S=f?`url(#clipPath-${y?``:`dots-`}${h})`:void 0;return K.createElement(me,{zIndex:p},K.createElement(x,{className:m},f&&K.createElement(`defs`,null,K.createElement(Ve,{clipPathId:h,xAxisId:a,yAxisId:o}),!y&&K.createElement(`clipPath`,{id:`clipPath-dots-${h}`},K.createElement(`rect`,{x:c-b/2,y:s-b/2,width:l+b,height:u+b}))),K.createElement(sr,{xAxisId:a,yAxisId:o,data:r,dataPointFormatter:Ir,errorBarOffset:0},K.createElement(Fr,{props:this.props,clipPathId:h}))),K.createElement(je,{activeDot:this.props.activeDot,points:r,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:S}))}};function Rr(e){var t=N(e,Or),n=t.activeDot,r=t.animateNewValues,i=t.animationBegin,a=t.animationDuration,o=t.animationEasing,s=t.connectNulls,c=t.dot,l=t.hide,u=t.isAnimationActive,d=t.label,f=t.legendType,p=t.xAxisId,m=t.yAxisId,h=t.id,g=br(t,vr),_=Ee(p,m).needClip,v=xt(),y=vt(),b=M(),x=V(e=>hr(e,p,m,b,h));if(y!==`horizontal`&&y!==`vertical`||x==null||v==null)return null;var S=v.height,C=v.width,ee=v.x,w=v.y;return K.createElement(Lr,yr({},g,{id:h,connectNulls:s,dot:c,activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:l,label:d,legendType:f,xAxisId:p,yAxisId:m,points:x,layout:y,height:S,width:C,left:ee,top:w,needClip:_}))}function zr(e){var t=e.layout,n=e.xAxis,r=e.yAxis,i=e.xAxisTicks,a=e.yAxisTicks,o=e.dataKey,s=e.bandSize;return e.displayedData.map((e,c)=>{var l=Je(e,o);if(t===`horizontal`)return{x:le({axis:n,ticks:i,bandSize:s,entry:e,index:c}),y:(k(l)?null:r.scale.map(l))??null,value:l,payload:e};var u=k(l)?null:n.scale.map(l),d=le({axis:r,ticks:a,bandSize:s,entry:e,index:c});return u==null||d==null?null:{x:u,y:d,value:l,payload:e}}).filter(Boolean)}function Br(e){var t=N(e,Or),n=M();return K.createElement(_t,{id:t.id,type:`line`},e=>K.createElement(K.Fragment,null,K.createElement(Ue,{legendPayload:kr(t)}),K.createElement(Ar,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:e}),K.createElement(ht,{type:`line`,id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),K.createElement(Rr,yr({},t,{id:e}))))}var Vr=K.memo(Br,Be);Vr.displayName=`Line`;var Hr=`Invariant failed`;function Ur(e,t){if(!e)throw Error(Hr)}var Wr=[`option`];function Gr(e,t){if(e==null)return{};var n,r,i=Kr(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Kr(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var qr=gt;function Jr(e){var t=e.option,n=Gr(e,Wr);return K.createElement(Ne,{option:t,DefaultShape:qr,shapeProps:n,activeClassName:`recharts-active-bar`,inActiveClassName:`recharts-inactive-bar`})}var Yr=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(z(e))return e;var i=z(n)||k(n);return i?e(n,r):(!i&&Ur(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},Xr=(e,t,n)=>{var r=j();return(i,a)=>o=>{e?.(i,a,o),r(ve({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},Zr=e=>{var t=j();return(n,r)=>i=>{e?.(n,r,i),t(be())}},Qr=(e,t,n)=>{var r=j();return(i,a)=>o=>{e?.(i,a,o),r(w({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}};function $r(e,t){return ii(e)||ri(e,t)||ti(e,t)||ei()}function ei(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
6
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ti(e,t){if(e){if(typeof e==`string`)return ni(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ni(e,t):void 0}}function ni(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ri(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function ii(e){if(Array.isArray(e))return e}var ai=(e,t,n)=>{var r=n??e;if(!k(r))return ye(r,t,0)},oi=(e,t,n)=>{var r={},i=e.filter(Re),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var r=$r(e,2),i=r[0],a=r[1];return{stackId:i,dataKeys:a.map(e=>e.dataKey),barSize:ai(t,n,a[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:ai(t,n,e.barSize)}));return[...s,...c]};function si(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ci(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?si(Object(n),!0).forEach(function(t){li(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):si(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function li(e,t,n){return(t=ui(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ui(e){var t=di(e,`string`);return typeof t==`symbol`?t:t+``}function di(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function fi(e,t,n,r,i){var a=r.length;if(!(a<1)){var o=ye(e,n,0,!0),s,c=[];if(de(r[0]?.barSize)){var l=!1,u=n/a,d=r.reduce((e,t)=>e+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:Math.round((n-d)/2)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=ye(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m=Math.round(m));var h=de(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var pi=(e,t,n,r,i,a,o)=>{var s=k(o)?t:o,c=fi(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>ci(ci({},e),{},{position:ci(ci({},e.position),{},{offset:e.position.offset-i/2})}))),c},mi=(e,t)=>{var n=mt(t);if(!(!e||n==null||t==null)){var r=t.stackId;if(r!=null){var i=e[r];if(i){var a=i.stackedData;if(a)return a.find(e=>e.key===n)}}}},hi=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}},gi=(e,t,n)=>n,_i=A([xe,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),vi=A([_i],e=>e?.maxBarSize),yi=(e,t,n,r)=>r,bi=A([L,xe,R,B,gi],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),xi=(e,t,n)=>{var r=L(e),i=R(e,t),a=B(e,t);if(!(i==null||a==null))return r===`horizontal`?st(e,`yAxis`,a,n):st(e,`xAxis`,i,n)},Si=A([bi,it,(e,t)=>{var n=L(e),r=R(e,t),i=B(e,t);if(!(r==null||i==null))return n===`horizontal`?O(e,`xAxis`,r):O(e,`yAxis`,i)}],oi),Ci=(e,t,n)=>{var r=_i(e,t);if(r==null)return 0;var i=R(e,t),a=B(e,t);if(i==null||a==null)return 0;var o=L(e),s=dt(e),c=r.maxBarSize,l=k(c)?s:c,u,d;return o===`horizontal`?(u=C(e,`xAxis`,i,n),d=I(e,`xAxis`,i,n)):(u=C(e,`yAxis`,a,n),d=I(e,`yAxis`,a,n)),_e(u,d,!0)??l??0},wi=(e,t,n)=>{var r=L(e),i=R(e,t),a=B(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=C(e,`xAxis`,i,n),s=I(e,`xAxis`,i,n)):(o=C(e,`yAxis`,a,n),s=I(e,`yAxis`,a,n)),_e(o,s)}},Ti=A([bt,g,(e,t,n)=>{var r=R(e,t);if(r!=null)return C(e,`xAxis`,r,n)},(e,t,n)=>{var r=B(e,t);if(r!=null)return C(e,`yAxis`,r,n)},(e,t,n)=>{var r=R(e,t);if(r!=null)return I(e,`xAxis`,r,n)},(e,t,n)=>{var r=B(e,t);if(r!=null)return I(e,`yAxis`,r,n)},A([A([Si,dt,Ae,Ke,Ci,wi,vi],pi),_i],hi),L,Pe,wi,A([xi,_i],mi),_i,yi],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var p=c.chartData,m=c.dataStartIndex,h=c.dataEndIndex;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var g=d.data,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return pa({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}});function Ei(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&de(e.zIndex)?e.zIndex:t}var Di=[`index`];function Oi(){return Oi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Oi.apply(null,arguments)}function ki(e,t){if(e==null)return{};var n,r,i=Ai(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Ai(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var ji=(0,K.createContext)(void 0),Mi=e=>{var t=(0,K.useContext)(ji);if(t!=null)return t.stackId;if(e!=null)return Xe(e)},Ni=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,Pi=e=>{var t=(0,K.useContext)(ji);if(t!=null){var n=t.stackId;return`url(#${Ni(n,e)})`}},Fi=e=>{var t=e.index,n=ki(e,Di),r=Pi(t);return K.createElement(x,Oi({className:`recharts-bar-stack-layer`,clipPath:r},n))},Ii=[`onMouseEnter`,`onMouseLeave`,`onClick`],Li=[`value`,`background`,`tooltipPosition`],Ri=[`id`],zi=[`onMouseEnter`,`onClick`,`onMouseLeave`];function Bi(e,t){return Gi(e)||Wi(e,t)||Hi(e,t)||Vi()}function Vi(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
7
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Hi(e,t){if(e){if(typeof e==`string`)return Ui(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ui(e,t):void 0}}function Ui(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Wi(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Gi(e){if(Array.isArray(e))return e}function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},X.apply(null,arguments)}function Ki(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Ki(Object(n),!0).forEach(function(t){qi(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ki(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function qi(e,t,n){return(t=Ji(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ji(e){var t=Yi(e,`string`);return typeof t==`symbol`?t:t+``}function Yi(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Xi(e,t){if(e==null)return{};var n,r,i=Zi(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Zi(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var Qi=e=>{var t=e.dataKey,n=e.name,r=e.fill,i=e.legendType;return[{inactive:e.hide,dataKey:t,type:i,color:r,value:f(n,t),payload:e}]},$i=K.memo(e=>{var t=e.dataKey,n=e.stroke,r=e.strokeWidth,i=e.fill,a=e.name,o=e.hide,s=e.unit,c=e.formatter,l=e.tooltipType,u=e.id,d={dataDefinedOnItem:void 0,getPosition:Ce,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:f(a,t),hide:o,type:l,color:i,unit:s,formatter:c,graphicalItemId:u}};return K.createElement(Ct,{tooltipEntrySettings:d})});function ea(e){var t=V(p),n=e.data,r=e.dataKey,i=e.background,a=e.allOtherBarProps,o=a.onMouseEnter,s=a.onMouseLeave,c=a.onClick,l=Xi(a,Ii),u=Xr(o,r,a.id),d=Zr(s),f=Qr(c,r,a.id);if(!i||n==null)return null;var m=lt(i);return K.createElement(me,{zIndex:Ei(i,ut.barBackground)},n.map((e,n)=>{e.value;var a=e.background;e.tooltipPosition;var o=Xi(e,Li);if(!a)return null;var s=u(e,e.originalDataIndex),c=d(e,e.originalDataIndex),p=f(e,e.originalDataIndex),h=Z(Z(Z(Z(Z({option:i,isActive:String(e.originalDataIndex)===t},o),{},{fill:`#eee`},a),m),T(l,e,n)),{},{onMouseEnter:s,onMouseLeave:c,onClick:p,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return K.createElement(Jr,X({key:`background-bar-${n}`},h))}))}function ta(e){var t=e.showLabels,n=e.children,r=e.rects?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return Z(Z({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return K.createElement(Ye,{value:t?r:void 0},n)}function na(e){var t=e.shape,n=e.activeBar,r=e.baseProps,i=e.entry,a=e.index,o=e.dataKey,s=V(p),c=V(Tt),l=n&&String(i.originalDataIndex)===s&&(c==null||o===c),u=Bi((0,K.useState)(!1),2),d=u[0],f=u[1],m=Bi((0,K.useState)(!1),2),h=m[0],g=m[1];(0,K.useEffect)(()=>{var e;return l?(f(!0),e=requestAnimationFrame(()=>{g(!0)})):g(!1),()=>{cancelAnimationFrame(e)}},[l]);var _=(0,K.useCallback)(()=>{l||f(!1)},[l]),v=l&&h,y=l||d,b=l?n===!0?t:n:t,x=K.createElement(Jr,X({},r,{name:String(r.name)},i,{isActive:v,option:b,index:a,dataKey:o,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:_}));return y?K.createElement(me,{zIndex:ut.activeBar},K.createElement(Fi,{index:i.originalDataIndex},x)):x}function ra(e){var t=e.shape,n=e.baseProps,r=e.entry,i=e.index,a=e.dataKey;return K.createElement(Jr,X({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function ia(e){var t=e.data,n=e.props,r=e.animationElapsedTime,i=e.isAnimating,a=e.isEntrance,o=nt(n)??{},s=o.id,c=Xi(o,Ri),l=n.shape,u=n.dataKey,d=n.activeBar,f=n.onMouseEnter,p=n.onClick,m=n.onMouseLeave,h=Xi(n,zi),g=Xr(f,u,s),_=Zr(m),v=Qr(p,u,s);return t?K.createElement(K.Fragment,null,t.map((e,t)=>K.createElement(Fi,X({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},T(h,e,t),{onMouseEnter:g(e,e.originalDataIndex),onMouseLeave:_(e,e.originalDataIndex),onClick:v(e,e.originalDataIndex)}),d?K.createElement(na,{shape:l,activeBar:d,baseProps:c,entry:e,index:t,dataKey:u,animationElapsedTime:r,isAnimating:i,isEntrance:a}):K.createElement(ra,{shape:l,baseProps:c,entry:e,index:t,dataKey:u,animationElapsedTime:r,isAnimating:i,isEntrance:a})))):null}var aa=(e,t,n)=>e==null?[]:t===1?e.flatMap(e=>e.status===`removed`?[]:[e.next]):e.flatMap(e=>{if(e.status===`removed`)return n===`horizontal`?[Z(Z({},e.prev),{},{height:F(e.prev.height,0,t),y:F(e.prev.y,e.prev.y+e.prev.height,t)})]:[Z(Z({},e.prev),{},{width:F(e.prev.width,0,t)})];if(e.status===`matched`)return[Z(Z({},e.next),{},{x:F(e.prev.x,e.next.x,t),y:F(e.prev.y,e.next.y,t),width:F(e.prev.width,e.next.width,t),height:F(e.prev.height,e.next.height,t)})];var r=e.next;return n===`horizontal`?[Z(Z({},r),{},{height:F(0,r.height,t),y:F(r.stackedBarStart,r.y,t)})]:[Z(Z({},r),{},{width:F(0,r.width,t),x:F(r.stackedBarStart,r.x,t)})]});function oa(e){var t=e.props,n=e.previousRectanglesRef,r=t.data,i=t.isAnimationActive,a=t.animationBegin,o=t.animationDuration,s=t.animationEasing,c=t.animationInterpolateFn,l=t.layout,u=ze(t.onAnimationStart,t.onAnimationEnd),f=u.isAnimating,p=u.handleAnimationStart,m=u.handleAnimationEnd;return K.createElement(ta,{showLabels:!f,rects:r},K.createElement(Fe,{animationInput:r,animationIdPrefix:`recharts-bar-`,items:r,previousItemsRef:n,isAnimationActive:i,animationBegin:a,animationDuration:o,animationEasing:s,onAnimationStart:p,onAnimationEnd:m,animationInterpolateFn:c,animationMatchBy:t.animationMatchBy,layout:l},(e,n,r)=>K.createElement(x,null,K.createElement(ia,{props:t,data:e,animationElapsedTime:n,isAnimating:f||n<1,isEntrance:r}))),K.createElement(d,{label:t.label}),t.children)}function sa(e){var t=(0,K.useRef)(null);return K.createElement(oa,{previousRectanglesRef:t,props:e})}var ca=0,la=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Je(e,t)}},ua=class extends K.PureComponent{render(){var e=this.props,t=e.hide,n=e.data,r=e.dataKey,i=e.className,a=e.xAxisId,o=e.yAxisId,s=e.needClip,c=e.background,l=e.id;if(t||n==null)return null;var u=Ge(`recharts-bar`,i),d=l;return K.createElement(x,{className:u,id:l},s&&K.createElement(`defs`,null,K.createElement(Ve,{clipPathId:d,xAxisId:a,yAxisId:o})),K.createElement(x,{className:`recharts-bar-rectangles`,clipPath:s?`url(#clipPath-${d})`:void 0},K.createElement(ea,{data:n,dataKey:r,background:c,allOtherBarProps:this.props}),K.createElement(sa,this.props)))}},da={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,animationInterpolateFn:aa,animationMatchBy:at,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:ca,shape:qr,xAxisId:0,yAxisId:0,zIndex:ut.bar};function fa(e){var t=e.xAxisId,n=e.yAxisId,r=e.hide,i=e.legendType,a=e.minPointSize,o=e.activeBar,s=e.animationBegin,c=e.animationDuration,l=e.animationEasing,u=e.isAnimationActive,d=Ee(t,n).needClip,f=vt(),p=M(),m=_(e.children,Wn),h=V(t=>Ti(t,e.id,p,m));if(f!==`vertical`&&f!==`horizontal`)return null;var g,v=h?.[0];return g=v==null||v.height==null||v.width==null?0:f===`vertical`?v.height/2:v.width/2,K.createElement(sr,{xAxisId:t,yAxisId:n,data:h,dataPointFormatter:la,errorBarOffset:g},K.createElement(ua,X({},e,{layout:f,needClip:d,data:h,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u})))}function pa(e){var t=e.layout,n=e.barSettings,r=n.dataKey,i=n.minPointSize,a=n.hasCustomShape,o=e.pos,s=e.bandSize,c=e.xAxis,l=e.yAxis,u=e.xAxisTicks,d=e.yAxisTicks,f=e.stackedData,p=e.displayedData,m=e.offset,h=e.cells,g=e.parentViewBox,_=e.dataStartIndex,y=t===`horizontal`?l:c,x=f?y.scale.domain():null,S=b({numericAxis:y}),C=y.scale.map(S);return p.map((e,n)=>{var p,y,b,w,T,E;if(f){var te=f[n+_];if(te==null)return null;p=se(te,x)}else p=Je(e,r),Array.isArray(p)||(p=[S,p]);var D=Yr(i,ca)(p[1],n);if(t===`horizontal`){var O=l.scale.map(p[0]),k=l.scale.map(p[1]);if(O==null||k==null)return null;y=v({axis:c,ticks:u,bandSize:s,offset:o.offset,entry:e,index:n}),b=k??O??void 0,w=o.size;var re=O-k;if(T=ee(re)?0:re,E={x:y,y:m.top,width:w,height:m.height},Math.abs(D)>0&&Math.abs(T)<Math.abs(D)){var A=ne(T||D)*(Math.abs(D)-Math.abs(T));b-=A,T+=A}}else{var ie=c.scale.map(p[0]),ae=c.scale.map(p[1]);if(ie==null||ae==null)return null;if(y=ie,b=v({axis:l,ticks:d,bandSize:s,offset:o.offset,entry:e,index:n}),w=ae-ie,T=o.size,E={x:m.left,y:b,width:m.width,height:T},Math.abs(D)>0&&Math.abs(w)<Math.abs(D)){var oe=ne(w||D)*(Math.abs(D)-Math.abs(w));w+=oe}}return y==null||b==null||w==null||T==null||!a&&(w===0||T===0)?null:Z(Z({},e),{},{stackedBarStart:C,x:y,y:b,width:w,height:T,value:f?p:p[1],payload:e,background:E,tooltipPosition:{x:y+w/2,y:b+T/2},parentViewBox:g,originalDataIndex:n},h&&h[n]&&h[n].props)}).filter(Boolean)}function ma(e){var t=N(e,da),n=Mi(t.stackId),r=M();return K.createElement(_t,{id:t.id,type:`bar`},e=>K.createElement(K.Fragment,null,K.createElement(Ue,{legendPayload:Qi(t)}),K.createElement($i,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:e}),K.createElement(ht,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null&&t.shape!==qr}),K.createElement(me,{zIndex:t.zIndex},K.createElement(fa,X({},t,{id:e})))))}var ha=K.memo(ma,Be);ha.displayName=`Bar`;var ga=[`type`],_a=[`dangerouslySetInnerHTML`,`ticks`,`scale`],va=[`id`,`scale`];function ya(){return ya=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ya.apply(null,arguments)}function ba(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xa(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ba(Object(n),!0).forEach(function(t){Sa(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ba(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Sa(e,t,n){return(t=Ca(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ca(e){var t=wa(e,`string`);return typeof t==`symbol`?t:t+``}function wa(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ta(e,t){if(e==null)return{};var n,r,i=Ea(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Ea(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Da(e){var t=j(),n=(0,K.useRef)(null),r=He(),i=e.type,a=Ta(e,ga),o=rt(r,`yAxis`,i),s=(0,K.useMemo)(()=>{if(o!=null)return xa(xa({},a),{},{type:o})},[o,a]);return(0,K.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(he(s)):n.current!==s&&t(yt({prev:n.current,next:s})),n.current=s)},[s,t]),(0,K.useLayoutEffect)(()=>()=>{n.current&&=(t(h(n.current)),null)},[t]),null}function Oa(e){var t=e.yAxisId,n=e.className,r=e.width,i=e.label,a=(0,K.useRef)(null),o=(0,K.useRef)(null),s=V(g),c=M(),u=j(),d=`yAxis`,f=V(e=>l(e,t)),p=V(e=>we(e,t)),m=V(e=>D(e,d,t,c)),h=V(e=>fe(e,t));if((0,K.useLayoutEffect)(()=>{if(!(r!==`auto`||!f||ue(i)||(0,K.isValidElement)(i)||h==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(f.width)!==Math.round(n)&&u(ge({id:t,width:n}))}}},[m,f,u,i,t,r,h]),f==null||p==null||h==null)return null;e.dangerouslySetInnerHTML,e.ticks,e.scale;var _=Ta(e,_a);h.id,h.scale;var v=Ta(h,va);return K.createElement(ie,ya({},_,v,{ref:a,labelRef:o,x:p.x,y:p.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:f.width,height:f.height,className:Ge(`recharts-${d} ${d}`,n),viewBox:s,ticks:m,axisType:d,axisId:t}))}var ka={allowDataOverflow:P.allowDataOverflow,allowDecimals:P.allowDecimals,allowDuplicatedCategory:P.allowDuplicatedCategory,angle:P.angle,axisLine:oe.axisLine,hide:!1,includeHidden:P.includeHidden,interval:P.interval,label:!1,minTickGap:P.minTickGap,mirror:P.mirror,orientation:P.orientation,padding:P.padding,reversed:P.reversed,scale:P.scale,tick:P.tick,tickCount:P.tickCount,tickLine:oe.tickLine,tickSize:oe.tickSize,type:P.type,niceTicks:P.niceTicks,width:P.width,yAxisId:0},Q=K.memo(e=>{var t=N(e,ka);return K.createElement(K.Fragment,null,K.createElement(Da,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),K.createElement(Oa,t))},We);Q.displayName=`YAxis`;var Aa=[`axis`],ja=(0,K.forwardRef)((e,t)=>K.createElement(tt,{chartName:`LineChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:Aa,tooltipPayloadSearcher:re,categoricalChartProps:e,ref:t})),Ma=[`axis`,`item`],Na=(0,K.forwardRef)((e,t)=>K.createElement(tt,{chartName:`BarChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:Ma,tooltipPayloadSearcher:re,categoricalChartProps:e,ref:t})),$=n(),Pa=[`var(--accent)`,`#e0b341`,`#46b3a8`,`#d4737e`,`#8a7fd1`,`#5fa8d3`,`#c08457`,`#7bb274`],Fa=e=>Pa[e%Pa.length],Ia=[`#fafafa`,`#d4d4d8`,`#a1a1aa`,`#71717a`,`#52525b`,`#3f3f46`],La=[{key:`1h`,bucket:`1m`,window:`24h`,slice:60,minutes:60},{key:`24h`,bucket:`1m`,window:`24h`,minutes:1440},{key:`7d`,bucket:`5m`,window:`7d`,minutes:10080},{key:`30d`,bucket:`1h`,window:`30d`,minutes:720*60}],Ra=(e,t)=>{let n=new Date(e*1e3),r=String(n.getHours()).padStart(2,`0`);return t===`1h`?`${n.getMonth()+1}/${n.getDate()} ${r}:00`:`${r}:${String(n.getMinutes()).padStart(2,`0`)}`};function za(e,t){if(e.length<2)return null;let n=e[e.length-1].at,r=0,i=0;for(let a of e)a.at>n-3600?r+=a[t]:a.at>n-7200&&(i+=a[t]);return i===0?r===0?null:100:Math.round((r-i)/i*100)}function Ba({pct:e,goodWhenUp:t}){if(e===null)return null;let n=e>=0;return(0,$.jsxs)(`span`,{style:{fontSize:12,marginInlineStart:8,color:n===t?`var(--success)`:`var(--danger)`},children:[n?`↑`:`↓`,Math.abs(e),`%`]})}var Va=(e,t)=>{if(t<=0)return[];if(e.length<=t)return e;if(t===1)return[e[e.length-1]];let n=(e.length-1)/(t-1);return Array.from({length:t},(t,r)=>e[Math.round(r*n)])},Ha={background:`#161618`,border:`1px solid #272729`,color:`#e4e4e7`,borderRadius:6,fontSize:12,fontFamily:`JetBrains Mono, monospace`};function Ua({height:e}){return(0,$.jsx)(`div`,{style:{height:e},role:`status`,"aria-label":r(`common.loading`),children:(0,$.jsx)(a,{height:`100%`})})}function Wa(){let[e,t]=(0,K.useState)(2),n=La[e];(0,K.useEffect)(()=>{document.title=`${r(`nav.metrics`)} — Wurk`},[]);let{data:a}=i({queryKey:[`stats`],queryFn:()=>fetch(`/wurk/api/stats`).then(e=>e.json()),refetchInterval:5e3}),{data:o,isPending:l}=i({queryKey:[`history`,n.bucket,n.window],queryFn:()=>fetch(`/wurk/api/history/${n.bucket}?window=${n.window}`).then(e=>e.json()),refetchInterval:3e4}),{data:u,isPending:d}=i({queryKey:[`metrics`,n.minutes],queryFn:()=>fetch(`/wurk/api/metrics?minutes=${n.minutes}`).then(e=>e.json()),refetchInterval:3e4}),{data:f,isPending:p}=i({queryKey:[`queue-history`,n.bucket,n.window],queryFn:async()=>{let e=await fetch(`/wurk/api/queue-history/${n.bucket}?window=${n.window}`);if(!e.ok)throw Error(`queue-history failed (${e.status})`);return e.json()},refetchInterval:3e4}),m=(o?.series??[]).map(e=>({...e,label:Ra(e.at,n.bucket)})),h=`slice`in n?n.slice:void 0,g=h?m.slice(-h):m,_=g.some(e=>e.processed>0||e.failed>0),v=f?.queues??[],y=Va((v[0]?.points.map(e=>e.at)??[]).map((e,t)=>({label:Ra(e,n.bucket),depth:v.reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16),b=Math.max(0,...y.map(e=>e.depth)),x=(u?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed+e.failed})).sort((e,t)=>t.count-e.count),S=x.reduce((e,t)=>e+t.count,0),C=x.slice(0,6);return(0,$.jsxs)(`div`,{className:`obs`,children:[(0,$.jsxs)(`div`,{className:`obs-toolbar`,children:[(0,$.jsxs)(`span`,{className:`obs-toolbar__label`,children:[(0,$.jsx)(`i`,{className:`fa-regular fa-calendar`,"aria-hidden":`true`}),` Time Range:`]}),(0,$.jsx)(`div`,{className:`obs-seg`,role:`tablist`,"aria-label":`Time range`,children:La.map((n,r)=>(0,$.jsx)(`button`,{role:`tab`,"aria-selected":r===e,className:r===e?`is-active`:``,onClick:()=>t(r),children:n.key},n.key))})]}),(0,$.jsxs)(`div`,{className:`obs-metrics`,children:[(0,$.jsxs)(`div`,{className:`obs-card obs-metric`,children:[(0,$.jsxs)(`div`,{className:`obs-metric__head`,children:[(0,$.jsx)(`span`,{className:`obs-mono`,children:`Total Processed`}),(0,$.jsx)(`i`,{className:`fa-solid fa-circle-check obs-metric__icon`,"aria-hidden":`true`})]}),(0,$.jsxs)(`span`,{className:`obs-metric__value`,children:[(a?.processed??0).toLocaleString(),(0,$.jsx)(Ba,{pct:za(m,`processed`),goodWhenUp:!0})]}),(0,$.jsx)(`span`,{className:`obs-metric__sub`,children:`across all queues`})]}),(0,$.jsxs)(`div`,{className:`obs-card obs-metric`,children:[(0,$.jsxs)(`div`,{className:`obs-metric__head`,children:[(0,$.jsx)(`span`,{className:`obs-mono`,children:`Failed Jobs`}),(0,$.jsx)(`i`,{className:`fa-solid fa-triangle-exclamation obs-metric__icon`,"aria-hidden":`true`})]}),(0,$.jsxs)(`span`,{className:`obs-metric__value`,children:[(a?.failed??0).toLocaleString(),(0,$.jsx)(Ba,{pct:za(m,`failed`),goodWhenUp:!1})]}),(0,$.jsx)(`span`,{className:`obs-metric__sub`,children:`total failures`})]}),(0,$.jsxs)(`div`,{className:`obs-card obs-metric`,children:[(0,$.jsxs)(`div`,{className:`obs-metric__head`,children:[(0,$.jsx)(`span`,{className:`obs-mono`,children:`Avg Latency`}),(0,$.jsx)(`i`,{className:`fa-solid fa-stopwatch obs-metric__icon`,"aria-hidden":`true`})]}),(0,$.jsx)(`span`,{className:`obs-metric__value`,children:a?s(a.latency):`—`}),(0,$.jsx)(`span`,{className:`obs-metric__sub`,children:`head-of-line`})]}),(0,$.jsxs)(`div`,{className:`obs-card obs-metric`,children:[(0,$.jsxs)(`div`,{className:`obs-metric__head`,children:[(0,$.jsx)(`span`,{className:`obs-mono`,children:`Active Workers`}),(0,$.jsx)(`i`,{className:`fa-solid fa-gears obs-metric__icon`,"aria-hidden":`true`})]}),(0,$.jsx)(`span`,{className:`obs-metric__value`,children:(a?.processes??0).toLocaleString()}),(0,$.jsx)(`span`,{className:`obs-metric__sub`,children:(a?.processes??0)>0?`Stable`:`No workers`})]})]}),(0,$.jsxs)(`div`,{className:`obs-card obs-panel`,children:[(0,$.jsxs)(`div`,{className:`obs-panel__head`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{className:`obs-panel__title`,children:`Throughput & Failures`}),(0,$.jsxs)(`p`,{className:`obs-panel__sub`,children:[`Jobs processed per bucket over the last `,n.key]})]}),(0,$.jsxs)(`div`,{className:`obs-legend`,children:[(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`i`,{className:`dot dot--processed`}),` Processed`]}),(0,$.jsxs)(`span`,{children:[(0,$.jsx)(`i`,{className:`dot dot--failed`}),` Failed`]})]})]}),(0,$.jsx)(`div`,{className:`obs-chartbox`,children:l?(0,$.jsx)(Ua,{height:300}):_?(0,$.jsx)(St,{width:`100%`,height:300,children:(0,$.jsxs)(ft,{data:g,margin:{top:8,right:8,left:0,bottom:0},children:[(0,$.jsx)(`defs`,{children:(0,$.jsxs)(`linearGradient`,{id:`mProcessed`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,$.jsx)(`stop`,{offset:`0%`,stopColor:`#fafafa`,stopOpacity:.22}),(0,$.jsx)(`stop`,{offset:`95%`,stopColor:`#fafafa`,stopOpacity:0})]})}),(0,$.jsx)(qe,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.06)`}),(0,$.jsx)(ct,{dataKey:`label`,tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,minTickGap:56,interval:`preserveStartEnd`}),(0,$.jsx)(Q,{tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,width:36,allowDecimals:!1}),(0,$.jsx)(E,{contentStyle:Ha,labelStyle:{color:`#a1a1aa`},cursor:{stroke:`rgba(255,255,255,0.25)`,strokeWidth:1}}),(0,$.jsx)(Oe,{type:`monotone`,dataKey:`processed`,name:`Processed`,stroke:`#fafafa`,strokeWidth:2,fill:`url(#mProcessed)`,dot:!1,activeDot:{r:4,fill:`#fafafa`,stroke:`#09090b`,strokeWidth:2},animationDuration:1100,animationEasing:`ease-out`}),(0,$.jsx)(Oe,{type:`monotone`,dataKey:`failed`,name:`Failed`,stroke:`#a1a1aa`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`transparent`,dot:!1,animationDuration:1100,animationBegin:250,animationEasing:`ease-out`})]})}):(0,$.jsx)(`div`,{className:`empty-state`,style:{height:300,display:`grid`,placeItems:`center`},children:`No history yet — the chart fills in as jobs run.`})})]}),(0,$.jsxs)(`div`,{className:`obs-grid2`,children:[(0,$.jsxs)(`div`,{className:`obs-card obs-panel`,children:[(0,$.jsxs)(`div`,{className:`obs-panel__head`,children:[(0,$.jsx)(`h2`,{className:`obs-panel__title`,style:{fontSize:18},children:`Queue Depth`}),(0,$.jsx)(`span`,{className:`obs-mono`,children:b>0?`peak ${b.toLocaleString()}`:``})]}),(0,$.jsx)(`div`,{className:`obs-chartbox`,children:p?(0,$.jsx)(Ua,{height:240}):y.length>0?(0,$.jsx)(St,{width:`100%`,height:240,children:(0,$.jsxs)(Na,{data:y,margin:{top:8,right:8,left:0,bottom:0},children:[(0,$.jsx)(qe,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.06)`}),(0,$.jsx)(ct,{dataKey:`label`,tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,minTickGap:40,interval:`preserveStartEnd`}),(0,$.jsx)(Q,{tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,width:36,allowDecimals:!1}),(0,$.jsx)(E,{contentStyle:Ha,labelStyle:{color:`#a1a1aa`},cursor:{fill:`rgba(255,255,255,0.04)`}}),(0,$.jsx)(ha,{dataKey:`depth`,name:`Depth`,radius:[3,3,0,0],animationDuration:900,animationEasing:`ease-out`,children:y.map((e,t)=>(0,$.jsx)(Wn,{fill:e.depth===b&&b>0?`#fafafa`:`#3f3f46`},t))})]})}):(0,$.jsx)(`div`,{className:`empty-state`,style:{height:240,display:`grid`,placeItems:`center`},children:`No queue history yet.`})})]}),(0,$.jsxs)(`div`,{className:`obs-card obs-table`,children:[(0,$.jsx)(`div`,{className:`obs-table__head`,children:(0,$.jsx)(`h2`,{className:`obs-table__title`,style:{fontSize:18},children:`Top Job Types (Volume)`})}),d?(0,$.jsx)(Ua,{height:240}):C.length===0?(0,$.jsx)(`div`,{className:`obs-empty`,children:r(`common.empty`)}):(0,$.jsx)(`div`,{className:`obs-tablescroll`,children:(0,$.jsxs)(`table`,{children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{children:[(0,$.jsx)(`th`,{children:`Job Class`}),(0,$.jsx)(`th`,{style:{textAlign:`end`},children:`Count`}),(0,$.jsx)(`th`,{style:{textAlign:`end`},children:`% Total`})]})}),(0,$.jsx)(`tbody`,{children:C.map((e,t)=>(0,$.jsxs)(`tr`,{children:[(0,$.jsxs)(`td`,{style:{color:`var(--obs-text)`},title:e.klass,children:[(0,$.jsx)(`span`,{className:`obs-jobdot`,style:{background:Ia[t%Ia.length]}}),c(e.klass.split(`::`).pop()??e.klass,36)]}),(0,$.jsx)(`td`,{style:{textAlign:`end`,fontVariantNumeric:`tabular-nums`},children:e.count.toLocaleString()}),(0,$.jsxs)(`td`,{className:`obs-pct`,style:{textAlign:`end`},children:[S>0?Math.round(e.count/S*100):0,`%`]})]},e.klass))})]})})]})]}),(0,$.jsx)(Ga,{range:n}),(0,$.jsx)(qa,{})]})}function Ga({range:e}){let{data:t}=i({queryKey:[`queue-history-lat`,e.bucket,e.window],queryFn:async()=>{let t=await fetch(`/wurk/api/queue-history/${e.bucket}?window=${e.window}`);if(!t.ok)throw Error(`queue-history failed (${t.status})`);return t.json()},refetchInterval:3e4}),n=t?.queues??[],r=n.map((e,t)=>({key:`queue_${t}`,name:e.name})),a=(n[0]?.points.map(e=>e.at)??[]).map((t,i)=>{let a={label:Ra(t,e.bucket)};return n.forEach((e,t)=>{a[r[t].key]=e.points[i]?.latency??0}),a});return n.some(e=>e.points.some(e=>e.latency>0))?(0,$.jsxs)(`div`,{className:`obs-card obs-panel`,children:[(0,$.jsx)(`div`,{className:`obs-panel__head`,children:(0,$.jsx)(`h2`,{className:`obs-panel__title`,style:{fontSize:18},children:`Queue Latency (seconds)`})}),(0,$.jsx)(`div`,{className:`obs-chartbox`,children:(0,$.jsx)(St,{width:`100%`,height:240,children:(0,$.jsxs)(ja,{data:a,margin:{top:8,right:8,left:0,bottom:0},children:[(0,$.jsx)(qe,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.06)`}),(0,$.jsx)(ct,{dataKey:`label`,tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,minTickGap:48,interval:`preserveStartEnd`}),(0,$.jsx)(Q,{tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,width:40}),(0,$.jsx)(E,{contentStyle:Ha,labelStyle:{color:`#a1a1aa`}}),(0,$.jsx)(Un,{wrapperStyle:{fontSize:11,fontFamily:`JetBrains Mono, monospace`}}),r.map((e,t)=>(0,$.jsx)(Vr,{type:`monotone`,dataKey:e.key,name:e.name,stroke:Fa(t),strokeWidth:2,dot:!1},e.key))]})})})]}):null}var Ka=new Set([`processed`,`failures`]);function qa(){let{data:e}=i({queryKey:[`history-snapshots`],queryFn:async()=>{let e=await fetch(`/wurk/api/history/snapshots?limit=1000`);if(!e.ok)throw Error(`history snapshots request failed (${e.status})`);return e.json()},refetchInterval:3e4}),t=e?.snapshots??[],n=Array.from(new Set(t.flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!Ka.has(t)&&typeof e[t]==`number`)))),r=t.map(e=>{let t=new Date(e.at*1e3);return{...e,label:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}});return t.length===0||n.length===0?null:(0,$.jsxs)(`div`,{className:`obs-card obs-panel`,children:[(0,$.jsx)(`div`,{className:`obs-panel__head`,children:(0,$.jsx)(`h2`,{className:`obs-panel__title`,style:{fontSize:18},children:`Historical Snapshots`})}),(0,$.jsx)(`div`,{className:`obs-chartbox`,children:(0,$.jsx)(St,{width:`100%`,height:240,children:(0,$.jsxs)(ja,{data:r,margin:{top:8,right:8,left:0,bottom:0},children:[(0,$.jsx)(qe,{strokeDasharray:`3 3`,vertical:!1,stroke:`rgba(255,255,255,0.06)`}),(0,$.jsx)(ct,{dataKey:`label`,tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,minTickGap:48,interval:`preserveStartEnd`}),(0,$.jsx)(Q,{tick:{fill:`#71717a`,fontSize:11,fontFamily:`JetBrains Mono, monospace`},axisLine:!1,tickLine:!1,width:40,allowDecimals:!1}),(0,$.jsx)(E,{contentStyle:Ha,labelStyle:{color:`#a1a1aa`}}),(0,$.jsx)(Un,{wrapperStyle:{fontSize:11,fontFamily:`JetBrains Mono, monospace`}}),n.map((e,t)=>(0,$.jsx)(Vr,{type:`monotone`,dataKey:e,stroke:Fa(t),strokeWidth:2,dot:!1},e))]})})})]})}export{Wa as default};
@@ -1 +0,0 @@
1
- import{C as e,b as t,c as n}from"./index-DcfzJOIq.js";var r=e(t(),1),i=n();function a({open:e,onClose:t,title:n,children:a,footer:o,width:s=640}){let c=(0,r.useRef)(null),l=(0,r.useRef)(`modal-title-${Math.random().toString(36).slice(2)}`).current,u=(0,r.useRef)({title:n,children:a});e&&(u.current={title:n,children:a});let d=e?{title:n,children:a}:u.current;return(0,r.useEffect)(()=>{let t=c.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),(0,r.useEffect)(()=>{let e=c.current;if(!e)return;let n=e=>{e.preventDefault(),t()};return e.addEventListener(`cancel`,n),()=>e.removeEventListener(`cancel`,n)},[t]),(0,i.jsx)(`dialog`,{ref:c,className:`modal`,"aria-labelledby":l,onClick:e=>{e.target===c.current&&t()},children:(0,i.jsxs)(`div`,{className:`modal-panel`,style:{maxWidth:s},children:[(0,i.jsxs)(`div`,{className:`modal-header`,children:[(0,i.jsx)(`h2`,{id:l,className:`modal-title`,children:d.title}),(0,i.jsx)(`button`,{className:`modal-close`,onClick:t,"aria-label":`Close`,children:(0,i.jsx)(`i`,{className:`fa-solid fa-xmark`})})]}),(0,i.jsx)(`div`,{className:`modal-body`,children:d.children}),o&&(0,i.jsx)(`div`,{className:`modal-footer`,children:o})]})})}export{a as t};
@@ -1 +0,0 @@
1
- import{c as e}from"./index-DcfzJOIq.js";var t=e();function n({icon:e,title:n,summary:r,children:i}){return(0,t.jsxs)(`div`,{className:`page-header`,children:[(0,t.jsx)(`span`,{className:`page-header__icon`,children:(0,t.jsx)(`i`,{className:`fa-solid ${e}`})}),(0,t.jsxs)(`div`,{className:`page-header__text`,children:[(0,t.jsx)(`h1`,{className:`page-header__title`,children:n}),(0,t.jsx)(`p`,{className:`page-header__summary`,children:r})]}),i!=null&&(0,t.jsx)(`div`,{className:`page-header__aside`,children:i})]})}export{n as t};
@@ -1 +0,0 @@
1
- import{C as e,b as t,c as n,i as r,o as i,r as a}from"./index-DcfzJOIq.js";var o=e(t(),1),s=n();function c(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function l(e){return e?new Date(e*1e3).toLocaleString():`—`}function u(){(0,o.useEffect)(()=>{document.title=`${r(`nav.profiles`)} — Wurk`},[]);let{data:e,isLoading:t}=i({queryKey:[`profiles`],queryFn:async()=>{let e=await fetch(`/wurk/api/profiles`);if(!e.ok)throw Error(`profiles request failed: ${e.status}`);return e.json()},refetchInterval:5e3});return t?(0,s.jsx)(`div`,{className:`obs`,children:(0,s.jsx)(a,{rows:8,cols:6})}):Array.isArray(e)?(0,s.jsxs)(`div`,{className:`obs`,children:[(0,s.jsxs)(`div`,{className:`obs-pagehead`,children:[(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`h1`,{children:r(`nav.profiles`)}),(0,s.jsx)(`p`,{className:`obs-panel__sub`,children:r(`summaries.profiles`)})]}),(0,s.jsx)(`span`,{className:`obs-chip obs-chip--active`,children:e.length.toLocaleString()})]}),e.length===0?(0,s.jsx)(`div`,{className:`obs-card obs-empty`,children:r(`common.empty`)}):(0,s.jsx)(`div`,{className:`obs-card obs-table`,children:(0,s.jsx)(`div`,{className:`obs-tablescroll`,children:(0,s.jsxs)(`table`,{children:[(0,s.jsx)(`thead`,{children:(0,s.jsxs)(`tr`,{children:[(0,s.jsx)(`th`,{children:`Type`}),(0,s.jsx)(`th`,{children:`JID`}),(0,s.jsx)(`th`,{children:`Started`}),(0,s.jsx)(`th`,{children:`Elapsed`}),(0,s.jsx)(`th`,{children:`Size`}),(0,s.jsx)(`th`,{})]})}),(0,s.jsx)(`tbody`,{children:e.map(e=>(0,s.jsxs)(`tr`,{children:[(0,s.jsx)(`td`,{style:{fontWeight:500,color:`var(--obs-text)`},children:e.type}),(0,s.jsx)(`td`,{children:(0,s.jsx)(`span`,{className:`obs-mono-cell`,children:e.jid})}),(0,s.jsx)(`td`,{children:l(e.started_at)}),(0,s.jsxs)(`td`,{children:[e.elapsed.toLocaleString(),` ms`]}),(0,s.jsx)(`td`,{children:c(e.size)}),(0,s.jsx)(`td`,{style:{textAlign:`end`},children:(0,s.jsxs)(`a`,{className:`obs-btn obs-btn--ghost obs-btn--sm`,href:`/wurk/profiles/${encodeURIComponent(e.key)}`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,s.jsx)(`i`,{className:`fa-solid fa-up-right-from-square`,"aria-hidden":`true`}),` Open`]})})]},e.key))})]})})})]}):(0,s.jsx)(`div`,{className:`obs`,children:(0,s.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:r(`common.error`)})})}export{u as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./useMutation-NUbe15ar.js";import{C as t,a as n,b as r,c as i,i as a,o,r as s,s as c,y as l}from"./index-DcfzJOIq.js";import{a as u,n as d,o as f,t as p}from"./utils-DDJC7tJV.js";import{n as m,t as h}from"./usePageParam-BDV1DCDQ.js";import{n as g,t as _}from"./useSort-BPPxnBBo.js";import{t as v}from"./PageHeader-B-0cTQeM.js";import{t as y}from"./Modal-CvD-1IKA.js";import{t as b}from"./ArgsValue-CiJzEwxS.js";import{t as x}from"./JobDetailModal-DKYvp6QS.js";var S=t(r(),1),C=l(),w=i();function T({tip:e,children:t}){let[n,r]=(0,S.useState)(null),i=(0,S.useRef)(null),a=(0,S.useId)();return(0,w.jsxs)(`span`,{ref:i,onMouseEnter:()=>{let e=i.current?.getBoundingClientRect();e&&r({x:e.left+e.width/2,y:e.top})},onMouseLeave:()=>r(null),style:{display:`inline-flex`},children:[(0,S.isValidElement)(t)?(0,S.cloneElement)(t,{"aria-describedby":a}):t,n&&(0,C.createPortal)((0,w.jsx)(`div`,{id:a,role:`tooltip`,style:{position:`fixed`,left:n.x,top:n.y-8,transform:`translate(-50%, -100%)`,maxWidth:260,background:`var(--surface-strong)`,color:`var(--text)`,border:`1px solid var(--border-strong)`,padding:`0.4rem 0.6rem`,borderRadius:6,fontSize:12,lineHeight:1.35,zIndex:9999,pointerEvents:`none`,boxShadow:`0 4px 14px rgba(0, 0, 0, 0.45)`},children:e}),document.body)]})}var E=25,D={jid:e=>e.jid,class:e=>e.class,args:e=>p(e.args),enqueued:e=>e.enqueued_at};function O({name:t}){let[r,i]=h(),[l,v]=(0,S.useState)(null),{data:y}=n(),C=y?.read_only??!1,T=c(),{data:O,isLoading:k,isError:A}=o({queryKey:[`queue`,t,r],queryFn:()=>fetch(`/wurk/api/queues/${encodeURIComponent(t)}?page=${r-1}&count=${E}`).then(e=>e.json())}),j=e({mutationFn:async e=>{let n=await fetch(`/wurk/api/queues/${encodeURIComponent(t)}/delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jid:e})});if(!n.ok)throw Error(`Delete failed (${n.status})`);return n},onSuccess:()=>{T.invalidateQueries({queryKey:[`queue`,t]}),T.invalidateQueries({queryKey:[`queues`]}),T.invalidateQueries({queryKey:[`stats`]})}}),{sorted:M,sort:N,toggle:P}=_(O?.jobs??[],D);return k?(0,w.jsx)(s,{rows:6,cols:5}):A||!O?(0,w.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}):(0,w.jsxs)(`div`,{className:`qjobs`,children:[(0,w.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.75rem`,marginBottom:`1rem`},children:[(0,w.jsxs)(`span`,{style:{color:`var(--text-muted)`,fontSize:13},children:[O.size.toLocaleString(),` jobs · `,(0,w.jsxs)(`span`,{title:`${O.latency.toFixed(3)}s`,children:[`latency `,d(O.latency)]})]}),O.paused&&(0,w.jsx)(`span`,{className:`badge badge-warning`,children:a(`dashboard.paused`)})]}),M.length===0?(0,w.jsx)(`div`,{className:`empty-state`,children:a(`common.empty`)}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`div`,{className:`table-wrapper`,children:(0,w.jsxs)(`table`,{children:[(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{children:[(0,w.jsx)(g,{label:a(`table.jid`),sortKey:`jid`,sort:N,onSort:P}),(0,w.jsx)(g,{label:a(`table.class`),sortKey:`class`,sort:N,onSort:P}),(0,w.jsx)(g,{label:a(`table.args`),sortKey:`args`,sort:N,onSort:P}),(0,w.jsx)(g,{label:a(`table.enqueued_at`),sortKey:`enqueued`,sort:N,onSort:P}),!C&&(0,w.jsx)(`th`,{className:`row-action`})]})}),(0,w.jsx)(`tbody`,{children:M.map(e=>{let n=p(e.args);return(0,w.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>v({jid:e.jid,klass:e.class,args:e.args,queue:t,enqueued_at:e.enqueued_at}),children:[(0,w.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:f(e.jid,12)}),(0,w.jsx)(`td`,{style:{fontWeight:500},children:e.class}),(0,w.jsx)(`td`,{children:(0,w.jsx)(b,{str:n,max:60})}),(0,w.jsx)(`td`,{children:u(e.enqueued_at)}),!C&&(0,w.jsx)(`td`,{className:`row-action`,onClick:e=>e.stopPropagation(),children:(0,w.jsx)(`button`,{className:`btn btn-sm btn-danger`,disabled:j.isPending,onClick:()=>{window.confirm(a(`actions.confirm`,{action:a(`actions.delete`),scope:a(`actions.scope_this_job`)}))&&j.mutate(e.jid)},children:a(`actions.delete`)})})]},e.jid)})})]})}),(0,w.jsx)(m,{page:r,total:O.size,count:E,onChange:i})]}),(0,w.jsx)(x,{entry:l,onClose:()=>v(null)})]})}var k={name:e=>e.name,size:e=>e.size,latency:e=>e.latency,status:e=>e.paused?`paused`:`active`};function A(){let[t,r]=(0,S.useState)(null),{data:i}=n(),l=i?.read_only??!1,u=c();(0,S.useEffect)(()=>{document.title=`${a(`nav.queues`)} — Wurk`},[]);let{data:f,isLoading:p,isError:m}=o({queryKey:[`queues`],queryFn:()=>fetch(`/wurk/api/queues`).then(e=>e.json()),refetchInterval:5e3}),h=e({mutationFn:async e=>{let t=await fetch(`/wurk/api/queues/${encodeURIComponent(e)}/clear`,{method:`POST`});if(!t.ok)throw Error(`Clear failed (${t.status})`);return t},onSuccess:(e,t)=>{u.invalidateQueries({queryKey:[`queues`]}),u.invalidateQueries({queryKey:[`queue`,t]}),u.invalidateQueries({queryKey:[`stats`]})}}),b=e({mutationFn:async({name:e,paused:t})=>{let n=t?`unpause`:`pause`,r=await fetch(`/wurk/api/queues/${encodeURIComponent(e)}/${n}`,{method:`POST`});if(!r.ok)throw Error(`${n} failed (${r.status})`);return r},onSuccess:(e,{name:t})=>{u.invalidateQueries({queryKey:[`queues`]}),u.invalidateQueries({queryKey:[`queue`,t]}),u.invalidateQueries({queryKey:[`stats`]})}}),{sorted:x,sort:C,toggle:E}=_(f??[],k);return p?(0,w.jsxs)(`div`,{children:[(0,w.jsx)(v,{icon:`fa-layer-group`,title:a(`nav.queues`),summary:a(`summaries.queues`)}),(0,w.jsx)(s,{rows:8,cols:5})]}):m||!f?(0,w.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:a(`common.error`)}):(0,w.jsxs)(`div`,{children:[(0,w.jsx)(v,{icon:`fa-layer-group`,title:a(`nav.queues`),summary:a(`summaries.queues`)}),x.length===0?(0,w.jsx)(`div`,{className:`empty-state`,children:a(`common.empty`)}):(0,w.jsx)(`div`,{className:`table-wrapper`,children:(0,w.jsxs)(`table`,{children:[(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{children:[(0,w.jsx)(g,{label:`Name`,sortKey:`name`,sort:C,onSort:E}),(0,w.jsx)(g,{label:a(`table.size`),sortKey:`size`,sort:C,onSort:E}),(0,w.jsx)(g,{label:a(`table.latency`),sortKey:`latency`,sort:C,onSort:E}),(0,w.jsx)(g,{label:a(`table.status`),sortKey:`status`,sort:C,onSort:E}),!l&&(0,w.jsx)(`th`,{className:`row-action`})]})}),(0,w.jsx)(`tbody`,{children:x.map(e=>(0,w.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>r(e.name),children:[(0,w.jsx)(`td`,{style:{fontWeight:500},children:e.name}),(0,w.jsx)(`td`,{children:e.size.toLocaleString()}),(0,w.jsx)(`td`,{title:`${e.latency.toFixed(3)}s`,children:d(e.latency)}),(0,w.jsx)(`td`,{children:e.paused?(0,w.jsx)(`span`,{className:`badge badge-warning`,children:a(`dashboard.paused`)}):(0,w.jsx)(`span`,{className:`badge badge-success`,children:`Active`})}),!l&&(0,w.jsx)(`td`,{className:`row-action`,onClick:e=>e.stopPropagation(),children:(0,w.jsxs)(`div`,{style:{display:`flex`,gap:`0.4rem`,justifyContent:`flex-end`},children:[(0,w.jsx)(T,{tip:e.paused?a(`actions.unpause_hint`):a(`actions.pause_hint`),children:(0,w.jsx)(`button`,{className:`btn btn-sm`,disabled:b.isPending,onClick:()=>b.mutate({name:e.name,paused:e.paused}),children:e.paused?a(`actions.unpause`):a(`actions.pause`)})}),(0,w.jsx)(`button`,{className:`btn btn-sm btn-danger`,disabled:h.isPending,onClick:()=>{window.confirm(a(`actions.confirm_clear_queue`,{name:e.name}))&&h.mutate(e.name)},children:a(`actions.clear`)})]})})]},e.name))})]})}),(0,w.jsx)(y,{open:t!==null,onClose:()=>r(null),title:t??``,width:780,children:t&&(0,w.jsx)(O,{name:t})})]})}export{A as default};
@@ -1 +0,0 @@
1
- import{C as e,a as t,b as n,c as r,i,o as a,r as o}from"./index-DcfzJOIq.js";import{a as s,i as c,o as l,t as u}from"./utils-DDJC7tJV.js";import{n as d,t as f}from"./usePageParam-BDV1DCDQ.js";import{n as p,t as m}from"./useSort-BPPxnBBo.js";import{t as h}from"./PageHeader-B-0cTQeM.js";import{t as g}from"./ArgsValue-CiJzEwxS.js";import{t as _}from"./JobDetailModal-DKYvp6QS.js";import{i as v,n as y,r as b,t as x}from"./useJobSetActions-BCW6DHSe.js";var S=e(n(),1),C=r(),w=25,T={klass:e=>e.klass,args:e=>u(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,retry_count:e=>e.retry_count,at:e=>e.at},E=[{cmd:`retry`,label:i(`actions.retry`)},{cmd:`delete`,label:i(`actions.delete`),danger:!0},{cmd:`kill`,label:i(`actions.kill`),danger:!0}],D=[{cmd:`retry`,label:i(`actions.retry`)},{cmd:`kill`,label:i(`actions.kill`),danger:!0},{cmd:`delete`,label:i(`actions.delete`),danger:!0}];function O(){let[e,n]=f(),[r,O]=(0,S.useState)(null),[k,A]=(0,S.useState)(null),{data:j}=t(),M=j?.read_only??!1,N=b(),{single:P,bulk:F,all:I}=y(`retries`),L=P.isPending||F.isPending||I.isPending;(0,S.useEffect)(()=>{document.title=`${i(`nav.retries`)} — Wurk`},[]);let{data:R,isLoading:z,isError:B}=a({queryKey:[`retries`,e],queryFn:()=>fetch(`/wurk/api/retries?page=${e-1}&count=${w}`).then(e=>e.json())}),{sorted:V,sort:H,toggle:U}=m(R?.entries??[],T),W=V.map(x);if(z)return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-rotate-right`,title:i(`nav.retries`),summary:i(`summaries.retries`)}),(0,C.jsx)(o,{rows:8,cols:7})]});if(B||!R)return(0,C.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:i(`common.error`)});let G=W.length>0&&W.every(e=>N.selected.has(e));return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-rotate-right`,title:i(`nav.retries`),summary:i(`summaries.retries`),children:(0,C.jsx)(`span`,{className:`badge badge-warning`,children:R.total.toLocaleString()})}),V.length===0?(0,C.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)}):(0,C.jsxs)(C.Fragment,{children:[!M&&(0,C.jsx)(v,{bulk:E,all:D,selectedCount:N.count,total:R.total,pending:L,onBulk:e=>F.mutate({keys:[...N.selected],cmd:e},{onSuccess:N.clear}),onAll:e=>I.mutate(e,{onSuccess:N.clear})}),(0,C.jsx)(`div`,{className:`table-wrapper`,children:(0,C.jsxs)(`table`,{children:[(0,C.jsx)(`thead`,{children:(0,C.jsxs)(`tr`,{children:[!M&&(0,C.jsx)(`th`,{className:`row-action`,children:(0,C.jsx)(`input`,{type:`checkbox`,checked:G,onChange:()=>N.toggleAll(W),"aria-label":`Select all`})}),(0,C.jsx)(p,{label:i(`table.class`),sortKey:`klass`,sort:H,onSort:U}),(0,C.jsx)(p,{label:i(`table.args`),sortKey:`args`,sort:H,onSort:U}),(0,C.jsx)(p,{label:i(`table.error`),sortKey:`error_class`,sort:H,onSort:U}),(0,C.jsx)(p,{label:i(`table.message`),sortKey:`error_message`,sort:H,onSort:U}),(0,C.jsx)(p,{label:i(`table.count`),sortKey:`retry_count`,sort:H,onSort:U}),(0,C.jsx)(p,{label:i(`table.retry_at`),sortKey:`at`,sort:H,onSort:U})]})}),(0,C.jsx)(`tbody`,{children:V.map(e=>{let t=u(e.args),n=x(e);return(0,C.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>{O(e),A(n)},children:[!M&&(0,C.jsx)(`td`,{className:`row-action`,onClick:e=>e.stopPropagation(),children:(0,C.jsx)(`input`,{type:`checkbox`,checked:N.selected.has(n),onChange:()=>N.toggle(n),"aria-label":`Select job`})}),(0,C.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,C.jsx)(`td`,{children:(0,C.jsx)(g,{str:t,max:40})}),(0,C.jsx)(`td`,{title:e.error_class??``,style:{color:`var(--danger)`},children:l(e.error_class,30)}),(0,C.jsx)(`td`,{title:e.error_message??``,children:l(e.error_message,50)}),(0,C.jsx)(`td`,{style:{color:`var(--warning)`},children:e.retry_count}),(0,C.jsx)(`td`,{title:c(e.at),children:s(e.at)})]},e.jid)})})]})}),(0,C.jsx)(d,{page:e,total:R.total,count:w,onChange:n})]}),(0,C.jsx)(_,{entry:r,atLabel:i(`table.retry_at`),actions:M?void 0:E,pending:P.isPending,onAction:e=>k&&P.mutate({key:k,cmd:e},{onSuccess:()=>{O(null),A(null)}}),onClose:()=>{O(null),A(null)}})]})}export{O as default};
@@ -1 +0,0 @@
1
- import{C as e,a as t,b as n,c as r,i,o as a,r as o}from"./index-DcfzJOIq.js";import{a as s,i as c,o as l,t as u}from"./utils-DDJC7tJV.js";import{n as d,t as f}from"./usePageParam-BDV1DCDQ.js";import{n as p,t as m}from"./useSort-BPPxnBBo.js";import{t as h}from"./PageHeader-B-0cTQeM.js";import{t as g}from"./ArgsValue-CiJzEwxS.js";import{t as _}from"./JobDetailModal-DKYvp6QS.js";import{i as v,n as y,r as b,t as x}from"./useJobSetActions-BCW6DHSe.js";var S=e(n(),1),C=r(),w=25,T={jid:e=>e.jid,klass:e=>e.klass,args:e=>u(e.args),at:e=>e.at},E=[{cmd:`add_to_queue`,label:i(`actions.add_to_queue`)},{cmd:`delete`,label:i(`actions.delete`),danger:!0}];function D(){let[e,n]=f(),[r,D]=(0,S.useState)(null),[O,k]=(0,S.useState)(null),{data:A}=t(),j=A?.read_only??!1,M=b(),{single:N,bulk:P,all:F}=y(`scheduled`),I=N.isPending||P.isPending||F.isPending;(0,S.useEffect)(()=>{document.title=`${i(`nav.scheduled`)} — Wurk`},[]);let{data:L,isLoading:R,isError:z}=a({queryKey:[`scheduled`,e],queryFn:()=>fetch(`/wurk/api/scheduled?page=${e-1}&count=${w}`).then(e=>e.json())}),{sorted:B,sort:V,toggle:H}=m(L?.entries??[],T),U=B.map(x);if(R)return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-clock`,title:i(`nav.scheduled`),summary:i(`summaries.scheduled`)}),(0,C.jsx)(o,{rows:8,cols:5})]});if(z||!L)return(0,C.jsx)(`div`,{className:`empty-state`,style:{color:`var(--danger)`},children:i(`common.error`)});let W=U.length>0&&U.every(e=>M.selected.has(e));return(0,C.jsxs)(`div`,{children:[(0,C.jsx)(h,{icon:`fa-clock`,title:i(`nav.scheduled`),summary:i(`summaries.scheduled`),children:(0,C.jsx)(`span`,{className:`badge badge-accent`,children:L.total.toLocaleString()})}),B.length===0?(0,C.jsx)(`div`,{className:`empty-state`,children:i(`common.empty`)}):(0,C.jsxs)(C.Fragment,{children:[!j&&(0,C.jsx)(v,{bulk:E,all:E,selectedCount:M.count,total:L.total,pending:I,onBulk:e=>P.mutate({keys:[...M.selected],cmd:e},{onSuccess:M.clear}),onAll:e=>F.mutate(e,{onSuccess:M.clear})}),(0,C.jsx)(`div`,{className:`table-wrapper`,children:(0,C.jsxs)(`table`,{children:[(0,C.jsx)(`thead`,{children:(0,C.jsxs)(`tr`,{children:[!j&&(0,C.jsx)(`th`,{className:`row-action`,children:(0,C.jsx)(`input`,{type:`checkbox`,checked:W,onChange:()=>M.toggleAll(U),"aria-label":`Select all`})}),(0,C.jsx)(p,{label:i(`table.jid`),sortKey:`jid`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.class`),sortKey:`klass`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.args`),sortKey:`args`,sort:V,onSort:H}),(0,C.jsx)(p,{label:i(`table.scheduled_at`),sortKey:`at`,sort:V,onSort:H})]})}),(0,C.jsx)(`tbody`,{children:B.map(e=>{let t=u(e.args),n=x(e);return(0,C.jsxs)(`tr`,{className:`row-clickable`,onClick:()=>{D(e),k(n)},children:[!j&&(0,C.jsx)(`td`,{className:`row-action`,onClick:e=>e.stopPropagation(),children:(0,C.jsx)(`input`,{type:`checkbox`,checked:M.selected.has(n),onChange:()=>M.toggle(n),"aria-label":`Select job`})}),(0,C.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:l(e.jid,12)}),(0,C.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,C.jsx)(`td`,{children:(0,C.jsx)(g,{str:t,max:60})}),(0,C.jsx)(`td`,{title:c(e.at),children:s(e.at)})]},e.jid)})})]})}),(0,C.jsx)(d,{page:e,total:L.total,count:w,onChange:n})]}),(0,C.jsx)(_,{entry:r,atLabel:i(`table.scheduled_at`),actions:j?void 0:E,pending:N.isPending,onAction:e=>O&&N.mutate({key:O,cmd:e},{onSuccess:()=>{D(null),k(null)}}),onClose:()=>{D(null),k(null)}})]})}export{D as default};
@@ -1 +0,0 @@
1
- import{C as e,b as t,c as n,i as r,o as i}from"./index-DcfzJOIq.js";import{a,o,t as s}from"./utils-DDJC7tJV.js";import{t as c}from"./PageHeader-B-0cTQeM.js";var l=e(t(),1),u=n();function d(e,t,n){let r=e.toLowerCase();return(t??``).toLowerCase().includes(r)||(n??``).toLowerCase().includes(r)}function f(){let[e,t]=(0,l.useState)(``),[n,f]=(0,l.useState)(``);(0,l.useEffect)(()=>{document.title=`${r(`nav.search`)} — Wurk`},[]);let{data:p}=i({queryKey:[`search-retries`],queryFn:()=>fetch(`/wurk/api/retries?page=0&count=200`).then(e=>e.json()),enabled:n.length>=2}),{data:m}=i({queryKey:[`search-scheduled`],queryFn:()=>fetch(`/wurk/api/scheduled?page=0&count=200`).then(e=>e.json()),enabled:n.length>=2}),{data:h}=i({queryKey:[`search-dead`],queryFn:()=>fetch(`/wurk/api/dead?page=0&count=200`).then(e=>e.json()),enabled:n.length>=2}),{data:g}=i({queryKey:[`search-suggest`],queryFn:()=>Promise.all([`/wurk/api/retries?page=0&count=10`,`/wurk/api/dead?page=0&count=10`].map(e=>fetch(e).then(e=>e.json()))),staleTime:3e4}),_=Array.from(new Set((g??[]).flatMap(e=>(e.entries??[]).map(e=>e.klass)).filter(Boolean))).slice(0,5),v=e=>{t(e),f(e)},y=n.length>=2?(p?.entries??[]).filter(e=>d(n,e.jid,e.klass)):[],b=n.length>=2?(m?.entries??[]).filter(e=>d(n,e.jid,e.klass)):[],x=n.length>=2?(h?.entries??[]).filter(e=>d(n,e.jid,e.klass)):[],S=t=>{t.preventDefault(),f(e)},C=y.length+b.length+x.length;return(0,u.jsxs)(`div`,{children:[(0,u.jsx)(c,{icon:`fa-magnifying-glass`,title:r(`nav.search`),summary:r(`summaries.search`)}),(0,u.jsxs)(`form`,{onSubmit:S,style:{display:`flex`,gap:`0.75rem`,marginBottom:`2rem`},children:[(0,u.jsx)(`input`,{className:`input`,type:`text`,placeholder:`Search by JID or class name…`,value:e,onChange:e=>t(e.target.value),style:{flex:1,maxWidth:480}}),(0,u.jsx)(`button`,{type:`submit`,className:`btn btn-accent`,children:r(`actions.search`)})]}),n.length<2&&(0,u.jsxs)(`div`,{className:`search-empty`,children:[(0,u.jsx)(`div`,{className:`search-empty__icon`,children:(0,u.jsx)(`i`,{className:`fa-solid fa-magnifying-glass`})}),(0,u.jsx)(`p`,{className:`search-empty__title`,children:r(`search.emptyTitle`)}),(0,u.jsx)(`p`,{className:`search-empty__hint`,children:r(`search.emptyHint`)}),_.length>0&&(0,u.jsxs)(`div`,{className:`search-empty__chips`,children:[(0,u.jsx)(`span`,{className:`search-empty__chips-label`,children:r(`search.try`)}),_.map(e=>(0,u.jsx)(`button`,{type:`button`,className:`chip`,onClick:()=>v(e),children:e},e))]})]}),n.length>=2&&(0,u.jsxs)(`div`,{style:{marginBottom:`0.75rem`,color:`var(--text-muted)`,fontSize:13},children:[C,` result`,C===1?``:`s`,` for "`,n,`"`]}),y.length>0&&(0,u.jsxs)(`div`,{style:{marginBottom:`2rem`},children:[(0,u.jsxs)(`h2`,{className:`section-title`,style:{marginBottom:`0.75rem`},children:[`Retries `,(0,u.jsx)(`span`,{className:`badge badge-warning`,children:y.length})]}),(0,u.jsx)(`div`,{className:`table-wrapper`,children:(0,u.jsxs)(`table`,{children:[(0,u.jsx)(`thead`,{children:(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`th`,{children:r(`table.jid`)}),(0,u.jsx)(`th`,{children:r(`table.class`)}),(0,u.jsx)(`th`,{children:r(`table.args`)}),(0,u.jsx)(`th`,{children:r(`table.error`)}),(0,u.jsx)(`th`,{children:`Count`}),(0,u.jsx)(`th`,{children:r(`table.retry_at`)})]})}),(0,u.jsx)(`tbody`,{children:y.map(e=>{let t=s(e.args);return(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:o(e.jid,12)}),(0,u.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,u.jsx)(`td`,{title:t,children:o(t,40)}),(0,u.jsx)(`td`,{title:e.error_class??``,style:{color:`var(--danger)`},children:o(e.error_class,25)}),(0,u.jsx)(`td`,{children:e.retry_count}),(0,u.jsx)(`td`,{children:a(e.retry_at)})]},e.jid)})})]})})]}),b.length>0&&(0,u.jsxs)(`div`,{style:{marginBottom:`2rem`},children:[(0,u.jsxs)(`h2`,{className:`section-title`,style:{marginBottom:`0.75rem`},children:[`Scheduled `,(0,u.jsx)(`span`,{className:`badge badge-accent`,children:b.length})]}),(0,u.jsx)(`div`,{className:`table-wrapper`,children:(0,u.jsxs)(`table`,{children:[(0,u.jsx)(`thead`,{children:(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`th`,{children:r(`table.jid`)}),(0,u.jsx)(`th`,{children:r(`table.class`)}),(0,u.jsx)(`th`,{children:r(`table.args`)}),(0,u.jsx)(`th`,{children:r(`table.scheduled_at`)})]})}),(0,u.jsx)(`tbody`,{children:b.map(e=>{let t=s(e.args);return(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:o(e.jid,12)}),(0,u.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,u.jsx)(`td`,{title:t,children:o(t,60)}),(0,u.jsx)(`td`,{children:a(e.at)})]},e.jid)})})]})})]}),x.length>0&&(0,u.jsxs)(`div`,{style:{marginBottom:`2rem`},children:[(0,u.jsxs)(`h2`,{className:`section-title`,style:{marginBottom:`0.75rem`},children:[`Dead `,(0,u.jsx)(`span`,{className:`badge badge-danger`,children:x.length})]}),(0,u.jsx)(`div`,{className:`table-wrapper`,children:(0,u.jsxs)(`table`,{children:[(0,u.jsx)(`thead`,{children:(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`th`,{children:r(`table.jid`)}),(0,u.jsx)(`th`,{children:r(`table.class`)}),(0,u.jsx)(`th`,{children:r(`table.args`)}),(0,u.jsx)(`th`,{children:r(`table.error`)}),(0,u.jsx)(`th`,{children:r(`table.failed_at`)})]})}),(0,u.jsx)(`tbody`,{children:x.map(e=>{let t=s(e.args);return(0,u.jsxs)(`tr`,{children:[(0,u.jsx)(`td`,{title:e.jid,style:{fontFamily:`monospace`,fontSize:12,color:`var(--text-muted)`},children:o(e.jid,12)}),(0,u.jsx)(`td`,{style:{fontWeight:500},children:e.klass}),(0,u.jsx)(`td`,{title:t,children:o(t,40)}),(0,u.jsx)(`td`,{title:e.error_class??``,style:{color:`var(--danger)`},children:o(e.error_class,25)}),(0,u.jsx)(`td`,{children:a(e.failed_at)})]},e.jid)})})]})})]}),n.length>=2&&C===0&&(0,u.jsx)(`div`,{className:`empty-state`,children:r(`common.empty`)})]})}export{f as default};