UNPKG

homebridge-config-ui-x

Version:

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

2 lines (1 loc) • 34.1 kB
import{a as de}from"./chunk-XDYDSLCQ.js";import{b as $e,c as Le}from"./chunk-M2PKINKL.js";import"./chunk-V7JOHLGY.js";import{a as Ge}from"./chunk-I5W4KUW4.js";import{a as Ne}from"./chunk-CWNUGQTB.js";import{a as Ve}from"./chunk-HKSUEG7C.js";import{a as ke}from"./chunk-GXCQWWJO.js";import"./chunk-NAG4LCT2.js";import"./chunk-CG4JSQF7.js";import{a as Pe,b as Fe,c as Ie}from"./chunk-KQ74KW75.js";import{a as je,c as He,d as qe,e as We}from"./chunk-L4FSQXFY.js";import"./chunk-BHEY3G3X.js";import{a as Re}from"./chunk-YMS6PENN.js";import{s as j,t as Ee}from"./chunk-YATM6BZO.js";import"./chunk-ODMFCOQJ.js";import{a as Se}from"./chunk-XPK2EQJA.js";import{c as Ae}from"./chunk-2GN26TCR.js";import{C as Oe,D as le,b as Z,c as ee,d as te,e as ie,f as ne,g as oe,j as V,m as ae,r as re,s as se}from"./chunk-ORSKS7BY.js";import{b as Be}from"./chunk-4NRNA47I.js";import{C as De,D as k,I as Te,e as we}from"./chunk-QCMOCU6Q.js";import{Ab as h,Ac as ye,Cb as ve,Db as z,Dc as s,Eb as J,Ec as l,Fb as b,Fc as G,Gb as a,Gc as Y,Hb as r,Ib as m,Jb as ge,Kb as xe,Lb as Me,Lc as L,Ob as I,Sb as O,Ta as Ce,Xb as g,Ya as o,Zb as u,_ as ue,aa as C,ea as be,ga as D,gc as $,ha as T,ic as S,jc as fe,kc as p,lb as _e,lc as _,mb as A,mc as x,rc as K,sa as R,sb as F,sc as Q,tc as X,xb as M,yc as he,zb as f,zc as W}from"./chunk-ZMC752RO.js";import{a as N,b as P,h as U}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,"fa","fa-question-circle-o","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),M("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),x(" ",l(40,28,"form.button_close")," "))},dependencies:[Ge,k],encapsulation:2,changeDetection:0})}return t})();var me=new ue("ADD_ROOM_MODAL_DATA"),pe=new ue("EDIT_ROOM_MODAL_DATA");var ze=(()=>{class t{$activeModal=C(j);data=C(me);existingRooms=this.data.existingRooms;roomForm=new oe({roomName:new V("",[te.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"],[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"],["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",14)(30,"button",19),g("click",function(){return n.dismissModal()}),p(31),s(32,"translate"),r()(),m(33,"div",20),a(34,"div",21)(35,"button",22),p(36),s(37,"translate"),r()()()()()),i&2&&(o(),b("formGroup",n.roomForm),o(3),_(l(5,12,"accessories.button_add_room")),o(9),x(" ",l(14,14,"accessories.room_name")),o(4),S("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),M("aria-label",l(18,16,"accessories.room_name")),o(4),x(" ",l(22,18,"accessories.control.default_room")),o(4),b("disabled",n.noExistingRooms),M("aria-label",l(26,20,"accessories.control.default_room")),o(6),x(" ",l(32,22,"form.button_close")," "),o(4),b("disabled",n.roomForm.invalid),o(),x(" ",l(37,24,"form.button_save")," "))},dependencies:[le,ae,ee,Z,ie,ne,se,re,de,k],encapsulation:2,changeDetection:0})}return t})();var Je=(()=>{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&&(ge(0,"div",0),Me(1,"i",1),ge(2,"div",2),p(3),s(4,"translate"),xe()()),i&2&&(o(3),_(l(4,1,"accessories.control.drag_here")))},dependencies:[k],styles:[".accessory-box[_ngcontent-%COMP%]{opacity:.2}"],changeDetection:0})}return t})();var Ke=t=>({roomName:t});function Ye(t,c){if(t&1&&(a(0,"li"),p(1),s(2,"translate"),r()),t&2){let e=u(2);o(),_(G(2,1,"accessories.delete_room_move_accessories",W(4,Ke,e.targetRoomName())))}}function Ze(t,c){if(t&1&&(a(0,"li"),p(1),s(2,"translate"),r()),t&2){let e=u(2);o(),_(G(2,1,"accessories.delete_room_new_default",W(4,Ke,e.newDefaultRoomName())))}}function et(t,c){if(t&1&&(a(0,"div",18)(1,"div",21),p(2),s(3,"translate"),m(4,"br"),a(5,"ul",25),f(6,Ye,3,6,"li"),f(7,Ze,3,6,"li"),r()()()),t&2){let e=u();o(2),x(" ",l(3,3,"common.phrases.are_you_sure")," "),o(4),h(e.targetRoomName()?6:-1),o(),h(e.isDefault&&e.newDefaultRoomName()?7:-1)}}var Qe=(()=>{class t{$activeModal=C(j);data=C(pe);roomName=this.data.roomName;isDefault=this.data.isDefault;existingRooms=this.data.existingRooms;currentRoomIndex=this.data.currentRoomIndex;deleteMode=R(!1);formWasInvalid=R(!1);initialFormValue={roomName:null,isDefault:null};roomForm=new oe({roomName:new V("",[te.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,y)=>y!==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"],[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"],["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()()(),f(28,et,8,5,"div",18),r(),a(29,"div",19)(30,"div",14)(31,"button",20),g("click",function(){return n.dismissModal()}),p(32),s(33,"translate"),r()(),m(34,"div",21),a(35,"div",22)(36,"button",23),s(37,"translate"),g("click",function(y){return n.toggleDeleteMode(y)}),m(38,"i"),r(),a(39,"button",24),p(40),s(41,"translate"),r()()()()()),i&2&&(o(),b("formGroup",n.roomForm),o(3),_(l(5,25,"accessories.button_edit_room")),o(2),M("aria-label",l(7,27,"form.button_close")),o(5),S("opacity-muted",n.deleteMode())("mb-0",!n.deleteMode())("mb-4",n.deleteMode()),o(3),x(" ",l(15,29,"accessories.room_name")),o(4),S("is-invalid",n.roomForm.controls.roomName.touched&&n.roomForm.controls.roomName.invalid),o(3),x(" ",l(22,31,"accessories.control.default_room")),o(4),b("disabled",n.isOnlyRoom()||n.isDefault),M("aria-label",l(26,33,"accessories.control.default_room")),o(3),h(n.deleteMode()?28:-1),o(4),x(" ",l(33,35,"form.button_close")," "),o(4),b("disabled",n.isOnlyRoom()),M("aria-label",l(37,37,"accessories.button_delete_room")),o(2),fe(n.deleteMode()?"fas fa-undo":"fas fa-trash"),o(),fe(`btn ${n.deleteMode()?"btn-danger":"btn-primary"}`),b("disabled",!n.deleteMode()&&(n.roomForm.invalid||n.isFormUnchanged())),o(),x(" ",l(41,39,n.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[le,ae,ee,Z,ie,ne,se,re,de,k],encapsulation:2,changeDetection:0})}return t})();var tt=(t,c)=>({dropdown:t,showManageLayout:c}),it=()=>({showManageLayout:!1,showTooltip:!1}),nt=()=>({showManageLayout:!0,showTooltip:!0}),ot=t=>({link:t}),at=(t,c)=>c.name,rt=(t,c)=>c.uniqueId;function st(t,c){t&1&&m(0,"i",8)}function lt(t,c){t&1&&m(0,"i",8)}function dt(t,c){if(t&1){let e=O();a(0,"button",14),g("click",function(){let n=D(e).$implicit,d=u(2);return T(d.toggleBridge(n))}),a(1,"span",7),f(2,lt,1,0,"i",8),r(),p(3),r()}if(t&2){let e=c.$implicit,i=u(2);S("active",i.isBridgeSelected(e)),o(2),h(i.isBridgeSelected(e)?2:-1),o(),x(" ",e," ")}}function ct(t,c){t&1&&m(0,"div",12)}function mt(t,c){t&1&&m(0,"i",8)}function pt(t,c){if(t&1){let e=O();f(0,ct,1,0,"div",12),a(1,"button",14),g("click",function(){D(e);let n=u(2);return T(n.toggleManageLayout())}),a(2,"span",7),f(3,mt,1,0,"i",8),r(),p(4),s(5,"translate"),r()}if(t&2){let e=u(2);h(e.availableBridges().length?0:-1),o(),S("active",e.manageLayoutMode),o(2),h(e.manageLayoutMode?3:-1),o(),x(" ",l(5,5,"accessories.manage_layout")," ")}}function ut(t,c){if(t&1){let e=O();a(0,"div",5)(1,"button",6),g("click",function(){D(e);let n=u();return T(n.clearBridgeFilter())}),a(2,"span",7),f(3,st,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 T(n.close())}),a(8,"span",10),p(9),s(10,"translate"),r(),m(11,"i",11),r()(),m(12,"div",12),z(13,dt,4,4,"button",13,ve),f(15,pt,6,7)}if(t&2){let e=c.showManageLayout,i=u();o(),S("active",i.isShowingAllBridges),o(2),h(i.isShowingAllBridges?3:-1),o(),x(" ",l(5,7,"accessories.filter_all_bridges")," "),o(2),M("aria-label",l(7,9,"form.button_close")),o(3),_(l(10,11,"common.labels.beta")),o(4),J(i.availableBridges()),o(2),h(e?15:-1)}}function _t(t,c){t&1&&I(0)}function gt(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"),F(8,_t,1,0,"ng-container",19),r()()),t&2){let e=c.showManageLayout,i=c.showTooltip,n=$(1);u();let d=$(1);o(2),b("container",i?"body":"")("placement",i?"bottom":"")("openDelay",i?150:0)("triggers",i?"hover":"")("ngbTooltip",i?l(3,9,"accessories.filter_by_bridge"):null),M("aria-label",l(4,11,"accessories.filter_by_bridge")),o(4),M("aria-labelledby",l(7,13,"accessories.filter_by_bridge")),o(2),b("ngTemplateOutlet",d)("ngTemplateOutletContext",ye(15,tt,n,e))}}function ft(t,c){if(t&1){let e=O();a(0,"button",20),s(1,"translate"),g("click",function(){D(e);let n=u();return T(n.openSupport())}),m(2,"i",21),r()}t&2&&M("aria-label",l(1,1,"support.title"))}function ht(t,c){t&1&&I(0)}function bt(t,c){if(t&1&&F(0,ht,1,0,"ng-container",19),t&2){u(2);let e=$(3);b("ngTemplateOutlet",e)("ngTemplateOutletContext",he(2,it))}}function Ct(t,c){t&1&&I(0)}function vt(t,c){if(t&1){let e=O();a(0,"button",28),s(1,"translate"),s(2,"translate"),g("click",function(){D(e);let n=u(2);return T(n.addRoom())}),m(3,"i",29),r(),a(4,"button",28),s(5,"translate"),s(6,"translate"),s(7,"translate"),s(8,"translate"),g("click",function(){D(e);let n=u(2);return T(n.hideHidden.set(!n.hideHidden()))}),m(9,"i",30),r()}if(t&2){let e=u(2);b("hidden",e.isMobile())("openDelay",150)("ngbTooltip",l(1,12,"accessories.button_add_room")),M("aria-label",l(2,14,"accessories.button_add_room")),o(4),b("hidden",e.isMobile())("openDelay",150)("ngbTooltip",e.hideHidden()?l(5,16,"accessories.button_hidden_show"):l(6,18,"accessories.button_hidden_hide")),M("aria-label",e.hideHidden()?l(7,20,"accessories.button_hidden_show"):l(8,22,"accessories.button_hidden_hide")),o(5),S("fa-eye",!e.hideHidden())("fa-eye-slash",e.hideHidden())}}function xt(t,c){t&1&&I(0)}function Mt(t,c){if(t&1&&F(0,xt,1,0,"ng-container",19),t&2){u(2);let e=$(3);b("ngTemplateOutlet",e)("ngTemplateOutletContext",he(2,nt))}}function yt(t,c){t&1&&I(0)}function wt(t,c){t&1&&m(0,"app-spinner")}function St(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(4);return T(d.editRoom(n))}),m(7,"i",40),r()()()}if(t&2){let e=u().$implicit,i=u(4);o(2),S("cursor-move",!i.isMobile()),o(),x(" ",e.name," "),o(),S("edit-room-hidden",i.isMobile()),b("openDelay",150)("ngbTooltip",l(5,8,"accessories.button_edit_room")),M("aria-label",l(6,10,"accessories.button_edit_room"))}}function Dt(t,c){if(t&1&&(a(0,"div",43),m(1,"app-accessory-tile",44),r()),t&2){let e=u().$implicit;o(),b("service",e)}}function Tt(t,c){if(t&1&&f(0,Dt,2,1,"div",43),t&2){let e=c.$implicit,i=u(6);h(i.shouldDisplayService(e)?0:-1)}}function Bt(t,c){if(t&1){let e=O();a(0,"div",41),X("dragulaModelChange",function(n){D(e);let d=u().$implicit;return Q(d.services,n)||(d.services=n),T(n)}),z(1,Tt,1,1,null,null,rt),m(3,"div",42)(4,"div",42)(5,"div",42)(6,"div",42)(7,"div",42)(8,"div",42)(9,"div",42)(10,"div",42)(11,"div",42)(12,"div",42),r()}if(t&2){let e=u().$implicit,i=u(4);S("justify-content-between",i.isMobile()),K("dragulaModel",e.services),o(),J(e.services)}}function At(t,c){if(t&1){let e=O();a(0,"div",45),X("dragulaModelChange",function(n){D(e);let d=u().$implicit;return Q(d.services,n)||(d.services=n),T(n)}),m(1,"app-drag-here-placeholder",46),r()}if(t&2){let e=u().$implicit;K("dragulaModel",e.services)}}function Ot(t,c){if(t&1&&(a(0,"div"),f(1,St,8,12,"div",4),a(2,"div",34),f(3,Bt,13,3,"div",35),f(4,At,2,1,"div",36),r()()),t&2){let e=c.$implicit,i=u(4);o(),h(!i.isMobile()||e.services.length?1:-1),o(2),h(e.services.length?3:-1),o(),h(!e.services.length&&!i.isMobile()?4:-1)}}function kt(t,c){if(t&1){let e=O();a(0,"div",33),X("dragulaModelChange",function(n){D(e);let d=u(3);return Q(d.rooms,n)||(d.rooms=n),T(n)}),z(1,Ot,5,3,"div",null,at),r()}if(t&2){let e=u(3);K("dragulaModel",e.rooms),o(),J(e.rooms)}}function Et(t,c){t&1&&(a(0,"div",32)(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&&f(0,kt,3,1,"div",31)(1,Et,13,9,"div",32),t&2){let e=u(2);h(e.hasPlugins()?0:1)}}function Nt(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),f(6,bt,1,3,"ng-container"),F(7,Ct,1,0,"ng-container",26),r(),a(8,"div",27),f(9,vt,10,24),f(10,Mt,1,3,"ng-container"),F(11,yt,1,0,"ng-container",26),r()(),f(12,wt,1,0,"app-spinner")(13,Rt,2,1)),t&2){let e=u(),i=$(5);o(3),_(l(4,7,"menu.label_accessories")),o(3),h(e.shouldShowFilters()?6:-1),o(),b("ngTemplateOutlet",i),o(2),h(e.hasPlugins()?9:-1),o(),h(e.shouldShowFilters()?10:-1),o(),b("ngTemplateOutlet",i),o(),h(e.loading()?12:13)}}function Pt(t,c){t&1&&(a(0,"p",58),p(1),s(2,"translate"),r()),t&2&&(o(),_(l(2,1,"accessories.settings_link")))}function Ft(t,c){if(t&1&&(a(0,"div",4)(1,"div",53)(2,"h3",54),p(3),s(4,"translate"),r()(),a(5,"div",32)(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"),f(14,Pt,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),b("innerHTML",G(13,8,"accessories.message_must_use_insecure_mode",W(11,ot,e.linkInsecure)),Ce),o(2),h(e.isAdmin?14:-1)}}var Ii=(()=>{class t{$accessories=C($e);$api=C(Te);$auth=C(Ae);dragulaService=C(Pe);$md=C(Ve);injector=C(be);$modal=C(Ee);$settings=C(Be);$translate=C(De);$ws=C(ke);ioStatus;ioChild;get bridgeUsernameToNameMap(){return this.$accessories.bridgeUsernameToNameMap}isAdmin=this.$auth.user.admin;enableAccessories=this.$settings.env.enableAccessories;isMobile=R(!1);hideHidden=R(!0);linkInsecure='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control" target="_blank"><i class="fa fa-external-link-alt primary-text"></i></a>';hasPlugins=R(!1);loading=R(!0);manageLayoutMode=!1;previousBridgeSelection=null;availableBridges=this.$accessories.availableBridges;selectedBridges=this.$accessories.selectedBridges;shouldShowFilters=L(()=>this.hasPlugins()&&!this.loading()&&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.isMobile()&&!!d?.classList.contains("drag-handle")}),e.createGroup("services-bag",{moves:i=>!this.isMobile()&&!i?.classList.contains("no-drag")}),e.drop().pipe(Se()).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.checkForPlugins(),this.setupBridgeNameMapping(),this.$accessories.accessoryData.subscribe(()=>{this.updateAvailableBridges()})}addRoom(){return U(this,null,function*(){let e=_e([{provide:me,useValue:{existingRooms:this.$accessories.rooms()}}],this.injector),i=this.$modal.open(ze,{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(y=>P(N({},y),{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 U(this,null,function*(){let i=this.$accessories.rooms()[e];if(!i)return;let n=_e([{provide:pe,useValue:{roomName:i.name,isDefault:i.isDefault||!1,existingRooms:this.$accessories.rooms(),currentRoomIndex:e}}],this.injector),d=this.$modal.open(Qe,{size:"lg",backdrop:"static",injector:n});try{let y=yield d.result;if(y?.delete){let w=this.$accessories.rooms()[e];if(!w)return;let v;if(w.isDefault)v=e===0?1:0;else{let B=this.$accessories.rooms().findIndex(E=>E.isDefault);v=B!==-1?B:0}w.isDefault&&this.$accessories.rooms.update(B=>B.map((E,q)=>q===v?P(N({},E),{isDefault:!0}):P(N({},E),{isDefault:!1})));let H=w.services;H.length>0&&this.$accessories.rooms.update(B=>B.map((E,q)=>q===v?P(N({},E),{services:[...E.services,...H]}):E)),this.$accessories.rooms.update(B=>B.filter((E,q)=>q!==e)),this.$accessories.saveLayout();return}if(!y?.name||!y.name.length)return;y.isDefault&&this.$accessories.rooms.update(w=>w.map(v=>P(N({},v),{isDefault:!1}))),this.$accessories.rooms.update(w=>w.map((v,H)=>H===e?P(N({},v),{name:y.name,isDefault:y.isDefault??!1}):v)),this.$accessories.saveLayout()}catch(y){}})}toggleLayoutLock(){this.isMobile.set(!this.isMobile()),this.isMobile()?document.querySelectorAll(".services-bag").forEach(i=>{for(let n=0;n<10;n+=1){let d=document.createElement("div");d.className="accessory-box invisible py-0 my-0",d.style.height="0",i.appendChild(d)}}):document.querySelectorAll(".invisible").forEach(i=>i.remove())}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?.()}checkForPlugins(){return U(this,null,function*(){try{let e=yield this.$api.get("/plugins");this.hasPlugins.set(e.length>1)}catch(e){console.error(e),this.hasPlugins.set(!0)}finally{this.loading.set(!1)}})}setupBridgeNameMapping(){this.ioStatus=this.$ws.connectToNamespace("status"),this.ioStatus.connected.subscribe(()=>{this.ioStatus.socket.emit("monitor-server-status")}),this.ioStatus.socket.connected&&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.subscribe(()=>{this.ioChild.socket.emit("monitor-child-bridge-status"),this.fetchChildBridges()}),this.ioChild.socket.connected&&(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(v=>{if(v.instance?.username){let B=this.bridgeUsernameToNameMap.get(v.instance.username)||v.instance.name;B&&e.add(B)}})});let i=[...e].toSorted((w,v)=>w==="Homebridge"?-1:v==="Homebridge"?1:w.localeCompare(v)),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(v=>i.includes(v))),this.availableBridges.set(i))}shouldDisplayService(e){if(this.hideHidden()&&e.hidden)return!1;if(this.manageLayoutMode)return!0;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,y)=>y!==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"],[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"],[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"],[1,"fas","fa-house"],["ngbDropdownMenu",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],[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"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","hidden","openDelay","ngbTooltip"],[1,"fas","fa-folder-plus"],[1,"fas"],["dragula","rooms-bag",3,"dragulaModel"],[1,"col-12","text-center"],["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,"justify-content-between","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"],[1,"fas","fa-cog"],["dragula","services-bag",1,"col-md-12","d-flex","flex-wrap","noselect","services-bag",3,"dragulaModelChange","dragulaModel"],[1,"accessory-box","accessory-box-placeholder"],[1,"accessory-item","accessory-tab"],[3,"service"],["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"],[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"],[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&&(F(0,ut,16,13,"ng-template",null,0,Y)(2,gt,9,18,"ng-template",null,1,Y)(4,ft,3,3,"ng-template",null,2,Y),f(6,Nt,14,9)(7,Ft,15,13,"div",4)),i&2&&(o(6),h(n.enableAccessories?6:7))},dependencies:[we,Re,We,qe,He,je,Ie,Fe,Le,Je,Ne,Oe,k],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}@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{Ii as AccessoriesComponent};