homebridge-config-ui-x 5.0.0-beta.19 → 5.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -2
- package/dist/modules/plugins/plugins.service.js +3 -6
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/package.json +10 -10
- package/public/{chunk-TAQPTNH3.js → chunk-36FQKUVO.js} +1 -1
- package/public/chunk-3JSZEZ3P.js +1 -0
- package/public/{chunk-5R3LEKWW.js → chunk-3ZNB4KKY.js} +1 -1
- package/public/{chunk-T5OJYFIY.js → chunk-44XAYR34.js} +1 -1
- package/public/chunk-5VRFWVIF.js +1 -0
- package/public/chunk-5YTQFCTZ.js +1 -0
- package/public/{chunk-SG7JRJFU.js → chunk-66LHN73V.js} +1 -1
- package/public/{chunk-6UXA5CDA.js → chunk-6MDI4RNQ.js} +1 -1
- package/public/chunk-6NCLI3EG.js +1 -0
- package/public/chunk-6W3XOJBR.js +1 -0
- package/public/{chunk-4F545BYA.js → chunk-7TSUSJHK.js} +1 -1
- package/public/{chunk-DOTDPU6I.js → chunk-B7ASQGIT.js} +1 -1
- package/public/{chunk-6BFW4QGM.js → chunk-BCTZLT7T.js} +1 -1
- package/public/{chunk-L44VK4MX.js → chunk-BJW3EYCN.js} +1 -1
- package/public/{chunk-J7PFU54S.js → chunk-BWVQQ7XD.js} +1 -1
- package/public/{chunk-I6JQZB5O.js → chunk-BZVO3JIQ.js} +1 -1
- package/public/{chunk-H7QNI4SL.js → chunk-CK234OHO.js} +1 -1
- package/public/chunk-DTITJSDU.js +1 -0
- package/public/{chunk-CAAIHLOW.js → chunk-EFBNPDVN.js} +1 -1
- package/public/{chunk-LHHSRBQN.js → chunk-EIKIGJGT.js} +1 -1
- package/public/chunk-EXPDB5CJ.js +1 -0
- package/public/{chunk-KGKHFXTV.js → chunk-EXVHFPLG.js} +1 -1
- package/public/{chunk-MXGYFXAQ.js → chunk-F46ML4GE.js} +1 -1
- package/public/{chunk-Q2PBTNVX.js → chunk-F4QKTMKG.js} +1 -1
- package/public/{chunk-NFM5TL2D.js → chunk-F5SS6TN7.js} +1 -1
- package/public/{chunk-ZEWKZT52.js → chunk-F7BNBUEW.js} +1 -1
- package/public/chunk-G3NT5LV6.js +1 -0
- package/public/{chunk-B7UYTZXL.js → chunk-GGHFQZAJ.js} +1 -1
- package/public/{chunk-TLTUEKJ3.js → chunk-GJHKJW7G.js} +1 -1
- package/public/chunk-GMP35WWF.js +1 -0
- package/public/{chunk-AQ3L5HNX.js → chunk-GMZ6O3I5.js} +1 -1
- package/public/{chunk-UKMABQF7.js → chunk-H3E4T6KH.js} +1 -1
- package/public/{chunk-GNCZMUYC.js → chunk-HBGENGOA.js} +1 -1
- package/public/{chunk-CLZKKYED.js → chunk-HMOW3VNR.js} +1 -1
- package/public/{chunk-KUSRTUPV.js → chunk-IAJBS4F3.js} +1 -1
- package/public/chunk-IJSNG5L7.js +1 -0
- package/public/chunk-IUHGKF4I.js +1 -0
- package/public/{chunk-PBQ7WARI.js → chunk-IUUJYZCY.js} +1 -1
- package/public/chunk-JPYKH7ON.js +1 -0
- package/public/{chunk-BHRTYERJ.js → chunk-JTNCJAJL.js} +1 -1
- package/public/chunk-JXHVIG4U.js +1 -0
- package/public/{chunk-OLUE6FKW.js → chunk-JY3ZZB5T.js} +1 -1
- package/public/chunk-KDJPDALB.js +7 -0
- package/public/{chunk-3EZNSBTT.js → chunk-KE67UEME.js} +1 -1
- package/public/{chunk-DOTHLAFP.js → chunk-KFM3IHPE.js} +1 -1
- package/public/{chunk-ZBISXPRT.js → chunk-KKE3XVCS.js} +1 -1
- package/public/{chunk-RC3EKF6L.js → chunk-KPI7JWRK.js} +1 -1
- package/public/chunk-KY3LSONF.js +1 -0
- package/public/chunk-M43OLMXJ.js +1 -0
- package/public/{chunk-BNFAGA2J.js → chunk-MDS6CJQC.js} +1 -1
- package/public/{chunk-GRKWTRPO.js → chunk-MMPQXC6H.js} +1 -1
- package/public/chunk-NBLWBPNU.js +1 -0
- package/public/{chunk-UKDRSQGK.js → chunk-NIGZKKLM.js} +1 -1
- package/public/chunk-NZEAIDME.js +1 -0
- package/public/{chunk-OLI7NXK6.js → chunk-OJZZVAQX.js} +1 -1
- package/public/{chunk-Z2WU6CI5.js → chunk-OZTQT47N.js} +1 -1
- package/public/{chunk-7H6DGXSK.js → chunk-P5WCYSBI.js} +1 -1
- package/public/{chunk-UQGUDBNN.js → chunk-QHHRJOCD.js} +2 -2
- package/public/chunk-QIUCYAO6.js +1 -0
- package/public/chunk-R2GI3M3R.js +1 -0
- package/public/chunk-RKAF37ZJ.js +1 -0
- package/public/{chunk-2NGWCZ7G.js → chunk-RMFHCCDM.js} +1 -1
- package/public/{chunk-JYSWXJEM.js → chunk-RXIWNBGC.js} +1 -1
- package/public/chunk-S7XHKMB6.js +1 -0
- package/public/{chunk-PEPJJ2S2.js → chunk-SEKLEPJD.js} +1 -1
- package/public/{chunk-OIU3EPA6.js → chunk-SPCVBENU.js} +1 -1
- package/public/{chunk-O62BQ7X6.js → chunk-SU7PCFCE.js} +1 -1
- package/public/chunk-SZQRABYM.js +1 -0
- package/public/{chunk-VY4T3ANP.js → chunk-T6FYP7FJ.js} +1 -1
- package/public/chunk-TKD3NDAB.js +1 -0
- package/public/{chunk-CIBCOHRI.js → chunk-UFSVM3Q4.js} +1 -1
- package/public/{chunk-6TBAEXXH.js → chunk-UTT43ABZ.js} +1 -1
- package/public/chunk-WBM3J7G6.js +1 -0
- package/public/{chunk-QRCM4ROA.js → chunk-WNRNIYIE.js} +1 -1
- package/public/chunk-WX6C5G2Y.js +1 -0
- package/public/{chunk-YWPSQFVI.js → chunk-X2J4XMUB.js} +1 -1
- package/public/chunk-XH4UDTMW.js +1 -0
- package/public/{chunk-KKLXPAWX.js → chunk-XKW7UNZ7.js} +1 -1
- package/public/chunk-XMJ3TLM7.js +1 -0
- package/public/{chunk-Q7ULBWII.js → chunk-Z4CHNCHA.js} +1 -1
- package/public/{chunk-NSNJSM3H.js → chunk-ZRYCN4PM.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-2LOLR6YW.js → main-FN3FPYBU.js} +1 -1
- package/public/chunk-2FONRXNS.js +0 -1
- package/public/chunk-6VNED2B7.js +0 -1
- package/public/chunk-ABMCCQFK.js +0 -1
- package/public/chunk-BBUNHZZ2.js +0 -1
- package/public/chunk-C2OH5ZWH.js +0 -1
- package/public/chunk-CSV74HQ4.js +0 -1
- package/public/chunk-DGXFIYFL.js +0 -7
- package/public/chunk-DICSCOX4.js +0 -1
- package/public/chunk-FS7AUYFB.js +0 -1
- package/public/chunk-H42YQB2K.js +0 -1
- package/public/chunk-JYQW2TF2.js +0 -1
- package/public/chunk-M5RQZ44G.js +0 -1
- package/public/chunk-MRFSUELJ.js +0 -1
- package/public/chunk-NA3KDDIG.js +0 -1
- package/public/chunk-OAFAQ3O5.js +0 -1
- package/public/chunk-PKWCYS5H.js +0 -1
- package/public/chunk-PNDAULNN.js +0 -1
- package/public/chunk-PZ4AQXXH.js +0 -1
- package/public/chunk-QNF4CL6Z.js +0 -1
- package/public/chunk-RSJZPDIB.js +0 -1
- package/public/chunk-S7HHJZJG.js +0 -1
- package/public/chunk-SLORZQP7.js +0 -1
- package/public/chunk-TZVL2MQA.js +0 -1
- package/public/chunk-V6L575MT.js +0 -1
- package/public/chunk-W5V5ZZ2E.js +0 -1
- package/public/chunk-WFNGQHXX.js +0 -1
- package/public/chunk-XVS3HSWR.js +0 -1
- package/public/chunk-ZC3HEO3K.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as N,B as x,C as D,D as W,E as I,F as j,G as O,H as V,I as q,J as B,K as G,L as R,M as U,N as z,O as E,P as J,Q as K,R as P,S as Q,T as X,b as f,c as a,g as C,h as s,i as d,j as c,k as u,l,m as g,n as M,o as y,p as h,q as v,r as S,s as b,t as w,u as A,v as F,w as k,x as T,y as H,z as L}from"./chunk-
|
|
1
|
+
import{A as N,B as x,C as D,D as W,E as I,F as j,G as O,H as V,I as q,J as B,K as G,L as R,M as U,N as z,O as E,P as J,Q as K,R as P,S as Q,T as X,b as f,c as a,g as C,h as s,i as d,j as c,k as u,l,m as g,n as M,o as y,p as h,q as v,r as S,s as b,t as w,u as A,v as F,w as k,x as T,y as H,z as L}from"./chunk-ZRYCN4PM.js";import{b as Y}from"./chunk-6MDI4RNQ.js";import{q as p}from"./chunk-F5SS6TN7.js";import{y as t,z as i}from"./chunk-Z4CHNCHA.js";import{c as n}from"./chunk-H3E4T6KH.js";import{ia as m,md as e,vb as r}from"./chunk-KDJPDALB.js";var Cm=(()=>{class o{static \u0275fac=function(Z){return new(Z||o)};static \u0275mod=r({type:o});static \u0275inj=m({providers:[a],imports:[e,t,i,n.forChild(),C,p,Y,X,f,B,q,R,D,h,v,U,T,k,H,L,S,N,x,c,Q,P,K,J,y,M,G,g,V,O,I,W,F,j,E,z,A,d,s,b,w,l,u]})}return o})();export{Cm as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-EXVHFPLG.js";import"./chunk-H3E4T6KH.js";import"./chunk-KDJPDALB.js";export{a as SupportComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as I}from"./chunk-
|
|
1
|
+
import{e as I}from"./chunk-KDJPDALB.js";var j=I((k,m)=>{(function(g,l){typeof k=="object"&&typeof m=="object"?m.exports=l():typeof define=="function"&&define.amd?define([],l):typeof k=="object"?k.WebLinksAddon=l():g.WebLinksAddon=l()})(self,function(){return(()=>{"use strict";var g={6:(a,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.LinkComputer=r.WebLinkProvider=void 0;var s=function(){function o(n,i,e,t){t===void 0&&(t={}),this._terminal=n,this._regex=i,this._handler=e,this._options=t}return o.prototype.provideLinks=function(n,i){var e=p.computeLink(n,this._regex,this._terminal,this._handler);i(this._addCallbacks(e))},o.prototype._addCallbacks=function(n){var i=this;return n.map(function(e){return e.leave=i._options.leave,e.hover=function(t,u){if(i._options.hover){var c=e.range;i._options.hover(t,u,c)}},e})},o}();r.WebLinkProvider=s;var p=function(){function o(){}return o.computeLink=function(n,i,e,t){for(var u,c=new RegExp(i.source,(i.flags||"")+"g"),_=o._translateBufferLineToStringWithWrap(n-1,!1,e),d=_[0],f=_[1],v=-1,w=[];(u=c.exec(d))!==null;){var h=u[1];if(!h){console.log("match found without corresponding matchIndex");break}if(v=d.indexOf(h,v+1),c.lastIndex=v+h.length,v<0)break;for(var b=v+h.length,y=f+1;b>e.cols;)b-=e.cols,y++;for(var L=v+1,P=f+1;L>e.cols;)L-=e.cols,P++;var M={start:{x:L,y:P},end:{x:b,y}};w.push({range:M,text:h,activate:t})}return w},o._translateBufferLineToStringWithWrap=function(n,i,e){var t,u,c="";do{if(!(d=e.buffer.active.getLine(n)))break;d.isWrapped&&n--,u=d.isWrapped}while(u);var _=n;do{var d,f=e.buffer.active.getLine(n+1);if(t=!!f&&f.isWrapped,!(d=e.buffer.active.getLine(n)))break;c+=d.translateToString(!t&&i).substring(0,e.cols),n++}while(t);return[c,_]},o}();r.LinkComputer=p}},l={};function x(a){var r=l[a];if(r!==void 0)return r.exports;var s=l[a]={exports:{}};return g[a](s,s.exports,x),s.exports}var W={};return(()=>{var a=W;Object.defineProperty(a,"__esModule",{value:!0}),a.WebLinksAddon=void 0;var r=x(6),s=new RegExp(`(?:^|[^\\da-z\\.-]+)((https?:\\/\\/)((([\\da-z\\.-]+)\\.([a-z\\.]{2,18}))|((\\d{1,3}\\.){3}\\d{1,3})|(localhost))(:\\d{1,5})?((\\/[\\/\\w\\.\\-%~:+@]*)*([^:"'\\s]))?(\\?[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?(#[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?)($|[^\\/\\w\\.\\-%]+)`);function p(n,i){var e=window.open();if(e){try{e.opener=null}catch{}e.location.href=i}else console.warn("Opening link blocked as opener could not be cleared")}var o=function(){function n(i,e,t){i===void 0&&(i=p),e===void 0&&(e={}),t===void 0&&(t=!1),this._handler=i,this._options=e,this._useLinkProvider=t}return n.prototype.activate=function(i){if(this._terminal=i,this._useLinkProvider&&"registerLinkProvider"in this._terminal){var e=(t=this._options).urlRegex||s;this._linkProvider=this._terminal.registerLinkProvider(new r.WebLinkProvider(this._terminal,e,this._handler,t))}else{var t;(t=this._options).matchIndex=1,this._linkMatcherId=this._terminal.registerLinkMatcher(s,this._handler,t)}},n.prototype.dispose=function(){var i;this._linkMatcherId!==void 0&&this._terminal!==void 0&&this._terminal.deregisterLinkMatcher(this._linkMatcherId),(i=this._linkProvider)===null||i===void 0||i.dispose()},n}();a.WebLinksAddon=o})(),W})()})});export{j as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-KE67UEME.js";import"./chunk-Z4CHNCHA.js";import"./chunk-HMOW3VNR.js";import"./chunk-F46ML4GE.js";import"./chunk-EIKIGJGT.js";import"./chunk-G3NT5LV6.js";import"./chunk-QHHRJOCD.js";import"./chunk-H3E4T6KH.js";import"./chunk-KDJPDALB.js";export{a as LoginComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as D}from"./chunk-
|
|
1
|
+
import{a as D}from"./chunk-OJZZVAQX.js";import{d as B}from"./chunk-HMOW3VNR.js";import{b as R}from"./chunk-EIKIGJGT.js";import{b as k,j as O}from"./chunk-G3NT5LV6.js";import{a as I,b as E}from"./chunk-H3E4T6KH.js";import{$b as $,Bb as h,Bc as s,Cc as o,Mb as f,Rb as d,Wb as r,Xb as n,Yb as v,ad as T,cc as S,dc as _,ib as i,na as c,nc as a,oc as p,pc as x,ub as w,xa as C,xc as b,ya as y,yc as g}from"./chunk-KDJPDALB.js";var F=(t,l)=>({"fas fa-fw fa-spinner fa-spin":t,"far fa-fw fa-check-circle":l}),j=t=>({"grey-text":t}),M=(t,l)=>({"far fa-fw fa-circle":t,"fas fa-fw fa-spinner fa-spin":l});function P(t,l){t&1&&(r(0,"p",7),a(1),s(2,"translate"),n()),t&2&&(i(),p(o(2,1,"restart.please_wait_while_server_restarts")))}function U(t,l){if(t&1&&(r(0,"div",8),a(1),n()),t&2){let e=_();i(),p(e.error)}}function V(t,l){if(t&1&&(r(0,"div",9)(1,"div",10)(2,"span"),v(3,"i",11),a(4),s(5,"translate"),n()(),r(6,"div",10)(7,"span",11),v(8,"i",11),a(9),s(10,"translate"),n()()()),t&2){let e=_();i(3),f("ngClass",g(9,F,!e.uiOnline,e.uiOnline)),i(),x(" ",o(5,5,"restart.ui_online")," "),i(3),f("ngClass",b(12,j,!e.uiOnline)),i(),f("ngClass",g(14,M,!e.uiOnline,e.uiOnline)),i(),x(" ",o(10,7,"restart.service_ready")," ")}}function z(t,l){if(t&1){let e=$();r(0,"p",14)(1,"button",15),S("click",function(){C(e);let m=_(2);return y(m.viewLogs())}),a(2),s(3,"translate"),n()()}t&2&&(i(2),p(o(3,1,"menu.tooltip_view_logs")))}function A(t,l){if(t&1&&(r(0,"div")(1,"div",12)(2,"p"),a(3),s(4,"translate"),n(),r(5,"p",13),a(6),s(7,"translate"),r(8,"code"),a(9),n()(),h(10,z,4,3,"p",14),n()()),t&2){let e=_();i(3),p(o(4,4,"restart.server_is_taking_long_time_to_restart")),i(3),x(" ",o(7,6,"restart.label_restart_command_executed"),": "),i(3),p(e.resp.command||"End Process"),i(),d(e.uiOnline?10:-1)}}var Y=(()=>{class t{$api=c(k);$router=c(B);$settings=c(R);$toastr=c(O);$translate=c(I);$ws=c(D);checkTimeout;checkDelay;resp={};timeout=!1;error=!1;uiOnline=!1;io;ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch()}),this.$api.put("/server/restart",{}).subscribe({next:e=>{this.resp=e,this.checkIfServerUp(),e.restartingUI||(this.uiOnline=!0)},error:e=>{console.error(e),this.error=this.$translate.instant("restart.toast_server_restart_error"),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{this.uiOnline=!0,(e.status==="up"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},7e3),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},4e4)}viewLogs(){this.$router.navigate(["/logs"])}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}static \u0275fac=function(u){return new(u||t)};static \u0275cmp=w({type:t,selectors:[["ng-component"]],decls:15,vars:10,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-fw","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"grey-text"],[1,"alert","alert-error","my-4"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[3,"ngClass"],[1,"alert","alert-warning","my-4"],[1,"grey-text","mb-0"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(u,m){u&1&&(r(0,"div",0)(1,"h3",1),a(2),s(3,"translate"),n()(),r(4,"div",2)(5,"div",3),v(6,"i",4),n(),r(7,"div",5)(8,"h4",6),a(9),s(10,"translate"),n(),h(11,P,3,3,"p",7)(12,U,2,1,"div",8)(13,V,11,17,"div",9)(14,A,11,8,"div"),n()()),u&2&&(i(2),p(o(3,6,"menu.restart.title")),i(7),p(o(10,8,"restart.title_restart")),i(2),d(m.error?-1:11),i(),d(m.error?12:-1),i(),d(m.error?-1:13),i(),d(m.timeout?14:-1))},dependencies:[T,E],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;margin-top:15px}"]})}return t})();export{Y as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ce,b as be}from"./chunk-UKDRSQGK.js";import{a as _e}from"./chunk-T5OJYFIY.js";import{o as he,w as j}from"./chunk-2NGWCZ7G.js";import{a as R}from"./chunk-PBQ7WARI.js";import{a as A}from"./chunk-Z2WU6CI5.js";import{a as fe}from"./chunk-I6JQZB5O.js";import{a as me}from"./chunk-CAAIHLOW.js";import{h as le,i as re,j as se,k as de,l as pe,m as ce,n as ue,o as ge}from"./chunk-NFM5TL2D.js";import{c as K,d as Q,e as X,f as Y,g as Z,j as ee,m as ie,p as te,q as ne,y as ae,z as oe}from"./chunk-Q7ULBWII.js";import{a as H}from"./chunk-OLI7NXK6.js";import{a as W,d as J}from"./chunk-CLZKKYED.js";import{b as N}from"./chunk-LHHSRBQN.js";import{b as E,j as D}from"./chunk-DICSCOX4.js";import{a as M,b as T}from"./chunk-UKMABQF7.js";import{$b as C,Bb as v,Bc as c,Cc as u,Dc as O,Lb as B,Mb as x,Rb as p,Tb as U,Ub as z,Vb as F,Wb as o,Xb as l,Yb as r,ad as L,cc as m,dc as s,eb as I,h as S,ib as a,kd as G,na as w,nc as g,oc as k,pc as b,ub as V,w as y,xa as _,ya as h,yc as q}from"./chunk-DGXFIYFL.js";function ke(t,d){if(t&1){let e=C();o(0,"button",15),m("click",function(){_(e);let i=s();return h(i.$activeModal.dismiss("Dismiss"))}),g(1),c(2,"translate"),l()}t&2&&(a(),b(" ",u(2,1,"form.button_close")," "))}function Se(t,d){if(t&1){let e=C();o(0,"button",15),m("click",function(){_(e);let i=s();return h(i.$activeModal.dismiss("Dismiss"))}),g(1),c(2,"translate"),l()}t&2&&(a(),b(" ",u(2,1,"form.button_close")," "))}function Be(t,d){if(t&1&&(o(0,"a",14),g(1),c(2,"translate"),r(3,"i",16),l()),t&2){let e=s();x("href",e.plugin.links.homepage||e.plugin.links.npm,I),a(),b(" ",u(2,2,"plugins.button_homepage")," ")}}var xe=(()=>{class t{$activeModal=w(ce);plugin;defaultIcon="assets/hb-icon.png";ngOnInit(){this.plugin.icon||(this.plugin.icon=this.defaultIcon)}handleIconError(){this.plugin.icon=this.defaultIcon}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:26,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","w-100","text-center"],["alt","Plugin Icon",1,"mb-3","plugin-icon",3,"error","src"],[1,"my-3"],[1,"m-0","grey-text"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-right"],["target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none",3,"href"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"fas","fa-fw","fa-external-link-alt"]],template:function(n,i){n&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),g(3),c(4,"translate"),l(),o(5,"button",3),c(6,"translate"),m("click",function(){return i.$activeModal.dismiss("Dismiss")}),o(7,"span",4),g(8,"\xD7"),l()()(),o(9,"div",5)(10,"img",6),m("error",function(){return i.handleIconError()}),l(),o(11,"h4"),g(12),l(),o(13,"p",7),g(14),l(),o(15,"p",8),g(16),l(),o(17,"p",8),g(18),l()(),o(19,"div",9)(20,"div",10),v(21,ke,3,3,"button",11),l(),o(22,"div",12),v(23,Se,3,3,"button",11),l(),o(24,"div",13),v(25,Be,4,4,"a",14),l()()()),n&2&&(a(3),k(u(4,10,"plugins.manage.information")),a(2),B("aria-label",u(6,12,"form.button_close")),a(5),x("src",i.plugin.icon,I),a(2),k(i.plugin.displayName||i.plugin.name),a(2),k(i.plugin.description),a(2),k(i.plugin.name),a(2),b("@",i.plugin.author,""),a(3),p(i.plugin.links.homepage||i.plugin.links.npm?21:-1),a(2),p(!i.plugin.links.homepage&&!i.plugin.links.npm?23:-1),a(2),p(i.plugin.links.homepage||i.plugin.links.npm?25:-1))},dependencies:[T],styles:[".plugin-icon[_ngcontent-%COMP%]{height:75px;width:75px;border-radius:15px;border:1px solid #222222}"]})}return t})();var ye=(t,d)=>({"fa-bridge-circle-exclamation orange-text":t,"fa-bridge-circle-xmark red-text":d});function Ie(t,d){t&1&&r(0,"i",25)}function Ve(t,d){t&1&&r(0,"i",26)}function Te(t,d){if(t&1){let e=C();o(0,"a",24),m("click",function(){_(e);let i=s();return h(i.openHb2InfoModal())}),v(1,Ie,1,0,"i",25)(2,Ve,1,0,"i",26),l()}if(t&2){let e=s();x("ngbTooltip","Homebridge v2.0 Readiness")("placement","right"),a(),p(e.hb2Status==="supported"?1:-1),a(),p(e.hb2Status==="unknown"?2:-1)}}function $e(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.checkAndUpdatePlugin(i.plugin,i.plugin.updateTag||"latest"))}),r(3,"i",28),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.button_update")),B("aria-label",u(2,4,"plugins.button_update")))}function Ee(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.switchToScoped(i.plugin))}),r(3,"i",29),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.manage.scoped.switch")),B("aria-label",u(2,4,"plugins.manage.scoped.switch")))}function Me(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.settings(i.plugin))}),r(3,"i",30),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.button_set_up")),B("aria-label",u(2,4,"plugins.button_set_up")))}function De(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.bridgeSettings(i.plugin))}),r(3,"i",31),l()}t&2&&(x("ngbTooltip",u(1,2,"child_bridge.setup")),B("aria-label",u(2,4,"child_bridge.setup")))}function Ne(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.bridgeSettings(i.plugin))}),r(3,"i",32),l()}t&2&&(x("ngbTooltip",u(1,2,"child_bridge.bridge_connect")),B("aria-label",u(2,4,"child_bridge.bridge_connect")))}function He(t,d){if(t&1&&r(0,"i",13),t&2){let e=s();x("ngClass",q(1,ye,e.childBridgeStatus==="pending",e.childBridgeStatus==="down"))}}function je(t,d){if(t&1){let e=C();o(0,"p",18)(1,"a",33),m("click",function(){_(e);let i=s();return h(i.openVerifiedModal())}),r(2,"i",34),o(3,"span",17),g(4),c(5,"translate"),l()()()}t&2&&(a(4),k(u(5,1,"plugins.donate.button_verified")))}function Ae(t,d){if(t&1){let e=C();o(0,"p",18)(1,"a",35),m("click",function(){_(e);let i=s();return h(i.openVerifiedModal())}),r(2,"i",36),o(3,"span",17),g(4),c(5,"translate"),l()()()}t&2&&(a(4),k(u(5,1,"plugins.donate.button_not_verified")))}function Re(t,d){if(t&1){let e=C();o(0,"a",37),m("click",function(){_(e);let i=s();return h(i.openFundingModal(i.plugin))}),r(1,"i",38),o(2,"span",17),g(3),l()()}if(t&2){let e=s();a(3),b("@",e.plugin.author,"")}}function Ue(t,d){if(t&1&&(o(0,"span",17),r(1,"i",39),g(2),l()),t&2){let e=s();a(2),b("@",e.plugin.author," ")}}function ze(t,d){if(t&1&&(o(0,"span"),g(1),c(2,"date"),l()),t&2){let e=s(2);a(),b("(",O(2,1,e.plugin.lastUpdated,"yyyy-MM-dd"),")")}}function Fe(t,d){if(t&1&&(o(0,"span"),r(1,"i",40),o(2,"span",17),g(3),v(4,ze,3,4,"span"),l()()),t&2){let e=s();a(3),b("v",e.plugin.latestVersion," "),a(),p(e.plugin.lastUpdated?4:-1)}}function qe(t,d){if(t&1&&(o(0,"span"),r(1,"i",41),g(2),l()),t&2){let e=s();a(2),b("v",e.plugin.installedVersion," ")}}function Oe(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),m("click",function(){_(e);let i=s();return h(i.doChildBridgeAction("restart"))}),r(2,"i",42),l()}if(t&2){let e=s();x("ngbTooltip",u(1,1,e.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart"))}}function Le(t,d){if(t&1){let e=C();o(0,"a",43),m("click",function(){_(e);let i=s();return h(i.enablePlugin(i.plugin))}),r(1,"i",44),c(2,"translate"),l()}t&2&&(a(),x("ngbTooltip",u(2,1,"plugins.status_disabled")))}function Ge(t,d){if(t&1){let e=C();o(0,"a",45),m("click",function(){_(e);let i=s();return h(i.$plugin.installAlternateVersion(i.plugin))}),r(1,"i",46),l()}}function We(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.viewPluginLog(i.plugin))}),r(1,"i",55),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.plugin_logs")," "))}function Je(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.installAlternateVersion(i.plugin))}),r(1,"i",56),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.manage_version")," "))}function Ke(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.jsonEditor(i.plugin))}),r(1,"i",57),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.json_config")," "))}function Qe(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.disablePlugin(i.plugin))}),r(1,"i",58),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.disable")," "))}function Xe(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.enablePlugin(i.plugin))}),r(1,"i",59),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.enable")," "))}function Ye(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.uninstallPlugin(i.plugin,i.setChildBridges))}),r(1,"i",60),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.button_uninstall")," "))}function Ze(t,d){t&1&&r(0,"div",53)}function ei(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("restart"))}),r(1,"i",62),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart")," ")}}function ii(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("stop"))}),r(1,"i",63),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.stop_plural":"child_bridge.stop")," ")}}function ti(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("start"))}),r(1,"i",64),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.start_plural":"child_bridge.start")," ")}}function ni(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.$plugin.resetChildBridges(i.setChildBridges))}),r(1,"i",65),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.reset_accessories")," "))}function ai(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",61),g(2),c(3,"translate"),l(),v(4,ei,4,3,"button",52)(5,ii,4,3,"button",52)(6,ti,4,3,"button",52)(7,ni,4,3,"button",52)}if(t&2){let e=s(2);a(2),b(" ",u(3,5,"child_bridge.bridge_settings")," "),a(2),p(e.childBridgeRestartInProgress?-1:4),a(),p(e.allChildBridgesStopped?-1:5),a(),p(e.allChildBridgesStopped?6:-1),a(),p(e.$settings.env.serviceMode?7:-1)}}function oi(t,d){t&1&&r(0,"div",53)}function li(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",66),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.setup")," "))}function ri(t,d){t&1&&r(0,"div",53)}function si(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",66),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.setup")," "))}function di(t,d){t&1&&r(0,"div",53)}function pi(t,d){if(t&1&&(o(0,"a",54),r(1,"i",67),g(2),c(3,"translate"),l()),t&2){let e=s(2);x("href",e.plugin.links.bugs,I),a(2),b(" ",u(3,2,"support.links.issue")," ")}}function ci(t,d){if(t&1){let e=C();o(0,"span",23)(1,"a",47),r(2,"i",48),l(),o(3,"div",49)(4,"button",50),m("click",function(){_(e);let i=s();return h(i.$plugin.settings(i.plugin))}),r(5,"i",51),g(6),c(7,"translate"),l(),v(8,We,4,3,"button",52)(9,Je,4,3,"button",52)(10,Ke,4,3,"button",52)(11,Qe,4,3,"button",52)(12,Xe,4,3,"button",52)(13,Ye,4,3,"button",52)(14,Ze,1,0,"div",53)(15,ai,8,7)(16,oi,1,0,"div",53)(17,li,4,3,"button",52)(18,ri,1,0,"div",53)(19,si,4,3,"button",52)(20,di,1,0,"div",53)(21,pi,4,4,"a",54),l()()}if(t&2){let e=s();a(),B("aria-label","Plugin Actions Dropdown"),a(5),b(" ",u(7,16,"plugins.button_settings")," "),a(2),p(e.plugin.isConfigured&&!e.plugin.disabled?8:-1),a(),p(e.plugin.publicPackage?9:-1),a(),p(!e.isMobile&&e.plugin.name!=="homebridge-config-ui-x"?10:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"&&!e.plugin.disabled?11:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"&&e.plugin.disabled?12:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"?13:-1),a(),p(!e.plugin.disabled&&e.plugin.isConfigured&&e.plugin.hasChildBridges&&e.plugin.installedVersion&&e.plugin.name!=="homebridge-config-ui-x"?14:-1),a(),p(e.plugin.hasChildBridges&&!e.plugin.disabled?15:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&!e.plugin.recommendChildBridge?16:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&!e.plugin.recommendChildBridge?17:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&e.plugin.recommendChildBridge&&e.plugin.updateAvailable?18:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&e.plugin.recommendChildBridge&&e.plugin.updateAvailable?19:-1),a(),p(e.plugin.links!=null&&e.plugin.links.bugs?20:-1),a(),p(e.plugin.links!=null&&e.plugin.links.bugs?21:-1)}}var we=(()=>{class t{$api=w(E);$md=w(fe);$modal=w(ue);$plugin=w(j);$settings=w(N);$toastr=w(D);$translate=w(M);$ws=w(H);plugin;hasChildBridges=!1;hasUnpairedChildBridges=!1;allChildBridgesStopped=!1;childBridgeStatus="pending";childBridgeRestartInProgress=!1;defaultIcon="assets/hb-icon.png";isMobile;setChildBridges=[];prettyDisplayName="";hb2Status="unknown";io;set childBridges(e){var f,$;this.hasChildBridges=e.length>0,this.hasUnpairedChildBridges=e.filter(P=>P.paired===!1).length>0,this.allChildBridgesStopped=e.filter(P=>P.manuallyStopped===!0).length===e.length,this.hasChildBridges&&(e.some(P=>P.status==="down")?this.childBridgeStatus="down":e.some(P=>P.status==="pending")?this.childBridgeStatus="pending":e.some(P=>P.status==="ok")&&(this.childBridgeStatus="ok")),this.setChildBridges=e;let n=this.$settings.env.homebridgeVersion.split(".")[0],i=(($=(f=this.plugin.engines)==null?void 0:f.homebridge)==null?void 0:$.split("||").map(P=>P.trim()))||[];this.hb2Status=n==="2"?"hide":i.some(P=>P.startsWith("^2")||P.startsWith(">=2"))?"supported":this.hb2Status}ngOnInit(){this.isMobile=this.$md.detect.mobile(),this.prettyDisplayName=this.prettifyName(),this.io=this.$ws.getExistingNamespace("child-bridges"),this.plugin.icon||(this.plugin.icon=this.defaultIcon)}openFundingModal(e){let n=this.$modal.open(be,{size:"lg",backdrop:"static"});n.componentInstance.plugin=e}openVerifiedModal(){let e=this.$modal.open(A,{size:"lg",backdrop:"static"});this.plugin.verifiedPlugin||this.plugin.verifiedPlusPlugin?(e.componentInstance.title=this.$translate.instant("plugins.manage.verified_title"),e.componentInstance.subtitle=this.$translate.instant("plugins.manage.verified_subtitle",{pluginName:this.plugin.displayName||this.plugin.name}),e.componentInstance.message=this.$translate.instant("plugins.manage.verified_message"),e.componentInstance.faIconClass="fa-shield-alt green-text"):(e.componentInstance.title=this.$translate.instant("plugins.manage.unverified_title"),e.componentInstance.subtitle=this.$translate.instant("plugins.manage.unverified_subtitle",{pluginName:this.plugin.displayName||this.plugin.name}),e.componentInstance.message=this.$translate.instant("plugins.manage.unverified_message"),e.componentInstance.faIconClass="fa-shield-alt grey-text"),e.componentInstance.ctaButtonLabel=this.$translate.instant("form.button_more_info"),e.componentInstance.ctaButtonLink="https://github.com/homebridge/homebridge/wiki/verified-Plugins"}pluginInfoModal(e){let n=this.$modal.open(xe,{size:"lg",backdrop:"static"});n.componentInstance.plugin=e}disablePlugin(e){let n=this.$modal.open(Ce,{size:"lg",backdrop:"static"});n.componentInstance.pluginName=e.name,n.componentInstance.isConfigured=e.isConfigured,n.componentInstance.isConfiguredDynamicPlatform=e.isConfiguredDynamicPlatform,n.result.then(()=>S(this,null,function*(){try{yield y(this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/disable`,{})),e.disabled=!0,this.hasChildBridges&&this.doChildBridgeAction("stop"),this.$modal.open(R,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.disable.error"),this.$translate.instant("toast.title_error"))}}))}enablePlugin(e){let n=this.$modal.open(me,{size:"lg",backdrop:"static"});n.componentInstance.title=`${this.$translate.instant("plugins.manage.enable")}: ${e.name}`,n.componentInstance.message=this.$translate.instant("plugins.manage.confirm_enable",{pluginName:e.name}),n.componentInstance.confirmButtonLabel=this.$translate.instant("plugins.manage.enable"),n.componentInstance.faIconClass="fa-circle-play primary-text",n.result.then(()=>S(this,null,function*(){try{yield y(this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/enable`,{})),e.disabled=!1,this.hasChildBridges&&(yield this.doChildBridgeAction("start")),this.$modal.open(R,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.enable.error"),this.$translate.instant("toast.title_error"))}}))}viewPluginLog(e){let n=this.$modal.open(he,{size:"xl",backdrop:"static"});n.componentInstance.plugin=e}doChildBridgeAction(e){return S(this,null,function*(){this.childBridgeRestartInProgress=!0;try{for(let n of this.setChildBridges)yield y(this.io.request(`${e}-child-bridge`,n.username))}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.bridge.action_error",{action:e}),this.$translate.instant("toast.title_error")),this.childBridgeRestartInProgress=!1}finally{setTimeout(()=>{this.childBridgeRestartInProgress=!1},e==="restart"?12e3:e==="stop"?6e3:1e3)}})}handleIconError(){this.plugin.icon=this.defaultIcon}prettifyName(){let e=this.plugin.displayName||(this.plugin.name.charAt(0)==="@"?this.plugin.name.split("/")[1]:this.plugin.name);return e=e.replace(/-/g," "),this.isMobile&&e.toLowerCase().startsWith("homebridge ")&&(e=e.replace(/^homebridge /i,"")),this.plugin.displayName||(e=e.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.substring(1).toLowerCase())),e}openHb2InfoModal(){let e=this.$modal.open(A,{size:"lg",backdrop:"static"});e.componentInstance.title="Plugin Readiness",this.hb2Status==="supported"?(e.componentInstance.subtitle=`${this.plugin.displayName||this.plugin.name} is ready for Homebridge v2.0`,e.componentInstance.message="The developer has specifically marked your installed version of the plugin as compatible with Homebridge v2.0.",e.componentInstance.faIconClass="fa-check-circle green-text"):(e.componentInstance.subtitle=`${this.plugin.displayName||this.plugin.name} might not be ready for Homebridge v2.0`,e.componentInstance.message="The developer has not specifically marked your installed version of the plugin as compatible with Homebridge v2.0, but it may still work.",e.componentInstance.faIconClass="fa-question-circle orange-text"),e.componentInstance.ctaButtonLabel=this.$translate.instant("form.button_more_info"),e.componentInstance.ctaButtonLink="https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["app-plugin-card"]],inputs:{plugin:"plugin",childBridges:"childBridges"},decls:38,vars:21,consts:[[1,"card","card-body","mb-3"],[1,"d-flex","flex-row","justify-content-between"],[1,"d-flex","flex-column","mr-3","align-items-center","justify-content-between"],["alt","Plugin Icon",1,"plugin-icon-card","mb-3",3,"error","src"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover","aria-label","Homebridge v2.0 Readiness",3,"ngbTooltip","placement"],[1,"d-flex","flex-column","justify-content-between",2,"min-width","calc(100% - 80px)"],[1,"d-flex","flex-row","align-items-end"],[1,"d-flex","flex-column","w-100"],[1,"d-flex","flex-row"],[1,"card-title","mb-2","text-truncate"],[1,"ml-auto"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover",1,"card-link",3,"ngbTooltip"],[1,"fas","fa-fw","fa-spinner","fa-pulse","fa-lg","grey-text","ml-3",3,"hidden"],[1,"fas","fa-fw","fa-lg","ml-3",3,"ngClass"],[1,"card-text","mb-2","text-truncate"],["href","javascript:void(0)",1,"card-link","grey-text",3,"click"],[1,"fas","fa-fw","fa-info-circle","fa-lg","mr-1"],[1,"grey-text"],[1,"card-text","mb-2"],["href","javascript:void(0)",1,"card-link","pink-text"],[1,"card-text","mb-0","grey-text"],["href","javascript:void(0)",1,"card-link","red-text"],["href","javascript:void(0)"],["ngbDropdown","","placement","left",1,"d-inline-block","ml-3","mt-auto"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover","aria-label","Homebridge v2.0 Readiness",3,"click","ngbTooltip","placement"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.0",1,"fas","fa-check-circle","green-text","fa-xl"],["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"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover",1,"card-link",3,"click","ngbTooltip"],[1,"far","fa-fw","fa-arrow-alt-circle-up","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-fw","fa-arrow-right-arrow-left","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-fw","fa-sliders","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-fw","fa-bridge","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-fw","fa-qrcode","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],["href","javascript:void(0)",1,"card-link","green-text",3,"click"],[1,"fas","fa-fw","fa-shield-alt","fa-lg","mr-1"],["href","javascript:void(0)",1,"card-link",3,"click"],[1,"fas","fa-fw","fa-shield-alt","fa-lg","mr-1",2,"opacity","0.25"],["href","javascript:void(0)",1,"card-link","pink-text",3,"click"],[1,"fas","fa-fw","fa-heart","fa-lg","mr-1"],[1,"fas","fa-fw","fa-heart","fa-lg","mr-1",2,"opacity","0.5"],[1,"far","fa-fw","fa-circle-dot","fa-lg","mr-1"],[1,"far","fa-fw","fa-circle-check","fa-lg","mr-1"],[1,"fas","fa-fw","fa-lg","fa-power-off","ml-3"],["href","javascript:void(0)",1,"card-link","red-text",3,"click"],["container","body","openDelay","150","triggers","hover",1,"far","fa-fw","fa-pause-circle","fa-lg",3,"ngbTooltip"],["href","javascript:void(0)",3,"click"],[1,"far","fa-fw","fa-arrow-alt-circle-down","fa-lg"],["href","javascript:void(0)","ngbDropdownToggle","",1,"card-link","text-decoration-none","mt-auto",2,"outline","none"],[1,"fa-solid","fa-fw","fa-ellipsis-v","fa-lg"],["ngbDropdownMenu","","aria-labelledby","Plugin Actions Dropdown"],["ngbDropdownItem","",3,"click"],[1,"fas","fa-fw","fa-sliders"],["ngbDropdownItem",""],[1,"dropdown-divider"],["ngbDropdownItem","","rel","noopener noreferrer","target","_blank",3,"href"],[1,"fas","fa-fw","fa-wave-square"],[1,"fas","fa-fw","fa-code-compare"],[1,"fas","fa-fw","fa-code"],[1,"far","fa-fw","fa-circle-pause"],[1,"far","fa-fw","fa-circle-play"],[1,"fas","fa-fw","fa-trash"],[1,"fas","fa-fw","fa-bridge"],[1,"fa-fw","icon-button","fas","fa-fw","fa-power-off"],[1,"fas","fa-fw","fa-stop"],[1,"fas","fa-fw","fa-play"],[1,"fas","fa-fw","fa-broom"],[1,"icon-button","fas","fa-fw","fa-bridge"],[1,"icon-button","fa","fa-fw","fa-question-circle-o"]],template:function(n,i){n&1&&(o(0,"div",0)(1,"div",1)(2,"div",2)(3,"img",3),m("error",function(){return i.handleIconError()}),l(),v(4,Te,3,4,"a",4),l(),o(5,"div",5)(6,"div",6)(7,"div",7)(8,"div",8)(9,"h5",9),g(10),l(),o(11,"div",10),v(12,$e,4,6,"a",11)(13,Ee,4,6,"a",11)(14,Me,4,6,"a",11)(15,De,4,6,"a",11)(16,Ne,4,6,"a",11),r(17,"i",12),v(18,He,1,4,"i",13),l()(),o(19,"p",14)(20,"a",15),m("click",function(){return i.pluginInfoModal(i.plugin)}),r(21,"i",16),o(22,"span",17),g(23),l()()(),v(24,je,6,3,"p",18)(25,Ae,6,3,"p",18),o(26,"p",18),v(27,Re,4,1,"a",19)(28,Ue,3,1,"span",17),l(),o(29,"div",8)(30,"p",20),v(31,Fe,5,2,"span")(32,qe,3,1,"span"),l(),o(33,"div",10),v(34,Oe,3,3,"a",11)(35,Le,3,3,"a",21)(36,Ge,2,0,"a",22)(37,ci,22,18,"span",23),l()()()()()()()),n&2&&(a(3),x("src",i.plugin.icon,I),a(),p(i.plugin.installedVersion&&i.hb2Status!=="hide"?4:-1),a(6),k(i.prettyDisplayName),a(2),p(i.plugin.installedVersion&&i.plugin.updateAvailable&&!i.childBridgeRestartInProgress?12:-1),a(),p(i.plugin.installedVersion&&(i.plugin.newHbScope==null?null:i.plugin.newHbScope.switch)===i.plugin.installedVersion&&!i.childBridgeRestartInProgress?13:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&!i.plugin.isConfigured&&!i.childBridgeRestartInProgress?14:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&i.plugin.recommendChildBridge&&!i.childBridgeRestartInProgress?15:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&i.hasUnpairedChildBridges&&i.childBridgeStatus==="ok"&&!i.plugin.disabled?16:-1),a(),x("hidden",!i.childBridgeRestartInProgress),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&!i.hasUnpairedChildBridges&&i.childBridgeStatus!=="ok"&&!i.plugin.disabled?18:-1),a(5),k(i.plugin.name),a(),p(i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin?24:-1),a(),p(!i.plugin.verifiedPlugin&&!i.plugin.verifiedPlusPlugin?25:-1),a(2),p((i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin)&&i.plugin.funding?27:-1),a(),p((i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin)&&i.plugin.funding?-1:28),a(3),p(i.plugin.publicPackage&&!i.plugin.installedVersion?31:-1),a(),p(i.plugin.installedVersion?32:-1),a(2),p(!i.plugin.disabled&&i.plugin.hasChildBridges&&i.childBridgeStatus==="ok"?34:-1),a(),p(i.plugin.installedVersion&&i.plugin.disabled?35:-1),a(),p(i.plugin.publicPackage&&!i.plugin.installedVersion?36:-1),a(),p(i.plugin.installedVersion?37:-1))},dependencies:[ge,L,pe,de,se,re,le,G,T],encapsulation:2})}return t})();function ui(t,d){t&1&&r(0,"app-spinner")}function gi(t,d){if(t&1){let e=C();o(0,"a",11),m("click",function(){_(e);let i=s();return h(i.onClearSearch())}),r(1,"i",12),l()}}function mi(t,d){if(t&1&&(o(0,"div",9),r(1,"app-plugin-card",13),l()),t&2){let e=d.$implicit,n=s();a(),x("plugin",e)("childBridges",n.getPluginChildBridges(e))}}function fi(t,d){t&1&&(o(0,"div",10),r(1,"i",14),o(2,"p"),g(3),c(4,"translate"),l()()),t&2&&(a(3),k(u(4,1,"plugins.placeholder_search_first")))}var at=(()=>{class t{$api=w(E);$plugin=w(j);$router=w(J);$settings=w(N);$toastr=w(D);$translate=w(M);$ws=w(H);loading=!0;installedPlugins=[];childBridges=[];showExitButton=!1;form=new Z({query:new ee("",[Q.required])});io;navigationSubscription;ngOnInit(){return S(this,null,function*(){this.io=this.$ws.connectToNamespace("child-bridges"),this.io.connected.subscribe(()=>S(this,null,function*(){this.getChildBridgeMetadata(),this.io.socket.emit("monitor-child-bridge-status"),yield this.loadInstalledPlugins();let e=this.$router.parseUrl(this.$router.url).queryParams.installed;if(e){let n=this.installedPlugins.find(i=>i.name===e);n&&!n.isConfigured&&this.$plugin.settings(n),this.$router.navigate(["/plugins"])}})),this.io.socket.on("child-bridge-status-update",e=>{let n=this.childBridges.find(i=>i.username===e.username);n?Object.assign(n,e):this.childBridges.push(e)}),this.navigationSubscription=this.$router.events.subscribe(e=>{e instanceof W&&this.loadInstalledPlugins()})})}loadInstalledPlugins(){return S(this,null,function*(){this.form.setValue({query:""}),this.showExitButton=!1,this.installedPlugins=[],this.loading=!0;try{let e=yield y(this.$api.get("/plugins"));this.installedPlugins=e.filter(i=>i.name!=="homebridge-config-ui-x"),yield this.appendMetaInfo();let n=this.installedPlugins.sort((i,f)=>i.updateAvailable!==f.updateAvailable?i.updateAvailable?-1:1:i.newHbScope&&!f.newHbScope?-1:i.disabled!==f.disabled?i.disabled?1:-1:i.isConfigured!==f.isConfigured?i.isConfigured?1:-1:i.hasChildBridgesUnpaired!==f.hasChildBridgesUnpaired?i.hasChildBridgesUnpaired?-1:1:i.hasChildBridges!==f.hasChildBridges&&this.$settings.env.recommendChildBridges?i.hasChildBridges?1:-1:i.name.localeCompare(f.name));return this.loading=!1,n}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}appendMetaInfo(){return S(this,null,function*(){yield Promise.all(this.installedPlugins.filter(e=>e.installedVersion).map(e=>S(this,null,function*(){try{let n=yield y(this.$api.get(`/config-editor/plugin/${encodeURIComponent(e.name)}`));e.isConfigured=n.length>0,e.isConfiguredDynamicPlatform=e.isConfigured&&Object.prototype.hasOwnProperty.call(n[0],"platform"),e.recommendChildBridge=e.isConfiguredDynamicPlatform&&this.$settings.env.recommendChildBridges&&this.$settings.env.serviceMode&&!["homebridge","homebridge-config-ui-x"].includes(e.name),e.hasChildBridges=e.isConfigured&&n.some(f=>f._bridge&&f._bridge.username);let i=this.getPluginChildBridges(e);e.hasChildBridgesUnpaired=i.some(f=>!f.paired)}catch{e.isConfigured=!0,e.hasChildBridges=!0}})))})}search(){this.installedPlugins=[],this.loading=!0,this.showExitButton=!0,this.$api.get(`/plugins/search/${encodeURIComponent(this.form.value.query)}`).subscribe({next:e=>{let n=new Set;this.installedPlugins=e.sort((i,f)=>i.newHbScope&&!f.newHbScope?-1:!i.newHbScope&&f.newHbScope?1:0).reduce((i,f)=>{if(f.name==="homebridge-config-ui-x"||n.has(f.name))return i;if(f.newHbScope){let $=f.newHbScope.to,P=e.some(Pe=>Pe.name===$);(f.installedVersion||!P)&&(n.add($),i.push(f))}else i.push(f);return i},[]).sort((i,f)=>i.installedVersion!==f.installedVersion?i.installedVersion?-1:1:0),this.appendMetaInfo(),this.loading=!1},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error")),this.loadInstalledPlugins()}})}onClearSearch(){this.loadInstalledPlugins()}onSubmit({value:e}){e.query.length?this.search():this.loadInstalledPlugins()}getChildBridgeMetadata(){this.io.request("get-homebridge-child-bridge-status").subscribe(e=>{this.childBridges=e})}getPluginChildBridges(e){return this.childBridges.filter(n=>n.plugin===e.name)}ngOnDestroy(){this.navigationSubscription&&this.navigationSubscription.unsubscribe(),this.io.end()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],decls:16,vars:10,consts:[[1,"row","mb-3"],[1,"col-12"],[1,"primary-text","m-0"],[1,"row"],[1,"col-md-12"],["novalidate","",3,"ngSubmit","formGroup"],["type","text","formControlName","query",1,"hb-npm-search",3,"placeholder"],["href","javascript:void(0)",1,"hb-npm-search-clear"],[1,"d-flex","flex-wrap","justify-content-between"],[1,"hb-plugin-space-between"],[1,"alert","alert-info","mt-4","text-center","w-100"],["href","javascript:void(0)",1,"hb-npm-search-clear",3,"click"],[1,"far","fa-fw","fa-times-circle"],[3,"plugin","childBridges"],[1,"fas","fa-fw","fa-magnifying-glass","primary-text","my-3",2,"font-size","75px"]],template:function(n,i){n&1&&(v(0,ui,1,0,"app-spinner"),o(1,"div",0)(2,"div",1)(3,"h3",2),g(4),c(5,"translate"),l()()(),o(6,"div",3)(7,"div",4)(8,"form",5),m("ngSubmit",function(){return i.onSubmit(i.form)}),r(9,"input",6),c(10,"translate"),v(11,gi,2,0,"a",7),l()()(),o(12,"div",8),z(13,mi,2,2,"div",9,U),v(15,fi,5,3,"div",10),l()),n&2&&(p(i.loading?0:-1),a(4),k(u(5,6,"menu.label_plugins")),a(4),x("formGroup",i.form),a(),x("placeholder",u(10,8,"plugins.placeholder_search_plugin")),a(2),p(i.showExitButton?11:-1),a(2),F(i.installedPlugins),a(2),p(i.installedPlugins.length===0&&!i.loading?15:-1))},dependencies:[_e,ae,ie,K,X,Y,oe,te,ne,we,T],styles:[".hb-npm-search[_ngcontent-%COMP%]{outline:none;box-sizing:inherit!important;background-color:inherit;height:50px!important;width:100%;border-width:.5px;padding:10px;margin-bottom:15px}@media (hover: hover){.hb-npm-search[_ngcontent-%COMP%]:hover{border:1px solid #000000}}.hb-npm-search[_ngcontent-%COMP%]:focus{border:1px solid #000000;box-shadow:0 1px #000}.hb-npm-search-clear[_ngcontent-%COMP%]{position:absolute;right:25px;font-size:35px;color:#d0d0d0;line-height:50px;cursor:pointer}.hb-plugin-space-between[_ngcontent-%COMP%]{box-sizing:border-box;width:calc(50% - 6.6666666667px)}@media only screen and (max-width: 991px){.hb-plugin-space-between[_ngcontent-%COMP%]{width:100%}}"]})}return t})();export{at as a};
|
|
1
|
+
import{a as Ce,b as be}from"./chunk-NIGZKKLM.js";import{a as _e}from"./chunk-44XAYR34.js";import{o as he,w as j}from"./chunk-RMFHCCDM.js";import{a as R}from"./chunk-IUUJYZCY.js";import{a as A}from"./chunk-OZTQT47N.js";import{a as fe}from"./chunk-BZVO3JIQ.js";import{a as me}from"./chunk-EFBNPDVN.js";import{h as le,i as re,j as se,k as de,l as pe,m as ce,n as ue,o as ge}from"./chunk-F5SS6TN7.js";import{c as K,d as Q,e as X,f as Y,g as Z,j as ee,m as ie,p as te,q as ne,y as ae,z as oe}from"./chunk-Z4CHNCHA.js";import{a as H}from"./chunk-OJZZVAQX.js";import{a as W,d as J}from"./chunk-HMOW3VNR.js";import{b as N}from"./chunk-EIKIGJGT.js";import{b as E,j as D}from"./chunk-G3NT5LV6.js";import{a as M,b as T}from"./chunk-H3E4T6KH.js";import{$b as C,Bb as v,Bc as c,Cc as u,Dc as O,Lb as B,Mb as x,Rb as p,Tb as U,Ub as z,Vb as F,Wb as o,Xb as l,Yb as r,ad as L,cc as m,dc as s,eb as I,h as S,ib as a,kd as G,na as w,nc as g,oc as k,pc as b,ub as V,w as y,xa as _,ya as h,yc as q}from"./chunk-KDJPDALB.js";function ke(t,d){if(t&1){let e=C();o(0,"button",15),m("click",function(){_(e);let i=s();return h(i.$activeModal.dismiss("Dismiss"))}),g(1),c(2,"translate"),l()}t&2&&(a(),b(" ",u(2,1,"form.button_close")," "))}function Se(t,d){if(t&1){let e=C();o(0,"button",15),m("click",function(){_(e);let i=s();return h(i.$activeModal.dismiss("Dismiss"))}),g(1),c(2,"translate"),l()}t&2&&(a(),b(" ",u(2,1,"form.button_close")," "))}function Be(t,d){if(t&1&&(o(0,"a",14),g(1),c(2,"translate"),r(3,"i",16),l()),t&2){let e=s();x("href",e.plugin.links.homepage||e.plugin.links.npm,I),a(),b(" ",u(2,2,"plugins.button_homepage")," ")}}var xe=(()=>{class t{$activeModal=w(ce);plugin;defaultIcon="assets/hb-icon.png";ngOnInit(){this.plugin.icon||(this.plugin.icon=this.defaultIcon)}handleIconError(){this.plugin.icon=this.defaultIcon}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:26,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","w-100","text-center"],["alt","Plugin Icon",1,"mb-3","plugin-icon",3,"error","src"],[1,"my-3"],[1,"m-0","grey-text"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-right"],["target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none",3,"href"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"fas","fa-fw","fa-external-link-alt"]],template:function(n,i){n&1&&(o(0,"div",0)(1,"div",1)(2,"h5",2),g(3),c(4,"translate"),l(),o(5,"button",3),c(6,"translate"),m("click",function(){return i.$activeModal.dismiss("Dismiss")}),o(7,"span",4),g(8,"\xD7"),l()()(),o(9,"div",5)(10,"img",6),m("error",function(){return i.handleIconError()}),l(),o(11,"h4"),g(12),l(),o(13,"p",7),g(14),l(),o(15,"p",8),g(16),l(),o(17,"p",8),g(18),l()(),o(19,"div",9)(20,"div",10),v(21,ke,3,3,"button",11),l(),o(22,"div",12),v(23,Se,3,3,"button",11),l(),o(24,"div",13),v(25,Be,4,4,"a",14),l()()()),n&2&&(a(3),k(u(4,10,"plugins.manage.information")),a(2),B("aria-label",u(6,12,"form.button_close")),a(5),x("src",i.plugin.icon,I),a(2),k(i.plugin.displayName||i.plugin.name),a(2),k(i.plugin.description),a(2),k(i.plugin.name),a(2),b("@",i.plugin.author,""),a(3),p(i.plugin.links.homepage||i.plugin.links.npm?21:-1),a(2),p(!i.plugin.links.homepage&&!i.plugin.links.npm?23:-1),a(2),p(i.plugin.links.homepage||i.plugin.links.npm?25:-1))},dependencies:[T],styles:[".plugin-icon[_ngcontent-%COMP%]{height:75px;width:75px;border-radius:15px;border:1px solid #222222}"]})}return t})();var ye=(t,d)=>({"fa-bridge-circle-exclamation orange-text":t,"fa-bridge-circle-xmark red-text":d});function Ie(t,d){t&1&&r(0,"i",25)}function Ve(t,d){t&1&&r(0,"i",26)}function Te(t,d){if(t&1){let e=C();o(0,"a",24),m("click",function(){_(e);let i=s();return h(i.openHb2InfoModal())}),v(1,Ie,1,0,"i",25)(2,Ve,1,0,"i",26),l()}if(t&2){let e=s();x("ngbTooltip","Homebridge v2.0 Readiness")("placement","right"),a(),p(e.hb2Status==="supported"?1:-1),a(),p(e.hb2Status==="unknown"?2:-1)}}function $e(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.checkAndUpdatePlugin(i.plugin,i.plugin.updateTag||"latest"))}),r(3,"i",28),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.button_update")),B("aria-label",u(2,4,"plugins.button_update")))}function Ee(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.switchToScoped(i.plugin))}),r(3,"i",29),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.manage.scoped.switch")),B("aria-label",u(2,4,"plugins.manage.scoped.switch")))}function Me(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.settings(i.plugin))}),r(3,"i",30),l()}t&2&&(x("ngbTooltip",u(1,2,"plugins.button_set_up")),B("aria-label",u(2,4,"plugins.button_set_up")))}function De(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.bridgeSettings(i.plugin))}),r(3,"i",31),l()}t&2&&(x("ngbTooltip",u(1,2,"child_bridge.setup")),B("aria-label",u(2,4,"child_bridge.setup")))}function Ne(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),c(2,"translate"),m("click",function(){_(e);let i=s();return h(i.$plugin.bridgeSettings(i.plugin))}),r(3,"i",32),l()}t&2&&(x("ngbTooltip",u(1,2,"child_bridge.bridge_connect")),B("aria-label",u(2,4,"child_bridge.bridge_connect")))}function He(t,d){if(t&1&&r(0,"i",13),t&2){let e=s();x("ngClass",q(1,ye,e.childBridgeStatus==="pending",e.childBridgeStatus==="down"))}}function je(t,d){if(t&1){let e=C();o(0,"p",18)(1,"a",33),m("click",function(){_(e);let i=s();return h(i.openVerifiedModal())}),r(2,"i",34),o(3,"span",17),g(4),c(5,"translate"),l()()()}t&2&&(a(4),k(u(5,1,"plugins.donate.button_verified")))}function Ae(t,d){if(t&1){let e=C();o(0,"p",18)(1,"a",35),m("click",function(){_(e);let i=s();return h(i.openVerifiedModal())}),r(2,"i",36),o(3,"span",17),g(4),c(5,"translate"),l()()()}t&2&&(a(4),k(u(5,1,"plugins.donate.button_not_verified")))}function Re(t,d){if(t&1){let e=C();o(0,"a",37),m("click",function(){_(e);let i=s();return h(i.openFundingModal(i.plugin))}),r(1,"i",38),o(2,"span",17),g(3),l()()}if(t&2){let e=s();a(3),b("@",e.plugin.author,"")}}function Ue(t,d){if(t&1&&(o(0,"span",17),r(1,"i",39),g(2),l()),t&2){let e=s();a(2),b("@",e.plugin.author," ")}}function ze(t,d){if(t&1&&(o(0,"span"),g(1),c(2,"date"),l()),t&2){let e=s(2);a(),b("(",O(2,1,e.plugin.lastUpdated,"yyyy-MM-dd"),")")}}function Fe(t,d){if(t&1&&(o(0,"span"),r(1,"i",40),o(2,"span",17),g(3),v(4,ze,3,4,"span"),l()()),t&2){let e=s();a(3),b("v",e.plugin.latestVersion," "),a(),p(e.plugin.lastUpdated?4:-1)}}function qe(t,d){if(t&1&&(o(0,"span"),r(1,"i",41),g(2),l()),t&2){let e=s();a(2),b("v",e.plugin.installedVersion," ")}}function Oe(t,d){if(t&1){let e=C();o(0,"a",27),c(1,"translate"),m("click",function(){_(e);let i=s();return h(i.doChildBridgeAction("restart"))}),r(2,"i",42),l()}if(t&2){let e=s();x("ngbTooltip",u(1,1,e.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart"))}}function Le(t,d){if(t&1){let e=C();o(0,"a",43),m("click",function(){_(e);let i=s();return h(i.enablePlugin(i.plugin))}),r(1,"i",44),c(2,"translate"),l()}t&2&&(a(),x("ngbTooltip",u(2,1,"plugins.status_disabled")))}function Ge(t,d){if(t&1){let e=C();o(0,"a",45),m("click",function(){_(e);let i=s();return h(i.$plugin.installAlternateVersion(i.plugin))}),r(1,"i",46),l()}}function We(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.viewPluginLog(i.plugin))}),r(1,"i",55),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.plugin_logs")," "))}function Je(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.installAlternateVersion(i.plugin))}),r(1,"i",56),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.manage_version")," "))}function Ke(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.jsonEditor(i.plugin))}),r(1,"i",57),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.json_config")," "))}function Qe(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.disablePlugin(i.plugin))}),r(1,"i",58),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.disable")," "))}function Xe(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.enablePlugin(i.plugin))}),r(1,"i",59),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.manage.enable")," "))}function Ye(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.uninstallPlugin(i.plugin,i.setChildBridges))}),r(1,"i",60),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"plugins.button_uninstall")," "))}function Ze(t,d){t&1&&r(0,"div",53)}function ei(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("restart"))}),r(1,"i",62),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart")," ")}}function ii(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("stop"))}),r(1,"i",63),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.stop_plural":"child_bridge.stop")," ")}}function ti(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.doChildBridgeAction("start"))}),r(1,"i",64),g(2),c(3,"translate"),l()}if(t&2){let e=s(3);a(2),b(" ",u(3,1,e.setChildBridges.length>1?"child_bridge.start_plural":"child_bridge.start")," ")}}function ni(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(3);return h(i.$plugin.resetChildBridges(i.setChildBridges))}),r(1,"i",65),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.reset_accessories")," "))}function ai(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",61),g(2),c(3,"translate"),l(),v(4,ei,4,3,"button",52)(5,ii,4,3,"button",52)(6,ti,4,3,"button",52)(7,ni,4,3,"button",52)}if(t&2){let e=s(2);a(2),b(" ",u(3,5,"child_bridge.bridge_settings")," "),a(2),p(e.childBridgeRestartInProgress?-1:4),a(),p(e.allChildBridgesStopped?-1:5),a(),p(e.allChildBridgesStopped?6:-1),a(),p(e.$settings.env.serviceMode?7:-1)}}function oi(t,d){t&1&&r(0,"div",53)}function li(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",66),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.setup")," "))}function ri(t,d){t&1&&r(0,"div",53)}function si(t,d){if(t&1){let e=C();o(0,"button",50),m("click",function(){_(e);let i=s(2);return h(i.$plugin.bridgeSettings(i.plugin))}),r(1,"i",66),g(2),c(3,"translate"),l()}t&2&&(a(2),b(" ",u(3,1,"child_bridge.setup")," "))}function di(t,d){t&1&&r(0,"div",53)}function pi(t,d){if(t&1&&(o(0,"a",54),r(1,"i",67),g(2),c(3,"translate"),l()),t&2){let e=s(2);x("href",e.plugin.links.bugs,I),a(2),b(" ",u(3,2,"support.links.issue")," ")}}function ci(t,d){if(t&1){let e=C();o(0,"span",23)(1,"a",47),r(2,"i",48),l(),o(3,"div",49)(4,"button",50),m("click",function(){_(e);let i=s();return h(i.$plugin.settings(i.plugin))}),r(5,"i",51),g(6),c(7,"translate"),l(),v(8,We,4,3,"button",52)(9,Je,4,3,"button",52)(10,Ke,4,3,"button",52)(11,Qe,4,3,"button",52)(12,Xe,4,3,"button",52)(13,Ye,4,3,"button",52)(14,Ze,1,0,"div",53)(15,ai,8,7)(16,oi,1,0,"div",53)(17,li,4,3,"button",52)(18,ri,1,0,"div",53)(19,si,4,3,"button",52)(20,di,1,0,"div",53)(21,pi,4,4,"a",54),l()()}if(t&2){let e=s();a(),B("aria-label","Plugin Actions Dropdown"),a(5),b(" ",u(7,16,"plugins.button_settings")," "),a(2),p(e.plugin.isConfigured&&!e.plugin.disabled?8:-1),a(),p(e.plugin.publicPackage?9:-1),a(),p(!e.isMobile&&e.plugin.name!=="homebridge-config-ui-x"?10:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"&&!e.plugin.disabled?11:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"&&e.plugin.disabled?12:-1),a(),p(e.plugin.name!=="homebridge-config-ui-x"?13:-1),a(),p(!e.plugin.disabled&&e.plugin.isConfigured&&e.plugin.hasChildBridges&&e.plugin.installedVersion&&e.plugin.name!=="homebridge-config-ui-x"?14:-1),a(),p(e.plugin.hasChildBridges&&!e.plugin.disabled?15:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&!e.plugin.recommendChildBridge?16:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&!e.plugin.recommendChildBridge?17:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&e.plugin.recommendChildBridge&&e.plugin.updateAvailable?18:-1),a(),p(e.plugin.isConfigured&&!e.plugin.hasChildBridges&&!e.plugin.disabled&&e.plugin.recommendChildBridge&&e.plugin.updateAvailable?19:-1),a(),p(e.plugin.links!=null&&e.plugin.links.bugs?20:-1),a(),p(e.plugin.links!=null&&e.plugin.links.bugs?21:-1)}}var we=(()=>{class t{$api=w(E);$md=w(fe);$modal=w(ue);$plugin=w(j);$settings=w(N);$toastr=w(D);$translate=w(M);$ws=w(H);plugin;hasChildBridges=!1;hasUnpairedChildBridges=!1;allChildBridgesStopped=!1;childBridgeStatus="pending";childBridgeRestartInProgress=!1;defaultIcon="assets/hb-icon.png";isMobile;setChildBridges=[];prettyDisplayName="";hb2Status="unknown";io;set childBridges(e){var f,$;this.hasChildBridges=e.length>0,this.hasUnpairedChildBridges=e.filter(P=>P.paired===!1).length>0,this.allChildBridgesStopped=e.filter(P=>P.manuallyStopped===!0).length===e.length,this.hasChildBridges&&(e.some(P=>P.status==="down")?this.childBridgeStatus="down":e.some(P=>P.status==="pending")?this.childBridgeStatus="pending":e.some(P=>P.status==="ok")&&(this.childBridgeStatus="ok")),this.setChildBridges=e;let n=this.$settings.env.homebridgeVersion.split(".")[0],i=(($=(f=this.plugin.engines)==null?void 0:f.homebridge)==null?void 0:$.split("||").map(P=>P.trim()))||[];this.hb2Status=n==="2"?"hide":i.some(P=>P.startsWith("^2")||P.startsWith(">=2"))?"supported":this.hb2Status}ngOnInit(){this.isMobile=this.$md.detect.mobile(),this.prettyDisplayName=this.prettifyName(),this.io=this.$ws.getExistingNamespace("child-bridges"),this.plugin.icon||(this.plugin.icon=this.defaultIcon)}openFundingModal(e){let n=this.$modal.open(be,{size:"lg",backdrop:"static"});n.componentInstance.plugin=e}openVerifiedModal(){let e=this.$modal.open(A,{size:"lg",backdrop:"static"});this.plugin.verifiedPlugin||this.plugin.verifiedPlusPlugin?(e.componentInstance.title=this.$translate.instant("plugins.manage.verified_title"),e.componentInstance.subtitle=this.$translate.instant("plugins.manage.verified_subtitle",{pluginName:this.plugin.displayName||this.plugin.name}),e.componentInstance.message=this.$translate.instant("plugins.manage.verified_message"),e.componentInstance.faIconClass="fa-shield-alt green-text"):(e.componentInstance.title=this.$translate.instant("plugins.manage.unverified_title"),e.componentInstance.subtitle=this.$translate.instant("plugins.manage.unverified_subtitle",{pluginName:this.plugin.displayName||this.plugin.name}),e.componentInstance.message=this.$translate.instant("plugins.manage.unverified_message"),e.componentInstance.faIconClass="fa-shield-alt grey-text"),e.componentInstance.ctaButtonLabel=this.$translate.instant("form.button_more_info"),e.componentInstance.ctaButtonLink="https://github.com/homebridge/homebridge/wiki/verified-Plugins"}pluginInfoModal(e){let n=this.$modal.open(xe,{size:"lg",backdrop:"static"});n.componentInstance.plugin=e}disablePlugin(e){let n=this.$modal.open(Ce,{size:"lg",backdrop:"static"});n.componentInstance.pluginName=e.name,n.componentInstance.isConfigured=e.isConfigured,n.componentInstance.isConfiguredDynamicPlatform=e.isConfiguredDynamicPlatform,n.result.then(()=>S(this,null,function*(){try{yield y(this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/disable`,{})),e.disabled=!0,this.hasChildBridges&&this.doChildBridgeAction("stop"),this.$modal.open(R,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.disable.error"),this.$translate.instant("toast.title_error"))}}))}enablePlugin(e){let n=this.$modal.open(me,{size:"lg",backdrop:"static"});n.componentInstance.title=`${this.$translate.instant("plugins.manage.enable")}: ${e.name}`,n.componentInstance.message=this.$translate.instant("plugins.manage.confirm_enable",{pluginName:e.name}),n.componentInstance.confirmButtonLabel=this.$translate.instant("plugins.manage.enable"),n.componentInstance.faIconClass="fa-circle-play primary-text",n.result.then(()=>S(this,null,function*(){try{yield y(this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/enable`,{})),e.disabled=!1,this.hasChildBridges&&(yield this.doChildBridgeAction("start")),this.$modal.open(R,{size:"lg",backdrop:"static"})}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("plugins.enable.error"),this.$translate.instant("toast.title_error"))}}))}viewPluginLog(e){let n=this.$modal.open(he,{size:"xl",backdrop:"static"});n.componentInstance.plugin=e}doChildBridgeAction(e){return S(this,null,function*(){this.childBridgeRestartInProgress=!0;try{for(let n of this.setChildBridges)yield y(this.io.request(`${e}-child-bridge`,n.username))}catch(n){console.error(n),this.$toastr.error(this.$translate.instant("plugins.bridge.action_error",{action:e}),this.$translate.instant("toast.title_error")),this.childBridgeRestartInProgress=!1}finally{setTimeout(()=>{this.childBridgeRestartInProgress=!1},e==="restart"?12e3:e==="stop"?6e3:1e3)}})}handleIconError(){this.plugin.icon=this.defaultIcon}prettifyName(){let e=this.plugin.displayName||(this.plugin.name.charAt(0)==="@"?this.plugin.name.split("/")[1]:this.plugin.name);return e=e.replace(/-/g," "),this.isMobile&&e.toLowerCase().startsWith("homebridge ")&&(e=e.replace(/^homebridge /i,"")),this.plugin.displayName||(e=e.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.substring(1).toLowerCase())),e}openHb2InfoModal(){let e=this.$modal.open(A,{size:"lg",backdrop:"static"});e.componentInstance.title="Plugin Readiness",this.hb2Status==="supported"?(e.componentInstance.subtitle=`${this.plugin.displayName||this.plugin.name} is ready for Homebridge v2.0`,e.componentInstance.message="The developer has specifically marked your installed version of the plugin as compatible with Homebridge v2.0.",e.componentInstance.faIconClass="fa-check-circle green-text"):(e.componentInstance.subtitle=`${this.plugin.displayName||this.plugin.name} might not be ready for Homebridge v2.0`,e.componentInstance.message="The developer has not specifically marked your installed version of the plugin as compatible with Homebridge v2.0, but it may still work.",e.componentInstance.faIconClass="fa-question-circle orange-text"),e.componentInstance.ctaButtonLabel=this.$translate.instant("form.button_more_info"),e.componentInstance.ctaButtonLink="https://github.com/homebridge/homebridge/wiki/Updating-To-Homebridge-v2.0"}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["app-plugin-card"]],inputs:{plugin:"plugin",childBridges:"childBridges"},decls:38,vars:21,consts:[[1,"card","card-body","mb-3"],[1,"d-flex","flex-row","justify-content-between"],[1,"d-flex","flex-column","mr-3","align-items-center","justify-content-between"],["alt","Plugin Icon",1,"plugin-icon-card","mb-3",3,"error","src"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover","aria-label","Homebridge v2.0 Readiness",3,"ngbTooltip","placement"],[1,"d-flex","flex-column","justify-content-between",2,"min-width","calc(100% - 80px)"],[1,"d-flex","flex-row","align-items-end"],[1,"d-flex","flex-column","w-100"],[1,"d-flex","flex-row"],[1,"card-title","mb-2","text-truncate"],[1,"ml-auto"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover",1,"card-link",3,"ngbTooltip"],[1,"fas","fa-fw","fa-spinner","fa-pulse","fa-lg","grey-text","ml-3",3,"hidden"],[1,"fas","fa-fw","fa-lg","ml-3",3,"ngClass"],[1,"card-text","mb-2","text-truncate"],["href","javascript:void(0)",1,"card-link","grey-text",3,"click"],[1,"fas","fa-fw","fa-info-circle","fa-lg","mr-1"],[1,"grey-text"],[1,"card-text","mb-2"],["href","javascript:void(0)",1,"card-link","pink-text"],[1,"card-text","mb-0","grey-text"],["href","javascript:void(0)",1,"card-link","red-text"],["href","javascript:void(0)"],["ngbDropdown","","placement","left",1,"d-inline-block","ml-3","mt-auto"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover","aria-label","Homebridge v2.0 Readiness",3,"click","ngbTooltip","placement"],["aria-label","The developer has specifically marked this plugin as compatible with Homebridge v2.0",1,"fas","fa-check-circle","green-text","fa-xl"],["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"],["href","javascript:void(0)","container","body","openDelay","150","triggers","hover",1,"card-link",3,"click","ngbTooltip"],[1,"far","fa-fw","fa-arrow-alt-circle-up","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-fw","fa-arrow-right-arrow-left","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-fw","fa-sliders","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-fw","fa-bridge","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-fw","fa-qrcode","primary-text","fa-lg","fa-fade","ml-3",2,"--fa-animation-duration","2s"],["href","javascript:void(0)",1,"card-link","green-text",3,"click"],[1,"fas","fa-fw","fa-shield-alt","fa-lg","mr-1"],["href","javascript:void(0)",1,"card-link",3,"click"],[1,"fas","fa-fw","fa-shield-alt","fa-lg","mr-1",2,"opacity","0.25"],["href","javascript:void(0)",1,"card-link","pink-text",3,"click"],[1,"fas","fa-fw","fa-heart","fa-lg","mr-1"],[1,"fas","fa-fw","fa-heart","fa-lg","mr-1",2,"opacity","0.5"],[1,"far","fa-fw","fa-circle-dot","fa-lg","mr-1"],[1,"far","fa-fw","fa-circle-check","fa-lg","mr-1"],[1,"fas","fa-fw","fa-lg","fa-power-off","ml-3"],["href","javascript:void(0)",1,"card-link","red-text",3,"click"],["container","body","openDelay","150","triggers","hover",1,"far","fa-fw","fa-pause-circle","fa-lg",3,"ngbTooltip"],["href","javascript:void(0)",3,"click"],[1,"far","fa-fw","fa-arrow-alt-circle-down","fa-lg"],["href","javascript:void(0)","ngbDropdownToggle","",1,"card-link","text-decoration-none","mt-auto",2,"outline","none"],[1,"fa-solid","fa-fw","fa-ellipsis-v","fa-lg"],["ngbDropdownMenu","","aria-labelledby","Plugin Actions Dropdown"],["ngbDropdownItem","",3,"click"],[1,"fas","fa-fw","fa-sliders"],["ngbDropdownItem",""],[1,"dropdown-divider"],["ngbDropdownItem","","rel","noopener noreferrer","target","_blank",3,"href"],[1,"fas","fa-fw","fa-wave-square"],[1,"fas","fa-fw","fa-code-compare"],[1,"fas","fa-fw","fa-code"],[1,"far","fa-fw","fa-circle-pause"],[1,"far","fa-fw","fa-circle-play"],[1,"fas","fa-fw","fa-trash"],[1,"fas","fa-fw","fa-bridge"],[1,"fa-fw","icon-button","fas","fa-fw","fa-power-off"],[1,"fas","fa-fw","fa-stop"],[1,"fas","fa-fw","fa-play"],[1,"fas","fa-fw","fa-broom"],[1,"icon-button","fas","fa-fw","fa-bridge"],[1,"icon-button","fa","fa-fw","fa-question-circle-o"]],template:function(n,i){n&1&&(o(0,"div",0)(1,"div",1)(2,"div",2)(3,"img",3),m("error",function(){return i.handleIconError()}),l(),v(4,Te,3,4,"a",4),l(),o(5,"div",5)(6,"div",6)(7,"div",7)(8,"div",8)(9,"h5",9),g(10),l(),o(11,"div",10),v(12,$e,4,6,"a",11)(13,Ee,4,6,"a",11)(14,Me,4,6,"a",11)(15,De,4,6,"a",11)(16,Ne,4,6,"a",11),r(17,"i",12),v(18,He,1,4,"i",13),l()(),o(19,"p",14)(20,"a",15),m("click",function(){return i.pluginInfoModal(i.plugin)}),r(21,"i",16),o(22,"span",17),g(23),l()()(),v(24,je,6,3,"p",18)(25,Ae,6,3,"p",18),o(26,"p",18),v(27,Re,4,1,"a",19)(28,Ue,3,1,"span",17),l(),o(29,"div",8)(30,"p",20),v(31,Fe,5,2,"span")(32,qe,3,1,"span"),l(),o(33,"div",10),v(34,Oe,3,3,"a",11)(35,Le,3,3,"a",21)(36,Ge,2,0,"a",22)(37,ci,22,18,"span",23),l()()()()()()()),n&2&&(a(3),x("src",i.plugin.icon,I),a(),p(i.plugin.installedVersion&&i.hb2Status!=="hide"?4:-1),a(6),k(i.prettyDisplayName),a(2),p(i.plugin.installedVersion&&i.plugin.updateAvailable&&!i.childBridgeRestartInProgress?12:-1),a(),p(i.plugin.installedVersion&&(i.plugin.newHbScope==null?null:i.plugin.newHbScope.switch)===i.plugin.installedVersion&&!i.childBridgeRestartInProgress?13:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&!i.plugin.isConfigured&&!i.childBridgeRestartInProgress?14:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&i.plugin.recommendChildBridge&&!i.childBridgeRestartInProgress?15:-1),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&i.hasUnpairedChildBridges&&i.childBridgeStatus==="ok"&&!i.plugin.disabled?16:-1),a(),x("hidden",!i.childBridgeRestartInProgress),a(),p(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&!i.hasUnpairedChildBridges&&i.childBridgeStatus!=="ok"&&!i.plugin.disabled?18:-1),a(5),k(i.plugin.name),a(),p(i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin?24:-1),a(),p(!i.plugin.verifiedPlugin&&!i.plugin.verifiedPlusPlugin?25:-1),a(2),p((i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin)&&i.plugin.funding?27:-1),a(),p((i.plugin.verifiedPlugin||i.plugin.verifiedPlusPlugin)&&i.plugin.funding?-1:28),a(3),p(i.plugin.publicPackage&&!i.plugin.installedVersion?31:-1),a(),p(i.plugin.installedVersion?32:-1),a(2),p(!i.plugin.disabled&&i.plugin.hasChildBridges&&i.childBridgeStatus==="ok"?34:-1),a(),p(i.plugin.installedVersion&&i.plugin.disabled?35:-1),a(),p(i.plugin.publicPackage&&!i.plugin.installedVersion?36:-1),a(),p(i.plugin.installedVersion?37:-1))},dependencies:[ge,L,pe,de,se,re,le,G,T],encapsulation:2})}return t})();function ui(t,d){t&1&&r(0,"app-spinner")}function gi(t,d){if(t&1){let e=C();o(0,"a",11),m("click",function(){_(e);let i=s();return h(i.onClearSearch())}),r(1,"i",12),l()}}function mi(t,d){if(t&1&&(o(0,"div",9),r(1,"app-plugin-card",13),l()),t&2){let e=d.$implicit,n=s();a(),x("plugin",e)("childBridges",n.getPluginChildBridges(e))}}function fi(t,d){t&1&&(o(0,"div",10),r(1,"i",14),o(2,"p"),g(3),c(4,"translate"),l()()),t&2&&(a(3),k(u(4,1,"plugins.placeholder_search_first")))}var at=(()=>{class t{$api=w(E);$plugin=w(j);$router=w(J);$settings=w(N);$toastr=w(D);$translate=w(M);$ws=w(H);loading=!0;installedPlugins=[];childBridges=[];showExitButton=!1;form=new Z({query:new ee("",[Q.required])});io;navigationSubscription;ngOnInit(){return S(this,null,function*(){this.io=this.$ws.connectToNamespace("child-bridges"),this.io.connected.subscribe(()=>S(this,null,function*(){this.getChildBridgeMetadata(),this.io.socket.emit("monitor-child-bridge-status"),yield this.loadInstalledPlugins();let e=this.$router.parseUrl(this.$router.url).queryParams.installed;if(e){let n=this.installedPlugins.find(i=>i.name===e);n&&!n.isConfigured&&this.$plugin.settings(n),this.$router.navigate(["/plugins"])}})),this.io.socket.on("child-bridge-status-update",e=>{let n=this.childBridges.find(i=>i.username===e.username);n?Object.assign(n,e):this.childBridges.push(e)}),this.navigationSubscription=this.$router.events.subscribe(e=>{e instanceof W&&this.loadInstalledPlugins()})})}loadInstalledPlugins(){return S(this,null,function*(){this.form.setValue({query:""}),this.showExitButton=!1,this.installedPlugins=[],this.loading=!0;try{let e=yield y(this.$api.get("/plugins"));this.installedPlugins=e.filter(i=>i.name!=="homebridge-config-ui-x"),yield this.appendMetaInfo();let n=this.installedPlugins.sort((i,f)=>i.updateAvailable!==f.updateAvailable?i.updateAvailable?-1:1:i.newHbScope&&!f.newHbScope?-1:i.disabled!==f.disabled?i.disabled?1:-1:i.isConfigured!==f.isConfigured?i.isConfigured?1:-1:i.hasChildBridgesUnpaired!==f.hasChildBridgesUnpaired?i.hasChildBridgesUnpaired?-1:1:i.hasChildBridges!==f.hasChildBridges&&this.$settings.env.recommendChildBridges?i.hasChildBridges?1:-1:i.name.localeCompare(f.name));return this.loading=!1,n}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}appendMetaInfo(){return S(this,null,function*(){yield Promise.all(this.installedPlugins.filter(e=>e.installedVersion).map(e=>S(this,null,function*(){try{let n=yield y(this.$api.get(`/config-editor/plugin/${encodeURIComponent(e.name)}`));e.isConfigured=n.length>0,e.isConfiguredDynamicPlatform=e.isConfigured&&Object.prototype.hasOwnProperty.call(n[0],"platform"),e.recommendChildBridge=e.isConfiguredDynamicPlatform&&this.$settings.env.recommendChildBridges&&this.$settings.env.serviceMode&&!["homebridge","homebridge-config-ui-x"].includes(e.name),e.hasChildBridges=e.isConfigured&&n.some(f=>f._bridge&&f._bridge.username);let i=this.getPluginChildBridges(e);e.hasChildBridgesUnpaired=i.some(f=>!f.paired)}catch{e.isConfigured=!0,e.hasChildBridges=!0}})))})}search(){this.installedPlugins=[],this.loading=!0,this.showExitButton=!0,this.$api.get(`/plugins/search/${encodeURIComponent(this.form.value.query)}`).subscribe({next:e=>{let n=new Set;this.installedPlugins=e.sort((i,f)=>i.newHbScope&&!f.newHbScope?-1:!i.newHbScope&&f.newHbScope?1:0).reduce((i,f)=>{if(f.name==="homebridge-config-ui-x"||n.has(f.name))return i;if(f.newHbScope){let $=f.newHbScope.to,P=e.some(Pe=>Pe.name===$);(f.installedVersion||!P)&&(n.add($),i.push(f))}else i.push(f);return i},[]).sort((i,f)=>i.installedVersion!==f.installedVersion?i.installedVersion?-1:1:0),this.appendMetaInfo(),this.loading=!1},error:e=>{this.loading=!1,console.error(e),this.$toastr.error(e.error.message||e.message,this.$translate.instant("toast.title_error")),this.loadInstalledPlugins()}})}onClearSearch(){this.loadInstalledPlugins()}onSubmit({value:e}){e.query.length?this.search():this.loadInstalledPlugins()}getChildBridgeMetadata(){this.io.request("get-homebridge-child-bridge-status").subscribe(e=>{this.childBridges=e})}getPluginChildBridges(e){return this.childBridges.filter(n=>n.plugin===e.name)}ngOnDestroy(){this.navigationSubscription&&this.navigationSubscription.unsubscribe(),this.io.end()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=V({type:t,selectors:[["ng-component"]],decls:16,vars:10,consts:[[1,"row","mb-3"],[1,"col-12"],[1,"primary-text","m-0"],[1,"row"],[1,"col-md-12"],["novalidate","",3,"ngSubmit","formGroup"],["type","text","formControlName","query",1,"hb-npm-search",3,"placeholder"],["href","javascript:void(0)",1,"hb-npm-search-clear"],[1,"d-flex","flex-wrap","justify-content-between"],[1,"hb-plugin-space-between"],[1,"alert","alert-info","mt-4","text-center","w-100"],["href","javascript:void(0)",1,"hb-npm-search-clear",3,"click"],[1,"far","fa-fw","fa-times-circle"],[3,"plugin","childBridges"],[1,"fas","fa-fw","fa-magnifying-glass","primary-text","my-3",2,"font-size","75px"]],template:function(n,i){n&1&&(v(0,ui,1,0,"app-spinner"),o(1,"div",0)(2,"div",1)(3,"h3",2),g(4),c(5,"translate"),l()()(),o(6,"div",3)(7,"div",4)(8,"form",5),m("ngSubmit",function(){return i.onSubmit(i.form)}),r(9,"input",6),c(10,"translate"),v(11,gi,2,0,"a",7),l()()(),o(12,"div",8),z(13,mi,2,2,"div",9,U),v(15,fi,5,3,"div",10),l()),n&2&&(p(i.loading?0:-1),a(4),k(u(5,6,"menu.label_plugins")),a(4),x("formGroup",i.form),a(),x("placeholder",u(10,8,"plugins.placeholder_search_plugin")),a(2),p(i.showExitButton?11:-1),a(2),F(i.installedPlugins),a(2),p(i.installedPlugins.length===0&&!i.loading?15:-1))},dependencies:[_e,ae,ie,K,X,Y,oe,te,ne,we,T],styles:[".hb-npm-search[_ngcontent-%COMP%]{outline:none;box-sizing:inherit!important;background-color:inherit;height:50px!important;width:100%;border-width:.5px;padding:10px;margin-bottom:15px}@media (hover: hover){.hb-npm-search[_ngcontent-%COMP%]:hover{border:1px solid #000000}}.hb-npm-search[_ngcontent-%COMP%]:focus{border:1px solid #000000;box-shadow:0 1px #000}.hb-npm-search-clear[_ngcontent-%COMP%]{position:absolute;right:25px;font-size:35px;color:#d0d0d0;line-height:50px;cursor:pointer}.hb-plugin-space-between[_ngcontent-%COMP%]{box-sizing:border-box;width:calc(50% - 6.6666666667px)}@media only screen and (max-width: 991px){.hb-plugin-space-between[_ngcontent-%COMP%]{width:100%}}"]})}return t})();export{at as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as a}from"./chunk-7TSUSJHK.js";import"./chunk-RXIWNBGC.js";import"./chunk-ZRYCN4PM.js";import"./chunk-HBGENGOA.js";import"./chunk-44XAYR34.js";import"./chunk-RMFHCCDM.js";import"./chunk-IUUJYZCY.js";import"./chunk-MMPQXC6H.js";import"./chunk-6MDI4RNQ.js";import"./chunk-BWVQQ7XD.js";import"./chunk-T6FYP7FJ.js";import"./chunk-P5WCYSBI.js";import"./chunk-F4QKTMKG.js";import"./chunk-OZTQT47N.js";import"./chunk-CK234OHO.js";import"./chunk-BZVO3JIQ.js";import"./chunk-EFBNPDVN.js";import"./chunk-F5SS6TN7.js";import"./chunk-Z4CHNCHA.js";import"./chunk-OJZZVAQX.js";import"./chunk-HMOW3VNR.js";import"./chunk-F46ML4GE.js";import"./chunk-EIKIGJGT.js";import"./chunk-G3NT5LV6.js";import"./chunk-QHHRJOCD.js";import"./chunk-H3E4T6KH.js";import"./chunk-KDJPDALB.js";export{a as StatusComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as se}from"./chunk-7H6DGXSK.js";import{g as re,m as A,n as ae}from"./chunk-NFM5TL2D.js";import{b as P,c as T,d as C,e as D,f as z,g as F,j as x,m as R,o as Q,p as L,q as O,w as ne,y as I,z as M}from"./chunk-Q7ULBWII.js";import{b as ie}from"./chunk-CLZKKYED.js";import{c as j}from"./chunk-MXGYFXAQ.js";import{a as ve}from"./chunk-LHHSRBQN.js";import{b as S,j as U}from"./chunk-DICSCOX4.js";import{a as $,b as E}from"./chunk-UKMABQF7.js";import{$b as G,Bb as B,Bc as s,Cc as o,Dc as te,Lb as f,Mb as u,Rb as g,Tb as W,Ub as X,Vb as Y,Wb as i,Xb as l,Yb as m,ad as q,cc as _,dc as h,g as be,ib as e,kc as Z,lc as ee,na as d,nc as p,oc as v,pc as c,rb as K,ub as y,xa as N,xc as w,ya as V}from"./chunk-DGXFIYFL.js";function Ce(r,k){r&1&&(i(0,"p",8)(1,"small"),p(2),s(3,"translate"),l()()),r&2&&(e(2),v(o(3,1,"login.invalid_credentials")))}var oe=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);formGroup=new F({password:new x("",[C.required])});invalidCredentials=!1;disable2fa(){this.invalidCredentials=!1,this.$api.post("/users/otp/deactivate",this.formGroup.value).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.setup_2fa_disable_success"),this.$translate.instant("toast.title_success"))},error:()=>{this.formGroup.setValue({password:""}),this.invalidCredentials=!0}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],decls:28,vars:24,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"],[1,"form-group"],["type","password","autocomplete","current-password",1,"form-control",3,"formControl","placeholder"],[1,"red-text"],[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-danger",3,"click","disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),p(3),s(4,"translate"),l(),i(5,"button",3),s(6,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(7,"span",4),p(8,"\xD7"),l()()(),i(9,"div",5)(10,"p"),p(11),s(12,"translate"),l(),i(13,"div",6),m(14,"input",7),s(15,"translate"),l(),B(16,Ce,4,3,"p",8),l(),i(17,"div",9)(18,"div",10)(19,"button",11),s(20,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(21),s(22,"translate"),l()(),m(23,"div",12),i(24,"div",13)(25,"button",14),_("click",function(){return n.disable2fa()}),p(26),s(27,"translate"),l()()()()),a&2&&(e(3),v(o(4,10,"users.setup_2fa_disable")),e(2),f("aria-label",o(6,12,"form.button_close")),e(6),v(o(12,14,"users.setup_2fa_disable_current_password")),e(3),u("formControl",n.formGroup.controls.password)("placeholder",o(15,16,"users.label_password")),e(2),g(n.invalidCredentials?16:-1),e(3),f("aria-label",o(20,18,"form.button_close")),e(2),c(" ",o(22,20,"form.button_close")," "),e(4),u("disabled",n.formGroup.invalid),e(),c(" ",o(27,22,"form.button_disable")," "))},dependencies:[I,T,D,M,Q,E],encapsulation:2})}return r})();var le=be(ve(),1);var xe=["qrcode"],he=r=>({timeDiffError:r});function we(r,k){if(r&1&&(i(0,"div",6)(1,"h3"),p(2),s(3,"translate"),l(),i(4,"p"),p(5),s(6,"translate"),l()()),r&2){let t=h();e(2),v(o(3,2,"users.setup_2fa_cannot_setup_2fa")),e(3),v(te(6,4,"users.setup_2fa_server_time_out",w(7,he,t.timeDiffError)))}}function ge(r,k){r&1&&(i(0,"div")(1,"p"),p(2),s(3,"translate"),l()()),r&2&&(e(2),v(o(3,1,"users.setup_2fa_scan_qr_code")))}function ye(r,k){if(r&1&&(i(0,"div",10)(1,"p"),p(2),s(3,"translate"),l(),i(4,"div",16),m(5,"input",17),l()()),r&2){let t=h();e(2),v(o(3,2,"users.setup_2fa_enter_code")),e(3),u("formControl",t.formGroup.controls.code)}}function Se(r,k){if(r&1){let t=G();i(0,"button",18),_("click",function(){N(t);let n=h();return V(n.enable2fa())}),p(1),s(2,"translate"),l()}if(r&2){let t=h();u("disabled",t.formGroup.invalid),e(),c(" ",o(2,2,"form.button_enable")," ")}}var pe=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);user;qrcodeElement=K("qrcode");timeDiffError=null;otpString;formGroup=new F({code:new x("",[C.required,C.minLength(6),C.maxLength(6)])});ngOnInit(){this.$api.post("/users/otp/setup",{}).subscribe({next:t=>{this.checkTimeDiff(t.timestamp),this.timeDiffError||(this.otpString=t.otpauth)},error:t=>{this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}checkTimeDiff(t){let a=(0,le.default)(t).diff(new Date,"millisecond");if(a<-5e3||a>5e3){this.timeDiffError=a;return}this.timeDiffError=null}enable2fa(){this.$api.post("/users/otp/activate",this.formGroup.value).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.setup_2fa_enabled_success"),this.$translate.instant("toast.title_success")),this.$activeModal.close()},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],viewQuery:function(a,n){a&1&&Z(n.qrcodeElement,xe,5),a&2&&ee()},inputs:{user:"user"},decls:27,vars:21,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center"],["type","warning",3,"dismissible"],[1,"text-center","w-100","d-flex","justify-content-center"],[1,"mx-auto","my-2",2,"width","180px","height","180px",3,"data"],[1,"mt-4"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"form-group"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control",3,"formControl"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),p(3),s(4,"translate"),l(),i(5,"button",3),s(6,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(7,"span",4),p(8,"\xD7"),l()()(),i(9,"div",5),B(10,we,7,9,"div",6),i(11,"ngb-alert",7),p(12),s(13,"translate"),l(),B(14,ge,4,3,"div"),i(15,"div",8),m(16,"app-qrcode",9),l(),B(17,ye,6,4,"div",10),l(),i(18,"div",11)(19,"div",12)(20,"button",13),s(21,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(22),s(23,"translate"),l()(),m(24,"div",6),i(25,"div",14),B(26,Se,3,4,"button",15),l()()()),a&2&&(e(3),v(o(4,11,"users.setup_2fa")),e(2),f("aria-label",o(6,13,"form.button_close")),e(5),g(n.timeDiffError?10:-1),e(),u("dismissible",!1),e(),c(" ",o(13,15,"users.setup_2fa_warning")," "),e(2),g(n.timeDiffError?-1:14),e(2),u("data",n.otpString),e(),g(n.timeDiffError?-1:17),e(3),f("aria-label",o(21,17,"form.button_close")),e(2),c(" ",o(23,19,"form.button_close")," "),e(4),g(n.timeDiffError?-1:26))},dependencies:[re,se,I,T,D,ne,M,Q,E],encapsulation:2})}return r})();var me=r=>({active:r}),de=r=>({"is-invalid":r}),ce=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);form=new F({username:new x("",[C.required]),name:new x("",[C.required]),password:new x("",[C.compose([C.required,C.minLength(4)])]),passwordConfirm:new x("",[C.required]),admin:new x(!0)},this.matchPassword);page={title:"users.title_add_user",save:"users.button_add_new_user",password:"users.label_password"};matchPassword(t){let a=t.get("password").value,n=t.get("passwordConfirm").value;if(a!==n)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}onSubmit({value:t}){this.$api.post("/users",t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_added_new_user"),this.$translate.instant("toast.title_success"))},error:a=>{this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],decls:59,vars:57,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"container","px-1"],[1,"md-form"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none",1,"form-control","px-0"],["for","form-username",3,"ngClass"],[1,"fas","fa-fw","fa-user-shield"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","px-0"],["for","form-name",3,"ngClass"],[1,"fas","fa-fw","fa-user"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","px-0",3,"ngClass"],["for","form-pass"],[1,"fas","fa-fw","fa-lock"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","px-0",3,"ngClass"],["for","form-pass-confirm"],[1,"form-group","row","align-items-center"],[1,"col-6","col-form-label","grey-text"],[1,"fas","fa-fw","fa-user-secret"],[1,"col-6","text-right"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ml-3",2,"min-width","50px"],[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","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"form",1),_("ngSubmit",function(){return n.onSubmit(n.form)}),i(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),l(),i(6,"button",4),s(7,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(8,"span",5),p(9,"\xD7"),l()()(),i(10,"div",6)(11,"div",7)(12,"div",8),m(13,"input",9),s(14,"translate"),i(15,"label",10),m(16,"i",11),p(17),s(18,"translate"),l()(),i(19,"div",8),m(20,"input",12),s(21,"translate"),i(22,"label",13),m(23,"i",14),p(24),s(25,"translate"),l()(),i(26,"div",8),m(27,"input",15),s(28,"translate"),i(29,"label",16),m(30,"i",17),p(31),s(32,"translate"),l()(),i(33,"div",8),m(34,"input",18),s(35,"translate"),i(36,"label",19),m(37,"i",17),p(38),s(39,"translate"),l()(),i(40,"div",20)(41,"label",21),m(42,"i",22),p(43),s(44,"translate"),l(),i(45,"div",23),m(46,"input",24),s(47,"translate"),m(48,"label",25),l()()()(),i(49,"div",26)(50,"div",27)(51,"button",28),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(52),s(53,"translate"),l()(),m(54,"div",29),i(55,"div",30)(56,"button",31),p(57),s(58,"translate"),l()()()()()),a&2&&(e(),u("formGroup",n.form),e(3),v(o(5,21,"users.title_add_user")),e(2),f("aria-label",o(7,23,"form.button_close")),e(7),f("disabled",n.page.title==="users.title_edit_user"?!0:null)("aria-label",o(14,25,"users.label_username")),e(2),u("ngClass",w(49,me,n.page.title==="users.title_edit_user")),e(2),c(" ",o(18,27,"users.label_username")," "),e(3),f("aria-label",o(21,29,"users.label_full_name")),e(2),u("ngClass",w(51,me,n.page.title==="users.title_edit_user")),e(2),c(" ",o(25,31,"users.label_full_name")," "),e(3),u("ngClass",w(53,de,n.form.controls.password.dirty&&n.form.controls.password.errors)),f("aria-label",o(28,33,n.page.password)),e(4),c(" ",o(32,35,n.page.password)," "),e(3),u("ngClass",w(55,de,n.form.controls.passwordConfirm.dirty&&n.form.controls.passwordConfirm.errors)),f("aria-label",o(35,37,"users.label_confirm_password")),e(4),c(" ",o(39,39,"users.label_confirm_password")," "),e(5),c(" ",o(44,41,"users.label_admin_user")," "),e(3),f("aria-label",o(47,43,"users.label_admin_user")),e(6),c(" ",o(53,45,"form.button_close")," "),e(4),u("disabled",!n.form.valid),e(),c(" ",o(58,47,"form.button_save")," "))},dependencies:[I,R,T,P,D,z,M,L,O,q,E],encapsulation:2})}return r})();var ue=r=>({active:r}),fe=r=>({"is-invalid":r}),_e=(()=>{class r{$activeModal=d(A);$api=d(S);$auth=d(j);$toastr=d(U);$translate=d($);user;form=new F({username:new x("",[C.required]),name:new x("",[C.required]),password:new x(""),passwordConfirm:new x(""),admin:new x(!0)},this.matchPassword);page={title:"users.title_edit_user",save:"form.button_save",password:"users.label_new_password"};isCurrentUser=!1;ngOnInit(){this.isCurrentUser=this.$auth.user.username===this.user.username,this.form.patchValue(this.user)}matchPassword(t){let a=t.get("password").value,n=t.get("passwordConfirm").value;if(a!==n)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}onSubmit({value:t}){this.$api.patch(`/users/${this.user.id}`,t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_updated_user"),this.$translate.instant("toast.title_success")),this.isCurrentUser&&t.username!==this.$auth.user.username&&this.$auth.logout()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:59,vars:56,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"container","px-1"],[1,"md-form"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","px-0"],["for","form-username",3,"ngClass"],[1,"fas","fa-fw","fa-user-shield"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","px-0"],["for","form-name",3,"ngClass"],[1,"fas","fa-fw","fa-user"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","px-0",3,"ngClass"],["for","form-pass"],[1,"fas","fa-fw","fa-lock"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","px-0",3,"ngClass"],["for","form-pass-confirm"],[1,"form-group","row","align-items-center"],[1,"col-6","col-form-label","grey-text"],[1,"fas","fa-fw","fa-user-secret"],[1,"col-6","text-right"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ml-3",2,"min-width","50px"],[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","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"form",1),_("ngSubmit",function(){return n.onSubmit(n.form)}),i(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),l(),i(6,"button",4),s(7,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(8,"span",5),p(9,"\xD7"),l()()(),i(10,"div",6)(11,"div",7)(12,"div",8),m(13,"input",9),s(14,"translate"),i(15,"label",10),m(16,"i",11),p(17),s(18,"translate"),l()(),i(19,"div",8),m(20,"input",12),s(21,"translate"),i(22,"label",13),m(23,"i",14),p(24),s(25,"translate"),l()(),i(26,"div",8),m(27,"input",15),s(28,"translate"),i(29,"label",16),m(30,"i",17),p(31),s(32,"translate"),l()(),i(33,"div",8),m(34,"input",18),s(35,"translate"),i(36,"label",19),m(37,"i",17),p(38),s(39,"translate"),l()(),i(40,"div",20)(41,"label",21),m(42,"i",22),p(43),s(44,"translate"),l(),i(45,"div",23),m(46,"input",24),s(47,"translate"),m(48,"label",25),l()()()(),i(49,"div",26)(50,"div",27)(51,"button",28),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(52),s(53,"translate"),l()(),m(54,"div",29),i(55,"div",30)(56,"button",31),p(57),s(58,"translate"),l()()()()()),a&2&&(e(),u("formGroup",n.form),e(3),v(o(5,20,"users.title_edit_user")),e(2),f("aria-label",o(7,22,"form.button_close")),e(7),f("aria-label",o(14,24,"users.label_username")),e(2),u("ngClass",w(48,ue,n.page.title==="users.title_edit_user")),e(2),c(" ",o(18,26,"users.label_username")," "),e(3),f("aria-label",o(21,28,"users.label_full_name")),e(2),u("ngClass",w(50,ue,n.page.title==="users.title_edit_user")),e(2),c(" ",o(25,30,"users.label_full_name")," "),e(3),u("ngClass",w(52,fe,n.form.controls.password.dirty&&n.form.controls.password.errors)),f("aria-label",o(28,32,n.page.password)),e(4),c(" ",o(32,34,n.page.password)," "),e(3),u("ngClass",w(54,fe,n.form.controls.passwordConfirm.dirty&&n.form.controls.passwordConfirm.errors)),f("aria-label",o(35,36,"users.label_confirm_password")),e(4),c(" ",o(39,38,"users.label_confirm_password")," "),e(5),c(" ",o(44,40,"users.label_admin_user")," "),e(3),f("aria-label",o(47,42,"users.label_admin_user")),e(6),c(" ",o(53,44,"form.button_close")," "),e(4),u("disabled",!n.form.valid),e(),c(" ",o(58,46,"form.button_save")," "))},dependencies:[I,R,T,P,D,z,M,L,O,q,E],encapsulation:2})}return r})();function $e(r,k){if(r&1){let t=G();i(0,"button",19),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.deleteUser(n.id))}),p(1),s(2,"translate"),l()}r&2&&(e(),c(" ",o(2,1,"form.button_delete")," "))}function Ee(r,k){if(r&1){let t=G();i(0,"button",20),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.setup2fa(n))}),p(1),s(2,"translate"),l()}r&2&&(e(),v(o(2,1,"users.setup_2fa")))}function Ue(r,k){if(r&1){let t=G();i(0,"button",18),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.disable2fa(n))}),p(1),s(2,"translate"),l()}r&2&&(e(),c(" ",o(2,1,"users.setup_2fa_disable")," "))}function ke(r,k){if(r&1){let t=G();i(0,"div",7)(1,"div",8)(2,"div",9)(3,"div",10)(4,"span",11),m(5,"h4",12)(6,"h5",13),l()(),i(7,"div",14),B(8,$e,3,3,"button",15)(9,Ee,3,3,"button",16)(10,Ue,3,3,"button",17),i(11,"button",18),_("click",function(){let n=N(t).$implicit,b=h();return V(b.openEditUser(n))}),p(12),s(13,"translate"),l()()()()()}if(r&2){let t=k.$implicit,a=h();e(5),u("innerText",t.name),e(),u("innerText",t.username),e(2),g(a.$auth.user.username!==t.username?8:-1),e(),g(a.$auth.user.username===t.username&&!t.otpActive?9:-1),e(),g(a.$auth.user.username===t.username&&t.otpActive?10:-1),e(2),v(o(13,6,"form.button_edit"))}}var $t=(()=>{class r{$api=d(S);$auth=d(j);$modal=d(ae);$route=d(ie);$toastr=d(U);$translate=d($);homebridgeUsers;ngOnInit(){this.$route.data.subscribe(t=>{this.homebridgeUsers=t.homebridgeUsers})}reloadUsers(){return this.$api.get("/users").subscribe(t=>{this.homebridgeUsers=t})}openAddNewUser(){this.$modal.open(ce,{size:"lg",backdrop:"static"}).result.finally(()=>{this.reloadUsers()})}openEditUser(t){let a=this.$modal.open(_e,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}deleteUser(t){this.$api.delete(`/users/${t}`).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.toast_user_deleted"),this.$translate.instant("toast.title_success")),this.reloadUsers()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_delete_user"),this.$translate.instant("toast.title_error"))}})}setup2fa(t){let a=this.$modal.open(pe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}disable2fa(t){let a=this.$modal.open(oe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["app-users"]],decls:12,vars:6,consts:[[1,"row","mb-3"],[1,"col-9"],[1,"primary-text","m-0"],[1,"col-3","text-right"],[1,"btn","btn-elegant","waves-effect","m-0",3,"click"],[1,"fas","fa-fw","fa-plus"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[3,"innerText"],[1,"small","text-truncate","primary-text",3,"innerText"],[1,"d-flex","flex-row","justify-content-between",2,"gap","10px"],[1,"btn","btn-elegant","btn-sml","m-0"],[1,"btn","btn-primary","mt-0","m-0"],[1,"btn","btn-primary","m-0"],[1,"btn","btn-primary","m-0",3,"click"],[1,"btn","btn-elegant","btn-sml","m-0",3,"click"],[1,"btn","btn-primary","mt-0","m-0",3,"click"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h3",2),p(3),s(4,"translate"),l()(),i(5,"div",3)(6,"button",4),s(7,"translate"),_("click",function(){return n.openAddNewUser()}),m(8,"i",5),l()()(),i(9,"div",6),X(10,ke,14,8,"div",7,W),l()),a&2&&(e(3),v(o(4,2,"users.title_users")),e(3),f("aria-label",o(7,4,"users.button_add_user")),e(4),Y(n.homebridgeUsers))},dependencies:[E],encapsulation:2})}return r})();export{oe as a,pe as b,ce as c,_e as d,$t as e};
|
|
1
|
+
import{a as se}from"./chunk-P5WCYSBI.js";import{g as re,m as A,n as ae}from"./chunk-F5SS6TN7.js";import{b as P,c as T,d as C,e as D,f as z,g as F,j as x,m as R,o as Q,p as L,q as O,w as ne,y as I,z as M}from"./chunk-Z4CHNCHA.js";import{b as ie}from"./chunk-HMOW3VNR.js";import{c as j}from"./chunk-F46ML4GE.js";import{a as ve}from"./chunk-EIKIGJGT.js";import{b as S,j as U}from"./chunk-G3NT5LV6.js";import{a as $,b as E}from"./chunk-H3E4T6KH.js";import{$b as G,Bb as B,Bc as s,Cc as o,Dc as te,Lb as f,Mb as u,Rb as g,Tb as W,Ub as X,Vb as Y,Wb as i,Xb as l,Yb as m,ad as q,cc as _,dc as h,g as be,ib as e,kc as Z,lc as ee,na as d,nc as p,oc as v,pc as c,rb as K,ub as y,xa as N,xc as w,ya as V}from"./chunk-KDJPDALB.js";function Ce(r,k){r&1&&(i(0,"p",8)(1,"small"),p(2),s(3,"translate"),l()()),r&2&&(e(2),v(o(3,1,"login.invalid_credentials")))}var oe=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);formGroup=new F({password:new x("",[C.required])});invalidCredentials=!1;disable2fa(){this.invalidCredentials=!1,this.$api.post("/users/otp/deactivate",this.formGroup.value).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.setup_2fa_disable_success"),this.$translate.instant("toast.title_success"))},error:()=>{this.formGroup.setValue({password:""}),this.invalidCredentials=!0}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],decls:28,vars:24,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"],[1,"form-group"],["type","password","autocomplete","current-password",1,"form-control",3,"formControl","placeholder"],[1,"red-text"],[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-danger",3,"click","disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),p(3),s(4,"translate"),l(),i(5,"button",3),s(6,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(7,"span",4),p(8,"\xD7"),l()()(),i(9,"div",5)(10,"p"),p(11),s(12,"translate"),l(),i(13,"div",6),m(14,"input",7),s(15,"translate"),l(),B(16,Ce,4,3,"p",8),l(),i(17,"div",9)(18,"div",10)(19,"button",11),s(20,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(21),s(22,"translate"),l()(),m(23,"div",12),i(24,"div",13)(25,"button",14),_("click",function(){return n.disable2fa()}),p(26),s(27,"translate"),l()()()()),a&2&&(e(3),v(o(4,10,"users.setup_2fa_disable")),e(2),f("aria-label",o(6,12,"form.button_close")),e(6),v(o(12,14,"users.setup_2fa_disable_current_password")),e(3),u("formControl",n.formGroup.controls.password)("placeholder",o(15,16,"users.label_password")),e(2),g(n.invalidCredentials?16:-1),e(3),f("aria-label",o(20,18,"form.button_close")),e(2),c(" ",o(22,20,"form.button_close")," "),e(4),u("disabled",n.formGroup.invalid),e(),c(" ",o(27,22,"form.button_disable")," "))},dependencies:[I,T,D,M,Q,E],encapsulation:2})}return r})();var le=be(ve(),1);var xe=["qrcode"],he=r=>({timeDiffError:r});function we(r,k){if(r&1&&(i(0,"div",6)(1,"h3"),p(2),s(3,"translate"),l(),i(4,"p"),p(5),s(6,"translate"),l()()),r&2){let t=h();e(2),v(o(3,2,"users.setup_2fa_cannot_setup_2fa")),e(3),v(te(6,4,"users.setup_2fa_server_time_out",w(7,he,t.timeDiffError)))}}function ge(r,k){r&1&&(i(0,"div")(1,"p"),p(2),s(3,"translate"),l()()),r&2&&(e(2),v(o(3,1,"users.setup_2fa_scan_qr_code")))}function ye(r,k){if(r&1&&(i(0,"div",10)(1,"p"),p(2),s(3,"translate"),l(),i(4,"div",16),m(5,"input",17),l()()),r&2){let t=h();e(2),v(o(3,2,"users.setup_2fa_enter_code")),e(3),u("formControl",t.formGroup.controls.code)}}function Se(r,k){if(r&1){let t=G();i(0,"button",18),_("click",function(){N(t);let n=h();return V(n.enable2fa())}),p(1),s(2,"translate"),l()}if(r&2){let t=h();u("disabled",t.formGroup.invalid),e(),c(" ",o(2,2,"form.button_enable")," ")}}var pe=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);user;qrcodeElement=K("qrcode");timeDiffError=null;otpString;formGroup=new F({code:new x("",[C.required,C.minLength(6),C.maxLength(6)])});ngOnInit(){this.$api.post("/users/otp/setup",{}).subscribe({next:t=>{this.checkTimeDiff(t.timestamp),this.timeDiffError||(this.otpString=t.otpauth)},error:t=>{this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}checkTimeDiff(t){let a=(0,le.default)(t).diff(new Date,"millisecond");if(a<-5e3||a>5e3){this.timeDiffError=a;return}this.timeDiffError=null}enable2fa(){this.$api.post("/users/otp/activate",this.formGroup.value).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.setup_2fa_enabled_success"),this.$translate.instant("toast.title_success")),this.$activeModal.close()},error:t=>{console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],viewQuery:function(a,n){a&1&&Z(n.qrcodeElement,xe,5),a&2&&ee()},inputs:{user:"user"},decls:27,vars:21,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"text-center"],["type","warning",3,"dismissible"],[1,"text-center","w-100","d-flex","justify-content-center"],[1,"mx-auto","my-2",2,"width","180px","height","180px",3,"data"],[1,"mt-4"],[1,"modal-footer","justify-content-between"],[1,"text-left"],["type","button","data-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-right"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"form-group"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control",3,"formControl"],["type","button","data-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h5",2),p(3),s(4,"translate"),l(),i(5,"button",3),s(6,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(7,"span",4),p(8,"\xD7"),l()()(),i(9,"div",5),B(10,we,7,9,"div",6),i(11,"ngb-alert",7),p(12),s(13,"translate"),l(),B(14,ge,4,3,"div"),i(15,"div",8),m(16,"app-qrcode",9),l(),B(17,ye,6,4,"div",10),l(),i(18,"div",11)(19,"div",12)(20,"button",13),s(21,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(22),s(23,"translate"),l()(),m(24,"div",6),i(25,"div",14),B(26,Se,3,4,"button",15),l()()()),a&2&&(e(3),v(o(4,11,"users.setup_2fa")),e(2),f("aria-label",o(6,13,"form.button_close")),e(5),g(n.timeDiffError?10:-1),e(),u("dismissible",!1),e(),c(" ",o(13,15,"users.setup_2fa_warning")," "),e(2),g(n.timeDiffError?-1:14),e(2),u("data",n.otpString),e(),g(n.timeDiffError?-1:17),e(3),f("aria-label",o(21,17,"form.button_close")),e(2),c(" ",o(23,19,"form.button_close")," "),e(4),g(n.timeDiffError?-1:26))},dependencies:[re,se,I,T,D,ne,M,Q,E],encapsulation:2})}return r})();var me=r=>({active:r}),de=r=>({"is-invalid":r}),ce=(()=>{class r{$activeModal=d(A);$api=d(S);$toastr=d(U);$translate=d($);form=new F({username:new x("",[C.required]),name:new x("",[C.required]),password:new x("",[C.compose([C.required,C.minLength(4)])]),passwordConfirm:new x("",[C.required]),admin:new x(!0)},this.matchPassword);page={title:"users.title_add_user",save:"users.button_add_new_user",password:"users.label_password"};matchPassword(t){let a=t.get("password").value,n=t.get("passwordConfirm").value;if(a!==n)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}onSubmit({value:t}){this.$api.post("/users",t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_added_new_user"),this.$translate.instant("toast.title_success"))},error:a=>{this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],decls:59,vars:57,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"container","px-1"],[1,"md-form"],["formControlName","username","type","text","id","form-username","autocomplete","username","autocapitalize","none",1,"form-control","px-0"],["for","form-username",3,"ngClass"],[1,"fas","fa-fw","fa-user-shield"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","px-0"],["for","form-name",3,"ngClass"],[1,"fas","fa-fw","fa-user"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","px-0",3,"ngClass"],["for","form-pass"],[1,"fas","fa-fw","fa-lock"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","px-0",3,"ngClass"],["for","form-pass-confirm"],[1,"form-group","row","align-items-center"],[1,"col-6","col-form-label","grey-text"],[1,"fas","fa-fw","fa-user-secret"],[1,"col-6","text-right"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ml-3",2,"min-width","50px"],[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","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"form",1),_("ngSubmit",function(){return n.onSubmit(n.form)}),i(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),l(),i(6,"button",4),s(7,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(8,"span",5),p(9,"\xD7"),l()()(),i(10,"div",6)(11,"div",7)(12,"div",8),m(13,"input",9),s(14,"translate"),i(15,"label",10),m(16,"i",11),p(17),s(18,"translate"),l()(),i(19,"div",8),m(20,"input",12),s(21,"translate"),i(22,"label",13),m(23,"i",14),p(24),s(25,"translate"),l()(),i(26,"div",8),m(27,"input",15),s(28,"translate"),i(29,"label",16),m(30,"i",17),p(31),s(32,"translate"),l()(),i(33,"div",8),m(34,"input",18),s(35,"translate"),i(36,"label",19),m(37,"i",17),p(38),s(39,"translate"),l()(),i(40,"div",20)(41,"label",21),m(42,"i",22),p(43),s(44,"translate"),l(),i(45,"div",23),m(46,"input",24),s(47,"translate"),m(48,"label",25),l()()()(),i(49,"div",26)(50,"div",27)(51,"button",28),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(52),s(53,"translate"),l()(),m(54,"div",29),i(55,"div",30)(56,"button",31),p(57),s(58,"translate"),l()()()()()),a&2&&(e(),u("formGroup",n.form),e(3),v(o(5,21,"users.title_add_user")),e(2),f("aria-label",o(7,23,"form.button_close")),e(7),f("disabled",n.page.title==="users.title_edit_user"?!0:null)("aria-label",o(14,25,"users.label_username")),e(2),u("ngClass",w(49,me,n.page.title==="users.title_edit_user")),e(2),c(" ",o(18,27,"users.label_username")," "),e(3),f("aria-label",o(21,29,"users.label_full_name")),e(2),u("ngClass",w(51,me,n.page.title==="users.title_edit_user")),e(2),c(" ",o(25,31,"users.label_full_name")," "),e(3),u("ngClass",w(53,de,n.form.controls.password.dirty&&n.form.controls.password.errors)),f("aria-label",o(28,33,n.page.password)),e(4),c(" ",o(32,35,n.page.password)," "),e(3),u("ngClass",w(55,de,n.form.controls.passwordConfirm.dirty&&n.form.controls.passwordConfirm.errors)),f("aria-label",o(35,37,"users.label_confirm_password")),e(4),c(" ",o(39,39,"users.label_confirm_password")," "),e(5),c(" ",o(44,41,"users.label_admin_user")," "),e(3),f("aria-label",o(47,43,"users.label_admin_user")),e(6),c(" ",o(53,45,"form.button_close")," "),e(4),u("disabled",!n.form.valid),e(),c(" ",o(58,47,"form.button_save")," "))},dependencies:[I,R,T,P,D,z,M,L,O,q,E],encapsulation:2})}return r})();var ue=r=>({active:r}),fe=r=>({"is-invalid":r}),_e=(()=>{class r{$activeModal=d(A);$api=d(S);$auth=d(j);$toastr=d(U);$translate=d($);user;form=new F({username:new x("",[C.required]),name:new x("",[C.required]),password:new x(""),passwordConfirm:new x(""),admin:new x(!0)},this.matchPassword);page={title:"users.title_edit_user",save:"form.button_save",password:"users.label_new_password"};isCurrentUser=!1;ngOnInit(){this.isCurrentUser=this.$auth.user.username===this.user.username,this.form.patchValue(this.user)}matchPassword(t){let a=t.get("password").value,n=t.get("passwordConfirm").value;if(a!==n)t.get("passwordConfirm").setErrors({matchPassword:!0});else return null}onSubmit({value:t}){this.$api.patch(`/users/${this.user.id}`,t).subscribe({next:()=>{this.$activeModal.close(),this.$toastr.success(this.$translate.instant("users.toast_updated_user"),this.$translate.instant("toast.title_success")),this.isCurrentUser&&t.username!==this.$auth.user.username&&this.$auth.logout()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_add_user"),this.$translate.instant("toast.title_error"))}})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["ng-component"]],inputs:{user:"user"},decls:59,vars:56,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"click"],["aria-hidden","true"],[1,"modal-body"],[1,"container","px-1"],[1,"md-form"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","px-0"],["for","form-username",3,"ngClass"],[1,"fas","fa-fw","fa-user-shield"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","px-0"],["for","form-name",3,"ngClass"],[1,"fas","fa-fw","fa-user"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","px-0",3,"ngClass"],["for","form-pass"],[1,"fas","fa-fw","fa-lock"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","px-0",3,"ngClass"],["for","form-pass-confirm"],[1,"form-group","row","align-items-center"],[1,"col-6","col-form-label","grey-text"],[1,"fas","fa-fw","fa-user-secret"],[1,"col-6","text-right"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ml-3",2,"min-width","50px"],[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","submit",1,"btn","btn-primary",3,"disabled"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"form",1),_("ngSubmit",function(){return n.onSubmit(n.form)}),i(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),l(),i(6,"button",4),s(7,"translate"),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),i(8,"span",5),p(9,"\xD7"),l()()(),i(10,"div",6)(11,"div",7)(12,"div",8),m(13,"input",9),s(14,"translate"),i(15,"label",10),m(16,"i",11),p(17),s(18,"translate"),l()(),i(19,"div",8),m(20,"input",12),s(21,"translate"),i(22,"label",13),m(23,"i",14),p(24),s(25,"translate"),l()(),i(26,"div",8),m(27,"input",15),s(28,"translate"),i(29,"label",16),m(30,"i",17),p(31),s(32,"translate"),l()(),i(33,"div",8),m(34,"input",18),s(35,"translate"),i(36,"label",19),m(37,"i",17),p(38),s(39,"translate"),l()(),i(40,"div",20)(41,"label",21),m(42,"i",22),p(43),s(44,"translate"),l(),i(45,"div",23),m(46,"input",24),s(47,"translate"),m(48,"label",25),l()()()(),i(49,"div",26)(50,"div",27)(51,"button",28),_("click",function(){return n.$activeModal.dismiss("Dismiss")}),p(52),s(53,"translate"),l()(),m(54,"div",29),i(55,"div",30)(56,"button",31),p(57),s(58,"translate"),l()()()()()),a&2&&(e(),u("formGroup",n.form),e(3),v(o(5,20,"users.title_edit_user")),e(2),f("aria-label",o(7,22,"form.button_close")),e(7),f("aria-label",o(14,24,"users.label_username")),e(2),u("ngClass",w(48,ue,n.page.title==="users.title_edit_user")),e(2),c(" ",o(18,26,"users.label_username")," "),e(3),f("aria-label",o(21,28,"users.label_full_name")),e(2),u("ngClass",w(50,ue,n.page.title==="users.title_edit_user")),e(2),c(" ",o(25,30,"users.label_full_name")," "),e(3),u("ngClass",w(52,fe,n.form.controls.password.dirty&&n.form.controls.password.errors)),f("aria-label",o(28,32,n.page.password)),e(4),c(" ",o(32,34,n.page.password)," "),e(3),u("ngClass",w(54,fe,n.form.controls.passwordConfirm.dirty&&n.form.controls.passwordConfirm.errors)),f("aria-label",o(35,36,"users.label_confirm_password")),e(4),c(" ",o(39,38,"users.label_confirm_password")," "),e(5),c(" ",o(44,40,"users.label_admin_user")," "),e(3),f("aria-label",o(47,42,"users.label_admin_user")),e(6),c(" ",o(53,44,"form.button_close")," "),e(4),u("disabled",!n.form.valid),e(),c(" ",o(58,46,"form.button_save")," "))},dependencies:[I,R,T,P,D,z,M,L,O,q,E],encapsulation:2})}return r})();function $e(r,k){if(r&1){let t=G();i(0,"button",19),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.deleteUser(n.id))}),p(1),s(2,"translate"),l()}r&2&&(e(),c(" ",o(2,1,"form.button_delete")," "))}function Ee(r,k){if(r&1){let t=G();i(0,"button",20),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.setup2fa(n))}),p(1),s(2,"translate"),l()}r&2&&(e(),v(o(2,1,"users.setup_2fa")))}function Ue(r,k){if(r&1){let t=G();i(0,"button",18),_("click",function(){N(t);let n=h().$implicit,b=h();return V(b.disable2fa(n))}),p(1),s(2,"translate"),l()}r&2&&(e(),c(" ",o(2,1,"users.setup_2fa_disable")," "))}function ke(r,k){if(r&1){let t=G();i(0,"div",7)(1,"div",8)(2,"div",9)(3,"div",10)(4,"span",11),m(5,"h4",12)(6,"h5",13),l()(),i(7,"div",14),B(8,$e,3,3,"button",15)(9,Ee,3,3,"button",16)(10,Ue,3,3,"button",17),i(11,"button",18),_("click",function(){let n=N(t).$implicit,b=h();return V(b.openEditUser(n))}),p(12),s(13,"translate"),l()()()()()}if(r&2){let t=k.$implicit,a=h();e(5),u("innerText",t.name),e(),u("innerText",t.username),e(2),g(a.$auth.user.username!==t.username?8:-1),e(),g(a.$auth.user.username===t.username&&!t.otpActive?9:-1),e(),g(a.$auth.user.username===t.username&&t.otpActive?10:-1),e(2),v(o(13,6,"form.button_edit"))}}var $t=(()=>{class r{$api=d(S);$auth=d(j);$modal=d(ae);$route=d(ie);$toastr=d(U);$translate=d($);homebridgeUsers;ngOnInit(){this.$route.data.subscribe(t=>{this.homebridgeUsers=t.homebridgeUsers})}reloadUsers(){return this.$api.get("/users").subscribe(t=>{this.homebridgeUsers=t})}openAddNewUser(){this.$modal.open(ce,{size:"lg",backdrop:"static"}).result.finally(()=>{this.reloadUsers()})}openEditUser(t){let a=this.$modal.open(_e,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}deleteUser(t){this.$api.delete(`/users/${t}`).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("users.toast_user_deleted"),this.$translate.instant("toast.title_success")),this.reloadUsers()},error:a=>{console.error(a),this.$toastr.error(a.error.message||this.$translate.instant("users.toast_failed_to_delete_user"),this.$translate.instant("toast.title_error"))}})}setup2fa(t){let a=this.$modal.open(pe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}disable2fa(t){let a=this.$modal.open(oe,{size:"lg",backdrop:"static"});a.componentInstance.user=t,a.result.finally(()=>{this.reloadUsers()})}static \u0275fac=function(a){return new(a||r)};static \u0275cmp=y({type:r,selectors:[["app-users"]],decls:12,vars:6,consts:[[1,"row","mb-3"],[1,"col-9"],[1,"primary-text","m-0"],[1,"col-3","text-right"],[1,"btn","btn-elegant","waves-effect","m-0",3,"click"],[1,"fas","fa-fw","fa-plus"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[3,"innerText"],[1,"small","text-truncate","primary-text",3,"innerText"],[1,"d-flex","flex-row","justify-content-between",2,"gap","10px"],[1,"btn","btn-elegant","btn-sml","m-0"],[1,"btn","btn-primary","mt-0","m-0"],[1,"btn","btn-primary","m-0"],[1,"btn","btn-primary","m-0",3,"click"],[1,"btn","btn-elegant","btn-sml","m-0",3,"click"],[1,"btn","btn-primary","mt-0","m-0",3,"click"]],template:function(a,n){a&1&&(i(0,"div",0)(1,"div",1)(2,"h3",2),p(3),s(4,"translate"),l()(),i(5,"div",3)(6,"button",4),s(7,"translate"),_("click",function(){return n.openAddNewUser()}),m(8,"i",5),l()()(),i(9,"div",6),X(10,ke,14,8,"div",7,W),l()),a&2&&(e(3),v(o(4,2,"users.title_users")),e(3),f("aria-label",o(7,4,"users.button_add_user")),e(4),Y(n.homebridgeUsers))},dependencies:[E],encapsulation:2})}return r})();export{oe as a,pe as b,ce as c,_e as d,$t as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-GJHKJW7G.js";import"./chunk-G3NT5LV6.js";import"./chunk-QHHRJOCD.js";import"./chunk-H3E4T6KH.js";import"./chunk-KDJPDALB.js";export{a as ShutdownLinuxComponent};
|