homebridge-config-ui-x 5.0.0-beta.73 → 5.0.0-beta.75

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 (97) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/package.json +2 -2
  3. package/public/{chunk-RSIXVZQ5.js → chunk-2PGR64P5.js} +1 -1
  4. package/public/{chunk-F2OGU5FW.js → chunk-3GULJZHP.js} +1 -1
  5. package/public/chunk-3HSTSMBF.js +1 -0
  6. package/public/chunk-6VVYKVV3.js +1 -0
  7. package/public/{chunk-YHABGXDF.js → chunk-7S2SCSTB.js} +1 -1
  8. package/public/{chunk-UVKJJD7V.js → chunk-7UZTIQGW.js} +1 -1
  9. package/public/chunk-AO2TGXB5.js +1 -0
  10. package/public/chunk-BCLFN3ZQ.js +1 -0
  11. package/public/{chunk-YG4ZB7UL.js → chunk-BI6LUH5H.js} +1 -1
  12. package/public/chunk-BOEWV37L.js +1 -0
  13. package/public/{chunk-5VAXNY3G.js → chunk-C2BN2HOI.js} +1 -1
  14. package/public/{chunk-FTOJQHSN.js → chunk-C3USNZ27.js} +1 -1
  15. package/public/chunk-C7QTDMIT.js +1 -0
  16. package/public/{chunk-HESSYWLP.js → chunk-CFYDA2HW.js} +1 -1
  17. package/public/{chunk-2FGEOEQD.js → chunk-CHQVUHUA.js} +1 -1
  18. package/public/{chunk-7K6J2JZV.js → chunk-DB5AFIC2.js} +1 -1
  19. package/public/{chunk-LEN5ONT7.js → chunk-DZV4LLJD.js} +1 -1
  20. package/public/chunk-E3HBRQNK.js +1 -0
  21. package/public/chunk-GKGSRM34.js +1 -0
  22. package/public/{chunk-W7INVKJK.js → chunk-GTCZIBMK.js} +1 -1
  23. package/public/{chunk-Z5JCPUL4.js → chunk-GYC7KQSV.js} +1 -1
  24. package/public/chunk-H742LBRV.js +1 -0
  25. package/public/{chunk-JOBKDXBH.js → chunk-HLSZVFAU.js} +1 -1
  26. package/public/chunk-HOLZV2JF.js +1 -0
  27. package/public/chunk-IR3WWHQG.js +1 -0
  28. package/public/{chunk-6KZY5X2O.js → chunk-JJWUBY6E.js} +1 -1
  29. package/public/chunk-JSOQRQXW.js +1 -0
  30. package/public/{chunk-KOEPVWAV.js → chunk-KKRUAXSP.js} +1 -1
  31. package/public/{chunk-N2V5ZY2K.js → chunk-KNZKNNFS.js} +1 -1
  32. package/public/{chunk-GGWS5OR6.js → chunk-L53KWFPL.js} +1 -1
  33. package/public/{chunk-J5LLBW4H.js → chunk-L7ABVICD.js} +1 -1
  34. package/public/{chunk-LETXT4TQ.js → chunk-LCCK45XO.js} +1 -1
  35. package/public/{chunk-WIC623PI.js → chunk-LL66ABQL.js} +1 -1
  36. package/public/{chunk-WSN4EOA3.js → chunk-MCCSW7IJ.js} +1 -1
  37. package/public/chunk-NBUWS6AB.js +1 -0
  38. package/public/{chunk-K6Z4M6DK.js → chunk-NXVGJVMD.js} +1 -1
  39. package/public/{chunk-MSTKNHKR.js → chunk-P5IOWJ7U.js} +1 -1
  40. package/public/chunk-Q23JPYXG.js +1 -0
  41. package/public/{chunk-JWBDXQTX.js → chunk-QKTS3JFU.js} +1 -1
  42. package/public/chunk-R6HFWGPF.js +1 -0
  43. package/public/chunk-RQ5CCNBJ.js +1 -0
  44. package/public/{chunk-M4ZALRLO.js → chunk-RQKPZUWB.js} +1 -1
  45. package/public/{chunk-SN7QITJV.js → chunk-RR5E2BXI.js} +1 -1
  46. package/public/chunk-SJD4GVYN.js +1 -0
  47. package/public/{chunk-BAFZ37NV.js → chunk-SJXR5ZOC.js} +4 -4
  48. package/public/{chunk-G7VIWDTY.js → chunk-SLVJT644.js} +1 -1
  49. package/public/{chunk-MLNMRNTZ.js → chunk-SNWEO5H2.js} +1 -1
  50. package/public/{chunk-H7R2FNPO.js → chunk-TEJ24UUP.js} +1 -1
  51. package/public/{chunk-FFJ57RXM.js → chunk-TGBHJRPE.js} +1 -1
  52. package/public/chunk-THVRJBPA.js +8 -0
  53. package/public/chunk-TXGK55H7.js +1 -0
  54. package/public/chunk-U236P4KA.js +1 -0
  55. package/public/{chunk-XMEVG75U.js → chunk-UEIWYKIK.js} +1 -1
  56. package/public/{chunk-C53ZM5K2.js → chunk-UH63AXBP.js} +1 -1
  57. package/public/{chunk-6OKYARP4.js → chunk-VAOSNIIK.js} +1 -1
  58. package/public/{chunk-5CVOEJKH.js → chunk-VISPEG4X.js} +1 -1
  59. package/public/{chunk-YO42LXJH.js → chunk-WDHM4P2K.js} +1 -1
  60. package/public/{chunk-OC3KLIEQ.js → chunk-WWNFGQS7.js} +1 -1
  61. package/public/{chunk-G44UGN2Q.js → chunk-WYG36F64.js} +1 -1
  62. package/public/{chunk-IREZKHRG.js → chunk-XP7ACNM6.js} +1 -1
  63. package/public/chunk-YJKT4DVW.js +20 -0
  64. package/public/{chunk-3HY7J6NH.js → chunk-YL353PCH.js} +1 -1
  65. package/public/chunk-YNXMAGI5.js +1 -0
  66. package/public/chunk-ZLTYVDT6.js +1 -0
  67. package/public/{chunk-EU7YAVHW.js → chunk-ZNF7QAFA.js} +1 -1
  68. package/public/{chunk-GYQRW76Y.js → chunk-ZR5A3XCY.js} +1 -1
  69. package/public/chunk-ZUJGWVK6.js +1 -0
  70. package/public/index.html +2 -2
  71. package/public/main-HUPSZXJF.js +1 -0
  72. package/public/{styles-N63CIM5W.css → styles-PGYQLREL.css} +1 -1
  73. package/public/chunk-2RKLBKJO.js +0 -1
  74. package/public/chunk-3MZ3SGJP.js +0 -1
  75. package/public/chunk-5LF2PUAW.js +0 -1
  76. package/public/chunk-AMX53RFJ.js +0 -1
  77. package/public/chunk-CY623UQD.js +0 -1
  78. package/public/chunk-CYMQU3QM.js +0 -1
  79. package/public/chunk-DFBQ6P6I.js +0 -1
  80. package/public/chunk-DRL5T7S2.js +0 -1
  81. package/public/chunk-EMSRFE2S.js +0 -1
  82. package/public/chunk-ETZ7KYF5.js +0 -1
  83. package/public/chunk-F4P6I4SG.js +0 -1
  84. package/public/chunk-FMZ4TY2R.js +0 -1
  85. package/public/chunk-GYHA5VGU.js +0 -1
  86. package/public/chunk-KD7A3XPM.js +0 -20
  87. package/public/chunk-LGKKDS2D.js +0 -1
  88. package/public/chunk-M6SU5QZI.js +0 -1
  89. package/public/chunk-ME5YO72N.js +0 -1
  90. package/public/chunk-OXFPDX4F.js +0 -1
  91. package/public/chunk-PLRHRDW2.js +0 -1
  92. package/public/chunk-QQUUQ47G.js +0 -1
  93. package/public/chunk-R76FQMOG.js +0 -1
  94. package/public/chunk-RYLGR4TD.js +0 -1
  95. package/public/chunk-UKL5QAGM.js +0 -1
  96. package/public/chunk-WEIOAID6.js +0 -8
  97. package/public/main-AEAFQN6N.js +0 -1
