- Einstellungen → Lucy: Freiheit je Aktionsart (freier als der Start nur nach Nachfrage), offene und zuletzt beantwortete Rückfragen, Wochenbericht (nächster Termin, letzten lesen, jetzt schicken) - Übersicht: Feld „Rückfrage an dich“ ganz oben, nur wenn eine offen ist; Ja erst nach Bestätigung - Strg+K: Lucys Freiheiten, Rückfragen, Wochenbericht - Einstieg 126,1 KB gzip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 line
60 KiB
JavaScript
1 line
60 KiB
JavaScript
import{a as e,c as t,i as n,r,t as i}from"./dist-aE7UmubC.js";import{Bt as a,E as o,F as s,Ft as c,G as l,H as u,K as d,Lt as f,Nt as p,Ot as m,P as h,Pt as g,Rt as _,St as v,U as y,_t as b,a as x,c as S,gt as C,ht as w,i as T,j as E,l as D,nt as O,rn as k,xt as A,z as j}from"./abfragen-pD_qBEtc.js";import{n as M,t as N}from"./useSelector-DBNxxw17.js";import{n as P}from"./useMatch-DDVpPKJI.js";import{t as F}from"./chevron-right-DF8ikrVh.js";import{t as I}from"./button-BHVKhtQ6.js";import{C as L,H as R,T as z,V as B,ct as V,m as H,p as U,w as W}from"./index-Bumw6krN.js";import{a as G,i as ee,n as te,r as K,t as ne}from"./sheet-DG7u1mB-.js";import{a as re,r as ie,s as ae,t as q}from"./Auftraege-Ddds-g-W.js";import{t as J}from"./breite-k-QN6GPl.js";function oe(e){let t=M();return N(t.stores.location,P(e,t))}var Y=r(),X=t(e(),1),Z=n(),Q=new Intl.NumberFormat(`de-DE`),se=240,ce=24,le={ArrowLeft:e=>Math.max(0,e-1),ArrowRight:(e,t)=>Math.min(t-1,e+1),Home:()=>0,End:(e,t)=>t-1};function ue(e){let t=(0,Y.c)(20),{saeule:n,reihen:r,summe:a,className:o,links:s}=e,c;t[0]===o?c=t[1]:(c=i(`flex flex-col gap-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 py-2`,o),t[0]=o,t[1]=c);let l;t[2]===s?l=t[3]:(l=s===void 0?void 0:{left:s},t[2]=s,t[3]=l);let u;t[4]===n.lang?u=t[5]:(u=(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:n.lang}),t[4]=n.lang,t[5]=u);let d;if(t[6]!==r||t[7]!==n.werte){let e;t[9]===n.werte?e=t[10]:(e=e=>(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 shrink-0 self-center rounded-full`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(n.werte[e.name]??0)}),(0,Z.jsx)(`span`,{className:`min-w-0 text-text-3`,children:e.name})]},e.name),t[9]=n.werte,t[10]=e),d=r.map(e),t[6]=r,t[7]=n.werte,t[8]=d}else d=t[8];let f;t[11]!==r.length||t[12]!==a?(f=r.length>1&&(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-2 border-t border-white/[0.06] pt-1 text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern font-semibold text-foreground`,children:Q.format(a)}),(0,Z.jsx)(`span`,{className:`text-text-3`,children:`zusammen`})]}),t[11]=r.length,t[12]=a,t[13]=f):f=t[13];let p;return t[14]!==c||t[15]!==l||t[16]!==u||t[17]!==d||t[18]!==f?(p=(0,Z.jsxs)(`div`,{role:`status`,className:c,style:l,children:[u,d,f]}),t[14]=c,t[15]=l,t[16]=u,t[17]=d,t[18]=f,t[19]=p):p=t[19],p}function de(e){let t=(0,Y.c)(92),{saeulen:n,reihen:r,titel:a,summen:o,hoehe:s,spalte:c}=e,l=o===void 0?`alle`:o,u=s===void 0?200:s,d=c===void 0?`Zeitraum`:c,[f,p]=J(),[m,h]=(0,X.useState)(null),g=n.length,_,v,y,b,x,S,C,w,T,E;if(t[0]!==p||t[1]!==u||t[2]!==m||t[3]!==g||t[4]!==f||t[5]!==r||t[6]!==n||t[7]!==d||t[8]!==l||t[9]!==a){let e;t[20]===n?e=t[21]:(e=e=>n.some(t=>(t.werte[e.name]??0)>0),t[20]=n,t[21]=e);let o=r.filter(e),s=n.map(e=>o.reduce((t,n)=>t+(e.werte[n.name]??0),0)),c=Math.max(0,...s),D=z(c),O=D[D.length-1],k;t[22]===O?k=t[23]:(k=Q.format(O),t[22]=O,t[23]=k);let A=Math.max(28,k.length*7+12),j=n.some(ge)?34:22,M;t[24]!==A||t[25]!==j?(M={links:A,rechts:4,oben:20,unten:j},t[24]=A,t[25]=j,t[26]=M):M=t[26];let N=M,P=Math.max(1,p-N.links-N.rechts),F=u-N.oben-N.unten,I=P/Math.max(1,g),R=Math.min(ce,Math.max(3,I*.72)),B;t[27]!==F||t[28]!==O||t[29]!==N.oben?(B=e=>N.oben+F-e/O*F,t[27]=F,t[28]=O,t[29]=N.oben,t[30]=B):B=t[30];let V=B,H=N.oben+F,U;t[31]!==I||t[32]!==N.links?(U=e=>N.links+(e+.5)*I,t[31]=I,t[32]=N.links,t[33]=U):U=t[33];let G=U,ee;t[34]===n?ee=t[35]:(ee=Math.max(1,...n.map(he)),t[34]=n,t[35]=ee);let te=ee*6.6+8,K;t[36]!==I||t[37]!==te?(K=[1,3,6,12].find(e=>e*I>=te)??24,t[36]=I,t[37]=te,t[38]=K):K=t[38];let ne=K,re=s.indexOf(c),ie=I<34,ae;t[39]===g?ae=t[40]:(ae=function(e){if(g===0)return;let t=e.currentTarget.getBoundingClientRect();h(Math.min(g-1,Math.max(0,Math.floor((e.clientX-t.left)/t.width*g))))},t[39]=g,t[40]=ae);let q=ae,J;t[41]===g?J=t[42]:(J=function(e){let t=le[e.key];g!==0&&t&&(e.preventDefault(),h(e=>t(e??g-1,g)))},t[41]=g,t[42]=J);let oe=J,Y=m===null?void 0:n[m],X=p>=360,de=m===null?0:Math.max(0,Math.min(p-se,G(m)+12+se>p?G(m)-12-se:G(m)+12));_=`flex flex-col gap-2`,v=o.length>1&&(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:o.map(me)});let _e;t[43]===g?_e=t[44]:(_e=()=>h(e=>e??(g?g-1:null)),t[43]=g,t[44]=_e);let ve;t[45]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>h(null),t[45]=ve):ve=t[45];let ye;t[46]!==Y||t[47]!==I||t[48]!==m||t[49]!==F||t[50]!==N.links||t[51]!==N.oben?(ye=Y&&m!==null&&(0,Z.jsx)(`rect`,{x:N.links+m*I,y:N.oben-4,width:I,height:F+4,rx:4,fill:`var(--erhaben)`}),t[46]=Y,t[47]=I,t[48]=m,t[49]=F,t[50]=N.links,t[51]=N.oben,t[52]=ye):ye=t[52];let be;t[53]!==p||t[54]!==N.links||t[55]!==N.rechts||t[56]!==V?(be=e=>(0,Z.jsxs)(`g`,{children:[(0,Z.jsx)(`line`,{x1:N.links,x2:p-N.rechts,y1:V(e),y2:V(e),strokeWidth:1,stroke:e===0?`var(--linie-stark)`:`var(--linie)`}),(0,Z.jsx)(`text`,{x:N.links-8,y:V(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:Q.format(e)})]},e),t[53]=p,t[54]=N.links,t[55]=N.rechts,t[56]=V,t[57]=be):be=t[57];let xe;t[58]!==P||t[59]!==F||t[60]!==c||t[61]!==N.links||t[62]!==N.oben?(xe=c===0&&(0,Z.jsx)(`text`,{x:N.links+P/2,y:N.oben+F/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Keine Anfragen in diesem Zeitraum`}),t[58]=P,t[59]=F,t[60]=c,t[61]=N.links,t[62]=N.oben,t[63]=xe):xe=t[63];let Se;t[64]===Symbol.for(`react.memo_cache_sentinel`)?(Se=e=>{e.pointerType!==`touch`&&h(null)},t[64]=Se):Se=t[64];let Ce;t[65]!==u||t[66]!==P||t[67]!==N.links||t[68]!==q?(Ce=(0,Z.jsx)(`rect`,{x:N.links,y:0,width:P,height:u,fill:`transparent`,onPointerMove:q,onPointerDown:q,onPointerLeave:Se}),t[65]=u,t[66]=P,t[67]=N.links,t[68]=q,t[69]=Ce):Ce=t[69],y=(0,Z.jsxs)(`div`,{ref:f,className:`relative w-full`,children:[(0,Z.jsxs)(`svg`,{width:p,height:u,viewBox:`0 0 ${p} ${u}`,role:`img`,"aria-label":a,tabIndex:0,onKeyDown:oe,onFocus:_e,onBlur:ve,className:`block h-auto max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[ye,D.map(be),n.map((e,t)=>{let n=G(t)-R/2;return(0,Z.jsxs)(`g`,{children:[W(o.map(t=>e.werte[t.name]??0),V).filter(pe).map(e=>e.oben?(0,Z.jsx)(`path`,{d:L(n,e.y,R,e.hoehe),fill:o[e.index].farbe},e.index):(0,Z.jsx)(`rect`,{x:n,y:e.y,width:R,height:e.hoehe,fill:o[e.index].farbe},e.index)),s[t]>0&&(l===`alle`||t===re)&&(0,Z.jsx)(`text`,{x:G(t),y:V(s[t])-6,textAnchor:`middle`,className:i(`fill-text-2 font-mono`,ie?`text-[10px]`:`text-[11px]`),children:Q.format(s[t])}),(e.raster??t)%ne===0&&(0,Z.jsxs)(`text`,{x:G(t),y:H+15,textAnchor:`middle`,className:`fill-text-3 font-mono text-[11px]`,children:[e.achse,e.achse2&&(0,Z.jsx)(`tspan`,{x:G(t),dy:13,className:`text-[10px]`,children:e.achse2})]})]},e.schluessel)}),xe,Ce]}),Y&&m!==null&&X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m],links:de,className:`pointer-events-none absolute top-1 z-10 w-60 shadow-lg`})]}),b=Y&&m!==null&&!X&&(0,Z.jsx)(ue,{saeule:Y,reihen:o,summe:s[m]}),T=`text-sm`,t[70]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,Z.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[70]=E):E=t[70],w=`mt-2 overflow-x-auto`,S=`w-full border-collapse text-xs`;let we;t[71]===d?we=t[72]:(we=(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-left font-normal`,children:d}),t[71]=d,t[72]=we),C=(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`text-text-3`,children:[we,o.map(fe),o.length>1&&(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 text-right font-normal`,children:`Zusammen`})]})}),x=n.map((e,t)=>(0,Z.jsxs)(`tr`,{className:`border-t border-white/[0.06]`,children:[(0,Z.jsx)(`th`,{scope:`row`,className:`py-1 pr-3 text-left font-normal text-text-3`,children:e.lang}),o.map(t=>(0,Z.jsx)(`td`,{className:`ziffern py-1 pr-3 text-right text-text-2`,children:Q.format(e.werte[t.name]??0)},t.name)),o.length>1&&(0,Z.jsx)(`td`,{className:`ziffern py-1 text-right text-foreground`,children:Q.format(s[t])})]},e.schluessel)),t[0]=p,t[1]=u,t[2]=m,t[3]=g,t[4]=f,t[5]=r,t[6]=n,t[7]=d,t[8]=l,t[9]=a,t[10]=_,t[11]=v,t[12]=y,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T,t[19]=E}else _=t[10],v=t[11],y=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18],E=t[19];let D;t[73]===x?D=t[74]:(D=(0,Z.jsx)(`tbody`,{children:x}),t[73]=x,t[74]=D);let O;t[75]!==D||t[76]!==S||t[77]!==C?(O=(0,Z.jsxs)(`table`,{className:S,children:[C,D]}),t[75]=D,t[76]=S,t[77]=C,t[78]=O):O=t[78];let k;t[79]!==O||t[80]!==w?(k=(0,Z.jsx)(`div`,{className:w,children:O}),t[79]=O,t[80]=w,t[81]=k):k=t[81];let A;t[82]!==k||t[83]!==T||t[84]!==E?(A=(0,Z.jsxs)(`details`,{className:T,children:[E,k]}),t[82]=k,t[83]=T,t[84]=E,t[85]=A):A=t[85];let j;return t[86]!==_||t[87]!==v||t[88]!==y||t[89]!==b||t[90]!==A?(j=(0,Z.jsxs)(`div`,{className:_,children:[v,y,b,A]}),t[86]=_,t[87]=v,t[88]=y,t[89]=b,t[90]=A,t[91]=j):j=t[91],j}function fe(e){return(0,Z.jsx)(`th`,{scope:`col`,className:`py-1 pr-3 text-right font-normal [overflow-wrap:anywhere]`,children:e.name},e.name)}function pe(e){return e.hoehe>0}function me(e){return(0,Z.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),e.name]},e.name)}function he(e){return e.achse.length}function ge(e){return e.achse2}var _e=`Europe/Berlin`,ve=[`var(--reihe-1)`,`var(--reihe-2)`,`var(--reihe-3)`],ye={name:`Weitere`,farbe:`var(--reihe-weitere)`},be=new Intl.NumberFormat(`de-DE`),xe=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Se=new Intl.DateTimeFormat(`en-CA`,{timeZone:_e}),Ce=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:_e}),we=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,hourCycle:`h23`,timeZone:_e}),Te=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:`UTC`}),Ee=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,timeZone:`UTC`}),$=e=>be.format(e);function De(e){if(!(e>0))return`0 %`;let t=e*100;return t<.1?`unter 0,1 %`:`${t<10?xe.format(t):be.format(Math.round(t))} %`}function Oe(e,t=!1){if(e==null||!Number.isFinite(e)||e<0)return`–`;if(Math.round(e*1e3)<1e3)return`${Math.round(e*1e3)} ms`;if(e<9.95)return`${xe.format(e)} s`;let n=Math.round(e);if(n<60)return`${n} s`;if(n<3600&&!t)return n%60?`${Math.floor(n/60)} min ${n%60} s`:`${n/60} min`;let r=Math.round(e/60);return r<60?`${r} min`:r%60?`${Math.floor(r/60)} h ${r%60} min`:`${r/60} h`}var ke={400:`fehlerhafte Anfrage`,404:`nicht gefunden`,408:`Zeitüberschreitung`,413:`Anfrage zu groß`,429:`zu viele Anfragen`,499:`vom Absender abgebrochen`,500:`Fehler beim Modell`,502:`Modell nicht erreichbar`,503:`gerade nicht verfügbar`,504:`Zeitüberschreitung`};function Ae(e){return Object.entries(e??{}).sort(([e,t],[n,r])=>r-t||e.localeCompare(n)).map(([e,t])=>ke[e]?`${$(t)}× ${ke[e]} (${e})`:`${$(t)}× Status ${e}`).join(` · `)}function je(e){return e===null||e<.01?{art:`grau`,wort:null}:e>=.05?{art:`rot`,wort:`hoch`}:{art:`bernstein`,wort:`auffällig`}}var Me=e=>String(e).padStart(2,`0`),Ne=e=>Object.values(e??{}).reduce((e,t)=>e+t,0),Pe=e=>Te.format(e).replace(`.`,``);function Fe(e){return Number(we.formatToParts(e).find(e=>e.type===`hour`)?.value??0)%24}function Ie(e){let[,t,n]=e.split(`-`);return`${Ee.format(new Date(`${e}T12:00:00Z`))}, ${n}.${t}.`}function Le(e,t=new Date){let n=e.stand?new Date(e.stand):t,r=Se.format(n),i=new Date(Date.parse(`${r}T12:00:00Z`)-864e5).toISOString().slice(0,10),a=e.gesamt?.anfragen??e.absender.reduce((e,t)=>e+t.anfragen,0),o=e.gesamt?.dauer_summe_s??null,s=new Map(e.absender.map((e,t)=>[e.name,e.reihe??t])),c=e.absender.map(e=>{let t=s.get(e.name)??ve.length,n=t<ve.length;return{name:e.name,farbe:n?ve[t]:ye.farbe,reihe:n?e.name:ye.name,anfragen:e.anfragen,anteil:a?e.anfragen/a:0,fehler:e.fehler??null,fehlerCodes:e.fehler_codes??{},typisch:e.dauer_typisch_s??null,p90:e.dauer_p90_s??null,summe:e.dauer_summe_s??null,zeitAnteil:e.dauer_summe_s!=null&&o?e.dauer_summe_s/o:null,zuletzt:e.zuletzt??null}}),l=new Map(c.map(e=>[e.name,e.reihe])),u=[];for(let e of[...c].sort((e,t)=>(s.get(e.name)??99)-(s.get(t.name)??99)))u.some(t=>t.name===e.reihe)||u.push({name:e.reihe,farbe:e.farbe});let d=e=>{let t={};for(let[n,r]of Object.entries(e??{})){let e=l.get(n)??ye.name;t[e]=(t[e]??0)+r,e===ye.name&&!u.some(t=>t.name===e)&&u.push({...ye})}return t},f=Object.keys(e.je_tag??{}).sort(),p=f.map(t=>{let i=t===r;return{schluessel:t,achse:Pe(new Date(`${t}T12:00:00Z`)),achse2:i?`heute`:`${Number(t.slice(8))}.`,lang:`${Ie(t)}${i?` (heute bis ${Ce.format(n)})`:``}`,werte:d(e.je_tag[t])}}),m;if(e.stunden?.length)m=e.stunden.map((e,t,n)=>{let a=new Date(e.beginn),o=Fe(a),s=Se.format(a),c=s===r?`Heute`:s===i?`Gestern`:Ie(s),l=t===n.length-1?` bis jetzt`:`–${Me((o+1)%24)}:00`;return{schluessel:e.beginn,achse:`${Me(o)}:00`,raster:o,lang:`${c} ${Me(o)}:00${l}`,werte:d(e.je_absender)}});else{let t=Fe(n),r=e.letzte_24h??[];m=[...r.slice(t+1),...r.slice(0,t+1)].map(e=>{let t=Number(e.stunde);return{schluessel:e.stunde,achse:`${Me(t)}:00`,raster:t,lang:`${Me(t)}:00–${Me((t+1)%24)}:00`,werte:d(e.je_absender)}})}let h=f.filter(e=>e!==r),g=e.seit?Se.format(new Date(e.seit)):null,_=e.ladevorgaenge??Object.entries(e.zuletzt_geladen??{}).sort(([,e],[,t])=>Date.parse(t)-Date.parse(e)).map(([e,t])=>({modell:e,anzahl:null,zeiten:[t]}));return{absender:c,reihen:u,tage:p,stunden:m,gesamt:{anfragen:a,fehler:e.gesamt?.fehler??null,fehlerCodes:e.gesamt?.fehler_codes??{},typisch:e.gesamt?.dauer_typisch_s??null,p90:e.gesamt?.dauer_p90_s??null,summe:o},heute:Ne(e.je_tag?.[r]),gestern:Ne(e.je_tag?.[i]),schnitt:h.length?h.reduce((t,n)=>t+Ne(e.je_tag[n]),0)/h.length:null,zeitraum:g?`seit ${Pe(new Date(`${g}T12:00:00Z`))} ${g.slice(8)}.${g.slice(5,7)}.`:`letzte ${e.tage} Tage`,stand:e.stand?Ce.format(n):null,modelle:_}}var Re={grau:`text-foreground`,bernstein:`text-bernstein`,rot:`text-rot-text`};function ze(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,art:o}=e,s=o===void 0?`grau`:o,c;t[0]===n?c=t[1]:(c=(0,Z.jsx)(`span`,{className:`etikett text-[10.5px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=c);let l=Re[s],u;t[2]===l?u=t[3]:(u=i(`font-anzeige text-[28px] leading-none font-bold`,l),t[2]=l,t[3]=u);let d;t[4]!==u||t[5]!==r?(d=(0,Z.jsx)(`span`,{className:u,children:r}),t[4]=u,t[5]=r,t[6]=d):d=t[6];let f;t[7]===a?f=t[8]:(f=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=f);let p;return t[9]!==c||t[10]!==d||t[11]!==f?(p=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 flaeche-innen rounded-2xl px-3.5 py-3`,children:[c,d,f]}),t[9]=c,t[10]=d,t[11]=f,t[12]=p):p=t[12],p}var Be=`lg:grid-cols-[minmax(0,1.5fr)_minmax(0,1.4fr)_minmax(0,1fr)_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,0.8fr)]`;function Ve(e){let t=(0,Y.c)(13),{label:n,wert:r,zusatz:a,leise:o}=e,s;t[0]===n?s=t[1]:(s=(0,Z.jsx)(`span`,{className:`text-xs text-text-3 lg:hidden`,children:n}),t[0]=n,t[1]=s);let c=o?`text-text-3`:`text-foreground`,l;t[2]===c?l=t[3]:(l=i(`ziffern text-sm`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,Z.jsx)(`span`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;t[7]===a?d=t[8]:(d=a&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:a}),t[7]=a,t[8]=d);let f;return t[9]!==s||t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`span`,{role:`cell`,className:`flex min-w-0 flex-col gap-0.5`,children:[s,u,d]}),t[9]=s,t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function He(e){let t=(0,Y.c)(5),{zeilen:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsxs)(`div`,{role:`row`,className:i(`etikett hidden gap-x-4 pb-2 text-[10.5px] tracking-[0.14em] text-text-3 lg:grid`,Be),children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Absender`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Anfragen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Typische Antwort`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Rechenzeit`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Fehler`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`})]}),t[0]=r):r=t[0];let a;t[1]===n?a=t[2]:(a=n.map(Ue),t[1]=n,t[2]=a);let o;return t[3]===a?o=t[4]:(o=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Nutzung je Absender`,className:`flex flex-col`,children:[r,a]}),t[3]=a,t[4]=o),o}function Ue(e){return(0,Z.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2.5 border-t border-white/[0.06] py-3 lg:items-start`,Be),children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`col-span-2 flex min-w-0 items-center gap-2 text-[15px] font-medium lg:col-span-1`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-2.5 shrink-0 rounded-[2px]`,style:{background:e.farbe}}),(0,Z.jsx)(`span`,{className:`min-w-0 break-words`,children:e.name})]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`col-span-2 flex min-w-0 flex-col gap-1.5 lg:col-span-1`,children:[(0,Z.jsxs)(`span`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`ziffern`,children:$(e.anfragen)}),(0,Z.jsxs)(`span`,{className:`text-text-3`,children:[` · `,De(e.anteil),` aller Anfragen`]})]}),(0,Z.jsx)(`span`,{className:`h-1.5 w-full max-w-56 overflow-hidden rounded-full bg-white/[0.07]`,"aria-hidden":!0,children:(0,Z.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:`${Math.max(1,e.anteil*100)}%`,background:e.farbe}})})]}),(0,Z.jsx)(Ve,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(Ve,{label:`Rechenzeit`,wert:Oe(e.summe,!0),zusatz:e.zeitAnteil===null?void 0:`${De(e.zeitAnteil)} aller Rechenzeit`}),(0,Z.jsx)(Ve,{label:`Fehler`,leise:e.fehler===0,wert:e.fehler===null?`–`:e.fehler===0?`keine`:`${$(e.fehler)} · ${De(e.fehler/e.anfragen)}`,zusatz:e.fehler?Ae(e.fehlerCodes):void 0}),(0,Z.jsx)(Ve,{label:`Zuletzt`,wert:e.zuletzt?w(e.zuletzt):`–`})]},e.name)}function We(e){let t=(0,Y.c)(11),{titel:n,zusatz:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`h3`,{className:`etikett text-[11.5px] tracking-[0.16em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r}),t[2]=r,t[3]=o);let s;t[4]!==a||t[5]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[a,o]}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==i||t[8]!==s||t[9]!==n?(c=(0,Z.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 flaeche-innen rounded-2xl p-4`,children:[s,i]}),t[7]=i,t[8]=s,t[9]=n,t[10]=c):c=t[10],c}function Ge(e){let t=(0,Y.c)(29),{modelle:n,rollen:r}=e;if(n.length===0)return null;let i,a,o,s,c,l;if(t[0]!==n){let e=n.every(Je)?n.reduce(qe,0):null;l=`group flaeche-innen rounded-2xl px-4 open:pb-2`,s=`flex min-h-12 cursor-pointer list-none flex-wrap items-center justify-between gap-x-3 gap-y-1 py-2 [&::-webkit-details-marker]:hidden`,t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,Z.jsx)(F,{className:`size-4 shrink-0 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Wann welches Modell geladen wurde`]}),t[7]=c):c=t[7],i=`ziffern text-sm text-text-2`,a=n.length===1?`1 Modell`:`${n.length} Modelle`,o=e===null?``:` · ${$(e)}× geladen`,t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=c,t[6]=l}else i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6];let u;t[8]!==i||t[9]!==a||t[10]!==o?(u=(0,Z.jsxs)(`span`,{className:i,children:[a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=u):u=t[11];let d;t[12]!==s||t[13]!==c||t[14]!==u?(d=(0,Z.jsxs)(`summary`,{className:s,children:[c,u]}),t[12]=s,t[13]=c,t[14]=u,t[15]=d):d=t[15];let f;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Z.jsx)(`p`,{className:`pb-1 text-sm text-text-2`,children:`Gezählt wird, wie oft sich ein Modell nach dem Laden bereit meldete: nach einem Neustart von llama-swap oder wenn es auf Abruf gebraucht wurde.`}),t[16]=f):f=t[16];let p;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett hidden gap-x-4 py-2 text-[10.5px] tracking-[0.14em] text-text-3 sm:grid sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)]`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Modell`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Geladen`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Zuletzt`}),(0,Z.jsx)(`span`,{role:`columnheader`,children:`Davor`})]}),t[17]=p):p=t[17];let m;if(t[18]!==n||t[19]!==r){let e;t[21]===r?e=t[22]:(e=e=>(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto] gap-x-4 gap-y-1 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1.5fr)_70px_130px_minmax(0,1.5fr)] sm:items-baseline`,children:[(0,Z.jsxs)(`span`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.modell}),r[e.modell]&&(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:r[e.modell]})]}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-sm text-text-2 sm:text-left`,children:e.anzahl===null?`–`:`${$(e.anzahl)}×`}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-2 sm:col-span-1`,children:[(0,Z.jsx)(`span`,{className:`font-sans text-text-3 sm:hidden`,children:`zuletzt `}),w(e.zeiten[0])]}),(0,Z.jsxs)(`span`,{role:`cell`,className:`ziffern col-span-2 text-xs text-text-3 sm:col-span-1`,children:[e.zeiten.length>1&&(0,Z.jsx)(`span`,{className:`font-sans sm:hidden`,children:`davor `}),e.zeiten.length>1?e.zeiten.slice(1,4).map(Ke).join(` · `):(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:`–`})]})]},e.modell),t[21]=r,t[22]=e),m=n.map(e),t[18]=n,t[19]=r,t[20]=m}else m=t[20];let h;t[23]===m?h=t[24]:(h=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Ladevorgänge je Modell`,className:`flex flex-col`,children:[p,m]}),t[23]=m,t[24]=h);let g;return t[25]!==h||t[26]!==l||t[27]!==d?(g=(0,Z.jsxs)(`details`,{className:l,children:[d,f,h]}),t[25]=h,t[26]=l,t[27]=d,t[28]=g):g=t[28],g}function Ke(e){return w(e)}function qe(e,t){return e+(t.anzahl??0)}function Je(e){return e.anzahl!==null}function Ye(e){let t=(0,Y.c)(23),{nutzung:n,laedt:r,fehler:i,rollen:a}=e,o;t[0]===a?o=t[1]:(o=a===void 0?{}:a,t[0]=a,t[1]=o);let s=o;if(!n){let e;return t[2]!==i||t[3]!==r?(e=(0,Z.jsx)(U,{titel:`Wer nutzt die Modelle`,children:r?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[2]=i,t[3]=r,t[4]=e):e=t[4],e}let c,l,u,d,f;if(t[5]!==n){l=Le(n);let e=l.gesamt,r=e.fehler!==null&&e.anfragen?e.fehler/e.anfragen:null,i;t[11]===r?i=t[12]:(i=je(r),t[11]=r,t[12]=i);let a=i;c=U,u=`Wer nutzt die Modelle`,d=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[l.zeitraum,l.stand?` · Stand ${l.stand}`:``]}),f=e.anfragen===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,Z.jsx)(ze,{label:`Anfragen`,wert:$(e.anfragen),zusatz:l.schnitt===null?void 0:`im Schnitt ${$(Math.round(l.schnitt))} am Tag`}),(0,Z.jsx)(ze,{label:`Heute`,wert:$(l.heute),zusatz:`${l.stand?`bis ${l.stand} · `:``}gestern ${$(l.gestern)}`}),(0,Z.jsx)(ze,{label:`Typische Antwort`,wert:Oe(e.typisch),zusatz:e.p90===null?void 0:`9 von 10 bis ${Oe(e.p90)}`}),(0,Z.jsx)(ze,{label:`Fehler`,wert:e.fehler===null?`–`:$(e.fehler),art:a.art,zusatz:e.fehler===null?void 0:e.fehler===0?`alle beantwortet`:`${De(r??0)} der Anfragen${a.wort?` · ${a.wort}`:``}`})]}),(0,Z.jsx)(He,{zeilen:l.absender}),(0,Z.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,Z.jsx)(We,{titel:`Anfragen je Tag`,zusatz:`letzte 7 Tage, heute bis jetzt`,children:(0,Z.jsx)(de,{saeulen:l.tage,reihen:l.reihen,spalte:`Tag`,titel:`Anfragen je Tag der letzten 7 Tage, gestapelt nach Absender`})}),(0,Z.jsx)(We,{titel:`Anfragen je Stunde`,zusatz:`letzte 24 Stunden`,children:(0,Z.jsx)(de,{saeulen:l.stunden,reihen:l.reihen,spalte:`Stunde`,summen:`hoechste`,titel:`Anfragen je Stunde der letzten 24 Stunden, gestapelt nach Absender`})})]})]}),t[5]=n,t[6]=c,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else c=t[6],l=t[7],u=t[8],d=t[9],f=t[10];let p;t[13]!==l.modelle||t[14]!==s?(p=(0,Z.jsx)(Ge,{modelle:l.modelle,rollen:s}),t[13]=l.modelle,t[14]=s,t[15]=p):p=t[15];let m;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat-Anfragen an llama-swap, gelesen aus seinem Protokoll und alle 10 Minuten neu gerechnet. NerdQuiz fragt direkt dort an, Lucy und OpenChamber über MC2. Antwortzeit: bis die Antwort ganz da war. Rechenzeit: alle Antwortzeiten zusammen, gleichzeitige Anfragen zählen einzeln.`}),t[16]=m):m=t[16];let h;return t[17]!==c||t[18]!==u||t[19]!==d||t[20]!==f||t[21]!==p?(h=(0,Z.jsxs)(c,{titel:u,rechts:d,children:[f,p,m]}),t[17]=c,t[18]=u,t[19]=d,t[20]=f,t[21]=p,t[22]=h):h=t[22],h}var Xe={coder:`Coder`};function Ze(e){let t=(0,Y.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,s=o(),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(``),[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)(``),[g,v]=(0,X.useState)(null),y=(0,X.useRef)(!1),x,S;t[0]===u?(x=t[1],S=t[2]):(x=[`hf-suche`,u],S=()=>_(`/api/hf/search?q=${encodeURIComponent(u)}`),t[0]=u,t[1]=x,t[2]=S);let C=u.length>1,w;t[3]!==x||t[4]!==S||t[5]!==C?(w={queryKey:x,queryFn:S,enabled:C},t[3]=x,t[4]=S,t[5]=C,t[6]=w):w=t[6];let T=a(w),E,D;t[7]===f?(E=t[8],D=t[9]):(E=[`hf-quants`,f],D=()=>_(`/api/hf/quants?repo=${encodeURIComponent(f??``)}`),t[7]=f,t[8]=E,t[9]=D);let O=!!f,k;t[10]!==E||t[11]!==D||t[12]!==O?(k={queryKey:E,queryFn:D,enabled:O},t[10]=E,t[11]=D,t[12]=O,t[13]=k):k=t[13];let j=a(k),M,N,P,F,L,R,z,B,V,U,W,re,q;if(t[14]!==g||t[15]!==c||t[16]!==s||t[17]!==n||t[18]!==r||t[19]!==j.data||t[20]!==j.error||t[21]!==j.isError||t[22]!==j.isFetching||t[23]!==f||t[24]!==m||t[25]!==i||t[26]!==T){let e=(j.data?.quants??[]).map($e),a=m?Xe[m]??m:null,o;t[40]!==f||t[41]!==m||t[42]!==i||t[43]!==a?(o=a&&f?ae(f,a,i[m]):null,t[40]=f,t[41]=m,t[42]=i,t[43]=a,t[44]=o):o=t[44],P=o;let u;t[45]!==g||t[46]!==s||t[47]!==r||t[48]!==f||t[49]!==m?(u=function(){f&&g&&!y.current&&(y.current=!0,s.mutate({repo:f,quant:g.quant,rolle:m||null},{onSuccess:e=>{v(null),e.ok!==!1&&r()},onError:()=>v(null),onSettled:()=>{y.current=!1}}))},t[45]=g,t[46]=s,t[47]=r,t[48]=f,t[49]=m,t[50]=u):u=t[50],F=u,N=ne,W=n,t[51]===r?re=t[52]:(re=e=>!e&&r(),t[51]=r,t[52]=re),M=te,z=`right`,B=`gap-3 overflow-y-auto border-white/10 bg-[#0e121a] data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,Z.jsxs)(ee,{children:[(0,Z.jsx)(G,{className:`text-[19px] font-semibold`,children:`Modelle selbst suchen`}),(0,Z.jsx)(K,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=V):V=t[53];let _;t[54]===c?_=t[55]:(_=e=>{e.preventDefault(),p(null),d(c.trim())},t[54]=c,t[55]=_);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=x):x=t[56];let S;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>l(e.target.value),t[57]=S):S=t[57];let C;t[58]===c?C=t[59]:(C=(0,Z.jsx)(`input`,{id:`hf-suche`,value:c,onChange:S,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-[15px] outline-none focus:border-cyan/60 focus:bg-white/[0.06]`}),t[58]=c,t[59]=C);let w;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Z.jsx)(I,{type:`submit`,children:`Suchen`}),t[60]=w):w=t[60],t[61]!==_||t[62]!==C?(U=(0,Z.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:_,children:[x,C,w]}),t[61]=_,t[62]=C,t[63]=U):U=t[63],q=`flex flex-col px-4 pb-4`,t[64]!==f||t[65]!==T?(L=!f&&(0,Z.jsxs)(Z.Fragment,{children:[T.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!T.isFetching&&T.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,T.error.message]}),!T.isFetching&&T.data?.results.length===0&&(0,Z.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),T.data?.results.map(e=>(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>p(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-white/[0.06] py-2 text-left hover:text-cyan`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,Z.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[A(e.downloads),` ↓`]})]},e.repo))]}),t[64]=f,t[65]=T,t[66]=L):L=t[66],R=f&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:f}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>p(null),children:`Zurück`})]}),(0,Z.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,Z.jsxs)(`select`,{value:m,onChange:e=>h(e.target.value),className:`h-11 min-w-0 rounded-xl border border-white/12 bg-white/[0.04] px-3 text-foreground`,children:[(0,Z.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(Xe).map(Qe)]})]}),P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:P}),j.isFetching&&(0,Z.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!j.isFetching&&j.isError&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,j.error.message]}),!j.isFetching&&j.data&&e.length===0&&(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-white/[0.06] py-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,Z.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:b(n,1)}):null,(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:s.isPending,onClick:()=>v({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=g,t[15]=c,t[16]=s,t[17]=n,t[18]=r,t[19]=j.data,t[20]=j.error,t[21]=j.isError,t[22]=j.isFetching,t[23]=f,t[24]=m,t[25]=i,t[26]=T,t[27]=M,t[28]=N,t[29]=P,t[30]=F,t[31]=L,t[32]=R,t[33]=z,t[34]=B,t[35]=V,t[36]=U,t[37]=W,t[38]=re,t[39]=q}else M=t[27],N=t[28],P=t[29],F=t[30],L=t[31],R=t[32],z=t[33],B=t[34],V=t[35],U=t[36],W=t[37],re=t[38],q=t[39];let J;t[67]!==L||t[68]!==R||t[69]!==q?(J=(0,Z.jsxs)(`div`,{className:q,children:[L,R]}),t[67]=L,t[68]=R,t[69]=q,t[70]=J):J=t[70];let oe=g!==null,Q;t[71]!==g||t[72]!==f?(Q=g&&f?`${f} (${g.quant}${g.bytes?`, ${b(g.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(g.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=g,t[72]=f,t[73]=Q):Q=t[73];let se=s.isPending?`Wird gestartet …`:`Installieren`,ce=s.isPending,le;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(le=()=>v(null),t[74]=le):le=t[74];let ue;t[75]===P?ue=t[76]:(ue=P&&(0,Z.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:P}),t[75]=P,t[76]=ue);let de=!!m,fe;t[77]===de?fe=t[78]:(fe=ie(de),t[77]=de,t[78]=fe);let pe;t[79]===fe?pe=t[80]:(pe=(0,Z.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:fe}),t[79]=fe,t[80]=pe);let me;t[81]!==s.isPending||t[82]!==F||t[83]!==oe||t[84]!==Q||t[85]!==se||t[86]!==ue||t[87]!==pe?(me=(0,Z.jsxs)(H,{offen:oe,titel:`Modell installieren?`,text:Q,knopf:se,gesperrt:ce,onNein:le,onJa:F,children:[ue,pe]}),t[81]=s.isPending,t[82]=F,t[83]=oe,t[84]=Q,t[85]=se,t[86]=ue,t[87]=pe,t[88]=me):me=t[88];let he;t[89]!==M||t[90]!==z||t[91]!==B||t[92]!==V||t[93]!==U||t[94]!==J||t[95]!==me?(he=(0,Z.jsxs)(M,{side:z,className:B,children:[V,U,J,me]}),t[89]=M,t[90]=z,t[91]=B,t[92]=V,t[93]=U,t[94]=J,t[95]=me,t[96]=he):he=t[96];let ge;return t[97]!==N||t[98]!==W||t[99]!==re||t[100]!==he?(ge=(0,Z.jsx)(N,{open:W,onOpenChange:re,children:he}),t[97]=N,t[98]=W,t[99]=re,t[100]=he,t[101]=ge):ge=t[101],ge}function Qe(e){let[t,n]=e;return(0,Z.jsx)(`option`,{value:t,children:n},t)}function $e(e){return typeof e==`string`?{quant:e}:e}var et=115;function tt(e){let t=(0,Y.c)(55),{modelle:n,laufend:r}=e,i=v(),a=O(),o,s,c,l,u,d,f,p,m,h;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=C(i?.ram_total??a.data?.box.ram_total)??122.7,g=C(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(nt,0);s=Math.max(0,g-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=U,p=`Speicher`,m=(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(g),` von `,Math.round(e),` GB belegt · Grenze ~`,et,` GB`]});let b=`Speicher: ${Math.round(g)} von ${Math.round(e)} GB belegt`,x=y(g),S;t[17]===x?S=t[18]:(S={width:x},t[17]=x,t[18]=S);let w=`${g?v/g*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,Z.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${g?s/g*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,Z.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==S||t[24]!==T||t[25]!==D?(O=(0,Z.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:S,children:[T,D]}),t[23]=S,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=y(et),A;t[27]===k?A=t[28]:(A=(0,Z.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==b||t[30]!==O||t[31]!==A?(h=(0,Z.jsxs)(`div`,{className:`relative h-8 overflow-hidden rounded-xl bg-white/[0.06]`,role:`img`,"aria-label":b,children:[O,A]}),t[29]=b,t[30]=O,t[31]=A,t[32]=h):h=t[32],f=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,d=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=d,t[11]=f,t[12]=p,t[13]=m,t[14]=h}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],h=t[14];let g;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==d?(g=(0,Z.jsxs)(`span`,{className:c,children:[l,u,d,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=d,t[38]=g):g=t[38];let _;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,Z.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=_):_=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[_,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let S;t[45]!==b||t[46]!==f||t[47]!==g?(S=(0,Z.jsxs)(`div`,{className:f,children:[g,b,x]}),t[45]=b,t[46]=f,t[47]=g,t[48]=S):S=t[48];let w;return t[49]!==o||t[50]!==S||t[51]!==p||t[52]!==m||t[53]!==h?(w=(0,Z.jsxs)(o,{titel:p,rechts:m,children:[h,S]}),t[49]=o,t[50]=S,t[51]=p,t[52]=m,t[53]=h,t[54]=w):w=t[54],w}function nt(e,t){return e+(C(t.size_bytes)??0)}function rt(e){let t=(0,Y.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,Z.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,Z.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function it(e){let t=(0,Y.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=h();if(!r){let e;t[0]===n?e=t[1]:(e=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(B,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-white/15 p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,Z.jsx)(`span`,{className:`etikett text-[11px] tracking-[0.14em] text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,Z.jsx)(B,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let g;t[17]!==d||t[18]!==m?(g=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=g):g=t[19];let _;t[20]===r.name?_=t[21]:(_=(0,Z.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=_);let v;t[22]===r.size_bytes?v=t[23]:(v=b(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,Z.jsx)(rt,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let x=l?`${l}k`:`–`,S;t[26]===x?S=t[27]:(S=(0,Z.jsx)(rt,{name:`Kontext`,wert:x}),t[26]=x,t[27]=S);let C=u?`ja`:`nein`,w;t[28]===C?w=t[29]:(w=(0,Z.jsx)(rt,{name:`Bilder`,wert:C}),t[28]=C,t[29]=w);let T;t[30]!==S||t[31]!==w||t[32]!==y?(T=(0,Z.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,S,w]}),t[30]=S,t[31]=w,t[32]=y,t[33]=T):T=t[33];let E=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==E||t[36]!==D?(O=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,E,D]}),t[34]=o,t[35]=E,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,Z.jsx)(I,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==T||t[43]!==O||t[44]!==k||t[45]!==g||t[46]!==_?(A=(0,Z.jsxs)(`article`,{className:`flex flex-col gap-3.5 flaeche rounded-2xl p-5`,children:[g,_,T,O,k]}),t[42]=T,t[43]=O,t[44]=k,t[45]=g,t[46]=_,t[47]=A):A=t[47],A}var at={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},ot={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function st(e){let t=(0,Y.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsxs)(`div`,{role:`row`,className:`etikett grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-[10.5px] tracking-[0.14em] text-text-3`,children:[(0,Z.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,Z.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,Z.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`flaeche-innen rounded-xl px-3 py-2 text-sm`,children:[a,e.map(ct)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ct(e){let[t,n]=e;return(0,Z.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-white/[0.06] py-1`,children:[(0,Z.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${ot[n.urteil??``]??`text-text-2`}`,children:g(n.kandidat,n.einheit)}),(0,Z.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:g(n.baseline,n.einheit)})]},t)}function lt(e){let t=(0,Y.c)(80),{k:n,test:r,heute:i}=e,a=y(),o=d(),[s,c]=(0,X.useState)(null),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=l):l=t[0];let u=l.includes(n.status),f=n.rolle===`hirn`,p;t[1]===n.name?p=t[2]:(p=(0,Z.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=p);let h=f?`fürs Hirn`:`fürs Coden`,g;t[3]===h?g=t[4]:(g=(0,Z.jsx)(B,{art:`cyan`,children:h}),t[3]=h,t[4]=g);let _;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(_=n.groesse_gb!=null&&(0,Z.jsx)(B,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=_):_=t[8];let v=at[n.status]??`grau`,b=m[n.status]??n.status,x;t[9]!==v||t[10]!==b?(x=(0,Z.jsx)(B,{art:v,children:b}),t[9]=v,t[10]=b,t[11]=x):x=t[11];let S;t[12]!==p||t[13]!==g||t[14]!==_||t[15]!==x?(S=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p,g,_,x]}),t[12]=p,t[13]=g,t[14]=_,t[15]=x,t[16]=S):S=t[16];let C;t[17]===n.groesse_gb?C=t[18]:(C=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=C);let w;t[19]!==n.begruendung||t[20]!==C?(w=(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[C,n.begruendung]}),t[19]=n.begruendung,t[20]=C,t[21]=w):w=t[21];let T;t[22]!==n.status||t[23]!==r?(T=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,Z.jsx)(st,{test:r}),t[22]=n.status,t[23]=r,t[24]=T):T=t[24];let E;t[25]!==n.begruendung||t[26]!==n.testbar_grund?(E=n.testbar_grund&&!n.begruendung.startsWith(`Läuft gerade`)&&(0,Z.jsx)(`p`,{className:`text-xs text-text-3`,children:n.testbar_grund}),t[25]=n.begruendung,t[26]=n.testbar_grund,t[27]=E):E=t[27];let D;t[28]!==a.isPending||t[29]!==n.status||t[30]!==n.testbar_jetzt||t[31]!==u||t[32]!==o.isPending?(D=u&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.testbar_jetzt&&(0,Z.jsx)(I,{variant:`info`,size:`sm`,disabled:o.isPending,onClick:()=>c(`testen`),children:`Jetzt testen`}),n.status===`bestanden`&&(0,Z.jsx)(I,{size:`sm`,disabled:a.isPending,onClick:()=>c(`uebernehmen`),children:`Übernehmen`}),(0,Z.jsx)(I,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>c(`verwerfen`),children:`Verwerfen`})]}),t[28]=a.isPending,t[29]=n.status,t[30]=n.testbar_jetzt,t[31]=u,t[32]=o.isPending,t[33]=D):D=t[33];let O=s===`uebernehmen`,k=`${n.name} übernehmen?`,A=f?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,j;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>c(null),t[34]=j):j=t[34];let M;t[35]!==a||t[36]!==s||t[37]!==n.id||t[38]!==n.name?(M=()=>{s===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),c(null))},t[35]=a,t[36]=s,t[37]=n.id,t[38]=n.name,t[39]=M):M=t[39];let N;t[40]!==a.isPending||t[41]!==O||t[42]!==k||t[43]!==A||t[44]!==M?(N=(0,Z.jsx)(H,{offen:O,titel:k,text:A,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:j,onJa:M}),t[40]=a.isPending,t[41]=O,t[42]=k,t[43]=A,t[44]=M,t[45]=N):N=t[45];let P=s===`testen`,F=`${n.name} jetzt testen?`,L;t[46]===n.groesse_gb?L=t[47]:(L=n.groesse_gb==null?``:` (${n.groesse_gb.toLocaleString(`de-DE`)} GB)`,t[46]=n.groesse_gb,t[47]=L);let R=`Das Radar lädt ${n.name}${L} herunter, falls nötig, misst das heutige Modell der Rolle und dann den Kandidaten. Das dauert je nach Download eine halbe bis zwei Stunden. Solange antworten Lucy und NerdQuiz etwas langsamer; ein geladener Coder wird dafür entladen, und wird er währenddessen gebraucht, bricht der Test ab. Das Ergebnis kommt als Meldung; fällt der Kandidat durch, werden seine Dateien gelöscht.`,z;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(z=()=>c(null),t[48]=z):z=t[48];let V;t[49]!==s||t[50]!==n.id||t[51]!==n.name||t[52]!==o?(V=()=>{s===`testen`&&(o.mutate({id:n.id,name:n.name}),c(null))},t[49]=s,t[50]=n.id,t[51]=n.name,t[52]=o,t[53]=V):V=t[53];let U;t[54]!==P||t[55]!==F||t[56]!==R||t[57]!==V||t[58]!==o.isPending?(U=(0,Z.jsx)(H,{offen:P,titel:F,text:R,knopf:`Jetzt testen`,gesperrt:o.isPending,onNein:z,onJa:V}),t[54]=P,t[55]=F,t[56]=R,t[57]=V,t[58]=o.isPending,t[59]=U):U=t[59];let W=s===`verwerfen`,G=`${n.name} verwerfen?`,ee;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>c(null),t[60]=ee):ee=t[60];let te;t[61]!==a||t[62]!==s||t[63]!==n.id||t[64]!==n.name?(te=()=>{s===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),c(null))},t[61]=a,t[62]=s,t[63]=n.id,t[64]=n.name,t[65]=te):te=t[65];let K;t[66]!==a.isPending||t[67]!==W||t[68]!==G||t[69]!==te?(K=(0,Z.jsx)(H,{offen:W,gefahr:!0,titel:G,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:ee,onJa:te}),t[66]=a.isPending,t[67]=W,t[68]=G,t[69]=te,t[70]=K):K=t[70];let ne;return t[71]!==w||t[72]!==T||t[73]!==E||t[74]!==D||t[75]!==N||t[76]!==U||t[77]!==K||t[78]!==S?(ne=(0,Z.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-white/[0.06] py-3.5`,children:[S,w,T,E,D,N,U,K]}),t[71]=w,t[72]=T,t[73]=E,t[74]=D,t[75]=N,t[76]=U,t[77]=K,t[78]=S,t[79]=ne):ne=t[79],ne}function ut(e){let t=(0,Y.c)(30),{hirn:n,coder:r}=e,i=u(),a=l(),o=E(),s=k(),c=o.data?.jobs,d=(c??[]).filter(ft).at(-1),m=a.data?.job_id,h;t[0]!==m||t[1]!==c?(h=!!m&&!!c&&!c.some(e=>e.id===m),t[0]=m,t[1]=c,t[2]=h):h=t[2];let g=h,_=a.isPending||g||d!==void 0&&p(d),v=(0,X.useRef)(_);if((0,X.useEffect)(()=>{v.current&&!_&&s.invalidateQueries({queryKey:[`radar`]}),v.current=_},[_,s]),i.isError&&!i.data){let e=i.error instanceof f&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,Z.jsx)(U,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let y=i.data,b=U,x;t[6]===a?x=t[7]:(x=()=>a.mutate(void 0),t[6]=a,t[7]=x);let S=_?`Sucht …`:`Jetzt suchen`,C;t[8]!==_||t[9]!==x||t[10]!==S?(C=(0,Z.jsx)(I,{variant:`info`,size:`sm`,onClick:x,disabled:_,children:S}),t[8]=_,t[9]=x,t[10]=S,t[11]=C):C=t[11];let T;t[12]===y?T=t[13]:(T=y?.naechster_test?` Nächster Test: ${w(y.naechster_test)}.`:``,t[12]=y,t[13]=T);let D=_?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,O;t[14]!==T||t[15]!==D?(O=(0,Z.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche. Tagsüber geht es mit „Jetzt testen“, wenn der Kandidat samt Coder in den Speicher passt.`,T,D]}),t[14]=T,t[15]=D,t[16]=O):O=t[16];let A=!_&&d?.state===`failed`&&(0,Z.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,re(d)??`ohne Meldung`]}),j;t[17]!==r||t[18]!==y||t[19]!==n?(j=y?y.kandidaten.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:y.kandidaten.map(e=>(0,Z.jsx)(lt,{k:e,test:y.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=y,t[19]=n,t[20]=j):j=t[20];let M;t[21]===y?M=t[22]:(M=y&&y.tests.length>0&&(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`h3`,{className:`etikett text-[10.5px] tracking-[0.12em] text-text-3`,children:`Letzte Tests`}),y.tests.slice(0,3).map(dt)]}),t[21]=y,t[22]=M);let N;return t[23]!==b||t[24]!==O||t[25]!==A||t[26]!==j||t[27]!==M||t[28]!==C?(N=(0,Z.jsxs)(b,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:C,children:[O,A,j,M]}),t[23]=b,t[24]=O,t[25]=A,t[26]=j,t[27]=M,t[28]=C,t[29]=N):N=t[29],N}function dt(e){return(0,Z.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-text-3`,children:w(e.datum)}),` · `,e.zusammenfassung]},e.id)}function ft(e){return e.group===`radar`}var pt=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function mt(e){let t=(0,Y.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(F,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,Z.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let s;t[3]===r?s=t[4]:(s=(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=s);let c;t[5]!==o||t[6]!==s?(c=(0,Z.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7];let l;t[8]===i?l=t[9]:(l=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=l);let u;return t[10]!==c||t[11]!==l?(u=(0,Z.jsxs)(`details`,{className:`group flaeche-innen rounded-2xl px-4 open:pb-2`,children:[c,l]}),t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function ht(){let e=(0,Y.c)(37),t=S(),n=D(),[r,i]=(0,X.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(gt,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,Z.jsx)(vt,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,Z.jsxs)(U,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=U,o=`Aufräumen`,s=r.length>0?(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Z.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,Z.jsx)(mt,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,Z.jsx)(B,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let m=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,h;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>i(null),e[19]=h):h=e[19];let g;e[20]!==r||e[21]!==n?(g=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=g):g=e[22];let _;e[23]!==n.isPending||e[24]!==g||e[25]!==d||e[26]!==f||e[27]!==m?(_=(0,Z.jsx)(H,{offen:d,gefahr:!0,titel:f,text:m,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:h,onJa:g}),e[23]=n.isPending,e[24]=g,e[25]=d,e[26]=f,e[27]=m,e[28]=_):_=e[28];let v;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(vt,{}),e[29]=v):v=e[29];let y;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==_||e[34]!==c||e[35]!==l?(y=(0,Z.jsxs)(a,{titel:o,rechts:s,children:[c,l,_,v]}),e[30]=a,e[31]=o,e[32]=s,e[33]=_,e[34]=c,e[35]=l,e[36]=y):y=e[36],y}function gt(e,t){return e+t.groesse_gb}function _t(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function vt(){let e=(0,Y.c)(23),t=x(),n=T(),[r,i]=(0,X.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(yt,0);a=`flex flex-col gap-2`,o=t.isPending?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,Z.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,Z.jsxs)(mt,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${_t(s)}`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,Z.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,Z.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-white/[0.06] py-3`,children:[(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,Z.jsx)(B,{children:`Altrest`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,Z.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,Z.jsx)(I,{variant:`ghost`,size:`sm`,className:pt,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let u=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,d;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>i(null),e[9]=d):d=e[9];let f;e[10]!==r||e[11]!==n?(f=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=f):f=e[12];let p;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==u||e[17]!==f?(p=(0,Z.jsx)(H,{offen:s,gefahr:!0,titel:c,text:u,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:d,onJa:f}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=u,e[17]=f,e[18]=p):p=e[18];let m;return e[19]!==a||e[20]!==o||e[21]!==p?(m=(0,Z.jsxs)(`div`,{className:a,children:[o,p]}),e[19]=a,e[20]=o,e[21]=p,e[22]=m):m=e[22],m}function yt(e,t){return e+t.groesse_bytes}function bt(){let e=(0,Y.c)(69),t=s(),n=j(),r=u(),i=E(),[a,o]=(0,X.useState)(!1),c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={select:wt},e[0]=c):c=e[0];let l=oe(c),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,f,p;if(e[1]!==d||e[2]!==l?(f=()=>{d&&l===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},p=[d,l],e[1]=d,e[2]=l,e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,X.useEffect)(f,p),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Z.jsx)(R,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,Z.jsx)(R,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,g,_,v,y,x,S,C,T,D,O,k,A,M;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(Ct);_=m.find(St);let r;e[26]===m?r=e[27]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[26]=m,e[27]=r);let i=r,a=i(t,`vision`);v=i(_,`coder-bild`);let s=m.filter(e=>![t,_,a,v].includes(e)),c;e[28]===n.data?.zuletzt_geladen?c=e[29]:(c=n.data?.zuletzt_geladen??{},e[28]=n.data?.zuletzt_geladen,e[29]=c);let l=c,u={};for(let[e,n]of[[t,`Hirn`],[_,`Coder`],[a,`Bild-Zwilling des Hirns`],[v,`Bild-Zwilling des Coders`]])e&&(u[e.name]=n);e[30]!==h||e[31]!==m?(A=(0,Z.jsx)(tt,{modelle:m,laufend:h}),e[30]=h,e[31]=m,e[32]=A):A=e[32],e[33]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Z.jsx)(q,{alsPanel:!0}),e[33]=M):M=e[33];let d;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Z.jsx)(it,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[34]=d):d=e[34],y=(0,Z.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,Z.jsx)(it,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,Z.jsx)(it,{titel:`Coder`,modell:_,zwilling:v,laeuft:!!_&&h.includes(_.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]}),x=(0,Z.jsx)(Ye,{nutzung:n.data,laedt:n.isPending,fehler:n.error?.message??null,rollen:u});let f=t?.name,p=_?.name;e[35]!==f||e[36]!==p?(S=(0,Z.jsx)(ut,{hirn:f,coder:p}),e[35]=f,e[36]=p,e[37]=S):S=e[37],g=U,D=`Weitere Einträge`,e[38]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,Z.jsxs)(I,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,Z.jsx)(V,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[38]=O):O=e[38],k=s.length===0&&(0,Z.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),C=`m-0 flex list-none flex-col p-0`;let E;e[39]!==h||e[40]!==l?(E=e=>(0,Z.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-white/[0.06] py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,Z.jsxs)(`span`,{className:`min-w-0`,children:[(0,Z.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,Z.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:b(e.size_bytes)}),(0,Z.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:l[e.name]?`zuletzt ${w(l[e.name])}`:`länger nicht geladen`})]},e.name),e[39]=h,e[40]=l,e[41]=E):E=e[41],T=s.map(E),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=g,e[14]=_,e[15]=v,e[16]=y,e[17]=x,e[18]=S,e[19]=C,e[20]=T,e[21]=D,e[22]=O,e[23]=k,e[24]=A,e[25]=M}else g=e[13],_=e[14],v=e[15],y=e[16],x=e[17],S=e[18],C=e[19],T=e[20],D=e[21],O=e[22],k=e[23],A=e[24],M=e[25];let N;e[42]!==C||e[43]!==T?(N=(0,Z.jsx)(`ul`,{className:C,children:T}),e[42]=C,e[43]=T,e[44]=N):N=e[44];let P;e[45]!==g||e[46]!==N||e[47]!==D||e[48]!==O||e[49]!==k?(P=(0,Z.jsxs)(g,{titel:D,rechts:O,children:[k,N]}),e[45]=g,e[46]=N,e[47]=D,e[48]=O,e[49]=k,e[50]=P):P=e[50];let F;e[51]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,Z.jsx)(ht,{}),e[51]=F):F=e[51];let L;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(L=()=>o(!1),e[52]=L):L=e[52];let z;e[53]!==_||e[54]!==v?(z=_?{name:_.name,zwilling:!!v,weitere:_.aliases.filter(xt)}:void 0,e[53]=_,e[54]=v,e[55]=z):z=e[55];let B;e[56]===z?B=e[57]:(B={coder:z},e[56]=z,e[57]=B);let H;e[58]!==a||e[59]!==B?(H=(0,Z.jsx)(Ze,{offen:a,onSchliessen:L,rollenJetzt:B}),e[58]=a,e[59]=B,e[60]=H):H=e[60];let W;return e[61]!==y||e[62]!==x||e[63]!==S||e[64]!==P||e[65]!==H||e[66]!==A||e[67]!==M?(W=(0,Z.jsxs)(Z.Fragment,{children:[A,M,y,x,S,P,F,H]}),e[61]=y,e[62]=x,e[63]=S,e[64]=P,e[65]=H,e[66]=A,e[67]=M,e[68]=W):W=e[68],W}function xt(e){return e.toLowerCase()!==`coder`}function St(e){return c(e)===`coder`}function Ct(e){return c(e)===`hirn`}function wt(e){return e.hash}export{lt as Kandidat,bt as ModelleSeite}; |