UNPKG

homebridge-config-ui-x

Version:

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

2 lines (1 loc) • 33.8 kB
import{b as $e,c as Ie}from"./chunk-5ZEARPQI.js";import"./chunk-KSBQEY44.js";import"./chunk-KZE2OTCD.js";import{a as Le}from"./chunk-SGXHM7IT.js";import"./chunk-LKHNMMNU.js";import{a as re}from"./chunk-NI3PX2WC.js";import{a as Ge}from"./chunk-DVKLDZZ3.js";import"./chunk-SMGTZ45N.js";import{a as Ee}from"./chunk-GAHGBZ7U.js";import"./chunk-NAG4LCT2.js";import{a as Ne,b as Fe,c as Pe}from"./chunk-OO5NFP6O.js";import{a as Ve,c as je,d as He,e as qe}from"./chunk-I4YCVMXH.js";import{a as ke}from"./chunk-I45OAEDK.js";import"./chunk-T7RKA523.js";import{s as j,t as Re}from"./chunk-2QHNXSQY.js";import"./chunk-VYTJCKZA.js";import{a as W}from"./chunk-IL6HHVES.js";import{d as Ae}from"./chunk-LKBXKG4K.js";import{C as Oe,D as ae,b as Q,c as X,d as Y,e as Z,f as ee,g as te,j as V,m as ie,r as ne,s as oe}from"./chunk-BQZ376DP.js";import{b as Be}from"./chunk-RFCSHRPV.js";import"./chunk-3APJQTJL.js";import{$b as G,Ac as Se,Ea as o,Ib as I,Kb as T,Lb as _e,Mb as p,Nb as _,Ob as M,Qa as pe,Ra as A,Tb as Me,Ub as ye,Vb as we,Xa as P,Yc as Te,Zc as E,_ as me,_b as ge,aa as C,ab as y,ac as De,cb as h,da as fe,db as b,dc as s,ec as l,fa as D,fb as ve,fc as U,ga as S,gb as z,gc as K,hb as J,ib as f,jb as a,kb as r,la as he,lb as m,lc as L,mb as ue,nb as Ce,ob as xe,qa as F,rb as $,vb as O,xb as g,za as be,zb as u}from"./chunk-LTGI3NYM.js";import{a as k,b as N,h as ce}from"./chunk-B4AJQJMI.js";var Ue=(()=>{class t{$activeModal=C(j);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=A({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&&(a(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),p(4),s(5,"translate"),r(),a(6,"button",3),s(7,"translate"),g("click",function(){return n.dismissModal()}),r()(),a(8,"div",4)(9,"div",5),m(10,"i",6),r(),a(11,"h5",7),p(12),s(13,"translate"),r(),a(14,"ul",8)(15,"li"),p(16),s(17,"translate"),r(),a(18,"li"),p(19),s(20,"translate"),r()(),a(21,"h5",7),p(22),s(23,"translate"),r(),a(24,"ul",9)(25,"li"),p(26),s(27,"translate"),r(),a(28,"li"),p(29),s(30,"translate"),r(),a(31,"li"),p(32),s(33,"translate"),r()(),m(34,"app-support-banner"),r(),a(35,"div",10),m(36,"div",11),a(37,"div",12)(38,"button",13),g("click",function(){return n.dismissModal()}),p(39),s(40,"translate"),r()(),m(41,"div",14),r()()()),i&2&&(o(4),_(l(5,10,"support.title")),o(2),y("aria-label",l(7,12,"form.button_close")),o(6),_(l(13,14,"menu.label_accessories")),o(4),_(l(17,16,"accessories.support.acc_1")),o(3),_(l(20,18,"accessories.support.acc_2")),o(3),_(l(23,20,"accessories.title_rooms")),o(4),_(l(27,22,"accessories.support.rooms_1")),o(3),_(l(30,24,"accessories.support.rooms_2")),o(3),_(l(33,26,"accessories.support.rooms_3")),o(7),M(" ",l(40,28,"form.button_close")," "))},dependencies:[Ge,E],encapsulation:2,changeDetection:0})}return t})();var le=new me("ADD_ROOM_MODAL_DATA"),de=new me("EDIT_ROOM_MODAL_DATA");var We=(()=>{class t{$activeModal=C(j);data=C(le);existingRooms=this.data.existingRooms;roomForm=new te({roomName:new V("",[Y.required]),isDefault:new V(!1)});ngOnInit(){this.roomForm.controls.roomName.addValidators(this.duplicateRoomNameValidator.bind(this)),this.roomForm.controls.roomName.updateValueAndValidity(),this.existingRooms.length===0&&this.roomForm.patchValue({isDefault:!0})}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:!0}:null}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.roomForm.invalid||this.$activeModal.close({name:this.roomForm.value.roomName?.trim()||"",isDefault:this.roomForm.value.isDefault||!1})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=A({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&&(a(0,"div",0)(1,"form",1),g("ngSubmit",function(){return n.closeModal()}),a(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),r(),a(6,"button",4),g("click",function(){return n.dismissModal()}),r()(),a(7,"div",5)(8,"div",6),m(9,"i",7),r(),a(10,"ul",8)(11,"li",9)(12,"span",10),p(13),s(14,"translate"),m(15,"app-required-indicator"),r(),a(16,"div",11),m(17,"input",12),s(18,"translate"),r()(),a(19,"li",13)(20,"span",14),p(21),s(22,"translate"),m(23,"app-required-indicator"),r(),a(24,"div",15)(25,"input",16),s(26,"translate"),g("keyup.enter",function(){return n.closeModal()}),r(),m(27,"label",17),r()()()(),a(28,"div",18)(29,"div",19)(30,"button",20),g("click",function(){return n.dismissModal()}),p(31),s(32,"translate"),r()(),m(33,"div",21),a(34,"div",22)(35,"button",23),p(36),s(37,"translate"),r()()()()()),i&2&&(o(),f("formGroup",n.roomForm),o(3),_(l(5,12,"accessories.button_add_room")),o(9),M(" ",l(14,14,"accessories.room_name")),o(4),T("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),y("aria-label",l(18,16,"accessories.room_name")),o(4),M(" ",l(22,18,"accessories.control.default_room")),o(4),f("disabled",n.noExistingRooms),y("aria-label",l(26,20,"accessories.control.default_room")),o(6),M(" ",l(32,22,"form.button_close")," "),o(4),f("disabled",n.roomForm.invalid),o(),M(" ",l(37,24,"form.button_save")," "))},dependencies:[ae,ie,X,Q,Z,ee,oe,ne,re,E],encapsulation:2,changeDetection:0})}return t})();var ze=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=A({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&&(ue(0,"div",0),xe(1,"i",1),ue(2,"div",2),p(3),s(4,"translate"),Ce()()),i&2&&(o(3),_(l(4,1,"accessories.control.drag_here")))},dependencies:[E],styles:[".accessory-box[_ngcontent-%COMP%]{opacity:.2}"],changeDetection:0})}return t})();var Je=t=>({roomName:t});function Xe(t,c){if(t&1&&(a(0,"li"),p(1),s(2,"translate"),r()),t&2){let e=u(2);o(),_(U(2,1,"accessories.delete_room_move_accessories",G(4,Je,e.targetRoomName())))}}function Ye(t,c){if(t&1&&(a(0,"li"),p(1),s(2,"translate"),r()),t&2){let e=u(2);o(),_(U(2,1,"accessories.delete_room_new_default",G(4,Je,e.newDefaultRoomName())))}}function Ze(t,c){if(t&1&&(a(0,"div",18)(1,"div",22),p(2),s(3,"translate"),m(4,"br"),a(5,"ul",26),h(6,Xe,3,6,"li"),h(7,Ye,3,6,"li"),r()()()),t&2){let e=u();o(2),M(" ",l(3,3,"common.phrases.are_you_sure")," "),o(4),b(e.targetRoomName()?6:-1),o(),b(e.isDefault&&e.newDefaultRoomName()?7:-1)}}var Ke=(()=>{class t{$activeModal=C(j);data=C(de);roomName=this.data.roomName;isDefault=this.data.isDefault;existingRooms=this.data.existingRooms;currentRoomIndex=this.data.currentRoomIndex;deleteMode=F(!1);formWasInvalid=F(!1);initialFormValue={roomName:null,isDefault:null};roomForm=new te({roomName:new V("",[Y.required]),isDefault:new V(!1)});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,v)=>v!==this.currentRoomIndex&&d.name.trim().toLowerCase()===i.toLowerCase())?{duplicateRoom:!0}:null}isOnlyRoom=L(()=>this.existingRooms.length===1);targetRoomName=L(()=>this.isDefault?this.existingRooms.filter((i,n)=>n!==this.currentRoomIndex)[0]?.name||"":this.existingRooms.find(i=>i.isDefault)?.name||this.existingRooms[0]?.name||"");newDefaultRoomName=L(()=>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:!0});else{let e=this.roomForm.getRawValue();this.$activeModal.close({name:e.roomName?.trim()||"",isDefault:e.isDefault||!1})}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=A({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&&(a(0,"div",0)(1,"form",1),g("ngSubmit",function(){return n.closeModal()}),a(2,"div",2)(3,"h5",3),p(4),s(5,"translate"),r(),a(6,"button",4),s(7,"translate"),g("click",function(){return n.dismissModal()}),r()(),a(8,"div",5)(9,"div",6),m(10,"i",7),r(),a(11,"ul",8)(12,"li",9)(13,"label",10),p(14),s(15,"translate"),m(16,"app-required-indicator"),r(),a(17,"div",11),m(18,"input",12),r()(),a(19,"li",13)(20,"span",14),p(21),s(22,"translate"),m(23,"app-required-indicator"),r(),a(24,"div",15),m(25,"input",16),s(26,"translate"),m(27,"label",17),r()()(),h(28,Ze,8,5,"div",18),r(),a(29,"div",19)(30,"div",20)(31,"button",21),g("click",function(){return n.dismissModal()}),p(32),s(33,"translate"),r()(),m(34,"div",22),a(35,"div",23)(36,"button",24),s(37,"translate"),g("click",function(v){return n.toggleDeleteMode(v)}),m(38,"i"),r(),a(39,"button",25),p(40),s(41,"translate"),r()()()()()),i&2&&(o(),f("formGroup",n.roomForm),o(3),_(l(5,25,"accessories.button_edit_room")),o(2),y("aria-label",l(7,27,"form.button_close")),o(5),T("opacity-muted",n.deleteMode())("mb-0",!n.deleteMode())("mb-4",n.deleteMode()),o(3),M(" ",l(15,29,"accessories.room_name")),o(4),T("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),o(3),M(" ",l(22,31,"accessories.control.default_room")),o(4),f("disabled",n.isOnlyRoom()||n.isDefault),y("aria-label",l(26,33,"accessories.control.default_room")),o(3),b(n.deleteMode()?28:-1),o(4),M(" ",l(33,35,"form.button_close")," "),o(4),f("disabled",n.isOnlyRoom()),y("aria-label",l(37,37,"accessories.button_delete_room")),o(2),_e(n.deleteMode()?"fas fa-undo":"fas fa-trash"),o(),_e(`btn ${n.deleteMode()?"btn-danger":"btn-primary"}`),f("disabled",!n.deleteMode()&&(n.roomForm.invalid||n.isFormUnchanged())),o(),M(" ",l(41,39,n.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[ae,ie,X,Q,Z,ee,oe,ne,re,E],encapsulation:2,changeDetection:0})}return t})();var et=(t,c)=>({dropdown:t,showManageLayout:c}),tt=()=>({showManageLayout:!1,showTooltip:!1}),it=()=>({showManageLayout:!0,showTooltip:!0}),nt=t=>({link:t}),ot=(t,c)=>c.name,at=(t,c)=>c.uniqueId;function rt(t,c){t&1&&m(0,"i",8)}function st(t,c){t&1&&m(0,"i",8)}function lt(t,c){if(t&1){let e=O();a(0,"button",14),g("click",function(){let n=D(e).$implicit,d=u(2);return S(d.toggleBridge(n))}),a(1,"span",7),h(2,st,1,0,"i",8),r(),p(3),r()}if(t&2){let e=c.$implicit,i=u(2);T("active",i.isBridgeSelected(e)),o(2),b(i.isBridgeSelected(e)?2:-1),o(),M(" ",e," ")}}function dt(t,c){t&1&&m(0,"div",12)}function ct(t,c){t&1&&m(0,"i",8)}function mt(t,c){if(t&1){let e=O();h(0,dt,1,0,"div",12),a(1,"button",14),g("click",function(){D(e);let n=u(2);return S(n.toggleManageLayout())}),a(2,"span",7),h(3,ct,1,0,"i",8),r(),p(4),s(5,"translate"),r()}if(t&2){let e=u(2);b(e.availableBridges().length?0:-1),o(),T("active",e.manageLayoutMode),o(2),b(e.manageLayoutMode?3:-1),o(),M(" ",l(5,5,"accessories.manage_layout")," ")}}function pt(t,c){if(t&1){let e=O();a(0,"div",5)(1,"button",6),g("click",function(){D(e);let n=u();return S(n.clearBridgeFilter())}),a(2,"span",7),h(3,rt,1,0,"i",8),r(),p(4),s(5,"translate"),r(),a(6,"button",9),s(7,"translate"),g("click",function(){let n=D(e).dropdown;return S(n.close())}),a(8,"span",10),p(9),s(10,"translate"),r(),m(11,"i",11),r()(),m(12,"div",12),z(13,lt,4,4,"button",13,ve),h(15,mt,6,7)}if(t&2){let e=c.showManageLayout,i=u();o(),T("active",i.isShowingAllBridges),o(2),b(i.isShowingAllBridges?3:-1),o(),M(" ",l(5,7,"accessories.filter_all_bridges")," "),o(2),y("aria-label",l(7,9,"form.button_close")),o(3),_(l(10,11,"common.labels.beta")),o(4),J(i.availableBridges()),o(2),b(e?15:-1)}}function ut(t,c){t&1&&$(0)}function _t(t,c){if(t&1&&(a(0,"div",15,3)(2,"button",16),s(3,"translate"),s(4,"translate"),m(5,"i",17),r(),a(6,"div",18),s(7,"translate"),P(8,ut,1,0,"ng-container",19),r()()),t&2){let e=c.showManageLayout,i=c.showTooltip,n=I(1);u();let d=I(1);o(2),f("container",i?"body":"")("placement",i?"bottom":"")("openDelay",i?150:0)("triggers",i?"hover":"")("ngbTooltip",i?l(3,9,"accessories.filter_by_bridge"):null),y("aria-label",l(4,11,"accessories.filter_by_bridge")),o(4),y("aria-label",l(7,13,"accessories.filter_by_bridge")),o(2),f("ngTemplateOutlet",d)("ngTemplateOutletContext",De(15,et,n,e))}}function gt(t,c){if(t&1){let e=O();a(0,"button",20),s(1,"translate"),g("click",function(){D(e);let n=u();return S(n.openSupport())}),m(2,"i",21),r()}t&2&&y("aria-label",l(1,1,"support.title"))}function ft(t,c){t&1&&$(0)}function ht(t,c){if(t&1&&P(0,ft,1,0,"ng-container",19),t&2){u(2);let e=I(3);f("ngTemplateOutlet",e)("ngTemplateOutletContext",ge(2,tt))}}function bt(t,c){t&1&&$(0)}function vt(t,c){if(t&1){let e=O();a(0,"button",30),s(1,"translate"),s(2,"translate"),g("click",function(){D(e);let n=u(2);return S(n.addRoom())}),m(3,"i",31),r(),a(4,"button",30),s(5,"translate"),s(6,"translate"),s(7,"translate"),s(8,"translate"),g("click",function(){D(e);let n=u(2);return S(n.hideHidden.set(!n.hideHidden()))}),m(9,"i",32),r()}if(t&2){let e=u(2);f("hidden",e.isMobile())("openDelay",150)("ngbTooltip",l(1,12,"accessories.button_add_room")),y("aria-label",l(2,14,"accessories.button_add_room")),o(4),f("hidden",e.isMobile())("openDelay",150)("ngbTooltip",e.hideHidden()?l(5,16,"accessories.button_hidden_show"):l(6,18,"accessories.button_hidden_hide")),y("aria-label",e.hideHidden()?l(7,20,"accessories.button_hidden_show"):l(8,22,"accessories.button_hidden_hide")),o(5),T("fa-eye",!e.hideHidden())("fa-eye-slash",e.hideHidden())}}function Ct(t,c){t&1&&$(0)}function xt(t,c){if(t&1&&P(0,Ct,1,0,"ng-container",19),t&2){u(2);let e=I(3);f("ngTemplateOutlet",e)("ngTemplateOutletContext",ge(2,it))}}function Mt(t,c){t&1&&$(0)}function yt(t,c){if(t&1){let e=O();a(0,"div",4)(1,"div",37)(2,"h5",38),p(3),r(),a(4,"button",39),s(5,"translate"),s(6,"translate"),g("click",function(){D(e);let n=u().$index,d=u(3);return S(d.editRoom(n))}),m(7,"i",40),r()()()}if(t&2){let e=u().$implicit,i=u(3);o(2),T("cursor-move",!i.isMobile()),o(),M(" ",e.name," "),o(),T("edit-room-hidden",i.isMobile()),f("openDelay",150)("ngbTooltip",l(5,8,"accessories.button_edit_room")),y("aria-label",l(6,10,"accessories.button_edit_room"))}}function wt(t,c){if(t&1&&(a(0,"div",42),m(1,"app-accessory-tile",43),r()),t&2){let e=u().$implicit;o(),f("service",e)}}function Dt(t,c){if(t&1&&h(0,wt,2,1,"div",42),t&2){let e=c.$implicit,i=u(5);b(i.shouldDisplayService(e)?0:-1)}}function St(t,c){t&1&&m(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 Tt(t,c){if(t&1){let e=O();a(0,"div",41),g("dragulaModelChange",function(n){D(e);let d=u().$implicit,v=u(3);return S(v.onServicesReorder(d,n))}),z(1,Dt,1,1,null,null,at),h(3,St,10,0),r()}if(t&2){let e=u().$implicit,i=u(3);f("dragulaModel",e.services),o(),J(e.services),o(2),b(i.manageLayoutMode?-1:3)}}function Bt(t,c){if(t&1){let e=O();a(0,"div",45),g("dragulaModelChange",function(n){D(e);let d=u().$implicit,v=u(3);return S(v.onServicesReorder(d,n))}),m(1,"app-drag-here-placeholder",46),r()}if(t&2){let e=u().$implicit;f("dragulaModel",e.services)}}function At(t,c){if(t&1&&(a(0,"div"),h(1,yt,8,12,"div",4),a(2,"div",34),h(3,Tt,4,2,"div",35),h(4,Bt,2,1,"div",36),r()()),t&2){let e=c.$implicit,i=u(3);o(),b(!i.isMobile()||e.services.length?1:-1),o(2),b(e.services.length?3:-1),o(),b(!e.services.length&&!i.isMobile()?4:-1)}}function Ot(t,c){if(t&1){let e=O();a(0,"div",33),we("dragulaModelChange",function(n){D(e);let d=u(2);return ye(d.rooms,n)||(d.rooms=n),S(n)}),z(1,At,5,3,"div",null,ot),r()}if(t&2){let e=u(2);Me("dragulaModel",e.rooms),o(),J(e.rooms)}}function Et(t,c){t&1&&(a(0,"div",29)(1,"div",47)(2,"div",48),m(3,"i",49),r(),a(4,"h5",50),p(5),s(6,"translate"),r(),a(7,"p",51),p(8),s(9,"translate"),r(),a(10,"p",52),p(11),s(12,"translate"),r()()()),t&2&&(o(5),_(l(6,3,"accessories.no_plugins.title")),o(3),_(l(9,5,"accessories.no_plugins.message_1")),o(3),_(l(12,7,"accessories.no_plugins.message_2")))}function Rt(t,c){if(t&1&&(a(0,"div",22)(1,"div",23)(2,"h3",24),p(3),s(4,"translate"),r()(),a(5,"div",25),h(6,ht,1,3,"ng-container"),P(7,bt,1,0,"ng-container",26),r(),a(8,"div",27),h(9,vt,10,24),h(10,xt,1,3,"ng-container"),P(11,Mt,1,0,"ng-container",26),r()(),h(12,Ot,3,1,"div",28)(13,Et,13,9,"div",29)),t&2){let e=u(),i=I(5);o(3),_(l(4,7,"menu.label_accessories")),o(3),b(e.shouldShowFilters()?6:-1),o(),f("ngTemplateOutlet",i),o(2),b(e.hasPlugins()?9:-1),o(),b(e.shouldShowFilters()?10:-1),o(),f("ngTemplateOutlet",i),o(),b(e.hasPlugins()?12:13)}}function kt(t,c){t&1&&(a(0,"p",58),p(1),s(2,"translate"),r()),t&2&&(o(),_(l(2,1,"accessories.settings_link")))}function Nt(t,c){if(t&1&&(a(0,"div",4)(1,"div",53)(2,"h3",54),p(3),s(4,"translate"),r()(),a(5,"div",29)(6,"div",55)(7,"div",48),m(8,"i",56),r(),a(9,"h5",50),p(10),s(11,"translate"),r(),m(12,"p",57),s(13,"translate"),h(14,kt,3,3,"p",58),r()()()),t&2){let e=u();o(3),_(l(4,4,"menu.label_accessories")),o(7),_(l(11,6,"accessories.control_disabled")),o(2),f("innerHTML",U(13,8,"accessories.message_must_use_insecure_mode",G(11,nt,e.linkInsecure)),be),o(2),b(e.isAdmin?14:-1)}}var ki=(()=>{class t{$accessories=C($e);destroyRef=C(he);$auth=C(Ae);dragulaService=C(Ne);$md=C(Le);injector=C(fe);$modal=C(Re);$settings=C(Be);$translate=C(Te);$ws=C(Ee);ioStatus;ioChild;get bridgeUsernameToNameMap(){return this.$accessories.bridgeUsernameToNameMap}isAdmin=this.$auth.user.admin;enableAccessories=this.$settings.env.enableAccessories;isMobile=F(!1);hideHidden=F(!0);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=F(this.$settings.env.hasInstalledPlugins??!0);manageLayoutMode=!1;previousBridgeSelection=null;availableBridges=this.$accessories.availableBridges;selectedBridges=this.$accessories.selectedBridges;shouldShowFilters=L(()=>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()||!1),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(W()).subscribe(()=>{setTimeout(()=>{this.$accessories.saveLayout()})}),this.isMobile.set(!0)}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(W(this.destroyRef)).subscribe(()=>{this.updateAvailableBridges()})}addRoom(){return ce(this,null,function*(){let e=pe([{provide:le,useValue:{existingRooms:this.$accessories.rooms()}}],this.injector),i=this.$modal.open(We,{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(v=>N(k({},v),{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 ce(this,null,function*(){let i=this.$accessories.rooms()[e];if(!i)return;let n=pe([{provide:de,useValue:{roomName:i.name,isDefault:i.isDefault||!1,existingRooms:this.$accessories.rooms(),currentRoomIndex:e}}],this.injector),d=this.$modal.open(Ke,{size:"lg",backdrop:"static",injector:n});try{let v=yield d.result;if(v?.delete){let w=this.$accessories.rooms()[e];if(!w)return;let x;if(w.isDefault)x=e===0?1:0;else{let B=this.$accessories.rooms().findIndex(R=>R.isDefault);x=B!==-1?B:0}w.isDefault&&this.$accessories.rooms.update(B=>B.map((R,q)=>q===x?N(k({},R),{isDefault:!0}):N(k({},R),{isDefault:!1})));let H=w.services;H.length>0&&this.$accessories.rooms.update(B=>B.map((R,q)=>q===x?N(k({},R),{services:[...R.services,...H]}):R)),this.$accessories.rooms.update(B=>B.filter((R,q)=>q!==e)),this.$accessories.saveLayout();return}if(!v?.name||!v.name.length)return;v.isDefault&&this.$accessories.rooms.update(w=>w.map(x=>N(k({},x),{isDefault:!1}))),this.$accessories.rooms.update(w=>w.map((x,H)=>H===e?N(k({},x),{name:v.name,isDefault:v.isDefault??!1}):x)),this.$accessories.saveLayout()}catch(v){}})}toggleLayoutLock(){this.isMobile.set(!this.isMobile())}openSupport(){this.$modal.open(Ue,{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(W(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(W(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?N(k({},d),{services:i}):d))}shouldDisplayService(e){if(this.manageLayoutMode)return!0;if(this.hideHidden()&&e.hidden)return!1;if(e.instance?.username){let n=this.bridgeUsernameToNameMap.get(e.instance.username)||e.instance.name,d=this.selectedBridges();if(d===null)return!0;if(d.length===0||n&&!d.includes(n))return!1}return!0}toggleBridge(e){if(this.manageLayoutMode){this.selectedBridges.set([e]),this.manageLayoutMode=!1,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,v)=>v!==n)),this.isMobile()||this.toggleLayoutLock()}isBridgeSelected(e){return this.manageLayoutMode?!1:this.selectedBridges()?.includes(e)??!1}clearBridgeFilter(){if(this.manageLayoutMode){this.selectedBridges.set([...this.availableBridges()]),this.manageLayoutMode=!1,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=A({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&&(P(0,pt,16,13,"ng-template",null,0,K)(2,_t,9,18,"ng-template",null,1,K)(4,gt,3,3,"ng-template",null,2,K),h(6,Rt,14,9)(7,Nt,15,13,"div",4)),i&2&&(o(6),b(n.enableAccessories?6:7))},dependencies:[Se,ke,qe,He,je,Ve,Pe,Fe,Ie,ze,Oe,E],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}'],changeDetection:0})}return t})();export{ki as AccessoriesComponent};