homebridge-config-ui-x 5.0.0-beta.1 → 5.0.0-beta.3

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