homebridge-config-ui-x 5.12.1-beta.1 → 5.12.1-beta.3

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.
Files changed (175) hide show
  1. package/package.json +6 -6
  2. package/public/chunk-2FXKHKRF.js +1 -0
  3. package/public/chunk-2J2ADNZ3.js +2 -0
  4. package/public/chunk-2ZERFNLG.js +1 -0
  5. package/public/chunk-3IQMKSYT.js +1 -0
  6. package/public/chunk-3LXZS65D.js +1 -0
  7. package/public/{chunk-WLACRWP7.js → chunk-5ADKC7QH.js} +1 -1
  8. package/public/chunk-5GJ7VEN2.js +1 -0
  9. package/public/chunk-5J5BKS6V.js +1 -0
  10. package/public/{chunk-AQMA3RDW.js → chunk-5JY2IGJ4.js} +1 -1
  11. package/public/chunk-5LEUA5ML.js +1 -0
  12. package/public/{chunk-G53OXLP6.js → chunk-5QQ2XMII.js} +1 -1
  13. package/public/{chunk-EKUI2KLJ.js → chunk-627DHRQR.js} +1 -1
  14. package/public/{chunk-FOZS44SP.js → chunk-6JORSDRO.js} +1 -1
  15. package/public/{chunk-6LMBPSI7.js → chunk-7DSHUQQE.js} +1 -1
  16. package/public/{chunk-MWXRPLUX.js → chunk-7O34GFCK.js} +1 -1
  17. package/public/chunk-7SG2F2V4.js +1 -0
  18. package/public/chunk-7YP6YRCQ.js +1 -0
  19. package/public/chunk-A6ZF4UAT.js +1 -0
  20. package/public/{chunk-CH55NUDR.js → chunk-AGMIR63R.js} +1 -1
  21. package/public/chunk-ANHKZLHH.js +1 -0
  22. package/public/chunk-ANK4KDVK.js +1 -0
  23. package/public/chunk-AUQDKQJK.js +1 -0
  24. package/public/chunk-BUH4KDH4.js +1 -0
  25. package/public/{chunk-GTDQP2AN.js → chunk-C64AHVUO.js} +1 -1
  26. package/public/{chunk-ZVVR6KI7.js → chunk-CJ4RHJAH.js} +1 -1
  27. package/public/chunk-CRZNK2EK.js +1 -0
  28. package/public/{chunk-I4SED5RO.js → chunk-CSG2SHBW.js} +1 -1
  29. package/public/chunk-D5VO4XPO.js +1 -0
  30. package/public/chunk-DJ2EJOEH.js +1 -0
  31. package/public/{chunk-5KS2DH7B.js → chunk-DZ4GN7CJ.js} +1 -1
  32. package/public/chunk-E6DYTMWA.js +1 -0
  33. package/public/chunk-E7TDUWKH.js +1 -0
  34. package/public/chunk-EQED4CZQ.js +1 -0
  35. package/public/chunk-F5MBSCH4.js +4 -0
  36. package/public/chunk-FE2ZONWW.js +1 -0
  37. package/public/{chunk-AKBDMFNY.js → chunk-FNRDBHYN.js} +1 -1
  38. package/public/chunk-FPSFZSJ3.js +1 -0
  39. package/public/{chunk-QHLVWXBN.js → chunk-G26XQPM7.js} +1 -1
  40. package/public/chunk-G2NY3ZCN.js +1 -0
  41. package/public/chunk-GEGSB4GN.js +1 -0
  42. package/public/chunk-GN7QPRR6.js +1 -0
  43. package/public/{chunk-TS4TGXTB.js → chunk-HH2FDI7W.js} +1 -1
  44. package/public/chunk-HH2POB4I.js +1 -0
  45. package/public/{chunk-DPOOINVO.js → chunk-HMF2EYMY.js} +1 -1
  46. package/public/chunk-HWDBPX2Z.js +1 -0
  47. package/public/{chunk-EDQYUSSK.js → chunk-I4UJLAVJ.js} +1 -1
  48. package/public/chunk-IDS6VUDM.js +1 -0
  49. package/public/{chunk-NJRKOKSU.js → chunk-IHAA5URA.js} +1 -1
  50. package/public/chunk-IR6ZCGVC.js +1 -0
  51. package/public/{chunk-JHCMYPZI.js → chunk-JBCO5ZGG.js} +1 -1
  52. package/public/{chunk-D36GOGOL.js → chunk-JDMMT5L4.js} +1 -1
  53. package/public/{chunk-DZSNO3SI.js → chunk-JXGR2UI3.js} +1 -1
  54. package/public/{chunk-PXHERBFM.js → chunk-K3WEJJSS.js} +1 -1
  55. package/public/chunk-K6KSPMJA.js +1 -0
  56. package/public/chunk-KB7D5SFS.js +1 -0
  57. package/public/{chunk-MOJIJ4KI.js → chunk-KEESKHLN.js} +1 -1
  58. package/public/chunk-KJJHXJSC.js +1 -0
  59. package/public/{chunk-E5XCBASH.js → chunk-KQSUQYOI.js} +1 -1
  60. package/public/{chunk-U32VG5WU.js → chunk-KU7MI4EL.js} +1 -1
  61. package/public/chunk-LBYOA4VH.js +1 -0
  62. package/public/chunk-LJ22FMGM.js +1 -0
  63. package/public/{chunk-C7II5VP2.js → chunk-LKA3HBCU.js} +1 -1
  64. package/public/{chunk-PPX7XLRU.js → chunk-LNVODE7E.js} +1 -1
  65. package/public/chunk-LXQKJPCB.js +1 -0
  66. package/public/{chunk-D7DWUFHN.js → chunk-MAQWGSNZ.js} +1 -1
  67. package/public/chunk-NEMS53PP.js +1 -0
  68. package/public/chunk-NNZ55R3M.js +1 -0
  69. package/public/chunk-NP4HRPHU.js +1 -0
  70. package/public/{chunk-EJDOJG5I.js → chunk-NSDUWTNB.js} +1 -1
  71. package/public/{chunk-Y2T2JCJS.js → chunk-O7ASY26P.js} +1 -1
  72. package/public/chunk-OEWYBM4X.js +1 -0
  73. package/public/chunk-OOIPUQER.js +1 -0
  74. package/public/{chunk-6BJX5CLA.js → chunk-OTMZDL7S.js} +1 -1
  75. package/public/chunk-P2GGGU2Y.js +1 -0
  76. package/public/{chunk-CVR7HH5R.js → chunk-PIZ742XO.js} +2 -2
  77. package/public/{chunk-4VXAGXIE.js → chunk-Q4ALB4PG.js} +1 -1
  78. package/public/chunk-QAK4LTJK.js +1 -0
  79. package/public/chunk-QKVFC7F5.js +1 -0
  80. package/public/{chunk-DYMBIGE6.js → chunk-RDHUW73W.js} +1 -1
  81. package/public/chunk-RVX73CVN.js +1 -0
  82. package/public/{chunk-I5I4J3CI.js → chunk-S2NF675V.js} +1 -1
  83. package/public/chunk-SJDRQIN5.js +1 -0
  84. package/public/chunk-SKRVTKE3.js +68 -0
  85. package/public/{chunk-74D66TIP.js → chunk-SKTRHOM7.js} +1 -1
  86. package/public/chunk-T6FOXECG.js +1 -0
  87. package/public/{chunk-BYKIYQDT.js → chunk-TIETFXW3.js} +1 -1
  88. package/public/{chunk-O27K467V.js → chunk-TXSHVS35.js} +1 -1
  89. package/public/chunk-U5PCRNWX.js +1 -0
  90. package/public/chunk-UB77D3LN.js +1 -0
  91. package/public/{chunk-O4N7TQYF.js → chunk-UHG23NUX.js} +1 -1
  92. package/public/{chunk-GRKUQDKZ.js → chunk-UQTV3KLJ.js} +1 -1
  93. package/public/chunk-USNKVK3T.js +1 -0
  94. package/public/{chunk-QSXYRFV2.js → chunk-UTK5QYBZ.js} +1 -1
  95. package/public/{chunk-KVCLSFUU.js → chunk-UU4H7O22.js} +12 -12
  96. package/public/{chunk-NXZQXLGL.js → chunk-UVWXUC5Y.js} +1 -1
  97. package/public/chunk-VCQXRYFP.js +1 -0
  98. package/public/{chunk-BOC4GPPW.js → chunk-VCWYDWAJ.js} +1 -1
  99. package/public/chunk-VF77U6IG.js +1 -0
  100. package/public/chunk-VS2RZZM2.js +1 -0
  101. package/public/{chunk-ZLBX5GO7.js → chunk-VZQ3UMBD.js} +1 -1
  102. package/public/chunk-WLG7PGUZ.js +1 -0
  103. package/public/{chunk-YCP75D2G.js → chunk-X66UFY6K.js} +1 -1
  104. package/public/chunk-XFEUNVVJ.js +1 -0
  105. package/public/{chunk-AJ6G5D4H.js → chunk-XFKYZXKP.js} +1 -1
  106. package/public/{chunk-VNBFOH2R.js → chunk-Y6DNZAC2.js} +1 -1
  107. package/public/chunk-Y7EASXJH.js +1 -0
  108. package/public/chunk-YM24O4KE.js +1 -0
  109. package/public/{chunk-COMRMPAN.js → chunk-YUXVWURK.js} +1 -1
  110. package/public/{chunk-UIS7AEE6.js → chunk-Z56QIJS3.js} +1 -1
  111. package/public/{chunk-LTLKZ6BM.js → chunk-ZBIB5CY4.js} +1 -1
  112. package/public/{chunk-FEF3KUJO.js → chunk-ZBNB3EPH.js} +1 -1
  113. package/public/chunk-ZR36K7FI.js +1 -0
  114. package/public/index.html +1 -1
  115. package/public/{main-T3PH2DNO.js → main-B3YXUAIV.js} +1 -1
  116. package/public/chunk-2OYRXBN2.js +0 -1
  117. package/public/chunk-2RZGQOIV.js +0 -1
  118. package/public/chunk-2TYRSR7L.js +0 -1
  119. package/public/chunk-2ZONQRJY.js +0 -1
  120. package/public/chunk-3SEP5DLZ.js +0 -1
  121. package/public/chunk-3Z2ANIU6.js +0 -1
  122. package/public/chunk-3ZAUWVFS.js +0 -1
  123. package/public/chunk-4SYWCOWD.js +0 -1
  124. package/public/chunk-5BNEKASD.js +0 -1
  125. package/public/chunk-5GLW5TDA.js +0 -1
  126. package/public/chunk-5RBSEAWH.js +0 -1
  127. package/public/chunk-6JD6QYDM.js +0 -1
  128. package/public/chunk-6PJ56ZYO.js +0 -1
  129. package/public/chunk-6TVBUEIO.js +0 -1
  130. package/public/chunk-725QXWIS.js +0 -1
  131. package/public/chunk-7UVP7RXM.js +0 -1
  132. package/public/chunk-AMYBOLIJ.js +0 -1
  133. package/public/chunk-AVNUTXZU.js +0 -1
  134. package/public/chunk-B7HJCRSF.js +0 -1
  135. package/public/chunk-B7M44SMZ.js +0 -1
  136. package/public/chunk-DIANFPJO.js +0 -1
  137. package/public/chunk-DIV6SBSA.js +0 -1
  138. package/public/chunk-EGSAGFD6.js +0 -1
  139. package/public/chunk-ELBRHYEQ.js +0 -1
  140. package/public/chunk-FE2B7I65.js +0 -1
  141. package/public/chunk-GQP3IWNY.js +0 -1
  142. package/public/chunk-GUGASWDS.js +0 -1
  143. package/public/chunk-HBKEAKUY.js +0 -1
  144. package/public/chunk-HPMVQQCQ.js +0 -1
  145. package/public/chunk-HYXVTKH5.js +0 -1
  146. package/public/chunk-IEA4TRJP.js +0 -1
  147. package/public/chunk-KII4A2TO.js +0 -1
  148. package/public/chunk-L56VCSQ2.js +0 -2
  149. package/public/chunk-LHNLN7G4.js +0 -1
  150. package/public/chunk-MQYFARVS.js +0 -1
  151. package/public/chunk-N5RLFJCF.js +0 -1
  152. package/public/chunk-NE5TKDBZ.js +0 -1
  153. package/public/chunk-NNMBFXIZ.js +0 -68
  154. package/public/chunk-OEMJNAOZ.js +0 -1
  155. package/public/chunk-OKDYJSK3.js +0 -1
  156. package/public/chunk-OMS2DGGK.js +0 -1
  157. package/public/chunk-OXW7WUD2.js +0 -1
  158. package/public/chunk-OYAUZ7WO.js +0 -1
  159. package/public/chunk-P36LCHFC.js +0 -1
  160. package/public/chunk-P46NZURT.js +0 -1
  161. package/public/chunk-RLF5HK3M.js +0 -1
  162. package/public/chunk-STYJ7GX2.js +0 -1
  163. package/public/chunk-T5HDXHUI.js +0 -1
  164. package/public/chunk-TJM4IBUQ.js +0 -1
  165. package/public/chunk-TNHQCJ4K.js +0 -1
  166. package/public/chunk-UQ6A4TOF.js +0 -1
  167. package/public/chunk-UX5CFJ7O.js +0 -4
  168. package/public/chunk-W4IPMDNP.js +0 -1
  169. package/public/chunk-XO4RLEIC.js +0 -1
  170. package/public/chunk-XYOWFUTO.js +0 -1
  171. package/public/chunk-Z5ETX2UJ.js +0 -1
  172. package/public/chunk-ZAZ3JGIS.js +0 -1
  173. package/public/chunk-ZO7KUAS7.js +0 -1
  174. package/public/chunk-ZSOLIIEA.js +0 -1
  175. package/public/chunk-ZTOOYWTR.js +0 -1
