homebridge-config-ui-x 5.2.1-beta.2 → 5.2.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/config.schema.json +32 -0
- package/dist/core/auth/auth.controller.d.ts +5 -6
- package/dist/core/config/config.service.d.ts +10 -9
- package/dist/core/config/config.service.js +5 -3
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.controller.d.ts +11 -0
- package/dist/modules/platform-tools/terminal/terminal.controller.js +46 -0
- package/dist/modules/platform-tools/terminal/terminal.controller.js.map +1 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +1 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.js +9 -0
- package/dist/modules/platform-tools/terminal/terminal.gateway.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.module.js +4 -0
- package/dist/modules/platform-tools/terminal/terminal.module.js.map +1 -1
- package/dist/modules/platform-tools/terminal/terminal.service.d.ts +1 -0
- package/dist/modules/platform-tools/terminal/terminal.service.js +7 -2
- package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
- package/package.json +1 -1
- package/public/chunk-2EA5UCBE.js +20 -0
- package/public/{chunk-AUWR5H2A.js → chunk-2G2G5D2C.js} +1 -1
- package/public/{chunk-E74SDSOB.js → chunk-2IJIUQHS.js} +1 -1
- package/public/chunk-2JQYF33Q.js +1 -0
- package/public/{chunk-MSF5I4U2.js → chunk-2OFCKVVD.js} +1 -1
- package/public/{chunk-LWX72DT2.js → chunk-2RKUDCJ6.js} +5 -5
- package/public/{chunk-BCK7KVRQ.js → chunk-2SPNEO5Z.js} +1 -1
- package/public/{chunk-YGYN2VIN.js → chunk-34CFUFM4.js} +1 -1
- package/public/{chunk-N5JWFVOK.js → chunk-5LVPMXW6.js} +1 -1
- package/public/chunk-63ZAX4W7.js +5 -0
- package/public/{chunk-2DZLV6J3.js → chunk-6BCYYWML.js} +1 -1
- package/public/{chunk-JQTSHXFE.js → chunk-6UTN7LNS.js} +1 -1
- package/public/{chunk-6P5CBUSK.js → chunk-AIQQGFRW.js} +1 -1
- package/public/{chunk-R6XXAITV.js → chunk-BXK2GHAW.js} +1 -1
- package/public/{chunk-XP3CHSCB.js → chunk-CBXKL2D4.js} +1 -1
- package/public/{chunk-7622KGTL.js → chunk-CP4425IM.js} +1 -1
- package/public/{chunk-4ZYGJMXW.js → chunk-CTPZNDZV.js} +1 -1
- package/public/{chunk-IOZZWAPL.js → chunk-D7ZJGJFL.js} +1 -1
- package/public/{chunk-2YY7HCF4.js → chunk-DYCIGMJH.js} +1 -1
- package/public/{chunk-7HCGM76M.js → chunk-DYJIASZY.js} +1 -1
- package/public/{chunk-RQRINXWC.js → chunk-ENGXYMKB.js} +1 -1
- package/public/chunk-F3RZH23D.js +1 -0
- package/public/{chunk-N5XBHM63.js → chunk-FBUXDF7O.js} +1 -1
- package/public/chunk-FBYHCCLN.js +1 -0
- package/public/{chunk-6RB567N4.js → chunk-FHKNGSN4.js} +2 -2
- package/public/{chunk-7ILRTIPC.js → chunk-G4N6TU5A.js} +1 -1
- package/public/{chunk-257Z3FEX.js → chunk-GPUZPTN4.js} +1 -1
- package/public/{chunk-LMME7DF7.js → chunk-IF2MY3JI.js} +1 -1
- package/public/{chunk-Q4VLAFNC.js → chunk-IMN7H4JK.js} +1 -1
- package/public/{chunk-X2DFA2MY.js → chunk-KBB4HBFD.js} +1 -1
- package/public/{chunk-NM63HVCD.js → chunk-MY2GNSS3.js} +1 -1
- package/public/{chunk-L2KN725U.js → chunk-P5U4CYHB.js} +1 -1
- package/public/chunk-PYSX24ZW.js +1 -0
- package/public/chunk-QLQG37MU.js +1 -0
- package/public/{chunk-XPNLZZEF.js → chunk-R3ZK4BA7.js} +1 -1
- package/public/{chunk-5ZKOITQZ.js → chunk-SQ2NNUW2.js} +1 -1
- package/public/{chunk-3HR7D3CJ.js → chunk-SUZY3J7O.js} +1 -1
- package/public/{chunk-LHPZ4GZG.js → chunk-UPXAGR47.js} +1 -1
- package/public/{chunk-Q5REQXYQ.js → chunk-VAL7FQ44.js} +1 -1
- package/public/{chunk-NXVXHA2V.js → chunk-VH7BMERV.js} +1 -1
- package/public/chunk-W6RS6NBX.js +1 -0
- package/public/chunk-WBYZSZSQ.js +1 -0
- package/public/{chunk-YEHVECR5.js → chunk-WGDEWOJU.js} +1 -1
- package/public/{chunk-53FPP2IJ.js → chunk-XDR6SZ6V.js} +1 -1
- package/public/{chunk-35OEX2R2.js → chunk-XP7YJNXR.js} +1 -1
- package/public/{chunk-WK6HLUOP.js → chunk-YCH3UKFR.js} +1 -1
- package/public/chunk-YXXZXBDD.js +1 -0
- package/public/chunk-ZM3OKI4W.js +1 -0
- package/public/index.html +1 -1
- package/public/main-ZXPYW5WY.js +1 -0
- package/public/chunk-A3SWYDYK.js +0 -1
- package/public/chunk-FAELDM7K.js +0 -1
- package/public/chunk-FM3OFRLV.js +0 -1
- package/public/chunk-GK4OAY7M.js +0 -1
- package/public/chunk-K46AA6SH.js +0 -1
- package/public/chunk-NGIL2WPB.js +0 -1
- package/public/chunk-NO3KHC6W.js +0 -20
- package/public/chunk-P7J6OX3V.js +0 -5
- package/public/chunk-QXJKMGDB.js +0 -1
- package/public/chunk-VH7ATYMN.js +0 -1
- package/public/main-AMBVFZVI.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Hf}from"./chunk-L2KN725U.js";import{a as _i,b as o2}from"./chunk-PJDX7TKL.js";import{a as qf}from"./chunk-ZT56WXIZ.js";import{a as Lf}from"./chunk-P3TP4J62.js";import{a as zf}from"./chunk-E74SDSOB.js";import{a as lo}from"./chunk-YFQVSUDS.js";import{a as Bf,c as Rf}from"./chunk-BSZ6MHFZ.js";import{a as Uf}from"./chunk-ADNBR4EK.js";import{a as Qa,b as is}from"./chunk-7FO4RGTF.js";import{a as es,b as ts}from"./chunk-2KOR6LRK.js";import{a as Vf}from"./chunk-K46AA6SH.js";import{a as Ka,b as Ga,c as Ja,d as Xa,e as Ya,f as Za,g as rr,m as Oe,n as ot,o as Df,p as Af,q as Nf,r as jf,s as Ff,t as or}from"./chunk-PSSVCFFV.js";import{A as so,a as If,b as Yi,c as ir,e as $t,f as $f,h as Ef,i as Tf,j as Pf,k as Of,l as Zi,m as kf,o as Qi,r as nr,s as On,t as kn,y as Mf,z as oi}from"./chunk-K2NEWUWG.js";import{a as tn}from"./chunk-53FPP2IJ.js";import{d as yi}from"./chunk-QRQBCPWO.js";import{b as Re}from"./chunk-FAELDM7K.js";import{k as Ce,m as en,n as ve}from"./chunk-4ZYGJMXW.js";import{a as xe,b as ke}from"./chunk-ZG3HINDJ.js";import{e as Sf}from"./chunk-K7QEGT3E.js";import{$a as mf,Ac as vf,Bc as xf,Ca as Wi,Cc as Pe,D as uf,Da as ff,Dc as ri,Ec as Tn,Fa as Qn,Fc as Wt,Gc as tr,Hb as G,Hc as w,Ib as E,Ic as I,Jb as T,Jc as He,Lb as at,M as Yn,Mb as st,Nb as lt,Ob as b,Pb as f,Qb as m,Qc as xt,Rb as $,Rc as z,Sb as Qe,Sc as Xi,Tb as rt,Ub as gi,Uc as Cf,Vb as yf,Wb as _f,Xa as he,Z as lu,_b as H,a as X,aa as ao,ab as d,b as $e,bc as q,cc as Ht,dc as y,e as g,fa as cf,fb as Ua,g as ze,ga as Ft,gb as Ti,h as K,ha as Zn,hc as uu,ib as In,ic as cu,id as Kt,ja as df,jc as du,jd as Pn,k as of,ka as pf,kc as Ki,kd as Ct,la as P,lc as Gi,mb as Y,mc as bf,n as jt,nb as er,nc as ni,o as su,ob as $n,oc as Ji,pb as hf,pc as Z,q as af,qc as x,ra as j,rc as R,rd as Wa,sa as F,sb as ue,sc as V,tc as En,ub as gf,uc as Ha,v as sf,vb as za,w as le,x as lf,xc as Ae,yc as Ne,za as La,zc as je,zd as wf}from"./chunk-V7SOQAC5.js";var po=g(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 uo=class{};be._CodeOrName=uo;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Mn=class extends uo{constructor(t){if(super(),!be.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=Mn;var Gt=class extends uo{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((i,n)=>`${i}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((i,n)=>(n instanceof Mn&&(i[n.str]=(i[n.str]||0)+1),i),{})}};be._Code=Gt;be.nil=new Gt("");function Wf(e,...t){let i=[e[0]],n=0;for(;n<t.length;)fu(i,t[n]),i.push(e[++n]);return new Gt(i)}be._=Wf;var pu=new Gt("+");function Kf(e,...t){let i=[co(e[0])],n=0;for(;n<t.length;)i.push(pu),fu(i,t[n]),i.push(pu,co(e[++n]));return s2(i),new Gt(i)}be.str=Kf;function fu(e,t){t instanceof Gt?e.push(...t._items):t instanceof Mn?e.push(t):e.push(c2(t))}be.addCodeArg=fu;function s2(e){let t=1;for(;t<e.length-1;){if(e[t]===pu){let i=l2(e[t-1],e[t+1]);if(i!==void 0){e.splice(t-1,3,i);continue}e[t++]="+"}t++}}function l2(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof Mn||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof Mn))return`"${e}${t.slice(1)}`}function u2(e,t){return t.emptyStr()?e:e.emptyStr()?t:Kf`${e}${t}`}be.strConcat=u2;function c2(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:co(Array.isArray(e)?e.join(","):e)}function d2(e){return new Gt(co(e))}be.stringify=d2;function co(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=co;function p2(e){return typeof e=="string"&&be.IDENTIFIER.test(e)?new Gt(`.${e}`):Wf`[${e}]`}be.getProperty=p2;function f2(e){if(typeof e=="string"&&be.IDENTIFIER.test(e))return new Gt(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}be.getEsmExportName=f2;function m2(e){return new Gt(e.toString())}be.regexpCode=m2});var gu=g(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.ValueScope=Tt.ValueScopeName=Tt.Scope=Tt.varKinds=Tt.UsedValueState=void 0;var Et=po(),mu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},ns=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(ns||(Tt.UsedValueState=ns={}));Tt.varKinds={const:new Et.Name("const"),let:new Et.Name("let"),var:new Et.Name("var")};var rs=class{constructor({prefixes:t,parent:i}={}){this._names={},this._prefixes=t,this._parent=i}toName(t){return t instanceof Et.Name?t:this.name(t)}name(t){return new Et.Name(this._newName(t))}_newName(t){let i=this._names[t]||this._nameGroup(t);return`${t}${i.index++}`}_nameGroup(t){var i,n;if(!((n=(i=this._parent)===null||i===void 0?void 0:i._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Tt.Scope=rs;var os=class extends Et.Name{constructor(t,i){super(i),this.prefix=t}setValue(t,{property:i,itemIndex:n}){this.value=t,this.scopePath=(0,Et._)`.${new Et.Name(i)}[${n}]`}};Tt.ValueScopeName=os;var h2=(0,Et._)`\n`,hu=class extends rs{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts=$e(X({},t),{_n:t.lines?h2:Et.nil})}get(){return this._scope}name(t){return new os(t,this._newName(t))}value(t,i){var n;if(i.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let r=this.toName(t),{prefix:o}=r,a=(n=i.key)!==null&&n!==void 0?n:i.ref,s=this._values[o];if(s){let c=s.get(a);if(c)return c}else s=this._values[o]=new Map;s.set(a,r);let l=this._scope[o]||(this._scope[o]=[]),u=l.length;return l[u]=i.ref,r.setValue(i,{property:o,itemIndex:u}),r}getValue(t,i){let n=this._values[t];if(n)return n.get(i)}scopeRefs(t,i=this._values){return this._reduceValues(i,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Et._)`${t}${n.scopePath}`})}scopeCode(t=this._values,i,n){return this._reduceValues(t,r=>{if(r.value===void 0)throw new Error(`CodeGen: name "${r}" has no value`);return r.value.code},i,n)}_reduceValues(t,i,n={},r){let o=Et.nil;for(let a in t){let s=t[a];if(!s)continue;let l=n[a]=n[a]||new Map;s.forEach(u=>{if(l.has(u))return;l.set(u,ns.Started);let c=i(u);if(c){let p=this.opts.es5?Tt.varKinds.var:Tt.varKinds.const;o=(0,Et._)`${o}${p} ${u} = ${c};${this.opts._n}`}else if(c=r?.(u))o=(0,Et._)`${o}${c}${this.opts._n}`;else throw new mu(u);l.set(u,ns.Completed)})}return o}};Tt.ValueScope=hu});var ee=g(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.or=ce.and=ce.not=ce.CodeGen=ce.operators=ce.varKinds=ce.ValueScopeName=ce.ValueScope=ce.Scope=ce.Name=ce.regexpCode=ce.stringify=ce.getProperty=ce.nil=ce.strConcat=ce.str=ce._=void 0;var ge=po(),ai=gu(),nn=po();Object.defineProperty(ce,"_",{enumerable:!0,get:function(){return nn._}});Object.defineProperty(ce,"str",{enumerable:!0,get:function(){return nn.str}});Object.defineProperty(ce,"strConcat",{enumerable:!0,get:function(){return nn.strConcat}});Object.defineProperty(ce,"nil",{enumerable:!0,get:function(){return nn.nil}});Object.defineProperty(ce,"getProperty",{enumerable:!0,get:function(){return nn.getProperty}});Object.defineProperty(ce,"stringify",{enumerable:!0,get:function(){return nn.stringify}});Object.defineProperty(ce,"regexpCode",{enumerable:!0,get:function(){return nn.regexpCode}});Object.defineProperty(ce,"Name",{enumerable:!0,get:function(){return nn.Name}});var cs=gu();Object.defineProperty(ce,"Scope",{enumerable:!0,get:function(){return cs.Scope}});Object.defineProperty(ce,"ValueScope",{enumerable:!0,get:function(){return cs.ValueScope}});Object.defineProperty(ce,"ValueScopeName",{enumerable:!0,get:function(){return cs.ValueScopeName}});Object.defineProperty(ce,"varKinds",{enumerable:!0,get:function(){return cs.varKinds}});ce.operators={GT:new ge._Code(">"),GTE:new ge._Code(">="),LT:new ge._Code("<"),LTE:new ge._Code("<="),EQ:new ge._Code("==="),NEQ:new ge._Code("!=="),NOT:new ge._Code("!"),OR:new ge._Code("||"),AND:new ge._Code("&&"),ADD:new ge._Code("+")};var Pi=class{optimizeNodes(){return this}optimizeNames(t,i){return this}},yu=class extends Pi{constructor(t,i,n){super(),this.varKind=t,this.name=i,this.rhs=n}render({es5:t,_n:i}){let n=t?ai.varKinds.var:this.varKind,r=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${r};`+i}optimizeNames(t,i){if(t[this.name.str])return this.rhs&&(this.rhs=sr(this.rhs,t,i)),this}get names(){return this.rhs instanceof ge._CodeOrName?this.rhs.names:{}}},ss=class extends Pi{constructor(t,i,n){super(),this.lhs=t,this.rhs=i,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,i){if(!(this.lhs instanceof ge.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=sr(this.rhs,t,i),this}get names(){let t=this.lhs instanceof ge.Name?{}:X({},this.lhs.names);return us(t,this.rhs)}},_u=class extends ss{constructor(t,i,n,r){super(t,n,r),this.op=i}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},bu=class extends Pi{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},vu=class extends Pi{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},xu=class extends Pi{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},Cu=class extends Pi{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,i){return this.code=sr(this.code,t,i),this}get names(){return this.code instanceof ge._CodeOrName?this.code.names:{}}},fo=class extends Pi{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((i,n)=>i+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,i=t.length;for(;i--;){let n=t[i].optimizeNodes();Array.isArray(n)?t.splice(i,1,...n):n?t[i]=n:t.splice(i,1)}return t.length>0?this:void 0}optimizeNames(t,i){let{nodes:n}=this,r=n.length;for(;r--;){let o=n[r];o.optimizeNames(t,i)||(g2(t,o.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,i)=>Dn(t,i.names),{})}},Oi=class extends fo{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},wu=class extends fo{},Su=(()=>{class e extends Oi{}return e.kind="else",e})(),as=(()=>{class e extends Oi{constructor(i,n){super(n),this.condition=i}render(i){let n=`if(${this.condition})`+super.render(i);return this.else&&(n+="else "+this.else.render(i)),n}optimizeNodes(){super.optimizeNodes();let i=this.condition;if(i===!0)return this.nodes;let n=this.else;if(n){let r=n.optimizeNodes();n=this.else=Array.isArray(r)?new Su(r):r}if(n)return i===!1?n instanceof e?n:n.nodes:this.nodes.length?this:new e(Zf(i),n instanceof e?[n]:n.nodes);if(!(i===!1||!this.nodes.length))return this}optimizeNames(i,n){var r;if(this.else=(r=this.else)===null||r===void 0?void 0:r.optimizeNames(i,n),!!(super.optimizeNames(i,n)||this.else))return this.condition=sr(this.condition,i,n),this}get names(){let i=super.names;return us(i,this.condition),this.else&&Dn(i,this.else.names),i}}return e.kind="if",e})(),ds=(()=>{class e extends Oi{}return e.kind="for",e})(),Iu=class extends ds{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,i){if(super.optimizeNames(t,i))return this.iteration=sr(this.iteration,t,i),this}get names(){return Dn(super.names,this.iteration.names)}},$u=class extends ds{constructor(t,i,n,r){super(),this.varKind=t,this.name=i,this.from=n,this.to=r}render(t){let i=t.es5?ai.varKinds.var:this.varKind,{name:n,from:r,to:o}=this;return`for(${i} ${n}=${r}; ${n}<${o}; ${n}++)`+super.render(t)}get names(){let t=us(super.names,this.from);return us(t,this.to)}},ls=class extends ds{constructor(t,i,n,r){super(),this.loop=t,this.varKind=i,this.name=n,this.iterable=r}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,i){if(super.optimizeNames(t,i))return this.iterable=sr(this.iterable,t,i),this}get names(){return Dn(super.names,this.iterable.names)}},Gf=(()=>{class e extends Oi{constructor(i,n,r){super(),this.name=i,this.args=n,this.async=r}render(i){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(i)}}return e.kind="func",e})(),Jf=(()=>{class e extends fo{render(i){return"return "+super.render(i)}}return e.kind="return",e})(),Eu=class extends Oi{render(t){let i="try"+super.render(t);return this.catch&&(i+=this.catch.render(t)),this.finally&&(i+=this.finally.render(t)),i}optimizeNodes(){var t,i;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(i=this.finally)===null||i===void 0||i.optimizeNodes(),this}optimizeNames(t,i){var n,r;return super.optimizeNames(t,i),(n=this.catch)===null||n===void 0||n.optimizeNames(t,i),(r=this.finally)===null||r===void 0||r.optimizeNames(t,i),this}get names(){let t=super.names;return this.catch&&Dn(t,this.catch.names),this.finally&&Dn(t,this.finally.names),t}},Xf=(()=>{class e extends Oi{constructor(i){super(),this.error=i}render(i){return`catch(${this.error})`+super.render(i)}}return e.kind="catch",e})(),Yf=(()=>{class e extends Oi{render(i){return"finally"+super.render(i)}}return e.kind="finally",e})(),Tu=class{constructor(t,i={}){this._values={},this._blockStarts=[],this._constants={},this.opts=$e(X({},i),{_n:i.lines?`
|
|
1
|
+
import{a as Hf}from"./chunk-P5U4CYHB.js";import{a as _i,b as o2}from"./chunk-PJDX7TKL.js";import{a as qf}from"./chunk-ZT56WXIZ.js";import{a as Lf}from"./chunk-P3TP4J62.js";import{a as zf}from"./chunk-2IJIUQHS.js";import{a as lo}from"./chunk-YFQVSUDS.js";import{a as Bf,c as Rf}from"./chunk-BSZ6MHFZ.js";import{a as Uf}from"./chunk-ADNBR4EK.js";import{a as Qa,b as is}from"./chunk-7FO4RGTF.js";import{a as es,b as ts}from"./chunk-2KOR6LRK.js";import{a as Vf}from"./chunk-W6RS6NBX.js";import{a as Ka,b as Ga,c as Ja,d as Xa,e as Ya,f as Za,g as rr,m as Oe,n as ot,o as Df,p as Af,q as Nf,r as jf,s as Ff,t as or}from"./chunk-PSSVCFFV.js";import{A as so,a as If,b as Yi,c as ir,e as $t,f as $f,h as Ef,i as Tf,j as Pf,k as Of,l as Zi,m as kf,o as Qi,r as nr,s as On,t as kn,y as Mf,z as oi}from"./chunk-K2NEWUWG.js";import{a as tn}from"./chunk-XDR6SZ6V.js";import{d as yi}from"./chunk-QRQBCPWO.js";import{b as Re}from"./chunk-YXXZXBDD.js";import{k as Ce,m as en,n as ve}from"./chunk-CTPZNDZV.js";import{a as xe,b as ke}from"./chunk-ZG3HINDJ.js";import{e as Sf}from"./chunk-K7QEGT3E.js";import{$a as mf,Ac as vf,Bc as xf,Ca as Wi,Cc as Pe,D as uf,Da as ff,Dc as ri,Ec as Tn,Fa as Qn,Fc as Wt,Gc as tr,Hb as G,Hc as w,Ib as E,Ic as I,Jb as T,Jc as He,Lb as at,M as Yn,Mb as st,Nb as lt,Ob as b,Pb as f,Qb as m,Qc as xt,Rb as $,Rc as z,Sb as Qe,Sc as Xi,Tb as rt,Ub as gi,Uc as Cf,Vb as yf,Wb as _f,Xa as he,Z as lu,_b as H,a as X,aa as ao,ab as d,b as $e,bc as q,cc as Ht,dc as y,e as g,fa as cf,fb as Ua,g as ze,ga as Ft,gb as Ti,h as K,ha as Zn,hc as uu,ib as In,ic as cu,id as Kt,ja as df,jc as du,jd as Pn,k as of,ka as pf,kc as Ki,kd as Ct,la as P,lc as Gi,mb as Y,mc as bf,n as jt,nb as er,nc as ni,o as su,ob as $n,oc as Ji,pb as hf,pc as Z,q as af,qc as x,ra as j,rc as R,rd as Wa,sa as F,sb as ue,sc as V,tc as En,ub as gf,uc as Ha,v as sf,vb as za,w as le,x as lf,xc as Ae,yc as Ne,za as La,zc as je,zd as wf}from"./chunk-V7SOQAC5.js";var po=g(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 uo=class{};be._CodeOrName=uo;be.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Mn=class extends uo{constructor(t){if(super(),!be.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};be.Name=Mn;var Gt=class extends uo{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((i,n)=>`${i}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((i,n)=>(n instanceof Mn&&(i[n.str]=(i[n.str]||0)+1),i),{})}};be._Code=Gt;be.nil=new Gt("");function Wf(e,...t){let i=[e[0]],n=0;for(;n<t.length;)fu(i,t[n]),i.push(e[++n]);return new Gt(i)}be._=Wf;var pu=new Gt("+");function Kf(e,...t){let i=[co(e[0])],n=0;for(;n<t.length;)i.push(pu),fu(i,t[n]),i.push(pu,co(e[++n]));return s2(i),new Gt(i)}be.str=Kf;function fu(e,t){t instanceof Gt?e.push(...t._items):t instanceof Mn?e.push(t):e.push(c2(t))}be.addCodeArg=fu;function s2(e){let t=1;for(;t<e.length-1;){if(e[t]===pu){let i=l2(e[t-1],e[t+1]);if(i!==void 0){e.splice(t-1,3,i);continue}e[t++]="+"}t++}}function l2(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof Mn||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof Mn))return`"${e}${t.slice(1)}`}function u2(e,t){return t.emptyStr()?e:e.emptyStr()?t:Kf`${e}${t}`}be.strConcat=u2;function c2(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:co(Array.isArray(e)?e.join(","):e)}function d2(e){return new Gt(co(e))}be.stringify=d2;function co(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}be.safeStringify=co;function p2(e){return typeof e=="string"&&be.IDENTIFIER.test(e)?new Gt(`.${e}`):Wf`[${e}]`}be.getProperty=p2;function f2(e){if(typeof e=="string"&&be.IDENTIFIER.test(e))return new Gt(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}be.getEsmExportName=f2;function m2(e){return new Gt(e.toString())}be.regexpCode=m2});var gu=g(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.ValueScope=Tt.ValueScopeName=Tt.Scope=Tt.varKinds=Tt.UsedValueState=void 0;var Et=po(),mu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},ns=function(e){return e[e.Started=0]="Started",e[e.Completed=1]="Completed",e}(ns||(Tt.UsedValueState=ns={}));Tt.varKinds={const:new Et.Name("const"),let:new Et.Name("let"),var:new Et.Name("var")};var rs=class{constructor({prefixes:t,parent:i}={}){this._names={},this._prefixes=t,this._parent=i}toName(t){return t instanceof Et.Name?t:this.name(t)}name(t){return new Et.Name(this._newName(t))}_newName(t){let i=this._names[t]||this._nameGroup(t);return`${t}${i.index++}`}_nameGroup(t){var i,n;if(!((n=(i=this._parent)===null||i===void 0?void 0:i._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Tt.Scope=rs;var os=class extends Et.Name{constructor(t,i){super(i),this.prefix=t}setValue(t,{property:i,itemIndex:n}){this.value=t,this.scopePath=(0,Et._)`.${new Et.Name(i)}[${n}]`}};Tt.ValueScopeName=os;var h2=(0,Et._)`\n`,hu=class extends rs{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts=$e(X({},t),{_n:t.lines?h2:Et.nil})}get(){return this._scope}name(t){return new os(t,this._newName(t))}value(t,i){var n;if(i.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let r=this.toName(t),{prefix:o}=r,a=(n=i.key)!==null&&n!==void 0?n:i.ref,s=this._values[o];if(s){let c=s.get(a);if(c)return c}else s=this._values[o]=new Map;s.set(a,r);let l=this._scope[o]||(this._scope[o]=[]),u=l.length;return l[u]=i.ref,r.setValue(i,{property:o,itemIndex:u}),r}getValue(t,i){let n=this._values[t];if(n)return n.get(i)}scopeRefs(t,i=this._values){return this._reduceValues(i,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Et._)`${t}${n.scopePath}`})}scopeCode(t=this._values,i,n){return this._reduceValues(t,r=>{if(r.value===void 0)throw new Error(`CodeGen: name "${r}" has no value`);return r.value.code},i,n)}_reduceValues(t,i,n={},r){let o=Et.nil;for(let a in t){let s=t[a];if(!s)continue;let l=n[a]=n[a]||new Map;s.forEach(u=>{if(l.has(u))return;l.set(u,ns.Started);let c=i(u);if(c){let p=this.opts.es5?Tt.varKinds.var:Tt.varKinds.const;o=(0,Et._)`${o}${p} ${u} = ${c};${this.opts._n}`}else if(c=r?.(u))o=(0,Et._)`${o}${c}${this.opts._n}`;else throw new mu(u);l.set(u,ns.Completed)})}return o}};Tt.ValueScope=hu});var ee=g(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.or=ce.and=ce.not=ce.CodeGen=ce.operators=ce.varKinds=ce.ValueScopeName=ce.ValueScope=ce.Scope=ce.Name=ce.regexpCode=ce.stringify=ce.getProperty=ce.nil=ce.strConcat=ce.str=ce._=void 0;var ge=po(),ai=gu(),nn=po();Object.defineProperty(ce,"_",{enumerable:!0,get:function(){return nn._}});Object.defineProperty(ce,"str",{enumerable:!0,get:function(){return nn.str}});Object.defineProperty(ce,"strConcat",{enumerable:!0,get:function(){return nn.strConcat}});Object.defineProperty(ce,"nil",{enumerable:!0,get:function(){return nn.nil}});Object.defineProperty(ce,"getProperty",{enumerable:!0,get:function(){return nn.getProperty}});Object.defineProperty(ce,"stringify",{enumerable:!0,get:function(){return nn.stringify}});Object.defineProperty(ce,"regexpCode",{enumerable:!0,get:function(){return nn.regexpCode}});Object.defineProperty(ce,"Name",{enumerable:!0,get:function(){return nn.Name}});var cs=gu();Object.defineProperty(ce,"Scope",{enumerable:!0,get:function(){return cs.Scope}});Object.defineProperty(ce,"ValueScope",{enumerable:!0,get:function(){return cs.ValueScope}});Object.defineProperty(ce,"ValueScopeName",{enumerable:!0,get:function(){return cs.ValueScopeName}});Object.defineProperty(ce,"varKinds",{enumerable:!0,get:function(){return cs.varKinds}});ce.operators={GT:new ge._Code(">"),GTE:new ge._Code(">="),LT:new ge._Code("<"),LTE:new ge._Code("<="),EQ:new ge._Code("==="),NEQ:new ge._Code("!=="),NOT:new ge._Code("!"),OR:new ge._Code("||"),AND:new ge._Code("&&"),ADD:new ge._Code("+")};var Pi=class{optimizeNodes(){return this}optimizeNames(t,i){return this}},yu=class extends Pi{constructor(t,i,n){super(),this.varKind=t,this.name=i,this.rhs=n}render({es5:t,_n:i}){let n=t?ai.varKinds.var:this.varKind,r=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${r};`+i}optimizeNames(t,i){if(t[this.name.str])return this.rhs&&(this.rhs=sr(this.rhs,t,i)),this}get names(){return this.rhs instanceof ge._CodeOrName?this.rhs.names:{}}},ss=class extends Pi{constructor(t,i,n){super(),this.lhs=t,this.rhs=i,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,i){if(!(this.lhs instanceof ge.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=sr(this.rhs,t,i),this}get names(){let t=this.lhs instanceof ge.Name?{}:X({},this.lhs.names);return us(t,this.rhs)}},_u=class extends ss{constructor(t,i,n,r){super(t,n,r),this.op=i}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},bu=class extends Pi{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},vu=class extends Pi{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},xu=class extends Pi{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},Cu=class extends Pi{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,i){return this.code=sr(this.code,t,i),this}get names(){return this.code instanceof ge._CodeOrName?this.code.names:{}}},fo=class extends Pi{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((i,n)=>i+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,i=t.length;for(;i--;){let n=t[i].optimizeNodes();Array.isArray(n)?t.splice(i,1,...n):n?t[i]=n:t.splice(i,1)}return t.length>0?this:void 0}optimizeNames(t,i){let{nodes:n}=this,r=n.length;for(;r--;){let o=n[r];o.optimizeNames(t,i)||(g2(t,o.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,i)=>Dn(t,i.names),{})}},Oi=class extends fo{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},wu=class extends fo{},Su=(()=>{class e extends Oi{}return e.kind="else",e})(),as=(()=>{class e extends Oi{constructor(i,n){super(n),this.condition=i}render(i){let n=`if(${this.condition})`+super.render(i);return this.else&&(n+="else "+this.else.render(i)),n}optimizeNodes(){super.optimizeNodes();let i=this.condition;if(i===!0)return this.nodes;let n=this.else;if(n){let r=n.optimizeNodes();n=this.else=Array.isArray(r)?new Su(r):r}if(n)return i===!1?n instanceof e?n:n.nodes:this.nodes.length?this:new e(Zf(i),n instanceof e?[n]:n.nodes);if(!(i===!1||!this.nodes.length))return this}optimizeNames(i,n){var r;if(this.else=(r=this.else)===null||r===void 0?void 0:r.optimizeNames(i,n),!!(super.optimizeNames(i,n)||this.else))return this.condition=sr(this.condition,i,n),this}get names(){let i=super.names;return us(i,this.condition),this.else&&Dn(i,this.else.names),i}}return e.kind="if",e})(),ds=(()=>{class e extends Oi{}return e.kind="for",e})(),Iu=class extends ds{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,i){if(super.optimizeNames(t,i))return this.iteration=sr(this.iteration,t,i),this}get names(){return Dn(super.names,this.iteration.names)}},$u=class extends ds{constructor(t,i,n,r){super(),this.varKind=t,this.name=i,this.from=n,this.to=r}render(t){let i=t.es5?ai.varKinds.var:this.varKind,{name:n,from:r,to:o}=this;return`for(${i} ${n}=${r}; ${n}<${o}; ${n}++)`+super.render(t)}get names(){let t=us(super.names,this.from);return us(t,this.to)}},ls=class extends ds{constructor(t,i,n,r){super(),this.loop=t,this.varKind=i,this.name=n,this.iterable=r}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,i){if(super.optimizeNames(t,i))return this.iterable=sr(this.iterable,t,i),this}get names(){return Dn(super.names,this.iterable.names)}},Gf=(()=>{class e extends Oi{constructor(i,n,r){super(),this.name=i,this.args=n,this.async=r}render(i){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(i)}}return e.kind="func",e})(),Jf=(()=>{class e extends fo{render(i){return"return "+super.render(i)}}return e.kind="return",e})(),Eu=class extends Oi{render(t){let i="try"+super.render(t);return this.catch&&(i+=this.catch.render(t)),this.finally&&(i+=this.finally.render(t)),i}optimizeNodes(){var t,i;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(i=this.finally)===null||i===void 0||i.optimizeNodes(),this}optimizeNames(t,i){var n,r;return super.optimizeNames(t,i),(n=this.catch)===null||n===void 0||n.optimizeNames(t,i),(r=this.finally)===null||r===void 0||r.optimizeNames(t,i),this}get names(){let t=super.names;return this.catch&&Dn(t,this.catch.names),this.finally&&Dn(t,this.finally.names),t}},Xf=(()=>{class e extends Oi{constructor(i){super(),this.error=i}render(i){return`catch(${this.error})`+super.render(i)}}return e.kind="catch",e})(),Yf=(()=>{class e extends Oi{render(i){return"finally"+super.render(i)}}return e.kind="finally",e})(),Tu=class{constructor(t,i={}){this._values={},this._blockStarts=[],this._constants={},this.opts=$e(X({},i),{_n:i.lines?`
|
|
2
2
|
`:""}),this._extScope=t,this._scope=new ai.Scope({parent:t}),this._nodes=[new wu]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,i){let n=this._extScope.value(t,i);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(t,i){return this._extScope.getValue(t,i)}scopeRefs(t){return this._extScope.scopeRefs(t,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(t,i,n,r){let o=this._scope.toName(i);return n!==void 0&&r&&(this._constants[o.str]=n),this._leafNode(new yu(t,o,n)),o}const(t,i,n){return this._def(ai.varKinds.const,t,i,n)}let(t,i,n){return this._def(ai.varKinds.let,t,i,n)}var(t,i,n){return this._def(ai.varKinds.var,t,i,n)}assign(t,i,n){return this._leafNode(new ss(t,i,n))}add(t,i){return this._leafNode(new _u(t,ce.operators.ADD,i))}code(t){return typeof t=="function"?t():t!==ge.nil&&this._leafNode(new Cu(t)),this}object(...t){let i=["{"];for(let[n,r]of t)i.length>1&&i.push(","),i.push(n),(n!==r||this.opts.es5)&&(i.push(":"),(0,ge.addCodeArg)(i,r));return i.push("}"),new ge._Code(i)}if(t,i,n){if(this._blockNode(new as(t)),i&&n)this.code(i).else().code(n).endIf();else if(i)this.code(i).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(t){return this._elseNode(new as(t))}else(){return this._elseNode(new Su)}endIf(){return this._endBlockNode(as,Su)}_for(t,i){return this._blockNode(t),i&&this.code(i).endFor(),this}for(t,i){return this._for(new Iu(t),i)}forRange(t,i,n,r,o=this.opts.es5?ai.varKinds.var:ai.varKinds.let){let a=this._scope.toName(t);return this._for(new $u(o,a,i,n),()=>r(a))}forOf(t,i,n,r=ai.varKinds.const){let o=this._scope.toName(t);if(this.opts.es5){let a=i instanceof ge.Name?i:this.var("_arr",i);return this.forRange("_i",0,(0,ge._)`${a}.length`,s=>{this.var(o,(0,ge._)`${a}[${s}]`),n(o)})}return this._for(new ls("of",r,o,i),()=>n(o))}forIn(t,i,n,r=this.opts.es5?ai.varKinds.var:ai.varKinds.const){if(this.opts.ownProperties)return this.forOf(t,(0,ge._)`Object.keys(${i})`,n);let o=this._scope.toName(t);return this._for(new ls("in",r,o,i),()=>n(o))}endFor(){return this._endBlockNode(ds)}label(t){return this._leafNode(new bu(t))}break(t){return this._leafNode(new vu(t))}return(t){let i=new Jf;if(this._blockNode(i),this.code(t),i.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Jf)}try(t,i,n){if(!i&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let r=new Eu;if(this._blockNode(r),this.code(t),i){let o=this.name("e");this._currNode=r.catch=new Xf(o),i(o)}return n&&(this._currNode=r.finally=new Yf,this.code(n)),this._endBlockNode(Xf,Yf)}throw(t){return this._leafNode(new xu(t))}block(t,i){return this._blockStarts.push(this._nodes.length),t&&this.code(t).endBlock(i),this}endBlock(t){let i=this._blockStarts.pop();if(i===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-i;if(n<0||t!==void 0&&n!==t)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`);return this._nodes.length=i,this}func(t,i=ge.nil,n,r){return this._blockNode(new Gf(t,i,n)),r&&this.code(r).endFunc(),this}endFunc(){return this._endBlockNode(Gf)}optimize(t=1){for(;t-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(t){return this._currNode.nodes.push(t),this}_blockNode(t){this._currNode.nodes.push(t),this._nodes.push(t)}_endBlockNode(t,i){let n=this._currNode;if(n instanceof t||i&&n instanceof i)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${i?`${t.kind}/${i.kind}`:t.kind}"`)}_elseNode(t){let i=this._currNode;if(!(i instanceof as))throw new Error('CodeGen: "else" without "if"');return this._currNode=i.else=t,this}get _root(){return this._nodes[0]}get _currNode(){let t=this._nodes;return t[t.length-1]}set _currNode(t){let i=this._nodes;i[i.length-1]=t}};ce.CodeGen=Tu;function Dn(e,t){for(let i in t)e[i]=(e[i]||0)+(t[i]||0);return e}function us(e,t){return t instanceof ge._CodeOrName?Dn(e,t.names):e}function sr(e,t,i){if(e instanceof ge.Name)return n(e);if(!r(e))return e;return new ge._Code(e._items.reduce((o,a)=>(a instanceof ge.Name&&(a=n(a)),a instanceof ge._Code?o.push(...a._items):o.push(a),o),[]));function n(o){let a=i[o.str];return a===void 0||t[o.str]!==1?o:(delete t[o.str],a)}function r(o){return o instanceof ge._Code&&o._items.some(a=>a instanceof ge.Name&&t[a.str]===1&&i[a.str]!==void 0)}}function g2(e,t){for(let i in t)e[i]=(e[i]||0)-(t[i]||0)}function Zf(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,ge._)`!${Pu(e)}`}ce.not=Zf;var y2=Qf(ce.operators.AND);function _2(...e){return e.reduce(y2)}ce.and=_2;var b2=Qf(ce.operators.OR);function v2(...e){return e.reduce(b2)}ce.or=v2;function Qf(e){return(t,i)=>t===ge.nil?i:i===ge.nil?t:(0,ge._)`${Pu(t)} ${e} ${Pu(i)}`}function Pu(e){return e instanceof ge.Name?e:(0,ge._)`(${e})`}});var pe=g(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 Ee=ee(),x2=po();function C2(e){let t={};for(let i of e)t[i]=!0;return t}de.toHash=C2;function w2(e,t){return typeof t=="boolean"?t:Object.keys(t).length===0?!0:(im(e,t),!nm(t,e.self.RULES.all))}de.alwaysValidSchema=w2;function im(e,t=e.schema){let{opts:i,self:n}=e;if(!i.strictSchema||typeof t=="boolean")return;let r=n.RULES.keywords;for(let o in t)r[o]||am(e,`unknown keyword: "${o}"`)}de.checkUnknownRules=im;function nm(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(t[i])return!0;return!1}de.schemaHasRules=nm;function S2(e,t){if(typeof e=="boolean")return!e;for(let i in e)if(i!=="$ref"&&t.all[i])return!0;return!1}de.schemaHasRulesButRef=S2;function I2({topSchemaRef:e,schemaPath:t},i,n,r){if(!r){if(typeof i=="number"||typeof i=="boolean")return i;if(typeof i=="string")return(0,Ee._)`${i}`}return(0,Ee._)`${e}${t}${(0,Ee.getProperty)(n)}`}de.schemaRefOrVal=I2;function $2(e){return rm(decodeURIComponent(e))}de.unescapeFragment=$2;function E2(e){return encodeURIComponent(ku(e))}de.escapeFragment=E2;function ku(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}de.escapeJsonPointer=ku;function rm(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}de.unescapeJsonPointer=rm;function T2(e,t){if(Array.isArray(e))for(let i of e)t(i);else t(e)}de.eachItem=T2;function em({mergeNames:e,mergeToName:t,mergeValues:i,resultToName:n}){return(r,o,a,s)=>{let l=a===void 0?o:a instanceof Ee.Name?(o instanceof Ee.Name?e(r,o,a):t(r,o,a),a):o instanceof Ee.Name?(t(r,a,o),o):i(o,a);return s===Ee.Name&&!(l instanceof Ee.Name)?n(r,l):l}}de.mergeEvaluated={props:em({mergeNames:(e,t,i)=>e.if((0,Ee._)`${i} !== true && ${t} !== undefined`,()=>{e.if((0,Ee._)`${t} === true`,()=>e.assign(i,!0),()=>e.assign(i,(0,Ee._)`${i} || {}`).code((0,Ee._)`Object.assign(${i}, ${t})`))}),mergeToName:(e,t,i)=>e.if((0,Ee._)`${i} !== true`,()=>{t===!0?e.assign(i,!0):(e.assign(i,(0,Ee._)`${i} || {}`),Mu(e,i,t))}),mergeValues:(e,t)=>e===!0?!0:X(X({},e),t),resultToName:om}),items:em({mergeNames:(e,t,i)=>e.if((0,Ee._)`${i} !== true && ${t} !== undefined`,()=>e.assign(i,(0,Ee._)`${t} === true ? true : ${i} > ${t} ? ${i} : ${t}`)),mergeToName:(e,t,i)=>e.if((0,Ee._)`${i} !== true`,()=>e.assign(i,t===!0?!0:(0,Ee._)`${i} > ${t} ? ${i} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function om(e,t){if(t===!0)return e.var("props",!0);let i=e.var("props",(0,Ee._)`{}`);return t!==void 0&&Mu(e,i,t),i}de.evaluatedPropsToName=om;function Mu(e,t,i){Object.keys(i).forEach(n=>e.assign((0,Ee._)`${t}${(0,Ee.getProperty)(n)}`,!0))}de.setEvaluated=Mu;var tm={};function P2(e,t){return e.scopeValue("func",{ref:t,code:tm[t.code]||(tm[t.code]=new x2._Code(t.code))})}de.useFunc=P2;var Ou=function(e){return e[e.Num=0]="Num",e[e.Str=1]="Str",e}(Ou||(de.Type=Ou={}));function O2(e,t,i){if(e instanceof Ee.Name){let n=t===Ou.Num;return i?n?(0,Ee._)`"[" + ${e} + "]"`:(0,Ee._)`"['" + ${e} + "']"`:n?(0,Ee._)`"/" + ${e}`:(0,Ee._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return i?(0,Ee.getProperty)(e).toString():"/"+ku(e)}de.getErrorPath=O2;function am(e,t,i=e.opts.strictSchema){if(i){if(t=`strict mode: ${t}`,i===!0)throw new Error(t);e.self.logger.warn(t)}}de.checkStrictMode=am});var Jt=g(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});var ft=ee(),k2={data:new ft.Name("data"),valCxt:new ft.Name("valCxt"),instancePath:new ft.Name("instancePath"),parentData:new ft.Name("parentData"),parentDataProperty:new ft.Name("parentDataProperty"),rootData:new ft.Name("rootData"),dynamicAnchors:new ft.Name("dynamicAnchors"),vErrors:new ft.Name("vErrors"),errors:new ft.Name("errors"),this:new ft.Name("this"),self:new ft.Name("self"),scope:new ft.Name("scope"),json:new ft.Name("json"),jsonPos:new ft.Name("jsonPos"),jsonLen:new ft.Name("jsonLen"),jsonPart:new ft.Name("jsonPart")};Du.default=k2});var mo=g(mt=>{"use strict";Object.defineProperty(mt,"__esModule",{value:!0});mt.extendErrors=mt.resetErrorsCount=mt.reportExtraError=mt.reportError=mt.keyword$DataError=mt.keywordError=void 0;var _e=ee(),ps=pe(),wt=Jt();mt.keywordError={message:({keyword:e})=>(0,_e.str)`must pass "${e}" keyword validation`};mt.keyword$DataError={message:({keyword:e,schemaType:t})=>t?(0,_e.str)`"${e}" keyword must be ${t} ($data)`:(0,_e.str)`"${e}" keyword is invalid ($data)`};function M2(e,t=mt.keywordError,i,n){let{it:r}=e,{gen:o,compositeRule:a,allErrors:s}=r,l=um(e,t,i);n??(a||s)?sm(o,l):lm(r,(0,_e._)`[${l}]`)}mt.reportError=M2;function D2(e,t=mt.keywordError,i){let{it:n}=e,{gen:r,compositeRule:o,allErrors:a}=n,s=um(e,t,i);sm(r,s),o||a||lm(n,wt.default.vErrors)}mt.reportExtraError=D2;function A2(e,t){e.assign(wt.default.errors,t),e.if((0,_e._)`${wt.default.vErrors} !== null`,()=>e.if(t,()=>e.assign((0,_e._)`${wt.default.vErrors}.length`,t),()=>e.assign(wt.default.vErrors,null)))}mt.resetErrorsCount=A2;function N2({gen:e,keyword:t,schemaValue:i,data:n,errsCount:r,it:o}){if(r===void 0)throw new Error("ajv implementation error");let a=e.name("err");e.forRange("i",r,wt.default.errors,s=>{e.const(a,(0,_e._)`${wt.default.vErrors}[${s}]`),e.if((0,_e._)`${a}.instancePath === undefined`,()=>e.assign((0,_e._)`${a}.instancePath`,(0,_e.strConcat)(wt.default.instancePath,o.errorPath))),e.assign((0,_e._)`${a}.schemaPath`,(0,_e.str)`${o.errSchemaPath}/${t}`),o.opts.verbose&&(e.assign((0,_e._)`${a}.schema`,i),e.assign((0,_e._)`${a}.data`,n))})}mt.extendErrors=N2;function sm(e,t){let i=e.const("err",t);e.if((0,_e._)`${wt.default.vErrors} === null`,()=>e.assign(wt.default.vErrors,(0,_e._)`[${i}]`),(0,_e._)`${wt.default.vErrors}.push(${i})`),e.code((0,_e._)`${wt.default.errors}++`)}function lm(e,t){let{gen:i,validateName:n,schemaEnv:r}=e;r.$async?i.throw((0,_e._)`new ${e.ValidationError}(${t})`):(i.assign((0,_e._)`${n}.errors`,t),i.return(!1))}var An={keyword:new _e.Name("keyword"),schemaPath:new _e.Name("schemaPath"),params:new _e.Name("params"),propertyName:new _e.Name("propertyName"),message:new _e.Name("message"),schema:new _e.Name("schema"),parentSchema:new _e.Name("parentSchema")};function um(e,t,i){let{createErrors:n}=e.it;return n===!1?(0,_e._)`{}`:j2(e,t,i)}function j2(e,t,i={}){let{gen:n,it:r}=e,o=[F2(r,i),q2(e,i)];return V2(e,t,o),n.object(...o)}function F2({errorPath:e},{instancePath:t}){let i=t?(0,_e.str)`${e}${(0,ps.getErrorPath)(t,ps.Type.Str)}`:e;return[wt.default.instancePath,(0,_e.strConcat)(wt.default.instancePath,i)]}function q2({keyword:e,it:{errSchemaPath:t}},{schemaPath:i,parentSchema:n}){let r=n?t:(0,_e.str)`${t}/${e}`;return i&&(r=(0,_e.str)`${r}${(0,ps.getErrorPath)(i,ps.Type.Str)}`),[An.schemaPath,r]}function V2(e,{params:t,message:i},n){let{keyword:r,data:o,schemaValue:a,it:s}=e,{opts:l,propertyName:u,topSchemaRef:c,schemaPath:p}=s;n.push([An.keyword,r],[An.params,typeof t=="function"?t(e):t||(0,_e._)`{}`]),l.messages&&n.push([An.message,typeof i=="function"?i(e):i]),l.verbose&&n.push([An.schema,a],[An.parentSchema,(0,_e._)`${c}${p}`],[wt.default.data,o]),u&&n.push([An.propertyName,u])}});var dm=g(lr=>{"use strict";Object.defineProperty(lr,"__esModule",{value:!0});lr.boolOrEmptySchema=lr.topBoolOrEmptySchema=void 0;var B2=mo(),R2=ee(),L2=Jt(),U2={message:"boolean schema is false"};function z2(e){let{gen:t,schema:i,validateName:n}=e;i===!1?cm(e,!1):typeof i=="object"&&i.$async===!0?t.return(L2.default.data):(t.assign((0,R2._)`${n}.errors`,null),t.return(!0))}lr.topBoolOrEmptySchema=z2;function H2(e,t){let{gen:i,schema:n}=e;n===!1?(i.var(t,!1),cm(e)):i.var(t,!0)}lr.boolOrEmptySchema=H2;function cm(e,t){let{gen:i,data:n}=e,r={gen:i,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,B2.reportError)(r,U2,void 0,t)}});var Au=g(ur=>{"use strict";Object.defineProperty(ur,"__esModule",{value:!0});ur.getRules=ur.isJSONType=void 0;var W2=["string","number","integer","boolean","null","object","array"],K2=new Set(W2);function G2(e){return typeof e=="string"&&K2.has(e)}ur.isJSONType=G2;function J2(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:$e(X({},e),{integer:!0,boolean:!0,null:!0}),rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}ur.getRules=J2});var Nu=g(rn=>{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.shouldUseRule=rn.shouldUseGroup=rn.schemaHasRulesForType=void 0;function X2({schema:e,self:t},i){let n=t.RULES.types[i];return n&&n!==!0&&pm(e,n)}rn.schemaHasRulesForType=X2;function pm(e,t){return t.rules.some(i=>fm(e,i))}rn.shouldUseGroup=pm;function fm(e,t){var i;return e[t.keyword]!==void 0||((i=t.definition.implements)===null||i===void 0?void 0:i.some(n=>e[n]!==void 0))}rn.shouldUseRule=fm});var ho=g(ht=>{"use strict";Object.defineProperty(ht,"__esModule",{value:!0});ht.reportTypeError=ht.checkDataTypes=ht.checkDataType=ht.coerceAndCheckDataType=ht.getJSONTypes=ht.getSchemaTypes=ht.DataType=void 0;var Y2=Au(),Z2=Nu(),Q2=mo(),ae=ee(),mm=pe(),cr=function(e){return e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong",e}(cr||(ht.DataType=cr={}));function e$(e){let t=hm(e.type);if(t.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&t.push("null")}return t}ht.getSchemaTypes=e$;function hm(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(Y2.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}ht.getJSONTypes=hm;function t$(e,t){let{gen:i,data:n,opts:r}=e,o=i$(t,r.coerceTypes),a=t.length>0&&!(o.length===0&&t.length===1&&(0,Z2.schemaHasRulesForType)(e,t[0]));if(a){let s=Fu(t,n,r.strictNumbers,cr.Wrong);i.if(s,()=>{o.length?n$(e,t,o):qu(e)})}return a}ht.coerceAndCheckDataType=t$;var gm=new Set(["string","number","integer","boolean","null"]);function i$(e,t){return t?e.filter(i=>gm.has(i)||t==="array"&&i==="array"):[]}function n$(e,t,i){let{gen:n,data:r,opts:o}=e,a=n.let("dataType",(0,ae._)`typeof ${r}`),s=n.let("coerced",(0,ae._)`undefined`);o.coerceTypes==="array"&&n.if((0,ae._)`${a} == 'object' && Array.isArray(${r}) && ${r}.length == 1`,()=>n.assign(r,(0,ae._)`${r}[0]`).assign(a,(0,ae._)`typeof ${r}`).if(Fu(t,r,o.strictNumbers),()=>n.assign(s,r))),n.if((0,ae._)`${s} !== undefined`);for(let u of i)(gm.has(u)||u==="array"&&o.coerceTypes==="array")&&l(u);n.else(),qu(e),n.endIf(),n.if((0,ae._)`${s} !== undefined`,()=>{n.assign(r,s),r$(e,s)});function l(u){switch(u){case"string":n.elseIf((0,ae._)`${a} == "number" || ${a} == "boolean"`).assign(s,(0,ae._)`"" + ${r}`).elseIf((0,ae._)`${r} === null`).assign(s,(0,ae._)`""`);return;case"number":n.elseIf((0,ae._)`${a} == "boolean" || ${r} === null
|
|
3
3
|
|| (${a} == "string" && ${r} && ${r} == +${r})`).assign(s,(0,ae._)`+${r}`);return;case"integer":n.elseIf((0,ae._)`${a} === "boolean" || ${r} === null
|
|
4
4
|
|| (${a} === "string" && ${r} && ${r} == +${r} && !(${r} % 1))`).assign(s,(0,ae._)`+${r}`);return;case"boolean":n.elseIf((0,ae._)`${r} === "false" || ${r} === 0 || ${r} === null`).assign(s,!1).elseIf((0,ae._)`${r} === "true" || ${r} === 1`).assign(s,!0);return;case"null":n.elseIf((0,ae._)`${r} === "" || ${r} === 0 || ${r} === false`),n.assign(s,null);return;case"array":n.elseIf((0,ae._)`${a} === "string" || ${a} === "number"
|
|
@@ -16,13 +16,13 @@ Should be: [ [ object1, pointer1 ], [ object 2, pointer2 ], etc... ]`),r}}static
|
|
|
16
16
|
`},i.origin)})}getConfigBlocks(){return this.pluginConfig}updateConfigBlocks(i){for(let n of i)n[this.pluginType]=this.pluginAlias;this.pluginConfig=i}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},en.api.origin)}}schemaFormRefresh(){if(this.schemaFormRecentlyUpdated){this.schemaFormRecentlyUpdated=!1;return}this.schemaFormRecentlyRefreshed=!0,this.showSchemaForm&&(this.showSchemaForm=!1,setTimeout(()=>{this.showSchemaForm=!0}))}formCreate(i,n,r,o,a){return K(this,null,function*(){yield this.formEnd(),this.formId=i,this.formSchema=n,this.formData=r,this.formSubmitButtonLabel=o,this.formCancelButtonLabel=a})}formEnd(){return K(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(i=>setTimeout(i)))})}formUpdated(i){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:"change",formData:i}},en.api.origin)}formActionEvent(i){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:i,formData:this.formData}},en.api.origin)}handleGetCachedAccessories(i){return K(this,null,function*(){let n=yield le(this.$api.get("/server/cached-accessories"));return this.requestResponse(i,n.filter(r=>r.plugin===this.plugin.name))})}getChildBridges(){return K(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.plugin.name===n.plugin&&this.childBridges.push(n)})}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(n,r){n&1&&Ki(r.customPluginUiElementTarget,b8,5),n&2&&Gi()},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(n,r){if(n&1){let o=H();f(0,"div",1)(1,"div",2)(2,"h5",3),x(3),m(),f(4,"button",4),w(5,"translate"),q("click",function(){return j(o),F(r.dismissModal())}),m()(),f(6,"div",5),E(7,v8,2,0,"div",6),$(8,"iframe",7,0),E(10,x8,2,2,"div",8),E(11,S8,5,4,"div",8),E(12,I8,2,0,"div",9),m(),f(13,"div",10)(14,"div",11)(15,"button",12),q("click",function(){return j(o),F(r.dismissModal())}),x(16),w(17,"translate"),m()(),$(18,"div",13),f(19,"div",14),E(20,$8,2,4,"i",15),f(21,"button",16),q("click",function(){return j(o),F(r.savePluginConfig(!0))}),E(22,E8,2,3),E(23,T8,1,0,"i",17),m()()()()}n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),b("disabled",r.saveInProgress),G("aria-label",I(5,13,"form.button_close")),d(3),T(r.loading?7:-1),d(3),T(r.uiLoaded&&r.pluginConfig.length&&r.schema.singular&&r.showSchemaForm?10:-1),d(),T(r.formId?11:-1),d(),T(r.pluginSpinner?12:-1),d(3),b("disabled",r.saveInProgress),d(),V(" ",I(17,15,"form.button_close")," "),d(4),T(r.saveButtonDisabled?-1:20),d(),b("disabled",r.saveInProgress||r.saveButtonDisabled),d(),T(r.saveInProgress?-1:22),d(),T(r.saveInProgress?23:-1))},dependencies:[ru,or,Kt,ke],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 $I=(()=>{class e{$api=P(ve);$modal=P(ot);plugins={};openSettings(i,n){return K(this,null,function*(){let r=yield this.loadPluginConfig(i.name),o=this.$modal.open(this.plugins[i.name],{size:"lg",backdrop:"static"});return o.componentInstance.plugin=i,o.componentInstance.schema=n,o.componentInstance.pluginConfig=r,o.result.catch(()=>{})})}openCustomSettingsUi(i,n){return K(this,null,function*(){let r=yield this.loadPluginConfig(i.name),o=this.$modal.open(II,{size:"lg",backdrop:"static"});return o.componentInstance.plugin=i,o.componentInstance.schema=n,o.componentInstance.pluginConfig=r,o.result.catch(()=>{})})}loadPluginConfig(i){return K(this,null,function*(){return le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(i)}`))})}static \u0275fac=function(n){return new(n||e)};static \u0275prov=Ft({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var kI=ze(Bf(),1),MI=ze(Rf(),1),DI=ze(lo(),1);var EI=ze(lo(),1);var P8=["pluginlogoutput"],TI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$log=P(zf);$modal=P(ot);$toastr=P(Ce);$translate=P(xe);resizeEvent=new jt;pluginAlias;plugin;termTarget=Xi("pluginlogoutput");onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){this.getPluginLog()}downloadLogFile(){let i=this.$modal.open(Vf,{size:"lg",backdrop:"static"});i.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),i.componentInstance.message=this.$translate.instant("logs.download_warning"),i.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),i.componentInstance.faIconClass="fas fa-fw fa-user-secret primary-text",i.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download?colour=yes",{observe:"response",responseType:"text"}).subscribe({next:n=>{if(!n.body)return;let r=n.body.split(`
|
|
17
17
|
`),o="",a=!1;r.forEach(s=>{if(s){if(a)if(s.match(/36m\[.*?\]/))a=!1;else{o+=`${s.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
|
|
18
18
|
`;return}s.includes(`36m[${this.pluginAlias}]`)&&(o+=`${s.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
|
|
19
|
-
`,a=!0)}}),(0,EI.saveAs)(new Blob([o],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`)},error:n=>K(this,null,function*(){let r;try{r=JSON.parse(yield n.error.text()).message}catch(o){console.error(o)}this.$toastr.error(r||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}ngOnDestroy(){this.$log.destroyTerminal()}dismissModal(){this.$activeModal.dismiss("Dismiss")}getPluginLog(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:i=>{this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":i[0]?.name||this.plugin.name,this.$log.startTerminal(this.termTarget(),{},this.resizeEvent,this.pluginAlias)},error:i=>{console.error(i),this.$toastr.error(i.error.message||i.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(n,r){n&1&&Ki(r.termTarget,P8,5),n&2&&Gi()},hostBindings:function(n,r){n&1&&q("resize",function(a){return r.onWindowResize(a)},mf)},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(n,r){if(n&1){let o=H();Qe(0,"div",1)(1,"div",2)(2,"h5",3),x(3),rt(),Qe(4,"button",4),w(5,"translate"),Ht("click",function(){return j(o),F(r.dismissModal())}),rt()(),Qe(6,"div",5),gi(7,"div",6,0),rt(),Qe(9,"div",7)(10,"div",8)(11,"button",9),w(12,"translate"),Ht("click",function(){return j(o),F(r.dismissModal())}),x(13),w(14,"translate"),rt()(),gi(15,"div",10),Qe(16,"div",11)(17,"button",12),Ht("click",function(){return j(o),F(r.downloadLogFile())}),x(18),w(19,"translate"),rt()()()()}n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),G("aria-label",I(5,5,"form.button_close")),d(7),G("aria-label",I(12,7,"form.button_close")),d(2),V(" ",I(14,9,"form.button_close")," "),d(5),R(I(19,11,"form.button_download")))},dependencies:[ke],encapsulation:2})}return e})();var PI=ze(Qa(),1);var Yp=()=>({app:"Homebridge v2"});function O8(e,t){e&1&&(f(0,"div",5),$(1,"i",12),m())}function k8(e,t){e&1&&(f(0,"p",9),x(1,"All your plugins are marked as compatible with Homebridge v2."),m())}function M8(e,t){e&1&&(f(0,"p",9),x(1,"To ignore this warning and continue with the update, click continue below."),m())}function D8(e,t){if(e&1&&(f(0,"p",9),x(1," Some of your plugins are not explicitly marked as compatible with Homebridge v2. This does "),f(2,"span",17),x(3,"not"),m(),x(4," necessarily mean that they won't work. We just can't guarantee that they will. "),m(),f(5,"p",9),x(6," For more information about this update, please see the "),f(7,"a",18),x(8,"wiki page"),m(),x(9,". "),m(),E(10,M8,2,0,"p",9)),e&2){let i=y(2);d(10),T(i.isUpdating?10:-1)}}function A8(e,t){e&1&&(f(0,"div",19),x(1," Node.js Version"),$(2,"br"),f(3,"span",20),x(4),w(5,"translate"),m()(),f(6,"div",21),$(7,"i",22),m()),e&2&&(d(4),R(He(5,1,"status.readiness.node_yes",Pe(4,Yp))))}function N8(e,t){e&1&&(f(0,"div",19),x(1," Node.js Version"),$(2,"br"),f(3,"span",20),x(4),w(5,"translate"),m(),$(6,"br"),f(7,"a",23),x(8),w(9,"translate"),$(10,"i",24),m()(),f(11,"div",21),$(12,"i",25),m()),e&2&&(d(4),R(He(5,2,"status.readiness.node_no",Pe(7,Yp))),d(4),V(" ",I(9,5,"plugins.compat.node_link")," "))}function j8(e,t){e&1&&$(0,"i",26)}function F8(e,t){e&1&&$(0,"i",27)}function q8(e,t){if(e&1&&(f(0,"li",16)(1,"div",19),x(2),m(),f(3,"div",21),E(4,j8,1,0,"i",26),E(5,F8,1,0,"i",27),m()()),e&2){let i=t.$implicit;d(2),R(i.displayName),d(2),T(i.hb2Ready==="supported"?4:-1),d(),T(i.hb2Ready==="unknown"?5:-1)}}function V8(e,t){if(e&1&&(f(0,"div",13),$(1,"img",14),m(),E(2,k8,2,0,"p",9),E(3,D8,11,1),f(4,"ul",15)(5,"li",16),E(6,A8,8,5)(7,N8,13,8),m(),st(8,q8,6,3,"li",16,at),m()),e&2){let i=y();d(2),T(i.allPluginsSupported?2:-1),d(),T(i.allPluginsSupported?-1:3),d(3),T(i.nodeReady?6:7),d(2),lt(i.installedPlugins)}}function B8(e,t){if(e&1){let i=H();f(0,"button",28),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal("Dismiss"))}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function R8(e,t){if(e&1){let i=H();f(0,"button",28),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal("Dismiss"))}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function L8(e,t){if(e&1){let i=H();f(0,"button",29),q("click",function(){j(i);let r=y();return F(r.closeModal("update"))}),x(1),w(2,"translate"),m()}if(e&2){let i=y();b("disabled",i.loading),d(),V(" ",I(2,2,"form.label_continue")," ")}}var OI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);$ws=P(tn);io;isUpdating=!1;skipIfCompatible=!0;loading=!0;installedPlugins=[];allPluginsSupported=!0;nodeReady=!1;ngOnInit(){return K(this,null,function*(){this.io=this.$ws.getExistingNamespace("status"),this.io.socket.connected&&(yield this.checkHomebridgeUiVersion()),yield this.loadInstalledPlugins(),this.loading=!1})}checkHomebridgeUiVersion(){return K(this,null,function*(){try{let{nodeVersion:i}=yield le(this.io.request("get-homebridge-server-info"));this.nodeReady=(0,PI.satisfies)(i,">=20")}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}loadInstalledPlugins(){return K(this,null,function*(){this.installedPlugins=[],this.loading=!0;let i=this.$settings.env.homebridgeVersion.split(".")[0];try{let n=yield le(this.$api.get("/plugins"));this.installedPlugins=n.filter(r=>r.name!=="homebridge-config-ui-x").map(r=>{let o=r.engines?.homebridge?.split("||").map(s=>s.trim())||[],a=i==="2"?"hide":o.some(s=>s.startsWith("^2")||s.startsWith(">=2"))?"supported":"unknown";return a==="unknown"&&(this.allPluginsSupported=!1),$e(X({},r),{hb2Ready:a})}).sort((r,o)=>r.name.localeCompare(o.name)),this.skipIfCompatible&&this.installedPlugins.length===0&&this.$activeModal.close("update")}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}closeModal(i){this.$activeModal.close(i)}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],inputs:{isUpdating:"isUpdating",skipIfCompatible:"skipIfCompatible"},decls:17,vars:13,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"w-100","text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],["ngSrc","assets/hb-icon.png","alt","","height","100","width","100",1,"plugin-icon-card"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],[1,"text-start","flex-grow-1"],[1,"grey-text"],[1,"ms-3"],[1,"fas","fa-check-circle","green-text","fa-xl"],["href","https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js","target","_blank","rel","noopener noreferrer",1,"small"],[1,"fa","fa-fw","fa-external-link-alt"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl"],["aria-label","The developer has not specifically marked this plugin as compatible with Homebridge v2, but it may still work.",1,"fas","fa-question-circle","orange-text","fa-xl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.closeModal("Dismiss")}),m()(),f(7,"div",4),E(8,O8,2,0,"div",5),E(9,V8,10,3),m(),f(10,"div",6)(11,"div",7),E(12,B8,4,6,"button",8),m(),f(13,"div",9),E(14,R8,4,6,"button",8),m(),f(15,"div",10),E(16,L8,3,4,"button",11),m()()()),n&2&&(d(3),R(He(4,7,"status.readiness.title",Pe(12,Yp))),d(2),G("aria-label",I(6,10,"form.button_close")),d(3),T(r.loading?8:-1),d(),T(r.loading?-1:9),d(3),T(r.isUpdating?12:-1),d(2),T(r.isUpdating?-1:14),d(2),T(r.isUpdating?16:-1))},dependencies:[wf,ke],encapsulation:2})}return e})();var z8=(e,t)=>({iconStar:e,iconThumbsUp:t}),AI=(e,t,i,n)=>({"fa-arrow-alt-circle-down":e,"fa-code-compare":t,"fa-arrow-alt-circle-up":i,"fa-trash":n}),H8=()=>["homebridge","homebridge-config-ui-x"],W8=e=>({pluginName:e});function K8(e,t){e&1&&(f(0,"p",13),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.settings.restart_required")))}function G8(e,t){e&1&&(f(0,"p",13),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"restart.child_bridges")))}function J8(e,t){if(e&1&&($(0,"p",12),w(1,"translate"),E(2,K8,3,3,"p",13),E(3,G8,3,3,"p",13)),e&2){let i=y(3);b("innerHTML",He(1,3,"plugins.manage.github_support",Tn(6,z8,i.iconStar,i.iconThumbsUp)),he),d(2),T(i.childBridges.length===0?2:-1),d(),T(i.childBridges.length>0?3:-1)}}function X8(e,t){if(e&1&&(f(0,"div",9),$(1,"i",10),m(),f(2,"h5",11),x(3),m(),E(4,J8,4,9)),e&2){let i=y(2);d(3),Ha("",i.pastTenseVerb,": ",i.pluginDisplayName," (",i.targetVersionPretty,")"),d(),T(i.isDisabled?-1:4)}}function Y8(e,t){if(e&1&&(f(0,"div",6),E(1,X8,5,4),m()),e&2){let i=y();d(),T(i.justUpdatedPlugin?1:-1)}}function Z8(e,t){if(e&1&&(f(0,"div",7)(1,"div",9),$(2,"i",14),m(),f(3,"ul",15)(4,"li"),x(5),w(6,"translate"),m(),f(7,"li"),x(8),w(9,"translate"),m()(),f(10,"pre",16),x(11),m()()),e&2){let i=y();d(2),b("ngClass",tr(9,AI,i.action==="Install",i.action==="Update"&&i.installedVersion,i.action==="Update"&&!i.installedVersion,i.action==="Uninstall")),d(3),R(I(6,5,"plugins.manage.online_updates")),d(3),R(I(9,7,"plugins.manage.manual_update_command")),d(3),En(`hb-service stop
|
|
19
|
+
`,a=!0)}}),(0,EI.saveAs)(new Blob([o],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`)},error:n=>K(this,null,function*(){let r;try{r=JSON.parse(yield n.error.text()).message}catch(o){console.error(o)}this.$toastr.error(r||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}ngOnDestroy(){this.$log.destroyTerminal()}dismissModal(){this.$activeModal.dismiss("Dismiss")}getPluginLog(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:i=>{this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":i[0]?.name||this.plugin.name,this.$log.startTerminal(this.termTarget(),{},this.resizeEvent,this.pluginAlias)},error:i=>{console.error(i),this.$toastr.error(i.error.message||i.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],viewQuery:function(n,r){n&1&&Ki(r.termTarget,P8,5),n&2&&Gi()},hostBindings:function(n,r){n&1&&q("resize",function(a){return r.onWindowResize(a)},mf)},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(n,r){if(n&1){let o=H();Qe(0,"div",1)(1,"div",2)(2,"h5",3),x(3),rt(),Qe(4,"button",4),w(5,"translate"),Ht("click",function(){return j(o),F(r.dismissModal())}),rt()(),Qe(6,"div",5),gi(7,"div",6,0),rt(),Qe(9,"div",7)(10,"div",8)(11,"button",9),w(12,"translate"),Ht("click",function(){return j(o),F(r.dismissModal())}),x(13),w(14,"translate"),rt()(),gi(15,"div",10),Qe(16,"div",11)(17,"button",12),Ht("click",function(){return j(o),F(r.downloadLogFile())}),x(18),w(19,"translate"),rt()()()()}n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),G("aria-label",I(5,5,"form.button_close")),d(7),G("aria-label",I(12,7,"form.button_close")),d(2),V(" ",I(14,9,"form.button_close")," "),d(5),R(I(19,11,"form.button_download")))},dependencies:[ke],encapsulation:2})}return e})();var PI=ze(Qa(),1);var Yp=()=>({app:"Homebridge v2"});function O8(e,t){e&1&&(f(0,"div",5),$(1,"i",12),m())}function k8(e,t){e&1&&(f(0,"p",9),x(1,"All your plugins are marked as compatible with Homebridge v2."),m())}function M8(e,t){e&1&&(f(0,"p",9),x(1,"To ignore this warning and continue with the update, click continue below."),m())}function D8(e,t){if(e&1&&(f(0,"p",9),x(1," Some of your plugins are not explicitly marked as compatible with Homebridge v2. This does "),f(2,"span",17),x(3,"not"),m(),x(4," necessarily mean that they won't work. We just can't guarantee that they will. "),m(),f(5,"p",9),x(6," For more information about this update, please see the "),f(7,"a",18),x(8,"wiki page"),m(),x(9,". "),m(),E(10,M8,2,0,"p",9)),e&2){let i=y(2);d(10),T(i.isUpdating?10:-1)}}function A8(e,t){e&1&&(f(0,"div",19),x(1," Node.js Version"),$(2,"br"),f(3,"span",20),x(4),w(5,"translate"),m()(),f(6,"div",21),$(7,"i",22),m()),e&2&&(d(4),R(He(5,1,"status.readiness.node_yes",Pe(4,Yp))))}function N8(e,t){e&1&&(f(0,"div",19),x(1," Node.js Version"),$(2,"br"),f(3,"span",20),x(4),w(5,"translate"),m(),$(6,"br"),f(7,"a",23),x(8),w(9,"translate"),$(10,"i",24),m()(),f(11,"div",21),$(12,"i",25),m()),e&2&&(d(4),R(He(5,2,"status.readiness.node_no",Pe(7,Yp))),d(4),V(" ",I(9,5,"plugins.compat.node_link")," "))}function j8(e,t){e&1&&$(0,"i",26)}function F8(e,t){e&1&&$(0,"i",27)}function q8(e,t){if(e&1&&(f(0,"li",16)(1,"div",19),x(2),m(),f(3,"div",21),E(4,j8,1,0,"i",26),E(5,F8,1,0,"i",27),m()()),e&2){let i=t.$implicit;d(2),R(i.displayName),d(2),T(i.hb2Ready==="supported"?4:-1),d(),T(i.hb2Ready==="unknown"?5:-1)}}function V8(e,t){if(e&1&&(f(0,"div",13),$(1,"img",14),m(),E(2,k8,2,0,"p",9),E(3,D8,11,1),f(4,"ul",15)(5,"li",16),E(6,A8,8,5)(7,N8,13,8),m(),st(8,q8,6,3,"li",16,at),m()),e&2){let i=y();d(2),T(i.allPluginsSupported?2:-1),d(),T(i.allPluginsSupported?-1:3),d(3),T(i.nodeReady?6:7),d(2),lt(i.installedPlugins)}}function B8(e,t){if(e&1){let i=H();f(0,"button",28),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal("Dismiss"))}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function R8(e,t){if(e&1){let i=H();f(0,"button",28),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal("Dismiss"))}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function L8(e,t){if(e&1){let i=H();f(0,"button",29),q("click",function(){j(i);let r=y();return F(r.closeModal("update"))}),x(1),w(2,"translate"),m()}if(e&2){let i=y();b("disabled",i.loading),d(),V(" ",I(2,2,"form.button_continue")," ")}}var OI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);$ws=P(tn);io;isUpdating=!1;skipIfCompatible=!0;loading=!0;installedPlugins=[];allPluginsSupported=!0;nodeReady=!1;ngOnInit(){return K(this,null,function*(){this.io=this.$ws.getExistingNamespace("status"),this.io.socket.connected&&(yield this.checkHomebridgeUiVersion()),yield this.loadInstalledPlugins(),this.loading=!1})}checkHomebridgeUiVersion(){return K(this,null,function*(){try{let{nodeVersion:i}=yield le(this.io.request("get-homebridge-server-info"));this.nodeReady=(0,PI.satisfies)(i,">=20")}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}loadInstalledPlugins(){return K(this,null,function*(){this.installedPlugins=[],this.loading=!0;let i=this.$settings.env.homebridgeVersion.split(".")[0];try{let n=yield le(this.$api.get("/plugins"));this.installedPlugins=n.filter(r=>r.name!=="homebridge-config-ui-x").map(r=>{let o=r.engines?.homebridge?.split("||").map(s=>s.trim())||[],a=i==="2"?"hide":o.some(s=>s.startsWith("^2")||s.startsWith(">=2"))?"supported":"unknown";return a==="unknown"&&(this.allPluginsSupported=!1),$e(X({},r),{hb2Ready:a})}).sort((r,o)=>r.name.localeCompare(o.name)),this.skipIfCompatible&&this.installedPlugins.length===0&&this.$activeModal.close("update")}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}closeModal(i){this.$activeModal.close(i)}static \u0275fac=function(n){return new(n||e)};static \u0275cmp=Y({type:e,selectors:[["ng-component"]],inputs:{isUpdating:"isUpdating",skipIfCompatible:"skipIfCompatible"},decls:17,vars:13,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"w-100","text-center","primary-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"text-center","mb-3"],["ngSrc","assets/hb-icon.png","alt","","height","100","width","100",1,"plugin-icon-card"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"fw-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],[1,"text-start","flex-grow-1"],[1,"grey-text"],[1,"ms-3"],[1,"fas","fa-check-circle","green-text","fa-xl"],["href","https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js","target","_blank","rel","noopener noreferrer",1,"small"],[1,"fa","fa-fw","fa-external-link-alt"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.",1,"fas","fa-check-circle","green-text","fa-xl"],["aria-label","The developer has not specifically marked this plugin as compatible with Homebridge v2, but it may still work.",1,"fas","fa-question-circle","orange-text","fa-xl"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.closeModal("Dismiss")}),m()(),f(7,"div",4),E(8,O8,2,0,"div",5),E(9,V8,10,3),m(),f(10,"div",6)(11,"div",7),E(12,B8,4,6,"button",8),m(),f(13,"div",9),E(14,R8,4,6,"button",8),m(),f(15,"div",10),E(16,L8,3,4,"button",11),m()()()),n&2&&(d(3),R(He(4,7,"status.readiness.title",Pe(12,Yp))),d(2),G("aria-label",I(6,10,"form.button_close")),d(3),T(r.loading?8:-1),d(),T(r.loading?-1:9),d(3),T(r.isUpdating?12:-1),d(2),T(r.isUpdating?-1:14),d(2),T(r.isUpdating?16:-1))},dependencies:[wf,ke],encapsulation:2})}return e})();var z8=(e,t)=>({iconStar:e,iconThumbsUp:t}),AI=(e,t,i,n)=>({"fa-arrow-alt-circle-down":e,"fa-code-compare":t,"fa-arrow-alt-circle-up":i,"fa-trash":n}),H8=()=>["homebridge","homebridge-config-ui-x"],W8=e=>({pluginName:e});function K8(e,t){e&1&&(f(0,"p",13),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.settings.restart_required")))}function G8(e,t){e&1&&(f(0,"p",13),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"restart.child_bridges")))}function J8(e,t){if(e&1&&($(0,"p",12),w(1,"translate"),E(2,K8,3,3,"p",13),E(3,G8,3,3,"p",13)),e&2){let i=y(3);b("innerHTML",He(1,3,"plugins.manage.github_support",Tn(6,z8,i.iconStar,i.iconThumbsUp)),he),d(2),T(i.childBridges.length===0?2:-1),d(),T(i.childBridges.length>0?3:-1)}}function X8(e,t){if(e&1&&(f(0,"div",9),$(1,"i",10),m(),f(2,"h5",11),x(3),m(),E(4,J8,4,9)),e&2){let i=y(2);d(3),Ha("",i.pastTenseVerb,": ",i.pluginDisplayName," (",i.targetVersionPretty,")"),d(),T(i.isDisabled?-1:4)}}function Y8(e,t){if(e&1&&(f(0,"div",6),E(1,X8,5,4),m()),e&2){let i=y();d(),T(i.justUpdatedPlugin?1:-1)}}function Z8(e,t){if(e&1&&(f(0,"div",7)(1,"div",9),$(2,"i",14),m(),f(3,"ul",15)(4,"li"),x(5),w(6,"translate"),m(),f(7,"li"),x(8),w(9,"translate"),m()(),f(10,"pre",16),x(11),m()()),e&2){let i=y();d(2),b("ngClass",tr(9,AI,i.action==="Install",i.action==="Update"&&i.installedVersion,i.action==="Update"&&!i.installedVersion,i.action==="Uninstall")),d(3),R(I(6,5,"plugins.manage.online_updates")),d(3),R(I(9,7,"plugins.manage.manual_update_command")),d(3),En(`hb-service stop
|
|
20
20
|
npm install -g `,i.pluginName,"@",i.targetVersion,`
|
|
21
|
-
hb-service start`)}}function Q8(e,t){if(e&1&&(f(0,"span"),x(1),m()),e&2){let i=y(3);d(),V("v",i.installedVersion," \u2192 ")}}function eH(e,t){if(e&1&&(f(0,"h5",18),E(1,Q8,2,1,"span"),x(2),m()),e&2){let i=y(2);d(),T(i.installedVersion?1:-1),d(),V(" ",i.targetVersionPretty," ")}}function tH(e,t){e&1&&(f(0,"div",26),$(1,"i",27),m())}function iH(e,t){if(e&1&&$(0,"markdown",28),e&2){let i=y(4);b("data",i.versionNotes)}}function nH(e,t){e&1&&(f(0,"div",29),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.manage.notes_none")))}function rH(e,t){if(e&1&&(f(0,"div",29),x(1),w(2,"translate"),$(3,"br"),x(4),w(5,"translate"),$(6,"br"),x(7),w(8,"translate"),$(9,"br"),m()),e&2){let i=y(6);d(),V(" ",He(2,3,"plugins.manage.notes_beta_1",ri(10,W8,i.pluginDisplayName))),d(3),V(" ",I(5,6,"plugins.manage.notes_beta_2")),d(3),V(" ",I(8,8,"plugins.manage.notes_beta_3"))}}function oH(e,t){e&1&&(f(0,"div",29),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.manage.notes_latest")))}function aH(e,t){if(e&1&&E(0,rH,10,12,"div",29)(1,oH,3,3,"div",29),e&2){let i=y(5);T(i.targetVersion.includes("beta")||i.targetVersion.includes("alpha")||i.targetVersion.includes("next")?0:1)}}function sH(e,t){if(e&1&&E(0,nH,3,3,"div",29)(1,aH,2,1),e&2){let i=y(4);T(i.versionNotesShow?0:1)}}function lH(e,t){if(e&1&&E(0,iH,1,1,"markdown",28)(1,sH,2,1),e&2){let i=y(3);T(i.versionNotes?0:1)}}function uH(e,t){if(e&1&&(f(0,"div",25),E(1,tH,2,0,"div",26)(2,lH,2,1),m()),e&2){let i=y(2);d(),T(i.action==="Update"&&!i.versionNotesLoaded?1:2)}}function cH(e,t){e&1&&(f(0,"div",26),$(1,"i",27),m())}function dH(e,t){if(e&1&&$(0,"markdown",28),e&2){let i=y(4);b("data",i.fullChangelog)}}function pH(e,t){e&1&&($(0,"div",31),w(1,"translate")),e&2&&b("innerHTML",I(1,1,"plugins.manage.changelog_none"),he)}function fH(e,t){if(e&1&&E(0,dH,1,1,"markdown",28)(1,pH,2,3,"div",31),e&2){let i=y(3);T(i.fullChangelog?0:1)}}function mH(e,t){if(e&1&&(f(0,"div",30),E(1,cH,2,0,"div",26)(2,fH,2,1),m()),e&2){let i=y(2);d(),T(i.action==="Update"&&!i.fullChangelogLoaded?1:2)}}function hH(e,t){if(e&1){let i=H();f(0,"div",24)(1,"p",32)(2,"span",33),x(3),w(4,"translate"),m(),f(5,"a",34),q("click",function(){j(i);let r=y(2);return F(r.downloadBackupFile())}),$(6,"i",35),m()(),f(7,"p",36),x(8),w(9,"translate"),m()()}e&2&&(d(3),R(I(4,2,"plugins.manage.backup")),d(5),R(I(9,4,"plugins.manage.hb_restart")))}function gH(e,t){if(e&1){let i=H();f(0,"div",6)(1,"div",9),$(2,"i",17),m(),E(3,eH,3,2,"h5",18),f(4,"ul",19,0),je("activeIdChange",function(r){j(i);let o=y();return Ne(o.releaseNotesTab,r)||(o.releaseNotesTab=r),F(r)}),f(6,"li",20)(7,"button",21),x(8),w(9,"translate"),m(),ue(10,uH,3,1,"ng-template",22),m(),f(11,"li",20)(12,"button",21),x(13),w(14,"translate"),m(),ue(15,mH,3,1,"ng-template",22),m()(),$(16,"div",23),E(17,hH,10,6,"div",24),m()}if(e&2){let i=bf(5),n=y();d(2),b("ngClass",tr(13,AI,n.action==="Install"&&!n.installedVersion,n.action==="Install"&&n.installedVersion,n.action==="Update",n.action==="Uninstall")),d(),T(n.latestVersion?3:-1),d(),Ae("activeId",n.releaseNotesTab),d(2),b("ngbNavItem",1),d(2),R(I(9,9,"plugins.manage.notes")),d(3),b("ngbNavItem",2),d(2),R(I(14,11,"plugins.manage.changelog")),d(3),b("ngbNavOutlet",i),d(),T(Pe(18,H8).includes(n.pluginName)?17:-1)}}function yH(e,t){if(e&1){let i=H();f(0,"button",43),w(1,"translate"),q("click",function(){j(i);let r=y(2);return F(r.dismissModal())}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function _H(e,t){if(e&1){let i=H();f(0,"button",43),w(1,"translate"),q("click",function(){j(i);let r=y(2);return F(r.dismissModal())}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function bH(e,t){if(e&1){let i=H();f(0,"button",44),q("click",function(){j(i);let r=y(2);return F(r.update())}),x(1),w(2,"translate"),m()}e&2&&(d(),R(I(2,1,"form.
|
|
22
|
-
`)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk=!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32"),this.action){case"Install":this.install(),this.presentTenseVerb=this.$translate.instant("plugins.manage.install"),this.pastTenseVerb=this.$translate.instant("plugins.manage.installed");break;case"Uninstall":this.uninstall(),this.presentTenseVerb=this.$translate.instant("plugins.manage.uninstall"),this.pastTenseVerb=this.$translate.instant("plugins.manage.uninstalled");break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta=!1;break;case"alpha":case"beta":case"test":this.updateToBeta=!0;break}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated"),this.getVersionNotes();break}}update(){if(this.releaseNotesShow=!1,this.versionNotes="",this.fullChangelog="",!!this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>K(this,null,function*(){if(this.pluginName==="homebridge-config-ui-x"){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{window.location.href="/restart"},error:i=>{console.error(i),window.location.href="/restart"}});return}try{yield this.getChildBridges()}catch(i){console.error(i)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate(["/plugins"])}),error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return K(this,null,function*(){try{for(let n of this.childBridges)yield le(this.$api.put(`/server/restart/${n.username}`,{}));let i=this.$modal.open(TI,{size:"xl",backdrop:"static"});i.componentInstance.plugin={name:this.pluginName,displayName:this.pluginDisplayName}}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let i=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,DI.saveAs)(i,`${this.pluginName}-error.log`)}downloadBackupFile(){return K(this,null,function*(){try{yield this.$backup.downloadBackup()}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end()}dismissModal(){this.$activeModal.dismiss("Dismiss")}install(){if(this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(`${this.pastTenseVerb} ${this.pluginName}`,this.toastSuccess),window.location.href=`/plugins?action=just-installed&plugin=${this.pluginName}`},error:i=>{this.actionFailed=!0,console.error(i),this.$router.navigate(["/plugins"]),this.$toastr.error(i.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(_i,{size:"lg",backdrop:"static"})},error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}upgradeHomebridge(){return K(this,null,function*(){let i="update";if(Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])){let n=this.$modal.open(OI,{size:"lg",backdrop:"static"});n.componentInstance.isUpdating=!0,i=yield n.result}i==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:n=>{console.error(n),this.$router.navigate(["/restart"])}})},error:n=>{this.actionFailed=!0,console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getVersionNotes(){return K(this,null,function*(){this.releaseNotesShow=!0;try{let i=yield le(this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`));this.fullChangelog=i.changelog,i.latestVersion&&(this.latestVersion=i.latestVersion),this.targetVersion==="latest"||this.targetVersion===this.latestVersion?(this.versionNotesShow=!0,i.notes&&(this.versionNotes=i.notes)):(this.versionNotesShow=!1,this.versionNotesLoaded=!0)}catch(i){console.error("Error loading release notes:",i)}this.fullChangelogLoaded=!0,this.versionNotesLoaded=!0})}getChildBridges(){return K(this,null,function*(){(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.pluginName===n.plugin&&this.childBridges.push(n)})})}static \u0275fac=function(n){return new(n||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:[["nav","ngbNav"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],["id","plugin-log-output",1,"modal-body",3,"hidden"],[1,"modal-body","plugin-modal-body"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"mb-3","text-center"],[1,"far","fa-fw","fa-check-circle","primary-text",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"mb-3","text-center","grey-text",3,"innerHTML"],[1,"text-center","mb-0"],[1,"fas","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-4","text-center"],["ngbNav","",1,"nav-tabs","px-0",3,"activeIdChange","activeId"],[1,"w-50","m-0",3,"ngbNavItem"],["ngbNavLink","",1,"w-100","release-tab"],["ngbNavContent",""],[1,"mt-2",3,"ngbNavOutlet"],[1,"mt-4","mb-0"],[1,"alert","release-notes","p-3","pb-1","my-0"],[1,"w-100","text-center","primary-text","mt-3","mb-4"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"plugin-md",3,"data"],[1,"w-100","text-center","grey-text","mt-3","mb-4"],[1,"alert","release-notes","p-3","pb-1","my-0",2,"border-top-left-radius","0","border-top-right-radius","0"],[1,"w-100","text-center","grey-text","mt-3","mb-4",3,"innerHTML"],[1,"w-100","text-center","mb-1","small"],[1,"grey-text"],["href","javascript:void(0)",3,"click"],[1,"fa","fa-fw","fa-download","mx-1"],[1,"w-100","text-center","mb-0","small","grey-text"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-primary"],[1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-primary",3,"click"],[1,"btn","btn-primary",3,"click"]],template:function(n,r){n&1&&(f(0,"div",1)(1,"div",2)(2,"h5",3),x(3),m(),f(4,"button",4),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),$(6,"div",5),E(7,Y8,2,1,"div",6),E(8,Z8,12,14,"div",7),E(9,gH,18,19,"div",6),E(10,CH,9,5,"div",8),m()),n&2&&(d(3),R(r.pluginDisplayName),d(),G("aria-label",I(5,7,"form.button_close")),d(2),b("hidden",!r.onlineUpdateOk||r.actionComplete||r.releaseNotesShow),d(),T(r.actionComplete?7:-1),d(),T(r.onlineUpdateOk?-1:8),d(),T(r.releaseNotesShow&&!r.actionComplete&&r.onlineUpdateOk?9:-1),d(),T(!r.onlineUpdateOk||r.actionComplete||r.releaseNotesShow||r.actionFailed?10:-1))},dependencies:[ts,es,is,Kt,Ff,Nf,Af,Df,jf,ke],styles:[".plugin-modal-body[_ngcontent-%COMP%] .release-notes[_ngcontent-%COMP%]{box-shadow:none;max-height:39vh;overflow:auto;border:0;border-top-left-radius:0;border-top-right-radius:0}.plugin-modal-body[_ngcontent-%COMP%] .release-tab[_ngcontent-%COMP%]{font-size:1rem;color:#d3d3d3}.plugin-modal-body[_ngcontent-%COMP%] .tab-content[_ngcontent-%COMP%]{border-radius:0 0 20px 20px} .nav-tabs{--bs-nav-tabs-border-width: 0} .plugin-md{text-align:left;font-size:.85rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.3rem;font-weight:300} .plugin-md h2{font-size:1.2rem;font-weight:300} .plugin-md h3{font-size:1.1rem;font-weight:300} .plugin-md h4{font-size:1rem;font-weight:300} .plugin-md h5{font-size:.9rem;font-weight:300} .plugin-md pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}"]})}return e})();var NI=ze(Qa(),1);var wH=()=>["homebridge","homebridge-config-ui-x"];function SH(e,t){e&1&&(f(0,"div",5),$(1,"i",12),m())}function IH(e,t){if(e&1&&($(0,"i",20),f(1,"h6",21),x(2),w(3,"translate"),m(),f(4,"p",21),x(5),w(6,"translate"),f(7,"span",22),x(8),m()()),e&2){let i=y(2);d(2),R(I(3,3,"plugins.manage.select_version")),d(3),V(" ",I(6,5,"plugins.status_installed"),": "),d(3),V("v",i.plugin.installedVersion)}}function $H(e,t){e&1&&($(0,"i",23),f(1,"h6",21),x(2),w(3,"translate"),m()),e&2&&(d(2),R(I(3,1,"plugins.manage.select_version")))}function EH(e,t){e&1&&$(0,"i",26)}function TH(e,t){e&1&&$(0,"i",27)}function PH(e,t){if(e&1){let i=H();f(0,"li",14)(1,"span",8),x(2),$(3,"br"),f(4,"small",24),x(5),m()(),f(6,"button",25),q("click",function(){let r=j(i).$implicit,o=y(2);return F(o.doInstall(r.version))}),E(7,EH,1,0,"i",26)(8,TH,1,0,"i",27),m()()}if(e&2){let i=t.$implicit,n=y(2);d(2),V(" ",i.tag," "),d(3),V("v",i.version),d(2),T(n.plugin.installedVersion===i.version?7:8)}}function OH(e,t){e&1&&x(0," \u2713 ")}function kH(e,t){if(e&1&&(f(0,"option",17),x(1),E(2,OH,1,0),m()),e&2){let i=t.$implicit,n=y(2);b("value",i.version)("selected",n.versionSelect==i.version),d(),V(" v",i.version," "),d(),T(i.version==n.plugin.installedVersion?2:-1)}}function MH(e,t){e&1&&$(0,"i",26)}function DH(e,t){e&1&&$(0,"i",27)}function AH(e,t){if(e&1){let i=H();f(0,"button",25),q("click",function(){j(i);let r=y(2);return F(r.doInstall(r.versionSelect))}),E(1,MH,1,0,"i",26)(2,DH,1,0,"i",27),m()}if(e&2){let i=y(2);d(),T(i.plugin.installedVersion===i.versionSelect?1:2)}}function NH(e,t){if(e&1&&(f(0,"ul",19)(1,"li",28)(2,"div",8),x(3),w(4,"translate"),$(5,"br"),f(6,"span",29),x(7),w(8,"translate"),m()(),f(9,"div",30),$(10,"input",31),w(11,"translate"),$(12,"label",32),m()()()),e&2){let i=y(2);d(3),V(" ",I(4,4,"plugins.manage.hide_updates")),d(4),R(I(8,6,"plugins.manage.hide_updates_desc")),d(3),b("formControl",i.hideUpdatesFormControl),G("aria-label",I(11,8,"plugins.manage.hide_updates"))}}function jH(e,t){if(e&1){let i=H();f(0,"div",6),E(1,IH,9,7)(2,$H,4,3),f(3,"ul",13),st(4,PH,9,3,"li",14,at),f(6,"li",14)(7,"div",15),x(8),w(9,"translate"),$(10,"br"),f(11,"select",16),je("ngModelChange",function(r){j(i);let o=y();return Ne(o.versionSelect,r)||(o.versionSelect=r),F(r)}),st(12,kH,3,4,"option",17,at),m()(),E(14,AH,3,1,"button",18),m()(),E(15,NH,13,10,"ul",19),m()}if(e&2){let i=y();d(),T(i.plugin.installedVersion?1:2),d(3),lt(i.versionsWithTags),d(4),V(" ",I(9,5,"plugins.manage.all_versions")," "),d(3),Ae("ngModel",i.versionSelect),d(),lt(i.versions),d(2),T(i.versionSelect?14:-1),d(),T(i.plugin.installedVersion&&!Pe(7,wH).includes(i.plugin.name)?15:-1)}}var jI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;isUpdateHidden=!1;hideUpdatesFormControl=new Pf(!1);loading=!0;versions=[];versionsWithTags=[];versionSelect;ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions(),this.isUpdateHidden=this.$settings.env.plugins.hideUpdatesFor&&this.$settings.env.plugins.hideUpdatesFor.includes(this.plugin.name),this.hideUpdatesFormControl.patchValue(this.isUpdateHidden),this.hideUpdatesFormControl.valueChanges.pipe(Yn(750)).subscribe(i=>this.toggleHideUpdates(i))}doInstall(i){this.$activeModal.close({name:this.plugin.name,version:i,engines:this.versions.find(n=>n.version===i).engines,action:this.plugin.installedVersion?"alternate":"install"})}toggleHideUpdates(i){return K(this,null,function*(){let n=this.$settings.env.plugins?.hideUpdatesFor||[];i?n.includes(this.plugin.name)||(n=[...n,this.plugin.name].sort((r,o)=>r.localeCompare(o))):n=n.filter(r=>r!==this.plugin.name);try{yield le(this.$api.put("/config-editor/ui/plugins/hide-updates-for",{body:n})),this.$settings.setEnvItem("plugins.hideUpdatesFor",n),window.location.href=`/plugins?action=open-manage-version&plugin=${this.plugin.name}`}catch(r){this.hideUpdatesFormControl.patchValue(this.isUpdateHidden,{emitEvent:!1}),console.error(r),this.$toastr.error(r.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:i=>{for(let[n,r]of Object.entries(i.versions))this.versions.push({version:n,engines:r.engines||null}),Object.keys(i.tags).filter(o=>i.tags[o]===n).forEach(o=>{this.versionsWithTags.push({version:n,tag:o})});this.plugin.installedVersion&&!this.versions.find(n=>n.version===this.plugin.installedVersion)&&this.versions.push({version:this.plugin.installedVersion,engines:this.plugin.engines||null}),this.versions.sort((n,r)=>(0,NI.rcompare)(n.version,r.version)),this.versionsWithTags.sort((n,r)=>{let o=["latest","next","beta","alpha"],a=o.includes(n.tag)?o.indexOf(n.tag):999,s=o.includes(r.tag)?o.indexOf(r.tag):999;return a-s}),!this.versions.find(n=>n.version===this.versionSelect)&&i.tags.latest&&(this.versionSelect=i.tags.latest),this.loading=!1},error:i=>{console.error(i),this.$toastr.error(i.error.message||i.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||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"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"fas","fa-fw","fa-code-compare","primary-text","mb-3",2,"font-size","75px"],[1,"mb-3"],[1,"font-monospace"],[1,"far","fa-fw","fa-arrow-alt-circle-down","primary-text","mb-3",2,"font-size","75px"],[1,"grey-text","font-monospace"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-rotate-right"],[1,"fas","fa-fw","fa-arrow-alt-circle-down"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"grey-text","small"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","hidePluginUpdates",1,"rendux-input",3,"formControl"],["for","hidePluginUpdates",1,"rendux-label","ms-3"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(6,"div",4),E(7,SH,2,0,"div",5)(8,jH,16,8,"div",6),m(),f(9,"div",7),$(10,"div",8),f(11,"div",9)(12,"button",10),w(13,"translate"),q("click",function(){return r.dismissModal()}),x(14),w(15,"translate"),m()(),$(16,"div",11),m()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),G("aria-label",I(5,5,"form.button_close")),d(3),T(r.loading?7:8),d(5),G("aria-label",I(13,7,"form.button_close")),d(2),V(" ",I(15,9,"form.button_close")," "))},dependencies:[oi,On,kn,Yi,nr,$t,Zi,so,Qi,ke],encapsulation:2})}return e})();var FI=ze(o2(),1);function FH(e,t){e&1&&(f(0,"div",5),$(1,"i",14),m())}function qH(e,t){e&1&&(f(0,"div",6),x(1),w(2,"translate"),w(3,"translate"),m()),e&2&&(d(),En(" ",I(2,2,"plugins.settings.message_manual_config_required")," ",I(3,4,"plugins.settings.message_consult_documentation")," "))}function VH(e,t){if(e&1){let i=H();f(0,"button",25),w(1,"translate"),q("click",function(){j(i);let r=y(2).$index,o=y(2);return F(o.removeBlock(r))}),$(2,"i",26),m()}e&2&&b("ngbTooltip",I(1,1,"form.button_delete"))}function BH(e,t){if(e&1&&E(0,VH,3,3,"button",24),e&2){let i=y(3);T(!(i.schema!=null&&i.schema.singular)||i.pluginConfig.length>1?0:-1)}}function RH(e,t){if(e&1){let i=H();f(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),x(4),m(),f(5,"div"),E(6,BH,1,1),f(7,"button",19),w(8,"translate"),q("click",function(){let r=j(i).$index,o=y(2);return F(o.editBlock(r))}),$(9,"i",20),m()()()(),f(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),je("ngModelChange",function(r){j(i);let o=y(2);return Ne(o.currentBlock,r)||(o.currentBlock=r),F(r)}),q("onInit",function(r){j(i);let o=y(2);return F(o.onEditorInit(r))}),m()()()()}if(e&2){let i=t.$implicit,n=t.$index,r=y(2);b("ngbAccordionItem","configBlock."+n)("collapsed",r.show!=="configBlock."+n)("id","configBlock."+n),d(4),R(i.name||r.pluginAlias),d(2),T(r.show==="configBlock."+n?6:-1),d(),b("ngbTooltip",I(8,8,"form.button_edit")),d(5),b("options",r.editorOptions),Ae("ngModel",r.currentBlock)}}function LH(e,t){if(e&1&&(f(0,"div",7),st(1,RH,13,10,"div",15,at),m()),e&2){let i=y();b("closeOthers",!0),d(),lt(i.pluginConfig)}}function UH(e,t){if(e&1){let i=H();f(0,"button",30),q("click",function(){j(i);let r=y(2);return F(r.addBlock())}),$(1,"i",31),m()}}function zH(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"form.button_save")," ")}function HH(e,t){e&1&&$(0,"i",29)}function WH(e,t){if(e&1){let i=H();E(0,UH,2,0,"button",27),f(1,"button",28),q("click",function(){j(i);let r=y();return F(r.save())}),E(2,zH,2,3),E(3,HH,1,0,"i",29),m()}if(e&2){let i=y();T(i.schema!=null&&i.schema.singular?-1:0),d(),b("disabled",i.saveInProgress),d(),T(i.saveInProgress?-1:2),d(),T(i.saveInProgress?3:-1)}}function KH(e,t){if(e&1){let i=H();f(0,"button",32),q("click",function(){j(i);let r=y();return F(r.openFullConfigEditor())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"plugins.settings.label_open_config_editor")," "))}var Zp=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$md=P(Lf);$modal=P(ot);$plugin=P(Sn);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;get arrayKey(){return this.pluginType==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0},this.$md.detect.mobile()?(this.loading=!1,this.canConfigure=!1):this.loadPluginAlias()}onEditorInit(i){return K(this,null,function*(){window.editor=i,this.monacoEditor=i,yield this.monacoEditor.getModel().setValue(this.currentBlock),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.push({[this.pluginType]:this.pluginAlias,name:this.pluginAlias}),this.editBlock(this.pluginConfig.length-1)}editBlock(i){this.saveCurrentBlock()&&(this.show=`configBlock.${i}`,this.currentBlockIndex=i,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(i){let n=this.pluginConfig[i],r=this.pluginConfig.findIndex(o=>o===n);r>-1&&this.pluginConfig.splice(r,1),this.currentBlockIndex=null,this.currentBlock=void 0,this.show=""}save(){return K(this,null,function*(){if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let i=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.$activeModal.close(),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(ar,{size:"lg",backdrop:"static"});n.componentInstance.bridges=this.childBridges.map(r=>({name:r.name,username:r.username}));return}this.$activeModal.close(),this.$modal.open(_i,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress=!1}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}closeModal(){this.$activeModal.close()}loadPluginAlias(){this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`).subscribe({next:i=>{i.pluginAlias&&i.pluginType?(this.pluginAlias=i.pluginAlias,this.pluginType=i.pluginType,this.loadHomebridgeConfig()):this.loading=!1},error:()=>{this.loading=!1}})}loadHomebridgeConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe(i=>{this.pluginConfig=i,this.canConfigure=!0,this.loading=!1,this.pluginConfig.length?this.editBlock(0):(this.isFirstSave=!0,this.addBlock())})}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let i=this.monacoEditor.getModel().getValue().trim(),n;i.charAt(0)==='"'&&i.charAt(i.length-1)==="]"&&(i=`{${i}}`);try{n=FI.default.parse(i)}catch(o){return console.error(o),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(n)||typeof n!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!n[this.pluginType]&&Array.isArray(n[this.arrayKey])&&n[this.arrayKey].length&&Object.keys(n).length===1&&(n=n[this.arrayKey][0]),this.pluginType==="accessory"&&(!n.name||typeof n.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),n.name="",this.monacoEditor.getModel().setValue(JSON.stringify(n,null,4)),!1;let r=this.pluginConfig[this.currentBlockIndex];Object.keys(r).forEach(o=>delete r[o]),Object.assign(r,n),r[this.pluginType]=this.pluginAlias}return!0}getChildBridges(){return K(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.plugin.name===n.plugin&&this.childBridges.push(n)})}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.closeModal()}),m()(),f(6,"div",4),E(7,FH,2,0,"div",5),E(8,qH,4,6,"div",6),E(9,LH,3,1,"div",7),m(),f(10,"div",8)(11,"div",9)(12,"button",10),q("click",function(){return r.closeModal()}),x(13),w(14,"translate"),m()(),$(15,"div",11),f(16,"div",12),E(17,WH,4,4),E(18,KH,3,3,"button",13),m()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),b("disabled",r.saveInProgress),G("aria-label",I(5,10,"form.button_close")),d(3),T(r.loading?7:-1),d(),T(!r.loading&&!r.canConfigure?8:-1),d(),T(!r.loading&&r.canConfigure?9:-1),d(3),b("disabled",r.saveInProgress),d(),V(" ",I(14,12,"form.button_close")," "),d(4),T(r.canConfigure?17:-1),d(),T(r.canConfigure?-1:18))},dependencies:[Za,Ya,Xa,or,Ga,Ka,qf,oi,$t,Zi,Ja,ke],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 qI=e=>({link:e}),GH=(e,t)=>({"green-text":e,"grey-text":t});function JH(e,t){if(e&1){let i=H();f(0,"button",13),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal())}),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),G("aria-label",I(1,2,"form.button_close"))}}function XH(e,t){e&1&&(f(0,"div",5),$(1,"i",14),m())}function YH(e,t){e&1&&(f(0,"li"),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"child_bridge.bridges_paired_2")))}function ZH(e,t){e&1&&(f(0,"li"),x(1),w(2,"translate"),m()),e&2&&(d(),V("",I(2,1,"child_bridge.select_type"),":"))}function QH(e,t){if(e&1&&(f(0,"li"),x(1),w(2,"translate"),m(),E(3,YH,3,3,"li"),E(4,ZH,3,3,"li")),e&2){let i=y(2);d(),R(I(2,3,"child_bridge.bridges_paired")),d(2),T(i.configBlocks.length===1&&!i.deviceInfo[i.configBlocks[0]._bridge==null?null:i.configBlocks[0]._bridge.username]&&i.originalBridges.length===0?3:-1),d(),T(i.canConfigure?4:-1)}}function eW(e,t){if(e&1&&(f(0,"option",29),x(1),m()),e&2){let i=t.$implicit,n=t.$index;b("value",n),d(),R(i.name||i.platform||i.accessory)}}function tW(e,t){if(e&1){let i=H();f(0,"li",25),x(1),w(2,"translate"),m(),f(3,"li",23)(4,"label",26),x(5),w(6,"translate"),m(),f(7,"div",27)(8,"select",28),je("ngModelChange",function(r){j(i);let o=y(3);return Ne(o.selectedBlock,r)||(o.selectedBlock=r),F(r)}),q("change",function(r){j(i);let o=y(3);return F(o.onBlockChange(r.target.value))}),st(9,eW,2,2,"option",29,at),m()()()}if(e&2){let i=y(3);d(),R(I(2,3,"form.label.changes_kept")),d(4),V(" ",I(6,5,i.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),d(3),Ae("ngModel",i.selectedBlock),d(),lt(i.configBlocks)}}function iW(e,t){if(e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",31),x(5),m()()),e&2){let i=y(3);d(2),V(" ",I(3,2,i.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),d(3),V(" ",i.configBlocks[i.selectedBlock].name||i.configBlocks[i.selectedBlock].platform||i.configBlocks[i.selectedBlock].accessory," ")}}function nW(e,t){e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",32),x(5),w(6,"translate"),m()()),e&2&&(d(2),R(I(3,2,"child_bridge.config.use")),d(3),V(" ",I(6,4,"child_bridge.config.prevent")," "))}function rW(e,t){if(e&1&&(f(0,"option",29),x(1),m()),e&2){let i=t.$implicit;b("value",i.username),d(),En("",i.name," (",i.username,")")}}function oW(e,t){if(e&1){let i=H();f(0,"li",23)(1,"label",37),x(2),w(3,"translate"),m(),f(4,"div",27)(5,"select",38),q("change",function(r){j(i);let o=y(4);return F(o.onLinkBridgeChange(r.target.value))}),f(6,"option",29),x(7),w(8,"translate"),m(),st(9,rW,2,3,"option",29,at),m()()()}if(e&2){let i=y(4);d(2),R(I(3,2,"child_bridge.config.or_link")),d(5),R(I(8,4,"child_bridge.config.select_existing")),d(2),lt(i.bridgesAvailableForLink)}}function aW(e,t){if(e&1){let i=H();f(0,"li",33)(1,"span",7),x(2),w(3,"translate"),m(),f(4,"div",34)(5,"input",35),q("change",function(){j(i);let r=y(3);return F(r.toggleExternalBridge(r.configBlocks[r.selectedBlock],r.enabledBlocks[r.selectedBlock],r.selectedBlock))}),je("ngModelChange",function(r){j(i);let o=y(3);return Ne(o.enabledBlocks[o.selectedBlock],r)||(o.enabledBlocks[o.selectedBlock]=r),F(r)}),m(),$(6,"label",36),m()(),E(7,oW,11,6,"li",23)}if(e&2){let i=y(3);d(2),R(I(3,5,"child_bridge.config.use")),d(3),b("id","toggleExternalBridgeInput_"+i.selectedBlock),Ae("ngModel",i.enabledBlocks[i.selectedBlock]),d(),b("for","toggleExternalBridgeInput_"+i.selectedBlock),d(),T(!(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username)&&i.bridgesAvailableForLink.length?7:-1)}}function sW(e,t){if(e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",31),x(5),m()(),f(6,"li",23)(7,"label",30),x(8),w(9,"translate"),m(),f(10,"div",31),x(11),m()(),f(12,"li",23)(13,"label",30),x(14),w(15,"translate"),m(),f(16,"div",31),x(17),m()()),e&2){let i=y(3);d(2),R(I(3,6,"accessories.bridge_link_username")),d(3),V(" ",i.currentlySelectedLink.username," "),d(3),R(I(9,8,"accessories.bridge_link_port")),d(3),V(" ",i.currentlySelectedLink.port," "),d(3),R(I(15,10,"accessories.bridge_link_name")),d(3),V(" ",i.currentlySelectedLink.name," ")}}function lW(e,t){e&1&&(f(0,"span"),x(1),w(2,"translate"),m()),e&2&&(d(),V(" \xB7 ",I(2,1,"status.code_scan")," "))}function uW(e,t){if(e&1){let i=H();f(0,"li",33)(1,"span",7),x(2),w(3,"translate"),f(4,"code"),x(5,"-D"),m()(),f(6,"div",34)(7,"input",51),w(8,"translate"),je("ngModelChange",function(r){j(i);let o=y(5);return Ne(o.configBlocks[o.selectedBlock]._bridge.debugModeEnabled,r)||(o.configBlocks[o.selectedBlock]._bridge.debugModeEnabled=r),F(r)}),m(),$(9,"label",36),m()()}if(e&2){let i=y(5);d(2),V("",I(3,5,"child_bridge.config.debug")," "),d(5),b("id","homebridgeDebugMode_"+i.selectedBlock),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.debugModeEnabled),G("aria-label",I(8,7,"settings.startup.debug")),d(2),b("for","homebridgeDebugMode_"+i.selectedBlock)}}function cW(e,t){if(e&1){let i=H();f(0,"li",39)(1,"div",40),$(2,"app-qrcode",41),f(3,"p",42),x(4),m(),f(5,"p",43),$(6,"i",44),x(7),w(8,"translate"),E(9,lW,3,3,"span"),m()()(),f(10,"li",23)(11,"label",30),x(12),w(13,"translate"),m(),f(14,"div",31),x(15),m()(),f(16,"li",23)(17,"label",30),x(18),w(19,"translate"),m(),f(20,"div",31),x(21),m()(),f(22,"li",23)(23,"label",30),x(24),w(25,"translate"),m(),f(26,"div",27)(27,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.name,r)||(o.configBlocks[o.selectedBlock]._bridge.name=r),F(r)}),m()()(),f(28,"li",23)(29,"label",30),x(30),w(31,"translate"),m(),f(32,"div",27)(33,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.manufacturer,r)||(o.configBlocks[o.selectedBlock]._bridge.manufacturer=r),F(r)}),m()()(),f(34,"li",23)(35,"label",30),x(36),w(37,"translate"),m(),f(38,"div",27)(39,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.model,r)||(o.configBlocks[o.selectedBlock]._bridge.model=r),F(r)}),m()()(),f(40,"li",23)(41,"label",30),x(42),w(43,"translate"),m(),f(44,"div",27)(45,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.firmwareRevision,r)||(o.configBlocks[o.selectedBlock]._bridge.firmwareRevision=r),F(r)}),m()()(),E(46,uW,10,9,"li",33),f(47,"li",23)(48,"label",30)(49,"span",46),x(50,"DEBUG"),m(),$(51,"br")(52,"small",47),w(53,"translate"),m(),f(54,"div",27)(55,"input",48),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.env.DEBUG,r)||(o.configBlocks[o.selectedBlock]._bridge.env.DEBUG=r),F(r)}),m()()(),f(56,"li",23)(57,"label",30)(58,"span",46),x(59,"NODE_OPTIONS"),m(),$(60,"br"),f(61,"small",49),x(62),w(63,"translate"),m()(),f(64,"div",27)(65,"input",50),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.env.NODE_OPTIONS,r)||(o.configBlocks[o.selectedBlock]._bridge.env.NODE_OPTIONS=r),F(r)}),m()()()}if(e&2){let i=y(4);d(2),b("data",i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._setupCode),d(2),R(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username].pincode),d(2),b("ngClass",Tn(41,GH,i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired,!i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired)),d(),V(" ",I(8,22,i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),d(2),T(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired?-1:9),d(3),R(I(13,24,"accessories.bridge_username")),d(3),V(" ",i.configBlocks[i.selectedBlock]._bridge.username," "),d(3),R(I(19,26,"accessories.bridge_port")),d(3),V(" ",i.configBlocks[i.selectedBlock]._bridge.port," "),d(3),R(I(25,28,"child_bridge.config.name")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.name),d(3),R(I(31,30,"child_bridge.config.manufacturer")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.manufacturer),d(3),R(I(37,32,"child_bridge.config.model")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.model),d(3),R(I(43,34,"child_bridge.config.firmware")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.firmwareRevision),d(),T(i.canShowBridgeDebug?46:-1),d(6),b("innerHTML",He(53,36,"settings.service.debug_tooltip",ri(44,qI,i.linkDebug)),he),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.env.DEBUG),d(7),R(I(63,39,"settings.service.node_tooltip")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.env.NODE_OPTIONS)}}function dW(e,t){if(e&1&&E(0,cW,66,46),e&2){let i=y(3);T(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]?0:-1)}}function pW(e,t){e&1&&(f(0,"ngb-alert",24),x(1),w(2,"translate"),$(3,"br"),x(4),w(5,"translate"),m()),e&2&&(b("dismissible",!1),d(),V(" ",I(2,3,"child_bridge.restart_homebridge")," "),d(3),V("",I(5,5,"child_bridge.return_to_pair")," "))}function fW(e,t){if(e&1&&(f(0,"ul",22),E(1,tW,11,7),E(2,iW,6,4,"li",23),E(3,nW,7,6,"li",23),E(4,aW,8,7),E(5,sW,18,12),E(6,dW,1,1),m(),E(7,pW,6,7,"ngb-alert",24)),e&2){let i=y(2);d(),T(i.configBlocks.length>1?1:-1),d(),T(i.configBlocks.length===1?2:-1),d(),T(i.currentBridgeHasLinks?3:-1),d(),T(i.currentBridgeHasLinks?-1:4),d(),T(i.currentlySelectedLink?5:-1),d(),T(!i.currentlySelectedLink&&(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username)?6:-1),d(),T(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username&&i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]===!1?7:-1)}}function mW(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"child_bridge.confirm_delete_2")," ")}function hW(e,t){if(e&1&&(f(0,"li"),x(1),f(2,"span",46),x(3),m(),x(4,") "),m()),e&2){let i=t.$implicit,n=y(3);d(),V(" ",i.bridgeName||(n.deviceInfo[i.id]==null?null:n.deviceInfo[i.id].displayName)," ("),d(2),R(i.id)}}function gW(e,t){if(e&1&&(f(0,"ngb-alert",19)(1,"p"),x(2),w(3,"translate"),E(4,mW,2,3),m(),f(5,"div",9)(6,"ul",52),st(7,hW,5,2,"li",null,at),m()()()),e&2){let i=y(2);b("dismissible",!1),d(2),V(" ",I(3,3,"child_bridge.confirm_delete_1")," "),d(2),T(i.deletingPairedBridge?4:-1),d(3),lt(i.deleteBridges)}}function yW(e,t){e&1&&(f(0,"ngb-alert",20),x(1),w(2,"translate"),m()),e&2&&(b("dismissible",!1),d(),V(" ",I(2,2,"child_bridge.must_configure_plugin")," "))}function _W(e,t){if(e&1){let i=H();f(0,"ngb-alert",21)(1,"div",17),x(2),w(3,"translate"),w(4,"translate"),m(),f(5,"button",53),q("click",function(){j(i);let r=y(2);return F(r.openFullConfigEditor())}),x(6),w(7,"translate"),m()()}e&2&&(b("dismissible",!1),d(2),En(" ",I(3,4,"plugins.settings.message_manual_config_required")," ",I(4,6,"plugins.settings.message_consult_documentation")," "),d(4),V(" ",I(7,8,"plugins.settings.label_open_config_editor")," "))}function bW(e,t){if(e&1&&(f(0,"div",15),$(1,"i",16),m(),f(2,"ul",17),$(3,"li",18),w(4,"translate"),E(5,QH,5,5),m(),E(6,fW,8,7),E(7,gW,9,5,"ngb-alert",19),E(8,yW,3,4,"ngb-alert",20),E(9,_W,8,10,"ngb-alert",21)),e&2){let i=y();d(3),b("innerHTML",He(4,6,"child_bridge.about",ri(9,qI,i.linkChildBridges)),he),d(2),T(i.configBlocks.length?5:-1),d(),T(i.canConfigure&&i.configBlocks.length?6:-1),d(),T(i.deleteBridges.length?7:-1),d(),T(!i.configBlocks.length&&i.canConfigure?8:-1),d(),T(i.canConfigure?-1:9)}}function vW(e,t){if(e&1){let i=H();f(0,"button",54),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),d(),V(" ",I(2,2,"form.button_close")," ")}}function xW(e,t){e&1&&$(0,"i",56)}function CW(e,t){if(e&1){let i=H();f(0,"button",55),q("click",function(){j(i);let r=y();return F(r.save())}),x(1),w(2,"translate"),E(3,xW,1,0,"i",56),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),d(),V(" ",I(2,3,"form.button_save")," "),d(2),T(i.saveInProgress?3:-1)}}function wW(e,t){if(e&1){let i=H();f(0,"button",57),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function SW(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"form.button_save")," ")}function IW(e,t){e&1&&$(0,"i",56)}function $W(e,t){if(e&1){let i=H();f(0,"button",55),q("click",function(){j(i);let r=y(2);return F(r.save())}),E(1,SW,2,3),E(2,IW,1,0,"i",56),m()}if(e&2){let i=y(2);b("disabled",i.saveInProgress||i.loading),d(),T(i.saveInProgress?-1:1),d(),T(i.saveInProgress?2:-1)}}function EW(e,t){if(e&1){let i=H();f(0,"button",59),q("click",function(){j(i);let r=y(2);return F(r.openPluginConfig())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"plugins.button_settings")," "))}function TW(e,t){if(e&1&&(E(0,$W,3,3,"button",10),E(1,EW,3,3,"button",58)),e&2){let i=y();T(i.configBlocks.length?0:-1),d(),T(i.configBlocks.length?-1:1)}}var VI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$modal=P(ot);$plugins=P(Sn);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;schema;justInstalled=!1;loading=!0;canConfigure=!0;configBlocks=[];selectedBlock="0";isPlatform;enabledBlocks={};bridgeCache=new Map;originalBridges=[];deviceInfo=new Map;saveInProgress=!1;canShowBridgeDebug=!1;deleteBridges=[];deletingPairedBridge=!1;accessoryBridgeLinks=[];bridgesAvailableForLink=[];currentlySelectedLink=null;currentBridgeHasLinks=!1;linkChildBridges='<a href="https://github.com/homebridge/homebridge/wiki/Child-Bridges" target="_blank"><i class="fas fa-fw fa-external-link-alt primary-text"></i></a>';linkDebug='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Debug-Common-Values" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';ngOnInit(){return K(this,null,function*(){yield Promise.all([this.getPluginType(),this.loadPluginConfig()]),this.canShowBridgeDebug=this.$settings.env.homebridgeVersion.startsWith("2"),this.loading=!1})}onBlockChange(i){if(this.selectedBlock=i,this.currentlySelectedLink=this.accessoryBridgeLinks.find(n=>n.index===i)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(n=>n.usesIndex===i),this.bridgesAvailableForLink=[],this.configBlocks[Number(i)].accessory)for(let[n,r]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(o=>o.id===r.username)||n<Number(i)&&this.bridgesAvailableForLink.push({index:n.toString(),usesIndex:i,name:r.name,port:r.port,username:r.username})}onLinkBridgeChange(i){if(i){let n=this.configBlocks.findIndex(o=>o._bridge?.username===i);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:n.toString(),name:this.bridgeCache.get(n)?.name,port:this.bridgeCache.get(n)?.port,username:i}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(o=>o.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let r=this.configBlocks[Number(this.selectedBlock)];r._bridge={username:i}}}getPluginType(){return K(this,null,function*(){try{let i=yield le(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`));this.isPlatform=i.pluginType==="platform"}catch(i){this.$toastr.error(this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close(),console.error(i)}})}loadPluginConfig(){return K(this,null,function*(){try{this.configBlocks=yield le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[n,r]of this.configBlocks.entries())if(r._bridge&&r._bridge.username){this.enabledBlocks[n]=!0;let o=Array.from(this.bridgeCache.values()).findIndex(s=>s.username===r._bridge.username),a=o!==-1?Array.from(this.bridgeCache.values())[o]:void 0;a?(r._bridge.env={},this.accessoryBridgeLinks.push({index:n.toString(),usesIndex:o.toString(),name:a.name,port:a.port,username:r._bridge.username})):(r._bridge.env=r._bridge.env||{},this.bridgeCache.set(n,r._bridge),yield this.getDeviceInfo(r._bridge.username),r._bridge.name||(r._bridge.name=this.deviceInfo[r._bridge.username]?.displayName),this.originalBridges.push(r._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((n,r)=>{this.enabledBlocks[r]=!0,this.toggleExternalBridge(n,!0,r.toString())}),this.accessoryBridgeLinks.find(n=>n.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(i){this.canConfigure=!1,console.error(i)}})}toggleExternalBridge(i,n,r){return K(this,null,function*(){if(n){let o=this.bridgeCache.get(Number(r));i._bridge={username:o?o.username:this.generateUsername(),port:yield this.getUnusedPort(),name:o?.name,model:o?.model,manufacturer:o?.manufacturer,firmwareRevision:o?.firmwareRevision,debugModeEnabled:o?.debugModeEnabled,env:o?.env},this.deleteBridges.some(a=>a.id===i._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(a=>a.id!==i._bridge.username)),this.bridgeCache.set(Number(r),i._bridge),yield this.getDeviceInfo(i._bridge.username)}else{if(this.accessoryBridgeLinks.some(o=>o.index===r))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(o=>o.index!==r),this.currentlySelectedLink=null;else{let o=this.originalBridges.find(a=>a.username===i._bridge.username);o&&this.deleteBridges.push({id:i._bridge.username,bridgeName:i._bridge.name||o.displayName,paired:this.deviceInfo[i._bridge.username]?._isPaired})}delete i._bridge}this.deletingPairedBridge=this.deleteBridges.some(o=>o.paired)})}getUnusedPort(){return K(this,null,function*(){this.saveInProgress=!0;try{return(yield le(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(i){return K(this,null,function*(){try{this.deviceInfo[i]=yield le(this.$api.get(`/server/pairings/${i.replace(/:/g,"")}`))}catch(n){console.error(n),this.deviceInfo[i]=!1}})}save(){return K(this,null,function*(){this.saveInProgress=!0;try{yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let i of this.deleteBridges)try{yield le(this.$api.delete(`/server/pairings/${i.id.replace(/:/g,"")}`))}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(_i,{size:"lg",backdrop:"static"})}catch(i){console.error(i),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 i="0123456789ABCDEF",n="0E:";for(let r=0;r<5;r++)n+=i.charAt(Math.round(Math.random()*15)),n+=i.charAt(Math.round(Math.random()*15)),r!==4&&(n+=":");return n}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close("Dismiss")}static \u0275fac=function(n){return new(n||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","d-flex","align-items-center"],["type","checkbox",1,"rendux-input",3,"change","ngModelChange","id","ngModel"],[1,"rendux-label",3,"for"],["for","bridgeLink",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","bridgeLink",1,"custom-select",3,"change"],[1,"list-group-item","text-center"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"mx-auto","mt-3","mb-1"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-fw","fa-link",3,"ngClass"],["type","text",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"font-monospace"],[1,"grey-text",3,"innerHTML"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"grey-text"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"d-inline-block","text-start","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),E(4,JH,2,4,"button",3),m(),f(5,"div",4),E(6,XH,2,0,"div",5),E(7,bW,10,11),m(),f(8,"div",6)(9,"div",7),E(10,vW,3,4,"button",8),m(),f(11,"div",9),E(12,CW,4,5,"button",10),E(13,wW,3,3,"button",11),m(),f(14,"div",12),E(15,TW,2,2),m()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),T(r.justInstalled?-1:4),d(2),T(r.loading?6:-1),d(),T(r.loading?-1:7),d(3),T(r.canConfigure&&!r.justInstalled?10:-1),d(2),T(r.justInstalled?12:-1),d(),T(r.canConfigure?-1:13),d(2),T(r.canConfigure&&!r.justInstalled?15:-1))},dependencies:[oi,On,kn,ir,Yi,nr,$t,Zi,rr,Uf,Kt,ke],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 Qp=ze(Qa(),1);var ou=()=>["homebridge","homebridge-config-ui-x"],BI=(e,t,i)=>({pluginName:e,minVersion:t,installedVersion:i}),PW=(e,t,i)=>({minVersion:e,installedVersion:t,latestVersion:i,packageName:"Homebridge"}),OW=()=>({packageName:"Homebridge"}),kW=(e,t,i)=>({minVersion:e,installedVersion:t,latestVersion:i,packageName:"Homebridge UI"}),MW=()=>({packageName:"Homebridge UI"});function DW(e,t){if(e&1&&(f(0,"li",14)(1,"div",17),$(2,"i",18),m(),f(3,"div",19),x(4),w(5,"translate"),m()()),e&2){let i=y(2);d(4),V(" ",He(5,1,"plugins.compat.node_too_low",Wt(4,BI,i.plugin.displayName,i.nodeMinVersion,i.nodeInstalledVersion))," ")}}function AW(e,t){if(e&1&&(f(0,"li",14)(1,"div",17),$(2,"i",18),m(),f(3,"div",19),x(4),w(5,"translate"),m()()),e&2){let i=y(2);d(4),V(" ",He(5,1,"plugins.compat.hb_too_low",Wt(4,BI,i.plugin.displayName,i.hbMinVersion,i.hbInstalledVersion))," ")}}function NW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",12),m(),f(2,"ul",13),E(3,DW,6,8,"li",14),E(4,AW,6,8,"li",14),m(),f(5,"ngb-alert",15)(6,"p",16),x(7),w(8,"translate"),m()()),e&2){let i=y();d(),Z(vf("",i.action==="install"?"far fa-fw fa-arrow-alt-circle-down":i.action==="update"?"far fa-fw fa-arrow-alt-circle-up":"fas fa-fw fa-code-compare"," primary-text")),d(2),T(i.isValidNode?-1:3),d(),T(i.isValidHb?-1:4),d(),b("dismissible",!1),d(2),R(I(8,7,"plugins.compat.are_you_sure"))}}function jW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",20),m(),f(2,"ul",13)(3,"li",14)(4,"div",17),$(5,"i",18),m(),f(6,"div",19),x(7),w(8,"translate"),m()()(),f(9,"ngb-alert",15)(10,"p",21),x(11),w(12,"translate"),m(),f(13,"p",16)(14,"a",22),x(15),w(16,"translate"),$(17,"i",23),m()()()),e&2){let i=y();d(7),V(" ",He(8,4,"plugins.compat.hb_node_too_low",Wt(12,PW,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),d(2),b("dismissible",!1),d(2),R(He(12,7,"plugins.compat.node_first",Pe(16,OW))),d(4),V(" ",I(16,10,"plugins.compat.node_link")," ")}}function FW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",20),m(),f(2,"ul",13)(3,"li",14)(4,"div",17),$(5,"i",18),m(),f(6,"div",19),x(7),w(8,"translate"),m()()(),f(9,"ngb-alert",15)(10,"p",21),x(11),w(12,"translate"),m(),f(13,"p",16)(14,"a",22),x(15),w(16,"translate"),$(17,"i",23),m()()()),e&2){let i=y();d(7),V(" ",He(8,4,"plugins.compat.hb_node_too_low",Wt(12,kW,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),d(2),b("dismissible",!1),d(2),R(He(12,7,"plugins.compat.node_first",Pe(16,MW))),d(4),V(" ",I(16,10,"plugins.compat.node_link")," ")}}function qW(e,t){if(e&1){let i=H();f(0,"button",24),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function VW(e,t){if(e&1){let i=H();f(0,"button",24),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function BW(e,t){if(e&1){let i=H();f(0,"button",25),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.label_continue")," "))}var RI=(()=>{class e{$activeModal=P(Oe);$settings=P(Re);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;ngOnInit(){this.nodeMinVersion=(0,Qp.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Qp.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close(!0)}static \u0275fac=function(n){return new(n||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,"list-group","list-group-box","mb-3","text-start"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],["type","warning",1,"mb-0",3,"dismissible"],[1,"text-center","mb-0"],[1,"me-3"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],[1,"text-start","flex-grow-1"],[1,"fab","fa-fw","fa-node-js","primary-text",2,"font-size","75px"],[1,"text-center","mb-1"],["href","https://homebridge.io/w/JTKEF","target","_blank","rel","noopener noreferrer"],[1,"fa","fa-fw","fa-external-link-alt"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(7,"div",4),E(8,NW,9,9),E(9,jW,18,17),E(10,FW,18,17),m(),f(11,"div",5)(12,"div",6),E(13,qW,3,3,"button",7),m(),f(14,"div",8),E(15,VW,3,3,"button",7),m(),f(16,"div",9),E(17,BW,3,3,"button",10),m()()()),n&2&&(d(3),R(I(4,8,"plugins.compat.title")),d(2),G("aria-label",I(6,10,"form.button_close")),d(3),T(Pe(12,ou).includes(r.plugin.name)?-1:8),d(),T(r.plugin.name==="homebridge"?9:-1),d(),T(r.plugin.name==="homebridge-config-ui-x"?10:-1),d(3),T(Pe(13,ou).includes(r.plugin.name)?-1:13),d(2),T(Pe(14,ou).includes(r.plugin.name)?15:-1),d(2),T(Pe(15,ou).includes(r.plugin.name)?-1:17))},dependencies:[rr,ke],encapsulation:2})}return e})();var pt=[];for(let e=0;e<256;++e)pt.push((e+256).toString(16).slice(1));function LI(e,t=0){return(pt[e[t+0]]+pt[e[t+1]]+pt[e[t+2]]+pt[e[t+3]]+"-"+pt[e[t+4]]+pt[e[t+5]]+"-"+pt[e[t+6]]+pt[e[t+7]]+"-"+pt[e[t+8]]+pt[e[t+9]]+"-"+pt[e[t+10]]+pt[e[t+11]]+pt[e[t+12]]+pt[e[t+13]]+pt[e[t+14]]+pt[e[t+15]]).toLowerCase()}var ef,RW=new Uint8Array(16);function tf(){if(!ef){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ef=crypto.getRandomValues.bind(crypto)}return ef(RW)}var LW=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),nf={randomUUID:LW};function UW(e,t,i){if(nf.randomUUID&&!t&&!e)return nf.randomUUID();e=e||{};let n=e.random??e.rng?.()??tf();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(i=i||0,i<0||i+16>t.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let r=0;r<16;++r)t[i+r]=n[r];return t}return LI(n)}var au=UW;var UI=ze(lo(),1);var zI=(()=>{class e{$api=P(ve);$toastr=P(Ce);$translate=P(xe);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:i=>{(0,UI.saveAs)(i.body,"homebridge-deconz.json.gz")},error:i=>{console.error(i),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(Qe(0,"button",0),Ht("click",function(){return r.downloadDumpFile()}),gi(1,"i",1),x(2,` Download Dump File
|
|
21
|
+
hb-service start`)}}function Q8(e,t){if(e&1&&(f(0,"span"),x(1),m()),e&2){let i=y(3);d(),V("v",i.installedVersion," \u2192 ")}}function eH(e,t){if(e&1&&(f(0,"h5",18),E(1,Q8,2,1,"span"),x(2),m()),e&2){let i=y(2);d(),T(i.installedVersion?1:-1),d(),V(" ",i.targetVersionPretty," ")}}function tH(e,t){e&1&&(f(0,"div",26),$(1,"i",27),m())}function iH(e,t){if(e&1&&$(0,"markdown",28),e&2){let i=y(4);b("data",i.versionNotes)}}function nH(e,t){e&1&&(f(0,"div",29),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.manage.notes_none")))}function rH(e,t){if(e&1&&(f(0,"div",29),x(1),w(2,"translate"),$(3,"br"),x(4),w(5,"translate"),$(6,"br"),x(7),w(8,"translate"),$(9,"br"),m()),e&2){let i=y(6);d(),V(" ",He(2,3,"plugins.manage.notes_beta_1",ri(10,W8,i.pluginDisplayName))),d(3),V(" ",I(5,6,"plugins.manage.notes_beta_2")),d(3),V(" ",I(8,8,"plugins.manage.notes_beta_3"))}}function oH(e,t){e&1&&(f(0,"div",29),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.manage.notes_latest")))}function aH(e,t){if(e&1&&E(0,rH,10,12,"div",29)(1,oH,3,3,"div",29),e&2){let i=y(5);T(i.targetVersion.includes("beta")||i.targetVersion.includes("alpha")||i.targetVersion.includes("next")?0:1)}}function sH(e,t){if(e&1&&E(0,nH,3,3,"div",29)(1,aH,2,1),e&2){let i=y(4);T(i.versionNotesShow?0:1)}}function lH(e,t){if(e&1&&E(0,iH,1,1,"markdown",28)(1,sH,2,1),e&2){let i=y(3);T(i.versionNotes?0:1)}}function uH(e,t){if(e&1&&(f(0,"div",25),E(1,tH,2,0,"div",26)(2,lH,2,1),m()),e&2){let i=y(2);d(),T(i.action==="Update"&&!i.versionNotesLoaded?1:2)}}function cH(e,t){e&1&&(f(0,"div",26),$(1,"i",27),m())}function dH(e,t){if(e&1&&$(0,"markdown",28),e&2){let i=y(4);b("data",i.fullChangelog)}}function pH(e,t){e&1&&($(0,"div",31),w(1,"translate")),e&2&&b("innerHTML",I(1,1,"plugins.manage.changelog_none"),he)}function fH(e,t){if(e&1&&E(0,dH,1,1,"markdown",28)(1,pH,2,3,"div",31),e&2){let i=y(3);T(i.fullChangelog?0:1)}}function mH(e,t){if(e&1&&(f(0,"div",30),E(1,cH,2,0,"div",26)(2,fH,2,1),m()),e&2){let i=y(2);d(),T(i.action==="Update"&&!i.fullChangelogLoaded?1:2)}}function hH(e,t){if(e&1){let i=H();f(0,"div",24)(1,"p",32)(2,"span",33),x(3),w(4,"translate"),m(),f(5,"a",34),q("click",function(){j(i);let r=y(2);return F(r.downloadBackupFile())}),$(6,"i",35),m()(),f(7,"p",36),x(8),w(9,"translate"),m()()}e&2&&(d(3),R(I(4,2,"plugins.manage.backup")),d(5),R(I(9,4,"plugins.manage.hb_restart")))}function gH(e,t){if(e&1){let i=H();f(0,"div",6)(1,"div",9),$(2,"i",17),m(),E(3,eH,3,2,"h5",18),f(4,"ul",19,0),je("activeIdChange",function(r){j(i);let o=y();return Ne(o.releaseNotesTab,r)||(o.releaseNotesTab=r),F(r)}),f(6,"li",20)(7,"button",21),x(8),w(9,"translate"),m(),ue(10,uH,3,1,"ng-template",22),m(),f(11,"li",20)(12,"button",21),x(13),w(14,"translate"),m(),ue(15,mH,3,1,"ng-template",22),m()(),$(16,"div",23),E(17,hH,10,6,"div",24),m()}if(e&2){let i=bf(5),n=y();d(2),b("ngClass",tr(13,AI,n.action==="Install"&&!n.installedVersion,n.action==="Install"&&n.installedVersion,n.action==="Update",n.action==="Uninstall")),d(),T(n.latestVersion?3:-1),d(),Ae("activeId",n.releaseNotesTab),d(2),b("ngbNavItem",1),d(2),R(I(9,9,"plugins.manage.notes")),d(3),b("ngbNavItem",2),d(2),R(I(14,11,"plugins.manage.changelog")),d(3),b("ngbNavOutlet",i),d(),T(Pe(18,H8).includes(n.pluginName)?17:-1)}}function yH(e,t){if(e&1){let i=H();f(0,"button",43),w(1,"translate"),q("click",function(){j(i);let r=y(2);return F(r.dismissModal())}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function _H(e,t){if(e&1){let i=H();f(0,"button",43),w(1,"translate"),q("click",function(){j(i);let r=y(2);return F(r.dismissModal())}),x(2),w(3,"translate"),m()}e&2&&(G("aria-label",I(1,2,"form.button_close")),d(2),V(" ",I(3,4,"form.button_close")," "))}function bH(e,t){if(e&1){let i=H();f(0,"button",44),q("click",function(){j(i);let r=y(2);return F(r.update())}),x(1),w(2,"translate"),m()}e&2&&(d(),R(I(2,1,"form.button_continue")))}function vH(e,t){if(e&1){let i=H();f(0,"button",44),q("click",function(){j(i);let r=y(2);return F(r.childBridges.length>0?r.onRestartChildBridgeClick():r.onRestartHomebridgeClick())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"menu.tooltip_restart")," "))}function xH(e,t){if(e&1){let i=H();f(0,"button",45),q("click",function(){j(i);let r=y(2);return F(r.downloadLogFile())}),x(1),w(2,"translate"),m()}e&2&&(d(),R(I(2,1,"form.button_download")))}function CH(e,t){if(e&1&&(f(0,"div",8)(1,"div",37),E(2,yH,4,6,"button",38),m(),f(3,"div",39),E(4,_H,4,6,"button",38),m(),f(5,"div",40),E(6,bH,3,3,"button",41),E(7,vH,3,3,"button",41),E(8,xH,3,3,"button",42),m()()),e&2){let i=y();d(2),T(!i.justUpdatedPlugin&&i.onlineUpdateOk||i.justUpdatedPlugin&&(!i.isDisabled||i.actionFailed)?2:-1),d(2),T(i.justUpdatedPlugin&&i.isDisabled&&!i.actionFailed||!i.onlineUpdateOk?4:-1),d(2),T(i.onlineUpdateOk&&i.releaseNotesShow?6:-1),d(),T(i.justUpdatedPlugin&&!i.isDisabled?7:-1),d(),T(i.actionFailed?8:-1)}}var io=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$backup=P(Hf);$modal=P(ot);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);$ws=P(tn);io;toastSuccess;term=new MI.Terminal;termTarget;fitAddon=new kI.FitAddon;errorLog="";pluginName;pluginDisplayName;targetVersion;latestVersion;installedVersion;isDisabled;action;targetVersionPretty="";actionComplete=!1;actionFailed=!1;justUpdatedPlugin=!1;updateToBeta=!1;childBridges=[];presentTenseVerb;pastTenseVerb;onlineUpdateOk;iconStar='<i class="fas fa-fw fa-star primary-text"></i>';iconThumbsUp='<i class="fas fa-fw fa-thumbs-up primary-text"></i>';versionNotes;versionNotesLoaded=!1;versionNotesShow=!1;fullChangelog;fullChangelogLoaded=!1;releaseNotesShow=!1;releaseNotesTab=1;constructor(){this.term.loadAddon(this.fitAddon)}ngOnInit(){switch(this.targetVersionPretty=this.targetVersion==="latest"?`v${this.latestVersion}`:/^\d/.test(this.targetVersion)?`v${this.targetVersion}`:this.targetVersion,this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-log-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",i=>{this.term.write(i);let n=i.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();n&&(this.errorLog+=`${n}\r
|
|
22
|
+
`)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk=!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32"),this.action){case"Install":this.install(),this.presentTenseVerb=this.$translate.instant("plugins.manage.install"),this.pastTenseVerb=this.$translate.instant("plugins.manage.installed");break;case"Uninstall":this.uninstall(),this.presentTenseVerb=this.$translate.instant("plugins.manage.uninstall"),this.pastTenseVerb=this.$translate.instant("plugins.manage.uninstalled");break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta=!1;break;case"alpha":case"beta":case"test":this.updateToBeta=!0;break}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated"),this.getVersionNotes();break}}update(){if(this.releaseNotesShow=!1,this.versionNotes="",this.fullChangelog="",!!this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>K(this,null,function*(){if(this.pluginName==="homebridge-config-ui-x"){this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{window.location.href="/restart"},error:i=>{console.error(i),window.location.href="/restart"}});return}try{yield this.getChildBridges()}catch(i){console.error(i)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate(["/plugins"])}),error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return K(this,null,function*(){try{for(let n of this.childBridges)yield le(this.$api.put(`/server/restart/${n.username}`,{}));let i=this.$modal.open(TI,{size:"xl",backdrop:"static"});i.componentInstance.plugin={name:this.pluginName,displayName:this.pluginDisplayName}}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let i=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,DI.saveAs)(i,`${this.pluginName}-error.log`)}downloadBackupFile(){return K(this,null,function*(){try{yield this.$backup.downloadBackup()}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end()}dismissModal(){this.$activeModal.dismiss("Dismiss")}install(){if(this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(`${this.pastTenseVerb} ${this.pluginName}`,this.toastSuccess),window.location.href=`/plugins?action=just-installed&plugin=${this.pluginName}`},error:i=>{this.actionFailed=!0,console.error(i),this.$router.navigate(["/plugins"]),this.$toastr.error(i.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(_i,{size:"lg",backdrop:"static"})},error:i=>{this.actionFailed=!0,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}upgradeHomebridge(){return K(this,null,function*(){let i="update";if(Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])){let n=this.$modal.open(OI,{size:"lg",backdrop:"static"});n.componentInstance.isUpdating=!0,i=yield n.result}i==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$router.navigate(["/restart"])},error:n=>{console.error(n),this.$router.navigate(["/restart"])}})},error:n=>{this.actionFailed=!0,console.error(n),this.$toastr.error(n.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getVersionNotes(){return K(this,null,function*(){this.releaseNotesShow=!0;try{let i=yield le(this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`));this.fullChangelog=i.changelog,i.latestVersion&&(this.latestVersion=i.latestVersion),this.targetVersion==="latest"||this.targetVersion===this.latestVersion?(this.versionNotesShow=!0,i.notes&&(this.versionNotes=i.notes)):(this.versionNotesShow=!1,this.versionNotesLoaded=!0)}catch(i){console.error("Error loading release notes:",i)}this.fullChangelogLoaded=!0,this.versionNotesLoaded=!0})}getChildBridges(){return K(this,null,function*(){(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.pluginName===n.plugin&&this.childBridges.push(n)})})}static \u0275fac=function(n){return new(n||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:[["nav","ngbNav"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],["id","plugin-log-output",1,"modal-body",3,"hidden"],[1,"modal-body","plugin-modal-body"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"mb-3","text-center"],[1,"far","fa-fw","fa-check-circle","primary-text",2,"font-size","75px"],[1,"text-center","mb-3"],[1,"mb-3","text-center","grey-text",3,"innerHTML"],[1,"text-center","mb-0"],[1,"fas","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-3"],[1,"p-2","mb-0"],[1,"far","fa-fw","primary-text",2,"font-size","75px",3,"ngClass"],[1,"mb-4","text-center"],["ngbNav","",1,"nav-tabs","px-0",3,"activeIdChange","activeId"],[1,"w-50","m-0",3,"ngbNavItem"],["ngbNavLink","",1,"w-100","release-tab"],["ngbNavContent",""],[1,"mt-2",3,"ngbNavOutlet"],[1,"mt-4","mb-0"],[1,"alert","release-notes","p-3","pb-1","my-0"],[1,"w-100","text-center","primary-text","mt-3","mb-4"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"plugin-md",3,"data"],[1,"w-100","text-center","grey-text","mt-3","mb-4"],[1,"alert","release-notes","p-3","pb-1","my-0",2,"border-top-left-radius","0","border-top-right-radius","0"],[1,"w-100","text-center","grey-text","mt-3","mb-4",3,"innerHTML"],[1,"w-100","text-center","mb-1","small"],[1,"grey-text"],["href","javascript:void(0)",3,"click"],[1,"fa","fa-fw","fa-download","mx-1"],[1,"w-100","text-center","mb-0","small","grey-text"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-primary"],[1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-primary",3,"click"],[1,"btn","btn-primary",3,"click"]],template:function(n,r){n&1&&(f(0,"div",1)(1,"div",2)(2,"h5",3),x(3),m(),f(4,"button",4),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),$(6,"div",5),E(7,Y8,2,1,"div",6),E(8,Z8,12,14,"div",7),E(9,gH,18,19,"div",6),E(10,CH,9,5,"div",8),m()),n&2&&(d(3),R(r.pluginDisplayName),d(),G("aria-label",I(5,7,"form.button_close")),d(2),b("hidden",!r.onlineUpdateOk||r.actionComplete||r.releaseNotesShow),d(),T(r.actionComplete?7:-1),d(),T(r.onlineUpdateOk?-1:8),d(),T(r.releaseNotesShow&&!r.actionComplete&&r.onlineUpdateOk?9:-1),d(),T(!r.onlineUpdateOk||r.actionComplete||r.releaseNotesShow||r.actionFailed?10:-1))},dependencies:[ts,es,is,Kt,Ff,Nf,Af,Df,jf,ke],styles:[".plugin-modal-body[_ngcontent-%COMP%] .release-notes[_ngcontent-%COMP%]{box-shadow:none;max-height:39vh;overflow:auto;border:0;border-top-left-radius:0;border-top-right-radius:0}.plugin-modal-body[_ngcontent-%COMP%] .release-tab[_ngcontent-%COMP%]{font-size:1rem;color:#d3d3d3}.plugin-modal-body[_ngcontent-%COMP%] .tab-content[_ngcontent-%COMP%]{border-radius:0 0 20px 20px} .nav-tabs{--bs-nav-tabs-border-width: 0} .plugin-md{text-align:left;font-size:.85rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.3rem;font-weight:300} .plugin-md h2{font-size:1.2rem;font-weight:300} .plugin-md h3{font-size:1.1rem;font-weight:300} .plugin-md h4{font-size:1rem;font-weight:300} .plugin-md h5{font-size:.9rem;font-weight:300} .plugin-md pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}"]})}return e})();var NI=ze(Qa(),1);var wH=()=>["homebridge","homebridge-config-ui-x"];function SH(e,t){e&1&&(f(0,"div",5),$(1,"i",12),m())}function IH(e,t){if(e&1&&($(0,"i",20),f(1,"h6",21),x(2),w(3,"translate"),m(),f(4,"p",21),x(5),w(6,"translate"),f(7,"span",22),x(8),m()()),e&2){let i=y(2);d(2),R(I(3,3,"plugins.manage.select_version")),d(3),V(" ",I(6,5,"plugins.status_installed"),": "),d(3),V("v",i.plugin.installedVersion)}}function $H(e,t){e&1&&($(0,"i",23),f(1,"h6",21),x(2),w(3,"translate"),m()),e&2&&(d(2),R(I(3,1,"plugins.manage.select_version")))}function EH(e,t){e&1&&$(0,"i",26)}function TH(e,t){e&1&&$(0,"i",27)}function PH(e,t){if(e&1){let i=H();f(0,"li",14)(1,"span",8),x(2),$(3,"br"),f(4,"small",24),x(5),m()(),f(6,"button",25),q("click",function(){let r=j(i).$implicit,o=y(2);return F(o.doInstall(r.version))}),E(7,EH,1,0,"i",26)(8,TH,1,0,"i",27),m()()}if(e&2){let i=t.$implicit,n=y(2);d(2),V(" ",i.tag," "),d(3),V("v",i.version),d(2),T(n.plugin.installedVersion===i.version?7:8)}}function OH(e,t){e&1&&x(0," \u2713 ")}function kH(e,t){if(e&1&&(f(0,"option",17),x(1),E(2,OH,1,0),m()),e&2){let i=t.$implicit,n=y(2);b("value",i.version)("selected",n.versionSelect==i.version),d(),V(" v",i.version," "),d(),T(i.version==n.plugin.installedVersion?2:-1)}}function MH(e,t){e&1&&$(0,"i",26)}function DH(e,t){e&1&&$(0,"i",27)}function AH(e,t){if(e&1){let i=H();f(0,"button",25),q("click",function(){j(i);let r=y(2);return F(r.doInstall(r.versionSelect))}),E(1,MH,1,0,"i",26)(2,DH,1,0,"i",27),m()}if(e&2){let i=y(2);d(),T(i.plugin.installedVersion===i.versionSelect?1:2)}}function NH(e,t){if(e&1&&(f(0,"ul",19)(1,"li",28)(2,"div",8),x(3),w(4,"translate"),$(5,"br"),f(6,"span",29),x(7),w(8,"translate"),m()(),f(9,"div",30),$(10,"input",31),w(11,"translate"),$(12,"label",32),m()()()),e&2){let i=y(2);d(3),V(" ",I(4,4,"plugins.manage.hide_updates")),d(4),R(I(8,6,"plugins.manage.hide_updates_desc")),d(3),b("formControl",i.hideUpdatesFormControl),G("aria-label",I(11,8,"plugins.manage.hide_updates"))}}function jH(e,t){if(e&1){let i=H();f(0,"div",6),E(1,IH,9,7)(2,$H,4,3),f(3,"ul",13),st(4,PH,9,3,"li",14,at),f(6,"li",14)(7,"div",15),x(8),w(9,"translate"),$(10,"br"),f(11,"select",16),je("ngModelChange",function(r){j(i);let o=y();return Ne(o.versionSelect,r)||(o.versionSelect=r),F(r)}),st(12,kH,3,4,"option",17,at),m()(),E(14,AH,3,1,"button",18),m()(),E(15,NH,13,10,"ul",19),m()}if(e&2){let i=y();d(),T(i.plugin.installedVersion?1:2),d(3),lt(i.versionsWithTags),d(4),V(" ",I(9,5,"plugins.manage.all_versions")," "),d(3),Ae("ngModel",i.versionSelect),d(),lt(i.versions),d(2),T(i.versionSelect?14:-1),d(),T(i.plugin.installedVersion&&!Pe(7,wH).includes(i.plugin.name)?15:-1)}}var jI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;isUpdateHidden=!1;hideUpdatesFormControl=new Pf(!1);loading=!0;versions=[];versionsWithTags=[];versionSelect;ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions(),this.isUpdateHidden=this.$settings.env.plugins.hideUpdatesFor&&this.$settings.env.plugins.hideUpdatesFor.includes(this.plugin.name),this.hideUpdatesFormControl.patchValue(this.isUpdateHidden),this.hideUpdatesFormControl.valueChanges.pipe(Yn(750)).subscribe(i=>this.toggleHideUpdates(i))}doInstall(i){this.$activeModal.close({name:this.plugin.name,version:i,engines:this.versions.find(n=>n.version===i).engines,action:this.plugin.installedVersion?"alternate":"install"})}toggleHideUpdates(i){return K(this,null,function*(){let n=this.$settings.env.plugins?.hideUpdatesFor||[];i?n.includes(this.plugin.name)||(n=[...n,this.plugin.name].sort((r,o)=>r.localeCompare(o))):n=n.filter(r=>r!==this.plugin.name);try{yield le(this.$api.put("/config-editor/ui/plugins/hide-updates-for",{body:n})),this.$settings.setEnvItem("plugins.hideUpdatesFor",n),window.location.href=`/plugins?action=open-manage-version&plugin=${this.plugin.name}`}catch(r){this.hideUpdatesFormControl.patchValue(this.isUpdateHidden,{emitEvent:!1}),console.error(r),this.$toastr.error(r.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:i=>{for(let[n,r]of Object.entries(i.versions))this.versions.push({version:n,engines:r.engines||null}),Object.keys(i.tags).filter(o=>i.tags[o]===n).forEach(o=>{this.versionsWithTags.push({version:n,tag:o})});this.plugin.installedVersion&&!this.versions.find(n=>n.version===this.plugin.installedVersion)&&this.versions.push({version:this.plugin.installedVersion,engines:this.plugin.engines||null}),this.versions.sort((n,r)=>(0,NI.rcompare)(n.version,r.version)),this.versionsWithTags.sort((n,r)=>{let o=["latest","next","beta","alpha"],a=o.includes(n.tag)?o.indexOf(n.tag):999,s=o.includes(r.tag)?o.indexOf(r.tag):999;return a-s}),!this.versions.find(n=>n.version===this.versionSelect)&&i.tags.latest&&(this.versionSelect=i.tags.latest),this.loading=!1},error:i=>{console.error(i),this.$toastr.error(i.error.message||i.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}static \u0275fac=function(n){return new(n||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"],[1,"list-group","list-group-box","mt-3","mb-0"],[1,"fas","fa-fw","fa-code-compare","primary-text","mb-3",2,"font-size","75px"],[1,"mb-3"],[1,"font-monospace"],[1,"far","fa-fw","fa-arrow-alt-circle-down","primary-text","mb-3",2,"font-size","75px"],[1,"grey-text","font-monospace"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-fw","fa-rotate-right"],[1,"fas","fa-fw","fa-arrow-alt-circle-down"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"grey-text","small"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","hidePluginUpdates",1,"rendux-input",3,"formControl"],["for","hidePluginUpdates",1,"rendux-label","ms-3"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(6,"div",4),E(7,SH,2,0,"div",5)(8,jH,16,8,"div",6),m(),f(9,"div",7),$(10,"div",8),f(11,"div",9)(12,"button",10),w(13,"translate"),q("click",function(){return r.dismissModal()}),x(14),w(15,"translate"),m()(),$(16,"div",11),m()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),G("aria-label",I(5,5,"form.button_close")),d(3),T(r.loading?7:8),d(5),G("aria-label",I(13,7,"form.button_close")),d(2),V(" ",I(15,9,"form.button_close")," "))},dependencies:[oi,On,kn,Yi,nr,$t,Zi,so,Qi,ke],encapsulation:2})}return e})();var FI=ze(o2(),1);function FH(e,t){e&1&&(f(0,"div",5),$(1,"i",14),m())}function qH(e,t){e&1&&(f(0,"div",6),x(1),w(2,"translate"),w(3,"translate"),m()),e&2&&(d(),En(" ",I(2,2,"plugins.settings.message_manual_config_required")," ",I(3,4,"plugins.settings.message_consult_documentation")," "))}function VH(e,t){if(e&1){let i=H();f(0,"button",25),w(1,"translate"),q("click",function(){j(i);let r=y(2).$index,o=y(2);return F(o.removeBlock(r))}),$(2,"i",26),m()}e&2&&b("ngbTooltip",I(1,1,"form.button_delete"))}function BH(e,t){if(e&1&&E(0,VH,3,3,"button",24),e&2){let i=y(3);T(!(i.schema!=null&&i.schema.singular)||i.pluginConfig.length>1?0:-1)}}function RH(e,t){if(e&1){let i=H();f(0,"div",15)(1,"div",16)(2,"div",17)(3,"h5",18),x(4),m(),f(5,"div"),E(6,BH,1,1),f(7,"button",19),w(8,"translate"),q("click",function(){let r=j(i).$index,o=y(2);return F(o.editBlock(r))}),$(9,"i",20),m()()()(),f(10,"div",21)(11,"div",22)(12,"ngx-monaco-editor",23),je("ngModelChange",function(r){j(i);let o=y(2);return Ne(o.currentBlock,r)||(o.currentBlock=r),F(r)}),q("onInit",function(r){j(i);let o=y(2);return F(o.onEditorInit(r))}),m()()()()}if(e&2){let i=t.$implicit,n=t.$index,r=y(2);b("ngbAccordionItem","configBlock."+n)("collapsed",r.show!=="configBlock."+n)("id","configBlock."+n),d(4),R(i.name||r.pluginAlias),d(2),T(r.show==="configBlock."+n?6:-1),d(),b("ngbTooltip",I(8,8,"form.button_edit")),d(5),b("options",r.editorOptions),Ae("ngModel",r.currentBlock)}}function LH(e,t){if(e&1&&(f(0,"div",7),st(1,RH,13,10,"div",15,at),m()),e&2){let i=y();b("closeOthers",!0),d(),lt(i.pluginConfig)}}function UH(e,t){if(e&1){let i=H();f(0,"button",30),q("click",function(){j(i);let r=y(2);return F(r.addBlock())}),$(1,"i",31),m()}}function zH(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"form.button_save")," ")}function HH(e,t){e&1&&$(0,"i",29)}function WH(e,t){if(e&1){let i=H();E(0,UH,2,0,"button",27),f(1,"button",28),q("click",function(){j(i);let r=y();return F(r.save())}),E(2,zH,2,3),E(3,HH,1,0,"i",29),m()}if(e&2){let i=y();T(i.schema!=null&&i.schema.singular?-1:0),d(),b("disabled",i.saveInProgress),d(),T(i.saveInProgress?-1:2),d(),T(i.saveInProgress?3:-1)}}function KH(e,t){if(e&1){let i=H();f(0,"button",32),q("click",function(){j(i);let r=y();return F(r.openFullConfigEditor())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"plugins.settings.label_open_config_editor")," "))}var Zp=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$md=P(Lf);$modal=P(ot);$plugin=P(Sn);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;schema;pluginAlias;pluginType;loading=!0;canConfigure=!1;show="";pluginConfig;currentBlock;currentBlockIndex=null;saveInProgress=!1;childBridges=[];isFirstSave=!1;monacoEditor;editorOptions;get arrayKey(){return this.pluginType==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0},this.$md.detect.mobile()?(this.loading=!1,this.canConfigure=!1):this.loadPluginAlias()}onEditorInit(i){return K(this,null,function*(){window.editor=i,this.monacoEditor=i,yield this.monacoEditor.getModel().setValue(this.currentBlock),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.push({[this.pluginType]:this.pluginAlias,name:this.pluginAlias}),this.editBlock(this.pluginConfig.length-1)}editBlock(i){this.saveCurrentBlock()&&(this.show=`configBlock.${i}`,this.currentBlockIndex=i,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(i){let n=this.pluginConfig[i],r=this.pluginConfig.findIndex(o=>o===n);r>-1&&this.pluginConfig.splice(r,1),this.currentBlockIndex=null,this.currentBlock=void 0,this.show=""}save(){return K(this,null,function*(){if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let i=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.$activeModal.close(),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(ar,{size:"lg",backdrop:"static"});n.componentInstance.bridges=this.childBridges.map(r=>({name:r.name,username:r.username}));return}this.$activeModal.close(),this.$modal.open(_i,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress=!1}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}closeModal(){this.$activeModal.close()}loadPluginAlias(){this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`).subscribe({next:i=>{i.pluginAlias&&i.pluginType?(this.pluginAlias=i.pluginAlias,this.pluginType=i.pluginType,this.loadHomebridgeConfig()):this.loading=!1},error:()=>{this.loading=!1}})}loadHomebridgeConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe(i=>{this.pluginConfig=i,this.canConfigure=!0,this.loading=!1,this.pluginConfig.length?this.editBlock(0):(this.isFirstSave=!0,this.addBlock())})}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let i=this.monacoEditor.getModel().getValue().trim(),n;i.charAt(0)==='"'&&i.charAt(i.length-1)==="]"&&(i=`{${i}}`);try{n=FI.default.parse(i)}catch(o){return console.error(o),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(n)||typeof n!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!n[this.pluginType]&&Array.isArray(n[this.arrayKey])&&n[this.arrayKey].length&&Object.keys(n).length===1&&(n=n[this.arrayKey][0]),this.pluginType==="accessory"&&(!n.name||typeof n.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),n.name="",this.monacoEditor.getModel().setValue(JSON.stringify(n,null,4)),!1;let r=this.pluginConfig[this.currentBlockIndex];Object.keys(r).forEach(o=>delete r[o]),Object.assign(r,n),r[this.pluginType]=this.pluginAlias}return!0}getChildBridges(){return K(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.plugin.name===n.plugin&&this.childBridges.push(n)})}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.closeModal()}),m()(),f(6,"div",4),E(7,FH,2,0,"div",5),E(8,qH,4,6,"div",6),E(9,LH,3,1,"div",7),m(),f(10,"div",8)(11,"div",9)(12,"button",10),q("click",function(){return r.closeModal()}),x(13),w(14,"translate"),m()(),$(15,"div",11),f(16,"div",12),E(17,WH,4,4),E(18,KH,3,3,"button",13),m()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),b("disabled",r.saveInProgress),G("aria-label",I(5,10,"form.button_close")),d(3),T(r.loading?7:-1),d(),T(!r.loading&&!r.canConfigure?8:-1),d(),T(!r.loading&&r.canConfigure?9:-1),d(3),b("disabled",r.saveInProgress),d(),V(" ",I(14,12,"form.button_close")," "),d(4),T(r.canConfigure?17:-1),d(),T(r.canConfigure?-1:18))},dependencies:[Za,Ya,Xa,or,Ga,Ka,qf,oi,$t,Zi,Ja,ke],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 qI=e=>({link:e}),GH=(e,t)=>({"green-text":e,"grey-text":t});function JH(e,t){if(e&1){let i=H();f(0,"button",13),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.closeModal())}),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),G("aria-label",I(1,2,"form.button_close"))}}function XH(e,t){e&1&&(f(0,"div",5),$(1,"i",14),m())}function YH(e,t){e&1&&(f(0,"li"),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"child_bridge.bridges_paired_2")))}function ZH(e,t){e&1&&(f(0,"li"),x(1),w(2,"translate"),m()),e&2&&(d(),V("",I(2,1,"child_bridge.select_type"),":"))}function QH(e,t){if(e&1&&(f(0,"li"),x(1),w(2,"translate"),m(),E(3,YH,3,3,"li"),E(4,ZH,3,3,"li")),e&2){let i=y(2);d(),R(I(2,3,"child_bridge.bridges_paired")),d(2),T(i.configBlocks.length===1&&!i.deviceInfo[i.configBlocks[0]._bridge==null?null:i.configBlocks[0]._bridge.username]&&i.originalBridges.length===0?3:-1),d(),T(i.canConfigure?4:-1)}}function eW(e,t){if(e&1&&(f(0,"option",29),x(1),m()),e&2){let i=t.$implicit,n=t.$index;b("value",n),d(),R(i.name||i.platform||i.accessory)}}function tW(e,t){if(e&1){let i=H();f(0,"li",25),x(1),w(2,"translate"),m(),f(3,"li",23)(4,"label",26),x(5),w(6,"translate"),m(),f(7,"div",27)(8,"select",28),je("ngModelChange",function(r){j(i);let o=y(3);return Ne(o.selectedBlock,r)||(o.selectedBlock=r),F(r)}),q("change",function(r){j(i);let o=y(3);return F(o.onBlockChange(r.target.value))}),st(9,eW,2,2,"option",29,at),m()()()}if(e&2){let i=y(3);d(),R(I(2,3,"form.label.changes_kept")),d(4),V(" ",I(6,5,i.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),d(3),Ae("ngModel",i.selectedBlock),d(),lt(i.configBlocks)}}function iW(e,t){if(e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",31),x(5),m()()),e&2){let i=y(3);d(2),V(" ",I(3,2,i.isPlatform?"child_bridge.config.platform":"child_bridge.config.accessory")," "),d(3),V(" ",i.configBlocks[i.selectedBlock].name||i.configBlocks[i.selectedBlock].platform||i.configBlocks[i.selectedBlock].accessory," ")}}function nW(e,t){e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",32),x(5),w(6,"translate"),m()()),e&2&&(d(2),R(I(3,2,"child_bridge.config.use")),d(3),V(" ",I(6,4,"child_bridge.config.prevent")," "))}function rW(e,t){if(e&1&&(f(0,"option",29),x(1),m()),e&2){let i=t.$implicit;b("value",i.username),d(),En("",i.name," (",i.username,")")}}function oW(e,t){if(e&1){let i=H();f(0,"li",23)(1,"label",37),x(2),w(3,"translate"),m(),f(4,"div",27)(5,"select",38),q("change",function(r){j(i);let o=y(4);return F(o.onLinkBridgeChange(r.target.value))}),f(6,"option",29),x(7),w(8,"translate"),m(),st(9,rW,2,3,"option",29,at),m()()()}if(e&2){let i=y(4);d(2),R(I(3,2,"child_bridge.config.or_link")),d(5),R(I(8,4,"child_bridge.config.select_existing")),d(2),lt(i.bridgesAvailableForLink)}}function aW(e,t){if(e&1){let i=H();f(0,"li",33)(1,"span",7),x(2),w(3,"translate"),m(),f(4,"div",34)(5,"input",35),q("change",function(){j(i);let r=y(3);return F(r.toggleExternalBridge(r.configBlocks[r.selectedBlock],r.enabledBlocks[r.selectedBlock],r.selectedBlock))}),je("ngModelChange",function(r){j(i);let o=y(3);return Ne(o.enabledBlocks[o.selectedBlock],r)||(o.enabledBlocks[o.selectedBlock]=r),F(r)}),m(),$(6,"label",36),m()(),E(7,oW,11,6,"li",23)}if(e&2){let i=y(3);d(2),R(I(3,5,"child_bridge.config.use")),d(3),b("id","toggleExternalBridgeInput_"+i.selectedBlock),Ae("ngModel",i.enabledBlocks[i.selectedBlock]),d(),b("for","toggleExternalBridgeInput_"+i.selectedBlock),d(),T(!(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username)&&i.bridgesAvailableForLink.length?7:-1)}}function sW(e,t){if(e&1&&(f(0,"li",23)(1,"label",30),x(2),w(3,"translate"),m(),f(4,"div",31),x(5),m()(),f(6,"li",23)(7,"label",30),x(8),w(9,"translate"),m(),f(10,"div",31),x(11),m()(),f(12,"li",23)(13,"label",30),x(14),w(15,"translate"),m(),f(16,"div",31),x(17),m()()),e&2){let i=y(3);d(2),R(I(3,6,"accessories.bridge_link_username")),d(3),V(" ",i.currentlySelectedLink.username," "),d(3),R(I(9,8,"accessories.bridge_link_port")),d(3),V(" ",i.currentlySelectedLink.port," "),d(3),R(I(15,10,"accessories.bridge_link_name")),d(3),V(" ",i.currentlySelectedLink.name," ")}}function lW(e,t){e&1&&(f(0,"span"),x(1),w(2,"translate"),m()),e&2&&(d(),V(" \xB7 ",I(2,1,"status.code_scan")," "))}function uW(e,t){if(e&1){let i=H();f(0,"li",33)(1,"span",7),x(2),w(3,"translate"),f(4,"code"),x(5,"-D"),m()(),f(6,"div",34)(7,"input",51),w(8,"translate"),je("ngModelChange",function(r){j(i);let o=y(5);return Ne(o.configBlocks[o.selectedBlock]._bridge.debugModeEnabled,r)||(o.configBlocks[o.selectedBlock]._bridge.debugModeEnabled=r),F(r)}),m(),$(9,"label",36),m()()}if(e&2){let i=y(5);d(2),V("",I(3,5,"child_bridge.config.debug")," "),d(5),b("id","homebridgeDebugMode_"+i.selectedBlock),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.debugModeEnabled),G("aria-label",I(8,7,"settings.startup.debug")),d(2),b("for","homebridgeDebugMode_"+i.selectedBlock)}}function cW(e,t){if(e&1){let i=H();f(0,"li",39)(1,"div",40),$(2,"app-qrcode",41),f(3,"p",42),x(4),m(),f(5,"p",43),$(6,"i",44),x(7),w(8,"translate"),E(9,lW,3,3,"span"),m()()(),f(10,"li",23)(11,"label",30),x(12),w(13,"translate"),m(),f(14,"div",31),x(15),m()(),f(16,"li",23)(17,"label",30),x(18),w(19,"translate"),m(),f(20,"div",31),x(21),m()(),f(22,"li",23)(23,"label",30),x(24),w(25,"translate"),m(),f(26,"div",27)(27,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.name,r)||(o.configBlocks[o.selectedBlock]._bridge.name=r),F(r)}),m()()(),f(28,"li",23)(29,"label",30),x(30),w(31,"translate"),m(),f(32,"div",27)(33,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.manufacturer,r)||(o.configBlocks[o.selectedBlock]._bridge.manufacturer=r),F(r)}),m()()(),f(34,"li",23)(35,"label",30),x(36),w(37,"translate"),m(),f(38,"div",27)(39,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.model,r)||(o.configBlocks[o.selectedBlock]._bridge.model=r),F(r)}),m()()(),f(40,"li",23)(41,"label",30),x(42),w(43,"translate"),m(),f(44,"div",27)(45,"input",45),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.firmwareRevision,r)||(o.configBlocks[o.selectedBlock]._bridge.firmwareRevision=r),F(r)}),m()()(),E(46,uW,10,9,"li",33),f(47,"li",23)(48,"label",30)(49,"span",46),x(50,"DEBUG"),m(),$(51,"br")(52,"small",47),w(53,"translate"),m(),f(54,"div",27)(55,"input",48),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.env.DEBUG,r)||(o.configBlocks[o.selectedBlock]._bridge.env.DEBUG=r),F(r)}),m()()(),f(56,"li",23)(57,"label",30)(58,"span",46),x(59,"NODE_OPTIONS"),m(),$(60,"br"),f(61,"small",49),x(62),w(63,"translate"),m()(),f(64,"div",27)(65,"input",50),je("ngModelChange",function(r){j(i);let o=y(4);return Ne(o.configBlocks[o.selectedBlock]._bridge.env.NODE_OPTIONS,r)||(o.configBlocks[o.selectedBlock]._bridge.env.NODE_OPTIONS=r),F(r)}),m()()()}if(e&2){let i=y(4);d(2),b("data",i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._setupCode),d(2),R(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username].pincode),d(2),b("ngClass",Tn(41,GH,i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired,!i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired)),d(),V(" ",I(8,22,i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),d(2),T(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]._isPaired?-1:9),d(3),R(I(13,24,"accessories.bridge_username")),d(3),V(" ",i.configBlocks[i.selectedBlock]._bridge.username," "),d(3),R(I(19,26,"accessories.bridge_port")),d(3),V(" ",i.configBlocks[i.selectedBlock]._bridge.port," "),d(3),R(I(25,28,"child_bridge.config.name")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.name),d(3),R(I(31,30,"child_bridge.config.manufacturer")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.manufacturer),d(3),R(I(37,32,"child_bridge.config.model")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.model),d(3),R(I(43,34,"child_bridge.config.firmware")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.firmwareRevision),d(),T(i.canShowBridgeDebug?46:-1),d(6),b("innerHTML",He(53,36,"settings.service.debug_tooltip",ri(44,qI,i.linkDebug)),he),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.env.DEBUG),d(7),R(I(63,39,"settings.service.node_tooltip")),d(3),Ae("ngModel",i.configBlocks[i.selectedBlock]._bridge.env.NODE_OPTIONS)}}function dW(e,t){if(e&1&&E(0,cW,66,46),e&2){let i=y(3);T(i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]?0:-1)}}function pW(e,t){e&1&&(f(0,"ngb-alert",24),x(1),w(2,"translate"),$(3,"br"),x(4),w(5,"translate"),m()),e&2&&(b("dismissible",!1),d(),V(" ",I(2,3,"child_bridge.restart_homebridge")," "),d(3),V("",I(5,5,"child_bridge.return_to_pair")," "))}function fW(e,t){if(e&1&&(f(0,"ul",22),E(1,tW,11,7),E(2,iW,6,4,"li",23),E(3,nW,7,6,"li",23),E(4,aW,8,7),E(5,sW,18,12),E(6,dW,1,1),m(),E(7,pW,6,7,"ngb-alert",24)),e&2){let i=y(2);d(),T(i.configBlocks.length>1?1:-1),d(),T(i.configBlocks.length===1?2:-1),d(),T(i.currentBridgeHasLinks?3:-1),d(),T(i.currentBridgeHasLinks?-1:4),d(),T(i.currentlySelectedLink?5:-1),d(),T(!i.currentlySelectedLink&&(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username)?6:-1),d(),T(i.configBlocks[i.selectedBlock]._bridge!=null&&i.configBlocks[i.selectedBlock]._bridge.username&&i.deviceInfo[i.configBlocks[i.selectedBlock]._bridge==null?null:i.configBlocks[i.selectedBlock]._bridge.username]===!1?7:-1)}}function mW(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"child_bridge.confirm_delete_2")," ")}function hW(e,t){if(e&1&&(f(0,"li"),x(1),f(2,"span",46),x(3),m(),x(4,") "),m()),e&2){let i=t.$implicit,n=y(3);d(),V(" ",i.bridgeName||(n.deviceInfo[i.id]==null?null:n.deviceInfo[i.id].displayName)," ("),d(2),R(i.id)}}function gW(e,t){if(e&1&&(f(0,"ngb-alert",19)(1,"p"),x(2),w(3,"translate"),E(4,mW,2,3),m(),f(5,"div",9)(6,"ul",52),st(7,hW,5,2,"li",null,at),m()()()),e&2){let i=y(2);b("dismissible",!1),d(2),V(" ",I(3,3,"child_bridge.confirm_delete_1")," "),d(2),T(i.deletingPairedBridge?4:-1),d(3),lt(i.deleteBridges)}}function yW(e,t){e&1&&(f(0,"ngb-alert",20),x(1),w(2,"translate"),m()),e&2&&(b("dismissible",!1),d(),V(" ",I(2,2,"child_bridge.must_configure_plugin")," "))}function _W(e,t){if(e&1){let i=H();f(0,"ngb-alert",21)(1,"div",17),x(2),w(3,"translate"),w(4,"translate"),m(),f(5,"button",53),q("click",function(){j(i);let r=y(2);return F(r.openFullConfigEditor())}),x(6),w(7,"translate"),m()()}e&2&&(b("dismissible",!1),d(2),En(" ",I(3,4,"plugins.settings.message_manual_config_required")," ",I(4,6,"plugins.settings.message_consult_documentation")," "),d(4),V(" ",I(7,8,"plugins.settings.label_open_config_editor")," "))}function bW(e,t){if(e&1&&(f(0,"div",15),$(1,"i",16),m(),f(2,"ul",17),$(3,"li",18),w(4,"translate"),E(5,QH,5,5),m(),E(6,fW,8,7),E(7,gW,9,5,"ngb-alert",19),E(8,yW,3,4,"ngb-alert",20),E(9,_W,8,10,"ngb-alert",21)),e&2){let i=y();d(3),b("innerHTML",He(4,6,"child_bridge.about",ri(9,qI,i.linkChildBridges)),he),d(2),T(i.configBlocks.length?5:-1),d(),T(i.canConfigure&&i.configBlocks.length?6:-1),d(),T(i.deleteBridges.length?7:-1),d(),T(!i.configBlocks.length&&i.canConfigure?8:-1),d(),T(i.canConfigure?-1:9)}}function vW(e,t){if(e&1){let i=H();f(0,"button",54),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),d(),V(" ",I(2,2,"form.button_close")," ")}}function xW(e,t){e&1&&$(0,"i",56)}function CW(e,t){if(e&1){let i=H();f(0,"button",55),q("click",function(){j(i);let r=y();return F(r.save())}),x(1),w(2,"translate"),E(3,xW,1,0,"i",56),m()}if(e&2){let i=y();b("disabled",i.saveInProgress),d(),V(" ",I(2,3,"form.button_save")," "),d(2),T(i.saveInProgress?3:-1)}}function wW(e,t){if(e&1){let i=H();f(0,"button",57),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function SW(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"form.button_save")," ")}function IW(e,t){e&1&&$(0,"i",56)}function $W(e,t){if(e&1){let i=H();f(0,"button",55),q("click",function(){j(i);let r=y(2);return F(r.save())}),E(1,SW,2,3),E(2,IW,1,0,"i",56),m()}if(e&2){let i=y(2);b("disabled",i.saveInProgress||i.loading),d(),T(i.saveInProgress?-1:1),d(),T(i.saveInProgress?2:-1)}}function EW(e,t){if(e&1){let i=H();f(0,"button",59),q("click",function(){j(i);let r=y(2);return F(r.openPluginConfig())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"plugins.button_settings")," "))}function TW(e,t){if(e&1&&(E(0,$W,3,3,"button",10),E(1,EW,3,3,"button",58)),e&2){let i=y();T(i.configBlocks.length?0:-1),d(),T(i.configBlocks.length?-1:1)}}var VI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$modal=P(ot);$plugins=P(Sn);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;schema;justInstalled=!1;loading=!0;canConfigure=!0;configBlocks=[];selectedBlock="0";isPlatform;enabledBlocks={};bridgeCache=new Map;originalBridges=[];deviceInfo=new Map;saveInProgress=!1;canShowBridgeDebug=!1;deleteBridges=[];deletingPairedBridge=!1;accessoryBridgeLinks=[];bridgesAvailableForLink=[];currentlySelectedLink=null;currentBridgeHasLinks=!1;linkChildBridges='<a href="https://github.com/homebridge/homebridge/wiki/Child-Bridges" target="_blank"><i class="fas fa-fw fa-external-link-alt primary-text"></i></a>';linkDebug='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Debug-Common-Values" target="_blank"><i class="fa fa-fw fa-external-link-alt primary-text"></i></a>';ngOnInit(){return K(this,null,function*(){yield Promise.all([this.getPluginType(),this.loadPluginConfig()]),this.canShowBridgeDebug=this.$settings.env.homebridgeVersion.startsWith("2"),this.loading=!1})}onBlockChange(i){if(this.selectedBlock=i,this.currentlySelectedLink=this.accessoryBridgeLinks.find(n=>n.index===i)||null,this.currentBridgeHasLinks=this.accessoryBridgeLinks.some(n=>n.usesIndex===i),this.bridgesAvailableForLink=[],this.configBlocks[Number(i)].accessory)for(let[n,r]of Array.from(this.bridgeCache.entries()))this.deleteBridges.some(o=>o.id===r.username)||n<Number(i)&&this.bridgesAvailableForLink.push({index:n.toString(),usesIndex:i,name:r.name,port:r.port,username:r.username})}onLinkBridgeChange(i){if(i){let n=this.configBlocks.findIndex(o=>o._bridge?.username===i);this.accessoryBridgeLinks.push({index:this.selectedBlock,usesIndex:n.toString(),name:this.bridgeCache.get(n)?.name,port:this.bridgeCache.get(n)?.port,username:i}),this.currentlySelectedLink=this.accessoryBridgeLinks.find(o=>o.index===this.selectedBlock)||null,this.enabledBlocks[Number(this.selectedBlock)]=!0;let r=this.configBlocks[Number(this.selectedBlock)];r._bridge={username:i}}}getPluginType(){return K(this,null,function*(){try{let i=yield le(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`));this.isPlatform=i.pluginType==="platform"}catch(i){this.$toastr.error(this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close(),console.error(i)}})}loadPluginConfig(){return K(this,null,function*(){try{this.configBlocks=yield le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`));for(let[n,r]of this.configBlocks.entries())if(r._bridge&&r._bridge.username){this.enabledBlocks[n]=!0;let o=Array.from(this.bridgeCache.values()).findIndex(s=>s.username===r._bridge.username),a=o!==-1?Array.from(this.bridgeCache.values())[o]:void 0;a?(r._bridge.env={},this.accessoryBridgeLinks.push({index:n.toString(),usesIndex:o.toString(),name:a.name,port:a.port,username:r._bridge.username})):(r._bridge.env=r._bridge.env||{},this.bridgeCache.set(n,r._bridge),yield this.getDeviceInfo(r._bridge.username),r._bridge.name||(r._bridge.name=this.deviceInfo[r._bridge.username]?.displayName),this.originalBridges.push(r._bridge))}this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((n,r)=>{this.enabledBlocks[r]=!0,this.toggleExternalBridge(n,!0,r.toString())}),this.accessoryBridgeLinks.find(n=>n.username===this.bridgeCache.get(Number(this.selectedBlock))?.username)&&(this.currentBridgeHasLinks=!0)}catch(i){this.canConfigure=!1,console.error(i)}})}toggleExternalBridge(i,n,r){return K(this,null,function*(){if(n){let o=this.bridgeCache.get(Number(r));i._bridge={username:o?o.username:this.generateUsername(),port:yield this.getUnusedPort(),name:o?.name,model:o?.model,manufacturer:o?.manufacturer,firmwareRevision:o?.firmwareRevision,debugModeEnabled:o?.debugModeEnabled,env:o?.env},this.deleteBridges.some(a=>a.id===i._bridge.username)&&(this.deleteBridges=this.deleteBridges.filter(a=>a.id!==i._bridge.username)),this.bridgeCache.set(Number(r),i._bridge),yield this.getDeviceInfo(i._bridge.username)}else{if(this.accessoryBridgeLinks.some(o=>o.index===r))this.accessoryBridgeLinks=this.accessoryBridgeLinks.filter(o=>o.index!==r),this.currentlySelectedLink=null;else{let o=this.originalBridges.find(a=>a.username===i._bridge.username);o&&this.deleteBridges.push({id:i._bridge.username,bridgeName:i._bridge.name||o.displayName,paired:this.deviceInfo[i._bridge.username]?._isPaired})}delete i._bridge}this.deletingPairedBridge=this.deleteBridges.some(o=>o.paired)})}getUnusedPort(){return K(this,null,function*(){this.saveInProgress=!0;try{return(yield le(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(i){return K(this,null,function*(){try{this.deviceInfo[i]=yield le(this.$api.get(`/server/pairings/${i.replace(/:/g,"")}`))}catch(n){console.error(n),this.deviceInfo[i]=!1}})}save(){return K(this,null,function*(){this.saveInProgress=!0;try{yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks));for(let i of this.deleteBridges)try{yield le(this.$api.delete(`/server/pairings/${i.id.replace(/:/g,"")}`))}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("settings.reset_bridge.error"),this.$translate.instant("toast.title_error"))}this.$activeModal.close(),this.$modal.open(_i,{size:"lg",backdrop:"static"})}catch(i){console.error(i),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 i="0123456789ABCDEF",n="0E:";for(let r=0;r<5;r++)n+=i.charAt(Math.round(Math.random()*15)),n+=i.charAt(Math.round(Math.random()*15)),r!==4&&(n+=":");return n}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close("Dismiss")}static \u0275fac=function(n){return new(n||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","d-flex","align-items-center"],["type","checkbox",1,"rendux-input",3,"change","ngModelChange","id","ngModel"],[1,"rendux-label",3,"for"],["for","bridgeLink",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","bridgeLink",1,"custom-select",3,"change"],[1,"list-group-item","text-center"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"mx-auto","mt-3","mb-1"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-fw","fa-link",3,"ngClass"],["type","text",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"font-monospace"],[1,"grey-text",3,"innerHTML"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"grey-text"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"d-inline-block","text-start","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button",1,"btn","btn-primary",3,"click","disabled"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),E(4,JH,2,4,"button",3),m(),f(5,"div",4),E(6,XH,2,0,"div",5),E(7,bW,10,11),m(),f(8,"div",6)(9,"div",7),E(10,vW,3,4,"button",8),m(),f(11,"div",9),E(12,CW,4,5,"button",10),E(13,wW,3,3,"button",11),m(),f(14,"div",12),E(15,TW,2,2),m()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),T(r.justInstalled?-1:4),d(2),T(r.loading?6:-1),d(),T(r.loading?-1:7),d(3),T(r.canConfigure&&!r.justInstalled?10:-1),d(2),T(r.justInstalled?12:-1),d(),T(r.canConfigure?-1:13),d(2),T(r.canConfigure&&!r.justInstalled?15:-1))},dependencies:[oi,On,kn,ir,Yi,nr,$t,Zi,rr,Uf,Kt,ke],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 Qp=ze(Qa(),1);var ou=()=>["homebridge","homebridge-config-ui-x"],BI=(e,t,i)=>({pluginName:e,minVersion:t,installedVersion:i}),PW=(e,t,i)=>({minVersion:e,installedVersion:t,latestVersion:i,packageName:"Homebridge"}),OW=()=>({packageName:"Homebridge"}),kW=(e,t,i)=>({minVersion:e,installedVersion:t,latestVersion:i,packageName:"Homebridge UI"}),MW=()=>({packageName:"Homebridge UI"});function DW(e,t){if(e&1&&(f(0,"li",14)(1,"div",17),$(2,"i",18),m(),f(3,"div",19),x(4),w(5,"translate"),m()()),e&2){let i=y(2);d(4),V(" ",He(5,1,"plugins.compat.node_too_low",Wt(4,BI,i.plugin.displayName,i.nodeMinVersion,i.nodeInstalledVersion))," ")}}function AW(e,t){if(e&1&&(f(0,"li",14)(1,"div",17),$(2,"i",18),m(),f(3,"div",19),x(4),w(5,"translate"),m()()),e&2){let i=y(2);d(4),V(" ",He(5,1,"plugins.compat.hb_too_low",Wt(4,BI,i.plugin.displayName,i.hbMinVersion,i.hbInstalledVersion))," ")}}function NW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",12),m(),f(2,"ul",13),E(3,DW,6,8,"li",14),E(4,AW,6,8,"li",14),m(),f(5,"ngb-alert",15)(6,"p",16),x(7),w(8,"translate"),m()()),e&2){let i=y();d(),Z(vf("",i.action==="install"?"far fa-fw fa-arrow-alt-circle-down":i.action==="update"?"far fa-fw fa-arrow-alt-circle-up":"fas fa-fw fa-code-compare"," primary-text")),d(2),T(i.isValidNode?-1:3),d(),T(i.isValidHb?-1:4),d(),b("dismissible",!1),d(2),R(I(8,7,"common.phrases.are_you_sure"))}}function jW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",20),m(),f(2,"ul",13)(3,"li",14)(4,"div",17),$(5,"i",18),m(),f(6,"div",19),x(7),w(8,"translate"),m()()(),f(9,"ngb-alert",15)(10,"p",21),x(11),w(12,"translate"),m(),f(13,"p",16)(14,"a",22),x(15),w(16,"translate"),$(17,"i",23),m()()()),e&2){let i=y();d(7),V(" ",He(8,4,"plugins.compat.hb_node_too_low",Wt(12,PW,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),d(2),b("dismissible",!1),d(2),R(He(12,7,"plugins.compat.node_first",Pe(16,OW))),d(4),V(" ",I(16,10,"plugins.compat.node_link")," ")}}function FW(e,t){if(e&1&&(f(0,"div",11),$(1,"i",20),m(),f(2,"ul",13)(3,"li",14)(4,"div",17),$(5,"i",18),m(),f(6,"div",19),x(7),w(8,"translate"),m()()(),f(9,"ngb-alert",15)(10,"p",21),x(11),w(12,"translate"),m(),f(13,"p",16)(14,"a",22),x(15),w(16,"translate"),$(17,"i",23),m()()()),e&2){let i=y();d(7),V(" ",He(8,4,"plugins.compat.hb_node_too_low",Wt(12,kW,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),d(2),b("dismissible",!1),d(2),R(He(12,7,"plugins.compat.node_first",Pe(16,MW))),d(4),V(" ",I(16,10,"plugins.compat.node_link")," ")}}function qW(e,t){if(e&1){let i=H();f(0,"button",24),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function VW(e,t){if(e&1){let i=H();f(0,"button",24),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function BW(e,t){if(e&1){let i=H();f(0,"button",25),q("click",function(){j(i);let r=y();return F(r.closeModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_continue")," "))}var RI=(()=>{class e{$activeModal=P(Oe);$settings=P(Re);plugin;isValidNode;isValidHb;action;nodeMinVersion;nodeInstalledVersion;hbMinVersion;hbInstalledVersion;ngOnInit(){this.nodeMinVersion=(0,Qp.minVersion)(this.plugin.updateEngines?.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Qp.minVersion)(this.plugin.updateEngines?.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close(!0)}static \u0275fac=function(n){return new(n||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,"list-group","list-group-box","mb-3","text-start"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],["type","warning",1,"mb-0",3,"dismissible"],[1,"text-center","mb-0"],[1,"me-3"],[1,"fas","fa-exclamation-circle","orange-text","fa-xl"],[1,"text-start","flex-grow-1"],[1,"fab","fa-fw","fa-node-js","primary-text",2,"font-size","75px"],[1,"text-center","mb-1"],["href","https://homebridge.io/w/JTKEF","target","_blank","rel","noopener noreferrer"],[1,"fa","fa-fw","fa-external-link-alt"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click"]],template:function(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(7,"div",4),E(8,NW,9,9),E(9,jW,18,17),E(10,FW,18,17),m(),f(11,"div",5)(12,"div",6),E(13,qW,3,3,"button",7),m(),f(14,"div",8),E(15,VW,3,3,"button",7),m(),f(16,"div",9),E(17,BW,3,3,"button",10),m()()()),n&2&&(d(3),R(I(4,8,"plugins.compat.title")),d(2),G("aria-label",I(6,10,"form.button_close")),d(3),T(Pe(12,ou).includes(r.plugin.name)?-1:8),d(),T(r.plugin.name==="homebridge"?9:-1),d(),T(r.plugin.name==="homebridge-config-ui-x"?10:-1),d(3),T(Pe(13,ou).includes(r.plugin.name)?-1:13),d(2),T(Pe(14,ou).includes(r.plugin.name)?15:-1),d(2),T(Pe(15,ou).includes(r.plugin.name)?-1:17))},dependencies:[rr,ke],encapsulation:2})}return e})();var pt=[];for(let e=0;e<256;++e)pt.push((e+256).toString(16).slice(1));function LI(e,t=0){return(pt[e[t+0]]+pt[e[t+1]]+pt[e[t+2]]+pt[e[t+3]]+"-"+pt[e[t+4]]+pt[e[t+5]]+"-"+pt[e[t+6]]+pt[e[t+7]]+"-"+pt[e[t+8]]+pt[e[t+9]]+"-"+pt[e[t+10]]+pt[e[t+11]]+pt[e[t+12]]+pt[e[t+13]]+pt[e[t+14]]+pt[e[t+15]]).toLowerCase()}var ef,RW=new Uint8Array(16);function tf(){if(!ef){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ef=crypto.getRandomValues.bind(crypto)}return ef(RW)}var LW=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),nf={randomUUID:LW};function UW(e,t,i){if(nf.randomUUID&&!t&&!e)return nf.randomUUID();e=e||{};let n=e.random??e.rng?.()??tf();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(i=i||0,i<0||i+16>t.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let r=0;r<16;++r)t[i+r]=n[r];return t}return LI(n)}var au=UW;var UI=ze(lo(),1);var zI=(()=>{class e{$api=P(ve);$toastr=P(Ce);$translate=P(xe);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:i=>{(0,UI.saveAs)(i.body,"homebridge-deconz.json.gz")},error:i=>{console.error(i),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(Qe(0,"button",0),Ht("click",function(){return r.downloadDumpFile()}),gi(1,"i",1),x(2,` Download Dump File
|
|
23
23
|
`),rt())},encapsulation:2})}return e})();var HI=ze(lo(),1);var WI=(()=>{class e{$api=P(ve);$translate=P(xe);$toastr=P(Ce);downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-hue/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:i=>{(0,HI.saveAs)(i.body,"homebridge-hue.json.gz")},error:i=>{console.error(i),this.$toastr.error(this.$translate.instant("plugins.settings.hue.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(Qe(0,"button",0),Ht("click",function(){return r.downloadDumpFile()}),gi(1,"i",1),x(2,` Download Dump File
|
|
24
24
|
`),rt())},encapsulation:2})}return e})();var KI=(()=>{class e{transform(i){return i.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}static \u0275fac=function(n){return new(n||e)};static \u0275pipe=hf({name:"interpolateMd",type:e,pure:!0})}return e})();var GI=(e,t,i)=>({"fa-circle-check green-text":e,"fa-circle-exclamation red-text":t,"fa-circle-exclamation orange-text":i});function zW(e,t){if(e&1&&($(0,"markdown",5),w(1,"interpolateMd")),e&2){let i=y();b("data",I(1,1,i.schema.headerDisplay))}}function HW(e,t){if(e&1){let i=H();f(0,"button",31),w(1,"translate"),q("click",function(){j(i);let r=y().$implicit,o=y(2);return F(o.removeBlock(r.__uuid__))}),$(2,"i",32),m()}e&2&&b("ngbTooltip",I(1,1,"form.button_delete"))}function WW(e,t){if(e&1){let i=H();f(0,"div",19)(1,"div",20)(2,"div",21)(3,"h5",22),x(4),m(),f(5,"div",23),E(6,HW,3,3,"button",24),f(7,"button",25),w(8,"translate"),$(9,"i",26),m(),$(10,"i",27),w(11,"translate"),m()()(),f(12,"div",28)(13,"div",29)(14,"app-schema-form",30),je("dataChange",function(r){let o=j(i).$implicit;return Ne(o.config,r)||(o.config=r),F(r)}),q("isValid",function(r){let o=j(i).$index,a=y(2);return F(a.onIsValid(r,o))}),m()()()()}if(e&2){let i=t.$implicit,n=t.$index,r=y(2);b("ngbAccordionItem",i.__uuid__)("collapsed",r.show!==i.__uuid__)("id",i.__uuid__),d(4),R(i.name),d(2),T(r.plugin.name!=="homebridge-config-ui-x"&&r.show===i.__uuid__?6:-1),d(),b("ngbTooltip",I(8,10,"form.button_edit")),d(3),b("ngClass",Wt(14,GI,r.formBlocksValid[n],r.strictValidation&&!r.formBlocksValid[n],!r.strictValidation&&!r.formBlocksValid[n]))("ngbTooltip",I(11,12,r.formBlocksValid[n]?"form.label_valid":r.strictValidation?"form.label_invalid_strict":"form.label_invalid")),d(4),b("configSchema",r.schema),Ae("data",i.config)}}function KW(e,t){if(e&1){let i=H();f(0,"div",18),q("show",function(r){j(i);let o=y();return F(o.blockShown(r))})("hide",function(r){j(i);let o=y();return F(o.blockHidden(r))}),st(1,WW,15,18,"div",19,at),m()}if(e&2){let i=y();b("closeOthers",!0),d(),lt(i.pluginConfig)}}function GW(e,t){e&1&&$(0,"app-homebridge-deconz")}function JW(e,t){e&1&&$(0,"app-homebridge-hue")}function XW(e,t){if(e&1){let i=H();f(0,"div",7)(1,"app-schema-form",30),je("dataChange",function(r){j(i);let o=y();return Ne(o.pluginConfig[0].config,r)||(o.pluginConfig[0].config=r),F(r)}),q("isValid",function(r){j(i);let o=y();return F(o.onIsValid(r,0))}),m(),E(2,GW,1,0,"app-homebridge-deconz"),E(3,JW,1,0,"app-homebridge-hue"),m()}if(e&2){let i=y();d(),b("configSchema",i.schema),Ae("data",i.pluginConfig[0].config),d(),T(i.plugin.name==="homebridge-deconz"?2:-1),d(),T(i.plugin.name==="homebridge-hue"?3:-1)}}function YW(e,t){if(e&1&&($(0,"markdown",5),w(1,"interpolateMd")),e&2){let i=y();b("data",I(1,1,i.schema.footerDisplay))}}function ZW(e,t){if(e&1&&($(0,"i",14),w(1,"translate")),e&2){let i=y();b("ngClass",Wt(4,GI,i.formIsValid,i.strictValidation&&!i.formIsValid,!i.strictValidation&&!i.formIsValid))("ngbTooltip",I(1,2,i.formIsValid?"form.label_valid":i.strictValidation?"form.label_invalid_strict":"form.label_invalid"))}}function QW(e,t){if(e&1){let i=H();f(0,"button",33),q("click",function(){j(i);let r=y();return F(r.addBlock())}),$(1,"i",34),m()}}function eK(e,t){e&1&&(f(0,"span"),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"form.button_save")))}function tK(e,t){e&1&&$(0,"i",17)}var JI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$plugin=P(Sn);$modal=P(ot);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;schema;pluginAlias;pluginType;pluginConfig=[];form={};show="";saveInProgress;childBridges=[];isFirstSave=!1;formBlocksValid={};formIsValid=!0;strictValidation=!1;ngOnInit(){this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,this.strictValidation=this.schema.strictValidation,this.loadPluginConfig()}save(){return K(this,null,function*(){this.saveInProgress=!0;let i=this.pluginConfig.map(n=>n.config);try{let n=yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,i));if(this.saveInProgress=!1,this.plugin.name==="homebridge-config-ui-x")this.$settings.getAppSettings().catch(()=>{});else if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&n[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 r=this.$modal.open(ar,{size:"lg",backdrop:"static"});r.componentInstance.bridges=this.childBridges.map(o=>({name:o.name,username:o.username}));return}this.$activeModal.close(),this.$modal.open(_i,{size:"lg",backdrop:"static"})}catch(n){this.saveInProgress=!1,console.error(n),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}blockShown(i){this.show=i;for(let n of this.pluginConfig)n.name=n.config.name||n.name}blockHidden(i){this.show===i&&(this.show="")}addBlock(){let i=au();this.pluginConfig.push({__uuid__:i,name:this.schema.pluginAlias,config:{[this.pluginType]:this.schema.pluginAlias}}),this.formBlocksValid[this.pluginConfig.length-1]=!1,this.blockShown(i)}removeBlock(i){let n=this.pluginConfig.findIndex(r=>r.__uuid__===i);this.pluginConfig.splice(n,1),delete this.formBlocksValid[n],Object.keys(this.formBlocksValid).length||(this.formIsValid=!0)}onIsValid(i,n){this.formBlocksValid[n]=i,this.formIsValid=Object.values(this.formBlocksValid).every(r=>r)}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close()}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:i=>{for(let n of i){let r={__uuid__:au(),name:n.name||this.schema.pluginAlias,config:n};this.pluginConfig.push(r)}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:i=>{console.error(i),this.$toastr.error(i.error?.message||this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error"))}})}homebridgeHueFix(i){if(this.schema.schema.properties.users={type:"object",properties:{}},!(!i.users||typeof i.users!="object"))for(let n of Object.keys(i.users))this.schema.schema.properties.users.properties[n]={type:"string"}}getChildBridges(){return K(this,null,function*(){try{(yield le(this.$api.get("/status/homebridge/child-bridges"))).forEach(n=>{this.plugin.name===n.plugin&&this.childBridges.push(n)})}catch(i){console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(6,"div",4),E(7,zW,2,3,"markdown",5),E(8,KW,3,1,"div",6),E(9,XW,4,4,"div",7),f(10,"div",8),E(11,YW,2,3,"markdown",5),m()(),f(12,"div",9)(13,"div",10)(14,"button",11),q("click",function(){return r.closeModal()}),x(15),w(16,"translate"),m()(),$(17,"div",12),f(18,"div",13),E(19,ZW,2,8,"i",14),E(20,QW,2,0,"button",15),f(21,"button",16),q("click",function(){return r.save()}),E(22,eK,3,3,"span"),E(23,tK,1,0,"i",17),m()()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),b("disabled",r.saveInProgress),G("aria-label",I(5,14,"form.button_close")),d(3),T(r.schema.headerDisplay?7:-1),d(),T(r.pluginConfig.length&&!r.schema.singular?8:-1),d(),T(r.pluginConfig.length&&r.schema.singular?9:-1),d(2),T(r.schema.footerDisplay?11:-1),d(3),b("disabled",r.saveInProgress),d(),V(" ",I(16,16,"form.button_close")," "),d(4),T(r.schema.singular?19:-1),d(),T(r.schema.singular?-1:20),d(),b("disabled",r.saveInProgress||!r.formIsValid&&r.strictValidation),d(),T(r.saveInProgress?-1:22),d(),T(r.saveInProgress?23:-1))},dependencies:[ts,es,is,Za,Ya,Xa,or,Ga,Ka,Kt,ru,zI,WI,Ja,ke,KI],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 iK=(e,t)=>({"green-text":e,"grey-text":t}),nK=(e,t)=>({"btn-danger":e,"btn-elegant":t}),rK=(e,t,i)=>({"fa-broom":e,"fa-undo":t,"fa-spinner fa-pulse":i});function oK(e,t){e&1&&(f(0,"div",12),$(1,"i",13),m(),f(2,"p",14),x(3),w(4,"translate"),m()),e&2&&(d(3),R(I(4,1,"reset.bridge_accessories.empty")))}function aK(e,t){if(e&1){let i=H();f(0,"li",18)(1,"span"),x(2),$(3,"br"),f(4,"small",19),$(5,"i",20),x(6),w(7,"translate"),f(8,"span",21),x(9),m()()(),f(10,"button",22),w(11,"translate"),q("click",function(){let r=j(i).$implicit,o=y(2);return F(o.toggleList(r._id))}),$(12,"i",23),m()()}if(e&2){let i=t.$implicit,n=y(2);d(2),V(" ",i.name," "),d(3),b("ngClass",Tn(12,iK,i._isPaired,!i._isPaired)),d(),V(" ",I(7,8,i._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," \xB7 "),d(3),R(i._username),d(),b("disabled",n.clicked)("ngClass",Tn(15,nK,!n.toDelete.includes(i._id),n.toDelete.includes(i._id))),G("aria-label",I(11,10,"form.button_delete")),d(2),b("ngClass",Wt(18,rK,!n.toDelete.includes(i._id),n.toDelete.includes(i._id)&&!n.clicked,n.toDelete.includes(i._id)&&n.clicked))}}function sK(e,t){if(e&1&&(f(0,"div",12),$(1,"i",15),m(),f(2,"ul",16)(3,"li"),x(4),w(5,"translate"),m(),f(6,"li"),x(7),w(8,"translate"),m()(),f(9,"ul",17),st(10,aK,13,22,"li",18,at),m()),e&2){let i=y();d(4),R(I(5,2,"reset.bridge_accessories.list_1")),d(3),R(I(8,4,"reset.clear_cache_single.list_3")),d(3),lt(i.pairings)}}function lK(e,t){if(e&1){let i=H();f(0,"button",24),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}if(e&2){let i=y();b("disabled",i.clicked),d(),V(" ",I(2,2,"form.button_close")," ")}}function uK(e,t){if(e&1){let i=H();f(0,"button",25),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(1),w(2,"translate"),m()}e&2&&(d(),V(" ",I(2,1,"form.button_close")," "))}function cK(e,t){if(e&1&&x(0),e&2){let i=y(3);V(" (",i.toDelete.length,") ")}}function dK(e,t){if(e&1&&(x(0),w(1,"translate"),E(2,cK,1,1)),e&2){let i=y(2);V(" ",I(1,2,"form.button_remove")," "),d(2),T(i.toDelete.length>0?2:-1)}}function pK(e,t){e&1&&$(0,"i",27)}function fK(e,t){if(e&1){let i=H();f(0,"button",26),q("click",function(){j(i);let r=y();return F(r.cleanBridges())}),E(1,dK,3,4),E(2,pK,1,0,"i",27),m()}if(e&2){let i=y();b("disabled",!i.toDelete.length||i.clicked),d(),T(i.clicked?-1:1),d(),T(i.clicked?2:-1)}}var XI=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$router=P(yi);$toastr=P(Ce);$translate=P(xe);childBridges=[];clicked=!1;pairings=[];toDelete=[];ngOnInit(){this.loadPairings()}toggleList(i){this.toDelete.includes(i)?this.toDelete=this.toDelete.filter(n=>n!==i):this.toDelete.push(i)}cleanBridges(){return this.clicked=!0,this.$api.delete("/server/pairings/accessories",{body:this.toDelete.map(i=>({id:i}))}).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:i=>{this.clicked=!1,console.error(i),this.$toastr.error(this.$translate.instant("reset.accessory_ind.fail"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadPairings(){return K(this,null,function*(){try{this.pairings=(yield le(this.$api.get("/server/pairings"))).filter(i=>i._category==="bridge"&&!i._main&&this.childBridges.find(n=>n.username===i._username)).sort((i,n)=>i.name.localeCompare(n.name))}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(7,"div",4),E(8,oK,5,3),E(9,sK,12,6),m(),f(10,"div",5)(11,"div",6),E(12,lK,3,4,"button",7),m(),f(13,"div",8),E(14,uK,3,3,"button",9),m(),f(15,"div",10),E(16,fK,3,3,"button",11),m()()()),n&2&&(d(3),R(I(4,8,"child_bridge.reset_accessories")),d(2),b("disabled",r.clicked),G("aria-label",I(6,10,"form.button_close")),d(3),T(r.pairings.length===0?8:-1),d(),T(r.pairings.length>0?9:-1),d(3),T(r.pairings.length>0?12:-1),d(2),T(r.pairings.length===0?14:-1),d(2),T(r.pairings.length>0?16:-1))},dependencies:[Kt,ke],encapsulation:2})}return e})();var ZI=ze(Bf(),1),QI=ze(Rf(),1),e2=ze(lo(),1);var mK=e=>({prefix:e}),hK=e=>({link:e}),YI=(e,t,i,n)=>({"fa-circle-o":e,"fa-spinner fa-pulse":t,"fa-check-circle green-text":i,"fa-times-circle red-text":n}),gK=(e,t,i)=>({"fa-circle-o":e,"fa-spinner fa-pulse":t,"fa-times-circle red-text":i});function yK(e,t){e&1&&(f(0,"li"),x(1),w(2,"translate"),m()),e&2&&(d(),R(I(2,1,"plugins.manage.scoped.process")))}function _K(e,t){e&1&&($(0,"li",8),w(1,"translate"),f(2,"li"),x(3),w(4,"translate"),m()),e&2&&(b("innerHTML",I(1,2,"plugins.manage.scoped.windows"),he),d(3),R(I(4,4,"plugins.manage.manual_update_command")))}function bK(e,t){if(e&1&&(f(0,"pre",9),x(1),m()),e&2){let i=y();d(),Ha(`hb-service stop
|
|
25
25
|
npm install -g `,i.plugin.newHbScope.to,"@",i.plugin.newHbScope.switch,`
|
|
26
26
|
npm uninstall -g `,i.plugin.newHbScope.from,`
|
|
27
|
-
hb-service start`)}}function vK(e,t){if(e&1&&(f(0,"div",10)(1,"ul",18)(2,"li"),$(3,"i",19),x(4),w(5,"translate"),f(6,"span",20),x(7),m()(),f(8,"li"),$(9,"i",19),x(10),w(11,"translate"),f(12,"span",20),x(13),m()(),f(14,"li"),$(15,"i",19),x(16),w(17,"translate"),m()()()),e&2){let i=y();d(3),b("ngClass",tr(14,YI,!i.installing&&!i.installed&&!i.failure,i.installing,i.installed&&!i.failure,!i.installed&&i.failure)),d(),V(" ",I(5,8,"plugins.manage.install")," "),d(3),R(i.plugin.newHbScope.to),d(2),b("ngClass",tr(19,YI,!i.uninstalling&&!i.uninstalled&&!i.failure,i.uninstalling,i.uninstalled&&!i.failure,!i.uninstalled&&i.failure)),d(),V(" ",I(11,10,"plugins.manage.uninstall")," "),d(3),R(i.plugin.newHbScope.from),d(2),b("ngClass",Wt(24,gK,!i.restarting&&!i.failure,i.restarting,i.failure)),d(),V(" ",I(17,12,"menu.hbrestart.title")," ")}}function xK(e,t){if(e&1){let i=H();f(0,"div",11)(1,"p"),x(2),w(3,"translate"),m(),f(4,"p",20),x(5),m(),f(6,"button",21),q("click",function(){j(i);let r=y();return F(r.downloadLogFile())}),x(7),w(8,"translate"),m()()}if(e&2){let i=y();d(2),R(I(3,3,"plugins.manage.scoped.error")),d(3),R(i.failure),d(2),R(I(8,5,"form.button_download"))}}function CK(e,t){if(e&1){let i=H();f(0,"button",22),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(2),w(3,"translate"),m()}if(e&2){let i=y();b("disabled",i.installing||i.uninstalling||i.restarting),G("aria-label",I(1,3,"form.button_close")),d(2),V(" ",I(3,5,"form.button_close")," ")}}function wK(e,t){if(e&1){let i=H();f(0,"button",22),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(2),w(3,"translate"),m()}if(e&2){let i=y();b("disabled",i.installing||i.uninstalling||i.restarting),G("aria-label",I(1,3,"form.button_close")),d(2),V(" ",I(3,5,"form.button_close")," ")}}function SK(e,t){e&1&&(f(0,"span"),x(1),w(2,"translate"),m()),e&2&&(d(),V(" ",I(2,1,"form.
|
|
27
|
+
hb-service start`)}}function vK(e,t){if(e&1&&(f(0,"div",10)(1,"ul",18)(2,"li"),$(3,"i",19),x(4),w(5,"translate"),f(6,"span",20),x(7),m()(),f(8,"li"),$(9,"i",19),x(10),w(11,"translate"),f(12,"span",20),x(13),m()(),f(14,"li"),$(15,"i",19),x(16),w(17,"translate"),m()()()),e&2){let i=y();d(3),b("ngClass",tr(14,YI,!i.installing&&!i.installed&&!i.failure,i.installing,i.installed&&!i.failure,!i.installed&&i.failure)),d(),V(" ",I(5,8,"plugins.manage.install")," "),d(3),R(i.plugin.newHbScope.to),d(2),b("ngClass",tr(19,YI,!i.uninstalling&&!i.uninstalled&&!i.failure,i.uninstalling,i.uninstalled&&!i.failure,!i.uninstalled&&i.failure)),d(),V(" ",I(11,10,"plugins.manage.uninstall")," "),d(3),R(i.plugin.newHbScope.from),d(2),b("ngClass",Wt(24,gK,!i.restarting&&!i.failure,i.restarting,i.failure)),d(),V(" ",I(17,12,"menu.hbrestart.title")," ")}}function xK(e,t){if(e&1){let i=H();f(0,"div",11)(1,"p"),x(2),w(3,"translate"),m(),f(4,"p",20),x(5),m(),f(6,"button",21),q("click",function(){j(i);let r=y();return F(r.downloadLogFile())}),x(7),w(8,"translate"),m()()}if(e&2){let i=y();d(2),R(I(3,3,"plugins.manage.scoped.error")),d(3),R(i.failure),d(2),R(I(8,5,"form.button_download"))}}function CK(e,t){if(e&1){let i=H();f(0,"button",22),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(2),w(3,"translate"),m()}if(e&2){let i=y();b("disabled",i.installing||i.uninstalling||i.restarting),G("aria-label",I(1,3,"form.button_close")),d(2),V(" ",I(3,5,"form.button_close")," ")}}function wK(e,t){if(e&1){let i=H();f(0,"button",22),w(1,"translate"),q("click",function(){j(i);let r=y();return F(r.dismissModal())}),x(2),w(3,"translate"),m()}if(e&2){let i=y();b("disabled",i.installing||i.uninstalling||i.restarting),G("aria-label",I(1,3,"form.button_close")),d(2),V(" ",I(3,5,"form.button_close")," ")}}function SK(e,t){e&1&&(f(0,"span"),x(1),w(2,"translate"),m()),e&2&&(d(),V(" ",I(2,1,"form.button_continue")," "))}function IK(e,t){e&1&&$(0,"i",24)}function $K(e,t){if(e&1){let i=H();f(0,"button",23),q("click",function(){j(i);let r=y();return F(r.doSwitch())}),E(1,SK,3,3,"span"),E(2,IK,1,0,"i",24),m()}if(e&2){let i=y();b("disabled",i.installing||i.uninstalling||i.restarting||!i.onlineUpdateOk||i.failure),d(),T(!i.installing&&!i.uninstalling&&!i.restarting?1:-1),d(),T((i.installing||i.uninstalling||i.restarting)&&!i.failure?2:-1)}}var t2=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$router=P(yi);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);$ws=P(tn);io;term;termTarget;fitAddon=new ZI.FitAddon;errorLog="";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>';constructor(){this.term=new QI.Terminal({theme:{background:"#00000000",foreground:this.$settings.actualLightingMode==="light"?"#333333":"#eeeeee",cursor:"#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",i=>{this.term.write(i);let n=i.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();n&&(this.errorLog+=`${n}\r
|
|
28
28
|
`)})}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:i=>{this.restarting=!1,this.failure=i.message,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})},error:i=>{this.uninstalling=!1,this.failure=i.message,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})},error:i=>{this.installing=!1,this.failure=i.message,console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}downloadLogFile(){let i=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,e2.saveAs)(i,`${this.plugin.name}-error.log`)}ngOnDestroy(){this.io.end(),this.term.dispose()}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),w(4,"translate"),m(),f(5,"button",3),w(6,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(7,"div",4)(8,"div",5),$(9,"i",6),m(),f(10,"ul",7),$(11,"li",8),w(12,"translate"),f(13,"li"),x(14),w(15,"translate"),m(),$(16,"li",8),w(17,"translate"),E(18,yK,3,3,"li"),E(19,_K,5,6),m(),E(20,bK,2,3,"pre",9),E(21,vK,18,28,"div",10),E(22,xK,9,7,"div",11),$(23,"div",12),m(),f(24,"div",13)(25,"div",14),E(26,CK,4,7,"button",15),m(),f(27,"div",10),E(28,wK,4,7,"button",15),m(),f(29,"div",16),E(30,$K,3,3,"button",17),m()()()),n&2&&(d(3),R(I(4,15,"plugins.manage.scoped.switch")),d(2),b("disabled",r.installing||r.uninstalling||r.restarting),G("aria-label",I(6,17,"form.button_close")),d(6),b("innerHTML",He(12,19,"plugins.manage.scoped.info_1",ri(27,mK,r.prefix)),he),d(3),R(I(15,22,"plugins.manage.scoped_message")),d(2),b("innerHTML",He(17,24,"plugins.manage.scoped.info_2",ri(29,hK,r.moreInfo)),he),d(2),T(r.onlineUpdateOk?18:-1),d(),T(r.onlineUpdateOk?-1:19),d(),T(r.onlineUpdateOk?-1:20),d(),T(r.onlineUpdateOk?21:-1),d(),T(r.failure?22:-1),d(),b("hidden",!r.onlineUpdateOk||r.failure),d(3),T(r.onlineUpdateOk?26:-1),d(2),T(r.onlineUpdateOk?-1:28),d(2),T(r.onlineUpdateOk?30:-1))},dependencies:[Kt,ke],styles:["#plugin-output[_ngcontent-%COMP%]{height:150px;overflow-y:auto;overflow-x:hidden}"]})}return e})();var EK=e=>({pluginName:e}),TK=e=>({count:e});function PK(e,t){e&1&&(f(0,"div",5),$(1,"i",13),m())}function OK(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"plugins.uninstall_remove_child_bridge")," ")}function kK(e,t){if(e&1&&(x(0),w(1,"translate")),e&2){let i=y(4);V(" ",He(1,1,"plugins.uninstall_remove_child_bridges",ri(4,TK,i.childBridges.length))," ")}}function MK(e,t){if(e&1){let i=H();f(0,"label",24)(1,"input",25),je("ngModelChange",function(r){j(i);let o=y(3);return Ne(o.removeChildBridges,r)||(o.removeChildBridges=r),F(r)}),m(),E(2,OK,2,3),E(3,kK,2,6),$(4,"span",23),m()}if(e&2){let i=y(3);d(),Ae("ngModel",i.removeChildBridges),d(),T(i.childBridges.length===1?2:-1),d(),T(i.childBridges.length>1?3:-1)}}function DK(e,t){if(e&1){let i=H();f(0,"p",16)(1,"label",21)(2,"input",22),je("ngModelChange",function(r){j(i);let o=y(2);return Ne(o.removeConfig,r)||(o.removeConfig=r),F(r)}),m(),x(3),w(4,"translate"),$(5,"span",23),m(),E(6,MK,5,3,"label",24),m()}if(e&2){let i=y(2);d(2),Ae("ngModel",i.removeConfig),d(),V(" ",I(4,3,"plugins.uninstall_remove_plugin_config")," "),d(3),T(i.hasChildBridges?6:-1)}}function AK(e,t){e&1&&(f(0,"ul",17)(1,"li"),x(2),w(3,"translate"),m(),f(4,"li"),x(5),w(6,"translate"),m()()),e&2&&(d(2),R(I(3,2,"plugins.uninstall_warn_1")),d(3),R(I(6,4,"plugins.uninstall_warn_2")))}function NK(e,t){e&1&&(f(0,"ngb-alert",18),x(1),w(2,"translate"),m()),e&2&&(b("dismissible",!1),d(),V(" ",I(2,2,"plugins.uninstall_remove_config_required")," "))}function jK(e,t){if(e&1&&(f(0,"div",14),$(1,"i",15),m(),f(2,"div",9),E(3,DK,7,5,"p",16),m(),E(4,AK,7,6,"ul",17),E(5,NK,3,4,"ngb-alert",18),f(6,"ngb-alert",19)(7,"p",20),x(8),w(9,"translate"),m()()),e&2){let i=y();d(3),T(i.isConfigured?3:-1),d(),T(i.hasChildBridges&&i.removeChildBridges?4:-1),d(),T(i.isConfigured&&(!i.pluginAlias||!i.pluginType)?5:-1),d(),b("dismissible",!1),d(2),R(He(9,5,"plugins.uninstall_remove_confirmation",ri(8,EK,i.plugin.displayName)))}}function FK(e,t){e&1&&(x(0),w(1,"translate")),e&2&&V(" ",I(1,1,"plugins.manage.uninstall")," ")}function qK(e,t){e&1&&$(0,"i",12)}var i2=(()=>{class e{$activeModal=P(Oe);$api=P(ve);$modal=P(ot);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);plugin;childBridges;action;loading=!0;uninstalling=!1;removeConfig=!0;removeChildBridges=!0;hasChildBridges=!1;isConfigured=!1;pluginType;pluginAlias;ngOnInit(){return K(this,null,function*(){try{this.childBridges.length&&(this.hasChildBridges=!0);let i=yield this.getAlias();this.pluginType=i.pluginType,this.pluginAlias=i.pluginAlias,(yield le(this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`))).length&&(this.isConfigured=!0)}finally{this.loading=!1}})}doUninstall(){return K(this,null,function*(){if(this.uninstalling=!0,this.removeConfig&&this.isConfigured)try{yield this.removePluginConfig()}catch(n){console.error(n),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(n=>this.removeChildBridge(n.username.replace(/:/g,""))))}catch(n){console.error(n)}this.$activeModal.dismiss();let i=this.$modal.open(io,{size:"lg",backdrop:"static"});i.componentInstance.action="Uninstall",i.componentInstance.pluginName=this.plugin.name,i.componentInstance.pluginDisplayName=this.plugin.displayName})}dismissModal(){this.$activeModal.dismiss("Dismiss")}getAlias(){return K(this,null,function*(){return le(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`))})}removePluginConfig(){return K(this,null,function*(){yield le(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,[])),yield le(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(i){return K(this,null,function*(){try{yield le(this.$api.delete(`/server/pairings/${i}`))}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.uninstall_bridge_error"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(n){return new(n||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(n,r){n&1&&(f(0,"div",0)(1,"div",1)(2,"h5",2),x(3),m(),f(4,"button",3),w(5,"translate"),q("click",function(){return r.dismissModal()}),m()(),f(6,"div",4),E(7,PK,2,0,"div",5),E(8,jK,10,10),m(),f(9,"div",6)(10,"div",7)(11,"button",8),w(12,"translate"),q("click",function(){return r.dismissModal()}),x(13),w(14,"translate"),m()(),$(15,"div",9),f(16,"div",10)(17,"button",11),q("click",function(){return r.doUninstall()}),E(18,FK,2,3),E(19,qK,1,0,"i",12),m()()()()),n&2&&(d(3),R(r.plugin.displayName||r.plugin.name),d(),b("disabled",r.uninstalling),G("aria-label",I(5,11,"form.button_close")),d(3),T(r.loading?7:-1),d(),T(r.loading?-1:8),d(3),b("disabled",r.uninstalling),G("aria-label",I(12,13,"form.button_close")),d(2),V(" ",I(14,15,"form.button_close")," "),d(4),b("disabled",r.loading||r.uninstalling),d(),T(r.uninstalling?-1:18),d(),T(r.uninstalling?19:-1))},dependencies:[oi,Yi,$t,Zi,rr,ke],encapsulation:2})}return e})();var Sn=(()=>{class e{$api=P(ve);$modal=P(ot);$customPluginsService=P($I);$settings=P(Re);$toastr=P(Ce);$translate=P(xe);installPlugin(i,n){let r=this.$modal.open(io,{size:"lg",backdrop:"static"});r.componentInstance.action="Install",r.componentInstance.pluginName=i.name,r.componentInstance.pluginDisplayName=i.displayName,r.componentInstance.targetVersion=n}uninstallPlugin(i,n){let r=this.$modal.open(i2,{size:"lg",backdrop:"static"});r.componentInstance.action="Uninstall",r.componentInstance.plugin=i,r.componentInstance.childBridges=n}checkAndUpdatePlugin(i,n){return K(this,null,function*(){(yield this.checkHbAndNodeVersion(i,"update"))&&(yield this.updatePlugin(i,n))})}updatePlugin(i,n){return K(this,null,function*(){let r=this.$modal.open(io,{size:"lg",backdrop:"static"});r.componentInstance.action="Update",r.componentInstance.pluginName=i.name,r.componentInstance.pluginDisplayName=i.displayName,r.componentInstance.targetVersion=n,r.componentInstance.latestVersion=i.latestVersion,r.componentInstance.installedVersion=i.installedVersion,r.componentInstance.isDisabled=i.disabled})}upgradeHomebridge(i,n){return K(this,null,function*(){if(!(yield this.checkHbAndNodeVersion(i,"update")))return;let r=this.$modal.open(io,{size:"lg",backdrop:"static"});r.componentInstance.action="Update",r.componentInstance.pluginName=i.name,r.componentInstance.pluginDisplayName=i.displayName,r.componentInstance.targetVersion=n,r.componentInstance.latestVersion=i.latestVersion,r.componentInstance.installedVersion=i.installedVersion})}installAlternateVersion(i){return K(this,null,function*(){let n=this.$modal.open(jI,{size:"lg",backdrop:"static"});n.componentInstance.plugin=i;try{let{action:r,version:o,engines:a}=yield n.result;return(yield this.checkHbAndNodeVersion($e(X({},i),{updateEngines:a}),r))?i.name==="homebridge"?yield this.upgradeHomebridge(i,o):i.installedVersion?yield this.updatePlugin(i,o):this.installPlugin(i,o):void 0}catch{}})}bridgeSettings(i,n=!1){return K(this,null,function*(){let r;if(i.settingsSchema)try{r=yield this.loadConfigSchema(i.name)}catch(a){console.error(a),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}let o=this.$modal.open(VI,{size:"lg",backdrop:"static"});o.componentInstance.schema=r,o.componentInstance.plugin=i,o.componentInstance.justInstalled=n})}settings(i){return K(this,null,function*(){let n;if(i.settingsSchema)try{n=yield this.loadConfigSchema(i.name)}catch(o){console.error(o),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}if(n&&n.customUi)return this.$customPluginsService.openCustomSettingsUi(i,n);if(this.$customPluginsService.plugins[i.name])return this.$customPluginsService.openSettings(i,n);let r=this.$modal.open(i.settingsSchema?JI:Zp,{size:"lg",backdrop:"static"});return r.componentInstance.schema=n,r.componentInstance.plugin=i,r.result.catch(()=>{})})}jsonEditor(i){return K(this,null,function*(){let n;if(i.settingsSchema)try{n=yield this.loadConfigSchema(i.name)}catch(o){console.error(o)}let r=this.$modal.open(Zp,{size:"lg",backdrop:"static"});return r.componentInstance.schema=n,r.componentInstance.plugin=i,r.result.catch(o=>console.error(o))})}checkHbAndNodeVersion(i,n){return K(this,null,function*(){let r=!0,o=!0;try{i.updateEngines?.node&&(0,no.lt)(this.$settings.env.nodeVersion,(0,no.minVersion)(i.updateEngines.node))&&(r=!1),i.updateEngines?.homebridge&&(0,no.lt)(this.$settings.env.homebridgeVersion,(0,no.minVersion)(i.updateEngines.homebridge))&&(o=!1)}catch(a){return console.error(a),this.$toastr.error(a.message,this.$translate.instant("toast.title_error")),!1}if(!r||!o)try{let a=this.$modal.open(RI,{size:"lg",backdrop:"static"});return a.componentInstance.plugin=i,a.componentInstance.isValidNode=r,a.componentInstance.isValidHb=o,a.componentInstance.action=n,yield a.result}catch{return!1}return!0})}loadConfigSchema(i){return K(this,null,function*(){return le(this.$api.get(`/plugins/config-schema/${encodeURIComponent(i)}`))})}resetChildBridges(i){return K(this,null,function*(){let n=this.$modal.open(XI,{size:"lg",backdrop:"static"});n.componentInstance.childBridges=i})}switchToScoped(i){return K(this,null,function*(){let n=this.$modal.open(t2,{size:"lg",backdrop:"static"});n.componentInstance.plugin=i})}static \u0275fac=function(n){return new(n||e)};static \u0275prov=Ft({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{Jp as a,Rp as b,it as c,cQ as d,Je as e,Cw as f,Sw as g,Vp as h,g9 as i,Iw as j,$I as k,TI as l,OI as m,Sn as n};
|