homebridge-config-ui-x 4.63.0 → 5.0.0-beta.1
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 +46 -5
- package/config.schema.json +1 -0
- package/dist/bin/hb-service.js +1 -7
- package/dist/bin/hb-service.js.map +1 -1
- package/dist/bin/platforms/darwin.js +23 -35
- package/dist/bin/platforms/darwin.js.map +1 -1
- package/dist/bin/platforms/linux.js +20 -34
- package/dist/bin/platforms/linux.js.map +1 -1
- package/dist/core/auth/auth.controller.d.ts +0 -1
- package/dist/core/config/config.service.d.ts +0 -2
- package/dist/core/config/config.service.js +0 -2
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.d.ts +9 -10
- package/dist/modules/plugins/plugins.service.js +71 -46
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +2 -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 +1 -0
- package/dist/modules/status/status.service.js +5 -7
- package/dist/modules/status/status.service.js.map +1 -1
- package/dist/self-check.js +4 -12
- package/dist/self-check.js.map +1 -1
- package/package.json +4 -9
- package/public/chunk-3KSUXL3K.js +20 -0
- package/public/{chunk-SXAWP4QF.js → chunk-422JXES4.js} +1 -1
- package/public/{chunk-VDTNNTX2.js → chunk-4R6MSI5I.js} +1 -1
- package/public/{chunk-4VTTWHHL.js → chunk-5UYN5OWH.js} +1 -1
- package/public/{chunk-AU5G3BVJ.js → chunk-6QEO3BTW.js} +1 -1
- package/public/{chunk-FHXSXVSD.js → chunk-7564WJJL.js} +1 -1
- package/public/{chunk-MD2LKTX2.js → chunk-7R6JSPNH.js} +1 -1
- package/public/{chunk-GCBIN3BZ.js → chunk-B6C32ZRK.js} +1 -1
- package/public/{chunk-MYOOAGZ7.js → chunk-B6G7GTDI.js} +1 -1
- package/public/{chunk-A7KY6MAW.js → chunk-BQLALGZ5.js} +1 -1
- package/public/{chunk-TLJQR7GW.js → chunk-BROUJ7PT.js} +1 -1
- package/public/{chunk-4OEIPK6B.js → chunk-C4OONTE3.js} +1 -1
- package/public/{chunk-HWMIXXWR.js → chunk-DOLYKWZH.js} +1 -1
- package/public/{chunk-H3ASY46R.js → chunk-DRWF7R4E.js} +1 -1
- package/public/{chunk-YCUV4ZTO.js → chunk-F22FMU37.js} +1 -1
- package/public/{chunk-753ABYT7.js → chunk-FBP5C7VG.js} +1 -1
- package/public/{chunk-W75IQVVC.js → chunk-FPOZAQLC.js} +1 -1
- package/public/{chunk-7QKEKEAJ.js → chunk-GNQUXZMN.js} +1 -1
- package/public/chunk-IGUSDGD6.js +8 -0
- package/public/{chunk-K343FEZX.js → chunk-JM7QCDMZ.js} +1 -1
- package/public/{chunk-7T2EEIVD.js → chunk-K3YXRBTH.js} +1 -1
- package/public/{chunk-NG7QY7UH.js → chunk-K6TZNXIW.js} +1 -1
- package/public/{chunk-BQVZQ5VX.js → chunk-LS7T2AVU.js} +1 -1
- package/public/{chunk-7MWYYMRO.js → chunk-NZPTOWFC.js} +1 -1
- package/public/{chunk-5ATXV5LK.js → chunk-RID7V4NP.js} +1 -1
- package/public/{chunk-4S2ZV5SB.js → chunk-RIWBPQF3.js} +1 -1
- package/public/chunk-S4SOWUAW.js +1 -0
- package/public/{chunk-H4GRUHC6.js → chunk-SJTXTMYT.js} +1 -1
- package/public/{chunk-GAKIVDIC.js → chunk-T5QVI4H2.js} +1 -1
- package/public/{chunk-6TKWYL3O.js → chunk-TBJQ2Y3M.js} +1 -1
- package/public/{chunk-46QIUWKL.js → chunk-THFLPY67.js} +1 -1
- package/public/{chunk-FQZPJTDM.js → chunk-TS27NWVA.js} +1 -1
- package/public/{chunk-AZLQQM4X.js → chunk-VROGSJLF.js} +1 -1
- package/public/chunk-VVILZWTF.js +1 -0
- package/public/{chunk-L27ILYMM.js → chunk-WCDFKYP6.js} +1 -1
- package/public/{chunk-SXBKAANV.js → chunk-WCQIGCXO.js} +1 -1
- package/public/chunk-Z47RP4BH.js +1 -0
- package/public/{chunk-UFBNFHDQ.js → chunk-ZEONO5N6.js} +1 -1
- package/public/index.html +2 -2
- package/public/main-VTRWQ63R.js +6 -0
- package/public/{styles-KB74XXJT.css → styles-7ETWN6DQ.css} +1 -1
- package/public/chunk-3NQEXKA4.js +0 -8
- package/public/chunk-643PTHKL.js +0 -17
- package/public/chunk-7COUXZR3.js +0 -1
- package/public/chunk-DOXG4MVV.js +0 -1
- package/public/chunk-NVLTF77N.js +0 -1
- package/public/main-OQXSK5YY.js +0 -6
package/public/chunk-643PTHKL.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import{a as Vr}from"./chunk-VDTNNTX2.js";import{a as li}from"./chunk-H4GRUHC6.js";import{a as Be}from"./chunk-AU5G3BVJ.js";import{a as ri}from"./chunk-GCBIN3BZ.js";import{a as si,b as ct}from"./chunk-BQVZQ5VX.js";import{a as Pr,b as Br}from"./chunk-46QIUWKL.js";import{a as it}from"./chunk-FHXSXVSD.js";import{b as oi,c as Ve,d as Ie,n as Me}from"./chunk-FQZPJTDM.js";import{a as ue}from"./chunk-MD2LKTX2.js";import{a as ai}from"./chunk-K343FEZX.js";import{a as Zt}from"./chunk-4S2ZV5SB.js";import{A as nt,B as rt,C as ot,D as st,E as at,F as lt,G as Te,M as W,N as J,O as Pe,b as tt,c as ei,e as Ce,l as ye,r as ti,s as ii,t as ni}from"./chunk-L27ILYMM.js";import{b as xe,c as O,k as D,m as Q}from"./chunk-7COUXZR3.js";import{a as F,b as z}from"./chunk-YCUV4ZTO.js";import{$ as j,Ga as x,H as Xe,Ka as L,La as d,Ob as Ze,P as wt,Pa as Jt,Pb as pe,Qb as K,Ua as a,Va as c,W as Ye,Wa as v,Wb as et,Z as fe,Za as k,a as ze,ab as C,b as We,bb as g,ca as Kt,e as R,fb as Ke,g as ge,gb as Qe,h as l,ha as w,hb as Je,i as T,ia as $,jb as m,kb as V,l as $e,lb as y,mb as Y,ob as q,pb as H,qb as G,rc as ke,t as A,tb as he,ub as $t,va as Qt,vb as Se,wa as s,wb as Oe,xa as _,xb as u,yb as f,zb as ce}from"./chunk-3NQEXKA4.js";var je=R(($p,bi)=>{var co="2.0.0",po=Number.MAX_SAFE_INTEGER||9007199254740991,mo=16,uo=250,go=["major","premajor","minor","preminor","patch","prepatch","prerelease"];bi.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:mo,MAX_SAFE_BUILD_LENGTH:uo,MAX_SAFE_INTEGER:po,RELEASE_TYPES:go,SEMVER_SPEC_VERSION:co,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Fe=R((Ep,xi)=>{var fo=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};xi.exports=fo});var Ne=R((be,Ci)=>{var{MAX_SAFE_COMPONENT_LENGTH:Et,MAX_SAFE_BUILD_LENGTH:ho,MAX_LENGTH:_o}=je(),vo=Fe();be=Ci.exports={};var bo=be.re=[],xo=be.safeRe=[],E=be.src=[],S=be.t={},Co=0,St="[a-zA-Z0-9-]",yo=[["\\s",1],["\\d",_o],[St,ho]],Io=e=>{for(let[n,i]of yo)e=e.split(`${n}*`).join(`${n}{0,${i}}`).split(`${n}+`).join(`${n}{1,${i}}`);return e},N=(e,n,i)=>{let t=Io(n),r=Co++;vo(e,r,n),S[e]=r,E[r]=n,bo[r]=new RegExp(n,i?"g":void 0),xo[r]=new RegExp(t,i?"g":void 0)};N("NUMERICIDENTIFIER","0|[1-9]\\d*");N("NUMERICIDENTIFIERLOOSE","\\d+");N("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${St}*`);N("MAINVERSION",`(${E[S.NUMERICIDENTIFIER]})\\.(${E[S.NUMERICIDENTIFIER]})\\.(${E[S.NUMERICIDENTIFIER]})`);N("MAINVERSIONLOOSE",`(${E[S.NUMERICIDENTIFIERLOOSE]})\\.(${E[S.NUMERICIDENTIFIERLOOSE]})\\.(${E[S.NUMERICIDENTIFIERLOOSE]})`);N("PRERELEASEIDENTIFIER",`(?:${E[S.NUMERICIDENTIFIER]}|${E[S.NONNUMERICIDENTIFIER]})`);N("PRERELEASEIDENTIFIERLOOSE",`(?:${E[S.NUMERICIDENTIFIERLOOSE]}|${E[S.NONNUMERICIDENTIFIER]})`);N("PRERELEASE",`(?:-(${E[S.PRERELEASEIDENTIFIER]}(?:\\.${E[S.PRERELEASEIDENTIFIER]})*))`);N("PRERELEASELOOSE",`(?:-?(${E[S.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${E[S.PRERELEASEIDENTIFIERLOOSE]})*))`);N("BUILDIDENTIFIER",`${St}+`);N("BUILD",`(?:\\+(${E[S.BUILDIDENTIFIER]}(?:\\.${E[S.BUILDIDENTIFIER]})*))`);N("FULLPLAIN",`v?${E[S.MAINVERSION]}${E[S.PRERELEASE]}?${E[S.BUILD]}?`);N("FULL",`^${E[S.FULLPLAIN]}$`);N("LOOSEPLAIN",`[v=\\s]*${E[S.MAINVERSIONLOOSE]}${E[S.PRERELEASELOOSE]}?${E[S.BUILD]}?`);N("LOOSE",`^${E[S.LOOSEPLAIN]}$`);N("GTLT","((?:<|>)?=?)");N("XRANGEIDENTIFIERLOOSE",`${E[S.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);N("XRANGEIDENTIFIER",`${E[S.NUMERICIDENTIFIER]}|x|X|\\*`);N("XRANGEPLAIN",`[v=\\s]*(${E[S.XRANGEIDENTIFIER]})(?:\\.(${E[S.XRANGEIDENTIFIER]})(?:\\.(${E[S.XRANGEIDENTIFIER]})(?:${E[S.PRERELEASE]})?${E[S.BUILD]}?)?)?`);N("XRANGEPLAINLOOSE",`[v=\\s]*(${E[S.XRANGEIDENTIFIERLOOSE]})(?:\\.(${E[S.XRANGEIDENTIFIERLOOSE]})(?:\\.(${E[S.XRANGEIDENTIFIERLOOSE]})(?:${E[S.PRERELEASELOOSE]})?${E[S.BUILD]}?)?)?`);N("XRANGE",`^${E[S.GTLT]}\\s*${E[S.XRANGEPLAIN]}$`);N("XRANGELOOSE",`^${E[S.GTLT]}\\s*${E[S.XRANGEPLAINLOOSE]}$`);N("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Et}})(?:\\.(\\d{1,${Et}}))?(?:\\.(\\d{1,${Et}}))?`);N("COERCE",`${E[S.COERCEPLAIN]}(?:$|[^\\d])`);N("COERCEFULL",E[S.COERCEPLAIN]+`(?:${E[S.PRERELEASE]})?(?:${E[S.BUILD]})?(?:$|[^\\d])`);N("COERCERTL",E[S.COERCE],!0);N("COERCERTLFULL",E[S.COERCEFULL],!0);N("LONETILDE","(?:~>?)");N("TILDETRIM",`(\\s*)${E[S.LONETILDE]}\\s+`,!0);be.tildeTrimReplace="$1~";N("TILDE",`^${E[S.LONETILDE]}${E[S.XRANGEPLAIN]}$`);N("TILDELOOSE",`^${E[S.LONETILDE]}${E[S.XRANGEPLAINLOOSE]}$`);N("LONECARET","(?:\\^)");N("CARETTRIM",`(\\s*)${E[S.LONECARET]}\\s+`,!0);be.caretTrimReplace="$1^";N("CARET",`^${E[S.LONECARET]}${E[S.XRANGEPLAIN]}$`);N("CARETLOOSE",`^${E[S.LONECARET]}${E[S.XRANGEPLAINLOOSE]}$`);N("COMPARATORLOOSE",`^${E[S.GTLT]}\\s*(${E[S.LOOSEPLAIN]})$|^$`);N("COMPARATOR",`^${E[S.GTLT]}\\s*(${E[S.FULLPLAIN]})$|^$`);N("COMPARATORTRIM",`(\\s*)${E[S.GTLT]}\\s*(${E[S.LOOSEPLAIN]}|${E[S.XRANGEPLAIN]})`,!0);be.comparatorTrimReplace="$1$2$3";N("HYPHENRANGE",`^\\s*(${E[S.XRANGEPLAIN]})\\s+-\\s+(${E[S.XRANGEPLAIN]})\\s*$`);N("HYPHENRANGELOOSE",`^\\s*(${E[S.XRANGEPLAINLOOSE]})\\s+-\\s+(${E[S.XRANGEPLAINLOOSE]})\\s*$`);N("STAR","(<|>)?=?\\s*\\*");N("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");N("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var pt=R((Sp,yi)=>{var wo=Object.freeze({loose:!0}),$o=Object.freeze({}),Eo=e=>e?typeof e!="object"?wo:e:$o;yi.exports=Eo});var kt=R((kp,$i)=>{var Ii=/^[0-9]+$/,wi=(e,n)=>{let i=Ii.test(e),t=Ii.test(n);return i&&t&&(e=+e,n=+n),e===n?0:i&&!t?-1:t&&!i?1:e<n?-1:1},So=(e,n)=>wi(n,e);$i.exports={compareIdentifiers:wi,rcompareIdentifiers:So}});var te=R((Tp,Ti)=>{var dt=Fe(),{MAX_LENGTH:Ei,MAX_SAFE_INTEGER:mt}=je(),{safeRe:Si,t:ki}=Ne(),ko=pt(),{compareIdentifiers:Ae}=kt(),Tt=class e{constructor(n,i){if(i=ko(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>Ei)throw new TypeError(`version is longer than ${Ei} characters`);dt("SemVer",n,i),this.options=i,this.loose=!!i.loose,this.includePrerelease=!!i.includePrerelease;let t=n.trim().match(i.loose?Si[ki.LOOSE]:Si[ki.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>mt||this.major<0)throw new TypeError("Invalid major version");if(this.minor>mt||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>mt||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<mt)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(dt("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)),Ae(this.major,n.major)||Ae(this.minor,n.minor)||Ae(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(dt("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 Ae(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(dt("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 Ae(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]),Ae(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}};Ti.exports=Tt});var Ee=R((Pp,Bi)=>{var Pi=te(),To=(e,n,i=!1)=>{if(e instanceof Pi)return e;try{return new Pi(e,n)}catch(t){if(!i)return null;throw t}};Bi.exports=To});var Mi=R((Bp,Vi)=>{var Po=Ee(),Bo=(e,n)=>{let i=Po(e,n);return i?i.version:null};Vi.exports=Bo});var Ni=R((Vp,Ri)=>{var Vo=Ee(),Mo=(e,n)=>{let i=Vo(e.trim().replace(/^[=v]+/,""),n);return i?i.version:null};Ri.exports=Mo});var Oi=R((Mp,Li)=>{var Ai=te(),Ro=(e,n,i,t,r)=>{typeof i=="string"&&(r=t,t=i,i=void 0);try{return new Ai(e instanceof Ai?e.version:e,i).inc(n,t,r).version}catch{return null}};Li.exports=Ro});var Di=R((Rp,Fi)=>{var ji=Ee(),No=(e,n)=>{let i=ji(e,null,!0),t=ji(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 P=b?"pre":"";return i.major!==t.major?P+"major":i.minor!==t.minor?P+"minor":i.patch!==t.patch?P+"patch":"prerelease"};Fi.exports=No});var qi=R((Np,Ui)=>{var Ao=te(),Lo=(e,n)=>new Ao(e,n).major;Ui.exports=Lo});var Gi=R((Ap,Hi)=>{var Oo=te(),jo=(e,n)=>new Oo(e,n).minor;Hi.exports=jo});var Wi=R((Lp,zi)=>{var Fo=te(),Do=(e,n)=>new Fo(e,n).patch;zi.exports=Do});var Yi=R((Op,Xi)=>{var Uo=Ee(),qo=(e,n)=>{let i=Uo(e,n);return i&&i.prerelease.length?i.prerelease:null};Xi.exports=qo});var de=R((jp,Qi)=>{var Ki=te(),Ho=(e,n,i)=>new Ki(e,i).compare(new Ki(n,i));Qi.exports=Ho});var Zi=R((Fp,Ji)=>{var Go=de(),zo=(e,n,i)=>Go(n,e,i);Ji.exports=zo});var tn=R((Dp,en)=>{var Wo=de(),Xo=(e,n)=>Wo(e,n,!0);en.exports=Xo});var ut=R((Up,rn)=>{var nn=te(),Yo=(e,n,i)=>{let t=new nn(e,i),r=new nn(n,i);return t.compare(r)||t.compareBuild(r)};rn.exports=Yo});var sn=R((qp,on)=>{var Ko=ut(),Qo=(e,n)=>e.sort((i,t)=>Ko(i,t,n));on.exports=Qo});var ln=R((Hp,an)=>{var Jo=ut(),Zo=(e,n)=>e.sort((i,t)=>Jo(t,i,n));an.exports=Zo});var De=R((Gp,cn)=>{var es=de(),ts=(e,n,i)=>es(e,n,i)>0;cn.exports=ts});var gt=R((zp,pn)=>{var is=de(),ns=(e,n,i)=>is(e,n,i)<0;pn.exports=ns});var Pt=R((Wp,dn)=>{var rs=de(),os=(e,n,i)=>rs(e,n,i)===0;dn.exports=os});var Bt=R((Xp,mn)=>{var ss=de(),as=(e,n,i)=>ss(e,n,i)!==0;mn.exports=as});var ft=R((Yp,un)=>{var ls=de(),cs=(e,n,i)=>ls(e,n,i)>=0;un.exports=cs});var ht=R((Kp,gn)=>{var ps=de(),ds=(e,n,i)=>ps(e,n,i)<=0;gn.exports=ds});var Vt=R((Qp,fn)=>{var ms=Pt(),us=Bt(),gs=De(),fs=ft(),hs=gt(),_s=ht(),vs=(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 ms(e,i,t);case"!=":return us(e,i,t);case">":return gs(e,i,t);case">=":return fs(e,i,t);case"<":return hs(e,i,t);case"<=":return _s(e,i,t);default:throw new TypeError(`Invalid operator: ${n}`)}};fn.exports=vs});var _n=R((Jp,hn)=>{var bs=te(),xs=Ee(),{safeRe:_t,t:vt}=Ne(),Cs=(e,n)=>{if(e instanceof bs)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?_t[vt.COERCEFULL]:_t[vt.COERCE]);else{let b=n.includePrerelease?_t[vt.COERCERTLFULL]:_t[vt.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 xs(`${t}.${r}.${o}${p}${h}`,n)};hn.exports=Cs});var bn=R((Zp,vn)=>{var Mt=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}};vn.exports=Mt});var me=R((ed,In)=>{var ys=/\s+/g,Rt=class e{constructor(n,i){if(i=ws(i),n instanceof e)return n.loose===!!i.loose&&n.includePrerelease===!!i.includePrerelease?n:new e(n.raw,i);if(n instanceof Nt)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(ys," "),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=>!Cn(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&&Bs(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&&Ts)|(this.options.loose&&Ps))+":"+n,r=xn.get(t);if(r)return r;let o=this.options.loose,p=o?se[ie.HYPHENRANGELOOSE]:se[ie.HYPHENRANGE];n=n.replace(p,Ds(this.options.includePrerelease)),U("hyphen replace",n),n=n.replace(se[ie.COMPARATORTRIM],Es),U("comparator trim",n),n=n.replace(se[ie.TILDETRIM],Ss),U("tilde trim",n),n=n.replace(se[ie.CARETTRIM],ks),U("caret trim",n);let h=n.split(" ").map(B=>Vs(B,this.options)).join(" ").split(/\s+/).map(B=>Fs(B,this.options));o&&(h=h.filter(B=>(U("loose invalid filter",B,this.options),!!B.match(se[ie.COMPARATORLOOSE])))),U("range list",h);let b=new Map,I=h.map(B=>new Nt(B,this.options));for(let B of I){if(Cn(B))return[B];b.set(B.value,B)}b.size>1&&b.has("")&&b.delete("");let P=[...b.values()];return xn.set(t,P),P}intersects(n,i){if(!(n instanceof e))throw new TypeError("a Range is required");return this.set.some(t=>yn(t,i)&&n.set.some(r=>yn(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 $s(n,this.options)}catch{return!1}for(let i=0;i<this.set.length;i++)if(Us(this.set[i],n,this.options))return!0;return!1}};In.exports=Rt;var Is=bn(),xn=new Is,ws=pt(),Nt=Ue(),U=Fe(),$s=te(),{safeRe:se,t:ie,comparatorTrimReplace:Es,tildeTrimReplace:Ss,caretTrimReplace:ks}=Ne(),{FLAG_INCLUDE_PRERELEASE:Ts,FLAG_LOOSE:Ps}=je(),Cn=e=>e.value==="<0.0.0-0",Bs=e=>e.value==="",yn=(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},Vs=(e,n)=>(U("comp",e,n),e=Ns(e,n),U("caret",e),e=Ms(e,n),U("tildes",e),e=Ls(e,n),U("xrange",e),e=js(e,n),U("stars",e),e),ne=e=>!e||e.toLowerCase()==="x"||e==="*",Ms=(e,n)=>e.trim().split(/\s+/).map(i=>Rs(i,n)).join(" "),Rs=(e,n)=>{let i=n.loose?se[ie.TILDELOOSE]:se[ie.TILDE];return e.replace(i,(t,r,o,p,h)=>{U("tilde",e,t,r,o,p,h);let b;return ne(r)?b="":ne(o)?b=`>=${r}.0.0 <${+r+1}.0.0-0`:ne(p)?b=`>=${r}.${o}.0 <${r}.${+o+1}.0-0`:h?(U("replaceTilde pr",h),b=`>=${r}.${o}.${p}-${h} <${r}.${+o+1}.0-0`):b=`>=${r}.${o}.${p} <${r}.${+o+1}.0-0`,U("tilde return",b),b})},Ns=(e,n)=>e.trim().split(/\s+/).map(i=>As(i,n)).join(" "),As=(e,n)=>{U("caret",e,n);let i=n.loose?se[ie.CARETLOOSE]:se[ie.CARET],t=n.includePrerelease?"-0":"";return e.replace(i,(r,o,p,h,b)=>{U("caret",e,r,o,p,h,b);let I;return ne(o)?I="":ne(p)?I=`>=${o}.0.0${t} <${+o+1}.0.0-0`:ne(h)?o==="0"?I=`>=${o}.${p}.0${t} <${o}.${+p+1}.0-0`:I=`>=${o}.${p}.0${t} <${+o+1}.0.0-0`:b?(U("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`):(U("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`),U("caret return",I),I})},Ls=(e,n)=>(U("replaceXRanges",e,n),e.split(/\s+/).map(i=>Os(i,n)).join(" ")),Os=(e,n)=>{e=e.trim();let i=n.loose?se[ie.XRANGELOOSE]:se[ie.XRANGE];return e.replace(i,(t,r,o,p,h,b)=>{U("xRange",e,t,r,o,p,h,b);let I=ne(o),P=I||ne(p),B=P||ne(h),X=B;return r==="="&&X&&(r=""),b=n.includePrerelease?"-0":"",I?r===">"||r==="<"?t="<0.0.0-0":t="*":r&&X?(P&&(p=0),h=0,r===">"?(r=">=",P?(o=+o+1,p=0,h=0):(p=+p+1,h=0)):r==="<="&&(r="<",P?o=+o+1:p=+p+1),r==="<"&&(b="-0"),t=`${r+o}.${p}.${h}${b}`):P?t=`>=${o}.0.0${b} <${+o+1}.0.0-0`:B&&(t=`>=${o}.${p}.0${b} <${o}.${+p+1}.0-0`),U("xRange return",t),t})},js=(e,n)=>(U("replaceStars",e,n),e.trim().replace(se[ie.STAR],"")),Fs=(e,n)=>(U("replaceGTE0",e,n),e.trim().replace(se[n.includePrerelease?ie.GTE0PRE:ie.GTE0],"")),Ds=e=>(n,i,t,r,o,p,h,b,I,P,B,X)=>(ne(t)?i="":ne(r)?i=`>=${t}.0.0${e?"-0":""}`:ne(o)?i=`>=${t}.${r}.0${e?"-0":""}`:p?i=`>=${i}`:i=`>=${i}${e?"-0":""}`,ne(I)?b="":ne(P)?b=`<${+I+1}.0.0-0`:ne(B)?b=`<${I}.${+P+1}.0-0`:X?b=`<=${I}.${P}.${B}-${X}`:e?b=`<${I}.${P}.${+B+1}-0`:b=`<=${b}`,`${i} ${b}`.trim()),Us=(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(U(e[t].semver),e[t].semver!==Nt.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 Ue=R((td,Tn)=>{var qe=Symbol("SemVer ANY"),Ot=class e{static get ANY(){return qe}constructor(n,i){if(i=wn(i),n instanceof e){if(n.loose===!!i.loose)return n;n=n.value}n=n.trim().split(/\s+/).join(" "),Lt("comparator",n,i),this.options=i,this.loose=!!i.loose,this.parse(n),this.semver===qe?this.value="":this.value=this.operator+this.semver.version,Lt("comp",this)}parse(n){let i=this.options.loose?$n[En.COMPARATORLOOSE]:$n[En.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 Sn(t[2],this.options.loose):this.semver=qe}toString(){return this.value}test(n){if(Lt("Comparator.test",n,this.options.loose),this.semver===qe||n===qe)return!0;if(typeof n=="string")try{n=new Sn(n,this.options)}catch{return!1}return At(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 kn(n.value,i).test(this.value):n.operator===""?n.value===""?!0:new kn(this.value,i).test(n.semver):(i=wn(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("=")||At(this.semver,"<",n.semver,i)&&this.operator.startsWith(">")&&n.operator.startsWith("<")||At(this.semver,">",n.semver,i)&&this.operator.startsWith("<")&&n.operator.startsWith(">")))}};Tn.exports=Ot;var wn=pt(),{safeRe:$n,t:En}=Ne(),At=Vt(),Lt=Fe(),Sn=te(),kn=me()});var He=R((id,Pn)=>{var qs=me(),Hs=(e,n,i)=>{try{n=new qs(n,i)}catch{return!1}return n.test(e)};Pn.exports=Hs});var Vn=R((nd,Bn)=>{var Gs=me(),zs=(e,n)=>new Gs(e,n).set.map(i=>i.map(t=>t.value).join(" ").trim().split(" "));Bn.exports=zs});var Rn=R((rd,Mn)=>{var Ws=te(),Xs=me(),Ys=(e,n,i)=>{let t=null,r=null,o=null;try{o=new Xs(n,i)}catch{return null}return e.forEach(p=>{o.test(p)&&(!t||r.compare(p)===-1)&&(t=p,r=new Ws(t,i))}),t};Mn.exports=Ys});var An=R((od,Nn)=>{var Ks=te(),Qs=me(),Js=(e,n,i)=>{let t=null,r=null,o=null;try{o=new Qs(n,i)}catch{return null}return e.forEach(p=>{o.test(p)&&(!t||r.compare(p)===1)&&(t=p,r=new Ks(t,i))}),t};Nn.exports=Js});var jn=R((sd,On)=>{var jt=te(),Zs=me(),Ln=De(),ea=(e,n)=>{e=new Zs(e,n);let i=new jt("0.0.0");if(e.test(i)||(i=new jt("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 jt(p.semver.version);switch(p.operator){case">":h.prerelease.length===0?h.patch++:h.prerelease.push(0),h.raw=h.format();case"":case">=":(!o||Ln(h,o))&&(o=h);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${p.operator}`)}}),o&&(!i||Ln(i,o))&&(i=o)}return i&&e.test(i)?i:null};On.exports=ea});var Dn=R((ad,Fn)=>{var ta=me(),ia=(e,n)=>{try{return new ta(e,n).range||"*"}catch{return null}};Fn.exports=ia});var bt=R((ld,Gn)=>{var na=te(),Hn=Ue(),{ANY:ra}=Hn,oa=me(),sa=He(),Un=De(),qn=gt(),aa=ht(),la=ft(),ca=(e,n,i,t)=>{e=new na(e,t),n=new oa(n,t);let r,o,p,h,b;switch(i){case">":r=Un,o=aa,p=qn,h=">",b=">=";break;case"<":r=qn,o=la,p=Un,h="<",b="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(sa(e,n,t))return!1;for(let I=0;I<n.set.length;++I){let P=n.set[I],B=null,X=null;if(P.forEach(M=>{M.semver===ra&&(M=new Hn(">=0.0.0")),B=B||M,X=X||M,r(M.semver,B.semver,t)?B=M:p(M.semver,X.semver,t)&&(X=M)}),B.operator===h||B.operator===b||(!X.operator||X.operator===h)&&o(e,X.semver))return!1;if(X.operator===b&&p(e,X.semver))return!1}return!0};Gn.exports=ca});var Wn=R((cd,zn)=>{var pa=bt(),da=(e,n,i)=>pa(e,n,">",i);zn.exports=da});var Yn=R((pd,Xn)=>{var ma=bt(),ua=(e,n,i)=>ma(e,n,"<",i);Xn.exports=ua});var Jn=R((dd,Qn)=>{var Kn=me(),ga=(e,n,i)=>(e=new Kn(e,i),n=new Kn(n,i),e.intersects(n,i));Qn.exports=ga});var er=R((md,Zn)=>{var fa=He(),ha=de();Zn.exports=(e,n,i)=>{let t=[],r=null,o=null,p=e.sort((P,B)=>ha(P,B,i));for(let P of p)fa(P,n,i)?(o=P,r||(r=P)):(o&&t.push([r,o]),o=null,r=null);r&&t.push([r,null]);let h=[];for(let[P,B]of t)P===B?h.push(P):!B&&P===p[0]?h.push("*"):B?P===p[0]?h.push(`<=${B}`):h.push(`${P} - ${B}`):h.push(`>=${P}`);let b=h.join(" || "),I=typeof n.raw=="string"?n.raw:String(n);return b.length<I.length?b:n}});var sr=R((ud,or)=>{var tr=me(),Dt=Ue(),{ANY:Ft}=Dt,Ge=He(),Ut=de(),_a=(e,n,i={})=>{if(e===n)return!0;e=new tr(e,i),n=new tr(n,i);let t=!1;e:for(let r of e.set){for(let o of n.set){let p=ba(r,o,i);if(t=t||p!==null,p)continue e}if(t)return!1}return!0},va=[new Dt(">=0.0.0-0")],ir=[new Dt(">=0.0.0")],ba=(e,n,i)=>{if(e===n)return!0;if(e.length===1&&e[0].semver===Ft){if(n.length===1&&n[0].semver===Ft)return!0;i.includePrerelease?e=va:e=ir}if(n.length===1&&n[0].semver===Ft){if(i.includePrerelease)return!0;n=ir}let t=new Set,r,o;for(let M of e)M.operator===">"||M.operator===">="?r=nr(r,M,i):M.operator==="<"||M.operator==="<="?o=rr(o,M,i):t.add(M.semver);if(t.size>1)return null;let p;if(r&&o){if(p=Ut(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&&!Ge(M,String(r),i)||o&&!Ge(M,String(o),i))return null;for(let Tr of n)if(!Ge(M,String(Tr),i))return!1;return!0}let h,b,I,P,B=o&&!i.includePrerelease&&o.semver.prerelease.length?o.semver:!1,X=r&&!i.includePrerelease&&r.semver.prerelease.length?r.semver:!1;B&&B.prerelease.length===1&&o.operator==="<"&&B.prerelease[0]===0&&(B=!1);for(let M of n){if(P=P||M.operator===">"||M.operator===">=",I=I||M.operator==="<"||M.operator==="<=",r){if(X&&M.semver.prerelease&&M.semver.prerelease.length&&M.semver.major===X.major&&M.semver.minor===X.minor&&M.semver.patch===X.patch&&(X=!1),M.operator===">"||M.operator===">="){if(h=nr(r,M,i),h===M&&h!==r)return!1}else if(r.operator===">="&&!Ge(r.semver,String(M),i))return!1}if(o){if(B&&M.semver.prerelease&&M.semver.prerelease.length&&M.semver.major===B.major&&M.semver.minor===B.minor&&M.semver.patch===B.patch&&(B=!1),M.operator==="<"||M.operator==="<="){if(b=rr(o,M,i),b===M&&b!==o)return!1}else if(o.operator==="<="&&!Ge(o.semver,String(M),i))return!1}if(!M.operator&&(o||r)&&p!==0)return!1}return!(r&&I&&!o&&p!==0||o&&P&&!r&&p!==0||X||B)},nr=(e,n,i)=>{if(!e)return n;let t=Ut(e.semver,n.semver,i);return t>0?e:t<0||n.operator===">"&&e.operator===">="?n:e},rr=(e,n,i)=>{if(!e)return n;let t=Ut(e.semver,n.semver,i);return t<0?e:t>0||n.operator==="<"&&e.operator==="<="?n:e};or.exports=_a});var xt=R((gd,cr)=>{var qt=Ne(),ar=je(),xa=te(),lr=kt(),Ca=Ee(),ya=Mi(),Ia=Ni(),wa=Oi(),$a=Di(),Ea=qi(),Sa=Gi(),ka=Wi(),Ta=Yi(),Pa=de(),Ba=Zi(),Va=tn(),Ma=ut(),Ra=sn(),Na=ln(),Aa=De(),La=gt(),Oa=Pt(),ja=Bt(),Fa=ft(),Da=ht(),Ua=Vt(),qa=_n(),Ha=Ue(),Ga=me(),za=He(),Wa=Vn(),Xa=Rn(),Ya=An(),Ka=jn(),Qa=Dn(),Ja=bt(),Za=Wn(),el=Yn(),tl=Jn(),il=er(),nl=sr();cr.exports={parse:Ca,valid:ya,clean:Ia,inc:wa,diff:$a,major:Ea,minor:Sa,patch:ka,prerelease:Ta,compare:Pa,rcompare:Ba,compareLoose:Va,compareBuild:Ma,sort:Ra,rsort:Na,gt:Aa,lt:La,eq:Oa,neq:ja,gte:Fa,lte:Da,cmp:Ua,coerce:qa,Comparator:Ha,Range:Ga,satisfies:za,toComparators:Wa,maxSatisfying:Xa,minSatisfying:Ya,minVersion:Ka,validRange:Qa,outside:Ja,gtr:Za,ltr:el,intersects:tl,simplifyRange:il,subset:nl,SemVer:xa,re:qt.re,src:qt.src,tokens:qt.t,SEMVER_SPEC_VERSION:ar.SEMVER_SPEC_VERSION,RELEASE_TYPES:ar.RELEASE_TYPES,compareIdentifiers:lr.compareIdentifiers,rcompareIdentifiers:lr.rcompareIdentifiers}});function Mr(e,n){e&1&&(a(0,"div",14),v(1,"i",15),c())}function Rr(e,n){e&1&&(a(0,"div"),v(1,"i",18),a(2,"p"),m(3,"All your plugins are marked as compatible with the new version of Homebridge."),c(),a(4,"p"),m(5,"You are all set to continue below."),c()())}function Nr(e,n){e&1&&(a(0,"div"),v(1,"i",19),a(2,"p"),m(3,"Some of your plugins are not explicitly marked as compatible with the new version of Homebridge."),c(),a(4,"p"),m(5," This does "),a(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(),a(9,"p"),m(10," For more information about this update, please see the "),a(11,"a",21),m(12,"wiki page"),c(),m(13,". "),c(),a(14,"p"),m(15,"To ignore this warning and continue with the update, click continue below."),c()())}function Ar(e,n){e&1&&(a(0,"span"),v(1,"i",24),c())}function Lr(e,n){e&1&&(a(0,"span"),v(1,"i",25),c())}function Or(e,n){if(e&1&&(a(0,"li",22)(1,"span",23),m(2),c(),x(3,Ar,2,0,"span",7)(4,Lr,2,0,"span",7),c()),e&2){let i=n.$implicit;s(2),V(i.name),s(),d("ngIf",i.hb2Ready==="supported"),s(),d("ngIf",i.hb2Ready==="unknown")}}function jr(e,n){if(e&1&&(a(0,"div"),x(1,Rr,6,0,"div",7)(2,Nr,16,0,"div",7),a(3,"ul",16),x(4,Or,5,3,"li",17),c()()),e&2){let i=g();s(),d("ngIf",i.allPluginsSupported),s(),d("ngIf",!i.allPluginsSupported),s(2),d("ngForOf",i.installedPlugins)}}var ci=(()=>{let n=class n{constructor(t,r,o,p,h){l(this,"$activeModal");l(this,"$api");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"loading",!0);l(this,"installedPlugins",[]);l(this,"allPluginsSupported",!0);this.$activeModal=t,this.$api=r,this.$settings=o,this.$toastr=p,this.$translate=h}ngOnInit(){this.loadInstalledPlugins()}loadInstalledPlugins(){return T(this,null,function*(){this.installedPlugins=[],this.loading=!0;let t=this.$settings.env.homebridgeVersion.split(".")[0];try{let r=yield A(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(P=>P.trim()))||[],h=t==="2"?"hide":p.some(P=>P.startsWith("^2")||P.startsWith(">=2"))?"supported":"unknown";return h==="unknown"&&(this.allPluginsSupported=!1),We(ze({},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"))}})}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(Q),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3,"Homebridge v2 Update"),c(),a(4,"button",3),u(5,"translate"),C("click",function(){return o.$activeModal.close("Dismiss")}),a(6,"span",4),m(7,"\xD7"),c()()(),a(8,"div",5),x(9,Mr,2,0,"div",6)(10,jr,5,3,"div",7),c(),a(11,"div",8)(12,"div",9)(13,"button",10),u(14,"translate"),C("click",function(){return o.$activeModal.close("Dismiss")}),m(15),u(16,"translate"),c()(),v(17,"div",11),a(18,"div",12)(19,"button",13),C("click",function(){return o.$activeModal.close("update")}),m(20),u(21,"translate"),c()()()()),r&2&&(s(4),L("aria-label",f(5,7,"form.button_close")),s(5),d("ngIf",o.loading),s(),d("ngIf",!o.loading),s(3),L("aria-label",f(14,9,"form.button_close")),s(2),y(" ",f(16,11,"form.button_close")," "),s(4),d("disabled",o.loading),s(),y(" ",f(21,13,"plugins.node_update.continue")," "))},dependencies:[pe,K,z],encapsulation:2}));let e=n;return e})();var pi=ge(ct(),1);var Fr=["pluginlogoutput"],di=(()=>{let n=class n{constructor(t,r,o,p,h,b){l(this,"$activeModal");l(this,"$api");l(this,"$log");l(this,"$modal");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"termTarget");l(this,"resizeEvent",new $e);l(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(ai,{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,pi.saveAs)(new Blob([p],{type:"text/plain;charset=utf-8"}),`${this.plugin.name}.log.txt`)},error:r=>T(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()}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(si),_(J),_(D),_(F))}),l(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],viewQuery:function(r,o){if(r&1&&Ke(Fr,7),r&2){let p;Qe(p=Je())&&(o.termTarget=p.first)}},hostBindings:function(r,o){r&1&&C("resize",function(h){return o.onWindowResize(h)},!1,Qt)},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=k();a(0,"div",1)(1,"div",2)(2,"h5",3),m(3),c(),a(4,"button",4),u(5,"translate"),C("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),a(6,"span",5),m(7,"\xD7"),c()()(),a(8,"div",6),v(9,"div",7,0),c(),a(11,"div",8)(12,"div",9)(13,"button",10),u(14,"translate"),C("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),m(15),u(16,"translate"),c()(),v(17,"div",11),a(18,"div",12)(19,"button",13),C("click",function(){return w(p),$(o.downloadLogFile())}),m(20),u(21,"translate"),c()()()()}r&2&&(s(3),y("Logs: ",o.plugin.displayName||o.plugin.name,""),s(),L("aria-label",f(5,5,"form.button_close")),s(9),L("aria-label",f(14,7,"form.button_close")),s(2),y(" ",f(16,9,"form.button_close")," "),s(5),V(f(21,11,"form.button_download")))},dependencies:[z],encapsulation:2}));let e=n;return e})();var hi=ge(ct(),1);var _i=ge(Pr(),1),vi=ge(Br(),1);var Ur=(e,n)=>({pluginName:e,targetVersion:n}),mi=()=>["homebridge","homebridge-config-ui-x"];function qr(e,n){e&1&&(a(0,"h3",14),m(1),u(2,"translate"),c()),e&2&&(s(),y(" ",f(2,1,"platform.version.service_restart_required")," "))}function Hr(e,n){e&1&&(a(0,"p",12),m(1),u(2,"translate"),c()),e&2&&(s(),y(" ",f(2,1,"restart.homebridge")," "))}function Gr(e,n){e&1&&(a(0,"p",12),m(1),u(2,"translate"),c()),e&2&&(s(),y(" ",f(2,1,"restart.child_bridges")," "))}function zr(e,n){if(e&1&&(a(0,"div"),x(1,Hr,3,3,"p",15)(2,Gr,3,3,"p",15),c()),e&2){let i=g(3);s(),d("ngIf",he(2,mi).includes(i.pluginName)||i.childBridges.length===0),s(),d("ngIf",!he(3,mi).includes(i.pluginName)&&i.childBridges.length>0)}}function Wr(e,n){if(e&1&&(a(0,"div",16),v(1,"markdown",17),c()),e&2){let i=g(3);s(),d("data",i.changeLog)}}function Xr(e,n){if(e&1&&(a(0,"div"),x(1,qr,3,3,"h3",11),a(2,"p",12),m(3),u(4,"translate"),c(),x(5,zr,3,4,"div",10)(6,Wr,2,1,"div",13),c()),e&2){let i=g(2);s(),d("ngIf",!i.isDisabled),s(2),y(" ",ce(4,4,"plugins.manage.thanks_for_updating",Se(7,Ur,i.pluginName,i.targetVersion))," "),s(2),d("ngIf",!i.isDisabled),s(),d("ngIf",i.changeLog)}}function Yr(e,n){if(e&1&&(a(0,"div",9),x(1,Xr,7,10,"div",10),c()),e&2){let i=g();s(),d("ngIf",i.justUpdatedPlugin)}}function Kr(e,n){if(e&1&&(a(0,"div")(1,"p"),m(2),u(3,"translate"),c(),a(4,"pre",20),m(5),c()()),e&2){let i=g(2);s(2),V(f(3,3,"plugins.manage.manual_update_command")),s(3),Y(`hb-service stop
|
|
5
|
-
npm install -g `,i.pluginName,"@",i.targetVersion,`
|
|
6
|
-
hb-service start
|
|
7
|
-
`)}}function Qr(e,n){if(e&1&&(a(0,"div",18)(1,"h4",19),m(2),u(3,"translate"),c(),a(4,"p"),m(5),u(6,"translate"),c(),x(7,Kr,6,5,"div",10),c()),e&2){let i=g();s(2),V(f(3,3,"plugins.manage.manual_update_required")),s(3),V(f(6,5,"plugins.manage.online_updates")),s(2),d("ngIf",i.$settings.env.serviceMode)}}function Jr(e,n){if(e&1&&(a(0,"span"),m(1),c()),e&2){let i=g(3);s(),y("v",i.installedVersion," \u2192 ")}}function Zr(e,n){if(e&1&&(a(0,"span"),m(1),c()),e&2){let i=g(3);s(),V(i.release.name)}}function eo(e,n){if(e&1&&(a(0,"span"),m(1),c()),e&2){let i=g(3);s(),y("v",i.latestVersion,"")}}function to(e,n){if(e&1&&(a(0,"div",22)(1,"h5",23),x(2,Jr,2,1,"span",10)(3,Zr,2,1,"span",10)(4,eo,2,1,"span",10),c()()),e&2){let i=g(2);s(2),d("ngIf",i.installedVersion),s(),d("ngIf",i.release.name),s(),d("ngIf",!i.release.name)}}function io(e,n){if(e&1&&(a(0,"div",9),x(1,to,5,3,"div",21),a(2,"h5"),m(3),u(4,"translate"),c(),a(5,"div",16),v(6,"markdown",17),c()()),e&2){let i=g();s(),d("ngIf",i.release.name||i.latestVersion),s(2),V(f(4,3,"plugins.manage.release_notes")),s(3),d("data",i.release.changelog)}}function no(e,n){if(e&1){let i=k();a(0,"button",31),u(1,"translate"),C("click",function(){w(i);let r=g(2);return $(r.$activeModal.dismiss("Dismiss"))}),m(2),u(3,"translate"),c()}e&2&&(L("aria-label",f(1,2,"form.button_close")),s(2),y(" ",f(3,4,"form.button_close")," "))}function ro(e,n){if(e&1){let i=k();a(0,"button",31),u(1,"translate"),C("click",function(){w(i);let r=g(2);return $(r.$activeModal.dismiss("Dismiss"))}),m(2),u(3,"translate"),c()}e&2&&(L("aria-label",f(1,2,"form.button_close")),s(2),y(" ",f(3,4,"form.button_close")," "))}function oo(e,n){if(e&1){let i=k();a(0,"button",32),C("click",function(){w(i);let r=g(2);return $(r.update())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"plugins.button_update")," "))}function so(e,n){if(e&1){let i=k();a(0,"button",32),C("click",function(){w(i);let r=g(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&&(s(),y(" ",f(2,1,"menu.tooltip_restart")," "))}function ao(e,n){if(e&1){let i=k();a(0,"button",33),C("click",function(){w(i);let r=g(2);return $(r.downloadLogFile())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"form.button_download")," "))}function lo(e,n){if(e&1&&(a(0,"div",24)(1,"div",25),x(2,no,4,6,"button",26),c(),a(3,"div",27),x(4,ro,4,6,"button",26),c(),a(5,"div",28),x(6,oo,3,3,"button",29)(7,so,3,3,"button",29)(8,ao,3,3,"button",30),c()()),e&2){let i=g();s(2),d("ngIf",!i.justUpdatedPlugin||i.justUpdatedPlugin&&(!i.isDisabled||i.actionFailed)),s(2),d("ngIf",i.justUpdatedPlugin&&i.isDisabled&&!i.actionFailed),s(2),d("ngIf",i.onlineUpdateOk&&i.showReleaseNotes),s(),d("ngIf",i.justUpdatedPlugin&&!i.isDisabled),s(),d("ngIf",i.actionFailed)}}var Re=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,P){l(this,"$activeModal");l(this,"$api");l(this,"$modal");l(this,"$router");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"$ws");l(this,"pluginName");l(this,"targetVersion","latest");l(this,"latestVersion");l(this,"installedVersion");l(this,"isDisabled");l(this,"action");l(this,"actionComplete",!1);l(this,"actionFailed",!1);l(this,"showReleaseNotes",!1);l(this,"justUpdatedPlugin",!1);l(this,"updateToBeta",!1);l(this,"changeLog");l(this,"childBridges",[]);l(this,"release");l(this,"presentTenseVerb");l(this,"pastTenseVerb");l(this,"onlineUpdateOk");l(this,"io");l(this,"toastSuccess");l(this,"term",new _i.Terminal);l(this,"termTarget");l(this,"fitAddon",new vi.FitAddon);l(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=P,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
|
|
8
|
-
`)}),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(ue,{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:()=>T(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 T(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(ci,{size:"lg",backdrop:"static"}).result),t==="update"?this.io.request("homebridge-update",{version:this.targetVersion,termCols:this.term.cols,termRows:this.term.rows}).subscribe({next:()=>{this.$activeModal.close();let r=this.$modal.open(ue,{size:"lg",backdrop:"static"});r.componentInstance.fullRestart=!0},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 T(this,null,function*(){let t=yield A(this.$api.get(`/plugins/changelog/${encodeURIComponent(this.pluginName)}`));this.changeLog=t.changelog})}getChildBridges(){return T(this,null,function*(){if(!this.$settings.env.serviceMode)return;(yield A(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 T(this,null,function*(){try{for(let r of this.childBridges)yield A(this.$api.put(`/server/restart/${r.username}`,{}));let t=this.$modal.open(di,{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,hi.saveAs)(t,`${this.pluginName}-error.log`)}ngOnDestroy(){this.io.end()}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(J),_(ke),_(Q),_(D),_(F),_(it))}),l(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"],[1,"p-2",2,"background-color","#efefef"],["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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),c(),a(4,"button",3),u(5,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(6,"span",4),m(7,"\xD7"),c()()(),v(8,"div",5),x(9,Yr,2,1,"div",6)(10,Qr,8,7,"div",7)(11,io,7,5,"div",6)(12,lo,9,5,"div",8),c()),r&2&&(s(3),Y("",o.presentTenseVerb,": ",o.pluginName,""),s(),L("aria-label",f(5,8,"form.button_close")),s(4),d("hidden",!o.onlineUpdateOk||o.actionComplete||o.showReleaseNotes),s(),d("ngIf",o.actionComplete),s(),d("ngIf",!o.onlineUpdateOk),s(),d("ngIf",o.showReleaseNotes&&!o.actionComplete),s(),d("ngIf",!o.onlineUpdateOk||o.actionComplete||o.showReleaseNotes||o.actionFailed))},dependencies:[K,Be,Ve,z],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 pr=ge(xt(),1);function rl(e,n){e&1&&(a(0,"div",13),v(1,"i",14),c())}function ol(e,n){e&1&&v(0,"i",27)}function sl(e,n){e&1&&v(0,"i",28)}function al(e,n){if(e&1&&(a(0,"p",29),m(1),u(2,"translate"),c()),e&2){let i=g(2);s(),Y(" ",f(2,2,"plugins.status_installed"),": v",i.plugin.installedVersion," ")}}function ll(e,n){if(e&1){let i=k();a(0,"button",32),C("click",function(){w(i);let r=g().$implicit,o=g(2);return $(o.doInstall(r.version))}),v(1,"i",33),c()}}function cl(e,n){e&1&&(a(0,"button",34),v(1,"i",35),c())}function pl(e,n){if(e&1&&(a(0,"li",21)(1,"span",9),m(2),v(3,"br"),a(4,"small",30),m(5),c()(),x(6,ll,2,0,"button",31)(7,cl,2,0,"button",26),c()),e&2){let i=n.$implicit,t=g(2);s(2),y(" ",i.tag," "),s(3),y("v",i.version,""),s(),d("ngIf",t.plugin.installedVersion!==i.version),s(),d("ngIf",t.plugin.installedVersion===i.version)}}function dl(e,n){if(e&1&&(a(0,"option",36),m(1),c()),e&2){let i=n.$implicit;d("value",i.version),s(),y("v",i.version,"")}}function ml(e,n){if(e&1){let i=k();a(0,"button",37),C("click",function(){w(i);let r=g(2);return $(r.doInstall(r.versionSelect))}),v(1,"i",33),c()}if(e&2){let i=g(2);d("disabled",!i.versionSelect)}}function ul(e,n){e&1&&(a(0,"button",34),v(1,"i",35),c())}function gl(e,n){if(e&1){let i=k();a(0,"div",15),x(1,ol,1,0,"i",16)(2,sl,1,0,"i",17)(3,al,3,4,"p",18),a(4,"p"),m(5),u(6,"translate"),c(),a(7,"ul",19),x(8,pl,8,4,"li",20),a(9,"li",21)(10,"div",22),m(11),u(12,"translate"),v(13,"br"),a(14,"select",23),G("ngModelChange",function(r){w(i);let o=g();return H(o.versionSelect,r)||(o.versionSelect=r),$(r)}),x(15,dl,2,2,"option",24),c()(),x(16,ml,2,1,"button",25)(17,ul,2,0,"button",26),c()()()}if(e&2){let i=g();s(),d("ngIf",i.plugin.installedVersion),s(),d("ngIf",!i.plugin.installedVersion),s(),d("ngIf",i.plugin.installedVersion),s(2),y("",f(6,10,"plugins.manage.select_version"),":"),s(3),d("ngForOf",i.versionsWithTags),s(3),y(" ",f(12,12,"plugins.manage.all_versions")," "),s(3),q("ngModel",i.versionSelect),s(),d("ngForOf",i.versions),s(),d("ngIf",i.versionSelect!==i.plugin.installedVersion),s(),d("ngIf",i.versionSelect&&i.versionSelect===i.plugin.installedVersion)}}var dr=(()=>{let n=class n{constructor(t,r,o,p){l(this,"$activeModal");l(this,"$api");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"loading",!0);l(this,"versions",[]);l(this,"versionsWithTags",[]);l(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,pr.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"})}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5),x(10,rl,2,0,"div",6)(11,gl,18,14,"div",7),c(),a(12,"div",8),v(13,"div",9),a(14,"div",10)(15,"button",11),u(16,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(17),u(18,"translate"),c()(),v(19,"div",12),c()()),r&2&&(s(3),Y("",f(4,7,"plugins.manage.install"),": ",o.plugin.displayName||o.plugin.name,""),s(2),L("aria-label",f(6,9,"form.button_close")),s(5),d("ngIf",o.loading),s(),d("ngIf",!o.loading),s(4),L("aria-label",f(16,11,"form.button_close")),s(2),y(" ",f(18,13,"form.button_close")," "))},dependencies:[pe,K,ii,ni,ti,Ce,ye,z],encapsulation:2}));let e=n;return e})();var kr=ge(Vr(),1);var fl=(e,n)=>({"green-text":e,"red-text":n});function hl(e,n){if(e&1){let i=k();a(0,"button",15),u(1,"translate"),C("click",function(){w(i);let r=g();return $(r.$activeModal.close("Dismiss"))}),a(2,"span",16),m(3,"\xD7"),c()()}if(e&2){let i=g();d("disabled",i.saveInProgress),L("aria-label",f(1,2,"form.button_close"))}}function _l(e,n){if(e&1&&(a(0,"span"),m(1),c()),e&2){let i=g().$implicit;s(),y(" - ",i._bridge.name,"")}}function vl(e,n){e&1&&(a(0,"div")(1,"ngb-alert",26),m(2),u(3,"translate"),v(4,"br"),m(5),u(6,"translate"),c()()),e&2&&(s(),d("dismissible",!1),s(),y(" ",f(3,3,"child_bridge.restart_homebridge")," "),s(3),y("",f(6,5,"child_bridge.return_to_pair")," "))}function bl(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),y(" \xB7 ",f(2,1,"status.code_scan")," "))}function xl(e,n){if(e&1){let i=k();a(0,"div",39)(1,"span"),m(2),u(3,"translate"),a(4,"code"),m(5,"-D"),c()(),a(6,"input",48),u(7,"translate"),G("ngModelChange",function(r){w(i);let o=g(5).$implicit;return H(o._bridge.debugModeEnabled,r)||(o._bridge.debugModeEnabled=r),$(r)}),c(),v(8,"label",49),c()}if(e&2){let i=g(5),t=i.$implicit,r=i.index;s(2),y("",f(3,5,"child_bridge.config.debug")," "),s(4),d("id","homebridgeDebugMode_"+r),q("ngModel",t._bridge.debugModeEnabled),L("aria-label",f(7,7,"settings.startup.debug")),s(2),d("for","homebridgeDebugMode_"+r)}}function Cl(e,n){if(e&1){let i=k();a(0,"div",37)(1,"div",38),m(2),u(3,"translate"),c(),a(4,"div",39)(5,"span",40),m(6),u(7,"translate"),c(),a(8,"div",41)(9,"input",42),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.name,r)||(o._bridge.name=r),$(r)}),c()()(),a(10,"div",39)(11,"span",40),m(12),u(13,"translate"),c(),a(14,"div",41)(15,"input",42),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.manufacturer,r)||(o._bridge.manufacturer=r),$(r)}),c()()(),a(16,"div",39)(17,"span",40),m(18),u(19,"translate"),c(),a(20,"div",41)(21,"input",42),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.model,r)||(o._bridge.model=r),$(r)}),c()()(),a(22,"div",39)(23,"span",40),m(24),u(25,"translate"),c(),a(26,"div",41)(27,"input",42),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.firmwareRevision,r)||(o._bridge.firmwareRevision=r),$(r)}),c()()(),x(28,xl,9,9,"div",43),a(29,"div",39)(30,"span",40)(31,"span",44),m(32,"DEBUG"),c(),v(33,"br"),a(34,"small",45),m(35),u(36,"translate"),c()(),a(37,"div",41)(38,"input",46),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.env.DEBUG,r)||(o._bridge.env.DEBUG=r),$(r)}),c()()(),a(39,"div",39)(40,"span",40)(41,"span",44),m(42,"NODE_OPTIONS"),c(),v(43,"br"),a(44,"small",45),m(45),u(46,"translate"),c()(),a(47,"div",41)(48,"input",47),G("ngModelChange",function(r){w(i);let o=g(4).$implicit;return H(o._bridge.env.NODE_OPTIONS,r)||(o._bridge.env.NODE_OPTIONS=r),$(r)}),c()()()()}if(e&2){let i=g(4),t=i.$implicit,r=i.index,o=g(3);d("id","configFields_"+r),s(2),V(f(3,15,"child_bridge.config.description")),s(4),V(f(7,17,"child_bridge.config.name")),s(3),q("ngModel",t._bridge.name),s(3),V(f(13,19,"child_bridge.config.manufacturer")),s(3),q("ngModel",t._bridge.manufacturer),s(3),V(f(19,21,"child_bridge.config.model")),s(3),q("ngModel",t._bridge.model),s(3),V(f(25,23,"child_bridge.config.firmware")),s(3),q("ngModel",t._bridge.firmwareRevision),s(),d("ngIf",o.canShowBridgeDebug),s(7),V(f(36,25,"settings.service.debug_tooltip")),s(3),q("ngModel",t._bridge.env.DEBUG),s(7),V(f(46,27,"settings.service.node_tooltip")),s(3),q("ngModel",t._bridge.env.NODE_OPTIONS)}}function yl(e,n){if(e&1){let i=k();a(0,"div")(1,"div",33),C("click",function(){w(i);let r=g(3).index,o=g(3);return $(o.toggleConfigFields(r))}),a(2,"h5",34),v(3,"i",35),m(4),u(5,"translate"),c()(),x(6,Cl,49,29,"div",36),c()}if(e&2){let i=g(3).index,t=g(3);s(),L("aria-expanded",t.showConfigFields[i]?"true":"false")("aria-controls","configFields_"+i),s(2),d("ngClass",t.showConfigFields[i]?"fa-chevron-down":"fa-chevron-right"),s(),y(" ",f(5,5,"child_bridge.config.header")," "),s(2),d("ngIf",t.showConfigFields[i])}}function Il(e,n){if(e&1&&(a(0,"div",27)(1,"div",28),v(2,"app-qrcode",29),a(3,"p",30),m(4),c(),a(5,"p",31),v(6,"i",32),m(7),u(8,"translate"),x(9,bl,3,3,"span",7),c()(),x(10,yl,7,7,"div",7),c()),e&2){let i=g(2).$implicit,t=g(3);s(2),d("data",t.deviceInfo[i._bridge==null?null:i._bridge.username]._setupCode),s(2),V(t.deviceInfo[i._bridge==null?null:i._bridge.username].pincode),s(2),d("ngClass",Se(8,fl,t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired,!t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired)),s(),y(" ",f(8,6,t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),s(2),d("ngIf",!t.deviceInfo[i._bridge==null?null:i._bridge.username]._isPaired),s(),d("ngIf",t.$settings.env.serviceMode)}}function wl(e,n){if(e&1&&(a(0,"div"),x(1,vl,7,7,"div",7)(2,Il,11,11,"div",25),c()),e&2){let i=g().$implicit,t=g(3);s(),d("ngIf",t.deviceInfo[i._bridge==null?null:i._bridge.username]===!1),s(),d("ngIf",t.deviceInfo[i._bridge==null?null:i._bridge.username])}}function $l(e,n){if(e&1){let i=k();a(0,"li",20)(1,"div",21)(2,"h5",22)(3,"strong"),m(4),x(5,_l,2,1,"span",7),c()(),a(6,"input",23),C("change",function(){let r=w(i),o=r.$implicit,p=r.index,h=g(3);return $(h.toggleExternalBridge(o,h.enabledBlocks[p],p))}),G("ngModelChange",function(r){let o=w(i).index,p=g(3);return H(p.enabledBlocks[o],r)||(p.enabledBlocks[o]=r),$(r)}),c(),v(7,"label",24),c(),x(8,wl,3,2,"div",7),c()}if(e&2){let i=n.$implicit,t=n.index,r=g(3);s(4),y(" ",i.name||i.accessory||i.platform," "),s(),d("ngIf",r.enabledBlocks[t]&&(i._bridge==null?null:i._bridge.name)),s(),d("id","toggleExternalBridgeInput_"+t),q("ngModel",r.enabledBlocks[t]),s(),d("for","toggleExternalBridgeInput_"+t),s(),d("ngIf",i._bridge==null?null:i._bridge.username)}}function El(e,n){if(e&1&&(a(0,"ul",18),x(1,$l,9,6,"li",19),c()),e&2){let i=g(2);s(),d("ngForOf",i.configBlocks)}}function Sl(e,n){if(e&1&&(a(0,"div")(1,"p"),m(2),u(3,"translate"),c(),a(4,"p"),m(5),u(6,"translate"),c(),x(7,El,2,1,"ul",17),c()),e&2){let i=g();s(2),V(f(3,3,"child_bridge.bridges_paired")),s(3),y("",f(6,5,"child_bridge.select_type"),":"),s(2),d("ngIf",i.configBlocks.length)}}function kl(e,n){e&1&&(a(0,"ngb-alert",50),m(1),u(2,"translate"),c()),e&2&&(d("dismissible",!1),s(),y(" ",f(2,2,"child_bridge.must_configure_plugin")," "))}function Tl(e,n){if(e&1){let i=k();a(0,"div",51)(1,"ngb-alert",50),m(2),u(3,"translate"),u(4,"translate"),c(),a(5,"div",13)(6,"button",52),C("click",function(){w(i);let r=g();return $(r.openFullConfigEditor())}),m(7),u(8,"translate"),c()()()}e&2&&(s(),d("dismissible",!1),s(),Y(" ",f(3,4,"plugins.settings.message_manual_config_required")," ",f(4,6,"plugins.settings.message_consult_documentation")," "),s(5),y(" ",f(8,8,"plugins.settings.label_open_config_editor")," "))}function Pl(e,n){if(e&1){let i=k();a(0,"button",53),C("click",function(){w(i);let r=g();return $(r.$activeModal.close("Dismiss"))}),m(1),u(2,"translate"),c()}if(e&2){let i=g();d("disabled",i.saveInProgress),s(),y(" ",f(2,2,"form.button_close")," ")}}function Bl(e,n){e&1&&v(0,"i",56)}function Vl(e,n){if(e&1){let i=k();a(0,"div")(1,"button",54),C("click",function(){w(i);let r=g();return $(r.save())}),m(2),u(3,"translate"),x(4,Bl,1,0,"i",55),c()()}if(e&2){let i=g();s(),d("disabled",i.saveInProgress),s(),y(" ",f(3,3,"form.button_save")," "),s(2),d("ngIf",i.saveInProgress)}}function Ml(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"form.button_save")))}function Rl(e,n){e&1&&v(0,"i",56)}function Nl(e,n){if(e&1){let i=k();a(0,"button",54),C("click",function(){w(i);let r=g(2);return $(r.save())}),x(1,Ml,3,3,"span",7)(2,Rl,1,0,"i",55),c()}if(e&2){let i=g(2);d("disabled",i.saveInProgress),s(),d("ngIf",!i.saveInProgress),s(),d("ngIf",i.saveInProgress)}}function Al(e,n){if(e&1){let i=k();a(0,"button",59),C("click",function(){w(i);let r=g(2);return $(r.openPluginConfig())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"plugins.button_settings")," "))}function Ll(e,n){if(e&1&&(a(0,"div"),x(1,Nl,3,3,"button",57)(2,Al,3,3,"button",58),c()),e&2){let i=g();s(),d("ngIf",i.configBlocks.length),s(),d("ngIf",!i.configBlocks.length)}}var mr=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,P){l(this,"$activeModal");l(this,"$api");l(this,"$modal");l(this,"$plugins");l(this,"$router");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"schema");l(this,"justInstalled",!1);l(this,"canConfigure",!0);l(this,"configBlocks",[]);l(this,"enabledBlocks",{});l(this,"bridgeCache",new Map);l(this,"deviceInfo",new Map);l(this,"showConfigFields",[]);l(this,"saveInProgress",!1);l(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=P}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 T(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 T(this,null,function*(){this.saveInProgress=!0;try{return(yield A(this.$api.get("/server/port/new"))).port}catch{return Math.floor(Math.random()*30001+3e4)}finally{this.saveInProgress=!1}})}getDeviceInfo(t){return T(this,null,function*(){try{this.deviceInfo[t]=yield A(this.$api.get(`/server/pairings/${t.replace(/:/g,"")}`))}catch(r){console.error(r),this.deviceInfo[t]=!1}})}save(){return T(this,null,function*(){this.saveInProgress=!0;try{yield A(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,this.configBlocks)),this.$activeModal.close(),this.$modal.open(ue,{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]}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(J),_(we),_(ke),_(Q),_(D),_(F))}),l(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"],[1,"w-100","d-flex","flex-column","text-center"],[1,"mx-auto","my-2",2,"width","120px","height","120px",3,"data"],[1,"mx-auto","my-1"],[1,"grey-text","mx-auto","small","mb-1",2,"max-width","400px"],[1,"fas","fa-fw","fa-link",3,"ngClass"],["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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),x(5,hl,4,4,"button",3),c(),a(6,"div",4)(7,"p"),m(8),u(9,"translate"),a(10,"a",5),m(11),u(12,"translate"),v(13,"i",6),c()(),x(14,Sl,8,7,"div",7)(15,kl,3,4,"ngb-alert",8)(16,Tl,9,10,"div",9),c(),a(17,"div",10)(18,"div",11),x(19,Pl,3,4,"button",12),c(),a(20,"div",13),x(21,Vl,5,5,"div",7),c(),a(22,"div",14),x(23,Ll,3,2,"div",7),c()()()),r&2&&(s(3),Y(" ",f(4,11,"child_bridge.bridge_settings"),": ",o.plugin.displayName||o.plugin.name," "),s(2),d("ngIf",!o.justInstalled),s(3),y(" ",f(9,13,"child_bridge.about")," "),s(3),y(" ",f(12,15,"child_bridge.wiki_link")," "),s(3),d("ngIf",o.configBlocks.length),s(),d("ngIf",!o.configBlocks.length&&o.canConfigure),s(),d("ngIf",!o.canConfigure),s(3),d("ngIf",!o.justInstalled),s(2),d("ngIf",o.justInstalled),s(2),d("ngIf",!o.justInstalled))},dependencies:[Ze,pe,K,ei,tt,Ce,ye,Te,oi,z],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 Gt=ge(xt(),1);var yt=()=>["homebridge","homebridge-config-ui-x"],ur=(e,n,i)=>({pluginName:e,minVersion:n,installedVersion:i}),Ol=()=>({packageName:"Homebridge"}),jl=(e,n,i)=>({minVersion:e,installedVersion:n,latestVersion:i,packageName:"Homebridge"}),Fl=()=>({packageName:"Homebridge UI"}),Dl=(e,n,i)=>({minVersion:e,installedVersion:n,latestVersion:i,packageName:"Homebridge UI"});function Ul(e,n){if(e&1&&(a(0,"li"),m(1),u(2,"translate"),a(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=g(2);s(),y(" ",ce(2,2,"plugins.compat.node_too_low",Oe(7,ur,i.plugin.name,i.nodeMinVersion,i.nodeInstalledVersion))," "),s(3),y(" ",f(5,5,"plugins.compat.node_link")," ")}}function ql(e,n){if(e&1&&(a(0,"li"),m(1),u(2,"translate"),c()),e&2){let i=g(2);s(),y(" ",ce(2,1,"plugins.compat.hb_too_low",Oe(4,ur,i.plugin.name,i.hbMinVersion,i.hbInstalledVersion))," ")}}function Hl(e,n){if(e&1&&(a(0,"div",13),v(1,"i",14),a(2,"ul",8),x(3,Ul,7,11,"li",15)(4,ql,3,8,"li",15),c(),a(5,"p"),m(6),u(7,"translate"),c()()),e&2){let i=g();s(),Jt("",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"),s(2),d("ngIf",!i.isValidNode),s(),d("ngIf",!i.isValidHb),s(2),V(f(7,6,"plugins.compat.are_you_sure"))}}function Gl(e,n){if(e&1&&(a(0,"li"),m(1),u(2,"translate"),a(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=g(2);s(),y(" ",ce(2,2,"plugins.compat.hb_node_too_low",Oe(7,jl,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),s(3),y(" ",f(5,5,"plugins.compat.node_link")," ")}}function zl(e,n){if(e&1&&(a(0,"div",13),v(1,"i",18),a(2,"ul",8),x(3,Gl,7,11,"li",15),c(),a(4,"p"),m(5),u(6,"translate"),c()()),e&2){let i=g();s(3),d("ngIf",!i.isValidNode),s(2),V(ce(6,2,"plugins.compat.node_first",he(5,Ol)))}}function Wl(e,n){if(e&1&&(a(0,"li"),m(1),u(2,"translate"),a(3,"a",16),m(4),u(5,"translate"),v(6,"i",17),c()()),e&2){let i=g(2);s(),y(" ",ce(2,2,"plugins.compat.hb_node_too_low",Oe(7,Dl,i.nodeMinVersion,i.nodeInstalledVersion,i.plugin.latestVersion))," "),s(3),y(" ",f(5,5,"plugins.compat.node_link")," ")}}function Xl(e,n){if(e&1&&(a(0,"div",13),v(1,"i",19),a(2,"ul",8),x(3,Wl,7,11,"li",15),c(),a(4,"p"),m(5),u(6,"translate"),c()()),e&2){let i=g();s(3),d("ngIf",!i.isValidNode),s(2),V(ce(6,2,"plugins.compat.node_first",he(5,Fl)))}}function Yl(e,n){if(e&1){let i=k();a(0,"button",20),C("click",function(){w(i);let r=g();return $(r.$activeModal.dismiss("Dismiss"))}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"form.button_close")," "))}function Kl(e,n){if(e&1){let i=k();a(0,"button",20),C("click",function(){w(i);let r=g();return $(r.$activeModal.dismiss("Dismiss"))}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"form.button_close")," "))}function Ql(e,n){if(e&1){let i=k();a(0,"button",21),C("click",function(){w(i);let r=g();return $(r.$activeModal.close(!0))}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"plugins.node_update.continue")," "))}var gr=(()=>{let n=class n{constructor(t,r){l(this,"$activeModal");l(this,"$settings");l(this,"plugin");l(this,"isValidNode");l(this,"isValidHb");l(this,"action");l(this,"nodeMinVersion");l(this,"nodeInstalledVersion");l(this,"hbMinVersion");l(this,"hbInstalledVersion");this.$activeModal=t,this.$settings=r}ngOnInit(){var t,r;this.nodeMinVersion=(0,Gt.minVersion)((t=this.plugin.updateEngines)==null?void 0:t.node),this.nodeInstalledVersion=this.$settings.env.nodeVersion,this.hbMinVersion=(0,Gt.minVersion)((r=this.plugin.updateEngines)==null?void 0:r.homebridge),this.hbInstalledVersion=this.$settings.env.homebridgeVersion}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(Q))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5),x(10,Hl,8,8,"div",6)(11,zl,7,6,"div",6)(12,Xl,7,6,"div",6),c(),a(13,"div",7)(14,"div",8),x(15,Yl,3,3,"button",9),c(),a(16,"div",10),x(17,Kl,3,3,"button",9),c(),a(18,"div",11),x(19,Ql,3,3,"button",12),c()()()),r&2&&(s(3),V(f(4,8,"plugins.compat.title")),s(2),L("aria-label",f(6,10,"form.button_close")),s(5),d("ngIf",!he(12,yt).includes(o.plugin.name)),s(),d("ngIf",o.plugin.name==="homebridge"),s(),d("ngIf",o.plugin.name==="homebridge-config-ui-x"),s(3),d("ngIf",!he(13,yt).includes(o.plugin.name)),s(2),d("ngIf",he(14,yt).includes(o.plugin.name)),s(2),d("ngIf",!he(15,yt).includes(o.plugin.name)))},dependencies:[K,z],encapsulation:2}));let e=n;return e})();var Z=[];for(let e=0;e<256;++e)Z.push((e+256).toString(16).slice(1));function fr(e,n=0){return(Z[e[n+0]]+Z[e[n+1]]+Z[e[n+2]]+Z[e[n+3]]+"-"+Z[e[n+4]]+Z[e[n+5]]+"-"+Z[e[n+6]]+Z[e[n+7]]+"-"+Z[e[n+8]]+Z[e[n+9]]+"-"+Z[e[n+10]]+Z[e[n+11]]+Z[e[n+12]]+Z[e[n+13]]+Z[e[n+14]]+Z[e[n+15]]).toLowerCase()}var zt,Jl=new Uint8Array(16);function Wt(){if(!zt){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");zt=crypto.getRandomValues.bind(crypto)}return zt(Jl)}var Zl=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Xt={randomUUID:Zl};function ec(e,n,i){if(Xt.randomUUID&&!n&&!e)return Xt.randomUUID();e=e||{};let t=e.random||(e.rng||Wt)();if(t[6]=t[6]&15|64,t[8]=t[8]&63|128,n){i=i||0;for(let r=0;r<16;++r)n[i+r]=t[r];return n}return fr(t)}var It=ec;var hr=ge(ct(),1);var _r=(()=>{let n=class n{constructor(t,r,o){l(this,"$api");l(this,"$toastr");l(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,hr.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"))}})}};l(n,"\u0275fac",function(r){return new(r||n)(_(O),_(D),_(F))}),l(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&&(a(0,"button",0),C("click",function(){return o.downloadDumpFile()}),v(1,"i",1),m(2,` Download Dump File
|
|
9
|
-
`),c())},encapsulation:2}));let e=n;return e})();var vr=ge(ct(),1);var br=(()=>{let n=class n{constructor(t,r,o){l(this,"$api");l(this,"$translate");l(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,vr.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"))}})}};l(n,"\u0275fac",function(r){return new(r||n)(_(O),_(F),_(D))}),l(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&&(a(0,"button",0),C("click",function(){return o.downloadDumpFile()}),v(1,"i",1),m(2,` Download Dump File
|
|
10
|
-
`),c())},encapsulation:2}));let e=n;return e})();var xr=(()=>{let n=class n{transform(t){return t.replace(/\$\{\{HOSTNAME\}\}/g,location.hostname)}};l(n,"\u0275fac",function(r){return new(r||n)}),l(n,"\u0275pipe",Kt({name:"interpolateMd",type:n,pure:!0}));let e=n;return e})();function rc(e,n){if(e&1&&(v(0,"markdown",20),u(1,"interpolateMd")),e&2){let i=g();d("data",f(1,1,i.schema.headerDisplay))}}function oc(e,n){if(e&1){let i=k();a(0,"button",32),u(1,"translate"),C("click",function(){w(i);let r=g().$implicit,o=g(2);return $(o.removeBlock(r.__uuid__))}),v(2,"i",33),c()}e&2&&d("ngbTooltip",f(1,1,"form.button_delete"))}function sc(e,n){if(e&1){let i=k();a(0,"div",23)(1,"div",24)(2,"div",25)(3,"h5",26),m(4),c(),a(5,"div"),x(6,oc,3,3,"button",16),a(7,"button",27),u(8,"translate"),v(9,"i",28),c()()()(),a(10,"div",29)(11,"div",30)(12,"app-schema-form",31),G("dataChange",function(r){let o=w(i).$implicit;return H(o.config,r)||(o.config=r),$(r)}),c()()()()}if(e&2){let i=n.$implicit,t=g(2);d("ngbAccordionItem",i.__uuid__)("collapsed",t.show!==i.__uuid__)("id",i.__uuid__),s(4),V(i.name),s(2),d("ngIf",t.plugin.name!=="homebridge-config-ui-x"&&t.show===i.__uuid__),s(),d("ngbTooltip",f(8,8,"form.button_edit")),s(5),d("configSchema",t.schema),q("data",i.config)}}function ac(e,n){if(e&1){let i=k();a(0,"div",21),C("show",function(r){w(i);let o=g();return $(o.blockShown(r))})("hide",function(r){w(i);let o=g();return $(o.blockHidden(r))}),x(1,sc,13,10,"div",22),c()}if(e&2){let i=g();d("closeOthers",!0),s(),d("ngForOf",i.pluginConfig)}}function lc(e,n){e&1&&v(0,"app-homebridge-deconz")}function cc(e,n){e&1&&v(0,"app-homebridge-hue")}function pc(e,n){if(e&1){let i=k();a(0,"div",34)(1,"app-schema-form",31),G("dataChange",function(r){w(i);let o=g();return H(o.pluginConfig[0].config,r)||(o.pluginConfig[0].config=r),$(r)}),c(),x(2,lc,1,0,"app-homebridge-deconz",18)(3,cc,1,0,"app-homebridge-hue",18),c()}if(e&2){let i=g();s(),d("configSchema",i.schema),q("data",i.pluginConfig[0].config),s(),d("ngIf",i.plugin.name==="homebridge-deconz"),s(),d("ngIf",i.plugin.name==="homebridge-hue")}}function dc(e,n){if(e&1&&(v(0,"markdown",20),u(1,"interpolateMd")),e&2){let i=g();d("data",f(1,1,i.schema.footerDisplay))}}function mc(e,n){if(e&1){let i=k();a(0,"button",35),C("click",function(){w(i);let r=g();return $(r.addBlock())}),v(1,"i",36),c()}}function uc(e,n){if(e&1){let i=k();a(0,"button",32),u(1,"translate"),C("click",function(){w(i);let r=g();return $(r.removeBlock(r.pluginConfig[0].__uuid__))}),v(2,"i",33),c()}e&2&&d("ngbTooltip",f(1,1,"form.button_delete"))}function gc(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"form.button_save")))}function fc(e,n){e&1&&v(0,"i",37)}var yr=(()=>{let n=class n{constructor(t,r,o,p,h,b,I){l(this,"$activeModal");l(this,"$api");l(this,"$plugin");l(this,"$modal");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"schema");l(this,"pluginAlias");l(this,"pluginType");l(this,"pluginConfig",[]);l(this,"form",{});l(this,"show","");l(this,"saveInProgress");l(this,"childBridges",[]);l(this,"isFirstSave",!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.loadPluginConfig()}loadPluginConfig(){this.$api.get(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`).subscribe({next:t=>{for(let r of t){let o={__uuid__:It(),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 T(this,null,function*(){var r;this.saveInProgress=!0;let t=this.pluginConfig.map(o=>o.config);try{let o=yield A(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)&&this.$settings.env.serviceMode&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let p=this.$modal.open(Ie,{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(ue,{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=It();this.pluginConfig.push({__uuid__:t,name:this.schema.pluginAlias,config:{[this.pluginType]:this.schema.pluginAlias}}),this.blockShown(t)}removeBlock(t){let r=this.pluginConfig.findIndex(o=>o.__uuid__===t);this.pluginConfig.splice(r,1)}getChildBridges(){return T(this,null,function*(){try{(yield A(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"}}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(we),_(J),_(Q),_(D),_(F))}),l(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],inputs:{plugin:"plugin",schema:"schema"},decls:28,vars:21,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"],["type","button","class","btn btn-elegant","data-dismiss","modal",3,"click",4,"ngIf"],["class","btn btn-danger ml-2","container","modal","openDelay","150","triggers","hover",3,"ngbTooltip","click",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"],["ngbAccordionButton","","container","modal","openDelay","150","triggers","hover",1,"btn","btn-primary","ml-2",3,"ngbTooltip"],[1,"fa","fa-fw","fa-edit"],["ngbAccordionCollapse",""],["ngbAccordionBody","",1,"card-body"],[3,"dataChange","configSchema","data"],["container","modal","openDelay","150","triggers","hover",1,"btn","btn-danger","ml-2",3,"click","ngbTooltip"],[1,"fa","fa-fw","fa-trash"],[1,"card","card-body"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"fa","fa-fw","fa-plus"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){r&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.close("Dismiss")}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5)(10,"div"),x(11,rc,2,3,"markdown",6),c(),x(12,ac,2,2,"div",7)(13,pc,4,4,"div",8),a(14,"div",9),x(15,dc,2,3,"markdown",6),c()(),a(16,"div",10)(17,"div",11)(18,"button",12),C("click",function(){return o.$activeModal.close()}),m(19),u(20,"translate"),c()(),v(21,"div",13),a(22,"div",14),x(23,mc,2,0,"button",15)(24,uc,3,3,"button",16),a(25,"button",17),C("click",function(){return o.save()}),x(26,gc,3,3,"span",18)(27,fc,1,0,"i",19),c()()()()),r&2&&(s(3),Y(" ",f(4,15,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),s(2),d("disabled",o.saveInProgress),L("aria-label",f(6,17,"form.button_close")),s(6),d("ngIf",o.schema.headerDisplay),s(),d("ngIf",o.pluginConfig.length&&!o.schema.singular),s(),d("ngIf",o.pluginConfig.length&&o.schema.singular),s(2),d("ngIf",o.schema.footerDisplay),s(3),d("disabled",o.saveInProgress),s(),y(" ",f(20,19,"form.button_close")," "),s(4),d("ngIf",!o.schema.singular||o.pluginConfig.length===0),s(),d("ngIf",o.plugin.name!=="homebridge-config-ui-x"&&o.schema.singular&&o.pluginConfig.length>0),s(),d("disabled",o.saveInProgress),s(),d("ngIf",!o.saveInProgress),s(),d("ngIf",o.saveInProgress))},dependencies:[pe,K,ot,lt,at,st,nt,rt,Pe,Be,Me,Ve,_r,br,z,xr],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 hc=(e,n)=>({"fa-broom":e,"fa-cog fa-spin":n});function _c(e,n){e&1&&(a(0,"div",10),v(1,"i",13),a(2,"p",14),m(3),u(4,"translate"),c()()),e&2&&(s(3),V(f(4,1,"reset.clear_cache_bridge.empty")))}function vc(e,n){if(e&1){let i=k();a(0,"li",21)(1,"span"),m(2),u(3,"titlecase"),v(4,"br"),a(5,"small",22),m(6),c()(),a(7,"button",23),C("click",function(){let r=w(i).$implicit,o=g(2);return $(o.removeAccessories(r._id))}),v(8,"i",24),c()()}if(e&2){let i=n.$implicit,t=g(2);s(2),Y(" ",i.displayName," (",i._main?"Homebridge":f(3,5,i._category),") "),s(4),V(i._username),s(),d("disabled",t.deleting||t.deleted.includes(i._id)),s(),d("ngClass",Se(7,hc,i._id!==t.deleting,i._id===t.deleting))}}function bc(e,n){if(e&1&&(a(0,"div")(1,"div",15),v(2,"i",16),c(),a(3,"ngb-alert",17)(4,"ul",18)(5,"li"),m(6),u(7,"translate"),c(),a(8,"li"),m(9),u(10,"translate"),c(),a(11,"li"),m(12),u(13,"translate"),c()()(),a(14,"ul",19),x(15,vc,9,10,"li",20),c()()),e&2){let i=g();s(3),d("dismissible",!1),s(3),V(f(7,5,"reset.clear_cache_bridge.list_1")),s(3),V(f(10,7,"reset.clear_cache_single.list_3")),s(3),V(f(13,9,"child_bridge.reset_accessories_list")),s(3),d("ngForOf",i.pairings)}}var Ir=(()=>{let n=class n{constructor(t,r,o,p,h){l(this,"$activeModal");l(this,"$api");l(this,"$modal");l(this,"$toastr");l(this,"$translate");l(this,"childBridges",[]);l(this,"pairings",[]);l(this,"deleting",null);l(this,"deleted",[]);this.$activeModal=t,this.$api=r,this.$modal=o,this.$toastr=p,this.$translate=h}ngOnInit(){this.loadPairings()}loadPairings(){return T(this,null,function*(){try{this.pairings=(yield A(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:()=>T(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(Ie,{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}})}}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(J),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5),x(10,_c,5,3,"div",6)(11,bc,16,11,"div",7),c(),a(12,"div",8),v(13,"div",9),a(14,"div",10)(15,"button",11),u(16,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(17),u(18,"translate"),c()(),v(19,"div",12),c()()),r&2&&(s(3),V(f(4,6,"child_bridge.reset_accessories")),s(2),L("aria-label",f(6,8,"form.button_close")),s(5),d("ngIf",o.pairings.length===0),s(),d("ngIf",o.pairings.length>0),s(4),L("aria-label",f(16,10,"form.button_close")),s(2),y(" ",f(18,12,"form.button_close")," "))},dependencies:[Ze,pe,K,Te,et,z],encapsulation:2}));let e=n;return e})();var xc=e=>({pluginName:e}),Cc=e=>({count:e});function yc(e,n){e&1&&(a(0,"div",16),v(1,"i",17),c())}function Ic(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"plugins.uninstall_unpair_child_bridge")))}function wc(e,n){if(e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2){let i=g(4);s(),y(" ",ce(2,1,"plugins.uninstall_unpair_child_bridges",$t(4,Cc,i.childBridges.length))," ")}}function $c(e,n){if(e&1){let i=k();a(0,"label",28)(1,"input",29),G("ngModelChange",function(r){w(i);let o=g(3);return H(o.removeChildBridges,r)||(o.removeChildBridges=r),$(r)}),c(),x(2,Ic,3,3,"span",14)(3,wc,3,6,"span",14),v(4,"span",26),c()}if(e&2){let i=g(3);s(),q("ngModel",i.removeChildBridges),s(),d("ngIf",i.childBridges.length===1),s(),d("ngIf",i.childBridges.length>1)}}function Ec(e,n){if(e&1){let i=k();a(0,"p",23)(1,"label",24)(2,"input",25),G("ngModelChange",function(r){w(i);let o=g(2);return H(o.removeConfig,r)||(o.removeConfig=r),$(r)}),c(),a(3,"span"),m(4),u(5,"translate"),c(),v(6,"span",26),c(),x(7,$c,5,3,"label",27),c()}if(e&2){let i=g(2);s(2),q("ngModel",i.removeConfig),s(2),V(f(5,3,"plugins.uninstall_remove_plugin_config")),s(3),d("ngIf",i.$settings.env.serviceMode&&i.hasChildBridges)}}function Sc(e,n){e&1&&(a(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),s(),y(" ",f(2,3,"reset.bridges_single.list_1"),""),s(4),y(" ",f(6,5,"reset.bridges_single.list_2")," "))}function kc(e,n){e&1&&(a(0,"ngb-alert",31),m(1),u(2,"translate"),c()),e&2&&(d("dismissible",!1),s(),y(" ",f(2,2,"plugins.uninstall_remove_config_required")," "))}function Tc(e,n){if(e&1&&(a(0,"div",18),v(1,"i",19),a(2,"p"),m(3),u(4,"translate"),c(),a(5,"div",11),x(6,Ec,8,5,"p",20),c(),x(7,Sc,7,7,"ngb-alert",21)(8,kc,3,4,"ngb-alert",22),c()),e&2){let i=g();s(3),V(ce(4,4,"plugins.uninstall_remove_confirmation",$t(7,xc,i.plugin.name))),s(3),d("ngIf",i.pluginAlias&&i.pluginType),s(),d("ngIf",i.hasChildBridges&&i.removeChildBridges),s(),d("ngIf",!i.pluginAlias||!i.pluginType)}}function Pc(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"plugins.manage.uninstall")))}function Bc(e,n){e&1&&v(0,"i",32)}var wr=(()=>{let n=class n{constructor(t,r,o,p,h,b){l(this,"$activeModal");l(this,"$api");l(this,"$modal");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"childBridges");l(this,"action");l(this,"loading",!0);l(this,"uninstalling",!1);l(this,"removeConfig",!0);l(this,"removeChildBridges",!0);l(this,"hasChildBridges",!1);l(this,"pluginType");l(this,"pluginAlias");this.$activeModal=t,this.$api=r,this.$modal=o,this.$settings=p,this.$toastr=h,this.$translate=b}ngOnInit(){return T(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 T(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(Re,{size:"lg",backdrop:"static"});t.componentInstance.action="Uninstall",t.componentInstance.pluginName=this.plugin.name})}getAlias(){return T(this,null,function*(){return A(this.$api.get(`/plugins/alias/${encodeURIComponent(this.plugin.name)}`))})}removePluginConfig(){return T(this,null,function*(){yield A(this.$api.post(`/config-editor/plugin/${encodeURIComponent(this.plugin.name)}`,[])),yield A(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 T(this,null,function*(){try{yield A(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"))}})}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(J),_(Q),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5),x(10,yc,2,0,"div",6)(11,Tc,9,9,"div",7),c(),a(12,"div",8)(13,"div",9)(14,"button",10),u(15,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),m(16),u(17,"translate"),c()(),v(18,"div",11),a(19,"div",12)(20,"button",13),C("click",function(){return o.doUninstall()}),x(21,Pc,3,3,"span",14)(22,Bc,1,0,"i",15),c()()()()),r&2&&(s(3),Y("",f(4,12,"plugins.manage.uninstall"),": ",o.plugin.displayName||o.plugin.name,""),s(2),d("disabled",o.uninstalling),L("aria-label",f(6,14,"form.button_close")),s(5),d("ngIf",o.loading),s(),d("ngIf",!o.loading),s(3),d("disabled",o.uninstalling),L("aria-label",f(15,16,"form.button_close")),s(2),y(" ",f(17,18,"form.button_close")," "),s(4),d("disabled",o.loading||o.uninstalling),s(),d("ngIf",!o.uninstalling),s(),d("ngIf",o.uninstalling))},dependencies:[K,tt,Ce,ye,Te,z],encapsulation:2}));let e=n;return e})();var Le=ge(xt(),1);var Vc=["custompluginui"];function Mc(e,n){e&1&&(a(0,"div",20),v(1,"i",21),c())}function Rc(e,n){if(e&1){let i=k();a(0,"div",22)(1,"app-schema-form",23),G("dataChange",function(r){w(i);let o=g();return H(o.pluginConfig[0],r)||(o.pluginConfig[0]=r),$(r)}),C("dataChanged",function(r){w(i);let o=g();return $(o.schemaFormUpdatedSubject.next(r))}),c()()}if(e&2){let i=g();s(),d("configSchema",i.schema),q("data",i.pluginConfig[0])}}function Nc(e,n){if(e&1){let i=k();a(0,"button",28),C("click",function(){w(i);let r=g(2);return $(r.formActionSubject.next("cancel"))}),m(1),c()}if(e&2){let i=g(2);s(),y(" ",i.formCancelButtonLabel," ")}}function Ac(e,n){if(e&1){let i=k();a(0,"button",29),C("click",function(){w(i);let r=g(2);return $(r.formActionSubject.next("submit"))}),m(1),c()}if(e&2){let i=g(2);d("disabled",!i.formValid),s(),y(" ",i.formSubmitButtonLabel," ")}}function Lc(e,n){if(e&1){let i=k();a(0,"div",22)(1,"app-schema-form",24),G("dataChange",function(r){w(i);let o=g();return H(o.formData,r)||(o.formData=r),$(r)}),C("dataChanged",function(r){w(i);let o=g();return $(o.formUpdatedSubject.next(r))})("isValid",function(r){w(i);let o=g();return $(o.formValidEvent(r))}),c(),a(2,"div",25),x(3,Nc,2,1,"button",26)(4,Ac,2,2,"button",27),c()()}if(e&2){let i=g();s(),d("configSchema",i.formSchema),q("data",i.formData),s(2),d("ngIf",i.formCancelButtonLabel),s(),d("ngIf",i.formSubmitButtonLabel)}}function Oc(e,n){e&1&&(a(0,"div",30),v(1,"i",21),c())}function jc(e,n){if(e&1){let i=k();a(0,"button",31),u(1,"translate"),C("click",function(){w(i);let r=g();return $(r.deletePluginConfig())}),v(2,"i",32),c()}if(e&2){let i=g();d("ngbTooltip",f(1,2,"form.button_delete"))("disabled",i.saveInProgress)}}function Fc(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"form.button_save")))}function Dc(e,n){e&1&&v(0,"i",33)}var $r=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,P){l(this,"$activeModal");l(this,"$api");l(this,"$modal");l(this,"$plugin");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"$ws");l(this,"customPluginUiElementTarget");l(this,"plugin");l(this,"schema");l(this,"pluginConfig");l(this,"pluginAlias");l(this,"pluginType");l(this,"loading",!0);l(this,"saveInProgress",!1);l(this,"pluginSpinner",!1);l(this,"uiLoaded",!1);l(this,"showSchemaForm",!1);l(this,"schemaFormUpdatedSubject",new $e);l(this,"formId");l(this,"formSchema");l(this,"formData");l(this,"formSubmitButtonLabel");l(this,"formCancelButtonLabel");l(this,"formValid",!0);l(this,"formUpdatedSubject",new $e);l(this,"formActionSubject",new $e);l(this,"childBridges",[]);l(this,"isFirstSave",!1);l(this,"io");l(this,"basePath");l(this,"iframe");l(this,"schemaFormRecentlyUpdated",!1);l(this,"schemaFormRecentlyRefreshed",!1);l(this,"schemaFormRefreshSubject",new $e);l(this,"handleMessage",t=>{if(t.origin===xe.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=P}ngOnInit(){this.io=this.$ws.connectToNamespace("plugins/settings-ui"),this.pluginAlias=this.schema.pluginAlias,this.pluginType=this.schema.pluginType,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,xe.api.origin)}),this.io.socket.on("stream",t=>{t.action="stream",this.iframe.contentWindow.postMessage(t,xe.api.origin)}),this.io.socket.on("ready",()=>{this.loading=!1,this.loadUi()}),this.schemaFormRefreshSubject.pipe(Xe(250)).subscribe(this.schemaFormRefresh.bind(this)),this.schemaFormUpdatedSubject.pipe(Xe(250),wt(1)).subscribe(this.schemaFormUpdated.bind(this)),this.formUpdatedSubject.pipe(Xe(100),wt(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=`${xe.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 T(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 P=I.getAttribute("href"),B=document.baseURI+(P.startsWith("/")?P.substring(1):P);t.source.postMessage({action:"link-element",href:B,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=`
|
|
11
|
-
body {
|
|
12
|
-
height: unset !important;
|
|
13
|
-
background-color: ${o?"#242424":"#FFFFFF"} !important;
|
|
14
|
-
color: ${o?"#FFFFFF":"#000000"};
|
|
15
|
-
padding: 5px !important;
|
|
16
|
-
}
|
|
17
|
-
`;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},xe.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 T(this,null,function*(){yield this.formEnd(),this.formId=t,this.formSchema=r,this.formData=o,this.formSubmitButtonLabel=p,this.formCancelButtonLabel=h})}formEnd(){return T(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}},xe.api.origin)}formValidEvent(t){this.formValid=t}formActionEvent(t){this.iframe.contentWindow.postMessage({action:"stream",event:this.formId,data:{formEvent:t,formData:this.formData}},xe.api.origin)}handleGetCachedAccessories(t){return T(this,null,function*(){let r=yield A(this.$api.get("/server/cached-accessories"));return this.requestResponse(t,r.filter(o=>o.plugin===this.plugin.name))})}savePluginConfig(t=!1){return T(this,null,function*(){var r;this.saveInProgress=!0;try{let o=yield A(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)&&this.$settings.env.serviceMode&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let p=this.$modal.open(Ie,{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(ue,{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 T(this,null,function*(){try{(yield A(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=[]}})}deletePluginConfig(){this.updateConfigBlocks([]),this.savePluginConfig(!0)}ngOnDestroy(){window.removeEventListener("message",this.handleMessage),this.io.end(),this.schemaFormRefreshSubject.complete(),this.schemaFormUpdatedSubject.complete(),this.formUpdatedSubject.complete()}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(J),_(we),_(Q),_(D),_(F),_(it))}),l(n,"\u0275cmp",j({type:n,selectors:[["ng-component"]],viewQuery:function(r,o){if(r&1&&Ke(Vc,7),r&2){let p;Qe(p=Je())&&(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"],["class","btn btn-danger","container","modal","openDelay","150","triggers","hover",3,"ngbTooltip","disabled","click",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","configSchema","data"],[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","openDelay","150","triggers","hover",1,"btn","btn-danger",3,"click","ngbTooltip","disabled"],[1,"fa","fa-fw","fa-trash"],[1,"fas","fa-fw","fa-spinner","fa-pulse"]],template:function(r,o){if(r&1){let p=k();a(0,"div",1)(1,"div",2)(2,"h5",3),m(3),u(4,"translate"),c(),a(5,"button",4),u(6,"translate"),C("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),a(7,"span",5),m(8,"\xD7"),c()()(),a(9,"div",6),x(10,Mc,2,0,"div",7),v(11,"iframe",8,0),x(13,Rc,2,2,"div",9)(14,Lc,5,4,"div",9)(15,Oc,2,0,"div",10),c(),a(16,"div",11)(17,"div",12)(18,"button",13),C("click",function(){return w(p),$(o.$activeModal.dismiss("Dismiss"))}),m(19),u(20,"translate"),c()(),v(21,"div",14),a(22,"div",15),x(23,jc,3,4,"button",16),a(24,"button",17),C("click",function(){return w(p),$(o.savePluginConfig(!0))}),x(25,Fc,3,3,"span",18)(26,Dc,1,0,"i",19),c()()()()}r&2&&(s(3),Y(" ",f(4,14,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),s(2),d("disabled",o.saveInProgress),L("aria-label",f(6,16,"form.button_close")),s(5),d("ngIf",o.loading),s(3),d("ngIf",o.uiLoaded&&o.pluginConfig.length&&o.schema.singular&&o.showSchemaForm),s(),d("ngIf",o.formId),s(),d("ngIf",o.pluginSpinner),s(3),d("disabled",o.saveInProgress),s(),y(" ",f(20,18,"form.button_close")," "),s(4),d("ngIf",o.plugin.name!=="homebridge-config-ui-x"),s(),d("disabled",o.saveInProgress),s(),d("ngIf",!o.saveInProgress),s(),d("ngIf",o.saveInProgress))},dependencies:[K,Pe,Me,z],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 Uc(e,n){e&1&&(a(0,"div")(1,"div",12)(2,"p"),m(3),u(4,"translate"),c(),a(5,"p",13)(6,"span"),m(7),u(8,"translate"),c(),a(9,"a",14),m(10," https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control "),c(),a(11,"span"),m(12),u(13,"translate"),c()()()()),e&2&&(s(3),V(f(4,3,"accessories.message_must_use_insecure_mode")),s(4),y("",f(8,5,"accessories.message_please_see")," "),s(5),y(" ",f(13,7,"accessories.message_for_more_information"),""))}function qc(e,n){if(e&1&&(a(0,"div",10),x(1,Uc,14,9,"div",11),c()),e&2){let i=g();s(),d("ngIf",!i.$settings.env.enableAccessories)}}function Hc(e,n){e&1&&(a(0,"p"),m(1),u(2,"translate"),c()),e&2&&(s(),y(" ",f(2,1,"plugins.settings.custom.homebridge-gsh.message_account_link_required")," "))}function Gc(e,n){if(e&1){let i=k();a(0,"div",19)(1,"button",20),C("click",function(){w(i);let r=g(2);return $(r.linkAccount())}),m(2),u(3,"translate"),c()()}e&2&&(s(2),y(" ",f(3,1,"plugins.settings.custom.homebridge-gsh.label_link_account")," "))}function zc(e,n){e&1&&(a(0,"div",24)(1,"p",25)(2,"strong"),m(3),u(4,"translate"),c()()()),e&2&&(s(3),V(f(4,1,"plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required")))}function Wc(e,n){if(e&1&&(a(0,"div",21),v(1,"i",22),a(2,"h4",23),m(3),u(4,"titlecase"),u(5,"translate"),c(),x(6,zc,5,3,"div",17),c()),e&2){let i=g(2);s(3),Y(" ",f(4,3,i.linkType)," ",f(5,5,"plugins.settings.custom.homebridge-gsh.label_account_linked")," "),s(3),d("ngIf",i.justLinked)}}function Xc(e,n){if(e&1&&v(0,"markdown",27),e&2){let i=g(3);d("data",i.schema.footerDisplay)}}function Yc(e,n){if(e&1&&(a(0,"div",24),x(1,Xc,1,1,"markdown",26),c()),e&2){let i=g(2);s(),d("ngIf",i.schema.footerDisplay)}}function Kc(e,n){if(e&1){let i=k();a(0,"div",28)(1,"app-schema-form",29),G("dataChange",function(r){w(i);let o=g(2);return H(o.gshConfig,r)||(o.gshConfig=r),$(r)}),c()()}if(e&2){let i=g(2);s(),d("configSchema",i.schema),q("data",i.gshConfig)}}function Qc(e,n){if(e&1&&(a(0,"div",10)(1,"p"),m(2),u(3,"translate"),c(),x(4,Hc,3,3,"p",11)(5,Gc,4,3,"div",15)(6,Wc,7,7,"div",16)(7,Yc,2,1,"div",17)(8,Kc,2,2,"div",18),c()),e&2){let i=g();s(2),V(f(3,6,"plugins.settings.custom.homebridge-gsh.message_about")),s(2),d("ngIf",!i.gshConfig.token),s(),d("ngIf",!i.gshConfig.token),s(),d("ngIf",i.gshConfig.token),s(),d("ngIf",i.gshConfig&&i.gshConfig.token),s(),d("ngIf",i.gshConfig&&i.gshConfig.token)}}function Jc(e,n){if(e&1){let i=k();a(0,"button",30),C("click",function(){w(i);let r=g();return $(r.unlinkAccount())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"plugins.settings.custom.homebridge-gsh.label_unlink_account")," "))}function Zc(e,n){if(e&1){let i=k();a(0,"button",31),C("click",function(){w(i);let r=g();return $(r.saveAndClose())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"form.button_save")," "))}var Er=(()=>{let n=class n{constructor(t,r,o,p,h,b){l(this,"$activeModal");l(this,"$api");l(this,"$jwtHelper");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"schema");l(this,"pluginConfig");l(this,"justLinked",!1);l(this,"gshConfig");l(this,"linkType");l(this,"linkDomain","https://homebridge-gsh.iot.oz.nu");l(this,"linkUrl",`${this.linkDomain}/link-account`);l(this,"popup");l(this,"originCheckInterval");l(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 T(this,null,function*(){try{yield A(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 T(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()}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(Zt),_(Q),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3,"Homebridge Google Smart Home"),c(),a(4,"button",3),u(5,"translate"),C("click",function(){return o.$activeModal.dismiss("Dismiss")}),a(6,"span",4),m(7,"\xD7"),c()()(),x(8,qc,2,1,"div",5)(9,Qc,9,8,"div",5),a(10,"div",6),x(11,Jc,3,3,"button",7),a(12,"button",8),C("click",function(){return o.close()}),m(13),u(14,"translate"),c(),x(15,Zc,3,3,"button",9),c()()),r&2&&(s(4),L("aria-label",f(5,6,"form.button_close")),s(4),d("ngIf",!o.$settings.env.enableAccessories),s(),d("ngIf",o.$settings.env.enableAccessories),s(2),d("ngIf",o.gshConfig.token),s(2),y(" ",f(14,8,"form.button_close")," "),s(2),d("ngIf",o.gshConfig.token))},dependencies:[K,Be,Me,Ve,et,z],encapsulation:2}));let e=n;return e})();var Sr=(()=>{let n=class n{constructor(t,r){l(this,"$api");l(this,"$modal");l(this,"plugins",{"homebridge-gsh":Er});this.$api=t,this.$modal=r}openSettings(t,r){return T(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 T(this,null,function*(){let o=yield this.loadPluginConfig(t.name),p=this.$modal.open($r,{size:"lg",backdrop:"static"});return p.componentInstance.plugin=t,p.componentInstance.schema=r,p.componentInstance.pluginConfig=o,p.result.catch(()=>{})})}loadPluginConfig(t){return T(this,null,function*(){return A(this.$api.get(`/config-editor/plugin/${encodeURIComponent(t)}`))})}};l(n,"\u0275fac",function(r){return new(r||n)(fe(O),fe(J))}),l(n,"\u0275prov",Ye({token:n,factory:n.\u0275fac,providedIn:"root"}));let e=n;return e})();var we=(()=>{let n=class n{constructor(t,r,o,p,h,b){l(this,"$api");l(this,"$modal");l(this,"$customPluginsService");l(this,"$settings");l(this,"$toastr");l(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(Re,{size:"lg",backdrop:"static"});o.componentInstance.action="Install",o.componentInstance.pluginName=t,o.componentInstance.targetVersion=r}uninstallPlugin(t,r){let o=this.$modal.open(wr,{size:"lg",backdrop:"static"});o.componentInstance.action="Uninstall",o.componentInstance.plugin=t,o.componentInstance.childBridges=r}checkAndUpdatePlugin(t,r="latest"){return T(this,null,function*(){(yield this.checkHbAndNodeVersion(t,"update"))&&(yield this.updatePlugin(t,r))})}updatePlugin(t,r){return T(this,null,function*(){let o=this.$modal.open(Re,{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 T(this,null,function*(){if(!(yield this.checkHbAndNodeVersion(t,"update")))return;let o=this.$modal.open(Re,{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 T(this,null,function*(){let r=this.$modal.open(dr,{size:"lg",backdrop:"static"});r.componentInstance.plugin=t;try{let{action:o,version:p,engines:h}=yield r.result;return(yield this.checkHbAndNodeVersion(We(ze({},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 T(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(mr,{size:"lg",backdrop:"static"});p.componentInstance.schema=o,p.componentInstance.plugin=t,p.componentInstance.justInstalled=r})}settings(t){return T(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?yr:Yt,{size:"lg",backdrop:"static"});return o.componentInstance.schema=r,o.componentInstance.plugin=t,o.result.catch(()=>{})})}jsonEditor(t){return T(this,null,function*(){let r=this.$modal.open(Yt,{size:"lg",backdrop:"static"});return r.componentInstance.plugin=t,r.result.catch(o=>console.error(o))})}checkHbAndNodeVersion(t,r){return T(this,null,function*(){var h,b;let o=!0,p=!0;try{(h=t.updateEngines)!=null&&h.node&&(0,Le.lt)(this.$settings.env.nodeVersion,(0,Le.minVersion)(t.updateEngines.node))&&(o=!1),(b=t.updateEngines)!=null&&b.homebridge&&(0,Le.lt)(this.$settings.env.homebridgeVersion,(0,Le.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(gr,{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 T(this,null,function*(){return A(this.$api.get(`/plugins/config-schema/${encodeURIComponent(t)}`))})}resetChildBridges(t){return T(this,null,function*(){let r=this.$modal.open(Ir,{size:"lg",backdrop:"static"});r.componentInstance.childBridges=t})}};l(n,"\u0275fac",function(r){return new(r||n)(fe(O),fe(J),fe(Sr),fe(Q),fe(D),fe(F))}),l(n,"\u0275prov",Ye({token:n,factory:n.\u0275fac,providedIn:"root"}));let e=n;return e})();function tp(e,n){e&1&&(a(0,"div",17),v(1,"i",18),c())}function ip(e,n){e&1&&(a(0,"div")(1,"div",19),m(2),u(3,"translate"),u(4,"translate"),c()()),e&2&&(s(2),Y(" ",f(3,2,"plugins.settings.message_manual_config_required")," ",f(4,4,"plugins.settings.message_consult_documentation")," "))}function np(e,n){if(e&1){let i=k();a(0,"button",32),u(1,"translate"),C("click",function(){w(i);let r=g().index,o=g(2);return $(o.removeBlock(r))}),v(2,"i",33),c()}e&2&&d("ngbTooltip",f(1,1,"form.button_delete"))}function rp(e,n){if(e&1){let i=k();a(0,"div",22)(1,"div",23)(2,"div",24)(3,"h5",25),m(4),c(),a(5,"div"),x(6,np,3,3,"button",26),a(7,"button",27),u(8,"translate"),C("click",function(){let r=w(i).index,o=g(2);return $(o.editBlock(r))}),v(9,"i",28),c()()()(),a(10,"div",29)(11,"div",30)(12,"ngx-monaco-editor",31),G("ngModelChange",function(r){w(i);let o=g(2);return H(o.currentBlock,r)||(o.currentBlock=r),$(r)}),C("onInit",function(r){w(i);let o=g(2);return $(o.onEditorInit(r))}),c()()()()}if(e&2){let i=n.$implicit,t=n.index,r=g(2);d("ngbAccordionItem","configBlock."+t)("collapsed",r.show!=="configBlock."+t)("id","configBlock."+t),s(4),V(i.name||r.pluginAlias),s(2),d("ngIf",r.show==="configBlock."+t),s(),d("ngbTooltip",f(8,8,"form.button_edit")),s(5),d("options",r.editorOptions),q("ngModel",r.currentBlock)}}function op(e,n){if(e&1&&(a(0,"div",20),x(1,rp,13,10,"div",21),c()),e&2){let i=g();d("closeOthers",!0),s(),d("ngForOf",i.pluginConfig)}}function sp(e,n){if(e&1){let i=k();a(0,"button",34),C("click",function(){w(i);let r=g();return $(r.addBlock())}),v(1,"i",35),c()}}function ap(e,n){e&1&&(a(0,"span"),m(1),u(2,"translate"),c()),e&2&&(s(),V(f(2,1,"form.button_save")))}function lp(e,n){e&1&&v(0,"i",38)}function cp(e,n){if(e&1){let i=k();a(0,"button",36),C("click",function(){w(i);let r=g();return $(r.save())}),x(1,ap,3,3,"span",7)(2,lp,1,0,"i",37),c()}if(e&2){let i=g();d("disabled",i.saveInProgress),s(),d("ngIf",!i.saveInProgress),s(),d("ngIf",i.saveInProgress)}}function pp(e,n){if(e&1){let i=k();a(0,"button",39),C("click",function(){w(i);let r=g();return $(r.openFullConfigEditor())}),m(1),u(2,"translate"),c()}e&2&&(s(),y(" ",f(2,1,"plugins.settings.label_open_config_editor")," "))}var Yt=(()=>{let n=class n{constructor(t,r,o,p,h,b,I,P,B){l(this,"$activeModal");l(this,"$api");l(this,"$md");l(this,"$modal");l(this,"$plugin");l(this,"$router");l(this,"$settings");l(this,"$toastr");l(this,"$translate");l(this,"plugin");l(this,"pluginAlias");l(this,"pluginType");l(this,"loading",!0);l(this,"canConfigure",!1);l(this,"show","");l(this,"pluginConfig");l(this,"currentBlock");l(this,"currentBlockIndex",null);l(this,"saveInProgress",!1);l(this,"childBridges",[]);l(this,"isFirstSave",!1);l(this,"monacoEditor");l(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=P,this.$translate=B}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 T(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=kr.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 T(this,null,function*(){var t;if(this.saveInProgress=!0,!this.saveCurrentBlock()){this.saveInProgress=!1;return}try{let r=yield A(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)&&this.$settings.env.serviceMode&&(yield this.getChildBridges(),this.childBridges.length>0)){this.$activeModal.close();let o=this.$modal.open(Ie,{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(ue,{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 T(this,null,function*(){try{(yield A(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=[]}})}};l(n,"\u0275fac",function(r){return new(r||n)(_(W),_(O),_(ri),_(J),_(we),_(ke),_(Q),_(D),_(F))}),l(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&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),c(),a(5,"button",3),u(6,"translate"),C("click",function(){return o.$activeModal.close()}),a(7,"span",4),m(8,"\xD7"),c()()(),a(9,"div",5),x(10,tp,2,0,"div",6)(11,ip,5,6,"div",7)(12,op,2,2,"div",8),c(),a(13,"div",9)(14,"div",10)(15,"button",11),C("click",function(){return o.$activeModal.close()}),m(16),u(17,"translate"),c()(),v(18,"div",12),a(19,"div",13),x(20,sp,2,0,"button",14)(21,cp,3,3,"button",15)(22,pp,3,3,"button",16),c()()()),r&2&&(s(3),Y(" ",f(4,12,"plugins.settings.title_settings"),": ",o.plugin.displayName||o.plugin.name," "),s(2),d("disabled",o.saveInProgress),L("aria-label",f(6,14,"form.button_close")),s(5),d("ngIf",o.loading),s(),d("ngIf",!o.loading&&!o.canConfigure),s(),d("ngIf",!o.loading&&o.canConfigure),s(3),d("disabled",o.saveInProgress),s(),y(" ",f(17,16,"form.button_close")," "),s(4),d("ngIf",o.canConfigure),s(),d("ngIf",o.canConfigure),s(),d("ngIf",!o.canConfigure))},dependencies:[pe,K,Ce,ye,ot,lt,at,st,nt,rt,Pe,li,z],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{di as a,xt as b,Sr as c,we as d};
|
package/public/chunk-7COUXZR3.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as ne}from"./chunk-YCUV4ZTO.js";import{$ as Tt,$a as te,Cb as ft,Da as it,Ga as st,Ka as nt,Kb as Mt,La as C,M as Ut,Ma as ot,Oa as A,Qb as jt,Ua as F,Va as H,W as N,Wa as rt,X as Wt,Xa as xt,Y as Gt,Ya as It,Z as I,Za as St,_ as G,a as j,aa as Jt,ab as at,b as W,bb as S,da as Kt,e as Zt,g as ge,gc as ee,h as n,ha as wt,i as Yt,ia as Dt,jb as R,l as k,la as pt,lb as Y,mc as ie,nc as se,oa as Ct,sa as Qt,sb as Ot,t as qt,ta as $t,wa as _,xa as Z,za as Xt}from"./chunk-3NQEXKA4.js";var oe=Zt((Ne,ve)=>{ve.exports={name:"homebridge-config-ui-x",displayName:"Homebridge UI",version:"4.63.0",description:"A web based management, configuration and control platform for Homebridge.",author:"oznu <dev@oz.nu>",license:"MIT",funding:[{type:"github",url:"https://github.com/sponsors/oznu"},{type:"paypal",url:"https://paypal.me/oznu"}],repository:{type:"git",url:"git+https://github.com/homebridge/homebridge-config-ui-x.git"},bugs:{url:"https://github.com/homebridge/homebridge-config-ui-x/issues"},keywords:["homebridge-plugin","ui","gui","web","homebridge","homebridge-config-ui-x","ui-x","config-ui-x","homebridge-x","homebridge server","homebridge ui","homebridge-ui","homebridge gui","homebridge-gui","web interface","config ui","management","config editor","linux","macOS","osx","windows","raspberry pi","accessory control","smart home","hb-service"],main:"./dist/index.js",bin:{"homebridge-config-ui-x":"dist/bin/standalone.js","hb-service":"dist/bin/hb-service.js"},engines:{node:"^18 || ^20 || ^22",homebridge:"^1.8.0 || ^2.0.0-beta.0"},scripts:{build:"npm run build:server && npm run build:ui","build:server":"rimraf dist && tsc -p tsconfig.build.json","build:ui":"npm run build --prefix ui",check:"npm run check:server && npm run check:ui","check:server":"npm install && npm outdated","check:ui":"npm install --prefix ui && npm outdated --prefix ui","lang-sync":"ts-node scripts/lang-sync.ts",lint:"eslint . --max-warnings=0","lint:fix":"npm run lint -- --fix",prepublishOnly:"npm i --package-lock-only && npm run lint && npm run build",start:"ts-node -r tsconfig-paths/register src/main.ts",test:"vitest run","test-coverage":"npm run test -- --coverage","upgrade-install":"./scripts/upgrade-install.sh",watch:'concurrently "npm run watch:ui" "npm run watch:server"',"watch:server":"nodemon","watch:ui":"npm run start --prefix ui"},dependencies:{"@fastify/helmet":"11.1.1","@fastify/multipart":"8.3.0","@fastify/static":"7.0.4","@homebridge/hap-client":"1.10.2","@homebridge/node-pty-prebuilt-multiarch":"0.11.14","@nestjs/axios":"3.1.2","@nestjs/common":"10.4.8","@nestjs/core":"10.4.8","@nestjs/jwt":"10.2.0","@nestjs/passport":"10.0.3","@nestjs/platform-fastify":"10.4.8","@nestjs/platform-socket.io":"10.4.8","@nestjs/swagger":"8.0.7","@nestjs/websockets":"10.4.8",axios:"1.7.7","bash-color":"0.0.4","buffer-shims":"1.0.0","class-transformer":"0.5.1","class-validator":"0.14.1",commander:"12.1.0",dayjs:"1.11.13",fastify:"4.28.1","fs-extra":"11.2.0",jsonwebtoken:"9.0.2",lodash:"4.17.21","node-cache":"5.1.2","node-schedule":"2.1.1",ora:"5.4.1",otplib:"12.0.1","p-limit":"3.1.0",passport:"0.7.0","passport-jwt":"4.0.1","reflect-metadata":"0.2.2",rxjs:"7.8.1",semver:"7.6.3",systeminformation:"5.23.5",tail:"2.2.6",tar:"6.2.1","tcp-port-used":"1.0.2",unzipper:"0.12.3"},devDependencies:{"@antfu/eslint-config":"^3.9.1","@nestjs/testing":"^10.4.8","@types/fs-extra":"^11.0.4","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/node-schedule":"^2.1.7","@types/passport-jwt":"^4.0.1","@types/semver":"^7.5.8","@types/tail":"^2.2.3","@types/tar":"^6.1.13","@types/tcp-port-used":"^1.0.4","@types/unzipper":"^0.10.10","@vitest/coverage-v8":"^2.1.5",concurrently:"^9.1.0",eslint:"^9.15.0","eslint-plugin-format":"^0.1.2","form-data":"^4.0.1",nodemon:"^3.1.7",rimraf:"^6.0.1","ts-loader":"^9.5.1","ts-node":"^10.9.2","tsconfig-paths":"^4.2.0",typescript:"^5.6.3","unplugin-swc":"^1.5.1",vitest:"^2.1.5"},overrides:{"@homebridge/hap-client":{axios:"1.7.7"}},maintainers:[{email:"bwp91@icloud.com",name:"bwp91"},{email:"dev@oz.nu",name:"oznu"},{email:"buyminivan-northern@yahoo.ca",name:"northernman"},{email:"mail@anderl-bauer.de",name:"supereg"},{email:"khaos.tian@gmail.com",name:"khaost"},{email:"erik.baauw@xs4all.nl",name:"ebaauw"},{email:"donavan.becker@icloud.com",name:"donavanbecker"},{email:"dustin.greif@gmail.com",name:"dustin.greif"},{email:"nfarina@gmail.com",name:"nfarina"}]}});var re=Zt((Ft,Et)=>{(function(s,t){typeof Ft=="object"&&typeof Et<"u"?Et.exports=t():typeof define=="function"&&define.amd?define(t):(s=typeof globalThis<"u"?globalThis:s||self).dayjs=t()})(Ft,function(){"use strict";var s=1e3,t=6e4,r=36e5,i="millisecond",e="second",o="minute",h="hour",y="day",O="week",w="month",Q="quarter",$="year",E="date",ct="Invalid Date",_t=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,yt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,ut={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(d){var u=["th","st","nd","rd"],a=d%100;return"["+d+(u[(a-20)%10]||u[a]||u[0])+"]"}},P=function(d,u,a){var l=String(d);return!l||l.length>=u?d:""+Array(u+1-l.length).join(a)+d},me={s:P,z:function(d){var u=-d.utcOffset(),a=Math.abs(u),l=Math.floor(a/60),c=a%60;return(u<=0?"+":"-")+P(l,2,"0")+":"+P(c,2,"0")},m:function d(u,a){if(u.date()<a.date())return-d(a,u);var l=12*(a.year()-u.year())+(a.month()-u.month()),c=u.clone().add(l,w),p=a-c<0,f=u.clone().add(l+(p?-1:1),w);return+(-(l+(a-c)/(p?c-f:f-c))||0)},a:function(d){return d<0?Math.ceil(d)||0:Math.floor(d)},p:function(d){return{M:w,y:$,w:O,d:y,D:E,h,m:o,s:e,ms:i,Q}[d]||String(d||"").toLowerCase().replace(/s$/,"")},u:function(d){return d===void 0}},X="en",B={};B[X]=ut;var Vt="$isDayjsObject",bt=function(d){return d instanceof lt||!(!d||!d[Vt])},ht=function d(u,a,l){var c;if(!u)return X;if(typeof u=="string"){var p=u.toLowerCase();B[p]&&(c=p),a&&(B[p]=a,c=p);var f=u.split("-");if(!c&&f.length>1)return d(f[0])}else{var g=u.name;B[g]=u,c=g}return!l&&c&&(X=c),c||!l&&X},b=function(d,u){if(bt(d))return d.clone();var a=typeof u=="object"?u:{};return a.date=d,a.args=arguments,new lt(a)},m=me;m.l=ht,m.i=bt,m.w=function(d,u){return b(d,{locale:u.$L,utc:u.$u,x:u.$x,$offset:u.$offset})};var lt=function(){function d(a){this.$L=ht(a.locale,null,!0),this.parse(a),this.$x=this.$x||a.x||{},this[Vt]=!0}var u=d.prototype;return u.parse=function(a){this.$d=function(l){var c=l.date,p=l.utc;if(c===null)return new Date(NaN);if(m.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var f=c.match(_t);if(f){var g=f[2]-1||0,v=(f[7]||"0").substring(0,3);return p?new Date(Date.UTC(f[1],g,f[3]||1,f[4]||0,f[5]||0,f[6]||0,v)):new Date(f[1],g,f[3]||1,f[4]||0,f[5]||0,f[6]||0,v)}}return new Date(c)}(a),this.init()},u.init=function(){var a=this.$d;this.$y=a.getFullYear(),this.$M=a.getMonth(),this.$D=a.getDate(),this.$W=a.getDay(),this.$H=a.getHours(),this.$m=a.getMinutes(),this.$s=a.getSeconds(),this.$ms=a.getMilliseconds()},u.$utils=function(){return m},u.isValid=function(){return this.$d.toString()!==ct},u.isSame=function(a,l){var c=b(a);return this.startOf(l)<=c&&c<=this.endOf(l)},u.isAfter=function(a,l){return b(a)<this.startOf(l)},u.isBefore=function(a,l){return this.endOf(l)<b(a)},u.$g=function(a,l,c){return m.u(a)?this[l]:this.set(c,a)},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this.$d.getTime()},u.startOf=function(a,l){var c=this,p=!!m.u(l)||l,f=m.p(a),g=function(z,x){var L=m.w(c.$u?Date.UTC(c.$y,x,z):new Date(c.$y,x,z),c);return p?L:L.endOf(y)},v=function(z,x){return m.w(c.toDate()[z].apply(c.toDate("s"),(p?[0,0,0,0]:[23,59,59,999]).slice(x)),c)},T=this.$W,D=this.$M,M=this.$D,U="set"+(this.$u?"UTC":"");switch(f){case $:return p?g(1,0):g(31,11);case w:return p?g(1,D):g(0,D+1);case O:var V=this.$locale().weekStart||0,tt=(T<V?T+7:T)-V;return g(p?M-tt:M+(6-tt),D);case y:case E:return v(U+"Hours",0);case h:return v(U+"Minutes",1);case o:return v(U+"Seconds",2);case e:return v(U+"Milliseconds",3);default:return this.clone()}},u.endOf=function(a){return this.startOf(a,!1)},u.$set=function(a,l){var c,p=m.p(a),f="set"+(this.$u?"UTC":""),g=(c={},c[y]=f+"Date",c[E]=f+"Date",c[w]=f+"Month",c[$]=f+"FullYear",c[h]=f+"Hours",c[o]=f+"Minutes",c[e]=f+"Seconds",c[i]=f+"Milliseconds",c)[p],v=p===y?this.$D+(l-this.$W):l;if(p===w||p===$){var T=this.clone().set(E,1);T.$d[g](v),T.init(),this.$d=T.set(E,Math.min(this.$D,T.daysInMonth())).$d}else g&&this.$d[g](v);return this.init(),this},u.set=function(a,l){return this.clone().$set(a,l)},u.get=function(a){return this[m.p(a)]()},u.add=function(a,l){var c,p=this;a=Number(a);var f=m.p(l),g=function(D){var M=b(p);return m.w(M.date(M.date()+Math.round(D*a)),p)};if(f===w)return this.set(w,this.$M+a);if(f===$)return this.set($,this.$y+a);if(f===y)return g(1);if(f===O)return g(7);var v=(c={},c[o]=t,c[h]=r,c[e]=s,c)[f]||1,T=this.$d.getTime()+a*v;return m.w(T,this)},u.subtract=function(a,l){return this.add(-1*a,l)},u.format=function(a){var l=this,c=this.$locale();if(!this.isValid())return c.invalidDate||ct;var p=a||"YYYY-MM-DDTHH:mm:ssZ",f=m.z(this),g=this.$H,v=this.$m,T=this.$M,D=c.weekdays,M=c.months,U=c.meridiem,V=function(x,L,et,dt){return x&&(x[L]||x(l,p))||et[L].slice(0,dt)},tt=function(x){return m.s(g%12||12,x,"0")},z=U||function(x,L,et){var dt=x<12?"AM":"PM";return et?dt.toLowerCase():dt};return p.replace(yt,function(x,L){return L||function(et){switch(et){case"YY":return String(l.$y).slice(-2);case"YYYY":return m.s(l.$y,4,"0");case"M":return T+1;case"MM":return m.s(T+1,2,"0");case"MMM":return V(c.monthsShort,T,M,3);case"MMMM":return V(M,T);case"D":return l.$D;case"DD":return m.s(l.$D,2,"0");case"d":return String(l.$W);case"dd":return V(c.weekdaysMin,l.$W,D,2);case"ddd":return V(c.weekdaysShort,l.$W,D,3);case"dddd":return D[l.$W];case"H":return String(g);case"HH":return m.s(g,2,"0");case"h":return tt(1);case"hh":return tt(2);case"a":return z(g,v,!0);case"A":return z(g,v,!1);case"m":return String(v);case"mm":return m.s(v,2,"0");case"s":return String(l.$s);case"ss":return m.s(l.$s,2,"0");case"SSS":return m.s(l.$ms,3,"0");case"Z":return f}return null}(x)||f.replace(":","")})},u.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},u.diff=function(a,l,c){var p,f=this,g=m.p(l),v=b(a),T=(v.utcOffset()-this.utcOffset())*t,D=this-v,M=function(){return m.m(f,v)};switch(g){case $:p=M()/12;break;case w:p=M();break;case Q:p=M()/3;break;case O:p=(D-T)/6048e5;break;case y:p=(D-T)/864e5;break;case h:p=D/r;break;case o:p=D/t;break;case e:p=D/s;break;default:p=D}return c?p:m.a(p)},u.daysInMonth=function(){return this.endOf(w).$D},u.$locale=function(){return B[this.$L]},u.locale=function(a,l){if(!a)return this.$L;var c=this.clone(),p=ht(a,l,!0);return p&&(c.$L=p),c},u.clone=function(){return m.w(this.$d,this)},u.toDate=function(){return new Date(this.valueOf())},u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toISOString=function(){return this.$d.toISOString()},u.toString=function(){return this.$d.toUTCString()},d}(),zt=lt.prototype;return b.prototype=zt,[["$ms",i],["$s",e],["$m",o],["$H",h],["$W",y],["$M",w],["$y",$],["$D",E]].forEach(function(d){zt[d[1]]=function(u){return this.$g(u,d[0],d[1])}}),b.extend=function(d,u){return d.$i||(d(u,lt,b),d.$i=!0),b},b.locale=ht,b.isDayjs=bt,b.unix=function(d){return b(1e3*d)},b.en=B[X],b.Ls=B,b.p={},b})});var J={serverTarget:oe().version,production:!0,socket:"",api:{base:"/api",socket:`${window.location.protocol==="http:"?"ws://":"wss://"}${window.location.host}`,origin:window.location.origin},jwt:{tokenKey:"access_token",allowedDomains:[document.location.host],disallowedRoutes:[`${window.location.protocol}//${document.location.host}/api/auth/login`]},apiHttpOptions:{},owm:{appid:"fec67b55f7f74deaa28df89ba6a60821"}};var ce=(()=>{let t=class t{constructor(i){n(this,"$http");this.$http=i}get(i,e){return this.$http.get(`${J.api.base}${i}`,e)}post(i,e,o){return this.$http.post(`${J.api.base}${i}`,e,o)}put(i,e,o){return this.$http.put(`${J.api.base}${i}`,e,o)}patch(i,e,o){return this.$http.patch(`${J.api.base}${i}`,e,o)}delete(i,e){return this.$http.delete(`${J.api.base}${i}`,e)}};n(t,"\u0275fac",function(e){return new(e||t)(I(ee))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})();var q=function(s){return s[s.State=0]="State",s[s.Transition=1]="Transition",s[s.Sequence=2]="Sequence",s[s.Group=3]="Group",s[s.Animate=4]="Animate",s[s.Keyframes=5]="Keyframes",s[s.Style=6]="Style",s[s.Trigger=7]="Trigger",s[s.Reference=8]="Reference",s[s.AnimateChild=9]="AnimateChild",s[s.AnimateRef=10]="AnimateRef",s[s.Query=11]="Query",s[s.Stagger=12]="Stagger",s}(q||{}),Ze="*";function le(s,t){return{type:q.Trigger,name:s,definitions:t,options:{}}}function kt(s,t=null){return{type:q.Animate,styles:t,timings:s}}function Ye(s,t=null){return{type:q.Sequence,steps:s,options:t}}function mt(s){return{type:q.Style,styles:s,offset:null}}function gt(s,t,r){return{type:q.State,name:s,styles:t,options:r}}function At(s,t,r=null){return{type:q.Transition,expr:s,animation:t,options:r}}var ue=class{constructor(t=0,r=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=t+r}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._originalOnStartFns.push(t),this._onStartFns.push(t)}onDone(t){this._originalOnDoneFns.push(t),this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(t){this._position=this.totalTime?t*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(t){let r=t=="start"?this._onStartFns:this._onDoneFns;r.forEach(i=>i()),r.length=0}},he=class{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let r=0,i=0,e=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(h=>{h.onDone(()=>{++r==o&&this._onFinish()}),h.onDestroy(()=>{++i==o&&this._onDestroy()}),h.onStart(()=>{++e==o&&this._onStart()})}),this.totalTime=this.players.reduce((h,y)=>Math.max(h,y.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){let r=t*this.totalTime;this.players.forEach(i=>{let e=i.totalTime?Math.min(1,r/i.totalTime):1;i.setPosition(e)})}getPosition(){let t=this.players.reduce((r,i)=>r===null||i.totalTime>r.totalTime?i:r,null);return t!=null?t.getPosition():0}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){let r=t=="start"?this._onStartFns:this._onDoneFns;r.forEach(i=>i()),r.length=0}},qe="!";var de=["toast-component",""];function be(s,t){if(s&1){let r=St();F(0,"button",5),at("click",function(){wt(r);let e=S();return Dt(e.remove())}),F(1,"span",6),R(2,"\xD7"),H()()}}function Te(s,t){if(s&1&&(xt(0),R(1),It()),s&2){let r=S(2);_(),Y("[",r.duplicatesCount+1,"]")}}function we(s,t){if(s&1&&(F(0,"div"),R(1),st(2,Te,2,1,"ng-container",4),H()),s&2){let r=S();A(r.options.titleClass),nt("aria-label",r.title),_(),Y(" ",r.title," "),_(),C("ngIf",r.duplicatesCount)}}function De(s,t){if(s&1&&rt(0,"div",7),s&2){let r=S();A(r.options.messageClass),C("innerHTML",r.message,$t)}}function Ce(s,t){if(s&1&&(F(0,"div",8),R(1),H()),s&2){let r=S();A(r.options.messageClass),nt("aria-label",r.message),_(),Y(" ",r.message," ")}}function $e(s,t){if(s&1&&(F(0,"div"),rt(1,"div",9),H()),s&2){let r=S();_(),ot("width",r.width()+"%")}}function xe(s,t){if(s&1){let r=St();F(0,"button",5),at("click",function(){wt(r);let e=S();return Dt(e.remove())}),F(1,"span",6),R(2,"\xD7"),H()()}}function Ie(s,t){if(s&1&&(xt(0),R(1),It()),s&2){let r=S(2);_(),Y("[",r.duplicatesCount+1,"]")}}function Se(s,t){if(s&1&&(F(0,"div"),R(1),st(2,Ie,2,1,"ng-container",4),H()),s&2){let r=S();A(r.options.titleClass),nt("aria-label",r.title),_(),Y(" ",r.title," "),_(),C("ngIf",r.duplicatesCount)}}function Oe(s,t){if(s&1&&rt(0,"div",7),s&2){let r=S();A(r.options.messageClass),C("innerHTML",r.message,$t)}}function Me(s,t){if(s&1&&(F(0,"div",8),R(1),H()),s&2){let r=S();A(r.options.messageClass),nt("aria-label",r.message),_(),Y(" ",r.message," ")}}function je(s,t){if(s&1&&(F(0,"div"),rt(1,"div",9),H()),s&2){let r=S();_(),ot("width",r.width()+"%")}}var Ht=class{constructor(t,r){n(this,"_attachedHost");n(this,"component");n(this,"viewContainerRef");n(this,"injector");this.component=t,this.injector=r}attach(t,r){return this._attachedHost=t,t.attach(this,r)}detach(){let t=this._attachedHost;if(t)return this._attachedHost=void 0,t.detach()}get isAttached(){return this._attachedHost!=null}setAttachedHost(t){this._attachedHost=t}},Rt=class{constructor(){n(this,"_attachedPortal");n(this,"_disposeFn")}attach(t,r){return this._attachedPortal=t,this.attachComponentPortal(t,r)}detach(){this._attachedPortal&&this._attachedPortal.setAttachedHost(),this._attachedPortal=void 0,this._disposeFn&&(this._disposeFn(),this._disposeFn=void 0)}setDisposeFn(t){this._disposeFn=t}},Lt=class{constructor(t){n(this,"_overlayRef");n(this,"componentInstance");n(this,"duplicatesCount",0);n(this,"_afterClosed",new k);n(this,"_activate",new k);n(this,"_manualClose",new k);n(this,"_resetTimeout",new k);n(this,"_countDuplicate",new k);this._overlayRef=t}manualClose(){this._manualClose.next(),this._manualClose.complete()}manualClosed(){return this._manualClose.asObservable()}timeoutReset(){return this._resetTimeout.asObservable()}countDuplicate(){return this._countDuplicate.asObservable()}close(){this._overlayRef.detach(),this._afterClosed.next(),this._manualClose.next(),this._afterClosed.complete(),this._manualClose.complete(),this._activate.complete(),this._resetTimeout.complete(),this._countDuplicate.complete()}afterClosed(){return this._afterClosed.asObservable()}isInactive(){return this._activate.isStopped}activate(){this._activate.next(),this._activate.complete()}afterActivate(){return this._activate.asObservable()}onDuplicate(t,r){t&&this._resetTimeout.next(),r&&this._countDuplicate.next(++this.duplicatesCount)}},K=class{constructor(t,r,i,e,o,h){n(this,"toastId");n(this,"config");n(this,"message");n(this,"title");n(this,"toastType");n(this,"toastRef");n(this,"_onTap",new k);n(this,"_onAction",new k);this.toastId=t,this.config=r,this.message=i,this.title=e,this.toastType=o,this.toastRef=h,this.toastRef.afterClosed().subscribe(()=>{this._onAction.complete(),this._onTap.complete()})}triggerTap(){this._onTap.next(),this.config.tapToDismiss&&this._onTap.complete()}onTap(){return this._onTap.asObservable()}triggerAction(t){this._onAction.next(t)}onAction(){return this._onAction.asObservable()}},pe={maxOpened:0,autoDismiss:!1,newestOnTop:!0,preventDuplicates:!1,countDuplicates:!1,resetTimeoutOnDuplicate:!1,includeTitleDuplicates:!1,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},closeButton:!1,disableTimeOut:!1,timeOut:5e3,extendedTimeOut:1e3,enableHtml:!1,progressBar:!1,toastClass:"ngx-toastr",positionClass:"toast-top-right",titleClass:"toast-title",messageClass:"toast-message",easing:"ease-in",easeTime:300,tapToDismiss:!0,onActivateTick:!1,progressAnimation:"decreasing"},fe=new Gt("ToastConfig"),Nt=class extends Rt{constructor(r,i,e){super();n(this,"_hostDomElement");n(this,"_componentFactoryResolver");n(this,"_appRef");this._hostDomElement=r,this._componentFactoryResolver=i,this._appRef=e}attachComponentPortal(r,i){let e=this._componentFactoryResolver.resolveComponentFactory(r.component),o;return o=e.create(r.injector),this._appRef.attachView(o.hostView),this.setDisposeFn(()=>{this._appRef.detachView(o.hostView),o.destroy()}),i?this._hostDomElement.insertBefore(this._getComponentRootNode(o),this._hostDomElement.firstChild):this._hostDomElement.appendChild(this._getComponentRootNode(o)),o}_getComponentRootNode(r){return r.hostView.rootNodes[0]}},Fe=(()=>{let t=class t{constructor(){n(this,"_document",G(Mt));n(this,"_containerElement")}ngOnDestroy(){this._containerElement&&this._containerElement.parentNode&&this._containerElement.parentNode.removeChild(this._containerElement)}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let i=this._document.createElement("div");i.classList.add("overlay-container"),i.setAttribute("aria-live","polite"),this._document.body.appendChild(i),this._containerElement=i}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),Pt=class{constructor(t){n(this,"_portalHost");this._portalHost=t}attach(t,r=!0){return this._portalHost.attach(t,r)}detach(){return this._portalHost.detach()}},Ee=(()=>{let t=class t{constructor(){n(this,"_overlayContainer",G(Fe));n(this,"_componentFactoryResolver",G(Xt));n(this,"_appRef",G(ft));n(this,"_document",G(Mt));n(this,"_paneElements",new Map)}create(i,e){return this._createOverlayRef(this.getPaneElement(i,e))}getPaneElement(i="",e){return this._paneElements.get(e)||this._paneElements.set(e,{}),this._paneElements.get(e)[i]||(this._paneElements.get(e)[i]=this._createPaneElement(i,e)),this._paneElements.get(e)[i]}_createPaneElement(i,e){let o=this._document.createElement("div");return o.id="toast-container",o.classList.add(i),o.classList.add("toast-container"),e?e.getContainerElement().appendChild(o):this._overlayContainer.getContainerElement().appendChild(o),o}_createPortalHost(i){return new Nt(i,this._componentFactoryResolver,this._appRef)}_createOverlayRef(i){return new Pt(this._createPortalHost(i))}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),vt=(()=>{let t=class t{constructor(i,e,o,h,y){n(this,"overlay");n(this,"_injector");n(this,"sanitizer");n(this,"ngZone");n(this,"toastrConfig");n(this,"currentlyActive",0);n(this,"toasts",[]);n(this,"overlayContainer");n(this,"previousToastMessage");n(this,"index",0);this.overlay=e,this._injector=o,this.sanitizer=h,this.ngZone=y,this.toastrConfig=j(j({},i.default),i.config),i.config.iconClasses&&(this.toastrConfig.iconClasses=j(j({},i.default.iconClasses),i.config.iconClasses))}show(i,e,o={},h=""){return this._preBuildNotification(h,i,e,this.applyConfig(o))}success(i,e,o={}){let h=this.toastrConfig.iconClasses.success||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}error(i,e,o={}){let h=this.toastrConfig.iconClasses.error||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}info(i,e,o={}){let h=this.toastrConfig.iconClasses.info||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}warning(i,e,o={}){let h=this.toastrConfig.iconClasses.warning||"";return this._preBuildNotification(h,i,e,this.applyConfig(o))}clear(i){for(let e of this.toasts)if(i!==void 0){if(e.toastId===i){e.toastRef.manualClose();return}}else e.toastRef.manualClose()}remove(i){let e=this._findToast(i);if(!e||(e.activeToast.toastRef.close(),this.toasts.splice(e.index,1),this.currentlyActive=this.currentlyActive-1,!this.toastrConfig.maxOpened||!this.toasts.length))return!1;if(this.currentlyActive<this.toastrConfig.maxOpened&&this.toasts[this.currentlyActive]){let o=this.toasts[this.currentlyActive].toastRef;o.isInactive()||(this.currentlyActive=this.currentlyActive+1,o.activate())}return!0}findDuplicate(i="",e="",o,h){let{includeTitleDuplicates:y}=this.toastrConfig;for(let O of this.toasts){let w=y&&O.title===i;if((!y||w)&&O.message===e)return O.toastRef.onDuplicate(o,h),O}return null}applyConfig(i={}){return j(j({},this.toastrConfig),i)}_findToast(i){for(let e=0;e<this.toasts.length;e++)if(this.toasts[e].toastId===i)return{index:e,activeToast:this.toasts[e]};return null}_preBuildNotification(i,e,o,h){return h.onActivateTick?this.ngZone.run(()=>this._buildNotification(i,e,o,h)):this._buildNotification(i,e,o,h)}_buildNotification(i,e,o,h){if(!h.toastComponent)throw new Error("toastComponent required");let y=this.findDuplicate(o,e,this.toastrConfig.resetTimeoutOnDuplicate&&h.timeOut>0,this.toastrConfig.countDuplicates);if((this.toastrConfig.includeTitleDuplicates&&o||e)&&this.toastrConfig.preventDuplicates&&y!==null)return y;this.previousToastMessage=e;let O=!1;this.toastrConfig.maxOpened&&this.currentlyActive>=this.toastrConfig.maxOpened&&(O=!0,this.toastrConfig.autoDismiss&&this.clear(this.toasts[0].toastId));let w=this.overlay.create(h.positionClass,this.overlayContainer);this.index=this.index+1;let Q=e;e&&h.enableHtml&&(Q=this.sanitizer.sanitize(Qt.HTML,e));let $=new Lt(w),E=new K(this.index,h,Q,o,i,$),ct=[{provide:K,useValue:E}],_t=pt.create({providers:ct,parent:this._injector}),yt=new Ht(h.toastComponent,_t),ut=w.attach(yt,h.newestOnTop);$.componentInstance=ut.instance;let P={toastId:this.index,title:o||"",message:e||"",toastRef:$,onShown:$.afterActivate(),onHidden:$.afterClosed(),onTap:E.onTap(),onAction:E.onAction(),portal:ut};return O||(this.currentlyActive=this.currentlyActive+1,setTimeout(()=>{P.toastRef.activate()})),this.toasts.push(P),P}};n(t,"\u0275fac",function(e){return new(e||t)(I(fe),I(Ee),I(pt),I(se),I(Ct))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})(),ke=(()=>{let t=class t{constructor(i,e,o){n(this,"toastrService");n(this,"toastPackage");n(this,"ngZone");n(this,"message");n(this,"title");n(this,"options");n(this,"duplicatesCount");n(this,"originalTimeout");n(this,"width",it(-1));n(this,"toastClasses","");n(this,"state");n(this,"timeout");n(this,"intervalId");n(this,"hideTime");n(this,"sub");n(this,"sub1");n(this,"sub2");n(this,"sub3");this.toastrService=i,this.toastPackage=e,this.ngZone=o,this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(h=>{this.duplicatesCount=h}),this.state=it({value:"inactive",params:{easeTime:this.toastPackage.config.easeTime,easing:"ease-in"}})}get _state(){return this.state()}get displayStyle(){if(this.state().value==="inactive")return"none"}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.update(i=>W(j({},i),{value:"active"})),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.outsideTimeout(()=>this.remove(),this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let i=new Date().getTime(),e=this.hideTime-i;this.width.set(e/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(o=>100-o),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.update(i=>W(j({},i),{value:"active"})),this.outsideTimeout(()=>this.remove(),this.originalTimeout),this.options.timeOut=this.originalTimeout,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10)}remove(){this.state().value!=="removed"&&(clearTimeout(this.timeout),this.state.update(i=>W(j({},i),{value:"removed"})),this.outsideTimeout(()=>this.toastrService.remove(this.toastPackage.toastId),+this.toastPackage.config.easeTime))}tapToast(){this.state().value!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state().value!=="removed"&&this.options.disableTimeOut!=="extendedTimeOut"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state().value==="removed"||(this.outsideTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&this.outsideInterval(()=>this.updateProgress(),10))}outsideTimeout(i,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.timeout=setTimeout(()=>this.runInsideAngular(i),e)):this.timeout=setTimeout(()=>i(),e)}outsideInterval(i,e){this.ngZone?this.ngZone.runOutsideAngular(()=>this.intervalId=setInterval(()=>this.runInsideAngular(i),e)):this.intervalId=setInterval(()=>i(),e)}runInsideAngular(i){this.ngZone?this.ngZone.run(()=>i()):i()}};n(t,"\u0275fac",function(e){return new(e||t)(Z(vt),Z(K),Z(Ct))}),n(t,"\u0275cmp",Tt({type:t,selectors:[["","toast-component",""]],hostVars:5,hostBindings:function(e,o){e&1&&at("click",function(){return o.tapToast()})("mouseenter",function(){return o.stickAround()})("mouseleave",function(){return o.delayedHideToast()}),e&2&&(te("@flyInOut",o._state),A(o.toastClasses),ot("display",o.displayStyle))},standalone:!0,features:[Ot],attrs:de,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(e,o){e&1&&st(0,be,3,0,"button",0)(1,we,3,5,"div",1)(2,De,1,3,"div",2)(3,Ce,2,4,"div",3)(4,$e,2,2,"div",4),e&2&&(C("ngIf",o.options.closeButton),_(),C("ngIf",o.title),_(),C("ngIf",o.message&&o.options.enableHtml),_(),C("ngIf",o.message&&!o.options.enableHtml),_(),C("ngIf",o.options.progressBar))},dependencies:[jt],encapsulation:2,data:{animation:[le("flyInOut",[gt("inactive",mt({opacity:0})),gt("active",mt({opacity:1})),gt("removed",mt({opacity:0})),At("inactive => active",kt("{{ easeTime }}ms {{ easing }}")),At("active => removed",kt("{{ easeTime }}ms {{ easing }}"))])]},changeDetection:0}));let s=t;return s})(),Ae=W(j({},pe),{toastComponent:ke}),He=(s={})=>Kt([{provide:fe,useValue:{default:Ae,config:s}}]),ci=(()=>{let t=class t{static forRoot(i={}){return{ngModule:t,providers:[He(i)]}}};n(t,"\u0275fac",function(e){return new(e||t)}),n(t,"\u0275mod",Jt({type:t})),n(t,"\u0275inj",Wt({}));let s=t;return s})();var Re=(()=>{let t=class t{constructor(i,e,o){n(this,"toastrService");n(this,"toastPackage");n(this,"appRef");n(this,"message");n(this,"title");n(this,"options");n(this,"duplicatesCount");n(this,"originalTimeout");n(this,"width",it(-1));n(this,"toastClasses","");n(this,"state",it("inactive"));n(this,"timeout");n(this,"intervalId");n(this,"hideTime");n(this,"sub");n(this,"sub1");n(this,"sub2");n(this,"sub3");this.toastrService=i,this.toastPackage=e,this.appRef=o,this.message=e.message,this.title=e.title,this.options=e.config,this.originalTimeout=e.config.timeOut,this.toastClasses=`${e.toastType} ${e.config.toastClass}`,this.sub=e.toastRef.afterActivate().subscribe(()=>{this.activateToast()}),this.sub1=e.toastRef.manualClosed().subscribe(()=>{this.remove()}),this.sub2=e.toastRef.timeoutReset().subscribe(()=>{this.resetTimeout()}),this.sub3=e.toastRef.countDuplicate().subscribe(h=>{this.duplicatesCount=h})}get displayStyle(){return this.state()==="inactive"?"none":null}ngOnDestroy(){this.sub.unsubscribe(),this.sub1.unsubscribe(),this.sub2.unsubscribe(),this.sub3.unsubscribe(),clearInterval(this.intervalId),clearTimeout(this.timeout)}activateToast(){this.state.set("active"),!(this.options.disableTimeOut===!0||this.options.disableTimeOut==="timeOut")&&this.options.timeOut&&(this.timeout=setTimeout(()=>{this.remove()},this.options.timeOut),this.hideTime=new Date().getTime()+this.options.timeOut,this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))),this.options.onActivateTick&&this.appRef.tick()}updateProgress(){if(this.width()===0||this.width()===100||!this.options.timeOut)return;let i=new Date().getTime(),e=this.hideTime-i;this.width.set(e/this.options.timeOut*100),this.options.progressAnimation==="increasing"&&this.width.update(o=>100-o),this.width()<=0&&this.width.set(0),this.width()>=100&&this.width.set(100)}resetTimeout(){clearTimeout(this.timeout),clearInterval(this.intervalId),this.state.set("active"),this.options.timeOut=this.originalTimeout,this.timeout=setTimeout(()=>this.remove(),this.originalTimeout),this.hideTime=new Date().getTime()+(this.originalTimeout||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10))}remove(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.state.set("removed"),this.timeout=setTimeout(()=>this.toastrService.remove(this.toastPackage.toastId)))}tapToast(){this.state()!=="removed"&&(this.toastPackage.triggerTap(),this.options.tapToDismiss&&this.remove())}stickAround(){this.state()!=="removed"&&(clearTimeout(this.timeout),this.options.timeOut=0,this.hideTime=0,clearInterval(this.intervalId),this.width.set(0))}delayedHideToast(){this.options.disableTimeOut===!0||this.options.disableTimeOut==="extendedTimeOut"||this.options.extendedTimeOut===0||this.state()==="removed"||(this.timeout=setTimeout(()=>this.remove(),this.options.extendedTimeOut),this.options.timeOut=this.options.extendedTimeOut,this.hideTime=new Date().getTime()+(this.options.timeOut||0),this.width.set(-1),this.options.progressBar&&(this.intervalId=setInterval(()=>this.updateProgress(),10)))}};n(t,"\u0275fac",function(e){return new(e||t)(Z(vt),Z(K),Z(ft))}),n(t,"\u0275cmp",Tt({type:t,selectors:[["","toast-component",""]],hostVars:4,hostBindings:function(e,o){e&1&&at("click",function(){return o.tapToast()})("mouseenter",function(){return o.stickAround()})("mouseleave",function(){return o.delayedHideToast()}),e&2&&(A(o.toastClasses),ot("display",o.displayStyle))},standalone:!0,features:[Ot],attrs:de,decls:5,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[3,"class",4,"ngIf"],["role","alert",3,"class","innerHTML",4,"ngIf"],["role","alert",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alert",3,"innerHTML"],["role","alert"],[1,"toast-progress"]],template:function(e,o){e&1&&st(0,xe,3,0,"button",0)(1,Se,3,5,"div",1)(2,Oe,1,3,"div",2)(3,Me,2,4,"div",3)(4,je,2,2,"div",4),e&2&&(C("ngIf",o.options.closeButton),_(),C("ngIf",o.title),_(),C("ngIf",o.message&&o.options.enableHtml),_(),C("ngIf",o.message&&!o.options.enableHtml),_(),C("ngIf",o.options.progressBar))},dependencies:[jt],encapsulation:2,changeDetection:0}));let s=t;return s})(),ui=W(j({},pe),{toastComponent:Re});var Bt=ge(re(),1);var fi=(()=>{let t=class t{constructor(i,e,o,h){n(this,"$api");n(this,"$title");n(this,"$toastr");n(this,"$translate");n(this,"env",{});n(this,"formAuth",!0);n(this,"uiVersion");n(this,"theme");n(this,"lightingMode");n(this,"currentLightingMode");n(this,"actualLightingMode");n(this,"browserLightingMode");n(this,"loginWallpaper");n(this,"serverTimeOffset",0);n(this,"themeList",["orange","red","pink","purple","deep-purple","indigo","blue","blue-grey","cyan","green","teal","grey","brown"]);n(this,"rtl",!1);n(this,"settingsLoadedSubject",new k);n(this,"onSettingsLoaded",this.settingsLoadedSubject.pipe(Ut()));n(this,"settingsLoaded",!1);this.$api=i,this.$title=e,this.$toastr=o,this.$translate=h,this.getAppSettings()}getAppSettings(){return Yt(this,null,function*(){let i=yield qt(this.$api.get("/auth/settings"));this.formAuth=i.formAuth,this.env=i.env,this.lightingMode=i.lightingMode,this.loginWallpaper=i.loginWallpaper,this.setLightingMode(this.lightingMode,"user"),this.setTheme(i.theme),this.setTitle(this.env.homebridgeInstanceName),this.checkServerTime(i.serverTimestamp),this.setUiVersion(i.env.packageVersion),this.setLang(this.env.lang),this.settingsLoaded=!0,this.settingsLoadedSubject.next(void 0)})}setBrowserLightingMode(i){this.browserLightingMode=i,this.lightingMode==="auto"&&this.setLightingMode(i,"browser")}setLightingMode(i,e){e==="user"&&(this.lightingMode=i),this.currentLightingMode=i,this.actualLightingMode=this.currentLightingMode==="auto"?this.browserLightingMode:this.currentLightingMode,this.theme&&this.setTheme(this.theme)}setTheme(i){(!i||!this.themeList.includes(i))&&(i="orange");let e=window.document.querySelector("body");e.classList.remove(`config-ui-x-${this.theme}`),e.classList.remove(`config-ui-x-dark-mode-${this.theme}`),this.theme=i,this.actualLightingMode==="dark"?(e.classList.add(`config-ui-x-dark-mode-${this.theme}`),e.classList.contains("dark-mode")||e.classList.add("dark-mode")):(e.classList.add(`config-ui-x-${this.theme}`),e.classList.contains("dark-mode")&&e.classList.remove("dark-mode"))}setTitle(i){this.$title.setTitle(i||"Homebridge")}setUiVersion(i){this.uiVersion||(this.uiVersion=i)}setLang(i){i?this.$translate.use(i):i="auto",this.env.lang=i}setEnvItem(i,e){this.env[i]=e}checkServerTime(i){let o=(0,Bt.default)(i).diff((0,Bt.default)(),"hour");this.serverTimeOffset=o*60*60,(o>=8||o<=-8)&&this.$toastr.warning(this.$translate.instant("settings.datetime.incorrect"),this.$translate.instant("toast.title_warning"),{timeOut:2e4,tapToDismiss:!1}).onTap.subscribe(()=>{window.open("https://homebridge.io/w/JqTFs","_blank")})}};n(t,"\u0275fac",function(e){return new(e||t)(I(ce),I(ie),I(vt),I(ne))}),n(t,"\u0275prov",N({token:t,factory:t.\u0275fac,providedIn:"root"}));let s=t;return s})();export{re as a,J as b,ce as c,q as d,Ze as e,Ye as f,mt as g,ue as h,he as i,qe as j,vt as k,ci as l,fi as m};
|
package/public/chunk-DOXG4MVV.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{X as i,_b as m,aa as o,h as r,uc as a}from"./chunk-3NQEXKA4.js";var l=[{path:"",redirectTo:"/",pathMatch:"full"},{path:"docker",loadChildren:()=>import("./chunk-A7KY6MAW.js").then(e=>e.DockerModule)},{path:"linux",loadChildren:()=>import("./chunk-H3ASY46R.js").then(e=>e.LinuxModule)},{path:"terminal",loadChildren:()=>import("./chunk-GAKIVDIC.js").then(e=>e.TerminalModule)}],c=(()=>{let t=class t{};r(t,"\u0275fac",function(n){return new(n||t)}),r(t,"\u0275mod",o({type:t})),r(t,"\u0275inj",i({imports:[a.forChild(l),a]}));let e=t;return e})();var C=(()=>{let t=class t{};r(t,"\u0275fac",function(n){return new(n||t)}),r(t,"\u0275mod",o({type:t})),r(t,"\u0275inj",i({imports:[m,c]}));let e=t;return e})();export{C as PlatformToolsModule};
|