homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
2 lines • 52.6 kB
JavaScript
import{a as ce,b as Re,d as ue}from"./chunk-3ODOBDIZ.js";import{a as Fe}from"./chunk-H3RDASOR.js";import"./chunk-M2QUBULD.js";import{a as X}from"./chunk-XQFJNVZN.js";import{b as qe}from"./chunk-KZE2OTCD.js";import{a as je}from"./chunk-SGXHM7IT.js";import"./chunk-LKHNMMNU.js";import"./chunk-COWEDMDX.js";import"./chunk-YEMALHZS.js";import"./chunk-M5NPMQ5Y.js";import{a as He}from"./chunk-XTCYYJPD.js";import"./chunk-AYSHSJRC.js";import{a as Xe}from"./chunk-DVKLDZZ3.js";import{a as Le,c as R,g as Oe,k as de}from"./chunk-SMGTZ45N.js";import"./chunk-ANE4AW4B.js";import"./chunk-EOZQDUTB.js";import"./chunk-T5DKW6NZ.js";import"./chunk-MUUSCRZD.js";import"./chunk-JOJEYCYX.js";import"./chunk-UKY4BVMC.js";import{a as re}from"./chunk-GAHGBZ7U.js";import{p as Ne}from"./chunk-NAG4LCT2.js";import"./chunk-UNLSKRL2.js";import"./chunk-BSM4XIDD.js";import"./chunk-O5RZ7ZOO.js";import"./chunk-AZGHSTIR.js";import"./chunk-NYZK4HSS.js";import"./chunk-D4J5AL5X.js";import"./chunk-H35CNDP7.js";import"./chunk-ME4WRCWH.js";import"./chunk-EA5VT3RQ.js";import"./chunk-NMMSSMCW.js";import"./chunk-JP467WDP.js";import"./chunk-CVXWKOFU.js";import"./chunk-FWJREO6L.js";import"./chunk-SD2RBU34.js";import"./chunk-HLDUJBLE.js";import"./chunk-MVRVLT3V.js";import"./chunk-6RX3XE55.js";import"./chunk-YT56PAEY.js";import"./chunk-D4MZIYO2.js";import{a as ze,b as Ge,c as Qe,d as We,e as Je}from"./chunk-I4YCVMXH.js";import{a as pe}from"./chunk-I45OAEDK.js";import{a as Ue}from"./chunk-T7RKA523.js";import{s as j,t as se}from"./chunk-2QHNXSQY.js";import"./chunk-VYTJCKZA.js";import{a as te}from"./chunk-IL6HHVES.js";import{d as le}from"./chunk-LKBXKG4K.js";import{C as $e,D as Ae,c as Be,e as Ee,f as ke,g as Te,j as Ie,m as Me,r as De,s as Ve}from"./chunk-BQZ376DP.js";import{b as ae}from"./chunk-RFCSHRPV.js";import{b as we,f as Se}from"./chunk-3APJQTJL.js";import{$b as G,$c as ne,Aa as F,Ba as Ce,Ea as n,Ec as Pe,Gb as be,Hb as xe,Kb as L,Lb as J,Mb as p,Nb as P,Ob as x,Qa as U,Ra as M,Yc as Q,Zc as D,aa as b,ab as E,ac as ie,cb as g,da as _e,db as _,dc as a,dd as oe,ec as l,fa as v,fb as Y,fc as V,ga as y,gb as Z,hb as ee,ib as T,jb as r,kb as s,la as fe,lb as u,lc as ve,mb as w,nb as S,o as ge,ob as N,pc as me,qa as I,qc as ye,ra as he,vb as B,wb as z,xb as h,yb as q,za as A,zb as m}from"./chunk-LTGI3NYM.js";import"./chunk-2PUJPDBO.js";import"./chunk-FJZSMPXC.js";import"./chunk-BWI3GJO4.js";import"./chunk-XW7PBNQZ.js";import"./chunk-H5WYCQ4G.js";import"./chunk-J4DRBL7E.js";import"./chunk-ATJB7DUI.js";import{h as $}from"./chunk-B4AJQJMI.js";var ai=i=>({pluginName:i}),li=(i,c)=>({setting:i,value:c});function ri(i,c){i&1&&(r(0,"li"),p(1),a(2,"translate"),s(),r(3,"li"),p(4),a(5,"translate"),s()),i&2&&(n(),P(l(2,2,"plugins.manage.confirm_disable_platform_1")),n(3),P(l(5,4,"plugins.manage.confirm_disable_platform_2")))}function si(i,c){i&1&&(r(0,"li"),p(1),a(2,"translate"),s(),r(3,"li"),p(4),a(5,"translate"),s()),i&2&&(n(),P(l(2,2,"plugins.manage.confirm_disable_accessory_1")),n(3),P(l(5,4,"plugins.manage.confirm_disable_accessory_2")))}function di(i,c){if(i&1&&(r(0,"ul",15),u(1,"li",16),a(2,"translate"),r(3,"ul",17),g(4,ri,6,6)(5,si,6,6),s()()),i&2){let e=m(2);n(),T("innerHtml",V(2,2,"plugins.manage.confirm_disable_setting",ie(5,li,e.keepOrphansName,e.keepOrphansValue)),A),n(3),_(e.keepOrphans?4:5)}}function pi(i,c){i&1&&(r(0,"ul",15)(1,"li"),p(2),a(3,"translate"),s(),r(4,"li"),p(5),a(6,"translate"),s()()),i&2&&(n(2),P(l(3,2,"plugins.manage.confirm_disable_accessory_1")),n(3),P(l(6,4,"plugins.manage.confirm_disable_accessory_2")))}function ci(i,c){if(i&1&&g(0,di,6,8,"ul",15)(1,pi,7,6,"ul",15),i&2){let e=m();_(e.isConfiguredDynamicPlatform?0:1)}}var Ke=(()=>{class i{$activeModal=b(j);$translate=b(Q);modalData=b(de);pluginName=this.modalData.pluginName;isConfigured=this.modalData.isConfigured??!1;isConfiguredDynamicPlatform=this.modalData.isConfiguredDynamicPlatform??!1;keepOrphans=this.modalData.keepOrphans??!1;keepOrphansName=`<code>${this.$translate.instant("settings.startup.keep_accessories")}</code>`;get keepOrphansValue(){return`<code>${this.keepOrphans}</code>`}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close()}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-disable-plugin"]],decls:25,vars:21,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"mb-3","text-center"],[1,"fas","fa-circle-pause","primary-text","icon-xl"],["type","warning",1,"mb-0",3,"dismissible"],[1,"w-100","text-center","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click"],[1,"mb-3"],[3,"innerHtml"],[1,"mb-1"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),p(3),s(),r(4,"button",3),a(5,"translate"),h("click",function(){return t.dismissModal()}),s()(),r(6,"div",4)(7,"div",5),u(8,"i",6),s(),g(9,ci,2,1),r(10,"ngb-alert",7)(11,"p",8),p(12),a(13,"translate"),s()()(),r(14,"div",9)(15,"div",10)(16,"button",11),a(17,"translate"),h("click",function(){return t.dismissModal()}),p(18),a(19,"translate"),s()(),u(20,"div",12),r(21,"div",13)(22,"button",14),h("click",function(){return t.closeModal()}),p(23),a(24,"translate"),s()()()()),o&2&&(n(3),P(t.pluginName),n(),E("aria-label",l(5,8,"form.button_close")),n(5),_(t.isConfigured?9:-1),n(),T("dismissible",!1),n(2),x(" ",V(13,10,"plugins.manage.confirm_disable",G(19,ai,t.pluginName))," "),n(4),E("aria-label",l(17,13,"form.button_close")),n(2),x(" ",l(19,15,"form.button_close")," "),n(5),x(" ",l(24,17,"plugins.manage.disable")," "))},dependencies:[Ue,D],encapsulation:2,changeDetection:0})}return i})();var ui=i=>({author:i});function mi(i,c){if(i&1&&(w(0,"li",9),N(1,"i"),w(2,"a",15),p(3),S()()),i&2){let e=c.$implicit,o=m();n(),J(`me-3 my-4 primary-text fa-2xl ${o.getIconClass(e.type)}`),n(),z("href",e.url,F),n(),P(e.url)}}var Ye=(()=>{class i{$activeModal=b(j);modalData=b(R);plugin=this.modalData.plugin;fundingOptions=I([]);authorName=I("");ngOnInit(){this.initialize()}initialize(){if(!this.plugin||!this.plugin.funding){this.$activeModal.close();return}this.authorName.set(this.plugin.name==="homebridge-config-ui-x"?"oznu":this.plugin.author);let e=this.plugin.funding;if(Array.isArray(e)){let o=e.map(t=>{if(typeof t=="string")return{type:"other",url:t};if(typeof t=="object")return{type:t.type||"other",url:t.url}}).filter(Boolean);this.fundingOptions.set(o)}else typeof e=="string"?this.fundingOptions.set([{type:"other",url:e}]):typeof e=="object"&&e!==null&&this.fundingOptions.set([{type:e.type||"other",url:e.url}])}getIconClass(e){switch(e.toLowerCase()){case"paypal":return"fab fa-paypal";case"github":return"fab fa-github";case"patreon":return"fab fa-patreon";case"kofi":case"ko-fi":return"fab fa-ko-fi";case"venmo":return"fab fa-venmo-v";default:return"fas fa-link"}}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-donate"]],decls:28,vars:21,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","pink-text","mb-3"],[1,"fas","fa-heart","icon-xl"],[1,"mb-3"],[1,"list-group","list-group-box"],[1,"list-group-item","d-flex","align-items-center"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"],["target","_blank","rel","noopener noreferrer",1,"text-break-all","fs-6",3,"href"]],template:function(o,t){o&1&&(w(0,"div",0)(1,"div",1)(2,"h5",2),p(3),a(4,"translate"),S(),w(5,"button",3),a(6,"translate"),q("click",function(){return t.dismissModal()}),S()(),w(7,"div",4)(8,"div",5),N(9,"i",6),S(),w(10,"ul",7)(11,"li"),p(12),a(13,"translate"),S(),w(14,"li"),p(15),a(16,"translate"),S()(),w(17,"ul",8),Z(18,mi,4,4,"li",9,Y),S()(),w(20,"div",10),N(21,"div",11),w(22,"div",12)(23,"button",13),a(24,"translate"),q("click",function(){return t.dismissModal()}),p(25),a(26,"translate"),S()(),N(27,"div",14),S()()),o&2&&(n(3),P(V(4,6,"plugins.donate.tile_donate_to",G(19,ui,`@${t.authorName()}`))),n(2),E("aria-label",l(6,9,"form.button_close")),n(7),P(l(13,11,"plugins.donate.message_1")),n(3),P(l(16,13,"plugins.donate.message_2")),n(3),ee(t.fundingOptions()),n(5),E("aria-label",l(24,15,"form.button_close")),n(2),x(" ",l(26,17,"form.button_close")," "))},dependencies:[D],styles:[".text-break-all[_ngcontent-%COMP%]{word-break:break-all}"],changeDetection:0})}return i})();var gi=(i,c)=>({scopedLink:i,verifiedLink:c});function _i(i,c){i&1&&(w(0,"h6",18),p(1),a(2,"translate"),S(),w(3,"p",19),p(4),a(5,"translate"),S(),w(6,"p",19),p(7),a(8,"translate"),S()),i&2&&(n(),P(l(2,3,"plugins.manage.scoped_subtitle")),n(3),P(l(5,5,"plugins.manage.scoped_message")),n(3),P(l(8,7,"plugins.manage.verified_message")))}function fi(i,c){i&1&&(w(0,"h6",18),p(1),a(2,"translate"),S(),w(3,"p",19),p(4),a(5,"translate"),S()),i&2&&(n(),P(l(2,2,"plugins.manage.verified_subtitle")),n(3),P(l(5,4,"plugins.manage.verified_message")))}function hi(i,c){i&1&&(w(0,"h6",18),p(1),a(2,"translate"),S(),w(3,"p",19),p(4),a(5,"translate"),S()),i&2&&(n(),P(l(2,2,"plugins.manage.unverified_subtitle")),n(3),P(l(5,4,"plugins.manage.unverified_message")))}function Ci(i,c){if(i&1){let e=B();w(0,"button",20),q("click",function(){v(e);let t=m();return y(t.dismissModal())}),p(1),a(2,"translate"),S()}i&2&&(n(),x(" ",l(2,1,"form.button_close")," "))}function bi(i,c){if(i&1){let e=B();w(0,"button",20),q("click",function(){v(e);let t=m();return y(t.dismissModal())}),p(1),a(2,"translate"),S()}i&2&&(n(),x(" ",l(2,1,"form.button_close")," "))}function xi(i,c){if(i&1&&(w(0,"a",17),p(1),a(2,"translate"),N(3,"i",21),S()),i&2){let e=m();z("href",e.plugin.links.homepage||e.plugin.links.npm,F),n(),x(" ",l(2,2,"plugins.button_homepage")," ")}}var Ze=(()=>{class i{$activeModal=b(j);modalData=b(R);plugin=this.modalData.plugin;iconError=I(!1);pluginIcon=ve(()=>this.plugin?.icon&&!this.iconError()?this.plugin.icon:this.defaultIcon);defaultIcon="assets/hb-icon.png";linkScoped='<a href="https://github.com/homebridge/plugins/wiki/Scoped-Plugins" target="_blank"><i class="fas fa-external-link-alt primary-text"></i></a>';linkVerified='<a href="https://github.com/homebridge/plugins/wiki/Verified-Plugins" target="_blank"><i class="fas fa-external-link-alt primary-text"></i></a>';handleIconError(){this.iconError.set(!0)}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-plugin-info"]],decls:32,vars:42,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","text-center"],["alt","Plugin Icon",1,"mb-3","plugin-icon-card",3,"error","src"],[1,"mb-1"],[1,"grey-text","mb-0","font-monospace"],[1,"grey-text","mb-1","font-monospace"],[1,"mb-3"],["aria-hidden","true",1,"fas","fa-shield-alt","mb-3","shield-icon"],[1,"mb-0","grey-text",3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none",3,"href"],[1,"mb-2"],[1,"mb-1","grey-text"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["aria-hidden","true",1,"fas","fa-external-link-alt"]],template:function(o,t){o&1&&(w(0,"div",0)(1,"div",1)(2,"h5",2),p(3),a(4,"translate"),S(),w(5,"button",3),a(6,"translate"),q("click",function(){return t.dismissModal()}),S()(),w(7,"div",4)(8,"img",5),q("error",function(){return t.handleIconError()}),S(),w(9,"h4",6),p(10),S(),w(11,"p",7),p(12),S(),w(13,"p",8),p(14),S(),w(15,"p",9),p(16),S(),N(17,"i",10)(18,"i",10)(19,"i",10),g(20,_i,9,9),g(21,fi,6,6),g(22,hi,6,6),N(23,"p",11),a(24,"translate"),S(),w(25,"div",12)(26,"div",13),g(27,Ci,3,3,"button",14),S(),w(28,"div",15),g(29,bi,3,3,"button",14),S(),w(30,"div",16),g(31,xi,4,4,"a",17),S()()()),o&2&&(n(3),P(l(4,32,"plugins.manage.information")),n(2),E("aria-label",l(6,34,"form.button_close")),n(3),z("src",t.pluginIcon(),F),n(2),P(t.plugin.displayName),n(2),P(t.plugin.name),n(2),x("@",t.plugin.author),n(2),P(t.plugin.description),n(),L("orange-text",!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin)("grey-text",t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)("opacity-muted",t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin),n(),L("green-text",!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin))("grey-text",t.plugin.isHbScoped||!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin)("opacity-muted",t.plugin.isHbScoped||!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin),n(),L("purple-text",t.plugin.isHbScoped)("grey-text",!t.plugin.isHbScoped)("opacity-muted",!t.plugin.isHbScoped),n(),_(t.plugin.isHbScoped?20:-1),n(),_(!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)?21:-1),n(),_(!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin?22:-1),n(),z("innerHTML",V(24,36,"plugins.manage.more_info",ie(39,gi,t.linkScoped,t.linkVerified)),A),n(4),_(t.plugin.links.homepage||t.plugin.links.npm?27:-1),n(2),_(!t.plugin.links.homepage&&!t.plugin.links.npm?29:-1),n(2),_(t.plugin.links.homepage||t.plugin.links.npm?31:-1))},dependencies:[D],styles:[".plugin-icon[_ngcontent-%COMP%]{height:75px;width:75px;border-radius:15px;border:1px solid #222222}.shield-icon[_ngcontent-%COMP%]{font-size:48px}.opacity-muted[_ngcontent-%COMP%]{opacity:.25}"],changeDetection:0})}return i})();var vi=i=>({author:i});function yi(i,c){if(i&1){let e=B();r(0,"button",22),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.checkAndUpdatePlugin())}),u(3,"i",23),s()}i&2&&(T("openDelay",150)("ngbTooltip",l(1,3,"plugins.button_update")),E("aria-label",l(2,5,"plugins.button_update")))}function Pi(i,c){if(i&1){let e=B();r(0,"button",22),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.switchToScoped())}),u(3,"i",24),s()}i&2&&(T("openDelay",150)("ngbTooltip",l(1,3,"plugins.manage.scoped.switch")),E("aria-label",l(2,5,"plugins.manage.scoped.switch")))}function wi(i,c){if(i&1){let e=B();r(0,"button",25),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.openSettings())}),u(3,"i",26),s()}i&2&&(T("ngbTooltip",l(1,3,"plugins.button_set_up"))("openDelay",150),E("aria-label",l(2,5,"plugins.button_set_up")))}function Si(i,c){if(i&1){let e=B();r(0,"button",25),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.openBridgeSettings())}),u(3,"i",27),s()}i&2&&(T("ngbTooltip",l(1,3,"child_bridge.setup"))("openDelay",150),E("aria-label",l(2,5,"child_bridge.setup")))}function Bi(i,c){if(i&1){let e=B();r(0,"button",25),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.openBridgeSettings())}),u(3,"i",28),s()}i&2&&(T("ngbTooltip",l(1,3,"child_bridge.bridge_connect"))("openDelay",150),E("aria-label",l(2,5,"child_bridge.bridge_connect")))}function Ei(i,c){if(i&1&&u(0,"i",29),i&2){let e=m(2);L("fa-bridge-circle-exclamation",e.childBridgeStatus()==="pending")("orange-text",e.childBridgeStatus()==="pending")("fa-bridge-circle-xmark",e.childBridgeStatus()==="down")("red-text",e.childBridgeStatus()==="down")}}function ki(i,c){if(i&1&&(r(0,"div",9),g(1,yi,4,7,"button",18),g(2,Pi,4,7,"button",18),g(3,wi,4,7,"button",19),g(4,Si,4,7,"button",19),g(5,Bi,4,7,"button",19),u(6,"i",20),g(7,Ei,1,8,"i",21),s()),i&2){let e,o,t,f,k,d=m();n(),_(d.plugin().installedVersion&&d.plugin().updateAvailable&&!d.childBridgeRestartInProgress()?1:-1),n(),_(d.plugin().installedVersion&&((e=d.plugin().newHbScope)==null?null:e.switch)===d.plugin().installedVersion&&!d.childBridgeRestartInProgress()?2:-1),n(),_(d.plugin().installedVersion&&(!d.plugin().newHbScope||((o=d.plugin().newHbScope)==null?null:o.switch)!==d.plugin().installedVersion)&&!d.plugin().updateAvailable&&!d.plugin().isConfigured&&!d.childBridgeRestartInProgress()&&!d.plugin().disabled?3:-1),n(),_(d.plugin().installedVersion&&(!d.plugin().newHbScope||((t=d.plugin().newHbScope)==null?null:t.switch)!==d.plugin().installedVersion)&&!d.plugin().updateAvailable&&d.plugin().isConfigured&&!d.plugin().hasChildBridges&&!d.plugin().disabled&&d.plugin().recommendChildBridge&&!d.childBridgeRestartInProgress()?4:-1),n(),_(d.plugin().installedVersion&&(!d.plugin().newHbScope||((f=d.plugin().newHbScope)==null?null:f.switch)!==d.plugin().installedVersion)&&!d.plugin().updateAvailable&&d.plugin().isConfigured&&d.plugin().hasChildBridges&&!d.childBridgeRestartInProgress()&&d.plugin().hasChildBridgesUnpaired&&d.childBridgeStatus()==="ok"&&!d.plugin().disabled?5:-1),n(),T("hidden",!d.childBridgeRestartInProgress()),n(),_(d.plugin().installedVersion&&(!d.plugin().newHbScope||((k=d.plugin().newHbScope)==null?null:k.switch)!==d.plugin().installedVersion)&&!d.plugin().updateAvailable&&d.plugin().isConfigured&&d.plugin().hasChildBridges&&!d.childBridgeRestartInProgress()&&!d.plugin().hasChildBridgesUnpaired&&d.childBridgeStatus()!=="ok"&&!d.plugin().disabled?7:-1)}}function Ti(i,c){if(i&1){let e=B();r(0,"button",11),a(1,"translate"),h("click",function(){v(e);let t=m();return y(t.openFundingModal(t.plugin()))}),u(2,"i",30),r(3,"span",16),p(4),s()()}if(i&2){let e=m();E("aria-label",V(1,2,"plugins.donate.tile_donate_to",G(5,vi,e.plugin().author))),n(4),x("@",e.plugin().author)}}function Ii(i,c){if(i&1&&(r(0,"span",16),u(1,"i",31),p(2),s()),i&2){let e=m();n(2),x("@",e.plugin().author," ")}}function Mi(i,c){if(i&1&&(r(0,"span"),p(1),a(2,"date"),s()),i&2){let e=m(2);n(),x("(",V(2,1,e.plugin().lastUpdated,"yyyy-MM-dd"),")")}}function Di(i,c){if(i&1&&(r(0,"span"),u(1,"i",32),r(2,"span",16),p(3),g(4,Mi,3,4,"span"),s()()),i&2){let e=m();n(3),x("v",e.plugin().latestVersion," "),n(),_(e.plugin().lastUpdated?4:-1)}}function Vi(i,c){if(i&1&&(u(0,"i",33),p(1)),i&2){let e=m();n(),x("v",e.plugin().installedVersion," ")}}function $i(i,c){if(i&1){let e=B();r(0,"button",22),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.doChildBridgeAction("restart"))}),u(3,"i",36),s()}if(i&2){let e=m(2);T("openDelay",150)("ngbTooltip",l(1,3,e.setChildBridges().length>1?"child_bridge.restart_plural":"child_bridge.restart")),E("aria-label",l(2,5,e.setChildBridges().length>1?"child_bridge.restart_plural":"child_bridge.restart"))}}function Ai(i,c){if(i&1){let e=B();r(0,"button",37),a(1,"translate"),h("click",function(){v(e);let t=m(2);return y(t.enablePlugin(t.plugin()))}),u(2,"i",38),a(3,"translate"),s()}i&2&&(E("aria-label",l(1,3,"common.labels.disabled")),n(2),T("ngbTooltip",l(3,5,"common.labels.disabled"))("openDelay",150))}function Ni(i,c){if(i&1){let e=B();r(0,"button",22),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m(2);return y(t.installAlternateVersion())}),u(3,"i",39),s()}i&2&&(T("openDelay",150)("ngbTooltip",l(1,3,"plugins.manage.install")),E("aria-label",l(2,5,"plugins.manage.install")))}function Li(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.viewPluginLog())}),u(1,"i",48),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.manage.plugin_logs")," "))}function Oi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.installAlternateVersion())}),u(1,"i",49),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.manage.manage_version")," "))}function Hi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.openJsonEditor())}),u(1,"i",50),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.manage.json_config")," "))}function Fi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.disablePlugin(t.plugin()))}),u(1,"i",51),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.manage.disable")," "))}function qi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.enablePlugin(t.plugin()))}),u(1,"i",52),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.manage.enable")," "))}function ji(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.uninstallPlugin())}),u(1,"i",53),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"plugins.button_uninstall")," "))}function Ri(i,c){i&1&&u(0,"div",46)}function Ui(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(4);return y(t.doChildBridgeAction("restart"))}),u(1,"i",56),p(2),a(3,"translate"),s()}if(i&2){let e=m(4);n(2),x(" ",l(3,1,e.setChildBridges().length>1?"child_bridge.restart_plural":"child_bridge.restart")," ")}}function zi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(4);return y(t.doChildBridgeAction("stop"))}),u(1,"i",57),p(2),a(3,"translate"),s()}if(i&2){let e=m(4);n(2),x(" ",l(3,1,e.setChildBridges().length>1?"child_bridge.stop_plural":"child_bridge.stop")," ")}}function Gi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(4);return y(t.doChildBridgeAction("start"))}),u(1,"i",58),p(2),a(3,"translate"),s()}if(i&2){let e=m(4);n(2),x(" ",l(3,1,e.setChildBridges().length>1?"child_bridge.start_plural":"child_bridge.start")," ")}}function Qi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.openBridgeSettings())}),u(1,"i",54),p(2),a(3,"translate"),s(),g(4,Ui,4,3,"button",45),g(5,zi,4,3,"button",45)(6,Gi,4,3,"button",45),r(7,"button",43),h("click",function(){v(e);let t=m(3);return y(t.resetChildBridges())}),u(8,"i",55),p(9),a(10,"translate"),s()}if(i&2){let e=m(3);n(2),x(" ",l(3,4,"child_bridge.bridge_settings")," "),n(2),_(e.childBridgeRestartInProgress()?-1:4),n(),_(e.allChildBridgesStopped()?6:5),n(4),x(" ",l(10,6,"child_bridge.reset_accessories")," ")}}function Wi(i,c){i&1&&u(0,"div",46)}function Ji(i,c){if(i&1){let e=B();g(0,Wi,1,0,"div",46),r(1,"button",43),h("click",function(){v(e);let t=m(3);return y(t.openExternalAccessories())}),u(2,"i",59),p(3),a(4,"translate"),s()}if(i&2){let e=m(3);_(e.plugin().hasChildBridges?-1:0),n(3),x(" ",l(4,2,"external_accessories.menu_label")," ")}}function Xi(i,c){i&1&&u(0,"div",46)}function Ki(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.openBridgeSettings())}),u(1,"i",60),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"child_bridge.setup")," "))}function Yi(i,c){i&1&&u(0,"div",46)}function Zi(i,c){if(i&1){let e=B();r(0,"button",43),h("click",function(){v(e);let t=m(3);return y(t.openBridgeSettings())}),u(1,"i",60),p(2),a(3,"translate"),s()}i&2&&(n(2),x(" ",l(3,1,"child_bridge.setup")," "))}function et(i,c){i&1&&u(0,"div",46)}function it(i,c){if(i&1&&(r(0,"a",47),u(1,"i",61),p(2),a(3,"translate"),s()),i&2){let e=m(3);T("href",e.plugin().links.bugs,F),n(2),x(" ",l(3,2,"support.links.issue")," ")}}function tt(i,c){if(i&1){let e=B();r(0,"span",35)(1,"button",40),a(2,"translate"),u(3,"i",41),s(),r(4,"div",42)(5,"button",43),h("click",function(){v(e);let t=m(2);return y(t.openSettings())}),u(6,"i",44),p(7),a(8,"translate"),s(),g(9,Li,4,3,"button",45),g(10,Oi,4,3,"button",45),g(11,Hi,4,3,"button",45),g(12,Fi,4,3,"button",45),g(13,qi,4,3,"button",45),g(14,ji,4,3,"button",45),g(15,Ri,1,0,"div",46),g(16,Qi,11,8),g(17,Ji,5,4),g(18,Xi,1,0,"div",46),g(19,Ki,4,3,"button",45),g(20,Yi,1,0,"div",46),g(21,Zi,4,3,"button",45),g(22,et,1,0,"div",46),g(23,it,4,4,"a",47),s()()}if(i&2){let e=m(2);n(),E("aria-label",l(2,17,"plugins.button_actions")),n(6),x(" ",l(8,19,"plugins.button_settings")," "),n(2),_(e.plugin().isConfigured&&!e.plugin().disabled?9:-1),n(),_(e.plugin().publicPackage?10:-1),n(),_(e.plugin().name!=="homebridge-config-ui-x"?11:-1),n(),_(e.plugin().name!=="homebridge-config-ui-x"&&!e.plugin().disabled?12:-1),n(),_(e.plugin().name!=="homebridge-config-ui-x"&&e.plugin().disabled?13:-1),n(),_(e.plugin().name!=="homebridge-config-ui-x"?14:-1),n(),_(!e.plugin().disabled&&e.plugin().isConfigured&&e.plugin().hasChildBridges&&e.plugin().installedVersion&&e.plugin().name!=="homebridge-config-ui-x"?15:-1),n(),_(e.plugin().hasChildBridges&&!e.plugin().disabled?16:-1),n(),_(e.plugin().hasExternalAccessories&&!e.plugin().disabled?17:-1),n(),_(e.plugin().isConfigured&&!e.plugin().hasChildBridges&&!e.plugin().disabled&&!e.plugin().recommendChildBridge?18:-1),n(),_(e.plugin().isConfigured&&!e.plugin().hasChildBridges&&!e.plugin().disabled&&!e.plugin().recommendChildBridge?19:-1),n(),_(e.plugin().isConfigured&&!e.plugin().hasChildBridges&&!e.plugin().disabled&&e.plugin().recommendChildBridge&&e.plugin().updateAvailable?20:-1),n(),_(e.plugin().isConfigured&&!e.plugin().hasChildBridges&&!e.plugin().disabled&&e.plugin().recommendChildBridge&&e.plugin().updateAvailable?21:-1),n(),_(e.plugin().links.bugs?22:-1),n(),_(e.plugin().links.bugs?23:-1)}}function nt(i,c){if(i&1&&(r(0,"div",9),g(1,$i,4,7,"button",18),g(2,Ai,4,7,"button",34),g(3,Ni,4,7,"button",18),g(4,tt,24,21,"span",35),s()),i&2){let e=m();n(),_(!e.plugin().disabled&&e.plugin().hasChildBridges&&e.childBridgeStatus()==="ok"?1:-1),n(),_(e.plugin().installedVersion&&e.plugin().disabled?2:-1),n(),_(e.plugin().publicPackage&&!e.plugin().installedVersion?3:-1),n(),_(e.plugin().installedVersion?4:-1)}}var ei=(()=>{class i{injector=b(_e);$api=b(oe);$auth=b(le);$md=b(je);$modal=b(se);$plugin=b(ue);$pluginsCache=b(ce);$settings=b(ae);$toastr=b(ne);$translate=b(Q);$ws=b(re);plugin=me.required();childBridges=me.required();io;defaultIcon="assets/hb-icon.png";isAdmin=this.$auth.user.admin;hasChildBridges=I(!1);allChildBridgesStopped=I(!1);childBridgeStatus=I("pending");childBridgeRestartInProgress=I(!1);isMobile=I("");setChildBridges=I([]);constructor(){he(()=>{let e=this.childBridges();this.hasChildBridges.set(e.length>0),this.allChildBridgesStopped.set(e.every(o=>o.manuallyStopped===!0)),this.hasChildBridges()&&(e.some(o=>o.status==="down")?this.childBridgeStatus.set("down"):e.some(o=>o.status==="pending")?this.childBridgeStatus.set("pending"):e.some(o=>o.status==="ok")&&this.childBridgeStatus.set("ok")),this.setChildBridges.set(e)})}ngOnInit(){this.isMobile.set(this.$md.detect.mobile()||""),this.io=this.$ws.getExistingNamespace("child-bridges"),this.isMobile()&&this.plugin().displayName.toLowerCase().startsWith("homebridge ")&&(this.plugin().displayName=this.plugin().displayName.replace(Ne,"")),this.plugin().icon||(this.plugin().icon=this.defaultIcon)}openFundingModal(e){let o=U([{provide:R,useValue:{plugin:e}}],this.injector);this.$modal.open(Ye,{size:"lg",backdrop:"static",injector:o})}pluginInfoModal(e){let o=U([{provide:R,useValue:{plugin:e}}],this.injector);this.$modal.open(Ze,{size:"lg",backdrop:"static",injector:o})}disablePlugin(e){return $(this,null,function*(){let o=U([{provide:de,useValue:{pluginName:e.displayName||e.name,isConfigured:e.isConfigured,isConfiguredDynamicPlatform:e.isConfiguredDynamicPlatform,keepOrphans:this.$settings.keepOrphans}}],this.injector),t=this.$modal.open(Ke,{size:"lg",backdrop:"static",injector:o});try{yield t.result;try{yield this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/disable`,{}),this.$pluginsCache.invalidate(),e.disabled=!0,this.hasChildBridges()&&this.doChildBridgeAction("stop"),this.$modal.open(X,{size:"lg",backdrop:"static"})}catch(f){console.error(f),this.$toastr.error(this.$translate.instant("plugins.disable.error"),this.$translate.instant("toast.title_error"))}}catch(f){}})}enablePlugin(e){return $(this,null,function*(){let o=U([{provide:Le,useValue:{title:e.name,message:this.$translate.instant("plugins.manage.confirm_enable",{pluginName:e.displayName}),confirmButtonLabel:this.$translate.instant("plugins.manage.enable"),faIconClass:"fa-circle-play primary-text"}}],this.injector),t=this.$modal.open(He,{size:"lg",backdrop:"static",injector:o});try{yield t.result;try{yield this.$api.put(`/config-editor/plugin/${encodeURIComponent(e.name)}/enable`,{}),this.$pluginsCache.invalidate(),e.disabled=!1,this.hasChildBridges()&&(yield this.doChildBridgeAction("start")),this.$modal.open(X,{size:"lg",backdrop:"static"})}catch(f){console.error(f),this.$toastr.error(this.$translate.instant("plugins.enable.error"),this.$translate.instant("toast.title_error"))}}catch(f){}})}viewPluginLog(){let e=U([{provide:Oe,useValue:{plugin:this.plugin(),childBridges:this.setChildBridges()}}],this.injector);this.$modal.open(Re,{size:"xl",backdrop:"static",injector:e})}doChildBridgeAction(e){return $(this,null,function*(){this.childBridgeRestartInProgress.set(!0);try{for(let o of this.setChildBridges())yield ge(this.io.request(`${e}-child-bridge`,o.username))}catch(o){console.error(o),this.$toastr.error(this.$translate.instant("plugins.bridge.action_error",{action:e}),this.$translate.instant("toast.title_error")),this.childBridgeRestartInProgress.set(!1)}finally{setTimeout(()=>{this.childBridgeRestartInProgress.set(!1)},e==="restart"?12e3:e==="stop"?6e3:1e3)}})}handleIconError(){this.plugin().icon=this.defaultIcon}checkAndUpdatePlugin(){this.$plugin.checkAndUpdatePlugin(this.plugin(),this.plugin().latestVersion)}openSettings(){this.$plugin.settings(this.plugin())}openBridgeSettings(){this.$plugin.bridgeSettings(this.plugin())}openExternalAccessories(){this.$plugin.externalAccessories(this.plugin())}switchToScoped(){this.$plugin.switchToScoped(this.plugin())}installAlternateVersion(){this.$plugin.installAlternateVersion(this.plugin())}openJsonEditor(){this.$plugin.jsonEditor(this.plugin())}uninstallPlugin(){this.$plugin.uninstallPlugin(this.plugin(),this.setChildBridges())}resetChildBridges(){this.$plugin.resetChildBridges(this.setChildBridges())}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-plugin-card"]],inputs:{plugin:[1,"plugin"],childBridges:[1,"childBridges"]},decls:25,vars:18,consts:[[1,"card","card-body","mb-3"],[1,"d-flex","flex-row","justify-content-between"],[1,"d-flex","flex-column","me-3","align-items-center","justify-content-between"],["alt","","aria-hidden","true",1,"plugin-icon-card","mb-3",3,"error","src"],[1,"d-flex","flex-column","justify-content-between","plugin-content"],[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,"ms-auto"],[1,"card-text","mb-2","text-truncate"],["type","button",1,"card-link","btn","btn-link","p-0","text-decoration-none",3,"click"],["aria-hidden","true",1,"fas","fa-shield-alt","fa-lg","me-1"],["aria-hidden","true",1,"grey-text"],[1,"card-text","mb-2"],["type","button",1,"card-link","btn","btn-link","p-0","text-decoration-none"],[1,"grey-text"],[1,"card-text","mb-0","grey-text"],["type","button","container","body","triggers","hover",1,"card-link","btn","btn-link","p-0","text-decoration-none",3,"openDelay","ngbTooltip"],["type","button","container","body","triggers","hover",1,"card-link","btn","btn-link","p-0","text-decoration-none",3,"ngbTooltip","openDelay"],["aria-hidden","true",1,"fas","fa-circle-notch","fa-spin","fa-lg","grey-text","ms-3",3,"hidden"],["aria-hidden","true",1,"fas","fa-lg","ms-3",3,"fa-bridge-circle-exclamation","orange-text","fa-bridge-circle-xmark","red-text"],["type","button","container","body","triggers","hover",1,"card-link","btn","btn-link","p-0","text-decoration-none",3,"click","openDelay","ngbTooltip"],["aria-hidden","true",1,"far","fa-arrow-alt-circle-up","primary-text","fa-lg","fa-fade","fa-spin-slow","ms-3"],["aria-hidden","true",1,"fas","fa-arrow-right-arrow-left","primary-text","fa-lg","fa-fade","fa-spin-slow","ms-3"],["type","button","container","body","triggers","hover",1,"card-link","btn","btn-link","p-0","text-decoration-none",3,"click","ngbTooltip","openDelay"],["aria-hidden","true",1,"fas","fa-sliders","primary-text","fa-lg","fa-fade","fa-spin-slow","ms-3"],["aria-hidden","true",1,"icon-button","fas","fa-bridge","primary-text","fa-lg","fa-fade","fa-spin-slow","ms-3"],["aria-hidden","true",1,"icon-button","fas","fa-qrcode","primary-text","fa-lg","fa-fade","fa-spin-slow","ms-3"],["aria-hidden","true",1,"fas","fa-lg","ms-3"],["aria-hidden","true",1,"fas","fa-heart","fa-lg","me-1","pink-text"],["aria-hidden","true",1,"fas","fa-heart","fa-lg","me-1","heart-muted"],["aria-hidden","true",1,"far","fa-circle-dot","fa-lg","me-1"],["aria-hidden","true",1,"far","fa-circle-check","fa-lg","me-1"],["type","button",1,"card-link","btn","btn-link","p-0","text-decoration-none","red-text"],["ngbDropdown","","placement","left bottom-end top-end",1,"d-inline-block","ms-3","mt-auto"],["aria-hidden","true",1,"fas","fa-lg","fa-power-off","ms-3"],["type","button",1,"card-link","btn","btn-link","p-0","text-decoration-none","red-text",3,"click"],["aria-hidden","true","container","body","triggers","hover",1,"far","fa-pause-circle","fa-lg",3,"ngbTooltip","openDelay"],["aria-hidden","true",1,"far","fa-arrow-alt-circle-down","fa-lg"],["type","button","ngbDropdownToggle","",1,"card-link","btn","btn-link","p-0","text-decoration-none","mt-auto","dropdown-toggle-no-outline"],["aria-hidden","true",1,"fa-solid","fa-ellipsis-v","fa-lg"],["ngbDropdownMenu",""],["type","button","ngbDropdownItem","",3,"click"],["aria-hidden","true",1,"fas","fa-sliders"],["type","button","ngbDropdownItem",""],[1,"dropdown-divider"],["ngbDropdownItem","","rel","noopener noreferrer","target","_blank",3,"href"],["aria-hidden","true",1,"fas","fa-wave-square"],["aria-hidden","true",1,"fas","fa-code-compare"],["aria-hidden","true",1,"fas","fa-code"],["aria-hidden","true",1,"far","fa-circle-pause"],["aria-hidden","true",1,"far","fa-circle-play"],["aria-hidden","true",1,"fas","fa-trash"],["aria-hidden","true",1,"fas","fa-bridge"],["aria-hidden","true",1,"fas","fa-broom"],["aria-hidden","true",1,"icon-button","fas","fa-power-off"],["aria-hidden","true",1,"fas","fa-stop"],["aria-hidden","true",1,"fas","fa-play"],["aria-hidden","true",1,"fas","fa-qrcode"],["aria-hidden","true",1,"icon-button","fas","fa-bridge"],["aria-hidden","true",1,"icon-button","far","fa-circle-question"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"div",2)(3,"img",3),h("error",function(){return t.handleIconError()}),s()(),r(4,"div",4)(5,"div",5)(6,"div",6)(7,"div",7)(8,"h5",8),p(9),s(),g(10,ki,8,7,"div",9),s(),r(11,"p",10)(12,"button",11),a(13,"translate"),h("click",function(){return t.pluginInfoModal(t.plugin())}),u(14,"i",12),r(15,"span",13),p(16),s()()(),r(17,"p",14),g(18,Ti,5,7,"button",15),g(19,Ii,3,1,"span",16),s(),r(20,"div",7)(21,"p",17),g(22,Di,5,2,"span"),g(23,Vi,2,1),s(),g(24,nt,5,4,"div",9),s()()()()()()),o&2&&(n(3),T("src",t.plugin().icon,F),n(6),P(t.plugin().displayName),n(),_(t.isAdmin?10:-1),n(2),E("aria-label",l(13,16,"plugins.button_info")),n(2),L("purple-text",t.plugin().isHbScoped)("green-text",!t.plugin().isHbScoped&&(t.plugin().verifiedPlugin||t.plugin().verifiedPlusPlugin))("orange-text",!t.plugin().isHbScoped&&!t.plugin().verifiedPlugin&&!t.plugin().verifiedPlusPlugin),n(2),P(t.plugin().name),n(2),_((t.plugin().verifiedPlugin||t.plugin().verifiedPlusPlugin)&&t.plugin().funding?18:-1),n(),_((t.plugin().verifiedPlugin||t.plugin().verifiedPlusPlugin)&&t.plugin().funding?-1:19),n(3),_(t.plugin().publicPackage&&!t.plugin().installedVersion?22:-1),n(),_(t.plugin().installedVersion?23:-1),n(),_(t.isAdmin?24:-1))},dependencies:[pe,Je,We,Qe,Ge,ze,Pe,D],styles:[".plugin-content[_ngcontent-%COMP%]{min-width:calc(100% - 80px)}.card-link[_ngcontent-%COMP%]{font-weight:inherit}.heart-muted[_ngcontent-%COMP%]{opacity:.5}.dropdown-toggle-no-outline[_ngcontent-%COMP%]{outline:none}"],changeDetection:0})}return i})();var ii=(()=>{class i{$activeModal=b(j);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-plugin-support"]],decls:28,vars:22,consts:[["role","dialog","aria-modal","true",1,"modal-content"],[1,"modal-header"],["id","plugin-support-modal-title",1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"far","fa-circle-question","primary-text","icon-xl"],[1,"mb-0"],[3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),p(4),a(5,"translate"),s(),r(6,"button",3),a(7,"translate"),h("click",function(){return t.dismissModal()}),s()(),r(8,"div",4)(9,"div",5),u(10,"i",6),s(),r(11,"ul",7),u(12,"li",8),a(13,"translate"),u(14,"li",8),a(15,"translate"),u(16,"li",8),a(17,"translate"),u(18,"li",8),a(19,"translate"),s(),u(20,"app-support-banner"),s(),r(21,"div",9),u(22,"div",10),r(23,"div",11)(24,"button",12),h("click",function(){return t.dismissModal()}),p(25),a(26,"translate"),s()(),u(27,"div",13),s()()()),o&2&&(E("aria-labelledby","plugin-support-modal-title"),n(4),P(l(5,8,"support.title")),n(2),E("aria-label",l(7,10,"form.button_close")),n(6),T("innerHTML",l(13,12,"plugins.support.list_1"),A),n(2),T("innerHTML",l(15,14,"plugins.support.list_2"),A),n(2),T("innerHTML",l(17,16,"plugins.support.list_3"),A),n(2),T("innerHTML",l(19,18,"plugins.support.list_4"),A),n(7),x(" ",l(26,20,"form.button_close")," "))},dependencies:[Xe,D],encapsulation:2,changeDetection:0})}return i})();var ot=["searchInput"];function at(i,c){i&1&&u(0,"app-spinner")}function lt(i,c){if(i&1){let e=B();r(0,"button",7),a(1,"translate"),a(2,"translate"),h("click",function(){v(e);let t=m();return y(t.showSearch())}),u(3,"i",8),s(),r(4,"button",9),a(5,"translate"),a(6,"translate"),h("click",function(){v(e);let t=m();return y(t.showStats())}),u(7,"i",8),s()}if(i&2){let e=m();T("openDelay",150)("ngbTooltip",l(1,12,"form.search")),E("aria-label",l(2,14,"form.search"))("aria-expanded",e.showSearchBar()),n(3),J(`fas fa-search${e.showSearchBar()?" primary-text":""}`),n(),T("openDelay",150)("ngbTooltip",l(5,16,"plugins.stats")),E("aria-label",l(6,18,"plugins.stats"))("aria-expanded",e.tab()==="stats"),n(3),J(`fas fa-sliders${e.tab()==="stats"?" primary-text":""}`)}}function rt(i,c){if(i&1){let e=B();r(0,"button",16),a(1,"translate"),h("click",function(){v(e);let t=m(3);return y(t.onClearSearch())}),u(2,"i",17),s()}i&2&&E("aria-label",l(1,1,"form.button_clear"))}function st(i,c){if(i&1){let e=B();r(0,"div",10)(1,"div",12)(2,"form",13),h("ngSubmit",function(){v(e);let t=m(2);return y(t.onSubmit(t.form))}),u(3,"input",14,0),a(5,"translate"),a(6,"translate"),g(7,rt,3,3,"button",15),s()()()}if(i&2){let e,o=m(2);n(2),T("formGroup",o.form),n(),T("placeholder",l(5,4,"plugins.placeholder_search_plugin")),E("aria-label",l(6,6,"plugins.placeholder_search_plugin")),n(4),_((e=o.form.get("query"))!=null&&e.value?7:-1)}}function dt(i,c){if(i&1&&(r(0,"div",18),u(1,"app-plugin-card",20),s()),i&2){let e=c.$implicit,o=m(3);n(),T("plugin",e)("childBridges",o.getPluginChildBridges(e))}}function pt(i,c){if(i&1&&(r(0,"div",19),u(1,"i",21),r(2,"p"),p(3),a(4,"translate"),s()()),i&2){let e=m(3);n(),L("fa-magnifying-glass",!e.showExitButton())("fa-exclamation-circle",e.showExitButton()),n(2),x(" ",l(4,5,e.showExitButton()?"plugins.placeholder_search_none":"plugins.placeholder_search_first")," ")}}function ct(i,c){if(i&1&&(r(0,"div",11),Z(1,dt,2,2,"div",18,Y),g(3,pt,5,7,"div",19),s()),i&2){let e=m(2);n(),ee(e.installedPlugins()),n(2),_(e.installedPlugins().length===0&&!e.loading()&&!e.mainError()?3:-1)}}function ut(i,c){if(i&1&&(g(0,st,8,8,"div",10),g(1,ct,4,1,"div",11)),i&2){let e=m();_(e.showSearchBar()?0:-1),n(),_(e.loading()?-1:1)}}function mt(i,c){i&1&&(r(0,"div",22)(1,"div",23)(2,"code"),p(3,"https://developers.homebridge.io/analytics "),r(4,"a",24),a(5,"translate"),u(6,"i",25),s()()(),r(7,"div",26),p(8),a(9,"translate"),s()(),u(10,"iframe",27)),i&2&&(n(4),E("aria-label",l(5,2,"plugins.stats_open_in_new_tab")),n(4),P(l(9,4,"plugins.stats_note")))}var Hn=(()=>{class i{destroyRef=b(fe);$api=b(oe);$auth=b(le);$modal=b(se);$plugin=b(ue);$pluginsCache=b(ce);$pairingsCache=b(qe);$router=b(Se);$settings=b(ae);$toastr=b(ne);$translate=b(Q);$ws=b(re);searchInput=ye("searchInput");mainError=I(!1);loading=I(!0);tab=I("main");installedPlugins=I([]);childBridges=I([]);showSearchBar=I(!1);showExitButton=I(!1);isSearchMode=I(!1);io;inFlightLoad;isAdmin=this.$auth.user.admin;form=new Te({query:new Ie("")});ngOnInit(){let e=this.$translate.instant("menu.label_plugins");this.$settings.setPageTitle(e),this.$plugin.onPluginListRefresh.pipe(te(this.destroyRef)).subscribe(()=>{this.loadInstalledPlugins(),this.getChildBridgeMetadata()}),this.io=this.$ws.connectToNamespace("child-bridges"),this.io.connected.pipe(te(this.destroyRef)).subscribe(()=>{this.initialize()}),this.io.socket.on("child-bridge-status-update",o=>{let t=this.childBridges().find(f=>f.username===o.username);t?(Object.assign(t,o),this.childBridges.set([...this.childBridges()])):this.childBridges.update(f=>[...f,o])}),this.$router.events.pipe(te(this.destroyRef)).subscribe(o=>{o instanceof we&&this.loadInstalledPlugins()})}search(){return $(this,null,function*(){this.loading.set(!0),this.installedPlugins.set([]),this.showExitButton.set(!0);try{let e=yield this.$api.get(`/plugins/search/${encodeURIComponent(this.form.value.query)}`),o=new Set,t=new Map(e.map(k=>[k.name,k])),f=e.reduce((k,d)=>{if(d.name==="homebridge-config-ui-x"||o.has(d.name))return k;if(d.newHbScope){let O=d.newHbScope.to,C=t.has(O);(d.installedVersion||!C)&&(o.add(O),k.push(d))}else k.push(d);return k},[]);yield this.appendMetaInfo(f),this.installedPlugins.set(f)}catch(e){this.isSearchMode.set(!1),console.error(e);let o=e instanceof Error?e.message:this.$translate.instant("plugins.toast_failed_to_search_plugins");this.$toastr.error(o,this.$translate.instant("toast.title_error")),this.loadInstalledPlugins()}finally{this.loading.set(!1)}})}onClearSearch(){this.form.setValue({query:""}),this.showExitButton.set(!1),this.isSearchMode()&&(this.isSearchMode.set(!1),this.loadInstalledPlugins())}onSubmit({value:e}){e.query?.length?(this.isSearchMode.set(!0),this.search()):(this.isSearchMode()&&(this.isSearchMode.set(!1),this.loadInstalledPlugins()),this.showSearchBar.set(!1))}showSearch(){this.showSearchBar()?(this.showSearchBar.set(!1),this.isSearchMode()&&(this.isSearchMode.set(!1),this.form.setValue({query:""}),this.loadInstalledPlugins())):(window.document.querySelector("body")?.classList.remove("bg-black"),this.tab.set("main"),this.showSearchBar.set(!0),setTimeout(()=>this.searchInput()?.nativeElement.focus(),0))}showStats(){if(this.tab()==="stats"){if(this.$settings.actualLightingMode!=="light"){window.document.querySelector("body").classList.remove("bg-black"),this.tab.set("main");return}window.document.querySelector("body").classList.remove("light-mode");let e=document.getElementById("stats-header"),o=document.getElementById("stats-iframe");e&&o&&(e.classList.add("fade-out"),o.classList.add("fade-out")),setTimeout(()=>{window.document.querySelector("body").classList.remove("bg-black"),setTimeout(()=>{this.tab.set("main")},250)},250)}else window.document.querySelector("body").classList.add("bg-black"),this.tab.set("stats"),this.showSearchBar.set(!1),this.$settings.actualLightingMode==="light"&&(window.document.querySelector("body").classList.add("light-mode"),setTimeout(()=>{let e=document.getElementById("stats-header"),o=document.getElementById("stats-iframe");e&&o&&(e.classList.add("light-mode"),o.classList.add("light-mode"))},0))}openSupport(){this.$modal.open(ii,{size:"lg",backdrop:"static"})}canDeactivate(e){if(this.tab()!=="stats")return!0;if(this.$settings.actualLightingMode!=="light")return window.document.querySelector("body").classList.remove("bg-black"),Promise.resolve(!0);window.document.querySelector("body").classList.remove("light-mode");let o=e&&(e.includes("/platform-tools/terminal")||e.includes("/logs"));return new Promise(t=>{let f=document.getElementById("stats-header"),k=document.getElementById("stats-iframe");f&&k&&(f.classList.add("fade-out"),k.classList.add("fade-out")),o?setTimeout(()=>{t(!0)},250):(setTimeout(()=>{window.document.querySelector("body").classList.remove("bg-black")},250),setTimeout(()=>{t(!0)},500))})}ngOnDestroy(){window.document.querySelector("body").classList.remove("light-mode"),this.io?.end?.()}getPluginChildBridges(e){return this.childBridges().filter(o=>o.plugin===e.name)}initialize(){return $(this,null,function*(){this.getChildBridgeMetadata(),this.io.socket.emit("monitor-child-bridge-status"),yield this.loadInstalledPlugins(),this.installedPlugins().length||this.showSearch();let{action:e,plugin:o}=this.$router.parseUrl(this.$router.url).queryParams;if(e){let t=this.installedPlugins().find(f=>f.name===o);e==="just-installed"&&t&&(t.isConfigured?this.$modal.open(X,{size:"lg",backdrop:"static"}):this.$plugin.settings(t)),this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}})}loadInstalledPlugins(){return this.inFlightLoad?this.inFlightLoad:(this.inFlightLoad=this.runLoadInstalledPlugins().finally(()=>{this.inFlightLoad=void 0}),this.inFlightLoad)}runLoadInstalledPlugins(){return $(this,null,function*(){this.form.setValue({query:""}),this.showExitButton.set(!1),this.loading.set(!0),this.installedPlugins.set([]),this.mainError.set(!1);try{let o=(yield this.$pluginsCache.get()).filter(f=>f.name!=="homebridge-config-ui-x");yield this.appendMetaInfo(o);let t=this.sortPlugins(o);return this.installedPlugins.set(t),t}catch(e){console.error(e);let o=e instanceof Error?e.message:this.$translate.instant("plugins.toast_failed_to_load_plugins");this.$toastr.error(o,this.$translate.instant("toast.title_error")),this.mainError.set(!0);return}finally{this.loading.set(!1)}})}sortPlugins(e){let o=this.$settings.env.recommendChildBridges,t=this.$settings.env.plugins?.hideChildBridgeSetupFor??[],f=k=>o&&(k.hasChildBridges||t.includes(k.name));return[...e].sort((k,d)=>{let O=(k.updateAvailable?1e3:0)+(k.newHbScope?100:0)+(k.disabled?-10:0)+(k.isConfigured?-20:0)+(k.hasChildBridgesUnpaired?5:0)+(f(k)?-1:0),C=(d.updateAvailable?1e3:0)+(d.newHbScope?100:0)+(d.disabled?-10:0)+(d.isConfigured?-20:0)+(d.hasChildBridgesUnpaired?5:0)+(f(d)?-1:0);return O!==C?C-O:k.name.localeCompare(d.name)})}appendMetaInfo(e){return $(this,null,function*(){if(!this.isAdmin)return;let o=e.some(C=>C.installedVersion&&C.config===void 0),t=this.$settings.isFeatureEnabled("externalAccessoriesAttribution"),[f,k]=yield Promise.all([o?this.$pluginsCache.get():Promise.resolve(null),t?this.$pairingsCache.get().catch(()=>[]):Promise.resolve([])]),d=f?new Map(f.map(C=>[C.name,C.config??[]])):null,O=new Set;for(let C of k??[])typeof C?._plugin=="string"&&(C._isExternal===!0||C._matterOnly===!0)&&O.add(C._plugin);for(let C of e)if(C.installedVersion)try{let W=C.config??d?.get(C.name)??[];C.isConfigured=W.length>0,C.isConfiguredDynamicPlatform=C.isConfigured&&Object.hasOwn(W[0],"platform"),C.recommendChildBridge=C.isConfigured&&this.$settings.env.recommendChildBridges&&!["homebridge","homebridge-config-ui-x"].includes(C.name)&&!this.$settings.env.plugins?.hideChildBridgeSetupFor?.includes(C.name),C.hasChildBridges=C.isConfigured&&W.some(H=>H._bridge&&H._bridge.username),C.hasExternalAccessories=t&&O.has(C.name);let ti=this.getPluginChildBridges(C);C.hasChildBridgesUnpaired=ti.some(H=>{let ni=H.paired===!1&&!this.isBridgeAlertHidden(H.username,"hap"),oi=H.matterConfig&&H.matterCommissioned===!1&&!this.isBridgeAlertHidden(H.username,"matter");return ni||oi}),this.$settings.env.plugins?.hideUpdatesFor?.includes(C.name)&&(C.updateAvailable=!1)}catch(W){console.error(`Failed to derive metadata for ${C.name}:`,W),C.isConfigured=!0,C.hasChildBridges=!0,C.hasExternalAccessories=!1}})}getChildBridgeMetadata(){this.io.request("get-homebridge-child-bridge-status").subscribe(e=>{this.childBridges.set(e)})}isBridgeAlertHidden(e,o){let t=this.$settings.env.bridges?.find(f=>f.username.toUpperCase()===e.toUpperCase());return t?o==="hap"?!!t.hideHapAlert:!!t.hideMatterAlert:!1}static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-plugins"]],viewQuery:function(o,t){o&1&&be(t.searchInput,ot,5),o&2&&xe()},decls:13,vars:9,consts:[["searchInput",""],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],["aria-hidden","true",1,"far","fa-circle-question"],["type","button","container","body","placement","bottom","triggers","hover","aria-controls","plugin-search-region",1,"btn","btn-elegant","my-0","me-2",3,"click","openDelay","ngbTooltip"],["aria-hidden","true"],["type","button","container","body","placement","bottom","triggers","hover","aria-controls","stats-header stats-iframe",1,"btn","btn-elegant","my-0","me-2","d-none","d-md-inline-block",3,"click","openDelay","ngbTooltip"],["id","plugin-search-region",1,"row"],[1,"d-flex","flex-wrap","justify-content-between"],[1,"col-md-12"],["novalidate","",3,"ngSubmit","formGroup"],["type","text","formControlName","query",1,"search-bar",3,"placeholder"],["type","button",1,"search-bar-clear"],["type","button",1,"search-bar-clear",3,"click"],["aria-hidden","true",1,"fas","fa-square-xmark"],[1,"hb-plugin-space-between"],["role","status","aria-live","polite",1,"alert","alert-info","mt-4","text-center","w-100"],[3,"plugin","childBridges"],["aria-hidden","true",1,"fas","primary-text","my-3","icon-xl"],["id","stats-header",1,"w-100","py-3","hb-stats-header","text-white","text-center"],[1,"mb-2"],["href","https://developers.homebridge.io/analytics","target","_blank"],["aria-hidden","true",1,"fas","fa-up-right-from-square"],[1,"small","grey-text"],["src",Ce`https://developers.homebridge.io/analytics/`,"id","stats-iframe","sandbox","allow-scripts allow-same-origin allow-popups","referrerpolicy","no-referrer",1,"hb-stats"]],template:function(o,t){o&1&&(g(0,at,1,0,"app-spinner"),r(1,"div",1)(2,"div",2)(3,"h3",3),p(4),a(5,"translate"),s()(),r(6,"div",4),g(7,lt,8,20),r(8,"button",5),a(9,"translate"),h("click",function(){return t.openSupport()}),u(10,"i",6),s()()(),g(11,ut,2,2)(12,mt,11,6)),o&2&&(_(t.loading()?0:-1),n(4),P(l(5,5,"menu.label_plugins")),n(3),_(t.isAdmin?7:-1),n(),E("aria-label",l(9,7,"support.title")),n(3),_(t.tab()==="main"?11:t.tab()==="stats"?12:-1))},dependencies:[Fe,$e,Me,Be,Ee,ke,Ae,Ve,De,ei,pe,D],styles:["form[_ngcontent-%COMP%]{position:relative}.search-bar[_ngcontent-%COMP%]{outline:none;box-sizing:inherit!important;background-color:inherit;height:50px!important;width:100%;border-width:.5px;padding:10px 45px 10px 10px;margin-bottom:15px}@media(hover:hover){.search-bar[_ngcontent-%COMP%]:hover{border:1px solid #000000}}.search-bar[_ngcontent-%COMP%]:focus{border:1px solid #000000;box-shadow:0 1px #000}.search-bar-clear[_ngcontent-%COMP%]{position:absolute;right:8px;top:25px;height:50px;background:transparent;border:none;font-size:20px;color:#d0d0d0;cursor:pointer;padding:0 8px;display:flex;align-items:center}.search-bar-clear[_ngcontent-%COMP%]:hover{color:#a0a0a0}.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%}}.hb-stats-header[_ngcontent-%COMP%]{background:#242424;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.hb-stats-header.light-mode[_ngcontent-%COMP%]{opacity:0;animation:_ngcontent-%COMP%_fadeIn .25s ease-in-out .25s forwards}.hb-stats-header.light-mode.fade-out[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeOut .25s ease-in-out forwards!important;opacity:1}.hb-stats-header[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{border:1px solid grey;border-radius:5px;padding:5px;font-size:.8rem;color:#d3d3d3}.hb-stats[_ngcontent-%COMP%]{height:calc(100% - 121px);width:100%;overflow:hidden;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.hb-stats.light-mode[_ngcontent-%COMP%]{opacity:0;animation:_ngcontent-%COMP%_fadeIn .25s ease-in-out .25s forwards}.hb-stats.light-mode.fade-out[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeOut .25s ease-in-out forwards!important;opacity:1}@media(max-width:767px){.hb-stats[_ngcontent-%COMP%]{height:calc(100% - 60px)}}@keyframes _ngcontent-%COMP%_fadeIn{to{opacity:1}}@keyframes _ngcontent-%COMP%_fadeOut{to{opacity:0}}"],changeDetection:0})}return i})();export{Hn as PluginsComponent};