homebridge-config-ui-x 4.62.1-beta.8 → 5.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -6
- package/README.md +4 -58
- package/config.schema.json +1 -0
- package/dist/bin/platforms/darwin.js +2 -0
- package/dist/bin/platforms/darwin.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +1 -0
- package/dist/modules/server/server.service.js +1 -0
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +3 -5
- package/dist/modules/status/status.gateway.js +2 -28
- package/dist/modules/status/status.gateway.js.map +1 -1
- package/dist/modules/status/status.service.d.ts +2 -0
- package/dist/modules/status/status.service.js +8 -7
- package/dist/modules/status/status.service.js.map +1 -1
- package/package.json +19 -24
- package/public/3rdpartylicenses.txt +9 -1
- package/public/assets/hap-icons/smokesensor.svg +1 -1
- package/public/{chunk-L5T7ZKXS.js → chunk-2PWJQ3JG.js} +1 -1
- package/public/{chunk-7GBA6C44.js → chunk-2XSSTW65.js} +1 -1
- package/public/chunk-3MMTBP3D.js +1 -0
- package/public/{chunk-NBBRAKSC.js → chunk-3PUISAM4.js} +1 -1
- package/public/{chunk-SOAUTBJP.js → chunk-3SUL4N2K.js} +1 -1
- package/public/{chunk-KSB4ZI7E.js → chunk-47MGIKRX.js} +1 -1
- package/public/{chunk-BUGNOBXC.js → chunk-4R6MSI5I.js} +1 -1
- package/public/{chunk-YAU2KWBZ.js → chunk-6QEO3BTW.js} +1 -1
- package/public/chunk-6SZTMLNK.js +1 -0
- package/public/{chunk-Z3CVK6KZ.js → chunk-6T267MJT.js} +1 -1
- package/public/{chunk-D6UUGEUB.js → chunk-B6C32ZRK.js} +1 -1
- package/public/{chunk-RPL6HWN2.js → chunk-BROUJ7PT.js} +1 -1
- package/public/{chunk-SEWYYMFC.js → chunk-C4VKSYGU.js} +1 -1
- package/public/chunk-CKS7IGEQ.js +1 -0
- package/public/chunk-CTWXFHBK.js +20 -0
- package/public/{chunk-CTXV4CXU.js → chunk-DLVT4K74.js} +1 -1
- package/public/{chunk-RCR6ZOPK.js → chunk-DPQR4EUP.js} +1 -1
- package/public/chunk-F22FMU37.js +1 -0
- package/public/{chunk-RF5R32OJ.js → chunk-GNQUXZMN.js} +1 -1
- package/public/chunk-GUXB6V7U.js +1 -0
- package/public/{chunk-VFY55GH2.js → chunk-HPRZRVV7.js} +1 -1
- package/public/{chunk-6FSSCOBZ.js → chunk-HXKR7RPF.js} +1 -1
- package/public/chunk-IGUSDGD6.js +8 -0
- package/public/{chunk-EX6EQLNK.js → chunk-JM7QCDMZ.js} +1 -1
- package/public/{chunk-SJSICWQN.js → chunk-JQO6VAZ5.js} +1 -1
- package/public/{chunk-42CEIGNF.js → chunk-K5UREZLG.js} +5 -5
- package/public/{chunk-Y663GN4Z.js → chunk-LM3J4EYP.js} +1 -1
- package/public/chunk-NTTD35IF.js +1 -0
- package/public/chunk-PSLVYKAC.js +1 -0
- package/public/{chunk-IEGGB4YN.js → chunk-Q7MYZYMQ.js} +1 -1
- package/public/{chunk-CLHDGCM3.js → chunk-SI3MSSTT.js} +1 -1
- package/public/{chunk-WOJ7C5HX.js → chunk-SJTXTMYT.js} +1 -1
- package/public/{chunk-VZFXQGAN.js → chunk-TBJQ2Y3M.js} +1 -1
- package/public/{chunk-VYUN5WLM.js → chunk-THFLPY67.js} +1 -1
- package/public/{chunk-Y3DKHOJK.js → chunk-TTLBPD7L.js} +1 -1
- package/public/{chunk-AMPKQYAW.js → chunk-UEBRERJ6.js} +1 -1
- package/public/{chunk-FBJAWKJ3.js → chunk-WCDFKYP6.js} +1 -1
- package/public/{chunk-2XZGMVML.js → chunk-XLAWLJES.js} +1 -1
- package/public/index.html +2 -2
- package/public/main-DTWXJAMM.js +6 -0
- package/public/{styles-PPJYL5GV.css → styles-7ETWN6DQ.css} +1 -1
- package/public/chunk-2JBTX2Y6.js +0 -20
- package/public/chunk-7SIWB246.js +0 -1
- package/public/chunk-IKFLHM2X.js +0 -8
- package/public/chunk-J6XB3JBO.js +0 -1
- package/public/chunk-JIVUFRXW.js +0 -1
- package/public/chunk-NQBFPZJU.js +0 -1
- package/public/chunk-PYSNSBC7.js +0 -1
- package/public/chunk-REXDMF6R.js +0 -1
- package/public/chunk-YNJHA6KP.js +0 -1
- package/public/main-AJTFFZO7.js +0 -6
package/public/chunk-2JBTX2Y6.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{a as Ur}from"./chunk-BUGNOBXC.js";import{a as fi}from"./chunk-WOJ7C5HX.js";import{a as Me}from"./chunk-YAU2KWBZ.js";import{a as ci}from"./chunk-D6UUGEUB.js";import{a as ui,b as De}from"./chunk-Z3CVK6KZ.js";import{a as di,b as mi}from"./chunk-VYUN5WLM.js";import{a as Ve}from"./chunk-SEWYYMFC.js";import{b as pi,c as Re,d as $e,n as Ne}from"./chunk-KSB4ZI7E.js";import{a as ge}from"./chunk-7SIWB246.js";import{a as gi}from"./chunk-EX6EQLNK.js";import{a as ri}from"./chunk-Y3DKHOJK.js";import{A as ot,B as at,C as st,D as lt,E as ct,F as pt,G as Be,M as q,N as J,O as Pe,b as rt,c as oi,e as Ie,l as we,r as ai,s as si,t as li}from"./chunk-FBJAWKJ3.js";import{b as ye,c as L,k as D,m as Q}from"./chunk-JIVUFRXW.js";import{a as F,b as U}from"./chunk-J6XB3JBO.js";import{$ as j,Ab as ae,Ga as x,H as Qe,Ka as A,La as d,P as Et,Pa as ii,Pb as ve,Qb as de,Rb as X,Ua as l,Va as c,W as Je,Wa as v,Xb as nt,Z as he,Za as V,a as Ye,ab as y,b as Ke,bb as f,ca as ei,e as R,fb as Ze,g as pe,gb as et,h as s,ha as w,hb as tt,i as k,ia as $,jb as m,kb as T,l as Ee,lb as C,mb as K,nb as ni,ob as G,pb as z,qb as W,sc as Ce,t as O,ta as Tt,tb as _e,ub as Fe,va as ti,vb as it,wa as a,wb as Te,xa as _,xb as kt,yb as u,zb as g}from"./chunk-IKFLHM2X.js";var Ue=R((Up,Si)=>{var bo="2.0.0",xo=Number.MAX_SAFE_INTEGER||9007199254740991,Co=16,yo=250,Io=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Si.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Co,MAX_SAFE_BUILD_LENGTH:yo,MAX_SAFE_INTEGER:xo,RELEASE_TYPES:Io,SEMVER_SPEC_VERSION:bo,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var qe=R((qp,Ei)=>{var wo=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Ei.exports=wo});var Oe=R((xe,Ti)=>{var{MAX_SAFE_COMPONENT_LENGTH:Bt,MAX_SAFE_BUILD_LENGTH:$o,MAX_LENGTH:So}=Ue(),Eo=qe();xe=Ti.exports={};var To=xe.re=[],ko=xe.safeRe=[],S=xe.src=[],E=xe.t={},Vo=0,Pt="[a-zA-Z0-9-]",Bo=[["\\s",1],["\\d",So],[Pt,$o]],Po=e=>{for(let[n,i]of Bo)e=e.split(`${n}*`).join(`${n}{0,${i}}`).split(`${n}+`).join(`${n}{1,${i}}`);return e},N=(e,n,i)=>{let t=Po(n),r=Vo++;Eo(e,r,n),E[e]=r,S[r]=n,To[r]=new RegExp(n,i?"g":void 0),ko[r]=new RegExp(t,i?"g":void 0)};N("NUMERICIDENTIFIER","0|[1-9]\\d*");N("NUMERICIDENTIFIERLOOSE","\\d+");N("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Pt}*`);N("MAINVERSION",`(${S[E.NUMERICIDENTIFIER]})\\.(${S[E.NUMERICIDENTIFIER]})\\.(${S[E.NUMERICIDENTIFIER]})`);N("MAINVERSIONLOOSE",`(${S[E.NUMERICIDENTIFIERLOOSE]})\\.(${S[E.NUMERICIDENTIFIERLOOSE]})\\.(${S[E.NUMERICIDENTIFIERLOOSE]})`);N("PRERELEASEIDENTIFIER",`(?:${S[E.NUMERICIDENTIFIER]}|${S[E.NONNUMERICIDENTIFIER]})`);N("PRERELEASEIDENTIFIERLOOSE",`(?:${S[E.NUMERICIDENTIFIERLOOSE]}|${S[E.NONNUMERICIDENTIFIER]})`);N("PRERELEASE",`(?:-(${S[E.PRERELEASEIDENTIFIER]}(?:\\.${S[E.PRERELEASEIDENTIFIER]})*))`);N("PRERELEASELOOSE",`(?:-?(${S[E.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${S[E.PRERELEASEIDENTIFIERLOOSE]})*))`);N("BUILDIDENTIFIER",`${Pt}+`);N("BUILD",`(?:\\+(${S[E.BUILDIDENTIFIER]}(?:\\.${S[E.BUILDIDENTIFIER]})*))`);N("FULLPLAIN",`v?${S[E.MAINVERSION]}${S[E.PRERELEASE]}?${S[E.BUILD]}?`);N("FULL",`^${S[E.FULLPLAIN]}$`);N("LOOSEPLAIN",`[v=\\s]*${S[E.MAINVERSIONLOOSE]}${S[E.PRERELEASELOOSE]}?${S[E.BUILD]}?`);N("LOOSE",`^${S[E.LOOSEPLAIN]}$`);N("GTLT","((?:<|>)?=?)");N("XRANGEIDENTIFIERLOOSE",`${S[E.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);N("XRANGEIDENTIFIER",`${S[E.NUMERICIDENTIFIER]}|x|X|\\*`);N("XRANGEPLAIN",`[v=\\s]*(${S[E.XRANGEIDENTIFIER]})(?:\\.(${S[E.XRANGEIDENTIFIER]})(?:\\.(${S[E.XRANGEIDENTIFIER]})(?:${S[E.PRERELEASE]})?${S[E.BUILD]}?)?)?`);N("XRANGEPLAINLOOSE",`[v=\\s]*(${S[E.XRANGEIDENTIFIERLOOSE]})(?:\\.(${S[E.XRANGEIDENTIFIERLOOSE]})(?:\\.(${S[E.XRANGEIDENTIFIERLOOSE]})(?:${S[E.PRERELEASELOOSE]})?${S[E.BUILD]}?)?)?`);N("XRANGE",`^${S[E.GTLT]}\\s*${S[E.XRANGEPLAIN]}$`);N("XRANGELOOSE",`^${S[E.GTLT]}\\s*${S[E.XRANGEPLAINLOOSE]}$`);N("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Bt}})(?:\\.(\\d{1,${Bt}}))?(?:\\.(\\d{1,${Bt}}))?`);N("COERCE",`${S[E.COERCEPLAIN]}(?:$|[^\\d])`);N("COERCEFULL",S[E.COERCEPLAIN]+`(?:${S[E.PRERELEASE]})?(?:${S[E.BUILD]})?(?:$|[^\\d])`);N("COERCERTL",S[E.COERCE],!0);N("COERCERTLFULL",S[E.COERCEFULL],!0);N("LONETILDE","(?:~>?)");N("TILDETRIM",`(\\s*)${S[E.LONETILDE]}\\s+`,!0);xe.tildeTrimReplace="$1~";N("TILDE",`^${S[E.LONETILDE]}${S[E.XRANGEPLAIN]}$`);N("TILDELOOSE",`^${S[E.LONETILDE]}${S[E.XRANGEPLAINLOOSE]}$`);N("LONECARET","(?:\\^)");N("CARETTRIM",`(\\s*)${S[E.LONECARET]}\\s+`,!0);xe.caretTrimReplace="$1^";N("CARET",`^${S[E.LONECARET]}${S[E.XRANGEPLAIN]}$`);N("CARETLOOSE",`^${S[E.LONECARET]}${S[E.XRANGEPLAINLOOSE]}$`);N("COMPARATORLOOSE",`^${S[E.GTLT]}\\s*(${S[E.LOOSEPLAIN]})$|^$`);N("COMPARATOR",`^${S[E.GTLT]}\\s*(${S[E.FULLPLAIN]})$|^$`);N("COMPARATORTRIM",`(\\s*)${S[E.GTLT]}\\s*(${S[E.LOOSEPLAIN]}|${S[E.XRANGEPLAIN]})`,!0);xe.comparatorTrimReplace="$1$2$3";N("HYPHENRANGE",`^\\s*(${S[E.XRANGEPLAIN]})\\s+-\\s+(${S[E.XRANGEPLAIN]})\\s*$`);N("HYPHENRANGELOOSE",`^\\s*(${S[E.XRANGEPLAINLOOSE]})\\s+-\\s+(${S[E.XRANGEPLAINLOOSE]})\\s*$`);N("STAR","(<|>)?=?\\s*\\*");N("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");N("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var dt=R((Hp,ki)=>{var Mo=Object.freeze({loose:!0}),Ro=Object.freeze({}),No=e=>e?typeof e!="object"?Mo:e:Ro;ki.exports=No});var Mt=R((Gp,Pi)=>{var Vi=/^[0-9]+$/,Bi=(e,n)=>{let i=Vi.test(e),t=Vi.test(n);return i&&t&&(e=+e,n=+n),e===n?0:i&&!t?-1:t&&!i?1:e<n?-1:1},Ao=(e,n)=>Bi(n,e);Pi.exports={compareIdentifiers:Bi,rcompareIdentifiers:Ao}});var te=R((zp,Ai)=>{var mt=qe(),{MAX_LENGTH:Mi,MAX_SAFE_INTEGER:ut}=Ue(),{safeRe:Ri,t:Ni}=Oe(),Oo=dt(),{compareIdentifiers:Le}=Mt(),Rt=class e{constructor(n,i){if(i=Oo(i),n instanceof e){if(n.loose===!!i.loose&&n.includePrerelease===!!i.includePrerelease)return n;n=n.version}else if(typeof n!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof n}".`);if(n.length>Mi)throw new TypeError(`version is longer than ${Mi} characters`);mt("SemVer",n,i),this.options=i,this.loose=!!i.loose,this.includePrerelease=!!i.includePrerelease;let t=n.trim().match(i.loose?Ri[Ni.LOOSE]:Ri[Ni.FULL]);if(!t)throw new TypeError(`Invalid Version: ${n}`);if(this.raw=n,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>ut||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ut||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ut||this.patch<0)throw new TypeError("Invalid patch version");t[4]?this.prerelease=t[4].split(".").map(r=>{if(/^[0-9]+$/.test(r)){let o=+r;if(o>=0&&o<ut)return o}return r}):this.prerelease=[],this.build=t[5]?t[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(n){if(mt("SemVer.compare",this.version,this.options,n),!(n instanceof e)){if(typeof n=="string"&&n===this.version)return 0;n=new e(n,this.options)}return n.version===this.version?0:this.compareMain(n)||this.comparePre(n)}compareMain(n){return n instanceof e||(n=new e(n,this.options)),Le(this.major,n.major)||Le(this.minor,n.minor)||Le(this.patch,n.patch)}comparePre(n){if(n instanceof e||(n=new e(n,this.options)),this.prerelease.length&&!n.prerelease.length)return-1;if(!this.prerelease.length&&n.prerelease.length)return 1;if(!this.prerelease.length&&!n.prerelease.length)return 0;let i=0;do{let t=this.prerelease[i],r=n.prerelease[i];if(mt("prerelease compare",i,t,r),t===void 0&&r===void 0)return 0;if(r===void 0)return 1;if(t===void 0)return-1;if(t===r)continue;return Le(t,r)}while(++i)}compareBuild(n){n instanceof e||(n=new e(n,this.options));let i=0;do{let t=this.build[i],r=n.build[i];if(mt("build compare",i,t,r),t===void 0&&r===void 0)return 0;if(r===void 0)return 1;if(t===void 0)return-1;if(t===r)continue;return Le(t,r)}while(++i)}inc(n,i,t){switch(n){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",i,t);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",i,t);break;case"prepatch":this.prerelease.length=0,this.inc("patch",i,t),this.inc("pre",i,t);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",i,t),this.inc("pre",i,t);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let r=Number(t)?1:0;if(!i&&t===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[r];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(i===this.prerelease.join(".")&&t===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(r)}}if(i){let o=[i,r];t===!1&&(o=[i]),Le(this.prerelease[0],i)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${n}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Ai.exports=Rt});var ke=R((Wp,Li)=>{var Oi=te(),Lo=(e,n,i=!1)=>{if(e instanceof Oi)return e;try{return new Oi(e,n)}catch(t){if(!i)return null;throw t}};Li.exports=Lo});var Fi=R((Xp,ji)=>{var jo=ke(),Fo=(e,n)=>{let i=jo(e,n);return i?i.version:null};ji.exports=Fo});var Ui=R((Yp,Di)=>{var Do=ke(),Uo=(e,n)=>{let i=Do(e.trim().replace(/^[=v]+/,""),n);return i?i.version:null};Di.exports=Uo});var Gi=R((Kp,Hi)=>{var qi=te(),qo=(e,n,i,t,r)=>{typeof i=="string"&&(r=t,t=i,i=void 0);try{return new qi(e instanceof qi?e.version:e,i).inc(n,t,r).version}catch{return null}};Hi.exports=qo});var Xi=R((Qp,Wi)=>{var zi=ke(),Ho=(e,n)=>{let i=zi(e,null,!0),t=zi(n,null,!0),r=i.compare(t);if(r===0)return null;let o=r>0,p=o?i:t,h=o?t:i,b=!!p.prerelease.length;if(!!h.prerelease.length&&!b)return!h.patch&&!h.minor?"major":p.patch?"patch":p.minor?"minor":"major";let B=b?"pre":"";return i.major!==t.major?B+"major":i.minor!==t.minor?B+"minor":i.patch!==t.patch?B+"patch":"prerelease"};Wi.exports=Ho});var Ki=R((Jp,Yi)=>{var Go=te(),zo=(e,n)=>new Go(e,n).major;Yi.exports=zo});var Ji=R((Zp,Qi)=>{var Wo=te(),Xo=(e,n)=>new Wo(e,n).minor;Qi.exports=Xo});var en=R((ed,Zi)=>{var Yo=te(),Ko=(e,n)=>new Yo(e,n).patch;Zi.exports=Ko});var nn=R((td,tn)=>{var Qo=ke(),Jo=(e,n)=>{let i=Qo(e,n);return i&&i.prerelease.length?i.prerelease:null};tn.exports=Jo});var me=R((id,on)=>{var rn=te(),Zo=(e,n,i)=>new rn(e,i).compare(new rn(n,i));on.exports=Zo});var sn=R((nd,an)=>{var ea=me(),ta=(e,n,i)=>ea(n,e,i);an.exports=ta});var cn=R((rd,ln)=>{var ia=me(),na=(e,n)=>ia(e,n,!0);ln.exports=na});var gt=R((od,dn)=>{var pn=te(),ra=(e,n,i)=>{let t=new pn(e,i),r=new pn(n,i);return t.compare(r)||t.compareBuild(r)};dn.exports=ra});var un=R((ad,mn)=>{var oa=gt(),aa=(e,n)=>e.sort((i,t)=>oa(i,t,n));mn.exports=aa});var fn=R((sd,gn)=>{var sa=gt(),la=(e,n)=>e.sort((i,t)=>sa(t,i,n));gn.exports=la});var He=R((ld,hn)=>{var ca=me(),pa=(e,n,i)=>ca(e,n,i)>0;hn.exports=pa});var ft=R((cd,_n)=>{var da=me(),ma=(e,n,i)=>da(e,n,i)<0;_n.exports=ma});var Nt=R((pd,vn)=>{var ua=me(),ga=(e,n,i)=>ua(e,n,i)===0;vn.exports=ga});var At=R((dd,bn)=>{var fa=me(),ha=(e,n,i)=>fa(e,n,i)!==0;bn.exports=ha});var ht=R((md,xn)=>{var _a=me(),va=(e,n,i)=>_a(e,n,i)>=0;xn.exports=va});var _t=R((ud,Cn)=>{var ba=me(),xa=(e,n,i)=>ba(e,n,i)<=0;Cn.exports=xa});var Ot=R((gd,yn)=>{var Ca=Nt(),ya=At(),Ia=He(),wa=ht(),$a=ft(),Sa=_t(),Ea=(e,n,i,t)=>{switch(n){case"===":return typeof e=="object"&&(e=e.version),typeof i=="object"&&(i=i.version),e===i;case"!==":return typeof e=="object"&&(e=e.version),typeof i=="object"&&(i=i.version),e!==i;case"":case"=":case"==":return Ca(e,i,t);case"!=":return ya(e,i,t);case">":return Ia(e,i,t);case">=":return wa(e,i,t);case"<":return $a(e,i,t);case"<=":return Sa(e,i,t);default:throw new TypeError(`Invalid operator: ${n}`)}};yn.exports=Ea});var wn=R((fd,In)=>{var Ta=te(),ka=ke(),{safeRe:vt,t:bt}=Oe(),Va=(e,n)=>{if(e instanceof Ta)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;n=n||{};let i=null;if(!n.rtl)i=e.match(n.includePrerelease?vt[bt.COERCEFULL]:vt[bt.COERCE]);else{let b=n.includePrerelease?vt[bt.COERCERTLFULL]:vt[bt.COERCERTL],I;for(;(I=b.exec(e))&&(!i||i.index+i[0].length!==e.length);)(!i||I.index+I[0].length!==i.index+i[0].length)&&(i=I),b.lastIndex=I.index+I[1].length+I[2].length;b.lastIndex=-1}if(i===null)return null;let t=i[2],r=i[3]||"0",o=i[4]||"0",p=n.includePrerelease&&i[5]?`-${i[5]}`:"",h=n.includePrerelease&&i[6]?`+${i[6]}`:"";return ka(`${t}.${r}.${o}${p}${h}`,n)};In.exports=Va});var Sn=R((hd,$n)=>{var Lt=class{constructor(){this.max=1e3,this.map=new Map}get(n){let i=this.map.get(n);if(i!==void 0)return this.map.delete(n),this.map.set(n,i),i}delete(n){return this.map.delete(n)}set(n,i){if(!this.delete(n)&&i!==void 0){if(this.map.size>=this.max){let r=this.map.keys().next().value;this.delete(r)}this.map.set(n,i)}return this}};$n.exports=Lt});var ue=R((_d,Vn)=>{var Ba=/\s+/g,jt=class e{constructor(n,i){if(i=Ma(i),n instanceof e)return n.loose===!!i.loose&&n.includePrerelease===!!i.includePrerelease?n:new e(n.raw,i);if(n instanceof Ft)return this.raw=n.value,this.set=[[n]],this.formatted=void 0,this;if(this.options=i,this.loose=!!i.loose,this.includePrerelease=!!i.includePrerelease,this.raw=n.trim().replace(Ba," "),this.set=this.raw.split("||").map(t=>this.parseRange(t.trim())).filter(t=>t.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let t=this.set[0];if(this.set=this.set.filter(r=>!Tn(r[0])),this.set.length===0)this.set=[t];else if(this.set.length>1){for(let r of this.set)if(r.length===1&&Fa(r[0])){this.set=[r];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let n=0;n<this.set.length;n++){n>0&&(this.formatted+="||");let i=this.set[n];for(let t=0;t<i.length;t++)t>0&&(this.formatted+=" "),this.formatted+=i[t].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(n){let t=((this.options.includePrerelease&&La)|(this.options.loose&&ja))+":"+n,r=En.get(t);if(r)return r;let o=this.options.loose,p=o?ce[re.HYPHENRANGELOOSE]:ce[re.HYPHENRANGE];n=n.replace(p,Ka(this.options.includePrerelease)),H("hyphen replace",n),n=n.replace(ce[re.COMPARATORTRIM],Na),H("comparator trim",n),n=n.replace(ce[re.TILDETRIM],Aa),H("tilde trim",n),n=n.replace(ce[re.CARETTRIM],Oa),H("caret trim",n);let h=n.split(" ").map(P=>Da(P,this.options)).join(" ").split(/\s+/).map(P=>Ya(P,this.options));o&&(h=h.filter(P=>(H("loose invalid filter",P,this.options),!!P.match(ce[re.COMPARATORLOOSE])))),H("range list",h);let b=new Map,I=h.map(P=>new Ft(P,this.options));for(let P of I){if(Tn(P))return[P];b.set(P.value,P)}b.size>1&&b.has("")&&b.delete("");let B=[...b.values()];return En.set(t,B),B}intersects(n,i){if(!(n instanceof e))throw new TypeError("a Range is required");return this.set.some(t=>kn(t,i)&&n.set.some(r=>kn(r,i)&&t.every(o=>r.every(p=>o.intersects(p,i)))))}test(n){if(!n)return!1;if(typeof n=="string")try{n=new Ra(n,this.options)}catch{return!1}for(let i=0;i<this.set.length;i++)if(Qa(this.set[i],n,this.options))return!0;return!1}};Vn.exports=jt;var Pa=Sn(),En=new Pa,Ma=dt(),Ft=Ge(),H=qe(),Ra=te(),{safeRe:ce,t:re,comparatorTrimReplace:Na,tildeTrimReplace:Aa,caretTrimReplace:Oa}=Oe(),{FLAG_INCLUDE_PRERELEASE:La,FLAG_LOOSE:ja}=Ue(),Tn=e=>e.value==="<0.0.0-0",Fa=e=>e.value==="",kn=(e,n)=>{let i=!0,t=e.slice(),r=t.pop();for(;i&&t.length;)i=t.every(o=>r.intersects(o,n)),r=t.pop();return i},Da=(e,n)=>(H("comp",e,n),e=Ha(e,n),H("caret",e),e=Ua(e,n),H("tildes",e),e=za(e,n),H("xrange",e),e=Xa(e,n),H("stars",e),e),oe=e=>!e||e.toLowerCase()==="x"||e==="*",Ua=(e,n)=>e.trim().split(/\s+/).map(i=>qa(i,n)).join(" "),qa=(e,n)=>{let i=n.loose?ce[re.TILDELOOSE]:ce[re.TILDE];return e.replace(i,(t,r,o,p,h)=>{H("tilde",e,t,r,o,p,h);let b;return oe(r)?b="":oe(o)?b=`>=${r}.0.0 <${+r+1}.0.0-0`:oe(p)?b=`>=${r}.${o}.0 <${r}.${+o+1}.0-0`:h?(H("replaceTilde pr",h),b=`>=${r}.${o}.${p}-${h} <${r}.${+o+1}.0-0`):b=`>=${r}.${o}.${p} <${r}.${+o+1}.0-0`,H("tilde return",b),b})},Ha=(e,n)=>e.trim().split(/\s+/).map(i=>Ga(i,n)).join(" "),Ga=(e,n)=>{H("caret",e,n);let i=n.loose?ce[re.CARETLOOSE]:ce[re.CARET],t=n.includePrerelease?"-0":"";return e.replace(i,(r,o,p,h,b)=>{H("caret",e,r,o,p,h,b);let I;return oe(o)?I="":oe(p)?I=`>=${o}.0.0${t} <${+o+1}.0.0-0`:oe(h)?o==="0"?I=`>=${o}.${p}.0${t} <${o}.${+p+1}.0-0`:I=`>=${o}.${p}.0${t} <${+o+1}.0.0-0`:b?(H("replaceCaret pr",b),o==="0"?p==="0"?I=`>=${o}.${p}.${h}-${b} <${o}.${p}.${+h+1}-0`:I=`>=${o}.${p}.${h}-${b} <${o}.${+p+1}.0-0`:I=`>=${o}.${p}.${h}-${b} <${+o+1}.0.0-0`):(H("no pr"),o==="0"?p==="0"?I=`>=${o}.${p}.${h}${t} <${o}.${p}.${+h+1}-0`:I=`>=${o}.${p}.${h}${t} <${o}.${+p+1}.0-0`:I=`>=${o}.${p}.${h} <${+o+1}.0.0-0`),H("caret return",I),I})},za=(e,n)=>(H("replaceXRanges",e,n),e.split(/\s+/).map(i=>Wa(i,n)).join(" ")),Wa=(e,n)=>{e=e.trim();let i=n.loose?ce[re.XRANGELOOSE]:ce[re.XRANGE];return e.replace(i,(t,r,o,p,h,b)=>{H("xRange",e,t,r,o,p,h,b);let I=oe(o),B=I||oe(p),P=B||oe(h),Y=P;return r==="="&&Y&&(r=""),b=n.includePrerelease?"-0":"",I?r===">"||r==="<"?t="<0.0.0-0":t="*":r&&Y?(B&&(p=0),h=0,r===">"?(r=">=",B?(o=+o+1,p=0,h=0):(p=+p+1,h=0)):r==="<="&&(r="<",B?o=+o+1:p=+p+1),r==="<"&&(b="-0"),t=`${r+o}.${p}.${h}${b}`):B?t=`>=${o}.0.0${b} <${+o+1}.0.0-0`:P&&(t=`>=${o}.${p}.0${b} <${o}.${+p+1}.0-0`),H("xRange return",t),t})},Xa=(e,n)=>(H("replaceStars",e,n),e.trim().replace(ce[re.STAR],"")),Ya=(e,n)=>(H("replaceGTE0",e,n),e.trim().replace(ce[n.includePrerelease?re.GTE0PRE:re.GTE0],"")),Ka=e=>(n,i,t,r,o,p,h,b,I,B,P,Y)=>(oe(t)?i="":oe(r)?i=`>=${t}.0.0${e?"-0":""}`:oe(o)?i=`>=${t}.${r}.0${e?"-0":""}`:p?i=`>=${i}`:i=`>=${i}${e?"-0":""}`,oe(I)?b="":oe(B)?b=`<${+I+1}.0.0-0`:oe(P)?b=`<${I}.${+B+1}.0-0`:Y?b=`<=${I}.${B}.${P}-${Y}`:e?b=`<${I}.${B}.${+P+1}-0`:b=`<=${b}`,`${i} ${b}`.trim()),Qa=(e,n,i)=>{for(let t=0;t<e.length;t++)if(!e[t].test(n))return!1;if(n.prerelease.length&&!i.includePrerelease){for(let t=0;t<e.length;t++)if(H(e[t].semver),e[t].semver!==Ft.ANY&&e[t].semver.prerelease.length>0){let r=e[t].semver;if(r.major===n.major&&r.minor===n.minor&&r.patch===n.patch)return!0}return!1}return!0}});var Ge=R((vd,An)=>{var ze=Symbol("SemVer ANY"),qt=class e{static get ANY(){return ze}constructor(n,i){if(i=Bn(i),n instanceof e){if(n.loose===!!i.loose)return n;n=n.value}n=n.trim().split(/\s+/).join(" "),Ut("comparator",n,i),this.options=i,this.loose=!!i.loose,this.parse(n),this.semver===ze?this.value="":this.value=this.operator+this.semver.version,Ut("comp",this)}parse(n){let i=this.options.loose?Pn[Mn.COMPARATORLOOSE]:Pn[Mn.COMPARATOR],t=n.match(i);if(!t)throw new TypeError(`Invalid comparator: ${n}`);this.operator=t[1]!==void 0?t[1]:"",this.operator==="="&&(this.operator=""),t[2]?this.semver=new Rn(t[2],this.options.loose):this.semver=ze}toString(){return this.value}test(n){if(Ut("Comparator.test",n,this.options.loose),this.semver===ze||n===ze)return!0;if(typeof n=="string")try{n=new Rn(n,this.options)}catch{return!1}return Dt(n,this.operator,this.semver,this.options)}intersects(n,i){if(!(n instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Nn(n.value,i).test(this.value):n.operator===""?n.value===""?!0:new Nn(this.value,i).test(n.semver):(i=Bn(i),i.includePrerelease&&(this.value==="<0.0.0-0"||n.value==="<0.0.0-0")||!i.includePrerelease&&(this.value.startsWith("<0.0.0")||n.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&n.operator.startsWith(">")||this.operator.startsWith("<")&&n.operator.startsWith("<")||this.semver.version===n.semver.version&&this.operator.includes("=")&&n.operator.includes("=")||Dt(this.semver,"<",n.semver,i)&&this.operator.startsWith(">")&&n.operator.startsWith("<")||Dt(this.semver,">",n.semver,i)&&this.operator.startsWith("<")&&n.operator.startsWith(">")))}};An.exports=qt;var Bn=dt(),{safeRe:Pn,t:Mn}=Oe(),Dt=Ot(),Ut=qe(),Rn=te(),Nn=ue()});var We=R((bd,On)=>{var Ja=ue(),Za=(e,n,i)=>{try{n=new Ja(n,i)}catch{return!1}return n.test(e)};On.exports=Za});var jn=R((xd,Ln)=>{var es=ue(),ts=(e,n)=>new es(e,n).set.map(i=>i.map(t=>t.value).join(" ").trim().split(" "));Ln.exports=ts});var Dn=R((Cd,Fn)=>{var is=te(),ns=ue(),rs=(e,n,i)=>{let t=null,r=null,o=null;try{o=new ns(n,i)}catch{return null}return e.forEach(p=>{o.test(p)&&(!t||r.compare(p)===-1)&&(t=p,r=new is(t,i))}),t};Fn.exports=rs});var qn=R((yd,Un)=>{var os=te(),as=ue(),ss=(e,n,i)=>{let t=null,r=null,o=null;try{o=new as(n,i)}catch{return null}return e.forEach(p=>{o.test(p)&&(!t||r.compare(p)===1)&&(t=p,r=new os(t,i))}),t};Un.exports=ss});var zn=R((Id,Gn)=>{var Ht=te(),ls=ue(),Hn=He(),cs=(e,n)=>{e=new ls(e,n);let i=new Ht("0.0.0");if(e.test(i)||(i=new Ht("0.0.0-0"),e.test(i)))return i;i=null;for(let t=0;t<e.set.length;++t){let r=e.set[t],o=null;r.forEach(p=>{let h=new Ht(p.semver.version);switch(p.operator){case">":h.prerelease.length===0?h.patch++:h.prerelease.push(0),h.raw=h.format();case"":case">=":(!o||Hn(h,o))&&(o=h);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${p.operator}`)}}),o&&(!i||Hn(i,o))&&(i=o)}return i&&e.test(i)?i:null};Gn.exports=cs});var Xn=R((wd,Wn)=>{var ps=ue(),ds=(e,n)=>{try{return new ps(e,n).range||"*"}catch{return null}};Wn.exports=ds});var xt=R(($d,Jn)=>{var ms=te(),Qn=Ge(),{ANY:us}=Qn,gs=ue(),fs=We(),Yn=He(),Kn=ft(),hs=_t(),_s=ht(),vs=(e,n,i,t)=>{e=new ms(e,t),n=new gs(n,t);let r,o,p,h,b;switch(i){case">":r=Yn,o=hs,p=Kn,h=">",b=">=";break;case"<":r=Kn,o=_s,p=Yn,h="<",b="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fs(e,n,t))return!1;for(let I=0;I<n.set.length;++I){let B=n.set[I],P=null,Y=null;if(B.forEach(M=>{M.semver===us&&(M=new Qn(">=0.0.0")),P=P||M,Y=Y||M,r(M.semver,P.semver,t)?P=M:p(M.semver,Y.semver,t)&&(Y=M)}),P.operator===h||P.operator===b||(!Y.operator||Y.operator===h)&&o(e,Y.semver))return!1;if(Y.operator===b&&p(e,Y.semver))return!1}return!0};Jn.exports=vs});var er=R((Sd,Zn)=>{var bs=xt(),xs=(e,n,i)=>bs(e,n,">",i);Zn.exports=xs});var ir=R((Ed,tr)=>{var Cs=xt(),ys=(e,n,i)=>Cs(e,n,"<",i);tr.exports=ys});var or=R((Td,rr)=>{var nr=ue(),Is=(e,n,i)=>(e=new nr(e,i),n=new nr(n,i),e.intersects(n,i));rr.exports=Is});var sr=R((kd,ar)=>{var ws=We(),$s=me();ar.exports=(e,n,i)=>{let t=[],r=null,o=null,p=e.sort((B,P)=>$s(B,P,i));for(let B of p)ws(B,n,i)?(o=B,r||(r=B)):(o&&t.push([r,o]),o=null,r=null);r&&t.push([r,null]);let h=[];for(let[B,P]of t)B===P?h.push(B):!P&&B===p[0]?h.push("*"):P?B===p[0]?h.push(`<=${P}`):h.push(`${B} - ${P}`):h.push(`>=${B}`);let b=h.join(" || "),I=typeof n.raw=="string"?n.raw:String(n);return b.length<I.length?b:n}});var ur=R((Vd,mr)=>{var lr=ue(),zt=Ge(),{ANY:Gt}=zt,Xe=We(),Wt=me(),Ss=(e,n,i={})=>{if(e===n)return!0;e=new lr(e,i),n=new lr(n,i);let t=!1;e:for(let r of e.set){for(let o of n.set){let p=Ts(r,o,i);if(t=t||p!==null,p)continue e}if(t)return!1}return!0},Es=[new zt(">=0.0.0-0")],cr=[new zt(">=0.0.0")],Ts=(e,n,i)=>{if(e===n)return!0;if(e.length===1&&e[0].semver===Gt){if(n.length===1&&n[0].semver===Gt)return!0;i.includePrerelease?e=Es:e=cr}if(n.length===1&&n[0].semver===Gt){if(i.includePrerelease)return!0;n=cr}let t=new Set,r,o;for(let M of e)M.operator===">"||M.operator===">="?r=pr(r,M,i):M.operator==="<"||M.operator==="<="?o=dr(o,M,i):t.add(M.semver);if(t.size>1)return null;let p;if(r&&o){if(p=Wt(r.semver,o.semver,i),p>0)return null;if(p===0&&(r.operator!==">="||o.operator!=="<="))return null}for(let M of t){if(r&&!Xe(M,String(r),i)||o&&!Xe(M,String(o),i))return null;for(let Dr of n)if(!Xe(M,String(Dr),i))return!1;return!0}let h,b,I,B,P=o&&!i.includePrerelease&&o.semver.prerelease.length?o.semver:!1,Y=r&&!i.includePrerelease&&r.semver.prerelease.length?r.semver:!1;P&&P.prerelease.length===1&&o.operator==="<"&&P.prerelease[0]===0&&(P=!1);for(let M of n){if(B=B||M.operator===">"||M.operator===">=",I=I||M.operator==="<"||M.operator==="<=",r){if(Y&&M.semver.prerelease&&M.semver.prerelease.length&&M.semver.major===Y.major&&M.semver.minor===Y.minor&&M.semver.patch===Y.patch&&(Y=!1),M.operator===">"||M.operator===">="){if(h=pr(r,M,i),h===M&&h!==r)return!1}else if(r.operator===">="&&!Xe(r.semver,String(M),i))return!1}if(o){if(P&&M.semver.prerelease&&M.semver.prerelease.length&&M.semver.major===P.major&&M.semver.minor===P.minor&&M.semver.patch===P.patch&&(P=!1),M.operator==="<"||M.operator==="<="){if(b=dr(o,M,i),b===M&&b!==o)return!1}else if(o.operator==="<="&&!Xe(o.semver,String(M),i))return!1}if(!M.operator&&(o||r)&&p!==0)return!1}return!(r&&I&&!o&&p!==0||o&&B&&!r&&p!==0||Y||P)},pr=(e,n,i)=>{if(!e)return n;let t=Wt(e.semver,n.semver,i);return t>0?e:t<0||n.operator===">"&&e.operator===">="?n:e},dr=(e,n,i)=>{if(!e)return n;let t=Wt(e.semver,n.semver,i);return t<0?e:t>0||n.operator==="<"&&e.operator==="<="?n:e};mr.exports=Ss});var Ct=R((Bd,hr)=>{var Xt=Oe(),gr=Ue(),ks=te(),fr=Mt(),Vs=ke(),Bs=Fi(),Ps=Ui(),Ms=Gi(),Rs=Xi(),Ns=Ki(),As=Ji(),Os=en(),Ls=nn(),js=me(),Fs=sn(),Ds=cn(),Us=gt(),qs=un(),Hs=fn(),Gs=He(),zs=ft(),Ws=Nt(),Xs=At(),Ys=ht(),Ks=_t(),Qs=Ot(),Js=wn(),Zs=Ge(),el=ue(),tl=We(),il=jn(),nl=Dn(),rl=qn(),ol=zn(),al=Xn(),sl=xt(),ll=er(),cl=ir(),pl=or(),dl=sr(),ml=ur();hr.exports={parse:Vs,valid:Bs,clean:Ps,inc:Ms,diff:Rs,major:Ns,minor:As,patch:Os,prerelease:Ls,compare:js,rcompare:Fs,compareLoose:Ds,compareBuild:Us,sort:qs,rsort:Hs,gt:Gs,lt:zs,eq:Ws,neq:Xs,gte:Ys,lte:Ks,cmp:Qs,coerce:Js,Comparator:Zs,Range:el,satisfies:tl,toComparators:il,maxSatisfying:nl,minSatisfying:rl,minVersion:ol,validRange:al,outside:sl,gtr:ll,ltr:cl,intersects:pl,simplifyRange:dl,subset:ml,SemVer:ks,re:Xt.re,src:Xt.src,tokens:Xt.t,SEMVER_SPEC_VERSION:gr.SEMVER_SPEC_VERSION,RELEASE_TYPES:gr.RELEASE_TYPES,compareIdentifiers:fr.compareIdentifiers,rcompareIdentifiers:fr.rcompareIdentifiers}});function qr(e,n){e&1&&(l(0,"div",14),v(1,"i",15),c())}function Hr(e,n){e&1&&(l(0,"div"),v(1,"i",18),l(2,"p"),m(3,"All your plugins are marked as compatible with the new version of Homebridge."),c(),l(4,"p"),m(5,"You are all set to continue below."),c()())}function Gr(e,n){e&1&&(l(0,"div"),v(1,"i",19),l(2,"p"),m(3,"Some of your plugins are not explicitly marked as compatible with the new version of Homebridge."),c(),l(4,"p"),m(5," This does "),l(6,"span",20),m(7,"not"),c(),m(8," necessarily mean that they won't work. We just can't guarantee that they will. "),c(),l(9,"p"),m(10," For more information about this update, please see the "),l(11,"a",21),m(12,"wiki page"),c(),m(13,". "),c(),l(14,"p"),m(15,"To ignore this warning and continue with the update, click continue below."),c()())}function zr(e,n){e&1&&(l(0,"span"),v(1,"i",24),c())}function Wr(e,n){e&1&&(l(0,"span"),v(1,"i",25),c())}function Xr(e,n){if(e&1&&(l(0,"li",22)(1,"span",23),m(2),c(),x(3,zr,2,0,"span",7)(4,Wr,2,0,"span",7),c()),e&2){let i=n.$implicit;a(2),T(i.name),a(),d("ngIf",i.hb2Ready==="supported"),a(),d("ngIf",i.hb2Ready==="unknown")}}function Yr(e,n){if(e&1&&(l(0,"div"),x(1,Hr,6,0,"div",7)(2,Gr,16,0,"div",7),l(3,"ul",16),x(4,Xr,5,3,"li",17),c()()),e&2){let i=f();a(),d("ngIf",i.allPluginsSupported),a(),d("ngIf",!i.allPluginsSupported),a(2),d("ngForOf",i.installedPlugins)}}var hi=(()=>{let n=class n{constructor(t,r,o,p,h){s(this,"$activeModal");s(this,"$api");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"loading",!0);s(this,"installedPlugins",[]);s(this,"allPluginsSupported",!0);this.$activeModal=t,this.$api=r,this.$settings=o,this.$toastr=p,this.$translate=h}ngOnInit(){this.loadInstalledPlugins()}loadInstalledPlugins(){return k(this,null,function*(){this.installedPlugins=[],this.loading=!0;let t=this.$settings.env.homebridgeVersion.split(".")[0];try{let r=yield O(this.$api.get("/plugins"));this.installedPlugins=r.filter(o=>o.name!=="homebridge-config-ui-x").map(o=>{var b,I;let p=((I=(b=o.engines)==null?void 0:b.homebridge)==null?void 0:I.split("||").map(B=>B.trim()))||[],h=t==="2"?"hide":p.some(B=>B.startsWith("^2")||B.startsWith(">=2"))?"supported":"unknown";return h==="unknown"&&(this.allPluginsSupported=!1),Ke(Ye({},o),{hb2Ready:h})}),this.loading=!1}catch(r){console.error(r),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],decls:22,vars:15,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body","w-100","text-center"],["class","w-100 text-center primary-text",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[1,"w-100","text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"list-group","list-group-box","mt-4"],["class","list-group-item d-flex flex-row flex-wrap justify-content-between",4,"ngFor","ngForOf"],[1,"fas","fa-fw","fa-check-circle","primary-text","mb-4",2,"font-size","75px"],[1,"fas","fa-fw","fa-info-circle","primary-text","mb-4",2,"font-size","75px"],[1,"font-weight-bold"],["href","https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0","target","_blank"],[1,"list-group-item","d-flex","flex-row","flex-wrap","justify-content-between"],[1,"text-monospace"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.0",1,"fas","fa-check-circle","green-text","fa-xl","ml-2"],["aria-label","The developer has not specifically marked this plugin as compatible with Homebridge v2.0, but it may still work.",1,"fas","fa-question-circle","orange-text","fa-xl","ml-2"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3,"Homebridge v2 Update"),c(),l(4,"button",3),u(5,"translate"),y("click",function(){return o.$activeModal.close("Dismiss")}),l(6,"span",4),m(7,"\xD7"),c()()(),l(8,"div",5),x(9,qr,2,0,"div",6)(10,Yr,5,3,"div",7),c(),l(11,"div",8)(12,"div",9)(13,"button",10),u(14,"translate"),y("click",function(){return o.$activeModal.close("Dismiss")}),m(15),u(16,"translate"),c()(),v(17,"div",11),l(18,"div",12)(19,"button",13),y("click",function(){return o.$activeModal.close("update")}),m(20),u(21,"translate"),c()()()()),r&2&&(a(4),A("aria-label",g(5,7,"form.button_close")),a(5),d("ngIf",o.loading),a(),d("ngIf",!o.loading),a(3),A("aria-label",g(14,9,"form.button_close")),a(2),C(" ",g(16,11,"form.button_close")," "),a(4),d("disabled",o.loading),a(),C(" ",g(21,13,"plugins.node_update.continue")," "))},dependencies:[de,X,U],encapsulation:2}));let e=n;return e})();var _i=pe(De(),1);var Kr=["pluginlogoutput"],vi=(()=>{let n=class n{constructor(t,r,o,p,h,b){s(this,"$activeModal");s(this,"$api");s(this,"$log");s(this,"$modal");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"termTarget");s(this,"resizeEvent",new Ee);s(this,"pluginAlias");this.$activeModal=t,this.$api=r,this.$log=o,this.$modal=p,this.$toastr=h,this.$translate=b}onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){this.getPluginLog()}getPluginLog(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{var r;this.pluginAlias=this.plugin.name==="homebridge-config-ui-x"?"Homebridge UI":((r=t[0])==null?void 0:r.name)||this.plugin.name,this.$log.startTerminal(this.termTarget,{},this.resizeEvent,this.pluginAlias)},error:t=>{console.error(t),this.$toastr.error(t.error.message||t.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}downloadLogFile(){let t=this.$modal.open(gi,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-fw fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download?colour=yes",{observe:"response",responseType:"text"}).subscribe({next:r=>{if(!r.body)return;let o=r.body.split(`
|
|
2
|
-
`),p="",h=!1;o.forEach(b=>{if(b){if(h)if(b.match(/36m\[.*?\]/))h=!1;else{p+=`${b.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
|
|
3
|
-
`;return}b.includes(`36m[${this.pluginAlias}]`)&&(p+=`${b.replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"")}\r
|
|
4
|
-
`,h=!0)}}),(0,_i.saveAs)(new Blob([p],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`)},error:r=>k(this,null,function*(){let o;try{o=JSON.parse(yield r.error.text()).message}catch(p){console.error(p)}this.$toastr.error(o||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}ngOnDestroy(){this.$log.destroyTerminal()}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(ui),_(J),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],viewQuery:function(r,o){if(r&1&&Ze(Kr,7),r&2){let p;et(p=tt())&&(o.termTarget=p.first)}},hostBindings:function(r,o){r&1&&y("resize",function(h){return o.onWindowResize(h)},!1,ti)},inputs:{plugin:"plugin"},decls:22,vars:13,consts:[["pluginlogoutput",""],[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[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-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],[1,"btn","btn-primary",3,"click"]],template:function(r,o){if(r&1){let p=V();l(0,"div",1)(1,"div",2)(2,"h5",3),m(3),c(),l(4,"button",4),u(5,"translate"),y("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),l(6,"span",5),m(7,"\xD7"),c()()(),l(8,"div",6),v(9,"div",7,0),c(),l(11,"div",8)(12,"div",9)(13,"button",10),u(14,"translate"),y("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),m(15),u(16,"translate"),c()(),v(17,"div",11),l(18,"div",12)(19,"button",13),y("click",function(){return w(p),$(o.downloadLogFile())}),m(20),u(21,"translate"),c()()()()}r&2&&(a(3),C("Logs: ",o.plugin.displayName||o.plugin.name,""),a(),A("aria-label",g(5,5,"form.button_close")),a(9),A("aria-label",g(14,7,"form.button_close")),a(2),C(" ",g(16,9,"form.button_close")," "),a(5),T(g(21,11,"form.button_download")))},dependencies:[U],encapsulation:2}));let e=n;return e})();var Ii=pe(De(),1);var wi=pe(di(),1),$i=pe(mi(),1);var Qr=(e,n)=>({pluginName:e,targetVersion:n}),bi=()=>["homebridge","homebridge-config-ui-x"];function Jr(e,n){e&1&&(l(0,"h3",14),m(1),u(2,"translate"),c()),e&2&&(a(),C(" ",g(2,1,"platform.version.service_restart_required")," "))}function Zr(e,n){e&1&&(l(0,"p",12),m(1),u(2,"translate"),c()),e&2&&(a(),C(" ",g(2,1,"restart.homebridge")," "))}function eo(e,n){e&1&&(l(0,"p",12),m(1),u(2,"translate"),c()),e&2&&(a(),C(" ",g(2,1,"restart.child_bridges")," "))}function to(e,n){if(e&1&&(l(0,"div"),x(1,Zr,3,3,"p",15)(2,eo,3,3,"p",15),c()),e&2){let i=f(3);a(),d("ngIf",_e(2,bi).includes(i.pluginName)||i.childBridges.length===0),a(),d("ngIf",!_e(3,bi).includes(i.pluginName)&&i.childBridges.length>0)}}function io(e,n){if(e&1&&(l(0,"div",16),v(1,"markdown",17),c()),e&2){let i=f(3);a(),d("data",i.changeLog)}}function no(e,n){if(e&1&&(l(0,"div"),x(1,Jr,3,3,"h3",11),l(2,"p",12),m(3),u(4,"translate"),c(),x(5,to,3,4,"div",10)(6,io,2,1,"div",13),c()),e&2){let i=f(2);a(),d("ngIf",!i.isDisabled),a(2),C(" ",ae(4,4,"plugins.manage.thanks_for_updating",it(7,Qr,i.pluginName,i.targetVersion))," "),a(2),d("ngIf",!i.isDisabled),a(),d("ngIf",i.changeLog)}}function ro(e,n){if(e&1&&(l(0,"div",9),x(1,no,7,10,"div",10),c()),e&2){let i=f();a(),d("ngIf",i.justUpdatedPlugin)}}function oo(e,n){if(e&1&&(l(0,"div")(1,"p"),m(2),u(3,"translate"),c(),l(4,"pre"),m(5),c()()),e&2){let i=f(2);a(2),T(g(3,3,"plugins.manage.manual_update_command")),a(3),K(`hb-service stop
|
|
5
|
-
npm install -g `,i.pluginName,"@",i.targetVersion,`
|
|
6
|
-
hb-service start`)}}function ao(e,n){if(e&1&&(l(0,"div",18)(1,"h4",19),m(2),u(3,"translate"),c(),l(4,"p"),m(5),u(6,"translate"),c(),x(7,oo,6,5,"div",10),c()),e&2){let i=f();a(2),T(g(3,3,"plugins.manage.manual_update_required")),a(3),T(g(6,5,"plugins.manage.online_updates")),a(2),d("ngIf",i.$settings.env.serviceMode)}}function so(e,n){if(e&1&&(l(0,"span"),m(1),c()),e&2){let i=f(3);a(),C("v",i.installedVersion," \u2192 ")}}function lo(e,n){if(e&1&&(l(0,"span"),m(1),c()),e&2){let i=f(3);a(),T(i.release.name)}}function co(e,n){if(e&1&&(l(0,"span"),m(1),c()),e&2){let i=f(3);a(),C("v",i.latestVersion,"")}}function po(e,n){if(e&1&&(l(0,"div",21)(1,"h5",22),x(2,so,2,1,"span",10)(3,lo,2,1,"span",10)(4,co,2,1,"span",10),c()()),e&2){let i=f(2);a(2),d("ngIf",i.installedVersion),a(),d("ngIf",i.release.name),a(),d("ngIf",!i.release.name)}}function mo(e,n){if(e&1&&(l(0,"div",9),x(1,po,5,3,"div",20),l(2,"h5"),m(3),u(4,"translate"),c(),l(5,"div",16),v(6,"markdown",17),c()()),e&2){let i=f();a(),d("ngIf",i.release.name||i.latestVersion),a(2),T(g(4,3,"plugins.manage.release_notes")),a(3),d("data",i.release.changelog)}}function uo(e,n){if(e&1){let i=V();l(0,"button",30),u(1,"translate"),y("click",function(){w(i);let r=f(2);return $(r.$activeModal.dismiss("Dismiss"))}),m(2),u(3,"translate"),c()}e&2&&(A("aria-label",g(1,2,"form.button_close")),a(2),C(" ",g(3,4,"form.button_close")," "))}function go(e,n){if(e&1){let i=V();l(0,"button",30),u(1,"translate"),y("click",function(){w(i);let r=f(2);return $(r.$activeModal.dismiss("Dismiss"))}),m(2),u(3,"translate"),c()}e&2&&(A("aria-label",g(1,2,"form.button_close")),a(2),C(" ",g(3,4,"form.button_close")," "))}function fo(e,n){if(e&1){let i=V();l(0,"button",31),y("click",function(){w(i);let r=f(2);return $(r.update())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"plugins.button_update")," "))}function ho(e,n){if(e&1){let i=V();l(0,"button",31),y("click",function(){w(i);let r=f(2);return $(!["homebridge","homebridge-config-ui-x"].includes(r.pluginName)&&r.childBridges.length>0?r.onRestartChildBridgeClick():r.onRestartHomebridgeClick())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"menu.tooltip_restart")," "))}function _o(e,n){if(e&1){let i=V();l(0,"button",32),y("click",function(){w(i);let r=f(2);return $(r.downloadLogFile())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"form.button_download")," "))}function vo(e,n){if(e&1&&(l(0,"div",23)(1,"div",24),x(2,uo,4,6,"button",25),c(),l(3,"div",26),x(4,go,4,6,"button",25),c(),l(5,"div",27),x(6,fo,3,3,"button",28)(7,ho,3,3,"button",28)(8,_o,3,3,"button",29),c()()),e&2){let i=f();a(2),d("ngIf",!i.justUpdatedPlugin||i.justUpdatedPlugin&&(!i.isDisabled||i.actionFailed)),a(2),d("ngIf",i.justUpdatedPlugin&&i.isDisabled&&!i.actionFailed),a(2),d("ngIf",i.onlineUpdateOk&&i.showReleaseNotes),a(),d("ngIf",i.justUpdatedPlugin&&!i.isDisabled),a(),d("ngIf",i.actionFailed)}}var Ae=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,B){s(this,"$activeModal");s(this,"$api");s(this,"$modal");s(this,"$router");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"$ws");s(this,"pluginName");s(this,"targetVersion","latest");s(this,"latestVersion");s(this,"installedVersion");s(this,"isDisabled");s(this,"action");s(this,"actionComplete",!1);s(this,"actionFailed",!1);s(this,"showReleaseNotes",!1);s(this,"justUpdatedPlugin",!1);s(this,"updateToBeta",!1);s(this,"changeLog");s(this,"childBridges",[]);s(this,"release");s(this,"presentTenseVerb");s(this,"pastTenseVerb");s(this,"onlineUpdateOk");s(this,"io");s(this,"toastSuccess");s(this,"term",new wi.Terminal);s(this,"termTarget");s(this,"fitAddon",new $i.FitAddon);s(this,"errorLog","");this.$activeModal=t,this.$api=r,this.$modal=o,this.$router=p,this.$settings=h,this.$toastr=b,this.$translate=I,this.$ws=B,this.term.loadAddon(this.fitAddon)}ngOnInit(){switch(this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-log-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",t=>{this.term.write(t);let r=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();r&&(this.errorLog+=`${r}\r
|
|
7
|
-
`)}),this.toastSuccess=this.$translate.instant("toast.title_success"),this.onlineUpdateOk=!(["homebridge","homebridge-config-ui-x"].includes(this.pluginName)&&this.$settings.env.platform==="win32"),this.action){case"Install":this.install(),this.presentTenseVerb=this.$translate.instant("plugins.manage.install"),this.pastTenseVerb=this.$translate.instant("plugins.manage.installed");break;case"Uninstall":this.uninstall(),this.presentTenseVerb=this.$translate.instant("plugins.manage.uninstall"),this.pastTenseVerb=this.$translate.instant("plugins.manage.uninstalled");break;case"Update":switch(this.targetVersion){case"latest":this.updateToBeta=!1,this.getReleaseNotes();break;case"alpha":case"beta":case"test":this.updateToBeta=!0,this.getReleaseNotes();break;default:this.update()}this.presentTenseVerb=this.$translate.instant("plugins.manage.update"),this.pastTenseVerb=this.$translate.instant("plugins.manage.updated");break}}install(){if(this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("install",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(`${this.pastTenseVerb} ${this.pluginName}`,this.toastSuccess),window.location.href=`/plugins?installed=${this.pluginName}`},error:t=>{this.actionFailed=!0,console.error(t),this.$router.navigate(["/plugins"]),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}}uninstall(){this.io.request("uninstall",{name:this.pluginName,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$router.navigate(["/plugins"]),this.$modal.open(ge,{size:"lg",backdrop:"static"})},error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}update(){if(this.showReleaseNotes=!1,!!this.onlineUpdateOk){if(this.pluginName==="homebridge")return this.upgradeHomebridge();this.io.request("update",{name:this.pluginName,version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>k(this,null,function*(){try{yield Promise.all([this.getChangeLog(),this.getChildBridges()])}catch(t){console.error(t)}this.actionComplete=!0,this.justUpdatedPlugin=!0,this.$router.navigate([this.pluginName==="homebridge-config-ui-x"?"/":"/plugins"])}),error:t=>{this.actionFailed=!0,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}}upgradeHomebridge(){return k(this,null,function*(){let t="update";Number(this.installedVersion.split(".")[0])<2&&["2","alpha","beta"].includes(this.targetVersion.split(".")[0])&&(t=yield this.$modal.open(hi,{size:"lg",backdrop:"static"}).result),t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close(),this.$modal.open(ge,{size:"lg",backdrop:"static"})},error:r=>{this.actionFailed=!0,console.error(r),this.$toastr.error(r.message,this.$translate.instant("toast.title_error")),this.$activeModal.close()}}):this.$activeModal.close()})}getChangeLog(){return k(this,null,function*(){let t=yield O(this.$api.get(`/plugins/changelog/${encodeURIComponent(this.pluginName)}`));this.changeLog=t.changelog})}getChildBridges(){return k(this,null,function*(){(yield O(this.$api.get("/status/homebridge/child-bridges"))).forEach(r=>{this.pluginName===r.plugin&&this.childBridges.push(r)})})}getReleaseNotes(){this.$api.get(`/plugins/release/${encodeURIComponent(this.pluginName)}`).subscribe({next:t=>{this.showReleaseNotes=!0,this.release=t},error:()=>{this.onlineUpdateOk&&this.update()}})}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}onRestartChildBridgeClick(){return k(this,null,function*(){try{for(let r of this.childBridges)yield O(this.$api.put(`/server/restart/${r.username}`,{}));let t=this.$modal.open(vi,{size:"xl",backdrop:"static"});t.componentInstance.plugin={name:this.pluginName}}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.manage.child_bridge_restart_failed"),this.$translate.instant("toast.title_error"))}finally{this.$activeModal.close()}})}downloadLogFile(){let t=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,Ii.saveAs)(t,`${this.pluginName}-error.log`)}ngOnDestroy(){this.io.end()}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(J),_(Ce),_(Q),_(D),_(F),_(Ve))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{pluginName:"pluginName",targetVersion:"targetVersion",latestVersion:"latestVersion",installedVersion:"installedVersion",isDisabled:"isDisabled",action:"action"},decls:13,vars:10,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],["id","plugin-log-output",1,"modal-body",3,"hidden"],["class","modal-body plugin-modal-body",4,"ngIf"],["class","modal-body",4,"ngIf"],["class","modal-footer justify-content-between",4,"ngIf"],[1,"modal-body","plugin-modal-body"],[4,"ngIf"],["class","text-center primary-text",4,"ngIf"],[1,"text-center","grey-text"],["class","alert pt-3 px-3 pb-0 mb-0",4,"ngIf"],[1,"text-center","primary-text"],["class","text-center grey-text",4,"ngIf"],[1,"alert","pt-3","px-3","pb-0","mb-0"],[1,"plugin-md",3,"data"],[1,"modal-body"],[1,"primary-text","text-center"],["class","alert text-center",4,"ngIf"],[1,"alert","text-center"],[1,"mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"click",4,"ngIf"],[1,"text-center"],[1,"text-right"],["type","button","class","btn btn-primary",3,"click",4,"ngIf"],["class","btn btn-primary",3,"click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button",1,"btn","btn-primary",3,"click"],[1,"btn","btn-primary",3,"click"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),c(),l(4,"button",3),u(5,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(6,"span",4),m(7,"\xD7"),c()()(),v(8,"div",5),x(9,ro,2,1,"div",6)(10,ao,8,7,"div",7)(11,mo,7,5,"div",6)(12,vo,9,5,"div",8),c()),r&2&&(a(3),K("",o.presentTenseVerb,": ",o.pluginName,""),a(),A("aria-label",g(5,8,"form.button_close")),a(4),d("hidden",!o.onlineUpdateOk||o.actionComplete||o.showReleaseNotes),a(),d("ngIf",o.actionComplete),a(),d("ngIf",!o.onlineUpdateOk),a(),d("ngIf",o.showReleaseNotes&&!o.actionComplete),a(),d("ngIf",!o.onlineUpdateOk||o.actionComplete||o.showReleaseNotes||o.actionFailed))},dependencies:[X,Me,Re,U],styles:[".plugin-modal-body[_ngcontent-%COMP%]{max-height:60vh;overflow-y:auto;overflow-x:hidden} .plugin-md{text-align:left;font-size:.95rem;word-wrap:break-word} .plugin-md img{max-width:100%} .plugin-md h1{font-size:1.5rem;font-weight:400} .plugin-md h2{font-size:1.25rem;font-weight:400} .plugin-md h3{font-size:1rem;font-weight:400} .plugin-md h4{font-size:.75rem;font-weight:400} .plugin-md pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}"]}));let e=n;return e})();var _r=pe(Ct(),1);function ul(e,n){e&1&&(l(0,"div",13),v(1,"i",14),c())}function gl(e,n){e&1&&v(0,"i",27)}function fl(e,n){e&1&&v(0,"i",28)}function hl(e,n){if(e&1&&(l(0,"p",29),m(1),u(2,"translate"),c()),e&2){let i=f(2);a(),K(" ",g(2,2,"plugins.status_installed"),": v",i.plugin.installedVersion," ")}}function _l(e,n){if(e&1){let i=V();l(0,"button",32),y("click",function(){w(i);let r=f().$implicit,o=f(2);return $(o.doInstall(r.version))}),v(1,"i",33),c()}}function vl(e,n){e&1&&(l(0,"button",34),v(1,"i",35),c())}function bl(e,n){if(e&1&&(l(0,"li",21)(1,"span",9),m(2),v(3,"br"),l(4,"small",30),m(5),c()(),x(6,_l,2,0,"button",31)(7,vl,2,0,"button",26),c()),e&2){let i=n.$implicit,t=f(2);a(2),C(" ",i.tag," "),a(3),C("v",i.version,""),a(),d("ngIf",t.plugin.installedVersion!==i.version),a(),d("ngIf",t.plugin.installedVersion===i.version)}}function xl(e,n){if(e&1&&(l(0,"option",36),m(1),c()),e&2){let i=n.$implicit;d("value",i.version),a(),C("v",i.version,"")}}function Cl(e,n){if(e&1){let i=V();l(0,"button",37),y("click",function(){w(i);let r=f(2);return $(r.doInstall(r.versionSelect))}),v(1,"i",33),c()}if(e&2){let i=f(2);d("disabled",!i.versionSelect)}}function yl(e,n){e&1&&(l(0,"button",34),v(1,"i",35),c())}function Il(e,n){if(e&1){let i=V();l(0,"div",15),x(1,gl,1,0,"i",16)(2,fl,1,0,"i",17)(3,hl,3,4,"p",18),l(4,"p"),m(5),u(6,"translate"),c(),l(7,"ul",19),x(8,bl,8,4,"li",20),l(9,"li",21)(10,"div",22),m(11),u(12,"translate"),v(13,"br"),l(14,"select",23),W("ngModelChange",function(r){w(i);let o=f();return z(o.versionSelect,r)||(o.versionSelect=r),$(r)}),x(15,xl,2,2,"option",24),c()(),x(16,Cl,2,1,"button",25)(17,yl,2,0,"button",26),c()()()}if(e&2){let i=f();a(),d("ngIf",i.plugin.installedVersion),a(),d("ngIf",!i.plugin.installedVersion),a(),d("ngIf",i.plugin.installedVersion),a(2),C("",g(6,10,"plugins.manage.select_version"),":"),a(3),d("ngForOf",i.versionsWithTags),a(3),C(" ",g(12,12,"plugins.manage.all_versions")," "),a(3),G("ngModel",i.versionSelect),a(),d("ngForOf",i.versions),a(),d("ngIf",i.versionSelect!==i.plugin.installedVersion),a(),d("ngIf",i.versionSelect&&i.versionSelect===i.plugin.installedVersion)}}var vr=(()=>{let n=class n{constructor(t,r,o,p){s(this,"$activeModal");s(this,"$api");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"loading",!0);s(this,"versions",[]);s(this,"versionsWithTags",[]);s(this,"versionSelect");this.$activeModal=t,this.$api=r,this.$toastr=o,this.$translate=p}ngOnInit(){this.versionSelect=this.plugin.installedVersion||this.plugin.latestVersion,this.lookupVersions()}lookupVersions(){this.$api.get(`/plugins/lookup/${encodeURIComponent(this.plugin.name)}/versions`).subscribe({next:t=>{let r=new Set;for(let[o,p]of Object.entries(t.versions)){this.versions.push({version:o,engines:p.engines||null});let h=Object.keys(t.tags).find(b=>t.tags[b]===o);h&&(this.versionsWithTags.push({version:o,tag:h}),r.add(o))}this.versions.sort((o,p)=>(0,_r.rcompare)(o.version,p.version)),this.versionsWithTags.sort((o,p)=>{let h=["latest","next","beta","alpha"],b=h.includes(o.tag)?h.indexOf(o.tag):999,I=h.includes(p.tag)?h.indexOf(p.tag):999;return b-I}),!this.versions.find(o=>o.version===this.versionSelect)&&t.tags.latest&&(this.versionSelect=t.tags.latest),this.loading=!1},error:t=>{console.error(t),this.$toastr.error(t.error.message||t.message,this.$translate.instant("toast.title_error")),this.$activeModal.dismiss()}})}doInstall(t){this.$activeModal.close({name:this.plugin.name,version:t,engines:this.versions.find(r=>r.version===t).engines,action:this.plugin.installedVersion?"alternate":"install"})}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:20,vars:15,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body","d-flex","flex-row","flex-grow-1","w-100"],["class","w-100 text-center primary-text",4,"ngIf"],["class","w-100 text-center",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-right"],[1,"w-100","text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"w-100","text-center"],["class","fas fa-fw fa-code-compare primary-text mb-4","style","font-size: 75px",4,"ngIf"],["class","far fa-fw fa-arrow-alt-circle-down primary-text mb-4","style","font-size: 75px",4,"ngIf"],["class","font-weight-bold",4,"ngIf"],[1,"list-group","list-group-box","mt-2"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"text-left",2,"min-width","50%"],[1,"custom-select","w-100",2,"font-size","0.875rem",3,"ngModelChange","ngModel"],[3,"value",4,"ngFor","ngForOf"],["class","btn btn-primary ml-3",3,"disabled","click",4,"ngIf"],["class","btn btn-primary ml-3","disabled","",4,"ngIf"],[1,"fas","fa-fw","fa-code-compare","primary-text","mb-4",2,"font-size","75px"],[1,"far","fa-fw","fa-arrow-alt-circle-down","primary-text","mb-4",2,"font-size","75px"],[1,"font-weight-bold"],[1,"grey-text"],["class","btn btn-primary ml-3",3,"click",4,"ngIf"],[1,"btn","btn-primary","ml-3",3,"click"],[1,"fas","fa-fw","fa-arrow-alt-circle-down"],["disabled","",1,"btn","btn-primary","ml-3"],[1,"fas","fa-fw","fa-check-circle"],[3,"value"],[1,"btn","btn-primary","ml-3",3,"click","disabled"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5),x(10,ul,2,0,"div",6)(11,Il,18,14,"div",7),c(),l(12,"div",8),v(13,"div",9),l(14,"div",10)(15,"button",11),u(16,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(17),u(18,"translate"),c()(),v(19,"div",12),c()()),r&2&&(a(3),K("",g(4,7,"plugins.manage.install"),": ",o.plugin.displayName||o.plugin.name,""),a(2),A("aria-label",g(6,9,"form.button_close")),a(5),d("ngIf",o.loading),a(),d("ngIf",!o.loading),a(4),A("aria-label",g(16,11,"form.button_close")),a(2),C(" ",g(18,13,"form.button_close")," "))},dependencies:[de,X,si,li,ai,Ie,we,U],encapsulation:2}));let e=n;return e})();var Fr=pe(Ur(),1);function wl(e,n){if(e&1){let i=V();l(0,"button",15),u(1,"translate"),y("click",function(){w(i);let r=f();return $(r.$activeModal.close("Dismiss"))}),l(2,"span",16),m(3,"\xD7"),c()()}if(e&2){let i=f();d("disabled",i.saveInProgress),A("aria-label",g(1,2,"form.button_close"))}}function $l(e,n){if(e&1&&(l(0,"span"),m(1),c()),e&2){let i=f().$implicit;a(),C(" - ",i._bridge.name,"")}}function Sl(e,n){e&1&&(l(0,"div")(1,"ngb-alert",26),m(2),u(3,"translate"),v(4,"br"),m(5),u(6,"translate"),c()()),e&2&&(a(),d("dismissible",!1),a(),C(" ",g(3,3,"child_bridge.restart_homebridge")," "),a(3),C("",g(6,5,"child_bridge.return_to_pair")," "))}function El(e,n){if(e&1&&(l(0,"div",29),v(1,"app-qrcode",30),l(2,"p",31),m(3),c(),l(4,"p",32),m(5),u(6,"translate"),c()()),e&2){let i=f(3).$implicit,t=f(3);a(),d("data",t.deviceInfo[i._bridge==null?null:i._bridge.username]._setupCode),a(2),T(t.deviceInfo[i._bridge==null?null:i._bridge.username].pincode),a(2),C(" ",g(6,3,"status.code_scan")," ")}}function Tl(e,n){e&1&&(l(0,"div")(1,"div",13),v(2,"i",33),l(3,"p"),m(4),u(5,"translate"),c()()()),e&2&&(a(4),T(g(5,1,"child_bridge.bridge_paired")))}function kl(e,n){if(e&1){let i=V();l(0,"div",40)(1,"span"),m(2),u(3,"translate"),l(4,"code"),m(5,"-D"),c()(),l(6,"input",49),u(7,"translate"),W("ngModelChange",function(r){w(i);let o=f(5).$implicit;return z(o._bridge.debugModeEnabled,r)||(o._bridge.debugModeEnabled=r),$(r)}),c(),v(8,"label",50),c()}if(e&2){let i=f(5),t=i.$implicit,r=i.index;a(2),C("",g(3,5,"child_bridge.config.debug")," "),a(4),d("id","homebridgeDebugMode_"+r),G("ngModel",t._bridge.debugModeEnabled),A("aria-label",g(7,7,"settings.startup.debug")),a(2),d("for","homebridgeDebugMode_"+r)}}function Vl(e,n){if(e&1){let i=V();l(0,"div",38)(1,"div",39),m(2),u(3,"translate"),c(),l(4,"div",40)(5,"span",41),m(6),u(7,"translate"),c(),l(8,"div",42)(9,"input",43),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.name,r)||(o._bridge.name=r),$(r)}),c()()(),l(10,"div",40)(11,"span",41),m(12),u(13,"translate"),c(),l(14,"div",42)(15,"input",43),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.manufacturer,r)||(o._bridge.manufacturer=r),$(r)}),c()()(),l(16,"div",40)(17,"span",41),m(18),u(19,"translate"),c(),l(20,"div",42)(21,"input",43),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.model,r)||(o._bridge.model=r),$(r)}),c()()(),l(22,"div",40)(23,"span",41),m(24),u(25,"translate"),c(),l(26,"div",42)(27,"input",43),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.firmwareRevision,r)||(o._bridge.firmwareRevision=r),$(r)}),c()()(),x(28,kl,9,9,"div",44),l(29,"div",40)(30,"span",41)(31,"span",45),m(32,"DEBUG"),c(),v(33,"br"),l(34,"small",46),m(35),u(36,"translate"),c()(),l(37,"div",42)(38,"input",47),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.env.DEBUG,r)||(o._bridge.env.DEBUG=r),$(r)}),c()()(),l(39,"div",40)(40,"span",41)(41,"span",45),m(42,"NODE_OPTIONS"),c(),v(43,"br"),l(44,"small",46),m(45),u(46,"translate"),c()(),l(47,"div",42)(48,"input",48),W("ngModelChange",function(r){w(i);let o=f(4).$implicit;return z(o._bridge.env.NODE_OPTIONS,r)||(o._bridge.env.NODE_OPTIONS=r),$(r)}),c()()()()}if(e&2){let i=f(4),t=i.$implicit,r=i.index,o=f(3);d("id","configFields_"+r),a(2),T(g(3,15,"child_bridge.config.description")),a(4),T(g(7,17,"child_bridge.config.name")),a(3),G("ngModel",t._bridge.name),a(3),T(g(13,19,"child_bridge.config.manufacturer")),a(3),G("ngModel",t._bridge.manufacturer),a(3),T(g(19,21,"child_bridge.config.model")),a(3),G("ngModel",t._bridge.model),a(3),T(g(25,23,"child_bridge.config.firmware")),a(3),G("ngModel",t._bridge.firmwareRevision),a(),d("ngIf",o.canShowBridgeDebug),a(7),T(g(36,25,"settings.service.debug_tooltip")),a(3),G("ngModel",t._bridge.env.DEBUG),a(7),T(g(46,27,"settings.service.node_tooltip")),a(3),G("ngModel",t._bridge.env.NODE_OPTIONS)}}function Bl(e,n){if(e&1){let i=V();l(0,"div")(1,"div",34),y("click",function(){w(i);let r=f(3).index,o=f(3);return $(o.toggleConfigFields(r))}),l(2,"h5",35),v(3,"i",36),m(4),u(5,"translate"),c()(),x(6,Vl,49,29,"div",37),c()}if(e&2){let i=f(3).index,t=f(3);a(),A("aria-expanded",t.showConfigFields[i]?"true":"false")("aria-controls","configFields_"+i),a(2),d("ngClass",t.showConfigFields[i]?"fa-chevron-down":"fa-chevron-right"),a(),C(" ",g(5,5,"child_bridge.config.header")," "),a(2),d("ngIf",t.showConfigFields[i])}}function Pl(e,n){if(e&1&&(l(0,"div",27),x(1,El,7,5,"div",28)(2,Tl,6,3,"div",7)(3,Bl,7,7,"div",7),c()),e&2){let i=f(2).$implicit,t=f(3);a(),d("ngIf",!t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired),a(),d("ngIf",t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired),a(),d("ngIf",t.$settings.env.serviceMode)}}function Ml(e,n){if(e&1&&(l(0,"div"),x(1,Sl,7,7,"div",7)(2,Pl,4,3,"div",25),c()),e&2){let i=f().$implicit,t=f(3);a(),d("ngIf",t.deviceInfo[i._bridge==null?null:i._bridge.username]===!1),a(),d("ngIf",t.deviceInfo[i._bridge==null?null:i._bridge.username])}}function Rl(e,n){if(e&1){let i=V();l(0,"li",20)(1,"div",21)(2,"h5",22)(3,"strong"),m(4),x(5,$l,2,1,"span",7),c()(),l(6,"input",23),y("change",function(){let r=w(i),o=r.$implicit,p=r.index,h=f(3);return $(h.toggleExternalBridge(o,h.enabledBlocks[p],p))}),W("ngModelChange",function(r){let o=w(i).index,p=f(3);return z(p.enabledBlocks[o],r)||(p.enabledBlocks[o]=r),$(r)}),c(),v(7,"label",24),c(),x(8,Ml,3,2,"div",7),c()}if(e&2){let i=n.$implicit,t=n.index,r=f(3);a(4),C(" ",i.name||i.accessory||i.platform," "),a(),d("ngIf",r.enabledBlocks[t]&&(i._bridge==null?null:i._bridge.name)),a(),d("id","toggleExternalBridgeInput_"+t),G("ngModel",r.enabledBlocks[t]),a(),d("for","toggleExternalBridgeInput_"+t),a(),d("ngIf",i._bridge==null?null:i._bridge.username)}}function Nl(e,n){if(e&1&&(l(0,"ul",18),x(1,Rl,9,6,"li",19),c()),e&2){let i=f(2);a(),d("ngForOf",i.configBlocks)}}function Al(e,n){if(e&1&&(l(0,"div")(1,"p"),m(2),u(3,"translate"),c(),l(4,"p"),m(5),u(6,"translate"),c(),x(7,Nl,2,1,"ul",17),c()),e&2){let i=f();a(2),T(g(3,3,"child_bridge.bridges_paired")),a(3),C("",g(6,5,"child_bridge.select_type"),":"),a(2),d("ngIf",i.configBlocks.length)}}function Ol(e,n){e&1&&(l(0,"ngb-alert",51),m(1),u(2,"translate"),c()),e&2&&(d("dismissible",!1),a(),C(" ",g(2,2,"child_bridge.must_configure_plugin")," "))}function Ll(e,n){if(e&1){let i=V();l(0,"div",52)(1,"ngb-alert",51),m(2),u(3,"translate"),u(4,"translate"),c(),l(5,"div",13)(6,"button",53),y("click",function(){w(i);let r=f();return $(r.openFullConfigEditor())}),m(7),u(8,"translate"),c()()()}e&2&&(a(),d("dismissible",!1),a(),K(" ",g(3,4,"plugins.settings.message_manual_config_required")," ",g(4,6,"plugins.settings.message_consult_documentation")," "),a(5),C(" ",g(8,8,"plugins.settings.label_open_config_editor")," "))}function jl(e,n){if(e&1){let i=V();l(0,"button",54),y("click",function(){w(i);let r=f();return $(r.$activeModal.close("Dismiss"))}),m(1),u(2,"translate"),c()}if(e&2){let i=f();d("disabled",i.saveInProgress),a(),C(" ",g(2,2,"form.button_close")," ")}}function Fl(e,n){e&1&&v(0,"i",57)}function Dl(e,n){if(e&1){let i=V();l(0,"div")(1,"button",55),y("click",function(){w(i);let r=f();return $(r.save())}),m(2),u(3,"translate"),x(4,Fl,1,0,"i",56),c()()}if(e&2){let i=f();a(),d("disabled",i.saveInProgress),a(),C(" ",g(3,3,"form.button_save")," "),a(2),d("ngIf",i.saveInProgress)}}function Ul(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"form.button_save")))}function ql(e,n){e&1&&v(0,"i",57)}function Hl(e,n){if(e&1){let i=V();l(0,"button",55),y("click",function(){w(i);let r=f(2);return $(r.save())}),x(1,Ul,3,3,"span",7)(2,ql,1,0,"i",56),c()}if(e&2){let i=f(2);d("disabled",i.saveInProgress),a(),d("ngIf",!i.saveInProgress),a(),d("ngIf",i.saveInProgress)}}function Gl(e,n){if(e&1){let i=V();l(0,"button",60),y("click",function(){w(i);let r=f(2);return $(r.openPluginConfig())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"plugins.button_settings")," "))}function zl(e,n){if(e&1&&(l(0,"div"),x(1,Hl,3,3,"button",58)(2,Gl,3,3,"button",59),c()),e&2){let i=f();a(),d("ngIf",i.configBlocks.length),a(),d("ngIf",!i.configBlocks.length)}}var br=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,B){s(this,"$activeModal");s(this,"$api");s(this,"$modal");s(this,"$plugins");s(this,"$router");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"schema");s(this,"justInstalled",!1);s(this,"canConfigure",!0);s(this,"configBlocks",[]);s(this,"enabledBlocks",{});s(this,"bridgeCache",new Map);s(this,"deviceInfo",new Map);s(this,"showConfigFields",[]);s(this,"saveInProgress",!1);s(this,"canShowBridgeDebug",!1);this.$activeModal=t,this.$api=r,this.$modal=o,this.$plugins=p,this.$router=h,this.$settings=b,this.$toastr=I,this.$translate=B}ngOnInit(){this.loadPluginConfig(),this.canShowBridgeDebug=this.$settings.env.homebridgeVersion.startsWith("2")}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{this.configBlocks=t;for(let[r,o]of this.configBlocks.entries())o._bridge&&o._bridge.username&&(this.enabledBlocks[r]=!0,o._bridge.env=o._bridge.env||{},this.bridgeCache.set(r,o._bridge),this.getDeviceInfo(o._bridge.username));this.justInstalled&&this.bridgeCache.size===0&&this.configBlocks.forEach((r,o)=>{this.enabledBlocks[o]=!0,this.toggleExternalBridge(r,!0,o)})},error:t=>{this.canConfigure=!1,console.error(t)}})}toggleExternalBridge(t,r,o){return k(this,null,function*(){if(!r){delete t._bridge;return}let p=this.bridgeCache.get(o);t._bridge={username:p?p.username:this.generateUsername(),port:yield this.getUnusedPort(),name:p==null?void 0:p.name,model:p==null?void 0:p.model,manufacturer:p==null?void 0:p.manufacturer,firmwareRevision:p==null?void 0:p.firmwareRevision,debugModeEnabled:p==null?void 0:p.debugModeEnabled,env:p==null?void 0:p.env},this.bridgeCache.set(o,t._bridge),yield this.getDeviceInfo(t._bridge.username)})}getUnusedPort(){return k(this,null,function*(){this.saveInProgress=!0;try{return(yield O(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(t){return k(this,null,function*(){try{this.deviceInfo[t]=yield O(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(r){console.error(r),this.deviceInfo[t]=!1}})}save(){return k(this,null,function*(){this.saveInProgress=!0;try{yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks)),this.$activeModal.close(),this.$modal.open(ge,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}finally{this.saveInProgress=!1}})}openPluginConfig(){this.$activeModal.close(),this.$plugins.settings({name:this.plugin.name,settingsSchema:!0,links:{}})}generateUsername(){let t="0123456789ABCDEF",r="0E:";for(let o=0;o<5;o++)r+=t.charAt(Math.round(Math.random()*15)),r+=t.charAt(Math.round(Math.random()*15)),o!==4&&(r+=":");return r}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}toggleConfigFields(t){this.showConfigFields[t]=!this.showConfigFields[t]}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(J),_(Se),_(Ce),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema",justInstalled:"justInstalled"},decls:24,vars:17,consts:[[1,"modal-content","hb-plugin-settings-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","class","close","data-dismiss","modal",3,"disabled","click",4,"ngIf"],[1,"modal-body"],["href","https://github.com/homebridge/homebridge/wiki/Child-Bridges","target","_blank","rel","noopener noreferrer",1,"primary-text"],[1,"fas","fa-fw","fa-external-link-alt"],[4,"ngIf"],["type","info",3,"dismissible",4,"ngIf"],["class","mb-2",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"disabled","click",4,"ngIf"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],["class","list-group list-group-box my-2",4,"ngIf"],[1,"list-group","list-group-box","my-2"],["class","list-group-item",4,"ngFor","ngForOf"],[1,"list-group-item"],[1,"d-flex","justify-content-between","align-items-center"],[1,"primary-text","mb-0"],["type","checkbox",1,"rendux-input",3,"change","ngModelChange","id","ngModel"],[1,"rendux-label",3,"for"],["class","mt-3",4,"ngIf"],["type","info",1,"mt-3",3,"dismissible"],[1,"mt-3"],["class","w-100 d-flex flex-column",4,"ngIf"],[1,"w-100","d-flex","flex-column"],[1,"mx-auto","my-2",2,"width","180px","height","180px",3,"data"],[1,"mx-auto","text-center"],[1,"grey-text","mx-auto","text-center",2,"max-width","400px"],[1,"fa","fa-fw","fa-check-circle","primary-text","mb-4",2,"font-size","75px"],["role","button","tabindex","0",1,"hover-pointer",3,"click"],[1,"primary-text"],[1,"fa","fa-fw",3,"ngClass"],[3,"id",4,"ngIf"],[3,"id"],[1,"mb-3","grey-text"],[1,"d-block","d-lg-flex","justify-content-between","align-items-center","mb-3"],[1,"pr-0","pr-lg-3",2,"flex","1"],[1,"my-lg-0","pl-0","pl-lg-3",2,"flex","1"],["type","text",1,"form-control","form-control-sm",3,"ngModelChange","ngModel"],["class","d-block d-lg-flex justify-content-between align-items-center mb-3",4,"ngIf"],[1,"text-monospace"],[1,"grey-text"],["type","text","placeholder","HAP-NodeJS:Advertiser,HAP-NodeJS:Service",1,"form-control","form-control-sm",3,"ngModelChange","ngModel"],["type","text","placeholder","--max-old-space-size=512 --max-http-header-size=8192",1,"form-control","form-control-sm",3,"ngModelChange","ngModel"],["type","checkbox",1,"rendux-input",3,"ngModelChange","id","ngModel"],[1,"rendux-label","ml-3",2,"min-width","50px",3,"for"],["type","info",3,"dismissible"],[1,"mb-2"],[1,"btn","btn-primary",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button",1,"btn","btn-primary",3,"click","disabled"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],["type","button","class","btn btn-primary",3,"disabled","click",4,"ngIf"],["type","button","class","btn btn-primary","data-dismiss","modal",3,"click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),x(5,wl,4,4,"button",3),c(),l(6,"div",4)(7,"p"),m(8),u(9,"translate"),l(10,"a",5),m(11),u(12,"translate"),v(13,"i",6),c()(),x(14,Al,8,7,"div",7)(15,Ol,3,4,"ngb-alert",8)(16,Ll,9,10,"div",9),c(),l(17,"div",10)(18,"div",11),x(19,jl,3,4,"button",12),c(),l(20,"div",13),x(21,Dl,5,5,"div",7),c(),l(22,"div",14),x(23,zl,3,2,"div",7),c()()()),r&2&&(a(3),K(" ",g(4,11,"child_bridge.bridge_settings"),": ",o.plugin.displayName||o.plugin.name," "),a(2),d("ngIf",!o.justInstalled),a(3),C(" ",g(9,13,"child_bridge.about")," "),a(3),C(" ",g(12,15,"child_bridge.wiki_link")," "),a(3),d("ngIf",o.configBlocks.length),a(),d("ngIf",!o.configBlocks.length&&o.canConfigure),a(),d("ngIf",!o.canConfigure),a(3),d("ngIf",!o.justInstalled),a(2),d("ngIf",o.justInstalled),a(2),d("ngIf",!o.justInstalled))},dependencies:[ve,de,X,oi,rt,Ie,we,Be,pi,U],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}"]}));let e=n;return e})();var Kt=pe(Ct(),1);var It=()=>["homebridge","homebridge-config-ui-x"],xr=(e,n,i)=>({pluginName:e,minVersion:n,installedVersion:i}),Wl=()=>({packageName:"Homebridge"}),Xl=(e,n,i)=>({minVersion:e,installedVersion:n,latestVersion:i,packageName:"Homebridge"}),Yl=()=>({packageName:"Homebridge UI"}),Kl=(e,n,i)=>({minVersion:e,installedVersion:n,latestVersion:i,packageName:"Homebridge UI"});function Ql(e,n){if(e&1&&(l(0,"li"),m(1),u(2,"translate"),l(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=f(2);a(),C(" ",ae(2,2,"plugins.compat.node_too_low",Te(7,xr,i.plugin.name,i.nodeMinVersion,i.nodeInstalledVersion))," "),a(3),C(" ",g(5,5,"plugins.compat.node_link")," ")}}function Jl(e,n){if(e&1&&(l(0,"li"),m(1),u(2,"translate"),c()),e&2){let i=f(2);a(),C(" ",ae(2,1,"plugins.compat.hb_too_low",Te(4,xr,i.plugin.name,i.hbMinVersion,i.hbInstalledVersion))," ")}}function Zl(e,n){if(e&1&&(l(0,"div",13),v(1,"i",14),l(2,"ul",8),x(3,Ql,7,11,"li",15)(4,Jl,3,8,"li",15),c(),l(5,"p"),m(6),u(7,"translate"),c()()),e&2){let i=f();a(),ii("",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 mb-4"),a(2),d("ngIf",!i.isValidNode),a(),d("ngIf",!i.isValidHb),a(2),T(g(7,6,"plugins.compat.are_you_sure"))}}function ec(e,n){if(e&1&&(l(0,"li"),m(1),u(2,"translate"),l(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=f(2);a(),C(" ",ae(2,2,"plugins.compat.hb_node_too_low",Te(7,Xl,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),a(3),C(" ",g(5,5,"plugins.compat.node_link")," ")}}function tc(e,n){if(e&1&&(l(0,"div",13),v(1,"i",18),l(2,"ul",8),x(3,ec,7,11,"li",15),c(),l(4,"p"),m(5),u(6,"translate"),c()()),e&2){let i=f();a(3),d("ngIf",!i.isValidNode),a(2),T(ae(6,2,"plugins.compat.node_first",_e(5,Wl)))}}function ic(e,n){if(e&1&&(l(0,"li"),m(1),u(2,"translate"),l(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=f(2);a(),C(" ",ae(2,2,"plugins.compat.hb_node_too_low",Te(7,Kl,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),a(3),C(" ",g(5,5,"plugins.compat.node_link")," ")}}function nc(e,n){if(e&1&&(l(0,"div",13),v(1,"i",19),l(2,"ul",8),x(3,ic,7,11,"li",15),c(),l(4,"p"),m(5),u(6,"translate"),c()()),e&2){let i=f();a(3),d("ngIf",!i.isValidNode),a(2),T(ae(6,2,"plugins.compat.node_first",_e(5,Yl)))}}function rc(e,n){if(e&1){let i=V();l(0,"button",20),y("click",function(){w(i);let r=f();return $(r.$activeModal.dismiss("Dismiss"))}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"form.button_close")," "))}function oc(e,n){if(e&1){let i=V();l(0,"button",20),y("click",function(){w(i);let r=f();return $(r.$activeModal.dismiss("Dismiss"))}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"form.button_close")," "))}function ac(e,n){if(e&1){let i=V();l(0,"button",21),y("click",function(){w(i);let r=f();return $(r.$activeModal.close(!0))}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"plugins.node_update.continue")," "))}var Cr=(()=>{let n=class n{constructor(t,r){s(this,"$activeModal");s(this,"$settings");s(this,"plugin");s(this,"isValidNode");s(this,"isValidHb");s(this,"action");s(this,"nodeMinVersion");s(this,"nodeInstalledVersion");s(this,"hbMinVersion");s(this,"hbInstalledVersion");this.$activeModal=t,this.$settings=r}ngOnInit(){var t,r;this.nodeMinVersion=(0,Kt.minVersion)((t=this.plugin.updateEngines)==null?void 0:t.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Kt.minVersion)((r=this.plugin.updateEngines)==null?void 0:r.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(Q))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin",isValidNode:"isValidNode",isValidHb:"isValidHb",action:"action"},decls:20,vars:16,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body","d-flex","flex-row","flex-grow-1","align-items-center","w-100","text-center"],["class","w-100",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"click",4,"ngIf"],[1,"text-center"],[1,"text-right"],["type","button","class","btn btn-danger","data-dismiss","modal",3,"click",4,"ngIf"],[1,"w-100"],[2,"font-size","75px"],[4,"ngIf"],["href","https://homebridge.io/w/JTKEF","target","_blank","rel","noopener noreferrer"],[1,"fa","fa-fw","fa-external-link-alt"],[1,"fab","fa-fw","fa-node-js","primary-text","mb-4",2,"font-size","75px"],[1,"fas","fa-fw","fa-list-check","primary-text","mb-4",2,"font-size","75px"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-danger",3,"click"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5),x(10,Zl,8,8,"div",6)(11,tc,7,6,"div",6)(12,nc,7,6,"div",6),c(),l(13,"div",7)(14,"div",8),x(15,rc,3,3,"button",9),c(),l(16,"div",10),x(17,oc,3,3,"button",9),c(),l(18,"div",11),x(19,ac,3,3,"button",12),c()()()),r&2&&(a(3),T(g(4,8,"plugins.compat.title")),a(2),A("aria-label",g(6,10,"form.button_close")),a(5),d("ngIf",!_e(12,It).includes(o.plugin.name)),a(),d("ngIf",o.plugin.name==="homebridge"),a(),d("ngIf",o.plugin.name==="homebridge-config-ui-x"),a(3),d("ngIf",!_e(13,It).includes(o.plugin.name)),a(2),d("ngIf",_e(14,It).includes(o.plugin.name)),a(2),d("ngIf",!_e(15,It).includes(o.plugin.name)))},dependencies:[X,U],encapsulation:2}));let e=n;return e})();var ee=[];for(wt=0;wt<256;++wt)ee.push((wt+256).toString(16).slice(1));var wt;function yr(e,n=0){return(ee[e[n+0]]+ee[e[n+1]]+ee[e[n+2]]+ee[e[n+3]]+"-"+ee[e[n+4]]+ee[e[n+5]]+"-"+ee[e[n+6]]+ee[e[n+7]]+"-"+ee[e[n+8]]+ee[e[n+9]]+"-"+ee[e[n+10]]+ee[e[n+11]]+ee[e[n+12]]+ee[e[n+13]]+ee[e[n+14]]+ee[e[n+15]]).toLowerCase()}var $t,sc=new Uint8Array(16);function Qt(){if(!$t&&($t=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $t(sc)}var lc=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Jt={randomUUID:lc};function cc(e,n,i){if(Jt.randomUUID&&!n&&!e)return Jt.randomUUID();e=e||{};var t=e.random||(e.rng||Qt)();if(t[6]=t[6]&15|64,t[8]=t[8]&63|128,n){i=i||0;for(var r=0;r<16;++r)n[i+r]=t[r];return n}return yr(t)}var St=cc;var Ir=pe(De(),1);var wr=(()=>{let n=class n{constructor(t,r,o){s(this,"$api");s(this,"$toastr");s(this,"$translate");this.$api=t,this.$toastr=r,this.$translate=o}downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-deconz/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,Ir.saveAs)(t.body,"homebridge-deconz.json.gz")},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.deconz.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}};s(n,"\u0275fac",function(r){return new(r||n)(_(L),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["app-homebridge-deconz"]],decls:3,vars:0,consts:[["type","button","data-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-download"]],template:function(r,o){r&1&&(l(0,"button",0),y("click",function(){return o.downloadDumpFile()}),v(1,"i",1),m(2,` Download Dump File
|
|
8
|
-
`),c())},encapsulation:2}));let e=n;return e})();var $r=pe(De(),1);var Sr=(()=>{let n=class n{constructor(t,r,o){s(this,"$api");s(this,"$translate");s(this,"$toastr");this.$api=t,this.$translate=r,this.$toastr=o}downloadDumpFile(){this.$api.get("/plugins/custom-plugins/homebridge-hue/dump-file",{observe:"response",responseType:"blob"}).subscribe({next:t=>{(0,$r.saveAs)(t.body,"homebridge-hue.json.gz")},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.hue.dump_no_exist"),this.$translate.instant("toast.title_error"))}})}};s(n,"\u0275fac",function(r){return new(r||n)(_(L),_(F),_(D))}),s(n,"\u0275cmp",j({type:n,selectors:[["app-homebridge-hue"]],decls:3,vars:0,consts:[["type","button","data-dismiss","modal",1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-fw","fa-download"]],template:function(r,o){r&1&&(l(0,"button",0),y("click",function(){return o.downloadDumpFile()}),v(1,"i",1),m(2,` Download Dump File
|
|
9
|
-
`),c())},encapsulation:2}));let e=n;return e})();var Er=(()=>{let n=class n{transform(t){return t.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}};s(n,"\u0275fac",function(r){return new(r||n)}),s(n,"\u0275pipe",ei({name:"interpolateMd",type:n,pure:!0}));let e=n;return e})();function uc(e,n){if(e&1&&(v(0,"markdown",19),u(1,"interpolateMd")),e&2){let i=f();d("data",g(1,1,i.schema.headerDisplay))}}function gc(e,n){if(e&1){let i=V();l(0,"button",33),u(1,"translate"),y("click",function(){w(i);let r=f().$implicit,o=f(2);return $(o.removeBlock(r.__uuid__))}),v(2,"i",34),c()}e&2&&d("ngbTooltip",g(1,1,"form.button_delete"))}function fc(e,n){if(e&1){let i=V();l(0,"div",22)(1,"div",23)(2,"div",24)(3,"h5",25),v(4,"i",26),u(5,"translate"),m(6),c(),l(7,"div"),x(8,gc,3,3,"button",27),l(9,"button",28),u(10,"translate"),v(11,"i",29),c()()()(),l(12,"div",30)(13,"div",31)(14,"app-schema-form",32),W("dataChange",function(r){let o=w(i).$implicit;return z(o.config,r)||(o.config=r),$(r)}),y("isValid",function(r){let o=w(i).index,p=f(2);return $(p.onIsValid(r,o))}),c()()()()}if(e&2){let i=n.$implicit,t=n.index,r=f(2);d("ngbAccordionItem",i.__uuid__)("collapsed",r.show!==i.__uuid__)("id",i.__uuid__),a(4),d("ngClass",r.formBlocksValid[t]?"fa-circle-check green-text":r.strictValidation?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text")("ngbTooltip",g(5,10,r.formBlocksValid[t]?"form.label_valid":r.strictValidation?"form.label_invalid_strict":"form.label_invalid")),a(2),C(" ",i.name," "),a(2),d("ngIf",r.plugin.name!=="homebridge-config-ui-x"&&r.show===i.__uuid__),a(),d("ngbTooltip",g(10,12,"form.button_edit")),a(5),d("configSchema",r.schema),G("data",i.config)}}function hc(e,n){if(e&1){let i=V();l(0,"div",20),y("show",function(r){w(i);let o=f();return $(o.blockShown(r))})("hide",function(r){w(i);let o=f();return $(o.blockHidden(r))}),x(1,fc,15,14,"div",21),c()}if(e&2){let i=f();d("closeOthers",!0),a(),d("ngForOf",i.pluginConfig)}}function _c(e,n){e&1&&v(0,"app-homebridge-deconz")}function vc(e,n){e&1&&v(0,"app-homebridge-hue")}function bc(e,n){if(e&1){let i=V();l(0,"div",35)(1,"app-schema-form",32),W("dataChange",function(r){w(i);let o=f();return z(o.pluginConfig[0].config,r)||(o.pluginConfig[0].config=r),$(r)}),y("isValid",function(r){w(i);let o=f();return $(o.onIsValid(r,0))}),c(),x(2,_c,1,0,"app-homebridge-deconz",17)(3,vc,1,0,"app-homebridge-hue",17),c()}if(e&2){let i=f();a(),d("configSchema",i.schema),G("data",i.pluginConfig[0].config),a(),d("ngIf",i.plugin.name==="homebridge-deconz"),a(),d("ngIf",i.plugin.name==="homebridge-hue")}}function xc(e,n){if(e&1&&(v(0,"markdown",19),u(1,"interpolateMd")),e&2){let i=f();d("data",g(1,1,i.schema.footerDisplay))}}function Cc(e,n){if(e&1&&(v(0,"i",36),u(1,"translate")),e&2){let i=f();d("ngClass",i.formIsValid?"fa-circle-check green-text":i.strictValidation?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text")("ngbTooltip",g(1,2,i.formIsValid?"form.label_valid":i.strictValidation?"form.label_invalid_strict":"form.label_invalid"))}}function yc(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"form.button_save")))}function Ic(e,n){e&1&&v(0,"i",37)}var kr=(()=>{let n=class n{constructor(t,r,o,p,h,b,I){s(this,"$activeModal");s(this,"$api");s(this,"$plugin");s(this,"$modal");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"schema");s(this,"pluginAlias");s(this,"pluginType");s(this,"pluginConfig",[]);s(this,"form",{});s(this,"show","");s(this,"saveInProgress");s(this,"childBridges",[]);s(this,"isFirstSave",!1);s(this,"formBlocksValid",{});s(this,"formIsValid",!0);s(this,"strictValidation",!1);this.$activeModal=t,this.$api=r,this.$plugin=o,this.$modal=p,this.$settings=h,this.$toastr=b,this.$translate=I}ngOnInit(){this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,this.strictValidation=this.schema.strictValidation,this.loadPluginConfig()}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{for(let r of t){let o={__uuid__:St(),name:r.name||this.schema.pluginAlias,config:r};this.pluginConfig.push(o)}this.pluginConfig.length?this.show=this.pluginConfig[0].__uuid__:(this.isFirstSave=!0,this.addBlock()),this.plugin.name==="homebridge-hue"&&this.pluginConfig.length&&this.homebridgeHueFix(this.pluginConfig[0].config)},error:t=>{var r;console.error(t),this.$toastr.error(((r=t.error)==null?void 0:r.message)||this.$translate.instant("plugins.config.load_error"),this.$translate.instant("toast.title_error"))}})}save(){return k(this,null,function*(){var r;this.saveInProgress=!0;let t=this.pluginConfig.map(o=>o.config);try{let o=yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,t));if(this.saveInProgress=!1,this.plugin.name==="homebridge-config-ui-x")this.$settings.getAppSettings().catch();else if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&this.$settings.env.serviceMode&&((r=o[0])!=null&&r.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 p=this.$modal.open($e,{size:"lg",backdrop:"static"});p.componentInstance.bridges=this.childBridges.map(h=>({displayName:h.name,username:h.username.replace(/:/g,"")}));return}this.$activeModal.close(),this.$modal.open(ge,{size:"lg",backdrop:"static"})}catch(o){this.saveInProgress=!1,console.error(o),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}blockShown(t){this.show=t;for(let r of this.pluginConfig)r.name=r.config.name||r.name}blockHidden(t){this.show===t&&(this.show="")}addBlock(){let t=St();this.pluginConfig.push({__uuid__:t,name:this.schema.pluginAlias,config:{[this.pluginType]:this.schema.pluginAlias}}),this.formBlocksValid[this.pluginConfig.length-1]=!1,this.blockShown(t)}removeBlock(t){let r=this.pluginConfig.findIndex(o=>o.__uuid__===t);this.pluginConfig.splice(r,1),delete this.formBlocksValid[r],Object.keys(this.formBlocksValid).length||(this.formIsValid=!0)}getChildBridges(){return k(this,null,function*(){try{(yield O(this.$api.get("/status/homebridge/child-bridges"))).forEach(r=>{this.plugin.name===r.plugin&&this.childBridges.push(r)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}homebridgeHueFix(t){if(this.schema.schema.properties.users={type:"object",properties:{}},!(!t.users||typeof t.users!="object"))for(let r of Object.keys(t.users))this.schema.schema.properties.users.properties[r]={type:"string"}}onIsValid(t,r){this.formBlocksValid[r]=t,this.formIsValid=Object.values(this.formBlocksValid).every(o=>o)}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(Se),_(J),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema"},decls:27,vars:20,consts:[[1,"modal-content","hb-plugin-settings-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","plugin-md",3,"data",4,"ngIf"],["ngbAccordion","",3,"closeOthers","show","hide",4,"ngIf"],["class","card card-body",4,"ngIf"],[1,"mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right","d-flex","align-items-center","justify-content-end"],["class","fa fa-fw fa-xl","container","modal","placement","top","openDelay","150","triggers","hover",3,"ngClass","ngbTooltip",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[4,"ngIf"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"plugin-md",3,"data"],["ngbAccordion","",3,"show","hide","closeOthers"],["class","card",3,"ngbAccordionItem","collapsed","id",4,"ngFor","ngForOf"],[1,"card",3,"ngbAccordionItem","collapsed","id"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0"],["container","modal","placement","right","openDelay","150","triggers","hover",1,"fa","fa-fw",3,"ngClass","ngbTooltip"],["class","btn btn-danger ml-2","container","modal","placement","left","openDelay","150","triggers","hover",3,"ngbTooltip","click",4,"ngIf"],["ngbAccordionButton","","container","modal","placement","left","openDelay","150","triggers","hover",1,"btn","btn-primary","ml-2","mr-0",3,"ngbTooltip"],[1,"fa","fa-fw","fa-edit"],["ngbAccordionCollapse",""],["ngbAccordionBody","",1,"card-body"],[3,"dataChange","isValid","configSchema","data"],["container","modal","placement","left","openDelay","150","triggers","hover",1,"btn","btn-danger","ml-2",3,"click","ngbTooltip"],[1,"fa","fa-fw","fa-trash"],[1,"card","card-body"],["container","modal","placement","top","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl",3,"ngClass","ngbTooltip"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.close("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5)(10,"div"),x(11,uc,2,3,"markdown",6),c(),x(12,hc,2,2,"div",7)(13,bc,4,4,"div",8),l(14,"div",9),x(15,xc,2,3,"markdown",6),c()(),l(16,"div",10)(17,"div",11)(18,"button",12),y("click",function(){return o.$activeModal.close()}),m(19),u(20,"translate"),c()(),v(21,"div",13),l(22,"div",14),x(23,Cc,2,4,"i",15),l(24,"button",16),y("click",function(){return o.save()}),x(25,yc,3,3,"span",17)(26,Ic,1,0,"i",18),c()()()()),r&2&&(a(3),K(" ",g(4,14,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),a(2),d("disabled",o.saveInProgress),A("aria-label",g(6,16,"form.button_close")),a(6),d("ngIf",o.schema.headerDisplay),a(),d("ngIf",o.pluginConfig.length&&!o.schema.singular),a(),d("ngIf",o.pluginConfig.length&&o.schema.singular),a(2),d("ngIf",o.schema.footerDisplay),a(3),d("disabled",o.saveInProgress),a(),C(" ",g(20,18,"form.button_close")," "),a(4),d("ngIf",o.schema.singular),a(),d("disabled",o.saveInProgress||!o.formIsValid&&o.strictValidation),a(),d("ngIf",!o.saveInProgress),a(),d("ngIf",o.saveInProgress))},dependencies:[ve,de,X,st,pt,ct,lt,ot,at,Pe,Me,Ne,Re,wr,Sr,U,Er],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}"]}));let e=n;return e})();var wc=(e,n)=>({"fa-broom":e,"fa-cog fa-spin":n});function $c(e,n){e&1&&(l(0,"div",10),v(1,"i",13),l(2,"p",14),m(3),u(4,"translate"),c()()),e&2&&(a(3),T(g(4,1,"reset.clear_cache_bridge.empty")))}function Sc(e,n){if(e&1){let i=V();l(0,"li",21)(1,"span"),m(2),u(3,"titlecase"),v(4,"br"),l(5,"small",22),m(6),c()(),l(7,"button",23),y("click",function(){let r=w(i).$implicit,o=f(2);return $(o.removeAccessories(r._id))}),v(8,"i",24),c()()}if(e&2){let i=n.$implicit,t=f(2);a(2),K(" ",i.displayName," (",i._main?"Homebridge":g(3,5,i._category),") "),a(4),T(i._username),a(),d("disabled",t.deleting||t.deleted.includes(i._id)),a(),d("ngClass",it(7,wc,i._id!==t.deleting,i._id===t.deleting))}}function Ec(e,n){if(e&1&&(l(0,"div")(1,"div",15),v(2,"i",16),c(),l(3,"ngb-alert",17)(4,"ul",18)(5,"li"),m(6),u(7,"translate"),c(),l(8,"li"),m(9),u(10,"translate"),c(),l(11,"li"),m(12),u(13,"translate"),c()()(),l(14,"ul",19),x(15,Sc,9,10,"li",20),c()()),e&2){let i=f();a(3),d("dismissible",!1),a(3),T(g(7,5,"reset.clear_cache_bridge.list_1")),a(3),T(g(10,7,"reset.clear_cache_single.list_3")),a(3),T(g(13,9,"child_bridge.reset_accessories_list")),a(3),d("ngForOf",i.pairings)}}var Vr=(()=>{let n=class n{constructor(t,r,o,p,h){s(this,"$activeModal");s(this,"$api");s(this,"$modal");s(this,"$toastr");s(this,"$translate");s(this,"childBridges",[]);s(this,"pairings",[]);s(this,"deleting",null);s(this,"deleted",[]);this.$activeModal=t,this.$api=r,this.$modal=o,this.$toastr=p,this.$translate=h}ngOnInit(){this.loadPairings()}loadPairings(){return k(this,null,function*(){try{this.pairings=(yield O(this.$api.get("/server/pairings"))).filter(t=>t._category==="bridge"&&!t._main&&this.childBridges.find(r=>r.username===t._username)).sort((t,r)=>r._main?1:-1)}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.load_error"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}removeAccessories(t){this.deleting=t,this.$api.delete(`/server/pairings/${t}/accessories`).subscribe({next:()=>k(this,null,function*(){yield this.loadPairings(),this.deleting=null,this.deleted.push(t),this.$toastr.success("",this.$translate.instant("toast.title_success"))}),error:r=>{this.deleting=null,console.error(r),this.$toastr.error(this.$translate.instant("settings.unpair_bridge.unpair_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){if(this.deleted.length){let t=this.$modal.open($e,{size:"lg",backdrop:"static"});t.componentInstance.bridges=this.deleted.map(r=>{let{_username:o,displayName:p}=this.pairings.find(h=>h._id===r);return{displayName:p,username:o}})}}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(J),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{childBridges:"childBridges"},decls:20,vars:14,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],["class","text-center",4,"ngIf"],[4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],[1,"text-center"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-right"],[1,"fas","fa-fw","fa-circle-check","mb-4","primary-text",2,"font-size","75px"],[1,"mb-0"],[1,"text-center","mb-4"],[1,"fas","fa-fw","fa-broom","primary-text",2,"font-size","75px"],["type","warning",3,"dismissible"],[1,"mb-0","text-left"],[1,"list-group","list-group-box","mt-2"],["class","list-group-item d-flex justify-content-between align-items-center",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-fw",3,"ngClass"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5),x(10,$c,5,3,"div",6)(11,Ec,16,11,"div",7),c(),l(12,"div",8),v(13,"div",9),l(14,"div",10)(15,"button",11),u(16,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(17),u(18,"translate"),c()(),v(19,"div",12),c()()),r&2&&(a(3),T(g(4,6,"child_bridge.reset_accessories")),a(2),A("aria-label",g(6,8,"form.button_close")),a(5),d("ngIf",o.pairings.length===0),a(),d("ngIf",o.pairings.length>0),a(4),A("aria-label",g(16,10,"form.button_close")),a(2),C(" ",g(18,12,"form.button_close")," "))},dependencies:[ve,de,X,Be,nt,U],encapsulation:2}));let e=n;return e})();var Pr=pe(De(),1),Mr=pe(di(),1),Rr=pe(mi(),1);var Tc=e=>({link:e}),Br=(e,n,i,t)=>({"fa-circle-o":e,"fa-spinner fa-pulse":n,"fa-check-circle green-text":i,"fa-times-circle red-text":t}),kc=(e,n,i)=>({"fa-circle-o":e,"fa-spinner fa-pulse":n,"fa-times-circle red-text":i});function Vc(e,n){if(e&1&&(l(0,"div")(1,"p"),m(2),u(3,"translate"),c(),l(4,"pre"),m(5),c()()),e&2){let i=f(2);a(2),T(g(3,4,"plugins.manage.manual_update_command")),a(3),ni(`hb-service stop
|
|
10
|
-
npm install -g `,i.plugin.newHbScope.to,"@",i.plugin.newHbScope.switch,`
|
|
11
|
-
npm uninstall -g `,i.plugin.newHbScope.from,`
|
|
12
|
-
hb-service start`)}}function Bc(e,n){if(e&1&&(l(0,"div")(1,"ul",20)(2,"li"),m(3),u(4,"translate"),l(5,"code"),m(6),c()(),l(7,"li"),m(8),u(9,"translate"),l(10,"code"),m(11),c()(),l(12,"li"),m(13),u(14,"translate"),c()()()),e&2){let i=f(2);a(3),C("",g(4,5,"plugins.manage.install")," "),a(3),T(i.plugin.newHbScope.to),a(2),C("",g(9,7,"plugins.manage.uninstall")," "),a(3),T(i.plugin.newHbScope.from),a(2),T(g(14,9,"menu.hbrestart.title"))}}function Pc(e,n){if(e&1&&(l(0,"div")(1,"p"),m(2),u(3,"translate"),c(),v(4,"p",8),u(5,"translate"),x(6,Vc,6,6,"div",9)(7,Bc,15,11,"div",9),c()),e&2){let i=f();a(2),T(g(3,4,"plugins.manage.scoped.windows")),a(2),d("innerHTML",g(5,6,"plugins.manage.scoped.windows_service"),Tt),a(2),d("ngIf",i.$settings.env.serviceMode),a(),d("ngIf",!i.$settings.env.serviceMode)}}function Mc(e,n){if(e&1&&(l(0,"div",16)(1,"p"),m(2),u(3,"translate"),c(),l(4,"ul",21)(5,"li"),v(6,"i",22),m(7),u(8,"translate"),l(9,"code"),m(10),c()(),l(11,"li"),v(12,"i",22),m(13),u(14,"translate"),l(15,"code"),m(16),c()(),l(17,"li"),v(18,"i",22),m(19),u(20,"translate"),c()()()),e&2){let i=f();a(2),T(g(3,9,"plugins.manage.scoped.process")),a(4),d("ngClass",kt(17,Br,!i.installing&&!i.installed&&!i.failure,i.installing,i.installed&&!i.failure,!i.installed&&i.failure)),a(),C(" ",g(8,11,"plugins.manage.install")," "),a(3),T(i.plugin.newHbScope.to),a(2),d("ngClass",kt(22,Br,!i.uninstalling&&!i.uninstalled&&!i.failure,i.uninstalling,i.uninstalled&&!i.failure,!i.uninstalled&&i.failure)),a(),C(" ",g(14,13,"plugins.manage.uninstall")," "),a(3),T(i.plugin.newHbScope.from),a(2),d("ngClass",Te(27,kc,!i.restarting&&!i.failure,i.restarting,i.failure)),a(),C(" ",g(20,15,"menu.hbrestart.title")," ")}}function Rc(e,n){if(e&1){let i=V();l(0,"div",23)(1,"p"),m(2),u(3,"translate"),c(),l(4,"p",24),m(5),c(),l(6,"button",25),y("click",function(){w(i);let r=f();return $(r.downloadLogFile())}),m(7),u(8,"translate"),c()()}if(e&2){let i=f();a(2),T(g(3,3,"plugins.manage.scoped.error")),a(3),T(i.failure),a(2),C(" ",g(8,5,"form.button_download")," ")}}function Nc(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),C(" ",g(2,1,"plugins.node_update.continue")," "))}function Ac(e,n){e&1&&v(0,"i",26)}var Nr=(()=>{let n=class n{constructor(t,r,o,p,h,b,I){s(this,"$activeModal");s(this,"$api");s(this,"$router");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"$ws");s(this,"plugin");s(this,"installing",!1);s(this,"installed",!1);s(this,"uninstalling",!1);s(this,"uninstalled",!1);s(this,"restarting",!1);s(this,"failure","");s(this,"onlineUpdateOk");s(this,"moreInfo",'<a href="https://github.com/homebridge/plugins/wiki/Scoped-Plugins" target="_blank"><i class="fa fa-fw fa-external-link-alt"></i></a>');s(this,"io");s(this,"term");s(this,"termTarget");s(this,"fitAddon",new Rr.FitAddon);s(this,"errorLog","");this.$activeModal=t,this.$api=r,this.$router=o,this.$settings=p,this.$toastr=h,this.$translate=b,this.$ws=I,this.term=new Mr.Terminal({theme:{background:"#00000000",foreground:this.$settings.actualLightingMode==="light"?"#333333":"#eeeeee",cursor:"#d2d2d2",selection:"#d2d2d2"},allowTransparency:!0}),this.term.loadAddon(this.fitAddon)}ngOnInit(){this.onlineUpdateOk=this.$settings.env.platform!=="win32",this.io=this.$ws.connectToNamespace("plugins"),this.termTarget=document.getElementById("plugin-output"),this.term.open(this.termTarget),this.fitAddon.fit(),this.io.socket.on("stdout",t=>{this.term.write(t);let r=t.toString().replace(/\x1B\[(\d{1,3}(;\d{1,2})?)?[mGK]/g,"").trimEnd();r&&(this.errorLog+=`${r}\r
|
|
13
|
-
`)})}doSwitch(){this.installing=!0,this.io.request("install",{name:this.plugin.newHbScope.to,version:this.plugin.newHbScope.switch,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.installing=!1,this.installed=!0,this.uninstalling=!0,this.io.request("uninstall",{name:this.plugin.newHbScope.from,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.uninstalling=!1,this.uninstalled=!0,this.restarting=!0,this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}).subscribe({next:()=>{this.$activeModal.close(),this.$router.navigate(["/restart"])},error:t=>{this.restarting=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})},error:t=>{this.uninstalling=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})},error:t=>{this.installing=!1,this.failure=t.message,console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error"))}})}downloadLogFile(){let t=new Blob([this.errorLog],{type:"text/plain;charset=utf-8"});(0,Pr.saveAs)(t,`${this.plugin.name}-error.log`)}ngOnDestroy(){this.io.end(),this.term.dispose()}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(Ce),_(Q),_(D),_(F),_(Ve))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:29,vars:27,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],[1,"w-100","text-center"],[1,"fas","fa-fw","fa-arrow-right-arrow-left","primary-text","mb-4",2,"font-size","75px"],[3,"innerHTML"],[4,"ngIf"],["class","text-center",4,"ngIf"],["class","alert alert-error",4,"ngIf"],["id","plugin-output",3,"hidden"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"d-inline-block","text-left"],[1,"d-inline-block","text-left",2,"list-style-type","none"],[1,"fa","fa-fw",3,"ngClass"],[1,"alert","alert-error"],[1,"text-monospace"],[1,"btn","btn-primary","mb-0",3,"click"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5)(10,"div",6),v(11,"i",7)(12,"p",8),u(13,"translate"),x(14,Pc,8,8,"div",9)(15,Mc,21,31,"div",10)(16,Rc,9,7,"div",11),c(),v(17,"div",12),c(),l(18,"div",13)(19,"div",14)(20,"button",15),u(21,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(22),u(23,"translate"),c()(),v(24,"div",16),l(25,"div",17)(26,"button",18),y("click",function(){return o.doSwitch()}),x(27,Nc,3,3,"span",9)(28,Ac,1,0,"i",19),c()()()()),r&2&&(a(3),T(g(4,14,"plugins.manage.scoped.switch")),a(2),d("disabled",o.installing||o.uninstalling||o.restarting),A("aria-label",g(6,16,"form.button_close")),a(7),d("innerHTML",ae(13,18,"plugins.manage.scoped.info",Fe(25,Tc,o.moreInfo)),Tt),a(2),d("ngIf",!o.onlineUpdateOk),a(),d("ngIf",o.onlineUpdateOk),a(),d("ngIf",o.failure),a(),d("hidden",!o.onlineUpdateOk||o.failure),a(3),d("disabled",o.installing||o.uninstalling||o.restarting),A("aria-label",g(21,21,"form.button_close")),a(2),C(" ",g(23,23,"form.button_close")," "),a(4),d("disabled",o.installing||o.uninstalling||o.restarting||!o.onlineUpdateOk||o.failure),a(),d("ngIf",!o.installing&&!o.uninstalling&&!o.restarting),a(),d("ngIf",(o.installing||o.uninstalling||o.restarting)&&!o.failure))},dependencies:[ve,X,U],styles:["#plugin-output[_ngcontent-%COMP%]{height:150px;overflow-y:auto;overflow-x:hidden}"]}));let e=n;return e})();var Oc=e=>({pluginName:e}),Lc=e=>({count:e});function jc(e,n){e&1&&(l(0,"div",16),v(1,"i",17),c())}function Fc(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"plugins.uninstall_unpair_child_bridge")))}function Dc(e,n){if(e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2){let i=f(4);a(),C(" ",ae(2,1,"plugins.uninstall_unpair_child_bridges",Fe(4,Lc,i.childBridges.length))," ")}}function Uc(e,n){if(e&1){let i=V();l(0,"label",28)(1,"input",29),W("ngModelChange",function(r){w(i);let o=f(3);return z(o.removeChildBridges,r)||(o.removeChildBridges=r),$(r)}),c(),x(2,Fc,3,3,"span",14)(3,Dc,3,6,"span",14),v(4,"span",26),c()}if(e&2){let i=f(3);a(),G("ngModel",i.removeChildBridges),a(),d("ngIf",i.childBridges.length===1),a(),d("ngIf",i.childBridges.length>1)}}function qc(e,n){if(e&1){let i=V();l(0,"p",23)(1,"label",24)(2,"input",25),W("ngModelChange",function(r){w(i);let o=f(2);return z(o.removeConfig,r)||(o.removeConfig=r),$(r)}),c(),l(3,"span"),m(4),u(5,"translate"),c(),v(6,"span",26),c(),x(7,Uc,5,3,"label",27),c()}if(e&2){let i=f(2);a(2),G("ngModel",i.removeConfig),a(2),T(g(5,3,"plugins.uninstall_remove_plugin_config")),a(3),d("ngIf",i.$settings.env.serviceMode&&i.hasChildBridges)}}function Hc(e,n){e&1&&(l(0,"ngb-alert",30),m(1),u(2,"translate"),v(3,"br")(4,"br"),m(5),u(6,"translate"),c()),e&2&&(d("dismissible",!1),a(),C(" ",g(2,3,"reset.bridges_single.list_1"),""),a(4),C(" ",g(6,5,"reset.bridges_single.list_2")," "))}function Gc(e,n){e&1&&(l(0,"ngb-alert",31),m(1),u(2,"translate"),c()),e&2&&(d("dismissible",!1),a(),C(" ",g(2,2,"plugins.uninstall_remove_config_required")," "))}function zc(e,n){if(e&1&&(l(0,"div",18),v(1,"i",19),l(2,"p"),m(3),u(4,"translate"),c(),l(5,"div",11),x(6,qc,8,5,"p",20),c(),x(7,Hc,7,7,"ngb-alert",21)(8,Gc,3,4,"ngb-alert",22),c()),e&2){let i=f();a(3),T(ae(4,4,"plugins.uninstall_remove_confirmation",Fe(7,Oc,i.plugin.name))),a(3),d("ngIf",i.pluginAlias&&i.pluginType),a(),d("ngIf",i.hasChildBridges&&i.removeChildBridges),a(),d("ngIf",!i.pluginAlias||!i.pluginType)}}function Wc(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"plugins.manage.uninstall")))}function Xc(e,n){e&1&&v(0,"i",32)}var Ar=(()=>{let n=class n{constructor(t,r,o,p,h,b){s(this,"$activeModal");s(this,"$api");s(this,"$modal");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"childBridges");s(this,"action");s(this,"loading",!0);s(this,"uninstalling",!1);s(this,"removeConfig",!0);s(this,"removeChildBridges",!0);s(this,"hasChildBridges",!1);s(this,"pluginType");s(this,"pluginAlias");this.$activeModal=t,this.$api=r,this.$modal=o,this.$settings=p,this.$toastr=h,this.$translate=b}ngOnInit(){return k(this,null,function*(){try{this.childBridges.length&&(this.hasChildBridges=!0);let t=yield this.getAlias();this.pluginType=t.pluginType,this.pluginAlias=t.pluginAlias}finally{this.loading=!1}})}doUninstall(){return k(this,null,function*(){if(this.uninstalling=!0,this.removeConfig&&this.pluginType&&this.pluginAlias)try{yield this.removePluginConfig()}catch(r){console.error(r),this.$toastr.error(this.$translate.instant("plugins.config.remove_error"),this.$translate.instant("toast.title_error"))}if(this.hasChildBridges&&this.removeChildBridges&&this.$settings.env.serviceMode)try{yield Promise.all(this.childBridges.map(r=>this.unpairChildBridge(r.username.replace(/:/g,""))))}catch(r){console.error(r)}this.$activeModal.dismiss();let t=this.$modal.open(Ae,{size:"lg",backdrop:"static"});t.componentInstance.action="Uninstall",t.componentInstance.pluginName=this.plugin.name})}getAlias(){return k(this,null,function*(){return O(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`))})}removePluginConfig(){return k(this,null,function*(){yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,[])),yield O(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"))})}unpairChildBridge(t){return k(this,null,function*(){try{yield O(this.$api.delete(`/server/pairings/${t}`))}catch(r){console.error(r),this.$toastr.error(this.$translate.instant("plugins.uninstall_bridge_error"),this.$translate.instant("toast.title_error"))}})}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(J),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin",childBridges:"childBridges",action:"action"},decls:23,vars:20,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body","d-flex","flex-row","flex-grow-1","align-items-center","w-100","text-center"],["class","w-100 text-center primary-text",4,"ngIf"],["class","w-100",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[4,"ngIf"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"w-100","text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"w-100"],[1,"fas","fa-fw","fa-trash","primary-text","mb-4",2,"font-size","75px"],["class","d-inline-block text-left",4,"ngIf"],["type","warning",3,"dismissible",4,"ngIf"],["type","info",3,"dismissible",4,"ngIf"],[1,"d-inline-block","text-left"],["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"],["class","hb-uix-switch d-block","for","remove-plugin-child-bridges",4,"ngIf"],["for","remove-plugin-child-bridges",1,"hb-uix-switch","d-block"],["id","remove-plugin-child-bridges","type","checkbox",3,"ngModelChange","ngModel"],["type","warning",3,"dismissible"],["type","info",3,"dismissible"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5),x(10,jc,2,0,"div",6)(11,zc,9,9,"div",7),c(),l(12,"div",8)(13,"div",9)(14,"button",10),u(15,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(16),u(17,"translate"),c()(),v(18,"div",11),l(19,"div",12)(20,"button",13),y("click",function(){return o.doUninstall()}),x(21,Wc,3,3,"span",14)(22,Xc,1,0,"i",15),c()()()()),r&2&&(a(3),K("",g(4,12,"plugins.manage.uninstall"),": ",o.plugin.displayName||o.plugin.name,""),a(2),d("disabled",o.uninstalling),A("aria-label",g(6,14,"form.button_close")),a(5),d("ngIf",o.loading),a(),d("ngIf",!o.loading),a(3),d("disabled",o.uninstalling),A("aria-label",g(15,16,"form.button_close")),a(2),C(" ",g(17,18,"form.button_close")," "),a(4),d("disabled",o.loading||o.uninstalling),a(),d("ngIf",!o.uninstalling),a(),d("ngIf",o.uninstalling))},dependencies:[X,rt,Ie,we,Be,U],encapsulation:2}));let e=n;return e})();var je=pe(Ct(),1);var Yc=["custompluginui"];function Kc(e,n){e&1&&(l(0,"div",20),v(1,"i",21),c())}function Qc(e,n){if(e&1){let i=V();l(0,"div",22)(1,"app-schema-form",23),W("dataChange",function(r){w(i);let o=f();return z(o.pluginConfig[0],r)||(o.pluginConfig[0]=r),$(r)}),y("dataChanged",function(r){w(i);let o=f();return $(o.schemaFormUpdatedSubject.next(r))})("isValid",function(r){w(i);let o=f();return $(o.onIsValid(r))}),c()()}if(e&2){let i=f();a(),d("configSchema",i.schema),G("data",i.pluginConfig[0])}}function Jc(e,n){if(e&1){let i=V();l(0,"button",27),y("click",function(){w(i);let r=f(2);return $(r.formActionSubject.next("cancel"))}),m(1),c()}if(e&2){let i=f(2);a(),C(" ",i.formCancelButtonLabel," ")}}function Zc(e,n){if(e&1){let i=V();l(0,"button",28),y("click",function(){w(i);let r=f(2);return $(r.formActionSubject.next("submit"))}),m(1),c()}if(e&2){let i=f(2);d("disabled",!i.formValid),a(),C(" ",i.formSubmitButtonLabel," ")}}function ep(e,n){if(e&1){let i=V();l(0,"div",22)(1,"app-schema-form",23),W("dataChange",function(r){w(i);let o=f();return z(o.formData,r)||(o.formData=r),$(r)}),y("dataChanged",function(r){w(i);let o=f();return $(o.formUpdatedSubject.next(r))})("isValid",function(r){w(i);let o=f();return $(o.formValidEvent(r))}),c(),l(2,"div",24),x(3,Jc,2,1,"button",25)(4,Zc,2,2,"button",26),c()()}if(e&2){let i=f();a(),d("configSchema",i.formSchema),G("data",i.formData),a(2),d("ngIf",i.formCancelButtonLabel),a(),d("ngIf",i.formSubmitButtonLabel)}}function tp(e,n){e&1&&(l(0,"div",29),v(1,"i",21),c())}function ip(e,n){if(e&1&&(v(0,"i",30),u(1,"translate")),e&2){let i=f();d("ngClass",i.formIsValid?"fa-circle-check green-text":i.strictValidation?"fa-circle-exclamation red-text":"fa-circle-exclamation orange-text")("ngbTooltip",g(1,2,i.formIsValid?"form.label_valid":i.strictValidation?"form.label_invalid_strict":"form.label_invalid"))}}function np(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"form.button_save")))}function rp(e,n){e&1&&v(0,"i",31)}var Or=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,B){s(this,"$activeModal");s(this,"$api");s(this,"$modal");s(this,"$plugin");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"$ws");s(this,"customPluginUiElementTarget");s(this,"plugin");s(this,"schema");s(this,"pluginConfig");s(this,"pluginAlias");s(this,"pluginType");s(this,"loading",!0);s(this,"saveInProgress",!1);s(this,"pluginSpinner",!1);s(this,"uiLoaded",!1);s(this,"showSchemaForm",!1);s(this,"schemaFormUpdatedSubject",new Ee);s(this,"formId");s(this,"formSchema");s(this,"formData");s(this,"formSubmitButtonLabel");s(this,"formCancelButtonLabel");s(this,"formValid",!0);s(this,"formUpdatedSubject",new Ee);s(this,"formActionSubject",new Ee);s(this,"childBridges",[]);s(this,"isFirstSave",!1);s(this,"formIsValid",!0);s(this,"strictValidation",!1);s(this,"io");s(this,"basePath");s(this,"iframe");s(this,"schemaFormRecentlyUpdated",!1);s(this,"schemaFormRecentlyRefreshed",!1);s(this,"schemaFormRefreshSubject",new Ee);s(this,"handleMessage",t=>{if(t.origin===ye.api.origin||t.origin===window.origin)switch(t.data.action){case"loaded":this.injectDefaultStyles(t),this.confirmReady(t);break;case"request":{this.handleRequest(t);break}case"scrollHeight":this.setiFrameHeight(t),this.uiLoaded=!0;break;case"config.get":{this.requestResponse(t,this.getConfigBlocks());break}case"config.save":{this.requestResponse(t,this.savePluginConfig());break}case"config.update":{this.handleUpdateConfig(t,t.data.pluginConfig);break}case"config.schema":{this.requestResponse(t,this.schema);break}case"cachedAccessories.get":{this.handleGetCachedAccessories(t);break}case"schema.show":{this.formEnd(),this.showSchemaForm=!0;break}case"schema.hide":{this.showSchemaForm=!1;break}case"form.create":{this.showSchemaForm=!1,this.formCreate(t.data.formId,t.data.schema,t.data.data,t.data.submitButton,t.data.cancelButton);break}case"form.end":{this.formEnd();break}case"i18n.lang":{this.requestResponse(t,this.$translate.currentLang);break}case"i18n.translations":{this.requestResponse(t,this.$translate.store.translations[this.$translate.currentLang]);break}case"close":{this.$activeModal.close();break}case"toast.success":this.$toastr.success(t.data.message,t.data.title);break;case"toast.error":this.$toastr.error(t.data.message,t.data.title);break;case"toast.warning":this.$toastr.warning(t.data.message,t.data.title);break;case"toast.info":this.$toastr.info(t.data.message,t.data.title);break;case"spinner.show":this.pluginSpinner=!0;break;case"spinner.hide":this.pluginSpinner=!1;break;default:console.log(t)}});this.$activeModal=t,this.$api=r,this.$modal=o,this.$plugin=p,this.$settings=h,this.$toastr=b,this.$translate=I,this.$ws=B}ngOnInit(){this.io=this.$ws.connectToNamespace("plugins/settings-ui"),this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,this.strictValidation=this.schema.strictValidation,this.pluginConfig.length===0&&(this.isFirstSave=!0),this.io.connected?(this.io.socket.emit("start",this.plugin.name),setTimeout(()=>{this.io.connected.subscribe(()=>{this.io.socket.emit("start",this.plugin.name)})},1e3)):this.io.connected.subscribe(()=>{this.io.socket.emit("start",this.plugin.name)}),this.io.socket.on("response",t=>{t.action="response",this.iframe.contentWindow.postMessage(t,ye.api.origin)}),this.io.socket.on("stream",t=>{t.action="stream",this.iframe.contentWindow.postMessage(t,ye.api.origin)}),this.io.socket.on("ready",()=>{this.loading=!1,this.loadUi()}),this.schemaFormRefreshSubject.pipe(Qe(250)).subscribe(this.schemaFormRefresh.bind(this)),this.schemaFormUpdatedSubject.pipe(Qe(250),Et(1)).subscribe(this.schemaFormUpdated.bind(this)),this.formUpdatedSubject.pipe(Qe(100),Et(1)).subscribe(this.formUpdated.bind(this)),this.formActionSubject.subscribe(this.formActionEvent.bind(this)),this.basePath=`/plugins/settings-ui/${encodeURIComponent(this.plugin.name)}`,window.addEventListener("message",this.handleMessage,!1)}loadUi(){this.iframe=this.customPluginUiElementTarget.nativeElement,this.iframe.src=`${ye.api.base+this.basePath}/index.html?origin=${encodeURIComponent(location.origin)}&v=${encodeURIComponent(this.plugin.installedVersion)}`}confirmReady(t){t.source.postMessage({action:"ready"},t.origin)}setiFrameHeight(t){this.iframe.style.height=`${t.data.scrollHeight+10}px`}handleRequest(t){this.io.socket.emit("request",t.data)}handleUpdateConfig(t,r){if(this.schemaFormRefreshSubject.next(void 0),!Array.isArray(r))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array"),this.$translate.instant("toast.title_error")),this.requestResponse(t,{message:this.$translate.instant("plugins.config.must_be_array")},!1);for(let o of r)if(typeof o!="object"||Array.isArray(o))return this.$toastr.error(this.$translate.instant("plugins.config.must_be_array_objects"),this.$translate.instant("toast.title_error")),this.requestResponse(t,{message:this.$translate.instant("plugins.config.must_be_array_objects")},!1);return this.updateConfigBlocks(r),this.requestResponse(t,this.getConfigBlocks())}requestResponse(t,r,o=!0){t.source.postMessage({action:"response",requestId:t.data.requestId,success:o,data:r},t.origin)}injectDefaultStyles(t){return k(this,null,function*(){let r=Array.from(window.document.body.classList).find(I=>I.startsWith("config-ui-x-")),o=window.document.body.classList.contains("dark-mode");t.source.postMessage({action:"body-class",class:r},t.origin),o&&t.source.postMessage({action:"body-class",class:"dark-mode"},t.origin);let p=Array.from(document.querySelectorAll("link"));for(let I of p)if(I.getAttribute("rel")==="stylesheet"){let B=I.getAttribute("href"),P=document.baseURI+(B.startsWith("/")?B.substring(1):B);t.source.postMessage({action:"link-element",href:P,rel:"stylesheet"},t.origin)}let h=Array.from(document.querySelectorAll("style"));for(let I of h)t.source.postMessage({action:"inline-style",style:I.innerHTML},t.origin);let b=`
|
|
14
|
-
body {
|
|
15
|
-
height: unset !important;
|
|
16
|
-
background-color: ${o?"#242424":"#FFFFFF"} !important;
|
|
17
|
-
color: ${o?"#FFFFFF":"#000000"};
|
|
18
|
-
padding: 5px !important;
|
|
19
|
-
}
|
|
20
|
-
`;t.source.postMessage({action:"inline-style",style:b},t.origin)})}getConfigBlocks(){return this.pluginConfig}updateConfigBlocks(t){for(let r of t)r[this.pluginType]=this.pluginAlias;this.pluginConfig=t}schemaFormUpdated(){if(!(!this.iframe||!this.iframe.contentWindow)){if(this.schemaFormRecentlyRefreshed){this.schemaFormRecentlyRefreshed=!1;return}this.schemaFormRecentlyUpdated=!0,this.iframe.contentWindow.postMessage({action:"stream",event:"configChanged",data:this.pluginConfig},ye.api.origin)}}schemaFormRefresh(){if(this.schemaFormRecentlyUpdated){this.schemaFormRecentlyUpdated=!1;return}this.schemaFormRecentlyRefreshed=!0,this.showSchemaForm&&(this.showSchemaForm=!1,setTimeout(()=>{this.showSchemaForm=!0}))}formCreate(t,r,o,p,h){return k(this,null,function*(){yield this.formEnd(),this.formId=t,this.formSchema=r,this.formData=o,this.formSubmitButtonLabel=p,this.formCancelButtonLabel=h})}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(t=>setTimeout(t)))})}formUpdated(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:"change",formData:t}},ye.api.origin)}formValidEvent(t){this.formValid=t}formActionEvent(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:t,formData:this.formData}},ye.api.origin)}handleGetCachedAccessories(t){return k(this,null,function*(){let r=yield O(this.$api.get("/server/cached-accessories"));return this.requestResponse(t,r.filter(o=>o.plugin===this.plugin.name))})}savePluginConfig(t=!1){return k(this,null,function*(){var r;this.saveInProgress=!0;try{let o=yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.saveInProgress=!1,t){if(this.isFirstSave&&this.$settings.env.recommendChildBridges&&this.$settings.env.serviceMode&&((r=o[0])!=null&&r.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 p=this.$modal.open($e,{size:"lg",backdrop:"static"});p.componentInstance.bridges=this.childBridges.map(h=>({displayName:h.name,username:h.username.replace(/:/g,"")}));return}this.$activeModal.close(),this.$modal.open(ge,{size:"lg",backdrop:"static"})}}catch(o){this.saveInProgress=!1,console.error(o),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}getChildBridges(){return k(this,null,function*(){try{(yield O(this.$api.get("/status/homebridge/child-bridges"))).forEach(r=>{this.plugin.name===r.plugin&&this.childBridges.push(r)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}onIsValid(t){this.formIsValid=t}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete()}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(J),_(Se),_(Q),_(D),_(F),_(Ve))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],viewQuery:function(r,o){if(r&1&&Ze(Yc,7),r&2){let p;et(p=tt())&&(o.customPluginUiElementTarget=p.first)}},inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:27,vars:20,consts:[["custompluginui",""],[1,"modal-content","hb-plugin-settings-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body",2,"min-height","110px"],["class","text-center primary-text",4,"ngIf"],["width","100%","height","1px;","sandbox","allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-downloads allow-forms",2,"border","0"],["class","card card-body",4,"ngIf"],["class","loading-overlay text-center primary-text d-flex align-items-center justify-content-center",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right","d-flex","align-items-center","justify-content-end"],["class","fa fa-fw fa-xl","container","modal","placement","top","openDelay","150","triggers","hover",3,"ngClass","ngbTooltip",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],[4,"ngIf"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"card","card-body"],[3,"dataChange","dataChanged","isValid","configSchema","data"],[1,"text-right","custom-form-action-buttons"],["class","btn btn-elegant",3,"click",4,"ngIf"],["class","btn btn-primary",3,"disabled","click",4,"ngIf"],[1,"btn","btn-elegant",3,"click"],[1,"btn","btn-primary",3,"click","disabled"],[1,"loading-overlay","text-center","primary-text","d-flex","align-items-center","justify-content-center"],["container","modal","placement","top","openDelay","150","triggers","hover",1,"fa","fa-fw","fa-xl",3,"ngClass","ngbTooltip"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){if(r&1){let p=V();l(0,"div",1)(1,"div",2)(2,"h5",3),m(3),u(4,"translate"),c(),l(5,"button",4),u(6,"translate"),y("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),l(7,"span",5),m(8,"\xD7"),c()()(),l(9,"div",6),x(10,Kc,2,0,"div",7),v(11,"iframe",8,0),x(13,Qc,2,2,"div",9)(14,ep,5,4,"div",9)(15,tp,2,0,"div",10),c(),l(16,"div",11)(17,"div",12)(18,"button",13),y("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),m(19),u(20,"translate"),c()(),v(21,"div",14),l(22,"div",15),x(23,ip,2,4,"i",16),l(24,"button",17),y("click",function(){return w(p),$(o.savePluginConfig(!0))}),x(25,np,3,3,"span",18)(26,rp,1,0,"i",19),c()()()()}r&2&&(a(3),K(" ",g(4,14,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),a(2),d("disabled",o.saveInProgress),A("aria-label",g(6,16,"form.button_close")),a(5),d("ngIf",o.loading),a(3),d("ngIf",o.uiLoaded&&o.pluginConfig.length&&o.schema.singular&&o.showSchemaForm),a(),d("ngIf",o.formId),a(),d("ngIf",o.pluginSpinner),a(3),d("disabled",o.saveInProgress),a(),C(" ",g(20,18,"form.button_close")," "),a(4),d("ngIf",o.showSchemaForm),a(),d("disabled",o.saveInProgress||!o.showSchemaForm||o.showSchemaForm&&o.strictValidation&&!o.formIsValid),a(),d("ngIf",!o.saveInProgress),a(),d("ngIf",o.saveInProgress))},dependencies:[ve,X,Pe,Ne,U],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;top:16px;left:16px;right:16px;bottom: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}"]}));let e=n;return e})();function op(e,n){e&1&&(l(0,"div")(1,"div",12)(2,"p"),m(3),u(4,"translate"),c(),l(5,"p",13)(6,"span"),m(7),u(8,"translate"),c(),l(9,"a",14),m(10," https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control "),c(),l(11,"span"),m(12),u(13,"translate"),c()()()()),e&2&&(a(3),T(g(4,3,"accessories.message_must_use_insecure_mode")),a(4),C("",g(8,5,"accessories.message_please_see")," "),a(5),C(" ",g(13,7,"accessories.message_for_more_information"),""))}function ap(e,n){if(e&1&&(l(0,"div",10),x(1,op,14,9,"div",11),c()),e&2){let i=f();a(),d("ngIf",!i.$settings.env.enableAccessories)}}function sp(e,n){e&1&&(l(0,"p"),m(1),u(2,"translate"),c()),e&2&&(a(),C(" ",g(2,1,"plugins.settings.custom.homebridge-gsh.message_account_link_required")," "))}function lp(e,n){if(e&1){let i=V();l(0,"div",19)(1,"button",20),y("click",function(){w(i);let r=f(2);return $(r.linkAccount())}),m(2),u(3,"translate"),c()()}e&2&&(a(2),C(" ",g(3,1,"plugins.settings.custom.homebridge-gsh.label_link_account")," "))}function cp(e,n){e&1&&(l(0,"div",24)(1,"p",25)(2,"strong"),m(3),u(4,"translate"),c()()()),e&2&&(a(3),T(g(4,1,"plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required")))}function pp(e,n){if(e&1&&(l(0,"div",21),v(1,"i",22),l(2,"h4",23),m(3),u(4,"titlecase"),u(5,"translate"),c(),x(6,cp,5,3,"div",17),c()),e&2){let i=f(2);a(3),K(" ",g(4,3,i.linkType)," ",g(5,5,"plugins.settings.custom.homebridge-gsh.label_account_linked")," "),a(3),d("ngIf",i.justLinked)}}function dp(e,n){if(e&1&&v(0,"markdown",27),e&2){let i=f(3);d("data",i.schema.footerDisplay)}}function mp(e,n){if(e&1&&(l(0,"div",24),x(1,dp,1,1,"markdown",26),c()),e&2){let i=f(2);a(),d("ngIf",i.schema.footerDisplay)}}function up(e,n){if(e&1){let i=V();l(0,"div",28)(1,"app-schema-form",29),W("dataChange",function(r){w(i);let o=f(2);return z(o.gshConfig,r)||(o.gshConfig=r),$(r)}),c()()}if(e&2){let i=f(2);a(),d("configSchema",i.schema),G("data",i.gshConfig)}}function gp(e,n){if(e&1&&(l(0,"div",10)(1,"p"),m(2),u(3,"translate"),c(),x(4,sp,3,3,"p",11)(5,lp,4,3,"div",15)(6,pp,7,7,"div",16)(7,mp,2,1,"div",17)(8,up,2,2,"div",18),c()),e&2){let i=f();a(2),T(g(3,6,"plugins.settings.custom.homebridge-gsh.message_about")),a(2),d("ngIf",!i.gshConfig.token),a(),d("ngIf",!i.gshConfig.token),a(),d("ngIf",i.gshConfig.token),a(),d("ngIf",i.gshConfig&&i.gshConfig.token),a(),d("ngIf",i.gshConfig&&i.gshConfig.token)}}function fp(e,n){if(e&1){let i=V();l(0,"button",30),y("click",function(){w(i);let r=f();return $(r.unlinkAccount())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"plugins.settings.custom.homebridge-gsh.label_unlink_account")," "))}function hp(e,n){if(e&1){let i=V();l(0,"button",31),y("click",function(){w(i);let r=f();return $(r.saveAndClose())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"form.button_save")," "))}var Lr=(()=>{let n=class n{constructor(t,r,o,p,h,b){s(this,"$activeModal");s(this,"$api");s(this,"$jwtHelper");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"schema");s(this,"pluginConfig");s(this,"justLinked",!1);s(this,"gshConfig");s(this,"linkType");s(this,"linkDomain","https://homebridge-gsh.iot.oz.nu");s(this,"linkUrl",`${this.linkDomain}/link-account`);s(this,"popup");s(this,"originCheckInterval");s(this,"windowMessageListener",t=>{t.origin!==this.linkDomain&&(console.error("Refusing to process message from",t.origin),console.error(t));try{let r=JSON.parse(t.data);r.token&&this.processToken(r.token)}catch(r){console.error(r)}});this.$activeModal=t,this.$api=r,this.$jwtHelper=o,this.$settings=p,this.$toastr=h,this.$translate=b,window.addEventListener("message",this.windowMessageListener,!1)}ngOnInit(){this.pluginConfig.length||this.pluginConfig.push({name:"Google Smart Home",platform:this.schema.pluginAlias}),this.gshConfig=this.pluginConfig[0],this.parseToken()}linkAccount(){let o=window.top.outerHeight/2+window.top.screenY-350,p=window.top.outerWidth/2+window.top.screenX-450/2;this.popup=window.open(this.linkUrl,"oznu-google-smart-home-auth",`toolbar=no, location=no, directories=no, status=no, menubar=no scrollbars=no, resizable=no, copyhistory=no, width=450, height=700, top=${o}, left=${p}`),this.originCheckInterval=setInterval(()=>{this.popup.postMessage("origin-check",this.linkDomain)},2e3)}unlinkAccount(){this.gshConfig={name:"Google Smart Home",platform:this.schema.pluginAlias},this.pluginConfig.splice(0,this.pluginConfig.length),this.saveConfig()}processToken(t){clearInterval(this.originCheckInterval),this.popup&&this.popup.close(),this.gshConfig.token=t,this.gshConfig.notice="Keep your token a secret!",this.pluginConfig.length||this.pluginConfig.push(this.gshConfig),this.parseToken(),this.saveConfig()}parseToken(){if(this.gshConfig.token)try{let t=this.$jwtHelper.decodeToken(this.gshConfig.token);this.linkType=t.id.split("|")[0].split("-")[0]}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.settings.custom.homebridge-gsh.message_invalid_token"),this.$translate.instant("toast.title_error")),delete this.gshConfig.token}}saveConfig(){return k(this,null,function*(){try{yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig)),this.justLinked=!0,this.$toastr.success(this.$translate.instant("plugins.settings.restart_required"),this.$translate.instant("plugins.settings.plugin_config_saved"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}saveAndClose(){return k(this,null,function*(){this.gshConfig.platform=this.schema.pluginAlias,this.pluginConfig[0]=this.gshConfig,yield this.saveConfig(),this.$activeModal.close()})}close(){this.$activeModal.close()}ngOnDestroy(){clearInterval(this.originCheckInterval),window.removeEventListener("message",this.windowMessageListener),this.popup&&this.popup.close()}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(ri),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["app-homebridge-google-smarthome"]],inputs:{plugin:"plugin",schema:"schema",pluginConfig:"pluginConfig"},decls:16,vars:10,consts:[[1,"modal-content","hb-plugin-settings-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","button","class","btn btn-elegant mr-auto","data-dismiss","modal",3,"click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","class","btn btn-primary","data-dismiss","modal",3,"click",4,"ngIf"],[1,"modal-body"],[4,"ngIf"],["role","alert",1,"alert","alert-warning"],[1,"mb-0"],["target","_blank","rel","noopener noreferrer","href","https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control"],["class","text-center",4,"ngIf"],["class","text-center mt-1",4,"ngIf"],["class","mt-3",4,"ngIf"],["class","card p-2 pt-3 mt-4",4,"ngIf"],[1,"text-center"],[1,"btn","btn-primary","btn-lg",3,"click"],[1,"text-center","mt-1"],[1,"fas","fa-fw","fa-check-circle","primary-text",2,"font-size","50px"],[1,"mt-2"],[1,"mt-3"],[1,"primary-text"],["class","plugin-md",3,"data",4,"ngIf"],[1,"plugin-md",3,"data"],[1,"card","p-2","pt-3","mt-4"],[3,"dataChange","configSchema","data"],["type","button","data-dismiss","modal",1,"btn","btn-elegant","mr-auto",3,"click"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3,"Homebridge Google Smart Home"),c(),l(4,"button",3),u(5,"translate"),y("click",function(){return o.$activeModal.dismiss("Dismiss")}),l(6,"span",4),m(7,"\xD7"),c()()(),x(8,ap,2,1,"div",5)(9,gp,9,8,"div",5),l(10,"div",6),x(11,fp,3,3,"button",7),l(12,"button",8),y("click",function(){return o.close()}),m(13),u(14,"translate"),c(),x(15,hp,3,3,"button",9),c()()),r&2&&(a(4),A("aria-label",g(5,6,"form.button_close")),a(4),d("ngIf",!o.$settings.env.enableAccessories),a(),d("ngIf",o.$settings.env.enableAccessories),a(2),d("ngIf",o.gshConfig.token),a(2),C(" ",g(14,8,"form.button_close")," "),a(2),d("ngIf",o.gshConfig.token))},dependencies:[X,Me,Ne,Re,nt,U],encapsulation:2}));let e=n;return e})();var jr=(()=>{let n=class n{constructor(t,r){s(this,"$api");s(this,"$modal");s(this,"plugins",{"homebridge-gsh":Lr});this.$api=t,this.$modal=r}openSettings(t,r){return k(this,null,function*(){let o=yield this.loadPluginConfig(t.name),p=this.$modal.open(this.plugins[t.name],{size:"lg",backdrop:"static"});return p.componentInstance.plugin=t,p.componentInstance.schema=r,p.componentInstance.pluginConfig=o,p.result.catch(()=>{})})}openCustomSettingsUi(t,r){return k(this,null,function*(){let o=yield this.loadPluginConfig(t.name),p=this.$modal.open(Or,{size:"lg",backdrop:"static"});return p.componentInstance.plugin=t,p.componentInstance.schema=r,p.componentInstance.pluginConfig=o,p.result.catch(()=>{})})}loadPluginConfig(t){return k(this,null,function*(){return O(this.$api.get(`/config-editor/plugin/${encodeURIComponent(t)}`))})}};s(n,"\u0275fac",function(r){return new(r||n)(he(L),he(J))}),s(n,"\u0275prov",Je({token:n,factory:n.\u0275fac,providedIn:"root"}));let e=n;return e})();var Se=(()=>{let n=class n{constructor(t,r,o,p,h,b){s(this,"$api");s(this,"$modal");s(this,"$customPluginsService");s(this,"$settings");s(this,"$toastr");s(this,"$translate");this.$api=t,this.$modal=r,this.$customPluginsService=o,this.$settings=p,this.$toastr=h,this.$translate=b}installPlugin(t,r="latest"){let o=this.$modal.open(Ae,{size:"lg",backdrop:"static"});o.componentInstance.action="Install",o.componentInstance.pluginName=t,o.componentInstance.targetVersion=r}uninstallPlugin(t,r){let o=this.$modal.open(Ar,{size:"lg",backdrop:"static"});o.componentInstance.action="Uninstall",o.componentInstance.plugin=t,o.componentInstance.childBridges=r}checkAndUpdatePlugin(t,r="latest"){return k(this,null,function*(){(yield this.checkHbAndNodeVersion(t,"update"))&&(yield this.updatePlugin(t,r))})}updatePlugin(t,r){return k(this,null,function*(){let o=this.$modal.open(Ae,{size:"lg",backdrop:"static"});o.componentInstance.action="Update",o.componentInstance.pluginName=t.name,o.componentInstance.targetVersion=r,o.componentInstance.latestVersion=t.latestVersion,o.componentInstance.installedVersion=t.installedVersion,o.componentInstance.isDisabled=t.disabled})}upgradeHomebridge(t,r="latest"){return k(this,null,function*(){if(!(yield this.checkHbAndNodeVersion(t,"update")))return;let o=this.$modal.open(Ae,{size:"lg",backdrop:"static"});o.componentInstance.action="Update",o.componentInstance.pluginName=t.name,o.componentInstance.targetVersion=r,o.componentInstance.latestVersion=t.latestVersion,o.componentInstance.installedVersion=t.installedVersion})}installAlternateVersion(t){return k(this,null,function*(){let r=this.$modal.open(vr,{size:"lg",backdrop:"static"});r.componentInstance.plugin=t;try{let{action:o,version:p,engines:h}=yield r.result;return(yield this.checkHbAndNodeVersion(Ke(Ye({},t),{updateEngines:h}),o))?t.name==="homebridge"?yield this.upgradeHomebridge(t,p):t.installedVersion?yield this.updatePlugin(t,p):this.installPlugin(t.name,p):void 0}catch{}})}bridgeSettings(t,r=!1){return k(this,null,function*(){let o;if(t.settingsSchema)try{o=yield this.loadConfigSchema(t.name)}catch(h){console.error(h),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}let p=this.$modal.open(br,{size:"lg",backdrop:"static"});p.componentInstance.schema=o,p.componentInstance.plugin=t,p.componentInstance.justInstalled=r})}settings(t){return k(this,null,function*(){let r;if(t.settingsSchema)try{r=yield this.loadConfigSchema(t.name)}catch(p){console.error(p),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugin_schema"),this.$translate.instant("toast.title_error"));return}if(r&&r.customUi)return this.$customPluginsService.openCustomSettingsUi(t,r);if(this.$customPluginsService.plugins[t.name])return this.$customPluginsService.openSettings(t,r);let o=this.$modal.open(t.settingsSchema?kr:Zt,{size:"lg",backdrop:"static"});return o.componentInstance.schema=r,o.componentInstance.plugin=t,o.result.catch(()=>{})})}jsonEditor(t){return k(this,null,function*(){let r=this.$modal.open(Zt,{size:"lg",backdrop:"static"});return r.componentInstance.plugin=t,r.result.catch(o=>console.error(o))})}checkHbAndNodeVersion(t,r){return k(this,null,function*(){var h,b;let o=!0,p=!0;try{(h=t.updateEngines)!=null&&h.node&&(0,je.lt)(this.$settings.env.nodeVersion,(0,je.minVersion)(t.updateEngines.node))&&(o=!1),(b=t.updateEngines)!=null&&b.homebridge&&(0,je.lt)(this.$settings.env.homebridgeVersion,(0,je.minVersion)(t.updateEngines.homebridge))&&(p=!1)}catch(I){return console.error(I),this.$toastr.error(I.message,this.$translate.instant("toast.title_error")),!1}if(!o||!p)try{let I=this.$modal.open(Cr,{size:"lg",backdrop:"static"});return I.componentInstance.plugin=t,I.componentInstance.isValidNode=o,I.componentInstance.isValidHb=p,I.componentInstance.action=r,yield I.result}catch{return!1}return!0})}loadConfigSchema(t){return k(this,null,function*(){return O(this.$api.get(`/plugins/config-schema/${encodeURIComponent(t)}`))})}resetChildBridges(t){return k(this,null,function*(){let r=this.$modal.open(Vr,{size:"lg",backdrop:"static"});r.componentInstance.childBridges=t})}switchToScoped(t){return k(this,null,function*(){let r=this.$modal.open(Nr,{size:"lg",backdrop:"static"});r.componentInstance.plugin=t})}};s(n,"\u0275fac",function(r){return new(r||n)(he(L),he(J),he(jr),he(Q),he(D),he(F))}),s(n,"\u0275prov",Je({token:n,factory:n.\u0275fac,providedIn:"root"}));let e=n;return e})();function vp(e,n){e&1&&(l(0,"div",17),v(1,"i",18),c())}function bp(e,n){e&1&&(l(0,"div")(1,"div",19),m(2),u(3,"translate"),u(4,"translate"),c()()),e&2&&(a(2),K(" ",g(3,2,"plugins.settings.message_manual_config_required")," ",g(4,4,"plugins.settings.message_consult_documentation")," "))}function xp(e,n){if(e&1){let i=V();l(0,"button",32),u(1,"translate"),y("click",function(){w(i);let r=f().index,o=f(2);return $(o.removeBlock(r))}),v(2,"i",33),c()}e&2&&d("ngbTooltip",g(1,1,"form.button_delete"))}function Cp(e,n){if(e&1){let i=V();l(0,"div",22)(1,"div",23)(2,"div",24)(3,"h5",25),m(4),c(),l(5,"div"),x(6,xp,3,3,"button",26),l(7,"button",27),u(8,"translate"),y("click",function(){let r=w(i).index,o=f(2);return $(o.editBlock(r))}),v(9,"i",28),c()()()(),l(10,"div",29)(11,"div",30)(12,"ngx-monaco-editor",31),W("ngModelChange",function(r){w(i);let o=f(2);return z(o.currentBlock,r)||(o.currentBlock=r),$(r)}),y("onInit",function(r){w(i);let o=f(2);return $(o.onEditorInit(r))}),c()()()()}if(e&2){let i=n.$implicit,t=n.index,r=f(2);d("ngbAccordionItem","configBlock."+t)("collapsed",r.show!=="configBlock."+t)("id","configBlock."+t),a(4),T(i.name||r.pluginAlias),a(2),d("ngIf",r.show==="configBlock."+t),a(),d("ngbTooltip",g(8,8,"form.button_edit")),a(5),d("options",r.editorOptions),G("ngModel",r.currentBlock)}}function yp(e,n){if(e&1&&(l(0,"div",20),x(1,Cp,13,10,"div",21),c()),e&2){let i=f();d("closeOthers",!0),a(),d("ngForOf",i.pluginConfig)}}function Ip(e,n){if(e&1){let i=V();l(0,"button",34),y("click",function(){w(i);let r=f();return $(r.addBlock())}),v(1,"i",35),c()}}function wp(e,n){e&1&&(l(0,"span"),m(1),u(2,"translate"),c()),e&2&&(a(),T(g(2,1,"form.button_save")))}function $p(e,n){e&1&&v(0,"i",38)}function Sp(e,n){if(e&1){let i=V();l(0,"button",36),y("click",function(){w(i);let r=f();return $(r.save())}),x(1,wp,3,3,"span",7)(2,$p,1,0,"i",37),c()}if(e&2){let i=f();d("disabled",i.saveInProgress),a(),d("ngIf",!i.saveInProgress),a(),d("ngIf",i.saveInProgress)}}function Ep(e,n){if(e&1){let i=V();l(0,"button",39),y("click",function(){w(i);let r=f();return $(r.openFullConfigEditor())}),m(1),u(2,"translate"),c()}e&2&&(a(),C(" ",g(2,1,"plugins.settings.label_open_config_editor")," "))}var Zt=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,B,P){s(this,"$activeModal");s(this,"$api");s(this,"$md");s(this,"$modal");s(this,"$plugin");s(this,"$router");s(this,"$settings");s(this,"$toastr");s(this,"$translate");s(this,"plugin");s(this,"pluginAlias");s(this,"pluginType");s(this,"loading",!0);s(this,"canConfigure",!1);s(this,"show","");s(this,"pluginConfig");s(this,"currentBlock");s(this,"currentBlockIndex",null);s(this,"saveInProgress",!1);s(this,"childBridges",[]);s(this,"isFirstSave",!1);s(this,"monacoEditor");s(this,"editorOptions");this.$activeModal=t,this.$api=r,this.$md=o,this.$modal=p,this.$plugin=h,this.$router=b,this.$settings=I,this.$toastr=B,this.$translate=P}get arrayKey(){return this.pluginType==="accessory"?"accessories":"platforms"}ngOnInit(){this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",automaticLayout:!0},this.$md.detect.mobile()?(this.loading=!1,this.canConfigure=!1):this.loadPluginAlias()}onEditorInit(t){return k(this,null,function*(){window.editor=t,this.monacoEditor=t,yield this.monacoEditor.getModel().setValue(this.currentBlock),yield this.monacoEditor.getAction("editor.action.formatDocument").run()})}loadPluginAlias(){this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{t.pluginAlias&&t.pluginType?(this.pluginAlias=t.pluginAlias,this.pluginType=t.pluginType,this.loadHomebridgeConfig()):this.loading=!1},error:()=>{this.loading=!1}})}loadHomebridgeConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe(t=>{this.pluginConfig=t,this.canConfigure=!0,this.loading=!1,this.pluginConfig.length?this.editBlock(0):(this.isFirstSave=!0,this.addBlock())})}addBlock(){if(!this.saveCurrentBlock()){this.$toastr.error(this.$translate.instant("plugins.config.please_fix"),this.$translate.instant("toast.title_error"));return}this.pluginConfig.push({[this.pluginType]:this.pluginAlias,name:this.pluginAlias}),this.editBlock(this.pluginConfig.length-1)}saveCurrentBlock(){if(this.currentBlockIndex!==null&&this.monacoEditor){let t=this.monacoEditor.getModel().getValue().trim(),r;t.charAt(0)==='"'&&t.charAt(t.length-1)==="]"&&(t=`{${t}}`);try{r=Fr.default.parse(t)}catch(p){return console.error(p),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error")),!1}if(Array.isArray(r)||typeof r!="object")return this.$toastr.error(this.$translate.instant("plugins.config.must_be_object"),this.$translate.instant("toast.title_error")),!1;if(!r[this.pluginType]&&Array.isArray(r[this.arrayKey])&&r[this.arrayKey].length&&Object.keys(r).length===1&&(r=r[this.arrayKey][0]),this.pluginType==="accessory"&&(!r.name||typeof r.name!="string"))return this.$toastr.error(this.$translate.instant("plugins.config.name_property"),this.$translate.instant("toast.title_error")),r.name="",this.monacoEditor.getModel().setValue(JSON.stringify(r,null,4)),!1;let o=this.pluginConfig[this.currentBlockIndex];Object.keys(o).forEach(p=>delete o[p]),Object.assign(o,r),o[this.pluginType]=this.pluginAlias}return!0}editBlock(t){this.saveCurrentBlock()&&(this.show=`configBlock.${t}`,this.currentBlockIndex=t,this.currentBlock=JSON.stringify(this.pluginConfig[this.currentBlockIndex],null,4))}removeBlock(t){let r=this.pluginConfig[t],o=this.pluginConfig.findIndex(p=>p===r);o>-1&&this.pluginConfig.splice(o,1),this.currentBlockIndex=null,this.currentBlock=void 0,this.show=""}save(){return k(this,null,function*(){var t;if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let r=yield O(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.pluginConfig));if(this.$activeModal.close(),this.isFirstSave&&this.$settings.env.recommendChildBridges&&this.$settings.env.serviceMode&&((t=r[0])!=null&&t.platform)){this.$activeModal.close(),this.$plugin.bridgeSettings(this.plugin,!0);return}if(!["homebridge","homebridge-config-ui-x"].includes(this.plugin.name)&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let o=this.$modal.open($e,{size:"lg",backdrop:"static"});o.componentInstance.bridges=this.childBridges.map(p=>({displayName:p.name,username:p.username.replace(/:/g,"")}));return}this.$activeModal.close(),this.$modal.open(ge,{size:"lg",backdrop:"static"})}catch(r){console.error(r),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error")),this.saveInProgress=!1}})}openFullConfigEditor(){this.$router.navigate(["/config"]),this.$activeModal.close()}getChildBridges(){return k(this,null,function*(){try{(yield O(this.$api.get("/status/homebridge/child-bridges"))).forEach(r=>{this.plugin.name===r.plugin&&this.childBridges.push(r)})}catch(t){console.error(t),this.$toastr.error(t.message,this.$translate.instant("toast.title_error")),this.childBridges=[]}})}};s(n,"\u0275fac",function(r){return new(r||n)(_(q),_(L),_(ci),_(J),_(Se),_(Ce),_(Q),_(D),_(F))}),s(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:23,vars:18,consts:[[1,"modal-content","hb-plugin-settings-modal"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click","disabled"],["aria-hidden","true"],[1,"modal-body"],["class","text-center primary-text",4,"ngIf"],[4,"ngIf"],["ngbAccordion","",3,"closeOthers",4,"ngIf"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-center"],[1,"text-right"],["type","button","class","btn btn-elegant mr-auto","data-dismiss","modal",3,"click",4,"ngIf"],["type","button","class","btn btn-primary","data-dismiss","modal",3,"disabled","click",4,"ngIf"],["class","btn btn-primary",3,"click",4,"ngIf"],[1,"text-center","primary-text"],[1,"fa","fa-fw","fa-cog","fa-spin",2,"font-size","75px"],[1,"alert","alert-warning"],["ngbAccordion","",3,"closeOthers"],["class","card",3,"ngbAccordionItem","collapsed","id",4,"ngFor","ngForOf"],[1,"card",3,"ngbAccordionItem","collapsed","id"],["ngbAccordionHeader","",1,"card-header"],[1,"d-flex","align-items-center","justify-content-between"],[1,"m-0"],["class","btn btn-danger ml-2","container","modal","openDelay","150","triggers","hover",3,"ngbTooltip","click",4,"ngIf"],["ngbAccordionButton","","container","modal","openDelay","150","triggers","hover",1,"btn","btn-primary","ml-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","ml-2",3,"click","ngbTooltip"],[1,"fa","fa-fw","fa-trash"],["type","button","data-dismiss","modal",1,"btn","btn-elegant","mr-auto",3,"click"],[1,"fa","fa-fw","fa-plus"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],["class","fas fa-fw fa-spinner fa-pulse",4,"ngIf"],[1,"fas","fa-fw","fa-spinner","fa-pulse"],[1,"btn","btn-primary",3,"click"]],template:function(r,o){r&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),l(5,"button",3),u(6,"translate"),y("click",function(){return o.$activeModal.close()}),l(7,"span",4),m(8,"\xD7"),c()()(),l(9,"div",5),x(10,vp,2,0,"div",6)(11,bp,5,6,"div",7)(12,yp,2,2,"div",8),c(),l(13,"div",9)(14,"div",10)(15,"button",11),y("click",function(){return o.$activeModal.close()}),m(16),u(17,"translate"),c()(),v(18,"div",12),l(19,"div",13),x(20,Ip,2,0,"button",14)(21,Sp,3,3,"button",15)(22,Ep,3,3,"button",16),c()()()),r&2&&(a(3),K(" ",g(4,12,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),a(2),d("disabled",o.saveInProgress),A("aria-label",g(6,14,"form.button_close")),a(5),d("ngIf",o.loading),a(),d("ngIf",!o.loading&&!o.canConfigure),a(),d("ngIf",!o.loading&&o.canConfigure),a(3),d("disabled",o.saveInProgress),a(),C(" ",g(17,16,"form.button_close")," "),a(4),d("ngIf",o.canConfigure),a(),d("ngIf",o.canConfigure),a(),d("ngIf",!o.canConfigure))},dependencies:[de,X,Ie,we,st,pt,ct,lt,ot,at,Pe,fi,U],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}"]}));let e=n;return e})();export{vi as a,Ct as b,jr as c,Se as d};
|
package/public/chunk-7SIWB246.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as h}from"./chunk-FBJAWKJ3.js";import{b as y}from"./chunk-J6XB3JBO.js";import{$ as g,Ka as b,Ua as e,Va as o,Wa as f,ab as d,h as s,jb as l,kb as v,lb as _,sc as k,wa as t,xa as u,yb as i,zb as n}from"./chunk-IKFLHM2X.js";var w=(()=>{let a=class a{constructor(m,r){s(this,"$activeModal");s(this,"$router");this.$activeModal=m,this.$router=r}onRestartHomebridgeClick(){this.$router.navigate(["/restart"]),this.$activeModal.close()}};s(a,"\u0275fac",function(r){return new(r||a)(u(h),u(k))}),s(a,"\u0275cmp",g({type:a,selectors:[["ng-component"]],decls:25,vars:18,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body","w-100","text-center"],[1,"fas","fa-fw","fa-power-off","primary-text","mb-4",2,"font-size","75px"],[1,"w-100"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-right"],["type","button",1,"btn","btn-primary",3,"click"]],template:function(r,p){r&1&&(e(0,"div",0)(1,"div",1)(2,"h5",2),l(3),i(4,"translate"),o(),e(5,"button",3),i(6,"translate"),d("click",function(){return p.$activeModal.dismiss("Dismiss")}),e(7,"span",4),l(8,"\xD7"),o()()(),e(9,"div",5),f(10,"i",6),e(11,"p",7),l(12),i(13,"translate"),o()(),e(14,"div",8)(15,"div",9)(16,"button",10),i(17,"translate"),d("click",function(){return p.$activeModal.dismiss("Dismiss")}),l(18),i(19,"translate"),o()(),f(20,"div",11),e(21,"div",12)(22,"button",13),d("click",function(){return p.onRestartHomebridgeClick()}),l(23),i(24,"translate"),o()()()()),r&2&&(t(3),v(n(4,6,"platform.version.service_restart_required")),t(2),b("aria-label",n(6,8,"form.button_close")),t(7),v(n(13,10,"restart.homebridge")),t(4),b("aria-label",n(17,12,"form.button_close")),t(2),_(" ",n(19,14,"form.button_close")," "),t(5),_(" ",n(24,16,"menu.tooltip_restart")," "))},dependencies:[y],encapsulation:2}));let c=a;return c})();export{w as a};
|