daimon 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/README.md +43 -29
- package/dist/cli.js +78 -69
- package/dist/dashboard/browser/{chunk-7L4DWDGL.js → chunk-25VLDASM.js} +1 -1
- package/dist/dashboard/browser/{chunk-ESDYJ3BP.js → chunk-5PAHWCG5.js} +1 -1
- package/dist/dashboard/browser/chunk-6BDWIJ3G.js +3 -0
- package/dist/dashboard/browser/chunk-6C6GHU3A.js +1 -0
- package/dist/dashboard/browser/{chunk-L63FHXGH.js → chunk-7NRE3SNA.js} +3 -3
- package/dist/dashboard/browser/chunk-BDYOKQF3.js +1 -0
- package/dist/dashboard/browser/{chunk-UNT27XFJ.js → chunk-CILFSVSP.js} +1 -1
- package/dist/dashboard/browser/{chunk-4ZR4NTJW.js → chunk-GDJOSLWM.js} +1 -1
- package/dist/dashboard/browser/chunk-HYGMRGYR.js +4 -0
- package/dist/dashboard/browser/chunk-HYIZMKSF.js +1 -0
- package/dist/dashboard/browser/chunk-IQZZO5IM.js +3 -0
- package/dist/dashboard/browser/chunk-J5UK77OJ.js +1 -0
- package/dist/dashboard/browser/chunk-JI63U3KC.js +2 -0
- package/dist/dashboard/browser/chunk-KLH6B22T.js +1 -0
- package/dist/dashboard/browser/chunk-L2PHC6DL.js +1 -0
- package/dist/dashboard/browser/chunk-MHYQENOC.js +1 -0
- package/dist/dashboard/browser/chunk-OHX55ZU4.js +2 -0
- package/dist/dashboard/browser/chunk-OUXULJ3Z.js +3 -0
- package/dist/dashboard/browser/chunk-P5IU57TV.js +2 -0
- package/dist/dashboard/browser/{chunk-U6AY7XZK.js → chunk-Q3N4MMWW.js} +3 -3
- package/dist/dashboard/browser/chunk-RIDV4B55.js +5 -0
- package/dist/dashboard/browser/{chunk-VZ6E4VQY.js → chunk-SR5JAOLW.js} +1 -1
- package/dist/dashboard/browser/chunk-UU5K6ZPO.js +1 -0
- package/dist/dashboard/browser/chunk-XXIJQBCQ.js +2 -0
- package/dist/dashboard/browser/chunk-YA4AZONZ.js +5 -0
- package/dist/dashboard/browser/{chunk-NN2YNLGP.js → chunk-YNCTXEXX.js} +1 -1
- package/dist/dashboard/browser/chunk-ZDNBWNU5.js +1 -0
- package/dist/dashboard/browser/chunk-ZEO5YLWG.js +3 -0
- package/dist/dashboard/browser/chunk-ZVUH3ISD.js +2 -0
- package/dist/dashboard/browser/index.html +1 -1
- package/dist/dashboard/browser/main-IDF27PFI.js +1 -0
- package/dist/main.js +58 -49
- package/dist/mcp.js +3 -3
- package/package.json +2 -2
- package/dist/dashboard/browser/chunk-4VNZXWQZ.js +0 -3
- package/dist/dashboard/browser/chunk-BLNPJ4WD.js +0 -4
- package/dist/dashboard/browser/chunk-E3HUMJ6S.js +0 -6
- package/dist/dashboard/browser/chunk-EBOHC6KX.js +0 -1
- package/dist/dashboard/browser/chunk-JUZHAE4L.js +0 -2
- package/dist/dashboard/browser/chunk-K46KCL6L.js +0 -1
- package/dist/dashboard/browser/chunk-KDCKLTCZ.js +0 -1
- package/dist/dashboard/browser/chunk-MHOSWLRR.js +0 -3
- package/dist/dashboard/browser/chunk-N5GRSTMJ.js +0 -6
- package/dist/dashboard/browser/chunk-R6J2WYUD.js +0 -1
- package/dist/dashboard/browser/chunk-T2YKGOEM.js +0 -3
- package/dist/dashboard/browser/chunk-V2CQL6W5.js +0 -1
- package/dist/dashboard/browser/chunk-WJUGRIIZ.js +0 -1
- package/dist/dashboard/browser/chunk-WRBP4DQN.js +0 -4
- package/dist/dashboard/browser/chunk-XUU4AY4M.js +0 -2
- package/dist/dashboard/browser/chunk-XYVF5I5T.js +0 -1
- package/dist/dashboard/browser/main-ZADV4SOC.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-25VLDASM.js";import"./chunk-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{b as q,c as dt,d as mt,e as B}from"./chunk-SR5JAOLW.js";import{a as L,b as F}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{b as st,c as lt}from"./chunk-5PAHWCG5.js";import{i as ct,j as K}from"./chunk-Q3N4MMWW.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,2 @@
|
|
|
1
|
+
import{d as ge}from"./chunk-ZEO5YLWG.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-YA4AZONZ.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-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{b as ne,d as ie,e as oe}from"./chunk-SR5JAOLW.js";import{a as J,b as U}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import{a as z,e as H,f as Q,h as q}from"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{b as B}from"./chunk-5PAHWCG5.js";import{h as $,i as j,j as W}from"./chunk-Q3N4MMWW.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{y as w}from"./chunk-Y6B6X4Y6.js";import{Ia as M,ca as u,ea as h,h as A,o as _,q as b}from"./chunk-K43KW4K2.js";function L(t){return t==null?"":typeof t=="string"?t:`${t}px`}function O(t){return t!=null&&`${t}`!="false"}var k={XSmall:"(max-width: 599.98px)",Small:"(min-width: 600px) and (max-width: 959.98px)",Medium:"(min-width: 960px) and (max-width: 1279.98px)",Large:"(min-width: 1280px) and (max-width: 1919.98px)",XLarge:"(min-width: 1920px)",Handset:"(max-width: 599.98px) and (orientation: portrait), (max-width: 959.98px) and (orientation: landscape)",Tablet:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), (min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",Web:"(min-width: 840px) and (orientation: portrait), (min-width: 1280px) and (orientation: landscape)",HandsetPortrait:"(max-width: 599.98px) and (orientation: portrait)",TabletPortrait:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)",WebPortrait:"(min-width: 840px) and (orientation: portrait)",HandsetLandscape:"(max-width: 959.98px) and (orientation: landscape)",TabletLandscape:"(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",WebLandscape:"(min-width: 1280px) and (orientation: landscape)"};var C=new u("MATERIAL_ANIMATIONS");var N=null;function V(){return h(C,{optional:!0})?.animationsDisabled||h(M,{optional:!0})==="NoopAnimations"?"di-disabled":(N??=h(w).matchMedia("(prefers-reduced-motion)").matches,N?"reduced-motion":"enabled")}function F(){return V()!=="enabled"}var s=(function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t})(s||{}),f,a;function H(){if(a==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return a=!1,a;if(document.documentElement?.style&&"scrollBehavior"in document.documentElement.style)a=!0;else{let t=Element.prototype.scrollTo;t?a=!/\{\s*\[native code\]\s*\}/.test(t.toString()):a=!1}}return a}function W(){if(typeof document!="object"||!document)return s.NORMAL;if(f==null){let t=document.createElement("div"),e=t.style;t.dir="rtl",e.width="1px",e.overflow="auto",e.visibility="hidden",e.pointerEvents="none",e.position="absolute";let i=document.createElement("div"),n=i.style;n.width="2px",n.height="1px",t.appendChild(i),document.body.appendChild(t),f=s.NORMAL,t.scrollLeft===0&&(t.scrollLeft=1,f=t.scrollLeft===0?s.NEGATED:s.INVERTED),t.remove()}return f}function Y(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}var E=class{};function K(t){return t&&typeof t.connect=="function"&&!(t instanceof A)}var y=class extends E{_data;constructor(e){super(),this._data=e}connect(){return b(this._data)?this._data:_(this._data)}disconnect(){}},d=(function(t){return t[t.REPLACED=0]="REPLACED",t[t.INSERTED=1]="INSERTED",t[t.MOVED=2]="MOVED",t[t.REMOVED=3]="REMOVED",t})(d||{}),nt=new u("_ViewRepeater"),D=class{viewCacheSize=20;_viewCache=[];applyChanges(e,i,n,c,o){e.forEachOperation((r,x,m)=>{let l,p;if(r.previousIndex==null){let T=()=>n(r,x,m);l=this._insertView(T,m,i,c(r)),p=l?d.INSERTED:d.REPLACED}else m==null?(this._detachAndCacheView(x,i),p=d.REMOVED):(l=this._moveView(x,m,i,c(r)),p=d.MOVED);o&&o({context:l?.context,operation:p,record:r})})}detach(){for(let e of this._viewCache)e.destroy();this._viewCache=[]}_insertView(e,i,n,c){let o=this._insertViewFromCache(i,n);if(o){o.context.$implicit=c;return}let r=e();return n.createEmbeddedView(r.templateRef,r.context,r.index)}_detachAndCacheView(e,i){let n=i.detach(e);this._maybeCacheView(n,i)}_moveView(e,i,n,c){let o=n.get(e);return n.move(o,i),o.context.$implicit=c,o}_maybeCacheView(e,i){if(this._viewCache.length<this.viewCacheSize)this._viewCache.push(e);else{let n=i.indexOf(e);n===-1?e.destroy():i.remove(n)}}_insertViewFromCache(e,i){let n=this._viewCache.pop();return n&&i.insert(n,e),n||null}};export{L as a,O as b,s as c,H as d,W as e,Y as f,K as g,y as h,nt as i,D as j,k,V as l,F as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as te,b as ne,c as ie,d as ae,e as oe,g as re,h as se,k as le,l as me}from"./chunk-YA4AZONZ.js";import"./chunk-P5IU57TV.js";import"./chunk-NDSAQ2HK.js";import{b as Q,f as K,h as j,j as z}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as G,c as J,d as W}from"./chunk-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{b as X,c as Y,d as Z,e as ee}from"./chunk-SR5JAOLW.js";import{a as $,b as U}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{c as L}from"./chunk-5PAHWCG5.js";import{c as B,h as A,i as V,j as H}from"./chunk-Q3N4MMWW.js";import{h as N}from"./chunk-Y6B6X4Y6.js";import{Db as x,Eb as g,Fb as f,Gb as I,Hb as O,Ib as v,Jb as y,Kb as u,Lb as o,Mb as a,Nb as b,Sb as M,Ub as h,Wb as d,_a as s,ea as w,gc as T,ic as r,ja as _,jc as p,ka as C,kc as k,pb as q,s as E,sc as D,ta as c,xc as P,yc as F,za as R}from"./chunk-K43KW4K2.js";var ue=n=>["/apps",n],he=(n,t)=>t.value;function ge(n,t){if(n&1&&b(0,"dm-status-pill",4),n&2){let e=t;u("status",e.status)("health",e.health)}}function fe(n,t){if(n&1&&(o(0,"span"),r(1,"Last refreshed "),o(2,"dm-mono"),r(3),a()()),n&2){let e=d();s(3),p(e.lastRefreshedLabel())}}function _e(n,t){n&1&&(o(0,"span"),r(1,"Loading\u2026"),a())}function Ce(n,t){n&1&&(o(0,"span",2),r(1,"\xB7"),a(),o(2,"span",10),r(3,"paused"),a())}function xe(n,t){n&1&&(o(0,"dm-empty",9)(1,"a",11),r(2,"Go to apps"),a()())}function ve(n,t){if(n&1&&(o(0,"mat-option",15),r(1),a()),n&2){let e=t.$implicit;u("value",e.value),s(),p(e.label)}}function ye(n,t){if(n&1){let e=M();o(0,"button",26),h("click",function(){let l=_(e).$implicit,m=d(2);return C(m.toggleMethod(l))}),r(1),a()}if(n&2){let e=t.$implicit,i=d(2);T("dm-chip-active",i.methodFilter().has(e)),x("data-method",e),s(),k(" ",e," ")}}function be(n,t){if(n&1){let e=M();o(0,"button",26),h("click",function(){let l=_(e).$implicit,m=d(2);return C(m.toggleStatus(l))}),r(1),a()}if(n&2){let e=t.$implicit,i=d(2);T("dm-chip-active",i.statusFilter().has(e)),x("data-bucket",e),s(),k(" ",e," ")}}function Me(n,t){if(n&1){let e=M();o(0,"button",27),h("click",function(){_(e);let l=d(2);return C(l.pathQuery.set(""))}),o(1,"mat-icon"),r(2,"close"),a()()}}function Pe(n,t){n&1&&(o(0,"div",22),b(1,"dm-skeleton",28)(2,"dm-skeleton",28)(3,"dm-skeleton",28)(4,"dm-skeleton",28),a())}function Se(n,t){n&1&&b(0,"dm-empty",23)}function ke(n,t){n&1&&b(0,"dm-empty",24)}function we(n,t){if(n&1&&(o(0,"tr")(1,"td",30)(2,"dm-mono")(3,"span",35),r(4),a()()(),o(5,"td",31)(6,"dm-mono")(7,"span",36),r(8),a()()(),o(9,"td",32)(10,"dm-mono")(11,"span",37),r(12),a()()(),o(13,"td",33)(14,"dm-mono")(15,"span",38),r(16),a()()(),o(17,"td",34)(18,"dm-mono"),r(19),a()()()),n&2){let e=t.$implicit,i=d(3);s(3),u("matTooltip",i.absTs(e.ts)),s(),p(i.relTs(e.ts)),s(3),x("data-method",e.method),s(),p(e.method),s(3),x("data-bucket",i.bucketOf(e.status)),s(),p(e.status),s(3),u("title",e.path),s(),p(e.path),s(3),p(e.durationMs)}}function Oe(n,t){if(n&1&&(o(0,"div",25)(1,"table",29)(2,"thead")(3,"tr")(4,"th",30),r(5,"Time"),a(),o(6,"th",31),r(7,"Method"),a(),o(8,"th",32),r(9,"Status"),a(),o(10,"th",33),r(11,"Path"),a(),o(12,"th",34),r(13,"ms"),a()()(),o(14,"tbody"),v(15,we,20,9,"tr",null,I),a()()()),n&2){let e=d(2);s(15),y(e.filtered())}}function Te(n,t){if(n&1){let e=M();o(0,"div",12)(1,"mat-form-field",13)(2,"mat-label"),r(3,"Since"),a(),o(4,"mat-select",14),h("ngModelChange",function(l){_(e);let m=d();return C(m.since.set(l))}),v(5,ve,2,2,"mat-option",15,he),a()(),o(7,"div",16)(8,"span",17),r(9,"Methods"),a(),v(10,ye,2,4,"button",18,O),a(),o(12,"div",16)(13,"span",17),r(14,"Status"),a(),v(15,be,2,4,"button",18,O),a(),o(17,"mat-form-field",19)(18,"mat-label"),r(19,"Path contains"),a(),o(20,"input",20),h("ngModelChange",function(l){_(e);let m=d();return C(m.pathQuery.set(l))}),a(),g(21,Me,3,0,"button",21),a()(),g(22,Pe,5,0,"div",22)(23,Se,1,0,"dm-empty",23)(24,ke,1,0,"dm-empty",24)(25,Oe,17,0,"div",25)}if(n&2){let e=d();s(4),u("ngModel",e.since()),s(),y(e.sinceOptions),s(5),y(e.methods),s(5),y(e.statusBuckets),s(5),u("ngModel",e.pathQuery()),s(),f(e.pathQuery()?21:-1),s(),f(e.loading()&&e.rows().length===0?22:e.filtered().length===0&&e.rows().length===0?23:e.filtered().length===0?24:25)}}var Ee=["GET","POST","PUT","DELETE","PATCH"],Re=["2xx","3xx","4xx","5xx"],qe=[{value:"5m",label:"5m"},{value:"15m",label:"15m"},{value:"1h",label:"1h"},{value:"all",label:"All"}],Ie=5e3;function de(n,t){let e=Math.max(0,Math.floor((t-n)/1e3));if(e<1)return"just now";if(e<60)return`${e}s ago`;let i=Math.floor(e/60);if(i<60)return`${i}m ago`;let l=Math.floor(i/60);return l<24?`${l}h ago`:`${Math.floor(l/24)}d ago`}function ce(n){return n>=200&&n<300?"2xx":n>=300&&n<400?"3xx":n>=400&&n<500?"4xx":n>=500&&n<600?"5xx":null}var pe=class n{name="";api=w(H);http=w(B);methods=Ee;statusBuckets=Re;sinceOptions=qe;loading=c(!0);rows=c([]);since=c("5m");methodFilter=c(new Set);statusFilter=c(new Set);pathQuery=c("");paused=c(!1);lastRefreshed=c(null);tick=c(0);currentApp=P(()=>this.name?this.api.byName(this.name):void 0);unknownApp=P(()=>this.name?this.api.ready()?!this.api.byName(this.name):!1:!0);filtered=P(()=>{let t=this.rows(),e=this.methodFilter(),i=this.statusFilter(),l=this.pathQuery().trim().toLowerCase();return t.filter(m=>{if(e.size>0&&!e.has(m.method.toUpperCase()))return!1;if(i.size>0){let S=ce(m.status);if(!S||!i.has(S))return!1}return!(l&&!m.path.toLowerCase().includes(l))}).sort((m,S)=>S.ts-m.ts)});lastRefreshedLabel=P(()=>{this.tick();let t=this.lastRefreshed();return t?de(t,Date.now()):"\u2014"});refreshTimer;tickTimer;sinceFirst=!0;constructor(){F(()=>{let t=this.since();if(this.sinceFirst){this.sinceFirst=!1;return}this.refresh()})}ngOnInit(){this.refresh(),this.refreshTimer=setInterval(()=>{this.paused()||this.refresh(!0)},Ie),this.tickTimer=setInterval(()=>this.tick.update(t=>t+1),1e3)}ngOnChanges(t){"name"in t&&!t.name.firstChange&&(this.rows.set([]),this.refresh())}ngOnDestroy(){this.refreshTimer&&clearInterval(this.refreshTimer),this.tickTimer&&clearInterval(this.tickTimer)}togglePause(){this.paused.update(t=>!t)}toggleMethod(t){this.methodFilter.update(e=>{let i=new Set(e);return i.has(t)?i.delete(t):i.add(t),i})}toggleStatus(t){this.statusFilter.update(e=>{let i=new Set(e);return i.has(t)?i.delete(t):i.add(t),i})}async refresh(t=!1){if(this.name){t||this.loading.set(!0);try{let e=this.since(),i=e==="all"?"":`?since=${encodeURIComponent(e)}`,l=`/api/apps/${encodeURIComponent(this.name)}/requests${i}`,m=await E(this.http.get(l));this.rows.set(Array.isArray(m)?m:[]),this.lastRefreshed.set(Date.now())}catch{}finally{t||this.loading.set(!1)}}}relTs(t){return this.tick(),de(t,Date.now())}absTs(t){return new Date(t).toLocaleString()}bucketOf(t){return ce(t)}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=q({type:n,selectors:[["dm-requests-page"]],inputs:{name:"name"},features:[R],decls:29,vars:11,consts:[[1,"dm-page-header"],["matTooltip","Back to app",1,"dm-back",3,"routerLink"],[1,"dm-sep"],[1,"dm-app"],[3,"status","health"],[1,"dm-page-sub"],[1,"dm-header-actions"],["mat-stroked-button","",3,"click","matTooltip"],["mat-stroked-button","","matTooltip","Refresh now",3,"click"],["icon","search_off","title","Unknown app","hint","No app with that name. Head back to the apps list."],[1,"dm-paused"],["routerLink","/",1,"dm-empty-link"],[1,"dm-toolbar"],["appearance","outline",1,"dm-since"],[3,"ngModelChange","ngModel"],[3,"value"],[1,"dm-chip-group"],[1,"dm-chip-label"],[1,"dm-chip",3,"dm-chip-active"],["appearance","outline",1,"dm-path-filter"],["matInput","","placeholder","/api/...",3,"ngModelChange","ngModel"],["matSuffix","","mat-icon-button",""],[1,"dm-skel-rows"],["icon","hourglass_empty","title","No requests yet","hint","Either no traffic has hit the dev server, or requestLog.enabled is false in your config."],["icon","filter_alt_off","title","No matching requests","hint","Adjust filters to see more rows."],[1,"dm-table-wrap"],[1,"dm-chip",3,"click"],["matSuffix","","mat-icon-button","",3,"click"],["height","2rem"],[1,"dm-req-table"],[1,"dm-col-time"],[1,"dm-col-method"],[1,"dm-col-status"],[1,"dm-col-path"],[1,"dm-col-dur"],[3,"matTooltip"],[1,"dm-method"],[1,"dm-status"],[1,"dm-path",3,"title"]],template:function(e,i){if(e&1&&(o(0,"div",0)(1,"div")(2,"h1")(3,"a",1)(4,"mat-icon"),r(5,"arrow_back"),a()(),o(6,"span"),r(7,"Requests"),a(),o(8,"span",2),r(9,"\xB7"),a(),o(10,"dm-mono")(11,"span",3),r(12),a()(),g(13,ge,1,2,"dm-status-pill",4),a(),o(14,"div",5),g(15,fe,4,1,"span")(16,_e,2,0,"span"),g(17,Ce,4,0),a()(),o(18,"div",6)(19,"button",7),h("click",function(){return i.togglePause()}),o(20,"mat-icon"),r(21),a(),r(22),a(),o(23,"button",8),h("click",function(){return i.refresh()}),o(24,"mat-icon"),r(25,"refresh"),a(),r(26," Refresh "),a()()(),g(27,xe,3,0,"dm-empty",9)(28,Te,26,4)),e&2){let l;s(3),u("routerLink",D(9,ue,i.name)),s(9),p(i.name),s(),f((l=i.currentApp())?13:-1,l),s(2),f(i.lastRefreshed()?15:16),s(2),f(i.paused()?17:-1),s(2),u("matTooltip",i.paused()?"Resume auto-refresh":"Pause auto-refresh"),s(2),p(i.paused()?"play_arrow":"pause"),s(),k(" ",i.paused()?"Resume":"Pause"," "),s(5),f(i.unknownApp()?27:28)}},dependencies:[N,z,Q,K,j,L,ae,ie,te,ne,se,re,oe,me,le,W,J,G,V,A,U,$,X,Z,Y,ee],styles:['[_nghost-%COMP%]{display:block}.dm-page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.dm-page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:0}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dm-app[_ngcontent-%COMP%]{color:var(--mat-sys-primary);font-weight:500}.dm-back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;color:var(--mat-sys-on-surface-variant);text-decoration:none;padding:4px;border-radius:8px}.dm-back[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface)}.dm-page-sub[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);margin-top:.25rem;font-size:.875rem}.dm-paused[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.dm-header-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.dm-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:1rem 0}.dm-since[_ngcontent-%COMP%]{width:8rem}.dm-path-filter[_ngcontent-%COMP%]{flex:1;min-width:14rem}.dm-chip-group[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;flex-wrap:wrap}.dm-chip-label[_ngcontent-%COMP%]{font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant);margin-right:.25rem}.dm-chip[_ngcontent-%COMP%]{font-family:Roboto Mono,ui-monospace,monospace;font-size:.75rem;padding:4px 10px;border-radius:999px;border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);cursor:pointer;letter-spacing:.04rem}.dm-chip[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.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) 35%,transparent);color:var(--mat-sys-primary)}.dm-skel-rows[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem}.dm-table-wrap[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline-variant);border-radius:12px;overflow:hidden;background:var(--mat-sys-surface-container-lowest)}.dm-req-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;table-layout:fixed}.dm-req-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:8px 12px;font:500 .6875rem/1rem Roboto;text-transform:uppercase;letter-spacing:.04rem;color:var(--mat-sys-on-surface-variant);background:var(--mat-sys-surface-container);border-bottom:1px solid var(--mat-sys-outline-variant)}.dm-req-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:6px 12px;border-bottom:1px solid var(--mat-sys-outline-variant);font-size:.8125rem;height:32px;line-height:20px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-req-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:none}.dm-req-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:color-mix(in oklch,var(--mat-sys-primary) 6%,transparent)}.dm-col-time[_ngcontent-%COMP%]{width:7rem}.dm-col-method[_ngcontent-%COMP%], .dm-col-status[_ngcontent-%COMP%]{width:5rem}.dm-col-path[_ngcontent-%COMP%]{width:auto}.dm-col-dur[_ngcontent-%COMP%]{width:5rem;text-align:right}.dm-method[data-method=GET][_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-method[data-method=POST][_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.dm-method[data-method=DELETE][_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-method[data-method=PUT][_ngcontent-%COMP%], .dm-method[data-method=PATCH][_ngcontent-%COMP%]{color:var(--mat-sys-secondary)}.dm-method[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-status[data-bucket="2xx"][_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-status[data-bucket="3xx"][_ngcontent-%COMP%]{color:var(--mat-sys-secondary)}.dm-status[data-bucket="4xx"][_ngcontent-%COMP%]{color:var(--mat-sys-tertiary)}.dm-status[data-bucket="5xx"][_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-status[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-path[_ngcontent-%COMP%]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;color:var(--mat-sys-on-surface)}.dm-empty-link[_ngcontent-%COMP%]{color:var(--mat-sys-primary);text-decoration:none;margin-top:.5rem}.dm-empty-link[_ngcontent-%COMP%]:hover{text-decoration:underline}'],changeDetection:0})};export{pe as RequestsPageComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as X,b as Y,c as Z,e as ee,f as te,g as ne}from"./chunk-7NRE3SNA.js";import{a as V,b as K}from"./chunk-CILFSVSP.js";import{a as Q,b as W}from"./chunk-25VLDASM.js";import{b as L,c as q,d as H}from"./chunk-RIDV4B55.js";import"./chunk-OHX55ZU4.js";import{c as U,d as G,e as J}from"./chunk-SR5JAOLW.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import"./chunk-KLH6B22T.js";import{c as $}from"./chunk-5PAHWCG5.js";import{c as N,h as j,i as B,j as z}from"./chunk-Q3N4MMWW.js";import{P as A}from"./chunk-Y6B6X4Y6.js";import{Db as k,Eb as v,Fb as _,Hb as E,Ib as h,Jb as b,Kb as y,Lb as a,Mb as o,Nb as x,Sb as R,Ub as C,Wb as p,_a as d,aa as F,ea as M,ic as r,ja as D,jc as u,ka as O,kc as P,pb as S,qb as I,s as T,ta as g,xc as w}from"./chunk-K43KW4K2.js";var ie=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=I({type:n});static \u0275inj=F({imports:[A,A]})}return n})();var de=(n,e)=>e.name,se=(n,e)=>e.reason;function le(n,e){n&1&&(a(0,"div",7),x(1,"dm-skeleton",23)(2,"dm-skeleton",24)(3,"dm-skeleton",25),o())}function me(n,e){if(n&1&&(a(0,"div",26)(1,"span",27),r(2,"Connection"),o(),a(3,"span",28)(4,"span",29),x(5,"span",30),r(6),o()()(),a(7,"div",26)(8,"span",27),r(9,"Version"),o(),a(10,"span",28)(11,"dm-mono"),r(12),o()()(),a(13,"div",26)(14,"span",27),r(15,"API port"),o(),a(16,"span",28)(17,"dm-mono"),r(18),o()()(),a(19,"div",26)(20,"span",27),r(21,"Apps tracked"),o(),a(22,"span",28)(23,"dm-mono"),r(24),o()()()),n&2){let t=p();d(4),k("data-kind",t.api.connected()?"ok":"err"),d(2),P("",t.api.connected()?"connected":"disconnected"," "),d(6),u(t.daemonVersion()||"unknown"),d(6),u(t.daemonPort()||"-"),d(6),u(t.api.apps().length)}}function ce(n,e){n&1&&(a(0,"div",7),x(1,"dm-skeleton",31)(2,"dm-skeleton",25)(3,"dm-skeleton",32),o())}function pe(n,e){if(n&1&&(a(0,"dm-empty",8)(1,"dm-mono"),r(2,"daimon init --auto"),o()()),n&2){let t=p();y("title","No apps discovered")("hint",t.discovery().suggestion||"Run daimon init --auto in your workspace")}}function ue(n,e){if(n&1&&(a(0,"li")(1,"dm-mono"),r(2),o()()),n&2){let t=e.$implicit;d(2),u(t)}}function ge(n,e){if(n&1&&(a(0,"tr")(1,"td")(2,"dm-mono"),r(3),o()(),a(4,"td",37)(5,"dm-mono"),r(6),o()()()),n&2){let t=e.$implicit;d(3),u(t.reason),d(3),u(t.count)}}function fe(n,e){if(n&1&&(a(0,"div",33)(1,"div",27),r(2,"Rejected"),o(),a(3,"table",36)(4,"tbody"),h(5,ge,7,2,"tr",null,se),o()()()),n&2){let t=p(2);d(5),b(t.rejectedRows())}}function ve(n,e){if(n&1&&(a(0,"li")(1,"dm-mono"),r(2),o()()),n&2){let t=e.$implicit;d(2),u(t)}}function _e(n,e){if(n&1&&(a(0,"div",33)(1,"div",27),r(2,"Warnings"),o(),a(3,"ul",38),h(4,ve,3,1,"li",null,E),o()()),n&2){let t=p(2);d(4),b(t.discovery().warnings)}}function xe(n,e){if(n&1&&(a(0,"div",35),r(1),o()),n&2){let t=p(2);d(),u(t.discovery().suggestion)}}function ye(n,e){if(n&1&&(a(0,"div",26)(1,"span",27),r(2,"Apps found"),o(),a(3,"span",28)(4,"dm-mono"),r(5),o()()(),a(6,"div",26)(7,"span",27),r(8,"Scanned"),o(),a(9,"span",28)(10,"dm-mono"),r(11),o()()(),a(12,"div",33)(13,"div",27),r(14,"Search roots"),o(),a(15,"ul",34),h(16,ue,3,1,"li",null,E),o()(),v(18,fe,7,0,"div",33),v(19,_e,6,0,"div",33),v(20,xe,2,1,"div",35)),n&2){let t=p();d(5),u(t.discovery().appsFound),d(6),u(t.discovery().scanned),d(5),b(t.discovery().searchRoots),d(2),_(t.rejectedRows().length?18:-1),d(),_(t.discovery().warnings.length?19:-1),d(),_(t.discovery().suggestion?20:-1)}}function Ce(n,e){n&1&&(a(0,"div",9),r(1,"Discovery info unavailable."),o())}function he(n,e){n&1&&x(0,"mat-spinner",14)}function be(n,e){n&1&&(a(0,"mat-icon"),r(1,"play_arrow"),o())}function Me(n,e){n&1&&x(0,"mat-spinner",14)}function ke(n,e){n&1&&(a(0,"mat-icon"),r(1,"build"),o())}function Pe(n,e){if(n&1&&(a(0,"dm-mono"),r(1),o()),n&2){let t=p(2).$implicit,i=p();d(),u(i.state(t.name).detail)}}function we(n,e){if(n&1&&(a(0,"span"),r(1),o()),n&2){let t=p(2).$implicit,i=p();d(),u(i.state(t.name).detail)}}function De(n,e){if(n&1&&(a(0,"div",41),v(1,Pe,2,1,"dm-mono")(2,we,2,1,"span"),o()),n&2){let t=p().$implicit,i=p();d(),_(i.state(t.name).isPath?1:2)}}function Oe(n,e){n&1&&x(0,"mat-spinner",14)}function Se(n,e){n&1&&(a(0,"mat-icon"),r(1,"search"),o())}function Ee(n,e){n&1&&x(0,"mat-spinner",14)}function Ae(n,e){n&1&&(a(0,"mat-icon"),r(1,"build"),o())}function Te(n,e){if(n&1){let t=R();a(0,"mat-card",6)(1,"mat-card-header")(2,"mat-card-title"),r(3),o()(),a(4,"mat-card-content")(5,"div",39)(6,"div",40),r(7),o(),a(8,"span",29),x(9,"span",30),r(10),o()(),v(11,De,3,1,"div",41),o(),a(12,"mat-card-actions",42)(13,"button",13),C("click",function(){let s=D(t).$implicit,m=p();return O(m.runOne(s.name,!0))}),v(14,Oe,1,0,"mat-spinner",14)(15,Se,2,0,"mat-icon"),r(16," Dry-run "),o(),a(17,"button",43),C("click",function(){let s=D(t).$implicit,m=p();return O(m.runOne(s.name,!1))}),v(18,Ee,1,0,"mat-spinner",14)(19,Ae,2,0,"mat-icon"),r(20," Fix "),o()()()}if(n&2){let t=e.$implicit,i=p();d(3),u(t.title),d(4),u(t.description),d(),k("data-kind",i.state(t.name).status),d(2),P("",i.state(t.name).status," "),d(),_(i.state(t.name).detail?11:-1),d(2),y("disabled",i.busy(t.name)||i.busyAll()),d(),_(i.busy(t.name)==="dry"?14:15),d(3),y("disabled",i.busy(t.name)||i.busyAll()),d(),_(i.busy(t.name)==="fix"?18:19)}}function Fe(n,e){n&1&&x(0,"mat-spinner",14)}function Ie(n,e){n&1&&(a(0,"mat-icon"),r(1,"refresh"),o())}var Re=[{name:"orphan-daemon",title:"Orphan daemon",description:"Daemon may be running from the wrong cwd, ignoring your local daimon.config.json"},{name:"stale-lock",title:"Stale lock",description:"Lock file exists but the daemon process is dead"},{name:"missing-search-root",title:"Missing search root",description:"Current cwd has an nx/angular/vite project but isn\u2019t configured"},{name:"corrupt-history-db",title:"Corrupt history DB",description:"History SQLite DB failed quickCheck()"}],oe=class n{api=M(z);http=M(N);snack=M(Q);routines=Re;results=g(new Map);results_lastIntent=g(new Map);errored=g(new Set);loading=g(!0);discovery=g(null);daemonVersion=g("");daemonPort=g(null);configLoaded=g(!1);overview=g(null);busyMap=g(new Map);busyAll=g(!1);busyAllKind=g(null);reloading=g(!1);rejectedRows=w(()=>{let e=this.discovery();return e?Object.entries(e.rejected||{}).map(([t,i])=>({reason:t,count:i})).sort((t,i)=>i.count-t.count):[]});subtitle=w(()=>{let e=this.results(),t=0;for(let i of e.values())i.detected&&t++;return this.loading()&&e.size===0?"Checking system health\u2026":e.size===0?"Run diagnostics to see if any routines need fixing.":t===0?"All checked routines look clean.":`${t} routine${t===1?"":"s"} need${t===1?"s":""} fixing`});tokenEstimate=w(()=>120+this.api.apps().length*34);async ngOnInit(){await this.refreshAll()}async refreshAll(){this.loading.set(!0);try{let[e,t,i]=await Promise.all([this.api.getConfig().catch(()=>null),this.api.discoveryExplain().catch(()=>null),T(this.http.get("/api/overview")).catch(()=>null)]);e&&e.config&&(this.configLoaded.set(!0),this.daemonPort.set(e.config.apiPort??e.config.api?.port??null)),this.discovery.set(t),this.overview.set(i),i?.version&&this.daemonVersion.set(i.version),this.api.apps().length||await this.api.refresh()}finally{this.loading.set(!1)}}state(e){let t=this.results().get(e),i=this.results_lastIntent().get(e),s=this.errored().has(e);if(!t)return{status:"unknown",detail:"",isPath:!1};let m;s?m="error":i==="fix"?m=t.detected?"fixed":"clean":m=t.detected?"detected":"clean";let f=t.description||"",c=/[\\/]/.test(f)||f.includes(":\\")||f.startsWith("/");return{status:m,detail:f,isPath:c}}busy(e){return this.busyMap().get(e)}async runOne(e,t){if(!t&&!window.confirm(`Run fix for "${e}"? This will modify daemon state.`))return;let i=t?"dry":"fix";this.setBusy(e,i);try{let s=await this.api.runAutoFix({dryRun:t,permitted:[e]});this.ingestResults(s,i);let m=this.results().get(e);m?this.snack.open(t?m.detected?`${e}: issue detected`:`${e}: clean`:m.detected?`${e}: fix applied`:`${e}: no action needed`,"OK",{duration:3500}):this.snack.open(`${e}: no result returned`,"OK",{duration:3e3})}catch(s){this.markError(e,s?.message||String(s)),this.snack.open(`${e} failed: ${s?.message||s}`,"Dismiss",{duration:5e3})}finally{this.setBusy(e,null)}}async runAllDry(){this.busyAll.set(!0),this.busyAllKind.set("dry");try{let e=await this.api.runAutoFix({dryRun:!0});this.ingestResults(e,"dry"),this.snack.open("Dry-run complete","OK",{duration:2500})}catch(e){this.snack.open(`Dry-run failed: ${e?.message||e}`,"Dismiss",{duration:5e3})}finally{this.busyAll.set(!1),this.busyAllKind.set(null)}}async fixAll(){if(window.confirm("Run every fix routine without dry-run? This will modify daemon state.")){this.busyAll.set(!0),this.busyAllKind.set("fix");try{let t=await this.api.runAutoFix({dryRun:!1});this.ingestResults(t,"fix"),this.snack.open("Fix-all complete","OK",{duration:2500})}catch(t){this.snack.open(`Fix-all failed: ${t?.message||t}`,"Dismiss",{duration:5e3})}finally{this.busyAll.set(!1),this.busyAllKind.set(null)}}}async reloadConfig(){this.reloading.set(!0);try{await this.api.reloadConfig(),this.snack.open("Config reloaded","OK",{duration:2500}),await this.refreshAll()}catch(e){this.snack.open(`Reload failed: ${e?.message||e}`,"Dismiss",{duration:5e3})}finally{this.reloading.set(!1)}}setBusy(e,t){this.busyMap.update(i=>{let s=new Map(i);return t===null?s.delete(e):s.set(e,t),s})}ingestResults(e,t){let i=Array.isArray(e?.ran)?e.ran:[],s=Array.isArray(e?.skipped)?e.skipped:[],m=Array.isArray(e?.errors)?e.errors:[];if(this.results.update(f=>{let c=new Map(f);for(let l of i)c.set(l.name,l);for(let l of s)c.set(l.name,l);for(let l of m){let ae=c.get(l.name);c.set(l.name,{name:l.name,detected:ae?.detected??!1,description:l.error||"error"})}return c}),this.errored.update(f=>{let c=new Set(f);for(let l of i)c.delete(l.name);for(let l of s)c.delete(l.name);for(let l of m)c.add(l.name);return c}),this.results_lastIntent.update(f=>{let c=new Map(f);for(let l of i)c.set(l.name,t);for(let l of s)c.set(l.name,t);for(let l of m)c.set(l.name,"fix");return c}),m.length)for(let f of m)this.markError(f.name,f.error)}markError(e,t){this.results.update(i=>{let s=new Map(i);return s.set(e,{name:e,detected:!1,description:t||"error"}),s}),this.results_lastIntent.update(i=>{let s=new Map(i);return s.set(e,"fix"),s}),this.errored.update(i=>{let s=new Set(i);return s.add(e),s})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=S({type:n,selectors:[["dm-doctor-page"]],decls:74,vars:11,consts:[[1,"dm-page-header"],[1,"dm-page-sub"],["mat-icon-button","","aria-label","Refresh",3,"click","disabled"],[1,"dm-section"],[1,"dm-section-title"],[1,"dm-grid-2"],[1,"dm-card"],[1,"dm-stack"],["icon","search_off",3,"title","hint"],[1,"dm-muted"],[1,"dm-banner"],[1,"dm-banner-text"],[1,"dm-banner-actions"],["mat-stroked-button","",3,"click","disabled"],["diameter","16"],["mat-flat-button","","color","warn",3,"click","disabled"],[1,"dm-quick"],["mat-stroked-button","","routerLink","/config"],["mat-stroked-button","","routerLink","/events"],[1,"dm-stat"],[1,"dm-stat-icon"],[1,"dm-stat-label"],[1,"dm-stat-value"],["height","1.25rem","width","60%"],["height","1rem","width","40%"],["height","1rem","width","50%"],[1,"dm-kv"],[1,"dm-k"],[1,"dm-v"],[1,"dm-pill"],[1,"dm-dot"],["height","1rem","width","70%"],["height","1rem","width","80%"],[1,"dm-block"],[1,"dm-list"],[1,"dm-callout"],[1,"dm-table"],[1,"dm-num"],[1,"dm-list","dm-warn"],[1,"dm-row-between"],[1,"dm-routine-desc"],[1,"dm-detail"],["align","end"],["mat-flat-button","","color","primary",3,"click","disabled"]],template:function(t,i){t&1&&(a(0,"div",0)(1,"div")(2,"h1"),r(3,"Doctor"),o(),a(4,"div",1),r(5),o()(),a(6,"button",2),C("click",function(){return i.refreshAll()}),a(7,"mat-icon"),r(8,"refresh"),o()()(),a(9,"section",3)(10,"h2",4),r(11,"System overview"),o(),a(12,"div",5)(13,"mat-card",6)(14,"mat-card-header")(15,"mat-card-title"),r(16,"Daemon"),o()(),a(17,"mat-card-content"),v(18,le,4,0,"div",7)(19,me,25,5),o()(),a(20,"mat-card",6)(21,"mat-card-header")(22,"mat-card-title"),r(23,"Discovery"),o()(),a(24,"mat-card-content"),v(25,ce,4,0,"div",7)(26,pe,3,2,"dm-empty",8)(27,ye,21,5)(28,Ce,2,0,"div",9),o()()()(),a(29,"section",3)(30,"h2",4),r(31,"Auto-fix routines"),o(),a(32,"div",10)(33,"div",11),r(34,"Run diagnostics across every routine, or attempt all fixes in one go."),o(),a(35,"div",12)(36,"button",13),C("click",function(){return i.runAllDry()}),v(37,he,1,0,"mat-spinner",14)(38,be,2,0,"mat-icon"),r(39," Run all dry-run "),o(),a(40,"button",15),C("click",function(){return i.fixAll()}),v(41,Me,1,0,"mat-spinner",14)(42,ke,2,0,"mat-icon"),r(43," Fix everything (be careful) "),o()()(),a(44,"div",5),h(45,Te,21,9,"mat-card",6,de),o()(),a(47,"section",3)(48,"h2",4),r(49,"Quick links"),o(),a(50,"div",16)(51,"button",17)(52,"mat-icon"),r(53,"tune"),o(),r(54," Open Config editor "),o(),a(55,"button",18)(56,"mat-icon"),r(57,"timeline"),o(),r(58," View Events "),o(),a(59,"button",13),C("click",function(){return i.reloadConfig()}),v(60,Fe,1,0,"mat-spinner",14)(61,Ie,2,0,"mat-icon"),r(62," Reload config "),o(),a(63,"div",19)(64,"div",20)(65,"mat-icon"),r(66,"token"),o()(),a(67,"div")(68,"div",21),r(69,"API token footprint"),o(),a(70,"div",22)(71,"dm-mono"),r(72),o(),r(73," per Claude session"),o()()()()()),t&2&&(d(5),u(i.subtitle()),d(),y("disabled",i.loading()),d(12),_(i.loading()&&!i.configLoaded()?18:19),d(7),_(i.loading()&&!i.discovery()?25:i.discovery()&&i.discovery().appsFound===0?26:i.discovery()?27:28),d(11),y("disabled",i.busyAll()),d(),_(i.busyAll()&&i.busyAllKind()==="dry"?37:38),d(3),y("disabled",i.busyAll()),d(),_(i.busyAll()&&i.busyAllKind()==="fix"?41:42),d(4),b(i.routines),d(14),y("disabled",i.reloading()),d(),_(i.reloading()?60:61),d(12),P("~ ",i.tokenEstimate()," tokens"))},dependencies:[$,ne,X,ee,Z,te,Y,H,q,L,B,j,K,V,W,ie,U,G,J],styles:["[_nghost-%COMP%]{display:block;max-width:1200px;margin:0 auto}.dm-section[_ngcontent-%COMP%]{margin-bottom:1.25rem}.dm-section-title[_ngcontent-%COMP%]{margin:0 0 .5rem;font:500 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);letter-spacing:.06em;text-transform:uppercase}.dm-grid-2[_ngcontent-%COMP%]{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:800px){.dm-grid-2[_ngcontent-%COMP%]{grid-template-columns:1fr}}.dm-card[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container-low)}.dm-stack[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.dm-kv[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--mat-sys-outline-variant)}.dm-kv[_ngcontent-%COMP%]:last-child{border-bottom:0}.dm-k[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.8125rem}.dm-v[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-block[_ngcontent-%COMP%]{margin-top:.75rem}.dm-block[_ngcontent-%COMP%] .dm-k[_ngcontent-%COMP%]{display:block;margin-bottom:.35rem}.dm-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.dm-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:.25rem .5rem;background:var(--mat-sys-surface-container);border-radius:6px;overflow-wrap:anywhere}.dm-warn[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{color:var(--mat-sys-error)}.dm-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:.8125rem}.dm-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:.25rem .5rem;border-bottom:1px solid var(--mat-sys-outline-variant)}.dm-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:0}.dm-num[_ngcontent-%COMP%]{text-align:right;color:var(--mat-sys-on-surface-variant)}.dm-callout[_ngcontent-%COMP%]{margin-top:.75rem;padding:.65rem .85rem;border-radius:10px;background:color-mix(in oklch,var(--mat-sys-tertiary) 12%,transparent);border:1px solid color-mix(in oklch,var(--mat-sys-tertiary) 28%,transparent);color:var(--mat-sys-on-surface);font-size:.875rem}.dm-muted[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-size:.875rem}.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[_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:999px;background:var(--mat-sys-outline)}.dm-pill[data-kind=ok][_ngcontent-%COMP%], .dm-pill[data-kind=clean][_ngcontent-%COMP%], .dm-pill[data-kind=fixed][_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=ok][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=clean][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=fixed][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary)}.dm-pill[data-kind=detected][_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=detected][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-tertiary)}.dm-pill[data-kind=err][_ngcontent-%COMP%], .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-pill[data-kind=err][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%], .dm-pill[data-kind=error][_ngcontent-%COMP%] .dm-dot[_ngcontent-%COMP%]{background:var(--mat-sys-error)}.dm-banner[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .85rem;margin-bottom:.75rem;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);border-radius:10px}.dm-banner-text[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface-variant)}.dm-banner-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}@media(max-width:700px){.dm-banner[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.dm-banner-actions[_ngcontent-%COMP%]{flex-wrap:wrap}}.dm-row-between[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.dm-routine-desc[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface-variant);flex:1}.dm-detail[_ngcontent-%COMP%]{margin-top:.75rem;padding:.5rem .65rem;background:var(--mat-sys-surface-container);border-radius:8px;font-size:.8125rem;overflow-wrap:anywhere}.dm-quick[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.dm-quick[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{justify-content:flex-start;padding:.5rem .75rem;height:auto;min-height:40px}.dm-stat[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.625rem;padding:.5rem .75rem;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-low)}.dm-stat-icon[_ngcontent-%COMP%]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);color:var(--mat-sys-primary)}.dm-stat-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-stat-label[_ngcontent-%COMP%]{font-size:.75rem;color:var(--mat-sys-on-surface-variant);text-transform:uppercase;letter-spacing:.025rem}.dm-stat-value[_ngcontent-%COMP%]{font-size:.875rem;color:var(--mat-sys-on-surface)}mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:.35rem}"],changeDetection:0})};export{oe as DoctorPageComponent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{m as G}from"./chunk-KLH6B22T.js";import{P as v,l as U,m as S,o as k,p as x,q as _,s as f,v as H}from"./chunk-Y6B6X4Y6.js";import{Ca as A,a,aa as O,ca as w,ea as p,eb as F,gc as L,na as M,pb as C,qb as N,rb as P}from"./chunk-K43KW4K2.js";var l=(function(s){return s[s.FADING_IN=0]="FADING_IN",s[s.VISIBLE=1]="VISIBLE",s[s.FADING_OUT=2]="FADING_OUT",s[s.HIDDEN=3]="HIDDEN",s})(l||{}),E=class{_renderer;element;config;_animationForciblyDisabledThroughCss;state=l.HIDDEN;constructor(t,e,i,n=!1){this._renderer=t,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=n}fadeOut(){this._renderer.fadeOutRipple(this)}},B=_({passive:!0,capture:!0}),D=class{_events=new Map;addHandler(t,e,i,n){let r=this._events.get(e);if(r){let d=r.get(i);d?d.add(n):r.set(i,new Set([n]))}else this._events.set(e,new Map([[i,new Set([n])]])),t.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,B)})}removeHandler(t,e,i){let n=this._events.get(t);if(!n)return;let r=n.get(e);r&&(r.delete(i),r.size===0&&n.delete(e),n.size===0&&(this._events.delete(t),document.removeEventListener(t,this._delegateEventHandler,B)))}_delegateEventHandler=t=>{let e=k(t);e&&this._events.get(t.type)?.forEach((i,n)=>{(n===e||n.contains(e))&&i.forEach(r=>r.handleEvent(t))})}},z={enterDuration:225,exitDuration:150},J=800,Z=_({passive:!0,capture:!0}),V=["mousedown","touchstart"],$=["mouseup","mouseleave","touchend","touchcancel"],K=(()=>{class s{static \u0275fac=function(i){return new(i||s)};static \u0275cmp=C({type:s,selectors:[["ng-component"]],hostAttrs:["mat-ripple-style-loader",""],decls:0,vars:0,template:function(i,n){},styles:[`.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0);background-color:var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent))}@media(forced-colors: active){.mat-ripple-element{display:none}}.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}
|
|
2
|
+
`],encapsulation:2,changeDetection:0})}return s})(),b=class s{_target;_ngZone;_platform;_containerElement;_triggerElement;_isPointerDown=!1;_activeRipples=new Map;_mostRecentTransientRipple;_lastTouchStartEvent;_pointerUpEventsRegistered=!1;_containerRect;static _eventManager=new D;constructor(t,e,i,n,r){this._target=t,this._ngZone=e,this._platform=n,n.isBrowser&&(this._containerElement=f(i)),r&&r.get(H).load(K)}fadeInRipple(t,e,i={}){let n=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),r=a(a({},z),i.animation);i.centered&&(t=n.left+n.width/2,e=n.top+n.height/2);let d=i.radius||Q(t,e,n),j=t-n.left,Y=e-n.top,h=r.enterDuration,o=document.createElement("div");o.classList.add("mat-ripple-element"),o.style.left=`${j-d}px`,o.style.top=`${Y-d}px`,o.style.height=`${d*2}px`,o.style.width=`${d*2}px`,i.color!=null&&(o.style.backgroundColor=i.color),o.style.transitionDuration=`${h}ms`,this._containerElement.appendChild(o);let T=window.getComputedStyle(o),X=T.transitionProperty,R=T.transitionDuration,m=X==="none"||R==="0s"||R==="0s, 0s"||n.width===0&&n.height===0,c=new E(this,o,i,m);o.style.transform="scale3d(1, 1, 1)",c.state=l.FADING_IN,i.persistent||(this._mostRecentTransientRipple=c);let u=null;return!m&&(h||r.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let I=()=>{u&&(u.fallbackTimer=null),clearTimeout(y),this._finishRippleTransition(c)},g=()=>this._destroyRipple(c),y=setTimeout(g,h+100);o.addEventListener("transitionend",I),o.addEventListener("transitioncancel",g),u={onTransitionEnd:I,onTransitionCancel:g,fallbackTimer:y}}),this._activeRipples.set(c,u),(m||!h)&&this._finishRippleTransition(c),c}fadeOutRipple(t){if(t.state===l.FADING_OUT||t.state===l.HIDDEN)return;let e=t.element,i=a(a({},z),t.config.animation);e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",t.state=l.FADING_OUT,(t._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(t)}fadeOutAll(){this._getActiveRipples().forEach(t=>t.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(t=>{t.config.persistent||t.fadeOut()})}setupTriggerEvents(t){let e=f(t);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,V.forEach(i=>{s._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(t){t.type==="mousedown"?this._onMousedown(t):t.type==="touchstart"?this._onTouchStart(t):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{$.forEach(e=>{this._triggerElement.addEventListener(e,this,Z)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(t){t.state===l.FADING_IN?this._startFadeOutTransition(t):t.state===l.FADING_OUT&&this._destroyRipple(t)}_startFadeOutTransition(t){let e=t===this._mostRecentTransientRipple,{persistent:i}=t.config;t.state=l.VISIBLE,!i&&(!e||!this._isPointerDown)&&t.fadeOut()}_destroyRipple(t){let e=this._activeRipples.get(t)??null;this._activeRipples.delete(t),this._activeRipples.size||(this._containerRect=null),t===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),t.state=l.HIDDEN,e!==null&&(t.element.removeEventListener("transitionend",e.onTransitionEnd),t.element.removeEventListener("transitioncancel",e.onTransitionCancel),e.fallbackTimer!==null&&clearTimeout(e.fallbackTimer)),t.element.remove()}_onMousedown(t){let e=U(t),i=this._lastTouchStartEvent&&Date.now()<this._lastTouchStartEvent+J;!this._target.rippleDisabled&&!e&&!i&&(this._isPointerDown=!0,this.fadeInRipple(t.clientX,t.clientY,this._target.rippleConfig))}_onTouchStart(t){if(!this._target.rippleDisabled&&!S(t)){this._lastTouchStartEvent=Date.now(),this._isPointerDown=!0;let e=t.changedTouches;if(e)for(let i=0;i<e.length;i++)this.fadeInRipple(e[i].clientX,e[i].clientY,this._target.rippleConfig)}}_onPointerUp(){this._isPointerDown&&(this._isPointerDown=!1,this._getActiveRipples().forEach(t=>{let e=t.state===l.VISIBLE||t.config.terminateOnPointerUp&&t.state===l.FADING_IN;!t.config.persistent&&e&&t.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let t=this._triggerElement;t&&(V.forEach(e=>s._eventManager.removeHandler(e,t,this)),this._pointerUpEventsRegistered&&($.forEach(e=>t.removeEventListener(e,this,Z)),this._pointerUpEventsRegistered=!1))}};function Q(s,t,e){let i=Math.max(Math.abs(s-e.left),Math.abs(s-e.right)),n=Math.max(Math.abs(t-e.top),Math.abs(t-e.bottom));return Math.sqrt(i*i+n*n)}var W=new w("mat-ripple-global-options"),pt=(()=>{class s{_elementRef=p(A);_animationsDisabled=G();color;unbounded;centered;radius=0;animation;get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}_disabled=!1;get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}_trigger;_rippleRenderer;_globalOptions;_isInitialized=!1;constructor(){let e=p(F),i=p(x),n=p(W,{optional:!0}),r=p(M);this._globalOptions=n||{},this._rippleRenderer=new b(this,e,this._elementRef,i,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:a(a(a({},this._globalOptions.animation),this._animationsDisabled?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,n){return typeof e=="number"?this._rippleRenderer.fadeInRipple(e,i,a(a({},this.rippleConfig),n)):this._rippleRenderer.fadeInRipple(0,0,a(a({},this.rippleConfig),e))}static \u0275fac=function(i){return new(i||s)};static \u0275dir=P({type:s,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,n){i&2&&L("mat-ripple-unbounded",n.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"]})}return s})();var gt=(()=>{class s{static \u0275fac=function(i){return new(i||s)};static \u0275mod=N({type:s});static \u0275inj=O({imports:[v,v]})}return s})();export{z as a,b,W as c,pt as d,gt as e};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as Xe,b as Ge,c as Qe,d as Ye,e as Ze}from"./chunk-6BDWIJ3G.js";import{a as et,b as tt,c as it}from"./chunk-ZVUH3ISD.js";import{a as Se,b as Me}from"./chunk-CILFSVSP.js";import{a as Ve}from"./chunk-25VLDASM.js";import{a as Je,b as We,c as Ue,d as Ke}from"./chunk-ZEO5YLWG.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-YA4AZONZ.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-RIDV4B55.js";import{d as Te}from"./chunk-OHX55ZU4.js";import{a as Fe,c as De,e as Re}from"./chunk-SR5JAOLW.js";import{a as be,b as ve}from"./chunk-XXIJQBCQ.js";import"./chunk-YNQPX5G6.js";import"./chunk-IQZZO5IM.js";import{m as fe}from"./chunk-KLH6B22T.js";import{c as me,h as ue,i as _e}from"./chunk-Q3N4MMWW.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
|
+
`],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
|
+
`],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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{m as s}from"./chunk-KLH6B22T.js";import{gc as r,pb as c}from"./chunk-K43KW4K2.js";var n=(()=>{class o{_animationsDisabled=s();state="unchecked";disabled=!1;appearance="full";constructor(){}static \u0275fac=function(a){return new(a||o)};static \u0275cmp=c({type:o,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(a,e){a&2&&r("mat-pseudo-checkbox-indeterminate",e.state==="indeterminate")("mat-pseudo-checkbox-checked",e.state==="checked")("mat-pseudo-checkbox-disabled",e.disabled)("mat-pseudo-checkbox-minimal",e.appearance==="minimal")("mat-pseudo-checkbox-full",e.appearance==="full")("_mat-animation-noopable",e._animationsDisabled)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(a,e){},styles:[`.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-minimal-selected-checkmark-color, var(--mat-sys-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full{border-color:var(--mat-pseudo-checkbox-full-unselected-icon-color, var(--mat-sys-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-pseudo-checkbox-full-disabled-unselected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-pseudo-checkbox-full-selected-icon-color, var(--mat-sys-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-pseudo-checkbox-full-selected-checkmark-color, var(--mat-sys-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-pseudo-checkbox-full-disabled-selected-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-pseudo-checkbox-full-disabled-selected-checkmark-color, var(--mat-sys-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}
|
|
2
|
+
`],encapsulation:2,changeDetection:0})}return o})();export{n as a};
|