homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
1 lines • 11.2 kB
JavaScript
import{a as E,o as w,s as x}from"./chunk-D39XL-zh.js";import{$ as Le,Ct as Qo,E as Dy,Fr as se,It as TT,Jr as ve$1,Kr as v3,Kt as Uy,Ln as db,M as Fe$1,Pr as sc,Q as Ko,Tn as ac,Un as g,Vt as U3,Yr as vy,Yt as Va,br as pb,d as Ay,dr as m_,dt as Nf,hn as _T,hr as nc,i as $y,jt as S_,kt as ST,or as jy,pt as Ot,rr as jd,sr as kt,ui as z0,ut as N_,vt as Py,wr as q,x as Cr}from"./chunk-D96TCRAL.js";import{l as le$1}from"./chunk-DZYp0NQB.js";import{n as zt}from"./chunk-CdJ3i4Aq.js";import{B as Hn,J as Xn,U as Kn,X as Yn,lt as fe$1,q as Vt,tt as ln}from"./main-E3N63CH7.js";import{C as p}from"./chunk-nWnpef0a.js";import{n as A}from"./chunk-BuXBmaui.js";import{t as Y}from"./chunk-DJ26AmHP2.js";function le(i,g){i&1&&(Va(0,`div`,12),Dy(1,`i`,13),jd(),Va(2,`p`,14),Ot(3),S_(4,`translate`),jd()),i&2&&(se(3),Py(N_(4,1,`reset.no_accessories`)))}function de(i,g){if(i&1&&(Va(0,`option`,24),Ot(1),jd()),i&2){let e=g.$implicit;vy(`value`,e._id),se(),jy(``,e.name,` (`,e._username,`)`)}}function me(i,g){if(i&1){let e=sc();Va(0,`li`,20),Ot(1),S_(2,`translate`),jd(),Va(3,`li`,18)(4,`label`,21),Ot(5),S_(6,`translate`),jd(),Va(7,`div`,22)(8,`select`,23),Uy(`ngModelChange`,function(t){Ko(e);let o=ve$1(2);return m_(o.selectedBridge,t)||(o.selectedBridge=t),Qo(t)}),ac(`change`,function(t){Ko(e);return Qo(ve$1(2).onBridgeChange(t))}),_T(9,de,2,3,`option`,24,TT),jd(),db(),jd()()}if(i&2){let e=ve$1(2);se(),Py(N_(2,3,`form.label.changes_kept`)),se(4),Py(N_(6,5,`reset.accessory_ind.bridge`)),se(3),$y(`ngModel`,e.selectedBridge),pb(),se(),ST(e.pairings())}}function pe(i,g){if(i&1&&(Va(0,`li`,18)(1,`span`,25),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,26),Ot(5),jd()()),i&2){let e=ve$1(2);se(2),Py(N_(3,2,`reset.accessory_ind.bridge`)),se(3),kt(` `,e.getCurrentlySelectedBridge(),` `)}}function ue(i,g){if(i&1){let e=sc();Va(0,`li`,27)(1,`span`,28),Dy(2,`i`,29),jd(),Va(3,`span`,30),Ot(4),Dy(5,`br`),Va(6,`small`)(7,`span`,31),Ot(8),jd()()(),Va(9,`button`,32),S_(10,`translate`),ac(`click`,function(){let t=Ko(e).$implicit;return Qo(ve$1(2).toggleList(t.UUID||t.uuid,t.$cacheFile,t.$protocol,t.$deviceId))}),Dy(11,`i`,33),jd()()}if(i&2){let e=g.$implicit,n=ve$1(2);Ay(`list-group-item-highlight`,n.shouldHighlight(e.UUID||e.uuid,e.$cacheFile)),se(2),Ay(`fa-matter`,e.$protocol===`matter`)(`fa-hap`,e.$protocol!==`matter`),se(2),kt(` `,e.displayName,` `),se(4),Py(e.UUID||e.uuid),se(),Ay(`btn-danger`,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol))(`btn-elegant`,n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)),vy(`disabled`,n.clicked()),Cr(`aria-label`,N_(10,22,`form.button_delete`)),se(2),Ay(`fa-trash`,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol))(`fa-undo`,n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&!n.clicked())(`fa-circle-notch`,n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&n.clicked())(`fa-spin`,n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&n.clicked())}}function _e(i,g){if(i&1&&(Va(0,`div`,12),Dy(1,`i`,15),jd(),Va(2,`ul`,16)(3,`li`),Ot(4),S_(5,`translate`),jd(),Va(6,`li`),Ot(7),S_(8,`translate`),jd(),Va(9,`li`),Ot(10),S_(11,`translate`),jd()(),Va(12,`ul`,17),Fe$1(13,me,11,7),Fe$1(14,pe,6,4,`li`,18),_T(15,ue,12,24,`li`,19,TT),jd()),i&2){let e=ve$1();se(4),Py(N_(5,5,`reset.accessory_ind.list_1`)),se(3),Py(N_(8,7,`reset.accessory_ind.list_2`)),se(3),Py(N_(11,9,`reset.accessory_ind.list_3`)),se(3),Le(e.pairings().length>1?13:-1),se(),Le(e.pairings().length===1?14:-1),se(),ST(e.selectedBridgeAccessories())}}function ge(i,g){if(i&1){let e=sc();Va(0,`button`,34),ac(`click`,function(){Ko(e);return Qo(ve$1().dismissModal())}),Ot(1),S_(2,`translate`),jd()}if(i&2)vy(`disabled`,ve$1().clicked()),se(),kt(` `,N_(2,2,`form.button_close`),` `)}function he(i,g){if(i&1){let e=sc();Va(0,`button`,35),ac(`click`,function(){Ko(e);return Qo(ve$1().dismissModal())}),Ot(1),S_(2,`translate`),jd()}i&2&&(se(),kt(` `,N_(2,1,`form.button_close`),` `))}function ve(i,g){if(i&1&&Ot(0),i&2)kt(` (`,ve$1(3).toDelete().length,`) `)}function fe(i,g){if(i&1&&(Ot(0),S_(1,`translate`),Fe$1(2,ve,1,1)),i&2){let e=ve$1(2);kt(` `,N_(1,2,`form.button_remove`),` `),se(2),Le(e.toDelete().length>0?2:-1)}}function xe(i,g){i&1&&Dy(0,`i`,37)}function Ce(i,g){if(i&1){let e=sc();Va(0,`button`,36),ac(`click`,function(){Ko(e);return Qo(ve$1().removeAccessories())}),Fe$1(1,fe,3,4)(2,xe,1,0,`i`,37),jd()}if(i&2){let e=ve$1();vy(`disabled`,!e.toDelete().length||e.clicked()),se(),Le(e.clicked()?2:1)}}var Fe=(()=>{class i{$activeModal=g(fe$1);$accessoryOverview=g(Y);$api=g(U3);$router=g(le$1);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);modalData=g(p);selectedBridge=this.modalData.selectedBridge;highlightUuid=this.modalData.highlightUuid;highlightCacheFile=this.modalData.highlightCacheFile;pairings=q([]);clicked=q(!1);currentSelectedBridge=q(``);selectedBridgeAccessories=q([]);accessoriesExist=q(!1);toDelete=q([]);isMatterSupported=this.$settings.isFeatureEnabled(`matterSupport`);ngOnInit(){this.currentSelectedBridge.set(this.selectedBridge),this.loadCachedAccessories()}onBridgeChange(e){let n=e.target.value;this.currentSelectedBridge.set(n),this.selectedBridgeAccessories.set(this.pairings().find(t=>t._id===this.currentSelectedBridge())?.accessories||[])}getCurrentlySelectedBridge(){let e=this.pairings().find(n=>n._id===this.currentSelectedBridge());return e?`${e.name} - ${e._username}`:``}toggleList(e,n,t,o){this.toDelete().some(l=>l.uuid===e&&l.cacheFile===n&&l.protocol===t)?this.toDelete.set(this.toDelete().filter(l=>l.uuid!==e||l.cacheFile!==n||l.protocol!==t)):this.toDelete.update(l=>[...l,{cacheFile:n,uuid:e,protocol:t,deviceId:o}])}isInList(e,n,t){return this.toDelete().some(o=>o.uuid===e&&o.cacheFile===n&&o.protocol===t)}shouldHighlight(e,n){return!!this.highlightUuid&&this.selectedBridgeAccessories().length>1&&e===this.highlightUuid&&n===this.highlightCacheFile}removeAccessories(){return E(this,null,function*(){this.clicked.set(!0);let e=this.toDelete().filter(o=>o.protocol===`hap`).map(o=>({uuid:o.uuid,cacheFile:o.cacheFile})),n=this.toDelete().filter(o=>o.protocol===`matter`).map(o=>({uuid:o.uuid,deviceId:o.deviceId})),t=[];if(e.length>0&&t.push(this.$api.delete(`/server/cached-accessories`,{body:e})),this.isMatterSupported&&n.length>0&&t.push(this.$api.delete(`/server/matter-accessories`,{body:n})),t.length===0){this.clicked.set(!1);return}try{yield Promise.all(t),this.$accessoryOverview.invalidate(),this.$toastr.success(this.$translate.instant(`reset.accessory_ind.done`),this.$translate.instant(`toast.title_success`)),this.$activeModal.close(),this.$router.navigate([`/restart`],{queryParams:{restarting:!0}})}catch(o){this.clicked.set(!1),console.error(o),this.$toastr.error(this.$translate.instant(`reset.accessory_ind.fail`),this.$translate.instant(`toast.title_error`))}})}dismissModal(){this.$activeModal.dismiss(`Dismiss`)}loadCachedAccessories(){return E(this,null,function*(){try{let{hapAccessories:e,matterAccessories:n,pairings:t}=yield this.$accessoryOverview.get(),o=this.isMatterSupported?n:[],l=new Map(t.map(c=>[c._id,x(w({},c),{accessories:[]})]));e.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=t.find(ce=>ce._main),A$1=c.$cacheFile?.split(`.`)?.[1]||d._id;(!this.selectedBridge||this.selectedBridge===A$1)&&(l.has(A$1)||l.set(A$1,{_id:A$1,_username:A$1.match(A).join(`:`),name:this.$translate.instant(`reset.accessory_ind.unknown`),accessories:[]}),c.$protocol=`hap`,l.get(A$1).accessories.push(c))}),this.isMatterSupported&&o.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=c.$deviceId;(!this.selectedBridge||this.selectedBridge===d)&&(l.has(d)||l.set(d,{_id:d,_username:d.match(A).join(`:`),name:this.$translate.instant(`reset.accessory_ind.unknown`),accessories:[]}),c.$protocol=`matter`,c.$cacheFile=d,l.get(d).accessories.push(c))});let re=[...l.values()].filter(c=>c.accessories.length>0).sort((c,d)=>c._main&&!d._main?-1:!c._main&&d._main?1:c.name.localeCompare(d.name));this.pairings.set(re);let D=this.selectedBridge||this.pairings()[0]?._id;D&&(this.selectedBridge=D,this.currentSelectedBridge.set(D),this.accessoriesExist.set(!0),this.selectedBridgeAccessories.set(this.pairings().find(c=>c._id===D)?.accessories||[]),this.highlightUuid&&this.selectedBridgeAccessories().length>1&&setTimeout(()=>document.querySelector(`.list-group-item-highlight`)?.scrollIntoView({block:`center`,behavior:`smooth`}),250))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant(`reset.error_message`),this.$translate.instant(`toast.title_error`)),this.$activeModal.close()}})}static ɵfac=function(n){return new(n||i)};static ɵcmp=nc({type:i,selectors:[[`app-remove-individual-accessories`]],decls:17,vars:11,consts:[[1,`modal-content`],[1,`modal-header`],[1,`modal-title`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn-close`,3,`click`,`disabled`],[1,`modal-body`],[1,`modal-footer`,`justify-content-between`],[1,`text-start`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-elegant`,3,`disabled`],[1,`text-center`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-elegant`],[1,`text-end`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-danger`,3,`disabled`],[1,`text-center`,`mb-3`],[1,`fas`,`fa-circle-check`,`primary-text`,`icon-xl`],[1,`mb-0`,`text-center`],[1,`fas`,`fa-network-wired`,`primary-text`,`icon-xl`],[1,`mb-3`],[1,`list-group`,`list-group-box`,`mb-0`],[1,`list-group-item`,`d-flex`,`flex-column`,`flex-md-row`,`align-items-center`],[1,`list-group-item`,`d-flex`,`justify-content-between`,`align-items-center`,3,`list-group-item-highlight`],[1,`list-group-item`,`text-center`,`grey-text`,`small`],[`for`,`bridgeSelect`,1,`mb-2`,`mb-md-0`,`w-100`,`w-md-50`],[1,`text-start`,`text-md-end`,`w-100`,`w-md-50`],[`id`,`bridgeSelect`,1,`custom-select`,3,`ngModelChange`,`change`,`ngModel`],[3,`value`],[1,`mb-2`,`mb-md-0`,`w-100`,`w-md-50`],[1,`text-start`,`text-md-end`,`w-100`,`w-md-50`,`grey-text`,`font-monospace`],[1,`list-group-item`,`d-flex`,`justify-content-between`,`align-items-center`],[1,`me-3`],[1,`fas`,`fa-lg`],[1,`flex-grow-1`],[1,`font-monospace`,`grey-text`],[`type`,`button`,1,`btn`,`btn-danger`,`m-0`,`ms-3`,3,`click`,`disabled`],[1,`fas`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-elegant`,3,`click`,`disabled`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-elegant`,3,`click`],[`type`,`button`,`data-bs-dismiss`,`modal`,1,`btn`,`btn-danger`,3,`click`,`disabled`],[1,`fas`,`fa-circle-notch`,`fa-spin`]],template:function(n,t){n&1&&(Va(0,`div`,0)(1,`div`,1)(2,`h5`,2),Ot(3),S_(4,`translate`),jd(),Va(5,`button`,3),S_(6,`translate`),ac(`click`,function(){return t.dismissModal()}),jd()(),Va(7,`div`,4),Fe$1(8,le,5,3)(9,_e,17,11),jd(),Va(10,`div`,5)(11,`div`,6),Fe$1(12,ge,3,4,`button`,7),jd(),Va(13,`div`,8),Fe$1(14,he,3,3,`button`,9),jd(),Va(15,`div`,10),Fe$1(16,Ce,3,2,`button`,11),jd()()()),n&2&&(se(3),Py(N_(4,7,`reset.accessory_ind.title`)),se(2),vy(`disabled`,t.clicked()),Cr(`aria-label`,N_(6,9,`form.button_close`)),se(3),Le(t.accessoriesExist()?9:8),se(4),Le(t.accessoriesExist()?12:-1),se(2),Le(t.accessoriesExist()?-1:14),se(2),Le(t.accessoriesExist()?16:-1))},dependencies:[Kn,Xn,Yn,Vt,Hn,ln,v3],encapsulation:2})}return i})();export{Fe as t};