@@ -1,4 +1,4 @@
1
- import{a as uu,b as Z6}from"./chunk-G44UGN2Q.js";import{a as S1}from"./chunk-2FGEOEQD.js";import{a as en,b as tn}from"./chunk-3VIG5M5R.js";import{a as T1}from"./chunk-XZR7OZ6I.js";import{a as O1}from"./chunk-7K6J2JZV.js";import{a as P1}from"./chunk-FHMZVMZK.js";import{a as of}from"./chunk-JMCN2SQV.js";import{a as A1,b as k1}from"./chunk-YXEV6KOV.js";import{a as ss}from"./chunk-LTDUXFUG.js";import{a as $1}from"./chunk-RSIXVZQ5.js";import{a as Ur,b as Wr,c as Gr,d as Kr,e as Jr,f as Xr,g as Yi,m as ve,n as it,o as Zi}from"./chunk-YHABGXDF.js";import{a as E1,b as Gi,c as Ki,e as vt,f as _1,h as y1,i as v1,k as B1,l as Yu,m as x1,o as Ji,r as Xi,s as yi,t as vi,x as w1,y as tu,z as as}from"./chunk-JOBKDXBH.js";import{a as Qi}from"./chunk-LEN5ONT7.js";import{d as cu}from"./chunk-QR7L4UUP.js";import{a as I1}from"./chunk-GGWS5OR6.js";import{b as Ve}from"./chunk-Z5JCPUL4.js";import{h as _e,j as Zu,k as he}from"./chunk-SN7QITJV.js";import{e as b1}from"./chunk-ASBFWS7L.js";import{a as Ee,b as Be}from"./chunk-DJKI5XBW.js";import{$a as l,Ac as v,Bc as B,Ca as Hu,Cc as Ye,D as f1,Da as s1,Fa as Uu,Gb as K,Hb as w,Ib as S,Jc as gt,Kb as nt,Kc as z,Lb as ft,Lc as Xu,M as Vr,Mb as rt,Nb as b,Nc as h1,Ob as c,Pb as p,Qb as I,Rb as c1,Sb as p1,Ub as U,Xa as de,Xb as M,Yb as h,Z as ns,_a as D1,a as X,aa as rf,ac as fs,b as Se,bc as rs,bd as zt,cc as os,cd as _i,dc as Wu,dd as bt,e as F,eb as Lr,ec as Gu,fa as r1,fb as yu,g as ze,ga as Ot,gc as Qt,gd as g1,h as G,ha as Hi,hb as Ei,hc as Ku,ic as Z,ja as o1,jc as _,k as t1,ka as a1,kc as H,kd as Hr,la as x,lb as Y,lc as q,mb as Ui,mc as Bu,n as Pt,nb as vu,nc as m1,o as is,ob as l1,q as u1,qc as Te,ra as j,rb as ce,rc as Pe,sa as N,sc as Oe,tb as d1,tc as F1,ub as zr,uc as C1,v as i1,vc as Xe,w as se,wc as eu,x as n1,xc as Ju,yc as xu,za as Rr,zc as Wi}from"./chunk-U4V4ICSI.js";var Df=F(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.regexpCode=be.getEsmExportName=be.getProperty=be.safeStringify=be.stringify=be.strConcat=be.addCodeArg=be.str=be._=be.nil=be._Code=be.Name=be.IDENTIFIER=be._CodeOrName=void 0;var af=class{};be._CodeOrName=af;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Bi=class extends af{constructor(u){if(super(),!be.IDENTIFIER.test(u))throw new Error("CodeGen: name must be a valid identifier");this.str=u}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=Bi;var Ht=class extends af{constructor(u){super(),this._items=typeof u=="string"?[u]:u}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let u=this._items[0];return u===""||u==='""'}get str(){var u;return(u=this._str)!==null&&u!==void 0?u:this._str=this._items.reduce((t,i)=>`${t}${i}`,"")}get names(){var u;return(u=this._names)!==null&&u!==void 0?u:this._names=this._items.reduce((t,i)=>(i instanceof Bi&&(t[i.str]=(t[i.str]||0)+1),t),{})}};be._Code=Ht;be.nil=new Ht("");function M1(e,...u){let t=[e[0]],i=0;for(;i<u.length;)ls(t,u[i]),t.push(e[++i]);return new Ht(t)}be._=M1;var Ds=new Ht("+");function j1(e,...u){let t=[sf(e[0])],i=0;for(;i<u.length;)t.push(Ds),ls(t,u[i]),t.push(Ds,sf(e[++i]));return eb(t),new Ht(t)}be.str=j1;function ls(e,u){u instanceof Ht?e.push(...u._items):u instanceof Bi?e.push(u):e.push(ib(u))}be.addCodeArg=ls;function eb(e){let u=1;for(;u<e.length-1;){if(e[u]===Ds){let t=tb(e[u-1],e[u+1]);if(t!==void 0){e.splice(u-1,3,t);continue}e[u++]="+"}u++}}function tb(e,u){if(u==='""')return e;if(e==='""')return u;if(typeof e=="string")return u instanceof Bi||e[e.length-1]!=='"'?void 0:typeof u!="string"?`${e.slice(0,-1)}${u}"`:u[0]==='"'?e.slice(0,-1)+u.slice(1):void 0;if(typeof u=="string"&&u[0]==='"'&&!(e instanceof Bi))return`"${e}${u.slice(1)}`}function ub(e,u){return u.emptyStr()?e:e.emptyStr()?u:j1`${e}${u}`}be.strConcat=ub;function ib(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:sf(Array.isArray(e)?e.join(","):e)}function nb(e){return new Ht(sf(e))}be.stringify=nb;function sf(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=sf;function fb(e){return typeof e=="string"&&be.IDENTIFIER.test(e)?new Ht(`.${e}`):M1`[${e}]`}be.getProperty=fb;function rb(e){if(typeof e=="string"&&be.IDENTIFIER.test(e))return new Ht(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}be.getEsmExportName=rb;function ob(e){return new Ht(e.toString())}be.regexpCode=ob});var ps=F(xt=>{"use strict";Object.defineProperty(xt,"__esModule",{value:!0});xt.ValueScope=xt.ValueScopeName=xt.Scope=xt.varKinds=xt.UsedValueState=void 0;var Bt=Df(),ds=class extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}},Yr=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(Yr||(xt.UsedValueState=Yr={}));xt.varKinds={const:new Bt.Name("const"),let:new Bt.Name("let"),var:new Bt.Name("var")};var Zr=class{constructor({prefixes:u,parent:t}={}){this._names={},this._prefixes=u,this._parent=t}toName(u){return u instanceof Bt.Name?u:this.name(u)}name(u){return new Bt.Name(this._newName(u))}_newName(u){let t=this._names[u]||this._nameGroup(u);return`${u}${t.index++}`}_nameGroup(u){var t,i;if(!((i=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||i===void 0)&&i.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}};xt.Scope=Zr;var Qr=class extends Bt.Name{constructor(u,t){super(t),this.prefix=u}setValue(u,{property:t,itemIndex:i}){this.value=u,this.scopePath=(0,Bt._)`.${new Bt.Name(t)}[${i}]`}};xt.ValueScopeName=Qr;var ab=(0,Bt._)`\n`,cs=class extends Zr{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts=Se(X({},u),{_n:u.lines?ab:Bt.nil})}get(){return this._scope}name(u){return new Qr(u,this._newName(u))}value(u,t){var i;if(t.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let n=this.toName(u),{prefix:f}=n,r=(i=t.key)!==null&&i!==void 0?i:t.ref,o=this._values[f];if(o){let D=o.get(r);if(D)return D}else o=this._values[f]=new Map;o.set(r,n);let a=this._scope[f]||(this._scope[f]=[]),s=a.length;return a[s]=t.ref,n.setValue(t,{property:f,itemIndex:s}),n}getValue(u,t){let i=this._values[u];if(i)return i.get(t)}scopeRefs(u,t=this._values){return this._reduceValues(t,i=>{if(i.scopePath===void 0)throw new Error(`CodeGen: name "${i}" has no value`);return(0,Bt._)`${u}${i.scopePath}`})}scopeCode(u=this._values,t,i){return this._reduceValues(u,n=>{if(n.value===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return n.value.code},t,i)}_reduceValues(u,t,i={},n){let f=Bt.nil;for(let r in u){let o=u[r];if(!o)continue;let a=i[r]=i[r]||new Map;o.forEach(s=>{if(a.has(s))return;a.set(s,Yr.Started);let D=t(s);if(D){let d=this.opts.es5?xt.varKinds.var:xt.varKinds.const;f=(0,Bt._)`${f}${d} ${s} = ${D};${this.opts._n}`}else if(D=n?.(s))f=(0,Bt._)`${f}${D}${this.opts._n}`;else throw new ds(s);a.set(s,Yr.Completed)})}return f}};xt.ValueScope=cs});var ee=F(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.or=ae.and=ae.not=ae.CodeGen=ae.operators=ae.varKinds=ae.ValueScopeName=ae.ValueScope=ae.Scope=ae.Name=ae.regexpCode=ae.stringify=ae.getProperty=ae.nil=ae.strConcat=ae.str=ae._=void 0;var Fe=Df(),iu=ps(),Qu=Df();Object.defineProperty(ae,"_",{enumerable:!0,get:function(){return Qu._}});Object.defineProperty(ae,"str",{enumerable:!0,get:function(){return Qu.str}});Object.defineProperty(ae,"strConcat",{enumerable:!0,get:function(){return Qu.strConcat}});Object.defineProperty(ae,"nil",{enumerable:!0,get:function(){return Qu.nil}});Object.defineProperty(ae,"getProperty",{enumerable:!0,get:function(){return Qu.getProperty}});Object.defineProperty(ae,"stringify",{enumerable:!0,get:function(){return Qu.stringify}});Object.defineProperty(ae,"regexpCode",{enumerable:!0,get:function(){return Qu.regexpCode}});Object.defineProperty(ae,"Name",{enumerable:!0,get:function(){return Qu.Name}});var no=ps();Object.defineProperty(ae,"Scope",{enumerable:!0,get:function(){return no.Scope}});Object.defineProperty(ae,"ValueScope",{enumerable:!0,get:function(){return no.ValueScope}});Object.defineProperty(ae,"ValueScopeName",{enumerable:!0,get:function(){return no.ValueScopeName}});Object.defineProperty(ae,"varKinds",{enumerable:!0,get:function(){return no.varKinds}});ae.operators={GT:new Fe._Code(">"),GTE:new Fe._Code(">="),LT:new Fe._Code("<"),LTE:new Fe._Code("<="),EQ:new Fe._Code("==="),NEQ:new Fe._Code("!=="),NOT:new Fe._Code("!"),OR:new Fe._Code("||"),AND:new Fe._Code("&&"),ADD:new Fe._Code("+")};var wu=class{optimizeNodes(){return this}optimizeNames(u,t){return this}},ms=class extends wu{constructor(u,t,i){super(),this.varKind=u,this.name=t,this.rhs=i}render({es5:u,_n:t}){let i=u?iu.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${i} ${this.name}${n};`+t}optimizeNames(u,t){if(u[this.name.str])return this.rhs&&(this.rhs=nn(this.rhs,u,t)),this}get names(){return this.rhs instanceof Fe._CodeOrName?this.rhs.names:{}}},to=class extends wu{constructor(u,t,i){super(),this.lhs=u,this.rhs=t,this.sideEffects=i}render({_n:u}){return`${this.lhs} = ${this.rhs};`+u}optimizeNames(u,t){if(!(this.lhs instanceof Fe.Name&&!u[this.lhs.str]&&!this.sideEffects))return this.rhs=nn(this.rhs,u,t),this}get names(){let u=this.lhs instanceof Fe.Name?{}:X({},this.lhs.names);return io(u,this.rhs)}},Fs=class extends to{constructor(u,t,i,n){super(u,i,n),this.op=t}render({_n:u}){return`${this.lhs} ${this.op}= ${this.rhs};`+u}},Cs=class extends wu{constructor(u){super(),this.label=u,this.names={}}render({_n:u}){return`${this.label}:`+u}},hs=class extends wu{constructor(u){super(),this.label=u,this.names={}}render({_n:u}){return`break${this.label?` ${this.label}`:""};`+u}},gs=class extends wu{constructor(u){super(),this.error=u}render({_n:u}){return`throw ${this.error};`+u}get names(){return this.error.names}},bs=class extends wu{constructor(u){super(),this.code=u}render({_n:u}){return`${this.code};`+u}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(u,t){return this.code=nn(this.code,u,t),this}get names(){return this.code instanceof Fe._CodeOrName?this.code.names:{}}},lf=class extends wu{constructor(u=[]){super(),this.nodes=u}render(u){return this.nodes.reduce((t,i)=>t+i.render(u),"")}optimizeNodes(){let{nodes:u}=this,t=u.length;for(;t--;){let i=u[t].optimizeNodes();Array.isArray(i)?u.splice(t,1,...i):i?u[t]=i:u.splice(t,1)}return u.length>0?this:void 0}optimizeNames(u,t){let{nodes:i}=this,n=i.length;for(;n--;){let f=i[n];f.optimizeNames(u,t)||(sb(u,f.names),i.splice(n,1))}return i.length>0?this:void 0}get names(){return this.nodes.reduce((u,t)=>xi(u,t.names),{})}},Su=class extends lf{render(u){return"{"+u._n+super.render(u)+"}"+u._n}},Es=class extends lf{},_s=(()=>{class e extends Su{}return e.kind="else",e})(),eo=(()=>{class e extends Su{constructor(t,i){super(i),this.condition=t}render(t){let i=`if(${this.condition})`+super.render(t);return this.else&&(i+="else "+this.else.render(t)),i}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let i=this.else;if(i){let n=i.optimizeNodes();i=this.else=Array.isArray(n)?new _s(n):n}if(i)return t===!1?i instanceof e?i:i.nodes:this.nodes.length?this:new e(L1(t),i instanceof e?[i]:i.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,i){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,i),!!(super.optimizeNames(t,i)||this.else))return this.condition=nn(this.condition,t,i),this}get names(){let t=super.names;return io(t,this.condition),this.else&&xi(t,this.else.names),t}}return e.kind="if",e})(),fo=(()=>{class e extends Su{}return e.kind="for",e})(),ys=class extends fo{constructor(u){super(),this.iteration=u}render(u){return`for(${this.iteration})`+super.render(u)}optimizeNames(u,t){if(super.optimizeNames(u,t))return this.iteration=nn(this.iteration,u,t),this}get names(){return xi(super.names,this.iteration.names)}},vs=class extends fo{constructor(u,t,i,n){super(),this.varKind=u,this.name=t,this.from=i,this.to=n}render(u){let t=u.es5?iu.varKinds.var:this.varKind,{name:i,from:n,to:f}=this;return`for(${t} ${i}=${n}; ${i}<${f}; ${i}++)`+super.render(u)}get names(){let u=io(super.names,this.from);return io(u,this.to)}},uo=class extends fo{constructor(u,t,i,n){super(),this.loop=u,this.varKind=t,this.name=i,this.iterable=n}render(u){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(u)}optimizeNames(u,t){if(super.optimizeNames(u,t))return this.iterable=nn(this.iterable,u,t),this}get names(){return xi(super.names,this.iterable.names)}},N1=(()=>{class e extends Su{constructor(t,i,n){super(),this.name=t,this.args=i,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}}return e.kind="func",e})(),q1=(()=>{class e extends lf{render(t){return"return "+super.render(t)}}return e.kind="return",e})(),Bs=class extends Su{render(u){let t="try"+super.render(u);return this.catch&&(t+=this.catch.render(u)),this.finally&&(t+=this.finally.render(u)),t}optimizeNodes(){var u,t;return super.optimizeNodes(),(u=this.catch)===null||u===void 0||u.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(u,t){var i,n;return super.optimizeNames(u,t),(i=this.catch)===null||i===void 0||i.optimizeNames(u,t),(n=this.finally)===null||n===void 0||n.optimizeNames(u,t),this}get names(){let u=super.names;return this.catch&&xi(u,this.catch.names),this.finally&&xi(u,this.finally.names),u}},V1=(()=>{class e extends Su{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}}return e.kind="catch",e})(),R1=(()=>{class e extends Su{render(t){return"finally"+super.render(t)}}return e.kind="finally",e})(),xs=class{constructor(u,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts=Se(X({},t),{_n:t.lines?`
1
+ import{a as uu,b as Z6}from"./chunk-WYG36F64.js";import{a as S1}from"./chunk-CHQVUHUA.js";import{a as en,b as tn}from"./chunk-3VIG5M5R.js";import{a as T1}from"./chunk-XZR7OZ6I.js";import{a as O1}from"./chunk-DB5AFIC2.js";import{a as P1}from"./chunk-FHMZVMZK.js";import{a as of}from"./chunk-JMCN2SQV.js";import{a as A1,b as k1}from"./chunk-YXEV6KOV.js";import{a as ss}from"./chunk-LTDUXFUG.js";import{a as $1}from"./chunk-2PGR64P5.js";import{a as Ur,b as Wr,c as Gr,d as Kr,e as Jr,f as Xr,g as Yi,m as ve,n as it,o as Zi}from"./chunk-7S2SCSTB.js";import{A as as,a as E1,b as Gi,c as Ki,e as vt,f as _1,h as y1,i as v1,k as B1,l as Yu,m as x1,o as Ji,r as Xi,s as yi,t as vi,y as w1,z as tu}from"./chunk-HLSZVFAU.js";import{a as Qi}from"./chunk-DZV4LLJD.js";import{d as cu}from"./chunk-QR7L4UUP.js";import{a as I1}from"./chunk-L53KWFPL.js";import{b as Ve}from"./chunk-GYC7KQSV.js";import{h as _e,j as Zu,k as he}from"./chunk-RR5E2BXI.js";import{e as b1}from"./chunk-ASBFWS7L.js";import{a as Ee,b as Be}from"./chunk-DJKI5XBW.js";import{$a as l,Ac as v,Bc as B,Ca as Hu,Cc as Ye,D as f1,Da as s1,Fa as Uu,Gb as K,Hb as w,Ib as S,Jc as gt,Kb as nt,Kc as z,Lb as ft,Lc as Xu,M as Vr,Mb as rt,Nb as b,Nc as h1,Ob as c,Pb as p,Qb as I,Rb as c1,Sb as p1,Ub as U,Xa as de,Xb as M,Yb as h,Z as ns,_a as D1,a as X,aa as rf,ac as fs,b as Se,bc as rs,bd as zt,cc as os,cd as _i,dc as Wu,dd as bt,e as F,eb as Lr,ec as Gu,fa as r1,fb as yu,g as ze,ga as Ot,gc as Qt,gd as g1,h as G,ha as Hi,hb as Ei,hc as Ku,ic as Z,ja as o1,jc as _,k as t1,ka as a1,kc as H,kd as Hr,la as x,lb as Y,lc as q,mb as Ui,mc as Bu,n as Pt,nb as vu,nc as m1,o as is,ob as l1,q as u1,qc as Te,ra as j,rb as ce,rc as Pe,sa as N,sc as Oe,tb as d1,tc as F1,ub as zr,uc as C1,v as i1,vc as Xe,w as se,wc as eu,x as n1,xc as Ju,yc as xu,za as Rr,zc as Wi}from"./chunk-U4V4ICSI.js";var Df=F(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.regexpCode=be.getEsmExportName=be.getProperty=be.safeStringify=be.stringify=be.strConcat=be.addCodeArg=be.str=be._=be.nil=be._Code=be.Name=be.IDENTIFIER=be._CodeOrName=void 0;var af=class{};be._CodeOrName=af;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Bi=class extends af{constructor(u){if(super(),!be.IDENTIFIER.test(u))throw new Error("CodeGen: name must be a valid identifier");this.str=u}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=Bi;var Ht=class extends af{constructor(u){super(),this._items=typeof u=="string"?[u]:u}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let u=this._items[0];return u===""||u==='""'}get str(){var u;return(u=this._str)!==null&&u!==void 0?u:this._str=this._items.reduce((t,i)=>`${t}${i}`,"")}get names(){var u;return(u=this._names)!==null&&u!==void 0?u:this._names=this._items.reduce((t,i)=>(i instanceof Bi&&(t[i.str]=(t[i.str]||0)+1),t),{})}};be._Code=Ht;be.nil=new Ht("");function M1(e,...u){let t=[e[0]],i=0;for(;i<u.length;)ls(t,u[i]),t.push(e[++i]);return new Ht(t)}be._=M1;var Ds=new Ht("+");function j1(e,...u){let t=[sf(e[0])],i=0;for(;i<u.length;)t.push(Ds),ls(t,u[i]),t.push(Ds,sf(e[++i]));return eb(t),new Ht(t)}be.str=j1;function ls(e,u){u instanceof Ht?e.push(...u._items):u instanceof Bi?e.push(u):e.push(ib(u))}be.addCodeArg=ls;function eb(e){let u=1;for(;u<e.length-1;){if(e[u]===Ds){let t=tb(e[u-1],e[u+1]);if(t!==void 0){e.splice(u-1,3,t);continue}e[u++]="+"}u++}}function tb(e,u){if(u==='""')return e;if(e==='""')return u;if(typeof e=="string")return u instanceof Bi||e[e.length-1]!=='"'?void 0:typeof u!="string"?`${e.slice(0,-1)}${u}"`:u[0]==='"'?e.slice(0,-1)+u.slice(1):void 0;if(typeof u=="string"&&u[0]==='"'&&!(e instanceof Bi))return`"${e}${u.slice(1)}`}function ub(e,u){return u.emptyStr()?e:e.emptyStr()?u:j1`${e}${u}`}be.strConcat=ub;function ib(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:sf(Array.isArray(e)?e.join(","):e)}function nb(e){return new Ht(sf(e))}be.stringify=nb;function sf(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=sf;function fb(e){return typeof e=="string"&&be.IDENTIFIER.test(e)?new Ht(`.${e}`):M1`[${e}]`}be.getProperty=fb;function rb(e){if(typeof e=="string"&&be.IDENTIFIER.test(e))return new Ht(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}be.getEsmExportName=rb;function ob(e){return new Ht(e.toString())}be.regexpCode=ob});var ps=F(xt=>{"use strict";Object.defineProperty(xt,"__esModule",{value:!0});xt.ValueScope=xt.ValueScopeName=xt.Scope=xt.varKinds=xt.UsedValueState=void 0;var Bt=Df(),ds=class extends Error{constructor(u){super(`CodeGen: "code" for ${u} not defined`),this.value=u.value}},Yr=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(Yr||(xt.UsedValueState=Yr={}));xt.varKinds={const:new Bt.Name("const"),let:new Bt.Name("let"),var:new Bt.Name("var")};var Zr=class{constructor({prefixes:u,parent:t}={}){this._names={},this._prefixes=u,this._parent=t}toName(u){return u instanceof Bt.Name?u:this.name(u)}name(u){return new Bt.Name(this._newName(u))}_newName(u){let t=this._names[u]||this._nameGroup(u);return`${u}${t.index++}`}_nameGroup(u){var t,i;if(!((i=(t=this._parent)===null||t===void 0?void 0:t._prefixes)===null||i===void 0)&&i.has(u)||this._prefixes&&!this._prefixes.has(u))throw new Error(`CodeGen: prefix "${u}" is not allowed in this scope`);return this._names[u]={prefix:u,index:0}}};xt.Scope=Zr;var Qr=class extends Bt.Name{constructor(u,t){super(t),this.prefix=u}setValue(u,{property:t,itemIndex:i}){this.value=u,this.scopePath=(0,Bt._)`.${new Bt.Name(t)}[${i}]`}};xt.ValueScopeName=Qr;var ab=(0,Bt._)`\n`,cs=class extends Zr{constructor(u){super(u),this._values={},this._scope=u.scope,this.opts=Se(X({},u),{_n:u.lines?ab:Bt.nil})}get(){return this._scope}name(u){return new Qr(u,this._newName(u))}value(u,t){var i;if(t.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let n=this.toName(u),{prefix:f}=n,r=(i=t.key)!==null&&i!==void 0?i:t.ref,o=this._values[f];if(o){let D=o.get(r);if(D)return D}else o=this._values[f]=new Map;o.set(r,n);let a=this._scope[f]||(this._scope[f]=[]),s=a.length;return a[s]=t.ref,n.setValue(t,{property:f,itemIndex:s}),n}getValue(u,t){let i=this._values[u];if(i)return i.get(t)}scopeRefs(u,t=this._values){return this._reduceValues(t,i=>{if(i.scopePath===void 0)throw new Error(`CodeGen: name "${i}" has no value`);return(0,Bt._)`${u}${i.scopePath}`})}scopeCode(u=this._values,t,i){return this._reduceValues(u,n=>{if(n.value===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return n.value.code},t,i)}_reduceValues(u,t,i={},n){let f=Bt.nil;for(let r in u){let o=u[r];if(!o)continue;let a=i[r]=i[r]||new Map;o.forEach(s=>{if(a.has(s))return;a.set(s,Yr.Started);let D=t(s);if(D){let d=this.opts.es5?xt.varKinds.var:xt.varKinds.const;f=(0,Bt._)`${f}${d} ${s} = ${D};${this.opts._n}`}else if(D=n?.(s))f=(0,Bt._)`${f}${D}${this.opts._n}`;else throw new ds(s);a.set(s,Yr.Completed)})}return f}};xt.ValueScope=cs});var ee=F(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.or=ae.and=ae.not=ae.CodeGen=ae.operators=ae.varKinds=ae.ValueScopeName=ae.ValueScope=ae.Scope=ae.Name=ae.regexpCode=ae.stringify=ae.getProperty=ae.nil=ae.strConcat=ae.str=ae._=void 0;var Fe=Df(),iu=ps(),Qu=Df();Object.defineProperty(ae,"_",{enumerable:!0,get:function(){return Qu._}});Object.defineProperty(ae,"str",{enumerable:!0,get:function(){return Qu.str}});Object.defineProperty(ae,"strConcat",{enumerable:!0,get:function(){return Qu.strConcat}});Object.defineProperty(ae,"nil",{enumerable:!0,get:function(){return Qu.nil}});Object.defineProperty(ae,"getProperty",{enumerable:!0,get:function(){return Qu.getProperty}});Object.defineProperty(ae,"stringify",{enumerable:!0,get:function(){return Qu.stringify}});Object.defineProperty(ae,"regexpCode",{enumerable:!0,get:function(){return Qu.regexpCode}});Object.defineProperty(ae,"Name",{enumerable:!0,get:function(){return Qu.Name}});var no=ps();Object.defineProperty(ae,"Scope",{enumerable:!0,get:function(){return no.Scope}});Object.defineProperty(ae,"ValueScope",{enumerable:!0,get:function(){return no.ValueScope}});Object.defineProperty(ae,"ValueScopeName",{enumerable:!0,get:function(){return no.ValueScopeName}});Object.defineProperty(ae,"varKinds",{enumerable:!0,get:function(){return no.varKinds}});ae.operators={GT:new Fe._Code(">"),GTE:new Fe._Code(">="),LT:new Fe._Code("<"),LTE:new Fe._Code("<="),EQ:new Fe._Code("==="),NEQ:new Fe._Code("!=="),NOT:new Fe._Code("!"),OR:new Fe._Code("||"),AND:new Fe._Code("&&"),ADD:new Fe._Code("+")};var wu=class{optimizeNodes(){return this}optimizeNames(u,t){return this}},ms=class extends wu{constructor(u,t,i){super(),this.varKind=u,this.name=t,this.rhs=i}render({es5:u,_n:t}){let i=u?iu.varKinds.var:this.varKind,n=this.rhs===void 0?"":` = ${this.rhs}`;return`${i} ${this.name}${n};`+t}optimizeNames(u,t){if(u[this.name.str])return this.rhs&&(this.rhs=nn(this.rhs,u,t)),this}get names(){return this.rhs instanceof Fe._CodeOrName?this.rhs.names:{}}},to=class extends wu{constructor(u,t,i){super(),this.lhs=u,this.rhs=t,this.sideEffects=i}render({_n:u}){return`${this.lhs} = ${this.rhs};`+u}optimizeNames(u,t){if(!(this.lhs instanceof Fe.Name&&!u[this.lhs.str]&&!this.sideEffects))return this.rhs=nn(this.rhs,u,t),this}get names(){let u=this.lhs instanceof Fe.Name?{}:X({},this.lhs.names);return io(u,this.rhs)}},Fs=class extends to{constructor(u,t,i,n){super(u,i,n),this.op=t}render({_n:u}){return`${this.lhs} ${this.op}= ${this.rhs};`+u}},Cs=class extends wu{constructor(u){super(),this.label=u,this.names={}}render({_n:u}){return`${this.label}:`+u}},hs=class extends wu{constructor(u){super(),this.label=u,this.names={}}render({_n:u}){return`break${this.label?` ${this.label}`:""};`+u}},gs=class extends wu{constructor(u){super(),this.error=u}render({_n:u}){return`throw ${this.error};`+u}get names(){return this.error.names}},bs=class extends wu{constructor(u){super(),this.code=u}render({_n:u}){return`${this.code};`+u}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(u,t){return this.code=nn(this.code,u,t),this}get names(){return this.code instanceof Fe._CodeOrName?this.code.names:{}}},lf=class extends wu{constructor(u=[]){super(),this.nodes=u}render(u){return this.nodes.reduce((t,i)=>t+i.render(u),"")}optimizeNodes(){let{nodes:u}=this,t=u.length;for(;t--;){let i=u[t].optimizeNodes();Array.isArray(i)?u.splice(t,1,...i):i?u[t]=i:u.splice(t,1)}return u.length>0?this:void 0}optimizeNames(u,t){let{nodes:i}=this,n=i.length;for(;n--;){let f=i[n];f.optimizeNames(u,t)||(sb(u,f.names),i.splice(n,1))}return i.length>0?this:void 0}get names(){return this.nodes.reduce((u,t)=>xi(u,t.names),{})}},Su=class extends lf{render(u){return"{"+u._n+super.render(u)+"}"+u._n}},Es=class extends lf{},_s=(()=>{class e extends Su{}return e.kind="else",e})(),eo=(()=>{class e extends Su{constructor(t,i){super(i),this.condition=t}render(t){let i=`if(${this.condition})`+super.render(t);return this.else&&(i+="else "+this.else.render(t)),i}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let i=this.else;if(i){let n=i.optimizeNodes();i=this.else=Array.isArray(n)?new _s(n):n}if(i)return t===!1?i instanceof e?i:i.nodes:this.nodes.length?this:new e(L1(t),i instanceof e?[i]:i.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,i){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,i),!!(super.optimizeNames(t,i)||this.else))return this.condition=nn(this.condition,t,i),this}get names(){let t=super.names;return io(t,this.condition),this.else&&xi(t,this.else.names),t}}return e.kind="if",e})(),fo=(()=>{class e extends Su{}return e.kind="for",e})(),ys=class extends fo{constructor(u){super(),this.iteration=u}render(u){return`for(${this.iteration})`+super.render(u)}optimizeNames(u,t){if(super.optimizeNames(u,t))return this.iteration=nn(this.iteration,u,t),this}get names(){return xi(super.names,this.iteration.names)}},vs=class extends fo{constructor(u,t,i,n){super(),this.varKind=u,this.name=t,this.from=i,this.to=n}render(u){let t=u.es5?iu.varKinds.var:this.varKind,{name:i,from:n,to:f}=this;return`for(${t} ${i}=${n}; ${i}<${f}; ${i}++)`+super.render(u)}get names(){let u=io(super.names,this.from);return io(u,this.to)}},uo=class extends fo{constructor(u,t,i,n){super(),this.loop=u,this.varKind=t,this.name=i,this.iterable=n}render(u){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(u)}optimizeNames(u,t){if(super.optimizeNames(u,t))return this.iterable=nn(this.iterable,u,t),this}get names(){return xi(super.names,this.iterable.names)}},N1=(()=>{class e extends Su{constructor(t,i,n){super(),this.name=t,this.args=i,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}}return e.kind="func",e})(),q1=(()=>{class e extends lf{render(t){return"return "+super.render(t)}}return e.kind="return",e})(),Bs=class extends Su{render(u){let t="try"+super.render(u);return this.catch&&(t+=this.catch.render(u)),this.finally&&(t+=this.finally.render(u)),t}optimizeNodes(){var u,t;return super.optimizeNodes(),(u=this.catch)===null||u===void 0||u.optimizeNodes(),(t=this.finally)===null||t===void 0||t.optimizeNodes(),this}optimizeNames(u,t){var i,n;return super.optimizeNames(u,t),(i=this.catch)===null||i===void 0||i.optimizeNames(u,t),(n=this.finally)===null||n===void 0||n.optimizeNames(u,t),this}get names(){let u=super.names;return this.catch&&xi(u,this.catch.names),this.finally&&xi(u,this.finally.names),u}},V1=(()=>{class e extends Su{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}}return e.kind="catch",e})(),R1=(()=>{class e extends Su{render(t){return"finally"+super.render(t)}}return e.kind="finally",e})(),xs=class{constructor(u,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts=Se(X({},t),{_n:t.lines?`
2
2
  `:""}),this._extScope=u,this._scope=new iu.Scope({parent:u}),this._nodes=[new Es]}toString(){return this._root.render(this.opts)}name(u){return this._scope.name(u)}scopeName(u){return this._extScope.name(u)}scopeValue(u,t){let i=this._extScope.value(u,t);return(this._values[i.prefix]||(this._values[i.prefix]=new Set)).add(i),i}getScopeValue(u,t){return this._extScope.getValue(u,t)}scopeRefs(u){return this._extScope.scopeRefs(u,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(u,t,i,n){let f=this._scope.toName(t);return i!==void 0&&n&&(this._constants[f.str]=i),this._leafNode(new ms(u,f,i)),f}const(u,t,i){return this._def(iu.varKinds.const,u,t,i)}let(u,t,i){return this._def(iu.varKinds.let,u,t,i)}var(u,t,i){return this._def(iu.varKinds.var,u,t,i)}assign(u,t,i){return this._leafNode(new to(u,t,i))}add(u,t){return this._leafNode(new Fs(u,ae.operators.ADD,t))}code(u){return typeof u=="function"?u():u!==Fe.nil&&this._leafNode(new bs(u)),this}object(...u){let t=["{"];for(let[i,n]of u)t.length>1&&t.push(","),t.push(i),(i!==n||this.opts.es5)&&(t.push(":"),(0,Fe.addCodeArg)(t,n));return t.push("}"),new Fe._Code(t)}if(u,t,i){if(this._blockNode(new eo(u)),t&&i)this.code(t).else().code(i).endIf();else if(t)this.code(t).endIf();else if(i)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(u){return this._elseNode(new eo(u))}else(){return this._elseNode(new _s)}endIf(){return this._endBlockNode(eo,_s)}_for(u,t){return this._blockNode(u),t&&this.code(t).endFor(),this}for(u,t){return this._for(new ys(u),t)}forRange(u,t,i,n,f=this.opts.es5?iu.varKinds.var:iu.varKinds.let){let r=this._scope.toName(u);return this._for(new vs(f,r,t,i),()=>n(r))}forOf(u,t,i,n=iu.varKinds.const){let f=this._scope.toName(u);if(this.opts.es5){let r=t instanceof Fe.Name?t:this.var("_arr",t);return this.forRange("_i",0,(0,Fe._)`${r}.length`,o=>{this.var(f,(0,Fe._)`${r}[${o}]`),i(f)})}return this._for(new uo("of",n,f,t),()=>i(f))}forIn(u,t,i,n=this.opts.es5?iu.varKinds.var:iu.varKinds.const){if(this.opts.ownProperties)return this.forOf(u,(0,Fe._)`Object.keys(${t})`,i);let f=this._scope.toName(u);return this._for(new uo("in",n,f,t),()=>i(f))}endFor(){return this._endBlockNode(fo)}label(u){return this._leafNode(new Cs(u))}break(u){return this._leafNode(new hs(u))}return(u){let t=new q1;if(this._blockNode(t),this.code(u),t.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(q1)}try(u,t,i){if(!t&&!i)throw new Error('CodeGen: "try" without "catch" and "finally"');let n=new Bs;if(this._blockNode(n),this.code(u),t){let f=this.name("e");this._currNode=n.catch=new V1(f),t(f)}return i&&(this._currNode=n.finally=new R1,this.code(i)),this._endBlockNode(V1,R1)}throw(u){return this._leafNode(new gs(u))}block(u,t){return this._blockStarts.push(this._nodes.length),u&&this.code(u).endBlock(t),this}endBlock(u){let t=this._blockStarts.pop();if(t===void 0)throw new Error("CodeGen: not in self-balancing block");let i=this._nodes.length-t;if(i<0||u!==void 0&&i!==u)throw new Error(`CodeGen: wrong number of nodes: ${i} vs ${u} expected`);return this._nodes.length=t,this}func(u,t=Fe.nil,i,n){return this._blockNode(new N1(u,t,i)),n&&this.code(n).endFunc(),this}endFunc(){return this._endBlockNode(N1)}optimize(u=1){for(;u-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(u){return this._currNode.nodes.push(u),this}_blockNode(u){this._currNode.nodes.push(u),this._nodes.push(u)}_endBlockNode(u,t){let i=this._currNode;if(i instanceof u||t&&i instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${u.kind}/${t.kind}`:u.kind}"`)}_elseNode(u){let t=this._currNode;if(!(t instanceof eo))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=u,this}get _root(){return this._nodes[0]}get _currNode(){let u=this._nodes;return u[u.length-1]}set _currNode(u){let t=this._nodes;t[t.length-1]=u}};ae.CodeGen=xs;function xi(e,u){for(let t in u)e[t]=(e[t]||0)+(u[t]||0);return e}function io(e,u){return u instanceof Fe._CodeOrName?xi(e,u.names):e}function nn(e,u,t){if(e instanceof Fe.Name)return i(e);if(!n(e))return e;return new Fe._Code(e._items.reduce((f,r)=>(r instanceof Fe.Name&&(r=i(r)),r instanceof Fe._Code?f.push(...r._items):f.push(r),f),[]));function i(f){let r=t[f.str];return r===void 0||u[f.str]!==1?f:(delete u[f.str],r)}function n(f){return f instanceof Fe._Code&&f._items.some(r=>r instanceof Fe.Name&&u[r.str]===1&&t[r.str]!==void 0)}}function sb(e,u){for(let t in u)e[t]=(e[t]||0)-(u[t]||0)}function L1(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,Fe._)`!${ws(e)}`}ae.not=L1;var Db=z1(ae.operators.AND);function lb(...e){return e.reduce(Db)}ae.and=lb;var db=z1(ae.operators.OR);function cb(...e){return e.reduce(db)}ae.or=cb;function z1(e){return(u,t)=>u===Fe.nil?t:t===Fe.nil?u:(0,Fe._)`${ws(u)} ${e} ${ws(t)}`}function ws(e){return e instanceof Fe.Name?e:(0,Fe._)`(${e})`}});var le=F(De=>{"use strict";Object.defineProperty(De,"__esModule",{value:!0});De.checkStrictMode=De.getErrorPath=De.Type=De.useFunc=De.setEvaluated=De.evaluatedPropsToName=De.mergeEvaluated=De.eachItem=De.unescapeJsonPointer=De.escapeJsonPointer=De.escapeFragment=De.unescapeFragment=De.schemaRefOrVal=De.schemaHasRulesButRef=De.schemaHasRules=De.checkUnknownRules=De.alwaysValidSchema=De.toHash=void 0;var Ie=ee(),pb=Df();function mb(e){let u={};for(let t of e)u[t]=!0;return u}De.toHash=mb;function Fb(e,u){return typeof u=="boolean"?u:Object.keys(u).length===0?!0:(W1(e,u),!G1(u,e.self.RULES.all))}De.alwaysValidSchema=Fb;function W1(e,u=e.schema){let{opts:t,self:i}=e;if(!t.strictSchema||typeof u=="boolean")return;let n=i.RULES.keywords;for(let f in u)n[f]||X1(e,`unknown keyword: "${f}"`)}De.checkUnknownRules=W1;function G1(e,u){if(typeof e=="boolean")return!e;for(let t in e)if(u[t])return!0;return!1}De.schemaHasRules=G1;function Cb(e,u){if(typeof e=="boolean")return!e;for(let t in e)if(t!=="$ref"&&u.all[t])return!0;return!1}De.schemaHasRulesButRef=Cb;function hb({topSchemaRef:e,schemaPath:u},t,i,n){if(!n){if(typeof t=="number"||typeof t=="boolean")return t;if(typeof t=="string")return(0,Ie._)`${t}`}return(0,Ie._)`${e}${u}${(0,Ie.getProperty)(i)}`}De.schemaRefOrVal=hb;function gb(e){return K1(decodeURIComponent(e))}De.unescapeFragment=gb;function bb(e){return encodeURIComponent(Is(e))}De.escapeFragment=bb;function Is(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}De.escapeJsonPointer=Is;function K1(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}De.unescapeJsonPointer=K1;function Eb(e,u){if(Array.isArray(e))for(let t of e)u(t);else u(e)}De.eachItem=Eb;function H1({mergeNames:e,mergeToName:u,mergeValues:t,resultToName:i}){return(n,f,r,o)=>{let a=r===void 0?f:r instanceof Ie.Name?(f instanceof Ie.Name?e(n,f,r):u(n,f,r),r):f instanceof Ie.Name?(u(n,r,f),f):t(f,r);return o===Ie.Name&&!(a instanceof Ie.Name)?i(n,a):a}}De.mergeEvaluated={props:H1({mergeNames:(e,u,t)=>e.if((0,Ie._)`${t} !== true && ${u} !== undefined`,()=>{e.if((0,Ie._)`${u} === true`,()=>e.assign(t,!0),()=>e.assign(t,(0,Ie._)`${t} || {}`).code((0,Ie._)`Object.assign(${t}, ${u})`))}),mergeToName:(e,u,t)=>e.if((0,Ie._)`${t} !== true`,()=>{u===!0?e.assign(t,!0):(e.assign(t,(0,Ie._)`${t} || {}`),As(e,t,u))}),mergeValues:(e,u)=>e===!0?!0:X(X({},e),u),resultToName:J1}),items:H1({mergeNames:(e,u,t)=>e.if((0,Ie._)`${t} !== true && ${u} !== undefined`,()=>e.assign(t,(0,Ie._)`${u} === true ? true : ${t} > ${u} ? ${t} : ${u}`)),mergeToName:(e,u,t)=>e.if((0,Ie._)`${t} !== true`,()=>e.assign(t,u===!0?!0:(0,Ie._)`${t} > ${u} ? ${t} : ${u}`)),mergeValues:(e,u)=>e===!0?!0:Math.max(e,u),resultToName:(e,u)=>e.var("items",u)})};function J1(e,u){if(u===!0)return e.var("props",!0);let t=e.var("props",(0,Ie._)`{}`);return u!==void 0&&As(e,t,u),t}De.evaluatedPropsToName=J1;function As(e,u,t){Object.keys(t).forEach(i=>e.assign((0,Ie._)`${u}${(0,Ie.getProperty)(i)}`,!0))}De.setEvaluated=As;var U1={};function _b(e,u){return e.scopeValue("func",{ref:u,code:U1[u.code]||(U1[u.code]=new pb._Code(u.code))})}De.useFunc=_b;var Ss=function(e){return e[e.Num=0]="Num",e[e.Str=1]="Str",e}(Ss||(De.Type=Ss={}));function yb(e,u,t){if(e instanceof Ie.Name){let i=u===Ss.Num;return t?i?(0,Ie._)`"[" + ${e} + "]"`:(0,Ie._)`"['" + ${e} + "']"`:i?(0,Ie._)`"/" + ${e}`:(0,Ie._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return t?(0,Ie.getProperty)(e).toString():"/"+Is(e)}De.getErrorPath=yb;function X1(e,u,t=e.opts.strictSchema){if(t){if(u=`strict mode: ${u}`,t===!0)throw new Error(u);e.self.logger.warn(u)}}De.checkStrictMode=X1});var Ut=F(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});var lt=ee(),vb={data:new lt.Name("data"),valCxt:new lt.Name("valCxt"),instancePath:new lt.Name("instancePath"),parentData:new lt.Name("parentData"),parentDataProperty:new lt.Name("parentDataProperty"),rootData:new lt.Name("rootData"),dynamicAnchors:new lt.Name("dynamicAnchors"),vErrors:new lt.Name("vErrors"),errors:new lt.Name("errors"),this:new lt.Name("this"),self:new lt.Name("self"),scope:new lt.Name("scope"),json:new lt.Name("json"),jsonPos:new lt.Name("jsonPos"),jsonLen:new lt.Name("jsonLen"),jsonPart:new lt.Name("jsonPart")};ks.default=vb});var df=F(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.extendErrors=dt.resetErrorsCount=dt.reportExtraError=dt.reportError=dt.keyword$DataError=dt.keywordError=void 0;var ge=ee(),ro=le(),Et=Ut();dt.keywordError={message:({keyword:e})=>(0,ge.str)`must pass "${e}" keyword validation`};dt.keyword$DataError={message:({keyword:e,schemaType:u})=>u?(0,ge.str)`"${e}" keyword must be ${u} ($data)`:(0,ge.str)`"${e}" keyword is invalid ($data)`};function Bb(e,u=dt.keywordError,t,i){let{it:n}=e,{gen:f,compositeRule:r,allErrors:o}=n,a=Q1(e,u,t);i??(r||o)?Y1(f,a):Z1(n,(0,ge._)`[${a}]`)}dt.reportError=Bb;function xb(e,u=dt.keywordError,t){let{it:i}=e,{gen:n,compositeRule:f,allErrors:r}=i,o=Q1(e,u,t);Y1(n,o),f||r||Z1(i,Et.default.vErrors)}dt.reportExtraError=xb;function wb(e,u){e.assign(Et.default.errors,u),e.if((0,ge._)`${Et.default.vErrors} !== null`,()=>e.if(u,()=>e.assign((0,ge._)`${Et.default.vErrors}.length`,u),()=>e.assign(Et.default.vErrors,null)))}dt.resetErrorsCount=wb;function Sb({gen:e,keyword:u,schemaValue:t,data:i,errsCount:n,it:f}){if(n===void 0)throw new Error("ajv implementation error");let r=e.name("err");e.forRange("i",n,Et.default.errors,o=>{e.const(r,(0,ge._)`${Et.default.vErrors}[${o}]`),e.if((0,ge._)`${r}.instancePath === undefined`,()=>e.assign((0,ge._)`${r}.instancePath`,(0,ge.strConcat)(Et.default.instancePath,f.errorPath))),e.assign((0,ge._)`${r}.schemaPath`,(0,ge.str)`${f.errSchemaPath}/${u}`),f.opts.verbose&&(e.assign((0,ge._)`${r}.schema`,t),e.assign((0,ge._)`${r}.data`,i))})}dt.extendErrors=Sb;function Y1(e,u){let t=e.const("err",u);e.if((0,ge._)`${Et.default.vErrors} === null`,()=>e.assign(Et.default.vErrors,(0,ge._)`[${t}]`),(0,ge._)`${Et.default.vErrors}.push(${t})`),e.code((0,ge._)`${Et.default.errors}++`)}function Z1(e,u){let{gen:t,validateName:i,schemaEnv:n}=e;n.$async?t.throw((0,ge._)`new ${e.ValidationError}(${u})`):(t.assign((0,ge._)`${i}.errors`,u),t.return(!1))}var wi={keyword:new ge.Name("keyword"),schemaPath:new ge.Name("schemaPath"),params:new ge.Name("params"),propertyName:new ge.Name("propertyName"),message:new ge.Name("message"),schema:new ge.Name("schema"),parentSchema:new ge.Name("parentSchema")};function Q1(e,u,t){let{createErrors:i}=e.it;return i===!1?(0,ge._)`{}`:Ib(e,u,t)}function Ib(e,u,t={}){let{gen:i,it:n}=e,f=[Ab(n,t),kb(e,t)];return $b(e,u,f),i.object(...f)}function Ab({errorPath:e},{instancePath:u}){let t=u?(0,ge.str)`${e}${(0,ro.getErrorPath)(u,ro.Type.Str)}`:e;return[Et.default.instancePath,(0,ge.strConcat)(Et.default.instancePath,t)]}function kb({keyword:e,it:{errSchemaPath:u}},{schemaPath:t,parentSchema:i}){let n=i?u:(0,ge.str)`${u}/${e}`;return t&&(n=(0,ge.str)`${n}${(0,ro.getErrorPath)(t,ro.Type.Str)}`),[wi.schemaPath,n]}function $b(e,{params:u,message:t},i){let{keyword:n,data:f,schemaValue:r,it:o}=e,{opts:a,propertyName:s,topSchemaRef:D,schemaPath:d}=o;i.push([wi.keyword,n],[wi.params,typeof u=="function"?u(e):u||(0,ge._)`{}`]),a.messages&&i.push([wi.message,typeof t=="function"?t(e):t]),a.verbose&&i.push([wi.schema,r],[wi.parentSchema,(0,ge._)`${D}${d}`],[Et.default.data,f]),s&&i.push([wi.propertyName,s])}});var td=F(fn=>{"use strict";Object.defineProperty(fn,"__esModule",{value:!0});fn.boolOrEmptySchema=fn.topBoolOrEmptySchema=void 0;var Tb=df(),Pb=ee(),Ob=Ut(),Mb={message:"boolean schema is false"};function jb(e){let{gen:u,schema:t,validateName:i}=e;t===!1?ed(e,!1):typeof t=="object"&&t.$async===!0?u.return(Ob.default.data):(u.assign((0,Pb._)`${i}.errors`,null),u.return(!0))}fn.topBoolOrEmptySchema=jb;function Nb(e,u){let{gen:t,schema:i}=e;i===!1?(t.var(u,!1),ed(e)):t.var(u,!0)}fn.boolOrEmptySchema=Nb;function ed(e,u){let{gen:t,data:i}=e,n={gen:t,keyword:"false schema",data:i,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,Tb.reportError)(n,Mb,void 0,u)}});var $s=F(rn=>{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.getRules=rn.isJSONType=void 0;var qb=["string","number","integer","boolean","null","object","array"],Vb=new Set(qb);function Rb(e){return typeof e=="string"&&Vb.has(e)}rn.isJSONType=Rb;function Lb(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:Se(X({},e),{integer:!0,boolean:!0,null:!0}),rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}rn.getRules=Lb});var Ts=F(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.shouldUseRule=ei.shouldUseGroup=ei.schemaHasRulesForType=void 0;function zb({schema:e,self:u},t){let i=u.RULES.types[t];return i&&i!==!0&&ud(e,i)}ei.schemaHasRulesForType=zb;function ud(e,u){return u.rules.some(t=>id(e,t))}ei.shouldUseGroup=ud;function id(e,u){var t;return e[u.keyword]!==void 0||((t=u.definition.implements)===null||t===void 0?void 0:t.some(i=>e[i]!==void 0))}ei.shouldUseRule=id});var cf=F(ct=>{"use strict";Object.defineProperty(ct,"__esModule",{value:!0});ct.reportTypeError=ct.checkDataTypes=ct.checkDataType=ct.coerceAndCheckDataType=ct.getJSONTypes=ct.getSchemaTypes=ct.DataType=void 0;var Hb=$s(),Ub=Ts(),Wb=df(),re=ee(),nd=le(),on=function(e){return e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong",e}(on||(ct.DataType=on={}));function Gb(e){let u=fd(e.type);if(u.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!u.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&u.push("null")}return u}ct.getSchemaTypes=Gb;function fd(e){let u=Array.isArray(e)?e:e?[e]:[];if(u.every(Hb.isJSONType))return u;throw new Error("type must be JSONType or JSONType[]: "+u.join(","))}ct.getJSONTypes=fd;function Kb(e,u){let{gen:t,data:i,opts:n}=e,f=Jb(u,n.coerceTypes),r=u.length>0&&!(f.length===0&&u.length===1&&(0,Ub.schemaHasRulesForType)(e,u[0]));if(r){let o=Os(u,i,n.strictNumbers,on.Wrong);t.if(o,()=>{f.length?Xb(e,u,f):Ms(e)})}return r}ct.coerceAndCheckDataType=Kb;var rd=new Set(["string","number","integer","boolean","null"]);function Jb(e,u){return u?e.filter(t=>rd.has(t)||u==="array"&&t==="array"):[]}function Xb(e,u,t){let{gen:i,data:n,opts:f}=e,r=i.let("dataType",(0,re._)`typeof ${n}`),o=i.let("coerced",(0,re._)`undefined`);f.coerceTypes==="array"&&i.if((0,re._)`${r} == 'object' && Array.isArray(${n}) && ${n}.length == 1`,()=>i.assign(n,(0,re._)`${n}[0]`).assign(r,(0,re._)`typeof ${n}`).if(Os(u,n,f.strictNumbers),()=>i.assign(o,n))),i.if((0,re._)`${o} !== undefined`);for(let s of t)(rd.has(s)||s==="array"&&f.coerceTypes==="array")&&a(s);i.else(),Ms(e),i.endIf(),i.if((0,re._)`${o} !== undefined`,()=>{i.assign(n,o),Yb(e,o)});function a(s){switch(s){case"string":i.elseIf((0,re._)`${r} == "number" || ${r} == "boolean"`).assign(o,(0,re._)`"" + ${n}`).elseIf((0,re._)`${n} === null`).assign(o,(0,re._)`""`);return;case"number":i.elseIf((0,re._)`${r} == "boolean" || ${n} === null
3
3
  || (${r} == "string" && ${n} && ${n} == +${n})`).assign(o,(0,re._)`+${n}`);return;case"integer":i.elseIf((0,re._)`${r} === "boolean" || ${n} === null
4
4
  || (${r} === "string" && ${n} && ${n} == +${n} && !(${n} % 1))`).assign(o,(0,re._)`+${n}`);return;case"boolean":i.elseIf((0,re._)`${n} === "false" || ${n} === 0 || ${n} === null`).assign(o,!1).elseIf((0,re._)`${n} === "true" || ${n} === 1`).assign(o,!0);return;case"null":i.elseIf((0,re._)`${n} === "" || ${n} === 0 || ${n} === false`),i.assign(o,null);return;case"array":i.elseIf((0,re._)`${r} === "string" || ${r} === "number"
@@ -17,16 +17,16 @@ Should be: [ [ object1, pointer1 ], [ object 2, pointer2 ], etc... ]`),n}}static
17
17
  color: ${n?"#FFFFFF":"#000000"};
18
18
  padding: 5px !important;
19
19
  }
20
- `;t.source.postMessage({action:"inline-style",style:o},t.origin)})}getConfigBlocks(){return this.pluginConfig}updateConfigBlocks(t){for(let i of t)i[this.pluginType]=this.pluginAlias;this.pluginConfig=t}schemaFormUpdated(){if(!(!this.iframe||!this.iframe.contentWindow)){if(this.schemaFormRecentlyRefreshed){this.schemaFormRecentlyRefreshed=!1;return}this.schemaFormRecentlyUpdated=!0,this.iframe.contentWindow.postMessage({action:"stream",event:"configChanged",data:this.pluginConfig},Zu.api.origin)}}schemaFormRefresh(){if(this.schemaFormRecentlyUpdated){this.schemaFormRecentlyUpdated=!1;return}this.schemaFormRecentlyRefreshed=!0,this.showSchemaForm&&(this.showSchemaForm=!1,setTimeout(()=>{this.showSchemaForm=!0}))}formCreate(t,i,n,f,r){return G(this,null,function*(){yield this.formEnd(),this.formId=t,this.formSchema=i,this.formData=n,this.formSubmitButtonLabel=f,this.formCancelButtonLabel=r})}formEnd(){return G(this,null,function*(){this.formId&&(this.formId=void 0,this.formSchema=void 0,this.formData=void 0,this.formSubmitButtonLabel=void 0,this.formCancelButtonLabel=void 0,yield new Promise(t=>setTimeout(t)))})}formUpdated(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:"change",formData:t}},Zu.api.origin)}formValidEvent(t){this.formValid=t}formActionEvent(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:t,formData:this.formData}},Zu.api.origin)}handleGetCachedAccessories(t){return G(this,null,function*(){let i=yield se(this.$api.get("/server/cached-accessories"));return this.requestResponse(t,i.filter(n=>n.plugin===this.plugin.name))})}savePluginConfig(t=!1){return G(this,null,function*(){this.saveInProgress=!0;try{let i=yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.saveInProgress=!1,t){if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&i[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 n=this.$modal.open(un,{size:"lg",backdrop:"static"});n.componentInstance.bridges=this.childBridges.map(f=>({name:f.name,username:f.username}));return}this.$activeModal.close(),this.$modal.open(uu,{size:"lg",backdrop:"static"})}}catch(i){this.saveInProgress=!1,console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}getChildBridges(){return G(this,null,function*(){try{(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.plugin.name===i.plugin&&this.childBridges.push(i)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}onIsValid(t){this.formIsValid=t}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(i,n){i&1&&Wu(n.customPluginUiElementTarget,dH,5),i&2&&Gu()},inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:24,vars:17,consts:[["custompluginui",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","pb-0",2,"min-height","110px"],[1,"text-center","primary-text"],["width","100%","height","1px;","sandbox","allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-downloads allow-forms",2,"border","0"],[1,"card","card-body"],[1,"loading-overlay","text-center","primary-text","d-flex","align-items-center","justify-content-center"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end","d-flex","align-items-center","justify-content-end"],["container","modal","placement","top","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl","me-2",3,"ngClass","ngbTooltip"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[3,"dataChange","dataChanged","isValid","configSchema","data"],[1,"text-end","custom-form-action-buttons"],[1,"btn","btn-elegant"],[1,"btn","btn-primary",3,"disabled"],[1,"btn","btn-elegant",3,"click"],[1,"btn","btn-primary",3,"click","disabled"]],template:function(i,n){if(i&1){let f=U();c(0,"div",1)(1,"div",2)(2,"h5",3),_(3),p(),c(4,"button",4),v(5,"translate"),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),p()(),c(6,"div",5),w(7,cH,2,0,"div",6),I(8,"iframe",7,0),w(10,pH,2,2,"div",8),w(11,CH,5,4,"div",8),w(12,hH,2,0,"div",9),p(),c(13,"div",10)(14,"div",11)(15,"button",12),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),_(16),v(17,"translate"),p()(),I(18,"div",13),c(19,"div",14),w(20,gH,2,4,"i",15),c(21,"button",16),M("click",function(){return j(f),N(n.savePluginConfig(!0))}),w(22,bH,2,3),w(23,EH,1,0,"i",17),p()()()()}i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.saveInProgress),K("aria-label",B(5,13,"form.button_close")),l(3),S(n.loading?7:-1),l(3),S(n.uiLoaded&&n.pluginConfig.length&&n.schema.singular&&n.showSchemaForm?10:-1),l(),S(n.formId?11:-1),l(),S(n.pluginSpinner?12:-1),l(3),b("disabled",n.saveInProgress),l(),q(" ",B(17,15,"form.button_close")," "),l(4),S(n.saveButtonDisabled?-1:20),l(),b("disabled",n.saveInProgress||n.saveButtonDisabled),l(),S(n.saveInProgress?-1:22),l(),S(n.saveInProgress?23:-1))},dependencies:[Qn,Zi,zt,Be],styles:[".manage-plugin-config-external-icons[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;line-height:1;color:#000;opacity:.5;background-color:transparent;border:0}.loading-overlay[_ngcontent-%COMP%]{position:absolute;inset:16px;background-color:#ffffffb3} body.dark-mode .loading-overlay{background-color:#242424b3}.custom-form-action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child{margin-right:2px}"]})}return e})();var C6=ze(F6(),1);var ef=(()=>{class e{el=x(Uu);constructor(){}ngOnInit(){this.el.nativeElement.querySelectorAll("a").forEach(n=>{n.target="_blank",n.rel="noopener noreferrer"});let i=new C6.EmojiConvertor;this.el.nativeElement.innerHTML=i.replace_colons(this.el.nativeElement.innerHTML)}static \u0275fac=function(i){return new(i||e)};static \u0275dir=vu({type:e,selectors:[["markdown"]]})}return e})();var _H=e=>({link:e});function yH(e,u){if(e&1&&(c(0,"div",5),I(1,"p",10),v(2,"translate"),p()),e&2){let t=h();l(),b("innerHTML",Ye(2,1,"accessories.message_must_use_insecure_mode",eu(4,_H,t.linkInsecure)),de)}}function vH(e,u){e&1&&(c(0,"p"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"plugins.settings.custom.homebridge-gsh.message_account_link_required")))}function BH(e,u){if(e&1){let t=U();c(0,"div",11)(1,"button",13),M("click",function(){j(t);let n=h(2);return N(n.linkAccount())}),_(2),v(3,"translate"),p()()}e&2&&(l(2),q(" ",B(3,1,"plugins.settings.custom.homebridge-gsh.label_link_account")," "))}function xH(e,u){e&1&&(c(0,"div",16)(1,"p",17)(2,"strong"),_(3),v(4,"translate"),p()()()),e&2&&(l(3),H(B(4,1,"plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required")))}function wH(e,u){if(e&1&&(c(0,"div",12),I(1,"i",14),c(2,"h4",15),_(3),v(4,"titlecase"),v(5,"translate"),p(),w(6,xH,5,3,"div",16),p()),e&2){let t=h(2);l(3),Bu(" ",B(4,3,t.linkType)," ",B(5,5,"plugins.settings.custom.homebridge-gsh.label_account_linked")," "),l(3),S(t.justLinked?6:-1)}}function SH(e,u){if(e&1&&I(0,"markdown",18),e&2){let t=h(3);b("data",t.schema.footerDisplay)}}function IH(e,u){if(e&1){let t=U();c(0,"div",16),w(1,SH,1,1,"markdown",18),p(),c(2,"div",19)(3,"app-schema-form",20),Oe("dataChange",function(n){j(t);let f=h(2);return Pe(f.gshConfig,n)||(f.gshConfig=n),N(n)}),p()()}if(e&2){let t=h(2);l(),S(t.schema.footerDisplay?1:-1),l(2),b("configSchema",t.schema),Te("data",t.gshConfig)}}function AH(e,u){if(e&1&&(c(0,"p"),_(1),v(2,"translate"),p(),w(3,vH,3,3,"p"),w(4,BH,4,3,"div",11),w(5,wH,7,7,"div",12),w(6,IH,4,3)),e&2){let t=h();l(),H(B(2,5,"plugins.settings.custom.homebridge-gsh.message_about")),l(2),S(t.gshConfig.token?-1:3),l(),S(t.gshConfig.token?-1:4),l(),S(t.gshConfig.token?5:-1),l(),S(t.gshConfig&&t.gshConfig.token?6:-1)}}function kH(e,u){if(e&1){let t=U();c(0,"button",21),M("click",function(){j(t);let n=h();return N(n.unlinkAccount())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.settings.custom.homebridge-gsh.label_unlink_account")," "))}function $H(e,u){if(e&1){let t=U();c(0,"button",22),M("click",function(){j(t);let n=h();return N(n.saveAndClose())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_save")," "))}var g6=(()=>{class e{$activeModal=x(ve);$api=x(he);$jwtHelper=x(I1);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;schema;pluginConfig;justLinked=!1;gshConfig;linkType;linkInsecure='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';linkDomain="https://homebridge-gsh.iot.oz.nu";linkUrl=`${this.linkDomain}/link-account`;popup;originCheckInterval;constructor(){window.addEventListener("message",this.windowMessageListener,!1)}ngOnInit(){this.pluginConfig.length||this.pluginConfig.push({name:"Google Smart Home",platform:this.schema.pluginAlias}),this.gshConfig=this.pluginConfig[0],this.parseToken()}windowMessageListener=t=>{t.origin!==this.linkDomain&&(console.error("Refusing to process message from",t.origin),console.error(t));try{let i=JSON.parse(t.data);i.token&&this.processToken(i.token)}catch(i){console.error(i)}};linkAccount(){let n=window.top.outerHeight/2+window.top.screenY-350,f=window.top.outerWidth/2+window.top.screenX-450/2;this.popup=window.open(this.linkUrl,"oznu-google-smart-home-auth",`toolbar=no, location=no, directories=no, status=no, menubar=no scrollbars=no, resizable=no, copyhistory=no, width=450, height=700, top=${n}, left=${f}`),this.originCheckInterval=setInterval(()=>{this.popup.postMessage("origin-check",this.linkDomain)},2e3)}unlinkAccount(){this.gshConfig={name:"Google Smart Home",platform:this.schema.pluginAlias},this.pluginConfig.splice(0,this.pluginConfig.length),this.saveConfig()}processToken(t){clearInterval(this.originCheckInterval),this.popup&&this.popup.close(),this.gshConfig.token=t,this.gshConfig.notice="Keep your token a secret!",this.pluginConfig.length||this.pluginConfig.push(this.gshConfig),this.parseToken(),this.saveConfig()}parseToken(){if(this.gshConfig.token)try{let t=this.$jwtHelper.decodeToken(this.gshConfig.token);this.linkType=t.id.split("|")[0].split("-")[0]}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.custom.homebridge-gsh.message_invalid_token"),this.$translate.instant("toast.title_error")),delete this.gshConfig.token}}saveConfig(){return G(this,null,function*(){try{yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig)),this.justLinked=!0,this.$toastr.success(this.$translate.instant("plugins.settings.restart_required"),this.$translate.instant("plugins.settings.plugin_config_saved"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}saveAndClose(){return G(this,null,function*(){this.gshConfig.platform=this.schema.pluginAlias,this.pluginConfig[0]=this.gshConfig,yield this.saveConfig(),this.$activeModal.close()})}close(){this.$activeModal.close()}ngOnDestroy(){clearInterval(this.originCheckInterval),window.removeEventListener("message",this.windowMessageListener),this.popup&&this.popup.close()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["app-homebridge-google-smarthome"]],inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:15,vars:10,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],["role","alert",1,"alert","alert-warning"],[1,"modal-footer"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-auto"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary"],[1,"mb-0",3,"innerHTML"],[1,"text-center"],[1,"text-center","mt-1"],[1,"btn","btn-primary","btn-lg",3,"click"],[1,"fas","fa-fw","fa-check-circle","primary-text",2,"font-size","50px"],[1,"mt-2"],[1,"mt-3"],[1,"primary-text"],[1,"plugin-md",3,"data"],[1,"card","p-2","pt-3","mt-4"],[3,"dataChange","configSchema","data"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-auto",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3,"Homebridge Google Smart Home"),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(6,"div",4),w(7,yH,3,6,"div",5),w(8,AH,7,7),p(),c(9,"div",6),w(10,kH,3,3,"button",7),c(11,"button",8),M("click",function(){return n.close()}),_(12),v(13,"translate"),p(),w(14,$H,3,3,"button",9),p()()),i&2&&(l(4),K("aria-label",B(5,6,"form.button_close")),l(3),S(n.$settings.env.enableAccessories?-1:7),l(),S(n.$settings.env.enableAccessories?8:-1),l(2),S(n.gshConfig.token?10:-1),l(2),q(" ",B(13,8,"form.button_close")," "),l(2),S(n.gshConfig.token?14:-1))},dependencies:[tn,en,ef,Qn,g1,Be],encapsulation:2})}return e})();var b6=(()=>{class e{$api=x(he);$modal=x(it);plugins={"homebridge-gsh":g6};constructor(){}openSettings(t,i){return G(this,null,function*(){let n=yield this.loadPluginConfig(t.name),f=this.$modal.open(this.plugins[t.name],{size:"lg",backdrop:"static"});return f.componentInstance.plugin=t,f.componentInstance.schema=i,f.componentInstance.pluginConfig=n,f.result.catch(()=>{})})}openCustomSettingsUi(t,i){return G(this,null,function*(){let n=yield this.loadPluginConfig(t.name),f=this.$modal.open(m6,{size:"lg",backdrop:"static"});return f.componentInstance.plugin=t,f.componentInstance.schema=i,f.componentInstance.pluginConfig=n,f.result.catch(()=>{})})}loadPluginConfig(t){return G(this,null,function*(){return se(this.$api.get(`/config-editor/plugin/${encodeURIComponent(t)}`))})}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Ot({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var B6=ze(of(),1);var x6=ze(A1(),1),w6=ze(k1(),1);function TH(e,u){e&1&&(c(0,"div",5),I(1,"i",12),p())}function PH(e,u){e&1&&(c(0,"div",15),I(1,"i",16),p(),c(2,"ul",17)(3,"li"),_(4," All your plugins are marked as compatible with the new version of Homebridge. You are all set to continue below. "),p()())}function OH(e,u){e&1&&(c(0,"div",15),I(1,"i",18),p(),c(2,"ul",17)(3,"li"),_(4,"Some of your plugins are not explicitly marked as compatible with the new version of Homebridge."),p(),c(5,"li"),_(6," This does "),c(7,"span",19),_(8,"not"),p(),_(9," necessarily mean that they won't work. We just can't guarantee that they will. "),p(),c(10,"li"),_(11," For more information about this update, please see the "),c(12,"a",20),_(13,"wiki page"),p(),_(14,". "),p(),c(15,"li"),_(16,"To ignore this warning and continue with the update, click continue below."),p()())}function MH(e,u){e&1&&I(0,"i",21)}function jH(e,u){e&1&&I(0,"i",22)}function NH(e,u){if(e&1&&(c(0,"li",14),_(1),w(2,MH,1,0,"i",21),w(3,jH,1,0,"i",22),p()),e&2){let t=u.$implicit;l(),q(" ",t.displayName," "),l(),S(t.hb2Ready==="supported"?2:-1),l(),S(t.hb2Ready==="unknown"?3:-1)}}function qH(e,u){if(e&1&&(w(0,PH,5,0),w(1,OH,17,0),c(2,"ul",13),ft(3,NH,4,3,"li",14,nt),p()),e&2){let t=h();S(t.allPluginsSupported?0:-1),l(),S(t.allPluginsSupported?-1:1),l(2),rt(t.installedPlugins)}}var E6=(()=>{class e{$activeModal=x(ve);$api=x(he);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);loading=!0;installedPlugins=[];allPluginsSupported=!0;constructor(){}ngOnInit(){this.loadInstalledPlugins()}loadInstalledPlugins(){return G(this,null,function*(){this.installedPlugins=[],this.loading=!0;let t=this.$settings.env.homebridgeVersion.split(".")[0];try{let i=yield se(this.$api.get("/plugins"));this.installedPlugins=i.filter(n=>n.name!=="homebridge-config-ui-x").map(n=>{let f=n.engines?.homebridge?.split("||").map(o=>o.trim())||[],r=t==="2"?"hide":f.some(o=>o.startsWith("^2")||o.startsWith(">=2"))?"supported":"unknown";return r==="unknown"&&(this.allPluginsSupported=!1),Se(X({},n),{hb2Ready:r})}),this.installedPlugins.length===0&&this.$activeModal.close("update"),this.loading=!1}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],decls:20,vars:15,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",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[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","flex-row","flex-wrap","justify-content-between"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-check-circle","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"fas","fa-fw","fa-info-circle","primary-text",2,"font-size","75px"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl","ms-2"],["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","ms-2"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3,"Homebridge v2 Update"),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.close("Dismiss")}),p()(),c(6,"div",4),w(7,TH,2,0,"div",5),w(8,qH,5,2),p(),c(9,"div",6)(10,"div",7)(11,"button",8),v(12,"translate"),M("click",function(){return n.$activeModal.close("Dismiss")}),_(13),v(14,"translate"),p()(),I(15,"div",9),c(16,"div",10)(17,"button",11),M("click",function(){return n.$activeModal.close("update")}),_(18),v(19,"translate"),p()()()()),i&2&&(l(4),K("aria-label",B(5,7,"form.button_close")),l(3),S(n.loading?7:-1),l(),S(n.loading?-1:8),l(3),K("aria-label",B(12,9,"form.button_close")),l(2),q(" ",B(14,11,"form.button_close")," "),l(4),b("disabled",n.loading),l(),q(" ",B(19,13,"plugins.node_update.continue")," "))},dependencies:[Be],encapsulation:2})}return e})();var _6=ze(of(),1);var VH=["pluginlogoutput"],y6=(()=>{class e{$activeModal=x(ve);$api=x(he);$log=x(O1);$modal=x(it);$toastr=x(_e);$translate=x(Ee);plugin;termTarget=Xu("pluginlogoutput");resizeEvent=new Pt;pluginAlias;constructor(){}onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){this.getPluginLog()}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()}})}downloadLogFile(){let t=this.$modal.open($1,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-fw fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download?colour=yes",{observe:"response",responseType:"text"}).subscribe({next:i=>{if(!i.body)return;let n=i.body.split(`
20
+ `;t.source.postMessage({action:"inline-style",style:o},t.origin)})}getConfigBlocks(){return this.pluginConfig}updateConfigBlocks(t){for(let i of t)i[this.pluginType]=this.pluginAlias;this.pluginConfig=t}schemaFormUpdated(){if(!(!this.iframe||!this.iframe.contentWindow)){if(this.schemaFormRecentlyRefreshed){this.schemaFormRecentlyRefreshed=!1;return}this.schemaFormRecentlyUpdated=!0,this.iframe.contentWindow.postMessage({action:"stream",event:"configChanged",data:this.pluginConfig},Zu.api.origin)}}schemaFormRefresh(){if(this.schemaFormRecentlyUpdated){this.schemaFormRecentlyUpdated=!1;return}this.schemaFormRecentlyRefreshed=!0,this.showSchemaForm&&(this.showSchemaForm=!1,setTimeout(()=>{this.showSchemaForm=!0}))}formCreate(t,i,n,f,r){return G(this,null,function*(){yield this.formEnd(),this.formId=t,this.formSchema=i,this.formData=n,this.formSubmitButtonLabel=f,this.formCancelButtonLabel=r})}formEnd(){return G(this,null,function*(){this.formId&&(this.formId=void 0,this.formSchema=void 0,this.formData=void 0,this.formSubmitButtonLabel=void 0,this.formCancelButtonLabel=void 0,yield new Promise(t=>setTimeout(t)))})}formUpdated(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:"change",formData:t}},Zu.api.origin)}formValidEvent(t){this.formValid=t}formActionEvent(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:t,formData:this.formData}},Zu.api.origin)}handleGetCachedAccessories(t){return G(this,null,function*(){let i=yield se(this.$api.get("/server/cached-accessories"));return this.requestResponse(t,i.filter(n=>n.plugin===this.plugin.name))})}savePluginConfig(t=!1){return G(this,null,function*(){this.saveInProgress=!0;try{let i=yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.saveInProgress=!1,t){if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&i[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 n=this.$modal.open(un,{size:"lg",backdrop:"static"});n.componentInstance.bridges=this.childBridges.map(f=>({name:f.name,username:f.username}));return}this.$activeModal.close(),this.$modal.open(uu,{size:"lg",backdrop:"static"})}}catch(i){this.saveInProgress=!1,console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}getChildBridges(){return G(this,null,function*(){try{(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.plugin.name===i.plugin&&this.childBridges.push(i)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}onIsValid(t){this.formIsValid=t}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(i,n){i&1&&Wu(n.customPluginUiElementTarget,dH,5),i&2&&Gu()},inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:24,vars:17,consts:[["custompluginui",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body","pb-0",2,"min-height","110px"],[1,"text-center","primary-text"],["width","100%","height","1px;","sandbox","allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-downloads allow-forms",2,"border","0"],[1,"card","card-body"],[1,"loading-overlay","text-center","primary-text","d-flex","align-items-center","justify-content-center"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-end","d-flex","align-items-center","justify-content-end"],["container","modal","placement","top","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl","me-2",3,"ngClass","ngbTooltip"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[3,"dataChange","dataChanged","isValid","configSchema","data"],[1,"text-end","custom-form-action-buttons"],[1,"btn","btn-elegant"],[1,"btn","btn-primary",3,"disabled"],[1,"btn","btn-elegant",3,"click"],[1,"btn","btn-primary",3,"click","disabled"]],template:function(i,n){if(i&1){let f=U();c(0,"div",1)(1,"div",2)(2,"h5",3),_(3),p(),c(4,"button",4),v(5,"translate"),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),p()(),c(6,"div",5),w(7,cH,2,0,"div",6),I(8,"iframe",7,0),w(10,pH,2,2,"div",8),w(11,CH,5,4,"div",8),w(12,hH,2,0,"div",9),p(),c(13,"div",10)(14,"div",11)(15,"button",12),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),_(16),v(17,"translate"),p()(),I(18,"div",13),c(19,"div",14),w(20,gH,2,4,"i",15),c(21,"button",16),M("click",function(){return j(f),N(n.savePluginConfig(!0))}),w(22,bH,2,3),w(23,EH,1,0,"i",17),p()()()()}i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.saveInProgress),K("aria-label",B(5,13,"form.button_close")),l(3),S(n.loading?7:-1),l(3),S(n.uiLoaded&&n.pluginConfig.length&&n.schema.singular&&n.showSchemaForm?10:-1),l(),S(n.formId?11:-1),l(),S(n.pluginSpinner?12:-1),l(3),b("disabled",n.saveInProgress),l(),q(" ",B(17,15,"form.button_close")," "),l(4),S(n.saveButtonDisabled?-1:20),l(),b("disabled",n.saveInProgress||n.saveButtonDisabled),l(),S(n.saveInProgress?-1:22),l(),S(n.saveInProgress?23:-1))},dependencies:[Qn,Zi,zt,Be],styles:[".manage-plugin-config-external-icons[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;line-height:1;color:#000;opacity:.5;background-color:transparent;border:0}.loading-overlay[_ngcontent-%COMP%]{position:absolute;inset:16px;background-color:#ffffffb3} body.dark-mode .loading-overlay{background-color:#242424b3}.custom-form-action-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child{margin-right:2px}"]})}return e})();var C6=ze(F6(),1);var ef=(()=>{class e{el=x(Uu);constructor(){}ngOnInit(){this.el.nativeElement.querySelectorAll("a").forEach(n=>{n.target="_blank",n.rel="noopener noreferrer"});let i=new C6.EmojiConvertor;this.el.nativeElement.innerHTML=i.replace_colons(this.el.nativeElement.innerHTML)}static \u0275fac=function(i){return new(i||e)};static \u0275dir=vu({type:e,selectors:[["markdown"]]})}return e})();var _H=e=>({link:e});function yH(e,u){if(e&1&&(c(0,"div",5),I(1,"p",10),v(2,"translate"),p()),e&2){let t=h();l(),b("innerHTML",Ye(2,1,"accessories.message_must_use_insecure_mode",eu(4,_H,t.linkInsecure)),de)}}function vH(e,u){e&1&&(c(0,"p"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"plugins.settings.custom.homebridge-gsh.message_account_link_required")))}function BH(e,u){if(e&1){let t=U();c(0,"div",11)(1,"button",13),M("click",function(){j(t);let n=h(2);return N(n.linkAccount())}),_(2),v(3,"translate"),p()()}e&2&&(l(2),q(" ",B(3,1,"plugins.settings.custom.homebridge-gsh.label_link_account")," "))}function xH(e,u){e&1&&(c(0,"div",16)(1,"p",17)(2,"strong"),_(3),v(4,"translate"),p()()()),e&2&&(l(3),H(B(4,1,"plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required")))}function wH(e,u){if(e&1&&(c(0,"div",12),I(1,"i",14),c(2,"h4",15),_(3),v(4,"titlecase"),v(5,"translate"),p(),w(6,xH,5,3,"div",16),p()),e&2){let t=h(2);l(3),Bu(" ",B(4,3,t.linkType)," ",B(5,5,"plugins.settings.custom.homebridge-gsh.label_account_linked")," "),l(3),S(t.justLinked?6:-1)}}function SH(e,u){if(e&1&&I(0,"markdown",18),e&2){let t=h(3);b("data",t.schema.footerDisplay)}}function IH(e,u){if(e&1){let t=U();c(0,"div",16),w(1,SH,1,1,"markdown",18),p(),c(2,"div",19)(3,"app-schema-form",20),Oe("dataChange",function(n){j(t);let f=h(2);return Pe(f.gshConfig,n)||(f.gshConfig=n),N(n)}),p()()}if(e&2){let t=h(2);l(),S(t.schema.footerDisplay?1:-1),l(2),b("configSchema",t.schema),Te("data",t.gshConfig)}}function AH(e,u){if(e&1&&(c(0,"p"),_(1),v(2,"translate"),p(),w(3,vH,3,3,"p"),w(4,BH,4,3,"div",11),w(5,wH,7,7,"div",12),w(6,IH,4,3)),e&2){let t=h();l(),H(B(2,5,"plugins.settings.custom.homebridge-gsh.message_about")),l(2),S(t.gshConfig.token?-1:3),l(),S(t.gshConfig.token?-1:4),l(),S(t.gshConfig.token?5:-1),l(),S(t.gshConfig&&t.gshConfig.token?6:-1)}}function kH(e,u){if(e&1){let t=U();c(0,"button",21),M("click",function(){j(t);let n=h();return N(n.unlinkAccount())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.settings.custom.homebridge-gsh.label_unlink_account")," "))}function $H(e,u){if(e&1){let t=U();c(0,"button",22),M("click",function(){j(t);let n=h();return N(n.saveAndClose())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_save")," "))}var g6=(()=>{class e{$activeModal=x(ve);$api=x(he);$jwtHelper=x(I1);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;schema;pluginConfig;justLinked=!1;gshConfig;linkType;linkInsecure='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';linkDomain="https://homebridge-gsh.iot.oz.nu";linkUrl=`${this.linkDomain}/link-account`;popup;originCheckInterval;constructor(){window.addEventListener("message",this.windowMessageListener,!1)}ngOnInit(){this.pluginConfig.length||this.pluginConfig.push({name:"Google Smart Home",platform:this.schema.pluginAlias}),this.gshConfig=this.pluginConfig[0],this.parseToken()}windowMessageListener=t=>{t.origin!==this.linkDomain&&(console.error("Refusing to process message from",t.origin),console.error(t));try{let i=JSON.parse(t.data);i.token&&this.processToken(i.token)}catch(i){console.error(i)}};linkAccount(){let n=window.top.outerHeight/2+window.top.screenY-350,f=window.top.outerWidth/2+window.top.screenX-450/2;this.popup=window.open(this.linkUrl,"oznu-google-smart-home-auth",`toolbar=no, location=no, directories=no, status=no, menubar=no scrollbars=no, resizable=no, copyhistory=no, width=450, height=700, top=${n}, left=${f}`),this.originCheckInterval=setInterval(()=>{this.popup.postMessage("origin-check",this.linkDomain)},2e3)}unlinkAccount(){this.gshConfig={name:"Google Smart Home",platform:this.schema.pluginAlias},this.pluginConfig.splice(0,this.pluginConfig.length),this.saveConfig()}processToken(t){clearInterval(this.originCheckInterval),this.popup&&this.popup.close(),this.gshConfig.token=t,this.gshConfig.notice="Keep your token a secret!",this.pluginConfig.length||this.pluginConfig.push(this.gshConfig),this.parseToken(),this.saveConfig()}parseToken(){if(this.gshConfig.token)try{let t=this.$jwtHelper.decodeToken(this.gshConfig.token);this.linkType=t.id.split("|")[0].split("-")[0]}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.custom.homebridge-gsh.message_invalid_token"),this.$translate.instant("toast.title_error")),delete this.gshConfig.token}}saveConfig(){return G(this,null,function*(){try{yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig)),this.justLinked=!0,this.$toastr.success(this.$translate.instant("plugins.settings.restart_required"),this.$translate.instant("plugins.settings.plugin_config_saved"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}saveAndClose(){return G(this,null,function*(){this.gshConfig.platform=this.schema.pluginAlias,this.pluginConfig[0]=this.gshConfig,yield this.saveConfig(),this.$activeModal.close()})}close(){this.$activeModal.close()}ngOnDestroy(){clearInterval(this.originCheckInterval),window.removeEventListener("message",this.windowMessageListener),this.popup&&this.popup.close()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["app-homebridge-google-smarthome"]],inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:15,vars:10,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],["role","alert",1,"alert","alert-warning"],[1,"modal-footer"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-auto"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary"],[1,"mb-0",3,"innerHTML"],[1,"text-center"],[1,"text-center","mt-1"],[1,"btn","btn-primary","btn-lg",3,"click"],[1,"fas","fa-fw","fa-check-circle","primary-text",2,"font-size","50px"],[1,"mt-2"],[1,"mt-3"],[1,"primary-text"],[1,"plugin-md",3,"data"],[1,"card","p-2","pt-3","mt-4"],[3,"dataChange","configSchema","data"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant","me-auto",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3,"Homebridge Google Smart Home"),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(6,"div",4),w(7,yH,3,6,"div",5),w(8,AH,7,7),p(),c(9,"div",6),w(10,kH,3,3,"button",7),c(11,"button",8),M("click",function(){return n.close()}),_(12),v(13,"translate"),p(),w(14,$H,3,3,"button",9),p()()),i&2&&(l(4),K("aria-label",B(5,6,"form.button_close")),l(3),S(n.$settings.env.enableAccessories?-1:7),l(),S(n.$settings.env.enableAccessories?8:-1),l(2),S(n.gshConfig.token?10:-1),l(2),q(" ",B(13,8,"form.button_close")," "),l(2),S(n.gshConfig.token?14:-1))},dependencies:[tn,en,ef,Qn,g1,Be],encapsulation:2})}return e})();var b6=(()=>{class e{$api=x(he);$modal=x(it);plugins={"homebridge-gsh":g6};constructor(){}openSettings(t,i){return G(this,null,function*(){let n=yield this.loadPluginConfig(t.name),f=this.$modal.open(this.plugins[t.name],{size:"lg",backdrop:"static"});return f.componentInstance.plugin=t,f.componentInstance.schema=i,f.componentInstance.pluginConfig=n,f.result.catch(()=>{})})}openCustomSettingsUi(t,i){return G(this,null,function*(){let n=yield this.loadPluginConfig(t.name),f=this.$modal.open(m6,{size:"lg",backdrop:"static"});return f.componentInstance.plugin=t,f.componentInstance.schema=i,f.componentInstance.pluginConfig=n,f.result.catch(()=>{})})}loadPluginConfig(t){return G(this,null,function*(){return se(this.$api.get(`/config-editor/plugin/${encodeURIComponent(t)}`))})}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Ot({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var B6=ze(of(),1);var x6=ze(A1(),1),w6=ze(k1(),1);function TH(e,u){e&1&&(c(0,"div",5),I(1,"i",12),p())}function PH(e,u){e&1&&(c(0,"div",15),I(1,"i",16),p(),c(2,"ul",17)(3,"li"),_(4," All your plugins are marked as compatible with the new version of Homebridge. You are all set to continue below. "),p()())}function OH(e,u){e&1&&(c(0,"div",15),I(1,"i",18),p(),c(2,"ul",17)(3,"li"),_(4,"Some of your plugins are not explicitly marked as compatible with the new version of Homebridge."),p(),c(5,"li"),_(6," This does "),c(7,"span",19),_(8,"not"),p(),_(9," necessarily mean that they won't work. We just can't guarantee that they will. "),p(),c(10,"li"),_(11," For more information about this update, please see the "),c(12,"a",20),_(13,"wiki page"),p(),_(14,". "),p(),c(15,"li"),_(16,"To ignore this warning and continue with the update, click continue below."),p()())}function MH(e,u){e&1&&I(0,"i",21)}function jH(e,u){e&1&&I(0,"i",22)}function NH(e,u){if(e&1&&(c(0,"li",14),_(1),w(2,MH,1,0,"i",21),w(3,jH,1,0,"i",22),p()),e&2){let t=u.$implicit;l(),q(" ",t.displayName," "),l(),S(t.hb2Ready==="supported"?2:-1),l(),S(t.hb2Ready==="unknown"?3:-1)}}function qH(e,u){if(e&1&&(w(0,PH,5,0),w(1,OH,17,0),c(2,"ul",13),ft(3,NH,4,3,"li",14,nt),p()),e&2){let t=h();S(t.allPluginsSupported?0:-1),l(),S(t.allPluginsSupported?-1:1),l(2),rt(t.installedPlugins)}}var E6=(()=>{class e{$activeModal=x(ve);$api=x(he);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);loading=!0;installedPlugins=[];allPluginsSupported=!0;constructor(){}ngOnInit(){this.loadInstalledPlugins()}loadInstalledPlugins(){return G(this,null,function*(){this.installedPlugins=[],this.loading=!0;let t=this.$settings.env.homebridgeVersion.split(".")[0];try{let i=yield se(this.$api.get("/plugins"));this.installedPlugins=i.filter(n=>n.name!=="homebridge-config-ui-x").map(n=>{let f=n.engines?.homebridge?.split("||").map(o=>o.trim())||[],r=t==="2"?"hide":f.some(o=>o.startsWith("^2")||o.startsWith(">=2"))?"supported":"unknown";return r==="unknown"&&(this.allPluginsSupported=!1),Se(X({},n),{hb2Ready:r})}),this.installedPlugins.length===0&&this.$activeModal.close("update"),this.loading=!1}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],decls:20,vars:15,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",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[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","flex-row","flex-wrap","justify-content-between"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-check-circle","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"fas","fa-fw","fa-info-circle","primary-text",2,"font-size","75px"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl","ms-2"],["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","ms-2"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3,"Homebridge v2 Update"),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.close("Dismiss")}),p()(),c(6,"div",4),w(7,TH,2,0,"div",5),w(8,qH,5,2),p(),c(9,"div",6)(10,"div",7)(11,"button",8),v(12,"translate"),M("click",function(){return n.$activeModal.close("Dismiss")}),_(13),v(14,"translate"),p()(),I(15,"div",9),c(16,"div",10)(17,"button",11),M("click",function(){return n.$activeModal.close("update")}),_(18),v(19,"translate"),p()()()()),i&2&&(l(4),K("aria-label",B(5,7,"form.button_close")),l(3),S(n.loading?7:-1),l(),S(n.loading?-1:8),l(3),K("aria-label",B(12,9,"form.button_close")),l(2),q(" ",B(14,11,"form.button_close")," "),l(4),b("disabled",n.loading),l(),q(" ",B(19,13,"form.label_continue")," "))},dependencies:[Be],encapsulation:2})}return e})();var _6=ze(of(),1);var VH=["pluginlogoutput"],y6=(()=>{class e{$activeModal=x(ve);$api=x(he);$log=x(O1);$modal=x(it);$toastr=x(_e);$translate=x(Ee);plugin;termTarget=Xu("pluginlogoutput");resizeEvent=new Pt;pluginAlias;constructor(){}onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){this.getPluginLog()}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()}})}downloadLogFile(){let t=this.$modal.open($1,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-fw fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download?colour=yes",{observe:"response",responseType:"text"}).subscribe({next:i=>{if(!i.body)return;let n=i.body.split(`
21
21
  `),f="",r=!1;n.forEach(o=>{if(o){if(r)if(o.match(/36m\[.*?\]/))r=!1;else{f+=`${o.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
22
22
  `;return}o.includes(`36m[${this.pluginAlias}]`)&&(f+=`${o.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
23
23
  `,r=!0)}}),(0,_6.saveAs)(new Blob([f],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`)},error:i=>G(this,null,function*(){let n;try{n=JSON.parse(yield i.error.text()).message}catch(f){console.error(f)}this.$toastr.error(n||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}ngOnDestroy(){this.$log.destroyTerminal()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(i,n){i&1&&Wu(n.termTarget,VH,5),i&2&&Gu()},hostBindings:function(i,n){i&1&&M("resize",function(r){return n.onWindowResize(r)},D1)},inputs:{plugin:"plugin"},decls:20,vars:13,consts:[["pluginlogoutput",""],[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","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"],[1,"text-center"],[1,"text-end"],[1,"btn","btn-primary",3,"click"]],template:function(i,n){if(i&1){let f=U();c(0,"div",1)(1,"div",2)(2,"h5",3),_(3),p(),c(4,"button",4),v(5,"translate"),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),p()(),c(6,"div",5),I(7,"div",6,0),p(),c(9,"div",7)(10,"div",8)(11,"button",9),v(12,"translate"),M("click",function(){return j(f),N(n.$activeModal.dismiss("Dismiss"))}),_(13),v(14,"translate"),p()(),I(15,"div",10),c(16,"div",11)(17,"button",12),M("click",function(){return j(f),N(n.downloadLogFile())}),_(18),v(19,"translate"),p()()()()}i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),K("aria-label",B(5,5,"form.button_close")),l(7),K("aria-label",B(12,7,"form.button_close")),l(2),q(" ",B(14,9,"form.button_close")," "),l(5),H(B(19,11,"form.button_download")))},dependencies:[Be],encapsulation:2})}return e})();var RH=(e,u)=>({pluginName:e,targetVersion:u}),LH=(e,u)=>({iconStar:e,iconThumbsUp:u}),v6=()=>["homebridge","homebridge-config-ui-x"],S6=(e,u,t,i)=>({"fa-arrow-alt-circle-down":e,"fa-code-compare":u,"fa-arrow-alt-circle-up":t,"fa-trash":i});function zH(e,u){e&1&&(c(0,"p",13),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"plugins.settings.restart_required")))}function HH(e,u){e&1&&(c(0,"p",13),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"restart.child_bridges")))}function UH(e,u){if(e&1&&(I(0,"p",12),v(1,"translate"),w(2,zH,3,3,"p",13),w(3,HH,3,3,"p",13)),e&2){let t=h(3);b("innerHTML",Ye(1,3,"plugins.manage.github_support",Ju(6,LH,t.iconStar,t.iconThumbsUp)),de),l(2),S(Xe(9,v6).includes(t.pluginName)||t.childBridges.length===0?2:-1),l(),S(!Xe(10,v6).includes(t.pluginName)&&t.childBridges.length>0?3:-1)}}function WH(e,u){if(e&1&&(c(0,"div",11),I(1,"markdown",14),p()),e&2){let t=h(3);l(),b("data",t.changeLog)}}function GH(e,u){if(e&1&&(c(0,"div",8),I(1,"i",9),p(),c(2,"h5",10),_(3),v(4,"translate"),p(),w(5,UH,4,11),w(6,WH,2,1,"div",11)),e&2){let t=h(2);l(3),q(" ",Ye(4,3,"plugins.manage.thanks_for_updating",Ju(6,RH,t.pluginDisplayName,t.targetVersion))," "),l(2),S(t.isDisabled?-1:5),l(),S(t.changeLog?6:-1)}}function KH(e,u){if(e&1&&(c(0,"div",5),w(1,GH,7,9),p()),e&2){let t=h();l(),S(t.justUpdatedPlugin?1:-1)}}function JH(e,u){if(e&1&&(c(0,"div",6)(1,"div",8),I(2,"i",15),p(),c(3,"ul",16)(4,"li"),_(5),v(6,"translate"),p(),c(7,"li"),_(8),v(9,"translate"),p()(),c(10,"pre",17),_(11),p()()),e&2){let t=h();l(2),b("ngClass",Wi(9,S6,t.action==="Install",t.action==="Update"&&t.installedVersion,t.action==="Update"&&!t.installedVersion,t.action==="Uninstall")),l(3),H(B(6,5,"plugins.manage.online_updates")),l(3),H(B(9,7,"plugins.manage.manual_update_command")),l(3),Bu(`hb-service stop
24
24
  npm install -g `,t.pluginName,"@",t.targetVersion,`
25
25
  hb-service start`)}}function XH(e,u){if(e&1&&(c(0,"span"),_(1),p()),e&2){let t=h(3);l(),q("v",t.installedVersion," \u2192 ")}}function YH(e,u){if(e&1&&_(0),e&2){let t=h(3);q(" ",t.release.name," ")}}function ZH(e,u){if(e&1&&_(0),e&2){let t=h(3);q(" v",t.latestVersion," ")}}function QH(e,u){if(e&1&&(c(0,"h5",8),w(1,XH,2,1,"span"),w(2,YH,1,1),w(3,ZH,1,1),p()),e&2){let t=h(2);l(),S(t.installedVersion?1:-1),l(),S(t.release.name?2:-1),l(),S(t.release.name?-1:3)}}function eU(e,u){if(e&1&&(c(0,"div",5)(1,"div",8),I(2,"i",18),p(),w(3,QH,4,3,"h5",8),c(4,"div",19),I(5,"markdown",14),p()()),e&2){let t=h();l(2),b("ngClass",Wi(3,S6,t.action==="Install"&&!t.installedVersion,t.action==="Install"&&t.installedVersion,t.action==="Update",t.action==="Uninstall")),l(),S(t.release.name||t.latestVersion?3:-1),l(2),b("data",t.release.changelog)}}function tU(e,u){if(e&1){let t=U();c(0,"button",26),v(1,"translate"),M("click",function(){j(t);let n=h(2);return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}e&2&&(K("aria-label",B(1,2,"form.button_close")),l(2),q(" ",B(3,4,"form.button_close")," "))}function uU(e,u){if(e&1){let t=U();c(0,"button",26),v(1,"translate"),M("click",function(){j(t);let n=h(2);return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}e&2&&(K("aria-label",B(1,2,"form.button_close")),l(2),q(" ",B(3,4,"form.button_close")," "))}function iU(e,u){if(e&1){let t=U();c(0,"button",27),M("click",function(){j(t);let n=h(2);return N(n.update())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.button_update")," "))}function nU(e,u){if(e&1){let t=U();c(0,"button",27),M("click",function(){j(t);let n=h(2);return N(!["homebridge","homebridge-config-ui-x"].includes(n.pluginName)&&n.childBridges.length>0?n.onRestartChildBridgeClick():n.onRestartHomebridgeClick())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"menu.tooltip_restart")," "))}function fU(e,u){if(e&1){let t=U();c(0,"button",28),M("click",function(){j(t);let n=h(2);return N(n.downloadLogFile())}),_(1),v(2,"translate"),p()}e&2&&(l(),H(B(2,1,"form.button_download")))}function rU(e,u){if(e&1&&(c(0,"div",7)(1,"div",20),w(2,tU,4,6,"button",21),p(),c(3,"div",22),w(4,uU,4,6,"button",21),p(),c(5,"div",23),w(6,iU,3,3,"button",24),w(7,nU,3,3,"button",24),w(8,fU,3,3,"button",25),p()()),e&2){let t=h();l(2),S(!t.justUpdatedPlugin&&t.onlineUpdateOk||t.justUpdatedPlugin&&(!t.isDisabled||t.actionFailed)?2:-1),l(2),S(t.justUpdatedPlugin&&t.isDisabled&&!t.actionFailed||!t.onlineUpdateOk?4:-1),l(2),S(t.onlineUpdateOk&&t.showReleaseNotes?6:-1),l(),S(t.justUpdatedPlugin&&!t.isDisabled?7:-1),l(),S(t.actionFailed?8:-1)}}var tf=(()=>{class e{$activeModal=x(ve);$api=x(he);$modal=x(it);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);$ws=x(Qi);pluginName;pluginDisplayName;targetVersion="latest";latestVersion;installedVersion;isDisabled;action;actionComplete=!1;actionFailed=!1;showReleaseNotes=!1;justUpdatedPlugin=!1;updateToBeta=!1;changeLog;childBridges=[];release;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>';io;toastSuccess;term=new x6.Terminal;termTarget;fitAddon=new w6.FitAddon;errorLog="";constructor(){this.term.loadAddon(this.fitAddon)}ngOnInit(){switch(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 i=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();i&&(this.errorLog+=`${i}\r
26
- `)}),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,this.getReleaseNotes();break;case"alpha":case"beta":case"test":this.updateToBeta=!0,this.getReleaseNotes();break;default:this.update()}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated");break}}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?installed=${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(uu,{size:"lg",backdrop:"static"})},error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}update(){if(this.showReleaseNotes=!1,!!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*(){try{yield Promise.all([this.getChangeLog(),this.getChildBridges()])}catch(t){console.error(t)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate([this.pluginName==="homebridge-config-ui-x"?"/":"/plugins"])}),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";Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])&&(t=yield this.$modal.open(E6,{size:"lg",backdrop:"static"}).result),t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close();let i=this.$modal.open(uu,{size:"lg",backdrop:"static"});i.componentInstance.fullRestart=!0},error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getChangeLog(){return G(this,null,function*(){let t=yield se(this.$api.get(`/plugins/changelog/${encodeURIComponent(this.pluginName)}`));this.changeLog=t.changelog})}getChildBridges(){return G(this,null,function*(){(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.pluginName===i.plugin&&this.childBridges.push(i)})})}getReleaseNotes(){this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`).subscribe({next:t=>{this.showReleaseNotes=!0,this.release=t},error:()=>{this.onlineUpdateOk&&this.update()}})}onRestartHomebridgeClick(){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"}}):(this.$router.navigate(["/restart"]),this.$activeModal.close())}onRestartChildBridgeClick(){return G(this,null,function*(){try{for(let i of this.childBridges)yield se(this.$api.put(`/server/restart/${i.username}`,{}));let t=this.$modal.open(y6,{size:"xl",backdrop:"static"});t.componentInstance.plugin={name:this.pluginName}}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,B6.saveAs)(t,`${this.pluginName}-error.log`)}ngOnDestroy(){this.io.end()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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:[[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,"alert","p-3","pb-1","mt-3"],[1,"mb-3","text-center","grey-text",3,"innerHTML"],[1,"text-center","mb-0"],[1,"plugin-md",3,"data"],[1,"fas","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0",2,"background-color","#efefef"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"alert","p-3","pb-1","mb-0"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),I(6,"div",4),w(7,KH,2,1,"div",5),w(8,JH,12,14,"div",6),w(9,eU,6,8,"div",5),w(10,rU,9,5,"div",7),p()),i&2&&(l(3),H(n.pluginDisplayName),l(),K("aria-label",B(5,7,"form.button_close")),l(2),b("hidden",!n.onlineUpdateOk||n.actionComplete||n.showReleaseNotes),l(),S(n.actionComplete?7:-1),l(),S(n.onlineUpdateOk?-1:8),l(),S(n.showReleaseNotes&&!n.actionComplete&&n.onlineUpdateOk?9:-1),l(),S(!n.onlineUpdateOk||n.actionComplete||n.showReleaseNotes||n.actionFailed?10:-1))},dependencies:[tn,en,ef,Be,zt],styles:[".plugin-modal-body[_ngcontent-%COMP%]{max-height:60vh;overflow-y:auto;overflow-x:hidden} .plugin-md{text-align:left;font-size:.95rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.4rem;font-weight:300} .plugin-md h2{font-size:1.3rem;font-weight:300} .plugin-md h3{font-size:1.2rem;font-weight:300} .plugin-md h4{font-size:1.1rem;font-weight:300} .plugin-md h5{font-size:1rem;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 I6=ze(ss(),1);function oU(e,u){e&1&&(c(0,"div",5),I(1,"i",12),p())}function aU(e,u){if(e&1&&(I(0,"i",19),c(1,"h6",20),_(2),v(3,"translate"),p(),c(4,"p",20),_(5),v(6,"translate"),c(7,"span",21),_(8),p()()),e&2){let t=h(2);l(2),H(B(3,3,"plugins.manage.select_version")),l(3),q(" ",B(6,5,"plugins.status_installed"),": "),l(3),q("v",t.plugin.installedVersion)}}function sU(e,u){e&1&&(I(0,"i",22),c(1,"h6",20),_(2),v(3,"translate"),p()),e&2&&(l(2),H(B(3,1,"plugins.manage.select_version")))}function DU(e,u){if(e&1){let t=U();c(0,"button",26),M("click",function(){j(t);let n=h().$implicit,f=h(2);return N(f.doInstall(n.version))}),I(1,"i",27),p()}}function lU(e,u){e&1&&(c(0,"button",25),I(1,"i",28),p())}function dU(e,u){if(e&1&&(c(0,"li",14)(1,"span",8),_(2),I(3,"br"),c(4,"small",23),_(5),p()(),w(6,DU,2,0,"button",24)(7,lU,2,0,"button",25),p()),e&2){let t=u.$implicit,i=h(2);l(2),q(" ",t.tag," "),l(3),q("v",t.version),l(),S(i.plugin.installedVersion!==t.version?6:7)}}function cU(e,u){e&1&&_(0," \u2713 ")}function pU(e,u){if(e&1&&(c(0,"option",17),_(1),w(2,cU,1,0),p()),e&2){let t=u.$implicit,i=h(2);b("value",t.version)("selected",i.versionSelect==t.version),l(),q(" v",t.version," "),l(),S(t.version==i.plugin.installedVersion?2:-1)}}function mU(e,u){e&1&&I(0,"i",28)}function FU(e,u){e&1&&I(0,"i",27)}function CU(e,u){if(e&1){let t=U();c(0,"button",29),M("click",function(){j(t);let n=h(2);return N(n.doInstall(n.versionSelect))}),w(1,mU,1,0,"i",28)(2,FU,1,0,"i",27),p()}if(e&2){let t=h(2);b("disabled",t.versionSelect===t.plugin.installedVersion),l(),S(t.versionSelect===t.plugin.installedVersion?1:2)}}function hU(e,u){if(e&1){let t=U();c(0,"div",6),w(1,aU,9,7)(2,sU,4,3),c(3,"ul",13),ft(4,dU,8,3,"li",14,nt),c(6,"li",14)(7,"div",15),_(8),v(9,"translate"),I(10,"br"),c(11,"select",16),Oe("ngModelChange",function(n){j(t);let f=h();return Pe(f.versionSelect,n)||(f.versionSelect=n),N(n)}),ft(12,pU,3,4,"option",17,nt),p()(),w(14,CU,3,2,"button",18),p()()()}if(e&2){let t=h();l(),S(t.plugin.installedVersion?1:2),l(3),rt(t.versionsWithTags),l(4),q(" ",B(9,4,"plugins.manage.all_versions")," "),l(3),Te("ngModel",t.versionSelect),l(),rt(t.versions),l(2),S(t.versionSelect?14:-1)}}var A6=(()=>{class e{$activeModal=x(ve);$api=x(he);$toastr=x(_e);$translate=x(Ee);plugin;loading=!0;versions=[];versionsWithTags=[];versionSelect;constructor(){}ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions()}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:t=>{let i=new Set;for(let[n,f]of Object.entries(t.versions)){this.versions.push({version:n,engines:f.engines||null});let r=Object.keys(t.tags).find(o=>t.tags[o]===n);r&&(this.versionsWithTags.push({version:n,tag:r}),i.add(n))}this.versions.sort((n,f)=>(0,I6.rcompare)(n.version,f.version)),this.versionsWithTags.sort((n,f)=>{let r=["latest","next","beta","alpha"],o=r.includes(n.tag)?r.indexOf(n.tag):999,a=r.includes(f.tag)?r.indexOf(f.tag):999;return o-a}),!this.versions.find(n=>n.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()}})}doInstall(t){this.$activeModal.close({name:this.plugin.name,version:t,engines:this.versions.find(i=>i.version===t).engines,action:this.plugin.installedVersion?"alternate":"install"})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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",3,"disabled"],[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"],["disabled","",1,"btn","btn-primary","m-0","ms-3"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-arrow-alt-circle-down"],[1,"fas","fa-fw","fa-check-circle"],[1,"btn","btn-primary","m-0","ms-3",3,"click","disabled"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(6,"div",4),w(7,oU,2,0,"div",5)(8,hU,15,6,"div",6),p(),c(9,"div",7),I(10,"div",8),c(11,"div",9)(12,"button",10),v(13,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),_(14),v(15,"translate"),p()(),I(16,"div",11),p()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),K("aria-label",B(5,5,"form.button_close")),l(3),S(n.loading?7:8),l(5),K("aria-label",B(13,7,"form.button_close")),l(2),q(" ",B(15,9,"form.button_close")," "))},dependencies:[tu,yi,vi,Xi,vt,Yu,Be],encapsulation:2})}return e})();var k6=ze(Z6(),1);function gU(e,u){e&1&&(c(0,"div",5),I(1,"i",14),p())}function bU(e,u){e&1&&(c(0,"div",6),_(1),v(2,"translate"),v(3,"translate"),p()),e&2&&(l(),Bu(" ",B(2,2,"plugins.settings.message_manual_config_required")," ",B(3,4,"plugins.settings.message_consult_documentation")," "))}function EU(e,u){if(e&1){let t=U();c(0,"button",25),v(1,"translate"),M("click",function(){j(t);let n=h(2).$index,f=h(2);return N(f.removeBlock(n))}),I(2,"i",26),p()}e&2&&b("ngbTooltip",B(1,1,"form.button_delete"))}function _U(e,u){if(e&1&&w(0,EU,3,3,"button",24),e&2){let t=h(3);S(!(t.schema!=null&&t.schema.singular)||t.pluginConfig.length>1?0:-1)}}function yU(e,u){if(e&1){let t=U();c(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),_(4),p(),c(5,"div"),w(6,_U,1,1),c(7,"button",19),v(8,"translate"),M("click",function(){let n=j(t).$index,f=h(2);return N(f.editBlock(n))}),I(9,"i",20),p()()()(),c(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),Oe("ngModelChange",function(n){j(t);let f=h(2);return Pe(f.currentBlock,n)||(f.currentBlock=n),N(n)}),M("onInit",function(n){j(t);let f=h(2);return N(f.onEditorInit(n))}),p()()()()}if(e&2){let t=u.$implicit,i=u.$index,n=h(2);b("ngbAccordionItem","configBlock."+i)("collapsed",n.show!=="configBlock."+i)("id","configBlock."+i),l(4),H(t.name||n.pluginAlias),l(2),S(n.show==="configBlock."+i?6:-1),l(),b("ngbTooltip",B(8,8,"form.button_edit")),l(5),b("options",n.editorOptions),Te("ngModel",n.currentBlock)}}function vU(e,u){if(e&1&&(c(0,"div",7),ft(1,yU,13,10,"div",15,nt),p()),e&2){let t=h();b("closeOthers",!0),l(),rt(t.pluginConfig)}}function BU(e,u){if(e&1){let t=U();c(0,"button",30),M("click",function(){j(t);let n=h(2);return N(n.addBlock())}),I(1,"i",31),p()}}function xU(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"form.button_save")," ")}function wU(e,u){e&1&&I(0,"i",29)}function SU(e,u){if(e&1){let t=U();w(0,BU,2,0,"button",27),c(1,"button",28),M("click",function(){j(t);let n=h();return N(n.save())}),w(2,xU,2,3),w(3,wU,1,0,"i",29),p()}if(e&2){let t=h();S(t.schema!=null&&t.schema.singular?-1:0),l(),b("disabled",t.saveInProgress),l(),S(t.saveInProgress?-1:2),l(),S(t.saveInProgress?3:-1)}}function IU(e,u){if(e&1){let t=U();c(0,"button",32),M("click",function(){j(t);let n=h();return N(n.openFullConfigEditor())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.settings.label_open_config_editor")," "))}var Jl=(()=>{class e{$activeModal=x(ve);$api=x(he);$md=x(T1);$modal=x(it);$plugin=x(bi);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;constructor(){}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()})}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())})}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)}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let t=this.monacoEditor.getModel().getValue().trim(),i;t.charAt(0)==='"'&&t.charAt(t.length-1)==="]"&&(t=`{${t}}`);try{i=k6.default.parse(t)}catch(f){return console.error(f),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(i)||typeof i!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!i[this.pluginType]&&Array.isArray(i[this.arrayKey])&&i[this.arrayKey].length&&Object.keys(i).length===1&&(i=i[this.arrayKey][0]),this.pluginType==="accessory"&&(!i.name||typeof i.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),i.name="",this.monacoEditor.getModel().setValue(JSON.stringify(i,null,4)),!1;let n=this.pluginConfig[this.currentBlockIndex];Object.keys(n).forEach(f=>delete n[f]),Object.assign(n,i),n[this.pluginType]=this.pluginAlias}return!0}editBlock(t){this.saveCurrentBlock()&&(this.show=`configBlock.${t}`,this.currentBlockIndex=t,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(t){let i=this.pluginConfig[t],n=this.pluginConfig.findIndex(f=>f===i);n>-1&&this.pluginConfig.splice(n,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 se(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 i=this.$modal.open(un,{size:"lg",backdrop:"static"});i.componentInstance.bridges=this.childBridges.map(n=>({name:n.name,username:n.username}));return}this.$activeModal.close(),this.$modal.open(uu,{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()}getChildBridges(){return G(this,null,function*(){try{(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.plugin.name===i.plugin&&this.childBridges.push(i)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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","openDelay","150","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","ngbTooltip"],[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","openDelay","150","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"ngbTooltip"],["container","modal","openDelay","150","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"click","ngbTooltip"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.close()}),p()(),c(6,"div",4),w(7,gU,2,0,"div",5),w(8,bU,4,6,"div",6),w(9,vU,3,1,"div",7),p(),c(10,"div",8)(11,"div",9)(12,"button",10),M("click",function(){return n.$activeModal.close()}),_(13),v(14,"translate"),p()(),I(15,"div",11),c(16,"div",12),w(17,SU,4,4),w(18,IU,3,3,"button",13),p()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.saveInProgress),K("aria-label",B(5,10,"form.button_close")),l(3),S(n.loading?7:-1),l(),S(!n.loading&&!n.canConfigure?8:-1),l(),S(!n.loading&&n.canConfigure?9:-1),l(3),b("disabled",n.saveInProgress),l(),q(" ",B(14,12,"form.button_close")," "),l(4),S(n.canConfigure?17:-1),l(),S(n.canConfigure?-1:18))},dependencies:[Xr,Jr,Kr,Zi,Wr,Ur,S1,tu,vt,Yu,Be,Gr],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 $6=e=>({link:e}),AU=(e,u)=>({"green-text":e,"grey-text":u});function kU(e,u){if(e&1){let t=U();c(0,"button",13),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),K("aria-label",B(1,2,"form.button_close"))}}function $U(e,u){e&1&&(c(0,"div",5),I(1,"i",14),p())}function TU(e,u){e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"child_bridge.bridges_paired_2")))}function PU(e,u){e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2&&(l(),q("",B(2,1,"child_bridge.select_type"),":"))}function OU(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p(),w(3,TU,3,3,"li"),w(4,PU,3,3,"li")),e&2){let t=h(2);l(),H(B(2,3,"child_bridge.bridges_paired")),l(2),S(t.configBlocks.length===1&&!t.deviceInfo[t.configBlocks[0]._bridge==null?null:t.configBlocks[0]._bridge.username]&&t.originalBridges.length===0?3:-1),l(),S(t.canConfigure?4:-1)}}function MU(e,u){if(e&1&&(c(0,"option",29),_(1),p()),e&2){let t=u.$implicit,i=u.$index;b("value",i),l(),H(t.name||t.platform||t.accessory)}}function jU(e,u){if(e&1){let t=U();c(0,"li",25),_(1),v(2,"translate"),p(),c(3,"li",23)(4,"label",26),_(5),v(6,"translate"),p(),c(7,"div",27)(8,"select",28),Oe("ngModelChange",function(n){j(t);let f=h(3);return Pe(f.selectedBlock,n)||(f.selectedBlock=n),N(n)}),M("change",function(n){j(t);let f=h(3);return N(f.onBlockChange(n.target.value))}),ft(9,MU,2,2,"option",29,nt),p()()()}if(e&2){let t=h(3);l(),H(B(2,3,"form.label.changes_kept")),l(4),q(" ",B(6,5,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),l(3),Te("ngModel",t.selectedBlock),l(),rt(t.configBlocks)}}function NU(e,u){if(e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",31),_(5),p()()),e&2){let t=h(3);l(2),q(" ",B(3,2,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),l(3),q(" ",t.configBlocks[t.selectedBlock].name||t.configBlocks[t.selectedBlock].platform||t.configBlocks[t.selectedBlock].accessory," ")}}function qU(e,u){e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",32),_(5),v(6,"translate"),p()()),e&2&&(l(2),H(B(3,2,"child_bridge.config.use")),l(3),q(" ",B(6,4,"child_bridge.config.prevent")," "))}function VU(e,u){if(e&1&&(c(0,"option",29),_(1),p()),e&2){let t=u.$implicit;b("value",t.username),l(),Bu("",t.name," (",t.username,")")}}function RU(e,u){if(e&1){let t=U();c(0,"li",23)(1,"label",37),_(2),v(3,"translate"),p(),c(4,"div",27)(5,"select",38),M("change",function(n){j(t);let f=h(4);return N(f.onLinkBridgeChange(n.target.value))}),c(6,"option",29),_(7),v(8,"translate"),p(),ft(9,VU,2,3,"option",29,nt),p()()()}if(e&2){let t=h(4);l(2),H(B(3,2,"child_bridge.config.or_link")),l(5),H(B(8,4,"child_bridge.config.select_existing")),l(2),rt(t.bridgesAvailableForLink)}}function LU(e,u){if(e&1){let t=U();c(0,"li",33)(1,"span",7),_(2),v(3,"translate"),p(),c(4,"div",34)(5,"input",35),M("change",function(){j(t);let n=h(3);return N(n.toggleExternalBridge(n.configBlocks[n.selectedBlock],n.enabledBlocks[n.selectedBlock],n.selectedBlock))}),Oe("ngModelChange",function(n){j(t);let f=h(3);return Pe(f.enabledBlocks[f.selectedBlock],n)||(f.enabledBlocks[f.selectedBlock]=n),N(n)}),p(),I(6,"label",36),p()(),w(7,RU,11,6,"li",23)}if(e&2){let t=h(3);l(2),H(B(3,5,"child_bridge.config.use")),l(3),b("id","toggleExternalBridgeInput_"+t.selectedBlock),Te("ngModel",t.enabledBlocks[t.selectedBlock]),l(),b("for","toggleExternalBridgeInput_"+t.selectedBlock),l(),S(!(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)&&t.bridgesAvailableForLink.length?7:-1)}}function zU(e,u){if(e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",31),_(5),p()(),c(6,"li",23)(7,"label",30),_(8),v(9,"translate"),p(),c(10,"div",31),_(11),p()(),c(12,"li",23)(13,"label",30),_(14),v(15,"translate"),p(),c(16,"div",31),_(17),p()()),e&2){let t=h(3);l(2),H(B(3,6,"accessories.bridge_link_username")),l(3),q(" ",t.currentlySelectedLink.username," "),l(3),H(B(9,8,"accessories.bridge_link_port")),l(3),q(" ",t.currentlySelectedLink.port," "),l(3),H(B(15,10,"accessories.bridge_link_name")),l(3),q(" ",t.currentlySelectedLink.name," ")}}function HU(e,u){e&1&&(c(0,"span"),_(1),v(2,"translate"),p()),e&2&&(l(),q(" \xB7 ",B(2,1,"status.code_scan")," "))}function UU(e,u){if(e&1){let t=U();c(0,"li",33)(1,"span",7),_(2),v(3,"translate"),c(4,"code"),_(5,"-D"),p()(),c(6,"div",34)(7,"input",51),v(8,"translate"),Oe("ngModelChange",function(n){j(t);let f=h(5);return Pe(f.configBlocks[f.selectedBlock]._bridge.debugModeEnabled,n)||(f.configBlocks[f.selectedBlock]._bridge.debugModeEnabled=n),N(n)}),p(),I(9,"label",36),p()()}if(e&2){let t=h(5);l(2),q("",B(3,5,"child_bridge.config.debug")," "),l(5),b("id","homebridgeDebugMode_"+t.selectedBlock),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.debugModeEnabled),K("aria-label",B(8,7,"settings.startup.debug")),l(2),b("for","homebridgeDebugMode_"+t.selectedBlock)}}function WU(e,u){if(e&1){let t=U();c(0,"li",39)(1,"div",40),I(2,"app-qrcode",41),c(3,"p",42),_(4),p(),c(5,"p",43),I(6,"i",44),_(7),v(8,"translate"),w(9,HU,3,3,"span"),p()()(),c(10,"li",23)(11,"label",30),_(12),v(13,"translate"),p(),c(14,"div",31),_(15),p()(),c(16,"li",23)(17,"label",30),_(18),v(19,"translate"),p(),c(20,"div",31),_(21),p()(),c(22,"li",23)(23,"label",30),_(24),v(25,"translate"),p(),c(26,"div",27)(27,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.name,n)||(f.configBlocks[f.selectedBlock]._bridge.name=n),N(n)}),p()()(),c(28,"li",23)(29,"label",30),_(30),v(31,"translate"),p(),c(32,"div",27)(33,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.manufacturer,n)||(f.configBlocks[f.selectedBlock]._bridge.manufacturer=n),N(n)}),p()()(),c(34,"li",23)(35,"label",30),_(36),v(37,"translate"),p(),c(38,"div",27)(39,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.model,n)||(f.configBlocks[f.selectedBlock]._bridge.model=n),N(n)}),p()()(),c(40,"li",23)(41,"label",30),_(42),v(43,"translate"),p(),c(44,"div",27)(45,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.firmwareRevision,n)||(f.configBlocks[f.selectedBlock]._bridge.firmwareRevision=n),N(n)}),p()()(),w(46,UU,10,9,"li",33),c(47,"li",23)(48,"label",30)(49,"span",46),_(50,"DEBUG"),p(),I(51,"br")(52,"small",47),v(53,"translate"),p(),c(54,"div",27)(55,"input",48),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.env.DEBUG,n)||(f.configBlocks[f.selectedBlock]._bridge.env.DEBUG=n),N(n)}),p()()(),c(56,"li",23)(57,"label",30)(58,"span",46),_(59,"NODE_OPTIONS"),p(),I(60,"br"),c(61,"small",49),_(62),v(63,"translate"),p()(),c(64,"div",27)(65,"input",50),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.env.NODE_OPTIONS,n)||(f.configBlocks[f.selectedBlock]._bridge.env.NODE_OPTIONS=n),N(n)}),p()()()}if(e&2){let t=h(4);l(2),b("data",t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._setupCode),l(2),H(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username].pincode),l(2),b("ngClass",Ju(41,AU,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)),l(),q(" ",B(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")," "),l(2),S(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?-1:9),l(3),H(B(13,24,"accessories.bridge_username")),l(3),q(" ",t.configBlocks[t.selectedBlock]._bridge.username," "),l(3),H(B(19,26,"accessories.bridge_port")),l(3),q(" ",t.configBlocks[t.selectedBlock]._bridge.port," "),l(3),H(B(25,28,"child_bridge.config.name")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.name),l(3),H(B(31,30,"child_bridge.config.manufacturer")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.manufacturer),l(3),H(B(37,32,"child_bridge.config.model")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.model),l(3),H(B(43,34,"child_bridge.config.firmware")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.firmwareRevision),l(),S(t.canShowBridgeDebug?46:-1),l(6),b("innerHTML",Ye(53,36,"settings.service.debug_tooltip",eu(44,$6,t.linkDebug)),de),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.DEBUG),l(7),H(B(63,39,"settings.service.node_tooltip")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.NODE_OPTIONS)}}function GU(e,u){if(e&1&&w(0,WU,66,46),e&2){let t=h(3);S(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]?0:-1)}}function KU(e,u){e&1&&(c(0,"ngb-alert",24),_(1),v(2,"translate"),I(3,"br"),_(4),v(5,"translate"),p()),e&2&&(b("dismissible",!1),l(),q(" ",B(2,3,"child_bridge.restart_homebridge")," "),l(3),q("",B(5,5,"child_bridge.return_to_pair")," "))}function JU(e,u){if(e&1&&(c(0,"ul",22),w(1,jU,11,7),w(2,NU,6,4,"li",23),w(3,qU,7,6,"li",23),w(4,LU,8,7),w(5,zU,18,12),w(6,GU,1,1),p(),w(7,KU,6,7,"ngb-alert",24)),e&2){let t=h(2);l(),S(t.configBlocks.length>1?1:-1),l(),S(t.configBlocks.length===1?2:-1),l(),S(t.currentBridgeHasLinks?3:-1),l(),S(t.currentBridgeHasLinks?-1:4),l(),S(t.currentlySelectedLink?5:-1),l(),S(!t.currentlySelectedLink&&(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)?6:-1),l(),S(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 XU(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"child_bridge.confirm_delete_2")," ")}function YU(e,u){if(e&1&&(c(0,"li"),_(1),c(2,"span",46),_(3),p(),_(4,") "),p()),e&2){let t=u.$implicit,i=h(3);l(),q(" ",t.bridgeName||(i.deviceInfo[t.id]==null?null:i.deviceInfo[t.id].displayName)," ("),l(2),H(t.id)}}function ZU(e,u){if(e&1&&(c(0,"ngb-alert",19)(1,"p"),_(2),v(3,"translate"),w(4,XU,2,3),p(),c(5,"div",9)(6,"ul",52),ft(7,YU,5,2,"li",null,nt),p()()()),e&2){let t=h(2);b("dismissible",!1),l(2),q(" ",B(3,3,"child_bridge.confirm_delete_1")," "),l(2),S(t.deletingPairedBridge?4:-1),l(3),rt(t.deleteBridges)}}function QU(e,u){e&1&&(c(0,"ngb-alert",20),_(1),v(2,"translate"),p()),e&2&&(b("dismissible",!1),l(),q(" ",B(2,2,"child_bridge.must_configure_plugin")," "))}function eW(e,u){if(e&1){let t=U();c(0,"ngb-alert",21)(1,"div",17),_(2),v(3,"translate"),v(4,"translate"),p(),c(5,"button",53),M("click",function(){j(t);let n=h(2);return N(n.openFullConfigEditor())}),_(6),v(7,"translate"),p()()}e&2&&(b("dismissible",!1),l(2),Bu(" ",B(3,4,"plugins.settings.message_manual_config_required")," ",B(4,6,"plugins.settings.message_consult_documentation")," "),l(4),q(" ",B(7,8,"plugins.settings.label_open_config_editor")," "))}function tW(e,u){if(e&1&&(c(0,"div",15),I(1,"i",16),p(),c(2,"ul",17),I(3,"li",18),v(4,"translate"),w(5,OU,5,5),p(),w(6,JU,8,7),w(7,ZU,9,5,"ngb-alert",19),w(8,QU,3,4,"ngb-alert",20),w(9,eW,8,10,"ngb-alert",21)),e&2){let t=h();l(3),b("innerHTML",Ye(4,6,"child_bridge.about",eu(9,$6,t.linkChildBridges)),de),l(2),S(t.configBlocks.length?5:-1),l(),S(t.canConfigure&&t.configBlocks.length?6:-1),l(),S(t.deleteBridges.length?7:-1),l(),S(!t.configBlocks.length&&t.canConfigure?8:-1),l(),S(t.canConfigure?-1:9)}}function uW(e,u){if(e&1){let t=U();c(0,"button",54),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),_(1),v(2,"translate"),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),l(),q(" ",B(2,2,"form.button_close")," ")}}function iW(e,u){e&1&&I(0,"i",56)}function nW(e,u){if(e&1){let t=U();c(0,"button",55),M("click",function(){j(t);let n=h();return N(n.save())}),_(1),v(2,"translate"),w(3,iW,1,0,"i",56),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),l(),q(" ",B(2,3,"form.button_save")," "),l(2),S(t.saveInProgress?3:-1)}}function fW(e,u){if(e&1){let t=U();c(0,"button",57),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function rW(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"form.button_save")," ")}function oW(e,u){e&1&&I(0,"i",56)}function aW(e,u){if(e&1){let t=U();c(0,"button",55),M("click",function(){j(t);let n=h(2);return N(n.save())}),w(1,rW,2,3),w(2,oW,1,0,"i",56),p()}if(e&2){let t=h(2);b("disabled",t.saveInProgress||t.loading),l(),S(t.saveInProgress?-1:1),l(),S(t.saveInProgress?2:-1)}}function sW(e,u){if(e&1){let t=U();c(0,"button",59),M("click",function(){j(t);let n=h(2);return N(n.openPluginConfig())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.button_settings")," "))}function DW(e,u){if(e&1&&(w(0,aW,3,3,"button",10),w(1,sW,3,3,"button",58)),e&2){let t=h();S(t.configBlocks.length?0:-1),l(),S(t.configBlocks.length?-1:1)}}var T6=(()=>{class e{$activeModal=x(ve);$api=x(he);$modal=x(it);$plugins=x(bi);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);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>';constructor(){}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(i=>i.index===t)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(i=>i.usesIndex===t),this.bridgesAvailableForLink=[],this.configBlocks[Number(t)].accessory)for(let[i,n]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(f=>f.id===n.username)||i<Number(t)&&this.bridgesAvailableForLink.push({index:i.toString(),usesIndex:t,name:n.name,port:n.port,username:n.username})}onLinkBridgeChange(t){if(t){let i=this.configBlocks.findIndex(f=>f._bridge?.username===t);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:i.toString(),name:this.bridgeCache.get(i)?.name,port:this.bridgeCache.get(i)?.port,username:t}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(f=>f.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let n=this.configBlocks[Number(this.selectedBlock)];n._bridge={username:t}}}getPluginType(){return G(this,null,function*(){try{let t=yield se(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 se(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[i,n]of this.configBlocks.entries())if(n._bridge&&n._bridge.username){this.enabledBlocks[i]=!0;let f=Array.from(this.bridgeCache.values()).findIndex(o=>o.username===n._bridge.username),r=f!==-1?Array.from(this.bridgeCache.values())[f]:void 0;r?(n._bridge.env={},this.accessoryBridgeLinks.push({index:i.toString(),usesIndex:f.toString(),name:r.name,port:r.port,username:n._bridge.username})):(n._bridge.env=n._bridge.env||{},this.bridgeCache.set(i,n._bridge),yield this.getDeviceInfo(n._bridge.username),n._bridge.name||(n._bridge.name=this.deviceInfo[n._bridge.username]?.displayName),this.originalBridges.push(n._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((i,n)=>{this.enabledBlocks[n]=!0,this.toggleExternalBridge(i,!0,n.toString())}),this.accessoryBridgeLinks.find(i=>i.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(t){this.canConfigure=!1,console.error(t)}})}toggleExternalBridge(t,i,n){return G(this,null,function*(){if(i){let f=this.bridgeCache.get(Number(n));t._bridge={username:f?f.username:this.generateUsername(),port:yield this.getUnusedPort(),name:f?.name,model:f?.model,manufacturer:f?.manufacturer,firmwareRevision:f?.firmwareRevision,debugModeEnabled:f?.debugModeEnabled,env:f?.env},this.deleteBridges.some(r=>r.id===t._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(r=>r.id!==t._bridge.username)),this.bridgeCache.set(Number(n),t._bridge),yield this.getDeviceInfo(t._bridge.username)}else{if(this.accessoryBridgeLinks.some(f=>f.index===n))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(f=>f.index!==n),this.currentlySelectedLink=null;else{let f=this.originalBridges.find(r=>r.username===t._bridge.username);f&&this.deleteBridges.push({id:t._bridge.username,bridgeName:t._bridge.name||f.displayName,paired:this.deviceInfo[t._bridge.username]?._isPaired})}delete t._bridge}this.deletingPairedBridge=this.deleteBridges.some(f=>f.paired)})}getUnusedPort(){return G(this,null,function*(){this.saveInProgress=!0;try{return(yield se(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 se(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(i){console.error(i),this.deviceInfo[t]=!1}})}save(){return G(this,null,function*(){this.saveInProgress=!0;try{yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let t of this.deleteBridges)try{yield se(this.$api.delete(`/server/pairings/${t.id.replace(/:/g,"")}`))}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(uu,{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.$plugins.settings({name:this.plugin.name,settingsSchema:!0,links:{}})}generateUsername(){let t="0123456789ABCDEF",i="0E:";for(let n=0;n<5;n++)i+=t.charAt(Math.round(Math.random()*15)),i+=t.charAt(Math.round(Math.random()*15)),n!==4&&(i+=":");return i}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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"],["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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),w(4,kU,2,4,"button",3),p(),c(5,"div",4),w(6,$U,2,0,"div",5),w(7,tW,10,11),p(),c(8,"div",6)(9,"div",7),w(10,uW,3,4,"button",8),p(),c(11,"div",9),w(12,nW,4,5,"button",10),w(13,fW,3,3,"button",11),p(),c(14,"div",12),w(15,DW,2,2),p()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),S(n.justInstalled?-1:4),l(2),S(n.loading?6:-1),l(),S(n.loading?-1:7),l(3),S(n.canConfigure&&!n.justInstalled?10:-1),l(2),S(n.justInstalled?12:-1),l(),S(n.canConfigure?-1:13),l(2),S(n.canConfigure&&!n.justInstalled?15:-1))},dependencies:[tu,yi,vi,Ki,Gi,Xi,vt,Yu,Yi,P1,zt,Be],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 Xl=ze(ss(),1);var ts=()=>["homebridge","homebridge-config-ui-x"],P6=(e,u,t)=>({pluginName:e,minVersion:u,installedVersion:t}),lW=(e,u,t)=>({minVersion:e,installedVersion:u,latestVersion:t,packageName:"Homebridge"}),dW=()=>({packageName:"Homebridge"}),cW=(e,u,t)=>({minVersion:e,installedVersion:u,latestVersion:t,packageName:"Homebridge UI"}),pW=()=>({packageName:"Homebridge UI"});function mW(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2){let t=h(2);l(),q(" ",Ye(2,1,"plugins.compat.node_too_low",xu(4,P6,t.plugin.displayName,t.nodeMinVersion,t.nodeInstalledVersion))," ")}}function FW(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2){let t=h(2);l(),q(" ",Ye(2,1,"plugins.compat.hb_too_low",xu(4,P6,t.plugin.name,t.hbMinVersion,t.hbInstalledVersion))," ")}}function CW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",12),p(),c(2,"ul",13),w(3,mW,3,8,"li"),w(4,FW,3,8,"li"),p(),c(5,"ngb-alert",14)(6,"p",15),_(7),v(8,"translate"),p()()),e&2){let t=h();l(),Z(F1("",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")),l(2),S(t.isValidNode?-1:3),l(),S(t.isValidHb?-1:4),l(),b("dismissible",!1),l(2),H(B(8,7,"plugins.compat.are_you_sure"))}}function hW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",16),p(),c(2,"ul",13)(3,"li"),_(4),v(5,"translate"),p()(),c(6,"ngb-alert",14)(7,"p",17),_(8),v(9,"translate"),p(),c(10,"p",15)(11,"a",18),_(12),v(13,"translate"),I(14,"i",19),p()()()),e&2){let t=h();l(4),q(" ",Ye(5,4,"plugins.compat.hb_node_too_low",xu(12,lW,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),l(2),b("dismissible",!1),l(2),H(Ye(9,7,"plugins.compat.node_first",Xe(16,dW))),l(4),q(" ",B(13,10,"plugins.compat.node_link")," ")}}function gW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",16),p(),c(2,"ul",13)(3,"li"),_(4),v(5,"translate"),p()(),c(6,"ngb-alert",14)(7,"p",17),_(8),v(9,"translate"),p(),c(10,"p",15)(11,"a",18),_(12),v(13,"translate"),I(14,"i",19),p()()()),e&2){let t=h();l(4),q(" ",Ye(5,4,"plugins.compat.hb_node_too_low",xu(12,cW,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),l(2),b("dismissible",!1),l(2),H(Ye(9,7,"plugins.compat.node_first",Xe(16,pW))),l(4),q(" ",B(13,10,"plugins.compat.node_link")," ")}}function bW(e,u){if(e&1){let t=U();c(0,"button",20),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function EW(e,u){if(e&1){let t=U();c(0,"button",20),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function _W(e,u){if(e&1){let t=U();c(0,"button",21),M("click",function(){j(t);let n=h();return N(n.$activeModal.close(!0))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.node_update.continue")," "))}var O6=(()=>{class e{$activeModal=x(ve);$settings=x(Ve);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;constructor(){}ngOnInit(){this.nodeMinVersion=(0,Xl.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Xl.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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,"mb-3"],["type","warning",1,"mb-0",3,"dismissible"],[1,"text-center","mb-0"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),v(4,"translate"),p(),c(5,"button",3),v(6,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(7,"div",4),w(8,CW,9,9),w(9,hW,15,17),w(10,gW,15,17),p(),c(11,"div",5)(12,"div",6),w(13,bW,3,3,"button",7),p(),c(14,"div",8),w(15,EW,3,3,"button",7),p(),c(16,"div",9),w(17,_W,3,3,"button",10),p()()()),i&2&&(l(3),H(B(4,8,"plugins.compat.title")),l(2),K("aria-label",B(6,10,"form.button_close")),l(3),S(Xe(12,ts).includes(n.plugin.name)?-1:8),l(),S(n.plugin.name==="homebridge"?9:-1),l(),S(n.plugin.name==="homebridge-config-ui-x"?10:-1),l(3),S(Xe(13,ts).includes(n.plugin.name)?-1:13),l(2),S(Xe(14,ts).includes(n.plugin.name)?15:-1),l(2),S(Xe(15,ts).includes(n.plugin.name)?-1:17))},dependencies:[Be,Yi],encapsulation:2})}return e})();var Dt=[];for(let e=0;e<256;++e)Dt.push((e+256).toString(16).slice(1));function M6(e,u=0){return(Dt[e[u+0]]+Dt[e[u+1]]+Dt[e[u+2]]+Dt[e[u+3]]+"-"+Dt[e[u+4]]+Dt[e[u+5]]+"-"+Dt[e[u+6]]+Dt[e[u+7]]+"-"+Dt[e[u+8]]+Dt[e[u+9]]+"-"+Dt[e[u+10]]+Dt[e[u+11]]+Dt[e[u+12]]+Dt[e[u+13]]+Dt[e[u+14]]+Dt[e[u+15]]).toLowerCase()}var Yl,yW=new Uint8Array(16);function Zl(){if(!Yl){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Yl=crypto.getRandomValues.bind(crypto)}return Yl(yW)}var vW=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Ql={randomUUID:vW};function BW(e,u,t){if(Ql.randomUUID&&!u&&!e)return Ql.randomUUID();e=e||{};let i=e.random??e.rng?.()??Zl();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,u){if(t=t||0,t<0||t+16>u.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let n=0;n<16;++n)u[t+n]=i[n];return u}return M6(i)}var us=BW;var j6=ze(of(),1);var N6=(()=>{class e{$api=x(he);$toastr=x(_e);$translate=x(Ee);constructor(){}downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,j6.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(i){return new(i||e)};static \u0275cmp=Y({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(i,n){i&1&&(c(0,"button",0),M("click",function(){return n.downloadDumpFile()}),I(1,"i",1),_(2,` Download Dump File
26
+ `)}),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,this.getReleaseNotes();break;case"alpha":case"beta":case"test":this.updateToBeta=!0,this.getReleaseNotes();break;default:this.update()}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated");break}}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?installed=${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(uu,{size:"lg",backdrop:"static"})},error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}update(){if(this.showReleaseNotes=!1,!!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*(){try{yield Promise.all([this.getChangeLog(),this.getChildBridges()])}catch(t){console.error(t)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate([this.pluginName==="homebridge-config-ui-x"?"/":"/plugins"])}),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";Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])&&(t=yield this.$modal.open(E6,{size:"lg",backdrop:"static"}).result),t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close();let i=this.$modal.open(uu,{size:"lg",backdrop:"static"});i.componentInstance.fullRestart=!0},error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getChangeLog(){return G(this,null,function*(){let t=yield se(this.$api.get(`/plugins/changelog/${encodeURIComponent(this.pluginName)}`));this.changeLog=t.changelog})}getChildBridges(){return G(this,null,function*(){(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.pluginName===i.plugin&&this.childBridges.push(i)})})}getReleaseNotes(){this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`).subscribe({next:t=>{this.showReleaseNotes=!0,this.release=t},error:()=>{this.onlineUpdateOk&&this.update()}})}onRestartHomebridgeClick(){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"}}):(this.$router.navigate(["/restart"]),this.$activeModal.close())}onRestartChildBridgeClick(){return G(this,null,function*(){try{for(let i of this.childBridges)yield se(this.$api.put(`/server/restart/${i.username}`,{}));let t=this.$modal.open(y6,{size:"xl",backdrop:"static"});t.componentInstance.plugin={name:this.pluginName}}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,B6.saveAs)(t,`${this.pluginName}-error.log`)}ngOnDestroy(){this.io.end()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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:[[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,"alert","p-3","pb-1","mt-3"],[1,"mb-3","text-center","grey-text",3,"innerHTML"],[1,"text-center","mb-0"],[1,"plugin-md",3,"data"],[1,"fas","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0",2,"background-color","#efefef"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"alert","p-3","pb-1","mb-0"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),I(6,"div",4),w(7,KH,2,1,"div",5),w(8,JH,12,14,"div",6),w(9,eU,6,8,"div",5),w(10,rU,9,5,"div",7),p()),i&2&&(l(3),H(n.pluginDisplayName),l(),K("aria-label",B(5,7,"form.button_close")),l(2),b("hidden",!n.onlineUpdateOk||n.actionComplete||n.showReleaseNotes),l(),S(n.actionComplete?7:-1),l(),S(n.onlineUpdateOk?-1:8),l(),S(n.showReleaseNotes&&!n.actionComplete&&n.onlineUpdateOk?9:-1),l(),S(!n.onlineUpdateOk||n.actionComplete||n.showReleaseNotes||n.actionFailed?10:-1))},dependencies:[tn,en,ef,Be,zt],styles:[".plugin-modal-body[_ngcontent-%COMP%]{max-height:60vh;overflow-y:auto;overflow-x:hidden} .plugin-md{text-align:left;font-size:.95rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.4rem;font-weight:300} .plugin-md h2{font-size:1.3rem;font-weight:300} .plugin-md h3{font-size:1.2rem;font-weight:300} .plugin-md h4{font-size:1.1rem;font-weight:300} .plugin-md h5{font-size:1rem;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 I6=ze(ss(),1);function oU(e,u){e&1&&(c(0,"div",5),I(1,"i",12),p())}function aU(e,u){if(e&1&&(I(0,"i",19),c(1,"h6",20),_(2),v(3,"translate"),p(),c(4,"p",20),_(5),v(6,"translate"),c(7,"span",21),_(8),p()()),e&2){let t=h(2);l(2),H(B(3,3,"plugins.manage.select_version")),l(3),q(" ",B(6,5,"plugins.status_installed"),": "),l(3),q("v",t.plugin.installedVersion)}}function sU(e,u){e&1&&(I(0,"i",22),c(1,"h6",20),_(2),v(3,"translate"),p()),e&2&&(l(2),H(B(3,1,"plugins.manage.select_version")))}function DU(e,u){if(e&1){let t=U();c(0,"button",26),M("click",function(){j(t);let n=h().$implicit,f=h(2);return N(f.doInstall(n.version))}),I(1,"i",27),p()}}function lU(e,u){e&1&&(c(0,"button",25),I(1,"i",28),p())}function dU(e,u){if(e&1&&(c(0,"li",14)(1,"span",8),_(2),I(3,"br"),c(4,"small",23),_(5),p()(),w(6,DU,2,0,"button",24)(7,lU,2,0,"button",25),p()),e&2){let t=u.$implicit,i=h(2);l(2),q(" ",t.tag," "),l(3),q("v",t.version),l(),S(i.plugin.installedVersion!==t.version?6:7)}}function cU(e,u){e&1&&_(0," \u2713 ")}function pU(e,u){if(e&1&&(c(0,"option",17),_(1),w(2,cU,1,0),p()),e&2){let t=u.$implicit,i=h(2);b("value",t.version)("selected",i.versionSelect==t.version),l(),q(" v",t.version," "),l(),S(t.version==i.plugin.installedVersion?2:-1)}}function mU(e,u){e&1&&I(0,"i",28)}function FU(e,u){e&1&&I(0,"i",27)}function CU(e,u){if(e&1){let t=U();c(0,"button",29),M("click",function(){j(t);let n=h(2);return N(n.doInstall(n.versionSelect))}),w(1,mU,1,0,"i",28)(2,FU,1,0,"i",27),p()}if(e&2){let t=h(2);b("disabled",t.versionSelect===t.plugin.installedVersion),l(),S(t.versionSelect===t.plugin.installedVersion?1:2)}}function hU(e,u){if(e&1){let t=U();c(0,"div",6),w(1,aU,9,7)(2,sU,4,3),c(3,"ul",13),ft(4,dU,8,3,"li",14,nt),c(6,"li",14)(7,"div",15),_(8),v(9,"translate"),I(10,"br"),c(11,"select",16),Oe("ngModelChange",function(n){j(t);let f=h();return Pe(f.versionSelect,n)||(f.versionSelect=n),N(n)}),ft(12,pU,3,4,"option",17,nt),p()(),w(14,CU,3,2,"button",18),p()()()}if(e&2){let t=h();l(),S(t.plugin.installedVersion?1:2),l(3),rt(t.versionsWithTags),l(4),q(" ",B(9,4,"plugins.manage.all_versions")," "),l(3),Te("ngModel",t.versionSelect),l(),rt(t.versions),l(2),S(t.versionSelect?14:-1)}}var A6=(()=>{class e{$activeModal=x(ve);$api=x(he);$toastr=x(_e);$translate=x(Ee);plugin;loading=!0;versions=[];versionsWithTags=[];versionSelect;constructor(){}ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions()}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:t=>{let i=new Set;for(let[n,f]of Object.entries(t.versions)){this.versions.push({version:n,engines:f.engines||null});let r=Object.keys(t.tags).find(o=>t.tags[o]===n);r&&(this.versionsWithTags.push({version:n,tag:r}),i.add(n))}this.versions.sort((n,f)=>(0,I6.rcompare)(n.version,f.version)),this.versionsWithTags.sort((n,f)=>{let r=["latest","next","beta","alpha"],o=r.includes(n.tag)?r.indexOf(n.tag):999,a=r.includes(f.tag)?r.indexOf(f.tag):999;return o-a}),!this.versions.find(n=>n.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()}})}doInstall(t){this.$activeModal.close({name:this.plugin.name,version:t,engines:this.versions.find(i=>i.version===t).engines,action:this.plugin.installedVersion?"alternate":"install"})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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",3,"disabled"],[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"],["disabled","",1,"btn","btn-primary","m-0","ms-3"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-arrow-alt-circle-down"],[1,"fas","fa-fw","fa-check-circle"],[1,"btn","btn-primary","m-0","ms-3",3,"click","disabled"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(6,"div",4),w(7,oU,2,0,"div",5)(8,hU,15,6,"div",6),p(),c(9,"div",7),I(10,"div",8),c(11,"div",9)(12,"button",10),v(13,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),_(14),v(15,"translate"),p()(),I(16,"div",11),p()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),K("aria-label",B(5,5,"form.button_close")),l(3),S(n.loading?7:8),l(5),K("aria-label",B(13,7,"form.button_close")),l(2),q(" ",B(15,9,"form.button_close")," "))},dependencies:[tu,yi,vi,Xi,vt,Yu,Be],encapsulation:2})}return e})();var k6=ze(Z6(),1);function gU(e,u){e&1&&(c(0,"div",5),I(1,"i",14),p())}function bU(e,u){e&1&&(c(0,"div",6),_(1),v(2,"translate"),v(3,"translate"),p()),e&2&&(l(),Bu(" ",B(2,2,"plugins.settings.message_manual_config_required")," ",B(3,4,"plugins.settings.message_consult_documentation")," "))}function EU(e,u){if(e&1){let t=U();c(0,"button",25),v(1,"translate"),M("click",function(){j(t);let n=h(2).$index,f=h(2);return N(f.removeBlock(n))}),I(2,"i",26),p()}e&2&&b("ngbTooltip",B(1,1,"form.button_delete"))}function _U(e,u){if(e&1&&w(0,EU,3,3,"button",24),e&2){let t=h(3);S(!(t.schema!=null&&t.schema.singular)||t.pluginConfig.length>1?0:-1)}}function yU(e,u){if(e&1){let t=U();c(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),_(4),p(),c(5,"div"),w(6,_U,1,1),c(7,"button",19),v(8,"translate"),M("click",function(){let n=j(t).$index,f=h(2);return N(f.editBlock(n))}),I(9,"i",20),p()()()(),c(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),Oe("ngModelChange",function(n){j(t);let f=h(2);return Pe(f.currentBlock,n)||(f.currentBlock=n),N(n)}),M("onInit",function(n){j(t);let f=h(2);return N(f.onEditorInit(n))}),p()()()()}if(e&2){let t=u.$implicit,i=u.$index,n=h(2);b("ngbAccordionItem","configBlock."+i)("collapsed",n.show!=="configBlock."+i)("id","configBlock."+i),l(4),H(t.name||n.pluginAlias),l(2),S(n.show==="configBlock."+i?6:-1),l(),b("ngbTooltip",B(8,8,"form.button_edit")),l(5),b("options",n.editorOptions),Te("ngModel",n.currentBlock)}}function vU(e,u){if(e&1&&(c(0,"div",7),ft(1,yU,13,10,"div",15,nt),p()),e&2){let t=h();b("closeOthers",!0),l(),rt(t.pluginConfig)}}function BU(e,u){if(e&1){let t=U();c(0,"button",30),M("click",function(){j(t);let n=h(2);return N(n.addBlock())}),I(1,"i",31),p()}}function xU(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"form.button_save")," ")}function wU(e,u){e&1&&I(0,"i",29)}function SU(e,u){if(e&1){let t=U();w(0,BU,2,0,"button",27),c(1,"button",28),M("click",function(){j(t);let n=h();return N(n.save())}),w(2,xU,2,3),w(3,wU,1,0,"i",29),p()}if(e&2){let t=h();S(t.schema!=null&&t.schema.singular?-1:0),l(),b("disabled",t.saveInProgress),l(),S(t.saveInProgress?-1:2),l(),S(t.saveInProgress?3:-1)}}function IU(e,u){if(e&1){let t=U();c(0,"button",32),M("click",function(){j(t);let n=h();return N(n.openFullConfigEditor())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.settings.label_open_config_editor")," "))}var Jl=(()=>{class e{$activeModal=x(ve);$api=x(he);$md=x(T1);$modal=x(it);$plugin=x(bi);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;constructor(){}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()})}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())})}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)}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let t=this.monacoEditor.getModel().getValue().trim(),i;t.charAt(0)==='"'&&t.charAt(t.length-1)==="]"&&(t=`{${t}}`);try{i=k6.default.parse(t)}catch(f){return console.error(f),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(i)||typeof i!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!i[this.pluginType]&&Array.isArray(i[this.arrayKey])&&i[this.arrayKey].length&&Object.keys(i).length===1&&(i=i[this.arrayKey][0]),this.pluginType==="accessory"&&(!i.name||typeof i.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),i.name="",this.monacoEditor.getModel().setValue(JSON.stringify(i,null,4)),!1;let n=this.pluginConfig[this.currentBlockIndex];Object.keys(n).forEach(f=>delete n[f]),Object.assign(n,i),n[this.pluginType]=this.pluginAlias}return!0}editBlock(t){this.saveCurrentBlock()&&(this.show=`configBlock.${t}`,this.currentBlockIndex=t,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(t){let i=this.pluginConfig[t],n=this.pluginConfig.findIndex(f=>f===i);n>-1&&this.pluginConfig.splice(n,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 se(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 i=this.$modal.open(un,{size:"lg",backdrop:"static"});i.componentInstance.bridges=this.childBridges.map(n=>({name:n.name,username:n.username}));return}this.$activeModal.close(),this.$modal.open(uu,{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()}getChildBridges(){return G(this,null,function*(){try{(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.plugin.name===i.plugin&&this.childBridges.push(i)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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","openDelay","150","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","ngbTooltip"],[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","openDelay","150","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"ngbTooltip"],["container","modal","openDelay","150","triggers","hover",1,"btn","btn-danger","m-0","ms-3",3,"click","ngbTooltip"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.close()}),p()(),c(6,"div",4),w(7,gU,2,0,"div",5),w(8,bU,4,6,"div",6),w(9,vU,3,1,"div",7),p(),c(10,"div",8)(11,"div",9)(12,"button",10),M("click",function(){return n.$activeModal.close()}),_(13),v(14,"translate"),p()(),I(15,"div",11),c(16,"div",12),w(17,SU,4,4),w(18,IU,3,3,"button",13),p()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.saveInProgress),K("aria-label",B(5,10,"form.button_close")),l(3),S(n.loading?7:-1),l(),S(!n.loading&&!n.canConfigure?8:-1),l(),S(!n.loading&&n.canConfigure?9:-1),l(3),b("disabled",n.saveInProgress),l(),q(" ",B(14,12,"form.button_close")," "),l(4),S(n.canConfigure?17:-1),l(),S(n.canConfigure?-1:18))},dependencies:[Xr,Jr,Kr,Zi,Wr,Ur,S1,tu,vt,Yu,Be,Gr],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 $6=e=>({link:e}),AU=(e,u)=>({"green-text":e,"grey-text":u});function kU(e,u){if(e&1){let t=U();c(0,"button",13),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),K("aria-label",B(1,2,"form.button_close"))}}function $U(e,u){e&1&&(c(0,"div",5),I(1,"i",14),p())}function TU(e,u){e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"child_bridge.bridges_paired_2")))}function PU(e,u){e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2&&(l(),q("",B(2,1,"child_bridge.select_type"),":"))}function OU(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p(),w(3,TU,3,3,"li"),w(4,PU,3,3,"li")),e&2){let t=h(2);l(),H(B(2,3,"child_bridge.bridges_paired")),l(2),S(t.configBlocks.length===1&&!t.deviceInfo[t.configBlocks[0]._bridge==null?null:t.configBlocks[0]._bridge.username]&&t.originalBridges.length===0?3:-1),l(),S(t.canConfigure?4:-1)}}function MU(e,u){if(e&1&&(c(0,"option",29),_(1),p()),e&2){let t=u.$implicit,i=u.$index;b("value",i),l(),H(t.name||t.platform||t.accessory)}}function jU(e,u){if(e&1){let t=U();c(0,"li",25),_(1),v(2,"translate"),p(),c(3,"li",23)(4,"label",26),_(5),v(6,"translate"),p(),c(7,"div",27)(8,"select",28),Oe("ngModelChange",function(n){j(t);let f=h(3);return Pe(f.selectedBlock,n)||(f.selectedBlock=n),N(n)}),M("change",function(n){j(t);let f=h(3);return N(f.onBlockChange(n.target.value))}),ft(9,MU,2,2,"option",29,nt),p()()()}if(e&2){let t=h(3);l(),H(B(2,3,"form.label.changes_kept")),l(4),q(" ",B(6,5,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),l(3),Te("ngModel",t.selectedBlock),l(),rt(t.configBlocks)}}function NU(e,u){if(e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",31),_(5),p()()),e&2){let t=h(3);l(2),q(" ",B(3,2,t.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),l(3),q(" ",t.configBlocks[t.selectedBlock].name||t.configBlocks[t.selectedBlock].platform||t.configBlocks[t.selectedBlock].accessory," ")}}function qU(e,u){e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",32),_(5),v(6,"translate"),p()()),e&2&&(l(2),H(B(3,2,"child_bridge.config.use")),l(3),q(" ",B(6,4,"child_bridge.config.prevent")," "))}function VU(e,u){if(e&1&&(c(0,"option",29),_(1),p()),e&2){let t=u.$implicit;b("value",t.username),l(),Bu("",t.name," (",t.username,")")}}function RU(e,u){if(e&1){let t=U();c(0,"li",23)(1,"label",37),_(2),v(3,"translate"),p(),c(4,"div",27)(5,"select",38),M("change",function(n){j(t);let f=h(4);return N(f.onLinkBridgeChange(n.target.value))}),c(6,"option",29),_(7),v(8,"translate"),p(),ft(9,VU,2,3,"option",29,nt),p()()()}if(e&2){let t=h(4);l(2),H(B(3,2,"child_bridge.config.or_link")),l(5),H(B(8,4,"child_bridge.config.select_existing")),l(2),rt(t.bridgesAvailableForLink)}}function LU(e,u){if(e&1){let t=U();c(0,"li",33)(1,"span",7),_(2),v(3,"translate"),p(),c(4,"div",34)(5,"input",35),M("change",function(){j(t);let n=h(3);return N(n.toggleExternalBridge(n.configBlocks[n.selectedBlock],n.enabledBlocks[n.selectedBlock],n.selectedBlock))}),Oe("ngModelChange",function(n){j(t);let f=h(3);return Pe(f.enabledBlocks[f.selectedBlock],n)||(f.enabledBlocks[f.selectedBlock]=n),N(n)}),p(),I(6,"label",36),p()(),w(7,RU,11,6,"li",23)}if(e&2){let t=h(3);l(2),H(B(3,5,"child_bridge.config.use")),l(3),b("id","toggleExternalBridgeInput_"+t.selectedBlock),Te("ngModel",t.enabledBlocks[t.selectedBlock]),l(),b("for","toggleExternalBridgeInput_"+t.selectedBlock),l(),S(!(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)&&t.bridgesAvailableForLink.length?7:-1)}}function zU(e,u){if(e&1&&(c(0,"li",23)(1,"label",30),_(2),v(3,"translate"),p(),c(4,"div",31),_(5),p()(),c(6,"li",23)(7,"label",30),_(8),v(9,"translate"),p(),c(10,"div",31),_(11),p()(),c(12,"li",23)(13,"label",30),_(14),v(15,"translate"),p(),c(16,"div",31),_(17),p()()),e&2){let t=h(3);l(2),H(B(3,6,"accessories.bridge_link_username")),l(3),q(" ",t.currentlySelectedLink.username," "),l(3),H(B(9,8,"accessories.bridge_link_port")),l(3),q(" ",t.currentlySelectedLink.port," "),l(3),H(B(15,10,"accessories.bridge_link_name")),l(3),q(" ",t.currentlySelectedLink.name," ")}}function HU(e,u){e&1&&(c(0,"span"),_(1),v(2,"translate"),p()),e&2&&(l(),q(" \xB7 ",B(2,1,"status.code_scan")," "))}function UU(e,u){if(e&1){let t=U();c(0,"li",33)(1,"span",7),_(2),v(3,"translate"),c(4,"code"),_(5,"-D"),p()(),c(6,"div",34)(7,"input",51),v(8,"translate"),Oe("ngModelChange",function(n){j(t);let f=h(5);return Pe(f.configBlocks[f.selectedBlock]._bridge.debugModeEnabled,n)||(f.configBlocks[f.selectedBlock]._bridge.debugModeEnabled=n),N(n)}),p(),I(9,"label",36),p()()}if(e&2){let t=h(5);l(2),q("",B(3,5,"child_bridge.config.debug")," "),l(5),b("id","homebridgeDebugMode_"+t.selectedBlock),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.debugModeEnabled),K("aria-label",B(8,7,"settings.startup.debug")),l(2),b("for","homebridgeDebugMode_"+t.selectedBlock)}}function WU(e,u){if(e&1){let t=U();c(0,"li",39)(1,"div",40),I(2,"app-qrcode",41),c(3,"p",42),_(4),p(),c(5,"p",43),I(6,"i",44),_(7),v(8,"translate"),w(9,HU,3,3,"span"),p()()(),c(10,"li",23)(11,"label",30),_(12),v(13,"translate"),p(),c(14,"div",31),_(15),p()(),c(16,"li",23)(17,"label",30),_(18),v(19,"translate"),p(),c(20,"div",31),_(21),p()(),c(22,"li",23)(23,"label",30),_(24),v(25,"translate"),p(),c(26,"div",27)(27,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.name,n)||(f.configBlocks[f.selectedBlock]._bridge.name=n),N(n)}),p()()(),c(28,"li",23)(29,"label",30),_(30),v(31,"translate"),p(),c(32,"div",27)(33,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.manufacturer,n)||(f.configBlocks[f.selectedBlock]._bridge.manufacturer=n),N(n)}),p()()(),c(34,"li",23)(35,"label",30),_(36),v(37,"translate"),p(),c(38,"div",27)(39,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.model,n)||(f.configBlocks[f.selectedBlock]._bridge.model=n),N(n)}),p()()(),c(40,"li",23)(41,"label",30),_(42),v(43,"translate"),p(),c(44,"div",27)(45,"input",45),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.firmwareRevision,n)||(f.configBlocks[f.selectedBlock]._bridge.firmwareRevision=n),N(n)}),p()()(),w(46,UU,10,9,"li",33),c(47,"li",23)(48,"label",30)(49,"span",46),_(50,"DEBUG"),p(),I(51,"br")(52,"small",47),v(53,"translate"),p(),c(54,"div",27)(55,"input",48),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.env.DEBUG,n)||(f.configBlocks[f.selectedBlock]._bridge.env.DEBUG=n),N(n)}),p()()(),c(56,"li",23)(57,"label",30)(58,"span",46),_(59,"NODE_OPTIONS"),p(),I(60,"br"),c(61,"small",49),_(62),v(63,"translate"),p()(),c(64,"div",27)(65,"input",50),Oe("ngModelChange",function(n){j(t);let f=h(4);return Pe(f.configBlocks[f.selectedBlock]._bridge.env.NODE_OPTIONS,n)||(f.configBlocks[f.selectedBlock]._bridge.env.NODE_OPTIONS=n),N(n)}),p()()()}if(e&2){let t=h(4);l(2),b("data",t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._setupCode),l(2),H(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username].pincode),l(2),b("ngClass",Ju(41,AU,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)),l(),q(" ",B(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")," "),l(2),S(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]._isPaired?-1:9),l(3),H(B(13,24,"accessories.bridge_username")),l(3),q(" ",t.configBlocks[t.selectedBlock]._bridge.username," "),l(3),H(B(19,26,"accessories.bridge_port")),l(3),q(" ",t.configBlocks[t.selectedBlock]._bridge.port," "),l(3),H(B(25,28,"child_bridge.config.name")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.name),l(3),H(B(31,30,"child_bridge.config.manufacturer")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.manufacturer),l(3),H(B(37,32,"child_bridge.config.model")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.model),l(3),H(B(43,34,"child_bridge.config.firmware")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.firmwareRevision),l(),S(t.canShowBridgeDebug?46:-1),l(6),b("innerHTML",Ye(53,36,"settings.service.debug_tooltip",eu(44,$6,t.linkDebug)),de),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.DEBUG),l(7),H(B(63,39,"settings.service.node_tooltip")),l(3),Te("ngModel",t.configBlocks[t.selectedBlock]._bridge.env.NODE_OPTIONS)}}function GU(e,u){if(e&1&&w(0,WU,66,46),e&2){let t=h(3);S(t.deviceInfo[t.configBlocks[t.selectedBlock]._bridge==null?null:t.configBlocks[t.selectedBlock]._bridge.username]?0:-1)}}function KU(e,u){e&1&&(c(0,"ngb-alert",24),_(1),v(2,"translate"),I(3,"br"),_(4),v(5,"translate"),p()),e&2&&(b("dismissible",!1),l(),q(" ",B(2,3,"child_bridge.restart_homebridge")," "),l(3),q("",B(5,5,"child_bridge.return_to_pair")," "))}function JU(e,u){if(e&1&&(c(0,"ul",22),w(1,jU,11,7),w(2,NU,6,4,"li",23),w(3,qU,7,6,"li",23),w(4,LU,8,7),w(5,zU,18,12),w(6,GU,1,1),p(),w(7,KU,6,7,"ngb-alert",24)),e&2){let t=h(2);l(),S(t.configBlocks.length>1?1:-1),l(),S(t.configBlocks.length===1?2:-1),l(),S(t.currentBridgeHasLinks?3:-1),l(),S(t.currentBridgeHasLinks?-1:4),l(),S(t.currentlySelectedLink?5:-1),l(),S(!t.currentlySelectedLink&&(t.configBlocks[t.selectedBlock]._bridge!=null&&t.configBlocks[t.selectedBlock]._bridge.username)?6:-1),l(),S(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 XU(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"child_bridge.confirm_delete_2")," ")}function YU(e,u){if(e&1&&(c(0,"li"),_(1),c(2,"span",46),_(3),p(),_(4,") "),p()),e&2){let t=u.$implicit,i=h(3);l(),q(" ",t.bridgeName||(i.deviceInfo[t.id]==null?null:i.deviceInfo[t.id].displayName)," ("),l(2),H(t.id)}}function ZU(e,u){if(e&1&&(c(0,"ngb-alert",19)(1,"p"),_(2),v(3,"translate"),w(4,XU,2,3),p(),c(5,"div",9)(6,"ul",52),ft(7,YU,5,2,"li",null,nt),p()()()),e&2){let t=h(2);b("dismissible",!1),l(2),q(" ",B(3,3,"child_bridge.confirm_delete_1")," "),l(2),S(t.deletingPairedBridge?4:-1),l(3),rt(t.deleteBridges)}}function QU(e,u){e&1&&(c(0,"ngb-alert",20),_(1),v(2,"translate"),p()),e&2&&(b("dismissible",!1),l(),q(" ",B(2,2,"child_bridge.must_configure_plugin")," "))}function eW(e,u){if(e&1){let t=U();c(0,"ngb-alert",21)(1,"div",17),_(2),v(3,"translate"),v(4,"translate"),p(),c(5,"button",53),M("click",function(){j(t);let n=h(2);return N(n.openFullConfigEditor())}),_(6),v(7,"translate"),p()()}e&2&&(b("dismissible",!1),l(2),Bu(" ",B(3,4,"plugins.settings.message_manual_config_required")," ",B(4,6,"plugins.settings.message_consult_documentation")," "),l(4),q(" ",B(7,8,"plugins.settings.label_open_config_editor")," "))}function tW(e,u){if(e&1&&(c(0,"div",15),I(1,"i",16),p(),c(2,"ul",17),I(3,"li",18),v(4,"translate"),w(5,OU,5,5),p(),w(6,JU,8,7),w(7,ZU,9,5,"ngb-alert",19),w(8,QU,3,4,"ngb-alert",20),w(9,eW,8,10,"ngb-alert",21)),e&2){let t=h();l(3),b("innerHTML",Ye(4,6,"child_bridge.about",eu(9,$6,t.linkChildBridges)),de),l(2),S(t.configBlocks.length?5:-1),l(),S(t.canConfigure&&t.configBlocks.length?6:-1),l(),S(t.deleteBridges.length?7:-1),l(),S(!t.configBlocks.length&&t.canConfigure?8:-1),l(),S(t.canConfigure?-1:9)}}function uW(e,u){if(e&1){let t=U();c(0,"button",54),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),_(1),v(2,"translate"),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),l(),q(" ",B(2,2,"form.button_close")," ")}}function iW(e,u){e&1&&I(0,"i",56)}function nW(e,u){if(e&1){let t=U();c(0,"button",55),M("click",function(){j(t);let n=h();return N(n.save())}),_(1),v(2,"translate"),w(3,iW,1,0,"i",56),p()}if(e&2){let t=h();b("disabled",t.saveInProgress),l(),q(" ",B(2,3,"form.button_save")," "),l(2),S(t.saveInProgress?3:-1)}}function fW(e,u){if(e&1){let t=U();c(0,"button",57),M("click",function(){j(t);let n=h();return N(n.$activeModal.close("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function rW(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"form.button_save")," ")}function oW(e,u){e&1&&I(0,"i",56)}function aW(e,u){if(e&1){let t=U();c(0,"button",55),M("click",function(){j(t);let n=h(2);return N(n.save())}),w(1,rW,2,3),w(2,oW,1,0,"i",56),p()}if(e&2){let t=h(2);b("disabled",t.saveInProgress||t.loading),l(),S(t.saveInProgress?-1:1),l(),S(t.saveInProgress?2:-1)}}function sW(e,u){if(e&1){let t=U();c(0,"button",59),M("click",function(){j(t);let n=h(2);return N(n.openPluginConfig())}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"plugins.button_settings")," "))}function DW(e,u){if(e&1&&(w(0,aW,3,3,"button",10),w(1,sW,3,3,"button",58)),e&2){let t=h();S(t.configBlocks.length?0:-1),l(),S(t.configBlocks.length?-1:1)}}var T6=(()=>{class e{$activeModal=x(ve);$api=x(he);$modal=x(it);$plugins=x(bi);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);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>';constructor(){}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(i=>i.index===t)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(i=>i.usesIndex===t),this.bridgesAvailableForLink=[],this.configBlocks[Number(t)].accessory)for(let[i,n]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(f=>f.id===n.username)||i<Number(t)&&this.bridgesAvailableForLink.push({index:i.toString(),usesIndex:t,name:n.name,port:n.port,username:n.username})}onLinkBridgeChange(t){if(t){let i=this.configBlocks.findIndex(f=>f._bridge?.username===t);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:i.toString(),name:this.bridgeCache.get(i)?.name,port:this.bridgeCache.get(i)?.port,username:t}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(f=>f.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let n=this.configBlocks[Number(this.selectedBlock)];n._bridge={username:t}}}getPluginType(){return G(this,null,function*(){try{let t=yield se(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 se(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[i,n]of this.configBlocks.entries())if(n._bridge&&n._bridge.username){this.enabledBlocks[i]=!0;let f=Array.from(this.bridgeCache.values()).findIndex(o=>o.username===n._bridge.username),r=f!==-1?Array.from(this.bridgeCache.values())[f]:void 0;r?(n._bridge.env={},this.accessoryBridgeLinks.push({index:i.toString(),usesIndex:f.toString(),name:r.name,port:r.port,username:n._bridge.username})):(n._bridge.env=n._bridge.env||{},this.bridgeCache.set(i,n._bridge),yield this.getDeviceInfo(n._bridge.username),n._bridge.name||(n._bridge.name=this.deviceInfo[n._bridge.username]?.displayName),this.originalBridges.push(n._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((i,n)=>{this.enabledBlocks[n]=!0,this.toggleExternalBridge(i,!0,n.toString())}),this.accessoryBridgeLinks.find(i=>i.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(t){this.canConfigure=!1,console.error(t)}})}toggleExternalBridge(t,i,n){return G(this,null,function*(){if(i){let f=this.bridgeCache.get(Number(n));t._bridge={username:f?f.username:this.generateUsername(),port:yield this.getUnusedPort(),name:f?.name,model:f?.model,manufacturer:f?.manufacturer,firmwareRevision:f?.firmwareRevision,debugModeEnabled:f?.debugModeEnabled,env:f?.env},this.deleteBridges.some(r=>r.id===t._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(r=>r.id!==t._bridge.username)),this.bridgeCache.set(Number(n),t._bridge),yield this.getDeviceInfo(t._bridge.username)}else{if(this.accessoryBridgeLinks.some(f=>f.index===n))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(f=>f.index!==n),this.currentlySelectedLink=null;else{let f=this.originalBridges.find(r=>r.username===t._bridge.username);f&&this.deleteBridges.push({id:t._bridge.username,bridgeName:t._bridge.name||f.displayName,paired:this.deviceInfo[t._bridge.username]?._isPaired})}delete t._bridge}this.deletingPairedBridge=this.deleteBridges.some(f=>f.paired)})}getUnusedPort(){return G(this,null,function*(){this.saveInProgress=!0;try{return(yield se(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 se(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(i){console.error(i),this.deviceInfo[t]=!1}})}save(){return G(this,null,function*(){this.saveInProgress=!0;try{yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let t of this.deleteBridges)try{yield se(this.$api.delete(`/server/pairings/${t.id.replace(/:/g,"")}`))}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(uu,{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.$plugins.settings({name:this.plugin.name,settingsSchema:!0,links:{}})}generateUsername(){let t="0123456789ABCDEF",i="0E:";for(let n=0;n<5;n++)i+=t.charAt(Math.round(Math.random()*15)),i+=t.charAt(Math.round(Math.random()*15)),n!==4&&(i+=":");return i}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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"],["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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),w(4,kU,2,4,"button",3),p(),c(5,"div",4),w(6,$U,2,0,"div",5),w(7,tW,10,11),p(),c(8,"div",6)(9,"div",7),w(10,uW,3,4,"button",8),p(),c(11,"div",9),w(12,nW,4,5,"button",10),w(13,fW,3,3,"button",11),p(),c(14,"div",12),w(15,DW,2,2),p()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),S(n.justInstalled?-1:4),l(2),S(n.loading?6:-1),l(),S(n.loading?-1:7),l(3),S(n.canConfigure&&!n.justInstalled?10:-1),l(2),S(n.justInstalled?12:-1),l(),S(n.canConfigure?-1:13),l(2),S(n.canConfigure&&!n.justInstalled?15:-1))},dependencies:[tu,yi,vi,Ki,Gi,Xi,vt,Yu,Yi,P1,zt,Be],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 Xl=ze(ss(),1);var ts=()=>["homebridge","homebridge-config-ui-x"],P6=(e,u,t)=>({pluginName:e,minVersion:u,installedVersion:t}),lW=(e,u,t)=>({minVersion:e,installedVersion:u,latestVersion:t,packageName:"Homebridge"}),dW=()=>({packageName:"Homebridge"}),cW=(e,u,t)=>({minVersion:e,installedVersion:u,latestVersion:t,packageName:"Homebridge UI"}),pW=()=>({packageName:"Homebridge UI"});function mW(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2){let t=h(2);l(),q(" ",Ye(2,1,"plugins.compat.node_too_low",xu(4,P6,t.plugin.displayName,t.nodeMinVersion,t.nodeInstalledVersion))," ")}}function FW(e,u){if(e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2){let t=h(2);l(),q(" ",Ye(2,1,"plugins.compat.hb_too_low",xu(4,P6,t.plugin.name,t.hbMinVersion,t.hbInstalledVersion))," ")}}function CW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",12),p(),c(2,"ul",13),w(3,mW,3,8,"li"),w(4,FW,3,8,"li"),p(),c(5,"ngb-alert",14)(6,"p",15),_(7),v(8,"translate"),p()()),e&2){let t=h();l(),Z(F1("",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")),l(2),S(t.isValidNode?-1:3),l(),S(t.isValidHb?-1:4),l(),b("dismissible",!1),l(2),H(B(8,7,"plugins.compat.are_you_sure"))}}function hW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",16),p(),c(2,"ul",13)(3,"li"),_(4),v(5,"translate"),p()(),c(6,"ngb-alert",14)(7,"p",17),_(8),v(9,"translate"),p(),c(10,"p",15)(11,"a",18),_(12),v(13,"translate"),I(14,"i",19),p()()()),e&2){let t=h();l(4),q(" ",Ye(5,4,"plugins.compat.hb_node_too_low",xu(12,lW,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),l(2),b("dismissible",!1),l(2),H(Ye(9,7,"plugins.compat.node_first",Xe(16,dW))),l(4),q(" ",B(13,10,"plugins.compat.node_link")," ")}}function gW(e,u){if(e&1&&(c(0,"div",11),I(1,"i",16),p(),c(2,"ul",13)(3,"li"),_(4),v(5,"translate"),p()(),c(6,"ngb-alert",14)(7,"p",17),_(8),v(9,"translate"),p(),c(10,"p",15)(11,"a",18),_(12),v(13,"translate"),I(14,"i",19),p()()()),e&2){let t=h();l(4),q(" ",Ye(5,4,"plugins.compat.hb_node_too_low",xu(12,cW,t.nodeMinVersion,t.nodeInstalledVersion,t.plugin.latestVersion))," "),l(2),b("dismissible",!1),l(2),H(Ye(9,7,"plugins.compat.node_first",Xe(16,pW))),l(4),q(" ",B(13,10,"plugins.compat.node_link")," ")}}function bW(e,u){if(e&1){let t=U();c(0,"button",20),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function EW(e,u){if(e&1){let t=U();c(0,"button",20),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function _W(e,u){if(e&1){let t=U();c(0,"button",21),M("click",function(){j(t);let n=h();return N(n.$activeModal.close(!0))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.label_continue")," "))}var O6=(()=>{class e{$activeModal=x(ve);$settings=x(Ve);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;constructor(){}ngOnInit(){this.nodeMinVersion=(0,Xl.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Xl.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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,"mb-3"],["type","warning",1,"mb-0",3,"dismissible"],[1,"text-center","mb-0"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),v(4,"translate"),p(),c(5,"button",3),v(6,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(7,"div",4),w(8,CW,9,9),w(9,hW,15,17),w(10,gW,15,17),p(),c(11,"div",5)(12,"div",6),w(13,bW,3,3,"button",7),p(),c(14,"div",8),w(15,EW,3,3,"button",7),p(),c(16,"div",9),w(17,_W,3,3,"button",10),p()()()),i&2&&(l(3),H(B(4,8,"plugins.compat.title")),l(2),K("aria-label",B(6,10,"form.button_close")),l(3),S(Xe(12,ts).includes(n.plugin.name)?-1:8),l(),S(n.plugin.name==="homebridge"?9:-1),l(),S(n.plugin.name==="homebridge-config-ui-x"?10:-1),l(3),S(Xe(13,ts).includes(n.plugin.name)?-1:13),l(2),S(Xe(14,ts).includes(n.plugin.name)?15:-1),l(2),S(Xe(15,ts).includes(n.plugin.name)?-1:17))},dependencies:[Be,Yi],encapsulation:2})}return e})();var Dt=[];for(let e=0;e<256;++e)Dt.push((e+256).toString(16).slice(1));function M6(e,u=0){return(Dt[e[u+0]]+Dt[e[u+1]]+Dt[e[u+2]]+Dt[e[u+3]]+"-"+Dt[e[u+4]]+Dt[e[u+5]]+"-"+Dt[e[u+6]]+Dt[e[u+7]]+"-"+Dt[e[u+8]]+Dt[e[u+9]]+"-"+Dt[e[u+10]]+Dt[e[u+11]]+Dt[e[u+12]]+Dt[e[u+13]]+Dt[e[u+14]]+Dt[e[u+15]]).toLowerCase()}var Yl,yW=new Uint8Array(16);function Zl(){if(!Yl){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Yl=crypto.getRandomValues.bind(crypto)}return Yl(yW)}var vW=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Ql={randomUUID:vW};function BW(e,u,t){if(Ql.randomUUID&&!u&&!e)return Ql.randomUUID();e=e||{};let i=e.random??e.rng?.()??Zl();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,u){if(t=t||0,t<0||t+16>u.length)throw new RangeError(`UUID byte range ${t}:${t+15} is out of buffer bounds`);for(let n=0;n<16;++n)u[t+n]=i[n];return u}return M6(i)}var us=BW;var j6=ze(of(),1);var N6=(()=>{class e{$api=x(he);$toastr=x(_e);$translate=x(Ee);constructor(){}downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,j6.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(i){return new(i||e)};static \u0275cmp=Y({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(i,n){i&1&&(c(0,"button",0),M("click",function(){return n.downloadDumpFile()}),I(1,"i",1),_(2,` Download Dump File
27
27
  `),p())},encapsulation:2})}return e})();var q6=ze(of(),1);var V6=(()=>{class e{$api=x(he);$translate=x(Ee);$toastr=x(_e);constructor(){}downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-hue/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,q6.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(i){return new(i||e)};static \u0275cmp=Y({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(i,n){i&1&&(c(0,"button",0),M("click",function(){return n.downloadDumpFile()}),I(1,"i",1),_(2,` Download Dump File
28
28
  `),p())},encapsulation:2})}return e})();var R6=(()=>{class e{transform(t){return t.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}static \u0275fac=function(i){return new(i||e)};static \u0275pipe=l1({name:"interpolateMd",type:e,pure:!0})}return e})();function xW(e,u){if(e&1&&(I(0,"markdown",5),v(1,"interpolateMd")),e&2){let t=h();b("data",B(1,1,t.schema.headerDisplay))}}function wW(e,u){if(e&1){let t=U();c(0,"button",31),v(1,"translate"),M("click",function(){j(t);let n=h().$implicit,f=h(2);return N(f.removeBlock(n.__uuid__))}),I(2,"i",32),p()}e&2&&b("ngbTooltip",B(1,1,"form.button_delete"))}function SW(e,u){if(e&1){let t=U();c(0,"div",19)(1,"div",20)(2,"div",21)(3,"h5",22),_(4),p(),c(5,"div",23),w(6,wW,3,3,"button",24),c(7,"button",25),v(8,"translate"),I(9,"i",26),p(),I(10,"i",27),v(11,"translate"),p()()(),c(12,"div",28)(13,"div",29)(14,"app-schema-form",30),Oe("dataChange",function(n){let f=j(t).$implicit;return Pe(f.config,n)||(f.config=n),N(n)}),M("isValid",function(n){let f=j(t).$index,r=h(2);return N(r.onIsValid(n,f))}),p()()()()}if(e&2){let t=u.$implicit,i=u.$index,n=h(2);b("ngbAccordionItem",t.__uuid__)("collapsed",n.show!==t.__uuid__)("id",t.__uuid__),l(4),H(t.name),l(2),S(n.plugin.name!=="homebridge-config-ui-x"&&n.show===t.__uuid__?6:-1),l(),b("ngbTooltip",B(8,10,"form.button_edit")),l(3),b("ngClass",n.formBlocksValid[i]?"fa-circle-check green-text":n.strictValidation?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text")("ngbTooltip",B(11,12,n.formBlocksValid[i]?"form.label_valid":n.strictValidation?"form.label_invalid_strict":"form.label_invalid")),l(4),b("configSchema",n.schema),Te("data",t.config)}}function IW(e,u){if(e&1){let t=U();c(0,"div",18),M("show",function(n){j(t);let f=h();return N(f.blockShown(n))})("hide",function(n){j(t);let f=h();return N(f.blockHidden(n))}),ft(1,SW,15,14,"div",19,nt),p()}if(e&2){let t=h();b("closeOthers",!0),l(),rt(t.pluginConfig)}}function AW(e,u){e&1&&I(0,"app-homebridge-deconz")}function kW(e,u){e&1&&I(0,"app-homebridge-hue")}function $W(e,u){if(e&1){let t=U();c(0,"div",7)(1,"app-schema-form",30),Oe("dataChange",function(n){j(t);let f=h();return Pe(f.pluginConfig[0].config,n)||(f.pluginConfig[0].config=n),N(n)}),M("isValid",function(n){j(t);let f=h();return N(f.onIsValid(n,0))}),p(),w(2,AW,1,0,"app-homebridge-deconz"),w(3,kW,1,0,"app-homebridge-hue"),p()}if(e&2){let t=h();l(),b("configSchema",t.schema),Te("data",t.pluginConfig[0].config),l(),S(t.plugin.name==="homebridge-deconz"?2:-1),l(),S(t.plugin.name==="homebridge-hue"?3:-1)}}function TW(e,u){if(e&1&&(I(0,"markdown",5),v(1,"interpolateMd")),e&2){let t=h();b("data",B(1,1,t.schema.footerDisplay))}}function PW(e,u){if(e&1&&(I(0,"i",14),v(1,"translate")),e&2){let t=h();b("ngClass",t.formIsValid?"fa-circle-check green-text":t.strictValidation?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text")("ngbTooltip",B(1,2,t.formIsValid?"form.label_valid":t.strictValidation?"form.label_invalid_strict":"form.label_invalid"))}}function OW(e,u){if(e&1){let t=U();c(0,"button",33),M("click",function(){j(t);let n=h();return N(n.addBlock())}),I(1,"i",34),p()}}function MW(e,u){e&1&&(c(0,"span"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"form.button_save")))}function jW(e,u){e&1&&I(0,"i",17)}var L6=(()=>{class e{$activeModal=x(ve);$api=x(he);$plugin=x(bi);$modal=x(it);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;schema;pluginAlias;pluginType;pluginConfig=[];form={};show="";saveInProgress;childBridges=[];isFirstSave=!1;formBlocksValid={};formIsValid=!0;strictValidation=!1;constructor(){}ngOnInit(){this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,this.strictValidation=this.schema.strictValidation,this.loadPluginConfig()}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{for(let i of t){let n={__uuid__:us(),name:i.name||this.schema.pluginAlias,config:i};this.pluginConfig.push(n)}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"))}})}save(){return G(this,null,function*(){this.saveInProgress=!0;let t=this.pluginConfig.map(i=>i.config);try{let i=yield se(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&&i[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 n=this.$modal.open(un,{size:"lg",backdrop:"static"});n.componentInstance.bridges=this.childBridges.map(f=>({name:f.name,username:f.username}));return}this.$activeModal.close(),this.$modal.open(uu,{size:"lg",backdrop:"static"})}catch(i){this.saveInProgress=!1,console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}blockShown(t){this.show=t;for(let i of this.pluginConfig)i.name=i.config.name||i.name}blockHidden(t){this.show===t&&(this.show="")}addBlock(){let t=us();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 i=this.pluginConfig.findIndex(n=>n.__uuid__===t);this.pluginConfig.splice(i,1),delete this.formBlocksValid[i],Object.keys(this.formBlocksValid).length||(this.formIsValid=!0)}getChildBridges(){return G(this,null,function*(){try{(yield se(this.$api.get("/status/homebridge/child-bridges"))).forEach(i=>{this.plugin.name===i.plugin&&this.childBridges.push(i)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}homebridgeHueFix(t){if(this.schema.schema.properties.users={type:"object",properties:{}},!(!t.users||typeof t.users!="object"))for(let i of Object.keys(t.users))this.schema.schema.properties.users.properties[i]={type:"string"}}onIsValid(t,i){this.formBlocksValid[i]=t,this.formIsValid=Object.values(this.formBlocksValid).every(n=>n)}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl","me-2",3,"ngClass","ngbTooltip"],["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","openDelay","150","triggers","hover",1,"btn","btn-danger","ms-2",3,"ngbTooltip"],["ngbAccordionToggle","","container","modal","placement","left","openDelay","150","triggers","hover",1,"btn","btn-primary","ms-2","me-2",3,"ngbTooltip"],[1,"fa","fa-fw","fa-edit"],["container","modal","placement","left","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl",3,"ngClass","ngbTooltip"],["ngbAccordionCollapse",""],["ngbAccordionBody","",1,"card-body"],[3,"dataChange","isValid","configSchema","data"],["container","modal","placement","left","openDelay","150","triggers","hover",1,"btn","btn-danger","ms-2",3,"click","ngbTooltip"],[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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.close("Dismiss")}),p()(),c(6,"div",4),w(7,xW,2,3,"markdown",5),w(8,IW,3,1,"div",6),w(9,$W,4,4,"div",7),c(10,"div",8),w(11,TW,2,3,"markdown",5),p()(),c(12,"div",9)(13,"div",10)(14,"button",11),M("click",function(){return n.$activeModal.close()}),_(15),v(16,"translate"),p()(),I(17,"div",12),c(18,"div",13),w(19,PW,2,4,"i",14),w(20,OW,2,0,"button",15),c(21,"button",16),M("click",function(){return n.save()}),w(22,MW,3,3,"span"),w(23,jW,1,0,"i",17),p()()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.saveInProgress),K("aria-label",B(5,14,"form.button_close")),l(3),S(n.schema.headerDisplay?7:-1),l(),S(n.pluginConfig.length&&!n.schema.singular?8:-1),l(),S(n.pluginConfig.length&&n.schema.singular?9:-1),l(2),S(n.schema.footerDisplay?11:-1),l(3),b("disabled",n.saveInProgress),l(),q(" ",B(16,16,"form.button_close")," "),l(4),S(n.schema.singular?19:-1),l(),S(n.schema.singular?-1:20),l(),b("disabled",n.saveInProgress||!n.formIsValid&&n.strictValidation),l(),S(n.saveInProgress?-1:22),l(),S(n.saveInProgress?23:-1))},dependencies:[tn,en,ef,Xr,Jr,Kr,Zi,Wr,Ur,zt,Qn,N6,V6,Be,R6,Gr],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 NW=(e,u)=>({"green-text":e,"grey-text":u}),qW=(e,u)=>({"btn-danger":e,"btn-elegant":u}),VW=(e,u,t)=>({"fa-broom":e,"fa-undo":u,"fa-spinner fa-pulse":t});function RW(e,u){e&1&&(c(0,"div",12),I(1,"i",13),p(),c(2,"p",14),_(3),v(4,"translate"),p()),e&2&&(l(3),H(B(4,1,"reset.bridge_accessories.empty")))}function LW(e,u){if(e&1){let t=U();c(0,"li",18)(1,"span"),_(2),I(3,"br"),c(4,"small",19),I(5,"i",20),_(6),v(7,"translate"),c(8,"span",21),_(9),p()()(),c(10,"button",22),v(11,"translate"),M("click",function(){let n=j(t).$implicit,f=h(2);return N(f.toggleList(n._id))}),I(12,"i",23),p()()}if(e&2){let t=u.$implicit,i=h(2);l(2),q(" ",t.name," "),l(3),b("ngClass",Ju(12,NW,t._isPaired,!t._isPaired)),l(),q(" ",B(7,8,t._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," \xB7 "),l(3),H(t._username),l(),b("disabled",i.clicked)("ngClass",Ju(15,qW,!i.toDelete.includes(t._id),i.toDelete.includes(t._id))),K("aria-label",B(11,10,"form.button_delete")),l(2),b("ngClass",xu(18,VW,!i.toDelete.includes(t._id),i.toDelete.includes(t._id)&&!i.clicked,i.toDelete.includes(t._id)&&i.clicked))}}function zW(e,u){if(e&1&&(c(0,"div",12),I(1,"i",15),p(),c(2,"ul",16)(3,"li"),_(4),v(5,"translate"),p(),c(6,"li"),_(7),v(8,"translate"),p()(),c(9,"ul",17),ft(10,LW,13,22,"li",18,nt),p()),e&2){let t=h();l(4),H(B(5,2,"reset.bridge_accessories.list_1")),l(3),H(B(8,4,"reset.clear_cache_single.list_3")),l(3),rt(t.pairings)}}function HW(e,u){if(e&1){let t=U();c(0,"button",24),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}if(e&2){let t=h();b("disabled",t.clicked),l(),q(" ",B(2,2,"form.button_close")," ")}}function UW(e,u){if(e&1){let t=U();c(0,"button",25),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(1),v(2,"translate"),p()}e&2&&(l(),q(" ",B(2,1,"form.button_close")," "))}function WW(e,u){if(e&1&&_(0),e&2){let t=h(3);q(" (",t.toDelete.length,") ")}}function GW(e,u){if(e&1&&(_(0),v(1,"translate"),w(2,WW,1,1)),e&2){let t=h(2);q(" ",B(1,2,"form.button_remove")," "),l(2),S(t.toDelete.length>0?2:-1)}}function KW(e,u){e&1&&I(0,"i",27)}function JW(e,u){if(e&1){let t=U();c(0,"button",26),M("click",function(){j(t);let n=h();return N(n.cleanBridges())}),w(1,GW,3,4),w(2,KW,1,0,"i",27),p()}if(e&2){let t=h();b("disabled",!t.toDelete.length||t.clicked),l(),S(t.clicked?-1:1),l(),S(t.clicked?2:-1)}}var z6=(()=>{class e{$activeModal=x(ve);$api=x(he);$router=x(cu);$toastr=x(_e);$translate=x(Ee);childBridges=[];clicked=!1;pairings=[];toDelete=[];constructor(){}ngOnInit(){this.loadPairings()}loadPairings(){return G(this,null,function*(){try{this.pairings=(yield se(this.$api.get("/server/pairings"))).filter(t=>t._category==="bridge"&&!t._main&&this.childBridges.find(i=>i.username===t._username)).sort((t,i)=>t.name.localeCompare(i.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()}})}toggleList(t){this.toDelete.includes(t)?this.toDelete=this.toDelete.filter(i=>i!==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"))}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({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(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),v(4,"translate"),p(),c(5,"button",3),v(6,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(7,"div",4),w(8,RW,5,3),w(9,zW,12,6),p(),c(10,"div",5)(11,"div",6),w(12,HW,3,4,"button",7),p(),c(13,"div",8),w(14,UW,3,3,"button",9),p(),c(15,"div",10),w(16,JW,3,3,"button",11),p()()()),i&2&&(l(3),H(B(4,8,"child_bridge.reset_accessories")),l(2),b("disabled",n.clicked),K("aria-label",B(6,10,"form.button_close")),l(3),S(n.pairings.length===0?8:-1),l(),S(n.pairings.length>0?9:-1),l(3),S(n.pairings.length>0?12:-1),l(2),S(n.pairings.length===0?14:-1),l(2),S(n.pairings.length>0?16:-1))},dependencies:[zt,Be],encapsulation:2})}return e})();var U6=ze(of(),1);var W6=ze(A1(),1),G6=ze(k1(),1);var XW=e=>({prefix:e}),YW=e=>({link:e}),H6=(e,u,t,i)=>({"fa-circle-o":e,"fa-spinner fa-pulse":u,"fa-check-circle green-text":t,"fa-times-circle red-text":i}),ZW=(e,u,t)=>({"fa-circle-o":e,"fa-spinner fa-pulse":u,"fa-times-circle red-text":t});function QW(e,u){e&1&&(c(0,"li"),_(1),v(2,"translate"),p()),e&2&&(l(),H(B(2,1,"plugins.manage.scoped.process")))}function eG(e,u){e&1&&(I(0,"li",8),v(1,"translate"),c(2,"li"),_(3),v(4,"translate"),p()),e&2&&(b("innerHTML",B(1,2,"plugins.manage.scoped.windows"),de),l(3),H(B(4,4,"plugins.manage.manual_update_command")))}function tG(e,u){if(e&1&&(c(0,"pre",9),_(1),p()),e&2){let t=h();l(),m1(`hb-service stop
29
29
  npm install -g `,t.plugin.newHbScope.to,"@",t.plugin.newHbScope.switch,`
30
30
  npm uninstall -g `,t.plugin.newHbScope.from,`
31
- hb-service start`)}}function uG(e,u){if(e&1&&(c(0,"div",10)(1,"ul",18)(2,"li"),I(3,"i",19),_(4),v(5,"translate"),c(6,"span",20),_(7),p()(),c(8,"li"),I(9,"i",19),_(10),v(11,"translate"),c(12,"span",20),_(13),p()(),c(14,"li"),I(15,"i",19),_(16),v(17,"translate"),p()()()),e&2){let t=h();l(3),b("ngClass",Wi(14,H6,!t.installing&&!t.installed&&!t.failure,t.installing,t.installed&&!t.failure,!t.installed&&t.failure)),l(),q(" ",B(5,8,"plugins.manage.install")," "),l(3),H(t.plugin.newHbScope.to),l(2),b("ngClass",Wi(19,H6,!t.uninstalling&&!t.uninstalled&&!t.failure,t.uninstalling,t.uninstalled&&!t.failure,!t.uninstalled&&t.failure)),l(),q(" ",B(11,10,"plugins.manage.uninstall")," "),l(3),H(t.plugin.newHbScope.from),l(2),b("ngClass",xu(24,ZW,!t.restarting&&!t.failure,t.restarting,t.failure)),l(),q(" ",B(17,12,"menu.hbrestart.title")," ")}}function iG(e,u){if(e&1){let t=U();c(0,"div",11)(1,"p"),_(2),v(3,"translate"),p(),c(4,"p",20),_(5),p(),c(6,"button",21),M("click",function(){j(t);let n=h();return N(n.downloadLogFile())}),_(7),v(8,"translate"),p()()}if(e&2){let t=h();l(2),H(B(3,3,"plugins.manage.scoped.error")),l(3),H(t.failure),l(2),H(B(8,5,"form.button_download"))}}function nG(e,u){if(e&1){let t=U();c(0,"button",22),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting),K("aria-label",B(1,3,"form.button_close")),l(2),q(" ",B(3,5,"form.button_close")," ")}}function fG(e,u){if(e&1){let t=U();c(0,"button",22),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting),K("aria-label",B(1,3,"form.button_close")),l(2),q(" ",B(3,5,"form.button_close")," ")}}function rG(e,u){e&1&&(c(0,"span"),_(1),v(2,"translate"),p()),e&2&&(l(),q(" ",B(2,1,"plugins.node_update.continue")," "))}function oG(e,u){e&1&&I(0,"i",24)}function aG(e,u){if(e&1){let t=U();c(0,"button",23),M("click",function(){j(t);let n=h();return N(n.doSwitch())}),w(1,rG,3,3,"span"),w(2,oG,1,0,"i",24),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting||!t.onlineUpdateOk||t.failure),l(),S(!t.installing&&!t.uninstalling&&!t.restarting?1:-1),l(),S((t.installing||t.uninstalling||t.restarting)&&!t.failure?2:-1)}}var K6=(()=>{class e{$activeModal=x(ve);$api=x(he);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);$ws=x(Qi);plugin;installing=!1;installed=!1;uninstalling=!1;uninstalled=!1;restarting=!1;failure="";onlineUpdateOk;moreInfo='<a href="https://github.com/homebridge/plugins/wiki/Scoped-Plugins" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';prefix='<span class="font-monospace">@homebridge-plugins/</span>';io;term;termTarget;fitAddon=new G6.FitAddon;errorLog="";constructor(){this.term=new W6.Terminal({theme:{background:"#00000000",foreground:this.$settings.actualLightingMode==="light"?"#333333":"#eeeeee",cursor:"#d2d2d2",selection:"#d2d2d2"},allowTransparency:!0}),this.term.loadAddon(this.fitAddon)}ngOnInit(){this.onlineUpdateOk=this.$settings.env.platform!=="win32",this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",t=>{this.term.write(t);let i=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();i&&(this.errorLog+=`${i}\r
31
+ hb-service start`)}}function uG(e,u){if(e&1&&(c(0,"div",10)(1,"ul",18)(2,"li"),I(3,"i",19),_(4),v(5,"translate"),c(6,"span",20),_(7),p()(),c(8,"li"),I(9,"i",19),_(10),v(11,"translate"),c(12,"span",20),_(13),p()(),c(14,"li"),I(15,"i",19),_(16),v(17,"translate"),p()()()),e&2){let t=h();l(3),b("ngClass",Wi(14,H6,!t.installing&&!t.installed&&!t.failure,t.installing,t.installed&&!t.failure,!t.installed&&t.failure)),l(),q(" ",B(5,8,"plugins.manage.install")," "),l(3),H(t.plugin.newHbScope.to),l(2),b("ngClass",Wi(19,H6,!t.uninstalling&&!t.uninstalled&&!t.failure,t.uninstalling,t.uninstalled&&!t.failure,!t.uninstalled&&t.failure)),l(),q(" ",B(11,10,"plugins.manage.uninstall")," "),l(3),H(t.plugin.newHbScope.from),l(2),b("ngClass",xu(24,ZW,!t.restarting&&!t.failure,t.restarting,t.failure)),l(),q(" ",B(17,12,"menu.hbrestart.title")," ")}}function iG(e,u){if(e&1){let t=U();c(0,"div",11)(1,"p"),_(2),v(3,"translate"),p(),c(4,"p",20),_(5),p(),c(6,"button",21),M("click",function(){j(t);let n=h();return N(n.downloadLogFile())}),_(7),v(8,"translate"),p()()}if(e&2){let t=h();l(2),H(B(3,3,"plugins.manage.scoped.error")),l(3),H(t.failure),l(2),H(B(8,5,"form.button_download"))}}function nG(e,u){if(e&1){let t=U();c(0,"button",22),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting),K("aria-label",B(1,3,"form.button_close")),l(2),q(" ",B(3,5,"form.button_close")," ")}}function fG(e,u){if(e&1){let t=U();c(0,"button",22),v(1,"translate"),M("click",function(){j(t);let n=h();return N(n.$activeModal.dismiss("Dismiss"))}),_(2),v(3,"translate"),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting),K("aria-label",B(1,3,"form.button_close")),l(2),q(" ",B(3,5,"form.button_close")," ")}}function rG(e,u){e&1&&(c(0,"span"),_(1),v(2,"translate"),p()),e&2&&(l(),q(" ",B(2,1,"form.label_continue")," "))}function oG(e,u){e&1&&I(0,"i",24)}function aG(e,u){if(e&1){let t=U();c(0,"button",23),M("click",function(){j(t);let n=h();return N(n.doSwitch())}),w(1,rG,3,3,"span"),w(2,oG,1,0,"i",24),p()}if(e&2){let t=h();b("disabled",t.installing||t.uninstalling||t.restarting||!t.onlineUpdateOk||t.failure),l(),S(!t.installing&&!t.uninstalling&&!t.restarting?1:-1),l(),S((t.installing||t.uninstalling||t.restarting)&&!t.failure?2:-1)}}var K6=(()=>{class e{$activeModal=x(ve);$api=x(he);$router=x(cu);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);$ws=x(Qi);plugin;installing=!1;installed=!1;uninstalling=!1;uninstalled=!1;restarting=!1;failure="";onlineUpdateOk;moreInfo='<a href="https://github.com/homebridge/plugins/wiki/Scoped-Plugins" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';prefix='<span class="font-monospace">@homebridge-plugins/</span>';io;term;termTarget;fitAddon=new G6.FitAddon;errorLog="";constructor(){this.term=new W6.Terminal({theme:{background:"#00000000",foreground:this.$settings.actualLightingMode==="light"?"#333333":"#eeeeee",cursor:"#d2d2d2",selection:"#d2d2d2"},allowTransparency:!0}),this.term.loadAddon(this.fitAddon)}ngOnInit(){this.onlineUpdateOk=this.$settings.env.platform!=="win32",this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",t=>{this.term.write(t);let i=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();i&&(this.errorLog+=`${i}\r
32
32
  `)})}doSwitch(){this.installing=!0,this.io.request("install",{name:this.plugin.newHbScope.to,version:this.plugin.newHbScope.switch,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.installing=!1,this.installed=!0,this.uninstalling=!0,this.io.request("uninstall",{name:this.plugin.newHbScope.from,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.uninstalling=!1,this.uninstalled=!0,this.restarting=!0,this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$activeModal.close(),this.$router.navigate(["/restart"])},error:t=>{this.restarting=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})},error:t=>{this.uninstalling=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})},error:t=>{this.installing=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}downloadLogFile(){let t=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,U6.saveAs)(t,`${this.plugin.name}-error.log`)}ngOnDestroy(){this.io.end(),this.term.dispose()}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:31,vars:31,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,"mb-3","text-center"],[1,"fas","fa-fw","fa-arrow-right-arrow-left","primary-text",2,"font-size","75px"],[1,"mb-0"],[3,"innerHTML"],[1,"mt-3","mb-0"],[1,"text-center"],[1,"alert","alert-error","mb-0"],["id","plugin-output",1,"mb-0",3,"hidden"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"disabled"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"d-inline-block","text-start","mt-3","mb-3",2,"list-style-type","none"],[1,"fa","fa-fw",3,"ngClass"],[1,"font-monospace"],[1,"btn","btn-primary","mb-0",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),v(4,"translate"),p(),c(5,"button",3),v(6,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(7,"div",4)(8,"div",5),I(9,"i",6),p(),c(10,"ul",7),I(11,"li",8),v(12,"translate"),c(13,"li"),_(14),v(15,"translate"),p(),I(16,"li",8),v(17,"translate"),w(18,QW,3,3,"li"),w(19,eG,5,6),p(),w(20,tG,2,3,"pre",9),w(21,uG,18,28,"div",10),w(22,iG,9,7,"div",11),I(23,"div",12),p(),c(24,"div",13)(25,"div",14),w(26,nG,4,7,"button",15),p(),c(27,"div",10),w(28,fG,4,7,"button",15),p(),c(29,"div",16),w(30,aG,3,3,"button",17),p()()()),i&2&&(l(3),H(B(4,15,"plugins.manage.scoped.switch")),l(2),b("disabled",n.installing||n.uninstalling||n.restarting),K("aria-label",B(6,17,"form.button_close")),l(6),b("innerHTML",Ye(12,19,"plugins.manage.scoped.info_1",eu(27,XW,n.prefix)),de),l(3),H(B(15,22,"plugins.manage.scoped_message")),l(2),b("innerHTML",Ye(17,24,"plugins.manage.scoped.info_2",eu(29,YW,n.moreInfo)),de),l(2),S(n.onlineUpdateOk?18:-1),l(),S(n.onlineUpdateOk?-1:19),l(),S(n.onlineUpdateOk?-1:20),l(),S(n.onlineUpdateOk?21:-1),l(),S(n.failure?22:-1),l(),b("hidden",!n.onlineUpdateOk||n.failure),l(3),S(n.onlineUpdateOk?26:-1),l(2),S(n.onlineUpdateOk?-1:28),l(2),S(n.onlineUpdateOk?30:-1))},dependencies:[zt,Be],styles:["#plugin-output[_ngcontent-%COMP%]{height:150px;overflow-y:auto;overflow-x:hidden}"]})}return e})();var sG=e=>({pluginName:e}),DG=e=>({count:e});function lG(e,u){e&1&&(c(0,"div",5),I(1,"i",13),p())}function dG(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"plugins.uninstall_remove_child_bridge")," ")}function cG(e,u){if(e&1&&(_(0),v(1,"translate")),e&2){let t=h(4);q(" ",Ye(1,1,"plugins.uninstall_remove_child_bridges",eu(4,DG,t.childBridges.length))," ")}}function pG(e,u){if(e&1){let t=U();c(0,"label",24)(1,"input",25),Oe("ngModelChange",function(n){j(t);let f=h(3);return Pe(f.removeChildBridges,n)||(f.removeChildBridges=n),N(n)}),p(),w(2,dG,2,3),w(3,cG,2,6),I(4,"span",23),p()}if(e&2){let t=h(3);l(),Te("ngModel",t.removeChildBridges),l(),S(t.childBridges.length===1?2:-1),l(),S(t.childBridges.length>1?3:-1)}}function mG(e,u){if(e&1){let t=U();c(0,"p",16)(1,"label",21)(2,"input",22),Oe("ngModelChange",function(n){j(t);let f=h(2);return Pe(f.removeConfig,n)||(f.removeConfig=n),N(n)}),p(),_(3),v(4,"translate"),I(5,"span",23),p(),w(6,pG,5,3,"label",24),p()}if(e&2){let t=h(2);l(2),Te("ngModel",t.removeConfig),l(),q(" ",B(4,3,"plugins.uninstall_remove_plugin_config")," "),l(3),S(t.hasChildBridges?6:-1)}}function FG(e,u){e&1&&(c(0,"ul",17)(1,"li"),_(2),v(3,"translate"),p(),c(4,"li"),_(5),v(6,"translate"),p()()),e&2&&(l(2),H(B(3,2,"plugins.uninstall_warn_1")),l(3),H(B(6,4,"plugins.uninstall_warn_2")))}function CG(e,u){e&1&&(c(0,"ngb-alert",18),_(1),v(2,"translate"),p()),e&2&&(b("dismissible",!1),l(),q(" ",B(2,2,"plugins.uninstall_remove_config_required")," "))}function hG(e,u){if(e&1&&(c(0,"div",14),I(1,"i",15),p(),c(2,"div",9),w(3,mG,7,5,"p",16),p(),w(4,FG,7,6,"ul",17),w(5,CG,3,4,"ngb-alert",18),c(6,"ngb-alert",19)(7,"p",20),_(8),v(9,"translate"),p()()),e&2){let t=h();l(3),S(t.pluginAlias&&t.pluginType?3:-1),l(),S(t.hasChildBridges&&t.removeChildBridges?4:-1),l(),S(!t.pluginAlias||!t.pluginType?5:-1),l(),b("dismissible",!1),l(2),H(Ye(9,5,"plugins.uninstall_remove_confirmation",eu(8,sG,t.plugin.displayName)))}}function gG(e,u){e&1&&(_(0),v(1,"translate")),e&2&&q(" ",B(1,1,"plugins.manage.uninstall")," ")}function bG(e,u){e&1&&I(0,"i",12)}var J6=(()=>{class e{$activeModal=x(ve);$api=x(he);$modal=x(it);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);plugin;childBridges;action;loading=!0;uninstalling=!1;removeConfig=!0;removeChildBridges=!0;hasChildBridges=!1;pluginType;pluginAlias;constructor(){}ngOnInit(){return G(this,null,function*(){try{this.childBridges.length&&(this.hasChildBridges=!0);let t=yield this.getAlias();this.pluginType=t.pluginType,this.pluginAlias=t.pluginAlias}finally{this.loading=!1}})}doUninstall(){return G(this,null,function*(){if(this.uninstalling=!0,this.removeConfig&&this.pluginType&&this.pluginAlias)try{yield this.removePluginConfig()}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.config.remove_error"),this.$translate.instant("toast.title_error"))}if(this.hasChildBridges&&this.removeChildBridges)try{yield Promise.all(this.childBridges.map(i=>this.removeChildBridge(i.username.replace(/:/g,""))))}catch(i){console.error(i)}this.$activeModal.dismiss();let t=this.$modal.open(tf,{size:"lg",backdrop:"static"});t.componentInstance.action="Uninstall",t.componentInstance.pluginName=this.plugin.name,t.componentInstance.pluginDisplayName=this.plugin.displayName})}getAlias(){return G(this,null,function*(){return se(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`))})}removePluginConfig(){return G(this,null,function*(){yield se(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,[])),yield se(this.$api.put(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}/enable`,{})),this.$toastr.success(this.$translate.instant("plugins.settings.plugin_config_saved"),this.$translate.instant("toast.title_success"))})}removeChildBridge(t){return G(this,null,function*(){try{yield se(this.$api.delete(`/server/pairings/${t}`))}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.uninstall_bridge_error"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin",childBridges:"childBridges",action:"action"},decls:20,vars:17,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","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,"click","disabled"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"fas","fa-fw","fa-trash","primary-text",2,"font-size","75px"],[1,"d-inline-block","text-start","mb-1"],[1,"mb-3","text-start"],["type","info",1,"mb-3",3,"dismissible"],["type","warning",1,"mb-0",3,"dismissible"],[1,"mb-0"],["for","remove-plugin-config",1,"hb-uix-switch","d-block"],["id","remove-plugin-config","type","checkbox",3,"ngModelChange","ngModel"],[1,"hb-uix-slider","hb-uix-round"],["for","remove-plugin-child-bridges",1,"hb-uix-switch","d-block"],["id","remove-plugin-child-bridges","type","checkbox",3,"ngModelChange","ngModel"]],template:function(i,n){i&1&&(c(0,"div",0)(1,"div",1)(2,"h5",2),_(3),p(),c(4,"button",3),v(5,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),p()(),c(6,"div",4),w(7,lG,2,0,"div",5),w(8,hG,10,10),p(),c(9,"div",6)(10,"div",7)(11,"button",8),v(12,"translate"),M("click",function(){return n.$activeModal.dismiss("Dismiss")}),_(13),v(14,"translate"),p()(),I(15,"div",9),c(16,"div",10)(17,"button",11),M("click",function(){return n.doUninstall()}),w(18,gG,2,3),w(19,bG,1,0,"i",12),p()()()()),i&2&&(l(3),H(n.plugin.displayName||n.plugin.name),l(),b("disabled",n.uninstalling),K("aria-label",B(5,11,"form.button_close")),l(3),S(n.loading?7:-1),l(),S(n.loading?-1:8),l(3),b("disabled",n.uninstalling),K("aria-label",B(12,13,"form.button_close")),l(2),q(" ",B(14,15,"form.button_close")," "),l(4),b("disabled",n.loading||n.uninstalling),l(),S(n.uninstalling?-1:18),l(),S(n.uninstalling?19:-1))},dependencies:[tu,Gi,vt,Yu,Yi,Be],encapsulation:2})}return e})();var bi=(()=>{class e{$api=x(he);$modal=x(it);$customPluginsService=x(b6);$settings=x(Ve);$toastr=x(_e);$translate=x(Ee);constructor(){}installPlugin(t,i="latest"){let n=this.$modal.open(tf,{size:"lg",backdrop:"static"});n.componentInstance.action="Install",n.componentInstance.pluginName=t.name,n.componentInstance.pluginDisplayName=t.displayName,n.componentInstance.targetVersion=i}uninstallPlugin(t,i){let n=this.$modal.open(J6,{size:"lg",backdrop:"static"});n.componentInstance.action="Uninstall",n.componentInstance.plugin=t,n.componentInstance.childBridges=i}checkAndUpdatePlugin(t,i="latest"){return G(this,null,function*(){(yield this.checkHbAndNodeVersion(t,"update"))&&(yield this.updatePlugin(t,i))})}updatePlugin(t,i){return G(this,null,function*(){let n=this.$modal.open(tf,{size:"lg",backdrop:"static"});n.componentInstance.action="Update",n.componentInstance.pluginName=t.name,n.componentInstance.pluginDisplayName=t.displayName,n.componentInstance.targetVersion=i,n.componentInstance.latestVersion=t.latestVersion,n.componentInstance.installedVersion=t.installedVersion,n.componentInstance.isDisabled=t.disabled})}upgradeHomebridge(t,i="latest"){return G(this,null,function*(){if(!(yield this.checkHbAndNodeVersion(t,"update")))return;let n=this.$modal.open(tf,{size:"lg",backdrop:"static"});n.componentInstance.action="Update",n.componentInstance.pluginName=t.name,n.componentInstance.pluginDisplayName=t.displayName,n.componentInstance.targetVersion=i,n.componentInstance.latestVersion=t.latestVersion,n.componentInstance.installedVersion=t.installedVersion})}installAlternateVersion(t){return G(this,null,function*(){let i=this.$modal.open(A6,{size:"lg",backdrop:"static"});i.componentInstance.plugin=t;try{let{action:n,version:f,engines:r}=yield i.result;return(yield this.checkHbAndNodeVersion(Se(X({},t),{updateEngines:r}),n))?t.name==="homebridge"?yield this.upgradeHomebridge(t,f):t.installedVersion?yield this.updatePlugin(t,f):this.installPlugin(t,f):void 0}catch{}})}bridgeSettings(t,i=!1){return G(this,null,function*(){let n;if(t.settingsSchema)try{n=yield this.loadConfigSchema(t.name)}catch(r){console.error(r),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}let f=this.$modal.open(T6,{size:"lg",backdrop:"static"});f.componentInstance.schema=n,f.componentInstance.plugin=t,f.componentInstance.justInstalled=i})}settings(t){return G(this,null,function*(){let i;if(t.settingsSchema)try{i=yield this.loadConfigSchema(t.name)}catch(f){console.error(f),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}if(i&&i.customUi)return this.$customPluginsService.openCustomSettingsUi(t,i);if(this.$customPluginsService.plugins[t.name])return this.$customPluginsService.openSettings(t,i);let n=this.$modal.open(t.settingsSchema?L6:Jl,{size:"lg",backdrop:"static"});return n.componentInstance.schema=i,n.componentInstance.plugin=t,n.result.catch(()=>{})})}jsonEditor(t){return G(this,null,function*(){let i;if(t.settingsSchema)try{i=yield this.loadConfigSchema(t.name)}catch(f){console.error(f)}let n=this.$modal.open(Jl,{size:"lg",backdrop:"static"});return n.componentInstance.schema=i,n.componentInstance.plugin=t,n.result.catch(f=>console.error(f))})}checkHbAndNodeVersion(t,i){return G(this,null,function*(){let n=!0,f=!0;try{t.updateEngines?.node&&(0,uf.lt)(this.$settings.env.nodeVersion,(0,uf.minVersion)(t.updateEngines.node))&&(n=!1),t.updateEngines?.homebridge&&(0,uf.lt)(this.$settings.env.homebridgeVersion,(0,uf.minVersion)(t.updateEngines.homebridge))&&(f=!1)}catch(r){return console.error(r),this.$toastr.error(r.message,this.$translate.instant("toast.title_error")),!1}if(!n||!f)try{let r=this.$modal.open(O6,{size:"lg",backdrop:"static"});return r.componentInstance.plugin=t,r.componentInstance.isValidNode=n,r.componentInstance.isValidHb=f,r.componentInstance.action=i,yield r.result}catch{return!1}return!0})}loadConfigSchema(t){return G(this,null,function*(){return se(this.$api.get(`/plugins/config-schema/${encodeURIComponent(t)}`))})}resetChildBridges(t){return G(this,null,function*(){let i=this.$modal.open(z6,{size:"lg",backdrop:"static"});i.componentInstance.childBridges=t})}switchToScoped(t){return G(this,null,function*(){let i=this.$modal.open(K6,{size:"lg",backdrop:"static"});i.componentInstance.plugin=t})}static \u0275fac=function(i){return new(i||e)};static \u0275prov=Ot({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{Gl as a,ql as b,tt as c,WZ as d,Ke as e,d4 as f,p4 as g,jl as h,sq as i,m4 as j,m6 as k,g6 as l,b6 as m,y6 as n,tf as o,A6 as p,Jl as q,T6 as r,O6 as s,L6 as t,J6 as u,bi as v};