UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

2 lines • 34.3 kB
import {l as le,p as pM}from'./chunk-5l8EBl04.js';import'./chunk-A2dLPk2u.js';import'./chunk-CG3i5q02.js';import {N}from'./chunk-DBaXd1B9.js';import'./chunk-b_mHvpXA.js';import {c}from'./chunk-CigU9JZR.js';import {y}from'./chunk-D9P3QF_y.js';import'./chunk-BWu8OGjA.js';import {d as dr}from'./chunk-KTYlT6lA.js';import {g,n as ne,a as ae,aS as oe,ag as we,ah as si,z as zt,a2 as bf,W,aH as X,A as An,E,ai as ty,aE as I,a5 as x,a4 as w,J as Ja,av as fe,$,S as Se,v as ve,k as K8,m as La,s as At$1,t as f_,R as Rd,q as rc,o as dy,y as ie,N as Ny,G as h_,a6 as vr,I as Rt$1,i as Jn,d as zn,Y as Ye,ba as Mt$1,e as Hn,L as Ln,C as Cn,_ as _n,Q as KC,D as ly,x as Cy,T as JC,az as ke,aC as Dr,aA as Je$1,u as Re,O as Oe,aw as Qt,cs as TS,bj as Y,cj as U,ck as re,cl as $$1,cn as Q,bh as gr,bi as pr,K as Kn,b$ as ay,ct as m_,U as ye,a8 as nc,b1 as dT,bv as lT,b4 as fT,at as MT,bx as c_,bk as g_,bw as a_,cu as py,a9 as Go,aa as Wo,a7 as s_,bt as Fy,by as t_,bu as ky,V as Ha}from'./main-ONDCASUV.js';import'./chunk-WUyBXYN7.js';var ze=(()=>{class t{$activeModal=g(fe);dismissModal(){this.$activeModal.dismiss("Dismiss");}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=Ja({type:t,selectors:[["app-accessory-support"]],decls:42,vars:30,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","mb-4"],[1,"far","fa-circle-question","primary-text","icon-xl"],[1,"ms-2"],[1,"mb-4"],[1,"mb-0"],[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(i,n){i&1&&(La(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),At$1(4),f_(5,"translate"),Rd(),La(6,"button",3),f_(7,"translate"),rc("click",function(){return n.dismissModal()}),Rd()(),La(8,"div",4)(9,"div",5),dy(10,"i",6),Rd(),La(11,"h5",7),At$1(12),f_(13,"translate"),Rd(),La(14,"ul",8)(15,"li"),At$1(16),f_(17,"translate"),Rd(),La(18,"li"),At$1(19),f_(20,"translate"),Rd()(),La(21,"h5",7),At$1(22),f_(23,"translate"),Rd(),La(24,"ul",9)(25,"li"),At$1(26),f_(27,"translate"),Rd(),La(28,"li"),At$1(29),f_(30,"translate"),Rd(),La(31,"li"),At$1(32),f_(33,"translate"),Rd()(),dy(34,"app-support-banner"),Rd(),La(35,"div",10),dy(36,"div",11),La(37,"div",12)(38,"button",13),rc("click",function(){return n.dismissModal()}),At$1(39),f_(40,"translate"),Rd()(),dy(41,"div",14),Rd()()()),i&2&&(ie(4),Ny(h_(5,10,"support.title")),ie(2),vr("aria-label",h_(7,12,"form.button_close")),ie(6),Ny(h_(13,14,"menu.label_accessories")),ie(4),Ny(h_(17,16,"accessories.support.acc_1")),ie(3),Ny(h_(20,18,"accessories.support.acc_2")),ie(3),Ny(h_(23,20,"accessories.title_rooms")),ie(4),Ny(h_(27,22,"accessories.support.rooms_1")),ie(3),Ny(h_(30,24,"accessories.support.rooms_2")),ie(3),Ny(h_(33,26,"accessories.support.rooms_3")),ie(7),Rt$1(" ",h_(40,28,"form.button_close")," "));},dependencies:[y,K8],encapsulation:2})}return t})();var ce=new I("ADD_ROOM_MODAL_DATA"),me=new I("EDIT_ROOM_MODAL_DATA");var Je=(()=>{class t{$activeModal=g(fe);data=g(ce);existingRooms=this.data.existingRooms;roomForm=new $({roomName:new Se("",[ve.required]),isDefault:new Se(false)});ngOnInit(){this.roomForm.controls.roomName.addValidators(this.duplicateRoomNameValidator.bind(this)),this.roomForm.controls.roomName.updateValueAndValidity(),this.existingRooms.length===0&&this.roomForm.patchValue({isDefault:true});}get noExistingRooms(){return this.existingRooms.length===0}duplicateRoomNameValidator(e){if(!e.value)return null;let i=e.value.trim();return i&&this.existingRooms.some(d=>d.name.trim().toLowerCase()===i.toLowerCase())?{duplicateRoom:true}:null}dismissModal(){this.$activeModal.dismiss("Dismiss");}closeModal(){this.roomForm.invalid||this.$activeModal.close({name:this.roomForm.value.roomName?.trim()||"",isDefault:this.roomForm.value.isDefault||false});}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=Ja({type:t,selectors:[["app-add-room"]],decls:38,vars:26,consts:[[1,"modal-content"],[3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal","aria-hidden","true","tabindex","-1",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-4"],[1,"fas","fa-folder-plus","primary-text","icon-xl"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["aria-hidden","true",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","form-name","autocomplete","off","type","text","formControlName","roomName",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start","flex-grow-1","me-3"],[1,"text-end","grey-text","d-flex","align-items-center"],["id","form-default","type","checkbox","formControlName","isDefault",1,"rendux-input","mb-0",3,"keyup.enter","disabled"],["for","form-default",1,"rendux-label","ms-3"],[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","submit","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"]],template:function(i,n){i&1&&(La(0,"div",0)(1,"form",1),rc("ngSubmit",function(){return n.closeModal()}),La(2,"div",2)(3,"h5",3),At$1(4),f_(5,"translate"),Rd(),La(6,"button",4),rc("click",function(){return n.dismissModal()}),Rd()(),La(7,"div",5)(8,"div",6),dy(9,"i",7),Rd(),La(10,"ul",8)(11,"li",9)(12,"span",10),At$1(13),f_(14,"translate"),dy(15,"app-required-indicator"),Rd(),La(16,"div",11),dy(17,"input",12),f_(18,"translate"),KC(),Rd()(),La(19,"li",13)(20,"span",14),At$1(21),f_(22,"translate"),dy(23,"app-required-indicator"),Rd(),La(24,"div",15)(25,"input",16),f_(26,"translate"),rc("keyup.enter",function(){return n.closeModal()}),Rd(),KC(),dy(27,"label",17),Rd()()()(),La(28,"div",18)(29,"div",19)(30,"button",20),rc("click",function(){return n.dismissModal()}),At$1(31),f_(32,"translate"),Rd()(),dy(33,"div",21),La(34,"div",22)(35,"button",23),At$1(36),f_(37,"translate"),Rd()()()()()),i&2&&(ie(),ly("formGroup",n.roomForm),ie(3),Ny(h_(5,12,"accessories.button_add_room")),ie(9),Rt$1(" ",h_(14,14,"accessories.room_name")),ie(4),Cy("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),vr("aria-label",h_(18,16,"accessories.room_name")),JC(),ie(4),Rt$1(" ",h_(22,18,"accessories.control.default_room")),ie(4),ly("disabled",n.noExistingRooms),vr("aria-label",h_(26,20,"accessories.control.default_room")),JC(),ie(6),Rt$1(" ",h_(32,22,"form.button_close")," "),ie(4),ly("disabled",n.roomForm.invalid),ie(),Rt$1(" ",h_(37,24,"form.button_save")," "));},dependencies:[Jn,zn,Ye,Mt$1,Hn,Ln,Cn,_n,c,K8],encapsulation:2})}return t})();var Ke=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=Ja({type:t,selectors:[["app-drag-here-placeholder"]],decls:5,vars:3,consts:[[1,"accessory-box"],[1,"fas","fa-arrow-alt-circle-down","accessory-icon"],[1,"accessory-label"]],template:function(i,n){i&1&&(ke(0,"div",0),Dr(1,"i",1),ke(2,"div",2),At$1(3),f_(4,"translate"),Je$1()()),i&2&&(ie(3),Ny(h_(4,1,"accessories.control.drag_here")));},dependencies:[K8],styles:[".accessory-box[_ngcontent-%COMP%]{opacity:.2}"]})}return t})();var Qe=t=>({roomName:t});function Ze(t,c){if(t&1&&(La(0,"li"),At$1(1),f_(2,"translate"),Rd()),t&2){let e=ye(2);ie(),Ny(g_(2,1,"accessories.delete_room_move_accessories",a_(4,Qe,e.targetRoomName())));}}function et(t,c){if(t&1&&(La(0,"li"),At$1(1),f_(2,"translate"),Rd()),t&2){let e=ye(2);ie(),Ny(g_(2,1,"accessories.delete_room_new_default",a_(4,Qe,e.newDefaultRoomName())));}}function tt(t,c){if(t&1&&(La(0,"div",18)(1,"div",22),At$1(2),f_(3,"translate"),dy(4,"br"),La(5,"ul",26),Re(6,Ze,3,6,"li"),Re(7,et,3,6,"li"),Rd()()()),t&2){let e=ye();ie(2),Rt$1(" ",h_(3,3,"common.phrases.are_you_sure")," "),ie(4),Oe(e.targetRoomName()?6:-1),ie(),Oe(e.isDefault&&e.newDefaultRoomName()?7:-1);}}var Xe=(()=>{class t{$activeModal=g(fe);data=g(me);roomName=this.data.roomName;isDefault=this.data.isDefault;existingRooms=this.data.existingRooms;currentRoomIndex=this.data.currentRoomIndex;deleteMode=W(false);formWasInvalid=W(false);initialFormValue={roomName:null,isDefault:null};roomForm=new $({roomName:new Se("",[ve.required]),isDefault:new Se(false)});ngOnInit(){this.roomForm.patchValue({roomName:this.roomName,isDefault:this.isDefault}),this.initialFormValue=this.roomForm.getRawValue(),this.roomForm.controls.roomName.addValidators(this.duplicateRoomNameValidator.bind(this)),this.roomForm.controls.roomName.updateValueAndValidity(),(this.isOnlyRoom()||this.isDefault)&&this.roomForm.controls.isDefault.disable();}duplicateRoomNameValidator(e){if(!e.value)return null;let i=e.value.trim();return i&&this.existingRooms.some((d,C)=>C!==this.currentRoomIndex&&d.name.trim().toLowerCase()===i.toLowerCase())?{duplicateRoom:true}:null}isOnlyRoom=X(()=>this.existingRooms.length===1);targetRoomName=X(()=>this.isDefault?this.existingRooms.filter((i,n)=>n!==this.currentRoomIndex)[0]?.name||"":this.existingRooms.find(i=>i.isDefault)?.name||this.existingRooms[0]?.name||"");newDefaultRoomName=X(()=>this.isDefault&&this.existingRooms.filter((i,n)=>n!==this.currentRoomIndex)[0]?.name||"");toggleDeleteMode(e){this.deleteMode.set(!this.deleteMode()),this.deleteMode()?(this.formWasInvalid.set(this.roomForm.invalid),this.roomForm.disable()):(this.roomForm.enable(),(this.isOnlyRoom()||this.isDefault)&&this.roomForm.controls.isDefault.disable()),e.target.blur();}isFormUnchanged(){return JSON.stringify(this.roomForm.getRawValue())===JSON.stringify(this.initialFormValue)}dismissModal(){this.$activeModal.dismiss("Dismiss");}closeModal(){if(!(!this.deleteMode()&&this.roomForm.invalid))if(this.deleteMode())this.$activeModal.close({delete:true});else {let e=this.roomForm.getRawValue();this.$activeModal.close({name:e.roomName?.trim()||"",isDefault:e.isDefault||false});}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=Ja({type:t,selectors:[["app-edit-room"]],decls:42,vars:41,consts:[[1,"modal-content"],[3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-4"],[1,"fas","fa-pen","primary-text","icon-xl"],[1,"list-group","list-group-box"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["autocomplete","off","type","text","id","form-name","formControlName","roomName",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start","flex-grow-1","me-3"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","isDefault","id","form-default",1,"rendux-input","mb-0",3,"disabled"],["for","form-default",1,"rendux-label","ms-3"],[1,"alert","alert-warning","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",1,"btn","btn-elegant","me-2",3,"click","disabled"],["type","submit","data-bs-dismiss","modal",3,"disabled"],[1,"d-inline-block","text-start","mb-0"]],template:function(i,n){i&1&&(La(0,"div",0)(1,"form",1),rc("ngSubmit",function(){return n.closeModal()}),La(2,"div",2)(3,"h5",3),At$1(4),f_(5,"translate"),Rd(),La(6,"button",4),f_(7,"translate"),rc("click",function(){return n.dismissModal()}),Rd()(),La(8,"div",5)(9,"div",6),dy(10,"i",7),Rd(),La(11,"ul",8)(12,"li",9)(13,"label",10),At$1(14),f_(15,"translate"),dy(16,"app-required-indicator"),Rd(),La(17,"div",11),dy(18,"input",12),KC(),Rd()(),La(19,"li",13)(20,"span",14),At$1(21),f_(22,"translate"),dy(23,"app-required-indicator"),Rd(),La(24,"div",15),dy(25,"input",16),f_(26,"translate"),KC(),dy(27,"label",17),Rd()()(),Re(28,tt,8,5,"div",18),Rd(),La(29,"div",19)(30,"div",20)(31,"button",21),rc("click",function(){return n.dismissModal()}),At$1(32),f_(33,"translate"),Rd()(),dy(34,"div",22),La(35,"div",23)(36,"button",24),f_(37,"translate"),rc("click",function(C){return n.toggleDeleteMode(C)}),dy(38,"i"),Rd(),La(39,"button",25),At$1(40),f_(41,"translate"),Rd()()()()()),i&2&&(ie(),ly("formGroup",n.roomForm),ie(3),Ny(h_(5,25,"accessories.button_edit_room")),ie(2),vr("aria-label",h_(7,27,"form.button_close")),ie(5),Cy("opacity-muted",n.deleteMode())("mb-0",!n.deleteMode())("mb-4",n.deleteMode()),ie(3),Rt$1(" ",h_(15,29,"accessories.room_name")),ie(4),Cy("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),JC(),ie(3),Rt$1(" ",h_(22,31,"accessories.control.default_room")),ie(4),ly("disabled",n.isOnlyRoom()||n.isDefault),vr("aria-label",h_(26,33,"accessories.control.default_room")),JC(),ie(3),Oe(n.deleteMode()?28:-1),ie(4),Rt$1(" ",h_(33,35,"form.button_close")," "),ie(4),ly("disabled",n.isOnlyRoom()),vr("aria-label",h_(37,37,"accessories.button_delete_room")),ie(2),Qt(n.deleteMode()?"fas fa-undo":"fas fa-trash"),ie(),Qt(`btn ${n.deleteMode()?"btn-danger":"btn-primary"}`),ly("disabled",!n.deleteMode()&&(n.roomForm.invalid||n.isFormUnchanged())),ie(),Rt$1(" ",h_(41,39,n.deleteMode()?"form.button_delete":"form.button_save")," "));},dependencies:[Jn,zn,Ye,Mt$1,Hn,Ln,Cn,_n,c,K8],encapsulation:2})}return t})();var it=(t,c)=>({dropdown:t,showManageLayout:c}),nt=()=>({showManageLayout:false,showTooltip:false}),ot=()=>({showManageLayout:true,showTooltip:true}),at=t=>({link:t}),rt=(t,c)=>c.name,st=(t,c)=>c.uniqueId;function lt(t,c){t&1&&dy(0,"i",8);}function dt(t,c){t&1&&dy(0,"i",8);}function ct(t,c){if(t&1){let e=nc();La(0,"button",14),rc("click",function(){let n=Go(e).$implicit,d=ye(2);return Wo(d.toggleBridge(n))}),La(1,"span",7),Re(2,dt,1,0,"i",8),Rd(),At$1(3),Rd();}if(t&2){let e=c.$implicit,i=ye(2);Cy("active",i.isBridgeSelected(e)),ie(2),Oe(i.isBridgeSelected(e)?2:-1),ie(),Rt$1(" ",e," ");}}function mt(t,c){t&1&&dy(0,"div",12);}function pt(t,c){t&1&&dy(0,"i",8);}function ut(t,c){if(t&1){let e=nc();Re(0,mt,1,0,"div",12),La(1,"button",14),rc("click",function(){Go(e);let n=ye(2);return Wo(n.toggleManageLayout())}),La(2,"span",7),Re(3,pt,1,0,"i",8),Rd(),At$1(4),f_(5,"translate"),Rd();}if(t&2){let e=ye(2);Oe(e.availableBridges().length?0:-1),ie(),Cy("active",e.manageLayoutMode),ie(2),Oe(e.manageLayoutMode?3:-1),ie(),Rt$1(" ",h_(5,5,"accessories.manage_layout")," ");}}function _t(t,c){if(t&1){let e=nc();La(0,"div",5)(1,"button",6),rc("click",function(){Go(e);let n=ye();return Wo(n.clearBridgeFilter())}),La(2,"span",7),Re(3,lt,1,0,"i",8),Rd(),At$1(4),f_(5,"translate"),Rd(),La(6,"button",9),f_(7,"translate"),rc("click",function(){let n=Go(e).dropdown;return Wo(n.close())}),La(8,"span",10),At$1(9),f_(10,"translate"),Rd(),dy(11,"i",11),Rd()(),dy(12,"div",12),dT(13,ct,4,4,"button",13,lT),Re(15,ut,6,7);}if(t&2){let e=c.showManageLayout,i=ye();ie(),Cy("active",i.isShowingAllBridges),ie(2),Oe(i.isShowingAllBridges?3:-1),ie(),Rt$1(" ",h_(5,7,"accessories.filter_all_bridges")," "),ie(2),vr("aria-label",h_(7,9,"form.button_close")),ie(3),Ny(h_(10,11,"common.labels.beta")),ie(4),fT(i.availableBridges()),ie(2),Oe(e?15:-1);}}function gt(t,c){t&1&&py(0);}function ft(t,c){if(t&1&&(La(0,"div",15,3)(2,"button",16),f_(3,"translate"),f_(4,"translate"),dy(5,"i",17),Rd(),La(6,"div",18),f_(7,"translate"),ay(8,gt,1,0,"ng-container",19),Rd()()),t&2){let e=c.showManageLayout,i=c.showTooltip,n=MT(1);ye();let d=MT(1);ie(2),ly("container",i?"body":"")("placement",i?"bottom":"")("openDelay",i?150:0)("triggers",i?"hover":"")("ngbTooltip",i?h_(3,9,"accessories.filter_by_bridge"):null),vr("aria-label",h_(4,11,"accessories.filter_by_bridge")),ie(4),vr("aria-label",h_(7,13,"accessories.filter_by_bridge")),ie(2),ly("ngTemplateOutlet",d)("ngTemplateOutletContext",c_(15,it,n,e));}}function ht(t,c){if(t&1){let e=nc();La(0,"button",20),f_(1,"translate"),rc("click",function(){Go(e);let n=ye();return Wo(n.openSupport())}),dy(2,"i",21),Rd();}t&2&&vr("aria-label",h_(1,1,"support.title"));}function bt(t,c){t&1&&py(0);}function Ct(t,c){if(t&1&&ay(0,bt,1,0,"ng-container",19),t&2){ye(2);let e=MT(3);ly("ngTemplateOutlet",e)("ngTemplateOutletContext",s_(2,nt));}}function vt(t,c){t&1&&py(0);}function xt(t,c){if(t&1){let e=nc();La(0,"button",30),f_(1,"translate"),f_(2,"translate"),rc("click",function(){Go(e);let n=ye(2);return Wo(n.addRoom())}),dy(3,"i",31),Rd(),La(4,"button",30),f_(5,"translate"),f_(6,"translate"),f_(7,"translate"),f_(8,"translate"),rc("click",function(){Go(e);let n=ye(2);return Wo(n.hideHidden.set(!n.hideHidden()))}),dy(9,"i",32),Rd();}if(t&2){let e=ye(2);ly("hidden",e.isMobile())("openDelay",150)("ngbTooltip",h_(1,12,"accessories.button_add_room")),vr("aria-label",h_(2,14,"accessories.button_add_room")),ie(4),ly("hidden",e.isMobile())("openDelay",150)("ngbTooltip",e.hideHidden()?h_(5,16,"accessories.button_hidden_show"):h_(6,18,"accessories.button_hidden_hide")),vr("aria-label",e.hideHidden()?h_(7,20,"accessories.button_hidden_show"):h_(8,22,"accessories.button_hidden_hide")),ie(5),Cy("fa-eye",!e.hideHidden())("fa-eye-slash",e.hideHidden());}}function Mt(t,c){t&1&&py(0);}function yt(t,c){if(t&1&&ay(0,Mt,1,0,"ng-container",19),t&2){ye(2);let e=MT(3);ly("ngTemplateOutlet",e)("ngTemplateOutletContext",s_(2,ot));}}function wt(t,c){t&1&&py(0);}function St(t,c){if(t&1){let e=nc();La(0,"div",4)(1,"div",37)(2,"h5",38),At$1(3),Rd(),La(4,"button",39),f_(5,"translate"),f_(6,"translate"),rc("click",function(){Go(e);let n=ye().$index,d=ye(3);return Wo(d.editRoom(n))}),dy(7,"i",40),Rd()()();}if(t&2){let e=ye().$implicit,i=ye(3);ie(2),Cy("cursor-move",!i.isMobile()),ie(),Rt$1(" ",e.name," "),ie(),Cy("edit-room-hidden",i.isMobile()),ly("openDelay",150)("ngbTooltip",h_(5,8,"accessories.button_edit_room")),vr("aria-label",h_(6,10,"accessories.button_edit_room"));}}function Dt(t,c){if(t&1&&(La(0,"div",42),dy(1,"app-accessory-tile",43),Rd()),t&2){let e=ye().$implicit;ie(),ly("service",e);}}function Tt(t,c){if(t&1&&Re(0,Dt,2,1,"div",42),t&2){let e=c.$implicit,i=ye(5);Oe(i.shouldDisplayService(e)?0:-1);}}function Bt(t,c){t&1&&dy(0,"div",44)(1,"div",44)(2,"div",44)(3,"div",44)(4,"div",44)(5,"div",44)(6,"div",44)(7,"div",44)(8,"div",44)(9,"div",44);}function At(t,c){if(t&1){let e=nc();La(0,"div",41),rc("dragulaModelChange",function(n){Go(e);let d=ye().$implicit,C=ye(3);return Wo(C.onServicesReorder(d,n))}),dT(1,Tt,1,1,null,null,st),Re(3,Bt,10,0),Rd();}if(t&2){let e=ye().$implicit,i=ye(3);ly("dragulaModel",e.services),ie(),fT(e.services),ie(2),Oe(i.manageLayoutMode?-1:3);}}function Ot(t,c){if(t&1){let e=nc();La(0,"div",45),rc("dragulaModelChange",function(n){Go(e);let d=ye().$implicit,C=ye(3);return Wo(C.onServicesReorder(d,n))}),dy(1,"app-drag-here-placeholder",46),Rd();}if(t&2){let e=ye().$implicit;ly("dragulaModel",e.services);}}function Et(t,c){if(t&1&&(La(0,"div"),Re(1,St,8,12,"div",4),La(2,"div",34),Re(3,At,4,2,"div",35),Re(4,Ot,2,1,"div",36),Rd()()),t&2){let e=c.$implicit,i=ye(3);ie(),Oe(!i.isMobile()||e.services.length?1:-1),ie(2),Oe(e.services.length?3:-1),ie(),Oe(!e.services.length&&!i.isMobile()?4:-1);}}function Rt(t,c){if(t&1){let e=nc();La(0,"div",33),Fy("dragulaModelChange",function(n){Go(e);let d=ye(2);return t_(d.rooms,n)||(d.rooms=n),Wo(n)}),dT(1,Et,5,3,"div",null,rt),Rd();}if(t&2){let e=ye(2);ky("dragulaModel",e.rooms),ie(),fT(e.rooms);}}function kt(t,c){t&1&&(La(0,"div",29)(1,"div",47)(2,"div",48),dy(3,"i",49),Rd(),La(4,"h5",50),At$1(5),f_(6,"translate"),Rd(),La(7,"p",51),At$1(8),f_(9,"translate"),Rd(),La(10,"p",52),At$1(11),f_(12,"translate"),Rd()()()),t&2&&(ie(5),Ny(h_(6,3,"accessories.no_plugins.title")),ie(3),Ny(h_(9,5,"accessories.no_plugins.message_1")),ie(3),Ny(h_(12,7,"accessories.no_plugins.message_2")));}function Nt(t,c){if(t&1&&(La(0,"div",22)(1,"div",23)(2,"h3",24),At$1(3),f_(4,"translate"),Rd()(),La(5,"div",25),Re(6,Ct,1,3,"ng-container"),ay(7,vt,1,0,"ng-container",26),Rd(),La(8,"div",27),Re(9,xt,10,24),Re(10,yt,1,3,"ng-container"),ay(11,wt,1,0,"ng-container",26),Rd()(),Re(12,Rt,3,1,"div",28)(13,kt,13,9,"div",29)),t&2){let e=ye(),i=MT(5);ie(3),Ny(h_(4,7,"menu.label_accessories")),ie(3),Oe(e.shouldShowFilters()?6:-1),ie(),ly("ngTemplateOutlet",i),ie(2),Oe(e.hasPlugins()?9:-1),ie(),Oe(e.shouldShowFilters()?10:-1),ie(),ly("ngTemplateOutlet",i),ie(),Oe(e.hasPlugins()?12:13);}}function Ft(t,c){t&1&&(La(0,"p",58),At$1(1),f_(2,"translate"),Rd()),t&2&&(ie(),Ny(h_(2,1,"accessories.settings_link")));}function Pt(t,c){if(t&1&&(La(0,"div",4)(1,"div",53)(2,"h3",54),At$1(3),f_(4,"translate"),Rd()(),La(5,"div",29)(6,"div",55)(7,"div",48),dy(8,"i",56),Rd(),La(9,"h5",50),At$1(10),f_(11,"translate"),Rd(),dy(12,"p",57),f_(13,"translate"),Re(14,Ft,3,3,"p",58),Rd()()()),t&2){let e=ye();ie(3),Ny(h_(4,4,"menu.label_accessories")),ie(7),Ny(h_(11,6,"accessories.control_disabled")),ie(2),ly("innerHTML",g_(13,8,"accessories.message_must_use_insecure_mode",a_(11,at,e.linkInsecure)),Ha),ie(2),Oe(e.isAdmin?14:-1);}}var Fi=(()=>{class t{$accessories=g(le);destroyRef=g(ne);$auth=g(ae);dragulaService=g(oe);$md=g(N);injector=g(we);$modal=g(si);$settings=g(zt);$translate=g(bf);$ws=g(dr);ioStatus;ioChild;get bridgeUsernameToNameMap(){return this.$accessories.bridgeUsernameToNameMap}isAdmin=this.$auth.user.admin;enableAccessories=this.$settings.env.enableAccessories;isMobile=W(false);hideHidden=W(true);linkInsecure='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control" target="_blank"><i class="fas fa-up-right-from-square primary-text"></i></a>';hasPlugins=W(this.$settings.env.hasInstalledPlugins??true);manageLayoutMode=false;previousBridgeSelection=null;availableBridges=this.$accessories.availableBridges;selectedBridges=this.$accessories.selectedBridges;shouldShowFilters=X(()=>this.hasPlugins()&&this.availableBridges().length>0);get rooms(){return this.$accessories.rooms()}set rooms(e){this.$accessories.rooms.set(e);}constructor(){let e=this.dragulaService;this.isMobile.set(this.$md.detect.mobile()||false),e.createGroup("rooms-bag",{moves:(i,n,d)=>this.manageLayoutMode&&!!d?.classList.contains("drag-handle")}),e.createGroup("services-bag",{moves:i=>this.manageLayoutMode&&!i?.classList.contains("no-drag")}),e.drop().pipe(An()).subscribe(()=>{setTimeout(()=>{this.$accessories.saveLayout();});}),this.isMobile.set(true);}ngOnInit(){let e=this.$translate.instant("menu.label_accessories");this.$settings.setPageTitle(e);let i=this.selectedBridges();(i===null||i.length===0)&&this.availableBridges().length>0&&this.selectedBridges.set([...this.availableBridges()]),this.$accessories.start(),this.setupBridgeNameMapping(),this.$accessories.accessoryData.pipe(An(this.destroyRef)).subscribe(()=>{this.updateAvailableBridges();});}addRoom(){return E(this,null,function*(){let e=ty([{provide:ce,useValue:{existingRooms:this.$accessories.rooms()}}],this.injector),i=this.$modal.open(Je,{size:"lg",backdrop:"static",injector:e});try{let n=yield i.result;if(!n?.name||!n.name.length)return;n.isDefault&&this.$accessories.rooms.update(d=>d.map(C=>x(w({},C),{isDefault:!1}))),this.$accessories.rooms.update(d=>[...d,{name:n.name,isDefault:n.isDefault,services:[]}]),this.$accessories.saveLayout(),this.isMobile()&&this.toggleLayoutLock();}catch(n){}})}editRoom(e){return E(this,null,function*(){let i=this.$accessories.rooms()[e];if(!i)return;let n=ty([{provide:me,useValue:{roomName:i.name,isDefault:i.isDefault||false,existingRooms:this.$accessories.rooms(),currentRoomIndex:e}}],this.injector),d=this.$modal.open(Xe,{size:"lg",backdrop:"static",injector:n});try{let C=yield d.result;if(C?.delete){let w$1=this.$accessories.rooms()[e];if(!w$1)return;let x$1;if(w$1.isDefault)x$1=e===0?1:0;else {let B=this.$accessories.rooms().findIndex(R=>R.isDefault);x$1=B!==-1?B:0;}w$1.isDefault&&this.$accessories.rooms.update(B=>B.map((R,U)=>U===x$1?x(w({},R),{isDefault:!0}):x(w({},R),{isDefault:!1})));let G=w$1.services;G.length>0&&this.$accessories.rooms.update(B=>B.map((R,U)=>U===x$1?x(w({},R),{services:[...R.services,...G]}):R)),this.$accessories.rooms.update(B=>B.filter((R,U)=>U!==e)),this.$accessories.saveLayout();return}if(!C?.name||!C.name.length)return;C.isDefault&&this.$accessories.rooms.update(w$1=>w$1.map(x$1=>x(w({},x$1),{isDefault:!1}))),this.$accessories.rooms.update(w$1=>w$1.map((x$1,G)=>G===e?x(w({},x$1),{name:C.name,isDefault:C.isDefault??!1}):x$1)),this.$accessories.saveLayout();}catch(C){}})}toggleLayoutLock(){this.isMobile.set(!this.isMobile());}openSupport(){this.$modal.open(ze,{size:"lg",backdrop:"static"});}ngOnDestroy(){this.$accessories.stop(),this.dragulaService.destroy?.("rooms-bag"),this.dragulaService.destroy?.("services-bag"),this.ioStatus?.end?.(),this.ioChild?.end?.();}setupBridgeNameMapping(){this.ioStatus=this.$ws.connectToNamespace("status"),this.ioStatus.connected.pipe(An(this.destroyRef)).subscribe(()=>{this.ioStatus.socket.emit("monitor-server-status");}),this.ioStatus.socket.on("homebridge-status",e=>{e.username&&this.bridgeUsernameToNameMap.set(e.username,"Homebridge");}),this.ioChild=this.$ws.connectToNamespace("child-bridges"),this.ioChild.connected.pipe(An(this.destroyRef)).subscribe(()=>{this.ioChild.socket.emit("monitor-child-bridge-status"),this.fetchChildBridges();}),this.ioChild.socket.on("child-bridge-status-update",e=>{this.bridgeUsernameToNameMap.set(e.username,e.name);});}fetchChildBridges(){this.ioChild.request("get-homebridge-child-bridge-status").subscribe(e=>{e.forEach(i=>{this.bridgeUsernameToNameMap.set(i.username,i.name);});});}updateAvailableBridges(){let e=new Set;this.$accessories.rooms().forEach(w=>{w.services.forEach(x=>{if(x.instance?.username){let B=this.bridgeUsernameToNameMap.get(x.instance.username)||x.instance.name;B&&e.add(B);}});});let i=[...e].toSorted((w,x)=>w==="Homebridge"?-1:x==="Homebridge"?1:w.localeCompare(x)),n=this.availableBridges(),d=this.selectedBridges();JSON.stringify(i)!==JSON.stringify(n)&&i.length>=n.length&&(d===null||d.length===0?this.selectedBridges.set([...i]):d.length===n.length&&n.length>0?this.selectedBridges.set([...i]):this.selectedBridges.set(d.filter(x=>i.includes(x))),this.availableBridges.set(i));}onServicesReorder(e,i){this.$accessories.rooms.update(n=>n.map(d=>d===e?x(w({},d),{services:i}):d));}shouldDisplayService(e){if(this.manageLayoutMode)return true;if(this.hideHidden()&&e.hidden)return false;if(e.instance?.username){let n=this.bridgeUsernameToNameMap.get(e.instance.username)||e.instance.name,d=this.selectedBridges();if(d===null)return true;if(d.length===0||n&&!d.includes(n))return false}return true}toggleBridge(e){if(this.manageLayoutMode){this.selectedBridges.set([e]),this.manageLayoutMode=false,this.previousBridgeSelection=null,this.isMobile()||this.toggleLayoutLock();return}let i=this.selectedBridges()??[],n=i.indexOf(e);n===-1?this.selectedBridges.set([...i,e]):this.selectedBridges.set(i.filter((d,C)=>C!==n)),this.isMobile()||this.toggleLayoutLock();}isBridgeSelected(e){return this.manageLayoutMode?false:this.selectedBridges()?.includes(e)??false}clearBridgeFilter(){if(this.manageLayoutMode){this.selectedBridges.set([...this.availableBridges()]),this.manageLayoutMode=false,this.previousBridgeSelection=null,this.isMobile()||this.toggleLayoutLock();return}this.isShowingAllBridges?this.selectedBridges.set([]):this.selectedBridges.set([...this.availableBridges()]),this.isMobile()||this.toggleLayoutLock();}get isShowingAllBridges(){let e=this.selectedBridges(),i=this.availableBridges();return e!==null&&e.length===i.length&&i.length>0&&!this.manageLayoutMode}toggleManageLayout(){if(this.manageLayoutMode=!this.manageLayoutMode,this.manageLayoutMode){let e=this.selectedBridges();this.previousBridgeSelection=e?[...e]:null,this.isMobile()&&this.toggleLayoutLock();}else this.selectedBridges.set(this.previousBridgeSelection?[...this.previousBridgeSelection]:null),this.previousBridgeSelection=null,this.isMobile()||this.toggleLayoutLock();}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=Ja({type:t,selectors:[["app-accessories"]],decls:8,vars:1,consts:[["bridgeFilterMenu",""],["bridgeFilterDropdown",""],["supportButton",""],["dropdown","ngbDropdown"],[1,"row"],[1,"dropdown-item","d-flex","justify-content-between","align-items-center","px-0","bridge-filter-header"],["type","button","ngbDropdownItem","",1,"flex-grow-1","border-0",3,"click"],[1,"bridge-filter-check"],["aria-hidden","true",1,"fas","fa-check","primary-text"],["type","button",1,"btn","btn-sm","btn-link","text-secondary","p-0","pe-2","bridge-close-btn",3,"click"],[1,"badge","badge-primary","mx-1","text-lowercase"],["aria-hidden","true",1,"fas","fa-times"],[1,"dropdown-divider"],["type","button","ngbDropdownItem","",3,"active"],["type","button","ngbDropdownItem","",3,"click"],["ngbDropdown","","autoClose","outside","placement","bottom-end",1,"d-inline-block","me-2"],["type","button","ngbDropdownToggle","",1,"btn","btn-elegant","my-0",3,"container","placement","openDelay","triggers","ngbTooltip"],["aria-hidden","true",1,"fas","fa-house"],["ngbDropdownMenu",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],["aria-hidden","true",1,"far","fa-circle-question"],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end","d-inline-block","d-sm-none"],[4,"ngTemplateOutlet"],[1,"col-6","text-end","d-none","d-sm-inline-block"],["dragula","rooms-bag",3,"dragulaModel"],[1,"col-12","text-center"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","hidden","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-folder-plus"],["aria-hidden","true",1,"fas"],["dragula","rooms-bag",3,"dragulaModelChange","dragulaModel"],[1,"row","mb-4"],["dragula","services-bag",1,"col-md-12","d-flex","flex-wrap","noselect","services-bag",3,"dragulaModel"],["dragula","services-bag",1,"col-md-12","d-flex","flex-wrap","noselect",3,"dragulaModel"],[1,"col-md-12","d-flex","align-items-center"],[1,"primary-text","drag-handle","room-title","m-0","mb-1","mb-sm-0","flex-grow-1"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","ms-2",3,"click","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-cog"],["dragula","services-bag",1,"col-md-12","d-flex","flex-wrap","noselect","services-bag",3,"dragulaModelChange","dragulaModel"],[1,"accessory-item","accessory-tab"],[3,"service"],[1,"accessory-box","accessory-box-placeholder","no-drag"],["dragula","services-bag",1,"col-md-12","d-flex","flex-wrap","noselect",3,"dragulaModelChange","dragulaModel"],[1,"no-drag"],["role","alert",1,"alert","alert-warning","p-5"],[1,"text-center","mb-3"],["aria-hidden","true",1,"fas","fa-plug","primary-text","icon-xl"],[1,"mb-3","mt-0"],[1,"mb-0","small"],[1,"mb-0","small","mt-2"],[1,"col-12"],[1,"primary-text","m-0","mb-3"],["role","alert",1,"alert","alert-warning","p-4"],["aria-hidden","true",1,"fas","fa-lightbulb","primary-text","icon-xl"],[1,"mb-0","small",3,"innerHTML"],[1,"mt-2","mb-0","small"]],template:function(i,n){i&1&&(ay(0,_t,16,13,"ng-template",null,0,m_)(2,ft,9,18,"ng-template",null,1,m_)(4,ht,3,3,"ng-template",null,2,m_),Re(6,Nt,14,9)(7,Pt,15,13,"div",4)),i&2&&(ie(6),Oe(n.enableAccessories?6:7));},dependencies:[TS,Y,U,re,$$1,Q,gr,pr,pM,Ke,Kn,K8],styles:['.room-title[_ngcontent-%COMP%]{margin-left:10px}@media(max-width:575px){.room-title[_ngcontent-%COMP%]{margin-left:7px}}.services-bag[_ngcontent-%COMP%]{min-height:170px;justify-content:space-between}.services-bag[_ngcontent-%COMP%]:after{content:"";flex:auto}@media(max-width:575px){.services-bag[_ngcontent-%COMP%]{min-height:initial}}.cursor-move[_ngcontent-%COMP%]{cursor:move}.edit-room-hidden[_ngcontent-%COMP%]{visibility:hidden;pointer-events:none}a[_ngcontent-%COMP%]:hover{text-decoration:none!important}.bridge-filter-check[_ngcontent-%COMP%]{display:inline-block;width:1.25rem;margin-right:.5rem;text-align:center}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .dropdown-item.d-flex[_ngcontent-%COMP%]{padding:0}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .dropdown-item.d-flex[_ngcontent-%COMP%] button.dropdown-item[_ngcontent-%COMP%]{margin:0}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%]:hover{background-color:transparent!important}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] button.dropdown-item[_ngcontent-%COMP%]:hover{background-color:#0000000d!important}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] button.dropdown-item.active[_ngcontent-%COMP%]:hover{background-color:#0000000d!important}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] .bridge-close-btn[_ngcontent-%COMP%]{background-color:transparent!important;opacity:.6;transition:opacity .2s;padding-left:.25rem!important}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] .bridge-close-btn[_ngcontent-%COMP%]:hover{opacity:1;background-color:transparent!important}[_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] .bridge-close-btn[_ngcontent-%COMP%]:focus{box-shadow:none!important}[class*=config-ui-x-dark-mode] [_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] button.dropdown-item[_ngcontent-%COMP%]:hover{background-color:#444!important}[class*=config-ui-x-dark-mode] [_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] button.dropdown-item.active[_ngcontent-%COMP%]:hover{background-color:#444!important}[class*=config-ui-x-dark-mode] [_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] .bridge-close-btn[_ngcontent-%COMP%]{color:#9e9e9e!important}[class*=config-ui-x-dark-mode] [_nghost-%COMP%] .dropdown-menu[_ngcontent-%COMP%] .bridge-filter-header[_ngcontent-%COMP%] .bridge-close-btn[_ngcontent-%COMP%]:hover{color:#eee!important}']})}return t})(); export{Fi as AccessoriesComponent};