wurk 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -1
- data/lib/wurk/rails_boot.rb +13 -3
- data/lib/wurk/version.rb +1 -1
- data/vendor/assets/dashboard/assets/{ArgsValue-DsPb_KZ-.js → ArgsValue-_MYkd_vA.js} +1 -1
- data/vendor/assets/dashboard/assets/{BatchDetail-BCIXJOpZ.js → BatchDetail-DPmg-hle.js} +1 -1
- data/vendor/assets/dashboard/assets/{Batches-IjaQfXW6.js → Batches-NTgqSlvD.js} +1 -1
- data/vendor/assets/dashboard/assets/{Busy-CaQrf1Ve.js → Busy-2rxcLJMq.js} +1 -1
- data/vendor/assets/dashboard/assets/{Cron-B18EHn_Y.js → Cron-BFpJgKYb.js} +1 -1
- data/vendor/assets/dashboard/assets/{Dashboard-DdT5ZaUg.js → Dashboard-C8VOE2S7.js} +1 -1
- data/vendor/assets/dashboard/assets/{Dead-DWIy-Mu8.js → Dead-Dse2YEbZ.js} +1 -1
- data/vendor/assets/dashboard/assets/{Extension-BjBUWhHf.js → Extension-BIc2c1zG.js} +1 -1
- data/vendor/assets/dashboard/assets/{FilterBox-DwH3PXXt.js → FilterBox-BfZm8ZzH.js} +1 -1
- data/vendor/assets/dashboard/assets/{FlowDetail-DnexL72n.js → FlowDetail-BWddOtgf.js} +1 -1
- data/vendor/assets/dashboard/assets/{FlowState-Cr4aX6-d.js → FlowState-6lGsojxE.js} +1 -1
- data/vendor/assets/dashboard/assets/{Flows-DO6EimbZ.js → Flows-BgKTlYwI.js} +1 -1
- data/vendor/assets/dashboard/assets/{JobDetailModal-aPjgq-U9.js → JobDetailModal-BrjmO98c.js} +1 -1
- data/vendor/assets/dashboard/assets/{Limiters-DxpwWCNe.js → Limiters-DeUkfbcg.js} +1 -1
- data/vendor/assets/dashboard/assets/{Metrics-C3JL1GIH.js → Metrics-DzmAgBFG.js} +1 -1
- data/vendor/assets/dashboard/assets/{NotFound-BfP9uAV9.js → NotFound-CQLLXIfa.js} +1 -1
- data/vendor/assets/dashboard/assets/{PageHeader-DbC97afG.js → PageHeader-CeSaqysY.js} +1 -1
- data/vendor/assets/dashboard/assets/{Profiles-BcaHreMe.js → Profiles-CI2i2tl8.js} +1 -1
- data/vendor/assets/dashboard/assets/{Queues-ZlBc5tyD.js → Queues-DUCQ_3St.js} +1 -1
- data/vendor/assets/dashboard/assets/{Retries-Bg3nkeiL.js → Retries-Dc2RFuTf.js} +1 -1
- data/vendor/assets/dashboard/assets/{Scheduled-BrMZPZGl.js → Scheduled-B8zOKCLC.js} +1 -1
- data/vendor/assets/dashboard/assets/{Search-B5X5pGht.js → Search-x0eS-V-U.js} +1 -1
- data/vendor/assets/dashboard/assets/{charts-uDyf4PN0.js → charts-VggSMFGc.js} +1 -1
- data/vendor/assets/dashboard/assets/i18n-B6AbnmJn.js +1 -0
- data/vendor/assets/dashboard/assets/index-CTWV8VL4.js +141 -0
- data/vendor/assets/dashboard/assets/index-WpZjU076.css +1 -0
- data/vendor/assets/dashboard/assets/{useResetPageOnEmpty-O3-5rMk3.js → useResetPageOnEmpty-BsYWeStI.js} +1 -1
- data/vendor/assets/dashboard/assets/{useSort-xfnwjQAu.js → useSort-BWWfpnZH.js} +1 -1
- data/vendor/assets/dashboard/assets/{utils-BIKHwNKB.js → utils-DnzJXljj.js} +1 -1
- data/vendor/assets/dashboard/index.html +3 -3
- data/vendor/assets/dashboard/wurk-manifest.json +2 -2
- metadata +30 -30
- data/vendor/assets/dashboard/assets/i18n-CJeYfeVt.js +0 -1
- data/vendor/assets/dashboard/assets/index-B36QCAf-.css +0 -1
- data/vendor/assets/dashboard/assets/index-DQujgZgH.js +0 -141
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,E as t,F as n,I as r,_ as i,c as a,d as o,j as s,l as c,m as l,o as u,p as d,q as f,u as p,z as m}from"./i18n-CJeYfeVt.js";import{S as h,f as g,h as _,o as v,r as y,s as b,v as x,x as S}from"./index-DQujgZgH.js";import{i as ee,o as C,r as w,u as te}from"./utils-BIKHwNKB.js";import{t as ne}from"./PageHeader-DbC97afG.js";import{n as T,r as re,t as ie}from"./charts-uDyf4PN0.js";var E=i(`<span style=font-size:12px;margin-inline-start:8px>%`),D=i(`<div role=status>`),ae=i(`<div class=obs-tablescroll><table><thead><tr><th></th><th style=text-align:end></th><th style=text-align:end></th></tr></thead><tbody>`),oe=i(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> </span><div class=obs-seg role=tablist></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-stopwatch obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-gears obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div><div class=obs-chartbox></div></div><div class=obs-grid2><div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2><span class=obs-mono></span></div><div class=obs-chartbox></div></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title style=font-size:18px>`),se=i(`<button role=tab>`),ce=i(`<div class=empty-state style=height:300px;display:grid;place-items:center>`),O=i(`<div class=empty-state style=height:240px;display:grid;place-items:center>`),le=i(`<div class=obs-empty>`),ue=i(`<tr><td style=color:var(--obs-text)><button type=button class=obs-jobbtn><span class=obs-jobdot></span></button></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),k=i(`<div style=display:flex;gap:1.5rem;margin-bottom:1rem><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600></div></div><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600;color:var(--danger)>`),A=i(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2></div><div class=obs-chartbox>`),j=[`var(--accent)`,`var(--series-1)`,`var(--series-2)`,`var(--series-3)`,`var(--series-4)`,`var(--series-5)`,`var(--series-6)`,`var(--series-7)`],M=e=>j[e%j.length],N=[`var(--mono-1)`,`var(--mono-2)`,`var(--mono-3)`,`var(--mono-4)`,`var(--mono-5)`,`var(--mono-6)`],P=[{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:43200}];function F(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 I(e){return s(t,{get when(){return e.pct!==null},get children(){return(()=>{let t=()=>e.pct>=0,n=()=>t()===e.goodWhenUp;return(()=>{var i=E(),a=i.firstChild;return p(i,()=>t()?`↑`:`↓`,a),p(i,()=>Math.abs(e.pct),a),r(e=>l(i,`color`,n()?`var(--success)`:`var(--danger)`)),i})()})()}})}var L=(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)])};function R(e){return(()=>{var t=D();return p(t,s(y,{height:`100%`})),r(n=>{var r=`${e.height}px`,i=u(`common.loading`);return r!==n.e&&l(t,`height`,n.e=r),i!==n.t&&d(t,`aria-label`,n.t=i),n},{e:void 0,t:void 0}),t})()}function z(){let[i,c]=m(2),v=h(),y=S(),[T,E]=m(v.klass??null),D=()=>{E(null),v.klass&&y(`/metrics`,{replace:!0})},k=()=>P[i()];f(()=>{document.title=`${u(`nav.metrics`)} — Wurk`});let A=x(()=>({queryKey:[`stats`],queryFn:()=>g(`${_()}/api/stats`),refetchInterval:5e3})),j=x(()=>({queryKey:[`history`,k().bucket,k().window],queryFn:()=>g(`${_()}/api/history/${k().bucket}?window=${k().window}`),refetchInterval:3e4})),M=x(()=>({queryKey:[`metrics`,k().minutes],queryFn:()=>g(`${_()}/api/metrics?minutes=${k().minutes}`),refetchInterval:3e4})),z=x(()=>({queryKey:[`queue-history`,k().bucket,k().window],queryFn:()=>g(`${_()}/api/queue-history/${k().bucket}?window=${k().window}`),refetchInterval:3e4})),B=n(()=>(j.data?.series??[]).map(e=>({...e,label:w(e.at,k().bucket,b)}))),V=n(()=>{let e=k(),t=`slice`in e?e.slice:void 0;return t?B().slice(-t):B()}),me=n(()=>V().some(e=>e.processed>0||e.failed>0)),H=n(()=>z.data?.queues??[]),U=n(()=>H()[0]?.points.map(e=>e.at)??[]),W=n(()=>L(U().map((e,t)=>({label:w(e,k().bucket,b),depth:H().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),G=n(()=>Math.max(0,...W().map(e=>e.depth))),K=n(()=>(M.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed})).sort((e,t)=>t.count-e.count)),q=n(()=>K().reduce((e,t)=>e+t.count,0)),J=n(()=>K().slice(0,6));return(()=>{var n=oe(),f=n.firstChild,m=f.firstChild;m.firstChild.nextSibling;var h=m.nextSibling,g=f.nextSibling,_=g.firstChild,v=_.firstChild,y=v.firstChild,b=v.nextSibling,x=b.nextSibling,S=_.nextSibling,w=S.firstChild,L=w.firstChild,H=w.nextSibling,U=H.nextSibling,K=S.nextSibling,Y=K.firstChild,he=Y.firstChild,X=Y.nextSibling,ge=X.nextSibling,_e=K.nextSibling.firstChild,ve=_e.firstChild,ye=_e.nextSibling,be=ye.nextSibling,xe=g.nextSibling,Se=xe.firstChild,Z=Se.firstChild,Ce=Z.firstChild,we=Ce.nextSibling,Q=Z.nextSibling.firstChild;Q.firstChild.nextSibling;var Te=Q.nextSibling;Te.firstChild.nextSibling;var Ee=Se.nextSibling,De=xe.nextSibling.firstChild,Oe=De.firstChild,ke=Oe.firstChild,Ae=ke.nextSibling,je=Oe.nextSibling,$=De.nextSibling,Me=$.firstChild.firstChild;return p(n,s(ne,{icon:`fa-chart-line`,get title(){return u(`nav.metrics`)},get summary(){return u(`summaries.metrics`)}}),f),p(m,()=>u(`metrics.time_range`),null),p(h,s(e,{each:P,children:(e,t)=>(()=>{var n=se();return n.$$click=()=>c(t()),p(n,()=>e.key),r(e=>{var r=t()===i(),o=t()===i()?`is-active`:``;return r!==e.e&&d(n,`aria-selected`,e.e=r),o!==e.t&&a(n,e.t=o),e},{e:void 0,t:void 0}),n})()})),p(y,()=>u(`metrics.total_processed`)),p(b,()=>C(A.data?.processed??0),null),p(b,s(I,{get pct(){return F(B(),`processed`)},goodWhenUp:!0}),null),p(x,()=>u(`metrics.across_all_queues`)),p(L,()=>u(`metrics.failed_jobs`)),p(H,()=>C(A.data?.failed??0),null),p(H,s(I,{get pct(){return F(B(),`failed`)},goodWhenUp:!1}),null),p(U,()=>u(`metrics.total_failures`)),p(he,()=>u(`metrics.avg_latency`)),p(X,(()=>{var e=o(()=>!!A.data);return()=>e()?ee(A.data.latency):`—`})()),p(ge,()=>u(`metrics.head_of_line`)),p(ve,()=>u(`metrics.active_workers`)),p(ye,()=>C(A.data?.processes??0)),p(be,(()=>{var e=o(()=>(A.data?.processes??0)>0);return()=>e()?u(`metrics.stable`):u(`metrics.no_workers`)})()),p(Ce,()=>u(`metrics.throughput_failures`)),p(we,()=>u(`metrics.throughput_sub`,{range:k().key})),p(Q,()=>u(`dashboard.processed`),null),p(Te,()=>u(`dashboard.failed`),null),p(Ee,s(t,{get when(){return!j.isPending},get fallback(){return s(R,{height:300})},get children(){return s(t,{get when(){return me()},get fallback(){return(()=>{var e=ce();return p(e,()=>u(`dashboard.no_history`)),e})()},get children(){return s(re,{get data(){return V()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,get series(){return[{key:`processed`,name:u(`dashboard.processed`),stroke:`var(--mono-1)`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:u(`dashboard.failed`),stroke:`var(--mono-3)`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),p(ke,()=>u(`metrics.queue_depth`)),p(Ae,(()=>{var e=o(()=>G()>0);return()=>e()?u(`metrics.peak`,{n:C(G())}):``})()),p(je,s(t,{get when(){return!z.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return W().length>0},get fallback(){return(()=>{var e=O();return p(e,()=>u(`metrics.no_queue_history`)),e})()},get children(){return s(ie,{get data(){return W().map(e=>({label:e.label,value:e.depth,color:e.depth===G()&&G()>0?`var(--mono-1)`:`var(--mono-6)`}))},height:240,get name(){return u(`metrics.queue_depth`)},yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),p(Me,()=>u(`metrics.top_job_types`)),p($,s(t,{get when(){return!M.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return J().length>0},get fallback(){return(()=>{var e=le();return p(e,()=>u(`common.empty`)),e})()},get children(){var t=ae(),n=t.firstChild.firstChild,i=n.firstChild.firstChild,a=i.nextSibling,c=a.nextSibling,f=n.nextSibling;return p(i,()=>u(`metrics.job_class`)),p(a,()=>u(`table.count`)),p(c,()=>u(`metrics.pct_total`)),p(f,s(e,{get each(){return J()},children:(e,t)=>(()=>{var n=ue(),i=n.firstChild,a=i.firstChild,s=a.firstChild,c=i.nextSibling,f=c.nextSibling,m=f.firstChild;return a.$$click=()=>E(e.klass),p(a,()=>te(e.klass.split(`::`).pop()??e.klass,36),null),p(c,()=>C(e.count)),p(f,(()=>{var t=o(()=>q()>0);return()=>t()?Math.round(e.count/q()*100):0})(),m),r(n=>{var r=e.klass,o=u(`metrics.view_job_detail`),c=N[t()%N.length];return r!==n.e&&d(i,`title`,n.e=r),o!==n.t&&d(a,`title`,n.t=o),c!==n.a&&l(s,`background`,n.a=c),n},{e:void 0,t:void 0,a:void 0}),n})()})),t}})}}),null),p(n,s(fe,{get range(){return k()}}),null),p(n,s(pe,{}),null),p(n,s(de,{get klass(){return T()},get minutes(){return k().minutes},onClose:D}),null),r(()=>d(h,`aria-label`,u(`metrics.time_range`))),n})()}function de(e){let r=x(()=>({queryKey:[`metrics-job`,e.klass,e.minutes],queryFn:()=>g(`${_()}/api/metrics/${encodeURIComponent(e.klass)}?minutes=${e.minutes}`),enabled:e.klass!==null})),i=n(()=>(r.data?.series??[]).map(e=>({label:w(e.at,`1m`,b),processed:e.p,failed:e.f,runtime_ms:e.ms}))),a=n(()=>i().some(e=>e.processed>0||e.failed>0)),o=n(()=>i().reduce((e,t)=>({processed:e.processed+t.processed,failed:e.failed+t.failed}),{processed:0,failed:0}));return s(v,{get open(){return e.klass!==null},get onClose(){return e.onClose},get title(){return e.klass??``},width:720,get children(){return s(t,{get when(){return e.klass},get children(){return[(()=>{var e=k(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild,a=i.nextSibling;return p(n,()=>u(`dashboard.processed`)),p(r,()=>C(o().processed)),p(i,()=>u(`dashboard.failed`)),p(a,()=>C(o().failed)),e})(),s(t,{get when(){return!r.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return!r.isError},get fallback(){return(()=>{var e=O();return p(e,()=>u(`common.error`)),e})()},get children(){return s(t,{get when(){return a()},get fallback(){return(()=>{var e=O();return p(e,()=>u(`dashboard.no_history`)),e})()},get children(){return s(T,{get data(){return i()},height:240,yAxisWidth:36,yDecimals:!1,xMinTickGap:48,legend:!0,get series(){return[{key:`processed`,name:u(`dashboard.processed`),stroke:`var(--mono-1)`,strokeWidth:2},{key:`failed`,name:u(`dashboard.failed`),stroke:`var(--mono-3)`,strokeWidth:1.5}]}})}})}})}})]}})}})}function fe(e){let r=x(()=>({queryKey:[`queue-history-lat`,e.range.bucket,e.range.window],queryFn:()=>g(`${_()}/api/queue-history/${e.range.bucket}?window=${e.range.window}`),refetchInterval:3e4})),i=n(()=>r.data?.queues??[]),a=n(()=>i().map((e,t)=>({key:`queue_${t}`,name:e.name}))),o=n(()=>i()[0]?.points.map(e=>e.at)??[]),c=n(()=>o().map((t,n)=>{let r={label:w(t,e.range.bucket,b)};return i().forEach((e,t)=>{r[a()[t].key]=e.points[n]?.latency??0}),r})),l=n(()=>a().map((e,t)=>({key:e.key,name:e.name,stroke:M(t),strokeWidth:2}))),d=n(()=>i().some(e=>e.points.some(e=>e.latency>0)));return s(t,{get when(){return d()},get children(){var e=A(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return p(n,()=>u(`metrics.queue_latency_seconds`)),p(r,s(T,{get data(){return c()},get series(){return l()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var B=new Set([`processed`,`failures`]);function pe(){let e=x(()=>({queryKey:[`history-snapshots`],queryFn:()=>g(`${_()}/api/history/snapshots?limit=1000`),refetchInterval:3e4})),r=n(()=>e.data?.snapshots??[]),i=n(()=>Array.from(new Set(r().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!B.has(t)&&typeof e[t]==`number`))))),a=n(()=>r().map(e=>{let t={label:w(e.at,`1m`,b)};for(let n of Object.keys(e))t[n]=e[n];return t})),c=n(()=>i().map((e,t)=>({key:e,name:e,stroke:M(t),strokeWidth:2})));return s(t,{get when(){return o(()=>r().length>0)()&&i().length>0},get children(){var e=A(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return p(n,()=>u(`metrics.historical_snapshots`)),p(r,s(T,{get data(){return a()},get series(){return c()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}c([`click`]);export{z as default};
|
|
1
|
+
import{C as e,E as t,F as n,I as r,_ as i,c as a,d as o,j as s,l as c,m as l,o as u,p as d,q as f,u as p,z as m}from"./i18n-B6AbnmJn.js";import{S as h,f as g,h as _,o as v,r as y,s as b,v as x,x as S}from"./index-CTWV8VL4.js";import{i as ee,o as C,r as w,u as te}from"./utils-DnzJXljj.js";import{t as ne}from"./PageHeader-CeSaqysY.js";import{n as T,r as re,t as ie}from"./charts-VggSMFGc.js";var E=i(`<span style=font-size:12px;margin-inline-start:8px>%`),D=i(`<div role=status>`),ae=i(`<div class=obs-tablescroll><table><thead><tr><th></th><th style=text-align:end></th><th style=text-align:end></th></tr></thead><tbody>`),oe=i(`<div class=obs><div class=obs-toolbar><span class=obs-toolbar__label><i class="fa-regular fa-calendar"aria-hidden=true></i> </span><div class=obs-seg role=tablist></div></div><div class=obs-metrics><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-circle-check obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-triangle-exclamation obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-stopwatch obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div><div class="obs-card obs-metric"><div class=obs-metric__head><span class=obs-mono></span><i class="fa-solid fa-gears obs-metric__icon"aria-hidden=true></i></div><span class=obs-metric__value></span><span class=obs-metric__sub></span></div></div><div class="obs-card obs-panel"><div class=obs-panel__head><div><h2 class=obs-panel__title></h2><p class=obs-panel__sub></p></div><div class=obs-legend><span><i class="dot dot--processed"></i> </span><span><i class="dot dot--failed"></i> </span></div></div><div class=obs-chartbox></div></div><div class=obs-grid2><div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2><span class=obs-mono></span></div><div class=obs-chartbox></div></div><div class="obs-card obs-table"><div class=obs-table__head><h2 class=obs-table__title style=font-size:18px>`),se=i(`<button role=tab>`),ce=i(`<div class=empty-state style=height:300px;display:grid;place-items:center>`),O=i(`<div class=empty-state style=height:240px;display:grid;place-items:center>`),le=i(`<div class=obs-empty>`),ue=i(`<tr><td style=color:var(--obs-text)><button type=button class=obs-jobbtn><span class=obs-jobdot></span></button></td><td style=text-align:end;font-variant-numeric:tabular-nums></td><td class=obs-pct style=text-align:end>%`),k=i(`<div style=display:flex;gap:1.5rem;margin-bottom:1rem><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600></div></div><div><div class=obs-mono></div><div style=font-size:18px;font-weight:600;color:var(--danger)>`),A=i(`<div class="obs-card obs-panel"><div class=obs-panel__head><h2 class=obs-panel__title style=font-size:18px></h2></div><div class=obs-chartbox>`),j=[`var(--accent)`,`var(--series-1)`,`var(--series-2)`,`var(--series-3)`,`var(--series-4)`,`var(--series-5)`,`var(--series-6)`,`var(--series-7)`],M=e=>j[e%j.length],N=[`var(--mono-1)`,`var(--mono-2)`,`var(--mono-3)`,`var(--mono-4)`,`var(--mono-5)`,`var(--mono-6)`],P=[{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:43200}];function F(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 I(e){return s(t,{get when(){return e.pct!==null},get children(){return(()=>{let t=()=>e.pct>=0,n=()=>t()===e.goodWhenUp;return(()=>{var i=E(),a=i.firstChild;return p(i,()=>t()?`↑`:`↓`,a),p(i,()=>Math.abs(e.pct),a),r(e=>l(i,`color`,n()?`var(--success)`:`var(--danger)`)),i})()})()}})}var L=(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)])};function R(e){return(()=>{var t=D();return p(t,s(y,{height:`100%`})),r(n=>{var r=`${e.height}px`,i=u(`common.loading`);return r!==n.e&&l(t,`height`,n.e=r),i!==n.t&&d(t,`aria-label`,n.t=i),n},{e:void 0,t:void 0}),t})()}function z(){let[i,c]=m(2),v=h(),y=S(),[T,E]=m(v.klass??null),D=()=>{E(null),v.klass&&y(`/metrics`,{replace:!0})},k=()=>P[i()];f(()=>{document.title=`${u(`nav.metrics`)} — Wurk`});let A=x(()=>({queryKey:[`stats`],queryFn:()=>g(`${_()}/api/stats`),refetchInterval:5e3})),j=x(()=>({queryKey:[`history`,k().bucket,k().window],queryFn:()=>g(`${_()}/api/history/${k().bucket}?window=${k().window}`),refetchInterval:3e4})),M=x(()=>({queryKey:[`metrics`,k().minutes],queryFn:()=>g(`${_()}/api/metrics?minutes=${k().minutes}`),refetchInterval:3e4})),z=x(()=>({queryKey:[`queue-history`,k().bucket,k().window],queryFn:()=>g(`${_()}/api/queue-history/${k().bucket}?window=${k().window}`),refetchInterval:3e4})),B=n(()=>(j.data?.series??[]).map(e=>({...e,label:w(e.at,k().bucket,b)}))),V=n(()=>{let e=k(),t=`slice`in e?e.slice:void 0;return t?B().slice(-t):B()}),me=n(()=>V().some(e=>e.processed>0||e.failed>0)),H=n(()=>z.data?.queues??[]),U=n(()=>H()[0]?.points.map(e=>e.at)??[]),W=n(()=>L(U().map((e,t)=>({label:w(e,k().bucket,b),depth:H().reduce((e,n)=>e+(n.points[t]?.size??0),0)})),16)),G=n(()=>Math.max(0,...W().map(e=>e.depth))),K=n(()=>(M.data?.top_jobs??[]).map(e=>({klass:e.klass,count:e.processed})).sort((e,t)=>t.count-e.count)),q=n(()=>K().reduce((e,t)=>e+t.count,0)),J=n(()=>K().slice(0,6));return(()=>{var n=oe(),f=n.firstChild,m=f.firstChild;m.firstChild.nextSibling;var h=m.nextSibling,g=f.nextSibling,_=g.firstChild,v=_.firstChild,y=v.firstChild,b=v.nextSibling,x=b.nextSibling,S=_.nextSibling,w=S.firstChild,L=w.firstChild,H=w.nextSibling,U=H.nextSibling,K=S.nextSibling,Y=K.firstChild,he=Y.firstChild,X=Y.nextSibling,ge=X.nextSibling,_e=K.nextSibling.firstChild,ve=_e.firstChild,ye=_e.nextSibling,be=ye.nextSibling,xe=g.nextSibling,Se=xe.firstChild,Z=Se.firstChild,Ce=Z.firstChild,we=Ce.nextSibling,Q=Z.nextSibling.firstChild;Q.firstChild.nextSibling;var Te=Q.nextSibling;Te.firstChild.nextSibling;var Ee=Se.nextSibling,De=xe.nextSibling.firstChild,Oe=De.firstChild,ke=Oe.firstChild,Ae=ke.nextSibling,je=Oe.nextSibling,$=De.nextSibling,Me=$.firstChild.firstChild;return p(n,s(ne,{icon:`fa-chart-line`,get title(){return u(`nav.metrics`)},get summary(){return u(`summaries.metrics`)}}),f),p(m,()=>u(`metrics.time_range`),null),p(h,s(e,{each:P,children:(e,t)=>(()=>{var n=se();return n.$$click=()=>c(t()),p(n,()=>e.key),r(e=>{var r=t()===i(),o=t()===i()?`is-active`:``;return r!==e.e&&d(n,`aria-selected`,e.e=r),o!==e.t&&a(n,e.t=o),e},{e:void 0,t:void 0}),n})()})),p(y,()=>u(`metrics.total_processed`)),p(b,()=>C(A.data?.processed??0),null),p(b,s(I,{get pct(){return F(B(),`processed`)},goodWhenUp:!0}),null),p(x,()=>u(`metrics.across_all_queues`)),p(L,()=>u(`metrics.failed_jobs`)),p(H,()=>C(A.data?.failed??0),null),p(H,s(I,{get pct(){return F(B(),`failed`)},goodWhenUp:!1}),null),p(U,()=>u(`metrics.total_failures`)),p(he,()=>u(`metrics.avg_latency`)),p(X,(()=>{var e=o(()=>!!A.data);return()=>e()?ee(A.data.latency):`—`})()),p(ge,()=>u(`metrics.head_of_line`)),p(ve,()=>u(`metrics.active_workers`)),p(ye,()=>C(A.data?.processes??0)),p(be,(()=>{var e=o(()=>(A.data?.processes??0)>0);return()=>e()?u(`metrics.stable`):u(`metrics.no_workers`)})()),p(Ce,()=>u(`metrics.throughput_failures`)),p(we,()=>u(`metrics.throughput_sub`,{range:k().key})),p(Q,()=>u(`dashboard.processed`),null),p(Te,()=>u(`dashboard.failed`),null),p(Ee,s(t,{get when(){return!j.isPending},get fallback(){return s(R,{height:300})},get children(){return s(t,{get when(){return me()},get fallback(){return(()=>{var e=ce();return p(e,()=>u(`dashboard.no_history`)),e})()},get children(){return s(re,{get data(){return V()},height:300,yAxisWidth:36,yDecimals:!1,xMinTickGap:56,get series(){return[{key:`processed`,name:u(`dashboard.processed`),stroke:`var(--mono-1)`,strokeWidth:2,fill:`gradient`},{key:`failed`,name:u(`dashboard.failed`),stroke:`var(--mono-3)`,strokeWidth:1.5,strokeDasharray:`5 4`,fill:`none`}]}})}})}})),p(ke,()=>u(`metrics.queue_depth`)),p(Ae,(()=>{var e=o(()=>G()>0);return()=>e()?u(`metrics.peak`,{n:C(G())}):``})()),p(je,s(t,{get when(){return!z.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return W().length>0},get fallback(){return(()=>{var e=O();return p(e,()=>u(`metrics.no_queue_history`)),e})()},get children(){return s(ie,{get data(){return W().map(e=>({label:e.label,value:e.depth,color:e.depth===G()&&G()>0?`var(--mono-1)`:`var(--mono-6)`}))},height:240,get name(){return u(`metrics.queue_depth`)},yAxisWidth:36,yDecimals:!1,xMinTickGap:40})}})}})),p(Me,()=>u(`metrics.top_job_types`)),p($,s(t,{get when(){return!M.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return J().length>0},get fallback(){return(()=>{var e=le();return p(e,()=>u(`common.empty`)),e})()},get children(){var t=ae(),n=t.firstChild.firstChild,i=n.firstChild.firstChild,a=i.nextSibling,c=a.nextSibling,f=n.nextSibling;return p(i,()=>u(`metrics.job_class`)),p(a,()=>u(`table.count`)),p(c,()=>u(`metrics.pct_total`)),p(f,s(e,{get each(){return J()},children:(e,t)=>(()=>{var n=ue(),i=n.firstChild,a=i.firstChild,s=a.firstChild,c=i.nextSibling,f=c.nextSibling,m=f.firstChild;return a.$$click=()=>E(e.klass),p(a,()=>te(e.klass.split(`::`).pop()??e.klass,36),null),p(c,()=>C(e.count)),p(f,(()=>{var t=o(()=>q()>0);return()=>t()?Math.round(e.count/q()*100):0})(),m),r(n=>{var r=e.klass,o=u(`metrics.view_job_detail`),c=N[t()%N.length];return r!==n.e&&d(i,`title`,n.e=r),o!==n.t&&d(a,`title`,n.t=o),c!==n.a&&l(s,`background`,n.a=c),n},{e:void 0,t:void 0,a:void 0}),n})()})),t}})}}),null),p(n,s(fe,{get range(){return k()}}),null),p(n,s(pe,{}),null),p(n,s(de,{get klass(){return T()},get minutes(){return k().minutes},onClose:D}),null),r(()=>d(h,`aria-label`,u(`metrics.time_range`))),n})()}function de(e){let r=x(()=>({queryKey:[`metrics-job`,e.klass,e.minutes],queryFn:()=>g(`${_()}/api/metrics/${encodeURIComponent(e.klass)}?minutes=${e.minutes}`),enabled:e.klass!==null})),i=n(()=>(r.data?.series??[]).map(e=>({label:w(e.at,`1m`,b),processed:e.p,failed:e.f,runtime_ms:e.ms}))),a=n(()=>i().some(e=>e.processed>0||e.failed>0)),o=n(()=>i().reduce((e,t)=>({processed:e.processed+t.processed,failed:e.failed+t.failed}),{processed:0,failed:0}));return s(v,{get open(){return e.klass!==null},get onClose(){return e.onClose},get title(){return e.klass??``},width:720,get children(){return s(t,{get when(){return e.klass},get children(){return[(()=>{var e=k(),t=e.firstChild,n=t.firstChild,r=n.nextSibling,i=t.nextSibling.firstChild,a=i.nextSibling;return p(n,()=>u(`dashboard.processed`)),p(r,()=>C(o().processed)),p(i,()=>u(`dashboard.failed`)),p(a,()=>C(o().failed)),e})(),s(t,{get when(){return!r.isPending},get fallback(){return s(R,{height:240})},get children(){return s(t,{get when(){return!r.isError},get fallback(){return(()=>{var e=O();return p(e,()=>u(`common.error`)),e})()},get children(){return s(t,{get when(){return a()},get fallback(){return(()=>{var e=O();return p(e,()=>u(`dashboard.no_history`)),e})()},get children(){return s(T,{get data(){return i()},height:240,yAxisWidth:36,yDecimals:!1,xMinTickGap:48,legend:!0,get series(){return[{key:`processed`,name:u(`dashboard.processed`),stroke:`var(--mono-1)`,strokeWidth:2},{key:`failed`,name:u(`dashboard.failed`),stroke:`var(--mono-3)`,strokeWidth:1.5}]}})}})}})}})]}})}})}function fe(e){let r=x(()=>({queryKey:[`queue-history-lat`,e.range.bucket,e.range.window],queryFn:()=>g(`${_()}/api/queue-history/${e.range.bucket}?window=${e.range.window}`),refetchInterval:3e4})),i=n(()=>r.data?.queues??[]),a=n(()=>i().map((e,t)=>({key:`queue_${t}`,name:e.name}))),o=n(()=>i()[0]?.points.map(e=>e.at)??[]),c=n(()=>o().map((t,n)=>{let r={label:w(t,e.range.bucket,b)};return i().forEach((e,t)=>{r[a()[t].key]=e.points[n]?.latency??0}),r})),l=n(()=>a().map((e,t)=>({key:e.key,name:e.name,stroke:M(t),strokeWidth:2}))),d=n(()=>i().some(e=>e.points.some(e=>e.latency>0)));return s(t,{get when(){return d()},get children(){var e=A(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return p(n,()=>u(`metrics.queue_latency_seconds`)),p(r,s(T,{get data(){return c()},get series(){return l()},height:240,legend:!0,yAxisWidth:40,xMinTickGap:48})),e}})}var B=new Set([`processed`,`failures`]);function pe(){let e=x(()=>({queryKey:[`history-snapshots`],queryFn:()=>g(`${_()}/api/history/snapshots?limit=1000`),refetchInterval:3e4})),r=n(()=>e.data?.snapshots??[]),i=n(()=>Array.from(new Set(r().flatMap(e=>Object.keys(e).filter(t=>t!==`at`&&!B.has(t)&&typeof e[t]==`number`))))),a=n(()=>r().map(e=>{let t={label:w(e.at,`1m`,b)};for(let n of Object.keys(e))t[n]=e[n];return t})),c=n(()=>i().map((e,t)=>({key:e,name:e,stroke:M(t),strokeWidth:2})));return s(t,{get when(){return o(()=>r().length>0)()&&i().length>0},get children(){var e=A(),t=e.firstChild,n=t.firstChild,r=t.nextSibling;return p(n,()=>u(`metrics.historical_snapshots`)),p(r,s(T,{get data(){return a()},get series(){return c()},height:240,legend:!0,yAxisWidth:40,yDecimals:!1,xMinTickGap:48})),e}})}c([`click`]);export{z as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,j as t,o as n,q as r,u as i}from"./i18n-
|
|
1
|
+
import{_ as e,j as t,o as n,q as r,u as i}from"./i18n-B6AbnmJn.js";import{b as a}from"./index-CTWV8VL4.js";import{t as o}from"./PageHeader-CeSaqysY.js";var s=e(`<div><div class=empty-state>`);function c(){return r(()=>{document.title=`${n(`notfound.title`)} — Wurk`}),(()=>{var e=s(),r=e.firstChild;return i(e,t(o,{icon:`fa-compass`,get title(){return n(`notfound.title`)},get summary(){return n(`notfound.hint`)}}),r),i(r,t(a,{href:`/`,class:`btn btn-accent`,get children(){return n(`notfound.home`)}})),e})()}export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e,I as t,_ as n,c as r,j as i,u as a}from"./i18n-
|
|
1
|
+
import{E as e,I as t,_ as n,c as r,j as i,u as a}from"./i18n-B6AbnmJn.js";var o=n(`<div class=page-header__aside>`),s=n(`<div class=page-header><span class=page-header__icon><i></i></span><div class=page-header__text><h1 class=page-header__title></h1><p class=page-header__summary>`);function c(n){return(()=>{var c=s(),l=c.firstChild,u=l.firstChild,d=l.nextSibling.firstChild,f=d.nextSibling;return a(d,()=>n.title),a(f,()=>n.summary),a(c,i(e,{get when(){return n.children!=null},get children(){var e=o();return a(e,()=>n.children),e}}),null),t(()=>r(u,`fa-solid ${n.icon}`)),c})()}export{c as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,o as c,p as l,q as u,u as d}from"./i18n-
|
|
1
|
+
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,o as c,p as l,q as u,u as d}from"./i18n-B6AbnmJn.js";import{a as f,f as p,h as m,s as h,v as g}from"./index-CTWV8VL4.js";import{o as _,s as v,t as y}from"./utils-DnzJXljj.js";var b=a(`<div class=obs>`),x=a(`<div class=obs><div class=empty-state style=color:var(--danger)>`),S=a(`<div class="obs-card obs-table"><div class=obs-tablescroll><table><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),C=a(`<div class=obs><div class=obs-pagehead><div><h1></h1><p class=obs-panel__sub></p></div><span class="obs-chip obs-chip--active">`),w=a(`<div class="obs-card obs-empty">`),T=a(`<tr><td style=font-weight:500;color:var(--obs-text)></td><td><span class=obs-mono-cell></span></td><td></td><td> </td><td></td><td style=text-align:end><a class="obs-btn obs-btn--ghost obs-btn--sm"target=_blank rel="noopener noreferrer"><i class="fa-solid fa-up-right-from-square"aria-hidden=true></i> `),E=a(`<span>`);function D(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function O(){u(()=>{document.title=`${c(`nav.profiles`)} — Wurk`});let a=g(()=>({queryKey:[`profiles`],queryFn:()=>p(`${m()}/api/profiles`),refetchInterval:5e3}));return s(r,{get children(){return[s(i,{get when(){return a.isPending},get children(){var e=b();return d(e,s(f,{rows:8,cols:6})),e}}),s(i,{get when(){return!Array.isArray(a.data)},get children(){var e=x(),t=e.firstChild;return d(t,()=>c(`common.error`)),e}}),s(i,{get when(){return o(()=>!!Array.isArray(a.data))()&&a.data},children:r=>(()=>{var i=C(),a=i.firstChild.firstChild,o=a.firstChild,u=o.nextSibling,f=a.nextSibling;return d(o,()=>c(`nav.profiles`)),d(u,()=>c(`summaries.profiles`)),d(f,()=>_(r().length)),d(i,s(t,{get when(){return r().length>0},get fallback(){return(()=>{var e=w();return d(e,()=>c(`common.empty`)),e})()},get children(){var i=S(),a=i.firstChild.firstChild.firstChild,o=a.firstChild.firstChild,u=o.nextSibling,f=u.nextSibling,p=f.nextSibling,g=p.nextSibling,b=a.nextSibling;return d(o,()=>c(`table.type`)),d(u,()=>c(`table.jid`)),d(f,()=>c(`busy.started`)),d(p,()=>c(`table.elapsed`)),d(g,()=>c(`table.size`)),d(b,s(e,{get each(){return r()},children:e=>(()=>{var r=T(),i=r.firstChild,a=i.nextSibling,o=a.firstChild,u=a.nextSibling,f=u.nextSibling,p=f.firstChild,g=f.nextSibling,b=g.nextSibling.firstChild;return b.firstChild.nextSibling,d(i,()=>e.type),d(o,()=>e.jid),d(u,s(t,{get when(){return e.started_at},fallback:`—`,children:e=>(()=>{var t=E();return d(t,()=>y(e(),h)),n(()=>l(t,`title`,v(e(),h))),t})()})),d(f,()=>_(Math.round(e.elapsed*1e3)),p),d(f,()=>c(`common.ms`),null),d(g,()=>D(e.size)),d(b,()=>c(`extension.open`),null),n(()=>l(b,`href`,`${m()}/profiles/${encodeURIComponent(e.key)}`)),r})()})),i}}),null),i})()})]}})}export{O as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,E as r,I as i,O as a,P as o,T as s,_ as c,d as l,j as u,l as d,m as f,o as p,p as m,q as h,s as g,u as _,v,z as y}from"./i18n-
|
|
1
|
+
import{A as e,B as t,C as n,E as r,I as i,O as a,P as o,T as s,_ as c,d as l,j as u,l as d,m as f,o as p,p as m,q as h,s as g,u as _,v,z as y}from"./i18n-B6AbnmJn.js";import{S as b,_ as x,a as S,f as C,g as w,h as T,m as E,o as D,t as O,u as k,v as A,x as j}from"./index-CTWV8VL4.js";import{i as M,l as N,n as P,o as F,u as I}from"./utils-DnzJXljj.js";import{a as L,i as R,n as z,r as B,t as V}from"./useResetPageOnEmpty-BsYWeStI.js";import{n as H,t as U}from"./useSort-BWWfpnZH.js";import{t as W}from"./PageHeader-CeSaqysY.js";import{t as G}from"./ArgsValue-_MYkd_vA.js";import{t as K}from"./JobDetailModal-BrjmO98c.js";var ee=c(`<span style=display:inline-flex>`),te=c(`<div role=tooltip style="position:fixed;transform:translate(-50%, -100%);max-width:260px;background:var(--surface-strong);color:var(--text);border:1px solid var(--border-strong);padding:0.4rem 0.6rem;border-radius:6px;font-size:12px;line-height:1.35;z-index:9999;pointer-events:none;box-shadow:0 4px 14px var(--shadow-color)">`);function ne(n){let[a,s]=y(null),c,l=t(),d=()=>{let e=c?.getBoundingClientRect();e&&s({x:e.left+e.width/2,y:e.top})},p=e(()=>n.children);return o(()=>{let e=p();e instanceof HTMLElement&&e.setAttribute(`aria-describedby`,l)}),(()=>{var e=ee();e.addEventListener(`mouseleave`,()=>s(null)),e.addEventListener(`mouseenter`,d);var t=c;return typeof t==`function`?v(t,e):c=e,_(e,p,null),_(e,u(r,{get when(){return a()},children:e=>u(g,{get children(){var t=te();return m(t,`id`,l),_(t,()=>n.tip),i(n=>{var r=`${e().x}px`,i=`${e().y-8}px`;return r!==n.e&&f(t,`left`,n.e=r),i!==n.t&&f(t,`top`,n.t=i),n},{e:void 0,t:void 0}),t}})}),null),e})()}var q=c(`<div class=empty-state style=color:var(--danger)>`),J=c(`<span class="badge badge-warning">`),Y=c(`<th class=row-action>`),X=c(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),re=c(`<div class=qjobs><div style=display:flex;align-items:center;gap:0.75rem;margin-bottom:1rem><span style=color:var(--text-muted);font-size:13px> · <span> `),Z=c(`<div class=empty-state>`),ie=c(`<td class=row-action><button class="btn btn-sm btn-danger">`),ae=c(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),Q=c(`<div>`),oe=c(`<button class="btn btn-sm">`),se=c(`<td class=row-action><div style=display:flex;gap:0.4rem;justify-content:flex-end><button class="btn btn-sm btn-danger">`),ce=c(`<tr class=row-clickable><td style=font-weight:500></td><td></td><td></td><td>`),le=c(`<span class="badge badge-success">`),$=25,ue={jid:e=>e.jid,class:e=>e.class,args:e=>P(e.args),enqueued:e=>e.enqueued_at};function de(e){let[t,o]=z(),[c,l]=y(null),d=k(),f=()=>d.data?.read_only??!1,h=w(),g=A(()=>({queryKey:[`queue`,e.name,t()],queryFn:()=>C(`${T()}/api/queues/${encodeURIComponent(e.name)}?page=${t()-1}&count=${$}`)}));B(t,o,()=>g.data);let v=x(()=>({mutationFn:t=>E(`${T()}/api/queues/${encodeURIComponent(e.name)}/delete`,{jid:t}),onSuccess:()=>{h.invalidateQueries({queryKey:[`queue`,e.name]}),h.invalidateQueries({queryKey:[`queues`]}),h.invalidateQueries({queryKey:[`stats`]})},onError:O}));V(t,o,()=>!g.isPending&&!!g.data,()=>(g.data?.jobs.length??0)===0);let{sorted:b,sort:D,toggle:j}=U(()=>g.data?.jobs??[],ue);return u(a,{get children(){return[u(s,{get when(){return g.isPending},get children(){return u(S,{rows:6,cols:5})}}),u(s,{get when(){return g.isError||!g.data},get children(){var e=q();return _(e,()=>p(`common.error`)),e}}),u(s,{get when(){return g.data},children:a=>(()=>{var s=re(),d=s.firstChild,h=d.firstChild,g=h.firstChild,y=g.nextSibling,x=y.firstChild;return _(h,()=>p(`queues.job_count`,{n:F(a().size)}),g),_(y,()=>p(`queues.latency_label`),x),_(y,()=>M(a().latency),null),_(d,u(r,{get when(){return a().paused},get children(){var e=J();return _(e,()=>p(`dashboard.paused`)),e}}),null),_(s,u(r,{get when(){return b().length>0},get fallback(){return(()=>{var e=Z();return _(e,()=>p(`common.empty`)),e})()},get children(){return[(()=>{var t=X(),a=t.firstChild.firstChild,o=a.firstChild,s=a.nextSibling;return _(o,u(H,{get label(){return p(`table.jid`)},sortKey:`jid`,get sort(){return D()},onSort:j}),null),_(o,u(H,{get label(){return p(`table.class`)},sortKey:`class`,get sort(){return D()},onSort:j}),null),_(o,u(H,{get label(){return p(`table.args`)},sortKey:`args`,get sort(){return D()},onSort:j}),null),_(o,u(H,{get label(){return p(`table.enqueued_at`)},sortKey:`enqueued`,get sort(){return D()},onSort:j}),null),_(o,u(r,{get when(){return!f()},get children(){return Y()}}),null),_(s,u(n,{get each(){return b()},children:t=>{let n=P(t.args);return(()=>{var a=ae(),o=a.firstChild,s=o.nextSibling,c=s.nextSibling,d=c.nextSibling;return a.$$click=()=>l({jid:t.jid,klass:t.class,args:t.args,queue:e.name,enqueued_at:t.enqueued_at}),_(o,()=>I(t.jid,12)),_(s,()=>t.class),_(c,u(G,{str:n,max:60})),_(d,()=>N(t.enqueued_at)),_(a,u(r,{get when(){return!f()},get children(){var e=ie(),n=e.firstChild;return e.$$click=e=>e.stopPropagation(),n.$$click=()=>{window.confirm(p(`actions.confirm`,{action:p(`actions.delete`),scope:p(`actions.scope_this_job`)}))&&v.mutate(t.jid)},_(n,()=>p(`actions.delete`)),i(()=>n.disabled=v.isPending),e}}),null),i(()=>m(o,`title`,t.jid)),a})()}})),t})(),u(R,{get page(){return t()},get total(){return a().size},count:$,get maxPage(){return L(a())},onChange:o})]}}),null),_(s,u(K,{get entry(){return c()},onClose:()=>l(null)}),null),i(()=>m(y,`title`,`${a().latency.toFixed(3)}s`)),s})()})]}})}var fe={name:e=>e.name,size:e=>e.size,latency:e=>e.latency,status:e=>e.paused?`paused`:`active`};function pe(){let e=b(),t=j(),[o,c]=y(e.name??null),d=()=>{c(null),e.name&&t(`/queues`,{replace:!0})},f=k(),g=()=>f.data?.read_only??!1,v=w();h(()=>{document.title=`${p(`nav.queues`)} — Wurk`});let N=A(()=>({queryKey:[`queues`],queryFn:()=>C(`${T()}/api/queues`),refetchInterval:5e3})),P=x(()=>({mutationFn:e=>E(`${T()}/api/queues/${encodeURIComponent(e)}/clear`),onSuccess:(e,t)=>{v.invalidateQueries({queryKey:[`queues`]}),v.invalidateQueries({queryKey:[`queue`,t]}),v.invalidateQueries({queryKey:[`stats`]})},onError:O})),I=x(()=>({mutationFn:({name:e,paused:t})=>E(`${T()}/api/queues/${encodeURIComponent(e)}/${t?`unpause`:`pause`}`),onSuccess:(e,{name:t})=>{v.invalidateQueries({queryKey:[`queues`]}),v.invalidateQueries({queryKey:[`queue`,t]}),v.invalidateQueries({queryKey:[`stats`]})},onError:O})),{sorted:L,sort:R,toggle:z}=U(()=>N.data??[],fe);return u(a,{get children(){return[u(s,{get when(){return N.isPending},get children(){var e=Q();return _(e,u(W,{icon:`fa-layer-group`,get title(){return p(`nav.queues`)},get summary(){return p(`summaries.queues`)}}),null),_(e,u(S,{rows:8,cols:5}),null),e}}),u(s,{get when(){return N.isError||!N.data},get children(){var e=q();return _(e,()=>p(`common.error`)),e}}),u(s,{get when(){return N.data},children:e=>(()=>{var e=Q();return _(e,u(W,{icon:`fa-layer-group`,get title(){return p(`nav.queues`)},get summary(){return p(`summaries.queues`)}}),null),_(e,u(r,{get when(){return L().length>0},get fallback(){return(()=>{var e=Z();return _(e,()=>p(`common.empty`)),e})()},get children(){var e=X(),t=e.firstChild.firstChild,a=t.firstChild,o=t.nextSibling;return _(a,u(H,{get label(){return p(`table.name`)},sortKey:`name`,get sort(){return R()},onSort:z}),null),_(a,u(H,{get label(){return p(`table.size`)},sortKey:`size`,get sort(){return R()},onSort:z}),null),_(a,u(H,{get label(){return p(`table.latency`)},sortKey:`latency`,get sort(){return R()},onSort:z}),null),_(a,u(H,{get label(){return p(`table.status`)},sortKey:`status`,get sort(){return R()},onSort:z}),null),_(a,u(r,{get when(){return!g()},get children(){return Y()}}),null),_(o,u(n,{get each(){return L()},children:e=>(()=>{var t=ce(),n=t.firstChild,a=n.nextSibling,o=a.nextSibling,s=o.nextSibling;return t.$$click=()=>c(e.name),_(n,()=>e.name),_(a,()=>F(e.size)),_(o,()=>M(e.latency)),_(s,u(r,{get when(){return e.paused},get fallback(){return(()=>{var e=le();return _(e,()=>p(`dashboard.active`)),e})()},get children(){var e=J();return _(e,()=>p(`dashboard.paused`)),e}})),_(t,u(r,{get when(){return!g()},get children(){var t=se(),n=t.firstChild,r=n.firstChild;return t.$$click=e=>e.stopPropagation(),_(n,u(ne,{get tip(){return l(()=>!!e.paused)()?p(`actions.unpause_hint`):p(`actions.pause_hint`)},get children(){var t=oe();return t.$$click=()=>I.mutate({name:e.name,paused:e.paused}),_(t,(()=>{var t=l(()=>!!e.paused);return()=>t()?p(`actions.unpause`):p(`actions.pause`)})()),i(()=>t.disabled=I.isPending),t}}),r),r.$$click=()=>{window.confirm(p(`actions.confirm_clear_queue`,{name:e.name}))&&P.mutate(e.name)},_(r,()=>p(`actions.clear`)),i(()=>r.disabled=P.isPending),t}}),null),i(()=>m(o,`title`,`${e.latency.toFixed(3)}s`)),t})()})),e}}),null),_(e,u(D,{get open(){return o()!==null},onClose:d,get title(){return o()??``},width:780,get children(){return u(r,{get when(){return o()},children:e=>u(de,{get name(){return e()}})})}}),null),e})()})]}})}d([`click`]);export{pe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,l as c,o as l,p as u,q as d,u as f,z as p}from"./i18n-
|
|
1
|
+
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,l as c,o as l,p as u,q as d,u as f,z as p}from"./i18n-B6AbnmJn.js";import{S as m,a as h,u as ee}from"./index-CTWV8VL4.js";import{l as g,n as _,o as v,s as y,u as b}from"./utils-DnzJXljj.js";import{i as te}from"./useResetPageOnEmpty-BsYWeStI.js";import{n as x,t as ne}from"./useSort-BWWfpnZH.js";import{t as re}from"./PageHeader-CeSaqysY.js";import{t as ie}from"./ArgsValue-_MYkd_vA.js";import{t as ae}from"./JobDetailModal-BrjmO98c.js";import{a as S,i as C,n as w,o as T,r as E,s as oe,t as se}from"./FilterBox-BfZm8ZzH.js";var D=a(`<span class=badge>`),O=a(`<div class=empty-state style=color:var(--danger)>`),k=a(`<div>`),A=a(`<span class="badge badge-warning">`),j=a(`<th class=row-action><input type=checkbox>`),M=a(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),N=a(`<div class=empty-state>`),P=a(`<td class=row-action><input type=checkbox>`),F=a(`<tr class=row-clickable><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td></td><td style=color:var(--warning)></td><td>`),I={klass:e=>e.klass,args:e=>_(e.args),error_class:e=>e.error_class,error_message:e=>e.error_message,retry_count:e=>e.retry_count,at:e=>e.at},L=[{cmd:`retry`,label:l(`actions.retry`)},{cmd:`delete`,label:l(`actions.delete`),danger:!0},{cmd:`kill`,label:l(`actions.kill`),danger:!0}],R=[{cmd:`retry`,label:l(`actions.retry`)},{cmd:`kill`,label:l(`actions.kill`),danger:!0},{cmd:`delete`,label:l(`actions.delete`),danger:!0}];function z(){let a=m(),c=E(`retries`,w(a.key)),z=c.query,[B,V]=p(null),[H,U]=p(null),W=ee(),G=()=>W.data?.read_only??!1,K=T(),{single:q,bulk:J,all:Y}=S(`retries`),ce=()=>q.isPending||J.isPending||Y.isPending;d(()=>{document.title=`${l(`nav.retries`)} — Wurk`});let{sorted:X,sort:Z,toggle:Q}=ne(()=>z.data?.entries??[],I),$=()=>X().map(C),le=()=>$().length>0&&$().every(e=>K.selected().has(e));return(()=>{var a=k();return f(a,s(re,{icon:`fa-rotate-right`,get title(){return l(`nav.retries`)},get summary(){return l(`summaries.retries`)},get children(){return[s(t,{get when(){return z.data},children:e=>(()=>{var t=A();return f(t,()=>v(e().total)),t})()}),s(t,{get when(){return o(()=>!!c.filtered())()&&c.matching()!==void 0},get children(){var e=D();return f(e,()=>l(`common.matching`,{n:c.matching()})),e}})]}}),null),f(a,s(se,{get value(){return c.filter()},get onChange(){return c.onFilterChange},get placeholder(){return l(`common.filter_placeholder`)}}),null),f(a,s(r,{get children(){return[s(i,{get when(){return z.isPending},get children(){return s(h,{rows:8,cols:7})}}),s(i,{get when(){return z.isError||!z.data},get children(){var e=O();return f(e,()=>l(`common.error`)),e}}),s(i,{get when(){return z.data},children:r=>(()=>{var i=k();return f(i,s(t,{get when(){return X().length>0},get fallback(){return(()=>{var e=N();return f(e,()=>l(`common.empty`)),e})()},get children(){return[s(t,{get when(){return!G()},get children(){return s(oe,{bulk:L,all:R,get selectedCount(){return K.count()},get total(){return r().total},get filtered(){return c.filtered()},get matching(){return c.matching()},get pending(){return ce()},onBulk:e=>J.mutate({keys:[...K.selected()],cmd:e},{onSuccess:K.clear}),onAll:e=>Y.mutate(e,{onSuccess:K.clear})})}}),(()=>{var r=M(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return f(a,s(t,{get when(){return!G()},get children(){var e=j(),t=e.firstChild;return t.addEventListener(`change`,()=>K.toggleAll($())),n(()=>u(t,`aria-label`,l(`table.select_all`))),n(()=>t.checked=le()),e}}),null),f(a,s(x,{get label(){return l(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),f(a,s(x,{get label(){return l(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),f(a,s(x,{get label(){return l(`table.error`)},sortKey:`error_class`,get sort(){return Z()},onSort:Q}),null),f(a,s(x,{get label(){return l(`table.message`)},sortKey:`error_message`,get sort(){return Z()},onSort:Q}),null),f(a,s(x,{get label(){return l(`table.count`)},sortKey:`retry_count`,get sort(){return Z()},onSort:Q}),null),f(a,s(x,{get label(){return l(`table.retry_at`)},sortKey:`at`,get sort(){return Z()},onSort:Q}),null),f(o,s(e,{get each(){return X()},children:e=>{let r=_(e.args),i=C(e);return(()=>{var a=F(),o=a.firstChild,c=o.nextSibling,d=c.nextSibling,p=d.nextSibling,m=p.nextSibling,h=m.nextSibling;return a.$$click=()=>{V(e),U(i)},f(a,s(t,{get when(){return!G()},get children(){var e=P(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>K.toggle(i)),n(()=>u(t,`aria-label`,l(`table.select_row`))),n(()=>t.checked=K.selected().has(i)),e}}),o),f(o,()=>e.klass),f(c,s(ie,{str:r,max:40})),f(d,()=>b(e.error_class,30)),f(p,()=>b(e.error_message,50)),f(m,()=>e.retry_count),f(h,()=>g(e.at)),n(t=>{var n=e.error_class??``,r=e.error_message??``,i=y(e.at);return n!==t.e&&u(d,`title`,t.e=n),r!==t.t&&u(p,`title`,t.t=r),i!==t.a&&u(h,`title`,t.a=i),t},{e:void 0,t:void 0,a:void 0}),a})()}})),r})(),s(te,{get page(){return c.page()},get total(){return c.pagerTotal()},count:25,get maxPage(){return c.maxPage()},get onChange(){return c.setPage}})]}}),null),f(i,s(ae,{get entry(){return B()},get atLabel(){return l(`table.retry_at`)},get actions(){return G()?void 0:L},get pending(){return q.isPending},onAction:e=>{let t=H();t&&q.mutate({key:t,cmd:e},{onSuccess:()=>{V(null),U(null)}})},onClose:()=>{V(null),U(null)}}),null),i})()})]}}),null),a})()}c([`click`]);export{z as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,l as c,o as l,p as u,q as d,u as f,z as p}from"./i18n-
|
|
1
|
+
import{C as e,E as t,I as n,O as r,T as i,_ as a,d as o,j as s,l as c,o as l,p as u,q as d,u as f,z as p}from"./i18n-B6AbnmJn.js";import{S as m,a as h,u as ee}from"./index-CTWV8VL4.js";import{l as g,n as _,o as v,s as y,u as b}from"./utils-DnzJXljj.js";import{i as x}from"./useResetPageOnEmpty-BsYWeStI.js";import{n as S,t as C}from"./useSort-BWWfpnZH.js";import{t as te}from"./PageHeader-CeSaqysY.js";import{t as ne}from"./ArgsValue-_MYkd_vA.js";import{t as re}from"./JobDetailModal-BrjmO98c.js";import{a as ie,i as w,n as ae,o as oe,r as T,s as E,t as D}from"./FilterBox-BfZm8ZzH.js";var O=a(`<span class=badge>`),k=a(`<div class=empty-state style=color:var(--danger)>`),A=a(`<div>`),j=a(`<span class="badge badge-accent">`),M=a(`<th class=row-action><input type=checkbox>`),N=a(`<div class=table-wrapper><table><thead><tr></tr></thead><tbody>`),P=a(`<div class=empty-state>`),F=a(`<td class=row-action><input type=checkbox>`),I=a(`<tr class=row-clickable><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td>`),L={jid:e=>e.jid,klass:e=>e.klass,args:e=>_(e.args),at:e=>e.at},R=[{cmd:`add_to_queue`,label:l(`actions.add_to_queue`)},{cmd:`delete`,label:l(`actions.delete`),danger:!0}];function z(){let a=m(),c=T(`scheduled`,ae(a.key)),z=c.query,[B,V]=p(null),[H,U]=p(null),W=ee(),G=()=>W.data?.read_only??!1,K=oe(),{single:q,bulk:J,all:Y}=ie(`scheduled`),se=()=>q.isPending||J.isPending||Y.isPending;d(()=>{document.title=`${l(`nav.scheduled`)} — Wurk`});let{sorted:X,sort:Z,toggle:Q}=C(()=>z.data?.entries??[],L),$=()=>X().map(w),ce=()=>$().length>0&&$().every(e=>K.selected().has(e));return(()=>{var a=A();return f(a,s(te,{icon:`fa-clock`,get title(){return l(`nav.scheduled`)},get summary(){return l(`summaries.scheduled`)},get children(){return[s(t,{get when(){return z.data},children:e=>(()=>{var t=j();return f(t,()=>v(e().total)),t})()}),s(t,{get when(){return o(()=>!!c.filtered())()&&c.matching()!==void 0},get children(){var e=O();return f(e,()=>l(`common.matching`,{n:c.matching()})),e}})]}}),null),f(a,s(D,{get value(){return c.filter()},get onChange(){return c.onFilterChange},get placeholder(){return l(`common.filter_placeholder`)}}),null),f(a,s(r,{get children(){return[s(i,{get when(){return z.isPending},get children(){return s(h,{rows:8,cols:5})}}),s(i,{get when(){return z.isError||!z.data},get children(){var e=k();return f(e,()=>l(`common.error`)),e}}),s(i,{get when(){return z.data},children:r=>(()=>{var i=A();return f(i,s(t,{get when(){return X().length>0},get fallback(){return(()=>{var e=P();return f(e,()=>l(`common.empty`)),e})()},get children(){return[s(t,{get when(){return!G()},get children(){return s(E,{bulk:R,all:R,get selectedCount(){return K.count()},get total(){return r().total},get filtered(){return c.filtered()},get matching(){return c.matching()},get pending(){return se()},onBulk:e=>J.mutate({keys:[...K.selected()],cmd:e},{onSuccess:K.clear}),onAll:e=>Y.mutate(e,{onSuccess:K.clear})})}}),(()=>{var r=N(),i=r.firstChild.firstChild,a=i.firstChild,o=i.nextSibling;return f(a,s(t,{get when(){return!G()},get children(){var e=M(),t=e.firstChild;return t.addEventListener(`change`,()=>K.toggleAll($())),n(()=>u(t,`aria-label`,l(`table.select_all`))),n(()=>t.checked=ce()),e}}),null),f(a,s(S,{get label(){return l(`table.jid`)},sortKey:`jid`,get sort(){return Z()},onSort:Q}),null),f(a,s(S,{get label(){return l(`table.class`)},sortKey:`klass`,get sort(){return Z()},onSort:Q}),null),f(a,s(S,{get label(){return l(`table.args`)},sortKey:`args`,get sort(){return Z()},onSort:Q}),null),f(a,s(S,{get label(){return l(`table.scheduled_at`)},sortKey:`at`,get sort(){return Z()},onSort:Q}),null),f(o,s(e,{get each(){return X()},children:e=>{let r=_(e.args),i=w(e);return(()=>{var a=I(),o=a.firstChild,c=o.nextSibling,d=c.nextSibling,p=d.nextSibling;return a.$$click=()=>{V(e),U(i)},f(a,s(t,{get when(){return!G()},get children(){var e=F(),t=e.firstChild;return e.$$click=e=>e.stopPropagation(),t.addEventListener(`change`,()=>K.toggle(i)),n(()=>u(t,`aria-label`,l(`table.select_row`))),n(()=>t.checked=K.selected().has(i)),e}}),o),f(o,()=>b(e.jid,12)),f(c,()=>e.klass),f(d,s(ne,{str:r,max:60})),f(p,()=>g(e.at)),n(t=>{var n=e.jid,r=y(e.at);return n!==t.e&&u(o,`title`,t.e=n),r!==t.t&&u(p,`title`,t.t=r),t},{e:void 0,t:void 0}),a})()}})),r})(),s(x,{get page(){return c.page()},get total(){return c.pagerTotal()},count:25,get maxPage(){return c.maxPage()},get onChange(){return c.setPage}})]}}),null),f(i,s(re,{get entry(){return B()},get atLabel(){return l(`table.scheduled_at`)},get actions(){return G()?void 0:R},get pending(){return q.isPending},onAction:e=>{let t=H();t&&q.mutate({key:t,cmd:e},{onSuccess:()=>{V(null),U(null)}})},onClose:()=>{V(null),U(null)}}),null),i})()})]}}),null),a})()}c([`click`]);export{z as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,C as t,E as n,I as r,K as i,P as a,_ as o,c as s,d as c,j as l,l as u,o as d,p as f,q as p,u as m,z as h}from"./i18n-
|
|
1
|
+
import{$ as e,C as t,E as n,I as r,K as i,P as a,_ as o,c as s,d as c,j as l,l as u,o as d,p as f,q as p,u as m,z as h}from"./i18n-B6AbnmJn.js";import{C as g,a as _,f as v,h as y,v as b}from"./index-CTWV8VL4.js";import{l as x,n as S,s as C,u as w}from"./utils-DnzJXljj.js";import{t as T}from"./PageHeader-CeSaqysY.js";import{t as E}from"./ArgsValue-_MYkd_vA.js";var D=o(`<div class=search-empty__chips><span class=search-empty__chips-label>`),O=o(`<div class=search-empty><div class=search-empty__icon><i class="fa-solid fa-magnifying-glass"></i></div><p class=search-empty__title></p><p class=search-empty__hint>`),k=o(`<button type=button class=chip>`),A=o(`<div><form style=display:flex;gap:0.75rem;margin-bottom:2rem><input class=input type=search style=flex:1;max-width:480px><button type=submit class="btn btn-accent">`),j=o(`<div class=empty-state style=color:var(--danger)>`),M=o(`<div class=search-truncated role=status><i class="fa-solid fa-triangle-exclamation"aria-hidden=true></i><span>`),N=o(`<div class=search-count>`),P=o(`<div class=table-wrapper><table><thead><tr><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>`),F=o(`<div class=empty-state>`),I=o(`<span>`),L=o(`<tr><td><span></span></td><td style=font-family:monospace;font-size:12px;color:var(--text-muted)></td><td style=font-weight:500></td><td></td><td style=color:var(--danger)></td><td>`),R=o(`<span style=color:var(--text-muted)>—`),z=2,B=300,V={queue:`badge-accent`,retry:`badge-warning`,scheduled:`badge-muted`,dead:`badge-danger`};function H(e){return(()=>{var r=O(),i=r.firstChild.nextSibling,a=i.nextSibling;return m(i,()=>d(`search.emptyTitle`)),m(a,()=>d(`search.emptyHint`)),m(r,l(n,{get when(){return e.suggestions().length>0},get children(){var n=D(),r=n.firstChild;return m(r,()=>d(`search.try`)),m(n,l(t,{get each(){return e.suggestions()},children:t=>(()=>{var n=k();return n.$$click=()=>e.onPick(t),m(n,t),n})()}),null),n}}),null),r})()}function U(){let[o,u]=g(),[D,O]=h(o.q??``),[k,U]=h(D().trim());p(()=>{document.title=`${d(`nav.search`)} — Wurk`}),a(()=>{let e=D().trim(),t=setTimeout(()=>{U(e),u({q:e||void 0})},B);i(()=>clearTimeout(t))}),a(()=>{let t=o.q??``;t!==e(()=>D().trim())&&(O(t),U(t.trim()))});let W=()=>k().length>=z,G=b(()=>({queryKey:[`search`,k()],queryFn:()=>v(`${y()}/api/search?substr=${encodeURIComponent(k())}`),enabled:W(),staleTime:1e4})),K=b(()=>({queryKey:[`search-suggest`],queryFn:()=>Promise.all([`${y()}/api/retries?page=0&count=10`,`${y()}/api/dead?page=0&count=10`].map(e=>v(e))),enabled:!W(),staleTime:3e4})),q=()=>Array.from(new Set((K.data??[]).flatMap(e=>(e.entries??[]).map(e=>e.klass)).filter(Boolean))).slice(0,5),J=e=>typeof e.at==`number`?e.at:e.enqueued_at??NaN,Y=()=>G.data?.hits.length??0;return(()=>{var e=A(),i=e.firstChild,a=i.firstChild,o=a.nextSibling;return m(e,l(T,{icon:`fa-magnifying-glass`,get title(){return d(`nav.search`)},get summary(){return d(`summaries.search`)}}),i),i.addEventListener(`submit`,e=>{e.preventDefault(),U(D().trim())}),a.$$input=e=>O(e.currentTarget.value),m(o,()=>d(`actions.search`)),m(e,l(n,{get when(){return W()},get fallback(){return l(H,{suggestions:q,onPick:O})},get children(){return l(n,{get when(){return!G.isLoading},get fallback(){return l(_,{rows:8,cols:6})},get children(){return l(n,{get when(){return c(()=>!G.isError)()&&G.data},get fallback(){return(()=>{var e=j();return m(e,()=>d(`common.error`)),e})()},children:e=>[l(n,{get when(){return e().truncated},get children(){var e=M(),t=e.firstChild.nextSibling;return m(t,()=>d(`search.truncated`)),e}}),(()=>{var e=N();return m(e,(()=>{var e=c(()=>Y()===1);return()=>e()?d(`search.result`,{n:Y(),term:k()}):d(`search.results`,{n:Y(),term:k()})})()),e})(),l(n,{get when(){return Y()>0},get fallback(){return(()=>{var e=F();return m(e,()=>d(`common.empty`)),e})()},get children(){var i=P(),a=i.firstChild.firstChild,o=a.firstChild.firstChild,c=o.nextSibling,u=c.nextSibling,p=u.nextSibling,h=p.nextSibling,g=h.nextSibling,_=a.nextSibling;return m(o,()=>d(`search.source`)),m(c,()=>d(`table.jid`)),m(u,()=>d(`table.class`)),m(p,()=>d(`table.args`)),m(h,()=>d(`table.error`)),m(g,()=>d(`search.when`)),m(_,l(t,{get each(){return e().hits},children:e=>(()=>{var t=L(),i=t.firstChild,a=i.firstChild,o=i.nextSibling,c=o.nextSibling,u=c.nextSibling,p=u.nextSibling,h=p.nextSibling;return m(a,()=>d(`search.kind.${e.kind}`)),m(o,()=>w(e.jid,12)),m(c,()=>e.klass),m(u,l(E,{get str(){return S(e.args)},max:40})),m(p,l(n,{get when(){return e.error_class},get fallback(){return R()},get children(){var t=I();return m(t,()=>w(e.error_class,28)),r(()=>f(t,`title`,e.error_message??``)),t}})),m(h,()=>x(J(e))),r(t=>{var n=`badge ${V[e.kind]}`,r=e.jid,i=C(J(e));return n!==t.e&&s(a,t.e=n),r!==t.t&&f(o,`title`,t.t=r),i!==t.a&&f(h,`title`,t.a=i),t},{e:void 0,t:void 0,a:void 0}),t})()})),i}})]})}})}}),null),r(e=>{var t=d(`search.placeholder`),n=d(`search.placeholder`);return t!==e.e&&f(a,`aria-label`,e.e=t),n!==e.t&&f(a,`placeholder`,e.t=n),e},{e:void 0,t:void 0}),r(()=>a.value=D()),e})()}u([`click`,`input`]);export{U as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,C as t,E as n,F as r,I as i,K as a,_ as o,d as s,j as c,l,m as u,p as d,q as f,u as p,v as m,z as h}from"./i18n-CJeYfeVt.js";import{o as g}from"./utils-BIKHwNKB.js";var _=o(`<svg><line stroke=var(--chart-grid) stroke-dasharray="3 3"></svg>`,!1,!0,!1),v=o(`<svg><text text-anchor=end dominant-baseline=middle fill=var(--mono-4) font-size=11 font-family=var(--font-mono)></svg>`,!1,!0,!1),y=o(`<svg><text fill=var(--mono-4) font-size=11 font-family=var(--font-mono)></svg>`,!1,!0,!1),b=o(`<div style="position:absolute;top:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:6px;font-size:12px;font-family:var(--font-mono);padding:8px 10px;pointer-events:none;white-space:nowrap;z-index:10"><div style=color:var(--text-muted);margin-bottom:4px>`),x=o(`<div style=display:flex;align-items:center;gap:6px><span style=width:8px;height:8px;border-radius:2px;display:inline-block;flex:none></span><span></span><span style=margin-inline-start:auto;padding-inline-start:10px>`),S=`var(--font-mono)`,C=`var(--chart-cursor)`,w=`var(--chart-band)`,T=`var(--bg)`;function E(e,t,n=0){let r=n;return{width:e,height:t,left:r,right:8,top:8,bottom:22,plotW:Math.max(0,e-r-8),plotH:Math.max(0,t-8-22)}}function D(e,t,n){return t<=1?n.left+n.plotW/2:n.left+e*n.plotW/(t-1)}function O(e,t,n){let r=n.height-n.bottom;return t<=0?r:r-e/t*n.plotH}function k(e){if(e.length===0)return``;if(e.length===1)return`M${e[0][0]},${e[0][1]}`;let t=`M${e[0][0]},${e[0][1]}`;for(let n=0;n<e.length-1;n++){let r=e[n-1]??e[n],i=e[n],a=e[n+1],o=e[n+2]??a,s=i[0]+(a[0]-r[0])/6,c=i[1]+(a[1]-r[1])/6,l=a[0]-(o[0]-i[0])/6,u=a[1]-(o[1]-i[1])/6;t+=` C${s},${c} ${l},${u} ${a[0]},${a[1]}`}return t}function A(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function j(e,t=!0){if(!(e>0))return{max:1,ticks:[0,1]};let n=A(e/4,!0);t||(n=Math.max(1,Math.round(n)));let r=Math.ceil(e/n)*n,i=[];for(let e=0;e<=r+n/1e3;e+=n)i.push(Number(e.toFixed(6)));return{max:r,ticks:i}}function M(e){return Number.isInteger(e)?g(e):e.toFixed(e<10?2:1)}function N(e,t,n){let r=e.length;if(r<=1)return r===1?[0]:[];let i=Math.max(...e.map(e=>e.length))*6.6+n,a=Math.max(2,Math.floor(t/i));if(a>=r)return e.map((e,t)=>t);let o=Math.ceil((r-1)/(a-1)),s=[];for(let e=0;e<r;e+=o)s.push(e);return s[s.length-1]!==r-1&&s.push(r-1),s}function P(){let[e,t]=h({w:0,h:0}),n;return f(()=>{let e=()=>{n&&t({w:n.clientWidth,h:n.clientHeight})};e();let r=new ResizeObserver(e);n&&r.observe(n),a(()=>r.disconnect())}),{setRef:e=>{n=e},size:e}}function F(e){let r=()=>e.labels.length-1;return[c(t,{get each(){return e.yTicks},children:t=>(()=>{var n=_();return i(r=>{var i=e.geo.left,a=e.geo.width-e.geo.right,o=e.yAt(t),s=e.yAt(t);return i!==r.e&&d(n,`x1`,r.e=i),a!==r.t&&d(n,`x2`,r.t=a),o!==r.a&&d(n,`y1`,r.a=o),s!==r.o&&d(n,`y2`,r.o=s),r},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}),c(n,{get when(){return e.showY},get children(){return c(t,{get each(){return e.yTicks},children:t=>(()=>{var n=v();return p(n,()=>M(t)),i(r=>{var i=e.geo.left-6,a=e.yAt(t);return i!==r.e&&d(n,`x`,r.e=i),a!==r.t&&d(n,`y`,r.t=a),r},{e:void 0,t:void 0}),n})()})}}),c(t,{get each(){return e.xTicks},children:t=>(()=>{var n=y();return p(n,()=>e.labels[t]),i(i=>{var a=e.xAt(t),o=e.geo.height-e.geo.bottom+14,s=t===0?`start`:t===r()?`end`:`middle`;return a!==i.e&&d(n,`x`,i.e=a),o!==i.t&&d(n,`y`,i.t=o),s!==i.a&&d(n,`text-anchor`,i.a=s),i},{e:void 0,t:void 0,a:void 0}),n})()})]}function I(e){return Number.isInteger(e)?g(e):e.toFixed(2)}function L(e){let n=()=>e.x>e.containerW/2;return(()=>{var r=b(),a=r.firstChild;return p(a,()=>e.label),p(r,c(t,{get each(){return e.rows},children:e=>(()=>{var t=x(),n=t.firstChild,r=n.nextSibling,a=r.nextSibling;return p(r,()=>e.name),p(a,()=>I(e.value)),i(t=>u(n,`background`,e.color)),t})()}),null),i(t=>{var i=`${e.x}px`,a=n()?`translateX(calc(-100% - 12px))`:`translateX(12px)`;return i!==t.e&&u(r,`left`,t.e=i),a!==t.t&&u(r,`transform`,t.t=a),t},{e:void 0,t:void 0}),r})()}function R(e,t,n){if(t<=1)return 0;let r=n.plotW/(t-1),i=Math.round((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function z(e,t,n){if(t<=0)return-1;let r=n.plotW/t,i=Math.floor((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function B(e,t){let n=t.getBoundingClientRect();return{x:e.clientX-n.left,y:e.clientY-n.top}}var V=o(`<svg><line stroke-width=1></svg>`,!1,!0,!1),H=o(`<svg><defs>`),U=o(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`),W=o(`<svg><linearGradient x1=0 y1=0 x2=0 y2=1><stop offset=0%></stop><stop offset=95% stop-opacity=0></svg>`,!1,!0,!1),G=o(`<svg><path stroke=none></svg>`,!1,!0,!1),K=o(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),q=o(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1);function J(a){let{setRef:o,size:l}=P(),[f,g]=h(null),_=e(),v,y=r(()=>E(l().w,l().h,a.yAxisWidth??0)),b=r(()=>{let e=0;for(let t of a.data)for(let n of a.series)e=Math.max(e,Number(t[n.key])||0);return e}),x=r(()=>j(b(),a.yDecimals??!0)),S=r(()=>a.data.map(e=>e.label)),w=r(()=>N(S(),y().plotW,a.xMinTickGap??56)),A=e=>D(e,a.data.length,y()),M=e=>O(e,x().max,y()),I=e=>{if(!v)return;let{x:t}=B(e,v);g(R(t,a.data.length,y()))},z=()=>{let e=f();return e===null?[]:a.series.map(t=>({name:t.name??t.key,value:Number(a.data[e]?.[t.key])||0,color:t.stroke}))};return(()=>{var e=U(),r=e.firstChild;return m(o,r),p(r,c(n,{get when(){return s(()=>l().w>0)()&&l().h>0},get children(){var e=H(),r=e.firstChild;e.addEventListener(`mouseleave`,()=>g(null)),e.$$mousemove=I;var o=v;return typeof o==`function`?m(o,e):v=e,p(r,c(t,{get each(){return a.series},children:e=>c(n,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=W(),n=t.firstChild,r=n.nextSibling;return i(i=>{var a=`${_}-${e.key}`,o=e.stroke,s=e.fillOpacity??.22,c=e.stroke;return a!==i.e&&d(t,`id`,i.e=a),o!==i.t&&d(n,`stop-color`,i.t=o),s!==i.a&&d(n,`stop-opacity`,i.a=s),c!==i.o&&d(r,`stop-color`,i.o=c),i},{e:void 0,t:void 0,a:void 0,o:void 0}),t}})})),p(e,c(F,{get geo(){return y()},get yTicks(){return x().ticks},yAt:M,get showY(){return a.yAxisWidth!=null},get xTicks(){return w()},xAt:A,get labels(){return S()}}),null),p(e,c(t,{get each(){return a.series},children:e=>{let t=()=>a.data.map((t,n)=>[A(n),M(Number(t[e.key])||0)]),r=()=>k(t()),o=()=>{let e=t();if(e.length===0)return``;let n=y().height-y().bottom;return`${k(e)} L${e[e.length-1][0]},${n} L${e[0][0]},${n} Z`};return[c(n,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=G();return i(n=>{var r=o(),i=`url(#${_}-${e.key})`;return r!==n.e&&d(t,`d`,n.e=r),i!==n.t&&d(t,`fill`,n.t=i),n},{e:void 0,t:void 0}),t}}),(()=>{var t=K();return i(n=>{var i=r(),a=e.stroke,o=e.strokeWidth??2,s=e.strokeDasharray;return i!==n.e&&d(t,`d`,n.e=i),a!==n.t&&d(t,`stroke`,n.t=a),o!==n.a&&d(t,`stroke-width`,n.a=o),s!==n.o&&d(t,`stroke-dasharray`,n.o=s),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()]}}),null),p(e,c(n,{get when(){return f()!==null},get children(){return[(()=>{var e=V();return d(e,`stroke`,C),i(t=>{var n=A(f()),r=A(f()),i=y().top,a=y().height-y().bottom;return n!==t.e&&d(e,`x1`,t.e=n),r!==t.t&&d(e,`x2`,t.t=r),i!==t.a&&d(e,`y1`,t.a=i),a!==t.o&&d(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),c(t,{get each(){return a.series},children:e=>(()=>{var t=q();return d(t,`stroke`,T),i(n=>{var r=A(f()),i=M(Number(a.data[f()]?.[e.key])||0),o=e.stroke;return r!==n.e&&d(t,`cx`,n.e=r),i!==n.t&&d(t,`cy`,n.t=i),o!==n.a&&d(t,`fill`,n.a=o),n},{e:void 0,t:void 0,a:void 0}),t})()})]}}),null),i(t=>{var n=l().w,r=l().h;return n!==t.e&&d(e,`width`,t.e=n),r!==t.t&&d(e,`height`,t.t=r),t},{e:void 0,t:void 0}),e}})),p(e,c(n,{get when(){return f()!==null},get children(){return c(L,{get x(){return A(f())},get containerW(){return l().w},get label(){return S()[f()]},get rows(){return z()}})}}),null),i(t=>u(e,`height`,`${a.height}px`)),e})()}l([`mousemove`]);var Y=o(`<svg><line stroke-width=1></svg>`,!1,!0,!1),X=o(`<svg>`),Z=o(`<div style=display:flex;flex-wrap:wrap;justify-content:center;gap:12px;font-size:11px;color:var(--text-muted);padding-top:6px>`),Q=o(`<div style=position:relative;width:100%;display:flex;flex-direction:column><div style=position:relative;width:100%;flex:1;min-height:0>`),ee=o(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),te=o(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1),ne=o(`<span style=display:inline-flex;align-items:center;gap:5px><span style=width:10px;height:2px;display:inline-block>`);function re(e){let{setRef:a,size:o}=P(),[l,f]=h(null),g,_=r(()=>E(o().w,o().h,e.yAxisWidth??0)),v=r(()=>{let t=0;for(let n of e.data)for(let r of e.series)t=Math.max(t,Number(n[r.key])||0);return t}),y=r(()=>j(v(),e.yDecimals??!0)),b=r(()=>e.data.map(e=>e.label)),x=r(()=>N(b(),_().plotW,e.xMinTickGap??48)),w=t=>D(t,e.data.length,_()),A=e=>O(e,y().max,_()),M=t=>{if(!g)return;let{x:n}=B(t,g);f(R(n,e.data.length,_()))},I=()=>{let t=l();return t===null?[]:e.series.map(n=>({name:n.name??n.key,value:Number(e.data[t]?.[n.key])||0,color:n.stroke}))};return(()=>{var r=Q(),h=r.firstChild;return m(a,h),p(h,c(n,{get when(){return s(()=>o().w>0)()&&o().h>0},get children(){var r=X();r.addEventListener(`mouseleave`,()=>f(null)),r.$$mousemove=M;var a=g;return typeof a==`function`?m(a,r):g=r,p(r,c(F,{get geo(){return _()},get yTicks(){return y().ticks},yAt:A,get showY(){return e.yAxisWidth!=null},get xTicks(){return x()},xAt:w,get labels(){return b()}}),null),p(r,c(t,{get each(){return e.series},children:t=>(()=>{var n=ee();return i(r=>{var i=k(e.data.map((e,n)=>[w(n),A(Number(e[t.key])||0)])),a=t.stroke,o=t.strokeWidth??2;return i!==r.e&&d(n,`d`,r.e=i),a!==r.t&&d(n,`stroke`,r.t=a),o!==r.a&&d(n,`stroke-width`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})()}),null),p(r,c(n,{get when(){return l()!==null},get children(){return[(()=>{var e=Y();return d(e,`stroke`,C),i(t=>{var n=w(l()),r=w(l()),i=_().top,a=_().height-_().bottom;return n!==t.e&&d(e,`x1`,t.e=n),r!==t.t&&d(e,`x2`,t.t=r),i!==t.a&&d(e,`y1`,t.a=i),a!==t.o&&d(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),c(t,{get each(){return e.series},children:t=>(()=>{var n=te();return d(n,`stroke`,T),i(r=>{var i=w(l()),a=A(Number(e.data[l()]?.[t.key])||0),o=t.stroke;return i!==r.e&&d(n,`cx`,r.e=i),a!==r.t&&d(n,`cy`,r.t=a),o!==r.a&&d(n,`fill`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})()})]}}),null),i(e=>{var t=o().w,n=o().h;return t!==e.e&&d(r,`width`,e.e=t),n!==e.t&&d(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),p(r,c(n,{get when(){return e.legend},get children(){var n=Z();return u(n,`font-family`,S),p(n,c(t,{get each(){return e.series},children:e=>(()=>{var t=ne(),n=t.firstChild;return p(t,()=>e.name??e.key,null),i(t=>u(n,`background`,e.stroke)),t})()})),n}}),null),p(r,c(n,{get when(){return l()!==null},get children(){return c(L,{get x(){return w(l())},get containerW(){return o().w},get label(){return b()[l()]},get rows(){return I()}})}}),null),i(t=>u(r,`height`,`${e.height}px`)),r})()}l([`mousemove`]);var $=o(`<svg><rect></svg>`,!1,!0,!1),ie=o(`<svg>`),ae=o(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`);function oe(e){let{setRef:a,size:o}=P(),[l,f]=h(null),g,_=r(()=>E(o().w,o().h,e.yAxisWidth??0)),v=r(()=>Math.max(0,...e.data.map(e=>e.value))),y=r(()=>j(v(),e.yDecimals??!0)),b=r(()=>e.data.map(e=>e.label)),x=r(()=>N(b(),_().plotW,e.xMinTickGap??40)),S=e=>O(e,y().max,_()),C=()=>e.data.length>0?_().plotW/e.data.length:0,T=()=>Math.max(1,C()*.62),D=e=>_().left+C()*(e+.5),k=t=>{if(!g)return;let{x:n}=B(t,g);f(z(n,e.data.length,_()))},A=()=>{let t=l();return t===null||!e.data[t]?[]:[{name:e.name??`Value`,value:e.data[t].value,color:e.data[t].color}]};return(()=>{var r=ae(),h=r.firstChild;return m(a,h),p(h,c(n,{get when(){return s(()=>o().w>0)()&&o().h>0},get children(){var r=ie();r.addEventListener(`mouseleave`,()=>f(null)),r.$$mousemove=k;var a=g;return typeof a==`function`?m(a,r):g=r,p(r,c(F,{get geo(){return _()},get yTicks(){return y().ticks},yAt:S,get showY(){return e.yAxisWidth!=null},get xTicks(){return x()},xAt:D,get labels(){return b()}}),null),p(r,c(n,{get when(){return l()!==null},get children(){var e=$();return d(e,`fill`,w),i(t=>{var n=_().left+C()*l(),r=_().top,i=C(),a=_().plotH;return n!==t.e&&d(e,`x`,t.e=n),r!==t.t&&d(e,`y`,t.t=r),i!==t.a&&d(e,`width`,t.a=i),a!==t.o&&d(e,`height`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),null),p(r,c(t,{get each(){return e.data},children:(t,n)=>{let r=()=>S(t.value),a=()=>_().height-_().bottom,o=()=>Math.max(0,a()-r()),s=()=>Math.min(e.radius??3,T()/2,o());return(()=>{var e=$();return i(i=>{var a=D(n())-T()/2,c=r(),l=T(),u=o(),f=s(),p=s(),m=t.color;return a!==i.e&&d(e,`x`,i.e=a),c!==i.t&&d(e,`y`,i.t=c),l!==i.a&&d(e,`width`,i.a=l),u!==i.o&&d(e,`height`,i.o=u),f!==i.i&&d(e,`rx`,i.i=f),p!==i.n&&d(e,`ry`,i.n=p),m!==i.s&&d(e,`fill`,i.s=m),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),e})()}}),null),i(e=>{var t=o().w,n=o().h;return t!==e.e&&d(r,`width`,e.e=t),n!==e.t&&d(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),p(r,c(n,{get when(){return l()!==null},get children(){return c(L,{get x(){return D(l())},get containerW(){return o().w},get label(){return b()[l()]},get rows(){return A()}})}}),null),i(t=>u(r,`height`,`${e.height}px`)),r})()}l([`mousemove`]);export{re as n,J as r,oe as t};
|
|
1
|
+
import{B as e,C as t,E as n,F as r,I as i,K as a,_ as o,d as s,j as c,l,m as u,p as d,q as f,u as p,v as m,z as h}from"./i18n-B6AbnmJn.js";import{o as g}from"./utils-DnzJXljj.js";var _=o(`<svg><line stroke=var(--chart-grid) stroke-dasharray="3 3"></svg>`,!1,!0,!1),v=o(`<svg><text text-anchor=end dominant-baseline=middle fill=var(--mono-4) font-size=11 font-family=var(--font-mono)></svg>`,!1,!0,!1),y=o(`<svg><text fill=var(--mono-4) font-size=11 font-family=var(--font-mono)></svg>`,!1,!0,!1),b=o(`<div style="position:absolute;top:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:6px;font-size:12px;font-family:var(--font-mono);padding:8px 10px;pointer-events:none;white-space:nowrap;z-index:10"><div style=color:var(--text-muted);margin-bottom:4px>`),x=o(`<div style=display:flex;align-items:center;gap:6px><span style=width:8px;height:8px;border-radius:2px;display:inline-block;flex:none></span><span></span><span style=margin-inline-start:auto;padding-inline-start:10px>`),S=`var(--font-mono)`,C=`var(--chart-cursor)`,w=`var(--chart-band)`,T=`var(--bg)`;function E(e,t,n=0){let r=n;return{width:e,height:t,left:r,right:8,top:8,bottom:22,plotW:Math.max(0,e-r-8),plotH:Math.max(0,t-8-22)}}function D(e,t,n){return t<=1?n.left+n.plotW/2:n.left+e*n.plotW/(t-1)}function O(e,t,n){let r=n.height-n.bottom;return t<=0?r:r-e/t*n.plotH}function k(e){if(e.length===0)return``;if(e.length===1)return`M${e[0][0]},${e[0][1]}`;let t=`M${e[0][0]},${e[0][1]}`;for(let n=0;n<e.length-1;n++){let r=e[n-1]??e[n],i=e[n],a=e[n+1],o=e[n+2]??a,s=i[0]+(a[0]-r[0])/6,c=i[1]+(a[1]-r[1])/6,l=a[0]-(o[0]-i[0])/6,u=a[1]-(o[1]-i[1])/6;t+=` C${s},${c} ${l},${u} ${a[0]},${a[1]}`}return t}function A(e,t){let n=Math.floor(Math.log10(e)),r=e/10**n,i;return i=t?r<1.5?1:r<3?2:r<7?5:10:r<=1?1:r<=2?2:r<=5?5:10,i*10**n}function j(e,t=!0){if(!(e>0))return{max:1,ticks:[0,1]};let n=A(e/4,!0);t||(n=Math.max(1,Math.round(n)));let r=Math.ceil(e/n)*n,i=[];for(let e=0;e<=r+n/1e3;e+=n)i.push(Number(e.toFixed(6)));return{max:r,ticks:i}}function M(e){return Number.isInteger(e)?g(e):e.toFixed(e<10?2:1)}function N(e,t,n){let r=e.length;if(r<=1)return r===1?[0]:[];let i=Math.max(...e.map(e=>e.length))*6.6+n,a=Math.max(2,Math.floor(t/i));if(a>=r)return e.map((e,t)=>t);let o=Math.ceil((r-1)/(a-1)),s=[];for(let e=0;e<r;e+=o)s.push(e);return s[s.length-1]!==r-1&&s.push(r-1),s}function P(){let[e,t]=h({w:0,h:0}),n;return f(()=>{let e=()=>{n&&t({w:n.clientWidth,h:n.clientHeight})};e();let r=new ResizeObserver(e);n&&r.observe(n),a(()=>r.disconnect())}),{setRef:e=>{n=e},size:e}}function F(e){let r=()=>e.labels.length-1;return[c(t,{get each(){return e.yTicks},children:t=>(()=>{var n=_();return i(r=>{var i=e.geo.left,a=e.geo.width-e.geo.right,o=e.yAt(t),s=e.yAt(t);return i!==r.e&&d(n,`x1`,r.e=i),a!==r.t&&d(n,`x2`,r.t=a),o!==r.a&&d(n,`y1`,r.a=o),s!==r.o&&d(n,`y2`,r.o=s),r},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}),c(n,{get when(){return e.showY},get children(){return c(t,{get each(){return e.yTicks},children:t=>(()=>{var n=v();return p(n,()=>M(t)),i(r=>{var i=e.geo.left-6,a=e.yAt(t);return i!==r.e&&d(n,`x`,r.e=i),a!==r.t&&d(n,`y`,r.t=a),r},{e:void 0,t:void 0}),n})()})}}),c(t,{get each(){return e.xTicks},children:t=>(()=>{var n=y();return p(n,()=>e.labels[t]),i(i=>{var a=e.xAt(t),o=e.geo.height-e.geo.bottom+14,s=t===0?`start`:t===r()?`end`:`middle`;return a!==i.e&&d(n,`x`,i.e=a),o!==i.t&&d(n,`y`,i.t=o),s!==i.a&&d(n,`text-anchor`,i.a=s),i},{e:void 0,t:void 0,a:void 0}),n})()})]}function I(e){return Number.isInteger(e)?g(e):e.toFixed(2)}function L(e){let n=()=>e.x>e.containerW/2;return(()=>{var r=b(),a=r.firstChild;return p(a,()=>e.label),p(r,c(t,{get each(){return e.rows},children:e=>(()=>{var t=x(),n=t.firstChild,r=n.nextSibling,a=r.nextSibling;return p(r,()=>e.name),p(a,()=>I(e.value)),i(t=>u(n,`background`,e.color)),t})()}),null),i(t=>{var i=`${e.x}px`,a=n()?`translateX(calc(-100% - 12px))`:`translateX(12px)`;return i!==t.e&&u(r,`left`,t.e=i),a!==t.t&&u(r,`transform`,t.t=a),t},{e:void 0,t:void 0}),r})()}function R(e,t,n){if(t<=1)return 0;let r=n.plotW/(t-1),i=Math.round((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function z(e,t,n){if(t<=0)return-1;let r=n.plotW/t,i=Math.floor((e-n.left)/r);return Math.max(0,Math.min(t-1,i))}function B(e,t){let n=t.getBoundingClientRect();return{x:e.clientX-n.left,y:e.clientY-n.top}}var V=o(`<svg><line stroke-width=1></svg>`,!1,!0,!1),H=o(`<svg><defs>`),U=o(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`),W=o(`<svg><linearGradient x1=0 y1=0 x2=0 y2=1><stop offset=0%></stop><stop offset=95% stop-opacity=0></svg>`,!1,!0,!1),G=o(`<svg><path stroke=none></svg>`,!1,!0,!1),K=o(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),q=o(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1);function J(a){let{setRef:o,size:l}=P(),[f,g]=h(null),_=e(),v,y=r(()=>E(l().w,l().h,a.yAxisWidth??0)),b=r(()=>{let e=0;for(let t of a.data)for(let n of a.series)e=Math.max(e,Number(t[n.key])||0);return e}),x=r(()=>j(b(),a.yDecimals??!0)),S=r(()=>a.data.map(e=>e.label)),w=r(()=>N(S(),y().plotW,a.xMinTickGap??56)),A=e=>D(e,a.data.length,y()),M=e=>O(e,x().max,y()),I=e=>{if(!v)return;let{x:t}=B(e,v);g(R(t,a.data.length,y()))},z=()=>{let e=f();return e===null?[]:a.series.map(t=>({name:t.name??t.key,value:Number(a.data[e]?.[t.key])||0,color:t.stroke}))};return(()=>{var e=U(),r=e.firstChild;return m(o,r),p(r,c(n,{get when(){return s(()=>l().w>0)()&&l().h>0},get children(){var e=H(),r=e.firstChild;e.addEventListener(`mouseleave`,()=>g(null)),e.$$mousemove=I;var o=v;return typeof o==`function`?m(o,e):v=e,p(r,c(t,{get each(){return a.series},children:e=>c(n,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=W(),n=t.firstChild,r=n.nextSibling;return i(i=>{var a=`${_}-${e.key}`,o=e.stroke,s=e.fillOpacity??.22,c=e.stroke;return a!==i.e&&d(t,`id`,i.e=a),o!==i.t&&d(n,`stop-color`,i.t=o),s!==i.a&&d(n,`stop-opacity`,i.a=s),c!==i.o&&d(r,`stop-color`,i.o=c),i},{e:void 0,t:void 0,a:void 0,o:void 0}),t}})})),p(e,c(F,{get geo(){return y()},get yTicks(){return x().ticks},yAt:M,get showY(){return a.yAxisWidth!=null},get xTicks(){return w()},xAt:A,get labels(){return S()}}),null),p(e,c(t,{get each(){return a.series},children:e=>{let t=()=>a.data.map((t,n)=>[A(n),M(Number(t[e.key])||0)]),r=()=>k(t()),o=()=>{let e=t();if(e.length===0)return``;let n=y().height-y().bottom;return`${k(e)} L${e[e.length-1][0]},${n} L${e[0][0]},${n} Z`};return[c(n,{get when(){return(e.fill??`gradient`)===`gradient`},get children(){var t=G();return i(n=>{var r=o(),i=`url(#${_}-${e.key})`;return r!==n.e&&d(t,`d`,n.e=r),i!==n.t&&d(t,`fill`,n.t=i),n},{e:void 0,t:void 0}),t}}),(()=>{var t=K();return i(n=>{var i=r(),a=e.stroke,o=e.strokeWidth??2,s=e.strokeDasharray;return i!==n.e&&d(t,`d`,n.e=i),a!==n.t&&d(t,`stroke`,n.t=a),o!==n.a&&d(t,`stroke-width`,n.a=o),s!==n.o&&d(t,`stroke-dasharray`,n.o=s),n},{e:void 0,t:void 0,a:void 0,o:void 0}),t})()]}}),null),p(e,c(n,{get when(){return f()!==null},get children(){return[(()=>{var e=V();return d(e,`stroke`,C),i(t=>{var n=A(f()),r=A(f()),i=y().top,a=y().height-y().bottom;return n!==t.e&&d(e,`x1`,t.e=n),r!==t.t&&d(e,`x2`,t.t=r),i!==t.a&&d(e,`y1`,t.a=i),a!==t.o&&d(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),c(t,{get each(){return a.series},children:e=>(()=>{var t=q();return d(t,`stroke`,T),i(n=>{var r=A(f()),i=M(Number(a.data[f()]?.[e.key])||0),o=e.stroke;return r!==n.e&&d(t,`cx`,n.e=r),i!==n.t&&d(t,`cy`,n.t=i),o!==n.a&&d(t,`fill`,n.a=o),n},{e:void 0,t:void 0,a:void 0}),t})()})]}}),null),i(t=>{var n=l().w,r=l().h;return n!==t.e&&d(e,`width`,t.e=n),r!==t.t&&d(e,`height`,t.t=r),t},{e:void 0,t:void 0}),e}})),p(e,c(n,{get when(){return f()!==null},get children(){return c(L,{get x(){return A(f())},get containerW(){return l().w},get label(){return S()[f()]},get rows(){return z()}})}}),null),i(t=>u(e,`height`,`${a.height}px`)),e})()}l([`mousemove`]);var Y=o(`<svg><line stroke-width=1></svg>`,!1,!0,!1),X=o(`<svg>`),Z=o(`<div style=display:flex;flex-wrap:wrap;justify-content:center;gap:12px;font-size:11px;color:var(--text-muted);padding-top:6px>`),Q=o(`<div style=position:relative;width:100%;display:flex;flex-direction:column><div style=position:relative;width:100%;flex:1;min-height:0>`),ee=o(`<svg><path fill=none stroke-linejoin=round stroke-linecap=round></svg>`,!1,!0,!1),te=o(`<svg><circle r=4 stroke-width=2></svg>`,!1,!0,!1),ne=o(`<span style=display:inline-flex;align-items:center;gap:5px><span style=width:10px;height:2px;display:inline-block>`);function re(e){let{setRef:a,size:o}=P(),[l,f]=h(null),g,_=r(()=>E(o().w,o().h,e.yAxisWidth??0)),v=r(()=>{let t=0;for(let n of e.data)for(let r of e.series)t=Math.max(t,Number(n[r.key])||0);return t}),y=r(()=>j(v(),e.yDecimals??!0)),b=r(()=>e.data.map(e=>e.label)),x=r(()=>N(b(),_().plotW,e.xMinTickGap??48)),w=t=>D(t,e.data.length,_()),A=e=>O(e,y().max,_()),M=t=>{if(!g)return;let{x:n}=B(t,g);f(R(n,e.data.length,_()))},I=()=>{let t=l();return t===null?[]:e.series.map(n=>({name:n.name??n.key,value:Number(e.data[t]?.[n.key])||0,color:n.stroke}))};return(()=>{var r=Q(),h=r.firstChild;return m(a,h),p(h,c(n,{get when(){return s(()=>o().w>0)()&&o().h>0},get children(){var r=X();r.addEventListener(`mouseleave`,()=>f(null)),r.$$mousemove=M;var a=g;return typeof a==`function`?m(a,r):g=r,p(r,c(F,{get geo(){return _()},get yTicks(){return y().ticks},yAt:A,get showY(){return e.yAxisWidth!=null},get xTicks(){return x()},xAt:w,get labels(){return b()}}),null),p(r,c(t,{get each(){return e.series},children:t=>(()=>{var n=ee();return i(r=>{var i=k(e.data.map((e,n)=>[w(n),A(Number(e[t.key])||0)])),a=t.stroke,o=t.strokeWidth??2;return i!==r.e&&d(n,`d`,r.e=i),a!==r.t&&d(n,`stroke`,r.t=a),o!==r.a&&d(n,`stroke-width`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})()}),null),p(r,c(n,{get when(){return l()!==null},get children(){return[(()=>{var e=Y();return d(e,`stroke`,C),i(t=>{var n=w(l()),r=w(l()),i=_().top,a=_().height-_().bottom;return n!==t.e&&d(e,`x1`,t.e=n),r!==t.t&&d(e,`x2`,t.t=r),i!==t.a&&d(e,`y1`,t.a=i),a!==t.o&&d(e,`y2`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e})(),c(t,{get each(){return e.series},children:t=>(()=>{var n=te();return d(n,`stroke`,T),i(r=>{var i=w(l()),a=A(Number(e.data[l()]?.[t.key])||0),o=t.stroke;return i!==r.e&&d(n,`cx`,r.e=i),a!==r.t&&d(n,`cy`,r.t=a),o!==r.a&&d(n,`fill`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),n})()})]}}),null),i(e=>{var t=o().w,n=o().h;return t!==e.e&&d(r,`width`,e.e=t),n!==e.t&&d(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),p(r,c(n,{get when(){return e.legend},get children(){var n=Z();return u(n,`font-family`,S),p(n,c(t,{get each(){return e.series},children:e=>(()=>{var t=ne(),n=t.firstChild;return p(t,()=>e.name??e.key,null),i(t=>u(n,`background`,e.stroke)),t})()})),n}}),null),p(r,c(n,{get when(){return l()!==null},get children(){return c(L,{get x(){return w(l())},get containerW(){return o().w},get label(){return b()[l()]},get rows(){return I()}})}}),null),i(t=>u(r,`height`,`${e.height}px`)),r})()}l([`mousemove`]);var $=o(`<svg><rect></svg>`,!1,!0,!1),ie=o(`<svg>`),ae=o(`<div style=position:relative;width:100%><div style=position:relative;width:100%;height:100%>`);function oe(e){let{setRef:a,size:o}=P(),[l,f]=h(null),g,_=r(()=>E(o().w,o().h,e.yAxisWidth??0)),v=r(()=>Math.max(0,...e.data.map(e=>e.value))),y=r(()=>j(v(),e.yDecimals??!0)),b=r(()=>e.data.map(e=>e.label)),x=r(()=>N(b(),_().plotW,e.xMinTickGap??40)),S=e=>O(e,y().max,_()),C=()=>e.data.length>0?_().plotW/e.data.length:0,T=()=>Math.max(1,C()*.62),D=e=>_().left+C()*(e+.5),k=t=>{if(!g)return;let{x:n}=B(t,g);f(z(n,e.data.length,_()))},A=()=>{let t=l();return t===null||!e.data[t]?[]:[{name:e.name??`Value`,value:e.data[t].value,color:e.data[t].color}]};return(()=>{var r=ae(),h=r.firstChild;return m(a,h),p(h,c(n,{get when(){return s(()=>o().w>0)()&&o().h>0},get children(){var r=ie();r.addEventListener(`mouseleave`,()=>f(null)),r.$$mousemove=k;var a=g;return typeof a==`function`?m(a,r):g=r,p(r,c(F,{get geo(){return _()},get yTicks(){return y().ticks},yAt:S,get showY(){return e.yAxisWidth!=null},get xTicks(){return x()},xAt:D,get labels(){return b()}}),null),p(r,c(n,{get when(){return l()!==null},get children(){var e=$();return d(e,`fill`,w),i(t=>{var n=_().left+C()*l(),r=_().top,i=C(),a=_().plotH;return n!==t.e&&d(e,`x`,t.e=n),r!==t.t&&d(e,`y`,t.t=r),i!==t.a&&d(e,`width`,t.a=i),a!==t.o&&d(e,`height`,t.o=a),t},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),null),p(r,c(t,{get each(){return e.data},children:(t,n)=>{let r=()=>S(t.value),a=()=>_().height-_().bottom,o=()=>Math.max(0,a()-r()),s=()=>Math.min(e.radius??3,T()/2,o());return(()=>{var e=$();return i(i=>{var a=D(n())-T()/2,c=r(),l=T(),u=o(),f=s(),p=s(),m=t.color;return a!==i.e&&d(e,`x`,i.e=a),c!==i.t&&d(e,`y`,i.t=c),l!==i.a&&d(e,`width`,i.a=l),u!==i.o&&d(e,`height`,i.o=u),f!==i.i&&d(e,`rx`,i.i=f),p!==i.n&&d(e,`ry`,i.n=p),m!==i.s&&d(e,`fill`,i.s=m),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),e})()}}),null),i(e=>{var t=o().w,n=o().h;return t!==e.e&&d(r,`width`,e.e=t),n!==e.t&&d(r,`height`,e.t=n),e},{e:void 0,t:void 0}),r}})),p(r,c(n,{get when(){return l()!==null},get children(){return c(L,{get x(){return D(l())},get containerW(){return o().w},get label(){return b()[l()]},get rows(){return A()}})}}),null),i(t=>u(r,`height`,`${e.height}px`)),r})()}l([`mousemove`]);export{re as n,J as r,oe as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return t(this.context.count)},getNextContextId(){return t(this.context.count++)}};function t(t){let n=String(t),r=n.length-1;return e.context.id+(r?String.fromCharCode(96+r):``)+n}function n(t){e.context=t}var r=(e,t)=>e===t,i=Symbol(`solid-proxy`),a=typeof Proxy==`function`,o=Symbol(`solid-track`),s={equals:r},c=null,l=me,u=1,d=2,f={owned:null,cleanups:null,context:null,owner:null},p={},m=null,h=null,g=null,_=null,v=null,y=0;function b(e,t){let n=g,r=m,i=e.length===0,a=t===void 0?r:t,o=i?f:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>E(()=>V(o)));m=o,g=null;try{return z(s,!0)}finally{g=n,m=r}}function x(e,t){t=t?Object.assign({},s,t):s;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[ue.bind(n),e=>(typeof e==`function`&&(e=h&&h.running&&h.sources.has(n)?e(n.tValue):e(n.value)),de(n,e))]}function ee(e,t,n){I(L(e,t,!0,u))}function S(e,t,n){I(L(e,t,!1,u))}function C(e,t,n){l=he;let r=L(e,t,!1,u),i=F&&P(F);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),v?v.push(r):I(r)}function w(e,t,n){n=n?Object.assign({},s,n):s;let r=L(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,I(r),ue.bind(r)}function te(e){return e&&typeof e==`object`&&`then`in e}function T(t,n,r){let i,a,o;typeof n==`function`?(i=t,a=n,o=r||{}):(i=!0,a=t,o=n||{});let s=null,c=p,l=null,u=!1,d=!1,f=`initialValue`in o,_=typeof i==`function`&&w(i),v=new Set,[y,b]=(o.storage||x)(o.initialValue),[S,C]=x(void 0),[T,ne]=x(void 0,{equals:!1}),[D,re]=x(f?`ready`:`unresolved`);m&&O(()=>{for(let e of v.keys())e.decrement();v.clear(),h&&s&&h.promises.delete(s),s=null}),e.context&&(l=e.getNextContextId(),o.ssrLoadFrom===`initial`?c=o.initialValue:e.load&&e.has(l)&&(c=e.load(l)));function k(e,t,n,r){return s===e&&(s=null,r!==void 0&&(f=!0),(e===c||t===c)&&o.onHydrated&&queueMicrotask(()=>o.onHydrated(r,{value:t})),c=p,h&&e&&u?(h.promises.delete(e),u=!1,z(()=>{h.running=!0,A(t,n)},!1)):A(t,n)),t}function A(e,t){z(()=>{t===void 0&&b(()=>e),re(t===void 0?f?`ready`:`unresolved`:`errored`),C(t);for(let e of v.keys())e.decrement();v.clear()},!1)}function j(){let e=F&&P(F),t=y(),n=S();if(n!==void 0&&!s)throw n;return g&&!g.user&&e&&ee(()=>{T(),s&&(e.resolved&&h&&u?h.promises.add(s):v.has(e)||(e.increment(),v.add(e)))}),t}function N(e=!0){if(e!==!1&&d)return;d=!1;let t=_?_():i;if(u=h&&h.running,t==null||t===!1){k(s,E(y));return}h&&s&&h.promises.delete(s);let n,r=c===p?E(()=>{try{return a(t,{value:y(),refetching:e})}catch(e){n=e}}):c;if(n!==void 0){k(s,void 0,H(n),t);return}return te(r)?(s=r,`v`in r?(r.s===1?k(s,r.v,void 0,t):k(s,void 0,H(r.v),t),r):(d=!0,queueMicrotask(()=>d=!1),z(()=>{re(f?`refreshing`:`pending`),ne()},!1),r.then(e=>k(r,e,void 0,t),e=>k(r,void 0,H(e),t)))):(k(s,r,void 0,t),r)}Object.defineProperties(j,{state:{get:()=>D()},error:{get:()=>S()},loading:{get(){let e=D();return e===`pending`||e===`refreshing`}},latest:{get(){if(!f)return j();let e=S();if(e&&!s)throw e;return y()}}});let ie=m;return _?ee(()=>(ie=m,N(!1))):N(!1),[j,{refetch:e=>M(ie,()=>N(e)),mutate:b}]}function ne(e){return z(e,!1)}function E(e){if(g===null)return e();let t=g;g=null;try{return e()}finally{g=t}}function D(e,t,n){let r=Array.isArray(e),i,a=n&&n.defer;return n=>{let o;if(r){o=Array(e.length);for(let t=0;t<e.length;t++)o[t]=e[t]()}else o=e();if(a)return a=!1,n;let s=E(()=>t(o,i,n));return i=o,s}}function re(e){C(()=>E(e))}function O(e){return m===null||(m.cleanups===null?m.cleanups=[e]:m.cleanups.push(e)),e}function k(e,t){c||=Symbol(`error`),m=L(void 0,void 0,!0),m.context={...m.context,[c]:[t]},h&&h.running&&h.sources.add(m);try{return e()}catch(e){U(e)}finally{m=m.owner}}function A(){return g}function j(){return m}function M(e,t){let n=m,r=g;m=e,g=null;try{return z(t,!0)}catch(e){U(e)}finally{m=n,g=r}}function N(e){if(h&&h.running)return e(),h.done;let t=g,n=m;return Promise.resolve().then(()=>{g=t,m=n;let r;return F&&(r=h||={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0},r.done||(r.done=new Promise(e=>r.resolve=e)),r.running=!0),z(e,!1),g=m=null,r?r.done:void 0})}var[ie,ae]=x(!1);function oe(e){v.push.apply(v,e),e.length=0}function se(e,t){let n=Symbol(`context`);return{id:n,Provider:be(n),defaultValue:e}}function P(e){let t;return m&&m.context&&(t=m.context[e.id])!==void 0?t:e.defaultValue}function ce(e){let t=w(e),n=w(()=>ye(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var F;function le(){return F||=se()}function ue(){let e=h&&h.running;if(this.sources&&(e?this.tState:this.state)){if((e?this.tState:this.state)===u)I(this);else{let e=_;_=null,z(()=>B(this),!1),_=e}}if(g){let e=this.observers;if(!e||e[e.length-1]!==g){let t=e?e.length:0;g.sources?(g.sources.push(this),g.sourceSlots.push(t)):(g.sources=[this],g.sourceSlots=[t]),e?(e.push(g),this.observerSlots.push(g.sources.length-1)):(this.observers=[g],this.observerSlots=[g.sources.length-1])}}return e&&h.sources.has(this)?this.tValue:this.value}function de(e,t,n){let r=h&&h.running&&h.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(h){let r=h.running;(r||!n&&h.sources.has(e))&&(h.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&z(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=h&&h.running;r&&h.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?_.push(n):v.push(n),n.observers&&ge(n)),r?n.tState=u:n.state=u)}if(_.length>1e6)throw _=[],Error()},!1)}return t}function I(e){if(!e.fn)return;V(e);let t=y;fe(e,h&&h.running&&h.sources.has(e)?e.tValue:e.value,t),h&&!h.running&&h.sources.has(e)&&queueMicrotask(()=>{z(()=>{h&&(h.running=!0),g=m=e,fe(e,e.tValue,t),g=m=null},!1)})}function fe(e,t,n){let r,i=m,a=g;g=m=e;try{r=e.fn(t)}catch(t){return e.pure&&(h&&h.running?(e.tState=u,e.tOwned&&e.tOwned.forEach(V),e.tOwned=void 0):(e.state=u,e.owned&&e.owned.forEach(V),e.owned=null)),e.updatedAt=n+1,U(t)}finally{g=a,m=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?de(e,r,!0):h&&h.running&&e.pure?(h.sources.has(e)||(e.value=r),h.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function L(e,t,n,r=u,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:m,context:m?m.context:null,pure:n};return h&&h.running&&(a.state=0,a.tState=r),m===null||m!==f&&(h&&h.running&&m.pure?m.tOwned?m.tOwned.push(a):m.tOwned=[a]:m.owned?m.owned.push(a):m.owned=[a]),a}function R(e){let t=h&&h.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===d)return B(e);if(e.suspense&&E(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<y);){if(t&&h.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(h.disposed.has(t))return}if((t?e.tState:e.state)===u)I(e);else if((t?e.tState:e.state)===d){let t=_;_=null,z(()=>B(e,n[0]),!1),_=t}}}function z(e,t){if(_)return e();let n=!1;t||(_=[]),v?n=!0:v=[],y++;try{let t=e();return pe(n),t}catch(e){n||(v=null),_=null,U(e)}}function pe(e){if(_&&=(me(_),null),e)return;let t;if(h){if(!h.promises.size&&!h.queue.size){let e=h.sources,n=h.disposed;v.push.apply(v,h.effects),t=h.resolve;for(let e of v)`tState`in e&&(e.state=e.tState),delete e.tState;h=null,z(()=>{for(let e of n)V(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)V(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}ae(!1)},!1)}else if(h.running){h.running=!1,h.effects.push.apply(h.effects,v),v=null,ae(!0);return}}let n=v;v=null,n.length&&z(()=>l(n),!1),t&&t()}function me(e){for(let t=0;t<e.length;t++)R(e[t])}function he(t){let r,i=0;for(r=0;r<t.length;r++){let e=t[r];e.user?t[i++]=e:R(e)}if(e.context){if(e.count){e.effects||=[],e.effects.push(...t.slice(0,i));return}n()}for(e.effects&&(e.done||!e.count)&&(t=[...e.effects,...t],i+=e.effects.length,delete e.effects),r=0;r<i;r++)R(t[r])}function B(e,t){let n=h&&h.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===u?i!==t&&(!i.updatedAt||i.updatedAt<y)&&R(i):e===d&&B(i,t)}}}function ge(e){let t=h&&h.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=d:r.state=d,r.pure?_.push(r):v.push(r),r.observers&&ge(r))}}function V(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)V(e.tOwned[t]);delete e.tOwned}if(h&&h.running&&e.pure)_e(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)V(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}h&&h.running?e.tState=0:e.state=0}function _e(e,t){if(t||(e.tState=0,h.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)_e(e.owned[t])}function H(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function ve(e,t,n){try{for(let n of t)n(e)}catch(e){U(e,n&&n.owner||null)}}function U(e,t=m){let n=c&&t&&t.context&&t.context[c],r=H(e);if(!n)throw r;v?v.push({fn(){ve(r,n,t)},state:u}):ve(r,n,t)}function ye(e){if(typeof e==`function`&&!e.length)return ye(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=ye(e[n]);if(Array.isArray(r)){if(r.length<32768)t.push.apply(t,r);else for(let e=0;e<r.length;e++)t.push(r[e])}else t.push(r)}return t}return e}function be(e,t){return function(t){let n;return S(()=>n=E(()=>(m.context={...m.context,[e]:t.value},ce(()=>t.children))),void 0),n}}var xe=Symbol(`fallback`);function W(e){for(let t=0;t<e.length;t++)e[t]()}function Se(e,t,n={}){let r=[],i=[],a=[],s=0,c=t.length>1?[]:null;return O(()=>W(a)),()=>{let l=e()||[],u=l.length,d,f;return l[o],E(()=>{let e,t,o,m,h,g,_,v,y;if(u===0)s!==0&&(W(a),a=[],r=[],i=[],s=0,c&&=[]),n.fallback&&(r=[xe],i[0]=b(e=>(a[0]=e,n.fallback())),s=1);else if(s===0){for(i=Array(u),f=0;f<u;f++)r[f]=l[f],i[f]=b(p);s=u}else{for(o=Array(u),m=Array(u),c&&(h=Array(u)),g=0,_=Math.min(s,u);g<_&&r[g]===l[g];g++);for(_=s-1,v=u-1;_>=g&&v>=g&&r[_]===l[v];_--,v--)o[v]=i[_],m[v]=a[_],c&&(h[v]=c[_]);for(e=new Map,t=Array(v+1),f=v;f>=g;f--)y=l[f],d=e.get(y),t[f]=d===void 0?-1:d,e.set(y,f);for(d=g;d<=_;d++)y=r[d],f=e.get(y),f!==void 0&&f!==-1?(o[f]=i[d],m[f]=a[d],c&&(h[f]=c[d]),f=t[f],e.set(y,f)):a[d]();for(f=g;f<u;f++)f in o?(i[f]=o[f],a[f]=m[f],c&&(c[f]=h[f],c[f](f))):i[f]=b(p);i=i.slice(0,s=u),r=l.slice(0)}return i});function p(e){if(a[f]=e,c){let[e,n]=x(f);return c[f]=n,t(l[f],e)}return t(l[f])}}}function Ce(e,t,n={}){let r=[],i=[],a=[],s=[],c=0,l;return O(()=>W(a)),()=>{let u=e()||[],d=u.length;return u[o],E(()=>{if(d===0)return c!==0&&(W(a),a=[],r=[],i=[],c=0,s=[]),n.fallback&&(r=[xe],i[0]=b(e=>(a[0]=e,n.fallback())),c=1),i;for(r[0]===xe&&(a[0](),a=[],r=[],i=[],c=0),l=0;l<d;l++)l<r.length&&r[l]!==u[l]?s[l](()=>u[l]):l>=r.length&&(i[l]=b(f));for(;l<r.length;l++)a[l]();return c=s.length=a.length=d,r=u.slice(0),i=i.slice(0,c)});function f(e){a[l]=e;let[n,r]=x(u[l]);return s[l]=r,t(n,l)}}}function we(e,t){return E(()=>e(t||{}))}function G(){return!0}var Te={get(e,t,n){return t===i?n:e.get(t)},has(e,t){return t===i||e.has(t)},set:G,deleteProperty:G,getOwnPropertyDescriptor(e,t){return{configurable:!0,enumerable:!0,get(){return e.get(t)},set:G,deleteProperty:G}},ownKeys(e){return e.keys()}};function Ee(e){return(e=typeof e==`function`?e():e)?e:{}}function De(){for(let e=0,t=this.length;e<t;++e){let t=this[e]();if(t!==void 0)return t}}function Oe(...e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];t||=!!r&&i in r,e[n]=typeof r==`function`?(t=!0,w(r)):r}if(a&&t)return new Proxy({get(t){for(let n=e.length-1;n>=0;n--){let r=Ee(e[n])[t];if(r!==void 0)return r}},has(t){for(let n=e.length-1;n>=0;n--)if(t in Ee(e[n]))return!0;return!1},keys(){let t=[];for(let n=0;n<e.length;n++)t.push(...Object.keys(Ee(e[n])));return[...new Set(t)]}},Te);let n={},r=Object.create(null);for(let t=e.length-1;t>=0;t--){let i=e[t];if(!i)continue;let a=Object.getOwnPropertyNames(i);for(let e=a.length-1;e>=0;e--){let t=a[e];if(t===`__proto__`||t===`constructor`)continue;let o=Object.getOwnPropertyDescriptor(i,t);if(!r[t])r[t]=o.get?{enumerable:!0,configurable:!0,get:De.bind(n[t]=[o.get.bind(i)])}:o.value===void 0?void 0:o;else{let e=n[t];e&&(o.get?e.push(o.get.bind(i)):o.value!==void 0&&e.push(()=>o.value))}}}let o={},s=Object.keys(r);for(let e=s.length-1;e>=0;e--){let t=s[e],n=r[t];n&&n.get?Object.defineProperty(o,t,n):o[t]=n?n.value:void 0}return o}function ke(e,...t){let n=t.length;if(a&&i in e){let r=n>1?t.flat():t[0],i=new Set,a=t.map(t=>{let n=t.filter(e=>!i.has(e)&&(i.add(e),!0));return new Proxy({get(t){return n.includes(t)?e[t]:void 0},has(t){return n.includes(t)&&t in e},keys(){return n.filter(t=>t in e)}},Te)});return a.push(new Proxy({get(t){return r.includes(t)?void 0:e[t]},has(t){return!r.includes(t)&&t in e},keys(){return Object.keys(e).filter(e=>!r.includes(e))}},Te)),a}let r=[];for(let e=0;e<=n;e++)r[e]={};for(let i of Object.getOwnPropertyNames(e)){let a=n;for(let e=0;e<t.length;e++)if(t[e].includes(i)){a=e;break}let o=Object.getOwnPropertyDescriptor(e,i);!o.get&&!o.set&&o.enumerable&&o.writable&&o.configurable?r[a][i]=o.value:Object.defineProperty(r[a],i,o)}return r}function Ae(t){let r,i,a=()=>{if(!i){let e=i=t();e.then(e=>{r=()=>e.default},()=>{i===e&&(i=void 0)})}return i},o=t=>{let i=e.context;if(i){let[t,o]=x();e.count||=0,e.count++,a().then(t=>{!e.done&&n(i),e.count--,o(()=>t.default),n()},t=>{!e.done&&n(i),e.count--,o(()=>()=>{throw t}),n()}),r=t}else if(!r){let[e]=T(()=>a().then(e=>e.default));r=e,O(()=>r=void 0)}let o;return w(()=>(o=r?.())?E(()=>{if(!i||e.done)return o(t);let r=e.context;n(i);let a=o(t);return n(r),a}):``)};return o.preload=()=>a(),o}var je=0;function Me(){return e.context?e.getNextContextId():`cl-${je++}`}var Ne=e=>`Stale read from <${e}>.`;function Pe(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return w(Se(()=>e.each,e.children,t||void 0))}function Fe(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return w(Ce(()=>e.each,e.children,t||void 0))}function Ie(e){let t=e.keyed,n=w(()=>e.when,void 0,void 0),r=t?n:w(n,void 0,{equals:(e,t)=>!e==!t});return w(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?E(()=>a(t?i:()=>{if(!E(r))throw Ne(`Show`);return n()})):a}return e.fallback},void 0,void 0)}function Le(e){let t=ce(()=>e.children),n=w(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=()=>void 0;for(let e=0;e<n.length;e++){let t=e,i=n[e],a=r,o=w(()=>a()?void 0:i.when,void 0,void 0),s=i.keyed?o:w(o,void 0,{equals:(e,t)=>!e==!t});r=()=>a()||(s()?[t,o,i]:void 0)}return r});return w(()=>{let t=n()();if(!t)return e.fallback;let[r,i,a]=t,o=a.children;return typeof o==`function`&&o.length>0?E(()=>o(a.keyed?i():()=>{if(E(n)()?.[0]!==r)throw Ne(`Match`);return i()})):o},void 0,void 0)}function Re(e){return e}var K;function ze(){K&&[...K].forEach(e=>e())}function Be(t){let n;e.context&&e.load&&(n=e.load(e.getContextId()));let[r,i]=x(n,void 0);return K||=new Set,K.add(i),O(()=>K.delete(i)),w(()=>{let e;if(e=r()){let n=t.fallback;return typeof n==`function`&&n.length?E(()=>n(e,()=>i())):n}return k(()=>t.children,i)},void 0,void 0)}var Ve=se();function He(t){let r=0,i,a,o,s,c,[l,u]=x(!1),d=le(),f={increment:()=>{++r===1&&u(!0)},decrement:()=>{--r===0&&u(!1)},inFallback:l,effects:[],resolved:!1},p=j();if(e.context&&e.load){let t=e.getContextId(),r=e.load(t);if(r&&(typeof r!=`object`||r.s!==1?o=r:e.gather(t)),o&&o!==`$$f`){let[r,i]=x(void 0,{equals:!1});s=r,o.then(()=>{if(e.done)return i();e.gather(t),n(a),i(),n()},e=>{c=e,i()})}}let m=P(Ve);m&&(i=m.register(f.inFallback));let h;return O(()=>h&&h()),we(d.Provider,{value:f,get children(){return w(()=>{if(c)throw c;if(a=e.context,s){s(),s=void 0;return}a&&o===`$$f`&&n();let r=w(()=>t.children);return w(e=>{let s=f.inFallback(),{showContent:c=!0,showFallback:l=!0}=i?i():{};if((!s||o&&o!==`$$f`)&&c)return f.resolved=!0,h&&h(),h=a=o=void 0,oe(f.effects),r();if(l)return h?e:b(e=>(h=e,a&&=(n({id:a.id+`F`,count:0}),void 0),t.fallback),p)})})}})}var Ue=new Set([`className`,`value`,`readOnly`,`noValidate`,`formNoValidate`,`isMap`,`noModule`,`playsInline`,`adAuctionHeaders`,`allowFullscreen`,`browsingTopics`,`defaultChecked`,`defaultMuted`,`defaultSelected`,`disablePictureInPicture`,`disableRemotePlayback`,`preservesPitch`,`shadowRootClonable`,`shadowRootCustomElementRegistry`,`shadowRootDelegatesFocus`,`shadowRootSerializable`,`sharedStorageWritable`,...`allowfullscreen.async.alpha.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.hidden.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.adauctionheaders.browsingtopics.credentialless.defaultchecked.defaultmuted.defaultselected.defer.disablepictureinpicture.disableremoteplayback.preservespitch.shadowrootclonable.shadowrootcustomelementregistry.shadowrootdelegatesfocus.shadowrootserializable.sharedstoragewritable`.split(`.`)]),We=new Set([`innerHTML`,`textContent`,`innerText`,`children`]),Ge=Object.assign(Object.create(null),{className:`class`,htmlFor:`for`}),Ke=Object.assign(Object.create(null),{class:`className`,novalidate:{$:`noValidate`,FORM:1},formnovalidate:{$:`formNoValidate`,BUTTON:1,INPUT:1},ismap:{$:`isMap`,IMG:1},nomodule:{$:`noModule`,SCRIPT:1},playsinline:{$:`playsInline`,VIDEO:1},readonly:{$:`readOnly`,INPUT:1,TEXTAREA:1},adauctionheaders:{$:`adAuctionHeaders`,IFRAME:1},allowfullscreen:{$:`allowFullscreen`,IFRAME:1},browsingtopics:{$:`browsingTopics`,IMG:1},defaultchecked:{$:`defaultChecked`,INPUT:1},defaultmuted:{$:`defaultMuted`,AUDIO:1,VIDEO:1},defaultselected:{$:`defaultSelected`,OPTION:1},disablepictureinpicture:{$:`disablePictureInPicture`,VIDEO:1},disableremoteplayback:{$:`disableRemotePlayback`,AUDIO:1,VIDEO:1},preservespitch:{$:`preservesPitch`,AUDIO:1,VIDEO:1},shadowrootclonable:{$:`shadowRootClonable`,TEMPLATE:1},shadowrootdelegatesfocus:{$:`shadowRootDelegatesFocus`,TEMPLATE:1},shadowrootserializable:{$:`shadowRootSerializable`,TEMPLATE:1},sharedstoragewritable:{$:`sharedStorageWritable`,IFRAME:1,IMG:1}});function qe(e,t){let n=Ke[e];return typeof n==`object`?n[t]?n.$:void 0:n}var Je=new Set([`beforeinput`,`click`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`]),Ye={xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`},Xe=e=>w(()=>e());function Ze(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;){if(t[o]===n[s]){o++,s++;continue}for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null){if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&(d=l.get(t[c]))!=null&&d===r+u;)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++}else t[o++].remove()}}}var Qe=`_$DX_DELEGATE`;function $e(e,t,n,r={}){let i;return b(r=>{i=r,t===document?e():J(t,e(),!n&&t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function et(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>E(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function tt(e,t=window.document){let n=t[Qe]||(t[Qe]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,ht))}}function q(e,t,n){Y(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function nt(e,t,n,r){Y(e)||(r==null?e.removeAttributeNS(t,n):e.setAttributeNS(t,n,r))}function rt(e,t,n){Y(e)||(n?e.setAttribute(t,``):e.removeAttribute(t))}function it(e,t){Y(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function at(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let r=n[0];e.addEventListener(t,n[0]=t=>r.call(e,n[1],t))}else e.addEventListener(t,n,typeof n!=`function`&&n)}function ot(e,t,n={}){let r=Object.keys(t||{}),i=Object.keys(n),a,o;for(a=0,o=i.length;a<o;a++){let r=i[a];r&&r!==`undefined`&&!t[r]&&(pt(e,r,!1),delete n[r])}for(a=0,o=r.length;a<o;a++){let i=r[a],o=!!t[i];i&&i!==`undefined`&&n[i]!==o&&o&&(pt(e,i,!0),n[i]=o)}return n}function st(e,t,n){if(!t)return n?q(e,`style`):t;let r=e.style;if(typeof t==`string`)return r.cssText=t;typeof n==`string`&&(r.cssText=n=void 0),n||={},t||={};let i,a;for(a in n)t[a]??r.removeProperty(a),delete n[a];for(a in t)i=t[a],i!==n[a]&&(r.setProperty(a,i),n[a]=i);return n}function ct(e,t,n){n==null?e.style.removeProperty(t):e.style.setProperty(t,n)}function lt(e,t={},n,r){let i={};return r||S(()=>i.children=X(e,t.children,i.children)),S(()=>typeof t.ref==`function`&&ut(t.ref,e)),S(()=>dt(e,t,n,!0,i,!0)),i}function ut(e,t,n){return E(()=>e(t,n))}function J(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return X(e,t,r,n);S(r=>X(e,t(),r,n),r)}function dt(e,t,n,r,i={},a=!1){t||={};for(let r in i)if(!(r in t)){if(r===`children`)continue;i[r]=mt(e,r,null,i[r],n,a,t)}for(let o in t){if(o===`children`){r||X(e,t.children);continue}let s=t[o];i[o]=mt(e,o,s,i[o],n,a,t)}}function Y(t){return!!e.context&&!e.done&&(!t||t.isConnected)}function ft(e){return e.toLowerCase().replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function pt(e,t,n){let r=t.trim().split(/\s+/);for(let t=0,i=r.length;t<i;t++)e.classList.toggle(r[t],n)}function mt(e,t,n,r,i,a,o){let s,c,l,u,d;if(t===`style`)return st(e,n,r);if(t===`classList`)return ot(e,n,r);if(n===r)return r;if(t===`ref`)a||n(e);else if(t.slice(0,3)===`on:`){let i=t.slice(3);r&&e.removeEventListener(i,r,typeof r!=`function`&&r),n&&e.addEventListener(i,n,typeof n!=`function`&&n)}else if(t.slice(0,10)===`oncapture:`){let i=t.slice(10);r&&e.removeEventListener(i,r,!0),n&&e.addEventListener(i,n,!0)}else if(t.slice(0,2)===`on`){let i=t.slice(2).toLowerCase(),a=Je.has(i);if(!a&&r){let t=Array.isArray(r)?r[0]:r;e.removeEventListener(i,t)}(a||n)&&(at(e,i,n,a),a&&tt([i]))}else if(t.slice(0,5)===`attr:`)q(e,t.slice(5),n);else if(t.slice(0,5)===`bool:`)rt(e,t.slice(5),n);else if((d=t.slice(0,5)===`prop:`)||(l=We.has(t))||!i&&((u=qe(t,e.tagName))||(c=Ue.has(t)))||(s=e.nodeName.includes(`-`)||`is`in o)){if(d)t=t.slice(5),c=!0;else if(Y(e))return n;t===`class`||t===`className`?it(e,n):s&&!c&&!l?e[ft(t)]=n:(t===`value`||t===`defaultValue`)&&(e.nodeName===`INPUT`||e.nodeName===`TEXTAREA`)?e[u||t]=n??``:e[u||t]=n}else{let r=i&&t.indexOf(`:`)>-1&&Ye[t.split(`:`)[0]];r?nt(e,r,t,n):q(e,Ge[t]||t,n)}return n}function ht(t){if(e.registry&&e.events&&e.events.find(([e,n])=>n===t))return;let n=t.target,r=`$$${t.type}`,i=t.target,a=t.currentTarget,o=e=>Object.defineProperty(t,"target",{configurable:!0,value:e}),s=()=>{let e=n[r];if(e&&!n.disabled){let i=n[`${r}Data`];if(i===void 0?e.call(n,t):e.call(n,i,t),t.cancelBubble)return}return n.host&&typeof n.host!=`string`&&!n.host._$host&&n.contains(t.target)&&o(n.host),!0},c=()=>{for(;s()&&(n=n._$host||n.parentNode||n.host););};Object.defineProperty(t,"currentTarget",{configurable:!0,get(){return n||document}}),e.registry&&!e.done&&(e.done=_$HY.done=!0);try{if(t.composedPath){let e=t.composedPath();o(e[0]);for(let t=0;t<e.length-2&&(n=e[t],s());t++){if(n._$host){n=n._$host,c();break}if(n.parentNode===a)break}}else c();o(i)}finally{t=n=null}}function X(e,t,n,r,i){let a=Y(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=Z(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=Z(e,n,r)}else if(o===`function`)return S(()=>{let i=t();for(;typeof i==`function`;)i=i();n=X(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(gt(o,t,n,i))return S(()=>n=X(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=Z(e,n,r),s)return n}else c?n.length===0?_t(e,o,r):Ze(e,n,o):(n&&Z(e),_t(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=Z(e,n,r,t);Z(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function gt(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(o!=null&&o!==!0&&o!==!1){if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=gt(e,o,s)||i;else if(c===`function`){if(r){for(;typeof o==`function`;)o=o();i=gt(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0}else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}}return i}function _t(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function Z(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}var vt=()=>void 0,yt=`http://www.w3.org/2000/svg`;function bt(e,t=!1,n=void 0){return t?document.createElementNS(yt,e):document.createElement(e,{is:n})}function xt(t){let{useShadow:n}=t,r=document.createTextNode(``),i=()=>t.mount||document.body,a=j(),o,s=!!e.context;return C(()=>{s&&(j().user=s=!1),o||=M(a,()=>w(()=>t.children));let e=i();if(e instanceof HTMLHeadElement){let[t,n]=x(!1);b(n=>J(e,()=>t()?n():o(),null)),O(()=>n(!0))}else{let i=bt(t.isSVG?`g`:`div`,t.isSVG),a=n&&i.attachShadow?i.attachShadow({mode:`open`}):i;Object.defineProperty(i,"_$host",{get(){return r.parentNode},configurable:!0}),J(a,o),e.appendChild(i),t.ref&&t.ref(i),O(()=>e.contains(i)&&e.removeChild(i))}},void 0,{render:!s}),r}var St={nav:{dashboard:`Dashboard`,queues:`Queues`,retries:`Retries`,scheduled:`Scheduled`,dead:`Dead`,busy:`Busy`,batches:`Batches`,flows:`Flows`,limiters:`Limiters`,cron:`Cron`,metrics:`Metrics`,profiles:`Profiles`,search:`Search`,extensions:`Extensions`,collapse:`Collapse`,expand:`Expand`,language:`Language`,language_current:`Language: {name}`,timezone_current:`Timezone: {name}`,theme_current:`Theme: {name}`,theme_next:`Switch to {name} theme`,status_active:`System Status: Active`,status_inactive:`System Status: Disconnected`,home_label:`Wurk — dashboard home`,toggle:`Toggle navigation`},dashboard:{processed:`Processed`,failed:`Failed`,expired:`Expired`,busy:`Busy`,enqueued:`Enqueued`,retries:`Retries`,scheduled:`Scheduled`,dead:`Dead`,processes:`Processes`,paused:`Paused`,strapline:`Wurk, wurk. Ready to work. Zug zug.`,tagline:`A 100% drop-in replacement for Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Free forever.`,install:`Install`,docs:`Documentation`,active:`Active`,vs_last_hour:`vs last hour`,stable_threshold:`Stable threshold`,above_threshold:`Above threshold`,system_idle:`System idle`,processing:`Processing`,performance_insight:`Performance Insight`,perf_subtitle:`Jobs Processed vs Failed over {range}`,no_history:`No history yet — the chart fills in as jobs run.`,range_1h_desc:`the last hour`,range_24h_desc:`the last 24 hours`,range_7d_desc:`the last 7 days`,range_30d_desc:`the last 30 days`},table:{class:`Class`,args:`Args`,jid:`JID`,queue:`Queue`,error:`Error`,retry_at:`Retry At`,failed_at:`Failed At`,scheduled_at:`Scheduled At`,enqueued_at:`Enqueued At`,message:`Message`,count:`Count`,status:`Status`,total:`Total`,pending:`Pending`,size:`Size`,latency:`Latency`,concurrency:`Concurrency`,busy:`Busy`,queues:`Queues`,name:`Name`,type:`Type`,used:`Used`,limit:`Limit`,usage:`Usage`,bid:`BID`,fid:`FID`,description:`Description`,failures:`Failures`,progress:`Progress`,created:`Created`,elapsed:`Elapsed`,schedule:`Schedule`,select_all:`Select all`,select_row:`Select job`},summaries:{queues:`Active queues with their depth and latency — click a queue to inspect its jobs.`,retries:`Jobs that raised an error and are scheduled to run again — click one for the error and backtrace.`,scheduled:`Jobs enqueued to run at a future time.`,dead:`Jobs that exhausted every retry — click one to inspect the failure.`,busy:`Live worker processes and the jobs they're currently running.`,batches:`Batched jobs and their progress, successes, and failures.`,flows:`Job DAGs — each node runs once everything it depends on has succeeded.`,limiters:`Rate limiters and their current usage.`,cron:`Periodic (cron) jobs with their schedule and last run — click a loop to see its execution history.`,metrics:`Throughput and failure history, with per-job execution stats.`,profiles:`Captured job profiles — open one in the Firefox profiler to inspect its flame graph.`,search:`Find a job across queues, retries, scheduled, and dead by JID, class name, or argument.`,dashboard:`Live totals, throughput over the selected window, and queue health at a glance.`},busy:{hosts:`{n} hosts`,cores:`{n} cores`,of_total_ram:`of total RAM`,heartbeat:`Heartbeat`,rss:`RSS`,rtt:`Redis RTT`,version:`Version`,tag:`Tag`,labels:`Labels`,identity:`Identity`,started:`Started`,up_for:`up`,running_jobs:`Running jobs`,running_since:`Running Since`,no_running:`No jobs currently running on this process`,leader:`Leader`,leader_title:`This process holds the cluster leader lock`,heartbeat_ok:`Heartbeat OK`},cron:{history_title:`Execution history`,fired:`Fired`,no_history:`No runs recorded yet`,last_fire:`Last fire`,next_fire:`Next fire`},job:{detail:`Job detail`,class:`Class`,queue:`Queue`,jid:`JID`,retries:`Retries`,enqueued:`Enqueued`,at:`Scheduled`,args:`Arguments`,error:`Error`,backtrace:`Backtrace`},search:{emptyTitle:`Search for a job`,emptyHint:`Enter a JID, class name, or argument (2+ characters). Results span queues, retries, scheduled, and dead jobs.`,placeholder:`Search by JID, class name, or argument…`,try:`Try:`,source:`Source`,when:`When`,truncated:`Showing partial results — refine your search to narrow it down.`,result:`{n} result for “{term}”`,results:`{n} results for “{term}”`,kind:{queue:`Queue`,retry:`Retry`,scheduled:`Scheduled`,dead:`Dead`}},extension:{summary:`Provided by a third-party extension.`,open:`Open`,notRendered:`This tab is provided by a third-party extension. wurk surfaces it in the nav but doesn't render its view inside the dashboard.`},actions:{retry:`Retry`,delete:`Delete`,kill:`Kill`,add_to_queue:`Add to Queue`,clear:`Clear`,pause:`Pause`,unpause:`Resume`,pause_hint:`Stop fetching new jobs from this queue (in-flight jobs finish)`,unpause_hint:`Resume fetching jobs from this queue`,quiet:`Quiet`,stop:`Stop`,prev:`Previous`,next:`Next`,search:`Search`,all_suffix:`All`,selected:`{n} selected`,select_hint:`Select jobs to act on`,scope_selected:`{n} selected job(s)`,scope_all:`every job in this set`,scope_this_job:`this job`,scope_this_process:`this process`,scope_all_processes:`all processes`,confirm:`{action} {scope}? This cannot be undone.`,confirm_clear_queue:`Clear all jobs from "{name}"? This cannot be undone.`,reset:`Reset`,enqueue:`Enqueue`,matching:`{n} match the filter`,all_filtered_hint:`"All" acts on the whole set, not just the filtered rows. Clear the filter to use it.`},readonly:{banner:`Read-only mode`},toast:{failed:`Action failed. Please try again.`,readonly:`This dashboard is read-only — the action was rejected.`,gone:`That job was already gone — it may have run or been removed.`,unavailable:`Redis is unavailable right now. Try again in a moment.`,dismiss:`Dismiss`,region:`Notifications`,partial:`{count} applied, {failed} failed. The list has been refreshed.`},common:{loading:`Loading…`,error:`Error loading data`,empty:`No items`,page:`Page`,of:`of`,ms:`ms`,load_failed:`Couldn't load this page`,load_failed_hint:`The app may have updated since you opened it. Reloading will fetch the latest version.`,reload:`Reload`,filter_placeholder:`Filter by class or JID…`,matching:`{n} matching`,close:`Close`},limiters:{exhausted:`exhausted`,available:`available`},queues:{job_count:`{n} jobs`,latency_label:`latency`},batches:{children:`Children`,completed:`Completed`,parent:`Parent`,tags:`Tags`,failed_jobs:`Failed jobs`,dead_jobs:`Dead jobs`,complete:`complete`,invalidated:`invalidated`},flows:{graph:`Graph`,nodes:`Nodes`,depth:`Depth`,width:`Width`,succeeded:`Succeeded`,finished:`Finished`,blocked:`Blocked by`,depends_on:`Depends on`,piped:`piped`,abandon:`Abandon`,abandon_hint:`Mark this flow abandoned and release its keys. Jobs already queued still run.`,released:`This flow was abandoned — its node records were released.`,state:{running:`Running`,succeeded:`Succeeded`,failed:`Failed`,abandoned:`Abandoned`,waiting:`Waiting`,enqueued:`Enqueued`,dead:`Dead`,broken:`Broken`}},metrics:{time_range:`Time Range:`,total_processed:`Total Processed`,across_all_queues:`across all queues`,failed_jobs:`Failed Jobs`,total_failures:`total failures`,avg_latency:`Avg Latency`,head_of_line:`head-of-line`,active_workers:`Active Workers`,stable:`Stable`,no_workers:`No workers`,throughput_failures:`Throughput & Failures`,throughput_sub:`Jobs processed per bucket over the last {range}`,no_queue_history:`No queue history yet.`,queue_depth:`Queue Depth`,peak:`peak {n}`,top_job_types:`Top Job Types (Volume)`,job_class:`Job Class`,pct_total:`% Total`,queue_latency_seconds:`Queue Latency (seconds)`,historical_snapshots:`Historical Snapshots`,view_job_detail:`View job class detail`},timezone:{title:`Timezone`,shown_in:`Times shown in {name}`,automatic:`Automatic ({name})`,filter:`Filter timezones…`,empty:`No timezone matches “{query}”`},theme:{light:`Light`,dark:`Dark`,system:`System`},notfound:{title:`Page not found`,hint:`This dashboard has no page at that address.`,home:`Back to the dashboard`}},Ct={en:St,es:{nav:{dashboard:`Panel`,queues:`Colas`,retries:`Reintentos`,scheduled:`Programados`,dead:`Muertos`,busy:`Ocupados`,batches:`Lotes`,flows:`Flujos`,limiters:`Limitadores`,cron:`Cron`,metrics:`Métricas`,profiles:`Perfiles`,search:`Buscar`,extensions:`Extensiones`,collapse:`Contraer`,expand:`Expandir`,language:`Idioma`,language_current:`Idioma: {name}`,timezone_current:`Zona horaria: {name}`,theme_current:`Tema: {name}`,theme_next:`Cambiar al tema {name}`,status_active:`Estado del sistema: Activo`,status_inactive:`Estado del sistema: Desconectado`,home_label:`Wurk — inicio del panel`,toggle:`Mostrar u ocultar navegación`},dashboard:{processed:`Procesados`,failed:`Fallidos`,expired:`Caducados`,busy:`Ocupados`,enqueued:`En cola`,retries:`Reintentos`,scheduled:`Programados`,dead:`Muertos`,processes:`Procesos`,paused:`Pausado`,strapline:`Wurk, wurk. Listo para trabajar. Zug zug.`,tagline:`Un reemplazo 100% compatible con Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Gratis para siempre.`,install:`Instalar`,docs:`Documentación`,active:`Activo`,vs_last_hour:`vs. la última hora`,stable_threshold:`Umbral estable`,above_threshold:`Sobre el umbral`,system_idle:`Sistema inactivo`,processing:`Procesando`,performance_insight:`Análisis de rendimiento`,perf_subtitle:`Trabajos procesados frente a fallidos durante {range}`,no_history:`Aún no hay historial — el gráfico se completa a medida que se ejecutan los trabajos.`,range_1h_desc:`la última hora`,range_24h_desc:`las últimas 24 horas`,range_7d_desc:`los últimos 7 días`,range_30d_desc:`los últimos 30 días`},table:{class:`Clase`,args:`Args`,jid:`JID`,queue:`Cola`,error:`Error`,retry_at:`Reintentar en`,failed_at:`Falló en`,scheduled_at:`Programado en`,enqueued_at:`Encolado en`,message:`Mensaje`,count:`Recuento`,status:`Estado`,total:`Total`,pending:`Pendiente`,size:`Tamaño`,latency:`Latencia`,concurrency:`Concurrencia`,busy:`Ocupado`,queues:`Colas`,name:`Nombre`,type:`Tipo`,used:`Usado`,limit:`Límite`,usage:`Uso`,bid:`BID`,fid:`FID`,description:`Descripción`,failures:`Fallos`,progress:`Progreso`,created:`Creado`,elapsed:`Transcurrido`,schedule:`Programación`,select_all:`Seleccionar todo`,select_row:`Seleccionar trabajo`},summaries:{queues:`Colas activas con su profundidad y latencia — haz clic en una cola para inspeccionar sus trabajos.`,retries:`Trabajos que generaron un error y están programados para reintentarse — haz clic en uno para ver el error y el backtrace.`,scheduled:`Trabajos encolados para ejecutarse en un momento futuro.`,dead:`Trabajos que agotaron todos los reintentos — haz clic en uno para inspeccionar el fallo.`,busy:`Procesos de trabajo en vivo y los trabajos que están ejecutando actualmente.`,batches:`Trabajos en lote y su progreso, éxitos y fallos.`,flows:`DAGs de trabajos: cada nodo se ejecuta cuando todo aquello de lo que depende ha tenido éxito.`,limiters:`Limitadores de tasa y su uso actual.`,cron:`Trabajos periódicos (cron) con su programación y última ejecución — haz clic en un loop para ver su historial de ejecución.`,metrics:`Historial de rendimiento y fallos, con estadísticas de ejecución por trabajo.`,profiles:`Perfiles de trabajos capturados — abre uno en el profiler de Firefox para inspeccionar su flame graph.`,search:`Busca un trabajo en colas, reintentos, programados y muertos por JID, nombre de clase o argumento.`,dashboard:`Totales en vivo, rendimiento en el periodo elegido y el estado de las colas de un vistazo.`},busy:{hosts:`{n} hosts`,cores:`{n} núcleos`,of_total_ram:`de la RAM total`,heartbeat:`Latido`,rss:`RSS`,rtt:`RTT de Redis`,version:`Versión`,tag:`Etiqueta`,labels:`Etiquetas`,identity:`Identidad`,started:`Iniciado`,up_for:`activo`,running_jobs:`Trabajos en ejecución`,running_since:`En ejecución desde`,no_running:`No hay trabajos en ejecución en este proceso`,leader:`Líder`,leader_title:`Este proceso mantiene el bloqueo de líder del clúster`,heartbeat_ok:`Latido correcto`},cron:{history_title:`Historial de ejecución`,fired:`Disparado`,no_history:`Aún no hay ejecuciones registradas`,last_fire:`Última ejecución`,next_fire:`Próxima ejecución`},job:{detail:`Detalle del trabajo`,class:`Clase`,queue:`Cola`,jid:`JID`,retries:`Reintentos`,enqueued:`Encolado`,at:`Programado`,args:`Argumentos`,error:`Error`,backtrace:`Backtrace`},search:{emptyTitle:`Buscar un trabajo`,emptyHint:`Introduce un JID, nombre de clase o argumento (2+ caracteres). Los resultados abarcan colas, reintentos, programados y muertos.`,placeholder:`Buscar por JID, nombre de clase o argumento…`,try:`Prueba:`,source:`Origen`,when:`Cuándo`,truncated:`Mostrando resultados parciales — refina tu búsqueda para acotarla.`,result:`{n} resultado para “{term}”`,results:`{n} resultados para “{term}”`,kind:{queue:`Cola`,retry:`Reintento`,scheduled:`Programado`,dead:`Muerto`}},extension:{summary:`Proporcionado por una extensión de terceros.`,open:`Abrir`,notRendered:`Esta pestaña es proporcionada por una extensión de terceros. wurk la muestra en la navegación pero no renderiza su vista dentro del panel.`},actions:{retry:`Reintentar`,delete:`Eliminar`,kill:`Matar`,add_to_queue:`Añadir a la cola`,clear:`Vaciar`,pause:`Pausar`,unpause:`Reanudar`,pause_hint:`Detener la obtención de nuevos trabajos de esta cola (los trabajos en curso terminan)`,unpause_hint:`Reanudar la obtención de trabajos de esta cola`,quiet:`Silenciar`,stop:`Detener`,prev:`Anterior`,next:`Siguiente`,search:`Buscar`,all_suffix:`Todo`,selected:`{n} seleccionados`,select_hint:`Selecciona trabajos para actuar sobre ellos`,scope_selected:`{n} trabajo(s) seleccionados`,scope_all:`todos los trabajos de este conjunto`,scope_this_job:`este trabajo`,scope_this_process:`este proceso`,scope_all_processes:`todos los procesos`,confirm:`¿{action} {scope}? Esto no se puede deshacer.`,confirm_clear_queue:`¿Vaciar todos los trabajos de "{name}"? Esto no se puede deshacer.`,reset:`Reiniciar`,enqueue:`Encolar`,matching:`{n} coinciden con el filtro`,all_filtered_hint:`"Todos" actúa sobre todo el conjunto, no solo sobre las filas filtradas. Borra el filtro para usarlo.`},readonly:{banner:`Modo de solo lectura`},toast:{failed:`La acción falló. Inténtalo de nuevo.`,readonly:`Este panel es de solo lectura — la acción fue rechazada.`,gone:`Ese trabajo ya no estaba — puede que se haya ejecutado o eliminado.`,unavailable:`Redis no está disponible ahora mismo. Inténtalo de nuevo en un momento.`,dismiss:`Descartar`,region:`Notificaciones`,partial:`{count} aplicados, {failed} fallidos. La lista se ha actualizado.`},common:{loading:`Cargando…`,error:`Error al cargar datos`,empty:`Sin elementos`,page:`Página`,of:`de`,ms:`ms`,load_failed:`No se pudo cargar esta página`,load_failed_hint:`La aplicación puede haberse actualizado desde que la abriste. Recargar obtendrá la última versión.`,reload:`Recargar`,filter_placeholder:`Filtrar por clase o JID…`,matching:`{n} coincidencias`,close:`Cerrar`},limiters:{exhausted:`agotado`,available:`disponible`},queues:{job_count:`{n} trabajos`,latency_label:`latencia`},batches:{children:`Hijos`,completed:`Completado`,parent:`Padre`,tags:`Etiquetas`,failed_jobs:`Trabajos fallidos`,dead_jobs:`Trabajos muertos`,complete:`completo`,invalidated:`invalidado`},flows:{graph:`Grafo`,nodes:`Nodos`,depth:`Profundidad`,width:`Anchura`,succeeded:`Completados`,finished:`Finalizado`,blocked:`Bloqueado por`,depends_on:`Depende de`,piped:`encadenado`,abandon:`Abandonar`,abandon_hint:`Marca este flujo como abandonado y libera sus claves. Los trabajos ya encolados se ejecutarán igualmente.`,released:`Este flujo fue abandonado: sus registros de nodo se liberaron.`,state:{running:`En curso`,succeeded:`Completado`,failed:`Fallido`,abandoned:`Abandonado`,waiting:`En espera`,enqueued:`En cola`,dead:`Muerto`,broken:`Roto`}},metrics:{time_range:`Rango de tiempo:`,total_processed:`Total procesados`,across_all_queues:`en todas las colas`,failed_jobs:`Trabajos fallidos`,total_failures:`fallos totales`,avg_latency:`Latencia media`,head_of_line:`cabeza de línea`,active_workers:`Workers activos`,stable:`Estable`,no_workers:`Sin workers`,throughput_failures:`Rendimiento y fallos`,throughput_sub:`Trabajos procesados por intervalo durante {range}`,no_queue_history:`Aún no hay historial de colas.`,queue_depth:`Profundidad de cola`,peak:`pico {n}`,top_job_types:`Principales tipos de trabajo (volumen)`,job_class:`Clase de trabajo`,pct_total:`% del total`,queue_latency_seconds:`Latencia de cola (segundos)`,historical_snapshots:`Instantáneas históricas`,view_job_detail:`Ver detalle de la clase de trabajo`},timezone:{title:`Zona horaria`,shown_in:`Horas mostradas en {name}`,automatic:`Automática ({name})`,filter:`Filtrar zonas horarias…`,empty:`Ninguna zona horaria coincide con “{query}”`},theme:{light:`Claro`,dark:`Oscuro`,system:`Sistema`},notfound:{title:`Página no encontrada`,hint:`Este panel no tiene ninguna página en esa dirección.`,home:`Volver al panel`}},fr:{nav:{dashboard:`Tableau de bord`,queues:`Files`,retries:`Relances`,scheduled:`Planifiés`,dead:`Morts`,busy:`Occupés`,batches:`Lots`,flows:`Flux`,limiters:`Limiteurs`,cron:`Cron`,metrics:`Métriques`,profiles:`Profils`,search:`Rechercher`,extensions:`Extensions`,collapse:`Réduire`,expand:`Développer`,language:`Langue`,language_current:`Langue : {name}`,timezone_current:`Fuseau horaire : {name}`,theme_current:`Thème : {name}`,theme_next:`Passer au thème {name}`,status_active:`État du système : Actif`,status_inactive:`État du système : Déconnecté`,home_label:`Wurk — accueil du tableau de bord`,toggle:`Afficher ou masquer la navigation`},dashboard:{processed:`Traités`,failed:`Échoués`,expired:`Expirés`,busy:`Occupés`,enqueued:`En file`,retries:`Relances`,scheduled:`Planifiés`,dead:`Morts`,processes:`Processus`,paused:`En pause`,strapline:`Wurk, wurk. Prêt à travailler. Zug zug.`,tagline:`Un remplacement 100% compatible avec Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Gratuit pour toujours.`,install:`Installer`,docs:`Documentation`,active:`Actif`,vs_last_hour:`vs dernière heure`,stable_threshold:`Seuil stable`,above_threshold:`Au-dessus du seuil`,system_idle:`Système inactif`,processing:`Traitement`,performance_insight:`Analyse de performance`,perf_subtitle:`Tâches traitées vs échouées sur {range}`,no_history:`Pas encore d'historique — le graphique se remplit au fur et à mesure de l'exécution des tâches.`,range_1h_desc:`la dernière heure`,range_24h_desc:`les dernières 24 heures`,range_7d_desc:`les 7 derniers jours`,range_30d_desc:`les 30 derniers jours`},table:{class:`Classe`,args:`Args`,jid:`JID`,queue:`File`,error:`Erreur`,retry_at:`Relancer à`,failed_at:`Échoué à`,scheduled_at:`Planifié à`,enqueued_at:`Mis en file à`,message:`Message`,count:`Nombre`,status:`Statut`,total:`Total`,pending:`En attente`,size:`Taille`,latency:`Latence`,concurrency:`Concurrence`,busy:`Occupé`,queues:`Files`,name:`Nom`,type:`Type`,used:`Utilisé`,limit:`Limite`,usage:`Utilisation`,bid:`BID`,fid:`FID`,description:`Description`,failures:`Échecs`,progress:`Progression`,created:`Créé`,elapsed:`Écoulé`,schedule:`Planification`,select_all:`Tout sélectionner`,select_row:`Sélectionner la tâche`},summaries:{queues:`Files actives avec leur profondeur et latence — cliquez sur une file pour inspecter ses tâches.`,retries:`Tâches ayant levé une erreur et programmées pour être relancées — cliquez sur l'une d'elles pour voir l'erreur et la trace.`,scheduled:`Tâches mises en file pour s'exécuter à une heure future.`,dead:`Tâches ayant épuisé toutes les relances — cliquez sur l'une d'elles pour inspecter l'échec.`,busy:`Processus de travail en direct et les tâches qu'ils exécutent actuellement.`,batches:`Tâches groupées et leur progression, succès et échecs.`,flows:`DAG de tâches — chaque nœud s'exécute une fois que tout ce dont il dépend a réussi.`,limiters:`Limiteurs de débit et leur utilisation actuelle.`,cron:`Tâches périodiques (cron) avec leur planification et dernière exécution — cliquez sur une boucle pour voir son historique d'exécution.`,metrics:`Historique de débit et d'échecs, avec des statistiques d'exécution par tâche.`,profiles:`Profils de tâches capturés — ouvrez-en un dans le profiler Firefox pour inspecter son flame graph.`,search:`Recherchez une tâche dans les files, relances, planifiées et mortes par JID, nom de classe ou argument.`,dashboard:`Totaux en direct, débit sur la période choisie et l'état des files en un coup d'œil.`},busy:{hosts:`{n} hôtes`,cores:`{n} cœurs`,of_total_ram:`de la RAM totale`,heartbeat:`Battement`,rss:`RSS`,rtt:`RTT Redis`,version:`Version`,tag:`Tag`,labels:`Labels`,identity:`Identité`,started:`Démarré`,up_for:`depuis`,running_jobs:`Tâches en cours`,running_since:`En cours depuis`,no_running:`Aucune tâche en cours sur ce processus`,leader:`Leader`,leader_title:`Ce processus détient le verrou de leader du cluster`,heartbeat_ok:`Battement de cœur OK`},cron:{history_title:`Historique d'exécution`,fired:`Déclenché`,no_history:`Aucune exécution enregistrée pour le moment`,last_fire:`Dernier déclenchement`,next_fire:`Prochain déclenchement`},job:{detail:`Détail de la tâche`,class:`Classe`,queue:`File`,jid:`JID`,retries:`Relances`,enqueued:`Mis en file`,at:`Planifié`,args:`Arguments`,error:`Erreur`,backtrace:`Trace`},search:{emptyTitle:`Rechercher une tâche`,emptyHint:`Entrez un JID, un nom de classe ou un argument (2+ caractères). Les résultats couvrent les files, relances, planifiées et mortes.`,placeholder:`Rechercher par JID, nom de classe ou argument…`,try:`Essayez :`,source:`Source`,when:`Quand`,truncated:`Résultats partiels affichés — affinez votre recherche pour la restreindre.`,result:`{n} résultat pour « {term} »`,results:`{n} résultats pour « {term} »`,kind:{queue:`File`,retry:`Relance`,scheduled:`Planifié`,dead:`Mort`}},extension:{summary:`Fourni par une extension tierce.`,open:`Ouvrir`,notRendered:`Cet onglet est fourni par une extension tierce. wurk l'affiche dans la navigation mais ne rend pas sa vue dans le tableau de bord.`},actions:{retry:`Relancer`,delete:`Supprimer`,kill:`Tuer`,add_to_queue:`Ajouter à la file`,clear:`Vider`,pause:`Suspendre`,unpause:`Reprendre`,pause_hint:`Arrêter de récupérer de nouvelles tâches de cette file (les tâches en cours se terminent)`,unpause_hint:`Reprendre la récupération des tâches de cette file`,quiet:`Silencieux`,stop:`Arrêter`,prev:`Précédent`,next:`Suivant`,search:`Rechercher`,all_suffix:`Tout`,selected:`{n} sélectionnés`,select_hint:`Sélectionnez des tâches sur lesquelles agir`,scope_selected:`{n} tâche(s) sélectionnée(s)`,scope_all:`toutes les tâches de cet ensemble`,scope_this_job:`cette tâche`,scope_this_process:`ce processus`,scope_all_processes:`tous les processus`,confirm:`{action} {scope} ? Cette action est irréversible.`,confirm_clear_queue:`Vider toutes les tâches de « {name} » ? Cette action est irréversible.`,reset:`Réinitialiser`,enqueue:`Mettre en file`,matching:`{n} correspondent au filtre`,all_filtered_hint:`« Tout » agit sur l’ensemble complet, pas seulement sur les lignes filtrées. Effacez le filtre pour l’utiliser.`},readonly:{banner:`Mode lecture seule`},toast:{failed:`L'action a échoué. Veuillez réessayer.`,readonly:`Ce tableau de bord est en lecture seule — l'action a été rejetée.`,gone:`Cette tâche avait déjà disparu — elle a peut-être été exécutée ou supprimée.`,unavailable:`Redis est indisponible pour le moment. Réessayez dans un instant.`,dismiss:`Ignorer`,region:`Notifications`,partial:`{count} appliqués, {failed} en échec. La liste a été actualisée.`},common:{loading:`Chargement…`,error:`Erreur de chargement`,empty:`Aucun élément`,page:`Page`,of:`sur`,ms:`ms`,load_failed:`Impossible de charger cette page`,load_failed_hint:`L'application a peut-être été mise à jour depuis son ouverture. Recharger récupérera la dernière version.`,reload:`Recharger`,filter_placeholder:`Filtrer par classe ou JID…`,matching:`{n} correspondances`,close:`Fermer`},limiters:{exhausted:`épuisé`,available:`disponible`},queues:{job_count:`{n} tâches`,latency_label:`latence`},batches:{children:`Enfants`,completed:`Terminé`,parent:`Parent`,tags:`Tags`,failed_jobs:`Tâches échouées`,dead_jobs:`Tâches mortes`,complete:`terminé`,invalidated:`invalidé`},flows:{graph:`Graphe`,nodes:`Nœuds`,depth:`Profondeur`,width:`Largeur`,succeeded:`Réussis`,finished:`Terminé`,blocked:`Bloqué par`,depends_on:`Dépend de`,piped:`chaîné`,abandon:`Abandonner`,abandon_hint:`Marque ce flux comme abandonné et libère ses clés. Les tâches déjà en file seront tout de même exécutées.`,released:`Ce flux a été abandonné : ses enregistrements de nœuds ont été libérés.`,state:{running:`En cours`,succeeded:`Réussi`,failed:`Échoué`,abandoned:`Abandonné`,waiting:`En attente`,enqueued:`En file`,dead:`Mort`,broken:`Rompu`}},metrics:{time_range:`Plage horaire :`,total_processed:`Total traité`,across_all_queues:`toutes files confondues`,failed_jobs:`Tâches échouées`,total_failures:`total des échecs`,avg_latency:`Latence moyenne`,head_of_line:`tête de ligne`,active_workers:`Workers actifs`,stable:`Stable`,no_workers:`Aucun worker`,throughput_failures:`Débit et échecs`,throughput_sub:`Tâches traitées par intervalle sur {range}`,no_queue_history:`Pas encore d'historique de file.`,queue_depth:`Profondeur de file`,peak:`pic {n}`,top_job_types:`Principaux types de tâches (volume)`,job_class:`Classe de tâche`,pct_total:`% du total`,queue_latency_seconds:`Latence de file (secondes)`,historical_snapshots:`Instantanés historiques`,view_job_detail:`Voir le détail de la classe de tâche`},timezone:{title:`Fuseau horaire`,shown_in:`Heures affichées dans le fuseau {name}`,automatic:`Automatique ({name})`,filter:`Filtrer les fuseaux horaires…`,empty:`Aucun fuseau horaire ne correspond à « {query} »`},theme:{light:`Clair`,dark:`Sombre`,system:`Système`},notfound:{title:`Page introuvable`,hint:`Ce tableau de bord n’a aucune page à cette adresse.`,home:`Retour au tableau de bord`}},de:{nav:{dashboard:`Dashboard`,queues:`Warteschlangen`,retries:`Wiederholungen`,scheduled:`Geplant`,dead:`Tot`,busy:`Beschäftigt`,batches:`Stapel`,flows:`Flows`,limiters:`Begrenzer`,cron:`Cron`,metrics:`Metriken`,profiles:`Profile`,search:`Suche`,extensions:`Erweiterungen`,collapse:`Einklappen`,expand:`Ausklappen`,language:`Sprache`,language_current:`Sprache: {name}`,timezone_current:`Zeitzone: {name}`,theme_current:`Design: {name}`,theme_next:`Zu Design {name} wechseln`,status_active:`Systemstatus: Aktiv`,status_inactive:`Systemstatus: Getrennt`,home_label:`Wurk — Dashboard-Startseite`,toggle:`Navigation ein-/ausblenden`},dashboard:{processed:`Verarbeitet`,failed:`Fehlgeschlagen`,expired:`Abgelaufen`,busy:`Beschäftigt`,enqueued:`In Warteschlange`,retries:`Wiederholungen`,scheduled:`Geplant`,dead:`Tot`,processes:`Prozesse`,paused:`Pausiert`,strapline:`Wurk, wurk. Bereit zur Arbeit. Zug zug.`,tagline:`Ein 100% kompatibler Ersatz für Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Für immer kostenlos.`,install:`Installieren`,docs:`Dokumentation`,active:`Aktiv`,vs_last_hour:`vs. letzte Stunde`,stable_threshold:`Stabiler Schwellenwert`,above_threshold:`Über Schwellenwert`,system_idle:`System inaktiv`,processing:`Verarbeitung`,performance_insight:`Leistungsanalyse`,perf_subtitle:`Verarbeitete vs. fehlgeschlagene Jobs über {range}`,no_history:`Noch kein Verlauf — das Diagramm füllt sich, sobald Jobs laufen.`,range_1h_desc:`die letzte Stunde`,range_24h_desc:`die letzten 24 Stunden`,range_7d_desc:`die letzten 7 Tage`,range_30d_desc:`die letzten 30 Tage`},table:{class:`Klasse`,args:`Args`,jid:`JID`,queue:`Warteschlange`,error:`Fehler`,retry_at:`Wiederholen um`,failed_at:`Fehlgeschlagen um`,scheduled_at:`Geplant um`,enqueued_at:`Eingereiht um`,message:`Nachricht`,count:`Anzahl`,status:`Status`,total:`Gesamt`,pending:`Ausstehend`,size:`Größe`,latency:`Latenz`,concurrency:`Nebenläufigkeit`,busy:`Beschäftigt`,queues:`Warteschlangen`,name:`Name`,type:`Typ`,used:`Verwendet`,limit:`Limit`,usage:`Nutzung`,bid:`BID`,fid:`FID`,description:`Beschreibung`,failures:`Fehlschläge`,progress:`Fortschritt`,created:`Erstellt`,elapsed:`Verstrichen`,schedule:`Zeitplan`,select_all:`Alle auswählen`,select_row:`Job auswählen`},summaries:{queues:`Aktive Warteschlangen mit Tiefe und Latenz — klicke auf eine Warteschlange, um ihre Jobs zu prüfen.`,retries:`Jobs, die einen Fehler ausgelöst haben und erneut ausgeführt werden — klicke auf einen für Fehler und Backtrace.`,scheduled:`Jobs, die zu einem zukünftigen Zeitpunkt ausgeführt werden sollen.`,dead:`Jobs, die alle Wiederholungen ausgeschöpft haben — klicke auf einen, um den Fehler zu prüfen.`,busy:`Live-Worker-Prozesse und die Jobs, die sie gerade ausführen.`,batches:`Stapelverarbeitete Jobs mit Fortschritt, Erfolgen und Fehlschlägen.`,flows:`Job-DAGs — jeder Knoten läuft, sobald alles, wovon er abhängt, erfolgreich war.`,limiters:`Ratenbegrenzer und ihre aktuelle Nutzung.`,cron:`Periodische (Cron-)Jobs mit Zeitplan und letzter Ausführung — klicke auf eine Loop für den Ausführungsverlauf.`,metrics:`Durchsatz- und Fehlerverlauf mit Ausführungsstatistiken pro Job.`,profiles:`Erfasste Job-Profile — öffne eines im Firefox-Profiler, um den Flame-Graph zu untersuchen.`,search:`Suche einen Job über Warteschlangen, Wiederholungen, geplante und tote Jobs nach JID, Klassenname oder Argument.`,dashboard:`Live-Gesamtwerte, Durchsatz im gewählten Zeitraum und der Zustand der Queues auf einen Blick.`},busy:{hosts:`{n} Hosts`,cores:`{n} Kerne`,of_total_ram:`des gesamten RAM`,heartbeat:`Heartbeat`,rss:`RSS`,rtt:`Redis-RTT`,version:`Version`,tag:`Tag`,labels:`Labels`,identity:`Identität`,started:`Gestartet`,up_for:`seit`,running_jobs:`Laufende Jobs`,running_since:`Läuft seit`,no_running:`Auf diesem Prozess laufen derzeit keine Jobs`,leader:`Leader`,leader_title:`Dieser Prozess hält die Cluster-Leader-Sperre`,heartbeat_ok:`Heartbeat OK`},cron:{history_title:`Ausführungsverlauf`,fired:`Ausgelöst`,no_history:`Noch keine Ausführungen aufgezeichnet`,last_fire:`Letzte Auslösung`,next_fire:`Nächste Auslösung`},job:{detail:`Job-Detail`,class:`Klasse`,queue:`Warteschlange`,jid:`JID`,retries:`Wiederholungen`,enqueued:`Eingereiht`,at:`Geplant`,args:`Argumente`,error:`Fehler`,backtrace:`Backtrace`},search:{emptyTitle:`Nach einem Job suchen`,emptyHint:`Gib eine JID, einen Klassennamen oder ein Argument ein (2+ Zeichen). Die Ergebnisse umfassen Warteschlangen, Wiederholungen, geplante und tote Jobs.`,placeholder:`Suche nach JID, Klassenname oder Argument…`,try:`Versuche:`,source:`Quelle`,when:`Wann`,truncated:`Teilweise Ergebnisse angezeigt — grenze deine Suche weiter ein.`,result:`{n} Ergebnis für „{term}“`,results:`{n} Ergebnisse für „{term}“`,kind:{queue:`Warteschlange`,retry:`Wiederholung`,scheduled:`Geplant`,dead:`Tot`}},extension:{summary:`Bereitgestellt von einer Drittanbieter-Erweiterung.`,open:`Öffnen`,notRendered:`Dieser Tab wird von einer Drittanbieter-Erweiterung bereitgestellt. wurk zeigt ihn in der Navigation an, rendert seine Ansicht aber nicht im Dashboard.`},actions:{retry:`Wiederholen`,delete:`Löschen`,kill:`Beenden`,add_to_queue:`Zur Warteschlange hinzufügen`,clear:`Leeren`,pause:`Pausieren`,unpause:`Fortsetzen`,pause_hint:`Keine neuen Jobs mehr aus dieser Warteschlange abrufen (laufende Jobs werden beendet)`,unpause_hint:`Abruf von Jobs aus dieser Warteschlange fortsetzen`,quiet:`Ruhig`,stop:`Stoppen`,prev:`Zurück`,next:`Weiter`,search:`Suchen`,all_suffix:`Alle`,selected:`{n} ausgewählt`,select_hint:`Jobs auswählen, um sie zu bearbeiten`,scope_selected:`{n} ausgewählte(r) Job(s)`,scope_all:`jeden Job in dieser Menge`,scope_this_job:`diesen Job`,scope_this_process:`diesen Prozess`,scope_all_processes:`alle Prozesse`,confirm:`{action} {scope}? Dies kann nicht rückgängig gemacht werden.`,confirm_clear_queue:`Alle Jobs aus "{name}" löschen? Dies kann nicht rückgängig gemacht werden.`,reset:`Zurücksetzen`,enqueue:`Einreihen`,matching:`{n} passen zum Filter`,all_filtered_hint:`„Alle" wirkt auf die gesamte Menge, nicht nur auf die gefilterten Zeilen. Filter löschen, um es zu verwenden.`},readonly:{banner:`Nur-Lese-Modus`},toast:{failed:`Aktion fehlgeschlagen. Bitte erneut versuchen.`,readonly:`Dieses Dashboard ist schreibgeschützt — die Aktion wurde abgelehnt.`,gone:`Dieser Job war bereits weg — er wurde möglicherweise ausgeführt oder entfernt.`,unavailable:`Redis ist derzeit nicht verfügbar. Versuche es gleich noch einmal.`,dismiss:`Verwerfen`,region:`Benachrichtigungen`,partial:`{count} angewendet, {failed} fehlgeschlagen. Die Liste wurde aktualisiert.`},common:{loading:`Lädt…`,error:`Fehler beim Laden`,empty:`Keine Einträge`,page:`Seite`,of:`von`,ms:`ms`,load_failed:`Diese Seite konnte nicht geladen werden`,load_failed_hint:`Die App wurde möglicherweise seit dem Öffnen aktualisiert. Neu laden holt die neueste Version.`,reload:`Neu laden`,filter_placeholder:`Nach Klasse oder JID filtern…`,matching:`{n} Treffer`,close:`Schließen`},limiters:{exhausted:`erschöpft`,available:`verfügbar`},queues:{job_count:`{n} Jobs`,latency_label:`Latenz`},batches:{children:`Kinder`,completed:`Abgeschlossen`,parent:`Übergeordnet`,tags:`Tags`,failed_jobs:`Fehlgeschlagene Jobs`,dead_jobs:`Tote Jobs`,complete:`abgeschlossen`,invalidated:`ungültig`},flows:{graph:`Graph`,nodes:`Knoten`,depth:`Tiefe`,width:`Breite`,succeeded:`Erfolgreich`,finished:`Beendet`,blocked:`Blockiert durch`,depends_on:`Hängt ab von`,piped:`verkettet`,abandon:`Aufgeben`,abandon_hint:`Markiert diesen Flow als aufgegeben und gibt seine Schlüssel frei. Bereits eingereihte Jobs laufen weiterhin.`,released:`Dieser Flow wurde aufgegeben — seine Knoteneinträge wurden freigegeben.`,state:{running:`Läuft`,succeeded:`Erfolgreich`,failed:`Fehlgeschlagen`,abandoned:`Aufgegeben`,waiting:`Wartend`,enqueued:`Eingereiht`,dead:`Tot`,broken:`Unterbrochen`}},metrics:{time_range:`Zeitraum:`,total_processed:`Gesamt verarbeitet`,across_all_queues:`über alle Warteschlangen`,failed_jobs:`Fehlgeschlagene Jobs`,total_failures:`Fehlschläge gesamt`,avg_latency:`Durchschn. Latenz`,head_of_line:`Head-of-Line`,active_workers:`Aktive Worker`,stable:`Stabil`,no_workers:`Keine Worker`,throughput_failures:`Durchsatz & Fehlschläge`,throughput_sub:`Verarbeitete Jobs pro Intervall über {range}`,no_queue_history:`Noch kein Warteschlangenverlauf.`,queue_depth:`Warteschlangentiefe`,peak:`Spitze {n}`,top_job_types:`Top-Job-Typen (Volumen)`,job_class:`Job-Klasse`,pct_total:`% Gesamt`,queue_latency_seconds:`Warteschlangen-Latenz (Sekunden)`,historical_snapshots:`Historische Snapshots`,view_job_detail:`Job-Klassendetail anzeigen`},timezone:{title:`Zeitzone`,shown_in:`Zeiten werden in {name} angezeigt`,automatic:`Automatisch ({name})`,filter:`Zeitzonen filtern…`,empty:`Keine Zeitzone passt zu „{query}“`},theme:{light:`Hell`,dark:`Dunkel`,system:`System`},notfound:{title:`Seite nicht gefunden`,hint:`Unter dieser Adresse gibt es im Dashboard keine Seite.`,home:`Zurück zum Dashboard`}},"pt-BR":{nav:{dashboard:`Painel`,queues:`Filas`,retries:`Tentativas`,scheduled:`Agendados`,dead:`Mortos`,busy:`Ocupados`,batches:`Lotes`,flows:`Fluxos`,limiters:`Limitadores`,cron:`Cron`,metrics:`Métricas`,profiles:`Perfis`,search:`Buscar`,extensions:`Extensões`,collapse:`Recolher`,expand:`Expandir`,language:`Idioma`,language_current:`Idioma: {name}`,timezone_current:`Fuso horário: {name}`,theme_current:`Tema: {name}`,theme_next:`Mudar para o tema {name}`,status_active:`Status do sistema: Ativo`,status_inactive:`Status do sistema: Desconectado`,home_label:`Wurk — início do painel`,toggle:`Alternar navegação`},dashboard:{processed:`Processados`,failed:`Falhos`,expired:`Expirados`,busy:`Ocupados`,enqueued:`Na fila`,retries:`Tentativas`,scheduled:`Agendados`,dead:`Mortos`,processes:`Processos`,paused:`Pausado`,strapline:`Wurk, wurk. Pronto para trabalhar. Zug zug.`,tagline:`Um substituto 100% compatível com Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Grátis para sempre.`,install:`Instalar`,docs:`Documentação`,active:`Ativo`,vs_last_hour:`vs última hora`,stable_threshold:`Limite estável`,above_threshold:`Acima do limite`,system_idle:`Sistema ocioso`,processing:`Processando`,performance_insight:`Análise de desempenho`,perf_subtitle:`Jobs processados vs. falhos em {range}`,no_history:`Ainda sem histórico — o gráfico se preenche conforme os jobs são executados.`,range_1h_desc:`a última hora`,range_24h_desc:`as últimas 24 horas`,range_7d_desc:`os últimos 7 dias`,range_30d_desc:`os últimos 30 dias`},table:{class:`Classe`,args:`Args`,jid:`JID`,queue:`Fila`,error:`Erro`,retry_at:`Tentar em`,failed_at:`Falhou em`,scheduled_at:`Agendado em`,enqueued_at:`Enfileirado em`,message:`Mensagem`,count:`Contagem`,status:`Status`,total:`Total`,pending:`Pendente`,size:`Tamanho`,latency:`Latência`,concurrency:`Concorrência`,busy:`Ocupado`,queues:`Filas`,name:`Nome`,type:`Tipo`,used:`Usado`,limit:`Limite`,usage:`Uso`,bid:`BID`,fid:`FID`,description:`Descrição`,failures:`Falhas`,progress:`Progresso`,created:`Criado`,elapsed:`Decorrido`,schedule:`Agendamento`,select_all:`Selecionar tudo`,select_row:`Selecionar job`},summaries:{queues:`Filas ativas com sua profundidade e latência — clique em uma fila para inspecionar seus jobs.`,retries:`Jobs que geraram um erro e estão agendados para nova tentativa — clique em um para ver o erro e o backtrace.`,scheduled:`Jobs enfileirados para execução em um horário futuro.`,dead:`Jobs que esgotaram todas as tentativas — clique em um para inspecionar a falha.`,busy:`Processos de worker ao vivo e os jobs que estão executando no momento.`,batches:`Jobs em lote e seu progresso, sucessos e falhas.`,flows:`DAGs de jobs — cada nó roda assim que tudo de que ele depende tiver sucesso.`,limiters:`Limitadores de taxa e seu uso atual.`,cron:`Jobs periódicos (cron) com seu agendamento e última execução — clique em um loop para ver seu histórico de execução.`,metrics:`Histórico de throughput e falhas, com estatísticas de execução por job.`,profiles:`Perfis de jobs capturados — abra um no profiler do Firefox para inspecionar seu flame graph.`,search:`Encontre um job em filas, tentativas, agendados e mortos por JID, nome de classe ou argumento.`,dashboard:`Totais ao vivo, taxa de processamento no período escolhido e a saúde das filas num relance.`},busy:{hosts:`{n} hosts`,cores:`{n} núcleos`,of_total_ram:`da RAM total`,heartbeat:`Batimento`,rss:`RSS`,rtt:`RTT do Redis`,version:`Versão`,tag:`Tag`,labels:`Rótulos`,identity:`Identidade`,started:`Iniciado`,up_for:`ativo há`,running_jobs:`Jobs em execução`,running_since:`Em execução desde`,no_running:`Nenhum job em execução neste processo`,leader:`Líder`,leader_title:`Este processo mantém o bloqueio de líder do cluster`,heartbeat_ok:`Heartbeat OK`},cron:{history_title:`Histórico de execução`,fired:`Disparado`,no_history:`Nenhuma execução registrada ainda`,last_fire:`Último disparo`,next_fire:`Próximo disparo`},job:{detail:`Detalhe do job`,class:`Classe`,queue:`Fila`,jid:`JID`,retries:`Tentativas`,enqueued:`Enfileirado`,at:`Agendado`,args:`Argumentos`,error:`Erro`,backtrace:`Backtrace`},search:{emptyTitle:`Buscar um job`,emptyHint:`Digite um JID, nome de classe ou argumento (2+ caracteres). Os resultados abrangem filas, tentativas, agendados e mortos.`,placeholder:`Buscar por JID, nome de classe ou argumento…`,try:`Tente:`,source:`Origem`,when:`Quando`,truncated:`Mostrando resultados parciais — refine sua busca para restringi-la.`,result:`{n} resultado para “{term}”`,results:`{n} resultados para “{term}”`,kind:{queue:`Fila`,retry:`Tentativa`,scheduled:`Agendado`,dead:`Morto`}},extension:{summary:`Fornecido por uma extensão de terceiros.`,open:`Abrir`,notRendered:`Esta aba é fornecida por uma extensão de terceiros. wurk a exibe na navegação, mas não renderiza sua visualização dentro do painel.`},actions:{retry:`Tentar novamente`,delete:`Excluir`,kill:`Matar`,add_to_queue:`Adicionar à fila`,clear:`Limpar`,pause:`Pausar`,unpause:`Retomar`,pause_hint:`Parar de buscar novos jobs desta fila (jobs em andamento são concluídos)`,unpause_hint:`Retomar a busca de jobs desta fila`,quiet:`Silenciar`,stop:`Parar`,prev:`Anterior`,next:`Próximo`,search:`Buscar`,all_suffix:`Tudo`,selected:`{n} selecionados`,select_hint:`Selecione jobs para agir sobre eles`,scope_selected:`{n} job(s) selecionado(s)`,scope_all:`todos os jobs deste conjunto`,scope_this_job:`este job`,scope_this_process:`este processo`,scope_all_processes:`todos os processos`,confirm:`{action} {scope}? Isso não pode ser desfeito.`,confirm_clear_queue:`Limpar todos os jobs de "{name}"? Isso não pode ser desfeito.`,reset:`Redefinir`,enqueue:`Enfileirar`,matching:`{n} correspondem ao filtro`,all_filtered_hint:`"Todos" atua no conjunto inteiro, não apenas nas linhas filtradas. Limpe o filtro para usar.`},readonly:{banner:`Modo somente leitura`},toast:{failed:`A ação falhou. Tente novamente.`,readonly:`Este painel é somente leitura — a ação foi rejeitada.`,gone:`Esse job já não existia — pode ter sido executado ou removido.`,unavailable:`O Redis está indisponível no momento. Tente novamente em instantes.`,dismiss:`Dispensar`,region:`Notificações`,partial:`{count} aplicados, {failed} com falha. A lista foi atualizada.`},common:{loading:`Carregando…`,error:`Erro ao carregar dados`,empty:`Nenhum item`,page:`Página`,of:`de`,ms:`ms`,load_failed:`Não foi possível carregar esta página`,load_failed_hint:`O app pode ter sido atualizado desde que você o abriu. Recarregar buscará a versão mais recente.`,reload:`Recarregar`,filter_placeholder:`Filtrar por classe ou JID…`,matching:`{n} correspondências`,close:`Fechar`},limiters:{exhausted:`esgotado`,available:`disponível`},queues:{job_count:`{n} jobs`,latency_label:`latência`},batches:{children:`Filhos`,completed:`Concluído`,parent:`Pai`,tags:`Tags`,failed_jobs:`Jobs com falha`,dead_jobs:`Jobs mortos`,complete:`completo`,invalidated:`invalidado`},flows:{graph:`Grafo`,nodes:`Nós`,depth:`Profundidade`,width:`Largura`,succeeded:`Concluídos`,finished:`Finalizado`,blocked:`Bloqueado por`,depends_on:`Depende de`,piped:`encadeado`,abandon:`Abandonar`,abandon_hint:`Marca este fluxo como abandonado e libera suas chaves. Jobs já enfileirados ainda serão executados.`,released:`Este fluxo foi abandonado — seus registros de nó foram liberados.`,state:{running:`Em execução`,succeeded:`Concluído`,failed:`Falhou`,abandoned:`Abandonado`,waiting:`Aguardando`,enqueued:`Enfileirado`,dead:`Morto`,broken:`Quebrado`}},metrics:{time_range:`Intervalo de tempo:`,total_processed:`Total processado`,across_all_queues:`em todas as filas`,failed_jobs:`Jobs com falha`,total_failures:`total de falhas`,avg_latency:`Latência média`,head_of_line:`head-of-line`,active_workers:`Workers ativos`,stable:`Estável`,no_workers:`Sem workers`,throughput_failures:`Throughput e falhas`,throughput_sub:`Jobs processados por intervalo em {range}`,no_queue_history:`Ainda sem histórico de filas.`,queue_depth:`Profundidade da fila`,peak:`pico {n}`,top_job_types:`Principais tipos de job (volume)`,job_class:`Classe do job`,pct_total:`% do total`,queue_latency_seconds:`Latência da fila (segundos)`,historical_snapshots:`Snapshots históricos`,view_job_detail:`Ver detalhe da classe de job`},timezone:{title:`Fuso horário`,shown_in:`Horários exibidos em {name}`,automatic:`Automático ({name})`,filter:`Filtrar fusos horários…`,empty:`Nenhum fuso horário corresponde a “{query}”`},theme:{light:`Claro`,dark:`Escuro`,system:`Sistema`},notfound:{title:`Página não encontrada`,hint:`Este painel não tem nenhuma página nesse endereço.`,home:`Voltar ao painel`}},ja:{nav:{dashboard:`ダッシュボード`,queues:`キュー`,retries:`リトライ`,scheduled:`スケジュール済み`,dead:`デッド`,busy:`実行中`,batches:`バッチ`,flows:`フロー`,limiters:`リミッター`,cron:`Cron`,metrics:`メトリクス`,profiles:`プロファイル`,search:`検索`,extensions:`拡張機能`,collapse:`折りたたむ`,expand:`展開`,language:`言語`,language_current:`言語: {name}`,timezone_current:`タイムゾーン: {name}`,theme_current:`テーマ: {name}`,theme_next:`{name}テーマに切り替える`,status_active:`システム状態: 稼働中`,status_inactive:`システム状態: 切断`,home_label:`Wurk — ダッシュボードのホーム`,toggle:`ナビゲーションを切り替え`},dashboard:{processed:`処理済み`,failed:`失敗`,expired:`期限切れ`,busy:`実行中`,enqueued:`キュー中`,retries:`リトライ`,scheduled:`スケジュール済み`,dead:`デッド`,processes:`プロセス`,paused:`一時停止`,strapline:`Wurk, wurk. 準備完了。Zug zug.`,tagline:`Sidekiq + Sidekiq Pro + Sidekiq Enterpriseと100%互換の代替品。永久無料。`,install:`インストール`,docs:`ドキュメント`,active:`稼働中`,vs_last_hour:`前の1時間との比較`,stable_threshold:`安定しきい値`,above_threshold:`しきい値超過`,system_idle:`システムはアイドル状態`,processing:`処理中`,performance_insight:`パフォーマンス分析`,perf_subtitle:`{range}における処理済みジョブ対失敗ジョブ`,no_history:`まだ履歴がありません — ジョブが実行されるとグラフが埋まります。`,range_1h_desc:`直近1時間`,range_24h_desc:`直近24時間`,range_7d_desc:`直近7日間`,range_30d_desc:`直近30日間`},table:{class:`クラス`,args:`引数`,jid:`JID`,queue:`キュー`,error:`エラー`,retry_at:`リトライ時刻`,failed_at:`失敗時刻`,scheduled_at:`スケジュール時刻`,enqueued_at:`投入時刻`,message:`メッセージ`,count:`回数`,status:`状態`,total:`合計`,pending:`保留中`,size:`サイズ`,latency:`レイテンシ`,concurrency:`同時実行数`,busy:`実行中`,queues:`キュー`,name:`名前`,type:`種類`,used:`使用中`,limit:`上限`,usage:`使用率`,bid:`BID`,fid:`FID`,description:`説明`,failures:`失敗数`,progress:`進捗`,created:`作成日時`,elapsed:`経過時間`,schedule:`スケジュール`,select_all:`すべて選択`,select_row:`ジョブを選択`},summaries:{queues:`アクティブなキューとその深さおよびレイテンシ — キューをクリックしてジョブを確認します。`,retries:`エラーが発生し再実行が予定されているジョブ — クリックするとエラーとバックトレースを確認できます。`,scheduled:`将来の時刻に実行予定のジョブ。`,dead:`すべてのリトライを使い果たしたジョブ — クリックすると失敗内容を確認できます。`,busy:`稼働中のワーカープロセスと現在実行中のジョブ。`,batches:`バッチ化されたジョブとその進捗、成功、失敗。`,flows:`ジョブの DAG — 依存先がすべて成功した時点で各ノードが実行されます。`,limiters:`レートリミッターと現在の使用状況。`,cron:`スケジュールと前回実行を持つ定期(cron)ジョブ — ループをクリックすると実行履歴を確認できます。`,metrics:`スループットと失敗の履歴、およびジョブごとの実行統計。`,profiles:`取得済みのジョブプロファイル — Firefoxプロファイラーで開いてフレームグラフを確認できます。`,search:`JID、クラス名、または引数でキュー・リトライ・スケジュール済み・デッドジョブを横断検索します。`,dashboard:`リアルタイムの累計、選択期間のスループット、キューの健全性をひと目で確認できます。`},busy:{hosts:`{n} ホスト`,cores:`{n} コア`,of_total_ram:`全RAM中`,heartbeat:`ハートビート`,rss:`RSS`,rtt:`Redis RTT`,version:`バージョン`,tag:`タグ`,labels:`ラベル`,identity:`識別子`,started:`開始`,up_for:`稼働`,running_jobs:`実行中のジョブ`,running_since:`実行開始`,no_running:`このプロセスで実行中のジョブはありません`,leader:`リーダー`,leader_title:`このプロセスはクラスターリーダーロックを保持しています`,heartbeat_ok:`ハートビート正常`},cron:{history_title:`実行履歴`,fired:`発火`,no_history:`実行履歴はまだありません`,last_fire:`前回の発火`,next_fire:`次回の発火`},job:{detail:`ジョブ詳細`,class:`クラス`,queue:`キュー`,jid:`JID`,retries:`リトライ`,enqueued:`投入`,at:`スケジュール`,args:`引数`,error:`エラー`,backtrace:`バックトレース`},search:{emptyTitle:`ジョブを検索`,emptyHint:`JID、クラス名、または引数を入力してください(2文字以上)。結果はキュー・リトライ・スケジュール済み・デッドジョブにまたがります。`,placeholder:`JID、クラス名、または引数で検索…`,try:`例:`,source:`ソース`,when:`日時`,truncated:`部分的な結果を表示しています — 検索を絞り込んでください。`,result:`“{term}”に{n}件の結果`,results:`“{term}”に{n}件の結果`,kind:{queue:`キュー`,retry:`リトライ`,scheduled:`スケジュール済み`,dead:`デッド`}},extension:{summary:`サードパーティ拡張機能によって提供されています。`,open:`開く`,notRendered:`このタブはサードパーティ拡張機能によって提供されています。wurkはナビゲーションに表示しますが、ダッシュボード内でその画面は描画されません。`},actions:{retry:`リトライ`,delete:`削除`,kill:`強制終了`,add_to_queue:`キューに追加`,clear:`クリア`,pause:`一時停止`,unpause:`再開`,pause_hint:`このキューからの新規ジョブの取得を停止します(実行中のジョブは完了します)`,unpause_hint:`このキューからのジョブ取得を再開します`,quiet:`静音化`,stop:`停止`,prev:`前へ`,next:`次へ`,search:`検索`,all_suffix:`すべて`,selected:`{n} 件選択中`,select_hint:`操作するジョブを選択してください`,scope_selected:`選択された{n}件のジョブ`,scope_all:`このセット内のすべてのジョブ`,scope_this_job:`このジョブ`,scope_this_process:`このプロセス`,scope_all_processes:`すべてのプロセス`,confirm:`{action} {scope}? この操作は取り消せません。`,confirm_clear_queue:`"{name}"のすべてのジョブをクリアしますか?この操作は取り消せません。`,reset:`リセット`,enqueue:`エンキュー`,matching:`{n} 件がフィルターに一致`,all_filtered_hint:`「すべて」はフィルター結果だけでなくセット全体に作用します。使うにはフィルターを解除してください。`},readonly:{banner:`読み取り専用モード`},toast:{failed:`操作に失敗しました。もう一度お試しください。`,readonly:`このダッシュボードは読み取り専用です — 操作は拒否されました。`,gone:`そのジョブはすでに存在しませんでした — 実行済みか削除された可能性があります。`,unavailable:`現在Redisが利用できません。しばらくしてから再度お試しください。`,dismiss:`閉じる`,region:`通知`,partial:`{count} 件を適用、{failed} 件が失敗しました。一覧を更新しました。`},common:{loading:`読み込み中…`,error:`データの読み込みエラー`,empty:`アイテムなし`,page:`ページ`,of:`/`,ms:`ms`,load_failed:`このページを読み込めませんでした`,load_failed_hint:`アプリを開いてから更新された可能性があります。再読み込みすると最新版を取得します。`,reload:`再読み込み`,filter_placeholder:`クラスまたはJIDで絞り込み…`,matching:`{n} 件一致`,close:`閉じる`},limiters:{exhausted:`枯渇`,available:`利用可能`},queues:{job_count:`{n} 件のジョブ`,latency_label:`レイテンシ`},batches:{children:`子バッチ`,completed:`完了日時`,parent:`親バッチ`,tags:`タグ`,failed_jobs:`失敗したジョブ`,dead_jobs:`デッドジョブ`,complete:`完了`,invalidated:`無効化済み`},flows:{graph:`グラフ`,nodes:`ノード`,depth:`深さ`,width:`幅`,succeeded:`成功`,finished:`完了時刻`,blocked:`ブロック要因`,depends_on:`依存先`,piped:`連結`,abandon:`破棄`,abandon_hint:`このフローを破棄済みとしてマークし、キーを解放します。すでにキューにあるジョブは実行されます。`,released:`このフローは破棄されました — ノードのレコードは解放されています。`,state:{running:`実行中`,succeeded:`成功`,failed:`失敗`,abandoned:`破棄済み`,waiting:`待機中`,enqueued:`キュー投入済み`,dead:`デッド`,broken:`破損`}},metrics:{time_range:`期間:`,total_processed:`処理済み合計`,across_all_queues:`全キュー合計`,failed_jobs:`失敗ジョブ数`,total_failures:`失敗合計`,avg_latency:`平均レイテンシ`,head_of_line:`先頭待機時間`,active_workers:`稼働中ワーカー`,stable:`安定`,no_workers:`ワーカーなし`,throughput_failures:`スループットと失敗`,throughput_sub:`{range}のバケットごとの処理済みジョブ`,no_queue_history:`キュー履歴はまだありません。`,queue_depth:`キューの深さ`,peak:`ピーク {n}`,top_job_types:`上位ジョブタイプ(件数)`,job_class:`ジョブクラス`,pct_total:`割合`,queue_latency_seconds:`キューレイテンシ(秒)`,historical_snapshots:`過去のスナップショット`,view_job_detail:`ジョブクラスの詳細を表示`},timezone:{title:`タイムゾーン`,shown_in:`{name} の時刻で表示しています`,automatic:`自動 ({name})`,filter:`タイムゾーンを絞り込み…`,empty:`“{query}”に一致するタイムゾーンはありません`},theme:{light:`ライト`,dark:`ダーク`,system:`システム`},notfound:{title:`ページが見つかりません`,hint:`このダッシュボードにはそのアドレスのページはありません。`,home:`ダッシュボードに戻る`}},"zh-CN":{nav:{dashboard:`仪表盘`,queues:`队列`,retries:`重试`,scheduled:`计划任务`,dead:`死亡任务`,busy:`繁忙`,batches:`批次`,flows:`工作流`,limiters:`限制器`,cron:`定时任务`,metrics:`指标`,profiles:`性能分析`,search:`搜索`,extensions:`扩展`,collapse:`折叠`,expand:`展开`,language:`语言`,language_current:`语言:{name}`,timezone_current:`时区:{name}`,theme_current:`主题:{name}`,theme_next:`切换到{name}主题`,status_active:`系统状态:运行中`,status_inactive:`系统状态:已断开`,home_label:`Wurk — 仪表盘首页`,toggle:`切换导航`},dashboard:{processed:`已处理`,failed:`失败`,expired:`已过期`,busy:`繁忙`,enqueued:`排队中`,retries:`重试`,scheduled:`已计划`,dead:`死亡`,processes:`进程`,paused:`已暂停`,strapline:`Wurk, wurk. 准备就绪。Zug zug.`,tagline:`与Sidekiq + Sidekiq Pro + Sidekiq Enterprise 100%兼容的替代品。永久免费。`,install:`安装`,docs:`文档`,active:`活跃`,vs_last_hour:`与上一小时相比`,stable_threshold:`稳定阈值`,above_threshold:`超过阈值`,system_idle:`系统空闲`,processing:`处理中`,performance_insight:`性能洞察`,perf_subtitle:`{range}内已处理与失败的任务`,no_history:`暂无历史数据 — 图表将随任务运行逐渐填充。`,range_1h_desc:`过去1小时`,range_24h_desc:`过去24小时`,range_7d_desc:`过去7天`,range_30d_desc:`过去30天`},table:{class:`类`,args:`参数`,jid:`JID`,queue:`队列`,error:`错误`,retry_at:`重试时间`,failed_at:`失败时间`,scheduled_at:`计划时间`,enqueued_at:`入队时间`,message:`消息`,count:`次数`,status:`状态`,total:`总计`,pending:`待处理`,size:`大小`,latency:`延迟`,concurrency:`并发数`,busy:`繁忙`,queues:`队列`,name:`名称`,type:`类型`,used:`已用`,limit:`上限`,usage:`用量`,bid:`BID`,fid:`FID`,description:`描述`,failures:`失败数`,progress:`进度`,created:`创建时间`,elapsed:`耗时`,schedule:`调度计划`,select_all:`全选`,select_row:`选择任务`},summaries:{queues:`活跃队列及其深度和延迟 — 点击队列可查看其任务。`,retries:`引发错误并计划重试的任务 — 点击可查看错误和调用栈。`,scheduled:`计划在未来某时间运行的任务。`,dead:`已用尽所有重试次数的任务 — 点击可查看失败详情。`,busy:`实时工作进程及其当前运行的任务。`,batches:`批处理任务及其进度、成功和失败情况。`,flows:`任务 DAG — 每个节点在其所有依赖成功后运行。`,limiters:`速率限制器及其当前使用情况。`,cron:`带有调度计划和上次运行时间的定期(cron)任务 — 点击某个循环可查看其执行历史。`,metrics:`吞吐量与失败历史,以及各任务的执行统计。`,profiles:`已捕获的任务性能分析 — 在Firefox性能分析器中打开以查看火焰图。`,search:`按JID、类名或参数跨队列、重试、计划任务和死亡任务查找某个任务。`,dashboard:`实时累计、所选时间范围内的吞吐量,以及队列健康状况一览。`},busy:{hosts:`{n} 台主机`,cores:`{n} 核`,of_total_ram:`占总内存`,heartbeat:`心跳`,rss:`RSS`,rtt:`Redis 往返延迟`,version:`版本`,tag:`标签`,labels:`标签`,identity:`标识`,started:`启动时间`,up_for:`已运行`,running_jobs:`运行中的任务`,running_since:`开始运行于`,no_running:`此进程当前没有运行中的任务`,leader:`领导者`,leader_title:`该进程持有集群领导者锁`,heartbeat_ok:`心跳正常`},cron:{history_title:`执行历史`,fired:`已触发`,no_history:`暂无执行记录`,last_fire:`上次触发`,next_fire:`下次触发`},job:{detail:`任务详情`,class:`类`,queue:`队列`,jid:`JID`,retries:`重试`,enqueued:`已入队`,at:`计划时间`,args:`参数`,error:`错误`,backtrace:`调用栈`},search:{emptyTitle:`搜索任务`,emptyHint:`输入JID、类名或参数(2个字符以上)。结果涵盖队列、重试、计划任务和死亡任务。`,placeholder:`按JID、类名或参数搜索…`,try:`试试:`,source:`来源`,when:`时间`,truncated:`当前显示部分结果 — 请缩小搜索范围。`,result:`“{term}”的{n}条结果`,results:`“{term}”的{n}条结果`,kind:{queue:`队列`,retry:`重试`,scheduled:`计划任务`,dead:`死亡任务`}},extension:{summary:`由第三方扩展提供。`,open:`打开`,notRendered:`此标签页由第三方扩展提供。wurk会在导航中显示它,但不会在仪表盘内渲染其视图。`},actions:{retry:`重试`,delete:`删除`,kill:`终止`,add_to_queue:`添加到队列`,clear:`清空`,pause:`暂停`,unpause:`恢复`,pause_hint:`停止从此队列获取新任务(进行中的任务会完成)`,unpause_hint:`恢复从此队列获取任务`,quiet:`静默`,stop:`停止`,prev:`上一页`,next:`下一页`,search:`搜索`,all_suffix:`全部`,selected:`已选 {n} 项`,select_hint:`选择要操作的任务`,scope_selected:`已选 {n} 个任务`,scope_all:`此集合中的所有任务`,scope_this_job:`此任务`,scope_this_process:`此进程`,scope_all_processes:`所有进程`,confirm:`{action}{scope}?此操作无法撤销。`,confirm_clear_queue:`清空"{name}"中的所有任务?此操作无法撤销。`,reset:`重置`,enqueue:`入队`,matching:`{n} 个符合筛选条件`,all_filtered_hint:`“全部”作用于整个集合,而不仅是筛选出的行。请先清除筛选条件。`},readonly:{banner:`只读模式`},toast:{failed:`操作失败,请重试。`,readonly:`此仪表盘为只读模式 — 操作已被拒绝。`,gone:`该任务已不存在 — 可能已运行或被移除。`,unavailable:`Redis当前不可用,请稍后重试。`,dismiss:`关闭`,region:`通知`,partial:`已应用 {count} 个,失败 {failed} 个。列表已刷新。`},common:{loading:`加载中…`,error:`加载数据出错`,empty:`暂无数据`,page:`第`,of:`共`,ms:`ms`,load_failed:`无法加载此页面`,load_failed_hint:`应用自打开后可能已更新。重新加载将获取最新版本。`,reload:`重新加载`,filter_placeholder:`按类名或 JID 筛选…`,matching:`{n} 个匹配`,close:`关闭`},limiters:{exhausted:`已耗尽`,available:`可用`},queues:{job_count:`{n} 个任务`,latency_label:`延迟`},batches:{children:`子批次`,completed:`完成时间`,parent:`父批次`,tags:`标签`,failed_jobs:`失败任务`,dead_jobs:`死亡任务`,complete:`已完成`,invalidated:`已失效`},flows:{graph:`图`,nodes:`节点`,depth:`深度`,width:`宽度`,succeeded:`已成功`,finished:`完成时间`,blocked:`阻塞于`,depends_on:`依赖于`,piped:`串联`,abandon:`放弃`,abandon_hint:`将该工作流标记为已放弃并释放其键。已入队的任务仍会运行。`,released:`该工作流已被放弃 — 其节点记录已释放。`,state:{running:`运行中`,succeeded:`已成功`,failed:`已失败`,abandoned:`已放弃`,waiting:`等待中`,enqueued:`已入队`,dead:`死亡`,broken:`已中断`}},metrics:{time_range:`时间范围:`,total_processed:`处理总数`,across_all_queues:`覆盖所有队列`,failed_jobs:`失败任务数`,total_failures:`失败总数`,avg_latency:`平均延迟`,head_of_line:`队首延迟`,active_workers:`活跃工作进程`,stable:`稳定`,no_workers:`无工作进程`,throughput_failures:`吞吐量与失败`,throughput_sub:`{range}内每个时间段处理的任务`,no_queue_history:`暂无队列历史。`,queue_depth:`队列深度`,peak:`峰值 {n}`,top_job_types:`热门任务类型(数量)`,job_class:`任务类`,pct_total:`占比`,queue_latency_seconds:`队列延迟(秒)`,historical_snapshots:`历史快照`,view_job_detail:`查看任务类详情`},timezone:{title:`时区`,shown_in:`时间以 {name} 显示`,automatic:`自动({name})`,filter:`筛选时区…`,empty:`没有与“{query}”匹配的时区`},theme:{light:`浅色`,dark:`深色`,system:`系统`},notfound:{title:`未找到页面`,hint:`此仪表盘在该地址没有页面。`,home:`返回仪表盘`}},ar:{nav:{dashboard:`لوحة التحكم`,queues:`الطوابير`,retries:`إعادة المحاولات`,scheduled:`المجدولة`,dead:`الميتة`,busy:`المشغولة`,batches:`الدفعات`,flows:`المسارات`,limiters:`المُحدِّدات`,cron:`المهام الدورية`,metrics:`المقاييس`,profiles:`ملفات الأداء`,search:`البحث`,extensions:`الإضافات`,collapse:`طيّ`,expand:`توسيع`,language:`اللغة`,language_current:`اللغة: {name}`,timezone_current:`المنطقة الزمنية: {name}`,theme_current:`المظهر: {name}`,theme_next:`التبديل إلى مظهر {name}`,status_active:`حالة النظام: نشط`,status_inactive:`حالة النظام: غير متصل`,home_label:`Wurk — الصفحة الرئيسية للوحة التحكم`,toggle:`تبديل التنقل`},dashboard:{processed:`تمت المعالجة`,failed:`فشلت`,expired:`منتهية الصلاحية`,busy:`مشغول`,enqueued:`في الطابور`,retries:`إعادة المحاولات`,scheduled:`مجدولة`,dead:`ميتة`,processes:`العمليات`,paused:`متوقّف مؤقتًا`,strapline:`وُرك، وُرك. جاهز للعمل. زوغ زوغ.`,tagline:`بديل متوافق 100% مع Sidekiq + Sidekiq Pro + Sidekiq Enterprise. مجاني للأبد.`,install:`التثبيت`,docs:`التوثيق`,active:`نشط`,vs_last_hour:`مقارنة بآخر ساعة`,stable_threshold:`ضمن العتبة`,above_threshold:`فوق العتبة`,system_idle:`النظام خامل`,processing:`قيد المعالجة`,performance_insight:`رؤية الأداء`,perf_subtitle:`المهام المُعالَجة مقابل الفاشلة على مدى {range}`,no_history:`لا توجد بيانات بعد — يمتلئ الرسم البياني مع تشغيل المهام.`,range_1h_desc:`آخر ساعة`,range_24h_desc:`آخر 24 ساعة`,range_7d_desc:`آخر 7 أيام`,range_30d_desc:`آخر 30 يومًا`},table:{class:`الفئة`,args:`الوسائط`,jid:`المعرّف`,queue:`الطابور`,error:`الخطأ`,retry_at:`إعادة المحاولة في`,failed_at:`فشلت في`,scheduled_at:`مجدولة في`,enqueued_at:`أُدرجت في`,message:`الرسالة`,count:`العدد`,status:`الحالة`,total:`الإجمالي`,pending:`قيد الانتظار`,size:`الحجم`,latency:`زمن الاستجابة`,concurrency:`التزامن`,busy:`مشغول`,queues:`الطوابير`,name:`الاسم`,type:`النوع`,used:`المُستخدَم`,limit:`الحد`,usage:`الاستخدام`,bid:`BID`,fid:`FID`,description:`الوصف`,failures:`الإخفاقات`,progress:`التقدّم`,created:`أُنشئت`,elapsed:`الوقت المنقضي`,schedule:`الجدولة`,select_all:`تحديد الكل`,select_row:`تحديد المهمة`},summaries:{queues:`الطوابير النشطة مع عمقها وزمن استجابتها — انقر على طابور لفحص مهامه.`,retries:`المهام التي أثارت خطأً وستُعاد جدولتها — انقر على واحدة لعرض الخطأ والتتبّع.`,scheduled:`مهام مُدرجة للتشغيل في وقت لاحق.`,dead:`مهام استنفدت كل المحاولات — انقر على واحدة لفحص الفشل.`,busy:`عمليات العمل المباشرة والمهام التي تنفّذها حاليًا.`,batches:`المهام المُجمّعة وتقدّمها ونجاحاتها وإخفاقاتها.`,flows:`رسوم بيانية موجّهة للمهام — يبدأ كل عقدة بعد نجاح كل ما تعتمد عليه.`,limiters:`محدِّدات المعدّل واستخدامها الحالي.`,cron:`المهام الدورية (cron) مع جدولها وآخر تشغيل.`,metrics:`سجل الإنتاجية والإخفاقات، مع إحصاءات تنفيذ لكل مهمة.`,profiles:`ملفات أداء مُلتقطة — افتح واحدًا في محلل Firefox لفحص مخطط اللهب.`,search:`ابحث عن مهمة عبر إعادة المحاولات والمجدولة والميتة بالمعرّف أو اسم الفئة.`,dashboard:`الإجماليات المباشرة ومعدل المعالجة خلال الفترة المحددة وحالة الطوابير في لمحة واحدة.`},job:{detail:`تفاصيل المهمة`,class:`الفئة`,queue:`الطابور`,jid:`المعرّف`,retries:`إعادة المحاولات`,enqueued:`أُدرجت`,at:`مجدولة`,args:`الوسائط`,error:`الخطأ`,backtrace:`تتبّع الأخطاء`},search:{emptyTitle:`ابحث عن مهمة`,emptyHint:`أدخل معرّفًا (JID) أو اسم فئة (حرفان أو أكثر) واضغط بحث. تشمل النتائج مهام إعادة المحاولات والمجدولة والميتة.`,try:`جرّب:`,placeholder:`ابحث بالمعرّف (JID) أو اسم الفئة أو الوسيطة…`,source:`المصدر`,when:`الوقت`,truncated:`تُعرض نتائج جزئية — نقّح بحثك لتضييقه.`,result:`{n} نتيجة لـ «{term}»`,results:`{n} نتائج لـ «{term}»`,kind:{queue:`الطابور`,retry:`إعادة المحاولة`,scheduled:`مجدولة`,dead:`ميتة`}},actions:{retry:`إعادة المحاولة`,delete:`حذف`,kill:`إنهاء`,add_to_queue:`إضافة إلى الطابور`,clear:`مسح`,pause:`إيقاف مؤقت`,unpause:`استئناف`,pause_hint:`إيقاف جلب مهام جديدة من هذا الطابور (تكتمل المهام الجارية)`,unpause_hint:`استئناف جلب المهام من هذا الطابور`,quiet:`تهدئة`,stop:`إيقاف`,prev:`السابق`,next:`التالي`,search:`بحث`,all_suffix:`الكل`,selected:`{n} محدَّد`,select_hint:`حدّد مهامًا للعمل عليها`,scope_selected:`{n} مهمة محدَّدة`,scope_all:`كل مهمة في هذه المجموعة`,scope_this_job:`هذه المهمة`,scope_this_process:`هذه العملية`,scope_all_processes:`كل العمليات`,confirm:`{action} {scope}؟ لا يمكن التراجع عن هذا.`,confirm_clear_queue:`مسح كل المهام من "{name}"؟ لا يمكن التراجع عن هذا.`,reset:`إعادة تعيين`,enqueue:`إدراج في الطابور`,matching:`{n} تطابق عامل التصفية`,all_filtered_hint:`"الكل" يعمل على المجموعة بأكملها وليس الصفوف المصفّاة فقط. امسح عامل التصفية لاستخدامه.`},readonly:{banner:`وضع القراءة فقط`},common:{loading:`جارٍ التحميل…`,error:`خطأ في تحميل البيانات`,empty:`لا توجد عناصر`,page:`صفحة`,of:`من`,ms:`مللي ثانية`,load_failed:`تعذّر تحميل هذه الصفحة`,load_failed_hint:`ربما تم تحديث التطبيق منذ فتحه. ستؤدي إعادة التحميل إلى جلب أحدث إصدار.`,reload:`إعادة التحميل`,filter_placeholder:`تصفية حسب الفئة أو JID…`,matching:`{n} مطابقة`,close:`إغلاق`},busy:{hosts:`{n} مضيفًا`,cores:`{n} نواة`,of_total_ram:`من إجمالي الذاكرة`,heartbeat:`نبض`,rss:`RSS`,rtt:`زمن Redis`,version:`الإصدار`,tag:`الوسم`,labels:`التسميات`,identity:`الهوية`,started:`بدأ`,up_for:`يعمل منذ`,running_jobs:`المهام قيد التنفيذ`,running_since:`قيد التنفيذ منذ`,no_running:`لا توجد مهام قيد التنفيذ في هذه العملية`,leader:`القائد`,leader_title:`تحتفظ هذه العملية بقفل قائد المجموعة`,heartbeat_ok:`نبض القلب سليم`},cron:{history_title:`سجل التنفيذ`,fired:`أُطلقت`,no_history:`لا توجد عمليات تشغيل مسجلة بعد`,last_fire:`آخر إطلاق`,next_fire:`الإطلاق التالي`},extension:{summary:`مُقدَّم بواسطة إضافة من جهة خارجية.`,open:`فتح`,notRendered:`يُقدَّم هذا التبويب بواسطة إضافة من جهة خارجية. يعرضه wurk في شريط التنقل لكنه لا يعرض واجهته داخل لوحة التحكم.`},toast:{failed:`فشل الإجراء. يرجى المحاولة مرة أخرى.`,readonly:`لوحة التحكم هذه للقراءة فقط — رُفض الإجراء.`,gone:`كانت هذه المهمة قد اختفت بالفعل — ربما تم تشغيلها أو إزالتها.`,unavailable:`خدمة Redis غير متاحة حاليًا. حاول مرة أخرى بعد قليل.`,dismiss:`إغلاق`,region:`الإشعارات`,partial:`تم تطبيق {count}، وفشل {failed}. تم تحديث القائمة.`},limiters:{exhausted:`مستنفَد`,available:`متاح`},queues:{job_count:`{n} مهمة`,latency_label:`زمن الاستجابة`},batches:{children:`الفروع`,completed:`اكتملت في`,parent:`الدفعة الأم`,tags:`الوسوم`,failed_jobs:`المهام الفاشلة`,dead_jobs:`المهام الميتة`,complete:`مكتملة`,invalidated:`مُبطَلة`},flows:{graph:`الرسم`,nodes:`العقد`,depth:`العمق`,width:`العرض`,succeeded:`الناجحة`,finished:`انتهى في`,blocked:`مُعطّل بسبب`,depends_on:`يعتمد على`,piped:`مُسلسَل`,abandon:`التخلّي`,abandon_hint:`يضع علامة تخلٍّ على هذا المسار ويحرّر مفاتيحه. المهام الموجودة في الطابور ستُنفَّذ رغم ذلك.`,released:`تم التخلّي عن هذا المسار — وحُرّرت سجلات عقده.`,state:{running:`قيد التشغيل`,succeeded:`ناجح`,failed:`فاشل`,abandoned:`مُتخلّى عنه`,waiting:`في الانتظار`,enqueued:`في الطابور`,dead:`ميت`,broken:`معطوب`}},metrics:{time_range:`النطاق الزمني:`,total_processed:`إجمالي المُعالَج`,across_all_queues:`عبر كل الطوابير`,failed_jobs:`المهام الفاشلة`,total_failures:`إجمالي الإخفاقات`,avg_latency:`متوسط زمن الاستجابة`,head_of_line:`انتظار الصدارة`,active_workers:`العُمّال النشطون`,stable:`مستقر`,no_workers:`لا عُمّال`,throughput_failures:`الإنتاجية والإخفاقات`,throughput_sub:`المهام المُعالَجة لكل فاصل زمني على مدى {range}`,no_queue_history:`لا يوجد سجل طوابير بعد.`,queue_depth:`عمق الطابور`,peak:`الذروة {n}`,top_job_types:`أهم أنواع المهام (الحجم)`,job_class:`فئة المهمة`,pct_total:`% من الإجمالي`,queue_latency_seconds:`زمن استجابة الطابور (ثوانٍ)`,historical_snapshots:`اللقطات التاريخية`,view_job_detail:`عرض تفاصيل فئة المهمة`},timezone:{title:`المنطقة الزمنية`,shown_in:`الأوقات معروضة بتوقيت {name}`,automatic:`تلقائي ({name})`,filter:`تصفية المناطق الزمنية…`,empty:`لا توجد منطقة زمنية تطابق «{query}»`},theme:{light:`فاتح`,dark:`داكن`,system:`النظام`},notfound:{title:`الصفحة غير موجودة`,hint:`لا توجد صفحة في لوحة التحكم بهذا العنوان.`,home:`العودة إلى لوحة التحكم`}}},wt=Object.freeze(Object.keys(Ct)),Tt=`wurk.locale`,Et=`locale`,Dt=[`ar`,`he`,`fa`];function Ot(e){return Dt.includes(e.toLowerCase().split(`-`)[0])?`rtl`:`ltr`}var kt=/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/;function Q(e){let t=e?.trim();return t&&kt.test(t)?t:void 0}function At(e,t){let n=t.toLowerCase(),r=n.split(`-`)[0];return e.find(e=>e.toLowerCase()===n)??e.find(e=>e.toLowerCase()===r)??e.find(e=>e.toLowerCase().split(`-`)[0]===r)}function jt(e){return At(wt,e)}function Mt(){return Q(new URLSearchParams(window.location.search).get(Et))}function Nt(){try{return Q(localStorage.getItem(Tt))}catch{return}}function Pt(){return Q(document.getElementById(`wurk-root`)?.dataset.locale)}function Ft(){let e=navigator.languages?.length?navigator.languages:[navigator.language];for(let t of e){let e=Q(t);if(e&&jt(e))return e}}function It(){return Mt()??Nt()??Pt()??Ft()??`en`}function Lt(e){let t=Ot(e);document.documentElement.lang=e,document.documentElement.dir=t;let n=document.getElementById(`wurk-root`);n&&(n.dir=t)}function Rt(e){let t=Q(e);if(!t)return;let n=!1;try{localStorage.setItem(Tt,t),n=!0}catch{}Lt(t);let r=new URL(window.location.href);n?r.searchParams.delete(Et):r.searchParams.set(Et,t),r.href===window.location.href?window.location.reload():window.location.assign(r.href)}function zt(e){try{let t=document.getElementById(`wurk-i18n`);if(!t)return{};let n=JSON.parse(t.textContent??`{}`),r=At(Object.keys(n),e);return r?n[r]??{}:{}}catch{return{}}}function Bt(e,t){let n={...e};for(let r of Object.keys(t)){let i=t[r],a=e[r];i&&typeof i==`object`&&!Array.isArray(i)&&a&&typeof a==`object`?n[r]=Bt(a,i):i!==void 0&&(n[r]=i)}return n}var $=It();Ot($);var Vt=Bt(Bt(St,Ct[jt($)??`en`]??{}),zt($));function Ht(e,t){let n=e.split(`.`),r=Vt;for(let t of n)if(r&&typeof r==`object`)r=r[t];else return e;return typeof r==`string`?t?r.replace(/\{(\w+)\}/g,(e,n)=>String(t[n]??n)):r:e}export{E as $,ce as A,Me as B,Pe as C,He as D,Ie as E,w as F,D as G,j as H,S as I,ze as J,O as K,T as L,ee as M,se as N,Le as O,C as P,N as Q,b as R,Be as S,Re as T,Ae as U,A as V,Oe as W,e as X,M as Y,ke as Z,et as _,Rt as a,i as b,it as c,Xe as d,P as et,$e as f,st as g,lt as h,$ as i,we as j,ne as k,tt as l,ct as m,wt as n,Ht as o,q as p,re as q,jt as r,xt as s,Lt as t,J as u,ut as v,Fe as w,o as x,vt as y,x as z};
|