homebridge-config-ui-x 5.4.2-beta.11 → 5.4.2-beta.13

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 (77) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/package.json +2 -2
  3. package/public/assets/monaco-0.52.2/ThirdPartyNotices.txt +448 -0
  4. package/public/assets/monaco-0.52.2/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  5. package/public/assets/monaco-0.52.2/min/vs/base/worker/workerMain.js +31 -0
  6. package/public/assets/monaco-0.52.2/min/vs/basic-languages/shell/shell.js +10 -0
  7. package/public/assets/monaco-0.52.2/min/vs/editor/editor.main.css +8 -0
  8. package/public/assets/monaco-0.52.2/min/vs/editor/editor.main.js +798 -0
  9. package/public/assets/monaco-0.52.2/min/vs/language/json/jsonMode.js +19 -0
  10. package/public/assets/monaco-0.52.2/min/vs/language/json/jsonWorker.js +42 -0
  11. package/public/assets/monaco-0.52.2/min/vs/loader.js +11 -0
  12. package/public/assets/monaco-0.52.2/package.json +82 -0
  13. package/public/{chunk-H7QK4UWE.js → chunk-2IWIAU2N.js} +1 -1
  14. package/public/{chunk-EJR2QDKK.js → chunk-42AMCJPR.js} +1 -1
  15. package/public/{chunk-6ZC7ILBV.js → chunk-4LA6OGBW.js} +1 -1
  16. package/public/{chunk-3RRXEZSG.js → chunk-4PWEKTPB.js} +1 -1
  17. package/public/{chunk-KPNFVGDI.js → chunk-4UK45Y6B.js} +1 -1
  18. package/public/{chunk-A5BSXWNZ.js → chunk-5QXUZNMR.js} +1 -1
  19. package/public/{chunk-JTET2LBG.js → chunk-5VBFQBME.js} +1 -1
  20. package/public/{chunk-OATKJLCB.js → chunk-6FMI6WEI.js} +1 -1
  21. package/public/chunk-6JF3ALTY.js +20 -0
  22. package/public/{chunk-OFEHE5GZ.js → chunk-772O3AIU.js} +1 -1
  23. package/public/{chunk-FBCBMGIP.js → chunk-7L2FPZ3V.js} +1 -1
  24. package/public/{chunk-XTY2KYXP.js → chunk-ARGG2BC2.js} +1 -1
  25. package/public/{chunk-PZZT4VNR.js → chunk-B6T4XX7B.js} +1 -1
  26. package/public/{chunk-4XBQJO35.js → chunk-BC5JLQKU.js} +1 -1
  27. package/public/{chunk-NZ2CALQB.js → chunk-BTBRQOOI.js} +1 -1
  28. package/public/{chunk-PTSC5F2P.js → chunk-BUPLBXR6.js} +1 -1
  29. package/public/{chunk-JDVD7LQD.js → chunk-CH67GDTM.js} +1 -1
  30. package/public/{chunk-FYS5ASTT.js → chunk-DBPQNHZE.js} +1 -1
  31. package/public/{chunk-7P7IHFIJ.js → chunk-DJN2ZIUW.js} +1 -1
  32. package/public/{chunk-FVUBTHUM.js → chunk-DMJJTFEA.js} +1 -1
  33. package/public/{chunk-5KJGTF6Y.js → chunk-DMLIDE5T.js} +1 -1
  34. package/public/{chunk-2CTE2QUX.js → chunk-EQPGHHJX.js} +1 -1
  35. package/public/{chunk-JPXYPBKN.js → chunk-FM4QGFLK.js} +1 -1
  36. package/public/{chunk-6DCCDZIS.js → chunk-G4WLHM4B.js} +1 -1
  37. package/public/{chunk-DZTCWCZ7.js → chunk-GG6UJRI3.js} +1 -1
  38. package/public/{chunk-KRAJTHAJ.js → chunk-IR4BD5UA.js} +1 -1
  39. package/public/{chunk-LVK4VN3L.js → chunk-MACP3TMM.js} +2 -2
  40. package/public/{chunk-LL7LPAW3.js → chunk-NSRNEOZ5.js} +1 -1
  41. package/public/{chunk-YEWNNM3W.js → chunk-NT2IDUZH.js} +1 -1
  42. package/public/{chunk-ESJMERYC.js → chunk-PF7T6CNZ.js} +1 -1
  43. package/public/{chunk-QJLUKA7K.js → chunk-PTLIFA7V.js} +1 -1
  44. package/public/{chunk-J2FFNLDN.js → chunk-QAAVQMQN.js} +1 -1
  45. package/public/{chunk-KPXKASBA.js → chunk-QO3ZO6NT.js} +1 -1
  46. package/public/{chunk-5ZP3WPE2.js → chunk-QQ23HGQR.js} +1 -1
  47. package/public/{chunk-5SEBIESV.js → chunk-RDBOE7IA.js} +1 -1
  48. package/public/{chunk-L4NPE5FG.js → chunk-RHE662Q6.js} +1 -1
  49. package/public/{chunk-24NX5AEG.js → chunk-RSMIPIMV.js} +2 -2
  50. package/public/{chunk-XUA7L6VK.js → chunk-TLGTO2YA.js} +1 -1
  51. package/public/{chunk-LKXRCA6I.js → chunk-V2BWLBP4.js} +1 -1
  52. package/public/chunk-VBPDM7HE.js +1 -0
  53. package/public/{chunk-JDT4PK65.js → chunk-VGHYKIOX.js} +1 -1
  54. package/public/{chunk-G3CEW6AU.js → chunk-VR6NEEC4.js} +1 -1
  55. package/public/{chunk-RXKJ7QT6.js → chunk-WNX6NDS7.js} +1 -1
  56. package/public/{chunk-KVIPVTHB.js → chunk-Y6EULWU5.js} +1 -1
  57. package/public/{chunk-SMILXORO.js → chunk-YHZ77E6M.js} +1 -1
  58. package/public/{chunk-NFWGYMP7.js → chunk-YI7M7OR5.js} +1 -1
  59. package/public/{chunk-7MHWW2YA.js → chunk-YNGEVP3I.js} +1 -1
  60. package/public/{chunk-JRB66HAQ.js → chunk-Z4QWKXZT.js} +1 -1
  61. package/public/index.html +1 -1
  62. package/public/{main-L2HWNI6F.js → main-YAEB7GU5.js} +1 -1
  63. package/public/assets/monaco-0.21.3/README.md +0 -96
  64. package/public/assets/monaco-0.21.3/ThirdPartyNotices.txt +0 -283
  65. package/public/assets/monaco-0.21.3/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  66. package/public/assets/monaco-0.21.3/min/vs/base/worker/workerMain.js +0 -160
  67. package/public/assets/monaco-0.21.3/min/vs/basic-languages/shell/shell.js +0 -7
  68. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.css +0 -6
  69. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.js +0 -2368
  70. package/public/assets/monaco-0.21.3/min/vs/editor/editor.main.nls.js +0 -39
  71. package/public/assets/monaco-0.21.3/min/vs/language/json/jsonMode.js +0 -7
  72. package/public/assets/monaco-0.21.3/min/vs/language/json/jsonWorker.js +0 -7
  73. package/public/assets/monaco-0.21.3/min/vs/loader.js +0 -38
  74. package/public/assets/monaco-0.21.3/package.json +0 -38
  75. package/public/chunk-FPGELCHY.js +0 -20
  76. package/public/chunk-NLXPU33I.js +0 -1
  77. /package/public/assets/{monaco-0.21.3 → monaco-0.52.2}/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- import{a as Ag}from"./chunk-7MHWW2YA.js";import{a as tl,c as Tg,d as Pg,e as Ds,f as ri,g as CS}from"./chunk-7P7IHFIJ.js";import{a as kg}from"./chunk-NFWGYMP7.js";import{a as Ig}from"./chunk-77JZBWAC.js";import{a as jg}from"./chunk-RXKJ7QT6.js";import{a as Sg,b as Cg,c as xg}from"./chunk-AE7VAWOU.js";import{a as ko}from"./chunk-V2P2FPJ7.js";import{a as zg}from"./chunk-BU65ZOCD.js";import{a as gn,b as _n}from"./chunk-YATJTZML.js";import{a as mn,b as pn}from"./chunk-ZHPB347D.js";import{a as Hg}from"./chunk-4WAU3AJS.js";import{a as nn,b as an,c as ln,d as cn,e as dn,f as un,g as Ns,m as Re,n as et,o as bg,p as fg,q as yg,r as vg,s as wg,t as Ei}from"./chunk-EA3EXGPZ.js";import{A as wo,a as cg,b as Ni,c as js,e as yt,f as dg,h as ug,i as gg,j as mg,k as pg,l as Di,m as _g,o as Bi,r as As,s as ns,t as as,y as hg,z as Wt}from"./chunk-CNMM42I5.js";import{a as Ri}from"./chunk-XTY2KYXP.js";import{d as oi}from"./chunk-UOLP7IQJ.js";import{b as Me}from"./chunk-KPXKASBA.js";import{k as He,m as Ui,n as ve}from"./chunk-H7QK4UWE.js";import{a as ke,b as Fe}from"./chunk-G7FA4DP4.js";import{d as lg}from"./chunk-6GMXEQVA.js";import{$ as vo,$a as Qu,Ac as og,Bc as rg,Ca as Ti,Cc as Pe,D as Gu,Da as Zu,Dc as Gt,Ec as os,Fa as Ts,Fc as Et,Gc as zs,Hb as W,Ib as I,Jb as T,Jc as H,Kc as C,Lb as ut,Lc as Ke,M as xs,Mb as gt,Nb as mt,Ob as y,Pb as p,Qb as m,Rb as x,Sb as Xr,Sc as pt,Tb as en,Tc as V,Ub as tn,Uc as Ai,Vb as tg,Wb as ig,Wc as ng,Xa as _e,Y as Za,_b as $,a as J,ab as u,b as xe,bc as R,c as qu,cc as sn,dc as b,e as h,ea as Wu,fa as Pt,fb as Zr,g as je,ga as Is,gb as mi,h as G,hc as Qa,ia as Yu,ib as ts,ic as Xa,id as Ut,ja as Ju,jc as el,jd as rs,k as Ku,ka as z,kc as Pi,kd as _t,lc as zi,mb as Q,mc as sg,n as Tt,nb as Ps,nc as Lt,o as Ja,ob as is,oc as ji,pb as Xu,pc as Z,q as Vu,qa as E,qc as w,ra as U,rc as K,rd as rn,sb as ce,sc as M,tc as ss,ub as eg,uc as on,v as $u,vb as Qr,w as le,x as Lu,xc as Ae,yc as Ne,yd as ag,za as Jr,zc as De}from"./chunk-H36QJYLQ.js";var Co=h(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.regexpCode=ye.getEsmExportName=ye.getProperty=ye.safeStringify=ye.stringify=ye.strConcat=ye.addCodeArg=ye.str=ye._=ye.nil=ye._Code=ye.Name=ye.IDENTIFIER=ye._CodeOrName=void 0;var Ho=class{};ye._CodeOrName=Ho;ye.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var ls=class extends Ho{constructor(i){if(super(),!ye.IDENTIFIER.test(i))throw new Error("CodeGen: name must be a valid identifier");this.str=i}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};ye.Name=ls;var Rt=class extends Ho{constructor(i){super(),this._items=typeof i=="string"?[i]:i}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let i=this._items[0];return i===""||i==='""'}get str(){var i;return(i=this._str)!==null&&i!==void 0?i:this._str=this._items.reduce((t,s)=>`${t}${s}`,"")}get names(){var i;return(i=this._names)!==null&&i!==void 0?i:this._names=this._items.reduce((t,s)=>(s instanceof ls&&(t[s.str]=(t[s.str]||0)+1),t),{})}};ye._Code=Rt;ye.nil=new Rt("");function Ng(e,...i){let t=[e[0]],s=0;for(;s<i.length;)sl(t,i[s]),t.push(e[++s]);return new Rt(t)}ye._=Ng;var il=new Rt("+");function Dg(e,...i){let t=[So(e[0])],s=0;for(;s<i.length;)t.push(il),sl(t,i[s]),t.push(il,So(e[++s]));return xS(t),new Rt(t)}ye.str=Dg;function sl(e,i){i instanceof Rt?e.push(...i._items):i instanceof ls?e.push(i):e.push(PS(i))}ye.addCodeArg=sl;function xS(e){let i=1;for(;i<e.length-1;){if(e[i]===il){let t=IS(e[i-1],e[i+1]);if(t!==void 0){e.splice(i-1,3,t);continue}e[i++]="+"}i++}}function IS(e,i){if(i==='""')return e;if(e==='""')return i;if(typeof e=="string")return i instanceof ls||e[e.length-1]!=='"'?void 0:typeof i!="string"?`${e.slice(0,-1)}${i}"`:i[0]==='"'?e.slice(0,-1)+i.slice(1):void 0;if(typeof i=="string"&&i[0]==='"'&&!(e instanceof ls))return`"${e}${i.slice(1)}`}function TS(e,i){return i.emptyStr()?e:e.emptyStr()?i:Dg`${e}${i}`}ye.strConcat=TS;function PS(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:So(Array.isArray(e)?e.join(","):e)}function zS(e){return new Rt(So(e))}ye.stringify=zS;function So(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}ye.safeStringify=So;function jS(e){return typeof e=="string"&&ye.IDENTIFIER.test(e)?new Rt(`.${e}`):Ng`[${e}]`}ye.getProperty=jS;function AS(e){if(typeof e=="string"&&ye.IDENTIFIER.test(e))return new Rt(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}ye.getEsmExportName=AS;function NS(e){return new Rt(e.toString())}ye.regexpCode=NS});var nl=h(wt=>{"use strict";Object.defineProperty(wt,"__esModule",{value:!0});wt.ValueScope=wt.ValueScopeName=wt.Scope=wt.varKinds=wt.UsedValueState=void 0;var vt=Co(),ol=class extends Error{constructor(i){super(`CodeGen: "code" for ${i} not defined`),this.value=i.value}},hn=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(hn||(wt.UsedValueState=hn={}));wt.varKinds={const:new vt.Name("const"),let:new vt.Name("let"),var:new vt.Name("var")};var bn=class{constructor({prefixes:i,parent:t}={}){this._names={},this._prefixes=i,this._parent=t}toName(i){return i instanceof vt.Name?i:this.name(i)}name(i){return new vt.Name(this._newName(i))}_newName(i){let t=this._names[i]||this._nameGroup(i);return`${i}${t.index++}`}_nameGroup(i){var t,s;if(!((s=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||s===void 0)&&s.has(i)||this._prefixes&&!this._prefixes.has(i))throw new Error(`CodeGen: prefix "${i}" is not allowed in this scope`);return this._names[i]={prefix:i,index:0}}};wt.Scope=bn;var fn=class extends vt.Name{constructor(i,t){super(t),this.prefix=i}setValue(i,{property:t,itemIndex:s}){this.value=i,this.scopePath=(0,vt._)`.${new vt.Name(t)}[${s}]`}};wt.ValueScopeName=fn;var DS=(0,vt._)`\n`,rl=class extends bn{constructor(i){super(i),this._values={},this._scope=i.scope,this.opts=xe(J({},i),{_n:i.lines?DS:vt.nil})}get(){return this._scope}name(i){return new fn(i,this._newName(i))}value(i,t){var s;if(t.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(i),{prefix:r}=o,n=(s=t.key)!==null&&s!==void 0?s:t.ref,a=this._values[r];if(a){let d=a.get(n);if(d)return d}else a=this._values[r]=new Map;a.set(n,o);let l=this._scope[r]||(this._scope[r]=[]),c=l.length;return l[c]=t.ref,o.setValue(t,{property:r,itemIndex:c}),o}getValue(i,t){let s=this._values[i];if(s)return s.get(t)}scopeRefs(i,t=this._values){return this._reduceValues(t,s=>{if(s.scopePath===void 0)throw new Error(`CodeGen: name "${s}" has no value`);return(0,vt._)`${i}${s.scopePath}`})}scopeCode(i=this._values,t,s){return this._reduceValues(i,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},t,s)}_reduceValues(i,t,s={},o){let r=vt.nil;for(let n in i){let a=i[n];if(!a)continue;let l=s[n]=s[n]||new Map;a.forEach(c=>{if(l.has(c))return;l.set(c,hn.Started);let d=t(c);if(d){let g=this.opts.es5?wt.varKinds.var:wt.varKinds.const;r=(0,vt._)`${r}${g} ${c} = ${d};${this.opts._n}`}else if(d=o?.(c))r=(0,vt._)`${r}${d}${this.opts._n}`;else throw new ol(c);l.set(c,hn.Completed)})}return r}};wt.ValueScope=rl});var ee=h(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.or=de.and=de.not=de.CodeGen=de.operators=de.varKinds=de.ValueScopeName=de.ValueScope=de.Scope=de.Name=de.regexpCode=de.stringify=de.getProperty=de.nil=de.strConcat=de.str=de._=void 0;var he=Co(),Yt=nl(),Fi=Co();Object.defineProperty(de,"_",{enumerable:!0,get:function(){return Fi._}});Object.defineProperty(de,"str",{enumerable:!0,get:function(){return Fi.str}});Object.defineProperty(de,"strConcat",{enumerable:!0,get:function(){return Fi.strConcat}});Object.defineProperty(de,"nil",{enumerable:!0,get:function(){return Fi.nil}});Object.defineProperty(de,"getProperty",{enumerable:!0,get:function(){return Fi.getProperty}});Object.defineProperty(de,"stringify",{enumerable:!0,get:function(){return Fi.stringify}});Object.defineProperty(de,"regexpCode",{enumerable:!0,get:function(){return Fi.regexpCode}});Object.defineProperty(de,"Name",{enumerable:!0,get:function(){return Fi.Name}});var Hn=nl();Object.defineProperty(de,"Scope",{enumerable:!0,get:function(){return Hn.Scope}});Object.defineProperty(de,"ValueScope",{enumerable:!0,get:function(){return Hn.ValueScope}});Object.defineProperty(de,"ValueScopeName",{enumerable:!0,get:function(){return Hn.ValueScopeName}});Object.defineProperty(de,"varKinds",{enumerable:!0,get:function(){return Hn.varKinds}});de.operators={GT:new he._Code(">"),GTE:new he._Code(">="),LT:new he._Code("<"),LTE:new he._Code("<="),EQ:new he._Code("==="),NEQ:new he._Code("!=="),NOT:new he._Code("!"),OR:new he._Code("||"),AND:new he._Code("&&"),ADD:new he._Code("+")};var pi=class{optimizeNodes(){return this}optimizeNames(i,t){return this}},al=class extends pi{constructor(i,t,s){super(),this.varKind=i,this.name=t,this.rhs=s}render({es5:i,_n:t}){let s=i?Yt.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${s} ${this.name}${o};`+t}optimizeNames(i,t){if(i[this.name.str])return this.rhs&&(this.rhs=Bs(this.rhs,i,t)),this}get names(){return this.rhs instanceof he._CodeOrName?this.rhs.names:{}}},vn=class extends pi{constructor(i,t,s){super(),this.lhs=i,this.rhs=t,this.sideEffects=s}render({_n:i}){return`${this.lhs} = ${this.rhs};`+i}optimizeNames(i,t){if(!(this.lhs instanceof he.Name&&!i[this.lhs.str]&&!this.sideEffects))return this.rhs=Bs(this.rhs,i,t),this}get names(){let i=this.lhs instanceof he.Name?{}:J({},this.lhs.names);return kn(i,this.rhs)}},ll=class extends vn{constructor(i,t,s,o){super(i,s,o),this.op=t}render({_n:i}){return`${this.lhs} ${this.op}= ${this.rhs};`+i}},cl=class extends pi{constructor(i){super(),this.label=i,this.names={}}render({_n:i}){return`${this.label}:`+i}},dl=class extends pi{constructor(i){super(),this.label=i,this.names={}}render({_n:i}){return`break${this.label?` ${this.label}`:""};`+i}},ul=class extends pi{constructor(i){super(),this.error=i}render({_n:i}){return`throw ${this.error};`+i}get names(){return this.error.names}},gl=class extends pi{constructor(i){super(),this.code=i}render({_n:i}){return`${this.code};`+i}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(i,t){return this.code=Bs(this.code,i,t),this}get names(){return this.code instanceof he._CodeOrName?this.code.names:{}}},xo=class extends pi{constructor(i=[]){super(),this.nodes=i}render(i){return this.nodes.reduce((t,s)=>t+s.render(i),"")}optimizeNodes(){let{nodes:i}=this,t=i.length;for(;t--;){let s=i[t].optimizeNodes();Array.isArray(s)?i.splice(t,1,...s):s?i[t]=s:i.splice(t,1)}return i.length>0?this:void 0}optimizeNames(i,t){let{nodes:s}=this,o=s.length;for(;o--;){let r=s[o];r.optimizeNames(i,t)||(BS(i,r.names),s.splice(o,1))}return s.length>0?this:void 0}get names(){return this.nodes.reduce((i,t)=>cs(i,t.names),{})}},_i=class extends xo{render(i){return"{"+i._n+super.render(i)+"}"+i._n}},ml=class extends xo{},pl=(()=>{class e extends _i{}return e.kind="else",e})(),yn=(()=>{class e extends _i{constructor(t,s){super(s),this.condition=t}render(t){let s=`if(${this.condition})`+super.render(t);return this.else&&(s+="else "+this.else.render(t)),s}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let s=this.else;if(s){let o=s.optimizeNodes();s=this.else=Array.isArray(o)?new pl(o):o}if(s)return t===!1?s instanceof e?s:s.nodes:this.nodes.length?this:new e(Fg(t),s instanceof e?[s]:s.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,s){var o;if(this.else=(o=this.else)===null||o===void 0?void 0:o.optimizeNames(t,s),!!(super.optimizeNames(t,s)||this.else))return this.condition=Bs(this.condition,t,s),this}get names(){let t=super.names;return kn(t,this.condition),this.else&&cs(t,this.else.names),t}}return e.kind="if",e})(),Sn=(()=>{class e extends _i{}return e.kind="for",e})(),_l=class extends Sn{constructor(i){super(),this.iteration=i}render(i){return`for(${this.iteration})`+super.render(i)}optimizeNames(i,t){if(super.optimizeNames(i,t))return this.iteration=Bs(this.iteration,i,t),this}get names(){return cs(super.names,this.iteration.names)}},hl=class extends Sn{constructor(i,t,s,o){super(),this.varKind=i,this.name=t,this.from=s,this.to=o}render(i){let t=i.es5?Yt.varKinds.var:this.varKind,{name:s,from:o,to:r}=this;return`for(${t} ${s}=${o}; ${s}<${r}; ${s}++)`+super.render(i)}get names(){let i=kn(super.names,this.from);return kn(i,this.to)}},wn=class extends Sn{constructor(i,t,s,o){super(),this.loop=i,this.varKind=t,this.name=s,this.iterable=o}render(i){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(i)}optimizeNames(i,t){if(super.optimizeNames(i,t))return this.iterable=Bs(this.iterable,i,t),this}get names(){return cs(super.names,this.iterable.names)}},Bg=(()=>{class e extends _i{constructor(t,s,o){super(),this.name=t,this.args=s,this.async=o}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}}return e.kind="func",e})(),Eg=(()=>{class e extends xo{render(t){return"return "+super.render(t)}}return e.kind="return",e})(),bl=class extends _i{render(i){let t="try"+super.render(i);return this.catch&&(t+=this.catch.render(i)),this.finally&&(t+=this.finally.render(i)),t}optimizeNodes(){var i,t;return super.optimizeNodes(),(i=this.catch)===null||i===void 0||i.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(i,t){var s,o;return super.optimizeNames(i,t),(s=this.catch)===null||s===void 0||s.optimizeNames(i,t),(o=this.finally)===null||o===void 0||o.optimizeNames(i,t),this}get names(){let i=super.names;return this.catch&&cs(i,this.catch.names),this.finally&&cs(i,this.finally.names),i}},Ug=(()=>{class e extends _i{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}}return e.kind="catch",e})(),Rg=(()=>{class e extends _i{render(t){return"finally"+super.render(t)}}return e.kind="finally",e})(),fl=class{constructor(i,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts=xe(J({},t),{_n:t.lines?`
1
+ import{a as Ag}from"./chunk-YNGEVP3I.js";import{a as tl,c as Tg,d as Pg,e as Ds,f as ri,g as CS}from"./chunk-DJN2ZIUW.js";import{a as kg}from"./chunk-YI7M7OR5.js";import{a as Ig}from"./chunk-77JZBWAC.js";import{a as jg}from"./chunk-WNX6NDS7.js";import{a as Sg,b as Cg,c as xg}from"./chunk-AE7VAWOU.js";import{a as ko}from"./chunk-V2P2FPJ7.js";import{a as zg}from"./chunk-BU65ZOCD.js";import{a as gn,b as _n}from"./chunk-YATJTZML.js";import{a as mn,b as pn}from"./chunk-ZHPB347D.js";import{a as Hg}from"./chunk-4WAU3AJS.js";import{a as nn,b as an,c as ln,d as cn,e as dn,f as un,g as Ns,m as Re,n as et,o as bg,p as fg,q as yg,r as vg,s as wg,t as Ei}from"./chunk-EA3EXGPZ.js";import{A as wo,a as cg,b as Ni,c as js,e as yt,f as dg,h as ug,i as gg,j as mg,k as pg,l as Di,m as _g,o as Bi,r as As,s as ns,t as as,y as hg,z as Wt}from"./chunk-CNMM42I5.js";import{a as Ri}from"./chunk-ARGG2BC2.js";import{d as oi}from"./chunk-UOLP7IQJ.js";import{b as Me}from"./chunk-QO3ZO6NT.js";import{k as He,m as Ui,n as ve}from"./chunk-2IWIAU2N.js";import{a as ke,b as Fe}from"./chunk-G7FA4DP4.js";import{d as lg}from"./chunk-6GMXEQVA.js";import{$ as vo,$a as Qu,Ac as og,Bc as rg,Ca as Ti,Cc as Pe,D as Gu,Da as Zu,Dc as Gt,Ec as os,Fa as Ts,Fc as Et,Gc as zs,Hb as W,Ib as I,Jb as T,Jc as H,Kc as C,Lb as ut,Lc as Ke,M as xs,Mb as gt,Nb as mt,Ob as y,Pb as p,Qb as m,Rb as x,Sb as Xr,Sc as pt,Tb as en,Tc as V,Ub as tn,Uc as Ai,Vb as tg,Wb as ig,Wc as ng,Xa as _e,Y as Za,_b as $,a as J,ab as u,b as xe,bc as R,c as qu,cc as sn,dc as b,e as h,ea as Wu,fa as Pt,fb as Zr,g as je,ga as Is,gb as mi,h as G,hc as Qa,ia as Yu,ib as ts,ic as Xa,id as Ut,ja as Ju,jc as el,jd as rs,k as Ku,ka as z,kc as Pi,kd as _t,lc as zi,mb as Q,mc as sg,n as Tt,nb as Ps,nc as Lt,o as Ja,ob as is,oc as ji,pb as Xu,pc as Z,q as Vu,qa as E,qc as w,ra as U,rc as K,rd as rn,sb as ce,sc as M,tc as ss,ub as eg,uc as on,v as $u,vb as Qr,w as le,x as Lu,xc as Ae,yc as Ne,yd as ag,za as Jr,zc as De}from"./chunk-H36QJYLQ.js";var Co=h(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.regexpCode=ye.getEsmExportName=ye.getProperty=ye.safeStringify=ye.stringify=ye.strConcat=ye.addCodeArg=ye.str=ye._=ye.nil=ye._Code=ye.Name=ye.IDENTIFIER=ye._CodeOrName=void 0;var Ho=class{};ye._CodeOrName=Ho;ye.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var ls=class extends Ho{constructor(i){if(super(),!ye.IDENTIFIER.test(i))throw new Error("CodeGen: name must be a valid identifier");this.str=i}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};ye.Name=ls;var Rt=class extends Ho{constructor(i){super(),this._items=typeof i=="string"?[i]:i}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let i=this._items[0];return i===""||i==='""'}get str(){var i;return(i=this._str)!==null&&i!==void 0?i:this._str=this._items.reduce((t,s)=>`${t}${s}`,"")}get names(){var i;return(i=this._names)!==null&&i!==void 0?i:this._names=this._items.reduce((t,s)=>(s instanceof ls&&(t[s.str]=(t[s.str]||0)+1),t),{})}};ye._Code=Rt;ye.nil=new Rt("");function Ng(e,...i){let t=[e[0]],s=0;for(;s<i.length;)sl(t,i[s]),t.push(e[++s]);return new Rt(t)}ye._=Ng;var il=new Rt("+");function Dg(e,...i){let t=[So(e[0])],s=0;for(;s<i.length;)t.push(il),sl(t,i[s]),t.push(il,So(e[++s]));return xS(t),new Rt(t)}ye.str=Dg;function sl(e,i){i instanceof Rt?e.push(...i._items):i instanceof ls?e.push(i):e.push(PS(i))}ye.addCodeArg=sl;function xS(e){let i=1;for(;i<e.length-1;){if(e[i]===il){let t=IS(e[i-1],e[i+1]);if(t!==void 0){e.splice(i-1,3,t);continue}e[i++]="+"}i++}}function IS(e,i){if(i==='""')return e;if(e==='""')return i;if(typeof e=="string")return i instanceof ls||e[e.length-1]!=='"'?void 0:typeof i!="string"?`${e.slice(0,-1)}${i}"`:i[0]==='"'?e.slice(0,-1)+i.slice(1):void 0;if(typeof i=="string"&&i[0]==='"'&&!(e instanceof ls))return`"${e}${i.slice(1)}`}function TS(e,i){return i.emptyStr()?e:e.emptyStr()?i:Dg`${e}${i}`}ye.strConcat=TS;function PS(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:So(Array.isArray(e)?e.join(","):e)}function zS(e){return new Rt(So(e))}ye.stringify=zS;function So(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}ye.safeStringify=So;function jS(e){return typeof e=="string"&&ye.IDENTIFIER.test(e)?new Rt(`.${e}`):Ng`[${e}]`}ye.getProperty=jS;function AS(e){if(typeof e=="string"&&ye.IDENTIFIER.test(e))return new Rt(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}ye.getEsmExportName=AS;function NS(e){return new Rt(e.toString())}ye.regexpCode=NS});var nl=h(wt=>{"use strict";Object.defineProperty(wt,"__esModule",{value:!0});wt.ValueScope=wt.ValueScopeName=wt.Scope=wt.varKinds=wt.UsedValueState=void 0;var vt=Co(),ol=class extends Error{constructor(i){super(`CodeGen: "code" for ${i} not defined`),this.value=i.value}},hn=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(hn||(wt.UsedValueState=hn={}));wt.varKinds={const:new vt.Name("const"),let:new vt.Name("let"),var:new vt.Name("var")};var bn=class{constructor({prefixes:i,parent:t}={}){this._names={},this._prefixes=i,this._parent=t}toName(i){return i instanceof vt.Name?i:this.name(i)}name(i){return new vt.Name(this._newName(i))}_newName(i){let t=this._names[i]||this._nameGroup(i);return`${i}${t.index++}`}_nameGroup(i){var t,s;if(!((s=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||s===void 0)&&s.has(i)||this._prefixes&&!this._prefixes.has(i))throw new Error(`CodeGen: prefix "${i}" is not allowed in this scope`);return this._names[i]={prefix:i,index:0}}};wt.Scope=bn;var fn=class extends vt.Name{constructor(i,t){super(t),this.prefix=i}setValue(i,{property:t,itemIndex:s}){this.value=i,this.scopePath=(0,vt._)`.${new vt.Name(t)}[${s}]`}};wt.ValueScopeName=fn;var DS=(0,vt._)`\n`,rl=class extends bn{constructor(i){super(i),this._values={},this._scope=i.scope,this.opts=xe(J({},i),{_n:i.lines?DS:vt.nil})}get(){return this._scope}name(i){return new fn(i,this._newName(i))}value(i,t){var s;if(t.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(i),{prefix:r}=o,n=(s=t.key)!==null&&s!==void 0?s:t.ref,a=this._values[r];if(a){let d=a.get(n);if(d)return d}else a=this._values[r]=new Map;a.set(n,o);let l=this._scope[r]||(this._scope[r]=[]),c=l.length;return l[c]=t.ref,o.setValue(t,{property:r,itemIndex:c}),o}getValue(i,t){let s=this._values[i];if(s)return s.get(t)}scopeRefs(i,t=this._values){return this._reduceValues(t,s=>{if(s.scopePath===void 0)throw new Error(`CodeGen: name "${s}" has no value`);return(0,vt._)`${i}${s.scopePath}`})}scopeCode(i=this._values,t,s){return this._reduceValues(i,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},t,s)}_reduceValues(i,t,s={},o){let r=vt.nil;for(let n in i){let a=i[n];if(!a)continue;let l=s[n]=s[n]||new Map;a.forEach(c=>{if(l.has(c))return;l.set(c,hn.Started);let d=t(c);if(d){let g=this.opts.es5?wt.varKinds.var:wt.varKinds.const;r=(0,vt._)`${r}${g} ${c} = ${d};${this.opts._n}`}else if(d=o?.(c))r=(0,vt._)`${r}${d}${this.opts._n}`;else throw new ol(c);l.set(c,hn.Completed)})}return r}};wt.ValueScope=rl});var ee=h(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.or=de.and=de.not=de.CodeGen=de.operators=de.varKinds=de.ValueScopeName=de.ValueScope=de.Scope=de.Name=de.regexpCode=de.stringify=de.getProperty=de.nil=de.strConcat=de.str=de._=void 0;var he=Co(),Yt=nl(),Fi=Co();Object.defineProperty(de,"_",{enumerable:!0,get:function(){return Fi._}});Object.defineProperty(de,"str",{enumerable:!0,get:function(){return Fi.str}});Object.defineProperty(de,"strConcat",{enumerable:!0,get:function(){return Fi.strConcat}});Object.defineProperty(de,"nil",{enumerable:!0,get:function(){return Fi.nil}});Object.defineProperty(de,"getProperty",{enumerable:!0,get:function(){return Fi.getProperty}});Object.defineProperty(de,"stringify",{enumerable:!0,get:function(){return Fi.stringify}});Object.defineProperty(de,"regexpCode",{enumerable:!0,get:function(){return Fi.regexpCode}});Object.defineProperty(de,"Name",{enumerable:!0,get:function(){return Fi.Name}});var Hn=nl();Object.defineProperty(de,"Scope",{enumerable:!0,get:function(){return Hn.Scope}});Object.defineProperty(de,"ValueScope",{enumerable:!0,get:function(){return Hn.ValueScope}});Object.defineProperty(de,"ValueScopeName",{enumerable:!0,get:function(){return Hn.ValueScopeName}});Object.defineProperty(de,"varKinds",{enumerable:!0,get:function(){return Hn.varKinds}});de.operators={GT:new he._Code(">"),GTE:new he._Code(">="),LT:new he._Code("<"),LTE:new he._Code("<="),EQ:new he._Code("==="),NEQ:new he._Code("!=="),NOT:new he._Code("!"),OR:new he._Code("||"),AND:new he._Code("&&"),ADD:new he._Code("+")};var pi=class{optimizeNodes(){return this}optimizeNames(i,t){return this}},al=class extends pi{constructor(i,t,s){super(),this.varKind=i,this.name=t,this.rhs=s}render({es5:i,_n:t}){let s=i?Yt.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${s} ${this.name}${o};`+t}optimizeNames(i,t){if(i[this.name.str])return this.rhs&&(this.rhs=Bs(this.rhs,i,t)),this}get names(){return this.rhs instanceof he._CodeOrName?this.rhs.names:{}}},vn=class extends pi{constructor(i,t,s){super(),this.lhs=i,this.rhs=t,this.sideEffects=s}render({_n:i}){return`${this.lhs} = ${this.rhs};`+i}optimizeNames(i,t){if(!(this.lhs instanceof he.Name&&!i[this.lhs.str]&&!this.sideEffects))return this.rhs=Bs(this.rhs,i,t),this}get names(){let i=this.lhs instanceof he.Name?{}:J({},this.lhs.names);return kn(i,this.rhs)}},ll=class extends vn{constructor(i,t,s,o){super(i,s,o),this.op=t}render({_n:i}){return`${this.lhs} ${this.op}= ${this.rhs};`+i}},cl=class extends pi{constructor(i){super(),this.label=i,this.names={}}render({_n:i}){return`${this.label}:`+i}},dl=class extends pi{constructor(i){super(),this.label=i,this.names={}}render({_n:i}){return`break${this.label?` ${this.label}`:""};`+i}},ul=class extends pi{constructor(i){super(),this.error=i}render({_n:i}){return`throw ${this.error};`+i}get names(){return this.error.names}},gl=class extends pi{constructor(i){super(),this.code=i}render({_n:i}){return`${this.code};`+i}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(i,t){return this.code=Bs(this.code,i,t),this}get names(){return this.code instanceof he._CodeOrName?this.code.names:{}}},xo=class extends pi{constructor(i=[]){super(),this.nodes=i}render(i){return this.nodes.reduce((t,s)=>t+s.render(i),"")}optimizeNodes(){let{nodes:i}=this,t=i.length;for(;t--;){let s=i[t].optimizeNodes();Array.isArray(s)?i.splice(t,1,...s):s?i[t]=s:i.splice(t,1)}return i.length>0?this:void 0}optimizeNames(i,t){let{nodes:s}=this,o=s.length;for(;o--;){let r=s[o];r.optimizeNames(i,t)||(BS(i,r.names),s.splice(o,1))}return s.length>0?this:void 0}get names(){return this.nodes.reduce((i,t)=>cs(i,t.names),{})}},_i=class extends xo{render(i){return"{"+i._n+super.render(i)+"}"+i._n}},ml=class extends xo{},pl=(()=>{class e extends _i{}return e.kind="else",e})(),yn=(()=>{class e extends _i{constructor(t,s){super(s),this.condition=t}render(t){let s=`if(${this.condition})`+super.render(t);return this.else&&(s+="else "+this.else.render(t)),s}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let s=this.else;if(s){let o=s.optimizeNodes();s=this.else=Array.isArray(o)?new pl(o):o}if(s)return t===!1?s instanceof e?s:s.nodes:this.nodes.length?this:new e(Fg(t),s instanceof e?[s]:s.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,s){var o;if(this.else=(o=this.else)===null||o===void 0?void 0:o.optimizeNames(t,s),!!(super.optimizeNames(t,s)||this.else))return this.condition=Bs(this.condition,t,s),this}get names(){let t=super.names;return kn(t,this.condition),this.else&&cs(t,this.else.names),t}}return e.kind="if",e})(),Sn=(()=>{class e extends _i{}return e.kind="for",e})(),_l=class extends Sn{constructor(i){super(),this.iteration=i}render(i){return`for(${this.iteration})`+super.render(i)}optimizeNames(i,t){if(super.optimizeNames(i,t))return this.iteration=Bs(this.iteration,i,t),this}get names(){return cs(super.names,this.iteration.names)}},hl=class extends Sn{constructor(i,t,s,o){super(),this.varKind=i,this.name=t,this.from=s,this.to=o}render(i){let t=i.es5?Yt.varKinds.var:this.varKind,{name:s,from:o,to:r}=this;return`for(${t} ${s}=${o}; ${s}<${r}; ${s}++)`+super.render(i)}get names(){let i=kn(super.names,this.from);return kn(i,this.to)}},wn=class extends Sn{constructor(i,t,s,o){super(),this.loop=i,this.varKind=t,this.name=s,this.iterable=o}render(i){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(i)}optimizeNames(i,t){if(super.optimizeNames(i,t))return this.iterable=Bs(this.iterable,i,t),this}get names(){return cs(super.names,this.iterable.names)}},Bg=(()=>{class e extends _i{constructor(t,s,o){super(),this.name=t,this.args=s,this.async=o}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}}return e.kind="func",e})(),Eg=(()=>{class e extends xo{render(t){return"return "+super.render(t)}}return e.kind="return",e})(),bl=class extends _i{render(i){let t="try"+super.render(i);return this.catch&&(t+=this.catch.render(i)),this.finally&&(t+=this.finally.render(i)),t}optimizeNodes(){var i,t;return super.optimizeNodes(),(i=this.catch)===null||i===void 0||i.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(i,t){var s,o;return super.optimizeNames(i,t),(s=this.catch)===null||s===void 0||s.optimizeNames(i,t),(o=this.finally)===null||o===void 0||o.optimizeNames(i,t),this}get names(){let i=super.names;return this.catch&&cs(i,this.catch.names),this.finally&&cs(i,this.finally.names),i}},Ug=(()=>{class e extends _i{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}}return e.kind="catch",e})(),Rg=(()=>{class e extends _i{render(t){return"finally"+super.render(t)}}return e.kind="finally",e})(),fl=class{constructor(i,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts=xe(J({},t),{_n:t.lines?`
2
2
  `:""}),this._extScope=i,this._scope=new Yt.Scope({parent:i}),this._nodes=[new ml]}toString(){return this._root.render(this.opts)}name(i){return this._scope.name(i)}scopeName(i){return this._extScope.name(i)}scopeValue(i,t){let s=this._extScope.value(i,t);return(this._values[s.prefix]||(this._values[s.prefix]=new Set)).add(s),s}getScopeValue(i,t){return this._extScope.getValue(i,t)}scopeRefs(i){return this._extScope.scopeRefs(i,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(i,t,s,o){let r=this._scope.toName(t);return s!==void 0&&o&&(this._constants[r.str]=s),this._leafNode(new al(i,r,s)),r}const(i,t,s){return this._def(Yt.varKinds.const,i,t,s)}let(i,t,s){return this._def(Yt.varKinds.let,i,t,s)}var(i,t,s){return this._def(Yt.varKinds.var,i,t,s)}assign(i,t,s){return this._leafNode(new vn(i,t,s))}add(i,t){return this._leafNode(new ll(i,de.operators.ADD,t))}code(i){return typeof i=="function"?i():i!==he.nil&&this._leafNode(new gl(i)),this}object(...i){let t=["{"];for(let[s,o]of i)t.length>1&&t.push(","),t.push(s),(s!==o||this.opts.es5)&&(t.push(":"),(0,he.addCodeArg)(t,o));return t.push("}"),new he._Code(t)}if(i,t,s){if(this._blockNode(new yn(i)),t&&s)this.code(t).else().code(s).endIf();else if(t)this.code(t).endIf();else if(s)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(i){return this._elseNode(new yn(i))}else(){return this._elseNode(new pl)}endIf(){return this._endBlockNode(yn,pl)}_for(i,t){return this._blockNode(i),t&&this.code(t).endFor(),this}for(i,t){return this._for(new _l(i),t)}forRange(i,t,s,o,r=this.opts.es5?Yt.varKinds.var:Yt.varKinds.let){let n=this._scope.toName(i);return this._for(new hl(r,n,t,s),()=>o(n))}forOf(i,t,s,o=Yt.varKinds.const){let r=this._scope.toName(i);if(this.opts.es5){let n=t instanceof he.Name?t:this.var("_arr",t);return this.forRange("_i",0,(0,he._)`${n}.length`,a=>{this.var(r,(0,he._)`${n}[${a}]`),s(r)})}return this._for(new wn("of",o,r,t),()=>s(r))}forIn(i,t,s,o=this.opts.es5?Yt.varKinds.var:Yt.varKinds.const){if(this.opts.ownProperties)return this.forOf(i,(0,he._)`Object.keys(${t})`,s);let r=this._scope.toName(i);return this._for(new wn("in",o,r,t),()=>s(r))}endFor(){return this._endBlockNode(Sn)}label(i){return this._leafNode(new cl(i))}break(i){return this._leafNode(new dl(i))}return(i){let t=new Eg;if(this._blockNode(t),this.code(i),t.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Eg)}try(i,t,s){if(!t&&!s)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new bl;if(this._blockNode(o),this.code(i),t){let r=this.name("e");this._currNode=o.catch=new Ug(r),t(r)}return s&&(this._currNode=o.finally=new Rg,this.code(s)),this._endBlockNode(Ug,Rg)}throw(i){return this._leafNode(new ul(i))}block(i,t){return this._blockStarts.push(this._nodes.length),i&&this.code(i).endBlock(t),this}endBlock(i){let t=this._blockStarts.pop();if(t===void 0)throw new Error("CodeGen: not in self-balancing block");let s=this._nodes.length-t;if(s<0||i!==void 0&&s!==i)throw new Error(`CodeGen: wrong number of nodes: ${s} vs ${i} expected`);return this._nodes.length=t,this}func(i,t=he.nil,s,o){return this._blockNode(new Bg(i,t,s)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(Bg)}optimize(i=1){for(;i-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(i){return this._currNode.nodes.push(i),this}_blockNode(i){this._currNode.nodes.push(i),this._nodes.push(i)}_endBlockNode(i,t){let s=this._currNode;if(s instanceof i||t&&s instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${i.kind}/${t.kind}`:i.kind}"`)}_elseNode(i){let t=this._currNode;if(!(t instanceof yn))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=i,this}get _root(){return this._nodes[0]}get _currNode(){let i=this._nodes;return i[i.length-1]}set _currNode(i){let t=this._nodes;t[t.length-1]=i}};de.CodeGen=fl;function cs(e,i){for(let t in i)e[t]=(e[t]||0)+(i[t]||0);return e}function kn(e,i){return i instanceof he._CodeOrName?cs(e,i.names):e}function Bs(e,i,t){if(e instanceof he.Name)return s(e);if(!o(e))return e;return new he._Code(e._items.reduce((r,n)=>(n instanceof he.Name&&(n=s(n)),n instanceof he._Code?r.push(...n._items):r.push(n),r),[]));function s(r){let n=t[r.str];return n===void 0||i[r.str]!==1?r:(delete i[r.str],n)}function o(r){return r instanceof he._Code&&r._items.some(n=>n instanceof he.Name&&i[n.str]===1&&t[n.str]!==void 0)}}function BS(e,i){for(let t in i)e[t]=(e[t]||0)-(i[t]||0)}function Fg(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,he._)`!${yl(e)}`}de.not=Fg;var ES=Mg(de.operators.AND);function US(...e){return e.reduce(ES)}de.and=US;var RS=Mg(de.operators.OR);function FS(...e){return e.reduce(RS)}de.or=FS;function Mg(e){return(i,t)=>i===he.nil?t:t===he.nil?i:(0,he._)`${yl(i)} ${e} ${yl(t)}`}function yl(e){return e instanceof he.Name?e:(0,he._)`(${e})`}});var ge=h(ue=>{"use strict";Object.defineProperty(ue,"__esModule",{value:!0});ue.checkStrictMode=ue.getErrorPath=ue.Type=ue.useFunc=ue.setEvaluated=ue.evaluatedPropsToName=ue.mergeEvaluated=ue.eachItem=ue.unescapeJsonPointer=ue.escapeJsonPointer=ue.escapeFragment=ue.unescapeFragment=ue.schemaRefOrVal=ue.schemaHasRulesButRef=ue.schemaHasRules=ue.checkUnknownRules=ue.alwaysValidSchema=ue.toHash=void 0;var Ie=ee(),MS=Co();function OS(e){let i={};for(let t of e)i[t]=!0;return i}ue.toHash=OS;function qS(e,i){return typeof i=="boolean"?i:Object.keys(i).length===0?!0:(Kg(e,i),!Vg(i,e.self.RULES.all))}ue.alwaysValidSchema=qS;function Kg(e,i=e.schema){let{opts:t,self:s}=e;if(!t.strictSchema||typeof i=="boolean")return;let o=s.RULES.keywords;for(let r in i)o[r]||Gg(e,`unknown keyword: "${r}"`)}ue.checkUnknownRules=Kg;function Vg(e,i){if(typeof e=="boolean")return!e;for(let t in e)if(i[t])return!0;return!1}ue.schemaHasRules=Vg;function KS(e,i){if(typeof e=="boolean")return!e;for(let t in e)if(t!=="$ref"&&i.all[t])return!0;return!1}ue.schemaHasRulesButRef=KS;function VS({topSchemaRef:e,schemaPath:i},t,s,o){if(!o){if(typeof t=="number"||typeof t=="boolean")return t;if(typeof t=="string")return(0,Ie._)`${t}`}return(0,Ie._)`${e}${i}${(0,Ie.getProperty)(s)}`}ue.schemaRefOrVal=VS;function $S(e){return $g(decodeURIComponent(e))}ue.unescapeFragment=$S;function LS(e){return encodeURIComponent(wl(e))}ue.escapeFragment=LS;function wl(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}ue.escapeJsonPointer=wl;function $g(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}ue.unescapeJsonPointer=$g;function GS(e,i){if(Array.isArray(e))for(let t of e)i(t);else i(e)}ue.eachItem=GS;function Og({mergeNames:e,mergeToName:i,mergeValues:t,resultToName:s}){return(o,r,n,a)=>{let l=n===void 0?r:n instanceof Ie.Name?(r instanceof Ie.Name?e(o,r,n):i(o,r,n),n):r instanceof Ie.Name?(i(o,n,r),r):t(r,n);return a===Ie.Name&&!(l instanceof Ie.Name)?s(o,l):l}}ue.mergeEvaluated={props:Og({mergeNames:(e,i,t)=>e.if((0,Ie._)`${t} !== true && ${i} !== undefined`,()=>{e.if((0,Ie._)`${i} === true`,()=>e.assign(t,!0),()=>e.assign(t,(0,Ie._)`${t} || {}`).code((0,Ie._)`Object.assign(${t}, ${i})`))}),mergeToName:(e,i,t)=>e.if((0,Ie._)`${t} !== true`,()=>{i===!0?e.assign(t,!0):(e.assign(t,(0,Ie._)`${t} || {}`),kl(e,t,i))}),mergeValues:(e,i)=>e===!0?!0:J(J({},e),i),resultToName:Lg}),items:Og({mergeNames:(e,i,t)=>e.if((0,Ie._)`${t} !== true && ${i} !== undefined`,()=>e.assign(t,(0,Ie._)`${i} === true ? true : ${t} > ${i} ? ${t} : ${i}`)),mergeToName:(e,i,t)=>e.if((0,Ie._)`${t} !== true`,()=>e.assign(t,i===!0?!0:(0,Ie._)`${t} > ${i} ? ${t} : ${i}`)),mergeValues:(e,i)=>e===!0?!0:Math.max(e,i),resultToName:(e,i)=>e.var("items",i)})};function Lg(e,i){if(i===!0)return e.var("props",!0);let t=e.var("props",(0,Ie._)`{}`);return i!==void 0&&kl(e,t,i),t}ue.evaluatedPropsToName=Lg;function kl(e,i,t){Object.keys(t).forEach(s=>e.assign((0,Ie._)`${i}${(0,Ie.getProperty)(s)}`,!0))}ue.setEvaluated=kl;var qg={};function WS(e,i){return e.scopeValue("func",{ref:i,code:qg[i.code]||(qg[i.code]=new MS._Code(i.code))})}ue.useFunc=WS;var vl=function(e){return e[e.Num=0]="Num",e[e.Str=1]="Str",e}(vl||(ue.Type=vl={}));function YS(e,i,t){if(e instanceof Ie.Name){let s=i===vl.Num;return t?s?(0,Ie._)`"[" + ${e} + "]"`:(0,Ie._)`"['" + ${e} + "']"`:s?(0,Ie._)`"/" + ${e}`:(0,Ie._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return t?(0,Ie.getProperty)(e).toString():"/"+wl(e)}ue.getErrorPath=YS;function Gg(e,i,t=e.opts.strictSchema){if(t){if(i=`strict mode: ${i}`,t===!0)throw new Error(i);e.self.logger.warn(i)}}ue.checkStrictMode=Gg});var Ft=h(Hl=>{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});var rt=ee(),JS={data:new rt.Name("data"),valCxt:new rt.Name("valCxt"),instancePath:new rt.Name("instancePath"),parentData:new rt.Name("parentData"),parentDataProperty:new rt.Name("parentDataProperty"),rootData:new rt.Name("rootData"),dynamicAnchors:new rt.Name("dynamicAnchors"),vErrors:new rt.Name("vErrors"),errors:new rt.Name("errors"),this:new rt.Name("this"),self:new rt.Name("self"),scope:new rt.Name("scope"),json:new rt.Name("json"),jsonPos:new rt.Name("jsonPos"),jsonLen:new rt.Name("jsonLen"),jsonPart:new rt.Name("jsonPart")};Hl.default=JS});var Io=h(nt=>{"use strict";Object.defineProperty(nt,"__esModule",{value:!0});nt.extendErrors=nt.resetErrorsCount=nt.reportExtraError=nt.reportError=nt.keyword$DataError=nt.keywordError=void 0;var fe=ee(),Cn=ge(),ht=Ft();nt.keywordError={message:({keyword:e})=>(0,fe.str)`must pass "${e}" keyword validation`};nt.keyword$DataError={message:({keyword:e,schemaType:i})=>i?(0,fe.str)`"${e}" keyword must be ${i} ($data)`:(0,fe.str)`"${e}" keyword is invalid ($data)`};function ZS(e,i=nt.keywordError,t,s){let{it:o}=e,{gen:r,compositeRule:n,allErrors:a}=o,l=Jg(e,i,t);s??(n||a)?Wg(r,l):Yg(o,(0,fe._)`[${l}]`)}nt.reportError=ZS;function QS(e,i=nt.keywordError,t){let{it:s}=e,{gen:o,compositeRule:r,allErrors:n}=s,a=Jg(e,i,t);Wg(o,a),r||n||Yg(s,ht.default.vErrors)}nt.reportExtraError=QS;function XS(e,i){e.assign(ht.default.errors,i),e.if((0,fe._)`${ht.default.vErrors} !== null`,()=>e.if(i,()=>e.assign((0,fe._)`${ht.default.vErrors}.length`,i),()=>e.assign(ht.default.vErrors,null)))}nt.resetErrorsCount=XS;function eC({gen:e,keyword:i,schemaValue:t,data:s,errsCount:o,it:r}){if(o===void 0)throw new Error("ajv implementation error");let n=e.name("err");e.forRange("i",o,ht.default.errors,a=>{e.const(n,(0,fe._)`${ht.default.vErrors}[${a}]`),e.if((0,fe._)`${n}.instancePath === undefined`,()=>e.assign((0,fe._)`${n}.instancePath`,(0,fe.strConcat)(ht.default.instancePath,r.errorPath))),e.assign((0,fe._)`${n}.schemaPath`,(0,fe.str)`${r.errSchemaPath}/${i}`),r.opts.verbose&&(e.assign((0,fe._)`${n}.schema`,t),e.assign((0,fe._)`${n}.data`,s))})}nt.extendErrors=eC;function Wg(e,i){let t=e.const("err",i);e.if((0,fe._)`${ht.default.vErrors} === null`,()=>e.assign(ht.default.vErrors,(0,fe._)`[${t}]`),(0,fe._)`${ht.default.vErrors}.push(${t})`),e.code((0,fe._)`${ht.default.errors}++`)}function Yg(e,i){let{gen:t,validateName:s,schemaEnv:o}=e;o.$async?t.throw((0,fe._)`new ${e.ValidationError}(${i})`):(t.assign((0,fe._)`${s}.errors`,i),t.return(!1))}var ds={keyword:new fe.Name("keyword"),schemaPath:new fe.Name("schemaPath"),params:new fe.Name("params"),propertyName:new fe.Name("propertyName"),message:new fe.Name("message"),schema:new fe.Name("schema"),parentSchema:new fe.Name("parentSchema")};function Jg(e,i,t){let{createErrors:s}=e.it;return s===!1?(0,fe._)`{}`:tC(e,i,t)}function tC(e,i,t={}){let{gen:s,it:o}=e,r=[iC(o,t),sC(e,t)];return oC(e,i,r),s.object(...r)}function iC({errorPath:e},{instancePath:i}){let t=i?(0,fe.str)`${e}${(0,Cn.getErrorPath)(i,Cn.Type.Str)}`:e;return[ht.default.instancePath,(0,fe.strConcat)(ht.default.instancePath,t)]}function sC({keyword:e,it:{errSchemaPath:i}},{schemaPath:t,parentSchema:s}){let o=s?i:(0,fe.str)`${i}/${e}`;return t&&(o=(0,fe.str)`${o}${(0,Cn.getErrorPath)(t,Cn.Type.Str)}`),[ds.schemaPath,o]}function oC(e,{params:i,message:t},s){let{keyword:o,data:r,schemaValue:n,it:a}=e,{opts:l,propertyName:c,topSchemaRef:d,schemaPath:g}=a;s.push([ds.keyword,o],[ds.params,typeof i=="function"?i(e):i||(0,fe._)`{}`]),l.messages&&s.push([ds.message,typeof t=="function"?t(e):t]),l.verbose&&s.push([ds.schema,n],[ds.parentSchema,(0,fe._)`${d}${g}`],[ht.default.data,r]),c&&s.push([ds.propertyName,c])}});var Qg=h(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.boolOrEmptySchema=Es.topBoolOrEmptySchema=void 0;var rC=Io(),nC=ee(),aC=Ft(),lC={message:"boolean schema is false"};function cC(e){let{gen:i,schema:t,validateName:s}=e;t===!1?Zg(e,!1):typeof t=="object"&&t.$async===!0?i.return(aC.default.data):(i.assign((0,nC._)`${s}.errors`,null),i.return(!0))}Es.topBoolOrEmptySchema=cC;function dC(e,i){let{gen:t,schema:s}=e;s===!1?(t.var(i,!1),Zg(e)):t.var(i,!0)}Es.boolOrEmptySchema=dC;function Zg(e,i){let{gen:t,data:s}=e,o={gen:t,keyword:"false schema",data:s,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,rC.reportError)(o,lC,void 0,i)}});var Sl=h(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.getRules=Us.isJSONType=void 0;var uC=["string","number","integer","boolean","null","object","array"],gC=new Set(uC);function mC(e){return typeof e=="string"&&gC.has(e)}Us.isJSONType=mC;function pC(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:xe(J({},e),{integer:!0,boolean:!0,null:!0}),rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}Us.getRules=pC});var Cl=h(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.shouldUseRule=Mi.shouldUseGroup=Mi.schemaHasRulesForType=void 0;function _C({schema:e,self:i},t){let s=i.RULES.types[t];return s&&s!==!0&&Xg(e,s)}Mi.schemaHasRulesForType=_C;function Xg(e,i){return i.rules.some(t=>em(e,t))}Mi.shouldUseGroup=Xg;function em(e,i){var t;return e[i.keyword]!==void 0||((t=i.definition.implements)===null||t===void 0?void 0:t.some(s=>e[s]!==void 0))}Mi.shouldUseRule=em});var To=h(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.reportTypeError=at.checkDataTypes=at.checkDataType=at.coerceAndCheckDataType=at.getJSONTypes=at.getSchemaTypes=at.DataType=void 0;var hC=Sl(),bC=Cl(),fC=Io(),ne=ee(),tm=ge(),Rs=function(e){return e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong",e}(Rs||(at.DataType=Rs={}));function yC(e){let i=im(e.type);if(i.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!i.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&i.push("null")}return i}at.getSchemaTypes=yC;function im(e){let i=Array.isArray(e)?e:e?[e]:[];if(i.every(hC.isJSONType))return i;throw new Error("type must be JSONType or JSONType[]: "+i.join(","))}at.getJSONTypes=im;function vC(e,i){let{gen:t,data:s,opts:o}=e,r=wC(i,o.coerceTypes),n=i.length>0&&!(r.length===0&&i.length===1&&(0,bC.schemaHasRulesForType)(e,i[0]));if(n){let a=Il(i,s,o.strictNumbers,Rs.Wrong);t.if(a,()=>{r.length?kC(e,i,r):Tl(e)})}return n}at.coerceAndCheckDataType=vC;var sm=new Set(["string","number","integer","boolean","null"]);function wC(e,i){return i?e.filter(t=>sm.has(t)||i==="array"&&t==="array"):[]}function kC(e,i,t){let{gen:s,data:o,opts:r}=e,n=s.let("dataType",(0,ne._)`typeof ${o}`),a=s.let("coerced",(0,ne._)`undefined`);r.coerceTypes==="array"&&s.if((0,ne._)`${n} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>s.assign(o,(0,ne._)`${o}[0]`).assign(n,(0,ne._)`typeof ${o}`).if(Il(i,o,r.strictNumbers),()=>s.assign(a,o))),s.if((0,ne._)`${a} !== undefined`);for(let c of t)(sm.has(c)||c==="array"&&r.coerceTypes==="array")&&l(c);s.else(),Tl(e),s.endIf(),s.if((0,ne._)`${a} !== undefined`,()=>{s.assign(o,a),HC(e,a)});function l(c){switch(c){case"string":s.elseIf((0,ne._)`${n} == "number" || ${n} == "boolean"`).assign(a,(0,ne._)`"" + ${o}`).elseIf((0,ne._)`${o} === null`).assign(a,(0,ne._)`""`);return;case"number":s.elseIf((0,ne._)`${n} == "boolean" || ${o} === null
3
3
  || (${n} == "string" && ${o} && ${o} == +${o})`).assign(a,(0,ne._)`+${o}`);return;case"integer":s.elseIf((0,ne._)`${n} === "boolean" || ${o} === null
4
4
  || (${n} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(a,(0,ne._)`+${o}`);return;case"boolean":s.elseIf((0,ne._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(a,!1).elseIf((0,ne._)`${o} === "true" || ${o} === 1`).assign(a,!0);return;case"null":s.elseIf((0,ne._)`${o} === "" || ${o} === 0 || ${o} === false`),s.assign(a,null);return;case"array":s.elseIf((0,ne._)`${n} === "string" || ${n} === "number"
@@ -21,7 +21,7 @@ Should be: [ [ object1, pointer1 ], [ object 2, pointer2 ], etc... ]`),o}}static
21
21
  `,n=!0)}}),(0,$0.saveAs)(new Blob([r],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`),this.midAction=!1},error:s=>G(this,null,function*(){let o;try{o=JSON.parse(yield s.error.text()).message}catch(r){console.error(r)}this.$toastr.error(o||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error")),this.midAction=!1})})}).catch(()=>{this.midAction=!1})}ngOnDestroy(){this.$log.destroyTerminal()}dismissModal(){this.$activeModal.dismiss("Dismiss")}getPluginLog(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":t[0]?.name||this.plugin.name,this.$log.startTerminal(this.termTarget(),{},this.resizeEvent,this.pluginAlias)},error:t=>{console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],viewQuery:function(s,o){s&1&&Pi(o.termTarget,SV,5),s&2&&zi()},hostBindings:function(s,o){s&1&&R("resize",function(n){return o.onWindowResize(n)},Qu)},inputs:{plugin:"plugin",childBridges:"childBridges"},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-fw","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-fw","fa-power-off"]],template:function(s,o){if(s&1){let r=$();p(0,"div",1)(1,"div",2)(2,"h5",3),w(3),m(),p(4,"button",4),H(5,"translate"),R("click",function(){return E(r),U(o.dismissModal())}),m()(),p(6,"div",5),x(7,"div",6,0),m(),p(9,"div",7)(10,"div",8)(11,"button",9),H(12,"translate"),R("click",function(){return E(r),U(o.dismissModal())}),w(13),H(14,"translate"),m()(),x(15,"div",10),p(16,"div",11)(17,"button",12),H(18,"translate"),H(19,"translate"),R("click",function(){return E(r),U(o.downloadLogFile())}),x(20,"i",13),m(),I(21,CV,4,8,"button",14),m()()()}s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),y("disabled",o.midAction),W("aria-label",C(5,11,"form.button_close")),u(7),y("disabled",o.midAction),W("aria-label",C(12,13,"form.button_close")),u(2),M(" ",C(14,15,"form.button_close")," "),u(4),y("ngbTooltip",C(18,17,"logs.title_download_log_file"))("openDelay",150)("disabled",o.midAction),W("aria-label",C(19,19,"logs.title_download_log_file")),u(4),T(o.childBridges.length?21:-1))},dependencies:[Ei,Fe],encapsulation:2})}return e})();var G0=je(gn(),1);var Bu=()=>({app:"Homebridge v2"});function xV(e,i){e&1&&(p(0,"div",5),x(1,"i",12),m())}function IV(e,i){e&1&&(p(0,"p",9),w(1,"All your plugins are marked as compatible with Homebridge v2."),m())}function TV(e,i){e&1&&(p(0,"p",9),w(1,"To ignore this warning and continue with the update, click continue below."),m())}function PV(e,i){if(e&1&&(p(0,"p",9),w(1," Some of your plugins are not explicitly marked as compatible with Homebridge v2. This does "),p(2,"span",17),w(3,"not"),m(),w(4," necessarily mean that they won't work. We just can't guarantee that they will. "),m(),p(5,"p",9),w(6," For more information about this update, please see the "),p(7,"a",18),w(8,"wiki page"),m(),w(9,". "),m(),I(10,TV,2,0,"p",9)),e&2){let t=b(2);u(10),T(t.isUpdating?10:-1)}}function zV(e,i){e&1&&(p(0,"div",19),w(1," Node.js Version"),x(2,"br"),p(3,"span",20),w(4),H(5,"translate"),m()(),p(6,"div",21),x(7,"i",22),m()),e&2&&(u(4),K(Ke(5,1,"status.readiness.node_yes",Pe(4,Bu))))}function jV(e,i){e&1&&(p(0,"div",19),w(1," Node.js Version"),x(2,"br"),p(3,"span",20),w(4),H(5,"translate"),m(),x(6,"br"),p(7,"a",23),w(8),H(9,"translate"),x(10,"i",24),m()(),p(11,"div",21),x(12,"i",25),m()),e&2&&(u(4),K(Ke(5,2,"status.readiness.node_no",Pe(7,Bu))),u(4),M(" ",C(9,5,"plugins.compat.node_link")," "))}function AV(e,i){e&1&&x(0,"i",26)}function NV(e,i){e&1&&x(0,"i",27)}function DV(e,i){if(e&1&&(p(0,"li",16)(1,"div",19),w(2),m(),p(3,"div",21),I(4,AV,1,0,"i",26),I(5,NV,1,0,"i",27),m()()),e&2){let t=i.$implicit;u(2),K(t.displayName),u(2),T(t.hb2Ready==="supported"?4:-1),u(),T(t.hb2Ready==="unknown"?5:-1)}}function BV(e,i){if(e&1&&(p(0,"div",13),x(1,"img",14),m(),I(2,IV,2,0,"p",9),I(3,PV,11,1),p(4,"ul",15)(5,"li",16),I(6,zV,8,5)(7,jV,13,8),m(),gt(8,DV,6,3,"li",16,ut),m()),e&2){let t=b();u(2),T(t.allPluginsSupported?2:-1),u(),T(t.allPluginsSupported?-1:3),u(3),T(t.nodeReady?6:7),u(2),mt(t.installedPlugins)}}function EV(e,i){if(e&1){let t=$();p(0,"button",28),H(1,"translate"),R("click",function(){E(t);let o=b();return U(o.closeModal("Dismiss"))}),w(2),H(3,"translate"),m()}e&2&&(W("aria-label",C(1,2,"form.button_close")),u(2),M(" ",C(3,4,"form.button_close")," "))}function UV(e,i){if(e&1){let t=$();p(0,"button",28),H(1,"translate"),R("click",function(){E(t);let o=b();return U(o.closeModal("Dismiss"))}),w(2),H(3,"translate"),m()}e&2&&(W("aria-label",C(1,2,"form.button_close")),u(2),M(" ",C(3,4,"form.button_close")," "))}function RV(e,i){if(e&1){let t=$();p(0,"button",29),R("click",function(){E(t);let o=b();return U(o.closeModal("update"))}),w(1),H(2,"translate"),m()}if(e&2){let t=b();y("disabled",t.loading),u(),M(" ",C(2,2,"form.button_continue")," ")}}var W0=(()=>{class e{$activeModal=z(Re);$api=z(ve);$settings=z(Me);$toastr=z(He);$translate=z(ke);$ws=z(Ri);io;isUpdating=!1;skipIfCompatible=!0;loading=!0;installedPlugins=[];allPluginsSupported=!0;nodeReady=!1;ngOnInit(){return G(this,null,function*(){this.io=this.$ws.getExistingNamespace("status"),this.io.socket.connected&&(yield this.checkHomebridgeUiVersion()),yield this.loadInstalledPlugins(),this.loading=!1})}checkHomebridgeUiVersion(){return G(this,null,function*(){try{let{nodeVersion:t}=yield le(this.io.request("get-homebridge-server-info"));this.nodeReady=(0,G0.satisfies)(t,">=20")}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}loadInstalledPlugins(){return G(this,null,function*(){this.installedPlugins=[],this.loading=!0;let t=this.$settings.env.homebridgeVersion.split(".")[0];try{let s=yield le(this.$api.get("/plugins"));this.installedPlugins=s.filter(o=>o.name!=="homebridge-config-ui-x").map(o=>{let r=o.engines?.homebridge?.split("||").map(a=>a.trim())||[],n=t==="2"?"hide":r.some(a=>a.startsWith("^2")||a.startsWith(">=2"))?"supported":"unknown";return n==="unknown"&&(this.allPluginsSupported=!1),xe(J({},o),{hb2Ready:n})}).sort((o,r)=>o.name.localeCompare(r.name)),this.skipIfCompatible&&this.installedPlugins.length===0&&this.$activeModal.close("update")}catch(s){console.error(s),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}closeModal(t){this.$activeModal.close(t)}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{isUpdating:"isUpdating",skipIfCompatible:"skipIfCompatible"},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-fw","fa-cog","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-fw","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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),H(4,"translate"),m(),p(5,"button",3),H(6,"translate"),R("click",function(){return o.closeModal("Dismiss")}),m()(),p(7,"div",4),I(8,xV,2,0,"div",5)(9,BV,10,3),m(),p(10,"div",6)(11,"div",7),I(12,EV,4,6,"button",8),m(),p(13,"div",9),I(14,UV,4,6,"button",8),m(),p(15,"div",10),I(16,RV,3,4,"button",11),m()()()),s&2&&(u(3),K(Ke(4,6,"status.readiness.title",Pe(11,Bu))),u(2),W("aria-label",C(6,9,"form.button_close")),u(3),T(o.loading?8:9),u(4),T(o.isUpdating?12:-1),u(2),T(o.isUpdating?-1:14),u(2),T(o.isUpdating?16:-1))},dependencies:[ag,Fe],encapsulation:2})}return e})();var MV=(e,i)=>({iconStar:e,iconThumbsUp:i}),X0=(e,i,t,s)=>({"fa-arrow-alt-circle-down":e,"fa-code-compare":i,"fa-arrow-alt-circle-up":t,"fa-trash":s}),OV=()=>["homebridge","homebridge-config-ui-x"],qV=e=>({pluginName:e});function KV(e,i){e&1&&(p(0,"p",13),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"plugins.settings.restart_required")))}function VV(e,i){e&1&&(p(0,"p",13),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"restart.child_bridges")))}function $V(e,i){if(e&1&&(x(0,"p",12),H(1,"translate"),I(2,KV,3,3,"p",13),I(3,VV,3,3,"p",13)),e&2){let t=b(3);y("innerHTML",Ke(1,3,"plugins.manage.github_support",os(6,MV,t.iconStar,t.iconThumbsUp)),_e),u(2),T(t.childBridges.length===0?2:-1),u(),T(t.childBridges.length>0?3:-1)}}function LV(e,i){if(e&1&&(p(0,"div",9),x(1,"i",10),m(),p(2,"h5",11),w(3),m(),I(4,$V,4,9)),e&2){let t=b(2);u(3),on("",t.pastTenseVerb,": ",t.pluginDisplayName," (",t.targetVersionPretty,")"),u(),T(t.isDisabled?-1:4)}}function GV(e,i){if(e&1&&(p(0,"div",6),I(1,LV,5,4),m()),e&2){let t=b();u(),T(t.justUpdatedPlugin?1:-1)}}function WV(e,i){if(e&1&&(p(0,"div",7)(1,"div",9),x(2,"i",14),m(),p(3,"ul",15)(4,"li"),w(5),H(6,"translate"),m(),p(7,"li"),w(8),H(9,"translate"),m()(),p(10,"pre",16),w(11),m()()),e&2){let t=b();u(2),y("ngClass",zs(9,X0,t.action==="Install",t.action==="Update"&&t.installedVersion,t.action==="Update"&&!t.installedVersion,t.action==="Uninstall")),u(3),K(C(6,5,"plugins.manage.online_updates")),u(3),K(C(9,7,"plugins.manage.manual_update_command")),u(3),ss(`hb-service stop
22
22
  npm install -g `,t.pluginName,"@",t.targetVersion,`
23
23
  hb-service start`)}}function YV(e,i){if(e&1&&(p(0,"span"),w(1),m()),e&2){let t=b(3);u(),M("v",t.installedVersion," \u2192 ")}}function JV(e,i){if(e&1&&(p(0,"h5",18),I(1,YV,2,1,"span"),w(2),m()),e&2){let t=b(2);u(),T(t.installedVersion?1:-1),u(),M(" ",t.targetVersionPretty," ")}}function ZV(e,i){e&1&&(p(0,"div",26),x(1,"i",27),m())}function QV(e,i){if(e&1&&x(0,"markdown",28),e&2){let t=b(4);y("data",t.versionNotes)}}function XV(e,i){e&1&&(p(0,"div",29),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"plugins.manage.notes_none")))}function e$(e,i){if(e&1&&(p(0,"div",29),w(1),H(2,"translate"),x(3,"br"),w(4),H(5,"translate"),x(6,"br"),w(7),H(8,"translate"),x(9,"br"),m()),e&2){let t=b(6);u(),M(" ",Ke(2,3,"plugins.manage.notes_beta_1",Gt(10,qV,t.pluginDisplayName))),u(3),M(" ",C(5,6,"plugins.manage.notes_beta_2")),u(3),M(" ",C(8,8,"plugins.manage.notes_beta_3"))}}function t$(e,i){e&1&&(p(0,"div",29),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"plugins.manage.notes_latest")))}function i$(e,i){if(e&1&&I(0,e$,10,12,"div",29)(1,t$,3,3,"div",29),e&2){let t=b(5);T(t.targetVersion.includes("beta")||t.targetVersion.includes("alpha")||t.targetVersion.includes("next")?0:1)}}function s$(e,i){if(e&1&&I(0,XV,3,3,"div",29)(1,i$,2,1),e&2){let t=b(4);T(t.versionNotesShow?0:1)}}function o$(e,i){if(e&1&&I(0,QV,1,1,"markdown",28)(1,s$,2,1),e&2){let t=b(3);T(t.versionNotes?0:1)}}function r$(e,i){if(e&1&&(p(0,"div",25),I(1,ZV,2,0,"div",26)(2,o$,2,1),m()),e&2){let t=b(2);u(),T(t.action==="Update"&&!t.versionNotesLoaded?1:2)}}function n$(e,i){e&1&&(p(0,"div",26),x(1,"i",27),m())}function a$(e,i){if(e&1&&x(0,"markdown",28),e&2){let t=b(4);y("data",t.fullChangelog)}}function l$(e,i){e&1&&(x(0,"div",31),H(1,"translate")),e&2&&y("innerHTML",C(1,1,"plugins.manage.changelog_none"),_e)}function c$(e,i){if(e&1&&I(0,a$,1,1,"markdown",28)(1,l$,2,3,"div",31),e&2){let t=b(3);T(t.fullChangelog?0:1)}}function d$(e,i){if(e&1&&(p(0,"div",30),I(1,n$,2,0,"div",26)(2,c$,2,1),m()),e&2){let t=b(2);u(),T(t.action==="Update"&&!t.fullChangelogLoaded?1:2)}}function u$(e,i){if(e&1){let t=$();p(0,"div",24)(1,"p",32)(2,"span",33),w(3),H(4,"translate"),m(),p(5,"a",34),R("click",function(){E(t);let o=b(2);return U(o.downloadBackupFile())}),x(6,"i",35),m()(),p(7,"p",36),w(8),H(9,"translate"),m()()}e&2&&(u(3),K(C(4,2,"plugins.manage.backup")),u(5),K(C(9,4,"plugins.manage.hb_restart")))}function g$(e,i){if(e&1){let t=$();p(0,"div",6)(1,"div",9),x(2,"i",17),m(),I(3,JV,3,2,"h5",18),p(4,"ul",19,0),De("activeIdChange",function(o){E(t);let r=b();return Ne(r.releaseNotesTab,o)||(r.releaseNotesTab=o),U(o)}),p(6,"li",20)(7,"button",21),w(8),H(9,"translate"),m(),ce(10,r$,3,1,"ng-template",22),m(),p(11,"li",20)(12,"button",21),w(13),H(14,"translate"),m(),ce(15,d$,3,1,"ng-template",22),m()(),x(16,"div",23),I(17,u$,10,6,"div",24),m()}if(e&2){let t=sg(5),s=b();u(2),y("ngClass",zs(13,X0,s.action==="Install"&&!s.installedVersion,s.action==="Install"&&s.installedVersion,s.action==="Update",s.action==="Uninstall")),u(),T(s.latestVersion?3:-1),u(),Ae("activeId",s.releaseNotesTab),u(2),y("ngbNavItem",1),u(2),K(C(9,9,"plugins.manage.notes")),u(3),y("ngbNavItem",2),u(2),K(C(14,11,"plugins.manage.changelog")),u(3),y("ngbNavOutlet",t),u(),T(Pe(18,OV).includes(s.pluginName)?17:-1)}}function m$(e,i){if(e&1){let t=$();p(0,"button",43),H(1,"translate"),R("click",function(){E(t);let o=b(2);return U(o.dismissModal())}),w(2),H(3,"translate"),m()}e&2&&(W("aria-label",C(1,2,"form.button_close")),u(2),M(" ",C(3,4,"form.button_close")," "))}function p$(e,i){if(e&1){let t=$();p(0,"button",43),H(1,"translate"),R("click",function(){E(t);let o=b(2);return U(o.dismissModal())}),w(2),H(3,"translate"),m()}e&2&&(W("aria-label",C(1,2,"form.button_close")),u(2),M(" ",C(3,4,"form.button_close")," "))}function _$(e,i){if(e&1){let t=$();p(0,"button",44),R("click",function(){E(t);let o=b(2);return U(o.update())}),w(1),H(2,"translate"),m()}e&2&&(u(),K(C(2,1,"form.button_continue")))}function h$(e,i){if(e&1){let t=$();p(0,"button",44),R("click",function(){E(t);let o=b(2);return U(o.childBridges.length>0?o.onRestartChildBridgeClick():o.onRestartHomebridgeClick())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"menu.tooltip_restart")," "))}function b$(e,i){if(e&1){let t=$();p(0,"button",45),R("click",function(){E(t);let o=b(2);return U(o.downloadLogFile())}),w(1),H(2,"translate"),m()}e&2&&(u(),K(C(2,1,"form.button_download")))}function f$(e,i){if(e&1&&(p(0,"div",8)(1,"div",37),I(2,m$,4,6,"button",38),m(),p(3,"div",39),I(4,p$,4,6,"button",38),m(),p(5,"div",40),I(6,_$,3,3,"button",41),I(7,h$,3,3,"button",41),I(8,b$,3,3,"button",42),m()()),e&2){let t=b();u(2),T(!t.justUpdatedPlugin&&t.onlineUpdateOk||t.justUpdatedPlugin&&(!t.isDisabled||t.actionFailed)?2:-1),u(2),T(t.justUpdatedPlugin&&t.isDisabled&&!t.actionFailed||!t.onlineUpdateOk?4:-1),u(2),T(t.onlineUpdateOk&&t.releaseNotesShow?6:-1),u(),T(t.justUpdatedPlugin&&!t.isDisabled?7:-1),u(),T(t.actionFailed?8:-1)}}var ho=(()=>{class e{$activeModal=z(Re);$api=z(ve);$backup=z(Ag);$modal=z(et);$router=z(oi);$settings=z(Me);$toastr=z(He);$translate=z(ke);$ws=z(Ri);io;toastSuccess;term=new Z0.Terminal;termTarget;fitAddon=new Y0.FitAddon;webLinksAddon=new J0.WebLinksAddon;errorLog="";pluginName;pluginDisplayName;targetVersion;latestVersion;installedVersion;isDisabled;action;targetVersionPretty="";actionComplete=!1;actionFailed=!1;justUpdatedPlugin=!1;updateToBeta=!1;childBridges=[];presentTenseVerb;pastTenseVerb;onlineUpdateOk;iconStar='<i class="fas fa-fw fa-star primary-text"></i>';iconThumbsUp='<i class="fas fa-fw fa-thumbs-up primary-text"></i>';versionNotes;versionNotesLoaded=!1;versionNotesShow=!1;fullChangelog;fullChangelogLoaded=!1;releaseNotesShow=!1;releaseNotesTab=1;constructor(){this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}ngOnInit(){switch(this.targetVersionPretty=this.targetVersion==="latest"?`v${this.latestVersion}`:/^\d/.test(this.targetVersion)?`v${this.targetVersion}`:this.targetVersion,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 s=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();s&&(this.errorLog+=`${s}\r
24
- `)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk=!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32"),this.action){case"Install":this.install(),this.presentTenseVerb=this.$translate.instant("plugins.manage.install"),this.pastTenseVerb=this.$translate.instant("plugins.manage.installed");break;case"Uninstall":this.uninstall(),this.presentTenseVerb=this.$translate.instant("plugins.manage.uninstall"),this.pastTenseVerb=this.$translate.instant("plugins.manage.uninstalled");break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta=!1;break;case"alpha":case"beta":case"test":this.updateToBeta=!0;break}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated"),this.getVersionNotes();break}}update(){if(this.releaseNotesShow=!1,this.versionNotes="",this.fullChangelog="",!!this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>G(this,null,function*(){if(this.pluginName==="homebridge-config-ui-x"){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{window.location.href="/restart"},error:t=>{console.error(t),window.location.href="/restart"}});return}try{yield this.getChildBridges()}catch(t){console.error(t)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate(["/plugins"])}),error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return G(this,null,function*(){try{for(let s of this.childBridges)yield le(this.$api.put(`/server/restart/${s.username}`,{}));let t=this.$modal.open(L0,{size:"xl",backdrop:"static"});t.componentInstance.plugin={name:this.pluginName,displayName:this.pluginDisplayName},t.componentInstance.childBridges=this.childBridges}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let t=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,Q0.saveAs)(t,`${this.pluginName}-error.log`)}downloadBackupFile(){return G(this,null,function*(){try{yield this.$backup.downloadBackup()}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end()}dismissModal(){this.$activeModal.dismiss("Dismiss")}install(){if(this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(`${this.pastTenseVerb} ${this.pluginName}`,this.toastSuccess),window.location.href=`/plugins?action=just-installed&plugin=${this.pluginName}`},error:t=>{this.actionFailed=!0,console.error(t),this.$router.navigate(["/plugins"]),this.$toastr.error(t.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:()=>{this.$activeModal.close(),this.$router.navigate(["/plugins"]),this.$modal.open(ri,{size:"lg",backdrop:"static"})},error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}upgradeHomebridge(){return G(this,null,function*(){let t="update";if(Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])){let s=this.$modal.open(W0,{size:"lg",backdrop:"static"});s.componentInstance.isUpdating=!0,t=yield s.result}t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:s=>{console.error(s),this.$router.navigate(["/restart"])}})},error:s=>{this.actionFailed=!0,console.error(s),this.$toastr.error(s.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getVersionNotes(){return G(this,null,function*(){this.releaseNotesShow=!0;try{let t=yield le(this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`));this.fullChangelog=t.changelog,t.latestVersion&&(this.latestVersion=t.latestVersion),this.targetVersion==="latest"||this.targetVersion===this.latestVersion?(this.versionNotesShow=!0,t.notes&&(this.versionNotes=t.notes)):(this.versionNotesShow=!1,this.versionNotesLoaded=!0)}catch(t){console.error("Error loading release notes:",t)}this.fullChangelogLoaded=!0,this.versionNotesLoaded=!0})}getChildBridges(){return G(this,null,function*(){(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(s=>{this.pluginName===s.plugin&&this.childBridges.push(s)})})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{pluginName:"pluginName",pluginDisplayName:"pluginDisplayName",targetVersion:"targetVersion",latestVersion:"latestVersion",installedVersion:"installedVersion",isDisabled:"isDisabled",action:"action"},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-fw","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","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[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-fw","fa-cog","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"],["href","javascript:void(0)",3,"click"],[1,"fa","fa-fw","fa-download","mx-1"],[1,"w-100","text-center","mb-0","small","grey-text"],[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(s,o){s&1&&(p(0,"div",1)(1,"div",2)(2,"h5",3),w(3),m(),p(4,"button",4),H(5,"translate"),R("click",function(){return o.dismissModal()}),m()(),x(6,"div",5),I(7,GV,2,1,"div",6),I(8,WV,12,14,"div",7),I(9,g$,18,19,"div",6),I(10,f$,9,5,"div",8),m()),s&2&&(u(3),K(o.pluginDisplayName),u(),W("aria-label",C(5,7,"form.button_close")),u(2),y("hidden",!o.onlineUpdateOk||o.actionComplete||o.releaseNotesShow),u(),T(o.actionComplete?7:-1),u(),T(o.onlineUpdateOk?-1:8),u(),T(o.releaseNotesShow&&!o.actionComplete&&o.onlineUpdateOk?9:-1),u(),T(!o.onlineUpdateOk||o.actionComplete||o.releaseNotesShow||o.actionFailed?10:-1))},dependencies:[pn,mn,_n,Ut,wg,yg,fg,bg,vg,Fe],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 e})();var eS=je(gn(),1);var y$=()=>["homebridge","homebridge-config-ui-x"];function v$(e,i){e&1&&(p(0,"div",5),x(1,"i",12),m())}function w$(e,i){if(e&1&&(x(0,"i",20),p(1,"h6",21),w(2),H(3,"translate"),m(),p(4,"p",21),w(5),H(6,"translate"),p(7,"span",22),w(8),m()()),e&2){let t=b(2);u(2),K(C(3,3,"plugins.manage.select_version")),u(3),M(" ",C(6,5,"plugins.status_installed"),": "),u(3),M("v",t.plugin.installedVersion)}}function k$(e,i){e&1&&(x(0,"i",23),p(1,"h6",21),w(2),H(3,"translate"),m()),e&2&&(u(2),K(C(3,1,"plugins.manage.select_version")))}function H$(e,i){e&1&&x(0,"i",26)}function S$(e,i){e&1&&x(0,"i",27)}function C$(e,i){if(e&1){let t=$();p(0,"li",14)(1,"span",8),w(2),x(3,"br"),p(4,"small",24),w(5),m()(),p(6,"button",25),R("click",function(){let o=E(t).$implicit,r=b(2);return U(r.doInstall(o.version))}),I(7,H$,1,0,"i",26)(8,S$,1,0,"i",27),m()()}if(e&2){let t=i.$implicit,s=b(2);u(2),M(" ",t.tag," "),u(3),M("v",t.version),u(2),T(s.plugin.installedVersion===t.version?7:8)}}function x$(e,i){e&1&&w(0," \u2713 ")}function I$(e,i){if(e&1&&(p(0,"option",17),w(1),I(2,x$,1,0),m()),e&2){let t=i.$implicit,s=b(2);y("value",t.version)("selected",s.versionSelect==t.version),u(),M(" v",t.version," "),u(),T(t.version==s.plugin.installedVersion?2:-1)}}function T$(e,i){e&1&&x(0,"i",26)}function P$(e,i){e&1&&x(0,"i",27)}function z$(e,i){if(e&1){let t=$();p(0,"button",25),R("click",function(){E(t);let o=b(2);return U(o.doInstall(o.versionSelect))}),I(1,T$,1,0,"i",26)(2,P$,1,0,"i",27),m()}if(e&2){let t=b(2);u(),T(t.plugin.installedVersion===t.versionSelect?1:2)}}function j$(e,i){if(e&1&&(p(0,"ul",19)(1,"li",28)(2,"div",8),w(3),H(4,"translate"),x(5,"br"),p(6,"span",29),w(7),H(8,"translate"),m()(),p(9,"div",30),x(10,"input",31),H(11,"translate"),x(12,"label",32),m()()()),e&2){let t=b(2);u(3),M(" ",C(4,4,"plugins.manage.hide_updates")),u(4),K(C(8,6,"plugins.manage.hide_updates_desc")),u(3),y("formControl",t.hideUpdatesFormControl),W("aria-label",C(11,8,"plugins.manage.hide_updates"))}}function A$(e,i){if(e&1){let t=$();p(0,"div",6),I(1,w$,9,7)(2,k$,4,3),p(3,"ul",13),gt(4,C$,9,3,"li",14,ut),p(6,"li",14)(7,"div",15),w(8),H(9,"translate"),x(10,"br"),p(11,"select",16),De("ngModelChange",function(o){E(t);let r=b();return Ne(r.versionSelect,o)||(r.versionSelect=o),U(o)}),gt(12,I$,3,4,"option",17,ut),m()(),I(14,z$,3,1,"button",18),m()(),I(15,j$,13,10,"ul",19),m()}if(e&2){let t=b();u(),T(t.plugin.installedVersion?1:2),u(3),mt(t.versionsWithTags),u(4),M(" ",C(9,5,"plugins.manage.all_versions")," "),u(3),Ae("ngModel",t.versionSelect),u(),mt(t.versions),u(2),T(t.versionSelect?14:-1),u(),T(t.plugin.installedVersion&&!Pe(7,y$).includes(t.plugin.name)?15:-1)}}var tS=(()=>{class e{$activeModal=z(Re);$api=z(ve);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;isUpdateHidden=!1;hideUpdatesFormControl=new mg(!1);loading=!0;versions=[];versionsWithTags=[];versionSelect;ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions(),this.isUpdateHidden=this.$settings.env.plugins.hideUpdatesFor&&this.$settings.env.plugins.hideUpdatesFor.includes(this.plugin.name),this.hideUpdatesFormControl.patchValue(this.isUpdateHidden),this.hideUpdatesFormControl.valueChanges.pipe(xs(750)).subscribe(t=>this.toggleHideUpdates(t))}doInstall(t){this.$activeModal.close({name:this.plugin.name,version:t,engines:this.versions.find(s=>s.version===t).engines,action:this.plugin.installedVersion?"alternate":"install"})}toggleHideUpdates(t){return G(this,null,function*(){let s=this.$settings.env.plugins?.hideUpdatesFor||[];t?s.includes(this.plugin.name)||(s=[...s,this.plugin.name].sort((o,r)=>o.localeCompare(r))):s=s.filter(o=>o!==this.plugin.name);try{yield le(this.$api.put("/config-editor/ui/plugins/hide-updates-for",{body:s})),this.$settings.setEnvItem("plugins.hideUpdatesFor",s),window.location.href=`/plugins?action=open-manage-version&plugin=${this.plugin.name}`}catch(o){this.hideUpdatesFormControl.patchValue(this.isUpdateHidden,{emitEvent:!1}),console.error(o),this.$toastr.error(o.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:t=>{for(let[s,o]of Object.entries(t.versions))this.versions.push({version:s,engines:o.engines||null}),Object.keys(t.tags).filter(r=>t.tags[r]===s).forEach(r=>{this.versionsWithTags.push({version:s,tag:r})});this.plugin.installedVersion&&!this.versions.find(s=>s.version===this.plugin.installedVersion)&&this.versions.push({version:this.plugin.installedVersion,engines:this.plugin.engines||null}),this.versions.sort((s,o)=>(0,eS.rcompare)(s.version,o.version)),this.versionsWithTags.sort((s,o)=>{let r=["latest","next","beta","alpha"],n=r.includes(s.tag)?r.indexOf(s.tag):999,a=r.includes(o.tag)?r.indexOf(o.tag):999;return n-a}),!this.versions.find(s=>s.version===this.versionSelect)&&t.tags.latest&&(this.versionSelect=t.tags.latest),this.loading=!1},error:t=>{console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},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"],[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-fw","fa-cog","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",2,"font-size","0.875rem",3,"ngModelChange","ngModel"],[3,"value","selected"],[1,"btn","btn-primary","m-0","ms-3"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"fas","fa-fw","fa-code-compare","primary-text","mb-3",2,"font-size","75px"],[1,"mb-3"],[1,"font-monospace"],[1,"far","fa-fw","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",3,"click"],[1,"fas","fa-fw","fa-rotate-right"],[1,"fas","fa-fw","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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),p(4,"button",3),H(5,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(6,"div",4),I(7,v$,2,0,"div",5)(8,A$,16,8,"div",6),m(),p(9,"div",7),x(10,"div",8),p(11,"div",9)(12,"button",10),H(13,"translate"),R("click",function(){return o.dismissModal()}),w(14),H(15,"translate"),m()(),x(16,"div",11),m()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),W("aria-label",C(5,5,"form.button_close")),u(3),T(o.loading?7:8),u(5),W("aria-label",C(13,7,"form.button_close")),u(2),M(" ",C(15,9,"form.button_close")," "))},dependencies:[Wt,ns,as,Ni,As,yt,Di,wo,Bi,Fe],encapsulation:2})}return e})();var iS=je(CS(),1);function N$(e,i){e&1&&(p(0,"div",5),x(1,"i",14),m())}function D$(e,i){e&1&&(p(0,"div",6),w(1),H(2,"translate"),H(3,"translate"),m()),e&2&&(u(),ss(" ",C(2,2,"plugins.settings.message_manual_config_required")," ",C(3,4,"plugins.settings.message_consult_documentation")," "))}function B$(e,i){if(e&1){let t=$();p(0,"button",25),H(1,"translate"),R("click",function(){E(t);let o=b(2).$index,r=b(2);return U(r.removeBlock(o))}),x(2,"i",26),m()}e&2&&y("ngbTooltip",C(1,2,"form.button_delete"))("openDelay",150)}function E$(e,i){if(e&1&&I(0,B$,3,4,"button",24),e&2){let t=b(3);T(!(t.schema!=null&&t.schema.singular)||t.pluginConfig.length>1?0:-1)}}function U$(e,i){if(e&1){let t=$();p(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),w(4),m(),p(5,"div"),I(6,E$,1,1),p(7,"button",19),H(8,"translate"),R("click",function(){let o=E(t).$index,r=b(2);return U(r.editBlock(o))}),x(9,"i",20),m()()()(),p(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),De("ngModelChange",function(o){E(t);let r=b(2);return Ne(r.currentBlock,o)||(r.currentBlock=o),U(o)}),R("onInit",function(o){E(t);let r=b(2);return U(r.onEditorInit(o))}),m()()()()}if(e&2){let t=i.$implicit,s=i.$index,o=b(2);y("ngbAccordionItem","configBlock."+s)("collapsed",o.show!=="configBlock."+s)("id","configBlock."+s),u(4),K(t.name||o.pluginAlias),u(2),T(o.show==="configBlock."+s?6:-1),u(),y("ngbTooltip",C(8,9,"form.button_edit"))("openDelay",150),u(5),y("options",o.editorOptions),Ae("ngModel",o.currentBlock)}}function R$(e,i){if(e&1&&(p(0,"div",7),gt(1,U$,13,11,"div",15,ut),m()),e&2){let t=b();y("closeOthers",!0),u(),mt(t.pluginConfig)}}function F$(e,i){if(e&1){let t=$();p(0,"button",30),R("click",function(){E(t);let o=b(2);return U(o.addBlock())}),x(1,"i",31),m()}}function M$(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"form.button_save")," ")}function O$(e,i){e&1&&x(0,"i",29)}function q$(e,i){if(e&1){let t=$();I(0,F$,2,0,"button",27),p(1,"button",28),R("click",function(){E(t);let o=b();return U(o.save())}),I(2,M$,2,3),I(3,O$,1,0,"i",29),m()}if(e&2){let t=b();T(t.schema!=null&&t.schema.singular?-1:0),u(),y("disabled",t.saveInProgress),u(),T(t.saveInProgress?-1:2),u(),T(t.saveInProgress?3:-1)}}function K$(e,i){if(e&1){let t=$();p(0,"button",32),R("click",function(){E(t);let o=b();return U(o.openFullConfigEditor())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"plugins.settings.label_open_config_editor")," "))}var Eu=(()=>{class e{$activeModal=z(Re);$api=z(ve);$md=z(Ig);$modal=z(et);$plugin=z(es);$router=z(oi);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;get arrayKey(){return this.pluginType==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0},this.$md.detect.mobile()?(this.loading=!1,this.canConfigure=!1):this.loadPluginAlias()}onEditorInit(t){return G(this,null,function*(){window.editor=t,this.monacoEditor=t,yield this.monacoEditor.getModel().setValue(this.currentBlock),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.push({[this.pluginType]:this.pluginAlias,name:this.pluginAlias}),this.editBlock(this.pluginConfig.length-1)}editBlock(t){this.saveCurrentBlock()&&(this.show=`configBlock.${t}`,this.currentBlockIndex=t,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(t){let s=this.pluginConfig[t],o=this.pluginConfig.findIndex(r=>r===s);o>-1&&this.pluginConfig.splice(o,1),this.currentBlockIndex=null,this.currentBlock=void 0,this.show=""}save(){return G(this,null,function*(){if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let t=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.$activeModal.close(),this.isFirstSave&&this.$settings.env.recommendChildBridges&&t[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(this.plugin,!0);return}if(!["homebridge","homebridge-config-ui-x"].includes(this.plugin.name)&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let s=this.$modal.open(Ds,{size:"lg",backdrop:"static"});s.componentInstance.bridges=this.childBridges.map(o=>({name:o.name,username:o.username}));return}this.$activeModal.close(),this.$modal.open(ri,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress=!1}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}closeModal(){this.$activeModal.close()}loadPluginAlias(){this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{t.pluginAlias&&t.pluginType?(this.pluginAlias=t.pluginAlias,this.pluginType=t.pluginType,this.loadHomebridgeConfig()):this.loading=!1},error:()=>{this.loading=!1}})}loadHomebridgeConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe(t=>{this.pluginConfig=t,this.canConfigure=!0,this.loading=!1,this.pluginConfig.length?this.editBlock(0):(this.isFirstSave=!0,this.addBlock())})}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let t=this.monacoEditor.getModel().getValue().trim(),s;t.charAt(0)==='"'&&t.charAt(t.length-1)==="]"&&(t=`{${t}}`);try{s=iS.default.parse(t)}catch(r){return console.error(r),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(s)||typeof s!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!s[this.pluginType]&&Array.isArray(s[this.arrayKey])&&s[this.arrayKey].length&&Object.keys(s).length===1&&(s=s[this.arrayKey][0]),this.pluginType==="accessory"&&(!s.name||typeof s.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),s.name="",this.monacoEditor.getModel().setValue(JSON.stringify(s,null,4)),!1;let o=this.pluginConfig[this.currentBlockIndex];Object.keys(o).forEach(r=>delete o[r]),Object.assign(o,s),o[this.pluginType]=this.pluginAlias}return!0}getChildBridges(){return G(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(s=>{this.plugin.name===s.plugin&&this.childBridges.push(s)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema"},decls:19,vars:14,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"],[1,"alert","alert-warning","mb-0"],["ngbAccordion","",3,"closeOthers"],[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"],[1,"btn","btn-primary"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"card",3,"ngbAccordionItem","collapsed","id"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0"],["ngbAccordionToggle","","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-edit"],["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-3",3,"ngbTooltip","openDelay"],["container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-trash"],["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-fw","fa-spinner","fa-pulse"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-2",3,"click"],[1,"fa","fa-fw","fa-plus"],[1,"btn","btn-primary",3,"click"]],template:function(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),p(4,"button",3),H(5,"translate"),R("click",function(){return o.closeModal()}),m()(),p(6,"div",4),I(7,N$,2,0,"div",5),I(8,D$,4,6,"div",6),I(9,R$,3,1,"div",7),m(),p(10,"div",8)(11,"div",9)(12,"button",10),R("click",function(){return o.closeModal()}),w(13),H(14,"translate"),m()(),x(15,"div",11),p(16,"div",12),I(17,q$,4,4),I(18,K$,3,3,"button",13),m()()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),y("disabled",o.saveInProgress),W("aria-label",C(5,10,"form.button_close")),u(3),T(o.loading?7:-1),u(),T(!o.loading&&!o.canConfigure?8:-1),u(),T(!o.loading&&o.canConfigure?9:-1),u(3),y("disabled",o.saveInProgress),u(),M(" ",C(14,12,"form.button_close")," "),u(4),T(o.canConfigure?17:-1),u(),T(o.canConfigure?-1:18))},dependencies:[un,dn,cn,Ei,an,nn,kg,Wt,yt,Di,ln,Fe],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 e})();var sS=e=>({link:e}),V$=(e,i)=>({"green-text":e,"grey-text":i});function $$(e,i){if(e&1){let t=$();p(0,"button",13),H(1,"translate"),R("click",function(){E(t);let o=b();return U(o.closeModal())}),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),W("aria-label",C(1,2,"form.button_close"))}}function L$(e,i){e&1&&(p(0,"div",5),x(1,"i",14),m())}function G$(e,i){e&1&&(p(0,"li"),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"child_bridge.bridges_paired_2")))}function W$(e,i){e&1&&(p(0,"li"),w(1),H(2,"translate"),m()),e&2&&(u(),M("",C(2,1,"child_bridge.select_type"),":"))}function Y$(e,i){if(e&1&&(p(0,"li"),w(1),H(2,"translate"),m(),I(3,G$,3,3,"li"),I(4,W$,3,3,"li")),e&2){let t=b(2);u(),K(C(2,3,"child_bridge.bridges_paired")),u(2),T(t.configBlocks.length===1&&!t.deviceInfo[t.configBlocks[0]._bridge==null?null:t.configBlocks[0]._bridge.username]&&t.originalBridges.length===0?3:-1),u(),T(t.canConfigure?4:-1)}}function J$(e,i){if(e&1&&(p(0,"option",29),w(1),m()),e&2){let t=i.$implicit,s=i.$index;y("value",s),u(),K(t.name||t.platform||t.accessory)}}function Z$(e,i){if(e&1){let t=$();p(0,"li",25),w(1),H(2,"translate"),m(),p(3,"li",23)(4,"label",26),w(5),H(6,"translate"),m(),p(7,"div",27)(8,"select",28),De("ngModelChange",function(o){E(t);let r=b(3);return Ne(r.selectedBlock,o)||(r.selectedBlock=o),U(o)}),R("change",function(o){E(t);let r=b(3);return U(r.onBlockChange(o.target.value))}),gt(9,J$,2,2,"option",29,ut),m()()()}if(e&2){let t=b(3);u(),K(C(2,3,"form.label.changes_kept")),u(4),M(" ",C(6,5,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),u(3),Ae("ngModel",t.selectedBlock),u(),mt(t.configBlocks)}}function Q$(e,i){if(e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",31),w(5),m()()),e&2){let t=b(3);u(2),M(" ",C(3,2,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),u(3),M(" ",t.configBlocks[t.selectedBlock].name||t.configBlocks[t.selectedBlock].platform||t.configBlocks[t.selectedBlock].accessory," ")}}function X$(e,i){e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",32),w(5),H(6,"translate"),m()()),e&2&&(u(2),K(C(3,2,"child_bridge.config.use")),u(3),M(" ",C(6,4,"child_bridge.config.prevent")," "))}function eL(e,i){if(e&1&&(p(0,"option",29),w(1),m()),e&2){let t=i.$implicit;y("value",t.username),u(),ss("",t.name," (",t.username,")")}}function tL(e,i){if(e&1){let t=$();p(0,"li",23)(1,"label",37),w(2),H(3,"translate"),m(),p(4,"div",27)(5,"select",38),R("change",function(o){E(t);let r=b(4);return U(r.onLinkBridgeChange(o.target.value))}),p(6,"option",29),w(7),H(8,"translate"),m(),gt(9,eL,2,3,"option",29,ut),m()()()}if(e&2){let t=b(4);u(2),K(C(3,2,"child_bridge.config.or_link")),u(5),K(C(8,4,"child_bridge.config.select_existing")),u(2),mt(t.bridgesAvailableForLink)}}function iL(e,i){if(e&1){let t=$();p(0,"li",33)(1,"span",7),w(2),H(3,"translate"),m(),p(4,"div",34)(5,"input",35),R("change",function(){E(t);let o=b(3);return U(o.toggleExternalBridge(o.configBlocks[o.selectedBlock],o.enabledBlocks[o.selectedBlock],o.selectedBlock))}),De("ngModelChange",function(o){E(t);let r=b(3);return Ne(r.enabledBlocks[r.selectedBlock],o)||(r.enabledBlocks[r.selectedBlock]=o),U(o)}),m(),x(6,"label",36),m()(),I(7,tL,11,6,"li",23)}if(e&2){let t=b(3);u(2),K(C(3,5,"child_bridge.config.use")),u(3),y("id","toggleExternalBridgeInput_"+t.selectedBlock),Ae("ngModel",t.enabledBlocks[t.selectedBlock]),u(),y("for","toggleExternalBridgeInput_"+t.selectedBlock),u(),T(!(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)&&t.bridgesAvailableForLink.length?7:-1)}}function sL(e,i){if(e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",31),w(5),m()(),p(6,"li",23)(7,"label",30),w(8),H(9,"translate"),m(),p(10,"div",31),w(11),m()(),p(12,"li",23)(13,"label",30),w(14),H(15,"translate"),m(),p(16,"div",31),w(17),m()()),e&2){let t=b(3);u(2),K(C(3,6,"accessories.bridge_link_username")),u(3),M(" ",t.currentlySelectedLink.username," "),u(3),K(C(9,8,"accessories.bridge_link_port")),u(3),M(" ",t.currentlySelectedLink.port," "),u(3),K(C(15,10,"accessories.bridge_link_name")),u(3),M(" ",t.currentlySelectedLink.name," ")}}function oL(e,i){e&1&&(p(0,"span"),w(1),H(2,"translate"),m()),e&2&&(u(),M(" \xB7 ",C(2,1,"status.code_scan")," "))}function rL(e,i){if(e&1){let t=$();p(0,"li",33)(1,"span",7),w(2),H(3,"translate"),p(4,"code"),w(5,"-D"),m()(),p(6,"div",34)(7,"input",51),H(8,"translate"),De("ngModelChange",function(o){E(t);let r=b(5);return Ne(r.configBlocks[r.selectedBlock]._bridge.debugModeEnabled,o)||(r.configBlocks[r.selectedBlock]._bridge.debugModeEnabled=o),U(o)}),m(),x(9,"label",36),m()()}if(e&2){let t=b(5);u(2),M("",C(3,5,"child_bridge.config.debug")," "),u(5),y("id","homebridgeDebugMode_"+t.selectedBlock),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.debugModeEnabled),W("aria-label",C(8,7,"settings.startup.debug")),u(2),y("for","homebridgeDebugMode_"+t.selectedBlock)}}function nL(e,i){if(e&1){let t=$();p(0,"li",39)(1,"div",40),x(2,"app-qrcode",41),p(3,"p",42),w(4),m(),p(5,"p",43),x(6,"i",44),w(7),H(8,"translate"),I(9,oL,3,3,"span"),m()()(),p(10,"li",23)(11,"label",30),w(12),H(13,"translate"),m(),p(14,"div",31),w(15),m()(),p(16,"li",23)(17,"label",30),w(18),H(19,"translate"),m(),p(20,"div",31),w(21),m()(),p(22,"li",23)(23,"label",30),w(24),H(25,"translate"),m(),p(26,"div",27)(27,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.name,o)||(r.configBlocks[r.selectedBlock]._bridge.name=o),U(o)}),m()()(),p(28,"li",23)(29,"label",30),w(30),H(31,"translate"),m(),p(32,"div",27)(33,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.manufacturer,o)||(r.configBlocks[r.selectedBlock]._bridge.manufacturer=o),U(o)}),m()()(),p(34,"li",23)(35,"label",30),w(36),H(37,"translate"),m(),p(38,"div",27)(39,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.model,o)||(r.configBlocks[r.selectedBlock]._bridge.model=o),U(o)}),m()()(),p(40,"li",23)(41,"label",30),w(42),H(43,"translate"),m(),p(44,"div",27)(45,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.firmwareRevision,o)||(r.configBlocks[r.selectedBlock]._bridge.firmwareRevision=o),U(o)}),m()()(),I(46,rL,10,9,"li",33),p(47,"li",23)(48,"label",30)(49,"span",46),w(50,"DEBUG"),m(),x(51,"br")(52,"small",47),H(53,"translate"),m(),p(54,"div",27)(55,"input",48),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.env.DEBUG,o)||(r.configBlocks[r.selectedBlock]._bridge.env.DEBUG=o),U(o)}),m()()(),p(56,"li",23)(57,"label",30)(58,"span",46),w(59,"NODE_OPTIONS"),m(),x(60,"br"),p(61,"small",49),w(62),H(63,"translate"),m()(),p(64,"div",27)(65,"input",50),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.env.NODE_OPTIONS,o)||(r.configBlocks[r.selectedBlock]._bridge.env.NODE_OPTIONS=o),U(o)}),m()()()}if(e&2){let t=b(4);u(2),y("data",t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._setupCode),u(2),K(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username].pincode),u(2),y("ngClass",os(41,V$,t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired,!t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired)),u(),M(" ",C(8,22,t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),u(2),T(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?-1:9),u(3),K(C(13,24,"accessories.bridge_username")),u(3),M(" ",t.configBlocks[t.selectedBlock]._bridge.username," "),u(3),K(C(19,26,"accessories.bridge_port")),u(3),M(" ",t.configBlocks[t.selectedBlock]._bridge.port," "),u(3),K(C(25,28,"child_bridge.config.name")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.name),u(3),K(C(31,30,"child_bridge.config.manufacturer")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.manufacturer),u(3),K(C(37,32,"child_bridge.config.model")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.model),u(3),K(C(43,34,"child_bridge.config.firmware")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.firmwareRevision),u(),T(t.canShowBridgeDebug?46:-1),u(6),y("innerHTML",Ke(53,36,"settings.service.debug_tooltip",Gt(44,sS,t.linkDebug)),_e),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.DEBUG),u(7),K(C(63,39,"settings.service.node_tooltip")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.NODE_OPTIONS)}}function aL(e,i){if(e&1&&I(0,nL,66,46),e&2){let t=b(3);T(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]?0:-1)}}function lL(e,i){e&1&&(p(0,"ngb-alert",24),w(1),H(2,"translate"),x(3,"br"),w(4),H(5,"translate"),m()),e&2&&(y("dismissible",!1),u(),M(" ",C(2,3,"child_bridge.restart_homebridge")," "),u(3),M("",C(5,5,"child_bridge.return_to_pair")," "))}function cL(e,i){if(e&1&&(p(0,"ul",22),I(1,Z$,11,7),I(2,Q$,6,4,"li",23),I(3,X$,7,6,"li",23),I(4,iL,8,7),I(5,sL,18,12),I(6,aL,1,1),m(),I(7,lL,6,7,"ngb-alert",24)),e&2){let t=b(2);u(),T(t.configBlocks.length>1?1:-1),u(),T(t.configBlocks.length===1?2:-1),u(),T(t.currentBridgeHasLinks?3:-1),u(),T(t.currentBridgeHasLinks?-1:4),u(),T(t.currentlySelectedLink?5:-1),u(),T(!t.currentlySelectedLink&&(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)?6:-1),u(),T(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username&&t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]===!1?7:-1)}}function dL(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"child_bridge.confirm_delete_2")," ")}function uL(e,i){if(e&1&&(p(0,"li"),w(1),p(2,"span",46),w(3),m(),w(4,") "),m()),e&2){let t=i.$implicit,s=b(3);u(),M(" ",t.bridgeName||(s.deviceInfo[t.id]==null?null:s.deviceInfo[t.id].displayName)," ("),u(2),K(t.id)}}function gL(e,i){if(e&1&&(p(0,"ngb-alert",19)(1,"p"),w(2),H(3,"translate"),I(4,dL,2,3),m(),p(5,"div",9)(6,"ul",52),gt(7,uL,5,2,"li",null,ut),m()()()),e&2){let t=b(2);y("dismissible",!1),u(2),M(" ",C(3,3,"child_bridge.confirm_delete_1")," "),u(2),T(t.deletingPairedBridge?4:-1),u(3),mt(t.deleteBridges)}}function mL(e,i){e&1&&(p(0,"ngb-alert",20),w(1),H(2,"translate"),m()),e&2&&(y("dismissible",!1),u(),M(" ",C(2,2,"child_bridge.must_configure_plugin")," "))}function pL(e,i){if(e&1){let t=$();p(0,"ngb-alert",21)(1,"div",17),w(2),H(3,"translate"),H(4,"translate"),m(),p(5,"button",53),R("click",function(){E(t);let o=b(2);return U(o.openFullConfigEditor())}),w(6),H(7,"translate"),m()()}e&2&&(y("dismissible",!1),u(2),ss(" ",C(3,4,"plugins.settings.message_manual_config_required")," ",C(4,6,"plugins.settings.message_consult_documentation")," "),u(4),M(" ",C(7,8,"plugins.settings.label_open_config_editor")," "))}function _L(e,i){if(e&1&&(p(0,"div",15),x(1,"i",16),m(),p(2,"ul",17),x(3,"li",18),H(4,"translate"),I(5,Y$,5,5),m(),I(6,cL,8,7),I(7,gL,9,5,"ngb-alert",19),I(8,mL,3,4,"ngb-alert",20),I(9,pL,8,10,"ngb-alert",21)),e&2){let t=b();u(3),y("innerHTML",Ke(4,6,"child_bridge.about",Gt(9,sS,t.linkChildBridges)),_e),u(2),T(t.configBlocks.length?5:-1),u(),T(t.canConfigure&&t.configBlocks.length?6:-1),u(),T(t.deleteBridges.length?7:-1),u(),T(!t.configBlocks.length&&t.canConfigure?8:-1),u(),T(t.canConfigure?-1:9)}}function hL(e,i){if(e&1){let t=$();p(0,"button",54),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),u(),M(" ",C(2,2,"form.button_close")," ")}}function bL(e,i){e&1&&x(0,"i",56)}function fL(e,i){if(e&1){let t=$();p(0,"button",55),R("click",function(){E(t);let o=b();return U(o.save())}),w(1),H(2,"translate"),I(3,bL,1,0,"i",56),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),u(),M(" ",C(2,3,"form.button_save")," "),u(2),T(t.saveInProgress?3:-1)}}function yL(e,i){if(e&1){let t=$();p(0,"button",57),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function vL(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"form.button_save")," ")}function wL(e,i){e&1&&x(0,"i",56)}function kL(e,i){if(e&1){let t=$();p(0,"button",55),R("click",function(){E(t);let o=b(2);return U(o.save())}),I(1,vL,2,3),I(2,wL,1,0,"i",56),m()}if(e&2){let t=b(2);y("disabled",t.saveInProgress||t.loading),u(),T(t.saveInProgress?-1:1),u(),T(t.saveInProgress?2:-1)}}function HL(e,i){if(e&1){let t=$();p(0,"button",59),R("click",function(){E(t);let o=b(2);return U(o.openPluginConfig())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"plugins.button_settings")," "))}function SL(e,i){if(e&1&&(I(0,kL,3,3,"button",10),I(1,HL,3,3,"button",58)),e&2){let t=b();T(t.configBlocks.length?0:-1),u(),T(t.configBlocks.length?-1:1)}}var oS=(()=>{class e{$activeModal=z(Re);$api=z(ve);$modal=z(et);$plugin=z(es);$router=z(oi);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;schema;justInstalled=!1;loading=!0;canConfigure=!0;configBlocks=[];selectedBlock="0";isPlatform;enabledBlocks={};bridgeCache=new Map;originalBridges=[];deviceInfo=new Map;saveInProgress=!1;canShowBridgeDebug=!1;deleteBridges=[];deletingPairedBridge=!1;accessoryBridgeLinks=[];bridgesAvailableForLink=[];currentlySelectedLink=null;currentBridgeHasLinks=!1;linkChildBridges='<a href="https://github.com/homebridge/homebridge/wiki/Child-Bridges" target="_blank"><i class="fas fa-fw 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-fw fa-external-link-alt primary-text"></i></a>';ngOnInit(){return G(this,null,function*(){yield Promise.all([this.getPluginType(),this.loadPluginConfig()]),this.canShowBridgeDebug=this.$settings.env.homebridgeVersion.startsWith("2"),this.loading=!1})}onBlockChange(t){if(this.selectedBlock=t,this.currentlySelectedLink=this.accessoryBridgeLinks.find(s=>s.index===t)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(s=>s.usesIndex===t),this.bridgesAvailableForLink=[],this.configBlocks[Number(t)].accessory)for(let[s,o]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(r=>r.id===o.username)||s<Number(t)&&this.bridgesAvailableForLink.push({index:s.toString(),usesIndex:t,name:o.name,port:o.port,username:o.username})}onLinkBridgeChange(t){if(t){let s=this.configBlocks.findIndex(r=>r._bridge?.username===t);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:s.toString(),name:this.bridgeCache.get(s)?.name,port:this.bridgeCache.get(s)?.port,username:t}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(r=>r.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let o=this.configBlocks[Number(this.selectedBlock)];o._bridge={username:t}}}getPluginType(){return G(this,null,function*(){try{let t=yield le(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`));this.isPlatform=t.pluginType==="platform"}catch(t){this.$toastr.error(this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close(),console.error(t)}})}loadPluginConfig(){return G(this,null,function*(){try{this.configBlocks=yield le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[s,o]of this.configBlocks.entries())if(o._bridge&&o._bridge.username){this.enabledBlocks[s]=!0;let r=Array.from(this.bridgeCache.values()).findIndex(a=>a.username===o._bridge.username),n=r!==-1?Array.from(this.bridgeCache.values())[r]:void 0;n?(o._bridge.env={},this.accessoryBridgeLinks.push({index:s.toString(),usesIndex:r.toString(),name:n.name,port:n.port,username:o._bridge.username})):(o._bridge.env=o._bridge.env||{},this.bridgeCache.set(s,o._bridge),yield this.getDeviceInfo(o._bridge.username),o._bridge.name||(o._bridge.name=this.deviceInfo[o._bridge.username]?.displayName),this.originalBridges.push(o._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((s,o)=>{this.enabledBlocks[o]=!0,this.toggleExternalBridge(s,!0,o.toString())}),this.accessoryBridgeLinks.find(s=>s.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(t){this.canConfigure=!1,console.error(t)}})}toggleExternalBridge(t,s,o){return G(this,null,function*(){if(s){let r=this.bridgeCache.get(Number(o));t._bridge={username:r?r.username:this.generateUsername(),port:yield this.getUnusedPort(),name:r?.name,model:r?.model,manufacturer:r?.manufacturer,firmwareRevision:r?.firmwareRevision,debugModeEnabled:r?.debugModeEnabled,env:r?.env},this.deleteBridges.some(n=>n.id===t._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(n=>n.id!==t._bridge.username)),this.bridgeCache.set(Number(o),t._bridge),yield this.getDeviceInfo(t._bridge.username)}else{if(this.accessoryBridgeLinks.some(r=>r.index===o))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(r=>r.index!==o),this.currentlySelectedLink=null;else{let r=this.originalBridges.find(n=>n.username===t._bridge.username);r&&this.deleteBridges.push({id:t._bridge.username,bridgeName:t._bridge.name||r.displayName,paired:this.deviceInfo[t._bridge.username]?._isPaired})}delete t._bridge}this.deletingPairedBridge=this.deleteBridges.some(r=>r.paired)})}getUnusedPort(){return G(this,null,function*(){this.saveInProgress=!0;try{return(yield le(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(t){return G(this,null,function*(){try{this.deviceInfo[t]=yield le(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(s){console.error(s),this.deviceInfo[t]=!1}})}save(){return G(this,null,function*(){this.saveInProgress=!0;try{yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let t of this.deleteBridges)try{yield le(this.$api.delete(`/server/pairings/${t.id.replace(/:/g,"")}`))}catch(s){console.error(s),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(ri,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}finally{this.saveInProgress=!1}})}openPluginConfig(){this.$activeModal.close(),this.$plugin.settings({name:this.plugin.name,settingsSchema:!0,links:{}})}generateUsername(){let t="0123456789ABCDEF",s="0E:";for(let o=0;o<5;o++)s+=t.charAt(Math.round(Math.random()*15)),s+=t.charAt(Math.round(Math.random()*15)),o!==4&&(s+=":");return s}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close("Dismiss")}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema",justInstalled:"justInstalled"},decls:16,vars:8,consts:[[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"],[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-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"mb-3","text-center"],[1,"fas","fa-fw","fa-bridge","primary-text",2,"font-size","75px"],[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-item","d-flex","flex-column","flex-md-row","align-items-center"],["type","info",1,"mt-3","mb-0",3,"dismissible"],[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","change","ngModel"],[3,"value"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox",1,"rendux-input",3,"change","ngModelChange","id","ngModel"],[1,"rendux-label",3,"for"],["for","bridgeLink",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","bridgeLink",1,"custom-select",3,"change"],[1,"list-group-item","text-center"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"mx-auto","mt-3","mb-1"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-fw","fa-link",3,"ngClass"],["type","text",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"font-monospace"],[1,"grey-text",3,"innerHTML"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"grey-text"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"d-inline-block","text-start","mb-0"],[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-fw","fa-spinner","fa-pulse"],["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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),I(4,$$,2,4,"button",3),m(),p(5,"div",4),I(6,L$,2,0,"div",5),I(7,_L,10,11),m(),p(8,"div",6)(9,"div",7),I(10,hL,3,4,"button",8),m(),p(11,"div",9),I(12,fL,4,5,"button",10),I(13,yL,3,3,"button",11),m(),p(14,"div",12),I(15,SL,2,2),m()()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),T(o.justInstalled?-1:4),u(2),T(o.loading?6:-1),u(),T(o.loading?-1:7),u(3),T(o.canConfigure&&!o.justInstalled?10:-1),u(2),T(o.justInstalled?12:-1),u(),T(o.canConfigure?-1:13),u(2),T(o.canConfigure&&!o.justInstalled?15:-1))},dependencies:[Wt,ns,as,js,Ni,As,yt,Di,Ns,zg,Ut,Fe],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}"]})}return e})();var Uu=je(gn(),1);var Wa=()=>["homebridge","homebridge-config-ui-x"],rS=(e,i,t)=>({pluginName:e,minVersion:i,installedVersion:t}),CL=(e,i,t)=>({minVersion:e,installedVersion:i,latestVersion:t,packageName:"Homebridge"}),xL=()=>({packageName:"Homebridge"}),IL=(e,i,t)=>({minVersion:e,installedVersion:i,latestVersion:t,packageName:"Homebridge UI"}),TL=()=>({packageName:"Homebridge UI"});function PL(e,i){if(e&1&&(p(0,"li",14)(1,"div",17),x(2,"i",18),m(),p(3,"div",19),w(4),H(5,"translate"),m()()),e&2){let t=b(2);u(4),M(" ",Ke(5,1,"plugins.compat.node_too_low",Et(4,rS,t.plugin.displayName,t.nodeMinVersion,t.nodeInstalledVersion))," ")}}function zL(e,i){if(e&1&&(p(0,"li",14)(1,"div",17),x(2,"i",18),m(),p(3,"div",19),w(4),H(5,"translate"),m()()),e&2){let t=b(2);u(4),M(" ",Ke(5,1,"plugins.compat.hb_too_low",Et(4,rS,t.plugin.displayName,t.hbMinVersion,t.hbInstalledVersion))," ")}}function jL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",12),m(),p(2,"ul",13),I(3,PL,6,8,"li",14),I(4,zL,6,8,"li",14),m(),p(5,"ngb-alert",15)(6,"p",16),w(7),H(8,"translate"),m()()),e&2){let t=b();u(),Z(og("",t.action==="install"?"far fa-fw fa-arrow-alt-circle-down":t.action==="update"?"far fa-fw fa-arrow-alt-circle-up":"fas fa-fw fa-code-compare"," primary-text")),u(2),T(t.isValidNode?-1:3),u(),T(t.isValidHb?-1:4),u(),y("dismissible",!1),u(2),K(C(8,7,"common.phrases.are_you_sure"))}}function AL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",20),m(),p(2,"ul",13)(3,"li",14)(4,"div",17),x(5,"i",18),m(),p(6,"div",19),w(7),H(8,"translate"),m()()(),p(9,"ngb-alert",15)(10,"p",21),w(11),H(12,"translate"),m(),p(13,"p",16)(14,"a",22),w(15),H(16,"translate"),x(17,"i",23),m()()()),e&2){let t=b();u(7),M(" ",Ke(8,4,"plugins.compat.hb_node_too_low",Et(12,CL,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),u(2),y("dismissible",!1),u(2),K(Ke(12,7,"plugins.compat.node_first",Pe(16,xL))),u(4),M(" ",C(16,10,"plugins.compat.node_link")," ")}}function NL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",20),m(),p(2,"ul",13)(3,"li",14)(4,"div",17),x(5,"i",18),m(),p(6,"div",19),w(7),H(8,"translate"),m()()(),p(9,"ngb-alert",15)(10,"p",21),w(11),H(12,"translate"),m(),p(13,"p",16)(14,"a",22),w(15),H(16,"translate"),x(17,"i",23),m()()()),e&2){let t=b();u(7),M(" ",Ke(8,4,"plugins.compat.hb_node_too_low",Et(12,IL,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),u(2),y("dismissible",!1),u(2),K(Ke(12,7,"plugins.compat.node_first",Pe(16,TL))),u(4),M(" ",C(16,10,"plugins.compat.node_link")," ")}}function DL(e,i){if(e&1){let t=$();p(0,"button",24),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function BL(e,i){if(e&1){let t=$();p(0,"button",24),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function EL(e,i){if(e&1){let t=$();p(0,"button",25),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_continue")," "))}var nS=(()=>{class e{$activeModal=z(Re);$settings=z(Me);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;ngOnInit(){this.nodeMinVersion=(0,Uu.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Uu.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close(!0)}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",isValidNode:"isValidNode",isValidHb:"isValidHb",action:"action"},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-fw","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-fw","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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),H(4,"translate"),m(),p(5,"button",3),H(6,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(7,"div",4),I(8,jL,9,9),I(9,AL,18,17),I(10,NL,18,17),m(),p(11,"div",5)(12,"div",6),I(13,DL,3,3,"button",7),m(),p(14,"div",8),I(15,BL,3,3,"button",7),m(),p(16,"div",9),I(17,EL,3,3,"button",10),m()()()),s&2&&(u(3),K(C(4,8,"plugins.compat.title")),u(2),W("aria-label",C(6,10,"form.button_close")),u(3),T(Pe(12,Wa).includes(o.plugin.name)?-1:8),u(),T(o.plugin.name==="homebridge"?9:-1),u(),T(o.plugin.name==="homebridge-config-ui-x"?10:-1),u(3),T(Pe(13,Wa).includes(o.plugin.name)?-1:13),u(2),T(Pe(14,Wa).includes(o.plugin.name)?15:-1),u(2),T(Pe(15,Wa).includes(o.plugin.name)?-1:17))},dependencies:[Ns,Fe],encapsulation:2})}return e})();var ot=[];for(let e=0;e<256;++e)ot.push((e+256).toString(16).slice(1));function aS(e,i=0){return(ot[e[i+0]]+ot[e[i+1]]+ot[e[i+2]]+ot[e[i+3]]+"-"+ot[e[i+4]]+ot[e[i+5]]+"-"+ot[e[i+6]]+ot[e[i+7]]+"-"+ot[e[i+8]]+ot[e[i+9]]+"-"+ot[e[i+10]]+ot[e[i+11]]+ot[e[i+12]]+ot[e[i+13]]+ot[e[i+14]]+ot[e[i+15]]).toLowerCase()}var Ru,UL=new Uint8Array(16);function Fu(){if(!Ru){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ru=crypto.getRandomValues.bind(crypto)}return Ru(UL)}var RL=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Mu={randomUUID:RL};function FL(e,i,t){if(Mu.randomUUID&&!i&&!e)return Mu.randomUUID();e=e||{};let s=e.random??e.rng?.()??Fu();if(s.length<16)throw new Error("Random bytes length must be >= 16");if(s[6]=s[6]&15|64,s[8]=s[8]&63|128,i){if(t=t||0,t<0||t+16>i.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let o=0;o<16;++o)i[t+o]=s[o];return i}return aS(s)}var Ya=FL;var lS=je(ko(),1);var cS=(()=>{class e{$api=z(ve);$toastr=z(He);$translate=z(ke);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,lS.saveAs)(t.body,"homebridge-deconz.json.gz")},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["app-homebridge-deconz"]],decls:3,vars:0,consts:[["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-download"]],template:function(s,o){s&1&&(Xr(0,"button",0),sn("click",function(){return o.downloadDumpFile()}),tn(1,"i",1),w(2,` Download Dump File
24
+ `)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk=!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32"),this.action){case"Install":this.install(),this.presentTenseVerb=this.$translate.instant("plugins.manage.install"),this.pastTenseVerb=this.$translate.instant("plugins.manage.installed");break;case"Uninstall":this.uninstall(),this.presentTenseVerb=this.$translate.instant("plugins.manage.uninstall"),this.pastTenseVerb=this.$translate.instant("plugins.manage.uninstalled");break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta=!1;break;case"alpha":case"beta":case"test":this.updateToBeta=!0;break}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated"),this.getVersionNotes();break}}update(){if(this.releaseNotesShow=!1,this.versionNotes="",this.fullChangelog="",!!this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>G(this,null,function*(){if(this.pluginName==="homebridge-config-ui-x"){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{window.location.href="/restart"},error:t=>{console.error(t),window.location.href="/restart"}});return}try{yield this.getChildBridges()}catch(t){console.error(t)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate(["/plugins"])}),error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return G(this,null,function*(){try{for(let s of this.childBridges)yield le(this.$api.put(`/server/restart/${s.username}`,{}));let t=this.$modal.open(L0,{size:"xl",backdrop:"static"});t.componentInstance.plugin={name:this.pluginName,displayName:this.pluginDisplayName},t.componentInstance.childBridges=this.childBridges}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let t=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,Q0.saveAs)(t,`${this.pluginName}-error.log`)}downloadBackupFile(){return G(this,null,function*(){try{yield this.$backup.downloadBackup()}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end()}dismissModal(){this.$activeModal.dismiss("Dismiss")}install(){if(this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(`${this.pastTenseVerb} ${this.pluginName}`,this.toastSuccess),window.location.href=`/plugins?action=just-installed&plugin=${this.pluginName}`},error:t=>{this.actionFailed=!0,console.error(t),this.$router.navigate(["/plugins"]),this.$toastr.error(t.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:()=>{this.$activeModal.close(),this.$router.navigate(["/plugins"]),this.$modal.open(ri,{size:"lg",backdrop:"static"})},error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}upgradeHomebridge(){return G(this,null,function*(){let t="update";if(Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])){let s=this.$modal.open(W0,{size:"lg",backdrop:"static"});s.componentInstance.isUpdating=!0,t=yield s.result}t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:s=>{console.error(s),this.$router.navigate(["/restart"])}})},error:s=>{this.actionFailed=!0,console.error(s),this.$toastr.error(s.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getVersionNotes(){return G(this,null,function*(){this.releaseNotesShow=!0;try{let t=yield le(this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`));this.fullChangelog=t.changelog,t.latestVersion&&(this.latestVersion=t.latestVersion),this.targetVersion==="latest"||this.targetVersion===this.latestVersion?(this.versionNotesShow=!0,t.notes&&(this.versionNotes=t.notes)):(this.versionNotesShow=!1,this.versionNotesLoaded=!0)}catch(t){console.error("Error loading release notes:",t)}this.fullChangelogLoaded=!0,this.versionNotesLoaded=!0})}getChildBridges(){return G(this,null,function*(){(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(s=>{this.pluginName===s.plugin&&this.childBridges.push(s)})})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{pluginName:"pluginName",pluginDisplayName:"pluginDisplayName",targetVersion:"targetVersion",latestVersion:"latestVersion",installedVersion:"installedVersion",isDisabled:"isDisabled",action:"action"},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-fw","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","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[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-fw","fa-cog","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"],["href","javascript:void(0)",3,"click"],[1,"fa","fa-fw","fa-download","mx-1"],[1,"w-100","text-center","mb-0","small","grey-text"],[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(s,o){s&1&&(p(0,"div",1)(1,"div",2)(2,"h5",3),w(3),m(),p(4,"button",4),H(5,"translate"),R("click",function(){return o.dismissModal()}),m()(),x(6,"div",5),I(7,GV,2,1,"div",6),I(8,WV,12,14,"div",7),I(9,g$,18,19,"div",6),I(10,f$,9,5,"div",8),m()),s&2&&(u(3),K(o.pluginDisplayName),u(),W("aria-label",C(5,7,"form.button_close")),u(2),y("hidden",!o.onlineUpdateOk||o.actionComplete||o.releaseNotesShow),u(),T(o.actionComplete?7:-1),u(),T(o.onlineUpdateOk?-1:8),u(),T(o.releaseNotesShow&&!o.actionComplete&&o.onlineUpdateOk?9:-1),u(),T(!o.onlineUpdateOk||o.actionComplete||o.releaseNotesShow||o.actionFailed?10:-1))},dependencies:[pn,mn,_n,Ut,wg,yg,fg,bg,vg,Fe],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 e})();var eS=je(gn(),1);var y$=()=>["homebridge","homebridge-config-ui-x"];function v$(e,i){e&1&&(p(0,"div",5),x(1,"i",12),m())}function w$(e,i){if(e&1&&(x(0,"i",20),p(1,"h6",21),w(2),H(3,"translate"),m(),p(4,"p",21),w(5),H(6,"translate"),p(7,"span",22),w(8),m()()),e&2){let t=b(2);u(2),K(C(3,3,"plugins.manage.select_version")),u(3),M(" ",C(6,5,"plugins.status_installed"),": "),u(3),M("v",t.plugin.installedVersion)}}function k$(e,i){e&1&&(x(0,"i",23),p(1,"h6",21),w(2),H(3,"translate"),m()),e&2&&(u(2),K(C(3,1,"plugins.manage.select_version")))}function H$(e,i){e&1&&x(0,"i",26)}function S$(e,i){e&1&&x(0,"i",27)}function C$(e,i){if(e&1){let t=$();p(0,"li",14)(1,"span",8),w(2),x(3,"br"),p(4,"small",24),w(5),m()(),p(6,"button",25),R("click",function(){let o=E(t).$implicit,r=b(2);return U(r.doInstall(o.version))}),I(7,H$,1,0,"i",26)(8,S$,1,0,"i",27),m()()}if(e&2){let t=i.$implicit,s=b(2);u(2),M(" ",t.tag," "),u(3),M("v",t.version),u(2),T(s.plugin.installedVersion===t.version?7:8)}}function x$(e,i){e&1&&w(0," \u2713 ")}function I$(e,i){if(e&1&&(p(0,"option",17),w(1),I(2,x$,1,0),m()),e&2){let t=i.$implicit,s=b(2);y("value",t.version)("selected",s.versionSelect==t.version),u(),M(" v",t.version," "),u(),T(t.version==s.plugin.installedVersion?2:-1)}}function T$(e,i){e&1&&x(0,"i",26)}function P$(e,i){e&1&&x(0,"i",27)}function z$(e,i){if(e&1){let t=$();p(0,"button",25),R("click",function(){E(t);let o=b(2);return U(o.doInstall(o.versionSelect))}),I(1,T$,1,0,"i",26)(2,P$,1,0,"i",27),m()}if(e&2){let t=b(2);u(),T(t.plugin.installedVersion===t.versionSelect?1:2)}}function j$(e,i){if(e&1&&(p(0,"ul",19)(1,"li",28)(2,"div",8),w(3),H(4,"translate"),x(5,"br"),p(6,"span",29),w(7),H(8,"translate"),m()(),p(9,"div",30),x(10,"input",31),H(11,"translate"),x(12,"label",32),m()()()),e&2){let t=b(2);u(3),M(" ",C(4,4,"plugins.manage.hide_updates")),u(4),K(C(8,6,"plugins.manage.hide_updates_desc")),u(3),y("formControl",t.hideUpdatesFormControl),W("aria-label",C(11,8,"plugins.manage.hide_updates"))}}function A$(e,i){if(e&1){let t=$();p(0,"div",6),I(1,w$,9,7)(2,k$,4,3),p(3,"ul",13),gt(4,C$,9,3,"li",14,ut),p(6,"li",14)(7,"div",15),w(8),H(9,"translate"),x(10,"br"),p(11,"select",16),De("ngModelChange",function(o){E(t);let r=b();return Ne(r.versionSelect,o)||(r.versionSelect=o),U(o)}),gt(12,I$,3,4,"option",17,ut),m()(),I(14,z$,3,1,"button",18),m()(),I(15,j$,13,10,"ul",19),m()}if(e&2){let t=b();u(),T(t.plugin.installedVersion?1:2),u(3),mt(t.versionsWithTags),u(4),M(" ",C(9,5,"plugins.manage.all_versions")," "),u(3),Ae("ngModel",t.versionSelect),u(),mt(t.versions),u(2),T(t.versionSelect?14:-1),u(),T(t.plugin.installedVersion&&!Pe(7,y$).includes(t.plugin.name)?15:-1)}}var tS=(()=>{class e{$activeModal=z(Re);$api=z(ve);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;isUpdateHidden=!1;hideUpdatesFormControl=new mg(!1);loading=!0;versions=[];versionsWithTags=[];versionSelect;ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions(),this.isUpdateHidden=this.$settings.env.plugins.hideUpdatesFor&&this.$settings.env.plugins.hideUpdatesFor.includes(this.plugin.name),this.hideUpdatesFormControl.patchValue(this.isUpdateHidden),this.hideUpdatesFormControl.valueChanges.pipe(xs(750)).subscribe(t=>this.toggleHideUpdates(t))}doInstall(t){this.$activeModal.close({name:this.plugin.name,version:t,engines:this.versions.find(s=>s.version===t).engines,action:this.plugin.installedVersion?"alternate":"install"})}toggleHideUpdates(t){return G(this,null,function*(){let s=this.$settings.env.plugins?.hideUpdatesFor||[];t?s.includes(this.plugin.name)||(s=[...s,this.plugin.name].sort((o,r)=>o.localeCompare(r))):s=s.filter(o=>o!==this.plugin.name);try{yield le(this.$api.put("/config-editor/ui/plugins/hide-updates-for",{body:s})),this.$settings.setEnvItem("plugins.hideUpdatesFor",s),window.location.href=`/plugins?action=open-manage-version&plugin=${this.plugin.name}`}catch(o){this.hideUpdatesFormControl.patchValue(this.isUpdateHidden,{emitEvent:!1}),console.error(o),this.$toastr.error(o.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:t=>{for(let[s,o]of Object.entries(t.versions))this.versions.push({version:s,engines:o.engines||null}),Object.keys(t.tags).filter(r=>t.tags[r]===s).forEach(r=>{this.versionsWithTags.push({version:s,tag:r})});this.plugin.installedVersion&&!this.versions.find(s=>s.version===this.plugin.installedVersion)&&this.versions.push({version:this.plugin.installedVersion,engines:this.plugin.engines||null}),this.versions.sort((s,o)=>(0,eS.rcompare)(s.version,o.version)),this.versionsWithTags.sort((s,o)=>{let r=["latest","next","beta","alpha"],n=r.includes(s.tag)?r.indexOf(s.tag):999,a=r.includes(o.tag)?r.indexOf(o.tag):999;return n-a}),!this.versions.find(s=>s.version===this.versionSelect)&&t.tags.latest&&(this.versionSelect=t.tags.latest),this.loading=!1},error:t=>{console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},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"],[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-fw","fa-cog","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",2,"font-size","0.875rem",3,"ngModelChange","ngModel"],[3,"value","selected"],[1,"btn","btn-primary","m-0","ms-3"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"fas","fa-fw","fa-code-compare","primary-text","mb-3",2,"font-size","75px"],[1,"mb-3"],[1,"font-monospace"],[1,"far","fa-fw","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",3,"click"],[1,"fas","fa-fw","fa-rotate-right"],[1,"fas","fa-fw","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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),p(4,"button",3),H(5,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(6,"div",4),I(7,v$,2,0,"div",5)(8,A$,16,8,"div",6),m(),p(9,"div",7),x(10,"div",8),p(11,"div",9)(12,"button",10),H(13,"translate"),R("click",function(){return o.dismissModal()}),w(14),H(15,"translate"),m()(),x(16,"div",11),m()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),W("aria-label",C(5,5,"form.button_close")),u(3),T(o.loading?7:8),u(5),W("aria-label",C(13,7,"form.button_close")),u(2),M(" ",C(15,9,"form.button_close")," "))},dependencies:[Wt,ns,as,Ni,As,yt,Di,wo,Bi,Fe],encapsulation:2})}return e})();var iS=je(CS(),1);function N$(e,i){e&1&&(p(0,"div",5),x(1,"i",14),m())}function D$(e,i){e&1&&(p(0,"div",6),w(1),H(2,"translate"),H(3,"translate"),m()),e&2&&(u(),ss(" ",C(2,2,"plugins.settings.message_manual_config_required")," ",C(3,4,"plugins.settings.message_consult_documentation")," "))}function B$(e,i){if(e&1){let t=$();p(0,"button",25),H(1,"translate"),R("click",function(){E(t);let o=b(2).$index,r=b(2);return U(r.removeBlock(o))}),x(2,"i",26),m()}e&2&&y("ngbTooltip",C(1,2,"form.button_delete"))("openDelay",150)}function E$(e,i){if(e&1&&I(0,B$,3,4,"button",24),e&2){let t=b(3);T(!(t.schema!=null&&t.schema.singular)||t.pluginConfig.length>1?0:-1)}}function U$(e,i){if(e&1){let t=$();p(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),w(4),m(),p(5,"div"),I(6,E$,1,1),p(7,"button",19),H(8,"translate"),R("click",function(){let o=E(t).$index,r=b(2);return U(r.editBlock(o))}),x(9,"i",20),m()()()(),p(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),De("ngModelChange",function(o){E(t);let r=b(2);return Ne(r.currentBlock,o)||(r.currentBlock=o),U(o)}),R("onInit",function(o){E(t);let r=b(2);return U(r.onEditorInit(o))}),m()()()()}if(e&2){let t=i.$implicit,s=i.$index,o=b(2);y("ngbAccordionItem","configBlock."+s)("collapsed",o.show!=="configBlock."+s)("id","configBlock."+s),u(4),K(t.name||o.pluginAlias),u(2),T(o.show==="configBlock."+s?6:-1),u(),y("ngbTooltip",C(8,9,"form.button_edit"))("openDelay",150),u(5),y("options",o.editorOptions),Ae("ngModel",o.currentBlock)}}function R$(e,i){if(e&1&&(p(0,"div",7),gt(1,U$,13,11,"div",15,ut),m()),e&2){let t=b();y("closeOthers",!0),u(),mt(t.pluginConfig)}}function F$(e,i){if(e&1){let t=$();p(0,"button",30),R("click",function(){E(t);let o=b(2);return U(o.addBlock())}),x(1,"i",31),m()}}function M$(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"form.button_save")," ")}function O$(e,i){e&1&&x(0,"i",29)}function q$(e,i){if(e&1){let t=$();I(0,F$,2,0,"button",27),p(1,"button",28),R("click",function(){E(t);let o=b();return U(o.save())}),I(2,M$,2,3),I(3,O$,1,0,"i",29),m()}if(e&2){let t=b();T(t.schema!=null&&t.schema.singular?-1:0),u(),y("disabled",t.saveInProgress),u(),T(t.saveInProgress?-1:2),u(),T(t.saveInProgress?3:-1)}}function K$(e,i){if(e&1){let t=$();p(0,"button",32),R("click",function(){E(t);let o=b();return U(o.openFullConfigEditor())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"plugins.settings.label_open_config_editor")," "))}var Eu=(()=>{class e{$activeModal=z(Re);$api=z(ve);$md=z(Ig);$modal=z(et);$plugin=z(es);$router=z(oi);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;get arrayKey(){return this.pluginType==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light"},this.$md.detect.mobile()?(this.loading=!1,this.canConfigure=!1):this.loadPluginAlias()}onEditorInit(t){return G(this,null,function*(){window.editor=t,this.monacoEditor=t,yield this.monacoEditor.getModel().setValue(this.currentBlock),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.push({[this.pluginType]:this.pluginAlias,name:this.pluginAlias}),this.editBlock(this.pluginConfig.length-1)}editBlock(t){this.saveCurrentBlock()&&(this.show=`configBlock.${t}`,this.currentBlockIndex=t,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(t){let s=this.pluginConfig[t],o=this.pluginConfig.findIndex(r=>r===s);o>-1&&this.pluginConfig.splice(o,1),this.currentBlockIndex=null,this.currentBlock=void 0,this.show=""}save(){return G(this,null,function*(){if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let t=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.$activeModal.close(),this.isFirstSave&&this.$settings.env.recommendChildBridges&&t[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(this.plugin,!0);return}if(!["homebridge","homebridge-config-ui-x"].includes(this.plugin.name)&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let s=this.$modal.open(Ds,{size:"lg",backdrop:"static"});s.componentInstance.bridges=this.childBridges.map(o=>({name:o.name,username:o.username}));return}this.$activeModal.close(),this.$modal.open(ri,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress=!1}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}closeModal(){this.$activeModal.close()}loadPluginAlias(){this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{t.pluginAlias&&t.pluginType?(this.pluginAlias=t.pluginAlias,this.pluginType=t.pluginType,this.loadHomebridgeConfig()):this.loading=!1},error:()=>{this.loading=!1}})}loadHomebridgeConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe(t=>{this.pluginConfig=t,this.canConfigure=!0,this.loading=!1,this.pluginConfig.length?this.editBlock(0):(this.isFirstSave=!0,this.addBlock())})}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let t=this.monacoEditor.getModel().getValue().trim(),s;t.charAt(0)==='"'&&t.charAt(t.length-1)==="]"&&(t=`{${t}}`);try{s=iS.default.parse(t)}catch(r){return console.error(r),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(s)||typeof s!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!s[this.pluginType]&&Array.isArray(s[this.arrayKey])&&s[this.arrayKey].length&&Object.keys(s).length===1&&(s=s[this.arrayKey][0]),this.pluginType==="accessory"&&(!s.name||typeof s.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),s.name="",this.monacoEditor.getModel().setValue(JSON.stringify(s,null,4)),!1;let o=this.pluginConfig[this.currentBlockIndex];Object.keys(o).forEach(r=>delete o[r]),Object.assign(o,s),o[this.pluginType]=this.pluginAlias}return!0}getChildBridges(){return G(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(s=>{this.plugin.name===s.plugin&&this.childBridges.push(s)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema"},decls:19,vars:14,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"],[1,"alert","alert-warning","mb-0"],["ngbAccordion","",3,"closeOthers"],[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"],[1,"btn","btn-primary"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"card",3,"ngbAccordionItem","collapsed","id"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0"],["ngbAccordionToggle","","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-edit"],["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-3",3,"ngbTooltip","openDelay"],["container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-trash"],["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-fw","fa-spinner","fa-pulse"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-2",3,"click"],[1,"fa","fa-fw","fa-plus"],[1,"btn","btn-primary",3,"click"]],template:function(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),p(4,"button",3),H(5,"translate"),R("click",function(){return o.closeModal()}),m()(),p(6,"div",4),I(7,N$,2,0,"div",5),I(8,D$,4,6,"div",6),I(9,R$,3,1,"div",7),m(),p(10,"div",8)(11,"div",9)(12,"button",10),R("click",function(){return o.closeModal()}),w(13),H(14,"translate"),m()(),x(15,"div",11),p(16,"div",12),I(17,q$,4,4),I(18,K$,3,3,"button",13),m()()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),y("disabled",o.saveInProgress),W("aria-label",C(5,10,"form.button_close")),u(3),T(o.loading?7:-1),u(),T(!o.loading&&!o.canConfigure?8:-1),u(),T(!o.loading&&o.canConfigure?9:-1),u(3),y("disabled",o.saveInProgress),u(),M(" ",C(14,12,"form.button_close")," "),u(4),T(o.canConfigure?17:-1),u(),T(o.canConfigure?-1:18))},dependencies:[un,dn,cn,Ei,an,nn,kg,Wt,yt,Di,ln,Fe],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 e})();var sS=e=>({link:e}),V$=(e,i)=>({"green-text":e,"grey-text":i});function $$(e,i){if(e&1){let t=$();p(0,"button",13),H(1,"translate"),R("click",function(){E(t);let o=b();return U(o.closeModal())}),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),W("aria-label",C(1,2,"form.button_close"))}}function L$(e,i){e&1&&(p(0,"div",5),x(1,"i",14),m())}function G$(e,i){e&1&&(p(0,"li"),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"child_bridge.bridges_paired_2")))}function W$(e,i){e&1&&(p(0,"li"),w(1),H(2,"translate"),m()),e&2&&(u(),M("",C(2,1,"child_bridge.select_type"),":"))}function Y$(e,i){if(e&1&&(p(0,"li"),w(1),H(2,"translate"),m(),I(3,G$,3,3,"li"),I(4,W$,3,3,"li")),e&2){let t=b(2);u(),K(C(2,3,"child_bridge.bridges_paired")),u(2),T(t.configBlocks.length===1&&!t.deviceInfo[t.configBlocks[0]._bridge==null?null:t.configBlocks[0]._bridge.username]&&t.originalBridges.length===0?3:-1),u(),T(t.canConfigure?4:-1)}}function J$(e,i){if(e&1&&(p(0,"option",29),w(1),m()),e&2){let t=i.$implicit,s=i.$index;y("value",s),u(),K(t.name||t.platform||t.accessory)}}function Z$(e,i){if(e&1){let t=$();p(0,"li",25),w(1),H(2,"translate"),m(),p(3,"li",23)(4,"label",26),w(5),H(6,"translate"),m(),p(7,"div",27)(8,"select",28),De("ngModelChange",function(o){E(t);let r=b(3);return Ne(r.selectedBlock,o)||(r.selectedBlock=o),U(o)}),R("change",function(o){E(t);let r=b(3);return U(r.onBlockChange(o.target.value))}),gt(9,J$,2,2,"option",29,ut),m()()()}if(e&2){let t=b(3);u(),K(C(2,3,"form.label.changes_kept")),u(4),M(" ",C(6,5,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),u(3),Ae("ngModel",t.selectedBlock),u(),mt(t.configBlocks)}}function Q$(e,i){if(e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",31),w(5),m()()),e&2){let t=b(3);u(2),M(" ",C(3,2,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),u(3),M(" ",t.configBlocks[t.selectedBlock].name||t.configBlocks[t.selectedBlock].platform||t.configBlocks[t.selectedBlock].accessory," ")}}function X$(e,i){e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",32),w(5),H(6,"translate"),m()()),e&2&&(u(2),K(C(3,2,"child_bridge.config.use")),u(3),M(" ",C(6,4,"child_bridge.config.prevent")," "))}function eL(e,i){if(e&1&&(p(0,"option",29),w(1),m()),e&2){let t=i.$implicit;y("value",t.username),u(),ss("",t.name," (",t.username,")")}}function tL(e,i){if(e&1){let t=$();p(0,"li",23)(1,"label",37),w(2),H(3,"translate"),m(),p(4,"div",27)(5,"select",38),R("change",function(o){E(t);let r=b(4);return U(r.onLinkBridgeChange(o.target.value))}),p(6,"option",29),w(7),H(8,"translate"),m(),gt(9,eL,2,3,"option",29,ut),m()()()}if(e&2){let t=b(4);u(2),K(C(3,2,"child_bridge.config.or_link")),u(5),K(C(8,4,"child_bridge.config.select_existing")),u(2),mt(t.bridgesAvailableForLink)}}function iL(e,i){if(e&1){let t=$();p(0,"li",33)(1,"span",7),w(2),H(3,"translate"),m(),p(4,"div",34)(5,"input",35),R("change",function(){E(t);let o=b(3);return U(o.toggleExternalBridge(o.configBlocks[o.selectedBlock],o.enabledBlocks[o.selectedBlock],o.selectedBlock))}),De("ngModelChange",function(o){E(t);let r=b(3);return Ne(r.enabledBlocks[r.selectedBlock],o)||(r.enabledBlocks[r.selectedBlock]=o),U(o)}),m(),x(6,"label",36),m()(),I(7,tL,11,6,"li",23)}if(e&2){let t=b(3);u(2),K(C(3,5,"child_bridge.config.use")),u(3),y("id","toggleExternalBridgeInput_"+t.selectedBlock),Ae("ngModel",t.enabledBlocks[t.selectedBlock]),u(),y("for","toggleExternalBridgeInput_"+t.selectedBlock),u(),T(!(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)&&t.bridgesAvailableForLink.length?7:-1)}}function sL(e,i){if(e&1&&(p(0,"li",23)(1,"label",30),w(2),H(3,"translate"),m(),p(4,"div",31),w(5),m()(),p(6,"li",23)(7,"label",30),w(8),H(9,"translate"),m(),p(10,"div",31),w(11),m()(),p(12,"li",23)(13,"label",30),w(14),H(15,"translate"),m(),p(16,"div",31),w(17),m()()),e&2){let t=b(3);u(2),K(C(3,6,"accessories.bridge_link_username")),u(3),M(" ",t.currentlySelectedLink.username," "),u(3),K(C(9,8,"accessories.bridge_link_port")),u(3),M(" ",t.currentlySelectedLink.port," "),u(3),K(C(15,10,"accessories.bridge_link_name")),u(3),M(" ",t.currentlySelectedLink.name," ")}}function oL(e,i){e&1&&(p(0,"span"),w(1),H(2,"translate"),m()),e&2&&(u(),M(" \xB7 ",C(2,1,"status.code_scan")," "))}function rL(e,i){if(e&1){let t=$();p(0,"li",33)(1,"span",7),w(2),H(3,"translate"),p(4,"code"),w(5,"-D"),m()(),p(6,"div",34)(7,"input",51),H(8,"translate"),De("ngModelChange",function(o){E(t);let r=b(5);return Ne(r.configBlocks[r.selectedBlock]._bridge.debugModeEnabled,o)||(r.configBlocks[r.selectedBlock]._bridge.debugModeEnabled=o),U(o)}),m(),x(9,"label",36),m()()}if(e&2){let t=b(5);u(2),M("",C(3,5,"child_bridge.config.debug")," "),u(5),y("id","homebridgeDebugMode_"+t.selectedBlock),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.debugModeEnabled),W("aria-label",C(8,7,"settings.startup.debug")),u(2),y("for","homebridgeDebugMode_"+t.selectedBlock)}}function nL(e,i){if(e&1){let t=$();p(0,"li",39)(1,"div",40),x(2,"app-qrcode",41),p(3,"p",42),w(4),m(),p(5,"p",43),x(6,"i",44),w(7),H(8,"translate"),I(9,oL,3,3,"span"),m()()(),p(10,"li",23)(11,"label",30),w(12),H(13,"translate"),m(),p(14,"div",31),w(15),m()(),p(16,"li",23)(17,"label",30),w(18),H(19,"translate"),m(),p(20,"div",31),w(21),m()(),p(22,"li",23)(23,"label",30),w(24),H(25,"translate"),m(),p(26,"div",27)(27,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.name,o)||(r.configBlocks[r.selectedBlock]._bridge.name=o),U(o)}),m()()(),p(28,"li",23)(29,"label",30),w(30),H(31,"translate"),m(),p(32,"div",27)(33,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.manufacturer,o)||(r.configBlocks[r.selectedBlock]._bridge.manufacturer=o),U(o)}),m()()(),p(34,"li",23)(35,"label",30),w(36),H(37,"translate"),m(),p(38,"div",27)(39,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.model,o)||(r.configBlocks[r.selectedBlock]._bridge.model=o),U(o)}),m()()(),p(40,"li",23)(41,"label",30),w(42),H(43,"translate"),m(),p(44,"div",27)(45,"input",45),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.firmwareRevision,o)||(r.configBlocks[r.selectedBlock]._bridge.firmwareRevision=o),U(o)}),m()()(),I(46,rL,10,9,"li",33),p(47,"li",23)(48,"label",30)(49,"span",46),w(50,"DEBUG"),m(),x(51,"br")(52,"small",47),H(53,"translate"),m(),p(54,"div",27)(55,"input",48),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.env.DEBUG,o)||(r.configBlocks[r.selectedBlock]._bridge.env.DEBUG=o),U(o)}),m()()(),p(56,"li",23)(57,"label",30)(58,"span",46),w(59,"NODE_OPTIONS"),m(),x(60,"br"),p(61,"small",49),w(62),H(63,"translate"),m()(),p(64,"div",27)(65,"input",50),De("ngModelChange",function(o){E(t);let r=b(4);return Ne(r.configBlocks[r.selectedBlock]._bridge.env.NODE_OPTIONS,o)||(r.configBlocks[r.selectedBlock]._bridge.env.NODE_OPTIONS=o),U(o)}),m()()()}if(e&2){let t=b(4);u(2),y("data",t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._setupCode),u(2),K(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username].pincode),u(2),y("ngClass",os(41,V$,t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired,!t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired)),u(),M(" ",C(8,22,t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),u(2),T(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?-1:9),u(3),K(C(13,24,"accessories.bridge_username")),u(3),M(" ",t.configBlocks[t.selectedBlock]._bridge.username," "),u(3),K(C(19,26,"accessories.bridge_port")),u(3),M(" ",t.configBlocks[t.selectedBlock]._bridge.port," "),u(3),K(C(25,28,"child_bridge.config.name")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.name),u(3),K(C(31,30,"child_bridge.config.manufacturer")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.manufacturer),u(3),K(C(37,32,"child_bridge.config.model")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.model),u(3),K(C(43,34,"child_bridge.config.firmware")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.firmwareRevision),u(),T(t.canShowBridgeDebug?46:-1),u(6),y("innerHTML",Ke(53,36,"settings.service.debug_tooltip",Gt(44,sS,t.linkDebug)),_e),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.DEBUG),u(7),K(C(63,39,"settings.service.node_tooltip")),u(3),Ae("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.NODE_OPTIONS)}}function aL(e,i){if(e&1&&I(0,nL,66,46),e&2){let t=b(3);T(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]?0:-1)}}function lL(e,i){e&1&&(p(0,"ngb-alert",24),w(1),H(2,"translate"),x(3,"br"),w(4),H(5,"translate"),m()),e&2&&(y("dismissible",!1),u(),M(" ",C(2,3,"child_bridge.restart_homebridge")," "),u(3),M("",C(5,5,"child_bridge.return_to_pair")," "))}function cL(e,i){if(e&1&&(p(0,"ul",22),I(1,Z$,11,7),I(2,Q$,6,4,"li",23),I(3,X$,7,6,"li",23),I(4,iL,8,7),I(5,sL,18,12),I(6,aL,1,1),m(),I(7,lL,6,7,"ngb-alert",24)),e&2){let t=b(2);u(),T(t.configBlocks.length>1?1:-1),u(),T(t.configBlocks.length===1?2:-1),u(),T(t.currentBridgeHasLinks?3:-1),u(),T(t.currentBridgeHasLinks?-1:4),u(),T(t.currentlySelectedLink?5:-1),u(),T(!t.currentlySelectedLink&&(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)?6:-1),u(),T(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username&&t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]===!1?7:-1)}}function dL(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"child_bridge.confirm_delete_2")," ")}function uL(e,i){if(e&1&&(p(0,"li"),w(1),p(2,"span",46),w(3),m(),w(4,") "),m()),e&2){let t=i.$implicit,s=b(3);u(),M(" ",t.bridgeName||(s.deviceInfo[t.id]==null?null:s.deviceInfo[t.id].displayName)," ("),u(2),K(t.id)}}function gL(e,i){if(e&1&&(p(0,"ngb-alert",19)(1,"p"),w(2),H(3,"translate"),I(4,dL,2,3),m(),p(5,"div",9)(6,"ul",52),gt(7,uL,5,2,"li",null,ut),m()()()),e&2){let t=b(2);y("dismissible",!1),u(2),M(" ",C(3,3,"child_bridge.confirm_delete_1")," "),u(2),T(t.deletingPairedBridge?4:-1),u(3),mt(t.deleteBridges)}}function mL(e,i){e&1&&(p(0,"ngb-alert",20),w(1),H(2,"translate"),m()),e&2&&(y("dismissible",!1),u(),M(" ",C(2,2,"child_bridge.must_configure_plugin")," "))}function pL(e,i){if(e&1){let t=$();p(0,"ngb-alert",21)(1,"div",17),w(2),H(3,"translate"),H(4,"translate"),m(),p(5,"button",53),R("click",function(){E(t);let o=b(2);return U(o.openFullConfigEditor())}),w(6),H(7,"translate"),m()()}e&2&&(y("dismissible",!1),u(2),ss(" ",C(3,4,"plugins.settings.message_manual_config_required")," ",C(4,6,"plugins.settings.message_consult_documentation")," "),u(4),M(" ",C(7,8,"plugins.settings.label_open_config_editor")," "))}function _L(e,i){if(e&1&&(p(0,"div",15),x(1,"i",16),m(),p(2,"ul",17),x(3,"li",18),H(4,"translate"),I(5,Y$,5,5),m(),I(6,cL,8,7),I(7,gL,9,5,"ngb-alert",19),I(8,mL,3,4,"ngb-alert",20),I(9,pL,8,10,"ngb-alert",21)),e&2){let t=b();u(3),y("innerHTML",Ke(4,6,"child_bridge.about",Gt(9,sS,t.linkChildBridges)),_e),u(2),T(t.configBlocks.length?5:-1),u(),T(t.canConfigure&&t.configBlocks.length?6:-1),u(),T(t.deleteBridges.length?7:-1),u(),T(!t.configBlocks.length&&t.canConfigure?8:-1),u(),T(t.canConfigure?-1:9)}}function hL(e,i){if(e&1){let t=$();p(0,"button",54),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),u(),M(" ",C(2,2,"form.button_close")," ")}}function bL(e,i){e&1&&x(0,"i",56)}function fL(e,i){if(e&1){let t=$();p(0,"button",55),R("click",function(){E(t);let o=b();return U(o.save())}),w(1),H(2,"translate"),I(3,bL,1,0,"i",56),m()}if(e&2){let t=b();y("disabled",t.saveInProgress),u(),M(" ",C(2,3,"form.button_save")," "),u(2),T(t.saveInProgress?3:-1)}}function yL(e,i){if(e&1){let t=$();p(0,"button",57),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function vL(e,i){e&1&&(w(0),H(1,"translate")),e&2&&M(" ",C(1,1,"form.button_save")," ")}function wL(e,i){e&1&&x(0,"i",56)}function kL(e,i){if(e&1){let t=$();p(0,"button",55),R("click",function(){E(t);let o=b(2);return U(o.save())}),I(1,vL,2,3),I(2,wL,1,0,"i",56),m()}if(e&2){let t=b(2);y("disabled",t.saveInProgress||t.loading),u(),T(t.saveInProgress?-1:1),u(),T(t.saveInProgress?2:-1)}}function HL(e,i){if(e&1){let t=$();p(0,"button",59),R("click",function(){E(t);let o=b(2);return U(o.openPluginConfig())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"plugins.button_settings")," "))}function SL(e,i){if(e&1&&(I(0,kL,3,3,"button",10),I(1,HL,3,3,"button",58)),e&2){let t=b();T(t.configBlocks.length?0:-1),u(),T(t.configBlocks.length?-1:1)}}var oS=(()=>{class e{$activeModal=z(Re);$api=z(ve);$modal=z(et);$plugin=z(es);$router=z(oi);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;schema;justInstalled=!1;loading=!0;canConfigure=!0;configBlocks=[];selectedBlock="0";isPlatform;enabledBlocks={};bridgeCache=new Map;originalBridges=[];deviceInfo=new Map;saveInProgress=!1;canShowBridgeDebug=!1;deleteBridges=[];deletingPairedBridge=!1;accessoryBridgeLinks=[];bridgesAvailableForLink=[];currentlySelectedLink=null;currentBridgeHasLinks=!1;linkChildBridges='<a href="https://github.com/homebridge/homebridge/wiki/Child-Bridges" target="_blank"><i class="fas fa-fw 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-fw fa-external-link-alt primary-text"></i></a>';ngOnInit(){return G(this,null,function*(){yield Promise.all([this.getPluginType(),this.loadPluginConfig()]),this.canShowBridgeDebug=this.$settings.env.homebridgeVersion.startsWith("2"),this.loading=!1})}onBlockChange(t){if(this.selectedBlock=t,this.currentlySelectedLink=this.accessoryBridgeLinks.find(s=>s.index===t)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(s=>s.usesIndex===t),this.bridgesAvailableForLink=[],this.configBlocks[Number(t)].accessory)for(let[s,o]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(r=>r.id===o.username)||s<Number(t)&&this.bridgesAvailableForLink.push({index:s.toString(),usesIndex:t,name:o.name,port:o.port,username:o.username})}onLinkBridgeChange(t){if(t){let s=this.configBlocks.findIndex(r=>r._bridge?.username===t);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:s.toString(),name:this.bridgeCache.get(s)?.name,port:this.bridgeCache.get(s)?.port,username:t}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(r=>r.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let o=this.configBlocks[Number(this.selectedBlock)];o._bridge={username:t}}}getPluginType(){return G(this,null,function*(){try{let t=yield le(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`));this.isPlatform=t.pluginType==="platform"}catch(t){this.$toastr.error(this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close(),console.error(t)}})}loadPluginConfig(){return G(this,null,function*(){try{this.configBlocks=yield le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[s,o]of this.configBlocks.entries())if(o._bridge&&o._bridge.username){this.enabledBlocks[s]=!0;let r=Array.from(this.bridgeCache.values()).findIndex(a=>a.username===o._bridge.username),n=r!==-1?Array.from(this.bridgeCache.values())[r]:void 0;n?(o._bridge.env={},this.accessoryBridgeLinks.push({index:s.toString(),usesIndex:r.toString(),name:n.name,port:n.port,username:o._bridge.username})):(o._bridge.env=o._bridge.env||{},this.bridgeCache.set(s,o._bridge),yield this.getDeviceInfo(o._bridge.username),o._bridge.name||(o._bridge.name=this.deviceInfo[o._bridge.username]?.displayName),this.originalBridges.push(o._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((s,o)=>{this.enabledBlocks[o]=!0,this.toggleExternalBridge(s,!0,o.toString())}),this.accessoryBridgeLinks.find(s=>s.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(t){this.canConfigure=!1,console.error(t)}})}toggleExternalBridge(t,s,o){return G(this,null,function*(){if(s){let r=this.bridgeCache.get(Number(o));t._bridge={username:r?r.username:this.generateUsername(),port:yield this.getUnusedPort(),name:r?.name,model:r?.model,manufacturer:r?.manufacturer,firmwareRevision:r?.firmwareRevision,debugModeEnabled:r?.debugModeEnabled,env:r?.env},this.deleteBridges.some(n=>n.id===t._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(n=>n.id!==t._bridge.username)),this.bridgeCache.set(Number(o),t._bridge),yield this.getDeviceInfo(t._bridge.username)}else{if(this.accessoryBridgeLinks.some(r=>r.index===o))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(r=>r.index!==o),this.currentlySelectedLink=null;else{let r=this.originalBridges.find(n=>n.username===t._bridge.username);r&&this.deleteBridges.push({id:t._bridge.username,bridgeName:t._bridge.name||r.displayName,paired:this.deviceInfo[t._bridge.username]?._isPaired})}delete t._bridge}this.deletingPairedBridge=this.deleteBridges.some(r=>r.paired)})}getUnusedPort(){return G(this,null,function*(){this.saveInProgress=!0;try{return(yield le(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(t){return G(this,null,function*(){try{this.deviceInfo[t]=yield le(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(s){console.error(s),this.deviceInfo[t]=!1}})}save(){return G(this,null,function*(){this.saveInProgress=!0;try{yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let t of this.deleteBridges)try{yield le(this.$api.delete(`/server/pairings/${t.id.replace(/:/g,"")}`))}catch(s){console.error(s),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(ri,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}finally{this.saveInProgress=!1}})}openPluginConfig(){this.$activeModal.close(),this.$plugin.settings({name:this.plugin.name,settingsSchema:!0,links:{}})}generateUsername(){let t="0123456789ABCDEF",s="0E:";for(let o=0;o<5;o++)s+=t.charAt(Math.round(Math.random()*15)),s+=t.charAt(Math.round(Math.random()*15)),o!==4&&(s+=":");return s}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close("Dismiss")}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema",justInstalled:"justInstalled"},decls:16,vars:8,consts:[[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"],[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-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"mb-3","text-center"],[1,"fas","fa-fw","fa-bridge","primary-text",2,"font-size","75px"],[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-item","d-flex","flex-column","flex-md-row","align-items-center"],["type","info",1,"mt-3","mb-0",3,"dismissible"],[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","change","ngModel"],[3,"value"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox",1,"rendux-input",3,"change","ngModelChange","id","ngModel"],[1,"rendux-label",3,"for"],["for","bridgeLink",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","bridgeLink",1,"custom-select",3,"change"],[1,"list-group-item","text-center"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"mx-auto","mt-3","mb-1"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-fw","fa-link",3,"ngClass"],["type","text",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"font-monospace"],[1,"grey-text",3,"innerHTML"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"grey-text"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"d-inline-block","text-start","mb-0"],[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-fw","fa-spinner","fa-pulse"],["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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),I(4,$$,2,4,"button",3),m(),p(5,"div",4),I(6,L$,2,0,"div",5),I(7,_L,10,11),m(),p(8,"div",6)(9,"div",7),I(10,hL,3,4,"button",8),m(),p(11,"div",9),I(12,fL,4,5,"button",10),I(13,yL,3,3,"button",11),m(),p(14,"div",12),I(15,SL,2,2),m()()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),T(o.justInstalled?-1:4),u(2),T(o.loading?6:-1),u(),T(o.loading?-1:7),u(3),T(o.canConfigure&&!o.justInstalled?10:-1),u(2),T(o.justInstalled?12:-1),u(),T(o.canConfigure?-1:13),u(2),T(o.canConfigure&&!o.justInstalled?15:-1))},dependencies:[Wt,ns,as,js,Ni,As,yt,Di,Ns,zg,Ut,Fe],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}"]})}return e})();var Uu=je(gn(),1);var Wa=()=>["homebridge","homebridge-config-ui-x"],rS=(e,i,t)=>({pluginName:e,minVersion:i,installedVersion:t}),CL=(e,i,t)=>({minVersion:e,installedVersion:i,latestVersion:t,packageName:"Homebridge"}),xL=()=>({packageName:"Homebridge"}),IL=(e,i,t)=>({minVersion:e,installedVersion:i,latestVersion:t,packageName:"Homebridge UI"}),TL=()=>({packageName:"Homebridge UI"});function PL(e,i){if(e&1&&(p(0,"li",14)(1,"div",17),x(2,"i",18),m(),p(3,"div",19),w(4),H(5,"translate"),m()()),e&2){let t=b(2);u(4),M(" ",Ke(5,1,"plugins.compat.node_too_low",Et(4,rS,t.plugin.displayName,t.nodeMinVersion,t.nodeInstalledVersion))," ")}}function zL(e,i){if(e&1&&(p(0,"li",14)(1,"div",17),x(2,"i",18),m(),p(3,"div",19),w(4),H(5,"translate"),m()()),e&2){let t=b(2);u(4),M(" ",Ke(5,1,"plugins.compat.hb_too_low",Et(4,rS,t.plugin.displayName,t.hbMinVersion,t.hbInstalledVersion))," ")}}function jL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",12),m(),p(2,"ul",13),I(3,PL,6,8,"li",14),I(4,zL,6,8,"li",14),m(),p(5,"ngb-alert",15)(6,"p",16),w(7),H(8,"translate"),m()()),e&2){let t=b();u(),Z(og("",t.action==="install"?"far fa-fw fa-arrow-alt-circle-down":t.action==="update"?"far fa-fw fa-arrow-alt-circle-up":"fas fa-fw fa-code-compare"," primary-text")),u(2),T(t.isValidNode?-1:3),u(),T(t.isValidHb?-1:4),u(),y("dismissible",!1),u(2),K(C(8,7,"common.phrases.are_you_sure"))}}function AL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",20),m(),p(2,"ul",13)(3,"li",14)(4,"div",17),x(5,"i",18),m(),p(6,"div",19),w(7),H(8,"translate"),m()()(),p(9,"ngb-alert",15)(10,"p",21),w(11),H(12,"translate"),m(),p(13,"p",16)(14,"a",22),w(15),H(16,"translate"),x(17,"i",23),m()()()),e&2){let t=b();u(7),M(" ",Ke(8,4,"plugins.compat.hb_node_too_low",Et(12,CL,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),u(2),y("dismissible",!1),u(2),K(Ke(12,7,"plugins.compat.node_first",Pe(16,xL))),u(4),M(" ",C(16,10,"plugins.compat.node_link")," ")}}function NL(e,i){if(e&1&&(p(0,"div",11),x(1,"i",20),m(),p(2,"ul",13)(3,"li",14)(4,"div",17),x(5,"i",18),m(),p(6,"div",19),w(7),H(8,"translate"),m()()(),p(9,"ngb-alert",15)(10,"p",21),w(11),H(12,"translate"),m(),p(13,"p",16)(14,"a",22),w(15),H(16,"translate"),x(17,"i",23),m()()()),e&2){let t=b();u(7),M(" ",Ke(8,4,"plugins.compat.hb_node_too_low",Et(12,IL,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),u(2),y("dismissible",!1),u(2),K(Ke(12,7,"plugins.compat.node_first",Pe(16,TL))),u(4),M(" ",C(16,10,"plugins.compat.node_link")," ")}}function DL(e,i){if(e&1){let t=$();p(0,"button",24),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function BL(e,i){if(e&1){let t=$();p(0,"button",24),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function EL(e,i){if(e&1){let t=$();p(0,"button",25),R("click",function(){E(t);let o=b();return U(o.closeModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_continue")," "))}var nS=(()=>{class e{$activeModal=z(Re);$settings=z(Me);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;ngOnInit(){this.nodeMinVersion=(0,Uu.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Uu.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close(!0)}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",isValidNode:"isValidNode",isValidHb:"isValidHb",action:"action"},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-fw","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-fw","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(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),H(4,"translate"),m(),p(5,"button",3),H(6,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(7,"div",4),I(8,jL,9,9),I(9,AL,18,17),I(10,NL,18,17),m(),p(11,"div",5)(12,"div",6),I(13,DL,3,3,"button",7),m(),p(14,"div",8),I(15,BL,3,3,"button",7),m(),p(16,"div",9),I(17,EL,3,3,"button",10),m()()()),s&2&&(u(3),K(C(4,8,"plugins.compat.title")),u(2),W("aria-label",C(6,10,"form.button_close")),u(3),T(Pe(12,Wa).includes(o.plugin.name)?-1:8),u(),T(o.plugin.name==="homebridge"?9:-1),u(),T(o.plugin.name==="homebridge-config-ui-x"?10:-1),u(3),T(Pe(13,Wa).includes(o.plugin.name)?-1:13),u(2),T(Pe(14,Wa).includes(o.plugin.name)?15:-1),u(2),T(Pe(15,Wa).includes(o.plugin.name)?-1:17))},dependencies:[Ns,Fe],encapsulation:2})}return e})();var ot=[];for(let e=0;e<256;++e)ot.push((e+256).toString(16).slice(1));function aS(e,i=0){return(ot[e[i+0]]+ot[e[i+1]]+ot[e[i+2]]+ot[e[i+3]]+"-"+ot[e[i+4]]+ot[e[i+5]]+"-"+ot[e[i+6]]+ot[e[i+7]]+"-"+ot[e[i+8]]+ot[e[i+9]]+"-"+ot[e[i+10]]+ot[e[i+11]]+ot[e[i+12]]+ot[e[i+13]]+ot[e[i+14]]+ot[e[i+15]]).toLowerCase()}var Ru,UL=new Uint8Array(16);function Fu(){if(!Ru){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ru=crypto.getRandomValues.bind(crypto)}return Ru(UL)}var RL=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Mu={randomUUID:RL};function FL(e,i,t){if(Mu.randomUUID&&!i&&!e)return Mu.randomUUID();e=e||{};let s=e.random??e.rng?.()??Fu();if(s.length<16)throw new Error("Random bytes length must be >= 16");if(s[6]=s[6]&15|64,s[8]=s[8]&63|128,i){if(t=t||0,t<0||t+16>i.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let o=0;o<16;++o)i[t+o]=s[o];return i}return aS(s)}var Ya=FL;var lS=je(ko(),1);var cS=(()=>{class e{$api=z(ve);$toastr=z(He);$translate=z(ke);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,lS.saveAs)(t.body,"homebridge-deconz.json.gz")},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["app-homebridge-deconz"]],decls:3,vars:0,consts:[["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-download"]],template:function(s,o){s&1&&(Xr(0,"button",0),sn("click",function(){return o.downloadDumpFile()}),tn(1,"i",1),w(2,` Download Dump File
25
25
  `),en())},encapsulation:2})}return e})();var dS=je(ko(),1);var uS=(()=>{class e{$api=z(ve);$translate=z(ke);$toastr=z(He);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-hue/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,dS.saveAs)(t.body,"homebridge-hue.json.gz")},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.hue.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["app-homebridge-hue"]],decls:3,vars:0,consts:[["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-download"]],template:function(s,o){s&1&&(Xr(0,"button",0),sn("click",function(){return o.downloadDumpFile()}),tn(1,"i",1),w(2,` Download Dump File
26
26
  `),en())},encapsulation:2})}return e})();var gS=(()=>{class e{transform(t){return t.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}static \u0275fac=function(s){return new(s||e)};static \u0275pipe=Xu({name:"interpolateMd",type:e,pure:!0})}return e})();var mS=(e,i,t)=>({"fa-circle-check green-text":e,"fa-circle-exclamation red-text":i,"fa-circle-exclamation orange-text":t});function ML(e,i){if(e&1&&(x(0,"markdown",5),H(1,"interpolateMd")),e&2){let t=b();y("data",C(1,1,t.schema.headerDisplay))}}function OL(e,i){if(e&1){let t=$();p(0,"button",31),H(1,"translate"),R("click",function(){E(t);let o=b().$implicit,r=b(2);return U(r.removeBlock(o.__uuid__))}),x(2,"i",32),m()}e&2&&y("ngbTooltip",C(1,2,"form.button_delete"))("openDelay",150)}function qL(e,i){if(e&1){let t=$();p(0,"div",19)(1,"div",20)(2,"div",21)(3,"h5",22),w(4),m(),p(5,"div",23),I(6,OL,3,4,"button",24),p(7,"button",25),H(8,"translate"),x(9,"i",26),m(),x(10,"i",27),H(11,"translate"),m()()(),p(12,"div",28)(13,"div",29)(14,"app-schema-form",30),De("dataChange",function(o){let r=E(t).$implicit;return Ne(r.config,o)||(r.config=o),U(o)}),R("isValid",function(o){let r=E(t).$index,n=b(2);return U(n.onIsValid(o,r))}),m()()()()}if(e&2){let t=i.$implicit,s=i.$index,o=b(2);y("ngbAccordionItem",t.__uuid__)("collapsed",o.show!==t.__uuid__)("id",t.__uuid__),u(4),K(t.name),u(2),T(o.plugin.name!=="homebridge-config-ui-x"&&o.show===t.__uuid__?6:-1),u(),y("ngbTooltip",C(8,12,"form.button_edit"))("openDelay",150),u(3),y("ngClass",Et(16,mS,o.formBlocksValid[s],o.strictValidation&&!o.formBlocksValid[s],!o.strictValidation&&!o.formBlocksValid[s]))("ngbTooltip",C(11,14,o.formBlocksValid[s]?"form.label_valid":o.strictValidation?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150),u(4),y("configSchema",o.schema),Ae("data",t.config)}}function KL(e,i){if(e&1){let t=$();p(0,"div",18),R("show",function(o){E(t);let r=b();return U(r.blockShown(o))})("hide",function(o){E(t);let r=b();return U(r.blockHidden(o))}),gt(1,qL,15,20,"div",19,ut),m()}if(e&2){let t=b();y("closeOthers",!0),u(),mt(t.pluginConfig)}}function VL(e,i){e&1&&x(0,"app-homebridge-deconz")}function $L(e,i){e&1&&x(0,"app-homebridge-hue")}function LL(e,i){if(e&1){let t=$();p(0,"div",7)(1,"app-schema-form",30),De("dataChange",function(o){E(t);let r=b();return Ne(r.pluginConfig[0].config,o)||(r.pluginConfig[0].config=o),U(o)}),R("isValid",function(o){E(t);let r=b();return U(r.onIsValid(o,0))}),m(),I(2,VL,1,0,"app-homebridge-deconz"),I(3,$L,1,0,"app-homebridge-hue"),m()}if(e&2){let t=b();u(),y("configSchema",t.schema),Ae("data",t.pluginConfig[0].config),u(),T(t.plugin.name==="homebridge-deconz"?2:-1),u(),T(t.plugin.name==="homebridge-hue"?3:-1)}}function GL(e,i){if(e&1&&(x(0,"markdown",5),H(1,"interpolateMd")),e&2){let t=b();y("data",C(1,1,t.schema.footerDisplay))}}function WL(e,i){if(e&1&&(x(0,"i",14),H(1,"translate")),e&2){let t=b();y("ngClass",Et(5,mS,t.formIsValid,t.strictValidation&&!t.formIsValid,!t.strictValidation&&!t.formIsValid))("ngbTooltip",C(1,3,t.formIsValid?"form.label_valid":t.strictValidation?"form.label_invalid_strict":"form.label_invalid"))("openDelay",150)}}function YL(e,i){if(e&1){let t=$();p(0,"button",33),R("click",function(){E(t);let o=b();return U(o.addBlock())}),x(1,"i",34),m()}}function JL(e,i){e&1&&(p(0,"span"),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"form.button_save")))}function ZL(e,i){e&1&&x(0,"i",17)}var pS=(()=>{class e{$activeModal=z(Re);$api=z(ve);$plugin=z(es);$modal=z(et);$settings=z(Me);$toastr=z(He);$translate=z(ke);plugin;schema;pluginAlias;pluginType;pluginConfig=[];form={};show="";saveInProgress;childBridges=[];isFirstSave=!1;formBlocksValid={};formIsValid=!0;strictValidation=!1;ngOnInit(){this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,this.strictValidation=this.schema.strictValidation,this.loadPluginConfig()}save(){return G(this,null,function*(){this.saveInProgress=!0;let t=this.pluginConfig.map(s=>s.config);try{let s=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,t));if(this.saveInProgress=!1,this.plugin.name==="homebridge-config-ui-x")this.$settings.getAppSettings().catch(()=>{});else if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&s[0]?.platform){this.$activeModal.close(),this.$plugin.bridgeSettings(this.plugin,!0);return}if(!["homebridge","homebridge-config-ui-x"].includes(this.plugin.name)&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let o=this.$modal.open(Ds,{size:"lg",backdrop:"static"});o.componentInstance.bridges=this.childBridges.map(r=>({name:r.name,username:r.username}));return}this.$activeModal.close(),this.$modal.open(ri,{size:"lg",backdrop:"static"})}catch(s){this.saveInProgress=!1,console.error(s),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}blockShown(t){this.show=t;for(let s of this.pluginConfig)s.name=s.config.name||s.name}blockHidden(t){this.show===t&&(this.show="")}addBlock(){let t=Ya();this.pluginConfig.push({__uuid__:t,name:this.schema.pluginAlias,config:{[this.pluginType]:this.schema.pluginAlias}}),this.formBlocksValid[this.pluginConfig.length-1]=!1,this.blockShown(t)}removeBlock(t){let s=this.pluginConfig.findIndex(o=>o.__uuid__===t);this.pluginConfig.splice(s,1),delete this.formBlocksValid[s],Object.keys(this.formBlocksValid).length||(this.formIsValid=!0)}onIsValid(t,s){this.formBlocksValid[s]=t,this.formIsValid=Object.values(this.formBlocksValid).every(o=>o)}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close()}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{for(let s of t){let o={__uuid__:Ya(),name:s.name||this.schema.pluginAlias,config:s};this.pluginConfig.push(o)}this.pluginConfig.length?this.show=this.pluginConfig[0].__uuid__:(this.isFirstSave=!0,this.addBlock()),this.plugin.name==="homebridge-hue"&&this.pluginConfig.length&&this.homebridgeHueFix(this.pluginConfig[0].config)},error:t=>{console.error(t),this.$toastr.error(t.error?.message||this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error"))}})}homebridgeHueFix(t){if(this.schema.schema.properties.users={type:"object",properties:{}},!(!t.users||typeof t.users!="object"))for(let s of Object.keys(t.users))this.schema.schema.properties.users.properties[s]={type:"string"}}getChildBridges(){return G(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(s=>{this.plugin.name===s.plugin&&this.childBridges.push(s)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema"},decls:24,vars:18,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,"plugin-md",3,"data"],["ngbAccordion","",3,"closeOthers"],[1,"card","card-body"],[1,"mt-3"],[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-fw","fa-xl","me-2",3,"ngClass","ngbTooltip","openDelay"],["type","button","data-dismiss","modal",1,"btn","btn-elegant","me-2"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],["ngbAccordion","",3,"show","hide","closeOthers"],[1,"card",3,"ngbAccordionItem","collapsed","id"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0"],[1,"d-flex","align-items-center"],["container","modal","placement","left","triggers","hover",1,"btn","btn-danger","ms-2",3,"ngbTooltip","openDelay"],["ngbAccordionToggle","","container","modal","placement","left","triggers","hover",1,"btn","btn-primary","ms-2","me-2",3,"ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-edit"],["container","modal","placement","left","triggers","hover",1,"fa","fa-fw","fa-xl",3,"ngClass","ngbTooltip","openDelay"],["ngbAccordionCollapse",""],["ngbAccordionBody","",1,"card-body"],[3,"dataChange","isValid","configSchema","data"],["container","modal","placement","left","triggers","hover",1,"btn","btn-danger","ms-2",3,"click","ngbTooltip","openDelay"],[1,"fa","fa-fw","fa-trash"],["type","button","data-dismiss","modal",1,"btn","btn-elegant","me-2",3,"click"],[1,"fa","fa-fw","fa-plus"]],template:function(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),m(),p(4,"button",3),H(5,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(6,"div",4),I(7,ML,2,3,"markdown",5),I(8,KL,3,1,"div",6),I(9,LL,4,4,"div",7),p(10,"div",8),I(11,GL,2,3,"markdown",5),m()(),p(12,"div",9)(13,"div",10)(14,"button",11),R("click",function(){return o.closeModal()}),w(15),H(16,"translate"),m()(),x(17,"div",12),p(18,"div",13),I(19,WL,2,9,"i",14),I(20,YL,2,0,"button",15),p(21,"button",16),R("click",function(){return o.save()}),I(22,JL,3,3,"span"),I(23,ZL,1,0,"i",17),m()()()()),s&2&&(u(3),K(o.plugin.displayName||o.plugin.name),u(),y("disabled",o.saveInProgress),W("aria-label",C(5,14,"form.button_close")),u(3),T(o.schema.headerDisplay?7:-1),u(),T(o.pluginConfig.length&&!o.schema.singular?8:-1),u(),T(o.pluginConfig.length&&o.schema.singular?9:-1),u(2),T(o.schema.footerDisplay?11:-1),u(3),y("disabled",o.saveInProgress),u(),M(" ",C(16,16,"form.button_close")," "),u(4),T(o.schema.singular?19:-1),u(),T(o.schema.singular?-1:20),u(),y("disabled",o.saveInProgress||!o.formIsValid&&o.strictValidation),u(),T(o.saveInProgress?-1:22),u(),T(o.saveInProgress?23:-1))},dependencies:[pn,mn,_n,un,dn,cn,Ei,an,nn,Ut,Ga,cS,uS,ln,Fe,gS],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}"]})}return e})();var QL=(e,i)=>({"green-text":e,"grey-text":i}),XL=(e,i)=>({"btn-danger":e,"btn-elegant":i}),e3=(e,i,t)=>({"fa-broom":e,"fa-undo":i,"fa-spinner fa-pulse":t});function t3(e,i){e&1&&(p(0,"div",12),x(1,"i",13),m(),p(2,"p",14),w(3),H(4,"translate"),m()),e&2&&(u(3),K(C(4,1,"reset.bridge_accessories.empty")))}function i3(e,i){if(e&1){let t=$();p(0,"li",18)(1,"span"),w(2),x(3,"br"),p(4,"small",19),x(5,"i",20),w(6),H(7,"translate"),p(8,"span",21),w(9),m()()(),p(10,"button",22),H(11,"translate"),R("click",function(){let o=E(t).$implicit,r=b(2);return U(r.toggleList(o._id))}),x(12,"i",23),m()()}if(e&2){let t=i.$implicit,s=b(2);u(2),M(" ",t.name," "),u(3),y("ngClass",os(12,QL,t._isPaired,!t._isPaired)),u(),M(" ",C(7,8,t._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," \xB7 "),u(3),K(t._username),u(),y("disabled",s.clicked)("ngClass",os(15,XL,!s.toDelete.includes(t._id),s.toDelete.includes(t._id))),W("aria-label",C(11,10,"form.button_delete")),u(2),y("ngClass",Et(18,e3,!s.toDelete.includes(t._id),s.toDelete.includes(t._id)&&!s.clicked,s.toDelete.includes(t._id)&&s.clicked))}}function s3(e,i){if(e&1&&(p(0,"div",12),x(1,"i",15),m(),p(2,"ul",16)(3,"li"),w(4),H(5,"translate"),m(),p(6,"li"),w(7),H(8,"translate"),m()(),p(9,"ul",17),gt(10,i3,13,22,"li",18,ut),m()),e&2){let t=b();u(4),K(C(5,2,"reset.bridge_accessories.list_1")),u(3),K(C(8,4,"reset.clear_cache_single.list_3")),u(3),mt(t.pairings)}}function o3(e,i){if(e&1){let t=$();p(0,"button",24),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}if(e&2){let t=b();y("disabled",t.clicked),u(),M(" ",C(2,2,"form.button_close")," ")}}function r3(e,i){if(e&1){let t=$();p(0,"button",25),R("click",function(){E(t);let o=b();return U(o.dismissModal())}),w(1),H(2,"translate"),m()}e&2&&(u(),M(" ",C(2,1,"form.button_close")," "))}function n3(e,i){if(e&1&&w(0),e&2){let t=b(3);M(" (",t.toDelete.length,") ")}}function a3(e,i){if(e&1&&(w(0),H(1,"translate"),I(2,n3,1,1)),e&2){let t=b(2);M(" ",C(1,2,"form.button_reset")," "),u(2),T(t.toDelete.length>0?2:-1)}}function l3(e,i){e&1&&x(0,"i",27)}function c3(e,i){if(e&1){let t=$();p(0,"button",26),R("click",function(){E(t);let o=b();return U(o.cleanBridges())}),I(1,a3,3,4),I(2,l3,1,0,"i",27),m()}if(e&2){let t=b();y("disabled",!t.toDelete.length||t.clicked),u(),T(t.clicked?-1:1),u(),T(t.clicked?2:-1)}}var _S=(()=>{class e{$activeModal=z(Re);$api=z(ve);$router=z(oi);$toastr=z(He);$translate=z(ke);childBridges=[];clicked=!1;pairings=[];toDelete=[];ngOnInit(){this.loadPairings()}toggleList(t){this.toDelete.includes(t)?this.toDelete=this.toDelete.filter(s=>s!==t):this.toDelete.push(t)}cleanBridges(){return this.clicked=!0,this.$api.delete("/server/pairings/accessories",{body:this.toDelete.map(t=>({id:t}))}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("reset.accessory_ind.done"),this.$translate.instant("toast.title_success")),this.$activeModal.close(),this.$router.navigate(["/restart"],{queryParams:{restarting:!0}})},error:t=>{this.clicked=!1,console.error(t),this.$toastr.error(this.$translate.instant("reset.accessory_ind.fail"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadPairings(){return G(this,null,function*(){try{this.pairings=(yield le(this.$api.get("/server/pairings"))).filter(t=>t._category==="bridge"&&!t._main&&this.childBridges.find(s=>s.username===t._username)).sort((t,s)=>t.name.localeCompare(s.name))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}static \u0275fac=function(s){return new(s||e)};static \u0275cmp=Q({type:e,selectors:[["ng-component"]],inputs:{childBridges:"childBridges"},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","disabled"],[1,"modal-body"],[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","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"disabled"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-circle-check","primary-text",2,"font-size","75px"],[1,"mb-0","text-center"],[1,"fas","fa-fw","fa-broom","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"fas","fa-fw","fa-link",3,"ngClass"],[1,"font-monospace"],[1,"btn","btn-danger","m-0","ms-3",3,"click","disabled","ngClass"],[1,"fas","fa-fw",3,"ngClass"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(s,o){s&1&&(p(0,"div",0)(1,"div",1)(2,"h5",2),w(3),H(4,"translate"),m(),p(5,"button",3),H(6,"translate"),R("click",function(){return o.dismissModal()}),m()(),p(7,"div",4),I(8,t3,5,3),I(9,s3,12,6),m(),p(10,"div",5)(11,"div",6),I(12,o3,3,4,"button",7),m(),p(13,"div",8),I(14,r3,3,3,"button",9),m(),p(15,"div",10),I(16,c3,3,3,"button",11),m()()()),s&2&&(u(3),K(C(4,8,"child_bridge.reset_accessories")),u(2),y("disabled",o.clicked),W("aria-label",C(6,10,"form.button_close")),u(3),T(o.pairings.length===0?8:-1),u(),T(o.pairings.length>0?9:-1),u(3),T(o.pairings.length>0?12:-1),u(2),T(o.pairings.length===0?14:-1),u(2),T(o.pairings.length>0?16:-1))},dependencies:[Ut,Fe],encapsulation:2})}return e})();var bS=je(Sg(),1),fS=je(Cg(),1),yS=je(xg(),1),vS=je(ko(),1);var d3=e=>({prefix:e}),u3=e=>({link:e}),hS=(e,i,t,s)=>({"fa-circle-o":e,"fa-spinner fa-pulse":i,"fa-check-circle green-text":t,"fa-times-circle red-text":s}),g3=(e,i,t)=>({"fa-circle-o":e,"fa-spinner fa-pulse":i,"fa-times-circle red-text":t});function m3(e,i){e&1&&(p(0,"li"),w(1),H(2,"translate"),m()),e&2&&(u(),K(C(2,1,"plugins.manage.scoped.process")))}function p3(e,i){e&1&&(x(0,"li",8),H(1,"translate"),p(2,"li"),w(3),H(4,"translate"),m()),e&2&&(y("innerHTML",C(1,2,"plugins.manage.scoped.windows"),_e),u(3),K(C(4,4,"plugins.manage.manual_update_command")))}function _3(e,i){if(e&1&&(p(0,"pre",9),w(1),m()),e&2){let t=b();u(),on(`hb-service stop
27
27
  npm install -g `,t.plugin.newHbScope.to,"@",t.plugin.newHbScope.switch,`
@@ -1 +1 @@
1
- import{g as r}from"./chunk-UOLP7IQJ.js";import"./chunk-6GMXEQVA.js";import{ga as t,nb as e}from"./chunk-H36QJYLQ.js";var m=[{path:"",loadComponent:()=>import("./chunk-EJR2QDKK.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};
1
+ import{g as r}from"./chunk-UOLP7IQJ.js";import"./chunk-6GMXEQVA.js";import{ga as t,nb as e}from"./chunk-H36QJYLQ.js";var m=[{path:"",loadComponent:()=>import("./chunk-42AMCJPR.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};