@@ -1,2 +1,2 @@
1
- import{a as N,b as j,d as P,k as l,m as S,o as F,p as L,q as W}from"./chunk-DYMBIGE6.js";import{$b as R,Aa as f,Jb as v,Kb as T,Lb as C,Rc as I,Sb as y,X as p,Xb as E,Y as h,_b as D,aa as n,cb as _,d as a,ic as M,jc as O,ka as d,la as g,nb as m,oa as r,ob as w,pa as c,pb as b,xa as u}from"./chunk-UX5CFJ7O.js";var A=["*"],k=(()=>{class t{constructor(){this._ngbConfig=n(N),this.autoClose=!0,this.placement="auto",this.popperOptions=i=>i,this.triggers="hover focus",this.disableTooltip=!1,this.openDelay=0,this.closeDelay=0}get animation(){return this._animation??this._ngbConfig.animation}set animation(i){this._animation=i}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),x=0,H=(()=>{class t{static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275cmp=m({type:t,selectors:[["ngb-tooltip-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(e,o){e&1&&E("mouseenter",function(){return o.onMouseEnter()})("mouseleave",function(){return o.onMouseLeave()}),e&2&&(y("id",o.id),O("tooltip"+(o.tooltipClass?" "+o.tooltipClass:"")),M("fade",o.animation))},inputs:{animation:"animation",id:"id",tooltipClass:"tooltipClass",onMouseEnter:"onMouseEnter",onMouseLeave:"onMouseLeave"},ngContentSelectors:A,decls:3,vars:0,consts:[["data-popper-arrow","",1,"tooltip-arrow"],[1,"tooltip-inner"]],template:function(e,o){e&1&&(D(),C(0,"div",0),v(1,"div",1),R(2),T())},styles:[`ngb-tooltip-window{pointer-events:none;position:absolute}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-top,ngb-tooltip-window.bs-tooltip-bottom{padding-left:0;padding-right:0}ngb-tooltip-window.bs-tooltip-start,ngb-tooltip-window.bs-tooltip-end{padding-top:0;padding-bottom:0}
1
+ import{a as N,b as j,d as P,k as l,m as S,o as F,p as L,q as W}from"./chunk-RDHUW73W.js";import{$b as R,Aa as f,Jb as v,Kb as T,Lb as C,Rc as I,Sb as y,X as p,Xb as E,Y as h,_b as D,aa as n,cb as _,d as a,ic as M,jc as O,ka as d,la as g,nb as m,oa as r,ob as w,pa as c,pb as b,xa as u}from"./chunk-F5MBSCH4.js";var A=["*"],k=(()=>{class t{constructor(){this._ngbConfig=n(N),this.autoClose=!0,this.placement="auto",this.popperOptions=i=>i,this.triggers="hover focus",this.disableTooltip=!1,this.openDelay=0,this.closeDelay=0}get animation(){return this._animation??this._ngbConfig.animation}set animation(i){this._animation=i}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),x=0,H=(()=>{class t{static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275cmp=m({type:t,selectors:[["ngb-tooltip-window"]],hostAttrs:["role","tooltip"],hostVars:5,hostBindings:function(e,o){e&1&&E("mouseenter",function(){return o.onMouseEnter()})("mouseleave",function(){return o.onMouseLeave()}),e&2&&(y("id",o.id),O("tooltip"+(o.tooltipClass?" "+o.tooltipClass:"")),M("fade",o.animation))},inputs:{animation:"animation",id:"id",tooltipClass:"tooltipClass",onMouseEnter:"onMouseEnter",onMouseLeave:"onMouseLeave"},ngContentSelectors:A,decls:3,vars:0,consts:[["data-popper-arrow","",1,"tooltip-arrow"],[1,"tooltip-inner"]],template:function(e,o){e&1&&(D(),C(0,"div",0),v(1,"div",1),R(2),T())},styles:[`ngb-tooltip-window{pointer-events:none;position:absolute}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-top,ngb-tooltip-window.bs-tooltip-bottom{padding-left:0;padding-right:0}ngb-tooltip-window.bs-tooltip-start,ngb-tooltip-window.bs-tooltip-end{padding-top:0;padding-bottom:0}
2
2
  `],encapsulation:2,changeDetection:0})}}return t})(),tt=(()=>{class t{constructor(){this._config=n(k),this.animation=this._config.animation,this.autoClose=this._config.autoClose,this.placement=this._config.placement,this.popperOptions=this._config.popperOptions,this.triggers=this._config.triggers,this.container=this._config.container,this.disableTooltip=this._config.disableTooltip,this.tooltipClass=this._config.tooltipClass,this.openDelay=this._config.openDelay,this.closeDelay=this._config.closeDelay,this.shown=new r,this.hidden=new r,this._nativeElement=n(f).nativeElement,this._ngZone=n(c),this._document=n(g),this._changeDetector=n(I),this._injector=n(d),this._ngbTooltipWindowId=`ngb-tooltip-${x++}`,this._popupService=new L(H),this._windowRef=null,this._positioning=j(),this._mouseEnterTooltip=new a,this._mouseLeaveTooltip=new a,this._opening=!0,this._transitioning=!1}set ngbTooltip(i){this._ngbTooltip=i,!i&&this._windowRef&&this.close()}get ngbTooltip(){return this._ngbTooltip}open(i){if(!this._opening&&this._transitioning&&(this._transitioning=!1,l(this._windowRef.location.nativeElement)),!this._windowRef&&this._ngbTooltip&&!this.disableTooltip){let{windowRef:e,transition$:o}=this._popupService.open(this._ngbTooltip,i??this.tooltipContext,this.animation);this._opening=!0,this._transitioning=!0,this._windowRef=e,this._windowRef.setInput("animation",this.animation),this._windowRef.setInput("tooltipClass",this.tooltipClass),this._windowRef.setInput("id",this._ngbTooltipWindowId),this._windowRef.setInput("onMouseEnter",()=>this._mouseEnterTooltip.next()),this._windowRef.setInput("onMouseLeave",()=>this._mouseLeaveTooltip.next()),this._getPositionTargetElement().setAttribute("aria-describedby",this._ngbTooltipWindowId),this.container==="body"&&this._document.body.appendChild(this._windowRef.location.nativeElement),this._windowRef.changeDetectorRef.detectChanges(),this._windowRef.changeDetectorRef.markForCheck(),this._ngZone.runOutsideAngular(()=>{this._positioning.createPopper({hostElement:this._getPositionTargetElement(),targetElement:this._windowRef.location.nativeElement,placement:this.placement,baseClass:"bs-tooltip",updatePopperOptions:s=>this.popperOptions(F([0,6])(s))}),Promise.resolve().then(()=>{this._positioning.update()}),this._afterRenderRef=_({mixedReadWrite:()=>{this._positioning.update()}},{injector:this._injector})}),S(this._ngZone,this._document,this.autoClose,()=>this.close(),this.hidden,[this._windowRef.location.nativeElement],[this._nativeElement]),o.subscribe(()=>{this._transitioning&&(this._transitioning=!1,this.shown.emit())})}}close(i=this.animation){this._opening&&this._transitioning&&(this._transitioning=!1,l(this._windowRef.location.nativeElement)),this._windowRef!=null&&(this._getPositionTargetElement().removeAttribute("aria-describedby"),this._opening=!1,this._transitioning=!0,this._popupService.close(i).subscribe(()=>{this._windowRef=null,this._positioning.destroy(),this._afterRenderRef?.destroy(),this._transitioning&&(this._transitioning=!1,this.hidden.emit()),this._changeDetector.markForCheck()}))}toggle(){this._windowRef?this.close():this.open()}isOpen(){return this._windowRef!=null}ngOnInit(){this._unregisterListenersFn=W(this._nativeElement,this.triggers,this.isOpen.bind(this),this.open.bind(this),this.close.bind(this),+this.openDelay,+this.closeDelay,this._mouseEnterTooltip,this._mouseLeaveTooltip)}ngOnChanges({tooltipClass:i}){i&&this.isOpen()&&this._windowRef.setInput("tooltipClass",i.currentValue)}ngOnDestroy(){this.close(!1),this._unregisterListenersFn?.()}_getPositionTargetElement(){return(P(this.positionTarget)?this._document.querySelector(this.positionTarget):this.positionTarget)||this._nativeElement}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275dir=b({type:t,selectors:[["","ngbTooltip",""]],inputs:{animation:"animation",autoClose:"autoClose",placement:"placement",popperOptions:"popperOptions",triggers:"triggers",positionTarget:"positionTarget",container:"container",disableTooltip:"disableTooltip",tooltipClass:"tooltipClass",tooltipContext:"tooltipContext",openDelay:"openDelay",closeDelay:"closeDelay",ngbTooltip:"ngbTooltip"},outputs:{shown:"shown",hidden:"hidden"},exportAs:["ngbTooltip"],features:[u]})}}return t})(),it=(()=>{class t{static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275mod=w({type:t})}static{this.\u0275inj=h({})}}return t})();export{tt as a,it as b};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-7YP6YRCQ.js";import"./chunk-B4AJQJMI.js";export default a();
@@ -1,4 +1,4 @@
1
- import{a as bi}from"./chunk-EDQYUSSK.js";import{a as ot,b as Pe,c as Ie,d as $e}from"./chunk-QSXYRFV2.js";import{a as ue,b as pi,c as En,d as Et}from"./chunk-D36GOGOL.js";import{a as ai}from"./chunk-O4N7TQYF.js";import{a as di}from"./chunk-U32VG5WU.js";import{a as ii,b as ni,c as oi}from"./chunk-BMOLDRJ3.js";import{a as ti}from"./chunk-D7DWUFHN.js";import{a as Ge}from"./chunk-H7F7H5MW.js";import{a as si}from"./chunk-YCP75D2G.js";import{a as Zt,c as Se,d as at,e as qe,f as rt,g as lt,h as st,i as xe,k as dt,l as ct,m as mt,x as ei,z as pt}from"./chunk-TS4TGXTB.js";import{a as yn}from"./chunk-3Z2ANIU6.js";import{a as Bn}from"./chunk-HBKEAKUY.js";import{a as wn}from"./chunk-5BNEKASD.js";import{a as kn}from"./chunk-6PJ56ZYO.js";import{a as Sn}from"./chunk-NE5TKDBZ.js";import{a as Mn}from"./chunk-N5RLFJCF.js";import{a as ve}from"./chunk-ZLBX5GO7.js";import{a as un}from"./chunk-4SYWCOWD.js";import{a as _n}from"./chunk-FE2B7I65.js";import{a as fn}from"./chunk-2RZGQOIV.js";import{a as hn}from"./chunk-3SEP5DLZ.js";import{a as bn}from"./chunk-2TYRSR7L.js";import{a as Cn}from"./chunk-5RBSEAWH.js";import{a as vn}from"./chunk-HYXVTKH5.js";import{a as xn}from"./chunk-7UVP7RXM.js";import{a as rn}from"./chunk-P46NZURT.js";import{a as ln}from"./chunk-725QXWIS.js";import{a as sn}from"./chunk-5GLW5TDA.js";import{a as dn}from"./chunk-OMS2DGGK.js";import{a as cn}from"./chunk-XO4RLEIC.js";import{a as mn}from"./chunk-MQYFARVS.js";import{a as pn}from"./chunk-IEA4TRJP.js";import{a as gn}from"./chunk-AVNUTXZU.js";import{a as Mt,b as gt,c as ci,d as mi,e as gi,f as ui,g as _i,h as fi,i as hi,l as ut,m as _t,n as ft,o as ht,p as bt,q as Ct}from"./chunk-KVCLSFUU.js";import{a as St,c as ri,d as li}from"./chunk-ZCGZM7LU.js";import{a as Ci}from"./chunk-QHLVWXBN.js";import{a as ye}from"./chunk-6BJX5CLA.js";import{a as De}from"./chunk-NXZQXLGL.js";import{s as q,t as re}from"./chunk-DYMBIGE6.js";import{e as pe}from"./chunk-6LMBPSI7.js";import{C as Ce,D as Xt,b as Ve,c as qt,e as he,j as Gt,l as be,n as Jt,q as Kt,t as tt,u as it,w as nt,x as Qt,y as Yt}from"./chunk-JHCMYPZI.js";import{b as W}from"./chunk-5KS2DH7B.js";import{C as F,D as j,F as U,H as fe,I as N,o as zt,u as Wt}from"./chunk-L56VCSQ2.js";import{Ab as _,Ac as Te,Bc as Xe,Cb as Y,Db as X,Dc as m,Eb as Z,Ec as g,F as Me,Fb as x,Fc as z,Gb as l,Hb as r,Ib as v,Jb as V,Kb as P,Lb as G,Mb as Ht,Mc as Ze,Nb as Ot,Nc as We,O as wt,Oc as et,R as Oe,Rb as T,Sb as ae,Ua as ce,Va as Lt,X as Ee,Xb as E,Ya as Ft,Yb as ee,Za as o,Zb as p,aa as b,d as me,ea as se,ec as Je,fc as Ke,ga as B,gc as Qe,ha as w,hc as Re,ic as ke,jc as J,kc as c,lc as k,mb as R,mc as y,n as He,nb as L,nc as _e,oc as Ye,pb as Ut,qb as jt,rc as te,sa as C,sc as ie,tb as kt,tc as ne,uc as Rt,va as At,wc as oe,xc as de,yb as I,yc as ze,zb as u,zc as le}from"./chunk-UX5CFJ7O.js";import{a as Zi}from"./chunk-6TVBUEIO.js";import{a as en}from"./chunk-OEMJNAOZ.js";import{a as tn}from"./chunk-LHNLN7G4.js";import{a as nn}from"./chunk-B7HJCRSF.js";import{a as on}from"./chunk-ZAZ3JGIS.js";import{a as an}from"./chunk-OKDYJSK3.js";import{a as D,b as A,c as Nt,g as Q,h as S}from"./chunk-B4AJQJMI.js";var Le=Q(ot(),1);var vi=(()=>{class i{jsonSchemaForm=b(gt,{host:!0,self:!0,optional:!0});jsfPatch=We(!1);constructor(){let e=this.jsonSchemaForm,n=e.jsf.buildLayout.bind(e.jsf);e.jsf.buildLayout=t=>{if(n(t),e.jsf.formValues&&this.jsfPatch())return this.fixNestedArrayLayout(e.jsf.layout,e.jsf.formValues)}}fixNestedArrayLayout(e,n){return this.fixArray(e,n,""),e}fixArray(e,n,t){if(Array.isArray(e)){let a=e.filter(f=>f.name!=="_bridge"),d=a.filter(f=>f.items&&Array.isArray(f.items)).flatMap(f=>f.items).filter(f=>f.dataType==="array"||f.arrayItem);a.concat(d).filter(f=>f.dataType==="array"||f.arrayItem).forEach(f=>{this.fixNestedArray(f,n,t)})}else this.fixNestedArray(e,n,t)}fixNestedArray(e,n,t){if(e.items&&Array.isArray(e.items)){let a=e.items.find(d=>d.type==="$ref");if(a){let d=e.items.filter(M=>M.type==="section"||M.type==="div"),h=d.length>0?d.reduce((M,$)=>M.id>$.id?M:$):this.getItemTemplateFromRef(a),f=this.getDataFromPointer(n,a.dataPointer.replace(t,""));if(f===null)return;if(Array.isArray(f)){for(;e.items.length-1<f.length;){let M=St(h);M._id=li("new_"),e.items.unshift(M)}f.forEach((M,$)=>{this.fixArray(e.items[$],M,a.dataPointer)})}else this.fixArray(e.items,n,a.dataPointer)}else this.fixArray(e.items,n,t);e.items.filter(d=>d.items&&Array.isArray(d.items)).forEach(d=>{this.fixArray(d.items,n,t)})}}getDataFromPointer(e,n){let t=e;return n.substring(1).split(/\//).filter(a=>a!=="-").forEach(a=>{try{t=t[a]}catch{t=null}}),t}getItemTemplateFromRef(e){let n={type:"section",items:[]},t=St(e);return ri(t,n),t}static \u0275fac=function(n){return new(n||i)};static \u0275dir=Ut({type:i,selectors:[["","jsfPatch",""]],inputs:{jsfPatch:[1,"jsfPatch"]}})}return i})();function Tn(i,s){if(i&1){let e=T();l(0,"json-schema-form",1),E("onChanges",function(t){B(e);let a=p();return w(a.onChanges(t))})("isValid",function(t){B(e);let a=p();return w(a.validChange(t))}),r()}if(i&2){let e=p();x("jsfPatch",e.configSchema().fixArrays)("options",e.jsonFormOptions)("schema",e.configSchema().schema)("UISchema",e.configSchema().uiSchema)("layout",e.configSchema().layout)("form",e.configSchema().form)("data",e.currentData())("language",e.language())}}var vt=(()=>{class i{$settings=b(W);availableLanguages=["de","en","es","fr","it","pt","zh"];configSchema=We.required();data=We.required();dataChange=Ze();dataChanged=Ze();isValid=Ze();currentData=C(null);language=C("en");jsonFormOptions={addSubmit:!1,loadExternalAssets:!1,returnEmptyFields:!1,setSchemaDefaults:!0,autocomplete:!1};lastValidState=void 0;validationTimeout=null;constructor(){At(()=>{this.currentData.set(this.data())})}ngOnInit(){let e=this.$settings.env.lang.split("-")[0];this.availableLanguages.includes(e)&&this.language.set(e)}ngOnDestroy(){this.validationTimeout&&clearTimeout(this.validationTimeout)}onChanges(e){this.dataChange.emit(e),this.dataChanged.emit(e)}validChange(e){this.validationTimeout&&clearTimeout(this.validationTimeout),this.validationTimeout=setTimeout(()=>{this.lastValidState!==e&&(this.lastValidState=e,this.isValid.emit(e))},100)}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["app-schema-form"]],inputs:{configSchema:[1,"configSchema"],data:[1,"data"]},outputs:{dataChange:"dataChange",dataChanged:"dataChanged",isValid:"isValid"},decls:2,vars:1,consts:[["framework","bootstrap-5",1,"ng-bs5-validate",3,"jsfPatch","options","schema","UISchema","layout","form","data","language"],["framework","bootstrap-5",1,"ng-bs5-validate",3,"onChanges","isValid","jsfPatch","options","schema","UISchema","layout","form","data","language"]],template:function(n,t){n&1&&(Ht(0),u(1,Tn,1,8,"json-schema-form",0),Ot()),n&2&&(o(),_(t.configSchema().schema?1:-1))},dependencies:[ci,gt,vi],encapsulation:2})}return i})();var Ne=(()=>{class i{$api=b(N);$modal=b(re);$toastr=b(U);$translate=b(F);injector=b(se);openCorrectRestartModalForPlugin(e){return S(this,null,function*(){let n=yield this.getChildBridgesForPlugin(e);if(n.length){let t=R([{provide:ei,useValue:{bridges:n.map(a=>({name:a.name,username:a.username,matterSerialNumber:a.matterSerialNumber}))}}],this.injector);this.$modal.open(pi,{size:"lg",backdrop:"static",injector:t})}else this.$modal.open(ue,{size:"lg",backdrop:"static"})})}getChildBridgesForPlugin(e){return S(this,null,function*(){try{return(yield this.$api.get("/status/homebridge/child-bridges")).filter(t=>e===t.plugin)}catch(n){return console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error")),[]}})}static \u0275fac=function(n){return new(n||i)};static \u0275prov=Ee({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var Vn=Nt({"../../../../i18n/bg.json":()=>Zi(),"../../../../i18n/ca.json":()=>en(),"../../../../i18n/cs.json":()=>tn(),"../../../../i18n/de.json":()=>nn(),"../../../../i18n/en.json":()=>on(),"../../../../i18n/es.json":()=>an(),"../../../../i18n/fi.json":()=>rn(),"../../../../i18n/fr.json":()=>ln(),"../../../../i18n/he.json":()=>sn(),"../../../../i18n/hu.json":()=>dn(),"../../../../i18n/id.json":()=>cn(),"../../../../i18n/it.json":()=>mn(),"../../../../i18n/ja.json":()=>pn(),"../../../../i18n/ko.json":()=>gn(),"../../../../i18n/mk.json":()=>un(),"../../../../i18n/nl.json":()=>_n(),"../../../../i18n/no.json":()=>fn(),"../../../../i18n/pl.json":()=>hn(),"../../../../i18n/pt-BR.json":()=>bn(),"../../../../i18n/pt.json":()=>Cn(),"../../../../i18n/ru.json":()=>vn(),"../../../../i18n/sl.json":()=>xn(),"../../../../i18n/sv.json":()=>yn(),"../../../../i18n/th.json":()=>Bn(),"../../../../i18n/tr.json":()=>wn(),"../../../../i18n/uk.json":()=>kn(),"../../../../i18n/zh-CN.json":()=>Sn(),"../../../../i18n/zh-TW.json":()=>Mn()});var Pn=["custompluginui"];function In(i,s){i&1&&(l(0,"div",6),v(1,"i",18),r())}function $n(i,s){if(i&1){let e=T();l(0,"div",8)(1,"app-schema-form",19),E("dataChanged",function(t){B(e);let a=p();return w(a.schemaFormUpdatedSubject.next(t))})("isValid",function(t){B(e);let a=p();return w(a.onIsValid(t))}),r()()}if(i&2){let e=p();o(),x("configSchema",e.schema)("data",e.pluginConfig[0])}}function Dn(i,s){if(i&1){let e=T();l(0,"button",24),E("click",function(){B(e);let t=p(2);return w(t.formActionSubject.next("cancel"))}),c(1),r()}if(i&2){let e=p(2);o(),y(" ",e.formCancelButtonLabel()," ")}}function Nn(i,s){if(i&1){let e=T();l(0,"button",25),E("click",function(){B(e);let t=p(2);return w(t.formActionSubject.next("submit"))}),c(1),r()}if(i&2){let e=p(2);x("disabled",!e.formValid()),o(),y(" ",e.formSubmitButtonLabel()," ")}}function An(i,s){if(i&1){let e=T();l(0,"div",8)(1,"app-schema-form",20),E("dataChange",function(t){B(e);let a=p();return w(a.formData.set(t))})("dataChanged",function(t){B(e);let a=p();return w(a.formUpdatedSubject.next(t))})("isValid",function(t){B(e);let a=p();return w(a.formValidEvent(t))}),r(),l(2,"div",21),u(3,Dn,2,1,"button",22),u(4,Nn,2,2,"button",23),r()()}if(i&2){let e=p();o(),x("configSchema",e.formSchema())("data",e.formData()),o(2),_(e.formCancelButtonLabel()?3:-1),o(),_(e.formSubmitButtonLabel()?4:-1)}}function Ln(i,s){i&1&&(l(0,"div",9),v(1,"i",18),r())}function Fn(i,s){if(i&1&&(v(0,"i",26),m(1,"translate")),i&2){let e=p();J(e.formIsValid()?"fa-circle-check green-text":e.strictValidation()?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text"),x("ngbTooltip",g(1,4,e.formIsValid()?"form.label_valid":e.strictValidation()?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150)}}function Un(i,s){i&1&&(c(0),m(1,"translate")),i&2&&y(" ",g(1,1,"form.button_save")," ")}function jn(i,s){i&1&&v(0,"i",17)}var xi=(()=>{class i{$activeModal=b(q);$api=b(N);$cb=b(Ne);$plugin=b(Be);$settings=b(W);$toastr=b(U);$translate=b(F);$ws=b(ve);modalData=b(qe);customPluginUiElementTarget=et("custompluginui");plugin=this.modalData.plugin;schema=this.modalData.schema;pluginConfig=this.modalData.pluginConfig??[];pluginAlias=C("");pluginType=C("platform");loading=C(!0);saveInProgress=C(!1);pluginSpinner=C(!1);saveButtonDisabled=C(!1);uiLoaded=C(!1);showSchemaForm=C(!1);formId=C(void 0);formSchema=C(void 0);formData=C(void 0);formSubmitButtonLabel=C(void 0);formCancelButtonLabel=C(void 0);formValid=C(!0);isFirstSave=C(!1);formIsValid=C(!0);strictValidation=C(!1);io;basePath="";iframe;schemaFormRecentlyUpdated=!1;schemaFormRecentlyRefreshed=!1;destroy$=new me;schemaFormUpdatedSubject=new me;schemaFormRefreshSubject=new me;formUpdatedSubject=new me;formActionSubject=new me;ngOnInit(){let e=this.schema,n=this.plugin;if(!e||!n){console.error("CustomPluginsComponent: schema or plugin not provided"),this.$activeModal.dismiss("Missing required data");return}this.pluginAlias.set(e.pluginAlias),this.pluginType.set(e.pluginType),this.strictValidation.set(e.strictValidation),this.pluginConfig.length===0&&this.isFirstSave.set(!0),this.io=this.$ws.connectToNamespace("plugins/settings-ui"),this.basePath=`/plugins/settings-ui/${encodeURIComponent(n.name)}`,this.initialize(),this.schemaFormRefreshSubject.pipe(Me(250),Oe(this.destroy$)).subscribe(this.schemaFormRefresh.bind(this)),this.schemaFormUpdatedSubject.pipe(Me(250),wt(1),Oe(this.destroy$)).subscribe(t=>{this.schemaFormUpdated(t)}),this.formUpdatedSubject.pipe(Me(100),wt(1),Oe(this.destroy$)).subscribe(this.formUpdated.bind(this)),this.formActionSubject.pipe(Oe(this.destroy$)).subscribe(this.formActionEvent.bind(this)),window.addEventListener("message",this.handleMessage,!1)}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.destroy$.next(),this.destroy$.complete(),this.io&&this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete(),this.formActionSubject.complete()}onIsValid(e){this.formIsValid.set(e)}formValidEvent(e){this.formValid.set(e)}savePluginConfig(e=!1){return S(this,null,function*(){let n=this.plugin;if(n){this.saveInProgress.set(!0);try{let t=yield this.$api.post(`/config-editor/plugin/${encodeURIComponent(n.name)}`,this.pluginConfig);if(this.saveInProgress.set(!1),e){if(this.isFirstSave()&&this.$settings.env.recommendChildBridges&&t[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(n,!0);return}this.$activeModal.close(),yield this.$cb.openCorrectRestartModalForPlugin(n.name)}}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1)}}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}initialize(){return S(this,null,function*(){let e=this.plugin;e&&(this.io.socket.emit("start",e.name),this.io.socket.on("response",n=>{n.action="response",this.iframe.contentWindow.postMessage(n,fe.api.origin)}),this.io.socket.on("stream",n=>{n.action="stream",this.iframe.contentWindow.postMessage(n,fe.api.origin)}),this.io.socket.on("ready",()=>{this.loading.set(!1),this.loadUi()}))})}loadUi(){let e=this.plugin;e&&(this.iframe=this.customPluginUiElementTarget()?.nativeElement,this.iframe&&(this.iframe.src=`${fe.api.base+this.basePath}/index.html?origin=${encodeURIComponent(location.origin)}&v=${encodeURIComponent(e.installedVersion)}`))}handleMessage=e=>{if(e.origin===fe.api.origin||e.origin===window.origin)switch(e.data.action){case"loaded":this.injectDefaultStyles(e),this.confirmReady(e);break;case"request":{this.handleRequest(e);break}case"scrollHeight":this.setiFrameHeight(e),this.uiLoaded.set(!0);break;case"config.get":{this.requestResponse(e,this.getConfigBlocks());break}case"config.save":{this.requestResponse(e,this.savePluginConfig());break}case"config.update":{this.handleUpdateConfig(e,e.data.pluginConfig);break}case"config.schema":{this.requestResponse(e,this.schema);break}case"cachedAccessories.get":{this.handleGetCachedAccessories(e);break}case"cachedMatterAccessories.get":{this.handleGetCachedMatterAccessories(e);break}case"schema.show":{this.formEnd(),this.showSchemaForm.set(!0);break}case"schema.hide":{this.showSchemaForm.set(!1);break}case"form.create":{this.showSchemaForm.set(!1),this.formCreate(e.data.formId,e.data.schema,e.data.data,e.data.submitButton,e.data.cancelButton);break}case"form.end":{this.formEnd();break}case"user.lightingMode":{this.requestResponse(e,this.$settings.actualLightingMode);break}case"i18n.lang":{this.requestResponse(e,this.$translate.getCurrentLang());break}case"i18n.translations":{this.requestResponse(e,Vn(`../../../../i18n/${this.$translate.getCurrentLang()}.json`));break}case"close":{this.$activeModal.close();break}case"toast.success":this.$toastr.success(e.data.message,e.data.title);break;case"toast.error":this.$toastr.error(e.data.message,e.data.title);break;case"toast.warning":this.$toastr.warning(e.data.message,e.data.title);break;case"toast.info":this.$toastr.info(e.data.message,e.data.title);break;case"spinner.show":this.pluginSpinner.set(!0);break;case"spinner.hide":this.pluginSpinner.set(!1);break;case"button.save.disabled":this.saveButtonDisabled.set(!0);break;case"button.save.enabled":this.saveButtonDisabled.set(!1);break}};confirmReady(e){e.source.postMessage({action:"ready"},e.origin)}setiFrameHeight(e){this.iframe.style.height=`${e.data.scrollHeight+10}px`}handleRequest(e){this.io.socket.emit("request",e.data)}handleUpdateConfig(e,n){if(this.showSchemaForm()&&this.schemaFormRefreshSubject.next(void 0),!Array.isArray(n))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array"),this.$translate.instant("toast.title_error")),this.requestResponse(e,{message:this.$translate.instant("plugins.config.must_be_array")},!1);for(let t of n)if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array_objects"),this.$translate.instant("toast.title_error")),this.requestResponse(e,{message:this.$translate.instant("plugins.config.must_be_array_objects")},!1);return this.updateConfigBlocks(n),this.requestResponse(e,this.getConfigBlocks())}requestResponse(e,n,t=!0){e.source.postMessage({action:"response",requestId:e.data.requestId,success:t,data:n},e.origin)}injectDefaultStyles(e){return S(this,null,function*(){let n=Array.from(window.document.body.classList).find(M=>M.startsWith("config-ui-x-")),t=window.document.body.classList.contains("dark-mode"),a=e.source;a.postMessage({action:"body-class",class:n},e.origin),a.postMessage({action:"body-class",class:"modal-content"},e.origin),t&&a.postMessage({action:"body-class",class:"dark-mode"},e.origin);let d=Array.from(document.querySelectorAll("link"));for(let M of d)if(M.getAttribute("rel")==="stylesheet"){let $=M.getAttribute("href"),ge=document.baseURI+($.startsWith("/")?$.substring(1):$);a.postMessage({action:"link-element",href:ge,rel:"stylesheet"},e.origin)}let h=Array.from(document.querySelectorAll("style"));for(let M of h)a.postMessage({action:"inline-style",style:M.innerHTML},e.origin);let f=`
1
+ import{a as bi}from"./chunk-I4UJLAVJ.js";import{a as ot,b as Pe,c as Ie,d as $e}from"./chunk-UTK5QYBZ.js";import{a as ue,b as pi,c as En,d as Et}from"./chunk-JDMMT5L4.js";import{a as ai}from"./chunk-UHG23NUX.js";import{a as di}from"./chunk-KU7MI4EL.js";import{a as ii,b as ni,c as oi}from"./chunk-BMOLDRJ3.js";import{a as ti}from"./chunk-MAQWGSNZ.js";import{a as Ge}from"./chunk-H7F7H5MW.js";import{a as si}from"./chunk-X66UFY6K.js";import{a as Zt,c as Se,d as at,e as qe,f as rt,g as lt,h as st,i as xe,k as dt,l as ct,m as mt,x as ei,z as pt}from"./chunk-HH2FDI7W.js";import{a as yn}from"./chunk-VS2RZZM2.js";import{a as Bn}from"./chunk-KB7D5SFS.js";import{a as wn}from"./chunk-5LEUA5ML.js";import{a as kn}from"./chunk-NEMS53PP.js";import{a as Sn}from"./chunk-AUQDKQJK.js";import{a as Mn}from"./chunk-VCQXRYFP.js";import{a as ve}from"./chunk-VZQ3UMBD.js";import{a as un}from"./chunk-Y7EASXJH.js";import{a as _n}from"./chunk-HH2POB4I.js";import{a as fn}from"./chunk-GN7QPRR6.js";import{a as hn}from"./chunk-ANHKZLHH.js";import{a as bn}from"./chunk-NP4HRPHU.js";import{a as Cn}from"./chunk-UB77D3LN.js";import{a as vn}from"./chunk-5J5BKS6V.js";import{a as xn}from"./chunk-7SG2F2V4.js";import{a as rn}from"./chunk-KJJHXJSC.js";import{a as ln}from"./chunk-FE2ZONWW.js";import{a as sn}from"./chunk-LBYOA4VH.js";import{a as dn}from"./chunk-K6KSPMJA.js";import{a as cn}from"./chunk-FPSFZSJ3.js";import{a as mn}from"./chunk-D5VO4XPO.js";import{a as pn}from"./chunk-E7TDUWKH.js";import{a as gn}from"./chunk-7YP6YRCQ.js";import{a as Mt,b as gt,c as ci,d as mi,e as gi,f as ui,g as _i,h as fi,i as hi,l as ut,m as _t,n as ft,o as ht,p as bt,q as Ct}from"./chunk-UU4H7O22.js";import{a as St,c as ri,d as li}from"./chunk-ZCGZM7LU.js";import{a as Ci}from"./chunk-G26XQPM7.js";import{a as ye}from"./chunk-OTMZDL7S.js";import{a as De}from"./chunk-UVWXUC5Y.js";import{s as q,t as re}from"./chunk-RDHUW73W.js";import{e as pe}from"./chunk-7DSHUQQE.js";import{C as Ce,D as Xt,b as Ve,c as qt,e as he,j as Gt,l as be,n as Jt,q as Kt,t as tt,u as it,w as nt,x as Qt,y as Yt}from"./chunk-JBCO5ZGG.js";import{b as W}from"./chunk-DZ4GN7CJ.js";import{C as F,D as j,F as U,H as fe,I as N,o as zt,u as Wt}from"./chunk-2J2ADNZ3.js";import{Ab as _,Ac as Te,Bc as Xe,Cb as Y,Db as X,Dc as m,Eb as Z,Ec as g,F as Me,Fb as x,Fc as z,Gb as l,Hb as r,Ib as v,Jb as V,Kb as P,Lb as G,Mb as Ht,Mc as Ze,Nb as Ot,Nc as We,O as wt,Oc as et,R as Oe,Rb as T,Sb as ae,Ua as ce,Va as Lt,X as Ee,Xb as E,Ya as Ft,Yb as ee,Za as o,Zb as p,aa as b,d as me,ea as se,ec as Je,fc as Ke,ga as B,gc as Qe,ha as w,hc as Re,ic as ke,jc as J,kc as c,lc as k,mb as R,mc as y,n as He,nb as L,nc as _e,oc as Ye,pb as Ut,qb as jt,rc as te,sa as C,sc as ie,tb as kt,tc as ne,uc as Rt,va as At,wc as oe,xc as de,yb as I,yc as ze,zb as u,zc as le}from"./chunk-F5MBSCH4.js";import{a as Zi}from"./chunk-IDS6VUDM.js";import{a as en}from"./chunk-E6DYTMWA.js";import{a as tn}from"./chunk-U5PCRNWX.js";import{a as nn}from"./chunk-XFEUNVVJ.js";import{a as on}from"./chunk-VF77U6IG.js";import{a as an}from"./chunk-RVX73CVN.js";import{a as D,b as A,c as Nt,g as Q,h as S}from"./chunk-B4AJQJMI.js";var Le=Q(ot(),1);var vi=(()=>{class i{jsonSchemaForm=b(gt,{host:!0,self:!0,optional:!0});jsfPatch=We(!1);constructor(){let e=this.jsonSchemaForm,n=e.jsf.buildLayout.bind(e.jsf);e.jsf.buildLayout=t=>{if(n(t),e.jsf.formValues&&this.jsfPatch())return this.fixNestedArrayLayout(e.jsf.layout,e.jsf.formValues)}}fixNestedArrayLayout(e,n){return this.fixArray(e,n,""),e}fixArray(e,n,t){if(Array.isArray(e)){let a=e.filter(f=>f.name!=="_bridge"),d=a.filter(f=>f.items&&Array.isArray(f.items)).flatMap(f=>f.items).filter(f=>f.dataType==="array"||f.arrayItem);a.concat(d).filter(f=>f.dataType==="array"||f.arrayItem).forEach(f=>{this.fixNestedArray(f,n,t)})}else this.fixNestedArray(e,n,t)}fixNestedArray(e,n,t){if(e.items&&Array.isArray(e.items)){let a=e.items.find(d=>d.type==="$ref");if(a){let d=e.items.filter(M=>M.type==="section"||M.type==="div"),h=d.length>0?d.reduce((M,$)=>M.id>$.id?M:$):this.getItemTemplateFromRef(a),f=this.getDataFromPointer(n,a.dataPointer.replace(t,""));if(f===null)return;if(Array.isArray(f)){for(;e.items.length-1<f.length;){let M=St(h);M._id=li("new_"),e.items.unshift(M)}f.forEach((M,$)=>{this.fixArray(e.items[$],M,a.dataPointer)})}else this.fixArray(e.items,n,a.dataPointer)}else this.fixArray(e.items,n,t);e.items.filter(d=>d.items&&Array.isArray(d.items)).forEach(d=>{this.fixArray(d.items,n,t)})}}getDataFromPointer(e,n){let t=e;return n.substring(1).split(/\//).filter(a=>a!=="-").forEach(a=>{try{t=t[a]}catch{t=null}}),t}getItemTemplateFromRef(e){let n={type:"section",items:[]},t=St(e);return ri(t,n),t}static \u0275fac=function(n){return new(n||i)};static \u0275dir=Ut({type:i,selectors:[["","jsfPatch",""]],inputs:{jsfPatch:[1,"jsfPatch"]}})}return i})();function Tn(i,s){if(i&1){let e=T();l(0,"json-schema-form",1),E("onChanges",function(t){B(e);let a=p();return w(a.onChanges(t))})("isValid",function(t){B(e);let a=p();return w(a.validChange(t))}),r()}if(i&2){let e=p();x("jsfPatch",e.configSchema().fixArrays)("options",e.jsonFormOptions)("schema",e.configSchema().schema)("UISchema",e.configSchema().uiSchema)("layout",e.configSchema().layout)("form",e.configSchema().form)("data",e.currentData())("language",e.language())}}var vt=(()=>{class i{$settings=b(W);availableLanguages=["de","en","es","fr","it","pt","zh"];configSchema=We.required();data=We.required();dataChange=Ze();dataChanged=Ze();isValid=Ze();currentData=C(null);language=C("en");jsonFormOptions={addSubmit:!1,loadExternalAssets:!1,returnEmptyFields:!1,setSchemaDefaults:!0,autocomplete:!1};lastValidState=void 0;validationTimeout=null;constructor(){At(()=>{this.currentData.set(this.data())})}ngOnInit(){let e=this.$settings.env.lang.split("-")[0];this.availableLanguages.includes(e)&&this.language.set(e)}ngOnDestroy(){this.validationTimeout&&clearTimeout(this.validationTimeout)}onChanges(e){this.dataChange.emit(e),this.dataChanged.emit(e)}validChange(e){this.validationTimeout&&clearTimeout(this.validationTimeout),this.validationTimeout=setTimeout(()=>{this.lastValidState!==e&&(this.lastValidState=e,this.isValid.emit(e))},100)}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["app-schema-form"]],inputs:{configSchema:[1,"configSchema"],data:[1,"data"]},outputs:{dataChange:"dataChange",dataChanged:"dataChanged",isValid:"isValid"},decls:2,vars:1,consts:[["framework","bootstrap-5",1,"ng-bs5-validate",3,"jsfPatch","options","schema","UISchema","layout","form","data","language"],["framework","bootstrap-5",1,"ng-bs5-validate",3,"onChanges","isValid","jsfPatch","options","schema","UISchema","layout","form","data","language"]],template:function(n,t){n&1&&(Ht(0),u(1,Tn,1,8,"json-schema-form",0),Ot()),n&2&&(o(),_(t.configSchema().schema?1:-1))},dependencies:[ci,gt,vi],encapsulation:2})}return i})();var Ne=(()=>{class i{$api=b(N);$modal=b(re);$toastr=b(U);$translate=b(F);injector=b(se);openCorrectRestartModalForPlugin(e){return S(this,null,function*(){let n=yield this.getChildBridgesForPlugin(e);if(n.length){let t=R([{provide:ei,useValue:{bridges:n.map(a=>({name:a.name,username:a.username,matterSerialNumber:a.matterSerialNumber}))}}],this.injector);this.$modal.open(pi,{size:"lg",backdrop:"static",injector:t})}else this.$modal.open(ue,{size:"lg",backdrop:"static"})})}getChildBridgesForPlugin(e){return S(this,null,function*(){try{return(yield this.$api.get("/status/homebridge/child-bridges")).filter(t=>e===t.plugin)}catch(n){return console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error")),[]}})}static \u0275fac=function(n){return new(n||i)};static \u0275prov=Ee({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var Vn=Nt({"../../../../i18n/bg.json":()=>Zi(),"../../../../i18n/ca.json":()=>en(),"../../../../i18n/cs.json":()=>tn(),"../../../../i18n/de.json":()=>nn(),"../../../../i18n/en.json":()=>on(),"../../../../i18n/es.json":()=>an(),"../../../../i18n/fi.json":()=>rn(),"../../../../i18n/fr.json":()=>ln(),"../../../../i18n/he.json":()=>sn(),"../../../../i18n/hu.json":()=>dn(),"../../../../i18n/id.json":()=>cn(),"../../../../i18n/it.json":()=>mn(),"../../../../i18n/ja.json":()=>pn(),"../../../../i18n/ko.json":()=>gn(),"../../../../i18n/mk.json":()=>un(),"../../../../i18n/nl.json":()=>_n(),"../../../../i18n/no.json":()=>fn(),"../../../../i18n/pl.json":()=>hn(),"../../../../i18n/pt-BR.json":()=>bn(),"../../../../i18n/pt.json":()=>Cn(),"../../../../i18n/ru.json":()=>vn(),"../../../../i18n/sl.json":()=>xn(),"../../../../i18n/sv.json":()=>yn(),"../../../../i18n/th.json":()=>Bn(),"../../../../i18n/tr.json":()=>wn(),"../../../../i18n/uk.json":()=>kn(),"../../../../i18n/zh-CN.json":()=>Sn(),"../../../../i18n/zh-TW.json":()=>Mn()});var Pn=["custompluginui"];function In(i,s){i&1&&(l(0,"div",6),v(1,"i",18),r())}function $n(i,s){if(i&1){let e=T();l(0,"div",8)(1,"app-schema-form",19),E("dataChanged",function(t){B(e);let a=p();return w(a.schemaFormUpdatedSubject.next(t))})("isValid",function(t){B(e);let a=p();return w(a.onIsValid(t))}),r()()}if(i&2){let e=p();o(),x("configSchema",e.schema)("data",e.pluginConfig[0])}}function Dn(i,s){if(i&1){let e=T();l(0,"button",24),E("click",function(){B(e);let t=p(2);return w(t.formActionSubject.next("cancel"))}),c(1),r()}if(i&2){let e=p(2);o(),y(" ",e.formCancelButtonLabel()," ")}}function Nn(i,s){if(i&1){let e=T();l(0,"button",25),E("click",function(){B(e);let t=p(2);return w(t.formActionSubject.next("submit"))}),c(1),r()}if(i&2){let e=p(2);x("disabled",!e.formValid()),o(),y(" ",e.formSubmitButtonLabel()," ")}}function An(i,s){if(i&1){let e=T();l(0,"div",8)(1,"app-schema-form",20),E("dataChange",function(t){B(e);let a=p();return w(a.formData.set(t))})("dataChanged",function(t){B(e);let a=p();return w(a.formUpdatedSubject.next(t))})("isValid",function(t){B(e);let a=p();return w(a.formValidEvent(t))}),r(),l(2,"div",21),u(3,Dn,2,1,"button",22),u(4,Nn,2,2,"button",23),r()()}if(i&2){let e=p();o(),x("configSchema",e.formSchema())("data",e.formData()),o(2),_(e.formCancelButtonLabel()?3:-1),o(),_(e.formSubmitButtonLabel()?4:-1)}}function Ln(i,s){i&1&&(l(0,"div",9),v(1,"i",18),r())}function Fn(i,s){if(i&1&&(v(0,"i",26),m(1,"translate")),i&2){let e=p();J(e.formIsValid()?"fa-circle-check green-text":e.strictValidation()?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text"),x("ngbTooltip",g(1,4,e.formIsValid()?"form.label_valid":e.strictValidation()?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150)}}function Un(i,s){i&1&&(c(0),m(1,"translate")),i&2&&y(" ",g(1,1,"form.button_save")," ")}function jn(i,s){i&1&&v(0,"i",17)}var xi=(()=>{class i{$activeModal=b(q);$api=b(N);$cb=b(Ne);$plugin=b(Be);$settings=b(W);$toastr=b(U);$translate=b(F);$ws=b(ve);modalData=b(qe);customPluginUiElementTarget=et("custompluginui");plugin=this.modalData.plugin;schema=this.modalData.schema;pluginConfig=this.modalData.pluginConfig??[];pluginAlias=C("");pluginType=C("platform");loading=C(!0);saveInProgress=C(!1);pluginSpinner=C(!1);saveButtonDisabled=C(!1);uiLoaded=C(!1);showSchemaForm=C(!1);formId=C(void 0);formSchema=C(void 0);formData=C(void 0);formSubmitButtonLabel=C(void 0);formCancelButtonLabel=C(void 0);formValid=C(!0);isFirstSave=C(!1);formIsValid=C(!0);strictValidation=C(!1);io;basePath="";iframe;schemaFormRecentlyUpdated=!1;schemaFormRecentlyRefreshed=!1;destroy$=new me;schemaFormUpdatedSubject=new me;schemaFormRefreshSubject=new me;formUpdatedSubject=new me;formActionSubject=new me;ngOnInit(){let e=this.schema,n=this.plugin;if(!e||!n){console.error("CustomPluginsComponent: schema or plugin not provided"),this.$activeModal.dismiss("Missing required data");return}this.pluginAlias.set(e.pluginAlias),this.pluginType.set(e.pluginType),this.strictValidation.set(e.strictValidation),this.pluginConfig.length===0&&this.isFirstSave.set(!0),this.io=this.$ws.connectToNamespace("plugins/settings-ui"),this.basePath=`/plugins/settings-ui/${encodeURIComponent(n.name)}`,this.initialize(),this.schemaFormRefreshSubject.pipe(Me(250),Oe(this.destroy$)).subscribe(this.schemaFormRefresh.bind(this)),this.schemaFormUpdatedSubject.pipe(Me(250),wt(1),Oe(this.destroy$)).subscribe(t=>{this.schemaFormUpdated(t)}),this.formUpdatedSubject.pipe(Me(100),wt(1),Oe(this.destroy$)).subscribe(this.formUpdated.bind(this)),this.formActionSubject.pipe(Oe(this.destroy$)).subscribe(this.formActionEvent.bind(this)),window.addEventListener("message",this.handleMessage,!1)}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.destroy$.next(),this.destroy$.complete(),this.io&&this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete(),this.formActionSubject.complete()}onIsValid(e){this.formIsValid.set(e)}formValidEvent(e){this.formValid.set(e)}savePluginConfig(e=!1){return S(this,null,function*(){let n=this.plugin;if(n){this.saveInProgress.set(!0);try{let t=yield this.$api.post(`/config-editor/plugin/${encodeURIComponent(n.name)}`,this.pluginConfig);if(this.saveInProgress.set(!1),e){if(this.isFirstSave()&&this.$settings.env.recommendChildBridges&&t[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(n,!0);return}this.$activeModal.close(),yield this.$cb.openCorrectRestartModalForPlugin(n.name)}}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1)}}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}initialize(){return S(this,null,function*(){let e=this.plugin;e&&(this.io.socket.emit("start",e.name),this.io.socket.on("response",n=>{n.action="response",this.iframe.contentWindow.postMessage(n,fe.api.origin)}),this.io.socket.on("stream",n=>{n.action="stream",this.iframe.contentWindow.postMessage(n,fe.api.origin)}),this.io.socket.on("ready",()=>{this.loading.set(!1),this.loadUi()}))})}loadUi(){let e=this.plugin;e&&(this.iframe=this.customPluginUiElementTarget()?.nativeElement,this.iframe&&(this.iframe.src=`${fe.api.base+this.basePath}/index.html?origin=${encodeURIComponent(location.origin)}&v=${encodeURIComponent(e.installedVersion)}`))}handleMessage=e=>{if(e.origin===fe.api.origin||e.origin===window.origin)switch(e.data.action){case"loaded":this.injectDefaultStyles(e),this.confirmReady(e);break;case"request":{this.handleRequest(e);break}case"scrollHeight":this.setiFrameHeight(e),this.uiLoaded.set(!0);break;case"config.get":{this.requestResponse(e,this.getConfigBlocks());break}case"config.save":{this.requestResponse(e,this.savePluginConfig());break}case"config.update":{this.handleUpdateConfig(e,e.data.pluginConfig);break}case"config.schema":{this.requestResponse(e,this.schema);break}case"cachedAccessories.get":{this.handleGetCachedAccessories(e);break}case"cachedMatterAccessories.get":{this.handleGetCachedMatterAccessories(e);break}case"schema.show":{this.formEnd(),this.showSchemaForm.set(!0);break}case"schema.hide":{this.showSchemaForm.set(!1);break}case"form.create":{this.showSchemaForm.set(!1),this.formCreate(e.data.formId,e.data.schema,e.data.data,e.data.submitButton,e.data.cancelButton);break}case"form.end":{this.formEnd();break}case"user.lightingMode":{this.requestResponse(e,this.$settings.actualLightingMode);break}case"i18n.lang":{this.requestResponse(e,this.$translate.getCurrentLang());break}case"i18n.translations":{this.requestResponse(e,Vn(`../../../../i18n/${this.$translate.getCurrentLang()}.json`));break}case"close":{this.$activeModal.close();break}case"toast.success":this.$toastr.success(e.data.message,e.data.title);break;case"toast.error":this.$toastr.error(e.data.message,e.data.title);break;case"toast.warning":this.$toastr.warning(e.data.message,e.data.title);break;case"toast.info":this.$toastr.info(e.data.message,e.data.title);break;case"spinner.show":this.pluginSpinner.set(!0);break;case"spinner.hide":this.pluginSpinner.set(!1);break;case"button.save.disabled":this.saveButtonDisabled.set(!0);break;case"button.save.enabled":this.saveButtonDisabled.set(!1);break}};confirmReady(e){e.source.postMessage({action:"ready"},e.origin)}setiFrameHeight(e){this.iframe.style.height=`${e.data.scrollHeight+10}px`}handleRequest(e){this.io.socket.emit("request",e.data)}handleUpdateConfig(e,n){if(this.showSchemaForm()&&this.schemaFormRefreshSubject.next(void 0),!Array.isArray(n))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array"),this.$translate.instant("toast.title_error")),this.requestResponse(e,{message:this.$translate.instant("plugins.config.must_be_array")},!1);for(let t of n)if(typeof t!="object"||Array.isArray(t))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array_objects"),this.$translate.instant("toast.title_error")),this.requestResponse(e,{message:this.$translate.instant("plugins.config.must_be_array_objects")},!1);return this.updateConfigBlocks(n),this.requestResponse(e,this.getConfigBlocks())}requestResponse(e,n,t=!0){e.source.postMessage({action:"response",requestId:e.data.requestId,success:t,data:n},e.origin)}injectDefaultStyles(e){return S(this,null,function*(){let n=Array.from(window.document.body.classList).find(M=>M.startsWith("config-ui-x-")),t=window.document.body.classList.contains("dark-mode"),a=e.source;a.postMessage({action:"body-class",class:n},e.origin),a.postMessage({action:"body-class",class:"modal-content"},e.origin),t&&a.postMessage({action:"body-class",class:"dark-mode"},e.origin);let d=Array.from(document.querySelectorAll("link"));for(let M of d)if(M.getAttribute("rel")==="stylesheet"){let $=M.getAttribute("href"),ge=document.baseURI+($.startsWith("/")?$.substring(1):$);a.postMessage({action:"link-element",href:ge,rel:"stylesheet"},e.origin)}let h=Array.from(document.querySelectorAll("style"));for(let M of h)a.postMessage({action:"inline-style",style:M.innerHTML},e.origin);let f=`
2
2
  body {
3
3
  height: unset !important;
4
4
  background-color: ${t?"#242424":"#FFFFFF"} !important;
@@ -7,7 +7,7 @@ import{a as bi}from"./chunk-EDQYUSSK.js";import{a as ot,b as Pe,c as Ie,d as $e}
7
7
  `;a.postMessage({action:"inline-style",style:f},e.origin)})}getConfigBlocks(){return this.pluginConfig}updateConfigBlocks(e){for(let n of e)n[this.pluginType()]=this.pluginAlias();this.pluginConfig=e}schemaFormUpdated(e){if(!this.iframe||!this.iframe.contentWindow)return;if(this.schemaFormRecentlyRefreshed){this.schemaFormRecentlyRefreshed=!1;return}this.schemaFormRecentlyUpdated=!0;let n=this.pluginConfig;if(n.length>0&&typeof e=="object"&&e!==null&&!Array.isArray(e)){let t=[...n];t[0]=e,this.pluginConfig=t}this.iframe.contentWindow.postMessage({action:"stream",event:"configChanged",data:this.pluginConfig},fe.api.origin)}schemaFormRefresh(){if(this.schemaFormRecentlyUpdated){this.schemaFormRecentlyUpdated=!1;return}this.schemaFormRecentlyRefreshed=!0,this.showSchemaForm()&&(this.showSchemaForm.set(!1),queueMicrotask(()=>{this.showSchemaForm.set(!0)}))}formCreate(e,n,t,a,d){return S(this,null,function*(){yield this.formEnd(),this.formId.set(e),this.formSchema.set(n),this.formData.set(t),this.formSubmitButtonLabel.set(a),this.formCancelButtonLabel.set(d)})}formEnd(){return S(this,null,function*(){this.formId()&&(this.formId.set(void 0),this.formSchema.set(void 0),this.formData.set(void 0),this.formSubmitButtonLabel.set(void 0),this.formCancelButtonLabel.set(void 0),yield new Promise(e=>setTimeout(e)))})}formUpdated(e){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId(),data:{formEvent:"change",formData:e}},fe.api.origin)}formActionEvent(e){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId(),data:{formEvent:e,formData:this.formData()}},fe.api.origin)}handleGetCachedAccessories(e){return S(this,null,function*(){let n=this.plugin;if(n)try{let t=yield this.$api.get("/server/cached-accessories");return this.requestResponse(e,t.filter(a=>a.plugin===n.name))}catch(t){console.error("Failed to get cached accessories:",t),this.$toastr.error(this.$translate.instant("toast.title_error"))}})}handleGetCachedMatterAccessories(e){return S(this,null,function*(){let n=this.plugin;if(n)try{let t=yield this.$api.get("/server/matter-accessories");return this.requestResponse(e,t.filter(a=>a.plugin===n.name))}catch(t){console.error("Failed to get cached Matter accessories:",t),this.$toastr.error(this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],viewQuery:function(n,t){n&1&&Je(t.customPluginUiElementTarget,Pn,5),n&2&&Ke()},decls:24,vars:17,consts:[["custompluginui",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","pb-0",2,"min-height","110px"],[1,"text-center","primary-text","my-5","w-100"],["width","100%","height","1px;","sandbox","allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-downloads allow-forms",2,"border","0"],[1,"card","card-body"],[1,"loading-overlay","text-center","primary-text","d-flex","align-items-center","justify-content-center"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end","d-flex","align-items-center","justify-content-end"],["container","modal","placement","top","triggers","hover",1,"fa","fa-xl","me-2",3,"class","ngbTooltip","openDelay"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-circle-notch","fa-spin"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],[3,"dataChanged","isValid","configSchema","data"],[3,"dataChange","dataChanged","isValid","configSchema","data"],[1,"text-end","custom-form-action-buttons"],[1,"btn","btn-elegant"],[1,"btn","btn-primary",3,"disabled"],[1,"btn","btn-elegant",3,"click"],[1,"btn","btn-primary",3,"click","disabled"],["container","modal","placement","top","triggers","hover",1,"fa","fa-xl","me-2",3,"ngbTooltip","openDelay"]],template:function(n,t){if(n&1){let a=T();l(0,"div",1)(1,"div",2)(2,"h5",3),c(3),r(),l(4,"button",4),m(5,"translate"),E("click",function(){return B(a),w(t.dismissModal())}),r()(),l(6,"div",5),u(7,In,2,0,"div",6),v(8,"iframe",7,0),u(10,$n,2,2,"div",8),u(11,An,5,4,"div",8),u(12,Ln,2,0,"div",9),r(),l(13,"div",10)(14,"div",11)(15,"button",12),E("click",function(){return B(a),w(t.dismissModal())}),c(16),m(17,"translate"),r()(),v(18,"div",13),l(19,"div",14),u(20,Fn,2,6,"i",15),l(21,"button",16),E("click",function(){return B(a),w(t.savePluginConfig(!0))}),u(22,Un,2,3),u(23,jn,1,0,"i",17),r()()()()}n&2&&(o(3),k(t.plugin.displayName||t.plugin.name),o(),x("disabled",t.saveInProgress()),I("aria-label",g(5,13,"form.button_close")),o(3),_(t.loading()?7:-1),o(3),_(t.uiLoaded()&&t.pluginConfig.length&&t.schema.singular&&t.showSchemaForm()?10:-1),o(),_(t.formId()?11:-1),o(),_(t.pluginSpinner()?12:-1),o(3),x("disabled",t.saveInProgress()),o(),y(" ",g(17,15,"form.button_close")," "),o(4),_(t.saveButtonDisabled()?-1:20),o(),x("disabled",t.saveInProgress()||t.saveButtonDisabled()),o(),_(t.saveInProgress()?-1:22),o(),_(t.saveInProgress()?23:-1))},dependencies:[vt,mi,ye,j],styles:[".manage-plugin-config-external-icons[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;line-height:1;color:#000;opacity:.5;background-color:transparent;border:0}.loading-overlay[_ngcontent-%COMP%]{position:absolute;inset:16px;background-color:#ffffffb3} body.dark-mode .loading-overlay{background-color:#242424b3}.custom-form-action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child{margin-right:2px}"]})}return i})();var yi=(()=>{class i{injector=b(se);$api=b(N);$modal=b(re);plugins={};openSettings(e,n){return S(this,null,function*(){let t=yield this.loadPluginConfig(e.name),a=R([{provide:qe,useValue:{plugin:e,schema:n,pluginConfig:t}}],this.injector);return this.$modal.open(this.plugins[e.name],{size:"lg",backdrop:"static",injector:a}).result.catch(()=>{})})}openCustomSettingsUi(e,n){return S(this,null,function*(){let t=yield this.loadPluginConfig(e.name),a=R([{provide:qe,useValue:{plugin:e,schema:n,pluginConfig:t}}],this.injector);return this.$modal.open(xi,{size:"lg",backdrop:"static",injector:a}).result.catch(()=>{})})}loadPluginConfig(e){return S(this,null,function*(){return this.$api.get(`/config-editor/plugin/${encodeURIComponent(e)}`)})}static \u0275fac=function(n){return new(n||i)};static \u0275prov=Ee({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var Ei=Q(ii(),1),Ti=Q(ni(),1),Vi=Q(oi(),1),Pi=Q(Ge(),1);var Bi=Q(Ge(),1);var Hn=["pluginlogoutput"];function On(i,s){if(i&1){let e=T();l(0,"button",15),m(1,"translate"),m(2,"translate"),E("click",function(){B(e);let t=p();return w(t.restartChildBridges())}),v(3,"i",16),r()}if(i&2){let e=p();x("ngbTooltip",g(1,4,e.childBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart"))("openDelay",150)("disabled",e.midAction()),I("aria-label",g(2,6,e.childBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart"))}}var wi=(()=>{class i{$activeModal=b(q);$api=b(N);$log=b(di);$modal=b(re);$toastr=b(U);$translate=b(F);injector=b(se);modalData=b(rt);termTarget=et("pluginlogoutput");plugin=this.modalData.plugin;childBridges=this.modalData.childBridges??[];midAction=C(!1);resizeEvent=new me;pluginAlias;ngOnInit(){this.getPluginLog()}ngOnDestroy(){this.$log.destroyTerminal()}onWindowResize(){this.resizeEvent.next(void 0)}restartChildBridges(){return S(this,null,function*(){this.midAction.set(!0);try{for(let e of this.childBridges)yield this.$api.put(`/server/restart/${e.username}`,{});this.$toastr.success(this.$translate.instant("plugins.manage.child_bridge_restart"),this.$translate.instant("toast.title_success")),this.midAction.set(!1)}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error")),this.midAction.set(!1)}})}downloadLogFile(){return S(this,null,function*(){this.midAction.set(!0);let e=R([{provide:Zt,useValue:{title:this.$translate.instant("logs.title_download_log_file"),message:this.$translate.instant("logs.download_warning"),confirmButtonLabel:this.$translate.instant("form.button_download"),faIconClass:"fas fa-user-secret primary-text"}}],this.injector),n=this.$modal.open(ti,{size:"lg",backdrop:"static",injector:e});try{yield n.result;try{let t=yield this.$api.get("/platform-tools/hb-service/log/download?colour=yes",{observe:"response",responseType:"text"});if(!t.body)return;let a=t.body.split(`
8
8
  `),d="",h=!1;a.forEach(f=>{if(f){if(h)if(f.match(/36m\[.*?\]/))h=!1;else{d+=`${f.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
9
9
  `;return}f.includes(`36m[${this.pluginAlias}]`)&&(d+=`${f.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
10
- `,h=!0)}}),this.plugin&&(0,Bi.saveAs)(new Blob([d],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`),this.midAction.set(!1)}catch(t){let a;try{t instanceof Wt&&t.error?.text&&(a=JSON.parse(yield t.error.text()).message)}catch(d){console.error(d)}this.$toastr.error(a||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error")),this.midAction.set(!1)}}catch{this.midAction.set(!1)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}getPluginLog(){return S(this,null,function*(){if(this.plugin)try{let e=yield this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`);if(!this.plugin)return;this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":e[0]?.name||this.plugin.name,this.$log.startTerminal(this.termTarget(),{},this.resizeEvent,this.pluginAlias)}catch(e){console.error(e);let n=e instanceof Error?e.error?.message||e.message:this.$translate.instant("toast.title_error");this.$toastr.error(n,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],viewQuery:function(n,t){n&1&&Je(t.termTarget,Hn,5),n&2&&Ke()},hostBindings:function(n,t){n&1&&E("resize",function(){return t.onWindowResize()},Ft)},decls:22,vars:21,consts:[["pluginlogoutput",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","d-flex","flex-row","flex-grow-1","w-100","p-0"],[1,"w-100","bg-black","plugin-log-output","terminal","align-self-end","w-100","h-100","mb-0","p-2"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end"],["container","modal","placement","top","triggers","hover",1,"btn","btn-primary",3,"click","ngbTooltip","openDelay","disabled"],[1,"fas","fa-download"],["container","modal","placement","top","triggers","hover",1,"btn","btn-danger","ms-3",3,"ngbTooltip","openDelay","disabled"],["container","modal","placement","top","triggers","hover",1,"btn","btn-danger","ms-3",3,"click","ngbTooltip","openDelay","disabled"],[1,"fas","fa-power-off"]],template:function(n,t){if(n&1){let a=T();l(0,"div",1)(1,"div",2)(2,"h5",3),c(3),r(),l(4,"button",4),m(5,"translate"),E("click",function(){return B(a),w(t.dismissModal())}),r()(),l(6,"div",5),v(7,"div",6,0),r(),l(9,"div",7)(10,"div",8)(11,"button",9),m(12,"translate"),E("click",function(){return B(a),w(t.dismissModal())}),c(13),m(14,"translate"),r()(),v(15,"div",10),l(16,"div",11)(17,"button",12),m(18,"translate"),m(19,"translate"),E("click",function(){return B(a),w(t.downloadLogFile())}),v(20,"i",13),r(),u(21,On,4,8,"button",14),r()()()}n&2&&(o(3),k((t.plugin==null?null:t.plugin.displayName)||(t.plugin==null?null:t.plugin.name)),o(),x("disabled",t.midAction()),I("aria-label",g(5,11,"form.button_close")),o(7),x("disabled",t.midAction()),I("aria-label",g(12,13,"form.button_close")),o(2),y(" ",g(14,15,"form.button_close")," "),o(4),x("ngbTooltip",g(18,17,"logs.title_download_log_file"))("openDelay",150)("disabled",t.midAction()),I("aria-label",g(19,19,"logs.title_download_log_file")),o(4),_(t.childBridges.length?21:-1))},dependencies:[ye,j],encapsulation:2})}return i})();var ki=Q(ot(),1);var Tt=()=>({app:"Homebridge v2"});function Rn(i,s){i&1&&(l(0,"div",5),v(1,"i",12),r())}function zn(i,s){i&1&&(l(0,"p",9),c(1,"All your plugins are marked as compatible with Homebridge v2."),r())}function Wn(i,s){i&1&&(l(0,"p",9),c(1,"To ignore this warning and continue with the update, click continue below."),r())}function qn(i,s){if(i&1&&(l(0,"p",9),c(1," Some of your plugins are not explicitly marked as compatible with Homebridge v2. This does "),l(2,"span",17),c(3,"not"),r(),c(4," necessarily mean that they won't work. We just can't guarantee that they will. "),r(),l(5,"p",9),c(6," For more information about this update, please see the "),l(7,"a",18),c(8,"wiki page"),r(),c(9,". "),r(),u(10,Wn,2,0,"p",9)),i&2){let e=p(2);o(10),_(e.isUpdating?10:-1)}}function Gn(i,s){i&1&&(l(0,"div",19),c(1," Node.js Version"),v(2,"br"),l(3,"span",20),c(4),m(5,"translate"),r()(),l(6,"div",21),v(7,"i",22),r()),i&2&&(o(4),k(z(5,1,"status.readiness.node_yes",oe(4,Tt))))}function Jn(i,s){i&1&&(l(0,"div",19),c(1," Node.js Version"),v(2,"br"),l(3,"span",20),c(4),m(5,"translate"),r(),v(6,"br"),l(7,"a",23),c(8),m(9,"translate"),v(10,"i",24),r()(),l(11,"div",21),v(12,"i",25),r()),i&2&&(o(4),k(z(5,2,"status.readiness.node_no",oe(7,Tt))),o(4),y(" ",g(9,5,"plugins.compat.node_link")," "))}function Kn(i,s){i&1&&v(0,"i",26)}function Qn(i,s){i&1&&v(0,"i",27)}function Yn(i,s){if(i&1&&(l(0,"li",16)(1,"div",19),c(2),r(),l(3,"div",21),u(4,Kn,1,0,"i",26),u(5,Qn,1,0,"i",27),r()()),i&2){let e=s.$implicit;o(2),k(e.displayName),o(2),_(e.hb2Ready==="supported"?4:-1),o(),_(e.hb2Ready==="unknown"?5:-1)}}function Xn(i,s){if(i&1&&(l(0,"div",13),v(1,"img",14),r(),u(2,zn,2,0,"p",9),u(3,qn,11,1),l(4,"ul",15)(5,"li",16),u(6,Gn,8,5)(7,Jn,13,8),r(),X(8,Yn,6,3,"li",16,Y),r()),i&2){let e=p();o(2),_(e.allPluginsSupported()?2:-1),o(),_(e.allPluginsSupported()?-1:3),o(3),_(e.nodeReady()?6:7),o(2),Z(e.installedPlugins())}}function Zn(i,s){if(i&1){let e=T();l(0,"button",28),m(1,"translate"),E("click",function(){B(e);let t=p();return w(t.closeModal("Dismiss"))}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function eo(i,s){if(i&1){let e=T();l(0,"button",28),m(1,"translate"),E("click",function(){B(e);let t=p();return w(t.closeModal("Dismiss"))}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function to(i,s){if(i&1){let e=T();l(0,"button",29),E("click",function(){B(e);let t=p();return w(t.closeModal("update"))}),c(1),m(2,"translate"),r()}if(i&2){let e=p();x("disabled",e.loading()),o(),y(" ",g(2,2,"form.button_continue")," ")}}var Si=(()=>{class i{$activeModal=b(q);$api=b(N);$settings=b(W);$toastr=b(U);$translate=b(F);$ws=b(ve);io;modalData=b(pt);isUpdating=this.modalData.isUpdating;skipIfCompatible=this.modalData.skipIfCompatible;loading=C(!0);installedPlugins=C([]);allPluginsSupported=C(!0);nodeReady=C(!1);ngOnInit(){this.initialize()}initialize(){return S(this,null,function*(){this.io=this.$ws.getExistingNamespace("status"),this.io.socket.connected&&(yield this.checkHomebridgeUiVersion()),yield this.loadInstalledPlugins(),this.loading.set(!1)})}checkHomebridgeUiVersion(){return S(this,null,function*(){try{let{nodeVersion:e}=yield He(this.io.request("get-homebridge-server-info"));this.nodeReady.set((0,ki.satisfies)(e,">=20"))}catch(e){console.error(e),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}})}loadInstalledPlugins(){return S(this,null,function*(){this.installedPlugins.set([]),this.loading.set(!0);let e=this.$settings.env.homebridgeVersion.split(".")[0];try{let t=(yield this.$api.get("/plugins")).filter(a=>a.name!=="homebridge-config-ui-x").map(a=>{let d=a.engines?.homebridge?.split("||").map(f=>f.trim())||[],h=e==="2"?"hide":d.some(f=>f.startsWith("^2")||f.startsWith(">=2"))?"supported":"unknown";return h==="unknown"&&this.allPluginsSupported.set(!1),A(D({},a),{hb2Ready:h})}).sort((a,d)=>a.name.localeCompare(d.name));this.installedPlugins.set(t),this.skipIfCompatible&&this.installedPlugins().length===0&&this.$activeModal.close("update")}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}closeModal(e){this.$activeModal.close(e)}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:17,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"w-100","text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],["ngSrc","assets/hb-icon.png","alt","","height","100","width","100",1,"plugin-icon-card"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],[1,"text-start","flex-grow-1"],[1,"grey-text"],[1,"ms-3"],[1,"fas","fa-check-circle","green-text","fa-xl"],["href","https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js","target","_blank","rel","noopener noreferrer",1,"small"],[1,"fa","fa-external-link-alt"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl"],["aria-label","The developer has not specifically marked this plugin as compatible with Homebridge v2, but it may still work.",1,"fas","fa-question-circle","orange-text","fa-xl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(n,t){n&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),c(3),m(4,"translate"),r(),l(5,"button",3),m(6,"translate"),E("click",function(){return t.closeModal("Dismiss")}),r()(),l(7,"div",4),u(8,Rn,2,0,"div",5)(9,Xn,10,3),r(),l(10,"div",6)(11,"div",7),u(12,Zn,4,6,"button",8),r(),l(13,"div",9),u(14,eo,4,6,"button",8),r(),l(15,"div",10),u(16,to,3,4,"button",11),r()()()),n&2&&(o(3),k(z(4,6,"status.readiness.title",oe(11,Tt))),o(2),I("aria-label",g(6,9,"form.button_close")),o(3),_(t.loading()?8:9),o(4),_(t.isUpdating?12:-1),o(2),_(t.isUpdating?-1:14),o(2),_(t.isUpdating?16:-1))},dependencies:[zt,j],encapsulation:2})}return i})();var io=(i,s,e,n,t)=>({iconStar:i,iconThumbsUp:s,iconCoffee:e,iconHeart:n,link:t}),Ii=(i,s,e,n)=>({"fa-arrow-alt-circle-down":i,"fa-code-compare":s,"fa-arrow-alt-circle-up":e,"fa-trash":n}),no=()=>["homebridge","homebridge-config-ui-x"],oo=i=>({pluginName:i});function ao(i,s){i&1&&(l(0,"p",13),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"plugins.settings.restart_required")))}function ro(i,s){i&1&&(l(0,"p",13),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"restart.child_bridges")))}function lo(i,s){if(i&1&&(v(0,"p",12),m(1,"translate"),u(2,ao,3,3,"p",13),u(3,ro,3,3,"p",13)),i&2){let e=p(3);x("innerHTML",z(1,3,e.supportMessageKey(),Xe(6,io,e.iconStar,e.iconThumbsUp,e.iconCoffee,e.iconHeart,e.donationLink)),ce),o(2),_(e.childBridges().length===0?2:-1),o(),_(e.childBridges().length>0?3:-1)}}function so(i,s){if(i&1&&(l(0,"div",9),v(1,"i",10),r(),l(2,"h5",11),c(3),r(),u(4,lo,4,12)),i&2){let e=p(2);o(3),Ye("",e.pastTenseVerb(),": ",e.pluginDisplayName," (",e.targetVersionPretty(),")"),o(),_(e.isDisabled?-1:4)}}function co(i,s){if(i&1&&(l(0,"div",6),u(1,so,5,4),r()),i&2){let e=p();o(),_(e.justUpdatedPlugin()?1:-1)}}function mo(i,s){if(i&1&&(l(0,"div",7)(1,"div",9),v(2,"i",14),r(),l(3,"ul",15)(4,"li"),c(5),m(6,"translate"),r(),l(7,"li"),c(8),m(9,"translate"),r()(),l(10,"pre",16),c(11),r()()),i&2){let e=p();o(2),J(Te(10,Ii,e.action==="Install",e.action==="Update"&&e.installedVersion,e.action==="Update"&&!e.installedVersion,e.action==="Uninstall")),o(3),k(g(6,6,"plugins.manage.online_updates")),o(3),k(g(9,8,"plugins.manage.manual_update_command")),o(3),_e(`hb-service stop
10
+ `,h=!0)}}),this.plugin&&(0,Bi.saveAs)(new Blob([d],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`),this.midAction.set(!1)}catch(t){let a;try{t instanceof Wt&&t.error?.text&&(a=JSON.parse(yield t.error.text()).message)}catch(d){console.error(d)}this.$toastr.error(a||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error")),this.midAction.set(!1)}}catch{this.midAction.set(!1)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}getPluginLog(){return S(this,null,function*(){if(this.plugin)try{let e=yield this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`);if(!this.plugin)return;this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":e[0]?.name||this.plugin.name,this.$log.startTerminal(this.termTarget(),{},this.resizeEvent,this.pluginAlias)}catch(e){console.error(e);let n=e instanceof Error?e.error?.message||e.message:this.$translate.instant("toast.title_error");this.$toastr.error(n,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],viewQuery:function(n,t){n&1&&Je(t.termTarget,Hn,5),n&2&&Ke()},hostBindings:function(n,t){n&1&&E("resize",function(){return t.onWindowResize()},Ft)},decls:22,vars:21,consts:[["pluginlogoutput",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","d-flex","flex-row","flex-grow-1","w-100","p-0"],[1,"w-100","bg-black","plugin-log-output","terminal","align-self-end","w-100","h-100","mb-0","p-2"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end"],["container","modal","placement","top","triggers","hover",1,"btn","btn-primary",3,"click","ngbTooltip","openDelay","disabled"],[1,"fas","fa-download"],["container","modal","placement","top","triggers","hover",1,"btn","btn-danger","ms-3",3,"ngbTooltip","openDelay","disabled"],["container","modal","placement","top","triggers","hover",1,"btn","btn-danger","ms-3",3,"click","ngbTooltip","openDelay","disabled"],[1,"fas","fa-power-off"]],template:function(n,t){if(n&1){let a=T();l(0,"div",1)(1,"div",2)(2,"h5",3),c(3),r(),l(4,"button",4),m(5,"translate"),E("click",function(){return B(a),w(t.dismissModal())}),r()(),l(6,"div",5),v(7,"div",6,0),r(),l(9,"div",7)(10,"div",8)(11,"button",9),m(12,"translate"),E("click",function(){return B(a),w(t.dismissModal())}),c(13),m(14,"translate"),r()(),v(15,"div",10),l(16,"div",11)(17,"button",12),m(18,"translate"),m(19,"translate"),E("click",function(){return B(a),w(t.downloadLogFile())}),v(20,"i",13),r(),u(21,On,4,8,"button",14),r()()()}n&2&&(o(3),k((t.plugin==null?null:t.plugin.displayName)||(t.plugin==null?null:t.plugin.name)),o(),x("disabled",t.midAction()),I("aria-label",g(5,11,"form.button_close")),o(7),x("disabled",t.midAction()),I("aria-label",g(12,13,"form.button_close")),o(2),y(" ",g(14,15,"form.button_close")," "),o(4),x("ngbTooltip",g(18,17,"logs.title_download_log_file"))("openDelay",150)("disabled",t.midAction()),I("aria-label",g(19,19,"logs.title_download_log_file")),o(4),_(t.childBridges.length?21:-1))},dependencies:[ye,j],encapsulation:2})}return i})();var ki=Q(ot(),1);var Tt=()=>({app:"Homebridge v2"});function Rn(i,s){i&1&&(l(0,"div",5),v(1,"i",12),r())}function zn(i,s){i&1&&(l(0,"p",9),c(1,"All your plugins are marked as compatible with Homebridge v2."),r())}function Wn(i,s){i&1&&(l(0,"p",9),c(1,"To ignore this warning and continue with the update, click continue below."),r())}function qn(i,s){if(i&1&&(l(0,"p",9),c(1," Some of your plugins are not explicitly marked as compatible with Homebridge v2. This does "),l(2,"span",17),c(3,"not"),r(),c(4," necessarily mean that they won't work. We just can't guarantee that they will. "),r(),l(5,"p",9),c(6," For more information about this update, please see the "),l(7,"a",18),c(8,"wiki page"),r(),c(9,". "),r(),u(10,Wn,2,0,"p",9)),i&2){let e=p(2);o(10),_(e.isUpdating?10:-1)}}function Gn(i,s){i&1&&(l(0,"div",19),c(1," Node.js Version"),v(2,"br"),l(3,"span",20),c(4),m(5,"translate"),r()(),l(6,"div",21),v(7,"i",22),r()),i&2&&(o(4),k(z(5,1,"status.readiness.node_yes",oe(4,Tt))))}function Jn(i,s){i&1&&(l(0,"div",19),c(1," Node.js Version"),v(2,"br"),l(3,"span",20),c(4),m(5,"translate"),r(),v(6,"br"),l(7,"a",23),c(8),m(9,"translate"),v(10,"i",24),r()(),l(11,"div",21),v(12,"i",25),r()),i&2&&(o(4),k(z(5,2,"status.readiness.node_no",oe(7,Tt))),o(4),y(" ",g(9,5,"plugins.compat.node_link")," "))}function Kn(i,s){i&1&&v(0,"i",26)}function Qn(i,s){i&1&&v(0,"i",27)}function Yn(i,s){if(i&1&&(l(0,"li",16)(1,"div",19),c(2),r(),l(3,"div",21),u(4,Kn,1,0,"i",26),u(5,Qn,1,0,"i",27),r()()),i&2){let e=s.$implicit;o(2),k(e.displayName),o(2),_(e.hb2Ready==="supported"?4:-1),o(),_(e.hb2Ready==="unknown"?5:-1)}}function Xn(i,s){if(i&1&&(l(0,"div",13),v(1,"img",14),r(),u(2,zn,2,0,"p",9),u(3,qn,11,1),l(4,"ul",15)(5,"li",16),u(6,Gn,8,5)(7,Jn,13,8),r(),X(8,Yn,6,3,"li",16,Y),r()),i&2){let e=p();o(2),_(e.allPluginsSupported()?2:-1),o(),_(e.allPluginsSupported()?-1:3),o(3),_(e.nodeReady()?6:7),o(2),Z(e.installedPlugins())}}function Zn(i,s){if(i&1){let e=T();l(0,"button",28),m(1,"translate"),E("click",function(){B(e);let t=p();return w(t.closeModal("Dismiss"))}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function eo(i,s){if(i&1){let e=T();l(0,"button",28),m(1,"translate"),E("click",function(){B(e);let t=p();return w(t.closeModal("Dismiss"))}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function to(i,s){if(i&1){let e=T();l(0,"button",29),E("click",function(){B(e);let t=p();return w(t.closeModal("update"))}),c(1),m(2,"translate"),r()}if(i&2){let e=p();x("disabled",e.loading()),o(),y(" ",g(2,2,"form.button_continue")," ")}}var Si=(()=>{class i{$activeModal=b(q);$api=b(N);$settings=b(W);$toastr=b(U);$translate=b(F);$ws=b(ve);io;modalData=b(pt);isUpdating=this.modalData.isUpdating;skipIfCompatible=this.modalData.skipIfCompatible;loading=C(!0);installedPlugins=C([]);allPluginsSupported=C(!0);nodeReady=C(!1);ngOnInit(){this.initialize()}initialize(){return S(this,null,function*(){this.io=this.$ws.getExistingNamespace("status"),this.io.socket.connected&&(yield this.checkHomebridgeUiVersion()),yield this.loadInstalledPlugins(),this.loading.set(!1)})}checkHomebridgeUiVersion(){return S(this,null,function*(){try{let{nodeVersion:e}=yield He(this.io.request("get-homebridge-server-info"));this.nodeReady.set((0,ki.satisfies)(e,">=20"))}catch(e){console.error(e),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}})}loadInstalledPlugins(){return S(this,null,function*(){this.installedPlugins.set([]),this.loading.set(!0);let e=this.$settings.env.homebridgeVersion.split(".")[0];try{let t=(yield this.$api.get("/plugins")).filter(a=>a.name!=="homebridge-config-ui-x").map(a=>{let d=a.engines?.homebridge?.split("||").map(f=>f.trim())||[],h=e==="2"?"hide":d.some(f=>f.startsWith("^2")||f.startsWith(">=2"))?"supported":"unknown";return h==="unknown"&&this.allPluginsSupported.set(!1),A(D({},a),{hb2Ready:h})}).sort((a,d)=>a.name.localeCompare(d.name));this.installedPlugins.set(t),this.skipIfCompatible&&this.installedPlugins().length===0&&this.$activeModal.close("update")}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}closeModal(e){this.$activeModal.close(e)}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:17,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"w-100","text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],["ngSrc","assets/hb-icon.png","alt","","height","100","width","100",1,"plugin-icon-card"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],[1,"text-start","flex-grow-1"],[1,"grey-text"],[1,"ms-3"],[1,"fas","fa-check-circle","green-text","fa-xl"],["href","https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js","target","_blank","rel","noopener noreferrer",1,"small"],[1,"fa","fa-external-link-alt"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl"],["aria-label","The developer has not specifically marked this plugin as compatible with Homebridge v2, but it may still work.",1,"fas","fa-question-circle","orange-text","fa-xl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(n,t){n&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),c(3),m(4,"translate"),r(),l(5,"button",3),m(6,"translate"),E("click",function(){return t.closeModal("Dismiss")}),r()(),l(7,"div",4),u(8,Rn,2,0,"div",5)(9,Xn,10,3),r(),l(10,"div",6)(11,"div",7),u(12,Zn,4,6,"button",8),r(),l(13,"div",9),u(14,eo,4,6,"button",8),r(),l(15,"div",10),u(16,to,3,4,"button",11),r()()()),n&2&&(o(3),k(z(4,6,"status.readiness.title",oe(11,Tt))),o(2),I("aria-label",g(6,9,"form.button_close")),o(3),_(t.loading()?8:9),o(4),_(t.isUpdating?12:-1),o(2),_(t.isUpdating?-1:14),o(2),_(t.isUpdating?16:-1))},dependencies:[zt,j],encapsulation:2})}return i})();var io=(i,s,e,n,t)=>({iconStar:i,iconThumbsUp:s,iconCoffee:e,iconHeart:n,link:t}),Ii=(i,s,e,n)=>({"fa-arrow-alt-circle-down":i,"fa-code-compare":s,"fa-arrow-alt-circle-up":e,"fa-trash":n}),no=()=>["homebridge","homebridge-config-ui-x"],oo=i=>({pluginName:i});function ao(i,s){i&1&&(l(0,"p",13),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"plugins.settings.restart_required")))}function ro(i,s){i&1&&(l(0,"p",13),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"restart.child_bridges")))}function lo(i,s){if(i&1&&(v(0,"p",12),m(1,"translate"),u(2,ao,3,3,"p",13),u(3,ro,3,3,"p",13)),i&2){let e=p(3);x("innerHTML",z(1,3,e.supportMessageKey(),Xe(6,io,e.iconStar,e.iconThumbsUp,e.iconCoffee,e.iconHeart,e.donationLink())),ce),o(2),_(e.childBridges().length===0?2:-1),o(),_(e.childBridges().length>0?3:-1)}}function so(i,s){if(i&1&&(l(0,"div",9),v(1,"i",10),r(),l(2,"h5",11),c(3),r(),u(4,lo,4,12)),i&2){let e=p(2);o(3),Ye("",e.pastTenseVerb(),": ",e.pluginDisplayName," (",e.targetVersionPretty(),")"),o(),_(e.isDisabled?-1:4)}}function co(i,s){if(i&1&&(l(0,"div",6),u(1,so,5,4),r()),i&2){let e=p();o(),_(e.justUpdatedPlugin()?1:-1)}}function mo(i,s){if(i&1&&(l(0,"div",7)(1,"div",9),v(2,"i",14),r(),l(3,"ul",15)(4,"li"),c(5),m(6,"translate"),r(),l(7,"li"),c(8),m(9,"translate"),r()(),l(10,"pre",16),c(11),r()()),i&2){let e=p();o(2),J(Te(10,Ii,e.action==="Install",e.action==="Update"&&e.installedVersion,e.action==="Update"&&!e.installedVersion,e.action==="Uninstall")),o(3),k(g(6,6,"plugins.manage.online_updates")),o(3),k(g(9,8,"plugins.manage.manual_update_command")),o(3),_e(`hb-service stop
11
11
  npm install -g `,e.pluginName,"@",e.targetVersion,`
12
12
  hb-service start`)}}function po(i,s){if(i&1&&(l(0,"span"),c(1),r()),i&2){let e=p(3);o(),y("v",e.installedVersion," \u2192 ")}}function go(i,s){if(i&1&&(l(0,"h5",18),u(1,po,2,1,"span"),c(2),r()),i&2){let e=p(2);o(),_(e.installedVersion?1:-1),o(),y(" ",e.targetVersionPretty()," ")}}function uo(i,s){i&1&&(l(0,"div",26),v(1,"i",27),r())}function _o(i,s){if(i&1&&v(0,"markdown",28),i&2){let e=p(4);x("data",e.versionNotes())}}function fo(i,s){i&1&&(l(0,"div",29),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"plugins.manage.notes_none")))}function ho(i,s){if(i&1&&(l(0,"div",29),c(1),m(2,"translate"),v(3,"br"),c(4),m(5,"translate"),v(6,"br"),c(7),m(8,"translate"),v(9,"br"),r()),i&2){let e=p(6);o(),y(" ",z(2,3,"plugins.manage.notes_beta_1",de(10,oo,e.pluginDisplayName))),o(3),y(" ",g(5,6,"plugins.manage.notes_beta_2")),o(3),y(" ",g(8,8,"plugins.manage.notes_beta_3"))}}function bo(i,s){i&1&&(l(0,"div",29),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"plugins.manage.notes_latest")))}function Co(i,s){if(i&1&&u(0,ho,10,12,"div",29)(1,bo,3,3,"div",29),i&2){let e=p(5);_(e.targetVersion.includes("beta")||e.targetVersion.includes("alpha")||e.targetVersion.includes("next")?0:1)}}function vo(i,s){if(i&1&&u(0,fo,3,3,"div",29)(1,Co,2,1),i&2){let e=p(4);_(e.versionNotesShow()?0:1)}}function xo(i,s){if(i&1&&u(0,_o,1,1,"markdown",28)(1,vo,2,1),i&2){let e=p(3);_(e.versionNotes()?0:1)}}function yo(i,s){if(i&1&&(l(0,"div",25),u(1,uo,2,0,"div",26)(2,xo,2,1),r()),i&2){let e=p(2);o(),_(e.action==="Update"&&!e.versionNotesLoaded()?1:2)}}function Bo(i,s){i&1&&(l(0,"div",26),v(1,"i",27),r())}function wo(i,s){if(i&1&&v(0,"markdown",28),i&2){let e=p(4);x("data",e.fullChangelog())}}function ko(i,s){i&1&&(v(0,"div",31),m(1,"translate")),i&2&&x("innerHTML",g(1,1,"plugins.manage.changelog_none"),ce)}function So(i,s){if(i&1&&u(0,wo,1,1,"markdown",28)(1,ko,2,3,"div",31),i&2){let e=p(3);_(e.fullChangelog()?0:1)}}function Mo(i,s){if(i&1&&(l(0,"div",30),u(1,Bo,2,0,"div",26)(2,So,2,1),r()),i&2){let e=p(2);o(),_(e.action==="Update"&&!e.fullChangelogLoaded()?1:2)}}function Eo(i,s){i&1&&(l(0,"span",34),v(1,"i",37),r())}function To(i,s){if(i&1){let e=T();l(0,"a",38),E("click",function(){B(e);let t=p(3);return w(t.downloadBackupFile())}),v(1,"i",39),r()}}function Vo(i,s){if(i&1&&(l(0,"div",24)(1,"p",32)(2,"span",33),c(3),m(4,"translate"),r(),u(5,Eo,2,0,"span",34)(6,To,2,0,"a",35),r(),l(7,"p",36),c(8),m(9,"translate"),r()()),i&2){let e=p(2);o(3),k(g(4,3,"plugins.manage.backup")),o(2),_(e.downloadingBackup()?5:6),o(3),k(g(9,5,"plugins.manage.hb_restart"))}}function Po(i,s){if(i&1){let e=T();l(0,"div",6)(1,"div",9),v(2,"i",17),r(),u(3,go,3,2,"h5",18),l(4,"ul",19,0),E("activeIdChange",function(t){B(e);let a=p();return w(a.releaseNotesTab.set(t))}),l(6,"li",20)(7,"button",21),c(8),m(9,"translate"),r(),kt(10,yo,3,1,"ng-template",22),r(),l(11,"li",20)(12,"button",21),c(13),m(14,"translate"),r(),kt(15,Mo,3,1,"ng-template",22),r()(),v(16,"div",23),u(17,Vo,10,7,"div",24),r()}if(i&2){let e=Qe(5),n=p();o(2),J(Te(14,Ii,n.action==="Install"&&!n.installedVersion,n.action==="Install"&&n.installedVersion,n.action==="Update",n.action==="Uninstall")),o(),_(n.latestVersion?3:-1),o(),x("activeId",n.releaseNotesTab()),o(2),x("ngbNavItem",1),o(2),k(g(9,10,"plugins.manage.notes")),o(3),x("ngbNavItem",2),o(2),k(g(14,12,"plugins.manage.changelog")),o(3),x("ngbNavOutlet",e),o(),_(oe(19,no).includes(n.pluginName)?17:-1)}}function Io(i,s){if(i&1){let e=T();l(0,"button",46),m(1,"translate"),E("click",function(){B(e);let t=p(2);return w(t.dismissModal())}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function $o(i,s){if(i&1){let e=T();l(0,"button",46),m(1,"translate"),E("click",function(){B(e);let t=p(2);return w(t.dismissModal())}),c(2),m(3,"translate"),r()}i&2&&(I("aria-label",g(1,2,"form.button_close")),o(2),y(" ",g(3,4,"form.button_close")," "))}function Do(i,s){if(i&1){let e=T();l(0,"button",47),E("click",function(){B(e);let t=p(2);return w(t.update())}),c(1),m(2,"translate"),r()}i&2&&(o(),k(g(2,1,"form.button_continue")))}function No(i,s){if(i&1){let e=T();l(0,"button",47),E("click",function(){B(e);let t=p(2);return w(t.childBridges().length>0?t.onRestartChildBridgeClick():t.onRestartHomebridgeClick())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"menu.tooltip_restart")," "))}function Ao(i,s){if(i&1){let e=T();l(0,"button",48),E("click",function(){B(e);let t=p(2);return w(t.downloadLogFile())}),c(1),m(2,"translate"),r()}i&2&&(o(),k(g(2,1,"form.button_download")))}function Lo(i,s){if(i&1&&(l(0,"div",8)(1,"div",40),u(2,Io,4,6,"button",41),r(),l(3,"div",42),u(4,$o,4,6,"button",41),r(),l(5,"div",43),u(6,Do,3,3,"button",44),u(7,No,3,3,"button",44),u(8,Ao,3,3,"button",45),r()()),i&2){let e=p();o(2),_(!e.justUpdatedPlugin()&&e.onlineUpdateOk()||e.justUpdatedPlugin()&&(!e.isDisabled||e.actionFailed())?2:-1),o(2),_(e.justUpdatedPlugin()&&e.isDisabled&&!e.actionFailed()||!e.onlineUpdateOk()?4:-1),o(2),_(e.onlineUpdateOk()&&e.releaseNotesShow()?6:-1),o(),_(e.justUpdatedPlugin()&&!e.isDisabled?7:-1),o(),_(e.actionFailed()?8:-1)}}var Ae=(()=>{class i{$activeModal=b(q);$api=b(N);$backup=b(bi);$modal=b(re);$router=b(pe);$settings=b(W);$toastr=b(U);$translate=b(F);$ws=b(ve);injector=b(se);modalData=b(xe);initialIsConfigured=this.modalData.isConfigured??!1;pluginName=this.modalData.pluginName;pluginDisplayName=this.modalData.pluginDisplayName??"";targetVersion=this.modalData.targetVersion??"";latestVersion=this.modalData.latestVersion??"";installedVersion=this.modalData.installedVersion??"";isDisabled=this.modalData.isDisabled??!1;action=this.modalData.action;onRefreshPluginList=this.modalData.onRefreshPluginList??(()=>{});verifiedPlugin=this.modalData.verifiedPlugin??!1;verifiedPlusPlugin=this.modalData.verifiedPlusPlugin??!1;funding=this.modalData.funding??null;targetVersionPretty=C("");actionComplete=C(!1);actionFailed=C(!1);justUpdatedPlugin=C(!1);updateToBeta=C(!1);childBridges=C([]);pastTenseVerb=C("");onlineUpdateOk=C(!1);versionNotes=C("");versionNotesLoaded=C(!1);versionNotesShow=C(!1);fullChangelog=C("");fullChangelogLoaded=C(!1);releaseNotesShow=C(!1);isConfigured=C(this.initialIsConfigured);supportMessageKey=C("");donationLink=C("");downloadingBackup=C(!1);presentTenseVerb=C("");releaseNotesTab=C(1);iconStar='<i class="fas fa-star orange-text"></i>';iconThumbsUp='<i class="fas fa-thumbs-up orange-text"></i>';iconCoffee='<i class="fas fa-coffee pink-text"></i>';iconHeart='<i class="fas fa-heart pink-text"></i>';io;toastSuccess;term=new Vi.Terminal;termTarget;fitAddon=new Ei.FitAddon;webLinksAddon=new Ti.WebLinksAddon;errorLog="";constructor(){this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}ngOnInit(){let e=this.targetVersion,n=this.latestVersion;switch(this.targetVersionPretty.set(e==="latest"?`v${n}`:/^\d/.test(e)?`v${e}`:e),this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-log-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",t=>{this.term.write(t);let a=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();a&&(this.errorLog+=`${a}\r
13
13
  `)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk.set(!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32")),this.action){case"Install":this.install(),this.presentTenseVerb.set(this.$translate.instant("plugins.manage.install")),this.pastTenseVerb.set(this.$translate.instant("plugins.manage.installed"));break;case"Uninstall":this.uninstall(),this.presentTenseVerb.set(this.$translate.instant("plugins.manage.uninstall")),this.pastTenseVerb.set(this.$translate.instant("plugins.manage.uninstalled"));break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta.set(!1);break;case"alpha":case"beta":case"test":this.updateToBeta.set(!0);break}this.presentTenseVerb.set(this.$translate.instant("plugins.manage.update")),this.pastTenseVerb.set(this.$translate.instant("plugins.manage.updated")),this.getVersionNotes();break}this.determineSupportMessage()}determineSupportMessage(){if(this.supportMessageKey.set("plugins.manage.support_github"),this.donationLink.set(""),!["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&(this.verifiedPlugin||this.verifiedPlusPlugin)&&this.funding&&Math.random()<.5){let e=null;if(typeof this.funding=="string")e=this.funding;else if(Array.isArray(this.funding)){let n=this.funding.map(t=>typeof t=="string"?t:t?.url).filter(Boolean);e=n.length>0?n[Math.floor(Math.random()*n.length)]:null}else this.funding?.url&&(e=this.funding.url);if(e){let n=/ko-?fi/i.test(e);this.supportMessageKey.set(n?"plugins.manage.support_kofi":"plugins.manage.support_donate"),this.donationLink.set(`<a href="${e}" target="_blank" rel="noopener noreferrer"><i class="fas fa-external-link-alt primary-text"></i></a>`)}}}ngOnDestroy(){this.io.end()}update(){if(this.releaseNotesShow.set(!1),this.versionNotes.set(""),this.fullChangelog.set(""),!!this.onlineUpdateOk()){if(this.pluginName==="homebridge"){this.upgradeHomebridge();return}this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>S(this,null,function*(){if(this.pluginName==="homebridge-config-ui-x")try{this.$settings.webroot&&this.$settings.webroot!=="/"&&(yield this.$api.put("/server/webroot",{webroot:this.$settings.webroot})),yield this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}),window.location.href="restart"}catch(e){console.error("Failed to update webroot or set restart flag:",e),window.location.href="restart"}else{try{yield this.getChildBridges()}catch(n){console.error(n)}let e=this.onRefreshPluginList;e&&e(),!this.isConfigured()&&this.childBridges().length===0?(this.$toastr.success(`${this.pastTenseVerb()} ${this.pluginName}`,this.toastSuccess),this.$activeModal.close(),this.$router.navigate(["/plugins"])):(this.actionComplete.set(!0),this.justUpdatedPlugin.set(!0),this.$router.navigate(["/plugins"]))}}),error:e=>{this.actionFailed.set(!0),console.error(e),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}})}}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return S(this,null,function*(){try{for(let n of this.childBridges())yield this.$api.put(`/server/restart/${n.username}`,{});let e=R([{provide:rt,useValue:{plugin:{name:this.pluginName,displayName:this.pluginDisplayName},childBridges:this.childBridges()}}],this.injector);this.$modal.open(wi,{size:"xl",backdrop:"static",injector:e})}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let e=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,Pi.saveAs)(e,`${this.pluginName}-error.log`)}downloadBackupFile(){return S(this,null,function*(){this.downloadingBackup.set(!0);try{yield this.$backup.downloadBackup()}catch(e){console.error(e);let n=e instanceof Error?e.message:this.$translate.instant("toast.title_error");this.$toastr.error(n,this.$translate.instant("toast.title_error"))}finally{this.downloadingBackup.set(!1)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}install(){if(this.onlineUpdateOk()){if(this.pluginName==="homebridge"){this.upgradeHomebridge();return}this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>S(this,null,function*(){this.$toastr.success(`${this.pastTenseVerb()} ${this.pluginName}`,this.toastSuccess);let e=this.onRefreshPluginList;e&&e();try{let t=(yield this.$api.get("/plugins")).find(a=>a.name===this.pluginName);this.$activeModal.close({action:"just-installed",plugin:t})}catch(n){console.error("Failed to fetch updated plugin data:",n),this.$activeModal.close({action:"just-installed",pluginName:this.pluginName})}}),error:e=>{this.actionFailed.set(!0),console.error(e),this.$router.navigate(["/plugins"]),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}})}}uninstall(){this.io.request("uninstall",{name:this.pluginName,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{let e=this.onRefreshPluginList;e&&e(),this.$activeModal.close(),this.$router.navigate(["/plugins"]),this.$modal.open(ue,{size:"lg",backdrop:"static"})},error:e=>{this.actionFailed.set(!0),console.error(e),this.$toastr.error(e.message,this.$translate.instant("toast.title_error"))}})}upgradeHomebridge(){return S(this,null,function*(){let e="update";if(Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])){let n=R([{provide:pt,useValue:{isUpdating:!0,skipIfCompatible:!1}}],this.injector);e=yield this.$modal.open(Si,{size:"lg",backdrop:"static",injector:n}).result}e==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>S(this,null,function*(){this.$activeModal.close();try{yield this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}),this.$router.navigate(["/restart"])}catch(n){console.error(n),this.$router.navigate(["/restart"])}}),error:n=>{this.actionFailed.set(!0),console.error(n);let t=n instanceof Error?n.message:this.$translate.instant("toast.title_error");this.$toastr.error(t,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getVersionNotes(){return S(this,null,function*(){this.releaseNotesShow.set(!0);try{let e=yield this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`);this.fullChangelog.set(e.changelog),e.latestVersion&&this.targetVersion==="latest"&&this.targetVersionPretty.set(e.latestVersion);let n=this.targetVersion,t=this.latestVersion;!(["beta","alpha","test","next"].includes(n)||n.includes("-"))&&(n==="latest"||n===t)?(this.versionNotesShow.set(!0),e.notes&&this.versionNotes.set(e.notes)):(this.versionNotesShow.set(!1),this.versionNotesLoaded.set(!0))}catch(e){console.error("Error loading release notes:",e)}this.fullChangelogLoaded.set(!0),this.versionNotesLoaded.set(!0)})}getChildBridges(){return S(this,null,function*(){let n=(yield this.$api.get("/status/homebridge/child-bridges")).filter(t=>this.pluginName===t.plugin);this.childBridges.set(n)})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:11,vars:9,consts:[["nav","ngbNav"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],["id","plugin-log-output",1,"modal-body",3,"hidden"],[1,"modal-body","plugin-modal-body"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"mb-3","text-center"],[1,"far","fa-check-circle","primary-text",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"mb-3","text-center","grey-text",3,"innerHTML"],[1,"text-center","mb-0"],[1,"fas","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"p-2","mb-0"],[1,"far","primary-text",2,"font-size","75px"],[1,"mb-4","text-center"],["ngbNav","",1,"nav-tabs","px-0",3,"activeIdChange","activeId"],[1,"w-50","m-0",3,"ngbNavItem"],["ngbNavLink","",1,"w-100","release-tab"],["ngbNavContent",""],[1,"mt-2",3,"ngbNavOutlet"],[1,"mt-4","mb-0"],[1,"alert","release-notes","p-3","pb-1","my-0"],[1,"w-100","text-center","primary-text","mt-3","mb-4"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],[1,"plugin-md",3,"data"],[1,"w-100","text-center","grey-text","mt-3","mb-4"],[1,"alert","release-notes","p-3","pb-1","my-0",2,"border-top-left-radius","0","border-top-right-radius","0"],[1,"w-100","text-center","grey-text","mt-3","mb-4",3,"innerHTML"],[1,"w-100","text-center","mb-1","small"],[1,"grey-text"],[1,"mx-1"],["href","javascript:void(0)"],[1,"w-100","text-center","mb-0","small","grey-text"],[1,"fa","fa-circle-notch","fa-spin"],["href","javascript:void(0)",3,"click"],[1,"fa","fa-download","mx-1"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-primary"],[1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-primary",3,"click"],[1,"btn","btn-primary",3,"click"]],template:function(n,t){n&1&&(l(0,"div",1)(1,"div",2)(2,"h5",3),c(3),r(),l(4,"button",4),m(5,"translate"),E("click",function(){return t.dismissModal()}),r()(),v(6,"div",5),u(7,co,2,1,"div",6),u(8,mo,12,15,"div",7),u(9,Po,18,20,"div",6),u(10,Lo,9,5,"div",8),r()),n&2&&(o(3),k(t.pluginDisplayName),o(),I("aria-label",g(5,7,"form.button_close")),o(2),x("hidden",!t.onlineUpdateOk()||t.actionComplete()||t.releaseNotesShow()),o(),_(t.actionComplete()?7:-1),o(),_(t.onlineUpdateOk()?-1:8),o(),_(t.releaseNotesShow()&&!t.actionComplete()&&t.onlineUpdateOk()?9:-1),o(),_(!t.onlineUpdateOk()||t.actionComplete()||t.releaseNotesShow()||t.actionFailed()?10:-1))},dependencies:[Ie,Pe,$e,hi,_i,ui,gi,fi,j],styles:[".plugin-modal-body[_ngcontent-%COMP%] .release-notes[_ngcontent-%COMP%]{box-shadow:none;max-height:39vh;overflow:auto;border:0;border-top-left-radius:0;border-top-right-radius:0}.plugin-modal-body[_ngcontent-%COMP%] .release-tab[_ngcontent-%COMP%]{font-size:1rem;color:#d3d3d3}.plugin-modal-body[_ngcontent-%COMP%] .tab-content[_ngcontent-%COMP%]{border-radius:0 0 20px 20px} .nav-tabs{--bs-nav-tabs-border-width: 0} .plugin-md{text-align:left;font-size:.85rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.3rem;font-weight:300} .plugin-md h2{font-size:1.2rem;font-weight:300} .plugin-md h3{font-size:1.1rem;font-weight:300} .plugin-md h4{font-size:1rem;font-weight:300} .plugin-md h5{font-size:.9rem;font-weight:300} .plugin-md pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}"]})}return i})();var $i=Q(ot(),1);var Fo=()=>["homebridge","homebridge-config-ui-x"];function Uo(i,s){i&1&&(l(0,"div",5),v(1,"i",12),r())}function jo(i,s){if(i&1&&(v(0,"i",20),l(1,"h6",21),c(2),m(3,"translate"),r(),l(4,"p",21),c(5),m(6,"translate"),l(7,"span",22),c(8),r()()),i&2){let e=p(2);o(2),k(g(3,3,"plugins.manage.select_version")),o(3),y(" ",g(6,5,"plugins.status_installed"),": "),o(3),y("v",e.plugin==null?null:e.plugin.installedVersion)}}function Ho(i,s){i&1&&(v(0,"i",23),l(1,"h6",21),c(2),m(3,"translate"),r()),i&2&&(o(2),k(g(3,1,"plugins.manage.select_version")))}function Oo(i,s){i&1&&v(0,"i",26)}function Ro(i,s){i&1&&v(0,"i",27)}function zo(i,s){if(i&1){let e=T();l(0,"li",14)(1,"span",8),c(2),v(3,"br"),l(4,"small",24),c(5),r()(),l(6,"button",25),E("click",function(){let t=B(e).$implicit,a=p(2);return w(a.doInstall(t.version))}),u(7,Oo,1,0,"i",26)(8,Ro,1,0,"i",27),r()()}if(i&2){let e=s.$implicit,n=p(2);o(2),y(" ",e.tag," "),o(3),y("v",e.version),o(2),_((n.plugin==null?null:n.plugin.installedVersion)===e.version?7:8)}}function Wo(i,s){i&1&&c(0," \u2713 ")}function qo(i,s){if(i&1&&(l(0,"option",17),c(1),u(2,Wo,1,0),r()),i&2){let e=s.$implicit,n=p(2);x("value",e.version)("selected",n.versionSelect==e.version),o(),y(" v",e.version," "),o(),_(e.version==(n.plugin==null?null:n.plugin.installedVersion)?2:-1)}}function Go(i,s){i&1&&v(0,"i",26)}function Jo(i,s){i&1&&v(0,"i",27)}function Ko(i,s){if(i&1){let e=T();l(0,"button",25),E("click",function(){B(e);let t=p(2);return w(t.doInstall(t.versionSelect))}),u(1,Go,1,0,"i",26)(2,Jo,1,0,"i",27),r()}if(i&2){let e=p(2);o(),_((e.plugin==null?null:e.plugin.installedVersion)===e.versionSelect?1:2)}}function Qo(i,s){if(i&1&&(l(0,"ul",19)(1,"li",28)(2,"div",8),c(3),m(4,"translate"),v(5,"br"),l(6,"span",29),c(7),m(8,"translate"),r()(),l(9,"div",30),v(10,"input",31),m(11,"translate"),v(12,"label",32),r()()()),i&2){let e=p(2);o(3),y(" ",g(4,4,"plugins.manage.hide_updates")),o(4),k(g(8,6,"plugins.manage.hide_updates_desc")),o(3),x("formControl",e.hideUpdatesFormControl),I("aria-label",g(11,8,"plugins.manage.hide_updates"))}}function Yo(i,s){if(i&1){let e=T();l(0,"div",6),u(1,jo,9,7)(2,Ho,4,3),l(3,"ul",13),X(4,zo,9,3,"li",14,Y),l(6,"li",14)(7,"div",15),c(8),m(9,"translate"),v(10,"br"),l(11,"select",16),ne("ngModelChange",function(t){B(e);let a=p();return ie(a.versionSelect,t)||(a.versionSelect=t),w(t)}),X(12,qo,3,4,"option",17,Y),r()(),u(14,Ko,3,1,"button",18),r()(),u(15,Qo,13,10,"ul",19),r()}if(i&2){let e=p();o(),_(e.plugin!=null&&e.plugin.installedVersion?1:2),o(3),Z(e.versionsWithTags()),o(4),y(" ",g(9,5,"plugins.manage.all_versions")," "),o(3),te("ngModel",e.versionSelect),o(),Z(e.versions()),o(2),_(e.versionSelect?14:-1),o(),_(e.plugin!=null&&e.plugin.installedVersion&&!oe(7,Fo).includes(e.plugin==null?null:e.plugin.name)?15:-1)}}var Di=(()=>{class i{$activeModal=b(q);$api=b(N);$settings=b(W);$toastr=b(U);$translate=b(F);modalData=b(ct);plugin=this.modalData.plugin;onRefreshPluginList=this.modalData.onRefreshPluginList;_versionSelect=C("");loading=C(!0);versions=C([]);versionsWithTags=C([]);get versionSelect(){return this._versionSelect()}set versionSelect(e){this._versionSelect.set(e)}isUpdateHidden=C(!1);hideUpdatesFormControl=new Gt(!1);ngOnInit(){let e=this.plugin;e&&(this.versionSelect=e.installedVersion||e.latestVersion,this.lookupVersions(),this.isUpdateHidden.set(this.$settings.env.plugins.hideUpdatesFor&&this.$settings.env.plugins.hideUpdatesFor.includes(e.name)),this.hideUpdatesFormControl.patchValue(this.isUpdateHidden()),this.hideUpdatesFormControl.valueChanges.pipe(Me(750)).subscribe(n=>{n!==null&&this.toggleHideUpdates(n)}))}doInstall(e){let n=this.plugin;if(!n)return;let t=this.versions().find(a=>a.version===e);this.$activeModal.close({name:n.name,version:e,engines:t?.engines,action:n.installedVersion?"alternate":"install"})}toggleHideUpdates(e){return S(this,null,function*(){let n=this.plugin;if(!n)return;let t=this.$settings.env.plugins?.hideUpdatesFor||[];e?t.includes(n.name)||(t=[...t,n.name].sort((a,d)=>a.localeCompare(d))):t=t.filter(a=>a!==n.name);try{yield this.$api.put("/config-editor/ui/plugins/hide-updates-for",{body:t}),this.$settings.setEnvItem("plugins.hideUpdatesFor",t);let a=this.onRefreshPluginList;a&&a()}catch(a){this.hideUpdatesFormControl.patchValue(this.isUpdateHidden(),{emitEvent:!1}),console.error(a);let d=a instanceof Error?a.message:this.$translate.instant("toast.title_error");this.$toastr.error(d,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}lookupVersions(){return S(this,null,function*(){let e=this.plugin;if(e)try{let n=yield this.$api.get(`/plugins/lookup/${encodeURIComponent(e.name)}/versions`),t=[],a=[];for(let[h,f]of Object.entries(n.versions))t.push({version:h,engines:f.engines||null}),Object.keys(n.tags).filter(M=>n.tags[M]===h).forEach(M=>{a.push({version:h,tag:M})});let d=this.plugin;d?.installedVersion&&!t.find(h=>h.version===d.installedVersion)&&t.push({version:d.installedVersion,engines:d.engines||null}),t.sort((h,f)=>(0,$i.rcompare)(h.version,f.version)),a.sort((h,f)=>{let M=["latest","next","beta","alpha"],$=M.includes(h.tag)?M.indexOf(h.tag):999,ge=M.includes(f.tag)?M.indexOf(f.tag):999;return $-ge}),this.versions.set(t),this.versionsWithTags.set(a),!t.find(h=>h.version===this.versionSelect)&&n.tags.latest&&(this.versionSelect=n.tags.latest),this.loading.set(!1)}catch(n){console.error(n);let t=n instanceof Error?n.error?.message||n.message:this.$translate.instant("toast.title_error");this.$toastr.error(t,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:17,vars:11,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","d-flex","flex-row","flex-grow-1","w-100"],[1,"w-100","text-center","primary-text","my-5","w-100"],[1,"w-100","text-center"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"text-start",2,"min-width","50%"],[1,"custom-select","w-100","font-monospace",2,"font-size","0.875rem",3,"ngModelChange","ngModel"],[3,"value","selected"],[1,"btn","btn-primary","m-0","ms-3","py-1"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"fas","fa-code-compare","primary-text","mb-3",2,"font-size","75px"],[1,"mb-3"],[1,"font-monospace"],[1,"far","fa-arrow-alt-circle-down","primary-text","mb-3",2,"font-size","75px"],[1,"grey-text","font-monospace"],[1,"btn","btn-primary","m-0","ms-3","py-1",3,"click"],[1,"fas","fa-rotate-right"],[1,"fas","fa-arrow-alt-circle-down"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"grey-text","small"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","hidePluginUpdates",1,"rendux-input",3,"formControl"],["for","hidePluginUpdates",1,"rendux-label","ms-3"]],template:function(n,t){n&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),c(3),r(),l(4,"button",3),m(5,"translate"),E("click",function(){return t.dismissModal()}),r()(),l(6,"div",4),u(7,Uo,2,0,"div",5)(8,Yo,16,8,"div",6),r(),l(9,"div",7),v(10,"div",8),l(11,"div",9)(12,"button",10),m(13,"translate"),E("click",function(){return t.dismissModal()}),c(14),m(15,"translate"),r()(),v(16,"div",11),r()()),n&2&&(o(3),k((t.plugin==null?null:t.plugin.displayName)||(t.plugin==null?null:t.plugin.name)),o(),I("aria-label",g(5,5,"form.button_close")),o(3),_(t.loading()?7:8),o(5),I("aria-label",g(13,7,"form.button_close")),o(2),y(" ",g(15,9,"form.button_close")," "))},dependencies:[Ce,it,nt,Ve,tt,he,be,Xt,Kt,j],encapsulation:2})}return i})();var Ni=Q(En(),1);var xt=(()=>{class i{transform(e){return e.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}static \u0275fac=function(n){return new(n||i)};static \u0275pipe=jt({name:"interpolateMd",type:i,pure:!0})}return i})();var Xo=(i,s,e,n,t)=>({"fa-circle-check":i,"green-text":s,"fa-circle-exclamation":e,"red-text":n,"orange-text":t}),Zo=(i,s,e)=>({"fa-circle-check green-text":i,"fa-circle-exclamation red-text":s,"fa-circle-exclamation orange-text":e});function ea(i,s){i&1&&(l(0,"div",5),v(1,"i",14),r())}function ta(i,s){i&1&&(l(0,"div",6),c(1),m(2,"translate"),m(3,"translate"),r()),i&2&&(o(),_e(" ",g(2,2,"plugins.settings.message_manual_config_required")," ",g(3,4,"plugins.settings.message_consult_documentation")," "))}function ia(i,s){if(i&1&&(v(0,"markdown",7),m(1,"interpolateMd")),i&2){let e=p();x("data",g(1,1,e.schema==null?null:e.schema.headerDisplay))}}function na(i,s){if(i&1){let e=T();l(0,"button",28),m(1,"translate"),E("click",function(){B(e);let t=p(2).$index,a=p(2);return w(a.removeBlock(t))}),v(2,"i",29),r()}i&2&&x("ngbTooltip",g(1,2,"form.button_delete"))("openDelay",150)}function oa(i,s){if(i&1){let e=T();u(0,na,3,4,"button",25),l(1,"button",26),m(2,"translate"),E("click",function(){B(e);let t=p().$index,a=p(2);return w(a.editBlock(t))}),v(3,"i",27),r()}if(i&2){let e=p().$index,n=p(2);_(n.show()==="configBlock."+e?0:-1),o(),x("ngbTooltip",g(2,3,"form.button_edit"))("openDelay",150)}}function aa(i,s){if(i&1&&(v(0,"i",30),m(1,"translate")),i&2){let e=p().$index,n=p(2);J(Xe(6,Xo,n.formBlocksValid()[e],n.formBlocksValid()[e],!n.formBlocksValid()[e],n.strictValidation()&&!n.formBlocksValid()[e],!n.strictValidation()&&!n.formBlocksValid()[e])),x("ngbTooltip",g(1,4,n.formBlocksValid()[e]?"form.label_valid":n.strictValidation()?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150)}}function ra(i,s){if(i&1){let e=T();l(0,"div",16)(1,"div",18)(2,"div",19)(3,"h5",20),c(4),r(),l(5,"div"),u(6,oa,4,5),u(7,aa,2,12,"i",21),r()()(),l(8,"div",22)(9,"div",23)(10,"ngx-monaco-editor",24),E("ngModelChange",function(t){B(e);let a=p(2);return w(a.currentBlock.set(t))})("onInit",function(t){B(e);let a=p(2);return w(a.onEditorInit(t))}),r()()()()}if(i&2){let e=s.$implicit,n=s.$index,t=p(2);x("ngbAccordionItem","configBlock."+n)("collapsed",t.show()!=="configBlock."+n)("id","configBlock."+n),o(4),k(e.name||t.pluginAlias()),o(2),_(!(t.schema!=null&&t.schema.singular)||t.pluginConfig().length>1?6:-1),o(),_(t.schema!=null&&t.schema.singular?-1:7),o(3),x("options",t.editorOptions)("ngModel",t.currentBlock())}}function la(i,s){if(i&1&&(l(0,"div",17),v(1,"markdown",7),m(2,"interpolateMd"),r()),i&2){let e=p(2);o(),x("data",g(2,1,e.schema==null?null:e.schema.footerDisplay))}}function sa(i,s){if(i&1&&(l(0,"div",15),X(1,ra,11,8,"div",16,Y),r(),u(3,la,3,3,"div",17)),i&2){let e=p();x("closeOthers",!0),o(),Z(e.pluginConfig()),o(2),_(e.schema!=null&&e.schema.footerDisplay?3:-1)}}function da(i,s){if(i&1&&(v(0,"i",35),m(1,"translate")),i&2){let e=p(2);J(le(6,Zo,e.formIsValid(),e.strictValidation()&&!e.formIsValid(),!e.strictValidation()&&!e.formIsValid())),x("ngbTooltip",g(1,4,e.formIsValid()?"form.label_valid":e.strictValidation()?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150)}}function ca(i,s){if(i&1){let e=T();l(0,"button",36),E("click",function(){B(e);let t=p(2);return w(t.addBlock())}),v(1,"i",37),r()}}function ma(i,s){i&1&&(c(0),m(1,"translate")),i&2&&y(" ",g(1,1,"form.button_save")," ")}function pa(i,s){i&1&&v(0,"i",34)}function ga(i,s){if(i&1){let e=T();u(0,da,2,10,"i",31),u(1,ca,2,0,"button",32),l(2,"button",33),E("click",function(){B(e);let t=p();return w(t.save())}),u(3,ma,2,3),u(4,pa,1,0,"i",34),r()}if(i&2){let e=p();_(e.schema!=null&&e.schema.singular?0:-1),o(),_(e.schema!=null&&e.schema.singular?-1:1),o(),x("disabled",e.saveInProgress()||!e.formIsValid()&&e.strictValidation()),o(),_(e.saveInProgress()?-1:3),o(),_(e.saveInProgress()?4:-1)}}function ua(i,s){if(i&1){let e=T();l(0,"button",38),E("click",function(){B(e);let t=p();return w(t.openFullConfigEditor())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"plugins.settings.label_open_config_editor")," "))}var Pt=(()=>{class i{$activeModal=b(q);$api=b(N);$cb=b(Ne);$md=b(ai);$plugin=b(Be);$router=b(pe);$settings=b(W);$toastr=b(U);$translate=b(F);modalData=b(Se);plugin=this.modalData.plugin;schema=this.modalData.schema;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");pluginAlias=C("");pluginType=C(null);loading=C(!0);canConfigure=C(!1);show=C("");pluginConfig=C([]);currentBlock=C(void 0);currentBlockIndex=C(null);saveInProgress=C(!1);isFirstSave=C(!1);monacoEditor;formBlocksValid=C({});formIsValid=C(!0);strictValidation=C(!1);editorOptions;get arrayKey(){return this.pluginType()==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light"},this.strictValidation.set(this.schema?.strictValidation||!1),this.$md.detect.mobile()?(this.loading.set(!1),this.canConfigure.set(!1)):this.loadPluginAlias()}onEditorInit(e){return S(this,null,function*(){window.editor=e,this.monacoEditor=e,this.setupSchemaValidation(),this.monacoEditor.onDidChangeModelContent(()=>setTimeout(()=>this.onValidationChange(),300)),window.monaco.editor.onDidChangeMarkers(t=>{let a=this.monacoEditor.getModel()?.uri;a&&t.some(d=>d.toString()===a.toString())&&this.onValidationChange()}),yield this.monacoEditor.getModel().setValue(this.currentBlock()),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}ngOnDestroy(){try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let n=`http://plugin/${this.schema?.pluginAlias||this.pluginAlias}/config.json`,a=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(d=>d.uri!==n);window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:a})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.update(e=>[...e,{[this.pluginType()]:this.pluginAlias(),name:this.pluginAlias()}]),this.editBlock(this.pluginConfig().length-1)}editBlock(e){if(this.currentBlockIndex()!==null){if(!this.saveCurrentBlock())return;this.formBlocksValid.update(n=>A(D({},n),{[this.currentBlockIndex()]:this.isJsonValid()}))}this.show.set(`configBlock.${e}`),this.currentBlockIndex.set(e),this.currentBlock.set(JSON.stringify(this.pluginConfig()[e],null,4)),e in this.formBlocksValid()||this.formBlocksValid.update(n=>A(D({},n),{[e]:!0})),this.updateOverallValidation(),setTimeout(()=>this.onValidationChange(),150)}removeBlock(e){let n=this.pluginConfig()[e],t=this.pluginConfig().findIndex(a=>a===n);t>-1&&this.pluginConfig.update(a=>{let d=[...a];return d.splice(t,1),d}),this.currentBlockIndex.set(null),this.currentBlock.set(void 0),this.show.set("")}save(){return S(this,null,function*(){if(this.saveInProgress.set(!0),!this.saveCurrentBlock()){this.saveInProgress.set(!1);return}try{let e=this.plugin;if(!e)return;let n=yield this.$api.post(`/config-editor/plugin/${encodeURIComponent(e.name)}`,this.pluginConfig());if(this.$activeModal.close(),this.isFirstSave()&&this.$settings.env.recommendChildBridges&&n[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(e,!0);return}this.$activeModal.close(),yield this.$cb.openCorrectRestartModalForPlugin(e.name)}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1)}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}closeModal(){this.$activeModal.close()}setupSchemaValidation(){let e=this.schema?.schema;e||(e=this.createBasicSchema());let t=`http://plugin/${this.schema?.pluginAlias||this.pluginAlias()}/config.json`,a=Et(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported,isPlatformPlugin:this.pluginType()==="platform"}),h=[...e.required||[]];this.pluginType()==="platform"?(h.includes("platform")||h.push("platform"),e.properties?.platform?e.properties.platform.const=this.pluginAlias():e.properties=A(D({},e.properties),{platform:{type:"string",title:"Platform Name",description:"This is used by Homebridge to identify which plugin this platform belongs to.",const:this.pluginAlias()}})):(h.includes("accessory")||h.push("accessory"),h.includes("name")||h.push("name"),e.properties?.accessory?e.properties.accessory.const=this.pluginAlias():e.properties=A(D({},e.properties),{accessory:{type:"string",title:this.$translate.instant("child_bridge.config.accessory"),description:"This is used by Homebridge to identify which plugin this accessory belongs to.",const:this.pluginAlias()}})),window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:[{uri:t,fileMatch:["*"],schema:A(D({},e),{required:h,properties:A(D({},e.properties),{_bridge:a})})}]})}createBasicSchema(){let e=Et(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported,isPlatformPlugin:this.pluginType()==="platform"});return this.pluginType()==="platform"?{type:"object",required:["platform"],title:this.$translate.instant("plugins.button_settings"),properties:{platform:{type:"string",title:"Platform Name",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the platform."},_bridge:e}}:{type:"object",required:["accessory","name"],title:this.$translate.instant("plugins.button_settings"),properties:{accessory:{type:"string",title:this.$translate.instant("child_bridge.config.accessory"),description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the accessory."},_bridge:e}}}isJsonValid(){if(!this.monacoEditor)return!0;let e=this.monacoEditor.getModel();if(!e)return!0;let n=window.monaco.editor.getModelMarkers({resource:e.uri}),t=window.monaco;return!n.filter(d=>d.severity===t.MarkerSeverity.Error||d.severity===t.MarkerSeverity.Warning).length}onValidationChange(){this.currentBlockIndex()!==null&&this.monacoEditor&&(this.formBlocksValid.update(e=>A(D({},e),{[this.currentBlockIndex()]:this.isJsonValid()})),this.updateOverallValidation())}updateOverallValidation(){this.formIsValid.set(Object.values(this.formBlocksValid()).every(e=>e))}loadPluginAlias(){return S(this,null,function*(){let e=this.plugin;if(e)try{let n=yield this.$api.get(`/plugins/alias/${encodeURIComponent(e.name)}`);n.pluginAlias&&n.pluginType?(this.pluginAlias.set(n.pluginAlias),this.pluginType.set(n.pluginType),this.loadHomebridgeConfig()):this.loading.set(!1)}catch{this.loading.set(!1)}})}loadHomebridgeConfig(){return S(this,null,function*(){let e=this.plugin;if(!e)return;let n=yield this.$api.get(`/config-editor/plugin/${encodeURIComponent(e.name)}`);this.pluginConfig.set(n),this.canConfigure.set(!0),this.loading.set(!1),this.initializeValidationState(),this.pluginConfig().length?this.editBlock(0):(this.isFirstSave.set(!0),this.addBlock())})}saveCurrentBlock(){if(this.currentBlockIndex()!==null&&this.monacoEditor){let e=this.monacoEditor.getModel().getValue().trim(),n;e.charAt(0)==='"'&&e.charAt(e.length-1)==="]"&&(e=`{${e}}`);try{n=Ni.default.parse(e)}catch(d){return console.error(d),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(n)||typeof n!="object"||n===null)return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;let t=n;if(!t[this.pluginType()]&&Array.isArray(t[this.arrayKey])&&t[this.arrayKey].length&&Object.keys(t).length===1&&(t=t[this.arrayKey][0]),this.pluginType()==="accessory"&&(!t.name||typeof t.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),t.name="",this.monacoEditor.getModel().setValue(JSON.stringify(t,null,4)),!1;let a=this.pluginConfig()[this.currentBlockIndex()];Object.keys(a).forEach(d=>delete a[d]),Object.assign(a,t),a[this.pluginType()]=this.pluginAlias()}return!0}initializeValidationState(){let e={};for(let n=0;n<this.pluginConfig().length;n+=1)e[n]=!0;this.formBlocksValid.set(e),this.updateOverallValidation()}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:20,vars:16,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","pb-0"],[1,"text-center","primary-text","my-5","w-100"],[1,"alert","alert-warning","mb-0"],[1,"plugin-md",3,"data"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end","d-flex","align-items-center","justify-content-end"],[1,"btn","btn-primary"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],["ngbAccordion","",3,"closeOthers"],[1,"card",3,"ngbAccordionItem","collapsed","id"],[1,"mt-3"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0","py-2","ps-1"],["container","modal","placement","left","triggers","hover",1,"fa","fa-xl",3,"class","ngbTooltip","openDelay"],["ngbAccordionCollapse",""],["ngbAccordionBody","",1,"card-body","p-0",2,"height","400px"],[1,"flex-grow-1","h-100","w-100","mb-0","pb-0",3,"ngModelChange","onInit","options","ngModel"],["container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"ngbTooltip","openDelay"],["ngbAccordionToggle","","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2","me-2",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-edit"],["container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-trash"],["container","modal","placement","left","triggers","hover",1,"fa","fa-xl",3,"ngbTooltip","openDelay"],["container","modal","placement","top","triggers","hover",1,"fa","fa-xl","me-2",3,"class","ngbTooltip","openDelay"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-2"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-circle-notch","fa-spin"],["container","modal","placement","top","triggers","hover",1,"fa","fa-xl","me-2",3,"ngbTooltip","openDelay"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-2",3,"click"],[1,"fa","fa-plus"],[1,"btn","btn-primary",3,"click"]],template:function(n,t){n&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),c(3),r(),l(4,"button",3),m(5,"translate"),E("click",function(){return t.closeModal()}),r()(),l(6,"div",4),u(7,ea,2,0,"div",5),u(8,ta,4,6,"div",6),u(9,ia,2,3,"markdown",7),u(10,sa,4,2),r(),l(11,"div",8)(12,"div",9)(13,"button",10),E("click",function(){return t.closeModal()}),c(14),m(15,"translate"),r()(),v(16,"div",11),l(17,"div",12),u(18,ga,5,5),u(19,ua,3,3,"button",13),r()()()),n&2&&(o(3),_e("",(t.plugin==null?null:t.plugin.displayName)||(t.plugin==null?null:t.plugin.name)," - ",t.pluginType()),o(),x("disabled",t.saveInProgress()),I("aria-label",g(5,12,"form.button_close")),o(3),_(t.loading()?7:-1),o(),_(!t.loading()&&!t.canConfigure()?8:-1),o(),_(t.schema!=null&&t.schema.headerDisplay?9:-1),o(),_(!t.loading()&&t.canConfigure()?10:-1),o(3),x("disabled",t.saveInProgress()),o(),y(" ",g(15,14,"form.button_close")," "),o(4),_(t.canConfigure()?18:-1),o(),_(t.canConfigure()?-1:19))},dependencies:[Ct,bt,ht,ye,_t,ut,Ci,Ce,he,be,ft,Ie,Pe,$e,j,xt],styles:[".no-padding-card-body .card-body{padding:0!important} body.dark-mode .no-padding-card-body .card-body{background-color:#1e1e1e}.manage-plugin-config-external-icons[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;line-height:1;color:#000;opacity:.5;background-color:transparent;border:0}"]})}return i})();var It=i=>({link:i}),Ai=(i,s)=>({"green-text":i,"grey-text":s});function _a(i,s){if(i&1){let e=T();l(0,"button",14),m(1,"translate"),E("click",function(){B(e);let t=p();return w(t.closeModal())}),r()}if(i&2){let e=p();x("disabled",e.saveInProgress()),I("aria-label",g(1,2,"form.button_close"))}}function fa(i,s){i&1&&(l(0,"div",6),v(1,"i",15),r())}function ha(i,s){i&1&&(l(0,"li"),c(1),m(2,"translate"),r()),i&2&&(o(),k(g(2,1,"child_bridge.bridges_paired_2")))}function ba(i,s){if(i&1&&(l(0,"li"),c(1),m(2,"translate"),r(),u(3,ha,3,3,"li")),i&2){let e,n=p(2);o(),k(g(2,2,"child_bridge.bridges_paired")),o(2),_(n.configBlocks().length===1&&!n.deviceInfo().get((e=n.configBlocks()[0]._bridge)==null?null:e.username)&&n.originalBridges().length===0?3:-1)}}function Ca(i,s){if(i&1&&(l(0,"option",30),c(1),r()),i&2){let e=s.$implicit,n=s.$index;x("value",n),o(),k(e.name||e.platform||e.accessory)}}function va(i,s){if(i&1){let e=T();l(0,"ul",22)(1,"li",26),c(2),m(3,"translate"),r(),l(4,"li",24)(5,"label",27),c(6),m(7,"translate"),r(),l(8,"div",28)(9,"select",29),E("ngModelChange",function(t){B(e);let a=p(3);return a.selectedBlock.set(t),w(a.onBlockChange(t))}),X(10,Ca,2,2,"option",30,Y),r()()()()}if(i&2){let e=p(3);o(2),k(g(3,3,"form.label.changes_kept")),o(4),y(" ",g(7,5,"accessories.plugin")," "),o(3),x("ngModel",e.selectedBlock()),o(),Z(e.configBlocks())}}function xa(i,s){if(i&1&&c(0),i&2){let e=p().$implicit;_e(" ",e.name," \xB7 ",e.username," ")}}function ya(i,s){if(i&1&&c(0),i&2){let e=p().$implicit;y(" ",e.username," ")}}function Ba(i,s){if(i&1&&(l(0,"option",30),u(1,xa,1,2)(2,ya,1,1),r()),i&2){let e=s.$implicit;x("value",e.username),o(),_(e.name?1:2)}}function wa(i,s){if(i&1){let e=T();l(0,"li",24)(1,"label",31),c(2),m(3,"translate"),r(),l(4,"div",28)(5,"select",32,0),E("change",function(){B(e);let t=Qe(6),a=p(3);return w(a.onLinkBridgeChange(t.value))}),l(7,"option",30),c(8),m(9,"translate"),r(),X(10,Ba,3,2,"option",30,Y),r()()()}if(i&2){let e=p(3);o(2),k(g(3,2,"child_bridge.config.or_link")),o(6),k(g(9,4,"child_bridge.config.select_existing")),o(2),Z(e.bridgesAvailableForLink())}}function ka(i,s){i&1&&(l(0,"li",24)(1,"label",33),c(2,"Child Bridge"),r(),l(3,"div",34),c(4),m(5,"translate"),r()()),i&2&&(o(4),y(" ",g(5,1,"child_bridge.config.prevent")," "))}function Sa(i,s){if(i&1){let e=T();l(0,"li",25)(1,"span",8),c(2),m(3,"translate"),r(),l(4,"div",35)(5,"input",36),E("change",function(){B(e);let t=p(3);return w(t.toggleExternalBridge(t.configBlocks()[t.selectedBlock()],!t.enabledBlocks()[t.selectedBlock()],t.selectedBlock()))}),r(),v(6,"label",37),r()()}if(i&2){let e=p(3);o(2),y(" ",g(3,4,e.currentlySelectedLink()?"child_bridge.config.or_link":"child_bridge.config.use")," "),o(3),x("id","toggleExternalBridgeInput_"+e.selectedBlock())("checked",e.enabledBlocks()[e.selectedBlock()]),o(),x("for","toggleExternalBridgeInput_"+e.selectedBlock())}}function Ma(i,s){if(i&1&&(l(0,"li",24)(1,"label",33),c(2),m(3,"translate"),r(),l(4,"div",38),c(5),r()()),i&2){let e=p(3);o(2),k(g(3,2,"child_bridge.config.name")),o(3),y(" ",e.currentlySelectedLink().name," ")}}function Ea(i,s){if(i&1&&(l(0,"li",24)(1,"label",33),c(2),m(3,"translate"),r(),l(4,"div",38),c(5),r()()),i&2){let e,n=p(3);o(2),k(g(3,2,"users.label_username")),o(3),y(" ",((e=n.currentlySelectedLink())==null?null:e.username)||((e=n.configBlocks()[n.selectedBlock()]._bridge)==null?null:e.username)," ")}}function Ta(i,s){if(i&1&&(l(0,"li",24)(1,"label",33),c(2),m(3,"translate"),r(),l(4,"div",38),c(5),r()()),i&2){let e=p(3);o(2),k(g(3,2,"child_bridge.config.port")),o(3),y(" ",e.currentlySelectedLink().port," ")}}function Va(i,s){if(i&1){let e=T();l(0,"li",25)(1,"span",8),c(2),m(3,"translate"),l(4,"code"),c(5,"-D"),r()(),l(6,"div",35)(7,"input",50),m(8,"translate"),ne("ngModelChange",function(t){B(e);let a=p(5);return ie(a.configBlocks()[a.selectedBlock()]._bridge.debugModeEnabled,t)||(a.configBlocks()[a.selectedBlock()]._bridge.debugModeEnabled=t),w(t)}),r(),v(9,"label",37),r()()}if(i&2){let e=p(5);o(2),y("",g(3,5,"child_bridge.config.debug")," "),o(5),x("id","homebridgeDebugMode_"+e.selectedBlock()),te("ngModel",e.configBlocks()[e.selectedBlock()]._bridge.debugModeEnabled),I("aria-label",g(8,7,"settings.startup.debug")),o(2),x("for","homebridgeDebugMode_"+e.selectedBlock())}}function Pa(i,s){if(i&1){let e=T();l(0,"li",24)(1,"label",33),c(2),m(3,"translate"),l(4,"span",41),c(5),m(6,"translate"),r(),v(7,"br")(8,"small",42),m(9,"translate"),r(),l(10,"div",43)(11,"input",44),E("input",function(t){let a;B(e);let d=p(4);return w(d.onScheduledRestartCronChange(t.target.value,(a=d.configBlocks()[d.selectedBlock()]._bridge)==null?null:a.username))}),r()()(),u(12,Va,10,9,"li",25),l(13,"li",24)(14,"label",33)(15,"span",45),c(16,"DEBUG"),r(),v(17,"br")(18,"small",46),m(19,"translate"),r(),l(20,"div",28)(21,"input",47),ne("ngModelChange",function(t){B(e);let a=p(4);return ie(a.configBlocks()[a.selectedBlock()]._bridge.env.DEBUG,t)||(a.configBlocks()[a.selectedBlock()]._bridge.env.DEBUG=t),w(t)}),r()()(),l(22,"li",24)(23,"label",33)(24,"span",45),c(25,"NODE_OPTIONS"),r(),v(26,"br"),l(27,"small",48),c(28),m(29,"translate"),r()(),l(30,"div",28)(31,"input",49),ne("ngModelChange",function(t){B(e);let a=p(4);return ie(a.configBlocks()[a.selectedBlock()]._bridge.env.NODE_OPTIONS,t)||(a.configBlocks()[a.selectedBlock()]._bridge.env.NODE_OPTIONS=t),w(t)}),r()()()}if(i&2){let e,n=p(4);o(2),y(" ",g(3,13,"settings.startup.scheduled_restart")," "),o(3),k(g(6,15,"common.labels.beta")),o(3),x("innerHtml",z(9,17,"settings.startup.scheduled_restart_desc",de(25,It,n.linkCron)),ce),o(3),Re("letter-spacing","0.15em")("text-align","center"),x("value",n.getScheduledRestartCron((e=n.configBlocks()[n.selectedBlock()]._bridge)==null?null:e.username)),o(),_(n.canShowBridgeDebug()?12:-1),o(6),x("innerHTML",z(19,20,"settings.service.debug_tooltip",de(27,It,n.linkDebug)),ce),o(3),te("ngModel",n.configBlocks()[n.selectedBlock()]._bridge.env.DEBUG),o(7),k(g(29,23,"settings.service.node_tooltip")),o(3),te("ngModel",n.configBlocks()[n.selectedBlock()]._bridge.env.NODE_OPTIONS)}}function Ia(i,s){if(i&1){let e=T();l(0,"li",24)(1,"label",33),c(2),m(3,"translate"),r(),l(4,"div",28)(5,"input",39),ne("ngModelChange",function(t){B(e);let a=p(3);return ie(a.configBlocks()[a.selectedBlock()]._bridge.name,t)||(a.configBlocks()[a.selectedBlock()]._bridge.name=t),w(t)}),r()()(),l(6,"li",24)(7,"label",33),c(8),m(9,"translate"),r(),l(10,"div",28)(11,"input",40),m(12,"translate"),ne("ngModelChange",function(t){B(e);let a=p(3);return ie(a.configBlocks()[a.selectedBlock()]._bridge.manufacturer,t)||(a.configBlocks()[a.selectedBlock()]._bridge.manufacturer=t),w(t)}),r()()(),l(13,"li",24)(14,"label",33),c(15),m(16,"translate"),r(),l(17,"div",28)(18,"input",40),m(19,"translate"),ne("ngModelChange",function(t){B(e);let a=p(3);return ie(a.configBlocks()[a.selectedBlock()]._bridge.model,t)||(a.configBlocks()[a.selectedBlock()]._bridge.model=t),w(t)}),r()()(),l(20,"li",24)(21,"label",33),c(22),m(23,"translate"),r(),l(24,"div",28)(25,"input",40),m(26,"translate"),ne("ngModelChange",function(t){B(e);let a=p(3);return ie(a.configBlocks()[a.selectedBlock()]._bridge.firmwareRevision,t)||(a.configBlocks()[a.selectedBlock()]._bridge.firmwareRevision=t),w(t)}),r()()(),u(27,Pa,32,29)}if(i&2){let e=p(3);o(2),k(g(3,16,"child_bridge.config.name")),o(3),ke("is-invalid",e.getHapNameValidationError(e.selectedBlock())),te("ngModel",e.configBlocks()[e.selectedBlock()]._bridge.name),o(3),k(g(9,18,"child_bridge.config.manufacturer")),o(3),x("placeholder",g(12,20,"form.optional")),te("ngModel",e.configBlocks()[e.selectedBlock()]._bridge.manufacturer),o(4),k(g(16,22,"child_bridge.config.model")),o(3),x("placeholder",g(19,24,"form.optional")),te("ngModel",e.configBlocks()[e.selectedBlock()]._bridge.model),o(4),k(g(23,26,"child_bridge.config.firmware")),o(3),ke("font-monospace",e.configBlocks()[e.selectedBlock()]._bridge.firmwareRevision),x("placeholder",g(26,28,"form.optional")),te("ngModel",e.configBlocks()[e.selectedBlock()]._bridge.firmwareRevision),o(2),_(e.justInstalled?-1:27)}}function $a(i,s){i&1&&(l(0,"li",55)(1,"div",57)(2,"div",58)(3,"div")(4,"div",59),v(5,"i",60),r(),l(6,"div",61),c(7),m(8,"translate"),r()()()()()),i&2&&(o(7),k(g(8,1,"child_bridge.return_to_pair")))}function Da(i,s){i&1&&(l(0,"span"),c(1),m(2,"translate"),r()),i&2&&(o(),y(" \xB7 ",g(2,1,"status.code_scan")," "))}function Na(i,s){if(i&1){let e=T();l(0,"li",25)(1,"span",8),c(2),m(3,"translate"),r(),l(4,"div",35)(5,"input",36),m(6,"translate"),E("change",function(){let t;B(e);let a=p(5);return w(a.toggleHideUnpairing((t=a.configBlocks()[a.selectedBlock()]._bridge)==null?null:t.username,"hap"))}),r(),v(7,"label",37),r()()}if(i&2){let e,n=p(5);o(2),k(g(3,5,"child_bridge.config.hide_pairing_alert")),o(3),x("id","toggleHideHapUnpairing_"+n.selectedBlock())("checked",n.isUnpairingHidden((e=n.configBlocks()[n.selectedBlock()]._bridge)==null?null:e.username,"hap")),I("aria-label",g(6,7,"child_bridge.config.hide_pairing_alert")),o(2),x("for","toggleHideHapUnpairing_"+n.selectedBlock())}}function Aa(i,s){if(i&1&&(l(0,"li",55)(1,"div",57),v(2,"app-qrcode",62),l(3,"p",63),c(4),r(),l(5,"p",64),v(6,"i",65),c(7),m(8,"translate"),u(9,Da,3,3,"span"),r()()(),u(10,Na,8,9,"li",25)),i&2){let e,n,t,a,d,h,f=p(4);o(2),x("data",(e=f.deviceInfo().get((e=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:e.username))==null?null:e._setupCode),o(2),y(" ",(n=f.deviceInfo().get((n=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:n.username))==null?null:n.pincode," "),o(2),J(ze(9,Ai,(t=f.deviceInfo().get((t=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:t.username))==null?null:t._isPaired,!((t=f.deviceInfo().get((t=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:t.username))!=null&&t._isPaired))),o(),y(" ",g(8,7,(a=f.deviceInfo().get((a=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:a.username))!=null&&a._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),o(2),_((d=f.deviceInfo().get((d=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:d.username))!=null&&d._isPaired?-1:9),o(),_((h=f.deviceInfo().get((h=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:h.username))!=null&&h._isPaired?-1:10)}}function La(i,s){i&1&&(l(0,"span"),c(1),m(2,"translate"),r()),i&2&&(o(),y(" \xB7 ",g(2,1,"status.code_scan")," "))}function Fa(i,s){if(i&1){let e=T();l(0,"li",25)(1,"span",8),c(2),m(3,"translate"),r(),l(4,"div",35)(5,"input",36),m(6,"translate"),E("change",function(){let t;B(e);let a=p(7);return w(a.toggleHideUnpairing((t=a.configBlocks()[a.selectedBlock()]._bridge)==null?null:t.username,"matter"))}),r(),v(7,"label",37),r()()}if(i&2){let e,n=p(7);o(2),k(g(3,5,"child_bridge.config.hide_pairing_alert")),o(3),x("id","toggleHideMatterUnpairing_"+n.selectedBlock())("checked",n.isUnpairingHidden((e=n.configBlocks()[n.selectedBlock()]._bridge)==null?null:e.username,"matter")),I("aria-label",g(6,7,"child_bridge.config.hide_pairing_alert")),o(2),x("for","toggleHideMatterUnpairing_"+n.selectedBlock())}}function Ua(i,s){if(i&1&&(l(0,"li",55)(1,"div",57),v(2,"app-qrcode",62),l(3,"p",63),c(4),r(),l(5,"p",64),v(6,"i",65),c(7),m(8,"translate"),u(9,La,3,3,"span"),r()()(),u(10,Fa,8,9,"li",25)),i&2){let e,n,t,a,d,h,f=p(6);o(2),x("data",(e=f.matterDeviceInfo().get((e=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:e.username))==null?null:e.setupUri),o(2),y(" ",(n=f.matterDeviceInfo().get((n=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:n.username))==null?null:n.pin," "),o(2),J(ze(9,Ai,(t=f.matterDeviceInfo().get((t=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:t.username))==null?null:t.commissioned,!((t=f.matterDeviceInfo().get((t=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:t.username))!=null&&t.commissioned))),o(),y(" ",g(8,7,(a=f.matterDeviceInfo().get((a=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:a.username))!=null&&a.commissioned?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),o(2),_((d=f.matterDeviceInfo().get((d=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:d.username))!=null&&d.commissioned?-1:9),o(),_((h=f.matterDeviceInfo().get((h=f.configBlocks()[f.selectedBlock()]._bridge)==null?null:h.username))!=null&&h.commissioned?-1:10)}}function ja(i,s){i&1&&(l(0,"li",55)(1,"div",57)(2,"div",70)(3,"div")(4,"div",59),v(5,"i",60),r(),l(6,"div",61),c(7),m(8,"translate"),r()()()()()),i&2&&(o(7),k(g(8,1,"child_bridge.return_to_pair")))}function Ha(i,s){if(i&1){let e=T();l(0,"li",67)(1,"ul",68)(2,"li"),c(3),m(4,"translate"),r(),l(5,"li"),c(6),m(7,"translate"),r()()(),u(8,Ua,11,12),u(9,ja,9,3,"li",55),l(10,"li",24)(11,"label",33),c(12),m(13,"translate"),r(),l(14,"div",28)(15,"input",69),ne("ngModelChange",function(t){B(e);let a=p(5);return ie(a.configBlocks()[a.selectedBlock()]._bridge.matter.port,t)||(a.configBlocks()[a.selectedBlock()]._bridge.matter.port=t),w(t)}),r()()()}if(i&2){let e,n,t=p(5);o(3),k(g(4,8,"child_bridge.config.matter_note_1")),o(3),k(g(7,10,"child_bridge.config.matter_note_2")),o(2),_((e=t.matterDeviceInfo().get((e=t.configBlocks()[t.selectedBlock()]._bridge)==null?null:e.username))!=null&&e.setupUri?8:-1),o(),_(t.matterDeviceInfo().get((n=t.configBlocks()[t.selectedBlock()]._bridge)==null?null:n.username)&&!((n=t.matterDeviceInfo().get((n=t.configBlocks()[t.selectedBlock()]._bridge)==null?null:n.username))!=null&&n.setupUri)?9:-1),o(3),k(g(13,12,"child_bridge.config.port")),o(3),ke("is-invalid",t.getMatterPortValidationError(t.selectedBlock())),te("ngModel",t.configBlocks()[t.selectedBlock()]._bridge.matter.port)}}function Oa(i,s){if(i&1){let e=T();l(0,"ul",23)(1,"li",25)(2,"label",33),v(3,"i",66),c(4),m(5,"translate"),l(6,"span",41),c(7),m(8,"translate"),r()(),l(9,"div",35)(10,"input",36),E("change",function(){B(e);let t=p(4);return w(t.toggleMatterBridge(t.configBlocks()[t.selectedBlock()],!t.matterEnabledBlocks()[t.selectedBlock()],t.selectedBlock()))}),r(),v(11,"label",37),r()(),u(12,Ha,16,14),r()}if(i&2){let e,n=p(4);o(4),y(" ",g(5,6,"matter_bridge.config.use")," "),o(3),k(g(8,8,"common.labels.beta")),o(3),x("id","toggleMatterBridgeInput_"+n.selectedBlock())("checked",n.matterEnabledBlocks()[n.selectedBlock()]),o(),x("for","toggleMatterBridgeInput_"+n.selectedBlock()),o(),_(n.matterEnabledBlocks()[n.selectedBlock()]&&((e=n.configBlocks()[n.selectedBlock()]._bridge)!=null&&e.matter)&&((e=n.configBlocks()[n.selectedBlock()]._bridge)!=null&&e.username)?12:-1)}}function Ra(i,s){if(i&1){let e=T();l(0,"ul",23)(1,"li",25)(2,"span",8),v(3,"i",51),c(4),m(5,"translate"),r(),l(6,"div",52),v(7,"input",53)(8,"label",54),r()(),u(9,$a,9,3,"li",55),u(10,Aa,11,12),l(11,"li",24)(12,"label",33),c(13),m(14,"translate"),r(),l(15,"div",28)(16,"input",56),ne("ngModelChange",function(t){B(e);let a=p(3);return ie(a.configBlocks()[a.selectedBlock()]._bridge.port,t)||(a.configBlocks()[a.selectedBlock()]._bridge.port=t),w(t)}),r()()()(),u(17,Oa,13,10,"ul",23)}if(i&2){let e,n,t=p(3);o(4),y(" ",g(5,12,"child_bridge.config.enable_hap")," "),o(3),x("id","toggleHapInput_"+t.selectedBlock())("checked",!0)("disabled",!0),o(),x("for","toggleHapInput_"+t.selectedBlock()),o(),_((e=t.configBlocks()[t.selectedBlock()]._bridge)!=null&&e.username&&t.deviceInfo().get((e=t.configBlocks()[t.selectedBlock()]._bridge)==null?null:e.username)===!1?9:-1),o(),_(t.deviceInfo().get((n=t.configBlocks()[t.selectedBlock()]._bridge)==null?null:n.username)?10:-1),o(3),k(g(14,14,"child_bridge.config.port")),o(3),ke("is-invalid",t.getHapPortValidationError(t.selectedBlock())),te("ngModel",t.configBlocks()[t.selectedBlock()]._bridge.port),o(),_(t.isMatterSupported&&!t.configBlocks()[t.selectedBlock()].accessory?17:-1)}}function za(i,s){if(i&1&&(u(0,va,12,7,"ul",22),l(1,"ul",23),u(2,wa,12,6,"li",24),u(3,ka,6,3,"li",24),u(4,Sa,7,6,"li",25),u(5,Ma,6,4,"li",24),u(6,Ea,6,4,"li",24),u(7,Ta,6,4,"li",24),u(8,Ia,28,30),r(),u(9,Ra,18,16)),i&2){let e,n,t,a,d=p(2);_(d.configBlocks().length>1?0:-1),o(2),_(!((e=d.configBlocks()[d.selectedBlock()]._bridge)!=null&&e.username)&&d.bridgesAvailableForLink().length&&!d.currentBridgeHasLinks()?2:-1),o(),_(d.currentBridgeHasLinks()?3:-1),o(),_(d.currentBridgeHasLinks()?-1:4),o(),_(d.currentlySelectedLink()?5:-1),o(),_((d.currentlySelectedLink()||(n=d.configBlocks()[d.selectedBlock()]._bridge)!=null&&n.username)&&(d.currentlySelectedLink()||!d.currentBridgeHasLinks())?6:-1),o(),_(d.currentlySelectedLink()?7:-1),o(),_(!d.currentlySelectedLink()&&((t=d.configBlocks()[d.selectedBlock()]._bridge)!=null&&t.username)?8:-1),o(),_(!d.currentlySelectedLink()&&((a=d.configBlocks()[d.selectedBlock()]._bridge)!=null&&a.username)?9:-1)}}function Wa(i,s){i&1&&(c(0),m(1,"translate")),i&2&&y(" ",g(1,1,"child_bridge.confirm_delete_2")," ")}function qa(i,s){if(i&1&&(l(0,"li"),v(1,"i",72),c(2),l(3,"span",48),c(4," \xB7 "),r(),l(5,"span",73),c(6),r()()),i&2){let e,n=s.$implicit,t=p(3);o(2),y(" ",n.bridgeName||((e=t.deviceInfo().get(n.id))==null?null:e.displayName)," "),o(4),k(n.id)}}function Ga(i,s){if(i&1&&(l(0,"li"),v(1,"i",74),c(2),l(3,"span",48),c(4," \xB7 "),r(),l(5,"span",73),c(6),r()()),i&2){let e=s.$implicit;o(2),y(" ",e.name," "),o(4),k(e.username)}}function Ja(i,s){if(i&1&&(l(0,"ngb-alert",19)(1,"p"),c(2),m(3,"translate"),u(4,Wa,2,3),r(),l(5,"div",10)(6,"ul",71),X(7,qa,7,2,"li",null,Y),X(9,Ga,7,2,"li",null,Y),r()()()),i&2){let e=p(2);x("dismissible",!1),o(2),y(" ",g(3,3,"child_bridge.confirm_delete_1")," "),o(2),_(e.deletingPairedBridge()?4:-1),o(3),Z(e.deleteBridges()),o(2),Z(e.deleteMatterBridges())}}function Ka(i,s){i&1&&(l(0,"ngb-alert",20),c(1),m(2,"translate"),r()),i&2&&(x("dismissible",!1),o(),k(g(2,2,"child_bridge.must_configure_plugin")))}function Qa(i,s){if(i&1){let e=T();l(0,"ngb-alert",21)(1,"div",17),c(2),m(3,"translate"),m(4,"translate"),r(),l(5,"button",75),E("click",function(){B(e);let t=p(2);return w(t.openFullConfigEditor())}),c(6),m(7,"translate"),r()()}i&2&&(x("dismissible",!1),o(2),_e(" ",g(3,4,"plugins.settings.message_manual_config_required")," ",g(4,6,"plugins.settings.message_consult_documentation")," "),o(4),y(" ",g(7,8,"plugins.settings.label_open_config_editor")," "))}function Ya(i,s){if(i&1){let e=T();l(0,"div",10)(1,"img",16),E("error",function(){B(e);let t=p();return w(t.handleIconError())}),r()(),l(2,"ul",17),v(3,"li",18),m(4,"translate"),u(5,ba,4,4),r(),u(6,za,10,9),u(7,Ja,11,5,"ngb-alert",19),u(8,Ka,3,4,"ngb-alert",20),u(9,Qa,8,10,"ngb-alert",21)}if(i&2){let e=p();o(),x("src",e.plugin.icon,Lt),o(2),x("innerHTML",z(4,7,"child_bridge.about",de(10,It,e.linkChildBridges)),ce),o(2),_(e.configBlocks().length?5:-1),o(),_(e.canConfigure()&&e.configBlocks().length?6:-1),o(),_(e.deleteBridges().length||e.deleteMatterBridges().length?7:-1),o(),_(!e.configBlocks().length&&e.canConfigure?8:-1),o(),_(e.canConfigure()?-1:9)}}function Xa(i,s){if(i&1){let e=T();l(0,"button",76),E("click",function(){B(e);let t=p();return w(t.closeModal())}),c(1),m(2,"translate"),r()}if(i&2){let e=p();x("disabled",e.saveInProgress()),o(),y(" ",g(2,2,"form.button_close")," ")}}function Za(i,s){i&1&&v(0,"i",78)}function er(i,s){if(i&1){let e=T();l(0,"button",77),E("click",function(){B(e);let t=p();return w(t.save())}),c(1),m(2,"translate"),u(3,Za,1,0,"i",78),r()}if(i&2){let e=p();x("disabled",e.saveInProgress()||e.hasValidationErrors),o(),y(" ",g(2,3,"form.button_save")," "),o(2),_(e.saveInProgress()?3:-1)}}function tr(i,s){if(i&1){let e=T();l(0,"button",79),E("click",function(){B(e);let t=p();return w(t.closeModal())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"form.button_close")," "))}function ir(i,s){i&1&&(c(0),m(1,"translate")),i&2&&y(" ",g(1,1,"form.button_save")," ")}function nr(i,s){i&1&&v(0,"i",78)}function or(i,s){if(i&1){let e=T();l(0,"button",77),E("click",function(){B(e);let t=p(2);return w(t.save())}),u(1,ir,2,3),u(2,nr,1,0,"i",78),r()}if(i&2){let e=p(2);x("disabled",e.saveInProgress()||e.loading()||e.hasValidationErrors),o(),_(e.saveInProgress()?-1:1),o(),_(e.saveInProgress()?2:-1)}}function ar(i,s){if(i&1){let e=T();l(0,"button",81),E("click",function(){B(e);let t=p(2);return w(t.openPluginConfig())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"plugins.button_settings")," "))}function rr(i,s){if(i&1&&(u(0,or,3,3,"button",11),u(1,ar,3,3,"button",80)),i&2){let e=p();_(e.configBlocks().length?0:-1),o(),_(e.configBlocks().length?-1:1)}}var Li=(()=>{class i{$activeModal=b(q);$api=b(N);$modal=b(re);$plugin=b(Be);$router=b(pe);$settings=b(W);$toastr=b(U);$translate=b(F);modalData=b(at);plugin=this.modalData.plugin;schema=this.modalData.schema;justInstalled=this.modalData.justInstalled??!1;loading=C(!0);canConfigure=C(!0);saveInProgress=C(!1);configBlocks=C([]);selectedBlock=C("0");isPlatform=C(!1);enabledBlocks=C({});matterEnabledBlocks=C({});matterExplicitlyDisabledBeforeChildBridge=new Set;bridgeConfigs=new Map;originalScheduledRestartCrons=new Map;originalHideAlerts=new Map;bridgeCache=C(new Map);originalBridges=C([]);deviceInfo=C(new Map);matterBridgeCache=C(new Map);originalMatterBridges=C([]);matterDeviceInfo=C(new Map);deleteMatterBridges=C([]);canShowBridgeDebug=C(!1);deleteBridges=C([]);deletingPairedBridge=C(!1);accessoryBridgeLinks=C([]);bridgesAvailableForLink=C([]);currentlySelectedLink=C(null);currentBridgeHasLinks=C(!1);isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");defaultIcon="assets/hb-icon.png";linkChildBridges='<a href="https://github.com/homebridge/homebridge/wiki/Child-Bridges" target="_blank"><i class="fas fa-external-link-alt primary-text"></i></a>';linkDebug='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Debug-Common-Values" target="_blank"><i class="fa fa-external-link-alt primary-text"></i></a>';linkCron='<a href="https://crontab.guru/" target="_blank" rel="noopener noreferrer"><i class="fa fa-external-link-alt primary-text"></i></a>';ngOnInit(){this.initialize()}handleIconError(){this.plugin&&(this.plugin.icon=this.defaultIcon)}onBlockChange(e){this.selectedBlock.set(e);let n=this.configBlocks(),t=this.enabledBlocks();this.currentlySelectedLink.set(this.accessoryBridgeLinks().find(d=>d.index===e)||null),this.currentBridgeHasLinks.set(this.accessoryBridgeLinks().some(d=>d.usesIndex===e));let a=[];if(n[Number(e)].accessory)for(let[d,h]of Array.from(this.bridgeCache().entries()))t[d]&&!this.deleteBridges().some(f=>f.id===h.username)&&d<Number(e)&&a.push({index:d.toString(),usesIndex:e,name:h.name,port:h.port,username:h.username});this.bridgesAvailableForLink.set(a)}onLinkBridgeChange(e){if(e){let n=this.configBlocks(),t=this.selectedBlock(),a=n.findIndex(h=>h._bridge?.username===e);this.accessoryBridgeLinks.update(h=>[...h,{index:t,usesIndex:a.toString(),name:this.bridgeCache().get(a)?.name,port:this.bridgeCache().get(a)?.port,username:e}]),this.currentlySelectedLink.set(this.accessoryBridgeLinks().find(h=>h.index===t)||null),this.enabledBlocks.update(h=>A(D({},h),{[Number(t)]:!0}));let d=n[Number(t)];d._bridge={username:e}}}initialize(){return S(this,null,function*(){try{yield Promise.all([this.getPluginType(),this.loadPluginConfig(),this.loadBridgeConfigs()]),this.canShowBridgeDebug.set(this.$settings.isFeatureEnabled("childBridgeDebugMode"))}catch(e){console.error("Failed to initialize:",e);let n=e instanceof Error?e.message:"Failed to initialize component";this.$toastr.error(n,this.$translate.instant("toast.title_error"))}finally{this.loading.set(!1)}})}getPluginType(){return S(this,null,function*(){let e=this.plugin;if(e)try{let n=yield this.$api.get(`/plugins/alias/${encodeURIComponent(e.name)}`);this.isPlatform.set(n.pluginType==="platform")}catch(n){console.error(n);let t=n instanceof Error?n.message:"Failed to load plugin type";this.$toastr.error(t,this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}loadPluginConfig(){return S(this,null,function*(){let e=this.plugin;if(e)try{let n=yield this.$api.get(`/config-editor/plugin/${encodeURIComponent(e.name)}`);this.configBlocks.set(n);for(let[f,M]of n.entries()){if(M._bridge&&this.enabledBlocks.update($=>A(D({},$),{[f]:!0})),M._bridge&&M._bridge.username){let $=Array.from(this.bridgeCache().entries()).find(([,H])=>H.username===M._bridge.username),ge=$?$[0]:-1,O=$?$[1]:void 0;if(O)M._bridge.env={},this.accessoryBridgeLinks.update(H=>[...H,{index:f.toString(),usesIndex:ge.toString(),name:O.name,port:O.port,username:M._bridge.username}]);else{if(M._bridge.env=M._bridge.env||{},this.bridgeCache.update(H=>new Map(H).set(f,M._bridge)),yield this.getDeviceInfo(M._bridge.username),!M._bridge.name){let H=this.deviceInfo().get(M._bridge.username);H&&(M._bridge.name=H.displayName)}this.originalBridges.update(H=>[...H,JSON.parse(JSON.stringify(M._bridge))])}}M._bridge&&M._bridge.matter&&(M.accessory?delete M._bridge.matter:(this.matterEnabledBlocks.update($=>A(D({},$),{[f]:!0})),this.matterBridgeCache.update($=>new Map($).set(f,{port:M._bridge.matter.port})),this.originalMatterBridges.update($=>[...$,{port:M._bridge.matter.port}]),M._bridge.username&&(yield this.getMatterCommissioningInfo(M._bridge.username))))}this.justInstalled&&this.bridgeCache().size===0&&n.forEach((f,M)=>{this.enabledBlocks.update($=>A(D({},$),{[M]:!0})),this.toggleExternalBridge(f,!0,M.toString())}),this.accessoryBridgeLinks().find(f=>f.username===this.bridgeCache().get(Number(this.selectedBlock()))?.username)&&this.currentBridgeHasLinks.set(!0);let a=this.selectedBlock(),d=this.enabledBlocks();this.currentlySelectedLink.set(this.accessoryBridgeLinks().find(f=>f.index===a)||null);let h=[];if(n[Number(a)]?.accessory)for(let[f,M]of Array.from(this.bridgeCache().entries()))d[f]&&!this.deleteBridges().some($=>$.id===M.username)&&f<Number(a)&&h.push({index:f.toString(),usesIndex:a,name:M.name,port:M.port,username:M.username});this.bridgesAvailableForLink.set(h)}catch(n){this.canConfigure.set(!1),console.error(n)}})}toggleExternalBridge(e,n,t){return S(this,null,function*(){let a=this.plugin;if(a){if(n){let d=this.bridgeCache().get(Number(t)),h=this.matterBridgeCache().get(Number(t));if(e._bridge={username:d?d.username:this.generateUsername(),port:yield this.getUnusedPort(),name:d?.name||this.sanitizeBridgeName(a.displayName||a.name),model:d?.model,manufacturer:d?.manufacturer,firmwareRevision:d?.firmwareRevision,debugModeEnabled:d?.debugModeEnabled,env:d?.env||{}},h&&!this.matterExplicitlyDisabledBeforeChildBridge.has(Number(t))&&(e._bridge.matter={port:h.port??(yield this.getUnusedMatterPort())},this.matterEnabledBlocks.update(f=>A(D({},f),{[Number(t)]:!0})),e._bridge.username&&(this.originalMatterBridges().some(M=>M.port===h.port)?yield this.getMatterCommissioningInfo(e._bridge.username):this.matterDeviceInfo.update(M=>new Map(M).set(e._bridge.username,{port:h.port}))),e._bridge.username)){let f=e._bridge.username.replace(/[^a-z0-9]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");this.deleteMatterBridges.update(M=>M.filter($=>$.identifier!==f))}this.deleteBridges().some(f=>f.id===e._bridge.username)&&this.deleteBridges.update(f=>f.filter(M=>M.id!==e._bridge.username)),this.matterExplicitlyDisabledBeforeChildBridge.delete(Number(t)),this.bridgeCache.update(f=>new Map(f).set(Number(t),e._bridge)),yield this.getDeviceInfo(e._bridge.username),this.enabledBlocks.update(f=>A(D({},f),{[Number(t)]:!0}))}else{if(this.enabledBlocks.update(d=>A(D({},d),{[Number(t)]:!1})),e._bridge?.matter&&this.matterEnabledBlocks()[Number(t)]&&this.matterBridgeCache.update(d=>new Map(d).set(Number(t),{port:e._bridge.matter.port})),this.accessoryBridgeLinks().some(d=>d.index===t))this.accessoryBridgeLinks.update(d=>d.filter(h=>h.index!==t)),this.currentlySelectedLink.set(null);else{let d=this.originalBridges().find(h=>h.username===e._bridge.username);if(d&&!this.deleteBridges().some(h=>h.id===e._bridge.username)){let h=this.deviceInfo().get(e._bridge.username);this.deleteBridges.update(f=>[...f,{id:e._bridge.username,bridgeName:e._bridge.name||d.displayName,paired:h?h._isPaired:!1}])}if(e._bridge?.username){let h=e._bridge.username.replace(/[^a-z0-9]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");this.deleteMatterBridges().some(M=>M.identifier===h)&&this.matterExplicitlyDisabledBeforeChildBridge.add(Number(t))}if(e._bridge?.matter&&e._bridge.username&&this.originalMatterBridges().some(f=>f.port===e._bridge.matter.port)){let f=e._bridge.username.replace(/[^a-z0-9]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");if(!this.deleteMatterBridges().some(M=>M.identifier===f)){let M=e._bridge.name||a.displayName||a.name;this.deleteMatterBridges.update($=>[...$,{username:e._bridge.username,identifier:f,name:M}])}}}this.matterEnabledBlocks.update(d=>A(D({},d),{[Number(t)]:!1})),delete e._bridge}this.deletingPairedBridge.set(this.deleteBridges().some(d=>d.paired))}})}get hasValidationErrors(){let e=this.configBlocks(),n=this.enabledBlocks();for(let[t,a]of e.entries())if(n[t]&&a._bridge?.username&&(this.getHapNameValidationError(t.toString())||this.getHapPortValidationError(t.toString())))return!0;return!1}getUnusedPort(){return S(this,null,function*(){try{return(yield this.$api.get("/server/port/new")).port}catch{return Math.floor(Math.random()*30001+3e4)}})}getUnusedMatterPort(){return S(this,null,function*(){try{return(yield this.$api.get("/server/port/new/matter")).port}catch{return Math.floor(Math.random()*12+5530)}})}getDeviceInfo(e){return S(this,null,function*(){try{let n=yield this.$api.get(`/server/pairings/${e.replace(/:/g,"")}`);this.deviceInfo.update(t=>new Map(t).set(e,n))}catch(n){console.error(n),this.deviceInfo.update(t=>new Map(t).set(e,!1))}})}sanitizeBridgeName(e){if(!e)return e;let n=e.replace(/[^\p{L}\p{N} ']/gu,"");return n=n.replace(/^[ ']+|[ ']+$/g,""),n=n.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu,""),n}getMatterCommissioningInfo(e){return S(this,null,function*(){try{let t=(yield this.$api.get("/status/homebridge/child-bridges")).find(a=>a.username===e);t&&t.matterSetupUri?this.matterDeviceInfo.update(a=>new Map(a).set(e,{setupUri:t.matterSetupUri,pin:t.matterPin,serialNumber:t.matterSerialNumber,commissioned:t.matterCommissioned,deviceCount:t.matterDeviceCount,port:t.matterConfig?.port})):this.matterDeviceInfo.update(a=>new Map(a).set(e,{port:t?.matterConfig?.port}))}catch(n){console.error(n),this.matterDeviceInfo.update(t=>new Map(t).set(e,{}))}})}toggleMatterBridge(e,n,t){return S(this,null,function*(){let a=this.plugin;if(a){if(e.accessory){this.matterEnabledBlocks.update(d=>A(D({},d),{[Number(t)]:!1}));return}if(n){this.matterEnabledBlocks.update(f=>A(D({},f),{[Number(t)]:!0}));let d=this.matterBridgeCache().get(Number(t));e._bridge||(e._bridge={env:{}});let h;if(d?.port?h=d.port:h=yield this.getUnusedMatterPort(),e._bridge.matter={port:h},this.matterBridgeCache.update(f=>new Map(f).set(Number(t),{port:h})),e._bridge.username){let f=e._bridge.username.replace(/[^a-z0-9]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");this.deleteMatterBridges.update($=>$.filter(ge=>ge.identifier!==f)),this.matterExplicitlyDisabledBeforeChildBridge.delete(Number(t)),this.originalMatterBridges().some($=>$.port===h)?yield this.getMatterCommissioningInfo(e._bridge.username):this.matterDeviceInfo.update($=>new Map($).set(e._bridge.username,{port:h}))}}else{this.matterEnabledBlocks.update(h=>A(D({},h),{[Number(t)]:!1}));let d=this.originalMatterBridges().some(h=>e._bridge?.matter&&h.port===e._bridge.matter.port);if(e._bridge&&e._bridge.matter&&(this.matterBridgeCache.update(h=>new Map(h).set(Number(t),{port:e._bridge.matter.port})),delete e._bridge.matter),e._bridge?.username&&(this.matterDeviceInfo.update(h=>new Map(h).set(e._bridge.username,null)),d)){let h=e._bridge.username.replace(/[^a-z0-9]/gi,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),f=e._bridge.name||a.displayName||a.name;this.deleteMatterBridges.update(M=>[...M,{username:e._bridge.username,identifier:h,name:f}])}e._bridge&&Object.keys(e._bridge).length===0&&delete e._bridge}}})}getMatterPortValidationError(e){let n=this.configBlocks()[Number(e)],t=n._bridge?.matter?.port;if(!t&&t!==0)return!1;if(typeof t!="number"||!Number.isInteger(t)||t<1024||t>65535||[5353,8080,8443].includes(t))return!0;let a=n._bridge?.port;return a&&t===a}getHapNameValidationError(e){let n=this.configBlocks()[Number(e)];if(!n._bridge?.name)return!1;let t=n._bridge.name;return!/^[\p{L}\p{N}][\p{L}\p{N} ']*[\p{L}\p{N}]$/u.test(t)}getHapPortValidationError(e){let n=this.configBlocks(),t=this.enabledBlocks(),a=n[Number(e)],d=a._bridge?.port;if(!d&&d!==0)return!1;if(typeof d!="number"||!Number.isInteger(d)||d<1025||d>65533)return!0;for(let[f,M]of n.entries())if(f.toString()!==e&&t[f]&&M._bridge?.port===d)return!0;let h=a._bridge?.matter?.port;return h&&d===h}normalizeMatterConfig(e){e._bridge?.matter&&(!e._bridge.matter.port&&e._bridge.matter.port!==0&&(e._bridge.matter.port=void 0),e._bridge.matter.port===void 0&&delete e._bridge.matter)}save(){return S(this,null,function*(){let e=this.plugin;if(e){this.saveInProgress.set(!0);try{let n=this.configBlocks(),t=this.matterEnabledBlocks();for(let[O,H]of n.entries()){if(H._bridge?.username){if(this.getHapNameValidationError(O.toString())){this.$toastr.error(this.$translate.instant("plugins.bridge.name_error"),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1);return}if(this.getHapPortValidationError(O.toString())){this.$toastr.error(this.$translate.instant("plugins.bridge.port_error",{type:"HAP"}),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1);return}}if(t[O]&&this.getMatterPortValidationError(O.toString())){this.$toastr.error(this.$translate.instant("plugins.bridge.port_error",{type:"Matter"}),this.$translate.instant("toast.title_error")),this.saveInProgress.set(!1);return}this.normalizeMatterConfig(H)}yield this.$api.post(`/config-editor/plugin/${encodeURIComponent(e.name)}`,n);for(let O of this.deleteBridges())try{yield this.$api.delete(`/server/pairings/${O.id.replace(/:/g,"")}`)}catch(H){console.error(H),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}let a=this.deleteMatterBridges().filter(O=>!this.deleteBridges().some(H=>H.id===O.username));for(let O of a)try{let H=O.username.replace(/:/g,"");yield this.$api.delete(`/server/pairings/${H}/matter`)}catch(H){console.error(H),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}let d=this.hasScheduledRestartCronChanged(),h=this.hasHideAlertsChanged(),f=this.hasBridgeConfigChanged(),M=this.deleteBridges().length>0||this.deleteMatterBridges().length>0,$=!d&&!h&&!f&&!M,ge=h&&!d&&!f&&!M;for(let[O,H]of this.bridgeConfigs.entries()){if(this.deleteBridges().some(Bt=>Bt.id===O))continue;let we=this.originalHideAlerts.get(O),Fe=!!H.hideHapAlert,Ue=!!H.hideMatterAlert,Dt=we?!!we.hideHapAlert:!1,je=we?!!we.hideMatterAlert:!1;try{Fe!==Dt&&(yield this.saveHideAlert(O,"hap",Fe)),Ue!==je&&(yield this.saveHideAlert(O,"matter",Ue))}catch(Bt){console.error(Bt)}}for(let[O,H]of this.bridgeConfigs.entries()){if(this.deleteBridges().some(je=>je.id===O))continue;let we=H.scheduledRestartCron||null,Fe=this.originalScheduledRestartCrons.get(O)||null,Ue=we===""?null:we;if(Ue!==(Fe===""?null:Fe))try{yield this.saveScheduledRestartCron(O,Ue)}catch(je){console.error(je)}}if(d)try{yield this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{})}catch(O){console.error(O)}$?this.$activeModal.close():ge?this.$activeModal.close("refresh"):(this.$activeModal.close(),this.$modal.open(ue,{size:"lg",backdrop:"static"}))}catch(n){console.error(n);let t=n instanceof Error?n.message:"Failed to save configuration";this.$toastr.error(t,this.$translate.instant("toast.title_error"))}finally{this.saveInProgress.set(!1)}}})}openPluginConfig(){let e=this.plugin;e&&(this.$activeModal.close(),this.$plugin.settings({name:e.name,settingsSchema:!0,links:{}}))}generateUsername(){let e="0123456789ABCDEF",n="0E:";for(let t=0;t<5;t+=1)n+=e.charAt(Math.round(Math.random()*15)),n+=e.charAt(Math.round(Math.random()*15)),t!==4&&(n+=":");return n}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close("Dismiss")}getMatterBridgeName(e){let n=this.configBlocks().find(t=>t._bridge?.username===e);return n?._bridge?.name?n._bridge.name:n.name||n.platform||n.accessory}loadBridgeConfigs(){return S(this,null,function*(){let e=this.$settings.env.bridges||[];this.bridgeConfigs.clear(),this.originalScheduledRestartCrons.clear(),this.originalHideAlerts.clear();for(let n of e){let t=n.username.toUpperCase();this.bridgeConfigs.set(t,n),this.originalScheduledRestartCrons.set(t,n.scheduledRestartCron||null),this.originalHideAlerts.set(t,{hideHapAlert:n.hideHapAlert,hideMatterAlert:n.hideMatterAlert})}})}isUnpairingHidden(e,n){let t=this.bridgeConfigs.get(e.toUpperCase());return t?n==="hap"?!!t.hideHapAlert:!!t.hideMatterAlert:!1}toggleHideUnpairing(e,n){let t=e.toUpperCase(),d=!this.isUnpairingHidden(e,n),h=this.bridgeConfigs.get(t);h||(h={username:t},this.bridgeConfigs.set(t,h)),n==="hap"?d?h.hideHapAlert=!0:delete h.hideHapAlert:d?h.hideMatterAlert=!0:delete h.hideMatterAlert}getScheduledRestartCron(e){return e&&this.bridgeConfigs.get(e.toUpperCase())?.scheduledRestartCron||""}onScheduledRestartCronChange(e,n){if(!n)return;let t=n.toUpperCase(),a=this.bridgeConfigs.get(t);a||(a={username:t},this.bridgeConfigs.set(t,a));let d=e?.trim();d?a.scheduledRestartCron=d:delete a.scheduledRestartCron}hasScheduledRestartCronChanged(){for(let[e,n]of this.bridgeConfigs.entries()){let t=n.scheduledRestartCron||null,a=this.originalScheduledRestartCrons.get(e)||null;if((t===""?null:t)!==(a===""?null:a))return!0}return!1}hasBridgeConfigChanged(){let e=this.configBlocks();if(e.length!==this.originalBridges().length)return!0;for(let[,n]of e.entries()){if(!n._bridge)continue;let t=this.originalBridges().find(M=>M.username===n._bridge.username);if(!t||n._bridge.name!==t.name||n._bridge.port!==t.port||n._bridge.model!==t.model||n._bridge.manufacturer!==t.manufacturer||n._bridge.firmwareRevision!==t.firmwareRevision||n._bridge.debugModeEnabled!==t.debugModeEnabled)return!0;let a=n._bridge.env||{},d=t.env||{};if(a.DEBUG!==d.DEBUG||a.NODE_OPTIONS!==d.NODE_OPTIONS)return!0;let h=!!n._bridge.matter,f=!!t.matter;if(h!==f||h&&f&&n._bridge.matter.port!==t.matter.port)return!0}return!1}hasHideAlertsChanged(){for(let[e,n]of this.bridgeConfigs.entries()){let t=this.originalHideAlerts.get(e),a=!!n.hideHapAlert,d=!!n.hideMatterAlert,h=t?!!t.hideHapAlert:!1,f=t?!!t.hideMatterAlert:!1;if(a!==h||d!==f)return!0}return!1}updateLocalBridgeConfig(e,n){let t=e.toUpperCase(),a=this.$settings.env.bridges||[],d=a.findIndex(h=>h.username.toUpperCase()===t);d!==-1?Object.assign(a[d],n):a.push(D({username:t},n)),this.$settings.env.bridges=a}saveHideAlert(e,n,t){return S(this,null,function*(){let a=e.toUpperCase(),d=n==="hap"?`/config-editor/ui/bridges/${encodeURIComponent(a)}/hide-hap-alert`:`/config-editor/ui/bridges/${encodeURIComponent(a)}/hide-matter-alert`;try{yield this.$api.put(d,{value:t}),this.updateLocalBridgeConfig(a,{hideHapAlert:t})}catch(h){throw console.error(`Failed to update hide ${n} alert:`,h),h}})}saveScheduledRestartCron(e,n){return S(this,null,function*(){let t=e.toUpperCase();try{if(yield this.$api.put(`/config-editor/ui/bridges/${encodeURIComponent(t)}/scheduled-restart-cron`,{value:n||null}),n)this.updateLocalBridgeConfig(t,{scheduledRestartCron:n});else{let a=this.$settings.env.bridges||[],d=a.findIndex(h=>h.username.toUpperCase()===t);d!==-1&&(delete a[d].scheduledRestartCron,this.$settings.env.bridges=a)}}catch(a){throw console.error("Failed to update scheduled restart cron:",a),a}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:16,vars:8,consts:[["bridgeLinkSelect",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"disabled"],[1,"modal-body"],[1,"text-center","primary-text","my-5","w-100"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"disabled"],[1,"text-center"],["type","button",1,"btn","btn-primary",3,"disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"fa","fa-circle-notch","fa-spin",2,"font-size","75px"],["alt","Plugin Icon",1,"mb-3","plugin-icon-card",3,"error","src"],[1,"mb-3"],[3,"innerHTML"],["type","error",1,"mt-3","mb-0",3,"dismissible"],["type","info",3,"dismissible"],["type","info",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"list-group-item","text-center","grey-text","small"],["for","bridgeSelect",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","bridgeSelect",1,"custom-select",3,"ngModelChange","ngModel"],[3,"value"],["for","bridgeLink",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","bridgeLink",1,"custom-select",3,"change"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox",1,"rendux-input",3,"change","id","checked"],[1,"rendux-label",3,"for"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],["type","text",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["type","text",1,"form-control","custom-input",3,"ngModelChange","placeholder","ngModel"],[1,"badge","badge-primary","ms-1"],[1,"grey-text",3,"innerHtml"],[1,"text-start","text-md-end","w-100","w-md-50","d-flex","flex-column","align-items-end"],["type","text","placeholder","mm hh dd MM ww","maxlength","30",1,"form-control","custom-input","font-monospace",3,"input","value"],[1,"font-monospace"],[1,"grey-text",3,"innerHTML"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input","font-monospace",3,"ngModelChange","ngModel"],[1,"grey-text"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input","font-monospace",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"fas","fa-xl","fa-hap","me-2","my-2"],[1,"text-end","grey-text","d-flex","align-items-center",2,"opacity","0.5","cursor","not-allowed"],["type","checkbox",1,"rendux-input",2,"pointer-events","none",3,"id","checked","disabled"],[1,"rendux-label",2,"cursor","not-allowed",3,"for"],[1,"list-group-item","text-center"],["type","number","min","1025","max","65533",1,"form-control","custom-input","font-monospace",3,"ngModelChange","ngModel"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto","d-flex","align-items-center","justify-content-center","qr-code-placeholder","primary-text","p-3"],[1,"text-center","grey-text"],[1,"fas","fa-qrcode","fa-2x","mb-2","primary-text"],[1,"text-center","small","grey-text"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"mx-auto","mt-3","mb-1","font-monospace"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-link"],[1,"fas","fa-xl","fa-matter","me-2","my-2"],[1,"list-group-item"],[1,"grey-text","small"],["type","number","min","1024","max","65535","placeholder","e.g. 5540",1,"form-control","custom-input","font-monospace",3,"ngModelChange","ngModel"],[1,"mx-auto","d-flex","align-items-center","justify-content-center","qr-code-placeholder","primary-text"],[1,"d-inline-block","text-start","mb-0"],[1,"fas","fa-lg","fa-hap","me-1"],[1,"grey-text","font-monospace"],[1,"fas","fa-lg","fa-matter","me-1"],[1,"btn","btn-primary","mb-0",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-circle-notch","fa-spin"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(n,t){n&1&&(l(0,"div",1)(1,"div",2)(2,"h5",3),c(3),r(),u(4,_a,2,4,"button",4),r(),l(5,"div",5),u(6,fa,2,0,"div",6),u(7,Ya,10,12),r(),l(8,"div",7)(9,"div",8),u(10,Xa,3,4,"button",9),r(),l(11,"div",10),u(12,er,4,5,"button",11),u(13,tr,3,3,"button",12),r(),l(14,"div",13),u(15,rr,2,2),r()()()),n&2&&(o(3),k(t.plugin.displayName||t.plugin.name),o(),_(t.justInstalled?-1:4),o(2),_(t.loading()?6:-1),o(),_(t.loading()?-1:7),o(3),_(t.canConfigure()&&!t.justInstalled?10:-1),o(2),_(t.justInstalled?12:-1),o(),_(t.canConfigure()?-1:13),o(2),_(t.canConfigure()&&!t.justInstalled?15:-1))},dependencies:[Ce,it,nt,qt,Jt,Ve,tt,he,Yt,Qt,be,De,si,j],styles:[".manage-plugin-config-external-icons[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;line-height:1;color:#000;opacity:.5;background-color:transparent;border:0}.qr-code-placeholder[_ngcontent-%COMP%]{width:175px;height:175px;border:2px solid currentColor;border-radius:8px;background-color:#f8f9fa;padding:20px} body.dark-mode .qr-code-placeholder, [class*=config-ui-x-dark-mode] .qr-code-placeholder{background-color:#1a1a1a}"]})}return i})();var $t=Q(ot(),1);var yt=()=>["homebridge","homebridge-config-ui-x"],Fi=(i,s,e)=>({pluginName:i,minVersion:s,installedVersion:e}),lr=(i,s,e)=>({minVersion:i,installedVersion:s,latestVersion:e,packageName:"Homebridge"}),sr=()=>({packageName:"Homebridge"}),dr=(i,s,e)=>({minVersion:i,installedVersion:s,latestVersion:e,packageName:"Homebridge UI"}),cr=()=>({packageName:"Homebridge UI"});function mr(i,s){if(i&1&&(l(0,"li",14)(1,"div",17),v(2,"i",18),r(),l(3,"div",19),c(4),m(5,"translate"),r()()),i&2){let e=p(2);o(4),y(" ",z(5,1,"plugins.compat.node_too_low",le(4,Fi,e.plugin.displayName,e.nodeMinVersion,e.nodeInstalledVersion))," ")}}function pr(i,s){if(i&1&&(l(0,"li",14)(1,"div",17),v(2,"i",18),r(),l(3,"div",19),c(4),m(5,"translate"),r()()),i&2){let e=p(2);o(4),y(" ",z(5,1,"plugins.compat.hb_too_low",le(4,Fi,e.plugin.displayName,e.hbMinVersion,e.hbInstalledVersion))," ")}}function gr(i,s){if(i&1&&(l(0,"div",11),v(1,"i",12),r(),l(2,"ul",13),u(3,mr,6,8,"li",14),u(4,pr,6,8,"li",14),r(),l(5,"ngb-alert",15)(6,"p",16),c(7),m(8,"translate"),r()()),i&2){let e=p();o(),J(Rt("",e.action==="install"?"far fa-arrow-alt-circle-down":e.action==="update"?"far fa-arrow-alt-circle-up":"fas fa-code-compare"," primary-text")),o(2),_(e.isValidNode?-1:3),o(),_(e.isValidHb?-1:4),o(),x("dismissible",!1),o(2),k(g(8,7,"common.phrases.are_you_sure"))}}function ur(i,s){if(i&1&&(l(0,"div",11),v(1,"i",20),r(),l(2,"ul",13)(3,"li",14)(4,"div",17),v(5,"i",18),r(),l(6,"div",19),c(7),m(8,"translate"),r()()(),l(9,"ngb-alert",15)(10,"p",21),c(11),m(12,"translate"),r(),l(13,"p",16)(14,"a",22),c(15),m(16,"translate"),v(17,"i",23),r()()()),i&2){let e=p();o(7),y(" ",z(8,4,"plugins.compat.hb_node_too_low",le(12,lr,e.nodeMinVersion,e.nodeInstalledVersion,e.plugin.latestVersion))," "),o(2),x("dismissible",!1),o(2),k(z(12,7,"plugins.compat.node_first",oe(16,sr))),o(4),y(" ",g(16,10,"plugins.compat.node_link")," ")}}function _r(i,s){if(i&1&&(l(0,"div",11),v(1,"i",20),r(),l(2,"ul",13)(3,"li",14)(4,"div",17),v(5,"i",18),r(),l(6,"div",19),c(7),m(8,"translate"),r()()(),l(9,"ngb-alert",15)(10,"p",21),c(11),m(12,"translate"),r(),l(13,"p",16)(14,"a",22),c(15),m(16,"translate"),v(17,"i",23),r()()()),i&2){let e=p();o(7),y(" ",z(8,4,"plugins.compat.hb_node_too_low",le(12,dr,e.nodeMinVersion,e.nodeInstalledVersion,e.plugin.latestVersion))," "),o(2),x("dismissible",!1),o(2),k(z(12,7,"plugins.compat.node_first",oe(16,cr))),o(4),y(" ",g(16,10,"plugins.compat.node_link")," ")}}function fr(i,s){if(i&1){let e=T();l(0,"button",24),E("click",function(){B(e);let t=p();return w(t.dismissModal())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"form.button_close")," "))}function hr(i,s){if(i&1){let e=T();l(0,"button",24),E("click",function(){B(e);let t=p();return w(t.dismissModal())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"form.button_close")," "))}function br(i,s){if(i&1){let e=T();l(0,"button",25),E("click",function(){B(e);let t=p();return w(t.closeModal())}),c(1),m(2,"translate"),r()}i&2&&(o(),y(" ",g(2,1,"form.button_continue")," "))}var Ui=(()=>{class i{$activeModal=b(q);$settings=b(W);modalData=b(dt);plugin=this.modalData.plugin;isValidNode=this.modalData.isValidNode??!1;isValidHb=this.modalData.isValidHb??!1;action=this.modalData.action??null;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;ngOnInit(){let e=this.plugin;if(!e){console.error("PluginCompatibilityComponent: plugin not provided"),this.$activeModal.dismiss("Missing required data");return}this.nodeMinVersion=(0,$t.minVersion)(e.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,$t.minVersion)(e.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close(!0)}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["ng-component"]],decls:18,vars:16,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger"],[1,"text-center","mb-3"],[2,"font-size","75px"],[1,"list-group","list-group-box","mb-3","text-start"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],["type","warning",1,"mb-0",3,"dismissible"],[1,"text-center","mb-0"],[1,"me-3"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],[1,"text-start","flex-grow-1"],[1,"fab","fa-node-js","primary-text",2,"font-size","75px"],[1,"text-center","mb-1"],["href","https://homebridge.io/w/JTKEF","target","_blank","rel","noopener noreferrer"],[1,"fa","fa-external-link-alt"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click"]],template:function(n,t){n&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),c(3),m(4,"translate"),r(),l(5,"button",3),m(6,"translate"),E("click",function(){return t.dismissModal()}),r()(),l(7,"div",4),u(8,gr,9,9),u(9,ur,18,17),u(10,_r,18,17),r(),l(11,"div",5)(12,"div",6),u(13,fr,3,3,"button",7),r(),l(14,"div",8),u(15,hr,3,3,"button",7),r(),l(16,"div",9),u(17,br,3,3,"button",10),r()()()),n&2&&(o(3),k(g(4,8,"plugins.compat.title")),o(2),I("aria-label",g(6,10,"form.button_close")),o(3),_(t.plugin&&!oe(12,yt).includes(t.plugin.name)?8:-1),o(),_(t.plugin&&t.plugin.name==="homebridge"?9:-1),o(),_(t.plugin&&t.plugin.name==="homebridge-config-ui-x"?10:-1),o(3),_(t.plugin&&!oe(13,yt).includes(t.plugin.name)?13:-1),o(2),_(t.plugin&&oe(14,yt).includes(t.plugin.name)?15:-1),o(2),_(t.plugin&&!oe(15,yt).includes(t.plugin.name)?17:-1))},dependencies:[De,j],encapsulation:2})}return i})();var ji=Q(Ge(),1);var Hi=(()=>{class i{$api=b(N);$toastr=b(U);$translate=b(F);downloadDumpFile(){return S(this,null,function*(){try{let e=yield this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"});(0,ji.saveAs)(e.body,"homebridge-deconz.json.gz")}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=L({type:i,selectors:[["app-homebridge-deconz"]],decls:4,vars:3,consts:[["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-download"]],template:function(n,t){n&1&&(V(0,"button",0),ee("click",function(){return t.downloadDumpFile()}),G(1,"i",1),c(2),m(3,"translate"),P()),n&2&&(o(2),y(" ",g(3,1,"plugins.settings.custom.download_dump_file "),`
@@ -1 +1 @@
1
- import{a as W}from"./chunk-ZLBX5GO7.js";import{e as T}from"./chunk-6LMBPSI7.js";import{a as C}from"./chunk-GTDQP2AN.js";import"./chunk-AJ6G5D4H.js";import{b as P}from"./chunk-5KS2DH7B.js";import{C as A,D as B,F as N,I as U}from"./chunk-L56VCSQ2.js";import{Ab as v,Dc as c,Ec as l,Jb as o,Kb as n,Kc as E,Lb as f,Qc as M,Rb as O,Yb as R,Za as e,Zb as h,aa as m,ga as y,ha as I,ic as D,jc as b,kc as a,lc as d,ma as S,mc as g,nb as k,sa as p,w as x,zb as u}from"./chunk-UX5CFJ7O.js";import{h as w}from"./chunk-B4AJQJMI.js";function j(i,_){if(i&1&&(o(0,"div",7),a(1),n()),i&2){let t=h();e(),d(t.error())}}function q(i,_){if(i&1&&(o(0,"p",9),a(1),c(2,"translate"),n(),o(3,"div",10)(4,"div",11)(5,"span"),f(6,"i"),a(7),c(8,"translate"),n()(),o(9,"div",11)(10,"span"),f(11,"i"),a(12),c(13,"translate"),n()()()),i&2){let t=h();e(),d(l(2,9,"restart.please_wait_while_server_restarts")),e(5),b(t.uiIcon()),e(),g(" ",l(8,11,"restart.ui_online")," "),e(3),D("grey-text",!t.uiOnline()),e(),b(t.serviceIcon()),e(),g(" ",l(13,13,"restart.service_ready")," ")}}function z(i,_){if(i&1){let t=O();o(0,"p",14)(1,"button",15),R("click",function(){y(t);let s=h(2);return I(s.viewLogs())}),a(2),c(3,"translate"),n()()}i&2&&(e(2),d(l(3,1,"menu.tooltip_view_logs")))}function L(i,_){if(i&1&&(o(0,"div",8)(1,"p"),a(2),c(3,"translate"),n(),o(4,"p",12),a(5),c(6,"translate"),o(7,"span",13),a(8),n()(),u(9,z,4,3,"p",14),n()),i&2){let t=h();e(2),d(l(3,4,"restart.server_is_taking_long_time_to_restart")),e(3),g(" ",l(6,6,"restart.label_restart_command_executed"),": "),e(3),d(t.resp().command||"End Process"),e(),v(t.uiOnline()?9:-1)}}var et=(()=>{class i{$api=m(U);$router=m(T);$settings=m(P);$toastr=m(N);$translate=m(A);$ws=m(W);destroyRef=m(S);uiOnline=p(!1);error=p(!1);resp=p({});timeout=p(!1);uiIcon=E(()=>this.uiOnline()?"far fa-check-circle":"fas fa-circle-notch fa-spin");serviceIcon=E(()=>this.uiOnline()?"fas fa-circle-notch fa-spin":"far fa-circle");io;webrootChanged=!1;statusCheckActive=p(!1);ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.connected&&(this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})),this.io.socket.on("homebridge-status",s=>{if(this.statusCheckActive()&&(this.uiOnline.set(!0),s.status==="ok"||s.status==="pending"))if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!M()){let $=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=$?`/${$}/`:"/"}else this.$router.navigate(["/"])}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline.set(!0),this.checkIfServerUp()):this.performRestart()}ngOnDestroy(){this.io.end(),this.statusCheckActive.set(!1)}viewLogs(){this.$router.navigate(["/logs"])}performRestart(){return w(this,null,function*(){try{let t=this.$settings.originalWebroot||"",r=this.$settings.webroot||"";this.webrootChanged=t!==r&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield this.$api.put("/server/webroot",{webroot:r}));try{let s=yield this.$api.put("/server/restart",{});this.resp.set(s),this.checkIfServerUp(),s.restartingUI||this.uiOnline.set(!0)}catch(s){console.error(s),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}catch(t){console.error("Failed to update webroot:",t);try{let r=yield this.$api.put("/server/restart",{});this.resp.set(r),this.checkIfServerUp(),r.restartingUI||this.uiOnline.set(!0)}catch(r){console.error(r),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}})}checkIfServerUp(){x(7e3).pipe(C(this.destroyRef)).subscribe(()=>{this.statusCheckActive.set(!0)}),x(4e4).pipe(C(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(r){return new(r||i)};static \u0275cmp=k({type:i,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(r,s){r&1&&(o(0,"div",0)(1,"h3",1),a(2),c(3,"translate"),n()(),o(4,"div",2)(5,"div",3),f(6,"i",4),n(),o(7,"div",5)(8,"h4",6),a(9),c(10,"translate"),n(),u(11,j,2,1,"div",7)(12,q,14,15),u(13,L,10,8,"div",8),n()()),r&2&&(e(2),d(l(3,4,"menu.restart.title")),e(7),d(l(10,6,"restart.title_restart")),e(2),v(s.error()?11:12),e(2),v(s.timeout()?13:-1))},dependencies:[B],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return i})();export{et as RestartComponent};
1
+ import{a as W}from"./chunk-VZQ3UMBD.js";import{e as T}from"./chunk-7DSHUQQE.js";import{a as C}from"./chunk-C64AHVUO.js";import"./chunk-XFKYZXKP.js";import{b as P}from"./chunk-DZ4GN7CJ.js";import{C as A,D as B,F as N,I as U}from"./chunk-2J2ADNZ3.js";import{Ab as v,Dc as c,Ec as l,Jb as o,Kb as n,Kc as E,Lb as f,Qc as M,Rb as O,Yb as R,Za as e,Zb as h,aa as m,ga as y,ha as I,ic as D,jc as b,kc as a,lc as d,ma as S,mc as g,nb as k,sa as p,w as x,zb as u}from"./chunk-F5MBSCH4.js";import{h as w}from"./chunk-B4AJQJMI.js";function j(i,_){if(i&1&&(o(0,"div",7),a(1),n()),i&2){let t=h();e(),d(t.error())}}function q(i,_){if(i&1&&(o(0,"p",9),a(1),c(2,"translate"),n(),o(3,"div",10)(4,"div",11)(5,"span"),f(6,"i"),a(7),c(8,"translate"),n()(),o(9,"div",11)(10,"span"),f(11,"i"),a(12),c(13,"translate"),n()()()),i&2){let t=h();e(),d(l(2,9,"restart.please_wait_while_server_restarts")),e(5),b(t.uiIcon()),e(),g(" ",l(8,11,"restart.ui_online")," "),e(3),D("grey-text",!t.uiOnline()),e(),b(t.serviceIcon()),e(),g(" ",l(13,13,"restart.service_ready")," ")}}function z(i,_){if(i&1){let t=O();o(0,"p",14)(1,"button",15),R("click",function(){y(t);let s=h(2);return I(s.viewLogs())}),a(2),c(3,"translate"),n()()}i&2&&(e(2),d(l(3,1,"menu.tooltip_view_logs")))}function L(i,_){if(i&1&&(o(0,"div",8)(1,"p"),a(2),c(3,"translate"),n(),o(4,"p",12),a(5),c(6,"translate"),o(7,"span",13),a(8),n()(),u(9,z,4,3,"p",14),n()),i&2){let t=h();e(2),d(l(3,4,"restart.server_is_taking_long_time_to_restart")),e(3),g(" ",l(6,6,"restart.label_restart_command_executed"),": "),e(3),d(t.resp().command||"End Process"),e(),v(t.uiOnline()?9:-1)}}var et=(()=>{class i{$api=m(U);$router=m(T);$settings=m(P);$toastr=m(N);$translate=m(A);$ws=m(W);destroyRef=m(S);uiOnline=p(!1);error=p(!1);resp=p({});timeout=p(!1);uiIcon=E(()=>this.uiOnline()?"far fa-check-circle":"fas fa-circle-notch fa-spin");serviceIcon=E(()=>this.uiOnline()?"fas fa-circle-notch fa-spin":"far fa-circle");io;webrootChanged=!1;statusCheckActive=p(!1);ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.connected&&(this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})),this.io.socket.on("homebridge-status",s=>{if(this.statusCheckActive()&&(this.uiOnline.set(!0),s.status==="ok"||s.status==="pending"))if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!M()){let $=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=$?`/${$}/`:"/"}else this.$router.navigate(["/"])}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline.set(!0),this.checkIfServerUp()):this.performRestart()}ngOnDestroy(){this.io.end(),this.statusCheckActive.set(!1)}viewLogs(){this.$router.navigate(["/logs"])}performRestart(){return w(this,null,function*(){try{let t=this.$settings.originalWebroot||"",r=this.$settings.webroot||"";this.webrootChanged=t!==r&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield this.$api.put("/server/webroot",{webroot:r}));try{let s=yield this.$api.put("/server/restart",{});this.resp.set(s),this.checkIfServerUp(),s.restartingUI||this.uiOnline.set(!0)}catch(s){console.error(s),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}catch(t){console.error("Failed to update webroot:",t);try{let r=yield this.$api.put("/server/restart",{});this.resp.set(r),this.checkIfServerUp(),r.restartingUI||this.uiOnline.set(!0)}catch(r){console.error(r),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}})}checkIfServerUp(){x(7e3).pipe(C(this.destroyRef)).subscribe(()=>{this.statusCheckActive.set(!0)}),x(4e4).pipe(C(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(r){return new(r||i)};static \u0275cmp=k({type:i,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(r,s){r&1&&(o(0,"div",0)(1,"h3",1),a(2),c(3,"translate"),n()(),o(4,"div",2)(5,"div",3),f(6,"i",4),n(),o(7,"div",5)(8,"h4",6),a(9),c(10,"translate"),n(),u(11,j,2,1,"div",7)(12,q,14,15),u(13,L,10,8,"div",8),n()()),r&2&&(e(2),d(l(3,4,"menu.restart.title")),e(7),d(l(10,6,"restart.title_restart")),e(2),v(s.error()?11:12),e(2),v(s.timeout()?13:-1))},dependencies:[B],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return i})();export{et as RestartComponent};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-Y7EASXJH.js";import"./chunk-B4AJQJMI.js";export default a();
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-KB7D5SFS.js";import"./chunk-B4AJQJMI.js";export default a();