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
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{a as rt,b as lt,c as st,d as dt,e as ct}from"./chunk-4VNZXWQZ.js";import{a as Ae,b as Ne}from"./chunk-UNT27XFJ.js";import{a as Ge}from"./chunk-7L4DWDGL.js";import{a as it,b as at,c as nt,d as ot}from"./chunk-T2YKGOEM.js";import{a as He,b as We,c as Ue,d as Je,e as Qe,i as Xe,j as Ye,k as Ze,l as et,m as tt}from"./chunk-E3HUMJ6S.js";import{b as Ke}from"./chunk-NDSAQ2HK.js";import{a as ie,b as Fe,c as Ve,f as Pe,h as De,j as Re}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{b as ae,d as Be,e as ze,f as Le,g as je}from"./chunk-N5GRSTMJ.js";import{a as ne,c as $e,e as qe}from"./chunk-VZ6E4VQY.js";import{a as Ie,b as Oe}from"./chunk-JUZHAE4L.js";import"./chunk-YNQPX5G6.js";import{C as te}from"./chunk-MHOSWLRR.js";import{c as Ce,h as Me,i as Ee}from"./chunk-U6AY7XZK.js";import{G,H as Se,N as Te,P as D,h as ke,t as Z,v as ee}from"./chunk-Y6B6X4Y6.js";import{$b as N,Ca as U,Db as C,Eb as y,Ec as j,Fb as x,Gb as fe,Hb as Q,Hc as f,Ib as O,Ic as we,Jb as F,Kb as h,Lb as r,Mb as l,Nb as k,Sb as _,Tb as ve,Ub as g,Wb as s,Xb as V,Ya as be,Yb as P,Zb as ye,_ as H,_a as m,_b as K,a as de,aa as W,ac as B,b as ce,ca as A,db as I,ea as b,ec as M,gc as S,hc as xe,ic as c,ja as u,jc as T,ka as p,kc as z,la as pe,pb as E,qb as J,rb as _e,rc as X,s as q,ta as w,xc as L,za as he,zc as Y}from"./chunk-K43KW4K2.js";var vt=["mat-internal-form-field",""],yt=["*"],mt=(()=>{class n{labelPosition;static \u0275fac=function(i){return new(i||n)};static \u0275cmp=E({type:n,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,t){i&2&&S("mdc-form-field--align-end",t.labelPosition==="before")},inputs:{labelPosition:"labelPosition"},attrs:vt,ngContentSelectors:yt,decls:1,vars:0,template:function(i,t){i&1&&(V(),P(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 n})();var xt=["switch"],wt=["*"];function kt(n,a){n&1&&(r(0,"span",11),pe(),r(1,"svg",13),k(2,"path",14),l(),r(3,"svg",15),k(4,"path",16),l()())}var Ct=new A("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1,disabledInteractive:!1})}),oe=class{source;checked;constructor(a,e){this.source=a,this.checked=e}},ge=(()=>{class n{_elementRef=b(U);_focusMonitor=b(Z);_changeDetectorRef=b(j);defaults=b(Ct);_onChange=e=>{};_onTouched=()=>{};_validatorOnChange=()=>{};_uniqueId;_checked=!1;_createChangeEvent(e){return new oe(this,e)}_labelId;get buttonId(){return`${this.id||this._uniqueId}-button`}_switchElement;focus(){this._switchElement.nativeElement.focus()}_noopAnimations=te();_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 I;toggleChange=new I;get inputId(){return`${this.id||this._uniqueId}-input`}constructor(){b(ee).load(ne);let e=b(new Y("tabindex"),{optional:!0}),i=this.defaults;this.tabIndex=e==null?0:parseInt(e)||0,this.color=i.color||"accent",this.id=this._uniqueId=b(G).getId("mat-mdc-slide-toggle-"),this.hideIcon=i.hideIcon??!1,this.disabledInteractive=i.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 oe(this,this.checked))))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=E({type:n,selectors:[["mat-slide-toggle"]],viewQuery:function(i,t){if(i&1&&K(xt,5),i&2){let o;N(o=B())&&(t._switchElement=o.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,t){i&2&&(ve("id",t.id),C("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),xe(t.color?"mat-"+t.color:""),S("mat-mdc-slide-toggle-focused",t._focused)("mat-mdc-slide-toggle-checked",t.checked)("_mat-animation-noopable",t._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",f],color:"color",disabled:[2,"disabled","disabled",f],disableRipple:[2,"disableRipple","disableRipple",f],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:we(e)],checked:[2,"checked","checked",f],hideIcon:[2,"hideIcon","hideIcon",f],disabledInteractive:[2,"disabledInteractive","disabledInteractive",f]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],features:[X([{provide:ie,useExisting:H(()=>n),multi:!0},{provide:Ve,useExisting:n,multi:!0}]),he],ngContentSelectors:wt,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(i,t){if(i&1){let o=_();V(),r(0,"div",1)(1,"button",2,0),g("click",function(){return u(o),p(t._handleClick())}),k(3,"div",3)(4,"span",4),r(5,"span",5)(6,"span",6)(7,"span",7),k(8,"span",8),l(),r(9,"span",9),k(10,"span",10),l(),y(11,kt,5,0,"span",11),l()()(),r(12,"label",12),g("click",function(v){return u(o),p(v.stopPropagation())}),P(13),l()()}if(i&2){let o=M(2);h("labelPosition",t.labelPosition),m(),S("mdc-switch--selected",t.checked)("mdc-switch--unselected",!t.checked)("mdc-switch--checked",t.checked)("mdc-switch--disabled",t.disabled)("mat-mdc-slide-toggle-disabled-interactive",t.disabledInteractive),h("tabIndex",t.disabled&&!t.disabledInteractive?-1:t.tabIndex)("disabled",t.disabled&&!t.disabledInteractive),C("id",t.buttonId)("name",t.name)("aria-label",t.ariaLabel)("aria-labelledby",t._getAriaLabelledBy())("aria-describedby",t.ariaDescribedby)("aria-required",t.required||null)("aria-checked",t.checked)("aria-disabled",t.disabled&&t.disabledInteractive?"true":null),m(9),h("matRippleTrigger",o)("matRippleDisabled",t.disableRipple||t.disabled)("matRippleCentered",!0),m(),x(t.hideIcon?-1:11),m(),h("for",t.buttonId),C("id",t._labelId)}},dependencies:[ae,mt],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 n})(),gt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=J({type:n});static \u0275inj=W({imports:[ge,D,D]})}return n})();var Vt=["button"],Pt=["*"];function Dt(n,a){if(n&1&&(r(0,"div",2),k(1,"mat-pseudo-checkbox",6),l()),n&2){let e=s();m(),h("disabled",e.disabled)}}var ut=new A("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS",{providedIn:"root",factory:Rt});function Rt(){return{hideSingleSelectionIndicator:!1,hideMultipleSelectionIndicator:!1,disabledInteractive:!1}}var pt=new A("MatButtonToggleGroup"),At={provide:ie,useExisting:H(()=>ue),multi:!0},re=class{source;value;constructor(a,e){this.source=a,this.value=e}},ue=(()=>{class n{_changeDetector=b(j);_dir=b(Te,{optional:!0});_multiple=!1;_disabled=!1;_disabledInteractive=!1;_selectionModel;_rawValue;_controlValueAccessorChangeFn=()=>{};_onTouched=()=>{};_buttonToggles;appearance;get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}_name=b(G).getId("mat-button-toggle-group-");vertical;get value(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(i=>i.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}valueChange=new I;get selected(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=e,this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markButtonsForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markButtonsForCheck()}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}change=new I;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._markButtonsForCheck()}_hideSingleSelectionIndicator;get hideMultipleSelectionIndicator(){return this._hideMultipleSelectionIndicator}set hideMultipleSelectionIndicator(e){this._hideMultipleSelectionIndicator=e,this._markButtonsForCheck()}_hideMultipleSelectionIndicator;constructor(){let e=b(ut,{optional:!0});this.appearance=e&&e.appearance?e.appearance:"standard",this.hideSingleSelectionIndicator=e?.hideSingleSelectionIndicator??!1,this.hideMultipleSelectionIndicator=e?.hideMultipleSelectionIndicator??!1}ngOnInit(){this._selectionModel=new Ke(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked)),this.multiple||this._initializeTabIndex()}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_keydown(e){if(this.multiple||this.disabled||Se(e))return;let t=e.target.id,o=this._buttonToggles.toArray().findIndex(v=>v.buttonId===t),d=null;switch(e.keyCode){case 32:case 13:d=this._buttonToggles.get(o)||null;break;case 38:d=this._getNextButton(o,-1);break;case 37:d=this._getNextButton(o,this.dir==="ltr"?-1:1);break;case 40:d=this._getNextButton(o,1);break;case 39:d=this._getNextButton(o,this.dir==="ltr"?1:-1);break;default:return}d&&(e.preventDefault(),d._onButtonClick(),d.focus())}_emitChangeEvent(e){let i=new re(e,this.value);this._rawValue=i.value,this._controlValueAccessorChangeFn(i.value),this.change.emit(i)}_syncButtonToggle(e,i,t=!1,o=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?i?this._selectionModel.select(e):this._selectionModel.deselect(e):o=!0,o?Promise.resolve().then(()=>this._updateModelValue(e,t)):this._updateModelValue(e,t)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return typeof this._rawValue>"u"?!1:this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(i=>e.value!=null&&i===e.value):e.value===this._rawValue}_initializeTabIndex(){if(this._buttonToggles.forEach(e=>{e.tabIndex=-1}),this.selected)this.selected.tabIndex=0;else for(let e=0;e<this._buttonToggles.length;e++){let i=this._buttonToggles.get(e);if(!i.disabled){i.tabIndex=0;break}}}_getNextButton(e,i){let t=this._buttonToggles;for(let o=1;o<=t.length;o++){let d=(e+i*o+t.length)%t.length,v=t.get(d);if(v&&!v.disabled)return v}return null}_setSelectionByValue(e){if(this._rawValue=e,!this._buttonToggles)return;let i=this._buttonToggles.toArray();if(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(t=>this._selectValue(t,i))):(this._clearSelection(),this._selectValue(e,i)),!this.multiple&&i.every(t=>t.tabIndex===-1)){for(let t of i)if(!t.disabled){t.tabIndex=0;break}}}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>{e.checked=!1,this.multiple||(e.tabIndex=-1)})}_selectValue(e,i){for(let t of i)if(t.value===e){t.checked=!0,this._selectionModel.select(t),this.multiple||(t.tabIndex=0);break}}_updateModelValue(e,i){i&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){this._buttonToggles?.forEach(e=>e._markForCheck())}static \u0275fac=function(i){return new(i||n)};static \u0275dir=_e({type:n,selectors:[["mat-button-toggle-group"]],contentQueries:function(i,t,o){if(i&1&&ye(o,le,5),i&2){let d;N(d=B())&&(t._buttonToggles=d)}},hostAttrs:[1,"mat-button-toggle-group"],hostVars:6,hostBindings:function(i,t){i&1&&g("keydown",function(d){return t._keydown(d)}),i&2&&(C("role",t.multiple?"group":"radiogroup")("aria-disabled",t.disabled),S("mat-button-toggle-vertical",t.vertical)("mat-button-toggle-group-appearance-standard",t.appearance==="standard"))},inputs:{appearance:"appearance",name:"name",vertical:[2,"vertical","vertical",f],value:"value",multiple:[2,"multiple","multiple",f],disabled:[2,"disabled","disabled",f],disabledInteractive:[2,"disabledInteractive","disabledInteractive",f],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",f],hideMultipleSelectionIndicator:[2,"hideMultipleSelectionIndicator","hideMultipleSelectionIndicator",f]},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[X([At,{provide:pt,useExisting:n}])]})}return n})(),le=(()=>{class n{_changeDetectorRef=b(j);_elementRef=b(U);_focusMonitor=b(Z);_idGenerator=b(G);_animationDisabled=te();_checked=!1;ariaLabel;ariaLabelledby=null;_buttonElement;buttonToggleGroup;get buttonId(){return`${this.id}-button`}id;name;value;get tabIndex(){return this._tabIndex()}set tabIndex(e){this._tabIndex.set(e)}_tabIndex;disableRipple;get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}_appearance;get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=e}_disabled=!1;get disabledInteractive(){return this._disabledInteractive||this.buttonToggleGroup!==null&&this.buttonToggleGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new I;constructor(){b(ee).load(ne);let e=b(pt,{optional:!0}),i=b(new Y("tabindex"),{optional:!0})||"",t=b(ut,{optional:!0});this._tabIndex=w(parseInt(i)||0),this.buttonToggleGroup=e,this.appearance=t&&t.appearance?t.appearance:"standard",this.disabledInteractive=t?.disabledInteractive??!1}ngOnInit(){let e=this.buttonToggleGroup;this.id=this.id||this._idGenerator.getId("mat-button-toggle-"),e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._animationDisabled||this._elementRef.nativeElement.classList.add("mat-button-toggle-animations-enabled"),this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){let e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){if(this.disabled)return;let e=this.isSingleSelector()?!0:!this._checked;if(e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.isSingleSelector()){let i=this.buttonToggleGroup._buttonToggles.find(t=>t.tabIndex===0);i&&(i.tabIndex=-1),this.tabIndex=0}this.change.emit(new re(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this.isSingleSelector()?this.buttonToggleGroup.name:this.name||null}isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}static \u0275fac=function(i){return new(i||n)};static \u0275cmp=E({type:n,selectors:[["mat-button-toggle"]],viewQuery:function(i,t){if(i&1&&K(Vt,5),i&2){let o;N(o=B())&&(t._buttonElement=o.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:14,hostBindings:function(i,t){i&1&&g("focus",function(){return t.focus()}),i&2&&(C("aria-label",null)("aria-labelledby",null)("id",t.id)("name",null),S("mat-button-toggle-standalone",!t.buttonToggleGroup)("mat-button-toggle-checked",t.checked)("mat-button-toggle-disabled",t.disabled)("mat-button-toggle-disabled-interactive",t.disabledInteractive)("mat-button-toggle-appearance-standard",t.appearance==="standard"))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",disableRipple:[2,"disableRipple","disableRipple",f],appearance:"appearance",checked:[2,"checked","checked",f],disabled:[2,"disabled","disabled",f],disabledInteractive:[2,"disabledInteractive","disabledInteractive",f]},outputs:{change:"change"},exportAs:["matButtonToggle"],ngContentSelectors:Pt,decls:7,vars:13,consts:[["button",""],["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"click","id","disabled"],[1,"mat-button-toggle-checkbox-wrapper"],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"],["state","checked","aria-hidden","true","appearance","minimal",3,"disabled"]],template:function(i,t){if(i&1){let o=_();V(),r(0,"button",1,0),g("click",function(){return u(o),p(t._onButtonClick())}),y(2,Dt,2,1,"div",2),r(3,"span",3),P(4),l()(),k(5,"span",4)(6,"span",5)}if(i&2){let o=M(1);h("id",t.buttonId)("disabled",t.disabled&&!t.disabledInteractive||null),C("role",t.isSingleSelector()?"radio":"button")("tabindex",t.disabled&&!t.disabledInteractive?-1:t.tabIndex)("aria-pressed",t.isSingleSelector()?null:t.checked)("aria-checked",t.isSingleSelector()?t.checked:null)("name",t._getButtonName())("aria-label",t.ariaLabel)("aria-labelledby",t.ariaLabelledby)("aria-disabled",t.disabled&&t.disabledInteractive?"true":null),m(2),x(t.buttonToggleGroup&&(!t.buttonToggleGroup.multiple&&!t.buttonToggleGroup.hideSingleSelectionIndicator||t.buttonToggleGroup.multiple&&!t.buttonToggleGroup.hideMultipleSelectionIndicator)?2:-1),m(4),h("matRippleTrigger",o)("matRippleDisabled",t.disableRipple||t.disabled)}},dependencies:[ae,Qe],styles:[`.mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mat-button-toggle-legacy-shape);transform:translateZ(0)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}@media(forced-colors: active){.mat-button-toggle-standalone,.mat-button-toggle-group{outline:solid 1px}}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard .mat-pseudo-checkbox,.mat-button-toggle-group-appearance-standard .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}@media(forced-colors: active){.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{outline:0}}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-button-toggle-legacy-text-color);font-family:var(--mat-button-toggle-legacy-label-text-font);font-size:var(--mat-button-toggle-legacy-label-text-size);line-height:var(--mat-button-toggle-legacy-label-text-line-height);font-weight:var(--mat-button-toggle-legacy-label-text-weight);letter-spacing:var(--mat-button-toggle-legacy-label-text-tracking);--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-legacy-selected-state-text-color)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-legacy-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checkbox-wrapper{display:inline-block;justify-content:flex-start;align-items:center;width:0;height:18px;line-height:18px;overflow:hidden;box-sizing:border-box;position:absolute;top:50%;left:16px;transform:translate3d(0, -50%, 0)}[dir=rtl] .mat-button-toggle-checkbox-wrapper{left:auto;right:16px}.mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:12px}[dir=rtl] .mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:auto;right:12px}.mat-button-toggle-checked .mat-button-toggle-checkbox-wrapper{width:18px}.mat-button-toggle-animations-enabled .mat-button-toggle-checkbox-wrapper{transition:width 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-checkbox-wrapper{transition:none}.mat-button-toggle-checked{color:var(--mat-button-toggle-legacy-selected-state-text-color);background-color:var(--mat-button-toggle-legacy-selected-state-background-color)}.mat-button-toggle-disabled{pointer-events:none;color:var(--mat-button-toggle-legacy-disabled-state-text-color);background-color:var(--mat-button-toggle-legacy-disabled-state-background-color);--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-legacy-disabled-state-text-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-button-toggle-legacy-disabled-selected-state-background-color)}.mat-button-toggle-disabled-interactive{pointer-events:auto}.mat-button-toggle-appearance-standard{color:var(--mat-button-toggle-text-color, var(--mat-sys-on-surface));background-color:var(--mat-button-toggle-background-color, transparent);font-family:var(--mat-button-toggle-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-toggle-label-text-size, var(--mat-sys-label-large-size));line-height:var(--mat-button-toggle-label-text-line-height, var(--mat-sys-label-large-line-height));font-weight:var(--mat-button-toggle-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-button-toggle-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-toggle-selected-state-background-color, var(--mat-sys-secondary-container))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-button-toggle-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-state-background-color, transparent)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-selected-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-button-toggle-state-layer-color, var(--mat-sys-on-surface))}.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-button-toggle-appearance-standard.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}@media(hover: none){.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-button-toggle-legacy-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-button-toggle-height, 40px)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-button-toggle-legacy-state-layer-color)}@media(forced-colors: active){.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-animations-enabled .mat-button-toggle-button{transition:padding 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-button{transition:none}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}.mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:30px}[dir=rtl] .mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:0;padding-right:30px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{--mat-focus-indicator-border-radius: var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}
|
|
4
|
-
`],encapsulation:2,changeDetection:0})}return n})(),ht=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=J({type:n});static \u0275inj=W({imports:[D,ze,le,D]})}return n})();var se=[{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 R(n,a){let e=a.split("."),i=n;for(let t of e){if(i==null)return;i=i[t]}return i}function bt(n,a,e){let i=a.split("."),t=n;for(let o=0;o<i.length-1;o++){let d=i[o];(t[d]==null||typeof t[d]!="object")&&(t[d]={}),t=t[d]}t[i[i.length-1]]=e}var Bt=(n,a)=>a.id,zt=(n,a)=>a.key;function Lt(n,a){if(n&1&&(c(0," \xB7 "),r(1,"dm-mono"),c(2),l()),n&2){let e=s();m(2),z("etag ",e.etag().slice(0,8))}}function jt(n,a){if(n&1){let e=_();r(0,"button",18),g("click",function(){u(e);let t=s();return p(t.discard())}),r(1,"mat-icon",7),c(2,"undo"),l(),c(3," Discard "),l()}}function Gt(n,a){n&1&&k(0,"mat-spinner",12)}function $t(n,a){n&1&&(r(0,"mat-icon",7),c(1,"save"),l())}function qt(n,a){if(n&1){let e=_();r(0,"div",13)(1,"mat-icon",7),c(2,"sync_problem"),l(),r(3,"div")(4,"strong"),c(5,"Config changed elsewhere."),l(),c(6," Your local edits are stale. Reload to pull the latest, then re-apply. "),l(),r(7,"button",19),g("click",function(){u(e);let t=s();return p(t.reload())}),c(8,"Reload"),l()()}}function Ht(n,a){if(n&1&&(r(0,"span",20)(1,"dm-mono"),c(2),l()()),n&2){let e=a.$implicit;m(2),T(e)}}function Wt(n,a){if(n&1&&(r(0,"div",14)(1,"mat-icon",7),c(2,"restart_alt"),l(),r(3,"div")(4,"strong"),c(5,"Some changes need a daemon restart to take effect."),l(),O(6,Ht,3,1,"span",20,Q),l(),k(8,"span"),l()),n&2){let e=s();m(6),F(e.restartHints())}}function Ut(n,a){n&1&&(r(0,"div",15),k(1,"dm-skeleton",21)(2,"dm-skeleton",22)(3,"dm-skeleton",22)(4,"dm-skeleton",22),l())}function Jt(n,a){n&1&&(r(0,"span",32),c(1,"restart"),l())}function Qt(n,a){n&1&&(r(0,"span",33),c(1,"modified"),l())}function Kt(n,a){if(n&1){let e=_();r(0,"mat-slide-toggle",41),g("change",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setVal(o.key,t.checked))}),c(1),l()}if(n&2){let e=s().$implicit,i=s(3);h("checked",!!i.getVal(e.key)),m(),z(" ",i.getVal(e.key)?"On":"Off"," ")}}function Xt(n,a){if(n&1&&(r(0,"span",43),c(1),l()),n&2){let e=s(2).$implicit;m(),T(e.unit)}}function Yt(n,a){if(n&1){let e=_();r(0,"mat-form-field",36)(1,"input",42),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setVal(o.key,d.toNum(t.target.value)))}),l(),y(2,Xt,2,1,"span",43),l()}if(n&2){let e=s().$implicit,i=s(3);m(),h("min",e.min??null)("max",e.max??null)("value",i.getVal(e.key)),m(),x(e.unit?2:-1)}}function Zt(n,a){if(n&1){let e=_();r(0,"div",37)(1,"mat-form-field",36)(2,"mat-label"),c(3,"min"),l(),r(4,"input",42),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setPairIdx(o.key,0,d.toNum(t.target.value)))}),l()(),r(5,"span",44),c(6,"\u2013"),l(),r(7,"mat-form-field",36)(8,"mat-label"),c(9,"max"),l(),r(10,"input",42),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setPairIdx(o.key,1,d.toNum(t.target.value)))}),l()()()}if(n&2){let e=s().$implicit,i=s(3);m(4),h("min",e.min??null)("max",e.max??null)("value",i.getPair(e.key)[0]),m(6),h("min",e.min??null)("max",e.max??null)("value",i.getPair(e.key)[1])}}function ei(n,a){if(n&1){let e=_();r(0,"mat-form-field",36)(1,"input",45),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setVal(o.key,t.target.value||(o.kind==="string"?"":null)))}),l()()}if(n&2){let e=s().$implicit,i=s(3);m(),h("placeholder",e.placeholder??"")("value",i.getStrOrEmpty(e.key))}}function ti(n,a){if(n&1){let e=_();r(0,"mat-form-field",36)(1,"input",46),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setVal(o.key,t.target.value))}),l()()}if(n&2){let e=s().$implicit,i=s(3);m(),h("placeholder",e.placeholder??"")("value",i.getStrOrEmpty(e.key))}}function ii(n,a){if(n&1){let e=_();r(0,"mat-form-field",36)(1,"input",47),g("input",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setVal(o.key,t.target.value||null))}),l(),r(2,"button",48),g("click",function(){u(e);let t=s(4);return p(t.showToken.set(!t.showToken()))}),r(3,"mat-icon",7),c(4),l()()()}if(n&2){let e=s().$implicit,i=s(3);m(),h("type",i.showToken()?"text":"password")("placeholder","(unset)")("value",i.getStrOrEmpty(e.key)),m(),C("aria-label",i.showToken()?"Hide token":"Show token"),m(2),T(i.showToken()?"visibility_off":"visibility")}}function ai(n,a){if(n&1&&(r(0,"mat-button-toggle",49),c(1),l()),n&2){let e=a.$implicit;h("value",e),m(),T(e)}}function ni(n,a){if(n&1){let e=_();r(0,"mat-button-toggle-group",5),g("change",function(t){u(e);let o=s().$implicit,d=s(3);return p(d.setEnum(o,t.value))}),O(1,ai,2,2,"mat-button-toggle",49,Q),l()}if(n&2){let e=s().$implicit,i=s(3);h("value",i.enumValue(e.key,e)),m(),F(e.enumValues)}}function oi(n,a){if(n&1){let e=_();r(0,"mat-chip",53),g("removed",function(){let t=u(e).$index,o=s(2).$implicit,d=s(3);return p(d.removeAt(o.key,t))}),r(1,"dm-mono"),c(2),l(),r(3,"button",54)(4,"mat-icon",7),c(5,"cancel"),l()()()}if(n&2){let e=a.$implicit;h("removable",!0),m(2),T(e)}}function ri(n,a){if(n&1){let e=_();r(0,"div",39)(1,"mat-chip-set"),O(2,oi,6,2,"mat-chip",50,Q),l(),r(4,"mat-form-field",51)(5,"input",52,0),g("keydown.enter",function(t){u(e);let o=M(6),d=s().$implicit;return s(3).addItem(d.key,o.value),o.value="",p(t.preventDefault())}),l(),r(7,"button",48),g("click",function(){u(e);let t=M(6),o=s().$implicit;return s(3).addItem(o.key,t.value),p(t.value="")}),r(8,"mat-icon",7),c(9,"add"),l()()()()}if(n&2){let e=s().$implicit,i=s(3);m(2),F(i.getArr(e.key)),m(3),h("placeholder",e.placeholder??"Add value and press Enter")}}function li(n,a){if(n&1){let e=_();r(0,"div",55)(1,"mat-form-field",57)(2,"input",58),g("input",function(t){let o=u(e).$index,d=s(2).$implicit,v=s(3);return p(v.setObjAt(d.key,o,"path",t.target.value))}),l()(),r(3,"mat-form-field",59)(4,"mat-label"),c(5,"label"),l(),r(6,"input",60),g("input",function(t){let o=u(e).$index,d=s(2).$implicit,v=s(3);return p(v.setObjAt(d.key,o,"label",t.target.value||null))}),l()(),r(7,"button",61),g("click",function(){let t=u(e).$index,o=s(2).$implicit,d=s(3);return p(d.removeAt(o.key,t))}),r(8,"mat-icon",7),c(9,"delete"),l()()()}if(n&2){let e=a.$implicit;m(2),h("value",e.path),m(4),h("value",e.label??"")}}function si(n,a){if(n&1){let e=_();r(0,"div",39),O(1,li,10,2,"div",55,fe),r(3,"mat-form-field",51)(4,"input",56,1),g("keydown.enter",function(t){u(e);let o=M(5),d=s().$implicit;return s(3).addObj(d.key,o.value),o.value="",p(t.preventDefault())}),l(),r(6,"button",48),g("click",function(){u(e);let t=M(5),o=s().$implicit;return s(3).addObj(o.key,t.value),p(t.value="")}),r(7,"mat-icon",7),c(8,"add"),l()()()()}if(n&2){let e=s().$implicit,i=s(3);m(),F(i.getObjArr(e.key)),m(3),h("placeholder",e.placeholder??"Add absolute path and press Enter")}}function di(n,a){if(n&1&&(r(0,"div",29)(1,"div",30)(2,"label",31),c(3),l(),y(4,Jt,2,0,"span",32),y(5,Qt,2,0,"span",33),l(),r(6,"div",34),y(7,Kt,2,2,"mat-slide-toggle",35)(8,Yt,3,4,"mat-form-field",36)(9,Zt,11,6,"div",37)(10,ei,2,2,"mat-form-field",36)(11,ti,2,2,"mat-form-field",36)(12,ii,5,5,"mat-form-field",36)(13,ni,3,1,"mat-button-toggle-group",38)(14,ri,10,1,"div",39)(15,si,9,1,"div",39),l(),r(16,"div",40),c(17),l()()),n&2){let e,i=a.$implicit,t=s(3);S("dm-field-dirty",t.isFieldDirty(i.key)),m(3),T(i.label),m(),x(i.restartRequired?4:-1),m(),x(t.isFieldDirty(i.key)?5:-1),m(2),x((e=i.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),m(10),T(i.help)}}function ci(n,a){if(n&1){let e=_();r(0,"mat-expansion-panel",25),g("afterExpand",function(){let t=u(e).$implicit,o=s(2);return p(o.onExpand(t.id,!0))})("afterCollapse",function(){let t=u(e).$implicit,o=s(2);return p(o.onExpand(t.id,!1))}),r(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon",7),c(4),l(),r(5,"span",26),c(6),l()(),r(7,"mat-panel-description"),c(8),l()(),r(9,"div",27),O(10,di,18,7,"div",28,zt),l()()}if(n&2){let e=a.$implicit,i=s(2);h("expanded",i.isExpanded(e.id)),m(4),T(e.icon),m(2),T(e.title),m(2),z(" ",e.description," "),m(2),F(e.fields)}}function mi(n,a){if(n&1&&(r(0,"div",16),O(1,ci,12,4,"mat-expansion-panel",23,Bt),r(3,"section",24)(4,"p"),c(5," Some settings \u2014 "),r(6,"strong"),c(7,"overrides"),l(),c(8,", "),r(9,"strong"),c(10,"profiles"),l(),c(11,", "),r(12,"strong"),c(13,"tags"),l(),c(14,", "),r(15,"strong"),c(16,"depends"),l(),c(17,", "),r(18,"strong"),c(19,"envFiles"),l(),c(20," \u2014 are per-app dictionaries best edited as JSON. Switch to the JSON tab in the header to edit them. "),l()()()),n&2){let e=s();m(),F(e.sections)}}function gi(n,a){if(n&1&&(r(0,"span",63)(1,"mat-icon",7),c(2,"error"),l(),c(3),l()),n&2){let e=s(2);m(3),z(" invalid JSON \xB7 ",e.parseError()," ")}}function ui(n,a){n&1&&(r(0,"span",64)(1,"mat-icon",7),c(2,"check_circle"),l(),c(3," valid JSON "),l())}function pi(n,a){if(n&1){let e=_();r(0,"div",17)(1,"div",62),y(2,gi,4,1,"span",63)(3,ui,4,0,"span",64),l(),r(4,"mat-form-field",65)(5,"textarea",66),g("ngModelChange",function(t){u(e);let o=s();return p(o.onJsonInput(t))}),l()()()}if(n&2){let e=s();m(2),x(e.parseError()?2:3),m(3),h("ngModel",e.jsonText())}}var _t="daimon.config.mode",ft=class n{http=b(Ce);snack=b(Ge);sections=se;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=L(()=>JSON.stringify(this.working())!==JSON.stringify(this.original()));parseError=L(()=>{if(this.mode()!=="json")return null;try{return JSON.parse(this.jsonText()),null}catch(a){return a?.message??"parse error"}});canSave=L(()=>!this.saving()&&!this.loading()&&this.dirty()&&!this.parseError());restartHints=L(()=>{let a=this.original(),e=this.working();if(!a||!e)return[];let i=[];for(let t of se)for(let o of t.fields)o.restartRequired&&JSON.stringify(R(a,o.key))!==JSON.stringify(R(e,o.key))&&i.push(o.key);return i});async ngOnInit(){try{let e=localStorage.getItem(_t);(e==="form"||e==="json")&&this.mode.set(e)}catch{}let a={};for(let e of se)a[e.id]=["network","discovery","healthProbe"].includes(e.id);this.expanded.set(a),await this.load()}setMode(a){if(a!==this.mode()){if(a==="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(a);try{localStorage.setItem(_t,a)}catch{}}}onJsonInput(a){this.jsonText.set(a);try{this.working.set(JSON.parse(a))}catch{}}isExpanded(a){return!!this.expanded()[a]}onExpand(a,e){this.expanded.update(i=>ce(de({},i),{[a]:e}))}getVal(a){return R(this.working(),a)}getStrOrEmpty(a){let e=this.getVal(a);return e==null?"":String(e)}getArr(a){let e=this.getVal(a);return Array.isArray(e)?e:[]}getObjArr(a){let e=this.getVal(a);return Array.isArray(e)?e.map(i=>typeof i=="string"?{path:i}:{path:String(i?.path??""),label:i?.label??null}):[]}setObjAt(a,e,i,t){let o=this.getObjArr(a);if(!o[e])return;let d=o.slice();d[e]=ce(de({},d[e]),{[i]:t}),i==="label"&&(t===""||t==null)&&delete d[e].label,this.setVal(a,d)}addObj(a,e){let i=e.trim();if(!i)return;let t=this.getObjArr(a);t.some(o=>o.path===i)||this.setVal(a,[...t,{path:i}])}getPair(a){let e=this.getVal(a);return Array.isArray(e)&&e.length>=2?[Number(e[0])||0,Number(e[1])||0]:[0,0]}setVal(a,e){let i=structuredClone(this.working());bt(i,a,e),this.working.set(i)}setPairIdx(a,e,i){let t=this.getPair(a);t[e]=i,this.setVal(a,t)}setEnum(a,e){if(a.key.startsWith("healthProbe.")&&(a.key.endsWith(".scheme")||a.key.endsWith(".host"))){this.setVal(a.key,e==="(announced)"?null:e);return}this.setVal(a.key,e)}enumValue(a,e){let i=this.getVal(a);return i==null&&e.enumValues?.includes("(announced)")?"(announced)":String(i??e.enumValues?.[0]??"")}addItem(a,e){let i=e.trim();if(!i)return;let t=[...this.getArr(a)];t.includes(i)||(t.push(i),this.setVal(a,t))}removeAt(a,e){let i=this.getVal(a);if(!Array.isArray(i))return;let t=i.slice();t.splice(e,1),this.setVal(a,t)}toNum(a){let e=Number(a);return Number.isFinite(e)?e:0}isFieldDirty(a){let e=this.original(),i=this.working();return!e||!i?!1:JSON.stringify(R(e,a))!==JSON.stringify(R(i,a))}async load(){this.loading.set(!0),this.conflict.set(!1);try{let a=await q(this.http.get("/api/config"));this.etag.set(a.etag??""),this.original.set(structuredClone(a.config)),this.working.set(structuredClone(a.config)),this.jsonText.set(JSON.stringify(a.config,null,2))}catch(a){this.snack.open(`Failed to load config: ${a?.message??a}`,"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 q(this.http.post("/api/config/reload",{}))}catch{}await this.load()}async save(){if(this.canSave()){this.saving.set(!0);try{let a=await q(this.http.patch("/api/config",this.working(),{headers:{"if-match":this.etag(),"content-type":"application/json"},observe:"response"})),e=a.body??{},i=a.headers.get("etag")??e.etag??"";i&&this.etag.set(i),this.original.set(structuredClone(this.working()));let t=Array.isArray(e.applied)?e.applied.length:0,o=Array.isArray(e.addedApps)?e.addedApps.length:0,d=Array.isArray(e.removedApps)?e.removedApps.length:0,v=Array.isArray(e.restartRequired)?e.restartRequired.length:0,$=`Applied ${t} change${t===1?"":"s"}`;o&&($+=` \xB7 +${o} app${o===1?"":"s"}`),d&&($+=` \xB7 \u2212${d} app${d===1?"":"s"}`),v&&($+=` \xB7 ${v} setting${v===1?"":"s"} need restart`),this.snack.open($,"OK",{duration:4e3})}catch(a){a?.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: ${a?.error?.error??a?.message??a}`,"Dismiss",{duration:6e3})}finally{this.saving.set(!1)}}}onKey(a){(a.metaKey||a.ctrlKey)&&a.key.toLowerCase()==="s"&&(a.preventDefault(),this.save())}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=E({type:n,selectors:[["dm-config-editor"]],hostBindings:function(e,i){e&1&&g("keydown",function(o){return i.onKey(o)},be)},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,i){e&1&&(r(0,"div",2)(1,"div")(2,"h1"),c(3,"Config"),l(),r(4,"div",3),c(5," Active configuration \xB7 changes apply via soft-reload where possible "),y(6,Lt,3,1),l()(),r(7,"div",4)(8,"mat-button-toggle-group",5),g("change",function(o){return i.setMode(o.value)}),r(9,"mat-button-toggle",6)(10,"mat-icon",7),c(11,"tune"),l(),c(12," Settings "),l(),r(13,"mat-button-toggle",8)(14,"mat-icon",7),c(15,"data_object"),l(),c(16," JSON "),l()(),y(17,jt,4,0,"button",9),r(18,"button",10),g("click",function(){return i.reload()}),r(19,"mat-icon",7),c(20,"refresh"),l(),c(21," Reload "),l(),r(22,"button",11),g("click",function(){return i.save()}),y(23,Gt,1,0,"mat-spinner",12)(24,$t,2,0,"mat-icon",7),c(25," Save "),l()()(),y(26,qt,9,0,"div",13),y(27,Wt,9,0,"div",14),y(28,Ut,5,0,"div",15)(29,mi,21,0,"div",16)(30,pi,6,2,"div",17)),e&2&&(m(6),x(i.etag()?6:-1),m(2),h("value",i.mode()),m(9),x(i.dirty()?17:-1),m(5),h("disabled",!i.canSave()),m(),x(i.saving()?23:24),m(3),x(i.conflict()?26:-1),m(),x(i.restartHints().length?27:-1),m(),x(i.loading()?28:i.mode()==="form"?29:30))},dependencies:[ke,Re,Fe,Pe,De,je,Le,Be,Ee,Me,Oe,Ie,Je,Ue,He,We,tt,et,Ye,Xe,gt,ge,ht,ue,le,ot,at,it,nt,ct,rt,lt,dt,st,Ne,Ae,Ze,$e,qe],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{ft as ConfigEditorComponent};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as ge}from"./chunk-T2YKGOEM.js";import{a as re,b as ae,c as le,d as se,f as me,h as ce,i as de,l as pe,m as ue}from"./chunk-E3HUMJ6S.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{d as Z,f as ee,g as te}from"./chunk-N5GRSTMJ.js";import{b as ne,d as ie,e as oe}from"./chunk-VZ6E4VQY.js";import{a as J,b as U}from"./chunk-JUZHAE4L.js";import"./chunk-YNQPX5G6.js";import{b as z,f as H,g as Q,i as q}from"./chunk-MHOSWLRR.js";import{b as B}from"./chunk-ESDYJ3BP.js";import{h as $,i as j,j as W}from"./chunk-U6AY7XZK.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as de}from"./chunk-T2YKGOEM.js";import{a as ee,b as te,c as ne,d as ie,f as oe,h as ae,i as re,l as se,m as le}from"./chunk-E3HUMJ6S.js";import"./chunk-NDSAQ2HK.js";import{b as Y,f as Q,h as q,j as G}from"./chunk-YYAZGY5M.js";import"./chunk-PJPGLT4T.js";import{d as H,f as J,g as U}from"./chunk-N5GRSTMJ.js";import{d as X,e as Z}from"./chunk-VZ6E4VQY.js";import{a as z,b as K}from"./chunk-JUZHAE4L.js";import"./chunk-YNQPX5G6.js";import"./chunk-MHOSWLRR.js";import{c as B}from"./chunk-ESDYJ3BP.js";import{h as j,i as A,j as W}from"./chunk-U6AY7XZK.js";import{h as V}from"./chunk-Y6B6X4Y6.js";import{Db as b,Eb as c,Fb as p,Hb as L,Ib as E,Jb as k,Kb as _,Lb as a,Mb as r,Nb as F,Sb as T,Ub as h,Wb as m,_a as o,ea as D,gc as w,ic as s,ja as x,jc as u,ka as M,kc as y,pb as N,sc as R,ta as g,xc as P}from"./chunk-K43KW4K2.js";var ce=t=>["/apps",t],pe=(t,n)=>n.name,ue=(t,n)=>n.key;function ve(t,n){t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span",19),s(3,"paused"),r())}function ge(t,n){if(t&1&&(a(0,"span",18),s(1,"\xB7"),r(),a(2,"span"),s(3),r()),t&2){let e=m();o(3),y("",e.pendingCount()," new while paused")}}function _e(t,n){if(t&1&&(a(0,"mat-option",10),s(1),r()),t&2){let e=n.$implicit;_("value",e.name),o(),u(e.name)}}function fe(t,n){if(t&1){let e=T();a(0,"button",20),h("click",function(){x(e);let d=m();return M(d.textFilter.set(""))}),a(1,"mat-icon"),s(2,"close"),r()()}}function he(t,n){if(t&1){let e=T();a(0,"button",21),h("click",function(){let d=x(e).$implicit,v=m();return M(v.toggleType(d))}),s(1),r()}if(t&2){let e=n.$implicit,i=m();w("dm-chip-active",i.typeFilter().has(e)),b("data-kind",e),o(),y(" ",e," ")}}function ye(t,n){if(t&1){let e=T();a(0,"button",22),h("click",function(){x(e);let d=m();return M(d.clearTypes())}),a(1,"mat-icon"),s(2,"close"),r()()}}function Ce(t,n){t&1&&F(0,"dm-empty",23)}function xe(t,n){t&1&&F(0,"dm-empty",24)}function Me(t,n){if(t&1&&c(0,Ce,1,0,"dm-empty",23)(1,xe,1,0,"dm-empty",24),t&2){let e=m();p(e.liveEvents().length===0?0:1)}}function be(t,n){if(t&1&&(a(0,"li",25)(1,"span",32),s(2),r()()),t&2){let e=m().$implicit;o(2),u(e.gapLabel)}}function Ee(t,n){if(t&1&&(a(0,"a",29)(1,"dm-mono"),s(2),r()()),t&2){let e=m().$implicit;_("routerLink",R(2,ce,e.ev.app)),o(2),u(e.ev.app)}}function ke(t,n){t&1&&(a(0,"span",30),s(1,"\u2014"),r())}function Fe(t,n){if(t&1&&(a(0,"dm-mono"),s(1),r(),a(2,"span",33),s(3,"\u2192"),r(),a(4,"dm-mono"),s(5),r()),t&2){let e=m().$implicit;o(),u(e.ev.from??"?"),o(4),u(e.ev.to??"?")}}function Te(t,n){if(t&1&&s(0),t&2){let e=m().$implicit;y(" ",e.ev.message??""," ")}}function we(t,n){if(t&1&&(c(0,be,3,1,"li",25),a(1,"li",26)(2,"span",27)(3,"dm-mono"),s(4),r()(),a(5,"span",28),s(6),r(),c(7,Ee,3,4,"a",29)(8,ke,2,0,"span",30),a(9,"span",31),c(10,Fe,6,2)(11,Te,1,1),r()()),t&2){let e=n.$implicit,i=m(2);p(e.divider?0:-1),o(),w("dm-flash",e.flash),b("data-kind",e.ev.type),o(),_("matTooltip",i.absTime(e.ev.ts)),o(2),u(i.rel(e.ev.ts)),o(),b("data-kind",e.ev.type),o(),u(e.ev.type),o(),p(e.ev.app?7:8),o(3),p(e.ev.type==="status"&&(e.ev.from||e.ev.to)?10:11)}}function Pe(t,n){if(t&1&&(a(0,"ol",17),E(1,we,12,10,null,null,ue),r()),t&2){let e=m();o(),k(e.rendered())}}var Oe=["status","health","error","compile","log"];function Se(t,n){let e=Math.max(0,Math.floor((n-t)/1e3));if(e<1)return"just now";if(e<60)return`${e}s ago`;let i=Math.floor(e/60),d=e%60;return i<60?d?`${i}m ${d}s ago`:`${i}m ago`:`${Math.floor(i/60)}h ${i%60}m ago`}var me=class t{api=D(W);types=Oe;paused=g(!1);appFilter=g("");textFilter=g("");typeFilter=g(new Set);now=g(Date.now());snapshot=g(null);lastSeenTs=g(0);tickTimer;liveEvents=P(()=>this.snapshot()??this.api.events());pendingCount=P(()=>{let n=this.snapshot();if(!n)return 0;let e=this.api.events();return Math.max(0,e.length-n.length)});rendered=P(()=>{let n=this.liveEvents(),e=this.appFilter(),i=this.textFilter().toLowerCase(),d=this.typeFilter(),v=this.lastSeenTs(),C=[];for(let l of n)e&&l.app!==e||d.size&&!d.has(l.type)||i&&!`${l.app??""} ${l.type} ${l.message??""} ${l.from??""} ${l.to??""}`.toLowerCase().includes(i)||C.push(l);let S=[];for(let l=0;l<C.length;l++){let f=C[l],O=C[l+1],I=O?f.ts-O.ts:0,$=!!O&&I>3e4;S.push({key:`${f.ts}:${l}`,ev:f,divider:$,gapLabel:$?Ie(I):"",flash:f.ts>v})}return S.sort((l,f)=>f.ev.ts-l.ev.ts)});ngOnInit(){this.lastSeenTs.set(Date.now()),this.tickTimer=setInterval(()=>{this.now.set(Date.now());let n=this.api.events();n.length&&this.lastSeenTs.set(n[n.length-1].ts)},1e3)}ngOnDestroy(){this.tickTimer&&clearInterval(this.tickTimer)}togglePause(){this.paused()?(this.paused.set(!1),this.snapshot.set(null)):(this.snapshot.set(this.api.events().slice()),this.paused.set(!0))}toggleType(n){this.typeFilter.update(e=>{let i=new Set(e);return i.has(n)?i.delete(n):i.add(n),i})}clearTypes(){this.typeFilter.set(new Set)}rel(n){return Se(n,this.now())}absTime(n){return new Date(n).toLocaleString()}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=N({type:t,selectors:[["dm-events-feed"]],decls:37,vars:15,consts:[[1,"dm-page-header"],[1,"dm-count"],[1,"dm-page-sub"],[1,"dm-conn"],[1,"dm-conn-dot"],[1,"dm-header-actions"],["mat-stroked-button","",3,"click","matTooltip"],[1,"dm-toolbar"],["appearance","outline",1,"dm-app-filter"],[3,"ngModelChange","ngModel"],[3,"value"],["appearance","outline",1,"dm-text-filter"],["matInput","","placeholder","filter message / app",3,"ngModelChange","ngModel"],["matSuffix","","mat-icon-button",""],[1,"dm-type-chips"],[1,"dm-chip",3,"dm-chip-active"],[1,"dm-chip","dm-chip-clear"],[1,"dm-list"],[1,"dm-sep"],[1,"dm-paused-tag"],["matSuffix","","mat-icon-button","",3,"click"],[1,"dm-chip",3,"click"],[1,"dm-chip","dm-chip-clear",3,"click"],["icon","timeline","title","Quiet","hint","No events in this session \u2014 start an app to see status transitions, errors, and compiles"],["icon","filter_alt_off","title","No matches","hint","Adjust filters to see events"],[1,"dm-divider"],[1,"dm-event"],[1,"dm-time",3,"matTooltip"],[1,"dm-type"],[1,"dm-app",3,"routerLink"],[1,"dm-app","dm-app-empty"],[1,"dm-msg"],[1,"dm-divider-label"],[1,"dm-arrow"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div")(2,"h1"),s(3,"Events "),a(4,"span",1),s(5),r()(),a(6,"div",2)(7,"span",3),F(8,"span",4),s(9),r(),c(10,ve,4,0),c(11,ge,4,1),r()(),a(12,"div",5)(13,"button",6),h("click",function(){return i.togglePause()}),a(14,"mat-icon"),s(15),r(),s(16),r()()(),a(17,"div",7)(18,"mat-form-field",8)(19,"mat-label"),s(20,"App"),r(),a(21,"mat-select",9),h("ngModelChange",function(v){return i.appFilter.set(v)}),a(22,"mat-option",10),s(23,"All apps"),r(),E(24,_e,2,2,"mat-option",10,pe),r()(),a(26,"mat-form-field",11)(27,"mat-label"),s(28,"Search"),r(),a(29,"input",12),h("ngModelChange",function(v){return i.textFilter.set(v)}),r(),c(30,fe,3,0,"button",13),r(),a(31,"div",14),E(32,he,2,4,"button",15,L),c(34,ye,3,0,"button",16),r()(),c(35,Me,2,1)(36,Pe,3,0,"ol",17)),e&2&&(o(5),y("\xB7 ",i.liveEvents().length),o(2),w("dm-conn-on",i.api.connected()),o(2),y(" ",i.api.connected()?"live":"disconnected"," "),o(),p(i.paused()?10:-1),o(),p(i.paused()&&i.pendingCount()>0?11:-1),o(2),_("matTooltip",i.paused()?"Resume feed":"Pause feed"),o(2),u(i.paused()?"play_arrow":"pause"),o(),y(" ",i.paused()?"Resume":"Pause"," "),o(5),_("ngModel",i.appFilter()),o(),_("value",""),o(2),k(i.api.apps()),o(5),_("ngModel",i.textFilter()),o(),p(i.textFilter()?30:-1),o(2),k(i.types),o(2),p(i.typeFilter().size>0?34:-1),o(),p(i.rendered().length===0?35:36))},dependencies:[V,G,Y,Q,q,B,ie,ne,ee,te,re,ae,oe,le,se,de,U,J,H,A,j,K,z,X,Z],styles:["[_nghost-%COMP%]{display:block}.dm-count[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant);font-weight:400}.dm-conn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem}.dm-conn-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;background:var(--mat-sys-outline)}.dm-conn-on[_ngcontent-%COMP%] .dm-conn-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary);box-shadow:0 0 0 3px color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}.dm-sep[_ngcontent-%COMP%]{color:var(--mat-sys-outline);margin:0 .15rem}.dm-paused-tag[_ngcontent-%COMP%]{color:var(--mat-sys-tertiary);font-weight:500}.dm-toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:.5rem}.dm-app-filter[_ngcontent-%COMP%]{width:12rem}.dm-text-filter[_ngcontent-%COMP%]{flex:1;min-width:14rem;max-width:28rem}.dm-type-chips[_ngcontent-%COMP%]{display:flex;gap:.35rem;flex-wrap:wrap}.dm-chip[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant);border-radius:999px;padding:4px 12px;font:500 .75rem/1rem Roboto;cursor:pointer;letter-spacing:.025rem}.dm-chip[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-chip-active[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface)}.dm-chip-clear[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 8px}.dm-chip-clear[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.dm-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;border:1px solid var(--mat-sys-outline-variant);border-radius:10px;background:var(--mat-sys-surface-container-lowest);overflow:hidden}.dm-event[_ngcontent-%COMP%]{display:grid;grid-template-columns:7.5rem max-content 10rem 1fr;gap:.75rem;align-items:center;height:28px;padding:0 .75rem;border-top:1px solid var(--mat-sys-outline-variant);font-size:.8125rem;color:var(--mat-sys-on-surface)}.dm-event[_ngcontent-%COMP%]:first-child{border-top:0}.dm-time[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-type[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:1px 8px;border-radius:999px;font:500 .6875rem/1rem Roboto;letter-spacing:.03rem;border:1px solid var(--mat-sys-outline-variant);text-transform:lowercase;white-space:nowrap}.dm-type[data-kind=status][_ngcontent-%COMP%], .dm-chip[data-kind=status].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-primary) 30%,transparent);color:var(--mat-sys-primary)}.dm-type[data-kind=health][_ngcontent-%COMP%], .dm-chip[data-kind=health].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-secondary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-secondary) 30%,transparent);color:var(--mat-sys-secondary)}.dm-type[data-kind=error][_ngcontent-%COMP%], .dm-chip[data-kind=error].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-error) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-error) 32%,transparent);color:var(--mat-sys-error)}.dm-type[data-kind=compile][_ngcontent-%COMP%], .dm-chip[data-kind=compile].dm-chip-active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-tertiary) 14%,transparent);border-color:color-mix(in oklch,var(--mat-sys-tertiary) 30%,transparent);color:var(--mat-sys-tertiary)}.dm-type[data-kind=log][_ngcontent-%COMP%], .dm-chip[data-kind=log].dm-chip-active[_ngcontent-%COMP%]{background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface-variant)}.dm-app[_ngcontent-%COMP%]{text-decoration:none;color:var(--mat-sys-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-app[_ngcontent-%COMP%]:hover{text-decoration:underline}.dm-app-empty[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dm-msg[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:.35rem}.dm-arrow[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.dm-divider[_ngcontent-%COMP%]{height:18px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--mat-sys-outline-variant);background:var(--mat-sys-surface-container)}.dm-divider-label[_ngcontent-%COMP%]{font:400 .6875rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);letter-spacing:.04rem}.dm-flash[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_dm-event-pulse .6s var(--dm-motion-easing)}@keyframes _ngcontent-%COMP%_dm-event-pulse{0%{background:color-mix(in oklch,var(--mat-sys-primary) 24%,transparent)}to{background:transparent}}@media(prefers-reduced-motion:reduce){.dm-flash[_ngcontent-%COMP%]{animation:none}}"],changeDetection:0})};function Ie(t){let n=Math.floor(t/1e3);if(n<60)return`${n}s gap`;let e=Math.floor(n/60);return e<60?`${e}m gap`:`${Math.floor(e/60)}h ${e%60}m gap`}export{me as EventsFeedComponent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as ke,b as Me}from"./chunk-JUZHAE4L.js";import"./chunk-YNQPX5G6.js";import"./chunk-MHOSWLRR.js";import{a as he,b as fe,c as ve,d as ye,e as xe,f as be}from"./chunk-ESDYJ3BP.js";import{a as pe,b as ce,d as ue,e as ge,g as _e,h as Ce,i as Ee,j as N}from"./chunk-U6AY7XZK.js";import"./chunk-Y6B6X4Y6.js";import{$ as D,Ab as ae,Bb as se,Ca as I,Db as k,Eb as y,Fb as x,Hb as B,Ia as ee,Ib as w,Jb as T,Kb as M,Lb as d,Mb as l,Nb as C,Ob as a,Pb as s,Sb as S,Ub as h,Vb as P,Wb as u,Y as W,Za as R,_a as m,ca as Y,cb as te,ea as c,eb as ne,fa as q,gc as A,ha as X,hb as oe,ia as Z,ic as i,ja as b,jc as f,ka as _,kb as ie,na as G,oa as J,pb as v,sc as de,ta as g,ua as Q,vb as re,vc as le,xc as me}from"./chunk-K43KW4K2.js";var Ie="@",Re=(()=>{class o{doc;delegate;zone;animationType;moduleImpl;_rendererFactoryPromise=null;scheduler=null;injector=c(G);loadingSchedulerFn=c(Ae,{optional:!0});_engine;constructor(t,n,r,p,E){this.doc=t,this.delegate=n,this.zone=r,this.animationType=p,this.moduleImpl=E}ngOnDestroy(){this._engine?.flush()}loadImpl(){let t=()=>this.moduleImpl??import("./chunk-UC3XMN2Y.js").then(r=>r),n;return this.loadingSchedulerFn?n=this.loadingSchedulerFn(t):n=t(),n.catch(r=>{throw new W(5300,!1)}).then(({\u0275createEngine:r,\u0275AnimationRendererFactory:p})=>{this._engine=r(this.animationType,this.doc);let E=new p(this.delegate,this._engine,this.zone);return this.delegate=E,E})}createRenderer(t,n){let r=this.delegate.createRenderer(t,n);if(r.\u0275type===0)return r;typeof r.throwOnSyntheticProps=="boolean"&&(r.throwOnSyntheticProps=!1);let p=new z(r);return n?.data?.animation&&!this._rendererFactoryPromise&&(this._rendererFactoryPromise=this.loadImpl()),this._rendererFactoryPromise?.then(E=>{let De=E.createRenderer(t,n);p.use(De),this.scheduler??=this.injector.get(Q,null,{optional:!0}),this.scheduler?.notify(10)}).catch(E=>{p.use(r)}),p}begin(){this.delegate.begin?.()}end(){this.delegate.end?.()}whenRenderingDone(){return this.delegate.whenRenderingDone?.()??Promise.resolve()}componentReplaced(t){this._engine?.flush(),this.delegate.componentReplaced?.(t)}static \u0275fac=function(n){ie()};static \u0275prov=D({token:o,factory:o.\u0275fac})}return o})(),z=class{delegate;replay=[];\u0275type=1;constructor(e){this.delegate=e}use(e){if(this.delegate=e,this.replay!==null){for(let t of this.replay)t(e);this.replay=null}}get data(){return this.delegate.data}destroy(){this.replay=null,this.delegate.destroy()}createElement(e,t){return this.delegate.createElement(e,t)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}get destroyNode(){return this.delegate.destroyNode}appendChild(e,t){this.delegate.appendChild(e,t)}insertBefore(e,t,n,r){this.delegate.insertBefore(e,t,n,r)}removeChild(e,t,n,r){this.delegate.removeChild(e,t,n,r)}selectRootElement(e,t){return this.delegate.selectRootElement(e,t)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,t,n,r){this.delegate.setAttribute(e,t,n,r)}removeAttribute(e,t,n){this.delegate.removeAttribute(e,t,n)}addClass(e,t){this.delegate.addClass(e,t)}removeClass(e,t){this.delegate.removeClass(e,t)}setStyle(e,t,n,r){this.delegate.setStyle(e,t,n,r)}removeStyle(e,t,n){this.delegate.removeStyle(e,t,n)}setProperty(e,t,n){this.shouldReplay(t)&&this.replay.push(r=>r.setProperty(e,t,n)),this.delegate.setProperty(e,t,n)}setValue(e,t){this.delegate.setValue(e,t)}listen(e,t,n,r){return this.shouldReplay(t)&&this.replay.push(p=>p.listen(e,t,n,r)),this.delegate.listen(e,t,n,r)}shouldReplay(e){return this.replay!==null&&e.startsWith(Ie)}},Ae=new Y("");function Se(o="animations"){return te("NgAsyncAnimations"),q([{provide:oe,useFactory:(e,t,n)=>new Re(e,t,n,o),deps:[J,pe,ne]},{provide:ee,useValue:o==="noop"?"NoopAnimations":"BrowserAnimations"}])}var Ne=o=>({exact:o}),Fe=(o,e)=>e.path;function Le(o,e){o&1&&(d(0,"span"),i(1,"daimon"),l())}function Ke(o,e){if(o&1&&(d(0,"span",6),i(1),l()),o&2){let t=u().$implicit;m(),f(t.label)}}function je(o,e){if(o&1&&(d(0,"a",5)(1,"mat-icon",2),i(2),l(),y(3,Ke,2,1,"span",6),l()),o&2){let t=e.$implicit,n=u();M("routerLink",t.path)("routerLinkActiveOptions",de(5,Ne,t.path==="/"))("matTooltip",n.expanded()?t.shortcut:t.label+" \xB7 "+t.shortcut),m(2),f(t.icon),m(),x(n.expanded()?3:-1)}}var He=[{path:"/",icon:"apps",label:"Apps",shortcut:"g a"},{path:"/errors",icon:"error",label:"Errors",shortcut:"g e"},{path:"/logs",icon:"terminal",label:"Logs",shortcut:"g l"},{path:"/config",icon:"tune",label:"Settings",shortcut:"g s"},{path:"/doctor",icon:"medical_services",label:"Doctor",shortcut:"g d"},{path:"/events",icon:"timeline",label:"Events",shortcut:"g v"},{path:"/history",icon:"query_stats",label:"History",shortcut:"g h"},{path:"/sessions",icon:"radio_button_checked",label:"Sessions",shortcut:"g n"}],we="daimon.nav.expanded",F=class o{entries=He;expanded=g(!0);ngOnInit(){let e=localStorage.getItem(we);e!==null&&this.expanded.set(e==="1")}toggle(){this.expanded.update(e=>!e),localStorage.setItem(we,this.expanded()?"1":"0")}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=v({type:o,selectors:[["dm-nav-rail"]],decls:11,vars:5,consts:[[1,"dm-rail"],[1,"dm-rail-toggle",3,"click"],["fontSet","material-symbols-outlined"],[1,"dm-rail-brand"],[1,"dm-rail-items"],["routerLinkActive","active","matTooltipPosition","right",1,"dm-rail-item",3,"routerLink","routerLinkActiveOptions","matTooltip"],[1,"dm-rail-label"]],template:function(t,n){t&1&&(d(0,"nav",0)(1,"button",1),h("click",function(){return n.toggle()}),d(2,"mat-icon",2),i(3),l()(),d(4,"div",3)(5,"mat-icon",2),i(6,"developer_board"),l(),y(7,Le,2,0,"span"),l(),d(8,"div",4),w(9,je,4,7,"a",5,Fe),l()()),t&2&&(A("expanded",n.expanded()),m(),k("aria-label",n.expanded()?"Collapse":"Expand"),m(2),f(n.expanded()?"menu_open":"menu"),m(4),x(n.expanded()?7:-1),m(2),T(n.entries))},dependencies:[ve,ye,Ee,Ce,Me,ke],styles:["[_nghost-%COMP%]{display:contents}.dm-rail[_ngcontent-%COMP%]{grid-area:rail;display:flex;flex-direction:column;background:var(--mat-sys-surface-container);border-right:1px solid var(--mat-sys-outline-variant);width:64px;transition:width var(--dm-motion-medium) var(--dm-motion-easing-emphasized);overflow:hidden;-webkit-user-select:none;user-select:none}.dm-rail.expanded[_ngcontent-%COMP%]{width:240px}.dm-rail-toggle[_ngcontent-%COMP%]{border:none;background:transparent;color:var(--mat-sys-on-surface-variant);padding:12px;cursor:pointer;align-self:flex-end;display:flex;align-items:center;justify-content:center}.dm-rail-toggle[_ngcontent-%COMP%]:hover{color:var(--mat-sys-on-surface)}.dm-rail-brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:0 16px 12px 20px;color:var(--mat-sys-primary);font:500 1rem/1.5rem Roboto;letter-spacing:.009rem}.dm-rail-items[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;padding:8px}.dm-rail-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:10px 12px;border-radius:12px;color:var(--mat-sys-on-surface-variant);text-decoration:none;font:500 .875rem/1.25rem Roboto;transition:background var(--dm-motion-short) var(--dm-motion-easing),color var(--dm-motion-short) var(--dm-motion-easing);white-space:nowrap}.dm-rail-item[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.dm-rail-item.active[_ngcontent-%COMP%]{background:color-mix(in oklch,var(--mat-sys-primary) 14%,transparent);color:var(--mat-sys-primary)}.dm-rail-label[_ngcontent-%COMP%]{flex:1}"],changeDetection:0})};function Ve(o,e){if(o&1){let t=S();a(0,"div",2)(1,"button",3),P("click",function(){b(t);let r=u();return _(r.set("auto"))}),i(2,"Auto"),s(),a(3,"button",3),P("click",function(){b(t);let r=u();return _(r.set("light"))}),i(4,"Light"),s(),a(5,"button",3),P("click",function(){b(t);let r=u();return _(r.set("dark"))}),i(6,"Dark"),s()()}}var Te="daimon.theme",K=class o{theme=g("auto");host=c(I);open=g(!1);icon=()=>this.theme()==="dark"?"dark_mode":this.theme()==="light"?"light_mode":"contrast";ngOnInit(){let e=localStorage.getItem(Te)||"auto";this.set(e,!1)}set(e,t=!0){this.theme.set(e),localStorage.setItem(Te,e);let n=document.documentElement;e==="auto"?n.style.removeProperty("color-scheme"):n.style.setProperty("color-scheme",e),t&&this.open.set(!1)}onDocClick(e){this.open()&&(this.host.nativeElement.contains(e.target)||this.open.set(!1))}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=v({type:o,selectors:[["dm-theme-toggle"]],hostBindings:function(t,n){t&1&&h("click",function(p){return n.onDocClick(p)},R)},decls:4,vars:3,consts:[["type","button","aria-label","Theme","aria-haspopup","true",1,"tt-btn",3,"click"],[1,"material-symbols-outlined"],["role","menu",1,"tt-pop"],["type","button","role","menuitem",3,"click"]],template:function(t,n){t&1&&(a(0,"button",0),P("click",function(){return n.open.set(!n.open())}),a(1,"span",1),i(2),s()(),y(3,Ve,7,0,"div",2)),t&2&&(k("aria-expanded",n.open()),m(2),f(n.icon()),m(),x(n.open()?3:-1))},styles:["[_nghost-%COMP%]{position:relative;display:inline-block}.tt-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;background:transparent;border-radius:999px;color:var(--mat-sys-on-surface-variant);cursor:pointer}.tt-btn[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high);color:var(--mat-sys-on-surface)}.tt-btn[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:20px}.tt-pop[_ngcontent-%COMP%]{position:absolute;right:0;top:calc(100% + 4px);min-width:140px;background:var(--mat-sys-surface-container-high);border:1px solid var(--mat-sys-outline-variant);border-radius:10px;padding:4px;box-shadow:var(--mat-sys-level2);z-index:50;display:flex;flex-direction:column;gap:1px}.tt-pop[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 12px;background:transparent;border:0;border-radius:6px;text-align:left;color:var(--mat-sys-on-surface);font:500 .8125rem/1.25rem Roboto;cursor:pointer}.tt-pop[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-highest)}"],changeDetection:0})};function Be(o,e){if(o&1){let t=S();d(0,"button",13),h("click",function(){let r=b(t).$implicit,p=u(2);return _(p.setWorkspace(r))}),i(1),l()}if(o&2){let t=e.$implicit;m(),f(t)}}function ze(o,e){if(o&1){let t=S();d(0,"div",5)(1,"button",13),h("click",function(){b(t);let r=u();return _(r.setWorkspace(null))}),i(2,"All workspaces"),l(),w(3,Be,2,1,"button",14,B),l()}if(o&2){let t=u();m(3),T(t.api.workspaces())}}function $e(o,e){o&1&&(d(0,"div",15),i(1,"No profiles configured"),l())}function Ue(o,e){if(o&1){let t=S();d(0,"div",16)(1,"span",17),i(2),l(),d(3,"button",18),h("click",function(){let r=b(t).$implicit,p=u(2);return _(p.runProfile(r))}),d(4,"span",3),i(5,"rocket_launch"),l()()()}if(o&2){let t=e.$implicit;m(2),f(t)}}function We(o,e){if(o&1&&(d(0,"div",5),y(1,$e,2,0,"div",15),w(2,Ue,6,1,"div",16,B),l()),o&2){let t=u();m(),x(t.profiles().length?-1:1),m(),T(t.profiles())}}var $="daimon.workspace",Pe="daimon.profile",j=class o{api=c(N);host=c(I);workspace=g(null);profile=g(null);profiles=g([]);openMenu=g(null);filteredCount=me(()=>{let e=this.workspace();return e?this.api.apps().filter(t=>t.workspaceLabel===e).length:this.api.apps().length});ngOnInit(){this.workspace.set(localStorage.getItem($)),this.profile.set(localStorage.getItem(Pe)),this.loadProfiles()}toggle(e){this.openMenu.update(t=>t===e?null:e)}onDocClick(e){if(!this.openMenu())return;let t=e.target;this.host.nativeElement.contains(t)||this.openMenu.set(null)}async loadProfiles(){try{let e=await fetch("/api/config");if(!e.ok)return;let t=await e.json(),n=t?.config?.profiles?Object.keys(t.config.profiles):[];this.profiles.set(n)}catch{}}setWorkspace(e){this.workspace.set(e),e?localStorage.setItem($,e):localStorage.removeItem($),window.dispatchEvent(new CustomEvent("daimon:workspace",{detail:e})),this.openMenu.set(null)}toast(e,t=3e3){let n=document.getElementById("dm-toast-host");n||(n=document.createElement("div"),n.id="dm-toast-host",n.style.cssText="position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none",document.body.appendChild(n));let r=document.createElement("div");r.textContent=e,r.style.cssText="pointer-events:auto;padding:10px 16px;background:var(--mat-sys-inverse-surface,#322f35);color:var(--mat-sys-inverse-on-surface,#f5eff4);border-radius:8px;font:500 .8125rem/1.25rem Roboto;box-shadow:var(--mat-sys-level3,0 4px 12px rgba(0,0,0,.25))",n.appendChild(r),setTimeout(()=>{try{r.remove()}catch{}},t)}async runProfile(e){this.profile.set(e),localStorage.setItem(Pe,e),this.openMenu.set(null),this.toast(`Bringing up profile "${e}"\u2026`,2e3);try{let t=await this.api.ensureUp(e),n=Array.isArray(t?.apps)?`${t.apps.length} apps ready`:"done";this.toast(`Profile "${e}": ${n}`,3e3)}catch(t){this.toast(`Profile "${e}" failed: ${t?.message??"error"}`,5e3)}}onCmdK(){window.dispatchEvent(new CustomEvent("daimon:cmdk"))}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=v({type:o,selectors:[["dm-topbar"]],hostBindings:function(t,n){t&1&&h("click",function(p){return n.onDocClick(p)},R)},decls:32,vars:12,consts:[[1,"dm-topbar"],[1,"dm-popwrap"],["type","button","aria-haspopup","true",1,"dm-chip",3,"click","title"],[1,"material-symbols-outlined"],[1,"material-symbols-outlined","dm-chip-caret"],["role","menu",1,"dm-pop"],[1,"dm-topbar-spacer"],[1,"dm-conn",3,"title"],[1,"dm-conn-dot"],[1,"dm-conn-text"],["type","button","title","Command palette",1,"dm-cmdk",3,"click"],[2,"margin","0 .5rem"],[1,"dm-kbd"],["type","button","role","menuitem",3,"click"],["type","button","role","menuitem"],[1,"dm-pop-empty"],["role","menuitem",1,"dm-pop-row"],[1,"dm-pop-label"],["type","button","title","ensure-up",1,"dm-pop-go",3,"click"]],template:function(t,n){t&1&&(d(0,"header",0)(1,"div",1)(2,"button",2),h("click",function(){return n.toggle("ws")}),d(3,"span",3),i(4,"folder_open"),l(),d(5,"span"),i(6),l(),d(7,"span",4),i(8,"expand_more"),l()(),y(9,ze,5,0,"div",5),l(),d(10,"div",1)(11,"button",2),h("click",function(){return n.toggle("profile")}),d(12,"span",3),i(13,"play_circle"),l(),d(14,"span"),i(15),l(),d(16,"span",4),i(17,"expand_more"),l()(),y(18,We,4,1,"div",5),l(),C(19,"span",6),d(20,"span",7),C(21,"span",8),d(22,"span",9),i(23),l()(),d(24,"button",10),h("click",function(){return n.onCmdK()}),d(25,"span",3),i(26,"search"),l(),d(27,"span",11),i(28,"Jump to\u2026"),l(),d(29,"kbd",12),i(30,"\u2318K"),l()(),C(31,"dm-theme-toggle"),l()),t&2&&(m(2),M("title","Filter by workspace"),k("aria-expanded",n.openMenu()==="ws"),m(4),f(n.workspace()||"All workspaces"),m(3),x(n.openMenu()==="ws"?9:-1),m(2),M("title","Run profile: ensure-up"),k("aria-expanded",n.openMenu()==="profile"),m(4),f(n.profile()||"No profile"),m(3),x(n.openMenu()==="profile"?18:-1),m(2),A("up",n.api.connected()),M("title",n.api.connected()?"Live event stream connected":"Reconnecting\u2026"),m(3),f(n.api.connected()?"live":"offline"))},dependencies:[K],styles:["[_nghost-%COMP%]{display:contents}.dm-topbar[_ngcontent-%COMP%]{grid-area:topbar;display:flex;align-items:center;gap:.5rem;padding:10px 16px;background:var(--mat-sys-surface);border-bottom:1px solid var(--mat-sys-outline-variant);min-height:56px}.dm-topbar-spacer[_ngcontent-%COMP%]{flex:1}.dm-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.5rem;padding:6px 10px;border-radius:999px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);color:var(--mat-sys-on-surface);font:500 .8125rem/1.25rem Roboto;cursor:pointer;transition:background var(--dm-motion-short) var(--dm-motion-easing)}.dm-chip[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.dm-chip[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.dm-chip-caret[_ngcontent-%COMP%]{opacity:.7}.dm-cmdk[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;border-radius:12px!important}.dm-cmdk[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:18px;width:18px;height:18px}.dm-kbd[_ngcontent-%COMP%]{font-family:Roboto Mono,ui-monospace,monospace;font-size:.6875rem;padding:2px 6px;border-radius:4px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant);color:var(--mat-sys-on-surface-variant)}.dm-conn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:4px 10px;border-radius:999px;font:500 .75rem/1rem Roboto;color:var(--mat-sys-on-surface-variant);background:var(--mat-sys-surface-container)}.dm-conn-dot[_ngcontent-%COMP%]{width:8px;height:8px;border-radius:999px;background:var(--mat-sys-outline)}.dm-conn.up[_ngcontent-%COMP%] .dm-conn-dot[_ngcontent-%COMP%]{background:var(--mat-sys-primary);box-shadow:0 0 0 4px color-mix(in oklch,var(--mat-sys-primary) 25%,transparent)}.dm-conn.up[_ngcontent-%COMP%] .dm-conn-text[_ngcontent-%COMP%]{color:var(--mat-sys-primary)}.dm-popwrap[_ngcontent-%COMP%]{position:relative;display:inline-block}.dm-pop[_ngcontent-%COMP%]{position:absolute;left:0;top:calc(100% + 4px);min-width:200px;max-height:60vh;overflow-y:auto;background:var(--mat-sys-surface-container-high);border:1px solid var(--mat-sys-outline-variant);border-radius:10px;padding:4px;box-shadow:var(--mat-sys-level2);z-index:50;display:flex;flex-direction:column;gap:1px}.dm-pop[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 12px;background:transparent;border:0;border-radius:6px;text-align:left;color:var(--mat-sys-on-surface);font:500 .8125rem/1.25rem Roboto;cursor:pointer}.dm-pop[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-highest)}.dm-pop-empty[_ngcontent-%COMP%]{padding:.5rem 1rem;color:var(--mat-sys-on-surface-variant)}.dm-pop-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:4px 8px}.dm-pop-label[_ngcontent-%COMP%]{flex:1;font:500 .8125rem/1.25rem Roboto;color:var(--mat-sys-on-surface)}.dm-pop-go[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:0;border-radius:999px;color:var(--mat-sys-primary);cursor:pointer}.dm-pop-go[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-highest)}.dm-pop-go[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}.dm-cmdk[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;padding:8px 14px;border-radius:12px;background:transparent;border:1px solid var(--mat-sys-outline);color:var(--mat-sys-on-surface);cursor:pointer}.dm-cmdk[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container)}.dm-cmdk[_ngcontent-%COMP%] .material-symbols-outlined[_ngcontent-%COMP%]{font-size:18px}"],changeDetection:0})};var U=class o{static \u0275fac=function(t){return new(t||o)};static \u0275cmp=v({type:o,selectors:[["dm-shortcuts-help"]],decls:114,vars:0,consts:[["mat-dialog-title",""],["mat-dialog-content",""],[1,"dm-keys"]],template:function(t,n){t&1&&(a(0,"h2",0),i(1,"Keyboard shortcuts"),s(),a(2,"div",1)(3,"table",2)(4,"tr")(5,"td")(6,"kbd"),i(7,"\u2318K"),s(),i(8," / "),a(9,"kbd"),i(10,"Ctrl+K"),s()(),a(11,"td"),i(12,"Command palette"),s()(),a(13,"tr")(14,"td")(15,"kbd"),i(16,"?"),s()(),a(17,"td"),i(18,"This help"),s()(),a(19,"tr")(20,"td")(21,"kbd"),i(22,"/"),s()(),a(23,"td"),i(24,"Focus filter"),s()(),a(25,"tr")(26,"td")(27,"kbd"),i(28,"g"),s(),a(29,"kbd"),i(30,"a"),s()(),a(31,"td"),i(32,"Apps"),s()(),a(33,"tr")(34,"td")(35,"kbd"),i(36,"g"),s(),a(37,"kbd"),i(38,"e"),s()(),a(39,"td"),i(40,"Errors"),s()(),a(41,"tr")(42,"td")(43,"kbd"),i(44,"g"),s(),a(45,"kbd"),i(46,"l"),s()(),a(47,"td"),i(48,"Logs"),s()(),a(49,"tr")(50,"td")(51,"kbd"),i(52,"g"),s(),a(53,"kbd"),i(54,"s"),s()(),a(55,"td"),i(56,"Settings"),s()(),a(57,"tr")(58,"td")(59,"kbd"),i(60,"g"),s(),a(61,"kbd"),i(62,"d"),s()(),a(63,"td"),i(64,"Doctor"),s()(),a(65,"tr")(66,"td")(67,"kbd"),i(68,"g"),s(),a(69,"kbd"),i(70,"v"),s()(),a(71,"td"),i(72,"Events"),s()(),a(73,"tr")(74,"td")(75,"kbd"),i(76,"g"),s(),a(77,"kbd"),i(78,"h"),s()(),a(79,"td"),i(80,"History"),s()(),a(81,"tr")(82,"td")(83,"kbd"),i(84,"j"),s(),i(85," / "),a(86,"kbd"),i(87,"k"),s()(),a(88,"td"),i(89,"Next / prev item"),s()(),a(90,"tr")(91,"td")(92,"kbd"),i(93,"s"),s()(),a(94,"td"),i(95,"Start focused app"),s()(),a(96,"tr")(97,"td")(98,"kbd"),i(99,"r"),s()(),a(100,"td"),i(101,"Restart focused app"),s()(),a(102,"tr")(103,"td")(104,"kbd"),i(105,"x"),s()(),a(106,"td"),i(107,"Stop focused app"),s()(),a(108,"tr")(109,"td")(110,"kbd"),i(111,"."),s()(),a(112,"td"),i(113,"Toggle list / cards"),s()()()())},styles:[".dm-keys[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}.dm-keys[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:.375rem .5rem;vertical-align:middle}.dm-keys[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{width:9rem}kbd[_ngcontent-%COMP%]{font-family:Roboto Mono,ui-monospace,monospace;font-size:.75rem;padding:2px 6px;border-radius:4px;background:var(--mat-sys-surface-container);border:1px solid var(--mat-sys-outline-variant)}"],changeDetection:0})},H=class o{router=c(fe);envInjector=c(X);pending=null;pendingTimer;handler=e=>this.onKey(e);async openShortcutsDialog(){let{MatDialog:e}=await import("./chunk-NN2YNLGP.js");Z(this.envInjector,()=>{c(e).open(U,{width:"420px"})})}install(){window.addEventListener("keydown",this.handler)}uninstall(){window.removeEventListener("keydown",this.handler)}onKey(e){let t=e.target;if(!(t&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable))){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"){e.preventDefault(),window.dispatchEvent(new CustomEvent("daimon:cmdk"));return}if(!(e.metaKey||e.ctrlKey||e.altKey)){if(this.pending==="g"){this.pending=null,this.pendingTimer&&clearTimeout(this.pendingTimer);let r={a:"/",e:"/errors",l:"/logs",s:"/config",d:"/doctor",v:"/events",h:"/history",n:"/sessions",r:"/errors",c:"/config"}[e.key.toLowerCase()];r&&(e.preventDefault(),this.router.navigateByUrl(r));return}if(e.key==="?"){e.preventDefault(),this.openShortcutsDialog();return}if(e.key==="/"){e.preventDefault(),window.dispatchEvent(new CustomEvent("daimon:focus-filter"));return}if(e.key==="g"){this.pending="g",this.pendingTimer=setTimeout(()=>this.pending=null,1200);return}if(e.key==="."){e.preventDefault(),window.dispatchEvent(new CustomEvent("daimon:toggle-density"));return}["j","k","s","r","x"].includes(e.key)&&window.dispatchEvent(new CustomEvent("daimon:key",{detail:e.key}))}}}static \u0275fac=function(t){return new(t||o)};static \u0275prov=D({token:o,factory:o.\u0275fac,providedIn:"root"})};var Ye=()=>[import("./chunk-4ZR4NTJW.js").then(o=>o.CommandPaletteComponent)];function qe(o,e){o&1&&C(0,"dm-command-palette")}var V=class o{api=c(N);keys=c(H);paletteActivated=g(!1);onCmdK=()=>{this.paletteActivated()||(this.paletteActivated.set(!0),setTimeout(()=>window.dispatchEvent(new CustomEvent("daimon:cmdk")),50))};ngOnInit(){this.api.start(),this.keys.install(),window.addEventListener("daimon:cmdk",this.onCmdK)}ngOnDestroy(){this.api.stop(),this.keys.uninstall(),window.removeEventListener("daimon:cmdk",this.onCmdK)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=v({type:o,selectors:[["dm-root"]],decls:8,vars:1,consts:[[1,"dm-shell"],[1,"dm-main"]],template:function(t,n){t&1&&(d(0,"div",0),C(1,"dm-nav-rail")(2,"dm-topbar"),d(3,"main",1),C(4,"router-outlet"),l()(),re(5,qe,1,0),ae(6,5,Ye)),t&2&&(m(6),se(n.paletteActivated()))},dependencies:[he,F,j],styles:['[_nghost-%COMP%]{display:block;height:100vh}.dm-shell[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;grid-template-areas:"rail topbar" "rail main";height:100vh;min-height:100vh}.dm-main[_ngcontent-%COMP%]{grid-area:main;overflow-y:auto;padding:1.5rem;background:var(--mat-sys-surface)}'],changeDetection:0})};var Oe=[{path:"",loadComponent:()=>import("./chunk-KDCKLTCZ.js").then(o=>o.AppsListComponent)},{path:"apps/:name",loadComponent:()=>import("./chunk-BLNPJ4WD.js").then(o=>o.AppDetailComponent)},{path:"events",loadComponent:()=>import("./chunk-XYVF5I5T.js").then(o=>o.EventsFeedComponent)},{path:"logs",loadComponent:()=>import("./chunk-XUU4AY4M.js").then(o=>o.LogsPageComponent)},{path:"logs/:name",loadComponent:()=>import("./chunk-XUU4AY4M.js").then(o=>o.LogsPageComponent)},{path:"errors",loadComponent:()=>import("./chunk-K46KCL6L.js").then(o=>o.ErrorsPanelComponent)},{path:"doctor",loadComponent:()=>import("./chunk-WJUGRIIZ.js").then(o=>o.DoctorPageComponent)},{path:"config",loadComponent:()=>import("./chunk-WRBP4DQN.js").then(o=>o.ConfigEditorComponent)},{path:"history",loadComponent:()=>import("./chunk-EBOHC6KX.js").then(o=>o.HistoryPageComponent)},{path:"history/:name",loadComponent:()=>import("./chunk-EBOHC6KX.js").then(o=>o.HistoryPageComponent)},{path:"sessions",loadComponent:()=>import("./chunk-V2CQL6W5.js").then(o=>o.SessionsPageComponent)},{path:"requests/:name",loadComponent:()=>import("./chunk-R6J2WYUD.js").then(o=>o.RequestsPageComponent)},{path:"**",redirectTo:""}];ce(V,{providers:[le(),Se(),ue(ge()),xe(Oe,be()),{provide:_e,useValue:{fontSet:"material-symbols-outlined"}}]}).catch(o=>console.error(o));
|