daimon 0.7.0 → 0.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.
- package/CHANGELOG.md +71 -0
- package/dist/cli.js +178 -74
- package/dist/dashboard/browser/{chunk-YNCTXEXX.js → chunk-2BXIFQGQ.js} +1 -1
- package/dist/dashboard/browser/{chunk-6BDWIJ3G.js → chunk-3WKRVGPT.js} +1 -1
- package/dist/dashboard/browser/chunk-44JIQO3X.js +1 -0
- package/dist/dashboard/browser/chunk-4BAKWDAV.js +1 -0
- package/dist/dashboard/browser/chunk-4OCNYL7T.js +1 -0
- package/dist/dashboard/browser/chunk-6WZJCF24.js +1 -0
- package/dist/dashboard/browser/chunk-7C772RJ3.js +3 -0
- package/dist/dashboard/browser/{chunk-25VLDASM.js → chunk-7NPLP3QD.js} +1 -1
- package/dist/dashboard/browser/chunk-A4BNXJUT.js +1 -0
- package/dist/dashboard/browser/{chunk-YA4AZONZ.js → chunk-CM4RQF3A.js} +1 -1
- package/dist/dashboard/browser/chunk-CY5YRTQK.js +1 -0
- package/dist/dashboard/browser/{chunk-5PAHWCG5.js → chunk-EIWOTZT3.js} +1 -1
- package/dist/dashboard/browser/{chunk-ZEO5YLWG.js → chunk-GYWEXV2L.js} +1 -1
- package/dist/dashboard/browser/chunk-H2N3RBHF.js +1 -0
- package/dist/dashboard/browser/{chunk-RIDV4B55.js → chunk-H3L4MTG4.js} +1 -1
- package/dist/dashboard/browser/{chunk-ZVUH3ISD.js → chunk-I65I7J5Q.js} +1 -1
- package/dist/dashboard/browser/chunk-K7S4ITPJ.js +2 -0
- package/dist/dashboard/browser/chunk-KL6X73FV.js +1 -0
- package/dist/dashboard/browser/{chunk-Q3N4MMWW.js → chunk-LBL7Z5BE.js} +4 -4
- package/dist/dashboard/browser/chunk-LHAMBNO6.js +1 -0
- package/dist/dashboard/browser/chunk-NX6DTO32.js +1 -0
- package/dist/dashboard/browser/chunk-P5IE6DI6.js +2 -0
- package/dist/dashboard/browser/chunk-PMAG4W5W.js +1 -0
- package/dist/dashboard/browser/{chunk-SR5JAOLW.js → chunk-Q772THBA.js} +1 -1
- package/dist/dashboard/browser/{chunk-OUXULJ3Z.js → chunk-QSBOKS53.js} +1 -1
- package/dist/dashboard/browser/{chunk-HYGMRGYR.js → chunk-V2KNRAE4.js} +1 -1
- package/dist/dashboard/browser/{chunk-GDJOSLWM.js → chunk-VM2FOT77.js} +1 -1
- package/dist/dashboard/browser/index.html +1 -1
- package/dist/dashboard/browser/main-O76X7RMS.js +1 -0
- package/dist/main.js +58 -48
- package/dist/mcp.js +3 -3
- package/package.json +2 -2
- package/src/templates/claude/skill.md.tmpl +4 -1
- package/src/templates/plugins/example-doctor.mjs +45 -0
- package/dist/dashboard/browser/chunk-6C6GHU3A.js +0 -1
- package/dist/dashboard/browser/chunk-BDYOKQF3.js +0 -1
- package/dist/dashboard/browser/chunk-HYIZMKSF.js +0 -1
- package/dist/dashboard/browser/chunk-IQZZO5IM.js +0 -3
- package/dist/dashboard/browser/chunk-J5UK77OJ.js +0 -1
- package/dist/dashboard/browser/chunk-JI63U3KC.js +0 -2
- package/dist/dashboard/browser/chunk-L2PHC6DL.js +0 -1
- package/dist/dashboard/browser/chunk-MHYQENOC.js +0 -1
- package/dist/dashboard/browser/chunk-UU5K6ZPO.js +0 -1
- package/dist/dashboard/browser/chunk-XXIJQBCQ.js +0 -2
- package/dist/dashboard/browser/chunk-ZDNBWNU5.js +0 -1
- package/dist/dashboard/browser/main-IDF27PFI.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as U}from"./chunk-WAN7TQQW.js";import{a as W,b as j}from"./chunk-CILFSVSP.js";import{a as pt}from"./chunk-7NPLP3QD.js";import"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{b as q,c as dt,d as mt,e as B}from"./chunk-Q772THBA.js";import{a as L,b as F}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{b as st,c as lt}from"./chunk-EIWOTZT3.js";import{i as ct,j as K}from"./chunk-LBL7Z5BE.js";import"./chunk-Y6B6X4Y6.js";import{$b as it,Db as V,Eb as _,Fb as u,Gb as et,Hb as D,Ib as h,Jb as M,Kb as x,Lb as o,Mb as r,Nb as C,Sb as v,Ub as g,Wa as N,Wb as p,Ya as tt,_a as s,_b as nt,a as R,ac as ot,b as $,db as P,ea as O,fc as z,gc as k,ic as c,ja as d,jc as f,ka as m,kc as E,lc as A,pa as Z,pb as T,sc as rt,ta as w,xc as I,yc as at}from"./chunk-K43KW4K2.js";var G=(n,e)=>e.name;function ft(n,e){if(n&1&&C(0,"span",5),n&2){let t=e.$implicit;V("data-k",t)}}function xt(n,e){if(n&1&&(o(0,"span",8)(1,"span",22),c(2,"error"),r(),c(3),r()),n&2){let t=p().$implicit;x("matTooltip",t.errorCount+" errors"),s(3),E("",t.errorCount," ")}}function Ct(n,e){if(n&1&&(o(0,"span",11)(1,"span",22),c(2,"lan"),r(),o(3,"dm-mono"),c(4),r()()),n&2){let t=p().$implicit;s(4),f(t.port)}}function vt(n,e){if(n&1){let t=v();o(0,"a",23),g("click",function(a){return d(t),m(a.stopPropagation())}),o(1,"span",22),c(2,"open_in_new"),r(),o(3,"dm-mono"),c(4),r()()}if(n&2){let t=p().$implicit;x("href",t.url,N),s(4),f(t.url)}}function bt(n,e){if(n&1&&(o(0,"span",15)(1,"span",22),c(2,"folder_open"),r(),c(3),r()),n&2){let t=p().$implicit;s(3),f(t.workspaceLabel)}}function yt(n,e){if(n&1&&(o(0,"span",16),c(1),r()),n&2){let t=p().$implicit,i=p();s(),f(i.fmtSince(t.lastChangeMs))}}function wt(n,e){n&1&&C(0,"mat-spinner",21)}function ht(n,e){n&1&&(o(0,"span",22),c(1,"play_arrow"),r())}function Mt(n,e){if(n&1){let t=v();o(0,"button",24),g("click",function(){d(t);let a=p().$implicit,l=p();return m(l.act.emit({name:a.name,kind:"start"}))}),_(1,wt,1,0,"mat-spinner",21)(2,ht,2,0,"span",22),r()}if(n&2){let t=p().$implicit,i=p();x("disabled",i.isBusy(t.name,"start")),s(),u(i.isBusy(t.name,"start")?1:2)}}function kt(n,e){n&1&&C(0,"mat-spinner",21)}function Pt(n,e){n&1&&(o(0,"span",22),c(1,"stop"),r())}function Ot(n,e){if(n&1){let t=v();o(0,"button",25),g("click",function(){d(t);let a=p().$implicit,l=p();return m(l.act.emit({name:a.name,kind:"stop"}))}),_(1,kt,1,0,"mat-spinner",21)(2,Pt,2,0,"span",22),r()}if(n&2){let t=p().$implicit,i=p();x("disabled",i.isBusy(t.name,"stop")),s(),u(i.isBusy(t.name,"stop")?1:2)}}function St(n,e){n&1&&C(0,"mat-spinner",21)}function Tt(n,e){n&1&&(o(0,"span",22),c(1,"restart_alt"),r())}function Vt(n,e){if(n&1){let t=v();o(0,"article",2),g("click",function(){let a=d(t).$implicit,l=p();return m(l.open.emit(a.name))})("mouseenter",function(){let a=d(t).$index,l=p();return m(l.focus.emit(a))})("keydown.enter",function(){let a=d(t).$implicit,l=p();return m(l.open.emit(a.name))}),C(1,"div",3),o(2,"div",4),h(3,ft,1,1,"span",5,et),r(),o(5,"div",6),C(6,"dm-status-pill",7),_(7,xt,4,2,"span",8),r(),o(8,"div",9)(9,"dm-mono"),c(10),r()(),o(11,"div",10),_(12,Ct,5,1,"span",11),_(13,vt,5,2,"a",12),r(),o(14,"div",13)(15,"div",14),_(16,bt,4,1,"span",15),_(17,yt,2,1,"span",16),r(),o(18,"div",17),g("click",function(a){return d(t),m(a.stopPropagation())}),_(19,Mt,3,2,"button",18)(20,Ot,3,2,"button",19),o(21,"button",20),g("click",function(){let a=d(t).$implicit,l=p();return m(l.act.emit({name:a.name,kind:"restart"}))}),_(22,St,1,0,"mat-spinner",21)(23,Tt,2,0,"span",22),r()()()()}if(n&2){let t=e.$implicit,i=e.$index,a=p();z("--dm-tone",a.tone(t.workspaceLabel)),k("f",i===a.focusedIndex),s(2),x("matTooltip",a.ribbonTooltip(t.name)),s(),M(a.ribbonTicks(t.name)),s(3),x("status",t.status)("health",t.health),s(),u(t.errorCount>0?7:-1),s(3),f(t.name),s(2),u(t.port!=null?12:-1),s(),u(t.url?13:-1),s(3),u(t.workspaceLabel?16:-1),s(),u(t.lastChangeMs?17:-1),s(2),u(t.status==="stopped"||t.status==="error"?19:20),s(2),x("disabled",a.isBusy(t.name,"restart")),s(),u(a.isBusy(t.name,"restart")?22:23)}}function Et(n,e){if(n&1&&(o(0,"span",10),c(1),r()),n&2){let t=p().$implicit;s(),f(t.errorCount)}}function At(n,e){n&1&&(o(0,"span",11),c(1,"0"),r())}function It(n,e){n&1&&C(0,"mat-spinner",16)}function Lt(n,e){n&1&&(o(0,"span",17),c(1,"play_arrow"),r())}function Ft(n,e){if(n&1){let t=v();o(0,"button",19),g("click",function(){d(t);let a=p().$implicit,l=p();return m(l.act.emit({name:a.name,kind:"start"}))}),_(1,It,1,0,"mat-spinner",16)(2,Lt,2,0,"span",17),r()}if(n&2){let t=p().$implicit,i=p();x("disabled",i.isBusy(t.name,"start")),s(),u(i.isBusy(t.name,"start")?1:2)}}function Bt(n,e){n&1&&C(0,"mat-spinner",16)}function Rt(n,e){n&1&&(o(0,"span",17),c(1,"stop"),r())}function $t(n,e){if(n&1){let t=v();o(0,"button",20),g("click",function(){d(t);let a=p().$implicit,l=p();return m(l.act.emit({name:a.name,kind:"stop"}))}),_(1,Bt,1,0,"mat-spinner",16)(2,Rt,2,0,"span",17),r()}if(n&2){let t=p().$implicit,i=p();x("disabled",i.isBusy(t.name,"stop")),s(),u(i.isBusy(t.name,"stop")?1:2)}}function Nt(n,e){n&1&&C(0,"mat-spinner",16)}function Dt(n,e){n&1&&(o(0,"span",17),c(1,"restart_alt"),r())}function zt(n,e){if(n&1&&(o(0,"a",18)(1,"span",17),c(2,"open_in_new"),r()()),n&2){let t=p().$implicit;x("href",t.url,N)}}function Kt(n,e){if(n&1){let t=v();o(0,"div",4),g("click",function(){let a=d(t).$implicit,l=p();return m(l.open.emit(a.name))})("mouseenter",function(){let a=d(t).$index,l=p();return m(l.focus.emit(a))})("keydown.enter",function(){let a=d(t).$implicit,l=p();return m(l.open.emit(a.name))}),o(1,"div"),C(2,"dm-status-pill",5),r(),o(3,"div",6),C(4,"span",7),o(5,"dm-mono"),c(6),r()(),o(7,"div",8),c(8),r(),o(9,"div",9)(10,"dm-mono"),c(11),r()(),o(12,"div",9)(13,"dm-mono"),c(14),r()(),o(15,"div",9)(16,"dm-mono"),c(17),r()(),o(18,"div",9)(19,"dm-mono"),c(20),r()(),o(21,"div"),_(22,Et,2,1,"span",10)(23,At,2,0,"span",11),r(),o(24,"div",12),g("click",function(a){return d(t),m(a.stopPropagation())}),_(25,Ft,3,2,"button",13)(26,$t,3,2,"button",14),o(27,"button",15),g("click",function(){let a=d(t).$implicit,l=p();return m(l.act.emit({name:a.name,kind:"restart"}))}),_(28,Nt,1,0,"mat-spinner",16)(29,Dt,2,0,"span",17),r(),_(30,zt,3,1,"a",18),r()()}if(n&2){let t=e.$implicit,i=e.$index,a=p();z("--dm-tone",a.tone(t.workspaceLabel)),k("f",i===a.focusedIndex),s(2),x("status",t.status)("health",t.health),s(4),f(t.name),s(2),f(t.workspaceLabel||"\u2014"),s(3),f(t.port??"\u2014"),s(3),f(a.fmtUptime(t.uptimeMs)),s(3),f(a.fmtPct(t.cpu)),s(3),f(a.fmtMem(t.memMB)),s(2),u(t.errorCount>0?22:23),s(3),u(t.status==="stopped"||t.status==="error"?25:26),s(2),x("disabled",a.isBusy(t.name,"restart")),s(),u(a.isBusy(t.name,"restart")?28:29),s(2),u(t.url?30:-1)}}var Wt=["searchInput"],jt=n=>["/apps",n],qt=(n,e)=>e.key;function Ut(n,e){if(n&1&&(o(0,"div",27)(1,"span",24),c(2),r(),o(3,"span",25),c(4,"errors"),r()()),n&2){let t=p();s(2),f(t.totals.totalErrCount)}}function Qt(n,e){if(n&1&&(o(0,"span",34),c(1),r()),n&2){let t=p(2).$implicit;s(),E(" ",t.firstError.code)}}function Ht(n,e){if(n&1&&(o(0,"dm-mono")(1,"span",33),c(2),r(),_(3,Qt,2,1,"span",34),r()),n&2){let t=p().$implicit;s(2),A("",t.firstError.file,":",t.firstError.line),s(),u(t.firstError.code?3:-1)}}function Yt(n,e){if(n&1&&(o(0,"a",31)(1,"strong"),c(2),r(),o(3,"span",32),c(4),r(),_(5,Ht,4,3,"dm-mono"),r()),n&2){let t=e.$implicit;x("routerLink",rt(5,jt,t.name)),s(2),f(t.name),s(2),A("",t.errCount," ",t.errCount===1?"error":"errors"),s(),u(t.firstError?5:-1)}}function Gt(n,e){if(n&1&&(o(0,"div",28)(1,"div",29)(2,"span",8),c(3,"priority_high"),r(),c(4,"Needs attention "),r(),o(5,"div",30),h(6,Yt,6,7,"a",31,G),r()()),n&2){let t=p();s(6),M(t.needsAttention)}}function Jt(n,e){if(n&1&&(o(0,"section",2)(1,"div",22)(2,"div",23)(3,"span",24),c(4),r(),o(5,"span",25),c(6,"apps"),r()(),o(7,"div",26)(8,"span",24),c(9),r(),o(10,"span",25),c(11,"serving"),r()(),o(12,"div",27)(13,"span",24),c(14),r(),o(15,"span",25),c(16,"errored"),r()(),o(17,"div",23)(18,"span",24),c(19),r(),o(20,"span",25),c(21,"stopped"),r()(),_(22,Ut,5,1,"div",27),r(),_(23,Gt,8,0,"div",28),r()),n&2){let t=e;s(4),f(t.totals.apps),s(5),f(t.totals.serving),s(3),k("dm-zero",!t.totals.errors),s(2),f(t.totals.errors),s(5),f(t.totals.stopped),s(3),u(t.totals.totalErrCount>0?22:-1),s(),u(t.needsAttention.length?23:-1)}}function Xt(n,e){if(n&1&&(c(0," \xB7 workspace "),o(1,"dm-mono"),c(2),r()),n&2){let t=p();s(2),f(t.workspace())}}function Zt(n,e){if(n&1){let t=v();o(0,"button",35),g("click",function(){d(t);let a=p();return m(a.onQuery(""))}),o(1,"span",8),c(2,"close"),r()()}}function te(n,e){if(n&1){let t=v();o(0,"button",36),g("click",function(){let a=d(t).$implicit,l=p();return m(l.setStatus(a.key))}),c(1),o(2,"span",37),c(3),r()()}if(n&2){let t=e.$implicit,i=p();k("active",i.status()===t.key),V("aria-selected",i.status()===t.key),s(),E(" ",t.label),s(2),f(i.countFor(t.key))}}function ee(n,e){if(n&1){let t=v();o(0,"button",40),g("click",function(){let a=d(t).$implicit,l=p(2);return m(l.toggleTag(a))}),c(1),r()}if(n&2){let t=e.$implicit,i=p(2);k("active",i.isTagSelected(t)),V("aria-pressed",i.isTagSelected(t)),s(),f(t)}}function ne(n,e){if(n&1){let t=v();o(0,"button",41),g("click",function(){d(t);let a=p(2);return m(a.clearTags())}),o(1,"span",8),c(2,"close"),r()()}}function ie(n,e){if(n&1&&(o(0,"div",17),h(1,ee,2,4,"button",38,D),_(3,ne,3,0,"button",39),r()),n&2){let t=p();s(),M(t.allTags()),s(2),u(t.selectedTags().size?3:-1)}}function oe(n,e){n&1&&(o(0,"article",42),C(1,"div",43),o(2,"div",44),C(3,"dm-skeleton",45)(4,"dm-skeleton",46)(5,"dm-skeleton",47),r()())}function re(n,e){if(n&1&&(o(0,"div",18),h(1,oe,6,0,"article",42,D),r()),n&2){let t=p();s(),M(t.skeletonItems)}}function ae(n,e){n&1&&(o(0,"dm-empty",19)(1,"div",48)(2,"a",49)(3,"span",8),c(4,"stethoscope"),r(),c(5,"Open Doctor "),r()()())}function se(n,e){n&1&&C(0,"dm-empty",20)}function le(n,e){if(n&1){let t=v();o(0,"dm-apps-cards",50),g("open",function(a){d(t);let l=p();return m(l.open(a))})("focus",function(a){d(t);let l=p();return m(l.focusedIndex.set(a))})("act",function(a){d(t);let l=p();return m(l.act(a.name,a.kind))}),r()}if(n&2){let t=p();x("items",t.filtered())("focusedIndex",t.focusedIndex())("busy",t.busyMap())}}function ce(n,e){if(n&1){let t=v();o(0,"dm-apps-list-view",50),g("open",function(a){d(t);let l=p();return m(l.open(a))})("focus",function(a){d(t);let l=p();return m(l.focusedIndex.set(a))})("act",function(a){d(t);let l=p();return m(l.act(a.name,a.kind))}),r()}if(n&2){let t=p();x("items",t.filtered())("focusedIndex",t.focusedIndex())("busy",t.busyMap())}}var _t="daimon.apps.view",ut="daimon.workspace",Q="daimon.apps.tags",H=class n{items=[];focusedIndex=0;busy={};open=new P;focus=new P;act=new P;tone=U;api=O(K);RIBBON_BUCKETS=20;RIBBON_WINDOW_MS=3600*1e3;perAppTicks=I(()=>{let e=this.api.events(),i=Date.now()-this.RIBBON_WINDOW_MS,a=this.RIBBON_WINDOW_MS/this.RIBBON_BUCKETS,l=new Map,y={stopped:1,serving:2,compiling:3,starting:3,error:4};for(let b of e){if(b.type!=="status"||!b.app||!b.to||b.ts<i)continue;let J=Math.min(this.RIBBON_BUCKETS-1,Math.floor((b.ts-i)/a)),S=l.get(b.app);S||(S=new Array(this.RIBBON_BUCKETS).fill(""),l.set(b.app,S));let X=S[J];(!X||(y[b.to]??0)>(y[X]??0))&&(S[J]=b.to)}return l});isBusy(e,t){return!!this.busy[e]?.[t]}ribbonTicks(e){return this.perAppTicks().get(e)??new Array(this.RIBBON_BUCKETS).fill("")}ribbonTooltip(e){let t=this.perAppTicks().get(e);if(!t)return"no status events in the last 60 min";let i={};for(let l of t)l&&(i[l]=(i[l]??0)+1);let a=Object.entries(i).map(([l,y])=>`${y} ${l}`).join(" \xB7 ");return a?`last 60 min: ${a}`:"no status events in the last 60 min"}fmtSince(e){if(!e||e<=0)return"";let t=Math.floor(e/1e3);return t<60?t+"s ago":t<3600?Math.floor(t/60)+"m ago":t<86400?Math.floor(t/3600)+"h ago":Math.floor(t/86400)+"d ago"}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=T({type:n,selectors:[["dm-apps-cards"]],inputs:{items:"items",focusedIndex:"focusedIndex",busy:"busy"},outputs:{open:"open",focus:"focus",act:"act"},decls:3,vars:0,consts:[[1,"g"],["role","button","tabindex","0",1,"c",3,"f","--dm-tone"],["role","button","tabindex","0",1,"c",3,"click","mouseenter","keydown.enter"],[1,"ac"],["aria-hidden","true",1,"rb",3,"matTooltip"],[1,"tk"],[1,"h"],[3,"status","health"],[1,"eb",3,"matTooltip"],[1,"n"],[1,"m"],["matTooltip","Port",1,"mi"],["target","_blank","rel","noopener",1,"mi","ml",3,"href"],[1,"ft"],[1,"tg"],[1,"ws"],[1,"sn"],[1,"ax",3,"click"],["matTooltip","Start (s)","aria-label","Start",1,"ib",3,"disabled"],["matTooltip","Stop (x)","aria-label","Stop",1,"ib",3,"disabled"],["matTooltip","Restart (r)","aria-label","Restart",1,"ib",3,"click","disabled"],["diameter","16"],[1,"material-symbols-outlined"],["target","_blank","rel","noopener",1,"mi","ml",3,"click","href"],["matTooltip","Start (s)","aria-label","Start",1,"ib",3,"click","disabled"],["matTooltip","Stop (x)","aria-label","Stop",1,"ib",3,"click","disabled"]],template:function(t,i){t&1&&(o(0,"div",0),h(1,Vt,24,16,"article",1,G),r()),t&2&&(s(),M(i.items))},dependencies:[F,L,j,W,q,B],styles:["[_nghost-%COMP%]{display:block}.g[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.c[_ngcontent-%COMP%]{position:relative;display:flex;flex-direction:column;background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:14px;overflow:hidden;cursor:pointer;transition:box-shadow var(--dm-motion-short) var(--dm-motion-easing),transform var(--dm-motion-short) var(--dm-motion-easing),border-color var(--dm-motion-short) var(--dm-motion-easing)}.c[_ngcontent-%COMP%]:hover{box-shadow:var(--mat-sys-level2);transform:translateY(-1px)}.c.f[_ngcontent-%COMP%]{border-color:var(--mat-sys-primary);box-shadow:0 0 0 2px color-mix(in oklch,var(--mat-sys-primary) 25%,transparent)}.ac[_ngcontent-%COMP%]{height:4px;background:var(--dm-tone,var(--mat-sys-surface-container))}.rb[_ngcontent-%COMP%]{display:flex;gap:1px;height:6px;padding:0 .75rem;align-items:center;background:var(--mat-sys-surface-container-lowest)}.rb[_ngcontent-%COMP%] .tk[_ngcontent-%COMP%]{flex:1;height:6px;border-radius:1px;background:var(--mat-sys-surface-container)}.rb[_ngcontent-%COMP%] .tk[data-k=serving][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 60%,transparent)}.rb[_ngcontent-%COMP%] .tk[data-k=error][_ngcontent-%COMP%]{background:var(--mat-sys-error)}.rb[_ngcontent-%COMP%] .tk[data-k=starting][_ngcontent-%COMP%], .rb[_ngcontent-%COMP%] .tk[data-k=compiling][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 70%,transparent)}.rb[_ngcontent-%COMP%] .tk[data-k=stopped][_ngcontent-%COMP%]{background:var(--mat-sys-outline-variant)}.h[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.75rem .875rem 0}.n[_ngcontent-%COMP%]{padding:.375rem .875rem 0;font:500 1.05rem/1.5rem Roboto}.n[_ngcontent-%COMP%] .dm-mono[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:500}.m[_ngcontent-%COMP%]{padding:.25rem .875rem .5rem;display:flex;flex-wrap:wrap;gap:.75rem;color:var(--mat-sys-on-surface-variant)}.mi[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;font-size:.8125rem}.mi[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:14px}.ml[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none}.ml[_ngcontent-%COMP%]:hover{text-decoration:underline}.ft[_ngcontent-%COMP%]{margin-top:auto;padding:.5rem .75rem .5rem .875rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;border-top:1px solid var(--mat-sys-outline-variant)}.tg[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:wrap;min-width:0}.ws[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;padding:2px 8px;border-radius:999px;font:500 .6875rem/1rem Roboto;background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);border:1px solid var(--mat-sys-outline-variant)}.ws[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:12px}.sn[_ngcontent-%COMP%]{font:400 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant)}.ax[_ngcontent-%COMP%]{display:inline-flex;gap:.25rem}.ib[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:0;border-radius:8px;color:var(--mat-sys-on-surface-variant);cursor:pointer;transition:background var(--dm-motion-short) var(--dm-motion-easing),color var(--dm-motion-short) var(--dm-motion-easing)}.ib[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.ib[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.ib[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}.eb[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;padding:1px 8px;border-radius:999px;font:600 .75rem/1rem var(--dm-mono);background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);color:var(--mat-sys-error);border:1px solid color-mix(in oklch,var(--mat-sys-error) 30%,transparent)}.eb[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:14px}"],changeDetection:0})},Y=class n{items=[];focusedIndex=0;busy={};open=new P;focus=new P;act=new P;tone=U;isBusy(e,t){return!!this.busy[e]?.[t]}fmtUptime(e){if(!e||e<0)return"\u2014";let t=Math.floor(e/1e3);return t<60?t+"s":t<3600?Math.floor(t/60)+"m":t<86400?Math.floor(t/3600)+"h":Math.floor(t/86400)+"d"}fmtPct(e){return e==null||isNaN(e)?"\u2014":e.toFixed(0)+"%"}fmtMem(e){return e==null||isNaN(e)?"\u2014":e>=1024?(e/1024).toFixed(1)+"G":Math.round(e)+"M"}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=T({type:n,selectors:[["dm-apps-list-view"]],inputs:{items:"items",focusedIndex:"focusedIndex",busy:"busy"},outputs:{open:"open",focus:"focus",act:"act"},decls:22,vars:0,consts:[["role","table",1,"ls"],["role","row",1,"rw","rh"],[1,"ar"],["role","row","tabindex","0",1,"rw",3,"f","--dm-tone"],["role","row","tabindex","0",1,"rw",3,"click","mouseenter","keydown.enter"],[3,"status","health"],[1,"nm"],[1,"tn"],[1,"ws"],[1,"sm"],[1,"eb"],[1,"dm"],[1,"ax",3,"click"],["matTooltip","Start","aria-label","Start",1,"ib",3,"disabled"],["matTooltip","Stop","aria-label","Stop",1,"ib",3,"disabled"],["matTooltip","Restart","aria-label","Restart",1,"ib",3,"click","disabled"],["diameter","14"],[1,"material-symbols-outlined"],["target","_blank","rel","noopener","matTooltip","Open","aria-label","Open",1,"ib",3,"href"],["matTooltip","Start","aria-label","Start",1,"ib",3,"click","disabled"],["matTooltip","Stop","aria-label","Stop",1,"ib",3,"click","disabled"]],template:function(t,i){t&1&&(o(0,"div",0)(1,"div",1)(2,"div"),c(3,"status"),r(),o(4,"div"),c(5,"name"),r(),o(6,"div"),c(7,"workspace"),r(),o(8,"div"),c(9,"port"),r(),o(10,"div"),c(11,"uptime"),r(),o(12,"div"),c(13,"cpu"),r(),o(14,"div"),c(15,"mem"),r(),o(16,"div"),c(17,"err"),r(),o(18,"div",2),c(19,"actions"),r()(),h(20,Kt,31,17,"div",3,G),r()),t&2&&(s(20),M(i.items))},dependencies:[F,L,j,W,q,B],styles:['[_nghost-%COMP%]{display:block}.ls[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:12px;overflow:hidden}.rw[_ngcontent-%COMP%]{display:grid;align-items:center;gap:.75rem;grid-template-columns:110px minmax(160px,1.5fr) minmax(100px,1fr) 70px 80px 70px 80px 60px 140px;padding:0 .875rem;min-height:36px;cursor:pointer;position:relative;border-bottom:1px solid var(--mat-sys-outline-variant);transition:background var(--dm-motion-short) var(--dm-motion-easing)}.rw[_ngcontent-%COMP%]:last-child{border-bottom:0}.rw[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.rw.f[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 8%,transparent)}.rw.f[_ngcontent-%COMP%]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--mat-sys-primary)}.rh[_ngcontent-%COMP%]{min-height:30px;background:var(--mat-sys-surface-container);cursor:default;font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant)}.rh[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.nm[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.nm[_ngcontent-%COMP%] .dm-mono[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tn[_ngcontent-%COMP%]{width:3px;height:18px;border-radius:2px;background:var(--dm-tone,var(--mat-sys-surface-container));flex-shrink:0}.ws[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--mat-sys-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sm[_ngcontent-%COMP%]{font-size:.8125rem}.ar[_ngcontent-%COMP%], .ax[_ngcontent-%COMP%]{display:inline-flex;gap:.125rem;justify-content:flex-end}.dm[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.8125rem}.ib[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:transparent;border:0;border-radius:6px;color:var(--mat-sys-on-surface-variant);cursor:pointer;transition:background var(--dm-motion-short) var(--dm-motion-easing),color var(--dm-motion-short) var(--dm-motion-easing);text-decoration:none}.ib[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.ib[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.ib[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.eb[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:0 6px;border-radius:999px;font:600 .75rem/1rem var(--dm-mono);background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);color:var(--mat-sys-error);border:1px solid color-mix(in oklch,var(--mat-sys-error) 30%,transparent)}@media(max-width:1000px){.rw[_ngcontent-%COMP%]{grid-template-columns:100px minmax(120px,1fr) 70px 70px 60px 110px}.rw[_ngcontent-%COMP%] .ws[_ngcontent-%COMP%], .rw[_ngcontent-%COMP%] .sm[_ngcontent-%COMP%]:nth-of-type(3), .rw[_ngcontent-%COMP%] .sm[_ngcontent-%COMP%]:nth-of-type(4){display:none}}'],changeDetection:0})},gt=class n{api=O(K);router=O(st);snack=O(pt);destroyRef=O(Z);searchInput;view=w("cards");query=w("");status=w("all");workspace=w(null);focusedIndex=w(0);busyMap=w({});selectedTags=w(new Set);allTags=I(()=>{let e=new Set;for(let t of this.api.apps())for(let i of t.tags??[])e.add(i);return Array.from(e).sort()});skeletonItems=Array.from({length:6},(e,t)=>t);statusFilters=[{key:"all",label:"All"},{key:"serving",label:"Serving"},{key:"errors",label:"Errors"},{key:"stopped",label:"Stopped"}];filtered=I(()=>{let e=this.query().trim().toLowerCase(),t=this.status(),i=this.workspace(),a=this.selectedTags();return this.api.apps().filter(l=>{if(i&&l.workspaceLabel!==i||t==="serving"&&l.status!=="serving"||t==="errors"&&l.status!=="error"&&l.errorCount===0||t==="stopped"&&l.status!=="stopped")return!1;if(a.size){let y=l.tags??[];for(let b of a)if(!y.includes(b))return!1}return!(e&&![l.name,l.workspaceLabel??"",...l.tags??[]].join(" ").toLowerCase().includes(e))})});constructor(){this.view.set(localStorage.getItem(_t)==="list"?"list":"cards"),this.workspace.set(localStorage.getItem(ut));let e=(localStorage.getItem(Q)??"").split(",").map(t=>t.trim()).filter(Boolean);e.length&&this.selectedTags.set(new Set(e)),at(()=>{let t=this.filtered().length;this.focusedIndex()>=t&&this.focusedIndex.set(Math.max(0,t-1))}),this.bindWindow("daimon:toggle-density",()=>this.setView(this.view()==="cards"?"list":"cards")),this.bindWindow("daimon:focus-filter",()=>queueMicrotask(()=>this.searchInput?.nativeElement.focus())),this.bindWindow("daimon:workspace",t=>{let i=t.detail;this.workspace.set(i??null)}),this.bindWindow("daimon:key",t=>this.onKey(t.detail))}async ngAfterViewInit(){this.api.ready()||await this.api.refresh()}onStorage(e){e.key===ut&&this.workspace.set(e.newValue)}bindWindow(e,t){window.addEventListener(e,t),this.destroyRef.onDestroy(()=>window.removeEventListener(e,t))}setView(e){this.view.set(e),localStorage.setItem(_t,e)}setStatus(e){this.status.set(e),this.focusedIndex.set(0)}isTagSelected(e){return this.selectedTags().has(e)}toggleTag(e){let t=new Set(this.selectedTags());t.has(e)?t.delete(e):t.add(e),this.selectedTags.set(t),this.persistTags(t),this.focusedIndex.set(0)}clearTags(){this.selectedTags.set(new Set),this.persistTags(new Set),this.focusedIndex.set(0)}persistTags(e){e.size?localStorage.setItem(Q,Array.from(e).join(",")):localStorage.removeItem(Q)}onQuery(e){this.query.set(e),this.focusedIndex.set(0)}open(e){this.router.navigate(["/apps",e])}countFor(e){return this.api.apps().filter(t=>e==="all"?!0:e==="serving"?t.status==="serving":e==="errors"?t.status==="error"||t.errorCount>0:e==="stopped"?t.status==="stopped":!1).length}async act(e,t){if(!this.busyMap()[e]?.[t]){this.setBusy(e,t,!0);try{t==="start"?await this.api.startApp(e):t==="stop"?await this.api.stopApp(e):await this.api.restartApp(e)}catch(i){this.snack.open(`${t} ${e} failed: ${i?.message??"error"}`,"Dismiss",{duration:4e3})}finally{this.setBusy(e,t,!1)}}}setBusy(e,t,i){this.busyMap.update(a=>$(R({},a),{[e]:$(R({},a[e]??{}),{[t]:i})}))}onKey(e){let t=this.filtered();if(!t.length)return;let i=Math.max(0,Math.min(this.focusedIndex(),t.length-1));if(e==="j")this.focusedIndex.set((i+1)%t.length);else if(e==="k")this.focusedIndex.set((i-1+t.length)%t.length);else if(e==="s")this.act(t[i].name,"start");else if(e==="x")this.act(t[i].name,"stop");else if(e==="r"){let a=t[i].name;this.snack.open(`Restart ${a}? Press R again or click confirm.`,"Confirm",{duration:4e3}).onAction().subscribe(()=>{this.act(a,"restart")})}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=T({type:n,selectors:[["dm-apps-list"]],viewQuery:function(t,i){if(t&1&&nt(Wt,5),t&2){let a;it(a=ot())&&(i.searchInput=a.first)}},hostBindings:function(t,i){t&1&&g("storage",function(l){return i.onStorage(l)},tt)},decls:33,vars:12,consts:[["searchInput",""],[1,"dm-page"],[1,"dm-overview"],[1,"dm-page-header"],[1,"dm-page-sub"],[1,"dm-header-actions"],["role","group","aria-label","View mode",1,"dm-toggle"],["type","button","matTooltip","Cards (.)","aria-label","Cards view",3,"click"],[1,"material-symbols-outlined"],["type","button","matTooltip","Dense list (.)","aria-label","List view",3,"click"],[1,"dm-filterbar"],[1,"dm-search"],[1,"material-symbols-outlined","dm-search-icon"],["type","search","placeholder","Filter apps by name, tag, workspace\u2026","aria-label","Filter apps",3,"input","value"],["type","button","aria-label","Clear",1,"dm-search-clear"],["role","tablist","aria-label","Status filter",1,"dm-chips"],["type","button","role","tab",1,"dm-chip",3,"active"],["role","group","aria-label","Tag filter",1,"dm-chips","dm-tag-row"],[1,"dm-grid-sk"],["icon","rocket_launch","title","No apps discovered yet","hint","Run daimon init --auto in your workspace to discover apps, or run /discover. The doctor page can help diagnose missing apps."],["icon","search_off","title","No matches","hint","No apps match the current filters. Clear them or try a different query."],[3,"items","focusedIndex","busy"],[1,"dm-totals-row"],[1,"dm-total"],[1,"dm-total-num"],[1,"dm-total-label"],[1,"dm-total","dm-total-serving"],[1,"dm-total","dm-total-error"],[1,"dm-attention"],[1,"dm-att-title"],[1,"dm-att-list"],[1,"dm-att-row",3,"routerLink"],[1,"dm-att-meta"],[1,"dm-att-where"],[1,"dm-att-code"],["type","button","aria-label","Clear",1,"dm-search-clear",3,"click"],["type","button","role","tab",1,"dm-chip",3,"click"],[1,"dm-chip-count"],["type","button",1,"dm-chip",3,"active"],["type","button","aria-label","Clear tag filter",1,"dm-chip","dm-chip-clear"],["type","button",1,"dm-chip",3,"click"],["type","button","aria-label","Clear tag filter",1,"dm-chip","dm-chip-clear",3,"click"],[1,"dm-card-sk"],[1,"dm-sk-accent"],[1,"dm-sk-body"],["width","60%","height","1.25rem"],["width","40%","height",".875rem"],["width","80%","height",".875rem"],[1,"dm-empty-actions"],["routerLink","/doctor",1,"dm-link-btn"],[3,"open","focus","act","items","focusedIndex","busy"]],template:function(t,i){if(t&1){let a=v();o(0,"div",1),_(1,Jt,24,8,"section",2),o(2,"header",3)(3,"div")(4,"h1"),c(5,"Apps"),r(),o(6,"div",4),c(7),_(8,Xt,3,1),r()(),o(9,"div",5)(10,"div",6)(11,"button",7),g("click",function(){return d(a),m(i.setView("cards"))}),o(12,"span",8),c(13,"grid_view"),r()(),o(14,"button",9),g("click",function(){return d(a),m(i.setView("list"))}),o(15,"span",8),c(16,"view_list"),r()()()()(),o(17,"div",10)(18,"div",11)(19,"span",12),c(20,"search"),r(),o(21,"input",13,0),g("input",function(y){return d(a),m(i.onQuery(y.target.value))}),r(),_(23,Zt,3,0,"button",14),r(),o(24,"div",15),h(25,te,4,5,"button",16,qt),r(),_(27,ie,4,1,"div",17),r(),_(28,re,3,0,"div",18)(29,ae,6,0,"dm-empty",19)(30,se,1,0,"dm-empty",20)(31,le,1,3,"dm-apps-cards",21)(32,ce,1,3,"dm-apps-list-view",21),r()}if(t&2){let a;s(),u((a=i.api.overview())?1:-1,a),s(6),A(" ",i.filtered().length," of ",i.api.apps().length," visible "),s(),u(i.workspace()?8:-1),s(3),k("active",i.view()==="cards"),s(3),k("active",i.view()==="list"),s(7),x("value",i.query()),s(2),u(i.query()?23:-1),s(2),M(i.statusFilters),s(2),u(i.allTags().length?27:-1),s(),u(i.api.ready()?i.api.apps().length===0?29:i.filtered().length===0?30:i.view()==="cards"?31:32:28)}},dependencies:[lt,ct,F,L,dt,mt,B,H,Y],styles:["[_nghost-%COMP%]{display:block}.dm-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.dm-overview[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(280px,1fr) minmax(0,2fr);gap:1rem;padding:1rem 1.25rem;border-radius:14px;background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant)}@media(max-width:760px){.dm-overview[_ngcontent-%COMP%]{grid-template-columns:1fr}}.dm-totals-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.75rem}.dm-total[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:.5rem .875rem;border-radius:10px;background:var(--mat-sys-surface-container);min-width:70px}.dm-total-num[_ngcontent-%COMP%]{font:600 1.5rem/1.75rem Roboto;color:var(--mat-sys-on-surface)}.dm-total-label[_ngcontent-%COMP%]{font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant)}.dm-total-serving[_ngcontent-%COMP%] .dm-total-num[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-total-error[_ngcontent-%COMP%] .dm-total-num[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-total-error.dm-zero[_ngcontent-%COMP%] .dm-total-num[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-attention[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;min-width:0}.dm-att-title[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;font:500 .8125rem/1.25rem Roboto;color:var(--mat-sys-error)}.dm-att-title[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}.dm-att-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.dm-att-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;min-width:0;padding:.375rem .625rem;border-radius:8px;text-decoration:none;color:var(--mat-sys-on-surface);background:var(--mat-sys-surface-container);border-left:3px solid var(--mat-sys-error)}.dm-att-row[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-att-row[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-weight:500;font-size:.875rem}.dm-att-meta[_ngcontent-%COMP%]{font-size:.75rem;color:var(--mat-sys-on-surface-variant);white-space:nowrap}.dm-att-where[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-att-code[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);margin-left:.25rem}.dm-page-header[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font:400 1.5rem/2rem Roboto}.dm-page-sub[_ngcontent-%COMP%]{font:400 .8125rem/1.25rem Roboto;color:var(--mat-sys-on-surface-variant);margin-top:.25rem;display:flex;gap:.25rem;flex-wrap:wrap}.dm-header-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.dm-toggle[_ngcontent-%COMP%], .dm-chips[_ngcontent-%COMP%]{display:inline-flex;padding:2px;border-radius:10px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant)}.dm-toggle[_ngcontent-%COMP%] button[_ngcontent-%COMP%], .dm-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:5px 10px;border-radius:8px;background:transparent;border:0;color:var(--mat-sys-on-surface-variant);cursor:pointer;font:500 .8125rem/1rem Roboto}.dm-toggle[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}.dm-toggle[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover, .dm-chip[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.dm-toggle[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%], .dm-chip.active[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-primary)}.dm-toggle[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{box-shadow:var(--mat-sys-level1)}.dm-chip-count[_ngcontent-%COMP%]{font:500 .6875rem/1rem var(--dm-mono);padding:0 5px;border-radius:999px;background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface-variant)}.dm-chip.active[_ngcontent-%COMP%] .dm-chip-count[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 16%,transparent);color:var(--mat-sys-primary)}.dm-filterbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.dm-search[_ngcontent-%COMP%]{position:relative;flex:1;min-width:220px;display:inline-flex;align-items:center;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:10px}.dm-search[_ngcontent-%COMP%]:focus-within{border-color:var(--mat-sys-primary)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1;border:0;outline:0;background:transparent;padding:8px 36px;font:400 .875rem/1.25rem Roboto;color:var(--mat-sys-on-surface)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:var(--mat-sys-on-surface-variant)}.dm-search-icon[_ngcontent-%COMP%]{position:absolute;left:10px;pointer-events:none;font-size:18px;color:var(--mat-sys-on-surface-variant)}.dm-search-clear[_ngcontent-%COMP%]{position:absolute;right:6px;background:transparent;border:0;cursor:pointer;color:var(--mat-sys-on-surface-variant);width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.dm-search-clear[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-search-clear[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.dm-grid-sk[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.dm-card-sk[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:14px;overflow:hidden}.dm-sk-accent[_ngcontent-%COMP%]{height:4px;background:var(--mat-sys-surface-container)}.dm-sk-body[_ngcontent-%COMP%]{padding:1rem;display:flex;flex-direction:column;gap:.5rem}.dm-empty-actions[_ngcontent-%COMP%]{margin-top:.75rem}.dm-link-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:6px 14px;border-radius:10px;background:var(--mat-sys-primary);color:var(--mat-sys-on-primary);text-decoration:none;font:500 .875rem/1.25rem Roboto}.dm-link-btn[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}.dm-tag-row[_ngcontent-%COMP%]{flex-wrap:wrap;gap:4px;max-width:100%}.dm-chip-clear[_ngcontent-%COMP%]{padding:5px 6px;color:var(--mat-sys-on-surface-variant)}.dm-chip-clear[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}"],changeDetection:0})};export{H as AppsCardsViewComponent,gt as AppsListComponent,Y as AppsListViewComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as de}from"./chunk-GYWEXV2L.js";import{a as ee,b as te,c as ne,d as ie,e as oe,g as ae,h as re,k as se,l as le}from"./chunk-CM4RQF3A.js";import"./chunk-P5IU57TV.js";import"./chunk-NDSAQ2HK.js";import{b as Y,f as Q,h as q,j as G}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as H,c as J,d as U}from"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{d as X,e as Z}from"./chunk-Q772THBA.js";import{a as z,b as K}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{c as B}from"./chunk-EIWOTZT3.js";import{h as j,i as A,j as W}from"./chunk-LBL7Z5BE.js";import{h as V}from"./chunk-Y6B6X4Y6.js";import{Db as b,Eb as c,Fb as p,Hb as L,Ib as E,Jb as k,Kb as _,Lb as a,Mb as r,Nb as F,Sb as T,Ub as h,Wb as m,_a as o,ea as D,gc as w,ic as s,ja as x,jc as u,ka as M,kc as y,pb as N,sc as R,ta as g,xc as P}from"./chunk-K43KW4K2.js";var ce=t=>["/apps",t],pe=(t,n)=>n.name,ue=(t,n)=>n.key;function ve(t,n){t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span",19),s(3,"paused"),r())}function ge(t,n){if(t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span"),s(3),r()),t&2){let e=m();o(3),y("",e.pendingCount()," new while paused")}}function _e(t,n){if(t&1&&(a(0,"mat-option",10),s(1),r()),t&2){let e=n.$implicit;_("value",e.name),o(),u(e.name)}}function fe(t,n){if(t&1){let e=T();a(0,"button",20),h("click",function(){x(e);let d=m();return M(d.textFilter.set(""))}),a(1,"mat-icon"),s(2,"close"),r()()}}function he(t,n){if(t&1){let e=T();a(0,"button",21),h("click",function(){let d=x(e).$implicit,v=m();return M(v.toggleType(d))}),s(1),r()}if(t&2){let e=n.$implicit,i=m();w("dm-chip-active",i.typeFilter().has(e)),b("data-kind",e),o(),y(" ",e," ")}}function ye(t,n){if(t&1){let e=T();a(0,"button",22),h("click",function(){x(e);let d=m();return M(d.clearTypes())}),a(1,"mat-icon"),s(2,"close"),r()()}}function Ce(t,n){t&1&&F(0,"dm-empty",23)}function xe(t,n){t&1&&F(0,"dm-empty",24)}function Me(t,n){if(t&1&&c(0,Ce,1,0,"dm-empty",23)(1,xe,1,0,"dm-empty",24),t&2){let e=m();p(e.liveEvents().length===0?0:1)}}function be(t,n){if(t&1&&(a(0,"li",25)(1,"span",32),s(2),r()()),t&2){let e=m().$implicit;o(2),u(e.gapLabel)}}function Ee(t,n){if(t&1&&(a(0,"a",29)(1,"dm-mono"),s(2),r()()),t&2){let e=m().$implicit;_("routerLink",R(2,ce,e.ev.app)),o(2),u(e.ev.app)}}function ke(t,n){t&1&&(a(0,"span",30),s(1,"\u2014"),r())}function Fe(t,n){if(t&1&&(a(0,"dm-mono"),s(1),r(),a(2,"span",33),s(3,"\u2192"),r(),a(4,"dm-mono"),s(5),r()),t&2){let e=m().$implicit;o(),u(e.ev.from??"?"),o(4),u(e.ev.to??"?")}}function Te(t,n){if(t&1&&s(0),t&2){let e=m().$implicit;y(" ",e.ev.message??""," ")}}function we(t,n){if(t&1&&(c(0,be,3,1,"li",25),a(1,"li",26)(2,"span",27)(3,"dm-mono"),s(4),r()(),a(5,"span",28),s(6),r(),c(7,Ee,3,4,"a",29)(8,ke,2,0,"span",30),a(9,"span",31),c(10,Fe,6,2)(11,Te,1,1),r()()),t&2){let e=n.$implicit,i=m(2);p(e.divider?0:-1),o(),w("dm-flash",e.flash),b("data-kind",e.ev.type),o(),_("matTooltip",i.absTime(e.ev.ts)),o(2),u(i.rel(e.ev.ts)),o(),b("data-kind",e.ev.type),o(),u(e.ev.type),o(),p(e.ev.app?7:8),o(3),p(e.ev.type==="status"&&(e.ev.from||e.ev.to)?10:11)}}function Pe(t,n){if(t&1&&(a(0,"ol",17),E(1,we,12,10,null,null,ue),r()),t&2){let e=m();o(),k(e.rendered())}}var Oe=["status","health","error","compile","log"];function Se(t,n){let e=Math.max(0,Math.floor((n-t)/1e3));if(e<1)return"just now";if(e<60)return`${e}s ago`;let i=Math.floor(e/60),d=e%60;return i<60?d?`${i}m ${d}s ago`:`${i}m ago`:`${Math.floor(i/60)}h ${i%60}m ago`}var me=class t{api=D(W);types=Oe;paused=g(!1);appFilter=g("");textFilter=g("");typeFilter=g(new Set);now=g(Date.now());snapshot=g(null);lastSeenTs=g(0);tickTimer;liveEvents=P(()=>this.snapshot()??this.api.events());pendingCount=P(()=>{let n=this.snapshot();if(!n)return 0;let e=this.api.events();return Math.max(0,e.length-n.length)});rendered=P(()=>{let n=this.liveEvents(),e=this.appFilter(),i=this.textFilter().toLowerCase(),d=this.typeFilter(),v=this.lastSeenTs(),C=[];for(let l of n)e&&l.app!==e||d.size&&!d.has(l.type)||i&&!`${l.app??""} ${l.type} ${l.message??""} ${l.from??""} ${l.to??""}`.toLowerCase().includes(i)||C.push(l);let S=[];for(let l=0;l<C.length;l++){let f=C[l],O=C[l+1],I=O?f.ts-O.ts:0,$=!!O&&I>3e4;S.push({key:`${f.ts}:${l}`,ev:f,divider:$,gapLabel:$?Ie(I):"",flash:f.ts>v})}return S.sort((l,f)=>f.ev.ts-l.ev.ts)});ngOnInit(){this.lastSeenTs.set(Date.now()),this.tickTimer=setInterval(()=>{this.now.set(Date.now());let n=this.api.events();n.length&&this.lastSeenTs.set(n[n.length-1].ts)},1e3)}ngOnDestroy(){this.tickTimer&&clearInterval(this.tickTimer)}togglePause(){this.paused()?(this.paused.set(!1),this.snapshot.set(null)):(this.snapshot.set(this.api.events().slice()),this.paused.set(!0))}toggleType(n){this.typeFilter.update(e=>{let i=new Set(e);return i.has(n)?i.delete(n):i.add(n),i})}clearTypes(){this.typeFilter.set(new Set)}rel(n){return Se(n,this.now())}absTime(n){return new Date(n).toLocaleString()}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["dm-events-feed"]],decls:37,vars:15,consts:[[1,"dm-page-header"],[1,"dm-count"],[1,"dm-page-sub"],[1,"dm-conn"],[1,"dm-conn-dot"],[1,"dm-header-actions"],["mat-stroked-button","",3,"click","matTooltip"],[1,"dm-toolbar"],["appearance","outline",1,"dm-app-filter"],[3,"ngModelChange","ngModel"],[3,"value"],["appearance","outline",1,"dm-text-filter"],["matInput","","placeholder","filter message / app",3,"ngModelChange","ngModel"],["matSuffix","","mat-icon-button",""],[1,"dm-type-chips"],[1,"dm-chip",3,"dm-chip-active"],[1,"dm-chip","dm-chip-clear"],[1,"dm-list"],[1,"dm-sep"],[1,"dm-paused-tag"],["matSuffix","","mat-icon-button","",3,"click"],[1,"dm-chip",3,"click"],[1,"dm-chip","dm-chip-clear",3,"click"],["icon","timeline","title","Quiet","hint","No events in this session \u2014 start an app to see status transitions, errors, and compiles"],["icon","filter_alt_off","title","No matches","hint","Adjust filters to see events"],[1,"dm-divider"],[1,"dm-event"],[1,"dm-time",3,"matTooltip"],[1,"dm-type"],[1,"dm-app",3,"routerLink"],[1,"dm-app","dm-app-empty"],[1,"dm-msg"],[1,"dm-divider-label"],[1,"dm-arrow"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div")(2,"h1"),s(3,"Events "),a(4,"span",1),s(5),r()(),a(6,"div",2)(7,"span",3),F(8,"span",4),s(9),r(),c(10,ve,4,0),c(11,ge,4,1),r()(),a(12,"div",5)(13,"button",6),h("click",function(){return i.togglePause()}),a(14,"mat-icon"),s(15),r(),s(16),r()()(),a(17,"div",7)(18,"mat-form-field",8)(19,"mat-label"),s(20,"App"),r(),a(21,"mat-select",9),h("ngModelChange",function(v){return i.appFilter.set(v)}),a(22,"mat-option",10),s(23,"All apps"),r(),E(24,_e,2,2,"mat-option",10,pe),r()(),a(26,"mat-form-field",11)(27,"mat-label"),s(28,"Search"),r(),a(29,"input",12),h("ngModelChange",function(v){return i.textFilter.set(v)}),r(),c(30,fe,3,0,"button",13),r(),a(31,"div",14),E(32,he,2,4,"button",15,L),c(34,ye,3,0,"button",16),r()(),c(35,Me,2,1)(36,Pe,3,0,"ol",17)),e&2&&(o(5),y("\xB7 ",i.liveEvents().length),o(2),w("dm-conn-on",i.api.connected()),o(2),y(" ",i.api.connected()?"live":"disconnected"," "),o(),p(i.paused()?10:-1),o(),p(i.paused()&&i.pendingCount()>0?11:-1),o(2),_("matTooltip",i.paused()?"Resume feed":"Pause feed"),o(2),u(i.paused()?"play_arrow":"pause"),o(),y(" ",i.paused()?"Resume":"Pause"," "),o(5),_("ngModel",i.appFilter()),o(),_("value",""),o(2),k(i.api.apps()),o(5),_("ngModel",i.textFilter()),o(),p(i.textFilter()?30:-1),o(2),k(i.types),o(2),p(i.typeFilter().size>0?34:-1),o(),p(i.rendered().length===0?35:36))},dependencies:[V,G,Y,Q,q,B,ie,ne,ee,te,re,ae,oe,le,se,de,U,J,H,A,j,K,z,X,Z],styles:["[_nghost-%COMP%]{display:block}.dm-count[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-weight:400}.dm-conn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem}.dm-conn-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;background:var(--mat-sys-outline)}.dm-conn-on[_ngcontent-%COMP%] .dm-conn-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary);box-shadow:0 0 0 3px color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline);margin:0 .15rem}.dm-paused-tag[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary);font-weight:500}.dm-toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:.5rem}.dm-app-filter[_ngcontent-%COMP%]{width:12rem}.dm-text-filter[_ngcontent-%COMP%]{flex:1;min-width:14rem;max-width:28rem}.dm-type-chips[_ngcontent-%COMP%]{display:flex;gap:.35rem;flex-wrap:wrap}.dm-chip[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);border-radius:999px;padding:4px 12px;font:500 .75rem/1rem Roboto;cursor:pointer;letter-spacing:.025rem}.dm-chip[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-chip-active[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-chip-clear[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 8px}.dm-chip-clear[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-lowest);overflow:hidden}.dm-event[_ngcontent-%COMP%]{display:grid;grid-template-columns:7.5rem max-content 10rem 1fr;gap:.75rem;align-items:center;height:28px;padding:0 .75rem;border-top:1px solid var(--mat-sys-outline-variant);font-size:.8125rem;color:var(--mat-sys-on-surface)}.dm-event[_ngcontent-%COMP%]:first-child{border-top:0}.dm-time[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-type[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:1px 8px;border-radius:999px;font:500 .6875rem/1rem Roboto;letter-spacing:.03rem;border:1px solid var(--mat-sys-outline-variant);text-transform:lowercase;white-space:nowrap}.dm-type[data-kind=status][_ngcontent-%COMP%], .dm-chip[data-kind=status].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 30%,transparent);color:var(--mat-sys-primary)}.dm-type[data-kind=health][_ngcontent-%COMP%], .dm-chip[data-kind=health].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-secondary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-secondary) 30%,transparent);color:var(--mat-sys-secondary)}.dm-type[data-kind=error][_ngcontent-%COMP%], .dm-chip[data-kind=error].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 32%,transparent);color:var(--mat-sys-error)}.dm-type[data-kind=compile][_ngcontent-%COMP%], .dm-chip[data-kind=compile].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 30%,transparent);color:var(--mat-sys-tertiary)}.dm-type[data-kind=log][_ngcontent-%COMP%], .dm-chip[data-kind=log].dm-chip-active[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant)}.dm-app[_ngcontent-%COMP%]{text-decoration:none;color:var(--mat-sys-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-app[_ngcontent-%COMP%]:hover{text-decoration:underline}.dm-app-empty[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dm-msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:.35rem}.dm-arrow[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-divider[_ngcontent-%COMP%]{height:18px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container)}.dm-divider-label[_ngcontent-%COMP%]{font:400 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);letter-spacing:.04rem}.dm-flash[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_dm-event-pulse .6s var(--dm-motion-easing)}@keyframes _ngcontent-%COMP%_dm-event-pulse{0%{background:color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}to{background:transparent}}@media(prefers-reduced-motion:reduce){.dm-flash[_ngcontent-%COMP%]{animation:none}}"],changeDetection:0})};function Ie(t){let n=Math.floor(t/1e3);if(n<60)return`${n}s gap`;let e=Math.floor(n/60);return e<60?`${e}m gap`:`${Math.floor(e/60)}h ${e%60}m gap`}export{me as EventsFeedComponent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as ge}from"./chunk-GYWEXV2L.js";import{a as re,b as ae,c as le,d as se,e as me,g as ce,h as de,k as pe,l as ue}from"./chunk-CM4RQF3A.js";import"./chunk-P5IU57TV.js";import"./chunk-NDSAQ2HK.js";import{b as X,f as G,h as K,j as Y}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as Z,c as ee,d as te}from"./chunk-H3L4MTG4.js";import"./chunk-OHX55ZU4.js";import{b as ne,d as ie,e as oe}from"./chunk-Q772THBA.js";import{a as J,b as U}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import{a as z,e as H,f as Q,h as q}from"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{b as B}from"./chunk-EIWOTZT3.js";import{h as $,i as j,j as W}from"./chunk-LBL7Z5BE.js";import{h as A}from"./chunk-Y6B6X4Y6.js";import{$b as I,Db as V,Eb as g,Fb as _,Ib as O,Jb as R,Kb as f,Lb as a,Mb as r,Nb as h,Sb as x,Ub as u,Va as T,Wb as c,_a as l,_b as N,ac as D,ea as S,gc as M,ic as s,ja as d,jc as y,ka as p,kc as b,lc as k,pb as E,ta as C,ub as L,xc as v,yc as F,za as P}from"./chunk-K43KW4K2.js";var xe=["viewport"],Ce=(i,t)=>t.name;function he(i,t){if(i&1&&(a(0,"span",7),s(1,"\xB7"),r(),a(2,"dm-mono")(3,"span",8),s(4),r()(),h(5,"dm-status-pill",9)),i&2){let e=t;l(4),y(e.name),l(),f("status",e.status)("health",e.health)}}function ve(i,t){if(i&1&&(a(0,"span",7),s(1,"\xB7"),r(),a(2,"span"),s(3),r()),i&2){let e=c();l(3),k("",e.filtered().length," / ",e.lines().length," lines")}}function ye(i,t){if(i&1){let e=x();a(0,"div",5)(1,"button",10),u("click",function(){d(e);let o=c();return p(o.togglePause())}),a(2,"mat-icon"),s(3),r(),s(4),r(),a(5,"button",11),u("click",function(){d(e);let o=c();return p(o.copyAll())}),a(6,"mat-icon"),s(7,"content_copy"),r(),s(8," Copy "),r(),a(9,"button",12),u("click",function(){d(e);let o=c();return p(o.clear())}),a(10,"mat-icon"),s(11,"delete_sweep"),r(),s(12," Clear "),r()()}if(i&2){let e=c();l(),f("matTooltip",e.paused()?"Resume":"Pause"),l(2),y(e.paused()?"play_arrow":"pause"),l(),b(" ",e.paused()?"Resume":"Pause"," ")}}function be(i,t){i&1&&h(0,"dm-empty",13)}function we(i,t){if(i&1&&(a(0,"mat-option",16),s(1),r()),i&2){let e=t.$implicit;f("value",e.name),l(),k("",e.name," (",e.status,")")}}function Se(i,t){if(i&1){let e=x();a(0,"mat-form-field",14)(1,"mat-label"),s(2,"Application"),r(),a(3,"mat-select",15),u("selectionChange",function(o){d(e);let m=c(2);return p(m.goto(o.value))}),O(4,we,2,3,"mat-option",16,Ce),r()()}if(i&2){let e=c(2);l(4),R(e.api.apps())}}function Me(i,t){if(i&1&&(a(0,"div",6)(1,"h3"),s(2,"Pick an app to tail"),r(),g(3,be,1,0,"dm-empty",13)(4,Se,6,0,"mat-form-field",14),r()),i&2){let e=c();l(3),_(e.api.apps().length===0?3:4)}}function ke(i,t){if(i&1){let e=x();a(0,"button",27),u("click",function(){d(e);let o=c(2);return p(o.filter.set(""))}),a(1,"mat-icon"),s(2,"close"),r()()}}function Pe(i,t){i&1&&(a(0,"span",22)(1,"mat-icon"),s(2,"warning"),r(),s(3),r()),i&2&&(l(3),b(" ",t," "))}function Te(i,t){if(i&1){let e=x();a(0,"button",28),u("click",function(){d(e);let o=c(2);return p(o.jumpToLatest())}),a(1,"mat-icon"),s(2,"arrow_downward"),r(),s(3," Jump to latest "),r()}}function Ee(i,t){if(i&1){let e=x();a(0,"button",30),u("click",function(){d(e);let o=c(3);return p(o.startApp())}),a(1,"mat-icon"),s(2,"play_arrow"),r(),s(3," Start app "),r()}}function Le(i,t){if(i&1&&(a(0,"dm-empty",24),g(1,Ee,4,0,"button",29),r()),i&2){let e,n=c(2);l(),_(((e=n.currentApp())==null?null:e.status)==="stopped"?1:-1)}}function Ve(i,t){i&1&&h(0,"dm-empty",25)}function Oe(i,t){if(i&1&&(a(0,"div",33)(1,"span",34),s(2),r(),h(3,"span",35),r()),i&2){let e=t.$implicit,n=c(3);V("data-sev",e.severity),l(2),y(n.fmtTs(e.ts)),l(),f("innerHTML",n.render(e.line),T)}}function Re(i,t){if(i&1){let e=x();a(0,"cdk-virtual-scroll-viewport",31,0),u("scrolledIndexChange",function(){d(e);let o=c(2);return p(o.onScroll())}),L(2,Oe,4,3,"div",32),r()}if(i&2){let e=c(2);l(2),f("cdkVirtualForOf",e.filtered())("cdkVirtualForTrackBy",e.trackTs)("cdkVirtualForTemplateCacheSize",0)}}function Ne(i,t){if(i&1){let e=x();a(0,"div",17)(1,"mat-form-field",18)(2,"mat-label"),s(3,"Filter"),r(),a(4,"input",19),u("ngModelChange",function(o){d(e);let m=c();return p(m.filter.set(o))}),r(),g(5,ke,3,0,"button",20),r(),a(6,"button",10),u("click",function(){d(e);let o=c();return p(o.useRegex.set(!o.useRegex()))}),a(7,"mat-icon"),s(8),r(),s(9," .* regex "),r(),a(10,"button",21),u("click",function(){d(e);let o=c();return p(o.jumpToNextError())}),a(11,"mat-icon"),s(12,"error"),r(),s(13," Next error "),r(),g(14,Pe,4,1,"span",22),g(15,Te,4,0,"button",23),r(),g(16,Le,2,1,"dm-empty",24)(17,Ve,1,0,"dm-empty",25)(18,Re,3,3,"cdk-virtual-scroll-viewport",26)}if(i&2){let e,n=c();l(4),f("ngModel",n.filter())("placeholder",n.useRegex()?"regex (case-insensitive)":"case-insensitive substring"),l(),_(n.filter()?5:-1),l(),M("dm-on",n.useRegex()),f("matTooltip",n.useRegex()?"Regex on \u2014 click to use substring":"Substring \u2014 click to use regex"),l(2),y(n.useRegex()?"check_circle":"pattern"),l(2),f("disabled",!n.hasNextError()),l(4),_((e=n.regexError())?14:-1,e),l(),_(n.stuckToBottom()?-1:15),l(),_(n.filtered().length===0&&n.lines().length===0?16:n.filtered().length===0?17:18)}}var w=1e3,Ie=/\x1b\[[0-9;]*m/g;function De(i){return/\berror:|\bERROR\b|\bError\b/.test(i)?"error":/\bWARN\b|\bWarning\b/.test(i)?"warn":"info"}function _e(i){let t=new Date(i),e=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0"),o=String(t.getSeconds()).padStart(2,"0"),m=String(t.getMilliseconds()).padStart(3,"0");return`${e}:${n}:${o}.${m}`}function Fe(i){return i.replace(/[&<>"']/g,t=>t==="&"?"&":t==="<"?"<":t===">"?">":t==='"'?""":"'")}function Ae(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var fe=class i{name="";api=S(W);router=S(B);viewport;lines=C([]);filter=C("");useRegex=C(!1);paused=C(!1);stuckToBottom=C(!0);buffered=[];stop;rafScheduled=!1;currentApp=v(()=>this.name?this.api.byName(this.name):void 0);filterState=v(()=>{let t=this.filter();if(!t)return{pred:null,error:null};if(!this.useRegex()){let e=t.toLowerCase();return{pred:n=>n.toLowerCase().includes(e),error:null}}try{let e=new RegExp(t,"i");return{pred:n=>e.test(n),error:null}}catch(e){return{pred:null,error:e?.message??"invalid regex"}}});regexError=v(()=>this.filterState().error);filtered=v(()=>{let{pred:t}=this.filterState(),e=this.lines();return t?e.filter(n=>t(n.line)):e});hasNextError=v(()=>this.filtered().some(t=>t.severity==="error"));constructor(){F(()=>{this.filtered(),this.stuckToBottom()&&this.scrollSoon()})}ngOnChanges(t){"name"in t&&(this.teardown(),this.lines.set([]),this.buffered=[],this.filter.set(""),this.stuckToBottom.set(!0),this.name&&this.openStream())}ngOnDestroy(){this.teardown()}openStream(){let t=this.name;this.stop=this.api.openLogStream(t,({ts:e,line:n})=>{let o=(n??"").replace(Ie,""),m={ts:e,line:o,severity:De(o)};if(this.paused()){this.buffered.push(m),this.buffered.length>w&&this.buffered.splice(0,this.buffered.length-w);return}this.append([m])})}append(t){this.lines.update(e=>{let n=e.concat(t);return n.length>w?n.slice(n.length-w):n})}teardown(){this.stop?.(),this.stop=void 0}togglePause(){let t=!this.paused();if(this.paused.set(t),!t&&this.buffered.length){let e=this.buffered;this.buffered=[],this.append(e)}}clear(){this.lines.set([]),this.buffered=[]}async copyAll(){let t=this.lines().map(e=>`${_e(e.ts)} ${e.line}`).join(`
|
|
2
|
+
`);try{await navigator.clipboard.writeText(t)}catch{}}onScroll(){let t=this.viewport;if(!t)return;let e=t.getRenderedRange().end,n=t.getDataLength();this.stuckToBottom.set(n===0||e>=n-1)}jumpToLatest(){this.stuckToBottom.set(!0),this.scrollSoon()}jumpToNextError(){let t=this.viewport;if(!t)return;let e=this.filtered();if(e.length===0)return;let n=Math.max(0,t.getRenderedRange().end),o=-1;for(let m=n;m<e.length;m++)if(e[m].severity==="error"){o=m;break}if(o===-1){for(let m=0;m<Math.min(n,e.length);m++)if(e[m].severity==="error"){o=m;break}}o!==-1&&(this.stuckToBottom.set(!1),t.scrollToIndex(o,"smooth"))}scrollSoon(){this.rafScheduled||(this.rafScheduled=!0,requestAnimationFrame(()=>{this.rafScheduled=!1;let t=this.viewport;if(!t)return;let e=t.getDataLength();e>0&&t.scrollToIndex(e,"auto")}))}goto(t){this.router.navigateByUrl(`/logs/${encodeURIComponent(t)}`)}startApp(){this.name&&this.api.startApp(this.name)}fmtTs(t){return _e(t)}trackTs=(t,e)=>e.ts+":"+e.line.length;render(t){let e=this.filter(),n=Fe(t);if(!e)return n;try{let o=this.useRegex()?new RegExp(e,"gi"):new RegExp(Ae(e),"gi");return n.replace(o,m=>`<mark>${m}</mark>`)}catch{return n}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=E({type:i,selectors:[["dm-logs-page"]],viewQuery:function(e,n){if(e&1&&N(xe,5),e&2){let o;I(o=D())&&(n.viewport=o.first)}},inputs:{name:"name"},features:[P],decls:13,vars:7,consts:[["viewport",""],[1,"dm-page-header"],[1,"dm-page-sub"],[1,"dm-conn"],[1,"dm-conn-dot"],[1,"dm-actions"],[1,"dm-picker"],[1,"dm-sep"],[1,"dm-app"],[3,"status","health"],["mat-stroked-button","",3,"click","matTooltip"],["mat-stroked-button","","matTooltip","Copy buffer",3,"click"],["mat-stroked-button","","matTooltip","Clear buffer",3,"click"],["icon","apps","title","No apps registered","hint","Add apps to your daimon config to see logs"],["appearance","outline",1,"dm-picker-field"],[3,"selectionChange"],[3,"value"],[1,"dm-toolbar"],["appearance","outline",1,"dm-filter"],["matInput","",3,"ngModelChange","ngModel","placeholder"],["matSuffix","","mat-icon-button",""],["mat-stroked-button","","matTooltip","Jump to next error",3,"click","disabled"],["matTooltip","Invalid regex",1,"dm-rxerr"],["mat-flat-button","","color","primary",1,"dm-jump"],["icon","terminal","title","No logs yet","hint","Start the app or wait for output"],["icon","filter_alt_off","title","No matches","hint","Adjust your filter to see lines"],["itemSize","22",1,"dm-viewport"],["matSuffix","","mat-icon-button","",3,"click"],["mat-flat-button","","color","primary",1,"dm-jump",3,"click"],["mat-flat-button","","color","primary"],["mat-flat-button","","color","primary",3,"click"],["itemSize","22",1,"dm-viewport",3,"scrolledIndexChange"],["class","dm-row",4,"cdkVirtualFor","cdkVirtualForOf","cdkVirtualForTrackBy","cdkVirtualForTemplateCacheSize"],[1,"dm-row"],[1,"dm-ts"],[1,"dm-line",3,"innerHTML"]],template:function(e,n){if(e&1&&(a(0,"div",1)(1,"div")(2,"h1"),s(3," Logs "),g(4,he,6,3),r(),a(5,"div",2)(6,"span",3),h(7,"span",4),s(8),r(),g(9,ve,4,2),r()(),g(10,ye,13,3,"div",5),r(),g(11,Me,5,1,"div",6)(12,Ne,19,11)),e&2){let o;l(4),_((o=n.currentApp())?4:-1,o),l(2),M("dm-conn-on",n.api.connected()),l(2),b(" ",n.api.connected()?"stream connected":"disconnected"," "),l(),_(n.name?9:-1),l(),_(n.name?10:-1),l(),_(n.name?12:11)}},dependencies:[A,Y,X,G,K,q,z,Q,H,se,le,re,ae,de,ce,me,ue,pe,te,ee,Z,j,$,ge,U,J,ne,ie,oe],styles:["[_nghost-%COMP%]{display:block}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline);margin:0 .15rem}.dm-app[_ngcontent-%COMP%]{color:var(--mat-sys-primary);font-weight:500}.dm-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-end}.dm-conn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem}.dm-conn-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;background:var(--mat-sys-outline)}.dm-conn-on[_ngcontent-%COMP%] .dm-conn-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary);box-shadow:0 0 0 3px color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}.dm-picker[_ngcontent-%COMP%]{max-width:32rem;margin:2rem auto;text-align:center}.dm-picker[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-weight:400;color:var(--mat-sys-on-surface-variant)}.dm-picker-field[_ngcontent-%COMP%]{width:100%}.dm-toolbar[_ngcontent-%COMP%]{display:flex;gap:1rem;align-items:center;margin-bottom:.75rem}.dm-filter[_ngcontent-%COMP%]{flex:1;max-width:28rem}.dm-jump[_ngcontent-%COMP%]{margin-left:auto}button.dm-on[_ngcontent-%COMP%]{color:var(--mat-sys-primary);border-color:var(--mat-sys-primary)}.dm-rxerr[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;color:var(--mat-sys-error);font:500 .8125rem/1rem Roboto}.dm-rxerr[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-viewport[_ngcontent-%COMP%]{height:calc(100vh - 13rem);min-height:24rem;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-lowest);contain:strict}.dm-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;height:22px;padding:0 .75rem;font-family:var(--dm-mono);font-size:.8125rem;line-height:22px;white-space:pre;border-left:3px solid transparent;color:var(--mat-sys-on-surface)}.dm-row[data-sev=error][_ngcontent-%COMP%]{border-left-color:var(--mat-sys-error);background:color-mix(in oklch,var(--mat-sys-error) 6%,transparent)}.dm-row[data-sev=warn][_ngcontent-%COMP%]{border-left-color:var(--mat-sys-tertiary);background:color-mix(in oklch,var(--mat-sys-tertiary) 5%,transparent)}.dm-ts[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);flex:0 0 auto}.dm-line[_ngcontent-%COMP%]{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.dm-line[_ngcontent-%COMP%] mark{background:color-mix(in oklch,var(--mat-sys-tertiary) 35%,transparent);color:var(--mat-sys-on-tertiary-container);padding:0 2px;border-radius:3px}"],changeDetection:0})};export{fe as LogsPageComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as J,b as X,c as Z,d as ee,e as te}from"./chunk-3WKRVGPT.js";import{a as Y}from"./chunk-WAN7TQQW.js";import"./chunk-NDSAQ2HK.js";import{b as H,c as W,d as K,e as Q}from"./chunk-Q772THBA.js";import{a as G,b as U}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import"./chunk-KLH6B22T.js";import{c as z}from"./chunk-EIWOTZT3.js";import{i as j,j as q}from"./chunk-LBL7Z5BE.js";import"./chunk-Y6B6X4Y6.js";import{Db as O,Eb as p,Fb as d,Gb as F,Hb as B,Ib as v,Jb as h,Kb as u,Lb as r,Mb as l,Nb as P,Sb as b,Ub as f,Wa as M,Wb as c,Ya as R,_a as o,ea as $,fc as L,gc as T,ic as s,ja as x,jc as m,ka as g,kc as y,mc as A,pa as V,pb as N,sc as S,ta as k,xc as E,yc as D}from"./chunk-K43KW4K2.js";var I=t=>["/apps",t],w=(t,n)=>n.key;function oe(t,n){t&1&&P(0,"dm-skeleton",3)}function re(t,n){if(t&1&&(s(0," \xB7 workspace "),r(1,"dm-mono"),s(2),l()),t&2){let e=c(2);o(2),m(e.workspace())}}function ae(t,n){if(t&1&&(s(0),p(1,re,3,1)),t&2){let e=c();A(" ",e.totalErrors()," ",e.totalErrors()===1?"error":"errors"," across ",e.appsWithErrors()," ",e.appsWithErrors()===1?"app":"apps"," "),o(),d(e.workspace()?1:-1)}}function le(t,n){if(t&1){let e=b();r(0,"button",20),f("click",function(){x(e);let a=c();return g(a.onQuery(""))}),r(1,"span",6),s(2,"close"),l()()}}function se(t,n){if(t&1){let e=b();r(0,"button",21),f("click",function(){let a=x(e).$implicit,_=c();return g(_.setSeverity(a.key))}),s(1),l()}if(t&2){let e=n.$implicit,i=c();T("active",i.severity()===e.key),O("aria-selected",i.severity()===e.key),o(),m(e.label)}}function ce(t,n){if(t&1){let e=b();r(0,"button",21),f("click",function(){let a=x(e).$implicit,_=c();return g(_.setGroupBy(a.key))}),s(1),l()}if(t&2){let e=n.$implicit,i=c();T("active",i.groupBy()===e.key),O("aria-selected",i.groupBy()===e.key),o(),m(e.label)}}function pe(t,n){t&1&&(r(0,"article",22),P(1,"div",23),r(2,"div",24),P(3,"dm-skeleton",25)(4,"dm-skeleton",26)(5,"dm-skeleton",27),l()())}function de(t,n){if(t&1&&(r(0,"div",16),v(1,pe,6,0,"article",22,B),l()),t&2){let e=c();o(),h(e.skeletonItems)}}function me(t,n){t&1&&(r(0,"dm-empty",17)(1,"div",28)(2,"a",29)(3,"span",6),s(4,"home"),l(),s(5,"Go home "),l()()())}function _e(t,n){if(t&1&&P(0,"dm-empty",18),t&2){let e=c();u("title","Clean \u2014 0 errors across "+e.api.apps().length+" apps")}}function ue(t,n){t&1&&P(0,"dm-empty",19)}function Ce(t,n){if(t&1){let e=b();r(0,"div",30)(1,"span",6),s(2,"info"),l(),r(3,"span"),s(4,"None of these errors include a file path on the same line as the error. Try "),r(5,"button",31),f("click",function(){x(e);let a=c(2);return g(a.setGroupBy("app"))}),s(6,"group by app"),l(),s(7,"."),l()()}}function fe(t,n){if(t&1&&P(0,"dm-status-pill",35),t&2){let e=c().$implicit;u("status",e.app.status)("health",e.app.health)}}function xe(t,n){if(t&1&&s(0),t&2){let e=c(3).$implicit;y(":",e.col)}}function ge(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,xe,1,1),l()),t&2){let e=c(2).$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function ye(t,n){if(t&1){let e=b();r(0,"a",45),f("click",function(a){x(e);let _=c().$implicit,C=c(4);return g(C.openEditor(a,_))}),r(1,"dm-mono"),s(2),p(3,ge,3,2,"span",46),l()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?3:-1)}}function ve(t,n){t&1&&(r(0,"span",41)(1,"dm-mono"),s(2,"\u2014"),l()())}function he(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),l()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function be(t,n){if(t&1&&(r(0,"span",44),s(1),l()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Ee(t,n){if(t&1&&(r(0,"div",39),p(1,ye,4,4,"a",40)(2,ve,3,0,"span",41),p(3,he,3,1,"span",42),r(4,"span",43),s(5),l(),p(6,be,2,1,"span",44),l()),t&2){let e=n.$implicit,i=c().$implicit;o(),d(e.file?1:i.allMissingFile?-1:2),o(2),d(e.code?3:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?6:-1)}}function Pe(t,n){if(t&1){let e=b();r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title"),P(3,"div",33),r(4,"span",34)(5,"dm-mono"),s(6),l()(),p(7,fe,1,2,"dm-status-pill",35),r(8,"span",36),s(9),l()(),r(10,"mat-panel-description")(11,"a",37),f("click",function(a){return x(e),g(a.stopPropagation())}),s(12," Open app"),r(13,"span",6),s(14,"chevron_right"),l()()()(),r(15,"div",38),v(16,Ee,7,5,"div",39,F),l()()}if(t&2){let e=n.$implicit,i=c(3);o(3),L("background",i.tone(e.workspaceLabel)),o(3),m(e.key),o(),d(e.app?7:-1),o(2),m(e.errors.length),o(2),u("routerLink",S(8,I,e.key)),o(4),T("rows-nofile",e.allMissingFile),o(),h(e.errors)}}function ke(t,n){if(t&1&&v(0,Pe,18,10,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byApp())}}function we(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),l()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function Me(t,n){if(t&1&&s(0),t&2){let e=c(2).$implicit;y(":",e.col)}}function Fe(t,n){if(t&1){let e=b();r(0,"a",49),f("click",function(a){x(e);let _=c().$implicit,C=c(4);return g(C.openEditor(a,_))}),r(1,"dm-mono"),s(2),p(3,Me,1,1),l()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M),o(2),y(":",e.line),o(),d(e.col?3:-1)}}function Te(t,n){if(t&1&&(r(0,"span",44),s(1),l()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Se(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),f("click",function(a){return x(e),g(a.stopPropagation())}),r(2,"dm-mono"),s(3),l()(),p(4,we,3,1,"span",42),r(5,"span",43),s(6),l(),p(7,Fe,4,3,"a",48),p(8,Te,2,1,"span",44),l()}if(t&2){let e=n.$implicit;o(),u("routerLink",S(7,I,e.app)),o(2),m(e.app),o(),d(e.code?4:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.line?7:-1),o(),d(e.count>1?8:-1)}}function Oe(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",34)(4,"dm-mono"),s(5),l()(),r(6,"span",36),s(7),l()()(),r(8,"div",38),v(9,Se,9,9,"div",39,F),l()()),t&2){let e=n.$implicit,i=c(3);o(5),m(i.shortPath(e.key)),o(2),m(e.errors.length),o(2),h(e.errors)}}function Ie(t,n){if(t&1&&v(0,Oe,11,2,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byFile())}}function $e(t,n){t&1&&(r(0,"span",50),s(1),l()),t&2&&(o(),m(n))}function De(t,n){if(t&1&&s(0),t&2){let e=c(2).$implicit;y(":",e.col)}}function Ve(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,De,1,1),l()),t&2){let e=c().$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function Re(t,n){if(t&1&&(r(0,"span",44),s(1),l()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function Ne(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),f("click",function(a){return x(e),g(a.stopPropagation())}),r(2,"dm-mono"),s(3),l()(),r(4,"a",45),f("click",function(a){let _=x(e).$implicit,C=c(4);return g(C.openEditor(a,_))}),r(5,"dm-mono"),s(6),p(7,Ve,3,2,"span",46),l()(),r(8,"span",43),s(9),l(),p(10,Re,2,1,"span",44),l()}if(t&2){let e=n.$implicit,i=c(4);o(),u("routerLink",S(9,I,e.app)),o(2),m(e.app),o(),u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?7:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?10:-1)}}function Be(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",34)(4,"dm-mono"),s(5),l()(),p(6,$e,2,1,"span",50),r(7,"span",36),s(8),l()()(),r(9,"div",38),v(10,Ne,11,11,"div",39,F),l()()),t&2){let e,i=n.$implicit,a=c(3);o(5),m(i.key),o(),d((e=a.codeHint(i.key))?6:-1,e),o(2),m(i.errors.length),o(2),h(i.errors)}}function Le(t,n){if(t&1&&v(0,Be,12,3,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byCode())}}function Ae(t,n){if(t&1&&s(0),t&2){let e=c(3).$implicit;y(":",e.col)}}function ze(t,n){if(t&1&&(r(0,"span",46),s(1),p(2,Ae,1,1),l()),t&2){let e=c(2).$implicit;o(),y(":",e.line),o(),d(e.col?2:-1)}}function je(t,n){if(t&1){let e=b();r(0,"a",45),f("click",function(a){x(e);let _=c().$implicit,C=c(4);return g(C.openEditor(a,_))}),r(1,"dm-mono"),s(2),p(3,ze,3,2,"span",46),l()()}if(t&2){let e=c().$implicit,i=c(4);u("href",i.editorUrl(e),M)("matTooltip",e.file),o(2),m(i.shortPath(e.file)),o(),d(e.line?3:-1)}}function Ge(t,n){t&1&&(r(0,"span",41)(1,"dm-mono"),s(2,"\u2014"),l()())}function Ue(t,n){if(t&1&&(r(0,"span",42)(1,"dm-mono"),s(2),l()()),t&2){let e=c().$implicit;o(2),m(e.code)}}function qe(t,n){if(t&1&&(r(0,"span",44),s(1),l()),t&2){let e=c().$implicit;o(),y("\xD7",e.count)}}function He(t,n){if(t&1){let e=b();r(0,"div",39)(1,"a",47),f("click",function(a){return x(e),g(a.stopPropagation())}),r(2,"dm-mono"),s(3),l()(),p(4,je,4,4,"a",40)(5,Ge,3,0,"span",41),p(6,Ue,3,1,"span",42),r(7,"span",43),s(8),l(),p(9,qe,2,1,"span",44),l()}if(t&2){let e=n.$implicit;o(),u("routerLink",S(7,I,e.app)),o(2),m(e.app),o(),d(e.file?4:5),o(2),d(e.code?6:-1),o(),u("matTooltip",e.message),o(),m(e.message),o(),d(e.count>1?9:-1)}}function We(t,n){if(t&1&&(r(0,"mat-expansion-panel",32)(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"span",51),s(4),l(),r(5,"span",36),s(6),l()()(),r(7,"div",38),v(8,He,10,9,"div",39,F),l()()),t&2){let e=n.$implicit;o(3),O("data-tool",e.key),o(),m(e.key),o(2),m(e.errors.length),o(2),h(e.errors)}}function Ke(t,n){if(t&1&&v(0,We,10,3,"mat-expansion-panel",32,w),t&2){let e=c(2);h(e.byTool())}}function Qe(t,n){if(t&1&&(p(0,Ce,8,0,"div",30),r(1,"div",16),p(2,ke,2,0)(3,Ie,2,0)(4,Le,2,0)(5,Ke,2,0),l()),t&2){let e,i=c();d(i.groupBy()==="file"&&i.allFilesMissing()?0:-1),o(2),d((e=i.groupBy())==="app"?2:e==="file"?3:e==="code"?4:e==="tool"?5:-1)}}var ne="daimon.workspace",Ye={TS2322:"Type is not assignable to target type",TS2345:"Argument type mismatch",TS2339:"Property does not exist on type",TS18046:"Variable is of type unknown",TS2304:"Cannot find name",TS7006:"Parameter implicitly has an any type",TS6133:"Declared but never used",TS2769:"No overload matches this call"},ie=class t{api=$(q);destroyRef=$(V);raw=k(new Map);loading=k(!1);query=k("");severity=k("with-errors");groupBy=k("app");workspace=k(null);skeletonItems=[0,1,2];severityFilters=[{key:"all",label:"all"},{key:"with-errors",label:"with-errors"},{key:"code:TS",label:"code:TS*"},{key:"code:other",label:"code:other"}];groupOptions=[{key:"app",label:"app"},{key:"file",label:"file"},{key:"code",label:"code"},{key:"tool",label:"tool"}];tone=Y;appsByName=E(()=>{let n=new Map;for(let e of this.api.apps())n.set(e.name,e);return n});flat=E(()=>{let n=[],e=this.appsByName();for(let[i,a]of this.raw()){let _=e.get(i);for(let C of a)n.push({app:i,workspaceLabel:_?.workspaceLabel??null,file:C.parsed?.file??"",line:C.parsed?.line??null,col:C.parsed?.col??null,code:C.parsed?.code??"",message:C.parsed?.message??C.message??"",count:C.count??1,tool:C.parsed?.tool??""})}return n});totalErrors=E(()=>this.flat().reduce((n,e)=>n+e.count,0));appsWithErrors=E(()=>{let n=new Set;for(let e of this.flat())n.add(e.app);return n.size});filteredFlat=E(()=>{let n=this.query().trim().toLowerCase(),e=this.severity(),i=this.workspace();return this.flat().filter(a=>!(i&&a.workspaceLabel!==i||(e==="with-errors"&&!a.code&&a.file,e==="code:TS"&&!/^TS\d+/i.test(a.code))||e==="code:other"&&/^TS\d+/i.test(a.code)||n&&!`${a.file} ${a.code} ${a.message}`.toLowerCase().includes(n)))});byApp=E(()=>{let n=new Map;for(let i of this.filteredFlat()){let a=n.get(i.app);a?a.push(i):n.set(i.app,[i])}let e=this.appsByName();return Array.from(n.entries()).map(([i,a])=>({key:i,app:e.get(i)??null,workspaceLabel:e.get(i)?.workspaceLabel??null,errors:a,allMissingFile:a.every(_=>!_.file)})).sort((i,a)=>a.errors.length-i.errors.length)});byFile=E(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.file||"(no file detected)",a=n.get(i);a?a.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});allFilesMissing=E(()=>{let n=this.filteredFlat();return n.length?n.every(e=>!e.file):!1});byCode=E(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.code||"(no-code)",a=n.get(i);a?a.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});byTool=E(()=>{let n=new Map;for(let e of this.filteredFlat()){let i=e.tool||"(unknown)",a=n.get(i);a?a.push(e):n.set(i,[e])}return Array.from(n.entries()).map(([e,i])=>({key:e,errors:i})).sort((e,i)=>i.errors.length-e.errors.length)});appsKey=E(()=>this.api.apps().map(n=>n.name).sort().join("|"));lastEventCount=0;busy=!1;constructor(){this.workspace.set(localStorage.getItem(ne));let n=e=>this.workspace.set(e.detail??null);window.addEventListener("daimon:workspace",n),this.destroyRef.onDestroy(()=>window.removeEventListener("daimon:workspace",n)),D(()=>{this.appsKey()&&this.fetchAll()}),D(()=>{let e=this.api.events(),i=e.slice(this.lastEventCount);this.lastEventCount=e.length,i.some(a=>a.type==="error-new"||a.type==="error-recur"||a.type==="status")&&this.fetchAll()})}async ngOnInit(){this.api.apps().length===0&&!this.api.ready()?await this.api.refresh():await this.fetchAll()}ngOnDestroy(){}onStorage(n){n.key===ne&&this.workspace.set(n.newValue)}refresh(){this.fetchAll()}onQuery(n){this.query.set(n)}setSeverity(n){this.severity.set(n)}setGroupBy(n){this.groupBy.set(n)}codeHint(n){return Ye[n]??""}shortPath(n){if(!n)return"\u2014";let e=n.split(/[\\/]/);return e.length<=3?n:"\u2026/"+e.slice(-2).join("/")}editorUrl(n){if(!n.file)return"#";let e=n.line??1,i=n.col??1;return`vscode://file/${n.file}:${e}:${i}`}openEditor(n,e){if(!e.file){n.preventDefault();return}n.preventDefault(),window.open(this.editorUrl(e),"_self")}async fetchAll(){if(!this.busy){this.busy=!0,this.loading.set(!0);try{let n=this.api.apps(),e=await Promise.all(n.map(async a=>[a.name,await this.api.appErrors(a.name)])),i=new Map;for(let[a,_]of e)i.set(a,_);this.raw.set(i)}finally{this.busy=!1,this.loading.set(!1)}}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["dm-errors-panel"]],hostBindings:function(e,i){e&1&&f("storage",function(_){return i.onStorage(_)},R)},decls:31,vars:7,consts:[[1,"dm-page"],[1,"dm-page-header"],[1,"dm-page-sub"],["width","14rem","height",".875rem"],[1,"dm-header-actions"],["type","button","matTooltip","Refresh","aria-label","Refresh",1,"ib",3,"click","disabled"],[1,"material-symbols-outlined"],[1,"dm-filterbar"],[1,"dm-search"],[1,"material-symbols-outlined","dm-search-icon"],["type","search","placeholder","Filter by file, code, or message\u2026","aria-label","Filter errors",3,"input","value"],["type","button","aria-label","Clear",1,"dm-search-clear"],["role","tablist","aria-label","Severity filter",1,"dm-chips"],["type","button","role","tab",1,"dm-chip",3,"active"],["role","tablist","aria-label","Group by",1,"dm-chips"],[1,"dm-chips-label"],[1,"dm-cards"],["icon","error","title","No apps to scan","hint","Discover some apps first"],["icon","check_circle","hint","The last build was clean. Keep going.",3,"title"],["icon","filter_alt_off","title","No matches","hint","Try clearing the search or severity filter"],["type","button","aria-label","Clear",1,"dm-search-clear",3,"click"],["type","button","role","tab",1,"dm-chip",3,"click"],[1,"dm-card-sk"],[1,"dm-sk-accent"],[1,"dm-sk-body"],["width","40%","height","1.125rem"],["width","70%","height",".875rem"],["width","55%","height",".875rem"],[1,"dm-empty-actions"],["routerLink","/",1,"dm-link-btn"],[1,"dm-hint"],["type","button",1,"dm-link",3,"click"],["expanded","",1,"dm-panel"],[1,"ac"],[1,"ttl"],[3,"status","health"],[1,"eb"],[1,"lnk",3,"click","routerLink"],[1,"rows"],[1,"row"],[1,"loc",3,"href","matTooltip"],[1,"loc","dim"],[1,"code"],[1,"msg",3,"matTooltip"],[1,"cnt"],[1,"loc",3,"click","href","matTooltip"],[1,"dim"],[1,"loc",3,"click","routerLink"],[1,"dim","ln",3,"href"],[1,"dim","ln",3,"click","href"],[1,"hint"],[1,"tool-chip"]],template:function(e,i){e&1&&(r(0,"div",0)(1,"header",1)(2,"div")(3,"h1"),s(4,"Errors"),l(),r(5,"div",2),p(6,oe,1,0,"dm-skeleton",3)(7,ae,2,5),l()(),r(8,"div",4)(9,"button",5),f("click",function(){return i.refresh()}),r(10,"span",6),s(11,"refresh"),l()()()(),r(12,"div",7)(13,"div",8)(14,"span",9),s(15,"search"),l(),r(16,"input",10),f("input",function(_){return i.onQuery(_.target.value)}),l(),p(17,le,3,0,"button",11),l(),r(18,"div",12),v(19,se,2,4,"button",13,w),l(),r(21,"div",14)(22,"span",15),s(23,"Group by"),l(),v(24,ce,2,4,"button",13,w),l()(),p(26,de,3,0,"div",16)(27,me,6,0,"dm-empty",17)(28,_e,1,1,"dm-empty",18)(29,ue,1,0,"dm-empty",19)(30,Qe,6,2),l()),e&2&&(o(6),d(i.loading()?6:7),o(3),u("disabled",i.loading()),o(),T("spin",i.loading()),o(6),u("value",i.query()),o(),d(i.query()?17:-1),o(2),h(i.severityFilters),o(5),h(i.groupOptions),o(2),d(i.loading()&&!i.raw().size?26:i.api.apps().length===0?27:i.totalErrors()===0?28:i.filteredFlat().length===0?29:30))},dependencies:[z,te,J,X,ee,Z,j,U,G,H,W,K,Q],styles:["[_nghost-%COMP%]{display:block}.dm-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.dm-page-header[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font:400 1.5rem/2rem Roboto}.dm-page-sub[_ngcontent-%COMP%]{font:400 .8125rem/1.25rem Roboto;color:var(--mat-sys-on-surface-variant);margin-top:.25rem;display:flex;gap:.25rem;flex-wrap:wrap;align-items:center}.dm-header-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.ib[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;color:var(--mat-sys-on-surface-variant);cursor:pointer}.ib[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.ib[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed}.ib[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_dm-spin 1s linear infinite}@keyframes _ngcontent-%COMP%_dm-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin[_ngcontent-%COMP%]{animation:none}}.dm-filterbar[_ngcontent-%COMP%]{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.5rem;background:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant);border-radius:12px}.dm-search[_ngcontent-%COMP%]{position:relative;flex:1;min-width:220px;display:inline-flex;align-items:center;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:10px}.dm-search[_ngcontent-%COMP%]:focus-within{border-color:var(--mat-sys-primary)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1;border:0;outline:0;background:transparent;padding:8px 36px;font:400 .875rem/1.25rem Roboto;color:var(--mat-sys-on-surface)}.dm-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:var(--mat-sys-on-surface-variant)}.dm-search-icon[_ngcontent-%COMP%]{position:absolute;left:10px;pointer-events:none;font-size:18px;color:var(--mat-sys-on-surface-variant)}.dm-search-clear[_ngcontent-%COMP%]{position:absolute;right:6px;background:transparent;border:0;cursor:pointer;color:var(--mat-sys-on-surface-variant);width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center}.dm-search-clear[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-search-clear[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.dm-chips[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px;border-radius:10px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);gap:2px}.dm-chips-label[_ngcontent-%COMP%]{font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant);padding:0 .5rem 0 .25rem}.dm-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:5px 10px;border-radius:8px;background:transparent;border:0;color:var(--mat-sys-on-surface-variant);cursor:pointer;font:500 .8125rem/1rem Roboto}.dm-chip[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.dm-chip.active[_ngcontent-%COMP%]{background:var(--mat-sys-surface);color:var(--mat-sys-primary);box-shadow:var(--mat-sys-level1)}.dm-cards[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.dm-hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:10px;background:color-mix(in oklch,var(--mat-sys-tertiary) 10%,transparent);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 24%,transparent);color:var(--mat-sys-on-surface);font:400 .8125rem/1.25rem Roboto}.dm-hint[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px;color:var(--mat-sys-tertiary)}.dm-hint[_ngcontent-%COMP%] .dm-link[_ngcontent-%COMP%]{background:transparent;border:0;padding:0;color:var(--mat-sys-primary);cursor:pointer;font:500 .8125rem/1.25rem Roboto;text-decoration:underline}.dm-panel[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)!important;border:1px solid var(--mat-sys-outline-variant);border-radius:14px!important;overflow:hidden;box-shadow:none!important}.dm-panel.mat-expanded[_ngcontent-%COMP%]{box-shadow:var(--mat-sys-level1)!important} .dm-panel .mat-expansion-panel-header{padding:0 1rem;height:56px;background:var(--mat-sys-surface-container-low)} .dm-panel .mat-expansion-panel-header:hover{background:var(--mat-sys-surface-container)!important} .dm-panel .mat-expansion-panel-body{padding:0 1rem 1rem} .dm-panel .mat-expansion-panel-content{background:var(--mat-sys-surface-container-low)}.ac[_ngcontent-%COMP%]{width:4px;height:24px;border-radius:2px;margin-right:.5rem}.ttl[_ngcontent-%COMP%]{font:500 .9375rem/1.25rem Roboto;display:inline-flex;align-items:center;gap:.5rem}.hint[_ngcontent-%COMP%]{font:400 .75rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);margin-left:.5rem}mat-panel-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}mat-panel-description[_ngcontent-%COMP%]{justify-content:flex-end;color:var(--mat-sys-on-surface-variant)}.eb[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:1px 8px;border-radius:999px;font:600 .75rem/1rem Roboto;background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);color:var(--mat-sys-error);border:1px solid color-mix(in oklch,var(--mat-sys-error) 30%,transparent);margin-left:.25rem}.lnk[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.125rem;color:var(--mat-sys-primary);text-decoration:none;font:500 .8125rem/1.25rem Roboto}.lnk[_ngcontent-%COMP%]:hover{text-decoration:underline}.lnk[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:16px}.rows[_ngcontent-%COMP%]{display:flex;flex-direction:column}.row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1.4fr) auto minmax(0,2fr) auto;align-items:center;gap:.75rem;padding:.5rem .25rem;border-bottom:1px solid var(--mat-sys-outline-variant)}.rows-nofile[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{grid-template-columns:auto minmax(0,1fr) auto}.row[_ngcontent-%COMP%]:last-child{border-bottom:0}.row[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.loc[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.loc[_ngcontent-%COMP%]:hover{text-decoration:underline}.dim[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.ln[_ngcontent-%COMP%]{justify-self:end}.code[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:1px 8px;border-radius:6px;background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);color:var(--mat-sys-tertiary);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent);font-weight:500}.tool-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 10px;border-radius:6px;background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface);border:1px solid var(--mat-sys-outline-variant);font:600 .8125rem/1.125rem Roboto;text-transform:lowercase;letter-spacing:.02rem}.tool-chip[data-tool=esbuild][_ngcontent-%COMP%], .tool-chip[data-tool=vite][_ngcontent-%COMP%]{color:var(--mat-sys-primary);border-color:color-mix(in oklch,var(--mat-sys-primary) 36%,transparent)}.tool-chip[data-tool=jest][_ngcontent-%COMP%], .tool-chip[data-tool=nx][_ngcontent-%COMP%]{color:var(--mat-sys-secondary);border-color:color-mix(in oklch,var(--mat-sys-secondary) 36%,transparent)}.tool-chip[data-tool=storybook][_ngcontent-%COMP%], .tool-chip[data-tool=webpack][_ngcontent-%COMP%]{color:var(--mat-sys-tertiary);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 36%,transparent)}.tool-chip[data-tool=node][_ngcontent-%COMP%], .tool-chip[data-tool=typescript][_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cnt[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font:500 .75rem/1rem Roboto;justify-self:end}.dm-card-sk[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low);border:1px solid var(--mat-sys-outline-variant);border-radius:14px;overflow:hidden}.dm-sk-accent[_ngcontent-%COMP%]{height:4px;background:var(--mat-sys-surface-container)}.dm-sk-body[_ngcontent-%COMP%]{padding:1rem;display:flex;flex-direction:column;gap:.5rem}.dm-empty-actions[_ngcontent-%COMP%]{margin-top:.75rem}.dm-link-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:6px 14px;border-radius:10px;background:var(--mat-sys-primary);color:var(--mat-sys-on-primary);text-decoration:none;font:500 .875rem/1.25rem Roboto}.dm-link-btn[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}@media(max-width:760px){.row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:.25rem}.ln[_ngcontent-%COMP%], .cnt[_ngcontent-%COMP%]{justify-self:start}}"],changeDetection:0})};export{ie as ErrorsPanelComponent};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{k as v}from"./chunk-
|
|
1
|
+
import{k as v}from"./chunk-LBL7Z5BE.js";import{Db as h,Eb as l,Fb as d,Ob as a,Pb as s,Qb as p,Wb as u,Xb as f,Yb as g,_a as i,fc as y,ic as c,jc as m,pb as r}from"./chunk-K43KW4K2.js";var M=["*"];function _(e,o){if(e&1&&(a(0,"span",1),c(1),s()),e&2){let t=u();i(),m(t.icon)}}function E(e,o){if(e&1&&(a(0,"p",3),c(1),s()),e&2){let t=u();i(),m(t.hint)}}var b=class e{status="stopped";health="unknown";badge=()=>v({status:this.status,health:this.health});kind=()=>this.badge().kind;static \u0275fac=function(t){return new(t||e)};static \u0275cmp=r({type:e,selectors:[["dm-status-pill"]],inputs:{status:"status",health:"health"},decls:4,vars:4,consts:[[1,"dm-pill"],[1,"dm-dot"]],template:function(t,n){t&1&&(a(0,"span",0),p(1,"span",1),a(2,"span"),c(3),s()()),t&2&&(h("data-kind",n.kind()),i(),y("background",n.badge().color),i(2),m(n.badge().label))},styles:["[_nghost-%COMP%]{display:inline-flex}.dm-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.4rem;padding:2px 10px;border-radius:999px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface);font:500 .75rem/1rem Roboto;letter-spacing:.025rem}.dm-pill[data-kind=serving][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 12%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 28%,transparent)}.dm-pill[data-kind=compiling][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent)}.dm-pill[data-kind=starting][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-secondary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-secondary) 28%,transparent)}.dm-pill[data-kind=error][_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 30%,transparent);color:var(--mat-sys-error)}.dm-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:999px;box-shadow:0 0 0 2px color-mix(in oklch,currentColor 18%,transparent)}"],changeDetection:0})},C=class e{width="100%";height="1em";static \u0275fac=function(t){return new(t||e)};static \u0275cmp=r({type:e,selectors:[["dm-skeleton"]],inputs:{width:"width",height:"height"},decls:1,vars:4,consts:[[1,"dm-sk"]],template:function(t,n){t&1&&p(0,"span",0),t&2&&y("width",n.width)("height",n.height)},styles:[".dm-sk[_ngcontent-%COMP%]{display:inline-block;border-radius:6px;background:linear-gradient(90deg,var(--mat-sys-surface-container) 0%,var(--mat-sys-surface-container-high) 50%,var(--mat-sys-surface-container) 100%);background-size:200% 100%;animation:_ngcontent-%COMP%_dm-shimmer 1.4s linear infinite}@keyframes _ngcontent-%COMP%_dm-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){.dm-sk[_ngcontent-%COMP%]{animation:none}}"],changeDetection:0})},x=class e{icon="";title="";hint="";static \u0275fac=function(t){return new(t||e)};static \u0275cmp=r({type:e,selectors:[["dm-empty"]],inputs:{icon:"icon",title:"title",hint:"hint"},ngContentSelectors:M,decls:6,vars:3,consts:[[1,"dm-empty"],[1,"material-symbols-outlined","dm-empty-icon"],[1,"dm-empty-title"],[1,"dm-empty-hint"]],template:function(t,n){t&1&&(f(),a(0,"div",0),l(1,_,2,1,"span",1),a(2,"h3",2),c(3),s(),l(4,E,2,1,"p",3),g(5),s()),t&2&&(i(),d(n.icon?1:-1),i(2),m(n.title),i(),d(n.hint?4:-1))},styles:[".dm-empty[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:3rem 1rem;text-align:center;color:var(--mat-sys-on-surface-variant)}.dm-empty-icon[_ngcontent-%COMP%]{font-size:48px;opacity:.55}.dm-empty-title[_ngcontent-%COMP%]{font:500 1.125rem/1.5rem Roboto;color:var(--mat-sys-on-surface);margin:0}.dm-empty-hint[_ngcontent-%COMP%]{font:400 .875rem/1.25rem Roboto;max-width:36rem;margin:0}"],changeDetection:0})},k=class e{static \u0275fac=function(t){return new(t||e)};static \u0275cmp=r({type:e,selectors:[["dm-mono"]],ngContentSelectors:M,decls:2,vars:0,consts:[[1,"dm-mono"]],template:function(t,n){t&1&&(f(),a(0,"span",0),g(1),s())},styles:[".dm-mono[_ngcontent-%COMP%]{font-family:Roboto Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem;letter-spacing:0}"],changeDetection:0})};var T=(()=>{class e{static \u0275fac=function(n){return new(n||e)};static \u0275cmp=r({type:e,selectors:[["structural-styles"]],decls:0,vars:0,template:function(n,P){},styles:[`.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border-width:var(--mat-focus-indicator-border-width, 3px);border-style:var(--mat-focus-indicator-border-style, solid);border-color:var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:""}@media(forced-colors: active){html{--mat-focus-indicator-display: block}}
|
|
2
2
|
`],encapsulation:2,changeDetection:0})}return e})();export{T as a,b,C as c,x as d,k as e};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as et,b as tt,c as it}from"./chunk-I65I7J5Q.js";import{a as Xe,b as Ge,c as Qe,d as Ye,e as Ze}from"./chunk-3WKRVGPT.js";import{a as Se,b as Me}from"./chunk-CILFSVSP.js";import{a as Ve}from"./chunk-7NPLP3QD.js";import{a as Je,b as We,c as Ue,d as Ke}from"./chunk-GYWEXV2L.js";import{a as Ae,b as Ne,c as ze,d as $e,h as je,i as Le,j as qe,k as Be,l as He}from"./chunk-CM4RQF3A.js";import"./chunk-P5IU57TV.js";import"./chunk-NDSAQ2HK.js";import{a as ye,b as we,c as xe,f as Ce,h as ke,j as Ee}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as Oe,c as Ie,d as Pe}from"./chunk-H3L4MTG4.js";import{d as Te}from"./chunk-OHX55ZU4.js";import{a as Fe,c as De,e as Re}from"./chunk-Q772THBA.js";import{a as be,b as ve}from"./chunk-K7S4ITPJ.js";import"./chunk-YNQPX5G6.js";import"./chunk-7C772RJ3.js";import"./chunk-6WZJCF24.js";import{m as fe}from"./chunk-KLH6B22T.js";import{c as me,h as ue,i as _e}from"./chunk-LBL7Z5BE.js";import{G as ge,P as H,h as ce,t as pe,v as he}from"./chunk-Y6B6X4Y6.js";import{$b as ne,Ca as Q,Db as O,Eb as f,Ec as le,Fb as b,Gb as ee,Hb as A,Hc as T,Ib as k,Ic as de,Jb as E,Kb as u,Lb as o,Mb as r,Nb as x,Sb as _,Tb as te,Ub as p,Wb as l,Xb as N,Ya as Y,Yb as z,_ as W,_a as c,_b as ie,a as L,aa as U,ac as ae,b as q,ca as K,db as B,ea as y,ec as S,gc as M,hc as oe,ic as d,ja as h,jc as C,ka as g,kc as P,la as X,pb as F,qb as Z,rc as re,s as R,ta as w,xc as V,za as G,zc as se}from"./chunk-K43KW4K2.js";var dt=["mat-internal-form-field",""],ct=["*"],at=(()=>{class a{labelPosition;static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(t,n){t&2&&M("mdc-form-field--align-end",n.labelPosition==="before")},inputs:{labelPosition:"labelPosition"},attrs:dt,ngContentSelectors:ct,decls:1,vars:0,template:function(t,n){t&1&&(N(),z(0))},styles:[`.mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}
|
|
2
2
|
`],encapsulation:2,changeDetection:0})}return a})();var mt=["switch"],pt=["*"];function ht(a,i){a&1&&(o(0,"span",11),X(),o(1,"svg",13),x(2,"path",14),r(),o(3,"svg",15),x(4,"path",16),r()())}var gt=new K("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})}),$=class{source;checked;constructor(i,e){this.source=i,this.checked=e}},J=(()=>{class a{_elementRef=y(Q);_focusMonitor=y(pe);_changeDetectorRef=y(le);defaults=y(gt);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new $(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=fe();_focused;name=null;id;labelPosition="after";ariaLabel=null;ariaLabelledby=null;ariaDescribedby;required;color;disabled=!1;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}hideIcon;disabledInteractive;change=new B;toggleChange=new B;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){y(he).load(Fe);let e=y(new se("tabindex"),{optional:!0}),t=this.defaults;this.tabIndex=e==null?0:parseInt(e)||0,this.color=t.color||"accent",this.id=this._uniqueId=y(ge).getId("mat-mdc-slide-toggle-"),this.hideIcon=t.hideIcon??!1,this.disabledInteractive=t.disabledInteractive??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{e==="keyboard"||e==="program"?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.disabled||(this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new $(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=F({type:a,selectors:[["mat-slide-toggle"]],viewQuery:function(t,n){if(t&1&&ie(mt,5),t&2){let s;ne(s=ae())&&(n._switchElement=s.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(t,n){t&2&&(te("id",n.id),O("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),oe(n.color?"mat-"+n.color:""),M("mat-mdc-slide-toggle-focused",n._focused)("mat-mdc-slide-toggle-checked",n.checked)("_mat-animation-noopable",n._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],required:[2,"required","required",T],color:"color",disabled:[2,"disabled","disabled",T],disableRipple:[2,"disableRipple","disableRipple",T],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:de(e)],checked:[2,"checked","checked",T],hideIcon:[2,"hideIcon","hideIcon",T],disabledInteractive:[2,"disabledInteractive","disabledInteractive",T]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[re([{provide:ye,useExisting:W(()=>a),multi:!0},{provide:xe,useExisting:a,multi:!0}]),G],ngContentSelectors:pt,decls:14,vars:27,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mat-mdc-slide-toggle-touch-target"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(t,n){if(t&1){let s=_();N(),o(0,"div",1)(1,"button",2,0),p("click",function(){return h(s),g(n._handleClick())}),x(3,"div",3)(4,"span",4),o(5,"span",5)(6,"span",6)(7,"span",7),x(8,"span",8),r(),o(9,"span",9),x(10,"span",10),r(),f(11,ht,5,0,"span",11),r()()(),o(12,"label",12),p("click",function(v){return h(s),g(v.stopPropagation())}),z(13),r()()}if(t&2){let s=S(2);u("labelPosition",n.labelPosition),c(),M("mdc-switch--selected",n.checked)("mdc-switch--unselected",!n.checked)("mdc-switch--checked",n.checked)("mdc-switch--disabled",n.disabled)("mat-mdc-slide-toggle-disabled-interactive",n.disabledInteractive),u("tabIndex",n.disabled&&!n.disabledInteractive?-1:n.tabIndex)("disabled",n.disabled&&!n.disabledInteractive),O("id",n.buttonId)("name",n.name)("aria-label",n.ariaLabel)("aria-labelledby",n._getAriaLabelledBy())("aria-describedby",n.ariaDescribedby)("aria-required",n.required||null)("aria-checked",n.checked)("aria-disabled",n.disabled&&n.disabledInteractive?"true":null),c(9),u("matRippleTrigger",s)("matRippleDisabled",n.disableRipple||n.disabled)("matRippleCentered",!0),c(),b(n.hideIcon?-1:11),c(),u("for",n.buttonId),O("id",n._labelId)}},dependencies:[Te,at],styles:[`.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:"";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-slide-toggle-touch-target{position:absolute;top:50%;left:50%;height:var(--mat-slide-toggle-touch-target-size, 48px);width:100%;transform:translate(-50%, -50%);display:var(--mat-slide-toggle-touch-target-display, block)}[dir=rtl] .mat-mdc-slide-toggle-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}
|
|
3
3
|
`],encapsulation:2,changeDetection:0})}return a})(),ot=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=Z({type:a});static \u0275inj=U({imports:[J,H,H]})}return a})();var j=[{id:"network",title:"Network",icon:"lan",description:"Ports and bind behavior. daimon always binds to 127.0.0.1 \u2014 never the LAN.",fields:[{key:"apiPort",label:"API port",kind:"number",help:"The port the daimon daemon serves the HTTP API and dashboard on. Default 4999. If something else is on this port, daimon refuses to start.",min:1024,max:65535,restartRequired:!0},{key:"portRange",label:"Dev server port range",kind:"number-pair",help:"Range of ports daimon hands out to apps when their config does not pin one. Ports outside this range will not be auto-assigned, but explicit pins in overrides[].port still work.",min:1024,max:65535},{key:"headless",label:"Headless mode",kind:"boolean",help:"When ON, daimon never opens the TUI in this daemon instance \u2014 useful when running as a background service. The CLI still works the same.",restartRequired:!0}]},{id:"discovery",title:"Discovery",icon:"travel_explore",description:"Which folders daimon scans for Angular / Nx / Vite / Storybook projects.",fields:[{key:"searchRoots",label:"Search roots",kind:"path-objects",help:"Absolute paths to workspace folders. daimon will look for nx.json / angular.json / vite.config.* / .storybook in each. Soft-reloaded on save \u2014 no daemon restart needed.",placeholder:"C:\\path\\to\\workspace"}]},{id:"apps",title:"Apps",icon:"apps",description:"Which apps run automatically and what runs together.",fields:[{key:"autoStart",label:"Auto-start apps",kind:"string-array",help:"Apps to start automatically when the daemon spawns. Match the discovered app names. Empty list means nothing auto-starts.",placeholder:"app-name"},{key:"cascadeRestart",label:"Cascade restart on error",kind:"boolean",help:"When ON, an app entering error state restarts any apps that depend on it. Use with caution if you have noisy compile errors."}]},{id:"healthProbe",title:"Health probe",icon:"monitor_heart",description:'How daimon decides an app is "healthy" \u2014 a HEAD/GET against the announced URL.',fields:[{key:"healthProbe.enabled",label:"Enabled",kind:"boolean",help:'Master switch. When OFF, "serving" is treated as the terminal state for daimon wait / daimon ensure.'},{key:"healthProbe.intervalMs",label:"Interval",kind:"number",help:"How often to re-probe a serving app. Lower values catch outages faster but spend CPU.",min:1e3,max:6e5,unit:"ms"},{key:"healthProbe.timeoutMs",label:"Per-probe timeout",kind:"number",help:"How long to wait for a single probe response before marking unhealthy.",min:200,max:3e4,unit:"ms"},{key:"healthProbe.path",label:"Path",kind:"string",help:'URL path to probe. "/" is fine for most apps; some Nx apps need "/index.html" or a custom health route.',placeholder:"/"},{key:"healthProbe.host",label:"Host override",kind:"string",help:'Optional. Force a specific host (e.g. "127.0.0.1") instead of what the dev server announced. Leave blank to use the announced host.',placeholder:"(announced)"},{key:"healthProbe.scheme",label:"Scheme override",kind:"enum",enumValues:["(announced)","http","https"],help:'Force a specific scheme. Leave on "(announced)" to use whatever the dev server printed in its "Local:" line.'},{key:"healthProbe.rejectUnauthorized",label:"Strict HTTPS certs",kind:"boolean",help:"When OFF, self-signed certs (mkcert, Vite's auto-cert) are accepted. v0.5 forces this OFF for loopback hosts regardless \u2014 this setting only affects off-loopback probes."}]},{id:"autoRestart",title:"Auto-restart",icon:"restart_alt",description:"How daimon recovers from crashed dev servers.",fields:[{key:"autoRestart.enabled",label:"Enabled",kind:"boolean",help:"When ON, daimon respawns an app that exits non-zero, up to the cap below."},{key:"autoRestart.maxAttempts",label:"Max attempts per window",kind:"number",help:"Stops retrying after this many consecutive restarts inside the time window. Prevents thrashing.",min:1,max:50},{key:"autoRestart.windowMs",label:"Retry window",kind:"number",help:'Time window over which max-attempts is counted. Resets after a successful "serving" state.',min:1e4,max:36e5,unit:"ms"}]},{id:"history",title:"History",icon:"history",description:"Persistent SQLite database of events, compile times, and task runs.",fields:[{key:"history.enabled",label:"Enabled",kind:"boolean",help:"When OFF, daimon still tracks live state but does not persist history across daemon restarts.",restartRequired:!0},{key:"history.path",label:"Database path",kind:"path",help:"Where the SQLite file lives. Defaults to ~/.daimon/history.db. Use forward slashes or the path syntax of your OS.",restartRequired:!0},{key:"history.retentionDays",label:"Retention",kind:"number",help:"Days of history to keep. Older rows are purged at startup. 0 disables pruning.",min:0,max:3650,unit:"days"}]},{id:"notifications",title:"Desktop notifications",icon:"notifications",description:"OS notifications via node-notifier. Disable if they're too noisy.",fields:[{key:"notifications.enabled",label:"Enabled",kind:"boolean",help:"Master switch for desktop notifications."},{key:"notifications.onError",label:"On compile error",kind:"boolean",help:'Notify when an app transitions into "error" state.'},{key:"notifications.onUnhealthy",label:"On health failure",kind:"boolean",help:"Notify when an app fails its health probe enough times to flip to unhealthy."},{key:"notifications.tray",label:"Show tray icon",kind:"boolean",help:"Reserve space in the OS tray (where supported). Most users leave this off."}]},{id:"staleDetect",title:"Stale detection",icon:"hourglass_empty",description:"Flag apps that have gone quiet without printing anything.",fields:[{key:"staleDetect.enabled",label:"Enabled",kind:"boolean",help:'When ON, daimon marks an app "stale" if it has not printed output for the duration below \u2014 useful for catching hung dev servers.'},{key:"staleDetect.silentMs",label:"Silent threshold",kind:"number",help:"Quiet duration before marking stale. Most dev servers print at least heartbeats, so 30s is a safe default.",min:5e3,max:6e5,unit:"ms"}]},{id:"logs",title:"Log persistence",icon:"description",description:"Save app stdout/stderr to disk for later inspection.",fields:[{key:"logs.enabled",label:"Enabled",kind:"boolean",help:"When ON, daimon writes per-app log files to the directory below. Default OFF \u2014 daimon already keeps the last 500 lines per app in memory for the dashboard."},{key:"logs.dir",label:"Directory",kind:"path",help:"Where rotated log files live. Defaults to ~/.daimon/logs."},{key:"logs.maxFiles",label:"Files per app",kind:"number",help:"Rotation depth. After this many files, the oldest is deleted.",min:1,max:100},{key:"logs.maxBytesPerFile",label:"Max size per file",kind:"number",help:"Rotate when a single file reaches this many bytes. 10000000 = 10 MB.",min:1e5,max:1e9,unit:"bytes"}]},{id:"requestLog",title:"Request log (proxy)",icon:"compare_arrows",description:"Reverse-proxy your dev server through a sibling port to capture every HTTP request.",fields:[{key:"requestLog.enabled",label:"Enabled",kind:"boolean",help:"When ON, daimon proxies the dev server on a sibling port (announced port + offset). The Requests page becomes useful. OFF by default because it adds a hop.",restartRequired:!0},{key:"requestLog.portOffset",label:"Proxy port offset",kind:"number",help:"Added to the app's dev-server port to compute the proxy port (e.g. dev=4200 + offset=1000 \u2192 5200).",min:100,max:5e4,restartRequired:!0}]},{id:"metrics",title:"Prometheus metrics",icon:"monitoring",description:"Expose CPU / memory / status / compile-time as Prometheus text on /metrics.",fields:[{key:"metrics.enabled",label:"Enabled",kind:"boolean",help:"Turn this on if you scrape the dashboard with Prometheus. The /metrics endpoint stays loopback-only \u2014 no remote scraping."}]},{id:"dashboard",title:"Dashboard",icon:"tune",description:"How this web UI looks. Applies after page reload.",fields:[{key:"dashboard.theme",label:"Theme",kind:"enum",enumValues:["auto","light","dark"],help:'"auto" follows your OS preference. The theme toggle in the topbar overrides this per-browser via localStorage.'},{key:"dashboard.density",label:"Density",kind:"enum",enumValues:["comfortable","compact"],help:"Material 3 density. Compact shows more rows per screen at the cost of click targets."}]},{id:"output",title:"CLI output",icon:"terminal",description:"Defaults for the daimon CLI (the `daimon list` / `status` / `errors` you invoke from a shell).",fields:[{key:"output.format",label:"Default format",kind:"enum",enumValues:["compact","full"],help:'"compact" returns ~10 fields per app, optimized for agents. "full" returns the v0.4 verbose shape. The --full / --compact flags at the call site always win.'},{key:"output.ndjson",label:"Default NDJSON",kind:"boolean",help:"When ON, `daimon list` emits one JSON record per line instead of a single JSON array."}]},{id:"doctor",title:"Doctor auto-fix",icon:"medical_services",description:"Which repair routines `daimon doctor --auto-fix` is allowed to run.",fields:[{key:"doctor.autoFix.onInit",label:"Run after `daimon init`",kind:"boolean",help:"When ON, daimon will run auto-fix at the end of `daimon init`. Most users leave this OFF \u2014 init only writes a config file and doesn't need fixes."},{key:"doctor.autoFix.permitted",label:"Allowed routines",kind:"string-array",help:"Subset of: orphan-daemon, stale-lock, missing-search-root, corrupt-history-db. Removing a name disables that routine entirely."}]},{id:"editor",title:"Editor integration",icon:"edit_note",description:"How clicking on error file paths opens your editor.",fields:[{key:"editor.scheme",label:"URL scheme",kind:"enum",enumValues:["vscode","vscode-insiders","cursor","jetbrains"],help:"When you click a file:line:col in the dashboard, daimon opens `<scheme>://file/<path>:<line>:<col>`. Pick the editor you actually use."}]},{id:"auth",title:"API authentication",icon:"lock",description:"Optional bearer token. Most users leave this empty since daimon is loopback-only.",fields:[{key:"apiToken",label:"Bearer token",kind:"token",help:"When set, mutating endpoints require an Authorization: Bearer <token> header. The CLI reads this from DAIMON_TOKEN env var. Leave blank if you trust everything on this machine.",restartRequired:!0}]}];function I(a,i){let e=i.split("."),t=a;for(let n of e){if(t==null)return;t=t[n]}return t}function rt(a,i,e){let t=i.split("."),n=a;for(let s=0;s<t.length-1;s++){let m=t[s];(n[m]==null||typeof n[m]!="object")&&(n[m]={}),n=n[m]}n[t[t.length-1]]=e}var _t=(a,i)=>i.id,ft=(a,i)=>i.key;function bt(a,i){if(a&1&&(d(0," \xB7 "),o(1,"dm-mono"),d(2),r()),a&2){let e=l();c(2),P("etag ",e.etag().slice(0,8))}}function vt(a,i){if(a&1){let e=_();o(0,"button",18),p("click",function(){h(e);let n=l();return g(n.discard())}),o(1,"mat-icon",7),d(2,"undo"),r(),d(3," Discard "),r()}}function yt(a,i){a&1&&x(0,"mat-spinner",12)}function wt(a,i){a&1&&(o(0,"mat-icon",7),d(1,"save"),r())}function xt(a,i){if(a&1){let e=_();o(0,"div",13)(1,"mat-icon",7),d(2,"sync_problem"),r(),o(3,"div")(4,"strong"),d(5,"Config changed elsewhere."),r(),d(6," Your local edits are stale. Reload to pull the latest, then re-apply. "),r(),o(7,"button",19),p("click",function(){h(e);let n=l();return g(n.reload())}),d(8,"Reload"),r()()}}function Ct(a,i){if(a&1&&(o(0,"span",20)(1,"dm-mono"),d(2),r()()),a&2){let e=i.$implicit;c(2),C(e)}}function kt(a,i){if(a&1&&(o(0,"div",14)(1,"mat-icon",7),d(2,"restart_alt"),r(),o(3,"div")(4,"strong"),d(5,"Some changes need a daemon restart to take effect."),r(),k(6,Ct,3,1,"span",20,A),r(),x(8,"span"),r()),a&2){let e=l();c(6),E(e.restartHints())}}function Et(a,i){a&1&&(o(0,"div",15),x(1,"dm-skeleton",21)(2,"dm-skeleton",22)(3,"dm-skeleton",22)(4,"dm-skeleton",22),r())}function St(a,i){a&1&&(o(0,"span",32),d(1,"restart"),r())}function Mt(a,i){a&1&&(o(0,"span",33),d(1,"modified"),r())}function Tt(a,i){if(a&1){let e=_();o(0,"mat-slide-toggle",41),p("change",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setVal(s.key,n.checked))}),d(1),r()}if(a&2){let e=l().$implicit,t=l(3);u("checked",!!t.getVal(e.key)),c(),P(" ",t.getVal(e.key)?"On":"Off"," ")}}function Ft(a,i){if(a&1&&(o(0,"span",43),d(1),r()),a&2){let e=l(2).$implicit;c(),C(e.unit)}}function Ot(a,i){if(a&1){let e=_();o(0,"mat-form-field",36)(1,"input",42),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setVal(s.key,m.toNum(n.target.value)))}),r(),f(2,Ft,2,1,"span",43),r()}if(a&2){let e=l().$implicit,t=l(3);c(),u("min",e.min??null)("max",e.max??null)("value",t.getVal(e.key)),c(),b(e.unit?2:-1)}}function It(a,i){if(a&1){let e=_();o(0,"div",37)(1,"mat-form-field",36)(2,"mat-label"),d(3,"min"),r(),o(4,"input",42),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setPairIdx(s.key,0,m.toNum(n.target.value)))}),r()(),o(5,"span",44),d(6,"\u2013"),r(),o(7,"mat-form-field",36)(8,"mat-label"),d(9,"max"),r(),o(10,"input",42),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setPairIdx(s.key,1,m.toNum(n.target.value)))}),r()()()}if(a&2){let e=l().$implicit,t=l(3);c(4),u("min",e.min??null)("max",e.max??null)("value",t.getPair(e.key)[0]),c(6),u("min",e.min??null)("max",e.max??null)("value",t.getPair(e.key)[1])}}function Pt(a,i){if(a&1){let e=_();o(0,"mat-form-field",36)(1,"input",45),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setVal(s.key,n.target.value||(s.kind==="string"?"":null)))}),r()()}if(a&2){let e=l().$implicit,t=l(3);c(),u("placeholder",e.placeholder??"")("value",t.getStrOrEmpty(e.key))}}function Vt(a,i){if(a&1){let e=_();o(0,"mat-form-field",36)(1,"input",46),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setVal(s.key,n.target.value))}),r()()}if(a&2){let e=l().$implicit,t=l(3);c(),u("placeholder",e.placeholder??"")("value",t.getStrOrEmpty(e.key))}}function Dt(a,i){if(a&1){let e=_();o(0,"mat-form-field",36)(1,"input",47),p("input",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setVal(s.key,n.target.value||null))}),r(),o(2,"button",48),p("click",function(){h(e);let n=l(4);return g(n.showToken.set(!n.showToken()))}),o(3,"mat-icon",7),d(4),r()()()}if(a&2){let e=l().$implicit,t=l(3);c(),u("type",t.showToken()?"text":"password")("placeholder","(unset)")("value",t.getStrOrEmpty(e.key)),c(),O("aria-label",t.showToken()?"Hide token":"Show token"),c(2),C(t.showToken()?"visibility_off":"visibility")}}function Rt(a,i){if(a&1&&(o(0,"mat-button-toggle",49),d(1),r()),a&2){let e=i.$implicit;u("value",e),c(),C(e)}}function At(a,i){if(a&1){let e=_();o(0,"mat-button-toggle-group",5),p("change",function(n){h(e);let s=l().$implicit,m=l(3);return g(m.setEnum(s,n.value))}),k(1,Rt,2,2,"mat-button-toggle",49,A),r()}if(a&2){let e=l().$implicit,t=l(3);u("value",t.enumValue(e.key,e)),c(),E(e.enumValues)}}function Nt(a,i){if(a&1){let e=_();o(0,"mat-chip",53),p("removed",function(){let n=h(e).$index,s=l(2).$implicit,m=l(3);return g(m.removeAt(s.key,n))}),o(1,"dm-mono"),d(2),r(),o(3,"button",54)(4,"mat-icon",7),d(5,"cancel"),r()()()}if(a&2){let e=i.$implicit;u("removable",!0),c(2),C(e)}}function zt(a,i){if(a&1){let e=_();o(0,"div",39)(1,"mat-chip-set"),k(2,Nt,6,2,"mat-chip",50,A),r(),o(4,"mat-form-field",51)(5,"input",52,0),p("keydown.enter",function(n){h(e);let s=S(6),m=l().$implicit;return l(3).addItem(m.key,s.value),s.value="",g(n.preventDefault())}),r(),o(7,"button",48),p("click",function(){h(e);let n=S(6),s=l().$implicit;return l(3).addItem(s.key,n.value),g(n.value="")}),o(8,"mat-icon",7),d(9,"add"),r()()()()}if(a&2){let e=l().$implicit,t=l(3);c(2),E(t.getArr(e.key)),c(3),u("placeholder",e.placeholder??"Add value and press Enter")}}function $t(a,i){if(a&1){let e=_();o(0,"div",55)(1,"mat-form-field",57)(2,"input",58),p("input",function(n){let s=h(e).$index,m=l(2).$implicit,v=l(3);return g(v.setObjAt(m.key,s,"path",n.target.value))}),r()(),o(3,"mat-form-field",59)(4,"mat-label"),d(5,"label"),r(),o(6,"input",60),p("input",function(n){let s=h(e).$index,m=l(2).$implicit,v=l(3);return g(v.setObjAt(m.key,s,"label",n.target.value||null))}),r()(),o(7,"button",61),p("click",function(){let n=h(e).$index,s=l(2).$implicit,m=l(3);return g(m.removeAt(s.key,n))}),o(8,"mat-icon",7),d(9,"delete"),r()()()}if(a&2){let e=i.$implicit;c(2),u("value",e.path),c(4),u("value",e.label??"")}}function jt(a,i){if(a&1){let e=_();o(0,"div",39),k(1,$t,10,2,"div",55,ee),o(3,"mat-form-field",51)(4,"input",56,1),p("keydown.enter",function(n){h(e);let s=S(5),m=l().$implicit;return l(3).addObj(m.key,s.value),s.value="",g(n.preventDefault())}),r(),o(6,"button",48),p("click",function(){h(e);let n=S(5),s=l().$implicit;return l(3).addObj(s.key,n.value),g(n.value="")}),o(7,"mat-icon",7),d(8,"add"),r()()()()}if(a&2){let e=l().$implicit,t=l(3);c(),E(t.getObjArr(e.key)),c(3),u("placeholder",e.placeholder??"Add absolute path and press Enter")}}function Lt(a,i){if(a&1&&(o(0,"div",29)(1,"div",30)(2,"label",31),d(3),r(),f(4,St,2,0,"span",32),f(5,Mt,2,0,"span",33),r(),o(6,"div",34),f(7,Tt,2,2,"mat-slide-toggle",35)(8,Ot,3,4,"mat-form-field",36)(9,It,11,6,"div",37)(10,Pt,2,2,"mat-form-field",36)(11,Vt,2,2,"mat-form-field",36)(12,Dt,5,5,"mat-form-field",36)(13,At,3,1,"mat-button-toggle-group",38)(14,zt,10,1,"div",39)(15,jt,9,1,"div",39),r(),o(16,"div",40),d(17),r()()),a&2){let e,t=i.$implicit,n=l(3);M("dm-field-dirty",n.isFieldDirty(t.key)),c(3),C(t.label),c(),b(t.restartRequired?4:-1),c(),b(n.isFieldDirty(t.key)?5:-1),c(2),b((e=t.kind)==="boolean"?7:e==="number"?8:e==="number-pair"?9:e==="string"?10:e==="path"?11:e==="token"?12:e==="enum"?13:e==="string-array"?14:e==="path-objects"?15:-1),c(10),C(t.help)}}function qt(a,i){if(a&1){let e=_();o(0,"mat-expansion-panel",25),p("afterExpand",function(){let n=h(e).$implicit,s=l(2);return g(s.onExpand(n.id,!0))})("afterCollapse",function(){let n=h(e).$implicit,s=l(2);return g(s.onExpand(n.id,!1))}),o(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon",7),d(4),r(),o(5,"span",26),d(6),r()(),o(7,"mat-panel-description"),d(8),r()(),o(9,"div",27),k(10,Lt,18,7,"div",28,ft),r()()}if(a&2){let e=i.$implicit,t=l(2);u("expanded",t.isExpanded(e.id)),c(4),C(e.icon),c(2),C(e.title),c(2),P(" ",e.description," "),c(2),E(e.fields)}}function Bt(a,i){if(a&1&&(o(0,"div",16),k(1,qt,12,4,"mat-expansion-panel",23,_t),o(3,"section",24)(4,"p"),d(5," Some settings \u2014 "),o(6,"strong"),d(7,"overrides"),r(),d(8,", "),o(9,"strong"),d(10,"profiles"),r(),d(11,", "),o(12,"strong"),d(13,"tags"),r(),d(14,", "),o(15,"strong"),d(16,"depends"),r(),d(17,", "),o(18,"strong"),d(19,"envFiles"),r(),d(20," \u2014 are per-app dictionaries best edited as JSON. Switch to the JSON tab in the header to edit them. "),r()()()),a&2){let e=l();c(),E(e.sections)}}function Ht(a,i){if(a&1&&(o(0,"span",63)(1,"mat-icon",7),d(2,"error"),r(),d(3),r()),a&2){let e=l(2);c(3),P(" invalid JSON \xB7 ",e.parseError()," ")}}function Jt(a,i){a&1&&(o(0,"span",64)(1,"mat-icon",7),d(2,"check_circle"),r(),d(3," valid JSON "),r())}function Wt(a,i){if(a&1){let e=_();o(0,"div",17)(1,"div",62),f(2,Ht,4,1,"span",63)(3,Jt,4,0,"span",64),r(),o(4,"mat-form-field",65)(5,"textarea",66),p("ngModelChange",function(n){h(e);let s=l();return g(s.onJsonInput(n))}),r()()()}if(a&2){let e=l();c(2),b(e.parseError()?2:3),c(3),u("ngModel",e.jsonText())}}var st="daimon.config.mode",lt=class a{http=y(me);snack=y(Ve);sections=j;mode=w("form");loading=w(!0);saving=w(!1);etag=w("");original=w(null);working=w(null);jsonText=w("");conflict=w(!1);showToken=w(!1);expanded=w({});dirty=V(()=>JSON.stringify(this.working())!==JSON.stringify(this.original()));parseError=V(()=>{if(this.mode()!=="json")return null;try{return JSON.parse(this.jsonText()),null}catch(i){return i?.message??"parse error"}});canSave=V(()=>!this.saving()&&!this.loading()&&this.dirty()&&!this.parseError());restartHints=V(()=>{let i=this.original(),e=this.working();if(!i||!e)return[];let t=[];for(let n of j)for(let s of n.fields)s.restartRequired&&JSON.stringify(I(i,s.key))!==JSON.stringify(I(e,s.key))&&t.push(s.key);return t});async ngOnInit(){try{let e=localStorage.getItem(st);(e==="form"||e==="json")&&this.mode.set(e)}catch{}let i={};for(let e of j)i[e.id]=["network","discovery","healthProbe"].includes(e.id);this.expanded.set(i),await this.load()}setMode(i){if(i!==this.mode()){if(i==="json")this.jsonText.set(JSON.stringify(this.working(),null,2));else if(this.parseError()===null)try{this.working.set(JSON.parse(this.jsonText()))}catch{}else{this.snack.open("Fix the JSON parse error before switching back to the form view.","OK",{duration:4e3});return}this.mode.set(i);try{localStorage.setItem(st,i)}catch{}}}onJsonInput(i){this.jsonText.set(i);try{this.working.set(JSON.parse(i))}catch{}}isExpanded(i){return!!this.expanded()[i]}onExpand(i,e){this.expanded.update(t=>q(L({},t),{[i]:e}))}getVal(i){return I(this.working(),i)}getStrOrEmpty(i){let e=this.getVal(i);return e==null?"":String(e)}getArr(i){let e=this.getVal(i);return Array.isArray(e)?e:[]}getObjArr(i){let e=this.getVal(i);return Array.isArray(e)?e.map(t=>typeof t=="string"?{path:t}:{path:String(t?.path??""),label:t?.label??null}):[]}setObjAt(i,e,t,n){let s=this.getObjArr(i);if(!s[e])return;let m=s.slice();m[e]=q(L({},m[e]),{[t]:n}),t==="label"&&(n===""||n==null)&&delete m[e].label,this.setVal(i,m)}addObj(i,e){let t=e.trim();if(!t)return;let n=this.getObjArr(i);n.some(s=>s.path===t)||this.setVal(i,[...n,{path:t}])}getPair(i){let e=this.getVal(i);return Array.isArray(e)&&e.length>=2?[Number(e[0])||0,Number(e[1])||0]:[0,0]}setVal(i,e){let t=structuredClone(this.working());rt(t,i,e),this.working.set(t)}setPairIdx(i,e,t){let n=this.getPair(i);n[e]=t,this.setVal(i,n)}setEnum(i,e){if(i.key.startsWith("healthProbe.")&&(i.key.endsWith(".scheme")||i.key.endsWith(".host"))){this.setVal(i.key,e==="(announced)"?null:e);return}this.setVal(i.key,e)}enumValue(i,e){let t=this.getVal(i);return t==null&&e.enumValues?.includes("(announced)")?"(announced)":String(t??e.enumValues?.[0]??"")}addItem(i,e){let t=e.trim();if(!t)return;let n=[...this.getArr(i)];n.includes(t)||(n.push(t),this.setVal(i,n))}removeAt(i,e){let t=this.getVal(i);if(!Array.isArray(t))return;let n=t.slice();n.splice(e,1),this.setVal(i,n)}toNum(i){let e=Number(i);return Number.isFinite(e)?e:0}isFieldDirty(i){let e=this.original(),t=this.working();return!e||!t?!1:JSON.stringify(I(e,i))!==JSON.stringify(I(t,i))}async load(){this.loading.set(!0),this.conflict.set(!1);try{let i=await R(this.http.get("/api/config"));this.etag.set(i.etag??""),this.original.set(structuredClone(i.config)),this.working.set(structuredClone(i.config)),this.jsonText.set(JSON.stringify(i.config,null,2))}catch(i){this.snack.open(`Failed to load config: ${i?.message??i}`,"Dismiss",{duration:5e3})}finally{this.loading.set(!1)}}discard(){this.working.set(structuredClone(this.original())),this.jsonText.set(JSON.stringify(this.original(),null,2)),this.conflict.set(!1)}async reload(){try{await R(this.http.post("/api/config/reload",{}))}catch{}await this.load()}async save(){if(this.canSave()){this.saving.set(!0);try{let i=await R(this.http.patch("/api/config",this.working(),{headers:{"if-match":this.etag(),"content-type":"application/json"},observe:"response"})),e=i.body??{},t=i.headers.get("etag")??e.etag??"";t&&this.etag.set(t),this.original.set(structuredClone(this.working()));let n=Array.isArray(e.applied)?e.applied.length:0,s=Array.isArray(e.addedApps)?e.addedApps.length:0,m=Array.isArray(e.removedApps)?e.removedApps.length:0,v=Array.isArray(e.restartRequired)?e.restartRequired.length:0,D=`Applied ${n} change${n===1?"":"s"}`;s&&(D+=` \xB7 +${s} app${s===1?"":"s"}`),m&&(D+=` \xB7 \u2212${m} app${m===1?"":"s"}`),v&&(D+=` \xB7 ${v} setting${v===1?"":"s"} need restart`),this.snack.open(D,"OK",{duration:4e3})}catch(i){i?.status===412?(this.conflict.set(!0),this.snack.open("Config changed elsewhere \u2014 reload before saving.","Reload",{duration:6e3}).onAction().subscribe(()=>this.reload())):this.snack.open(`Save failed: ${i?.error?.error??i?.message??i}`,"Dismiss",{duration:6e3})}finally{this.saving.set(!1)}}}onKey(i){(i.metaKey||i.ctrlKey)&&i.key.toLowerCase()==="s"&&(i.preventDefault(),this.save())}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=F({type:a,selectors:[["dm-config-editor"]],hostBindings:function(e,t){e&1&&p("keydown",function(s){return t.onKey(s)},Y)},decls:31,vars:8,consts:[["addInput",""],["addObjInput",""],[1,"dm-page-header"],[1,"dm-page-sub"],[1,"dm-header-actions"],["hideSingleSelectionIndicator","",3,"change","value"],["value","form","matTooltip","Form editor with explanations"],["fontSet","material-symbols-outlined"],["value","json","matTooltip","Raw JSON editor"],["mat-button","","matTooltip","Throw away pending changes"],["mat-button","","matTooltip","Reload from daemon",3,"click"],["mat-flat-button","","color","primary",3,"click","disabled"],["diameter","18"],[1,"dm-banner","dm-banner-warn"],[1,"dm-banner","dm-banner-info"],[1,"dm-skel"],[1,"dm-settings"],[1,"dm-json"],["mat-button","","matTooltip","Throw away pending changes",3,"click"],["mat-stroked-button","",3,"click"],[1,"dm-restart-key"],["height","3rem"],["height","14rem"],[3,"expanded"],[1,"dm-advanced-note"],[3,"afterExpand","afterCollapse","expanded"],[1,"dm-sec-title"],[1,"dm-fields"],[1,"dm-field",3,"dm-field-dirty"],[1,"dm-field"],[1,"dm-field-label-row"],[1,"dm-field-label"],["matTooltip","A daemon restart applies this",1,"dm-field-tag"],[1,"dm-field-tag","dm-tag-dirty"],[1,"dm-field-control"],[3,"checked"],["appearance","outline","subscriptSizing","dynamic"],[1,"dm-pair"],["hideSingleSelectionIndicator","",3,"value"],[1,"dm-array"],[1,"dm-field-help"],[3,"change","checked"],["matInput","","type","number",3,"input","min","max","value"],["matTextSuffix","",1,"dm-suffix"],[1,"dm-pair-sep"],["matInput","",3,"input","placeholder","value"],["matInput","",1,"dm-mono",3,"input","placeholder","value"],["matInput","",3,"input","type","placeholder","value"],["matSuffix","","mat-icon-button","","type","button",3,"click"],[3,"value"],[3,"removable"],["appearance","outline","subscriptSizing","dynamic",1,"dm-array-input"],["matInput","",3,"keydown.enter","placeholder"],[3,"removed","removable"],["matChipRemove",""],[1,"dm-path-row"],["matInput","",1,"dm-mono",3,"keydown.enter","placeholder"],["appearance","outline","subscriptSizing","dynamic",1,"dm-path-input"],["matInput","",1,"dm-mono",3,"input","value"],["appearance","outline","subscriptSizing","dynamic",1,"dm-path-label"],["matInput","",3,"input","value"],["mat-icon-button","","type","button","matTooltip","Remove",3,"click"],[1,"dm-json-status"],[1,"dm-status","dm-status-bad"],[1,"dm-status","dm-status-ok"],["appearance","outline",1,"dm-json-field"],["matInput","","cdkTextareaAutosize","","cdkAutosizeMinRows","20","spellcheck","false",3,"ngModelChange","ngModel"]],template:function(e,t){e&1&&(o(0,"div",2)(1,"div")(2,"h1"),d(3,"Config"),r(),o(4,"div",3),d(5," Active configuration \xB7 changes apply via soft-reload where possible "),f(6,bt,3,1),r()(),o(7,"div",4)(8,"mat-button-toggle-group",5),p("change",function(s){return t.setMode(s.value)}),o(9,"mat-button-toggle",6)(10,"mat-icon",7),d(11,"tune"),r(),d(12," Settings "),r(),o(13,"mat-button-toggle",8)(14,"mat-icon",7),d(15,"data_object"),r(),d(16," JSON "),r()(),f(17,vt,4,0,"button",9),o(18,"button",10),p("click",function(){return t.reload()}),o(19,"mat-icon",7),d(20,"refresh"),r(),d(21," Reload "),r(),o(22,"button",11),p("click",function(){return t.save()}),f(23,yt,1,0,"mat-spinner",12)(24,wt,2,0,"mat-icon",7),d(25," Save "),r()()(),f(26,xt,9,0,"div",13),f(27,kt,9,0,"div",14),f(28,Et,5,0,"div",15)(29,Bt,21,0,"div",16)(30,Wt,6,2,"div",17)),e&2&&(c(6),b(t.etag()?6:-1),c(2),u("value",t.mode()),c(9),b(t.dirty()?17:-1),c(5),u("disabled",!t.canSave()),c(),b(t.saving()?23:24),c(3),b(t.conflict()?26:-1),c(),b(t.restartHints().length?27:-1),c(),b(t.loading()?28:t.mode()==="form"?29:30))},dependencies:[ce,Ee,we,Ce,ke,Pe,Ie,Oe,_e,ue,ve,be,$e,ze,Ae,Ne,He,Be,Le,je,ot,J,it,et,tt,Ke,We,Je,Ue,Ze,Xe,Ge,Ye,Qe,Me,Se,qe,De,Re],styles:["[_nghost-%COMP%]{display:block}.dm-header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.dm-banner[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;align-items:center;padding:12px 16px;border-radius:12px;margin-bottom:1rem}.dm-banner-warn[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);color:var(--mat-sys-on-surface);border:1px solid color-mix(in oklch,var(--mat-sys-error) 35%,transparent)}.dm-banner-warn[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-banner-info[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);color:var(--mat-sys-on-surface);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 35%,transparent)}.dm-banner-info[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.dm-restart-key[_ngcontent-%COMP%]{margin-left:.35rem}.dm-skel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.dm-settings[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.dm-sec-title[_ngcontent-%COMP%]{margin-left:.5rem;font:500 .9375rem/1.25rem Roboto}mat-expansion-panel[_ngcontent-%COMP%]{border-radius:12px!important;box-shadow:var(--mat-sys-level1)!important}mat-expansion-panel-header[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}mat-panel-description[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font:400 .8125rem/1.25rem Roboto}.dm-fields[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.875rem;padding:.25rem 0}.dm-field[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,200px) 1fr;gap:.125rem 1.25rem;align-items:start}.dm-field-label-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;padding-top:.4rem}.dm-field-label[_ngcontent-%COMP%]{font:500 .875rem/1.25rem Roboto;color:var(--mat-sys-on-surface)}.dm-field-tag[_ngcontent-%COMP%]{font:500 .625rem/.875rem Roboto;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);border:1px solid var(--mat-sys-outline-variant)}.dm-tag-dirty[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 18%,transparent);color:var(--mat-sys-tertiary);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 40%,transparent)}.dm-field-help[_ngcontent-%COMP%]{grid-column:2;color:var(--mat-sys-on-surface-variant);font:400 .75rem/1.125rem Roboto;max-width:64ch;margin-top:-.125rem}.dm-field-dirty[_ngcontent-%COMP%] .dm-field-label[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.dm-pair[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.dm-pair-sep[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-suffix[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);margin-left:.25rem;font:400 .75rem/1rem Roboto}.dm-array[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.dm-array-input[_ngcontent-%COMP%]{max-width:32rem}.dm-path-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) 12rem auto;gap:.5rem;align-items:center}.dm-path-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{font-family:var(--dm-mono)}@media(max-width:700px){.dm-path-row[_ngcontent-%COMP%]{grid-template-columns:1fr}}.dm-mono[_ngcontent-%COMP%] input.dm-mono[_ngcontent-%COMP%], input.dm-mono[_ngcontent-%COMP%]{font-family:var(--dm-mono)}.dm-advanced-note[_ngcontent-%COMP%]{margin-top:.5rem;padding:1rem 1.25rem;background:var(--mat-sys-surface-container);border-radius:12px;color:var(--mat-sys-on-surface-variant);font:400 .875rem/1.5rem Roboto}.dm-json[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.dm-json-status[_ngcontent-%COMP%]{display:flex;gap:.5rem}.dm-status[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;font:500 .75rem/1rem Roboto;padding:4px 10px;border-radius:999px;background:var(--mat-sys-surface-container)}.dm-status[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-status-ok[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-status-bad[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-json-field[_ngcontent-%COMP%]{width:100%}.dm-json-field[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{font-family:var(--dm-mono);font-size:.8125rem;line-height:1.5}@media(max-width:900px){.dm-field[_ngcontent-%COMP%]{grid-template-columns:1fr}.dm-field-help[_ngcontent-%COMP%]{grid-column:1}}"],changeDetection:0})};export{lt as ConfigEditorComponent};
|