homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
5 lines • 229 kB
JavaScript
import{a as vt}from"./chunk-7V3PGBCL.js";import{a as Li}from"./chunk-LRDLQLG4.js";import{a as Ri}from"./chunk-N3AHZZPX.js";import{a as ji,c as Xi,d as Gi}from"./chunk-3ODOBDIZ.js";import{a as Bi}from"./chunk-H3RDASOR.js";import{a as Pn}from"./chunk-M2QUBULD.js";import"./chunk-XQFJNVZN.js";import{a as wt,b as Ui,c as Fi}from"./chunk-5ZEARPQI.js";import"./chunk-KSBQEY44.js";import"./chunk-KZE2OTCD.js";import{a as Ai}from"./chunk-SGXHM7IT.js";import{a as Ni}from"./chunk-LKHNMMNU.js";import{b as qi}from"./chunk-COWEDMDX.js";import"./chunk-YEMALHZS.js";import"./chunk-M5NPMQ5Y.js";import"./chunk-XTCYYJPD.js";import{a as yt}from"./chunk-AYSHSJRC.js";import{A as Pi,b as Di,w as Ct,x as bt,z as xt}from"./chunk-SMGTZ45N.js";import"./chunk-ANE4AW4B.js";import"./chunk-EOZQDUTB.js";import"./chunk-T5DKW6NZ.js";import"./chunk-MUUSCRZD.js";import"./chunk-JOJEYCYX.js";import"./chunk-UKY4BVMC.js";import{a as ie}from"./chunk-GAHGBZ7U.js";import"./chunk-NAG4LCT2.js";import"./chunk-UNLSKRL2.js";import"./chunk-BSM4XIDD.js";import"./chunk-O5RZ7ZOO.js";import"./chunk-AZGHSTIR.js";import"./chunk-NYZK4HSS.js";import"./chunk-D4J5AL5X.js";import"./chunk-H35CNDP7.js";import"./chunk-ME4WRCWH.js";import"./chunk-EA5VT3RQ.js";import"./chunk-NMMSSMCW.js";import"./chunk-JP467WDP.js";import"./chunk-CVXWKOFU.js";import"./chunk-FWJREO6L.js";import"./chunk-SD2RBU34.js";import"./chunk-HLDUJBLE.js";import"./chunk-MVRVLT3V.js";import{a as zi,j as xe}from"./chunk-6O3SCGLD.js";import"./chunk-6RX3XE55.js";import"./chunk-TY6CXPOM.js";import"./chunk-YT56PAEY.js";import"./chunk-D4MZIYO2.js";import{a as Vi,b as Oi,c as Hi}from"./chunk-OO5NFP6O.js";import{a as $e}from"./chunk-I45OAEDK.js";import"./chunk-T7RKA523.js";import{s as We,t as _t}from"./chunk-2QHNXSQY.js";import{a as fi}from"./chunk-VYTJCKZA.js";import{a as B}from"./chunk-IL6HHVES.js";import{c as ui,d as ke}from"./chunk-LKBXKG4K.js";import{C as ut,D as ft,b as _i,c as Fe,e as Ae,f as Ci,g as bi,j as gt,l as xi,m as vi,n as wi,o as yi,q as Ii,r as Ei,s as Si,t as Ti,u as Mi,w as ki,x as Wi,y as $i}from"./chunk-BQZ376DP.js";import{a as Dn,b as te}from"./chunk-RFCSHRPV.js";import{g as gi}from"./chunk-3APJQTJL.js";import{$a as ai,$b as ci,$c as Me,Aa as rt,Ab as Ht,Bb as Nt,Cc as dt,Da as Qe,Dc as ct,E as oi,Ea as r,Ec as mt,G as Se,Gb as ge,Gc as Te,Hb as ue,Ib as li,J as Ve,Ja as ri,Jb as be,Kb as R,La as at,Lb as se,Mb as a,Nb as _,Nc as pt,Ob as I,Pb as _e,Q as ot,Qa as Re,Qb as Ut,R as Ye,Ra as P,S as Bt,Sc as ht,Tb as re,Ub as ae,Vb as le,Wa as Ne,Yc as de,Zc as L,_b as di,aa as C,ab as $,ac as mi,cb as u,cd as Le,d as he,da as st,db as f,dc as m,dd as Ue,eb as Ot,ec as p,fa as E,fb as fe,fc as G,ga as S,gb as Y,hb as Q,ib as k,j as Rt,ja as si,jb as d,kb as l,kc as pi,la as F,lb as v,lc as Je,mb as b,nb as x,o as ce,oa as Lt,ob as X,oc as lt,p as ii,pc as O,qa as w,qc as K,ra as zt,sc as Be,ta as Oe,va as He,vb as M,wb as Ce,x as ni,xb as W,y as Ee,yb as J,za as Vt,zb as h,zc as hi}from"./chunk-LTGI3NYM.js";import"./chunk-2PUJPDBO.js";import"./chunk-FJZSMPXC.js";import"./chunk-BWI3GJO4.js";import"./chunk-XW7PBNQZ.js";import"./chunk-H5WYCQ4G.js";import"./chunk-J4DRBL7E.js";import"./chunk-ATJB7DUI.js";import{a as V,b as j,d as ei,e as $n,g as ti,h as U}from"./chunk-B4AJQJMI.js";var Wn=$n((jm,pa)=>{pa.exports=[{component:"UpdateInfoWidgetComponent",x:0,y:0,cols:4,rows:6,mobileOrder:10,hidePort:!0,hideOnMobile:!1,draggable:!0},{component:"BridgesWidgetComponent",x:15,y:0,cols:5,rows:12,mobileOrder:35,hideOnMobile:!1,draggable:!0},{component:"CpuWidgetComponent",x:4,y:0,cols:5,rows:3,mobileOrder:40,hideOnMobile:!1,draggable:!0,refreshInterval:10,historyItems:60},{component:"MemoryWidgetComponent",x:4,y:3,cols:5,rows:3,mobileOrder:50,hideOnMobile:!1,draggable:!0,refreshInterval:10,historyItems:60},{component:"NetworkWidgetComponent",x:4,y:6,cols:5,rows:3,mobileOrder:55,hideOnMobile:!1,draggable:!0,refreshInterval:10,historyItems:60,networkInterface:"en0"},{component:"UptimeWidgetComponent",x:4,y:9,cols:5,rows:3,mobileOrder:60,hideOnMobile:!1,draggable:!0},{component:"SystemInfoWidgetComponent",x:9,y:0,cols:6,rows:12,mobileOrder:70,hideOnMobile:!1,draggable:!0},{component:"MatterQrcodeWidgetComponent",x:0,y:12,cols:4,rows:6,mobileOrder:100,hideOnMobile:!1,draggable:!0},{x:0,y:6,component:"HapQrcodeWidgetComponent",cols:4,rows:6,mobileOrder:100,draggable:!0},{component:"HomebridgeLogsWidgetComponent",x:4,y:12,cols:16,rows:6,mobileOrder:1e3,hideOnMobile:!0,draggable:!0}]});var en=["*"];function Rn(o,n){if(o&1&&v(0,"div",0),o&2){let e=n.$index,t=h();k("ngStyle",t.gridRenderer.getGridColumnStyle(e))}}function Bn(o,n){if(o&1&&v(0,"div",1),o&2){let e=n.$index,t=h();k("ngStyle",t.gridRenderer.getGridRowStyle(e))}}function Ln(o,n){if(o&1){let e=M();b(0,"div",8),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function zn(o,n){if(o&1){let e=M();b(0,"div",9),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function Vn(o,n){if(o&1){let e=M();b(0,"div",10),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function On(o,n){if(o&1){let e=M();b(0,"div",11),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function Hn(o,n){if(o&1){let e=M();b(0,"div",12),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function Nn(o,n){if(o&1){let e=M();b(0,"div",13),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function Un(o,n){if(o&1){let e=M();b(0,"div",14),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}function Fn(o,n){if(o&1){let e=M();b(0,"div",15),J("mousedown",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))})("touchstart",function(i){E(e);let s=h();return S(s.resize.dragStartDelay(i))}),x()}}var z=(function(o){return o.Fit="fit",o.ScrollVertical="scrollVertical",o.ScrollHorizontal="scrollHorizontal",o.Fixed="fixed",o.VerticalFixed="verticalFixed",o.HorizontalFixed="horizontalFixed",o})(z||{}),tn=(function(o){return o.Always="always",o.OnDragAndResize="onDrag&Resize",o.None="none",o})(tn||{}),N=(function(o){return o.None="none",o.CompactUp="compactUp",o.CompactLeft="compactLeft",o.CompactUpAndLeft="compactUp&Left",o.CompactLeftAndUp="compactLeft&Up",o.CompactRight="compactRight",o.CompactUpAndRight="compactUp&Right",o.CompactRightAndUp="compactRight&Up",o.CompactDown="compactDown",o.CompactDownAndLeft="compactDown&Left",o.CompactLeftAndDown="compactLeft&Down",o.CompactDownAndRight="compactDown&Right",o.CompactRightAndDown="compactRight&Down",o.CompactGrid="compactGrid",o})(N||{}),ne=(function(o){return o.LTR="ltr",o.RTL="rtl",o})(ne||{}),At=class{gridster;constructor(n){this.gridster=n}destroy(){this.gridster=null}checkCompact(){let n=this.gridster.$options();n.compactType!==N.None&&(n.compactType===N.CompactUp?this.checkCompactMovement("y",-1):n.compactType===N.CompactLeft?this.checkCompactMovement("x",-1):n.compactType===N.CompactUpAndLeft?(this.checkCompactMovement("y",-1),this.checkCompactMovement("x",-1)):n.compactType===N.CompactLeftAndUp?(this.checkCompactMovement("x",-1),this.checkCompactMovement("y",-1)):n.compactType===N.CompactRight?this.checkCompactMovement("x",1):n.compactType===N.CompactUpAndRight?(this.checkCompactMovement("y",-1),this.checkCompactMovement("x",1)):n.compactType===N.CompactRightAndUp?(this.checkCompactMovement("x",1),this.checkCompactMovement("y",-1)):n.compactType===N.CompactDown?this.checkCompactMovement("y",1):n.compactType===N.CompactDownAndLeft?(this.checkCompactMovement("y",1),this.checkCompactMovement("x",-1)):n.compactType===N.CompactDownAndRight?(this.checkCompactMovement("y",1),this.checkCompactMovement("x",1)):n.compactType===N.CompactLeftAndDown?(this.checkCompactMovement("x",-1),this.checkCompactMovement("y",1)):n.compactType===N.CompactRightAndDown?(this.checkCompactMovement("x",1),this.checkCompactMovement("y",1)):n.compactType===N.CompactGrid&&this.checkCompactGrid())}checkCompactItem(n){let e=this.gridster.$options();e.compactType!==N.None&&(e.compactType===N.CompactUp?this.moveTillCollision(n,"y",-1):e.compactType===N.CompactLeft?this.moveTillCollision(n,"x",-1):e.compactType===N.CompactUpAndLeft?(this.moveTillCollision(n,"y",-1),this.moveTillCollision(n,"x",-1)):e.compactType===N.CompactLeftAndUp?(this.moveTillCollision(n,"x",-1),this.moveTillCollision(n,"y",-1)):e.compactType===N.CompactUpAndRight?(this.moveTillCollision(n,"y",-1),this.moveTillCollision(n,"x",1)):e.compactType===N.CompactDown?this.moveTillCollision(n,"y",1):e.compactType===N.CompactDownAndLeft?(this.moveTillCollision(n,"y",1),this.moveTillCollision(n,"x",-1)):e.compactType===N.CompactLeftAndDown?(this.moveTillCollision(n,"x",-1),this.moveTillCollision(n,"y",1)):e.compactType===N.CompactDownAndRight?(this.moveTillCollision(n,"y",1),this.moveTillCollision(n,"x",1)):e.compactType===N.CompactRightAndDown?(this.moveTillCollision(n,"x",1),this.moveTillCollision(n,"y",1)):e.compactType===N.CompactGrid&&this.moveToGridPosition(n))}checkCompactMovement(n,e){let t=!1;this.gridster.grid.forEach(i=>{i.$item().compactEnabled!==!1&&this.moveTillCollision(i.$item(),n,e)&&(t=!0,i.item()[n]=i.$item()[n],i.itemChanged())}),t&&this.checkCompact()}moveTillCollision(n,e,t){return n[e]+=t,this.gridster.checkCollision(n)?(n[e]-=t,!1):(this.moveTillCollision(n,e,t),!0)}checkCompactGrid(){let n=this.gridster.grid.filter(s=>s.$item().compactEnabled!==!1).sort((s,c)=>s.$item().y!==c.$item().y?s.$item().y-c.$item().y:s.$item().x-c.$item().x),e=0,t=0,i=0;n.forEach(s=>{let c=s.$item();t+c.cols>this.gridster.columns&&(e=i,t=0,i=e);let g=c.x,y=c.y;c.x=t,c.y=e,(g!==c.x||y!==c.y)&&(s.item().x=c.x,s.item().y=c.y,s.itemChanged()),t+=c.cols,i=Math.max(i,e+c.rows)})}moveToGridPosition(n){let e=0,t=0,i=0,s=this.gridster.grid.filter(c=>c.$item()!==n).sort((c,g)=>c.$item().y!==g.$item().y?c.$item().y-g.$item().y:c.$item().x-g.$item().x);for(let c of s){let g=c.$item();t+g.cols>this.gridster.columns&&(e=i,t=0,i=e),e<g.y+g.rows&&e+n.rows>g.y&&t<g.x+g.cols&&t+n.cols>g.x?(t=g.x+g.cols,e=g.y,i=Math.max(i,e+g.rows)):(t+=g.cols,i=Math.max(i,e+g.rows))}t+n.cols>this.gridster.columns&&(e=i,t=0),n.x=t,n.y=e}},Yi={gridType:z.Fit,scale:1,fixedColWidth:250,fixedRowHeight:250,keepFixedHeightInMobile:!1,keepFixedWidthInMobile:!1,setGridSize:!1,compactType:N.None,mobileBreakpoint:640,useBodyForBreakpoint:!1,allowMultiLayer:!1,defaultLayerIndex:0,maxLayerIndex:2,baseLayerIndex:1,minCols:1,maxCols:100,minRows:1,maxRows:100,defaultItemCols:1,defaultItemRows:1,itemAspectRatio:null,maxItemCols:50,maxItemRows:50,minItemCols:1,minItemRows:1,minItemArea:1,maxItemArea:2500,addEmptyRowsCount:0,rowHeightRatio:1,margin:10,outerMargin:!0,outerMarginTop:null,outerMarginRight:null,outerMarginBottom:null,outerMarginLeft:null,useTransformPositioning:!0,scrollSensitivity:10,scrollSpeed:20,initCallback:void 0,destroyCallback:void 0,gridSizeChangedCallback:void 0,itemChangeCallback:void 0,itemResizeCallback:void 0,itemInitCallback:void 0,itemRemovedCallback:void 0,itemValidateCallback:void 0,enableEmptyCellClick:!1,enableEmptyCellContextMenu:!1,enableEmptyCellDrop:!1,enableEmptyCellDrag:!1,enableOccupiedCellDrop:!1,emptyCellClickCallback:void 0,emptyCellContextMenuCallback:void 0,emptyCellDropCallback:void 0,emptyCellDragCallback:void 0,emptyCellDragMaxCols:50,emptyCellDragMaxRows:50,ignoreMarginInRow:!1,draggable:{delayStart:0,enabled:!1,ignoreContentClass:"gridster-item-content",ignoreContent:!1,dragHandleClass:"drag-handler",stop:void 0,start:void 0,dropOverItems:!1,dropOverItemsCallback:void 0},resizable:{delayStart:0,enabled:!1,handles:{s:!0,e:!0,n:!0,w:!0,se:!0,ne:!0,sw:!0,nw:!0},stop:void 0,start:void 0},swap:!0,swapWhileDragging:!1,pushItems:!1,disablePushOnDrag:!1,disablePushOnResize:!1,pushDirections:{north:!0,east:!0,south:!0,west:!0},pushResizeItems:!1,displayGrid:tn.OnDragAndResize,disableWindowResize:!1,disableWarnings:!1,scrollToNewItems:!1,disableScrollHorizontal:!1,disableScrollVertical:!1,enableBoundaryControl:!1,disableAutoPositionOnConflict:!1,dirType:ne.LTR},oe=class o{static merge(n,e,t){for(let i in e)e[i]!==void 0&&t.hasOwnProperty(i)&&(typeof e[i]=="object"?(i in n||(n[i]={}),n[i]=o.merge(n[i],e[i],t[i])):n[i]=e[i]);return n}static checkTouchEvent(n){n.clientX===void 0&&n.touches&&(n.touches&&n.touches.length?(n.clientX=n.touches[0].clientX,n.clientY=n.touches[0].clientY):n.changedTouches&&n.changedTouches.length&&(n.clientX=n.changedTouches[0].clientX,n.clientY=n.changedTouches[0].clientY))}static checkContentClassForEvent(n,e){let t=n.$options();if(t.draggable.ignoreContent){if(!o.checkDragHandleClass(e.target,e.currentTarget,t.draggable.dragHandleClass,t.draggable.ignoreContentClass))return!0}else if(o.checkContentClass(e.target,e.currentTarget,t.draggable.ignoreContentClass))return!0;return!1}static checkContentClassForEmptyCellClickEvent(n,e){let t=n.$options();return o.checkContentClass(e.target,e.currentTarget,t.draggable.ignoreContentClass)||o.checkContentClass(e.target,e.currentTarget,t.draggable.dragHandleClass)}static checkDragHandleClass(n,e,t,i){if(!n||n===e)return!1;if(n.hasAttribute("class")){let s=n.getAttribute("class").split(" ");if(s.indexOf(t)>-1)return!0;if(s.indexOf(i)>-1)return!1}return o.checkDragHandleClass(n.parentNode,e,t,i)}static checkContentClass(n,e,t){return!n||n===e?!1:n.hasAttribute("class")&&n.getAttribute("class").split(" ").indexOf(t)>-1?!0:o.checkContentClass(n.parentNode,e,t)}static compareItems(n,e){return n.y>e.y?-1:n.y<e.y?1:n.x>e.x?-1:1}},qt=class{gridster;initialItem;removeEmptyCellClickListenerFn;removeEmptyCellTouchendListenerFn;removeEmptyCellContextMenuListenerFn;removeEmptyCellDropListenerFn;removeEmptyCellMousedownListenerFn;removeEmptyCellTouchstartListenerFn;removeWindowMousemoveListenerFn;removeWindowTouchmoveListenerFn;removeWindowMouseupListenerFn;removeWindowTouchendListenerFn;removeEmptyCellDragoverListenerFn;removeDocumentDragendListenerFn;constructor(n){this.gridster=n}destroy(){this.gridster.previewStyle&&this.gridster.previewStyle(),this.gridster.movingItem=null,this.initialItem=this.gridster=null,this.removeDocumentDragendListenerFn&&(this.removeDocumentDragendListenerFn(),this.removeDocumentDragendListenerFn=null)}updateOptions(){let n=this.gridster.options(),e=this.gridster.$options();e.enableEmptyCellClick&&!this.removeEmptyCellClickListenerFn&&n.emptyCellClickCallback?(this.removeEmptyCellClickListenerFn=this.gridster.renderer.listen(this.gridster.el,"click",this.emptyCellClickCb),this.removeEmptyCellTouchendListenerFn=this.gridster.renderer.listen(this.gridster.el,"touchend",this.emptyCellClickCb)):!e.enableEmptyCellClick&&this.removeEmptyCellClickListenerFn&&this.removeEmptyCellTouchendListenerFn&&(this.removeEmptyCellClickListenerFn(),this.removeEmptyCellTouchendListenerFn(),this.removeEmptyCellClickListenerFn=null,this.removeEmptyCellTouchendListenerFn=null),e.enableEmptyCellContextMenu&&!this.removeEmptyCellContextMenuListenerFn&&n.emptyCellContextMenuCallback?this.removeEmptyCellContextMenuListenerFn=this.gridster.renderer.listen(this.gridster.el,"contextmenu",this.emptyCellContextMenuCb):!e.enableEmptyCellContextMenu&&this.removeEmptyCellContextMenuListenerFn&&(this.removeEmptyCellContextMenuListenerFn(),this.removeEmptyCellContextMenuListenerFn=null),e.enableEmptyCellDrop&&!this.removeEmptyCellDropListenerFn&&n.emptyCellDropCallback?(this.removeEmptyCellDropListenerFn=this.gridster.renderer.listen(this.gridster.el,"drop",this.emptyCellDragDrop),this.gridster.zone.runOutsideAngular(()=>{this.removeEmptyCellDragoverListenerFn=this.gridster.renderer.listen(this.gridster.el,"dragover",this.emptyCellDragOver)}),this.removeDocumentDragendListenerFn=this.gridster.renderer.listen("document","dragend",()=>{this.gridster.movingItem=null,this.gridster.previewStyle()})):!e.enableEmptyCellDrop&&this.removeEmptyCellDropListenerFn&&this.removeEmptyCellDragoverListenerFn&&this.removeDocumentDragendListenerFn&&(this.removeEmptyCellDropListenerFn(),this.removeEmptyCellDragoverListenerFn(),this.removeDocumentDragendListenerFn(),this.removeEmptyCellDragoverListenerFn=null,this.removeEmptyCellDropListenerFn=null,this.removeDocumentDragendListenerFn=null),e.enableEmptyCellDrag&&!this.removeEmptyCellMousedownListenerFn&&n.emptyCellDragCallback?(this.removeEmptyCellMousedownListenerFn=this.gridster.renderer.listen(this.gridster.el,"mousedown",this.emptyCellMouseDown),this.removeEmptyCellTouchstartListenerFn=this.gridster.renderer.listen(this.gridster.el,"touchstart",this.emptyCellMouseDown)):!e.enableEmptyCellDrag&&this.removeEmptyCellMousedownListenerFn&&this.removeEmptyCellTouchstartListenerFn&&(this.removeEmptyCellMousedownListenerFn(),this.removeEmptyCellTouchstartListenerFn(),this.removeEmptyCellMousedownListenerFn=null,this.removeEmptyCellTouchstartListenerFn=null)}emptyCellClickCb=n=>{if(!this.gridster||this.gridster.movingItem||oe.checkContentClassForEmptyCellClickEvent(this.gridster,n))return;let e=this.getValidItemFromEvent(n);if(!e)return;let t=this.gridster.options();t.emptyCellClickCallback&&t.emptyCellClickCallback(n,e),this.gridster.cdRef.markForCheck()};emptyCellContextMenuCb=n=>{if(this.gridster.movingItem||oe.checkContentClassForEmptyCellClickEvent(this.gridster,n))return;n.preventDefault(),n.stopPropagation();let e=this.getValidItemFromEvent(n);if(!e)return;let t=this.gridster.options();t.emptyCellContextMenuCallback&&t.emptyCellContextMenuCallback(n,e),this.gridster.cdRef.markForCheck()};emptyCellDragDrop=n=>{let e=this.getValidItemFromEvent(n);if(!e)return;let t=this.gridster.options();t.emptyCellDropCallback&&t.emptyCellDropCallback(n,e),this.gridster.cdRef.markForCheck()};emptyCellDragOver=n=>{n.preventDefault(),n.stopPropagation();let e=this.getValidItemFromEvent(n);e?(n.dataTransfer&&(n.dataTransfer.dropEffect="move"),this.gridster.movingItem=e):(n.dataTransfer&&(n.dataTransfer.dropEffect="none"),this.gridster.movingItem=null),this.gridster.previewStyle()};emptyCellMouseDown=n=>{if(oe.checkContentClassForEmptyCellClickEvent(this.gridster,n))return;n.preventDefault(),n.stopPropagation();let e=this.getValidItemFromEvent(n);!e||n.buttons!==1&&!(n instanceof TouchEvent)||(this.initialItem=e,this.gridster.movingItem=e,this.gridster.previewStyle(),this.gridster.zone.runOutsideAngular(()=>{this.removeWindowMousemoveListenerFn=this.gridster.renderer.listen("window","mousemove",this.emptyCellMouseMove),this.removeWindowTouchmoveListenerFn=this.gridster.renderer.listen("window","touchmove",this.emptyCellMouseMove)}),this.removeWindowMouseupListenerFn=this.gridster.renderer.listen("window","mouseup",this.emptyCellMouseUp),this.removeWindowTouchendListenerFn=this.gridster.renderer.listen("window","touchend",this.emptyCellMouseUp))};emptyCellMouseMove=n=>{n.preventDefault(),n.stopPropagation();let e=this.getValidItemFromEvent(n,this.initialItem);e&&(this.gridster.movingItem=e,this.gridster.previewStyle())};emptyCellMouseUp=n=>{this.removeWindowMousemoveListenerFn(),this.removeWindowTouchmoveListenerFn(),this.removeWindowMouseupListenerFn(),this.removeWindowTouchendListenerFn();let e=this.getValidItemFromEvent(n,this.initialItem);e&&(this.gridster.movingItem=e);let t=this.gridster.options();t.emptyCellDragCallback&&this.gridster.movingItem&&t.emptyCellDragCallback(n,this.gridster.movingItem),setTimeout(()=>{this.initialItem=null,this.gridster&&(this.gridster.movingItem=null,this.gridster.previewStyle())}),this.gridster.cdRef.markForCheck()};getPixelsX(n,e){let t=this.gridster.options().scale;return t?(n.clientX-e.left)/t+this.gridster.el.scrollLeft-this.gridster.gridRenderer.getLeftMargin():n.clientX+this.gridster.el.scrollLeft-e.left-this.gridster.gridRenderer.getLeftMargin()}getPixelsY(n,e){let t=this.gridster.options().scale;return t?(n.clientY-e.top)/t+this.gridster.el.scrollTop-this.gridster.gridRenderer.getTopMargin():n.clientY+this.gridster.el.scrollTop-e.top-this.gridster.gridRenderer.getTopMargin()}getValidItemFromEvent(n,e){n.preventDefault(),n.stopPropagation(),oe.checkTouchEvent(n);let t=this.gridster.el.getBoundingClientRect(),i=this.getPixelsX(n,t),s=this.getPixelsY(n,t),c=this.gridster.$options(),g={x:this.gridster.pixelsToPositionX(i,Math.floor,!0),y:this.gridster.pixelsToPositionY(s,Math.floor,!0),cols:c.defaultItemCols,rows:c.defaultItemRows};if(e&&(g.cols=Math.min(Math.abs(e.x-g.x)+1,c.emptyCellDragMaxCols),g.rows=Math.min(Math.abs(e.y-g.y)+1,c.emptyCellDragMaxRows),e.x<g.x?g.x=e.x:e.x-g.x>c.emptyCellDragMaxCols-1&&(g.x=this.gridster.movingItem?this.gridster.movingItem.x:0),e.y<g.y?g.y=e.y:e.y-g.y>c.emptyCellDragMaxRows-1&&(g.y=this.gridster.movingItem?this.gridster.movingItem.y:0)),!(!c.enableOccupiedCellDrop&&this.gridster.checkCollision(g)))return g}},Ft=(()=>{class o{el=C(He).nativeElement;gridster=C(kt);renderer=C(at);previewStyle(e){e?(this.renderer.setStyle(this.el,"display","block"),this.gridster.gridRenderer.updateItem(this.el,e,this.renderer)):this.renderer.setStyle(this.el,"display","")}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["gridster-preview"]],decls:0,vars:0,template:function(t,i){},styles:[`gridster-preview{position:absolute;display:none;background:#00000026}
`],encapsulation:2,changeDetection:0})}return o})(),jt=class{gridster;lastGridColumnStyles={};lastGridRowStyles={};constructor(n){this.gridster=n}updateItem(n,e,t){let i=this.gridster.$options();if(this.gridster.mobile)this.clearCellPosition(t,n),i.keepFixedHeightInMobile?t.setStyle(n,"height",(e.rows-1)*i.margin+e.rows*i.fixedRowHeight+"px"):t.setStyle(n,"height",e.rows*this.gridster.curWidth/e.cols+"px"),i.keepFixedWidthInMobile?t.setStyle(n,"width",i.fixedColWidth+"px"):t.setStyle(n,"width",""),t.setStyle(n,"margin-bottom",i.margin+"px"),t.setStyle(n,ne.LTR?"margin-right":"margin-left","");else{let s=Math.round(this.gridster.curColWidth*e.x),c=Math.round(this.gridster.curRowHeight*e.y),g=this.gridster.curColWidth*e.cols-i.margin,y=this.gridster.curRowHeight*e.rows-i.margin;this.setCellPosition(t,n,s,c),t.setStyle(n,"width",g+"px"),t.setStyle(n,"height",y+"px");let T=null,D=null;i.outerMargin&&(this.gridster.rows===e.rows+e.y&&(i.outerMarginBottom!==null?T=i.outerMarginBottom+"px":T=i.margin+"px"),this.gridster.columns===e.cols+e.x&&(i.outerMarginBottom!==null?D=i.outerMarginRight+"px":D=i.margin+"px")),t.setStyle(n,"margin-bottom",T),t.setStyle(n,i.dirType===ne.LTR?"margin-right":"margin-left",D)}}updateGridster(){let n=this.gridster.$options(),e="",t="",i="",s="";if(n.gridType===z.Fit)e=z.Fit,t=z.ScrollVertical,i=z.ScrollHorizontal,s=z.Fixed;else if(n.gridType===z.ScrollVertical)this.gridster.curRowHeight=this.gridster.curColWidth*n.rowHeightRatio,e=z.ScrollVertical,t=z.Fit,i=z.ScrollHorizontal,s=z.Fixed;else if(n.gridType===z.ScrollHorizontal){let c=n.rowHeightRatio,g=c>=1?c:c+1;this.gridster.curColWidth=this.gridster.curRowHeight*g,e=z.ScrollHorizontal,t=z.Fit,i=z.ScrollVertical,s=z.Fixed}else n.gridType===z.Fixed?(this.gridster.curColWidth=n.fixedColWidth+(n.ignoreMarginInRow?0:n.margin),this.gridster.curRowHeight=n.fixedRowHeight+(n.ignoreMarginInRow?0:n.margin),e=z.Fixed,t=z.Fit,i=z.ScrollVertical,s=z.ScrollHorizontal):n.gridType===z.VerticalFixed?(this.gridster.curRowHeight=n.fixedRowHeight+(n.ignoreMarginInRow?0:n.margin),e=z.ScrollVertical,t=z.Fit,i=z.ScrollHorizontal,s=z.Fixed):n.gridType===z.HorizontalFixed&&(this.gridster.curColWidth=n.fixedColWidth+(n.ignoreMarginInRow?0:n.margin),e=z.ScrollHorizontal,t=z.Fit,i=z.ScrollVertical,s=z.Fixed);this.gridster.mobile||n.setGridSize&&n.gridType!==z.Fit?this.gridster.renderer.removeClass(this.gridster.el,e):this.gridster.renderer.addClass(this.gridster.el,e),this.gridster.renderer.removeClass(this.gridster.el,t),this.gridster.renderer.removeClass(this.gridster.el,i),this.gridster.renderer.removeClass(this.gridster.el,s)}getGridColumnStyle(n){let e=this.gridster.$options().margin,t={left:this.gridster.curColWidth*n,width:this.gridster.curColWidth-e,height:this.gridster.gridRows.length*this.gridster.curRowHeight-e,style:{}};t.style=j(V({},this.getLeftPosition(t.left)),{width:t.width+"px",height:t.height+"px"});let i=this.lastGridColumnStyles[n];return i&&i.left===t.left&&i.width===t.width&&i.height===t.height?i.style:(this.lastGridColumnStyles[n]=t,t.style)}getGridRowStyle(n){let e=this.gridster.$options().margin,t={top:this.gridster.curRowHeight*n,width:this.gridster.gridColumns.length*this.gridster.curColWidth+e,height:this.gridster.curRowHeight-e,style:{}};t.style=j(V({},this.getTopPosition(t.top)),{width:t.width+"px",height:t.height+"px"});let i=this.lastGridRowStyles[n];return i&&i.top===t.top&&i.width===t.width&&i.height===t.height?i.style:(this.lastGridRowStyles[n]=t,t.style)}getLeftPosition(n){let e=this.gridster.$options(),t=e.dirType===ne.RTL?-n:n;return e.useTransformPositioning?{transform:"translateX("+t+"px)"}:{left:this.getLeftMargin()+t+"px"}}getTopPosition(n){return this.gridster.$options().useTransformPositioning?{transform:"translateY("+n+"px)"}:{top:this.getTopMargin()+n+"px"}}clearCellPosition(n,e){this.gridster.$options().useTransformPositioning?n.setStyle(e,"transform",""):(n.setStyle(e,"top",""),n.setStyle(e,"left",""))}setCellPosition(n,e,t,i){let s=this.gridster.$options(),c=s.dirType===ne.RTL?-t:t;if(s.useTransformPositioning){let g="translate3d("+c+"px, "+i+"px, 0)";n.setStyle(e,"transform",g)}else n.setStyle(e,"left",this.getLeftMargin()+c+"px"),n.setStyle(e,"top",this.getTopMargin()+i+"px")}getLeftMargin(){let n=this.gridster.$options();return n.outerMargin?n.outerMarginLeft!==null?n.outerMarginLeft:n.margin:0}getTopMargin(){let n=this.gridster.$options();return n.outerMargin?n.outerMarginTop!==null?n.outerMarginTop:n.margin:0}},kt=(()=>{class o{renderer=C(at);cdRef=C(Be);zone=C(Lt);elRef=C(He);api={calculateLayout:()=>this.calculateLayout(),resize:()=>this.onResize(),getNextPossiblePosition:(e,t)=>this.getNextPossiblePosition(e,t),getFirstPossiblePosition:e=>this.getFirstPossiblePosition(e),getLastPossiblePosition:e=>this.getLastPossiblePosition(e),getItemComponent:e=>this.getItemComponent(e)};gridsterPreview=K.required(Ft);options=O.required();$options=Je(()=>oe.merge(JSON.parse(JSON.stringify(Yi)),this.options(),Yi));movingItem;el=this.elRef.nativeElement;mobile=!1;curWidth=0;curHeight=0;grid=[];columns=0;rows=0;curColWidth=0;curRowHeight=0;gridColumns=[];gridRows=[];windowResize;dragInProgress=!1;emptyCell=new qt(this);compact=new At(this);gridRenderer=new jt(this);calculateLayout$=new he;resize$=new he;destroy$=new he;constructor(){zt(()=>{let e=this.$options();!e.disableWindowResize&&!this.windowResize?this.windowResize=this.renderer.listen("window","resize",this.onResize):e.disableWindowResize&&this.windowResize&&(this.windowResize(),this.windowResize=null),this.emptyCell.updateOptions(),this.columns=e.minCols,this.rows=e.minRows+e.addEmptyRowsCount,this.setGridSize(),this.calculateLayout()})}static checkCollisionTwoItemsForSwaping(e,t){let i=e.cols===1?0:1,s=t.cols===1?0:1,c=e.rows===1?0:1,g=t.rows===1?0:1;return e.x+i<t.x+t.cols&&e.x+e.cols>t.x+s&&e.y+c<t.y+t.rows&&e.y+e.rows>t.y+g}checkCollisionTwoItems(e,t){if(!(e.x<t.x+t.cols&&e.x+e.cols>t.x&&e.y<t.y+t.rows&&e.y+e.rows>t.y))return!1;if(!this.$options().allowMultiLayer)return!0;let s=this.$options().defaultLayerIndex,c=e.layerIndex===void 0?s:e.layerIndex,g=t.layerIndex===void 0?s:t.layerIndex;return c===g}ngOnInit(){let e=this.options();e.initCallback&&e.initCallback(this,this.api),this.calculateLayout$.pipe(Se(0),Ye(this.destroy$)).subscribe(()=>this.calculateLayout()),this.resize$.pipe(ot(()=>ni(100)),Ye(this.destroy$)).subscribe(()=>this.resize())}resize(){let e,t;this.$options().gridType==="fit"&&!this.mobile?(t=this.el.offsetWidth,e=this.el.offsetHeight):(t=this.el.clientWidth,e=this.el.clientHeight),(t!==this.curWidth||e!==this.curHeight)&&this.checkIfToResize()&&this.onResize()}ngOnDestroy(){this.destroy$.next(),this.windowResize&&this.windowResize();let e=this.options();e&&e.destroyCallback&&e.destroyCallback(this),this.emptyCell.destroy(),this.emptyCell=null,this.compact.destroy(),this.compact=null}onResize=()=>{this.el.clientWidth&&(this.$options().setGridSize&&(this.renderer.setStyle(this.el,"width",""),this.renderer.setStyle(this.el,"height","")),this.setGridSize(),this.calculateLayout())};checkIfToResize(){let e=this.el.clientWidth,t=this.el.offsetWidth,i=this.el.scrollWidth,s=this.el.clientHeight,c=this.el.offsetHeight,g=this.el.scrollHeight,y=e<t&&g>c&&g-c<t-e,T=s<c&&i>t&&i-t<c-s;return y?!1:!T}checkIfMobile(){let e=this.$options();return e.useBodyForBreakpoint?e.mobileBreakpoint>document.body.clientWidth:e.mobileBreakpoint>this.curWidth}setGridSize(){let e=this.el,t,i,s=this.$options();s.setGridSize||s.gridType===z.Fit&&!this.mobile?(t=e.offsetWidth,i=e.offsetHeight):(t=e.clientWidth,i=e.clientHeight),this.curWidth=t,this.curHeight=i}setGridDimensions(){this.setGridSize(),!this.mobile&&this.checkIfMobile()?(this.mobile=!this.mobile,this.renderer.addClass(this.el,"mobile")):this.mobile&&!this.checkIfMobile()&&(this.mobile=!this.mobile,this.renderer.removeClass(this.el,"mobile"));let e=this.$options(),t=e.minRows,i=e.minCols;for(let s=this.grid.length-1;s>=0;s--){let c=this.grid[s];if(!c.notPlaced){let g=c.$item();t=Math.max(t,g.y+g.rows),i=Math.max(i,g.x+g.cols)}}if(t+=e.addEmptyRowsCount,this.columns!==i||this.rows!==t){this.columns=i,this.rows=t;let s=this.options();s.gridSizeChangedCallback&&s.gridSizeChangedCallback(this)}}calculateLayout(){this.compact&&this.compact.checkCompact(),this.setGridDimensions();let e=this.$options();if(e.outerMargin){let t=-e.margin;e.outerMarginLeft!==null?(t+=e.outerMarginLeft,this.renderer.setStyle(this.el,"padding-left",e.outerMarginLeft+"px")):(t+=e.margin,this.renderer.setStyle(this.el,"padding-left",e.margin+"px")),e.outerMarginRight!==null?(t+=e.outerMarginRight,this.renderer.setStyle(this.el,"padding-right",e.outerMarginRight+"px")):(t+=e.margin,this.renderer.setStyle(this.el,"padding-right",e.margin+"px")),this.curColWidth=(this.curWidth-t)/this.columns;let i=-e.margin;e.outerMarginTop!==null?(i+=e.outerMarginTop,this.renderer.setStyle(this.el,"padding-top",e.outerMarginTop+"px")):(i+=e.margin,this.renderer.setStyle(this.el,"padding-top",e.margin+"px")),e.outerMarginBottom!==null?(i+=e.outerMarginBottom,this.renderer.setStyle(this.el,"padding-bottom",e.outerMarginBottom+"px")):(i+=e.margin,this.renderer.setStyle(this.el,"padding-bottom",e.margin+"px")),this.curRowHeight=(this.curHeight-i)/this.rows*e.rowHeightRatio}else this.curColWidth=(this.curWidth+e.margin)/this.columns,this.curRowHeight=(this.curHeight+e.margin)/this.rows*e.rowHeightRatio,this.renderer.setStyle(this.el,"padding-left","0px"),this.renderer.setStyle(this.el,"padding-right","0px"),this.renderer.setStyle(this.el,"padding-top","0px"),this.renderer.setStyle(this.el,"padding-bottom","0px");this.gridRenderer.updateGridster(),e.setGridSize?(this.renderer.addClass(this.el,"gridSize"),this.mobile||(this.renderer.setStyle(this.el,"width",this.columns*this.curColWidth+e.margin+"px"),this.renderer.setStyle(this.el,"height",this.rows*this.curRowHeight+e.margin+"px"))):(this.renderer.removeClass(this.el,"gridSize"),this.renderer.setStyle(this.el,"width",""),this.renderer.setStyle(this.el,"height","")),this.updateGrid();for(let t=this.grid.length-1;t>=0;t--){let i=this.grid[t];i.setSize(),i.drag.toggle(),i.resize.toggle()}this.resize$.next()}updateGrid(){let e=this.$options();e.displayGrid==="always"&&!this.mobile?this.renderer.addClass(this.el,"display-grid"):e.displayGrid==="onDrag&Resize"&&this.dragInProgress?this.renderer.addClass(this.el,"display-grid"):(e.displayGrid==="none"||!this.dragInProgress||this.mobile)&&this.renderer.removeClass(this.el,"display-grid"),this.setGridDimensions(),this.gridColumns.length=o.getNewArrayLength(this.columns,this.curWidth,this.curColWidth),this.gridRows.length=o.getNewArrayLength(this.rows,this.curHeight,this.curRowHeight),this.cdRef.markForCheck()}addItem(e){let t=e.$item(),i=e.item(),s=this.$options();t.cols===void 0&&(t.cols=s.defaultItemCols,i.cols=t.cols,e.itemChanged()),t.rows===void 0&&(t.rows=s.defaultItemRows,i.rows=t.rows,e.itemChanged()),t.x===-1||t.y===-1?this.autoPositionItem(e):this.checkCollision(t)&&(s.disableWarnings||(e.notPlaced=!0,console.warn("Can't be placed in the bounds of the dashboard, trying to auto position!/n"+JSON.stringify(e.item,["cols","rows","x","y"]))),s.disableAutoPositionOnConflict?e.notPlaced=!0:this.autoPositionItem(e)),this.grid.push(e),this.calculateLayout$.next()}removeItem(e){this.grid.splice(this.grid.indexOf(e),1),this.calculateLayout$.next();let t=this.options();t.itemRemovedCallback&&t.itemRemovedCallback(e.item(),e),this.movingItem&&this.movingItem===e.$item()&&(this.movingItem=null,this.previewStyle())}checkCollision(e,t){let i=!1,s=this.options();if(s.itemValidateCallback&&(i=!s.itemValidateCallback(e)),!i&&this.checkGridCollision(e,t)&&(i=!0),!i){let c=this.findItemWithItem(e);c&&(i=c)}return i}checkGridCollision(e,t=!1){let i=this.$options(),s=e.y>-1&&e.x>-1,c=e.cols+e.x<=i.maxCols,g=e.rows+e.y<=i.maxRows,y=e.maxItemCols===void 0?i.maxItemCols:e.maxItemCols,T=e.minItemCols===void 0?i.minItemCols:e.minItemCols,D=e.maxItemRows===void 0?i.maxItemRows:e.maxItemRows,q=e.minItemRows===void 0?i.minItemRows:e.minItemRows,ee=e.cols<=y&&e.cols>=T,H=e.rows<=D&&e.rows>=q,A=!0;if(t){let Ge=e.itemAspectRatio||i.itemAspectRatio;Ge&&(A=e.cols/e.rows===Ge)}let we=e.minItemArea===void 0?i.minItemArea:e.minItemArea,ye=e.maxItemArea===void 0?i.maxItemArea:e.maxItemArea,Ie=e.cols*e.rows,ze=we<=Ie,Pe=ye>=Ie;return!(s&&c&&g&&A&&ee&&H&&ze&&Pe)}findItemWithItem(e){for(let t=0;t<this.grid.length;t++){let i=this.grid[t];if(i.$item()!==e&&this.checkCollisionTwoItems(i.$item(),e))return i}return!1}findItemsWithItem(e){let t=[];for(let i=0;i<this.grid.length;i++){let s=this.grid[i];s.$item()!==e&&this.checkCollisionTwoItems(s.$item(),e)&&t.push(s)}return t}autoPositionItem(e){this.getNextPossiblePosition(e.$item())?(e.notPlaced=!1,e.item().x=e.$item().x,e.item().y=e.$item().y,e.itemChanged()):(e.notPlaced=!0,this.$options().disableWarnings||console.warn("Can't be placed in the bounds of the dashboard!/n"+JSON.stringify(e.item,["cols","rows","x","y"])))}getNextPossiblePosition=(e,t={})=>{let i=this.$options();e.cols===-1&&(e.cols=i.defaultItemCols),e.rows===-1&&(e.rows=i.defaultItemRows),this.setGridDimensions();for(let y=t.y||0;y<this.rows;y++){e.y=y;for(let T=t.x||0;T<this.columns;T++)if(e.x=T,!this.checkCollision(e))return!0}let s=i.maxRows>=this.rows+e.rows,c=i.maxCols>=this.columns+e.cols;return!(this.rows<=this.columns&&s)&&c?(e.x=this.columns,e.y=0,!0):s?(e.y=this.rows,e.x=0,!0):!1};getFirstPossiblePosition=e=>{let t=Object.assign({},e);return this.getNextPossiblePosition(t),t};getLastPossiblePosition=e=>{let t={y:0,x:0};t=this.grid.reduce((s,c)=>{let g=c.$item(),y={y:g.y+g.rows-1,x:g.x+g.cols-1};return oe.compareItems(s,y)===1?y:s},t);let i=Object.assign({},e);return this.getNextPossiblePosition(i,t),i};pixelsToPositionX(e,t,i){let s=t(e/this.curColWidth);return i?s:Math.max(s,0)}pixelsToPositionY(e,t,i){let s=t(e/this.curRowHeight);return i?s:Math.max(s,0)}positionXToPixels(e){return e*this.curColWidth}positionYToPixels(e){return e*this.curRowHeight}getItemComponent(e){return this.grid.find(t=>t.item()===e)}checkCollisionForSwaping(e){let t=!1,i=this.options();if(i.itemValidateCallback&&(t=!i.itemValidateCallback(e)),!t&&this.checkGridCollision(e)&&(t=!0),!t){let s=this.findItemWithItemForSwapping(e);s&&(t=s)}return t}findItemWithItemForSwapping(e){for(let t=this.grid.length-1;t>-1;t--){let i=this.grid[t];if(i.$item()!==e&&o.checkCollisionTwoItemsForSwaping(i.$item(),e))return i}return!1}previewStyle(e=!1){let t=this.gridsterPreview();this.movingItem?(this.compact&&e&&this.compact.checkCompactItem(this.movingItem),t.previewStyle(this.movingItem)):t.previewStyle(null)}static getNewArrayLength(e,t,i){let s=Math.max(e,Math.floor(t/i));return s<0?0:Number.isFinite(s)?Math.floor(s):0}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["gridster"]],viewQuery:function(t,i){t&1&&ge(i.gridsterPreview,Ft,5),t&2&&ue()},inputs:{options:[1,"options"]},ngContentSelectors:en,decls:6,vars:0,consts:[[1,"gridster-column",3,"ngStyle"],[1,"gridster-row",3,"ngStyle"],[1,"gridster-preview"]],template:function(t,i){t&1&&(Ht(),Y(0,Rn,1,1,"div",0,Ot),Y(2,Bn,1,1,"div",1,Ot),Nt(4),v(5,"gridster-preview",2)),t&2&&(Q(i.gridColumns),r(2),Q(i.gridRows))},dependencies:[hi,Ft],styles:[`gridster{position:relative;box-sizing:border-box;background:gray;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:block}gridster.fit{overflow-x:hidden;overflow-y:hidden}gridster.scrollVertical{overflow-x:hidden;overflow-y:auto}gridster.scrollHorizontal{overflow-x:auto;overflow-y:hidden}gridster.fixed{overflow:auto}gridster.mobile{overflow-x:hidden;overflow-y:auto}gridster.mobile gridster-item{position:relative}gridster.gridSize{height:initial;width:initial}gridster.gridSize.fit{height:100%;width:100%}gridster .gridster-column,gridster .gridster-row{position:absolute;display:none;transition:transform .3s;box-sizing:border-box}gridster.display-grid .gridster-column,gridster.display-grid .gridster-row{display:block}gridster .gridster-column{border-left:1px solid white;border-right:1px solid white}gridster .gridster-row{border-top:1px solid white;border-bottom:1px solid white}
`],encapsulation:2,changeDetection:0})}return o})(),It=class{gridsterItem;fromSouth="fromSouth";fromNorth="fromNorth";fromEast="fromEast";fromWest="fromWest";pushedItems=[];pushedItemsTemp=[];pushedItemsTempPath=[];pushedItemsPath=[];gridster;pushedItemsOrder;tryPattern={fromEast:[this.tryWest,this.trySouth,this.tryNorth,this.tryEast],fromWest:[this.tryEast,this.trySouth,this.tryNorth,this.tryWest],fromNorth:[this.trySouth,this.tryEast,this.tryWest,this.tryNorth],fromSouth:[this.tryNorth,this.tryEast,this.tryWest,this.trySouth]};iteration=0;constructor(n){this.gridsterItem=n,this.gridster=n.gridster}destroy(){this.gridster=this.gridsterItem=null}pushItems(n,e){if(this.gridster.$options().pushItems&&!e){this.pushedItemsOrder=[],this.iteration=0;let t=this.push(this.gridsterItem,n);return t||this.restoreTempItems(),this.pushedItemsOrder=[],this.pushedItemsTemp=[],this.pushedItemsTempPath=[],t}else return!1}restoreTempItems(){let n=this.pushedItemsTemp.length-1;for(;n>-1;n--)this.removeFromTempPushed(this.pushedItemsTemp[n])}restoreItems(){let n=0,e=this.pushedItems.length,t;for(;n<e;n++)t=this.pushedItems[n],t.$item().x=t.item().x||0,t.$item().y=t.item().y||0,t.setSize();this.pushedItems=[],this.pushedItemsPath=[]}setPushedItems(){let n=0,e=this.pushedItems.length,t;for(;n<e;n++)t=this.pushedItems[n],t.checkItemChanges(t.$item(),t.item());this.pushedItems=[],this.pushedItemsPath=[]}checkPushBack(){let n=this.pushedItems.length-1,e=!1;for(;n>-1;n--)this.checkPushedItem(this.pushedItems[n],n)&&(e=!0);e&&this.checkPushBack()}push(n,e){if(this.iteration>100)return console.warn("max iteration reached"),!1;if(this.gridster.checkGridCollision(n.$item())||e==="")return!1;let t=this.gridster.findItemsWithItem(n.$item()),i=e===this.fromNorth||e===this.fromWest;t.sort((T,D)=>i?D.$item().y-T.$item().y||D.$item().x-T.$item().x:T.$item().y-D.$item().y||T.$item().x-D.$item().x);let s=0,c,g=!0,y=[];for(;s<t.length;s++){if(c=t[s],c===this.gridsterItem)continue;if(!c.canBeDragged()){g=!1;break}let T=this.pushedItemsTemp.indexOf(c);if(T>-1&&this.pushedItemsTempPath[T].length>10){g=!1;break}if(this.tryPattern[e][0].call(this,c,n))this.pushedItemsOrder.push(c),y.push(c);else if(this.tryPattern[e][1].call(this,c,n))this.pushedItemsOrder.push(c),y.push(c);else if(this.tryPattern[e][2].call(this,c,n))this.pushedItemsOrder.push(c),y.push(c);else if(this.tryPattern[e][3].call(this,c,n))this.pushedItemsOrder.push(c),y.push(c);else{g=!1;break}}if(!g&&(s=this.pushedItemsOrder.lastIndexOf(y[0]),s>-1)){let T=this.pushedItemsOrder.length-1;for(;T>=s;T--)c=this.pushedItemsOrder[T],this.pushedItemsOrder.pop(),this.removeFromTempPushed(c),this.removeFromPushedItem(c)}return this.iteration++,g}trySouth(n,e){return this.gridster.$options().pushDirections.south?(this.addToTempPushed(n),n.$item().y=e.$item().y+e.$item().rows,this.push(n,this.fromNorth)?(n.setSize(),this.addToPushed(n),!0):(this.removeFromTempPushed(n),!1)):!1}tryNorth(n,e){return this.gridster.$options().pushDirections.north?(this.addToTempPushed(n),n.$item().y=e.$item().y-n.$item().rows,this.push(n,this.fromSouth)?(n.setSize(),this.addToPushed(n),!0):(this.removeFromTempPushed(n),!1)):!1}tryEast(n,e){return this.gridster.$options().pushDirections.east?(this.addToTempPushed(n),n.$item().x=e.$item().x+e.$item().cols,this.push(n,this.fromWest)?(n.setSize(),this.addToPushed(n),!0):(this.removeFromTempPushed(n),!1)):!1}tryWest(n,e){return this.gridster.$options().pushDirections.west?(this.addToTempPushed(n),n.$item().x=e.$item().x-n.$item().cols,this.push(n,this.fromEast)?(n.setSize(),this.addToPushed(n),!0):(this.removeFromTempPushed(n),!1)):!1}addToTempPushed(n){let e=this.pushedItemsTemp.indexOf(n);e===-1&&(e=this.pushedItemsTemp.push(n)-1,this.pushedItemsTempPath[e]=[]),this.pushedItemsTempPath[e].push({x:n.$item().x,y:n.$item().y})}removeFromTempPushed(n){let e=this.pushedItemsTemp.indexOf(n),t=this.pushedItemsTempPath[e].pop();t&&(n.$item().x=t.x,n.$item().y=t.y,n.setSize(),this.pushedItemsTempPath[e].length||(this.pushedItemsTemp.splice(e,1),this.pushedItemsTempPath.splice(e,1)))}addToPushed(n){if(this.pushedItems.indexOf(n)<0)this.pushedItems.push(n),this.pushedItemsPath.push([{x:n.item().x||0,y:n.item().y||0},{x:n.$item().x,y:n.$item().y}]);else{let e=this.pushedItems.indexOf(n);this.pushedItemsPath[e].push({x:n.$item().x,y:n.$item().y})}}removeFromPushed(n){n>-1&&(this.pushedItems.splice(n,1),this.pushedItemsPath.splice(n,1))}removeFromPushedItem(n){let e=this.pushedItems.indexOf(n);e>-1&&(this.pushedItemsPath[e].pop(),this.pushedItemsPath.length||(this.pushedItems.splice(e,1),this.pushedItemsPath.splice(e,1)))}checkPushedItem(n,e){let t=this.pushedItemsPath[e],i=t.length-2,s,c,g,y=!1;for(;i>-1;i--)s=t[i],c=n.$item().x,g=n.$item().y,n.$item().x=s.x,n.$item().y=s.y,this.gridster.findItemWithItem(n.$item())?(n.$item().x=c,n.$item().y=g):(n.setSize(),t.splice(i+1,t.length-i-1),y=!0);return t.length<2&&this.removeFromPushed(e),y}},Ke,Et,nn=40,pe,Ze,ve,it=!1,Wt=!1,$t=!1,nt=!1,et,tt=null,St=0,Tt=0,Qi=1/0,Ji=1/0,De,Mt;window.requestAnimationFrame&&window.cancelAnimationFrame?(De=window.requestAnimationFrame,Mt=window.cancelAnimationFrame):(De=o=>setTimeout(()=>o(Date.now()),50),Mt=o=>clearTimeout(o));function on(o,n,e,t,i,s,c,g,y,T){let D=o.$options();Ke=D.scrollSensitivity,Et=D.scrollSpeed,pe=o.el,Ze=y,ve=T;let q=pe.offsetWidth,ee=pe.offsetHeight,H=pe.scrollLeft,A=pe.scrollTop,{clientX:we,clientY:ye}=s;if(St=we,Tt=ye,!D.disableScrollVertical){let Ie=e-A;ee+A-e-i<Ke?(Xn(),!(Ze&&ve&&!ve.south)&&!nt&&Ki(1,g,o)):A>0&&Ie<Ke?(jn(),!(Ze&&ve&&!ve.north)&&!$t&&Ki(-1,g,o)):c.clientY!==ye&&je()}if(!D.disableScrollHorizontal){let Ie=H+q-n-t,ze=n-H,Pe=D.dirType===ne.RTL;Ie<=Ke?(qn(),!(Ze&&ve&&!ve.east)&&!it&&Zi(1,g,o,Pe)):H>0&&ze<Ke?(An(),!(Ze&&ve&&!ve.west)&&!Wt&&Zi(-1,g,o,Pe)):c.clientX!==we&&qe()}}function Ki(o,n,e){if(o>0){nt=!0;let s=e.$options();Ji=s.maxRows*e.curRowHeight+s.margin-e.el.offsetHeight}else $t=!0;let t,i=s=>{if(t===void 0){t=s,tt=De(i);return}if(!pe||o===-1&&pe.scrollTop-Et<0){je();return}let c=(s-t)/nn;t=s;let g=o*Math.round(Et*c);if(nt&&pe.scrollTop+g>Ji){je();return}pe.scrollTop+=g,Tt+=g,n({clientX:St,clientY:Tt}),tt=De(i)};tt=De(i)}function Zi(o,n,e,t){if(o>0){it=!0;let c=e.$options();Qi=c.maxCols*e.curColWidth+c.margin-e.el.offsetWidth}else Wt=!0;let i,s=c=>{if(i===void 0){i=c,et=De(s);return}if(!pe){qe();return}let g=(c-i)/nn;i=c;let y=o*Math.round(Et*g),T=t?-y:y;if(it&&pe.scrollLeft+T>Qi){qe();return}pe.scrollLeft+=T,St+=T,n({clientX:St,clientY:Tt}),et=De(s)};et=De(s)}function sn(){qe(),je(),pe=null}function qe(){et!==null&&Mt(et),it=!1,Wt=!1}function je(){tt!==null&&Mt(tt),$t=!1,nt=!1}function An(){it&&qe()}function qn(){Wt&&qe()}function jn(){nt&&je()}function Xn(){$t&&je()}var Xt=class{gridsterItem;swapedItem;gridster;constructor(n){this.gridsterItem=n,this.gridster=n.gridster}destroy(){this.gridster=this.gridsterItem=this.swapedItem=null}swapItems(){this.gridster.$options().swap&&(this.checkSwapBack(),this.checkSwap(this.gridsterItem))}checkSwapBack(){if(this.swapedItem){let n=this.swapedItem.$item(),e=this.swapedItem.item(),t=n.x,i=n.y;n.x=e.x||0,n.y=e.y||0,this.gridster.checkCollision(n)?(n.x=t,n.y=i):(this.swapedItem.setSize(),this.gridsterItem.$item().x=this.gridsterItem.item().x||0,this.gridsterItem.$item().y=this.gridsterItem.item().y||0,this.swapedItem=void 0)}}restoreSwapItem(){if(this.swapedItem){let n=this.swapedItem.$item(),e=this.swapedItem.item();n.x=e.x||0,n.y=e.y||0,this.swapedItem.setSize(),this.swapedItem=void 0}}setSwapItem(){this.swapedItem&&(this.swapedItem.checkItemChanges(this.swapedItem.$item(),this.swapedItem.item()),this.swapedItem=void 0)}checkSwap(n){let e=n.$item(),t=n.item(),i;if(this.gridster.$options().swapWhileDragging?i=this.gridster.checkCollisionForSwaping(e):i=this.gridster.checkCollision(e),i&&i!==!0&&i.canBeDragged()){let s=i,c=s.$item(),g=e.x,y=c.x,T=c.y,D=e.y,q=g-y,ee=D-T;c.x=t.x-q,c.y=t.y-ee,e.x=s.item().x+q,e.y=s.item().y+ee,this.gridster.checkCollision(c)||this.gridster.checkCollision(e)?(e.x=g,e.y=D,c.x=y,c.y=T):(s.setSize(),this.swapedItem=s,this.gridster.$options().swapWhileDragging&&(this.gridsterItem.checkItemChanges(this.gridsterItem.$item(),this.gridsterItem.item()),this.setSwapItem()))}}},Gn="gridster-item-resizable-handler",me=(function(o){return o.UP="UP",o.DOWN="DOWN",o.LEFT="LEFT",o.RIGHT="RIGHT",o})(me||{}),Gt=class{gridsterItem;gridster;zone;cdRef;lastMouse={clientX:0,clientY:0};offsetLeft;offsetTop;margin;outerMarginTop;outerMarginRight;outerMarginBottom;outerMarginLeft;diffTop;diffLeft;originalClientX;originalClientY;top;left;height;width;positionX;positionY;positionXBackup;positionYBackup;enabled;mousemove;mouseup;mouseleave;cancelOnBlur;touchmove;touchend;touchcancel;mousedown;touchstart;push;swap;path=[];collision=!1;constructor(n,e,t,i){this.gridsterItem=n,this.gridster=e,this.zone=t,this.cdRef=i}destroy(){this.gridster.previewStyle&&this.gridster.previewStyle(!0),this.gridsterItem=this.gridster=this.collision=null,this.mousedown&&(this.mousedown(),this.touchstart())}dragStart(n){if(n.which&&n.which!==1||this.gridster.dragInProgress)return;let e=this.gridster.options(),t=this.gridster.$options();e.draggable&&e.draggable.start&&e.draggable.start(this.gridsterItem.item(),this.gridsterItem,n),n.stopPropagation(),n.preventDefault(),this.zone.runOutsideAngular(()=>{this.mousemove=this.gridsterItem.renderer.listen("document","mousemove",this.dragMove),this.touchmove=this.gridster.renderer.listen(this.gridster.el,"touchmove",this.dragMove)}),this.mouseup=this.gridsterItem.renderer.listen("document","mouseup",this.dragStop),this.mouseleave=this.gridsterItem.renderer.listen("document","mouseleave",this.dragStop),this.cancelOnBlur=this.gridsterItem.renderer.listen("window","blur",this.dragStop),this.touchend=this.gridsterItem.renderer.listen("document","touchend",this.dragStop),this.touchcancel=this.gridsterItem.renderer.listen("document","touchcancel",this.dragStop),this.gridsterItem.renderer.addClass(this.gridsterItem.el,"gridster-item-moving"),this.margin=t.margin,this.outerMarginTop=t.outerMarginTop,this.outerMarginRight=t.outerMarginRight,this.outerMarginBottom=t.outerMarginBottom,this.outerMarginLeft=t.outerMarginLeft,this.offsetLeft=this.gridster.el.scrollLeft-this.gridster.el.offsetLeft,this.offsetTop=this.gridster.el.scrollTop-this.gridster.el.offsetTop,this.left=this.gridsterItem.left-this.margin,this.top=this.gridsterItem.top-this.margin,this.originalClientX=n.clientX,this.originalClientY=n.clientY,this.width=this.gridsterItem.width,this.height=this.gridsterItem.height,t.dirType===ne.RTL?this.diffLeft=n.clientX-this.gridster.el.scrollWidth+this.gridsterItem.left:this.diffLeft=n.clientX+this.offsetLeft-this.margin-this.left,this.diffTop=n.clientY+this.offsetTop-this.margin-this.top,this.gridster.movingItem=this.gridsterItem.$item(),this.gridster.previewStyle(!0),this.push=new It(this.gridsterItem),this.swap=new Xt(this.gridsterItem),this.gridster.dragInProgress=!0,this.gridster.updateGrid(),this.path.push({x:this.gridsterItem.item().x||0,y:this.gridsterItem.item().y||0})}dragMove=n=>{n.stopPropagation(),n.preventDefault(),oe.checkTouchEvent(n);let e=this.getDirections(n);this.gridster.$options().enableBoundaryControl&&(e.includes(me.UP)&&this.gridsterItem.el.getBoundingClientRect().top<this.gridster.el.getBoundingClientRect().top+(this.outerMarginTop??this.margin)&&(e=e.filter(i=>i!=me.UP),n=new MouseEvent(n.type,{clientX:n.clientX,clientY:this.lastMouse.clientY})),e.includes(me.LEFT)&&this.gridsterItem.el.getBoundingClientRect().left<this.gridster.el.getBoundingClientRect().left+(this.outerMarginLeft??this.margin)&&(e=e.filter(i=>i!=me.LEFT),n=new MouseEvent(n.type,{clientX:this.lastMouse.clientX,clientY:n.clientY})),e.includes(me.RIGHT)&&this.gridsterItem.el.getBoundingClientRect().right>this.gridster.el.getBoundingClientRect().right-(this.outerMarginRight??this.margin)&&(e=e.filter(i=>i!=me.RIGHT),n=new MouseEvent(n.type,{clientX:this.lastMouse.clientX,clientY:n.clientY})),e.includes(me.DOWN)&&this.gridsterItem.el.getBoundingClientRect().bottom>this.gridster.el.getBoundingClientRect().bottom-(this.outerMarginBottom??this.margin)&&(e=e.filter(i=>i!=me.DOWN),n=new MouseEvent(n.type,{clientX:n.clientX,clientY:this.lastMouse.clientY}))),e.length&&(this.offsetLeft=this.gridster.el.scrollLeft-this.gridster.el.offsetLeft,this.offsetTop=this.gridster.el.scrollTop-this.gridster.el.offsetTop,on(this.gridster,this.left,this.top,this.width,this.height,n,this.lastMouse,this.calculateItemPositionFromMousePosition),this.calculateItemPositionFromMousePosition(n))};calculateItemPositionFromMousePosition=n=>{let e=this.gridster.options();e.scale?this.calculateItemPositionWithScale(n,e.scale):this.calculateItemPositionWithoutScale(n),this.calculateItemPosition(),this.lastMouse.clientX=n.clientX,this.lastMouse.clientY=n.clientY,this.zone.run(()=>this.gridster.updateGrid())};calculateItemPositionWithScale(n,e){this.gridster.$options().dirType===ne.RTL?this.left=this.gridster.el.scrollWidth-this.originalClientX+(n.clientX-this.originalClientX)/e+this.diffLeft:this.left=this.originalClientX+(n.clientX-this.originalClientX)/e+this.offsetLeft-this.diffLeft,this.top=this.originalClientY+(n.clientY-this.originalClientY)/e+this.offsetTop-this.diffTop}calculateItemPositionWithoutScale(n){this.gridster.$options().dirType===ne.RTL?this.left=this.gridster.el.offsetWidth-(n.clientX+this.offsetLeft-this.diffLeft):this.left=n.clientX+this.offsetLeft-this.diffLeft,this.top=n.clientY+this.offsetTop-this.diffTop}dragStop=n=>{n.stopPropagation(),n.preventDefault(),sn(),this.cancelOnBlur(),this.mousemove(),this.mouseup(),this.mouseleave(),this.touchmove(),this.touchend(),this.touchcancel(),this.gridsterItem.renderer.removeClass(this.gridsterItem.el,"gridster-item-moving"),this.gridster.dragInProgress=!1,this.gridster.updateGrid(),this.path=[];let e=this.gridster.options();e.draggable&&e.draggable.stop?Promise.resolve(e.draggable.stop(this.gridsterItem.item(),this.gridsterItem,n)).then(this.makeDrag,this.cancelDrag):this.makeDrag(),setTimeout(()=>{this.gridster&&(this.gridster.movingItem=null,this.gridster.previewStyle(!0),this.cdRef.markForCheck())})};cancelDrag=()=>{this.gridsterItem.$item().x=this.gridsterItem.item().x||0,this.gridsterItem.$item().y=this.gridsterItem.item().y||0,this.gridsterItem.setSize(),this.push&&this.push.restoreItems(),this.swap&&this.swap.restoreSwapItem(),this.push&&(this.push.destroy(),this.push=null),this.swap&&(this.swap.destroy(),this.swap=null)};makeDrag=()=>{let n=this.gridster.options();this.gridster.$options().draggable.dropOverItems&&n.draggable&&n.draggable.dropOverItemsCallback&&this.collision&&this.collision!==!0&&this.collision.$item()&&n.draggable.dropOverItemsCallback(this.gridsterItem.item(),this.collision.item(),this.gridster),this.collision=!1,this.gridsterItem.setSize(),this.gridsterItem.checkItemChanges(this.gridsterItem.$item(),this.gridsterItem.item()),this.push&&this.push.setPushedItems(),this.swap&&this.swap.setSwapItem(),this.push&&(this.push.destroy(),this.push=null),this.swap&&(this.swap.destroy(),this.swap=null)};calculateItemPosition(){let n=this.gridster.movingItem=this.gridsterItem.$item();if(this.positionX=this.gridster.pixelsToPositionX(this.left,Math.round),this.positionY=this.gridster.pixelsToPositionY(this.top,Math.round),this.positionXBackup=n.x,this.positionYBackup=n.y,n.x=this.positionX,this.gridster.checkGridCollision(n)&&(n.x=this.positionXBackup),n.y=this.positionY,this.gridster.checkGridCollision(n)&&(n.y=this.positionYBackup),this.gridster.gridRenderer.setCellPosition(this.gridsterItem.renderer,this.gridsterItem.el,this.left,this.top),this.positionXBackup!==n.x||this.positionYBackup!==n.y){let e=this.path[this.path.length-1],t="";e.x<n.x?t=this.push.fromWest:e.x>n.x?t=this.push.fromEast:e.y<n.y?t=this.push.fromNorth:e.y>n.y&&(t=this.push.fromSouth);let i=this.gridster.$options();this.push.pushItems(t,i.disablePushOnDrag),this.swap.swapItems(),this.collision=this.gridster.checkCollision(n),this.collision?(n.x=this.positionXBackup,n.y=this.positionYBackup,i.draggable.dropOverItems&&this.collision!==!0&&this.collision.$item()&&(this.gridster.movingItem=null)):this.path.push({x:n.x,y:n.y}),this.push.checkPushBack()}else this.collision=!1;this.gridster.previewStyle(!0)}toggle(){let n=this.gridsterItem.canBeDragged();!this.enabled&&n?(this.enabled=!this.enabled,this.mousedown=this.gridsterItem.renderer.listen(this.gridsterItem.el,"mousedown",this.dragStartDelay),this.touchstart=this.gridsterItem.renderer.listen(this.gridsterItem.el,"touchstart",this.dragStartDelay)):this.enabled&&!n&&(this.enabled=!this.enabled,this.mousedown(),this.touchstart())}dragStartDelay=n=>{if(n.target.classList.contains(Gn)||oe.checkContentClassForEvent(this.gridster,n))return;oe.checkTouchEvent(n);let t=this.gridster.$options();if(!t.draggable.delayStart){this.dragStart(n);return}let i=setTimeout(()=>{this.dragStart(n),ee(),this.cdRef.markForCheck()},t.draggable.delayStart),s=this.gridsterItem.renderer.listen("document","mouseup",ee),c=this.gridsterItem.renderer.listen("document","mouseleave",ee),g=this.gridsterItem.renderer.listen("window","blur",ee),y=this.gridsterItem.renderer.listen("document","touchmove",q),T=this.gridsterItem.renderer.listen("document","touchend",ee),D=this.gridsterItem.renderer.listen("document","touchcancel",ee);function q(H){oe.checkTouchEvent(H),(Math.abs(H.clientX-n.clientX)>9||Math.abs(H.clientY-n.clientY)>9)&&ee()}function ee(){clearTimeout(i),g(),s(),c(),y(),T(),D()}};getDirections(n){let e=[];return this.lastMouse.clientX===0&&this.lastMouse.clientY===0&&(this.lastMouse.clientY=n.clientY,this.lastMouse.clientX=n.clientX),this.lastMouse.clientY>n.clientY&&e.push(me.UP),this.lastMouse.clientY<n.clientY&&e.push(me.DOWN),this.lastMouse.clientX<n.clientX&&e.push(me.RIGHT),this.lastMouse.clientX>n.clientX&&e.push(me.LEFT),e}},Yt=class{gridsterItem;fromSouth="fromSouth";fromNorth="fromNorth";fromEast="fromEast";fromWest="fromWest";pushedItems=[];pushedItemsPath=[];gridster;tryPattern={fromEast:this.tryWest,fromWest:this.tryEast,fromNorth:this.trySouth,fromSouth:this.tryNorth};constructor(n){this.gridsterItem=n,this.gridster=n.gridster}destroy(){this.gridster=this.gridsterItem=null}pushItems(n){return this.gridster.$options().pushResizeItems?this.push(this.gridsterItem,n):!1}restoreItems(){let n=0,e=this.pushedItems.length,t;for(;n<e;n++){t=this.pushedItems[n];let i=t.$item(),s=t.item();i.x=s.x||0,i.y=s.y||0,i.cols=s.cols||1,i.row=s.row||1,t.setSize()}this.pushedItems=[],this.pushedItemsPath=[]}setPushedItems(){let n=0,e=this.pushedItems.length,t;for(;n<e;n++)t=this.pushedItems[n],t.checkItemChanges(t.$item(),t.item());this.pushedItems=[],this.pushedItemsPath=[]}checkPushBack(){let n=this.pushedItems.length-1,e=!1;for(;n>-1;n--)this.checkPushedItem(this.pushedItems[n],n)&&(e=!0);e&&this.checkPushBack()}push(n,e){let t=this.gridster.checkCollision(n.$item());if(t&&t!==!0&&t!==this.gridsterItem&&t.canBeResized()){if(this.tryPattern[e].call(this,t,n,e))return!0}else if(t===!1)return!0;return!1}trySouth(n,e,t){let i=n.$item(),s=i.y,c=i.rows;return i.y=e.$item().y+e.$item().rows,i.rows=c+s-i.y,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.y=s,i.rows=c,!1)}tryNorth(n,e,t){let i=n.$item(),s=i.rows;return i.rows=e.$item().y-i.y,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.rows=s,!1)}tryEast(n,e,t){let i=n.$item(),s=i.x,c=i.cols;return i.x=e.$item().x+e.$item().cols,i.cols=c+s-i.x,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.x=s,i.cols=c,!1)}tryWest(n,e,t){let i=n.$item(),s=i.cols;return i.cols=e.$item().x-i.x,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.cols=s,!1)}addToPushed(n){let e=n.item(),t=n.$item();if(this.pushedItems.indexOf(n)<0)this.pushedItems.push(n),this.pushedItemsPath.push([{x:e.x||0,y:e.y||0,cols:e.cols||0,rows:e.rows||0},{x:t.x,y:t.y,cols:t.cols,rows:t.rows}]);else{let i=this.pushedItems.indexOf(n);this.pushedItemsPath[i].push({x:t.x,y:t.y,cols:t.cols,rows:t.rows})}}removeFromPushed(n){n>-1&&(this.pushedItems.splice(n,1),this.pushedItemsPath.splice(n,1))}checkPushedItem(n,e){let t=this.pushedItemsPath[e],i=n.$item();for(let s=t.length-2;s>-1;s--){let c=t[s],g=i.x,y=i.y,T=i.cols,D=i.rows;i.x=c.x,i.y=c.y,i.cols=c.cols,i.rows=c.rows,this.gridster.findItemWithItem(i)?(i.x=g,i.y=y,i.cols=T,i.rows=D):(n.setSize(),t.splice(s+1,t.length-1-s))}return t.length<2?(this.removeFromPushed(e),!0):!1}},Qt=class{gridsterItem;gridster;zone;lastMouse={clientX:0,clientY:0};itemBackup={x:0,y:0,cols:0,rows:0};resizeEventScrollType={west:!1,east:!1,north:!1,south:!1};directionFunction=null;resizeEnabled=w(!1);resizableHandles=w({s:!1,e:!1,n:!1,w:!1,se:!1,ne:!1,sw:!1,nw:!1});mousemove;mouseup;mouseleave;cancelOnBlur;touchmove;touchend;touchcancel;push;pushResize;minHeight;minWidth;offsetTop;offsetLeft;diffTop;diffLeft;diffRight;diffBottom;margin;outerMarginTop;outerMarginRight;outerMarginBottom;outerMarginLeft;originalClientX;originalClientY;top;left;bottom;right;width;height;hasRatio;constructor(n,e,t){this.gridsterItem=n,this.gridster=e,this.zone=t}destroy(){this.gridster?.previewStyle(),this.gridster=this.gridsterItem=null}dragStart(n){if(n.which&&n.which!==1||this.gridster.dragInProgress)return;let e=this.gridster.options(),t=this.gridster.$options();e.resizable&&e.resizable.start&&e.resizable.start(this.gridsterItem.item(),this.gridsterItem,n),n.stopPropagation(),n.preventDefault(),this.zone.runOutsideAngular(()=>{this.mousemove=this.gridsterItem.renderer.listen("document","mousemove",this.dragMove),this.touchmove=this.gridster.renderer.listen(this.gridster.el,"touchmove",this.dragMove)}),this.mouseup=this.gridsterItem.renderer.listen("document","mouseup",this.dragStop),this.mouseleave=this.gridsterItem.renderer.listen("document","mouseleave",this.dragStop),this.cancelOnBlur=this.gridsterItem.renderer.listen("window","blur",this.dragStop),this.touchend=this.gridsterItem.renderer.listen("document","touchend",this.dragStop),this.touchcancel=this.gridsterItem.renderer.listen("document","touchcancel",this.dragStop),this.gridsterItem.renderer.addClass(this.gridsterItem.el,"gridster-item-resizing"),this.lastMouse.clientX=n.clientX,this.lastMouse.clientY=n.clientY,this.left=this.gridsterItem.left,this.top=this.gridsterItem.top,this.originalClientX=n.clientX,this.originalClientY=n.clientY,this.width=this.gridsterItem.width,this.height=this.gridsterItem.height,this.bottom=this.gridsterItem.top+this.gridsterItem.height,this.right=this.gridsterItem.left+this.gridsterItem.width,this.margin=t.margin,this.outerMarginTop=t.outerMarginTop,this.outerMarginRight=t.outerMarginRight,this.outerMarginBottom=t.outerMarginBottom,this.outerMarginLeft=t.outerMarginLeft,this.offsetLeft=this.gridster.el.scrollLeft-this.gridster.el.offsetLeft,this.offsetTop=this.gridster.el.scrollTop-this.gridster.el.offsetTop,this.diffLeft=n.clientX+this.offsetLeft-this.left,this.diffRight=n.clientX+this.offsetLeft-this.right,this.diffTop=n.clientY+this.offsetTop-this.top,this.diffBottom=n.clientY+this.offsetTop-this.bottom,this.minHeight=this.gridster.positionYToPixels(this.gridsterItem.$item().minItemRows||t.minItemRows)-this.margin,this.minWidth=this.gridster.positionXToPixels(this.gridsterItem.$item().minItemCols||t.minItemCols)-this.margin,this.gridster.movingItem=this.gridsterItem.$item(),this.gridster.previewStyle(),this.push=new It(this.gridsterItem),this.pushResize=new Yt(this.gridsterItem),this.gridster.dragInProgress=!0,this.hasRatio=!!(t.itemAspectRatio||this.gridsterItem.$item().itemAspectRatio),this.itemBackup={x:0,y:0,cols:0,rows:0},this.gridster.updateGrid();let{classList:i}=n.target;i.contains("handle-n")?(this.resizeEventScrollType.north=!0,this.directionFunction=this.handleNorth):i.contains("handle-w")?t.dirType===ne.RTL?(this.resizeEventScrollType.east=!0,this.directionFunction=this.handleEast):(this.resizeEventScrollType.west=!0,this.directionFunction=this.handleWest):i.contains("handle-s")?(this.resizeEventScrollType.south=!0,this.directionFunction=this.handleSouth):i.contains("handle-e")?t.dirType===ne.RTL?(this.resizeEventScrollType.west=!0,this.directionFunction=this.handleWest):(this.resizeEventScrollType.east=!0,this.directionFunction=this.handleEast):i.contains("handle-nw")?t.dirType===ne.RTL?(this.resizeEventScrollType.north=!0,this.resizeEventScrollType.east=!0,this.directionFunction=this.handleNorthEast):(this.resizeEventScrollType.north=!0,this.resizeEventScrollType.west=!0,this.directionFunction=this.handleNorthWest):i.contains("handle-ne")?t.dirType===ne.RTL?(this.resizeEventScrollType.north=!0,this.resizeEventScrollType.west=!0,this.directionFunction=this.handleNorthWest):(this.resizeEventScrollType.north=!0,this.resizeEventScrollType.east=!0,this.directionFunction=this.handleNorthEast):i.contains("handle-sw")?t.dirType===ne.RTL?(this.resizeEventScrollType.south=!0,this.resizeEventScrollType.east=!0,this.directionFunction=this.handleSouthEast):(this.resizeEventScrollType.south=!0,this.resizeEventScrollType.west=!0,this.directionFunction=this.handleSouthWest):i.contains("handle-se")&&(t.dirType===ne.RTL?(this.resizeEventScrollType.south=!0,this.resizeEventScrollType.west=!0,this.directionFunction=this.handleSouthWest):(this.resizeEventScrollType.south=!0,this.resizeEventScrollType.east=!0,this.directionFunction=this.handleSouthEast))}dragMove=n=>{if(this.directionFunction===null)throw new Error("The `directionFunction` has not been set before calling `dragMove`.");n.stopPropagation(),n.preventDefault(),oe.checkTouchEvent(n),this.offsetTop=this.gridster.el.scrollTop-this.gridster.el.offsetTop,this.offsetLeft=this.gridster.el.scrollLeft-this.gridster.el.offsetLeft,on(this.gridster,this.left,this.top,this.width,this.height,n,this.lastMouse,this.directionFunction,!0,this.resizeEventScrollType);let e=this.gridster.$options().scale;this.directionFunction({clientX:this.originalClientX+(n.clientX-this.originalClientX)/e,clientY:this.originalClientY+(n.clientY-this.originalClientY)/e}),this.lastMouse.clientX=n.clientX,this.lastMouse.clientY=n.clientY,this.zone.run(()=>{this.gridster.updateGrid()})};dragStop=n=>{n.stopPropagation(),n.preventDefault(),sn(),this.mousemove(),this.mouseup(),this.mouseleave(),this.cancelOnBlur(),this.touchmove(),this.touchend(),this.touchcancel(),this.gridster.dragInProgress=!1,this.resizeEventScrollType={west:!1,east:!1,north:!1,south:!1},this.gridster.updateGrid();let e=this.gridster.options();e.resizable&&e.resizable.stop?Promise.resolve(e.resizable.stop(this.gridsterItem.item(),this.gridsterItem,n)).then(this.makeResize,this.cancelResize):this.makeResize(),setTimeout(()=>{this.gridsterItem.renderer.removeClass(this.gridsterItem.el,"gridster-item-resizing"),this.gridster&&(this.gridster.movingItem=null,this.gridster.previewStyle())})};cancelResize=()=>{let n=this.gridsterItem.$item(),e=this.gridsterItem.item();n.cols=e.cols||1,n.rows=e.rows||1,n.x=e.x||0,n.y=e.y||0,this.gridsterItem.setSize(),this.push.restoreItems(),this.pushResize.restoreItems(),this.push.destroy(),this.push=null,this.pushResize.destroy(),this.pushResize=null};makeResize=()=>{this.gridsterItem.setSize(),this.gridsterItem.checkItemChanges(this.gridsterItem.$item(),this.gridsterItem.item()),this.push.setPushedItems(),this.pushResize.setPushedItems(),this.push.destroy(),this.push=null,this.pushResize.destroy(),this.pushResize=null};check=n=>(this.hasRatio&&this.enforceAspectRatio(),this.pushResize.pushItems(n),this.push.pushItems(n,this.gridster.$options().disablePushOnResize),this.gridster.checkCollision(this.gridsterItem.$item(),!0)?(this.resetItem(this.hasRatio),!1):(this.gridster.previewStyle(),this.pushResize.checkPushBack(),this.push.checkPushBack(),!0));getNewNorthPosition=n=>{this.top=n.clientY+this.offsetTop-this.diffTop,this.height=this.bottom-this.top,this.minHeight>this.height?(this.height=this.minHeight,this.top=this.bottom-this.minHeight):this.gridster.$options().enableBoundaryControl&&(this.top=Math.max(0,this.top),this.height=this.bottom-this.top);let e=this.gridster.$options().pushItems?this.margin:0;return this.gridster.pixelsToPositionY(this.top+e,Math.floor)};handleNorth=n=>{let e=this.getNewNorthPosition(n),t=this.gridsterItem.$item();t.y!==e&&(this.makeItemBackup(),t.rows+=t.y-e,t.y=e,!this.check(this.pushResize.fromSouth))||(this.setItemTop(this.top),this.setItemHeight(this.height))};getNewWestPosition=n=>{let e=this.gridster.$options(),t=e.dirType===ne.RTL?this.originalClientX+(this.originalClientX-n.clientX):n.clientX;this.left=t+this.offsetLeft-this.diffLeft,this.width=this.right-this.left,this.minWidth>this.width?(this.width=this.minWidth,this.left=this.right-this.minWidth):e.enableBoundaryControl&&(this.left=Math.max(0,this.left),this.width=this.right-this.left);let i=e.pushItems?this.margin:0;return this.gridster.pixelsToPositionX(this.left+i,Math.floor)};handleWest=n=>{let e=this.getNewWestPosition(n),t=this.gridsterItem.$item();t.x!==e&&(this.makeItemBackup(),t.cols+=t.x-e,t.x=e,!this.check(this.pushResize.fromEast))||(this.setItemLeft(this.left),this.setItemWidth(this.width))};getNewSouthPosition=n=>{this.height=n.clientY+this.offsetTop-this.diffBottom-this.top,this.minHeight>this.height&&(this.height=this.minHeight),this.bottom=this.top+this.height;let e=this.gridster.$options();if(e.enableBoundaryControl){let i=this.outerMarginBottom??this.margin,s=this.gridster.el.getBoundingClientRect();this.bottom=Math.min(this.bottom,s.bottom-s.top-2*i),this.height=this.bottom-this.top}let t=e.pushItems?0:this.margin;return this.gridster.pixelsToPositionY(this.bottom+t,Math.ceil)};handleSouth=n=>{let e=this.getNewSouthPosition(n),t=this.gridsterItem.$item();t.y+t.rows!==e&&(this.makeItemBackup(),t.rows=e-t.y,!this.check(this.pushResize.fromNorth))||this.setItemHeight(this.height)};getNewEastPosition=n=>{let e=this.gridster.$options(),t=e.dirType===ne.RTL?this.originalClientX+(this.originalClientX-n.clientX):n.clientX;if(this.width=t+this.offsetLeft-this.diffRight-this.left,this.minWidth>this.width&&(this.width=this.minWidth),this.right=this.left+this.width,e.enableBoundaryControl){let s=this.outerMarginRight??this.margin,c=this.gridster.el.getBoundingClientRect();this.right=Math.min(this.right,c.right-c.left-2*s),this.width=this.right-this.left}let i=e.pushItems?0:this.margin;return this.gridster.pixelsToPositionX(this.right+i,Math.ceil)};handleEast=n=>{let e=this.getNewEastPosition(n),t=this.gridsterItem.$item();t.x+t.cols!==e&&(this.makeItemBackup(),t.cols=e-t.x,!this.check(this.pushResize.fromWest))||this.setItemWidth(this.width)};handleNorthWest=n=>{let e=this.getNewNorthPosition(n),t=this.getNewWestPosition(n),i=this.gridsterItem.$item();(i.y!==e||i.x!==t)&&(this.makeItemBackup(),i.rows+=i.y-e,i.y=e,i.cols+=i.x-t,i.x=t,!this.check(this.pushResize.fromSouth))||(this.setItemTop(this.top),this.setItemHeight(this.height),this.setItemLeft(this.left),this.setItemWidth(this.width))};handleNorthEast=n=>{let e=this.getNewNorthPosition(n),t=this.getNewEastPosition(n),i=this.gridsterItem.$item();(i.y!==e||i.x+i.cols!==t)&&(this.makeItemBackup(),i.rows+=i.y-e,i.y=e,i.cols=t-i.x,!this.check(this.pushResize.fromSouth))||(this.setItemTop(this.top),this.setItemHeight(this.height),this.setItemWidth(this.width))};handleSouthWest=n=>{let e=this.getNewSouthPosition(n),t=this.getNewWestPosition(n),i=this.gridsterItem.$item();(i.y+i.rows!==e||i.x!==t)&&(this.makeItemBackup(),i.rows=e-i.y,i.cols+=i.x-t,i.x=t,!this.check(this.pushResize.fromNorth))||(this.setItemLeft(this.left),this.setItemHeight(this.height),this.setItemWidth(this.width))};handleSouthEast=n=>{let e=this.getNewSouthPosition(n),t=this.getNewEastPosition(n),i=this.gridsterItem.$item();(i.y+i.rows!==e||i.x+i.cols!==t)&&(this.makeItemBackup(),i.rows=e-i.y,i.cols=t-i.x,!this.check(this.pushResize.fromNorth))||(this.setItemHeight(this.height),this.setItemWidth(this.width))};makeItemBackup(){let n=this.gridsterItem.$item();this.itemBackup.x=n.x,this.itemBackup.y=n.y,this.itemBackup.cols=n.cols,this.itemBackup.rows=n.rows}resetItem(n=!1){let e=this.gridsterItem.$item();e.x!==this.itemBackup.x&&(e.x=this.itemBackup.x,n||(this.left=this.gridster.positionXToPixels(e.x),this.setItemLeft(this.left))),e.y!==this.itemBackup.y&&(e.y=this.itemBackup.y,n||(this.top=this.gridster.positionYToPixels(e.y),this.setItemTop(this.top))),e.cols!==this.itemBackup.cols&&(e.cols=this.itemBackup.cols,n||this.setItemWidth(this.gridster.positionXToPixels(e.cols)-this.margin)),e.rows!==this.itemBackup.rows&&(e.rows=this.itemBackup.rows,n||this.setItemHeight(this.gridster.positionYToPixels(e.rows)-this.margin))}toggle(){this.resizeEnabled.set(this.gridsterItem.canBeResized()),this.resizableHandles.set(this.gridsterItem.getResizableHandles())}dragStartDelay(n){if(oe.checkTouchEvent(n),!this.gridster.$options().resizable.delayStart){this.dragStart(n);return}let e=setTimeout(()=>{this.dragStart(n),D()},this.gridster.$options().resizable.delayStart),{cancelMouse:t,cancelMouseLeave:i,cancelOnBlur:s,cancelTouchMove:c,cancelTouchEnd:g,cancelTouchCancel:y}=this.zone.runOutsideAngular(()=>{let q=this.gridsterItem.renderer.listen("document","mouseup",D),ee=this.gridsterItem.renderer.listen("document","mouseleave",D),H=this.gridsterItem.renderer.listen("window","blur",D),A=this.gridsterItem.renderer.listen("document","touchmove",T),we=this.gridsterItem.renderer.listen("document","touchend",D),ye=this.gridsterItem.renderer.listen("document","touchcancel",D);return{cancelMouse:q,cancelMouseLeave:ee,cancelOnBlur:H,cancelTouchMove:A,cancelTouchEnd:we,cancelTouchCancel:ye}});function T(q){oe.checkTouchEvent(q),(Math.abs(q.clientX-n.clientX)>9||Math.abs(q.clientY-n.clientY)>9)&&D()}function D(){clearTimeout(e),s(),t(),i(),c(),g(),y()}}setItemTop(n){this.gridster.gridRenderer.setCellPosition(this.gridsterItem.renderer,this.gridsterItem.el,this.left,n)}setItemLeft(n){this.gridster.gridRenderer.setCellPosition(this.gridsterItem.renderer,this.gridsterItem.el,n,this.top)}setItemHeight(n){this.gridsterItem.renderer.setStyle(this.gridsterItem.el,"height",n+"px")}setItemWidth(n){this.gridsterItem.renderer.setStyle(this.gridsterItem.el,"width",n+"px")}enforceAspectRatio(){let n=this.gridster.$options(),e=this.gridsterItem.$item(),t=e.itemAspectRatio||n.itemAspectRatio;if(!t)return;let i=t*(this.gridster.curColWidth/this.gridster.curRowHeight),s=e.minItemCols||n.minItemCols,c=e.minItemRows||n.minItemRows,g=this.gridster.positionXToPixels(s)-this.margin,y=this.gridster.positionYToPixels(c)-this.margin,T=e.maxItemCols||n.maxItemCols||0,D=e.maxItemRows||n.maxItemRows||0,q=T?this.gridster.positionXToPixels(T)-this.margin:Number.MAX_VALUE,ee=D?this.gridster.positionYToPixels(D)-this.margin:Number.MAX_VALUE,H=this.width,A=this.height;if(this.resizeEventScrollType.north||this.resizeEventScrollType.south?(H=this.height*i,H<g?(H=g,A=g/i):H>q&&(H=q,A=q/i)):(this.resizeEventScrollType.east||this.resizeEventScrollType.west)&&(A=this.width/i,A<y?(A=y,H=y*i):A>ee&&(A=ee,H=ee*i)),n.enableBoundaryControl){let Pe=this.gridster.el.getBoundingClientRect(),Ge=Math.max(this.outerMarginTop||this.margin,this.outerMarginRight||this.margin,this.outerMarginBottom||this.margin,this.outerMarginLeft||this.margin),Kt=Pe.width-2*Ge,Zt=Pe.height-2*Ge;this.resizeEventScrollType.west?this.right-H<0&&(H=this.right,A=H/i):this.resizeEventScrollType.east&&this.left+H>Kt&&(H=Kt-this.left,A=H/i),this.resizeEventScrollType.north?this.bottom-A<0&&(A=this.bottom,H=A*i):this.resizeEventScrollType.south&&this.top+A>Zt&&(A=Zt-this.top,H=A*i)}this.width=H,this.height=A,this.resizeEventScrollType.west&&(this.left=this.right-this.width),this.resizeEventScrollType.north&&(this.top=this.bottom-this.height);let we=n.pushItems?0:this.margin,ye=n.pushItems?0:this.margin,Ie=n.pushItems?this.margin:0,ze=n.pushItems?this.margin:0;e.x=this.gridster.pixelsToPositionX(this.left+we,Math.floor),e.y=this.gridster.pixelsToPositionY(this.top+ye,Math.floor),e.cols=this.gridster.pixelsToPositionX(this.width+Ie,Math.ceil),e.rows=this.gridster.pixelsToPositionY(this.height+ze,Math.ceil),this.setItemTop(this.top),this.setItemLeft(this.left),this.setItemWidth(this.width),this.setItemHeight(this.height)}},rn=(()=>{class o{item=O.required();itemInit=lt();itemChange=lt();itemResize=lt();cdRef=C(Be);el=C(He).nativeElement;gridster=C(kt);renderer=C(at);zone=C(Lt);$item=Je(()=>oe.merge({},this.item(),{cols:void 0,rows:void 0,x:void 0,y:void 0,layerIndex:void 0,dragEnabled:void 0,resizeEnabled:void 0,compactEnabled:void 0,itemAspectRatio:void 0,maxItemRows:void 0,minItemRows:void 0,maxItemCols:void 0,minItemCols:void 0,maxItemArea:void 0,minItemArea:void 0,resizableHandles:{s:void 0,e:void 0,n:void 0,w:void 0,se:void 0,ne:void 0,sw:void 0,nw:void 0}}));top;left;width;height;drag=new Gt(this,this.gridster,this.zone,this.cdRef);resize=new Qt(this,this.gridster,this.zone);notPlaced;init;zIndex(){return this.getLayerIndex()+this.gridster.$options().baseLayerIndex}constructor(){zt(()=>{this.$item(),this.init?pi(()=>this.setSize()):this.gridster.calculateLayout$.next()})}ngOnInit(){this.gridster.addItem(this)}ngOnDestroy(){this.gridster.removeItem(this),this.drag.destroy(),this.resize.destroy(),this.drag=this.resize=null}setSize(){this.renderer.setStyle(this.el,"display",this.notPlaced?"":"block"),this.gridster.gridRenderer.updateItem(this.el,this.$item(),this.renderer),this.updateItemSize()}updateItemSize(){let e=this.gridster.options(),t=this.gridster.$options(),i=this.$item(),s=i.y*this.gridster.curRowHeight,c=i.x*this.gridster.curColWidth,g=i.cols*this.gridster.curColWidth-t.margin,y=i.rows*this.gridster.curRowHeight-t.margin;this.top=s,this.left=c;let T=this.item();!this.init&&g>0&&y>0&&(this.init=!0,T.initCallback&&T.initCallback(T,this),e.itemInitCallback&&e.itemInitCallback(T,this),this.itemInit.emit({item:T,itemComponent:this}),t.scrollToNewItems&&this.el.scrollIntoView({block:"end",inline:"nearest",behavior:"smooth"})),(g!==this.width||y!==this.height)&&(this.width=g,this.height=y,e.itemResizeCallback&&e.itemResizeCallback(T,this),this.itemResize.emit({item:T,itemComponent:this}))}itemChanged(){let e=this.gridster.options(),t=this.item();e.itemChangeCallback&&e.itemChangeCallback(t,this),this.itemChange.emit({item:t,itemComponent:this})}checkItemChanges(e,t){if(e.rows===t.rows&&e.cols===t.cols&&e.x===t.x&&e.y===t.y)return;let i=this.$item();if(this.gridster.checkCollision(i))i.x=t.x||0,i.y=t.y||0,i.cols=t.cols||1,i.rows=t.rows||1,this.setSize();else{let s=this.item();s.cols=i.cols,s.rows=i.rows,s.x=i.x,s.y=i.y,this.gridster.calculateLayout$.next(),this.itemChanged()}}canBeDragged(){let e=this.gridster.$options().draggable.enabled,t=this.$item(),i=t.dragEnabled===void 0?e:t.dragEnabled;return!this.gridster.mobile&&e&&i}canBeResized(){let e=this.gridster.$options().resizable.enabled,t=this.$item(),i=t.resizeEnabled===void 0?e:t.resizeEnabled;return!this.gridster.mobile&&e&&i}getResizableHandles(){let e=this.gridster.$options().resizable.handles,t=this.$item().resizableHandles;return t===void 0?e:V(V({},e),t)}bringToFront(e){if(e&&e<=0)return;let t=this.getLayerIndex(),i=this.gridster.$options().maxLayerIndex;if(t<i){let s=e?t+e:i;this.item().layerIndex=this.$item().layerIndex=s>i?i:s}}sendToBack(e){if(e&&e<=0)return;let t=this.getLayerIndex();if(t>0){let i=e?t-e:0;this.item().layerIndex=this.$item().layerIndex=i<0?0:i}}getLayerIndex(){let e=this.item();return e.layerIndex!==void 0?e.layerIndex:this.gridster.$options().defaultLayerIndex!==void 0?this.gridster.$options().defaultLayerIndex:0}JSON=JSON;static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["gridster-item"]],hostVars:2,hostBindings:function(t,i){t&2&&be("z-index",i.zIndex())},inputs:{item:[1,"item"]},outputs:{itemInit:"itemInit",itemChange:"itemChange",itemResize:"itemResize"},ngContentSelectors:en,decls:9,vars:8,consts:[[1,"gridster-item-resizable-handler","handle-s"],[1,"gridster-item-resizable-handler","handle-e"],[1,"gridster-item-resizable-handler","handle-n"],[1,"gridster-item-resizable-handler","handle-w"],[1,"gridster-item-resizable-handler","handle-se"],[1,"gridster-item-resizable-handler","handle-ne"],[1,"gridster-item-resizable-handler","handle-sw"],[1,"gridster-item-resizable-handler","handle-nw"],[1,"gridster-item-resizable-handler","handle-s",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-e",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-n",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-w",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-se",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-ne",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-sw",3,"mousedown","touchstart"],[1,"gridster-item-resizable-handler","handle-nw",3,"mousedown","touchstart"]],template:function(t,i){t&1&&(Ht(),Nt(0),u(1,Ln,1,0,"div",0),u(2,zn,1,0,"div",1),u(3,Vn,1,0,"div",2),u(4,On,1,0,"div",3),u(5,Hn,1,0,"div",4),u(6,Nn,1,0,"div",5),u(7,Un,1,0,"div",6),u(8,Fn,1,0,"div",7)),t&2&&(r(),f(i.resize.resizableHandles().s&&i.resize.resizeEnabled()?1:-1),r(),f(i.resize.resizableHandles().e&&i.resize.resizeEnabled()?2:-1),r(),f(i.resize.resizableHandles().n&&i.resize.resizeEnabled()?3:-1),r(),f(i.resize.resizableHandles().w&&i.resize.resizeEnabled()?4:-1),r(),f(i.resize.resizableHandles().se&&i.resize.resizeEnabled()?5:-1),r(),f(i.resize.resizableHandles().ne&&i.resize.resizeEnabled()?6:-1),r(),f(i.resize.resizableHandles().sw&&i.resize.resizeEnabled()?7:-1),r(),f(i.resize.resizableHandles().nw&&i.resize.resizeEnabled()?8:-1))},styles:[`gridster-item{box-sizing:border-box;z-index:1;position:absolute;overflow:hidden;transition:.3s;display:none;background:#fff;-webkit-user-select:text;user-select:text}gridster-item.gridster-item-moving{cursor:move}gridster-item.gridster-item-resizing,gridster-item.gridster-item-moving{transition:0s;z-index:2;box-shadow:0 0 5px 5px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.gridster-item-resizable-handler{position:absolute;z-index:2}.gridster-item-resizable-handler.handle-n{cursor:ns-resize;height:10px;right:0;top:0;left:0}.gridster-item-resizable-handler.handle-e{cursor:ew-resize;width:10px;bottom:0;right:0;top:0}.gridster-item-resizable-handler.handle-s{cursor:ns-resize;height:10px;right:0;bottom:0;left:0}.gridster-item-resizable-handler.handle-w{cursor:ew-resize;width:10px;left:0;top:0;bottom:0}.gridster-item-resizable-handler.handle-ne{cursor:ne-resize;width:10px;height:10px;right:0;top:0}.gridster-item-resizable-handler.handle-nw{cursor:nw-resize;width:10px;height:10px;left:0;top:0}.gridster-item-resizable-handler.handle-se{cursor:se-resize;width:0;height:0;right:0;bottom:0;border-style:solid;border-width:0 0 10px 10px;border-color:transparent}.gridster-item-resizable-handler.handle-sw{cursor:sw-resize;width:10px;height:10px;left:0;bottom:0}gridster-item:hover .gridster-item-resizable-handler.handle-se{border-color:transparent transparent #ccc}
`],encapsulation:2,changeDetection:0})}return o})();var Yn=(o,n)=>n.github;function Qn(o,n){if(o&1&&(b(0,"li"),a(1),b(2,"a",23),a(3),x()()),o&2){let e=n.$implicit;r(),I(" ",e.language,": "),r(),Ce("href",`https://github.com/${e.github}`,rt),r(),_(e.github)}}var an=(()=>{class o{$activeModal=C(We);translators=[{language:"Finnish",github:"l1500s"},{language:"Hebrew",github:"seidnerj"},{language:"Polish",github:"mkz212"},{language:"Thai",github:"tomzt"},{language:"Ukrainian",github:"xrust83"},{language:"Vietnam",github:"khanhnd88"}];dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-credits"]],decls:96,vars:27,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","align-items-center","w-100","pb-0"],[1,"w-100","text-center","primary-text","mb-3"],[1,"fas","fa-heart","icon-xl"],["href","https://twitter.com/nfarina","target","_blank","rel","noopener noreferrer"],["href","https://twitter.com/khaost","target","_blank","rel","noopener noreferrer"],["href","https://github.com/homebridge/HAP-NodeJS","target","_blank","rel","noopener noreferrer"],["href","https://github.com/Supereg","target","_blank","rel","noopener noreferrer"],[1,"font-monospace"],["href","https://github.com/oznu","target","_blank","rel","noopener noreferrer"],["href","https://github.com/homebridge/homebridge/graphs/contributors"],["href","https://github.com/rfiorentino1","target","_blank","rel","noopener noreferrer"],["href","https://github.com/homebridge/homebridge-config-ui-x/graphs/contributors"],[1,"mt-1"],["href","https://github.com/appletechy","target","_blank","rel","noopener noreferrer"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"],["target","_blank","rel","noopener noreferrer",3,"href"]],template:function(t,i){t&1&&(b(0,"div",0)(1,"div",1)(2,"h5",2),a(3),m(4,"translate"),x(),b(5,"button",3),m(6,"translate"),J("click",function(){return i.dismissModal()}),x()(),b(7,"div",4)(8,"div",5),X(9,"i",6),x(),b(10,"h5"),a(11,"Homebridge"),x(),b(12,"ul")(13,"li"),a(14," Homebridge was originally created by "),b(15,"a",7),a(16,"Nick Farina"),x(),a(17,". "),x(),b(18,"li"),a(19," The original HomeKit API work was done by "),b(20,"a",8),a(21,"Khaos Tian"),x(),a(22," in his "),b(23,"a",9),a(24,"HAP-NodeJS"),x(),a(25," project. "),x(),b(26,"li"),a(27," Homebridge and HAP-NodeJS have since been maintained and improved by "),b(28,"a",10),a(29,"Supereg"),x(),a(30,". "),x(),b(31,"li"),a(32," The "),b(33,"span",11),a(34,"hb-service"),x(),a(35," utility was created by "),b(36,"a",12),a(37,"oznu"),x(),a(38,". "),x(),b(39,"li"),a(40," We are grateful to "),b(41,"a",13),a(42,"all contributors"),x(),a(43," of Homebridge since its first commit in December 2014. "),x()(),b(44,"h5"),a(45,"Homebridge UI"),x(),b(46,"ul")(47,"li"),a(48," Homebridge UI was originally created by "),b(49,"a",12),a(50,"oznu"),x(),a(51,". "),x(),b(52,"li"),a(53," Thanks to "),b(54,"a",14),a(55,"rfiorentino1"),x(),a(56," for their contributions to improving the accessibility of the UI. "),x(),b(57,"li"),a(58," We are grateful to "),b(59,"a",15),a(60,"all contributors"),x(),a(61," of the Homebridge UI since its first commit in July 2017. "),x()(),b(62,"h5"),a(63),m(64,"translate"),x(),b(65,"ul")(66,"li"),a(67),m(68,"translate"),b(69,"ul",16),Y(70,Qn,4,3,"li",null,Yn),x()()(),b(72,"h5"),a(73),m(74,"translate"),x(),b(75,"ul")(76,"li"),a(77," Thanks to "),b(78,"a",17),a(79,"appletechy"),x(),a(80," for being an active and super supportive member of the community. "),x()(),b(81,"h5"),a(82),m(83,"translate"),x(),b(84,"ul")(85,"li"),a(86),m(87,"translate"),x()()(),b(88,"div",18),X(89,"div",19),b(90,"div",20)(91,"button",21),m(92,"translate"),J("click",function(){return i.dismissModal()}),a(93),m(94,"translate"),x()(),X(95,"div",22),x()()),t&2&&(r(3),_(p(4,9,"status.credits.title")),r(2),$("aria-label",p(6,11,"form.button_close")),r(58),_(p(64,13,"status.credits.translations")),r(4),I(" ",p(68,15,"status.credits.translations_thanks")," "),r(3),Q(i.translators),r(3),_(p(74,17,"status.credits.supporters")),r(9),_(p(83,19,"menu.label_plugins")),r(4),_(p(87,21,"status.credits.plugins_thanks")),r(5),$("aria-label",p(92,23,"form.button_close")),r(2),I(" ",p(94,25,"form.button_close")," "))},dependencies:[L],encapsulation:2,changeDetection:0})}return o})();var Jn=()=>({openWeather:"OpenWeather"});function Kn(o,n){if(o&1){let e=M();d(0,"li",6)(1,"span",13),a(2),m(3,"translate"),l(),d(4,"div",14)(5,"input",17),m(6,"translate"),le("ngModelChange",function(i){E(e);let s=h(2);return ae(s.widget.dockerExpanded,i)||(s.widget.dockerExpanded=i),S(i)}),l(),v(7,"label",18),l()()}if(o&2){let e=h(2);r(2),_(p(3,3,"status.widget.expand_docker")),r(3),re("ngModel",e.widget.dockerExpanded),$("aria-label",p(6,5,"status.widget.expand_docker"))}}function Zn(o,n){if(o&1){let e=M();d(0,"li",6)(1,"span",13),a(2),m(3,"translate"),l(),d(4,"div",14)(5,"input",15),m(6,"translate"),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.showNpmVersion,i)||(s.widget.showNpmVersion=i),S(i)}),l(),v(7,"label",16),l()(),u(8,Kn,8,7,"li",6)}if(o&2){let e,t=h();r(2),_(p(3,4,"status.widget.hide_npm")),r(3),re("ngModel",t.widget.showNpmVersion),$("aria-label",p(6,6,"status.widget.hide_npm")),r(3),f((e=t.serverInfo())!=null&&e.homebridgeRunningInDocker?8:-1)}}function eo(o,n){if(o&1){let e=M();d(0,"li",19)(1,"label",20),a(2),m(3,"translate"),l(),d(4,"div",21)(5,"div",22)(6,"span",23),v(7,"i",24),l(),d(8,"input",25),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.location,i)||(s.widget.location=i),S(i)}),l()()()(),d(9,"li",26),a(10),m(11,"translate"),l()}if(o&2){let e=h();r(2),I(" ",p(3,13,"status.widget.weather.label_search_for_your_city")," "),r(5),R("fa-city",!e.searching())("fa-circle-notch",e.searching())("fa-spin",e.searching()),r(),k("ngbTypeahead",e.searchCountryCodes)("resultFormatter",e.searchCountryCodeFormatter)("inputFormatter",e.searchCountryCodeFormatter)("editable",!1),re("ngModel",e.widget.location),r(2),I(" ",G(11,15,"status.widget.weather.provider",di(18,Jn))," ")}}function to(o,n){if(o&1&&(d(0,"option",29),a(1),m(2,"date"),l()),o&2){let e=n.$implicit,t=h(2);k("value",e),r(),_(G(2,2,t.currentDate,e))}}function io(o,n){if(o&1&&(d(0,"option",29),a(1),m(2,"date"),l()),o&2){let e=n.$implicit,t=h(2);k("value",e),r(),_(G(2,2,t.currentDate,e))}}function no(o,n){if(o&1){let e=M();d(0,"li",19)(1,"label",27),a(2),m(3,"translate"),l(),d(4,"div",21)(5,"select",28),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.timeFormat,i)||(s.widget.timeFormat=i),S(i)}),Y(6,to,3,5,"option",29,fe),l()()(),d(8,"li",19)(9,"label",30),a(10),m(11,"translate"),l(),d(12,"div",21)(13,"select",31),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.dateFormat,i)||(s.widget.dateFormat=i),S(i)}),Y(14,io,3,5,"option",29,fe),l()()()}if(o&2){let e=h();r(2),_(p(3,4,"status.widget.clock_timeformat")),r(3),re("ngModel",e.widget.timeFormat),r(),Q(e.timeFormats),r(4),_(p(11,6,"status.widget.clock_dateformat")),r(3),re("ngModel",e.widget.dateFormat),r(),Q(e.dateFormats)}}function oo(o,n){if(o&1){let e=M();d(0,"li",6)(1,"span",13),a(2),m(3,"translate"),d(4,"span",32),a(5),m(6,"translate"),l()(),d(7,"div",14)(8,"input",33),m(9,"translate"),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.showToolbar,i)||(s.widget.showToolbar=i),S(i)}),l(),v(10,"label",34),l()()}if(o&2){let e=h();r(2),I(" ",p(3,4,"status.widget.show_toolbar")," "),r(3),_(p(6,6,"common.labels.beta")),r(3),re("ngModel",e.widget.showToolbar),$("aria-label",p(9,8,"status.widget.show_toolbar"))}}function so(o,n){if(o&1){let e=M();d(0,"li",19)(1,"label",35),a(2),m(3,"translate"),l(),d(4,"div",21)(5,"div",22)(6,"input",36),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.refreshInterval,i)||(s.widget.refreshInterval=i),S(i)}),l(),d(7,"span",37),a(8),m(9,"translate"),l()()()(),d(10,"li",19)(11,"label",38),a(12),m(13,"translate"),l(),d(14,"div",21)(15,"div",22)(16,"input",39),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.historyItems,i)||(s.widget.historyItems=i),S(i)}),l(),d(17,"span",37),a(18),m(19,"translate"),l()()()()}if(o&2){let e=h();r(2),_(p(3,6,"status.widget.network.refresh_interval")),r(4),re("ngModel",e.widget.refreshInterval),r(2),_(p(9,8,"status.widget.network.seconds")),r(4),_(p(13,10,"status.widget.network.history_items")),r(4),re("ngModel",e.widget.historyItems),r(2),_(p(19,12,"status.widget.network.items"))}}function ro(o,n){if(o&1){let e=M();d(0,"li",19)(1,"label",40),a(2),m(3,"translate"),l(),d(4,"div",21)(5,"div",22)(6,"input",41),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.refreshInterval,i)||(s.widget.refreshInterval=i),S(i)}),l(),d(7,"span",37),a(8),m(9,"translate"),l()()()(),d(10,"li",19)(11,"label",42),a(12),m(13,"translate"),l(),d(14,"div",21)(15,"div",22)(16,"input",43),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.historyItems,i)||(s.widget.historyItems=i),S(i)}),l(),d(17,"span",37),a(18),m(19,"translate"),l()()()()}if(o&2){let e=h();r(2),_(p(3,6,"status.widget.network.refresh_interval")),r(4),re("ngModel",e.widget.refreshInterval),r(2),_(p(9,8,"status.widget.network.seconds")),r(4),_(p(13,10,"status.widget.network.history_items")),r(4),re("ngModel",e.widget.historyItems),r(2),_(p(19,12,"status.widget.network.items"))}}function ao(o,n){if(o&1&&(d(0,"option",29),a(1),l()),o&2){let e=n.$implicit;k("value",e),r(),_(e)}}function lo(o,n){if(o&1){let e=M();d(0,"select",51),le("ngModelChange",function(i){E(e);let s=h(2);return ae(s.widget.networkInterface,i)||(s.widget.networkInterface=i),S(i)}),Y(1,ao,2,2,"option",29,fe),l()}if(o&2){let e=h(2);re("ngModel",e.widget.networkInterface),r(),Q(e.networkInterfaces())}}function co(o,n){o&1&&(d(0,"span",46),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.widget.network.none_selected")))}function mo(o,n){if(o&1){let e=M();d(0,"li",19)(1,"label",44),a(2),m(3,"translate"),l(),d(4,"div",21),u(5,lo,3,1,"select",45)(6,co,3,3,"span",46),l()(),d(7,"li",19)(8,"label",47),a(9),m(10,"translate"),l(),d(11,"div",21)(12,"div",22)(13,"input",48),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.refreshInterval,i)||(s.widget.refreshInterval=i),S(i)}),l(),d(14,"span",37),a(15),m(16,"translate"),l()()()(),d(17,"li",19)(18,"label",49),a(19),m(20,"translate"),l(),d(21,"div",21)(22,"div",22)(23,"input",50),le("ngModelChange",function(i){E(e);let s=h();return ae(s.widget.historyItems,i)||(s.widget.historyItems=i),S(i)}),l(),d(24,"span",37),a(25),m(26,"translate"),l()()()()}if(o&2){let e=h();r(2),_(p(3,8,"status.widget.network.network_interface")),r(3),f(e.networkInterfaces().length?5:6),r(4),_(p(10,10,"status.widget.network.refresh_interval")),r(4),re("ngModel",e.widget.refreshInterval),r(2),_(p(16,12,"status.widget.network.seconds")),r(4),_(p(20,14,"status.widget.network.history_items")),r(4),re("ngModel",e.widget.historyItems),r(2),_(p(26,16,"status.widget.network.items"))}}var dn=(()=>{class o{$activeModal=C(We);$api=C(Ue);$http=C(ht);$settings=C(te);$translate=C(de);$ws=C(ie);modalData=C(Ct);widget=this.modalData.widget;searching=w(!1);serverInfo=w(null);networkInterfaces=w([]);isLightMode=w(!1);io;originalWidget;currentDate=new Date;timeFormats=["h:mm a","h:mm:ss a","H:mm","H:mm:ss"];dateFormats=["yyyy-MM-dd","dd/MM/yy","dd/MM/yyyy","M/d/yy","M/dd/yyyy","dd.MM.yyyy","MMM d","MMM d, y","MMMM d, y","d MMMM y","EEEE, MMMM d, y","EEEE, d MMMM y","EEE, MMM d","EEEE","EEEE, MMM d"];get hasChanges(){if(!this.originalWidget)return!1;let e=this.widget,t=this.originalWidget;return e.showNpmVersion!==t.showNpmVersion||e.dockerExpanded!==t.dockerExpanded||e.location?.id!==t.location?.id||e.timeFormat!==t.timeFormat||e.dateFormat!==t.dateFormat||e.refreshInterval!==t.refreshInterval||e.historyItems!==t.historyItems||e.networkInterface!==t.networkInterface||e.showToolbar!==t.showToolbar}searchCountryCodes=e=>e.pipe(Se(300),Ve(),Bt(()=>this.searching.set(!0)),ot(t=>t.length<3?Rt([]):this.findOpenWeatherMapCity(t).pipe(oi(()=>(this.searching.set(!1),Rt([]))))),Bt(()=>this.searching.set(!1)));searchCountryCodeFormatter=e=>`${e.name}, ${e.country}`;ngOnInit(){this.initialize()}initialize(){return U(this,null,function*(){let e=this.widget;if(e){this.originalWidget=e,this.widget=V({},e),this.io=this.$ws.getExistingNamespace("status"),this.isLightMode.set(this.$settings.actualLightingMode==="light"),this.widget.component==="NetworkWidgetComponent"&&this.loadNetworkInterfaces();try{this.serverInfo.set(yield ce(this.io.request("get-homebridge-server-info")))}catch(t){console.error("Failed to fetch server info:",t),this.serverInfo.set(null)}}})}loadNetworkInterfaces(){return U(this,null,function*(){let e=yield this.$api.get("/server/network-interfaces/bridge");this.networkInterfaces.set(e)})}dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){let e=this.widget;e&&(Object.assign(this.originalWidget,e),this.$activeModal.close())}findOpenWeatherMapCity(e){return this.$http.get("https://api.openweathermap.org/data/2.5/find",{params:new pt({fromObject:{q:e,type:"like",sort:"population",cnt:"30",appid:Le.owm.appid,lang:this.$translate.getCurrentLang()}})}).pipe(ii(t=>t.list.map(i=>({id:i.id,name:i.name,country:i.sys.country,coord:i.coord}))))}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-widget-control"]],decls:27,vars:18,consts:[["role","dialog","aria-modal","true",1,"modal-content"],[1,"modal-header"],["id","widget-control-modal-title",1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"],["aria-hidden","true",1,"text-start","flex-grow-1","me-3"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","showNpmVersion",1,"rendux-input",3,"ngModelChange","ngModel"],["for","showNpmVersion",1,"rendux-label","ms-3"],["type","checkbox","id","dockerExpanded",1,"rendux-input",3,"ngModelChange","ngModel"],["for","dockerExpanded",1,"rendux-label","ms-3"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","city-search-input",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],[1,"input-group"],["id","",1,"input-group-text","custom-input"],["aria-hidden","true",1,"fas"],["id","city-search-input","type","text",1,"form-control","custom-input",3,"ngModelChange","ngbTypeahead","resultFormatter","inputFormatter","editable","ngModel"],[1,"list-group-item","muted","grey-text","text-center"],["for","clock-time-format",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","clock-time-format",1,"custom-select",3,"ngModelChange","ngModel"],[3,"value"],["for","clock-date-format",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","clock-date-format",1,"custom-select",3,"ngModelChange","ngModel"],[1,"badge","badge-primary","ms-1"],["type","checkbox","id","showToolbar",1,"rendux-input",3,"ngModelChange","ngModel"],["for","showToolbar",1,"rendux-label","ms-3"],["for","cpu-refresh-interval",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","cpu-refresh-interval","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"input-group-text","custom-input"],["for","cpu-history-items",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","cpu-history-items","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["for","memory-refresh-interval",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","memory-refresh-interval","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["for","memory-history-items",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","memory-history-items","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["for","network-interface",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","network-interface",1,"custom-select",3,"ngModel"],[1,"grey-text"],["for","network-refresh-interval",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","network-refresh-interval","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["for","network-history-items",1,"mb-2","mb-md-0","w-100","w-md-50"],["id","network-history-items","type","number","min","1","max","60",1,"form-control","custom-input",3,"ngModelChange","ngModel"],["id","network-interface",1,"custom-select",3,"ngModelChange","ngModel"]],template:function(t,i){if(t&1&&(d(0,"div",0)(1,"div",1)(2,"h5",2),a(3),m(4,"translate"),l(),d(5,"button",3),m(6,"translate"),W("click",function(){return i.dismissModal()}),l()(),d(7,"div",4)(8,"ul",5),u(9,Zn,9,8)(10,eo,12,19)(11,no,16,8)(12,oo,11,10,"li",6)(13,so,20,14)(14,ro,20,14)(15,mo,27,18),l()(),d(16,"div",7)(17,"div",8)(18,"button",9),m(19,"translate"),W("click",function(){return i.dismissModal()}),a(20),m(21,"translate"),l()(),v(22,"div",10),d(23,"div",11)(24,"button",12),W("click",function(){return i.closeModal()}),a(25),m(26,"translate"),l()()()()),t&2){let s;$("aria-labelledby","widget-control-modal-title"),r(3),_(p(4,8,"status.widget.title_manage_widget")),r(2),$("aria-label",p(6,10,"form.button_close")),r(4),f((s=i.widget.component)==="UpdateInfoWidgetComponent"?9:s==="WeatherWidgetComponent"?10:s==="ClockWidgetComponent"?11:s==="HomebridgeLogsWidgetComponent"?12:s==="CpuWidgetComponent"?13:s==="MemoryWidgetComponent"?14:s==="NetworkWidgetComponent"?15:-1),r(9),$("aria-label",p(19,12,"form.button_close")),r(2),I(" ",p(21,14,"form.button_close")," "),r(4),k("disabled",!i.hasChanges),r(),I(" ",p(26,16,"form.button_save")," ")}},dependencies:[ut,Mi,ki,Fe,wi,_i,Ti,Ae,$i,Wi,xi,zi,mt,L],encapsulation:2,changeDetection:0})}return o})();var po=(o,n)=>n.component;function ho(o,n){if(o&1){let e=M();b(0,"li",21)(1,"div",22),a(2),x(),b(3,"div",23)(4,"span",24),a(5),m(6,"translate"),x(),b(7,"span",25),X(8,"i",26),b(9,"input",27),m(10,"translate"),J("click",function(){let i=E(e).$implicit,s=h(2);return S(s.toggleDesktop(i))}),x(),X(11,"label",28),x()(),b(12,"div",29)(13,"span",24),a(14),m(15,"translate"),x(),b(16,"span",25),X(17,"i",30),b(18,"input",27),m(19,"translate"),J("click",function(){let i=E(e).$implicit,s=h(2);return S(s.toggleMobile(i))}),x(),X(20,"label",28),x()()()}if(o&2){let e=n.$implicit;r(2),_(e.name),r(3),_(p(6,11,"status.widget.show_on_desktop")),r(4),Ce("checked",e.showOnDesktop)("id",`desktop-${e.component}`),$("aria-label",p(10,13,"status.widget.show_on_desktop")),r(2),Ce("htmlFor",`desktop-${e.component}`),r(3),_(p(15,15,"status.widget.show_on_mobile")),r(4),Ce("checked",e.showOnMobile)("id",`mobile-${e.component}`),$("aria-label",p(19,17,"status.widget.show_on_mobile")),r(2),Ce("htmlFor",`mobile-${e.component}`)}}function go(o,n){if(o&1&&(b(0,"ul",5)(1,"li",17)(2,"div",18),X(3,"span",19),m(4,"translate"),X(5,"br")(6,"span",19),m(7,"translate"),x(),b(8,"span",20),a(9),m(10,"translate"),x()(),Y(11,ho,21,19,"li",21,po),x()),o&2){let e=h();r(3),Ce("innerHTML",p(4,3,"status.widget.account_1"),Vt),r(3),Ce("innerHTML",p(7,5,"status.widget.account_2"),Vt),r(3),_(p(10,7,"common.labels.beta")),r(2),Q(e.availableWidgets())}}var cn=(()=>{class o{$activeModal=C(We);$settings=C(te);$translate=C(de);modalData=C(bt);dashboard=this.modalData.dashboard;resetLayout=this.modalData.resetLayout;availableWidgets=w([]);originalState=[];ngOnInit(){let t=[{name:this.$translate.instant("status.services.updates"),component:"UpdateInfoWidgetComponent",hidden:!1,cols:10,rows:3,mobileOrder:10},{name:this.$translate.instant("status.widget.weather.title_weather"),component:"WeatherWidgetComponent",hidden:!1,cols:3,rows:5,mobileOrder:20,requiresConfig:!0},{name:this.$translate.instant("menu.label_accessories"),component:"AccessoriesWidgetComponent",hidden:!this.$settings.env.enableAccessories,cols:7,rows:9,mobileOrder:30},{name:this.$translate.instant("child_bridge.bridges"),component:"BridgesWidgetComponent",hidden:!1,cols:5,rows:9,mobileOrder:35},{name:this.$translate.instant("status.cpu.title_cpu"),component:"CpuWidgetComponent",hidden:!1,cols:5,rows:3,mobileOrder:40},{name:this.$translate.instant("status.memory.title_memory"),component:"MemoryWidgetComponent",hidden:!1,cols:5,rows:3,mobileOrder:50},{name:this.$translate.instant("status.network.title_network"),component:"NetworkWidgetComponent",hidden:!1,cols:10,rows:3,mobileOrder:55},{name:this.$translate.instant("status.uptime.title_uptime"),component:"UptimeWidgetComponent",hidden:!1,cols:5,rows:3,mobileOrder:60},{name:this.$translate.instant("status.widget.info"),component:"SystemInfoWidgetComponent",hidden:!1,cols:5,rows:9,mobileOrder:70},{name:this.$translate.instant("status.widget.add.label_pairing_code"),component:"HapQrcodeWidgetComponent",hidden:!1,cols:3,rows:7,mobileOrder:100},...this.$settings.isFeatureEnabled("matterSupport")?[{name:this.$translate.instant("status.widget.add.matter_pairing_code"),component:"MatterQrcodeWidgetComponent",hidden:!1,cols:3,rows:7,mobileOrder:105}]:[],{name:this.$translate.instant("status.widget.homebridge_logs"),component:"HomebridgeLogsWidgetComponent",hidden:!1,cols:7,rows:6,mobileOrder:1e3},{name:`Homebridge ${this.$translate.instant("menu.docker.terminal")}`,component:"TerminalWidgetComponent",hidden:!this.$settings.env.enableTerminalAccess,cols:7,rows:6,mobileOrder:1e3},{name:this.$translate.instant("status.widget.clock"),component:"ClockWidgetComponent",cols:5,rows:3,mobileOrder:23}].filter(i=>!i.hidden).sort((i,s)=>i.name.localeCompare(s.name)).map(i=>{let s=this.dashboard.find(T=>T.component===i.component),c=!!s,g=c?s.hideOnDesktop??!1:!0,y=c?s.hideOnMobile??!1:!0;return{name:i.name,component:i.component,showOnDesktop:!g,showOnMobile:!y,cols:i.cols,rows:i.rows,mobileOrder:i.mobileOrder,hideOnDesktop:g,hideOnMobile:y,requiresConfig:i.requiresConfig}});this.availableWidgets.set(t),this.originalState=t.map(i=>({showOnDesktop:i.showOnDesktop,showOnMobile:i.showOnMobile}))}toggleDesktop(e){let t=this.availableWidgets(),i=t.findIndex(c=>c.component===e.component),s=[...t];s[i]=j(V({},s[i]),{showOnDesktop:!s[i].showOnDesktop}),this.availableWidgets.set(s)}toggleMobile(e){let t=this.availableWidgets(),i=t.findIndex(c=>c.component===e.component),s=[...t];s[i]=j(V({},s[i]),{showOnMobile:!s[i].showOnMobile}),this.availableWidgets.set(s)}isFormUnchanged=Je(()=>this.availableWidgets().every((t,i)=>t.showOnDesktop===this.originalState[i].showOnDesktop&&t.showOnMobile===this.originalState[i].showOnMobile));saveModal(){let e=this.availableWidgets().map(t=>j(V({},t),{hideOnDesktop:!t.showOnDesktop,hideOnMobile:!t.showOnMobile}));this.$activeModal.close(e)}doResetLayout(){this.resetLayout(),this.$activeModal.dismiss()}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-widget-visibility"]],decls:33,vars:26,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,"list-group","list-group-box","mb-4"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger","m-0","ms-3","py-1",3,"click"],[1,"fas","fa-arrow-right"],[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-primary",3,"click","disabled"],[1,"list-group-item","text-center","grey-text"],[1,"small"],[3,"innerHTML"],[1,"badge","badge-primary"],[1,"list-group-item"],[1,"mb-2"],[1,"d-flex","justify-content-between","align-items-center","mb-1","grey-text"],["aria-hidden","true"],[1,"d-flex","align-items-center"],["aria-hidden","true",1,"fas","fa-desktop","fa-lg"],["type","checkbox",1,"rendux-input",3,"click","checked","id"],["aria-hidden","true",1,"rendux-label","ms-2",3,"for"],[1,"d-flex","justify-content-between","align-items-center","grey-text"],["aria-hidden","true",1,"fas","fa-mobile-screen-button","fa-lg"]],template:function(t,i){t&1&&(b(0,"div",0)(1,"div",1)(2,"h5",2),a(3),m(4,"translate"),x(),b(5,"button",3),m(6,"translate"),J("click",function(){return i.dismissModal()}),x()(),b(7,"div",4),u(8,go,13,9,"ul",5),b(9,"ul",6)(10,"li",7)(11,"div")(12,"span"),a(13),m(14,"translate"),x(),X(15,"br"),b(16,"small",8),a(17),m(18,"translate"),x()(),b(19,"button",9),m(20,"translate"),J("click",function(){return i.doResetLayout()}),X(21,"i",10),x()()()(),b(22,"div",11)(23,"div",12)(24,"button",13),m(25,"translate"),J("click",function(){return i.dismissModal()}),a(26),m(27,"translate"),x()(),X(28,"div",14),b(29,"div",15)(30,"button",16),J("click",function(){return i.saveModal()}),a(31),m(32,"translate"),x()()()()),t&2&&(r(3),_(p(4,10,"status.widget.show_hide")),r(2),$("aria-label",p(6,12,"form.button_close")),r(3),f(i.availableWidgets().length?8:-1),r(5),_(p(14,14,"form.button_reset")),r(4),_(p(18,16,"status.widget.reset")),r(2),$("aria-label",p(20,18,"form.button_reset")),r(5),$("aria-label",p(25,20,"form.button_close")),r(2),I(" ",p(27,22,"form.button_close")," "),r(4),Ce("disabled",i.isFormUnchanged()),r(),I(" ",p(32,24,"form.button_save")," "))},dependencies:[ut,L],encapsulation:2,changeDetection:0})}return o})();function uo(o,n){if(o&1&&(d(0,"div",5),v(1,"app-accessory-tile",6),l()),o&2){let e=h().$implicit;r(),k("service",e)}}function fo(o,n){if(o&1&&u(0,uo,2,1,"div",5),o&2){let e=n.$implicit;f(e.hidden?-1:0)}}function _o(o,n){if(o&1){let e=M();d(0,"div",4),W("dragulaModelChange",function(i){E(e);let s=h();return S(s.dashboardAccessories.set(i))}),Y(1,fo,1,1,null,null,fe),l()}if(o&2){let e=h();k("dragulaModel",e.dashboardAccessories()),r(),Q(e.dashboardAccessories())}}function Co(o,n){o&1&&(d(0,"div",3)(1,"div",7)(2,"h1"),v(3,"i",8),l(),d(4,"p",9),a(5),m(6,"translate"),l()()()),o&2&&(r(5),_(p(6,1,"status.widget.accessories.choose_accessories")))}var mn=(()=>{class o{destroyRef=C(F);$accessories=C(Ui);$dragula=C(Vi);$md=C(Ai);widget=O.required();dashboardAccessories=w([]);loaded=w(!1);isMobile=w(!1);constructor(){let e=this.$dragula;this.isMobile.set(!!this.$md.detect.mobile()),e.createGroup("widget-accessories-bag",{moves:t=>!this.isMobile()&&!t.classList.contains("no-drag")}),e.drop().pipe(B(this.destroyRef)).subscribe(()=>{this.widget().accessoryOrder=this.dashboardAccessories().map(t=>t.uniqueId),this.widget().$saveWidgetsEvent.next(void 0)})}ngOnInit(){this.initialize()}initialize(){return U(this,null,function*(){this.$accessories.accessoryData.pipe(B(this.destroyRef)).subscribe(()=>{this.getDashboardAccessories()}),yield this.$accessories.start(),this.$accessories.layoutSaved.pipe(B(this.destroyRef)).subscribe({next:()=>{this.getDashboardAccessories()}})})}ngOnDestroy(){this.$accessories.stop(),this.$dragula.destroy("widget-accessories-bag")}getDashboardAccessories(){let e=[];for(let t of this.$accessories.rooms())for(let i of t.services)i.onDashboard&&e.push(i);this.widget().accessoryOrder&&this.widget().accessoryOrder.length&&e.sort((t,i)=>{let s=this.widget().accessoryOrder.findIndex(g=>g===t.uniqueId),c=this.widget().accessoryOrder.findIndex(g=>g===i.uniqueId);return s<c?-1:s>c?1:0}),this.dashboardAccessories.set(e),this.loaded.set(!0)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-accessories-widget"]],inputs:{widget:[1,"widget"]},decls:6,vars:7,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1","overflow-auto","no-scrollbars"],[1,"drag-handler","p-2"],["dragula","widget-accessories-bag",1,"d-flex","flex-wrap","gridster-item-content",3,"dragulaModel"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],["dragula","widget-accessories-bag",1,"d-flex","flex-wrap","gridster-item-content",3,"dragulaModelChange","dragulaModel"],[1,"accessory-item","accessory-widget-box","noselect"],[3,"service"],[1,"d-flex","flex-column","w-100","pb-2"],[1,"fas","fa-user-cog"],[1,"grey-text"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),a(2),m(3,"translate"),l(),u(4,_o,3,1,"div",2),u(5,Co,7,3,"div",3),l()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),I(" ",p(3,5,"menu.label_accessories")," "),r(2),f(i.dashboardAccessories().length?4:-1),r(),f(i.loaded()&&!i.dashboardAccessories().length?5:-1))},dependencies:[Hi,Oi,Fi,L],encapsulation:2,changeDetection:0})}return o})();var Dt=(function(o){return o.OK="ok",o.PENDING="pending",o.DOWN="down",o})(Dt||{});var pn=(o,n)=>n.username;function bo(o,n){if(o&1&&(d(0,"span",1),a(1),l()),o&2){let e=n.$implicit,t=h();r(),I(" ",t.childBridgeLiveMessages()[e.username||e.name]," ")}}function xo(o,n){if(o&1&&(v(0,"i",13),m(1,"translate")),o&2){let e,t,i,s,c,g,y=h();R("green-text",!y.isMainMatterExternalsOnly()&&((e=y.homebridgeStatus())==null||e.matter==null?null:e.matter.enabled)&&((e=y.homebridgeStatus())==null?null:e.status)==="ok"&&!y.isRestarting())("text-warning",!y.isMainMatterExternalsOnly()&&((t=y.homebridgeStatus())==null||t.matter==null?null:t.matter.enabled)&&(((t=y.homebridgeStatus())==null?null:t.status)==="pending"||y.isRestarting()))("red-text",!y.isMainMatterExternalsOnly()&&((i=y.homebridgeStatus())==null||i.matter==null?null:i.matter.enabled)&&((i=y.homebridgeStatus())==null?null:i.status)==="down"&&!y.isRestarting())("grey-text",!(!((s=y.homebridgeStatus())==null||s.matter==null)&&s.matter.enabled)&&!y.isMainMatterExternalsOnly())("opacity-muted",!(!((c=y.homebridgeStatus())==null||c.matter==null)&&c.matter.enabled)&&!y.isMainMatterExternalsOnly())("text-info",y.isMainMatterExternalsOnly()),k("openDelay",150)("ngbTooltip",p(1,14,y.isMainMatterExternalsOnly()?"status.services.matter_externals_only":!((g=y.homebridgeStatus())==null||g.matter==null)&&g.matter.enabled?((g=y.homebridgeStatus())==null?null:g.status)==="down"&&!y.isRestarting()?"status.services.matter_not_running":"status.services.matter_running":"status.services.matter_not_enabled"))}}function vo(o,n){o&1&&v(0,"i",10)}function wo(o,n){o&1&&v(0,"i",11)}function yo(o,n){if(o&1&&(v(0,"i",13),m(1,"translate")),o&2){let e=h().$implicit,t=h();R("green-text",!t.isChildMatterExternalsOnly(e)&&t.isChildMatterEnabled(e)&&e.status==="ok"&&!e.restarting&&!t.isRestarting())("text-warning",!t.isChildMatterExternalsOnly(e)&&t.isChildMatterEnabled(e)&&(e.status==="pending"||e.restarting||t.isRestarting()))("red-text",!t.isChildMatterExternalsOnly(e)&&t.isChildMatterEnabled(e)&&e.status==="down"&&!e.restarting&&!t.isRestarting())("grey-text",!t.isChildMatterEnabled(e)&&!t.isChildMatterExternalsOnly(e))("opacity-muted",!t.isChildMatterEnabled(e)&&!t.isChildMatterExternalsOnly(e))("text-info",t.isChildMatterExternalsOnly(e)),k("openDelay",150)("ngbTooltip",p(1,14,t.childMatterTooltipKey(e)))}}function Io(o,n){o&1&&v(0,"i",10)}function Eo(o,n){o&1&&v(0,"i",11)}function So(o,n){if(o&1){let e=M();d(0,"button",4),W("click",function(){let i=E(e).$implicit,s=h();return S(!(i.status==="pending"||i.restarting||s.isRestarting()||!s.isAdmin)&&s.restartChildBridge(i))}),d(1,"div",5),v(2,"i",6),m(3,"translate"),u(4,yo,2,16,"i",7),l(),d(5,"div",8),a(6),l(),d(7,"div",9),u(8,Io,1,0,"i",10),u(9,Eo,1,0,"i",11),l()()}if(o&2){let e=n.$implicit,t=h();$("aria-label",t.childBridgeAriaLabel(e))("aria-disabled",e.status==="pending"||e.restarting||t.isRestarting()||!t.isAdmin?"true":null),r(2),R("green-text",!t.isChildHapDisabled(e)&&!t.isChildHapExternalsOnly(e)&&e.status==="ok"&&!e.restarting&&!t.isRestarting())("text-warning",!t.isChildHapDisabled(e)&&!t.isChildHapExternalsOnly(e)&&(e.status==="pending"||e.restarting||t.isRestarting()))("red-text",!t.isChildHapDisabled(e)&&!t.isChildHapExternalsOnly(e)&&e.status==="down"&&!e.restarting&&!t.isRestarting())("grey-text",t.isChildHapDisabled(e)&&!t.isChildHapExternalsOnly(e))("opacity-muted",t.isChildHapDisabled(e)&&!t.isChildHapExternalsOnly(e))("text-info",t.isChildHapExternalsOnly(e)),k("openDelay",150)("ngbTooltip",p(3,20,t.childHapTooltipKey(e))),r(2),f(t.isMatterSupported?4:-1),r(2),_(e.name),r(2),f(e.status!=="pending"&&!e.restarting&&!t.isRestarting()&&t.isAdmin?8:-1),r(),f(e.status==="pending"||e.restarting||t.isRestarting()?9:-1)}}var hn=(()=>{class o{destroyRef=C(F);$api=C(Ue);$auth=C(ke);$cache=C(Ni);$settings=C(te);$toastr=C(Me);$translate=C(de);$ws=C(ie);widget=O.required();homebridgeStatus=w(null);childBridges=w([]);isRestarting=w(!1);homebridgeLiveMessage=w("");childBridgeLiveMessages=w({});ioMain;ioChild;isAdmin=this.$auth.user.admin;isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");isHapBridgeDisableSupported=this.$settings.isFeatureEnabled("hapBridgeDisable");isProtocolExternalsOnlyEnabled=this.$settings.isFeatureEnabled("protocolExternalsOnly");lastHomebridgeStatus;lastChildStatuses={};homebridgeRestartRequested=!1;homebridgeAnnouncementPending=!1;homebridgeAnnouncementTimeout=null;childRestartRequested={};childAnnouncementPending={};childAnnouncementTimeouts={};ngOnInit(){this.initialize()}childHapTooltipKey(e){return this.isChildHapExternalsOnly(e)?"status.services.hap_externals_only":this.isChildHapDisabled(e)?"status.services.hap_not_enabled":e.status==="down"&&!e.restarting&&!this.isRestarting()?"status.services.hap_not_running":"status.services.hap_running"}isChildHapDisabled(e){if(!this.isHapBridgeDisableSupported)return!1;let t=e.hap;return t===!1||typeof t=="object"&&t!==null&&t.enabled===!1}isChildHapExternalsOnly(e){if(!this.isProtocolExternalsOnlyEnabled)return!1;let t=e.hap;return typeof t=="object"&&t!==null&&t.externalsOnly===!0}isMainHapDisabled(){return this.isHapBridgeDisableSupported&&this.homebridgeStatus()?.hap?.enabled===!1}isMainHapExternalsOnly(){return this.isProtocolExternalsOnlyEnabled&&this.homebridgeStatus()?.hap?.externalsOnly===!0}isChildMatterExternalsOnly(e){return this.isProtocolExternalsOnlyEnabled&&e.matterConfig?.externalsOnly===!0}isMainMatterExternalsOnly(){return this.isProtocolExternalsOnlyEnabled&&this.homebridgeStatus()?.matter?.externalsOnly===!0}childMatterTooltipKey(e){return this.isChildMatterExternalsOnly(e)?"status.services.matter_externals_only":this.isChildMatterEnabled(e)?e.status==="down"&&!e.restarting&&!this.isRestarting()?"status.services.matter_not_running":"status.services.matter_running":"status.services.matter_not_enabled"}mainHapTooltipKey(){return this.isMainHapExternalsOnly()?"status.services.hap_externals_only":this.isMainHapDisabled()?"status.services.hap_not_enabled":this.homebridgeStatus()?.status==="down"&&!this.isRestarting()?"status.services.hap_not_running":"status.services.hap_running"}mainBridgeAriaLabel(){let e=this.homebridgeStatus(),t=e?.name||"Homebridge",i=e?.status==="pending"||this.isRestarting(),s=this.bridgeStatusLabel(e?.status,i),c=this.matterStatusLabel(!!e?.matter?.enabled,e?.status,i),g=!i&&this.isAdmin?`, ${this.$translate.instant("menu.tooltip_restart")}`:"";return`${t}, ${s}${c}${g}`}childBridgeAriaLabel(e){let t=e.status==="pending"||e.restarting||this.isRestarting(),i=this.bridgeStatusLabel(e.status,t),s=this.matterStatusLabel(this.isChildMatterEnabled(e),e.status,t),c=!t&&this.isAdmin?`, ${this.$translate.instant("menu.tooltip_restart")}`:"";return`${e.name}, ${i}${s}${c}`}isChildMatterEnabled(e){return!!e.matterConfig&&e.matterConfig.enabled!==!1}bridgeStatusLabel(e,t){return t?this.$translate.instant("status.services.label_restarting"):this.$translate.instant(e==="down"?"status.services.label_not_running":"status.services.label_running")}matterStatusLabel(e,t,i){return!this.isMatterSupported||i?"":e?`, ${this.$translate.instant(t==="down"?"status.services.matter_not_running":"status.services.matter_running")}`:`, ${this.$translate.instant("status.services.matter_not_enabled")}`}initialize(){return U(this,null,function*(){this.ioMain=this.$ws.connectToNamespace("status"),this.ioMain.socket.on("homebridge-status",e=>{let t=this.lastHomebridgeStatus;this.homebridgeStatus.set(e),this.lastHomebridgeStatus=e.status,e.status==="ok"&&this.isRestarting.set(!1),this.maybeAnnounceHomebridgeRestart(t)}),this.ioMain.connected.pipe(B(this.destroyRef)).subscribe(()=>U(this,null,function*(){let e=this.lastHomebridgeStatus;yield this.getHomebridgeStatus(),this.lastHomebridgeStatus=this.homebridgeStatus()?.status,this.maybeAnnounceHomebridgeRestart(e)})),this.ioMain.socket.on("disconnect",()=>{let e=this.lastHomebridgeStatus;this.homebridgeStatus.update(t=>j(V({},t),{status:Dt.DOWN})),this.lastHomebridgeStatus=Dt.DOWN,this.maybeAnnounceHomebridgeRestart(e)}),this.ioChild=this.$ws.connectToNamespace("child-bridges"),this.ioChild.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.getChildBridgeMetadata(),this.ioChild.socket.emit("monitor-child-bridge-status")}),this.ioChild.socket.on("child-bridge-status-update",e=>{let t=e.username||e.name,i=this.lastChildStatuses[t];this.lastChildStatuses[t]=e.status,this.childBridges.update(s=>{let c=s.findIndex(g=>g.username===e.username);if(c!==-1){let g=[...s];return g[c]=j(V(V({},g[c]),e),{restarting:e.status==="ok"?!1:g[c].restarting}),g}else return[...s,j(V({},e),{restarting:!1})].sort((g,y)=>g.name.localeCompare(y.name))}),this.maybeAnnounceChildRestart(e.name||t,t,i)})})}restartChildBridge(e){return U(this,null,function*(){let t=e.username||e.name;this.childRestartRequested[t]=!0,this.childAnnouncementPending[t]=!1;try{this.childBridges.update(i=>{let s=[...i],c=s.findIndex(g=>g.username===e.username);return c!==-1&&(s[c]=j(V({},s[c]),{restarting:!0})),s}),yield ce(this.ioChild.request("restart-child-bridge",e.username))}catch(i){console.error(i),this.$toastr.error(this.$translate.instant("status.widget.bridge.restart_error"),this.$translate.instant("toast.title_error"))}finally{setTimeout(()=>{this.childBridges.update(i=>{let s=[...i],c=s.findIndex(g=>g.username===e.username);return c!==-1&&(s[c]=j(V({},s[c]),{restarting:!1})),s}),this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1},15e3)}})}restartHomebridge(){return U(this,null,function*(){this.homebridgeRestartRequested=!0,this.homebridgeAnnouncementPending=!1,this.isRestarting.set(!0);try{yield this.$api.put("/server/restart",{}),this.$cache.invalidateAll()}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}finally{setTimeout(()=>{this.isRestarting.set(!1),this.homebridgeRestartRequested=!1,this.homebridgeAnnouncementPending=!1},15e3)}})}ngOnDestroy(){this.ioMain&&this.ioMain.end?.(),this.ioChild&&this.ioChild.end?.(),this.homebridgeAnnouncementTimeout&&clearTimeout(this.homebridgeAnnouncementTimeout);for(let e of Object.keys(this.childAnnouncementTimeouts))clearTimeout(this.childAnnouncementTimeouts[e])}maybeAnnounceHomebridgeRestart(e){let t=this.homebridgeStatus()?.status;!this.homebridgeRestartRequested||this.homebridgeAnnouncementPending||e!=="pending"||!t||t==="pending"||(this.homebridgeAnnouncementPending=!0,this.homebridgeAnnouncementTimeout&&clearTimeout(this.homebridgeAnnouncementTimeout),this.homebridgeAnnouncementTimeout=setTimeout(()=>{let i=this.homebridgeStatus()?.status;if(!i||i==="pending"){this.homebridgeRestartRequested=!1,this.homebridgeAnnouncementPending=!1;return}let s=this.homebridgeStatus()?.name||"Homebridge",c=this.formatRestartCompleteMessage(s,i);this.homebridgeLiveMessage.set(c),this.homebridgeRestartRequested=!1,this.homebridgeAnnouncementPending=!1,setTimeout(()=>{this.homebridgeLiveMessage()===c&&this.homebridgeLiveMessage.set("")},3e3)},3e3))}maybeAnnounceChildRestart(e,t,i){let c=this.childBridges().find(g=>(g.username||g.name)===t)?.status;!this.childRestartRequested[t]||this.childAnnouncementPending[t]||i!=="pending"||!c||c==="pending"||(this.childAnnouncementPending[t]=!0,this.childAnnouncementTimeouts[t]&&clearTimeout(this.childAnnouncementTimeouts[t]),this.childAnnouncementTimeouts[t]=setTimeout(()=>{let g=this.childBridges().find(D=>(D.username||D.name)===t),y=g?.status;if(!y||y==="pending"){this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1;return}let T=this.formatRestartCompleteMessage(g?.name||e,y);this.childBridgeLiveMessages.update(D=>j(V({},D),{[t]:T})),this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1,setTimeout(()=>{this.childBridgeLiveMessages()[t]===T&&this.childBridgeLiveMessages.update(D=>j(V({},D),{[t]:""}))},3e3)},3e3))}formatRestartCompleteMessage(e,t){let i;return t==="down"?i=this.$translate.instant("status.services.label_not_running"):t==="ok"?i=this.$translate.instant("status.services.label_running"):i=t,i?this.$translate.instant("status.widget.bridge.restart_complete_with_status",{name:e,status:i}):this.$translate.instant("status.widget.bridge.restart_complete",{name:e})}getHomebridgeStatus(){return U(this,null,function*(){let e=yield ce(this.ioMain.request("get-homebridge-status"));this.homebridgeStatus.set(e)})}getChildBridgeMetadata(){this.ioChild.request("get-homebridge-child-bridge-status").subscribe(e=>{this.childBridges.set(e.map(t=>j(V({},t),{restarting:!1})).sort((t,i)=>t.name.localeCompare(i.name)));for(let t of e){let i=t.username||t.name;this.lastChildStatuses[i]=t.status}})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-bridges-widget"]],inputs:{widget:[1,"widget"]},decls:21,vars:28,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-3","overflow-auto","no-scrollbars"],["role","status","aria-live","polite","aria-atomic","true",1,"visually-hidden"],[1,"drag-handler","p-2"],[1,"d-flex","flex-wrap","w-100","mt-0","justify-content-start","gridster-item-content","overflow-auto","no-scrollbars","align-items-center"],["type","button",1,"hb-status-item","hb-status-item-quarter","hb-status-row","d-flex","flex-row","w-100","px-3","mt-2","mb-1","text-start",3,"click"],[1,"hb-status-icon","d-flex","align-items-center"],["aria-hidden","true","container","body","placement","right","triggers","hover",1,"fas","fa-hap","fa-sm",3,"openDelay","ngbTooltip"],["aria-hidden","true","container","body","placement","right","triggers","hover",1,"fas","fa-matter","fa-sm","ms-2",3,"green-text","text-warning","red-text","grey-text","opacity-muted","text-info","openDelay","ngbTooltip"],[1,"align-self-center","flex-child","px-2"],["aria-hidden","true",1,"grey-text","ms-auto","d-flex","align-items-center"],[1,"fas","fa-power-off"],[1,"fas","fa-circle-notch","fa-spin"],["type","button",1,"hb-status-item","hb-status-item-quarter","hb-status-row","d-flex","flex-row","w-100","px-3","mt-2","mb-1","text-start"],["aria-hidden","true","container","body","placement","right","triggers","hover",1,"fas","fa-matter","fa-sm","ms-2",3,"openDelay","ngbTooltip"]],template:function(t,i){if(t&1&&(d(0,"div",0)(1,"span",1),a(2),l(),Y(3,bo,2,1,"span",1,pn),d(5,"div",2),a(6),m(7,"translate"),l(),d(8,"div",3)(9,"button",4),W("click",function(){let c;return!(((c=i.homebridgeStatus())==null?null:c.status)==="pending"||i.isRestarting()||!i.isAdmin)&&i.restartHomebridge()}),d(10,"div",5),v(11,"i",6),m(12,"translate"),u(13,xo,2,16,"i",7),l(),d(14,"div",8),a(15),l(),d(16,"div",9),u(17,vo,1,0,"i",10),u(18,wo,1,0,"i",11),l()(),Y(19,So,10,22,"button",12,pn),l()()),t&2){let s,c,g,y,T,D,q;r(2),I(" ",i.homebridgeLiveMessage()," "),r(),Q(i.childBridges()),r(2),R("widget-cursor",i.widget().draggable),r(),I(" ",p(7,24,"child_bridge.bridges")," "),r(3),$("aria-label",i.mainBridgeAriaLabel())("aria-disabled",((s=i.homebridgeStatus())==null?null:s.status)==="pending"||i.isRestarting()||!i.isAdmin?"true":null),r(2),R("green-text",!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&((c=i.homebridgeStatus())==null?null:c.status)==="ok"&&!i.isRestarting())("text-warning",!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&(((g=i.homebridgeStatus())==null?null:g.status)==="pending"||i.isRestarting()))("red-text",!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&((y=i.homebridgeStatus())==null?null:y.status)==="down"&&!i.isRestarting())("grey-text",i.isMainHapDisabled()&&!i.isMainHapExternalsOnly())("opacity-muted",i.isMainHapDisabled()&&!i.isMainHapExternalsOnly())("text-info",i.isMainHapExternalsOnly()),k("openDelay",150)("ngbTooltip",p(12,26,i.mainHapTooltipKey())),r(2),f(i.isMatterSupported?13:-1),r(2),_(((T=i.homebridgeStatus())==null?null:T.name)||"Homebridge"),r(2),f(((D=i.homebridgeStatus())==null?null:D.status)!=="pending"&&!i.isRestarting()&&i.isAdmin?17:-1),r(),f(((q=i.homebridgeStatus())==null?null:q.status)==="pending"||i.isRestarting()?18:-1),r(),Q(i.childBridges())}},dependencies:[$e,L],styles:[".flex-child[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hb-status-icon[_ngcontent-%COMP%]{font-size:20px}@media(max-width:767px){.hb-status-item[_ngcontent-%COMP%]{width:100%}}.hb-status-row[_ngcontent-%COMP%]{background:transparent;border:0;color:inherit;font:inherit;width:100%}.hb-status-row[aria-disabled=true][_ngcontent-%COMP%]{cursor:default}.hb-status-item-quarter[_ngcontent-%COMP%]{min-width:max(25%,225px)}.opacity-muted[_ngcontent-%COMP%]{opacity:.25}"],changeDetection:0})}return o})();var gn=(()=>{class o{destroyRef=C(F);widget=O.required();currentTime=w(new Date);ngOnInit(){this.widget().timeFormat||(this.widget().timeFormat="H:mm"),this.widget().dateFormat||(this.widget().dateFormat="yyyy-MM-dd"),Ee(1e3).pipe(B(this.destroyRef)).subscribe(()=>{this.currentTime.set(new Date)})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-clock-widget"]],inputs:{widget:[1,"widget"]},decls:10,vars:8,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","py-3"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","text-center"],[1,"d-flex","justify-content-around","flex-wrap","w-100"],[1,"text-center","widget-value-parent-wrap"],[1,"widget-value","mb-0"],[1,"widget-value-label","grey-text"]],template:function(t,i){t&1&&(b(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"div",4),a(5),m(6,"date"),x(),b(7,"div",5),a(8),m(9,"date"),x()()()()()),t&2&&(r(5),_(G(6,2,i.currentTime(),i.widget().timeFormat)),r(3),_(G(9,5,i.currentTime(),i.widget().dateFormat)))},dependencies:[mt],encapsulation:2,changeDetection:0})}return o})();var To=["widgetbackground"],Xe=(()=>{class o{destroyRef=C(F);$ws=C(ie);widget=O.required();chart=K(xe);widgetBackground=K("widgetbackground");io;stopInterval$=new he;resizeEvent;configureEvent;refreshInterval;historyItems;lineChartLabels=[];lineChartType="line";lineChartData={datasets:[{data:[]}]};lineChartOptions={responsive:!0,elements:{point:{radius:0},line:{tension:.4,backgroundColor:"rgba(148,159,177,0.2)",borderColor:"rgba(148,159,177,0.2)",fill:"origin"}},plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1,max:100,min:0}}};ngOnInit(){this.io=this.$ws.getExistingNamespace("status");let e=getComputedStyle(this.widgetBackground().nativeElement).backgroundColor;e&&(this.lineChartOptions.elements.line.backgroundColor=e,this.lineChartOptions.elements.line.borderColor=e),this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.fetchData()}),this.initializeWidget(),this.configureEvent.pipe(B(this.destroyRef)).subscribe(()=>{this.reinitializeWidget()})}ngOnDestroy(){this.stopInterval$.complete()}initializeWidget(){this.widget().refreshInterval||(this.widget().refreshInterval=10),this.widget().historyItems||(this.widget().historyItems=60),this.refreshInterval=Math.min(60,Math.max(1,this.widget().refreshInterval)),this.historyItems=Math.min(60,Math.max(1,this.widget().historyItems)),Ee(this.refreshInterval*1e3).pipe(Ye(this.stopInterval$),B(this.destroyRef)).subscribe(()=>{this.io.socket.connected&&this.fetchData()})}reinitializeWidget(){this.stopInterval$.next(),this.lineChartData.datasets[0].data=[],this.lineChartLabels=[],this.initializeWidget(),this.io.socket.connected&&this.fetchData()}initializeChartData(e){let t=e.slice(-this.historyItems);this.lineChartData.datasets[0].data=V({},t),this.lineChartLabels=t.map(()=>"point")}updateChartData(e){let t=Object.keys(this.lineChartData.datasets[0].data).length;this.lineChartData.datasets[0].data[t]=e,this.lineChartLabels.push("point"),t>=this.historyItems&&this.shiftChartData()}shiftChartData(){let e={};Object.keys(this.lineChartData.datasets[0].data).forEach((t,i,s)=>{i+1<s.length&&(e[t]=this.lineChartData.datasets[0].data[s[i+1]])}),this.lineChartData.datasets[0].data=e,this.lineChartLabels=this.lineChartLabels.slice(1)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-base-chart-widget"]],viewQuery:function(t,i){t&1&&ge(i.chart,xe,5)(i.widgetBackground,To,5),t&2&&ue(2)},inputs:{widget:[1,"widget"]},decls:0,vars:0,template:function(t,i){},encapsulation:2,changeDetection:0})}return o})();function Mo(o,n){if(o&1&&(a(0),m(1,"number")),o&2){let e=h();I(" ",G(1,1,e.currentLoad(),"1.0-0"),"% ")}}function ko(o,n){o&1&&v(0,"i",9)}function Wo(o,n){if(o&1&&(d(0,"div",7)(1,"div",8),a(2),m(3,"convertTemp"),m(4,"number"),m(5,"uppercase"),l(),d(6,"div",10),a(7),m(8,"translate"),l()()),o&2){let e=h();r(2),_e(" ",G(4,6,G(3,3,e.cpuTemperature().main,e.temperatureUnits),"1.0-0"),"\xB0",p(5,9,e.temperatureUnits)," "),r(5),_(p(8,11,"status.cpu.temp"))}}var un=(()=>{class o extends Xe{$settings=C(te);cpuTemperature=w({});currentLoad=w(0);temperatureUnits=this.$settings.env.temperatureUnits;fetchData(){this.io.request("get-server-cpu-info").subscribe(e=>{this.updateData(e),this.chart().update()})}updateData(e){this.cpuTemperature.set(e.cpuTemperature),this.currentLoad.set(e.currentLoad),Object.keys(this.lineChartData.datasets[0].data).length?this.updateChartData(e.currentLoad):this.initializeChartData(e.cpuLoadHistory)}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Oe(o)))(i||o)}})();static \u0275cmp=P({type:o,selectors:[["app-cpu-widget"]],features:[Ne],decls:17,vars:14,consts:[["widgetbackground",""],[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1"],[1,"drag-handler","p-2"],["baseChart","",1,"widget-chart","h-100","w-100",3,"data","labels","options","type"],[1,"hb-widget-chart-background"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],[1,"d-flex","justify-content-around","flex-wrap","w-100"],[1,"text-center","widget-value-parent-wrap"],[1,"widget-value","mb-0"],[1,"fas","fa-circle-notch","fa-spin"],[1,"widget-value-label","grey-text"]],template:function(t,i){t&1&&(d(0,"div",1)(1,"div",2),a(2),m(3,"translate"),l(),v(4,"canvas",3)(5,"div",4,0),d(7,"div",5)(8,"div",6)(9,"div",7)(10,"div",8),u(11,Mo,2,4)(12,ko,1,0,"i",9),l(),d(13,"div",10),a(14),m(15,"translate"),l()(),u(16,Wo,9,13,"div",7),l()()()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),I(" ",p(3,10,"status.cpu.title_cpu")," "),r(2),k("data",i.lineChartData)("labels",i.lineChartLabels)("options",i.lineChartOptions)("type",i.lineChartType),r(7),f(i.currentLoad()!==void 0?11:12),r(3),_(p(15,12,"status.cpu.load")),r(2),f(i.cpuTemperature().main&&i.cpuTemperature().main>0?16:-1))},dependencies:[xe,ct,Te,L,wt],styles:[".widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}"],changeDetection:0})}return o})();var $o=["pincode"],Do=["qrcodecontainer"];function Po(o,n){if(o&1&&v(0,"app-qrcode",7),o&2){let e=h();k("data",e.setupUri())}}function Ro(o,n){o&1&&v(0,"i",14)}function Bo(o,n){o&1&&v(0,"i",15)}function Lo(o,n){o&1&&v(0,"i",16)}function zo(o,n){if(o&1&&(d(0,"div",8),u(1,Ro,1,0,"i",14)(2,Bo,1,0,"i",15)(3,Lo,1,0,"i",16),l()),o&2){let e=h();r(),f(e.loading()?1:e.externalsOnly()?2:e.enabled()?-1:3)}}function Vo(o,n){if(o&1&&(d(0,"span",11),a(1),l()),o&2){let e=h();r(),_(e.pin())}}function Oo(o,n){o&1&&(a(0),m(1,"translate")),o&2&&I(" ",p(1,1,"status.services.hap_externals_only")," ")}function Ho(o,n){o&1&&(v(0,"br"),d(1,"small"),a(2),m(3,"translate"),l()),o&2&&(r(2),_(p(3,1,"status.code_scan")))}function No(o,n){if(o&1&&(a(0," \xB7 "),v(1,"i",17),a(2),m(3,"translate"),u(4,Ho,4,3)),o&2){let e=h(2);r(),R("green-text",e.paired())("grey-text",!e.paired()),r(),I(" ",p(3,6,e.paired()?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),r(2),f(e.paired()?-1:4)}}function Uo(o,n){if(o&1&&(a(0," HAP "),u(1,No,5,8)),o&2){let e=h();r(),f(e.pin()?1:-1)}}function Fo(o,n){o&1&&(a(0),m(1,"translate")),o&2&&I(" ",p(1,1,"status.services.hap_not_enabled")," ")}var fn=(()=>{class o{destroyRef=C(F);$ws=C(ie);widget=O.required();pincodeElement=K("pincode");qrcodeContainerElement=K("qrcodecontainer");enabled=w(!0);externalsOnly=w(!1);loading=w(!0);paired=w(!1);pin=w("");setupUri=w(null);qrCodeHeight=w(0);qrCodeWidth=w(0);io;statusHandler;resizeEvent;ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.statusHandler=e=>{this.applyHapStatus(e),requestAnimationFrame(()=>this.resizeQrCode())},this.io.socket.on("homebridge-status",this.statusHandler),this.resizeEvent.pipe(B(this.destroyRef)).subscribe(()=>{this.resizeQrCode()}),this.io.socket.connected&&queueMicrotask(()=>this.getPairingPin())}applyHapStatus(e){let t=e.hap?e.hap.enabled:!0,i=e.hap?.externalsOnly===!0;this.enabled.set(t),this.externalsOnly.set(i),t&&!i?(this.pin.set(e.pin),this.paired.set(e.paired),e.setupUri&&this.setupUri.set(e.setupUri)):(this.pin.set(""),this.paired.set(!1),this.setupUri.set(null)),this.loading.set(!1)}ngOnDestroy(){this.io&&this.statusHandler&&this.io.socket.off("homebridge-status",this.statusHandler)}resizeQrCode(){let e=this.qrcodeContainerElement().nativeElement.offsetHeight,t=this.qrcodeContainerElement().nativeElement.offsetWidth,i=this.pincodeElement().nativeElement.offsetHeight,s=e-i,c=t>s?s:t;this.qrCodeHeight.set(s),this.qrCodeWidth.set(c)}getPairingPin(){this.io.request("get-homebridge-pairing-pin").subscribe({next:e=>{this.applyHapStatus(e),requestAnimationFrame(()=>this.resizeQrCode())}})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-hap-qrcode-widget"]],viewQuery:function(t,i){t&1&&ge(i.pincodeElement,$o,5)(i.qrcodeContainerElement,Do,5),t&2&&ue(2)},inputs:{widget:[1,"widget"]},decls:17,vars:7,consts:[["qrcodecontainer",""],["pincode",""],[1,"d-flex","w-100","p-2"],[1,"drag-handler","d-flex","flex-column","w-100","h-100"],[1,"w-100"],[1,"text-center","qr-code-container","w-100","h-100","p-3"],[1,"w-100","h-100"],[1,"mx-auto",3,"data"],[1,"d-flex","align-items-center","justify-content-center","w-100","h-100","qr-loading-container"],[1,"text-center","w-100","mt-auto","gridster-item-content"],[1,"mb-1"],[1,"font-monospace"],[1,"grey-text","mb-1","small"],[1,"fas","fa-hap"],[1,"fas","fa-circle-notch","fa-spin","fa-2xl","grey-text"],[1,"fas","fa-hap","text-info","fa-2xl"],[1,"fas","fa-hap","grey-text","fa-2xl"],[1,"fas","fa-link"]],template:function(t,i){t&1&&(d(0,"div",2)(1,"div",3,0)(3,"div",4)(4,"div",5)(5,"div",6),u(6,Po,1,1,"app-qrcode",7)(7,zo,4,1,"div",8),l()()(),d(8,"div",9,1)(10,"p",10),u(11,Vo,2,1,"span",11),l(),d(12,"p",12),v(13,"i",13),u(14,Oo,2,3)(15,Uo,2,1)(16,Fo,2,3),l()()()()),t&2&&(r(3),be("height",i.qrCodeHeight(),"px")("width",i.qrCodeWidth(),"px"),r(3),f(i.setupUri()?6:7),r(5),f(i.pin()?11:-1),r(3),f(i.externalsOnly()?14:i.enabled()?15:16))},dependencies:[yt,L],styles:[".qr-loading-container[_ngcontent-%COMP%]{min-height:200px}"],changeDetection:0})}return o})();var Ao=["widgetcontainer"],qo=["terminaltitle"],jo=["searchcontainer"],Xo=["searchInput"],Go=["logoutput"];function Yo(o,n){if(o&1){let e=M();d(0,"div",13)(1,"button",14),m(2,"translate"),m(3,"translate"),W("mousedown",function(i){return i.stopPropagation()})("touchstart",function(i){return i.stopPropagation()})("click",function(){E(e);let i=h();return S(i.showSearch())}),v(4,"i",7),l(),d(5,"button",14),m(6,"translate"),m(7,"translate"),W("mousedown",function(i){return i.stopPropagation()})("touchstart",function(i){return i.stopPropagation()})("click",function(){E(e);let i=h();return S(i.downloadLogFile())}),v(8,"i",15),l(),d(9,"button",14),m(10,"translate"),m(11,"translate"),W("mousedown",function(i){return i.stopPropagation()})("touchstart",function(i){return i.stopPropagation()})("click",function(){E(e);let i=h();return S(i.truncateLogFile())}),v(12,"i",16),l()()}if(o&2){let e=h();R("with-gear",e.widget().draggable),r(),k("openDelay",150)("ngbTooltip",p(2,13,"form.search")),$("aria-label",p(3,15,"form.search")),r(3),se(`fas fa-search${e.showSearchBar()?" primary-text":""}`),r(),k("openDelay",150)("ngbTooltip",p(6,17,"form.button_download")),$("aria-label",p(7,19,"form.button_download")),r(4),k("openDelay",150)("ngbTooltip",p(10,21,"form.button_delete")),$("aria-label",p(11,23,"form.button_delete"))}}function Qo(o,n){if(o&1){let e=M();d(0,"button",20),m(1,"translate"),W("click",function(){E(e);let i=h(2);return S(i.onClearSearch())}),v(2,"i",21),l()}o&2&&$("aria-label",p(1,1,"form.button_clear"))}function Jo(o,n){if(o&1){let e=M();d(0,"div",10,3)(2,"form",17),W("ngSubmit",function(){E(e);let i=h();return S(i.onSubmit(i.form.value))}),v(3,"input",18,4),m(5,"translate"),u(6,Qo,3,3,"button",19),l()()}if(o&2){let e,t=h();r(2),k("formGroup",t.form),r(),R("search-bar-light",t.theme()==="light")("is-invalid",t.searchInputInvalid),k("placeholder",p(5,7,"logs.placeholder_search_logs")),r(3),f((e=t.form.get("query"))!=null&&e.value?6:-1)}}var _n=(()=>{class o{destroyRef=C(F);$auth=C(ke);$log=C(qi);$settings=C(te);$cdr=C(Be);widget=O.required();widgetContainerElement=K("widgetcontainer");titleElement=K("terminaltitle");searchContainerElement=K("searchcontainer");searchInput=K("searchInput");termTarget=K("logoutput");terminalHeight=w(200);theme=w("dark");showSearchBar=w(!1);showExitButton=w(!1);srExpanded=w(!1);contentId=`homebridge-logs-content-${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;isAdmin=this.$auth.user.admin;form=new bi({query:new gt("")});initialized=!1;resizeEvent;configureEvent;get searchInputInvalid(){let e=(this.form.get("query")?.value||"").trim();return e.length>0&&e.length<3}patchXtermLiveRegion(){let e=this.termTarget()?.nativeElement;if(!e)return;let t=e.querySelector("[aria-live]");t&&(t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"))}ngOnInit(){this.theme.set(this.$settings.getEffectiveTerminalLightingMode()),setTimeout(()=>{this.$log.startTerminal(this.termTarget(),this.$settings.getTerminalOptions({cursorBlink:!1,disableStdin:!0},!0),this.resizeEvent),requestAnimationFrame(()=>this.patchXtermLiveRegion()),this.initialized=!0,setTimeout(()=>{this.resizeEvent.next()},100)}),this.resizeEvent.pipe(B(this.destroyRef)).subscribe(()=>{this.initialized&&this.terminalHeight.set(this.getTerminalHeight())}),this.configureEvent.pipe(B(this.destroyRef)).subscribe(()=>{}),this.form.get("query")?.valueChanges.pipe(Se(500),Ve(),B(this.destroyRef)).subscribe(e=>{let t=e||"",i=t.trim();i!==t&&this.form.get("query")?.setValue(i,{emitEvent:!1}),i.length>=3?(this.showExitButton.set(!0),this.$log.setSearchFilter(i),this.$log.scrollToBottom()):i.length<3&&this.showExitButton()&&(this.showExitButton.set(!1),this.$log.clearSearchFilter(),this.$log.scrollToBottom())}),this.$settings.terminalSettingsChanged.pipe(B(this.destroyRef)).subscribe({next:e=>{if(!this.$log.term)return;let t=!1;if(e.fontSize&&this.$log.term.options.fontSize!==e.fontSize&&(this.$log.term.options.fontSize=e.fontSize,t=!0),e.fontWeight&&this.$log.term.options.fontWeight!==e.fontWeight&&(this.$log.term.options.fontWeight=e.fontWeight,t=!0),e.lightingMode!==void 0){let i=this.$settings.getTerminalThemeOptions(!0);this.$log.term.options.theme=i.theme,this.$log.term.options.allowTransparency=i.allowTransparency,t=!0,this.$cdr.markForCheck()}t&&(this.resizeEvent.next(void 0),setTimeout(()=>{this.$log.term.scrollToBottom()},100))}})}ngOnDestroy(){this.showExitButton()&&this.$log.clearSearchFilter(),this.$log.destroyTerminal()}toggleSrExpanded(e){e.stopPropagation(),this.srExpanded.set(!this.srExpanded())}showSearch(){this.showSearchBar()?(this.showSearchBar.set(!1),this.showExitButton.set(!1),this.form.setValue({query:""}),this.$log.clearSearchFilter()):(this.showSearchBar.set(!0),setTimeout(()=>this.searchInput()?.nativeElement.focus(),10)),setTimeout(()=>this.resizeEvent.next(void 0),10),this.$log.scrollToBottom()}onSubmit(e){let t=(e.query||"").trim();!t.length||t.length<3?(t.length||(this.showSearchBar.set(!1),setTimeout(()=>this.resizeEvent.next(void 0),10)),this.form.setValue({query:""}),this.showExitButton.set(!1),this.$log.clearSearchFilter()):(this.showExitButton.set(!0),this.$log.setSearchFilter(t)),this.$log.scrollToBottom()}onClearSearch(){this.form.setValue({query:""}),this.showExitButton.set(!1),this.$log.clearSearchFilter(),this.$log.scrollToBottom()}downloadLogFile(){return this.$log.downloadLogFile()}truncateLogFile(){return this.$log.truncateLogFile()}getTerminalHeight(){let e=this.widgetContainerElement().nativeElement.offsetHeight,t=this.titleElement().nativeElement.offsetHeight,i=this.searchContainerElement()?.nativeElement?.offsetHeight??0;return e-t-i}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-homebridge-logs-widget"]],viewQuery:function(t,i){t&1&&ge(i.widgetContainerElement,Ao,5)(i.titleElement,qo,5)(i.searchContainerElement,jo,5)(i.searchInput,Xo,5)(i.termTarget,Go,5),t&2&&ue(5)},inputs:{widget:[1,"widget"]},decls:16,vars:21,consts:[["widgetcontainer",""],["terminaltitle",""],["logoutput",""],["searchcontainer",""],["searchInput",""],[1,"flex-column","d-flex","align-items-stretch","h-100","w-100"],[1,"drag-handler","d-flex","align-items-center","justify-content-between","p-2"],["aria-hidden","true"],["type","button",1,"visually-hidden-focusable",3,"click"],[1,"d-flex","gap-1","widget-toolbar",3,"with-gear"],[1,"position-relative","px-2","pt-1"],[1,"p-2"],[1,"terminal","gridster-item-content","w-100","h-100","terminal-max-height"],[1,"d-flex","gap-1","widget-toolbar"],["type","button","container","body","placement","bottom","triggers","hover",1,"widget-toolbar-button",3,"mousedown","touchstart","click","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-download"],["aria-hidden","true",1,"fas","fa-trash-alt"],["novalidate","",3,"ngSubmit","formGroup"],["type","text","formControlName","query",1,"search-bar",3,"placeholder"],["type","button",1,"search-bar-clear"],["type","button",1,"search-bar-clear",3,"click"],["aria-hidden","true",1,"fas","fa-square-xmark"]],template:function(t,i){t&1&&(d(0,"div",5,0)(2,"div",6,1)(4,"span",7),a(5),m(6,"translate"),l(),d(7,"button",8),m(8,"translate"),W("click",function(c){return i.toggleSrExpanded(c)}),a(9),m(10,"translate"),l(),u(11,Yo,13,25,"div",9),l(),u(12,Jo,7,9,"div",10),d(13,"div",11),v(14,"div",12,2),l()()),t&2&&(R("widget-container-dark",i.theme()==="dark"),r(2),R("terminal-title-dark",i.theme()==="dark"),r(3),_(p(6,15,"status.widget.homebridge_logs")),r(2),$("aria-expanded",i.srExpanded())("aria-controls",i.contentId)("aria-label",p(8,17,"status.widget.homebridge_logs")),r(2),I(" ",p(10,19,"status.widget.homebridge_logs")," "),r(2),f(i.isAdmin&&i.widget().showToolbar?11:-1),r(),f(i.showSearchBar()?12:-1),r(),be("height",i.terminalHeight(),"px"),$("id",i.contentId)("aria-hidden",i.srExpanded()?null:"true"))},dependencies:[$e,ft,vi,Fe,Ae,Ci,Si,Ei,L],styles:[".widget-container-dark[_ngcontent-%COMP%]{background-color:#2b2b2b}.terminal-title-dark[_ngcontent-%COMP%]{color:#fff;background-color:#2b2b2b}.terminal-max-height[_ngcontent-%COMP%]{max-height:100%}.widget-toolbar-button[_ngcontent-%COMP%]{background:none;border:none;padding:10px;cursor:pointer;color:#999;border-radius:3px}[_nghost-%COMP%]{position:relative}.widget-toolbar[_ngcontent-%COMP%]{position:absolute;top:0;right:2px}.widget-toolbar.with-gear[_ngcontent-%COMP%]{right:42px}@media(max-width:575.98px){.widget-toolbar[_ngcontent-%COMP%]{right:42px}}.search-bar[_ngcontent-%COMP%]{outline:none;box-sizing:inherit!important;height:36px!important;width:100%;padding:6px 36px 6px 10px;background-color:#111!important;color:#999!important;border:0 #242424!important}@media(hover:hover){.search-bar[_ngcontent-%COMP%]:hover{border:1px solid #242424!important}}.search-bar[_ngcontent-%COMP%]:focus{border:1px solid #242424!important;box-shadow:inherit!important;color:#eee!important}.search-bar[_ngcontent-%COMP%]::placeholder{color:#636363!important;opacity:1!important}.search-bar.search-bar-light[_ngcontent-%COMP%]{background-color:#fff!important;color:#000!important;border:.5px solid #d0d0d0!important}@media(hover:hover){.search-bar.search-bar-light[_ngcontent-%COMP%]:hover{border:1px solid #000000!important}}.search-bar.search-bar-light[_ngcontent-%COMP%]:focus{border:1px solid #000000!important;box-shadow:0 1px #000!important;color:#000!important}.search-bar.search-bar-light[_ngcontent-%COMP%]::placeholder{color:#757575!important;opacity:1!important}.search-bar.is-invalid[_ngcontent-%COMP%]{border:1px solid #d32f2f!important;box-shadow:0 1px #d32f2f!important}@media(hover:hover){.search-bar.is-invalid[_ngcontent-%COMP%]:hover{border:1px solid #d32f2f!important;box-shadow:0 1px #d32f2f!important}}.search-bar.is-invalid[_ngcontent-%COMP%]:focus{border:1px solid #d32f2f!important;box-shadow:0 1px #d32f2f!important}.search-bar-clear[_ngcontent-%COMP%]{position:absolute;right:12px;top:4px;height:36px;background:transparent;border:none;font-size:16px;color:#636363;cursor:pointer;padding:0 6px;display:flex;align-items:center}.search-bar-clear[_ngcontent-%COMP%]:hover{color:#999}"],changeDetection:0})}return o})();var Ko=["pincodeMatter"],Zo=["qrcodecontainerMatter"];function es(o,n){if(o&1&&v(0,"app-qrcode",7),o&2){let e=h();k("data",e.setupUri())}}function ts(o,n){o&1&&v(0,"i",14)}function is(o,n){o&1&&v(0,"i",15)}function ns(o,n){if(o&1&&(d(0,"div",8),u(1,ts,1,0,"i",14)(2,is,1,0,"i",15),l()),o&2){let e=h();r(),f(e.loading()?1:e.enabled()?-1:2)}}function os(o,n){if(o&1&&(d(0,"span",11),a(1),l()),o&2){let e=h();r(),_(e.pin())}}function ss(o,n){o&1&&(v(0,"br"),d(1,"small"),a(2),m(3,"translate"),l()),o&2&&(r(2),_(p(3,1,"status.code_scan")))}function rs(o,n){if(o&1&&(a(0," Matter \xB7 "),v(1,"i",16),a(2),m(3,"translate"),u(4,ss,4,3)),o&2){let e=h(2);r(),R("green-text",e.commissioned())("grey-text",!e.commissioned()),r(),I(" ",p(3,6,e.commissioned()?"status.widget.qr_paired":"status.widget.qr_unpaired")," "),r(2),f(e.commissioned()?-1:4)}}function as(o,n){if(o&1&&u(0,rs,5,8),o&2){let e=h();f(e.pin()?0:-1)}}function ls(o,n){o&1&&(a(0),m(1,"translate")),o&2&&I(" ",p(1,1,"status.services.matter_not_enabled")," ")}var Cn=(()=>{class o{destroyRef=C(F);$ws=C(ie);widget=O.required();pincodeElement=K("pincodeMatter");qrcodeContainerElement=K("qrcodecontainerMatter");enabled=w(!1);loading=w(!0);commissioned=w(!1);pin=w("");setupUri=w(null);qrCodeHeight=w(0);qrCodeWidth=w(0);io;statusHandler;resizeEvent;ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.statusHandler=e=>{this.applyMatterStatus(e),requestAnimationFrame(()=>this.resizeQrCode())},this.io.socket.on("homebridge-status",this.statusHandler),this.resizeEvent.pipe(B(this.destroyRef)).subscribe(()=>{this.resizeQrCode()}),this.io.socket.connected&&queueMicrotask(()=>this.getMatterInfo())}ngOnDestroy(){this.io&&this.statusHandler&&this.io.socket.off("homebridge-status",this.statusHandler)}resizeQrCode(){let e=this.qrcodeContainerElement().nativeElement.offsetHeight,t=this.qrcodeContainerElement().nativeElement.offsetWidth,i=this.pincodeElement().nativeElement.offsetHeight,s=e-i,c=t>s?s:t;this.qrCodeHeight.set(s),this.qrCodeWidth.set(c)}applyMatterStatus(e){e.matter?(this.enabled.set(e.matter.enabled),e.matter.enabled?(this.pin.set(e.matter.pin||this.pin()),this.commissioned.set(e.matter.commissioned||!1),this.setupUri.set(e.matter.setupUri||null)):(this.setupUri.set(null),this.commissioned.set(!1))):(this.enabled.set(!1),this.pin.set(""),this.setupUri.set(null),this.commissioned.set(!1)),this.loading.set(!1)}getMatterInfo(){this.io.request("get-homebridge-pairing-pin").subscribe({next:e=>{this.applyMatterStatus(e),requestAnimationFrame(()=>this.resizeQrCode())}})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-matter-qrcode-widget"]],viewQuery:function(t,i){t&1&&ge(i.pincodeElement,Ko,5)(i.qrcodeContainerElement,Zo,5),t&2&&ue(2)},inputs:{widget:[1,"widget"]},decls:16,vars:7,consts:[["qrcodecontainerMatter",""],["pincodeMatter",""],[1,"d-flex","w-100","p-2"],[1,"drag-handler","d-flex","flex-column","w-100","h-100"],[1,"w-100"],[1,"text-center","qr-code-container","w-100","h-100","p-3"],[1,"w-100","h-100"],[1,"mx-auto",3,"data"],[1,"d-flex","align-items-center","justify-content-center","w-100","h-100","qr-loading-container"],[1,"text-center","w-100","mt-auto","gridster-item-content"],[1,"mb-1"],[1,"font-monospace"],[1,"grey-text","mb-1","small"],[1,"fas","fa-matter"],[1,"fas","fa-circle-notch","fa-spin","fa-2xl","grey-text"],[1,"fas","fa-matter","grey-text","fa-2xl"],[1,"fas","fa-link"]],template:function(t,i){t&1&&(d(0,"div",2)(1,"div",3,0)(3,"div",4)(4,"div",5)(5,"div",6),u(6,es,1,1,"app-qrcode",7)(7,ns,3,1,"div",8),l()()(),d(8,"div",9,1)(10,"p",10),u(11,os,2,1,"span",11),l(),d(12,"p",12),v(13,"i",13),u(14,as,1,1)(15,ls,2,3),l()()()()),t&2&&(r(3),be("height",i.qrCodeHeight(),"px")("width",i.qrCodeWidth(),"px"),r(3),f(i.setupUri()?6:7),r(5),f(i.pin()?11:-1),r(3),f(i.enabled()?14:15))},dependencies:[yt,L],styles:[".qr-loading-container[_ngcontent-%COMP%]{min-height:200px}"],changeDetection:0})}return o})();function ds(o,n){if(o&1&&(a(0),m(1,"number")),o&2){let e=h();I(" ",G(1,1,e.totalMemory(),"1.0-2")," GB ")}}function cs(o,n){o&1&&v(0,"i",9)}function ms(o,n){if(o&1&&(a(0),m(1,"number")),o&2){let e=h();I(" ",G(1,1,e.freeMemory(),"1.0-2")," GB ")}}function ps(o,n){o&1&&v(0,"i",9)}var bn=(()=>{class o extends Xe{totalMemory=w(0);freeMemory=w(0);fetchData(){this.io.request("get-server-memory-info").subscribe(e=>{this.updateData(e),this.chart().update()})}updateData(e){this.totalMemory.set(e.mem.total/1024/1024/1024),this.freeMemory.set(e.mem.available/1024/1024/1024),Object.keys(this.lineChartData.datasets[0].data).length?this.updateChartData(e.memoryUsageHistory.slice(-1)[0]):this.initializeChartData(e.memoryUsageHistory)}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Oe(o)))(i||o)}})();static \u0275cmp=P({type:o,selectors:[["app-memory-widget"]],features:[Ne],decls:23,vars:17,consts:[["widgetbackground",""],[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1"],[1,"drag-handler","p-2"],["baseChart","",1,"widget-chart","h-100","w-100",3,"data","labels","options","type"],[1,"hb-widget-chart-background"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],[1,"d-flex","justify-content-around","flex-wrap","w-100"],[1,"text-center","widget-value-parent-wrap"],[1,"widget-value","mb-0"],[1,"fas","fa-circle-notch","fa-spin"],[1,"widget-value-label","grey-text"]],template:function(t,i){t&1&&(d(0,"div",1)(1,"div",2),a(2),m(3,"translate"),l(),v(4,"canvas",3)(5,"div",4,0),d(7,"div",5)(8,"div",6)(9,"div",7)(10,"div",8),u(11,ds,2,4)(12,cs,1,0,"i",9),l(),d(13,"div",10),a(14),m(15,"translate"),l()(),d(16,"div",7)(17,"div",8),u(18,ms,2,4)(19,ps,1,0,"i",9),l(),d(20,"div",10),a(21),m(22,"translate"),l()()()()()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),I(" ",p(3,11,"status.memory.title_memory")," "),r(2),k("data",i.lineChartData)("labels",i.lineChartLabels)("options",i.lineChartOptions)("type",i.lineChartType),r(7),f(i.totalMemory()!==void 0?11:12),r(3),_(p(15,13,"status.memory.label_total")),r(4),f(i.freeMemory()!==void 0?18:19),r(3),_(p(22,15,"status.memory.label_available")))},dependencies:[xe,Te,L],styles:[".widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}"],changeDetection:0})}return o})();function hs(o,n){if(o&1&&(a(0),m(1,"number")),o&2){let e=h();I(" ",G(1,1,e.receivedPerSec(),"1.0-1")," Mb/s ")}}function gs(o,n){o&1&&v(0,"i",9)}function us(o,n){if(o&1&&(a(0),m(1,"number")),o&2){let e=h();I(" ",G(1,1,e.sentPerSec(),"1.0-1")," Mb/s ")}}function fs(o,n){o&1&&v(0,"i",9)}var xn=(()=>{class o extends Xe{interface=w("");receivedPerSec=w(0);sentPerSec=w(0);fetchData(){this.io.request("get-server-network-info",{netInterfaces:[this.widget().networkInterface]}).subscribe(e=>{this.interface()!==e.net.iface&&(this.widget().networkInterface=e.net.iface,this.interface.set(e.net.iface),this.lineChartData.datasets[0].data=V({},[]),this.lineChartLabels=[],this.chart().update()),this.receivedPerSec.set(e.net.rx_sec/1024/1024*8),this.sentPerSec.set(e.net.tx_sec/1024/1024*8),e.point<1&&(e.point=0),this.updateData(e),this.chart().update()})}updateData(e){if(Object.keys(this.lineChartData.datasets[0].data).length)this.updateChartData(e.point);else{let i=[e.point];this.initializeChartData(i)}}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Oe(o)))(i||o)}})();static \u0275cmp=P({type:o,selectors:[["app-network-widget"]],features:[Ne],decls:23,vars:18,consts:[["widgetbackground",""],[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1"],[1,"drag-handler","p-2"],["baseChart","",1,"widget-chart","h-100","w-100",3,"data","labels","options","type"],[1,"hb-widget-chart-background"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],[1,"d-flex","justify-content-around","flex-wrap","w-100"],[1,"text-center","widget-value-parent-wrap"],[1,"widget-value","mb-0"],[1,"fas","fa-circle-notch","fa-spin"],[1,"widget-value-label","grey-text"]],template:function(t,i){t&1&&(d(0,"div",1)(1,"div",2),a(2),m(3,"translate"),l(),v(4,"canvas",3)(5,"div",4,0),d(7,"div",5)(8,"div",6)(9,"div",7)(10,"div",8),u(11,hs,2,4)(12,gs,1,0,"i",9),l(),d(13,"div",10),a(14),m(15,"translate"),l()(),d(16,"div",7)(17,"div",8),u(18,us,2,4)(19,fs,1,0,"i",9),l(),d(20,"div",10),a(21),m(22,"translate"),l()()()()()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),_e(" ",p(3,12,"status.network.title_network")," (",i.widget().networkInterface,") "),r(2),k("data",i.lineChartData)("labels",i.lineChartLabels)("options",i.lineChartOptions)("type",i.lineChartType),r(7),f(i.receivedPerSec()!==void 0?11:12),r(3),_(p(15,14,"status.network.received_per_second")),r(4),f(i.sentPerSec()!==void 0?18:19),r(3),_(p(22,16,"status.network.sent_per_second")))},dependencies:[xe,Te,L],styles:[".widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}"],changeDetection:0})}return o})();function _s(o,n){if(o&1&&a(0),o&2){let e=h(3);Ut(" ",e.serverInfo().os.distro," ",e.serverInfo().os.codename," (",e.serverInfo().os.release,") ")}}function Cs(o,n){if(o&1&&a(0),o&2){let e=h(3);I(" ",e.serverInfo().os.distro," ")}}function bs(o,n){if(o&1&&(a(0),m(1,"titlecase")),o&2){let e=h(3);Ut(" ",e.serverInfo().os.distro," ",p(1,3,e.serverInfo().os.codename)," (",e.serverInfo().os.release,") ")}}function xs(o,n){if(o&1&&(b(0,"td",5),u(1,_s,1,3)(2,Cs,1,1)(3,bs,2,5),x()),o&2){let e,t=h(2);r(),f((e=t.serverInfo().os.platform)==="darwin"?1:e==="win32"?2:3)}}function vs(o,n){o&1&&(b(0,"td",5),a(1,"Synology DSM"),x())}function ws(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),u(4,xs,4,1,"td",5)(5,vs,2,0,"td",5),x(),b(6,"tr")(7,"th",4),a(8),m(9,"translate"),x(),b(10,"td",5),a(11),x()()),o&2){let e=h();r(2),_(p(3,5,"status.widget.info.os")),r(2),f(e.serverInfo().homebridgeRunningInSynologyPackage?5:4),r(4),_(p(9,7,"status.widget.info.arch")),r(3),_e(" ",e.serverInfo().os.arch," (",e.arch64bitList.includes(e.serverInfo().os.arch)?"64-bit":"32-bit",") ")}}function ys(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_e(" ",p(3,3,"status.widget.info.ipv4")," (",e.serverInfo().network.iface,") "),r(3),_(e.serverInfo().network.ip4)}}function Is(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_e(" ",p(3,3,"status.widget.info.ipv6")," (",e.serverInfo().network.iface,") "),r(3),_(e.serverInfo().network.ip6)}}function Es(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.hostname")),r(3),_(e.serverInfo().os.hostname)}}function Ss(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.service_user")),r(3),_(e.serverInfo().serviceUser)}}function Ts(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.nodejs_path")),r(3),_(e.nodejsInfo().installPath)}}function Ms(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.storage_path")),r(3),_(e.serverInfo().homebridgeStoragePath)}}function ks(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.config_path")),r(3),_(e.serverInfo().homebridgeConfigJsonPath)}}function Ws(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.plugin_path")),r(3),I(" ",e.serverInfo().homebridgeCustomPluginPath||e.serverInfo().homebridgePluginPath," ")}}function $s(o,n){if(o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",5),a(5),x()()),o&2){let e=h();r(2),_(p(3,2,"status.widget.info.timezone")),r(3),_(e.serverInfo().time.timezone)}}function Ds(o,n){o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",6),a(5),m(6,"translate"),x()()),o&2&&(r(2),_(p(3,2,"status.widget.info.docker")),r(3),_(p(6,4,"status.widget.info.yes")))}function Ps(o,n){o&1&&(b(0,"tr")(1,"th",4),a(2),m(3,"translate"),x(),b(4,"td",6),a(5),m(6,"translate"),x()()),o&2&&(r(2),_(p(3,2,"status.widget.info.synology_package")),r(3),_(p(6,4,"status.widget.info.yes")))}var vn=(()=>{class o{destroyRef=C(F);$ws=C(ie);widget=O.required();serverInfo=w({network:{},os:{},time:{}});nodejsInfo=w({});io;arch64bitList=["x64","amd64","arm64","aarch64","ppc64","ppc64le","s390x","riscv64","loongarch64","mips64el","mips64","sparc64"];ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.getSystemInfo()})}getSystemInfo(){this.io.request("get-homebridge-server-info").subscribe(e=>{this.serverInfo.set(e)}),this.io.request("nodejs-version-check").subscribe(e=>{this.nodejsInfo.set(e)})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-system-info-widget"]],inputs:{widget:[1,"widget"]},decls:19,vars:17,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1","overflow-auto","no-scrollbars"],[1,"drag-handler","p-2"],[1,"d-flex","flex-wrap","w-100","px-1"],[1,"table","table-sm","table-borderless","gridster-item-content"],["scope","row",1,"text-nowrap"],[1,"grey-text"],[1,"text-nowrap","grey-text"]],template:function(t,i){t&1&&(b(0,"div",0)(1,"div",1),a(2),m(3,"translate"),x(),b(4,"div",2)(5,"table",3)(6,"tbody"),u(7,ws,12,9),u(8,ys,6,5,"tr"),u(9,Is,6,5,"tr"),u(10,Es,6,4,"tr"),u(11,Ss,6,4,"tr"),u(12,Ts,6,4,"tr"),u(13,Ms,6,4,"tr"),u(14,ks,6,4,"tr"),u(15,Ws,6,4,"tr"),u(16,$s,6,4,"tr"),u(17,Ds,7,6,"tr"),u(18,Ps,7,6,"tr"),x()()()()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),_(p(3,15,"status.widget.info")),r(5),f("homebridgeRunningInSynologyPackage"in i.serverInfo()?7:-1),r(),f(i.serverInfo().network.ip4?8:-1),r(),f(i.serverInfo().network.ip6?9:-1),r(),f(i.serverInfo().os.hostname?10:-1),r(),f("serviceUser"in i.serverInfo()?11:-1),r(),f("installPath"in i.nodejsInfo()?12:-1),r(),f("homebridgeStoragePath"in i.serverInfo()?13:-1),r(),f("homebridgeConfigJsonPath"in i.serverInfo()?14:-1),r(),f("homebridgeCustomPluginPath"in i.serverInfo()||"homebridgePluginPath"in i.serverInfo()?15:-1),r(),f(i.serverInfo().time.timezone?16:-1),r(),f(i.serverInfo().homebridgeRunningInDocker?17:-1),r(),f(i.serverInfo().homebridgeRunningInSynologyPackage?18:-1))},dependencies:[dt,L],styles:["table.table-sm[_ngcontent-%COMP%]{margin-bottom:0}table.table-sm[_ngcontent-%COMP%] th[_ngcontent-%COMP%], table.table-sm[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:.3rem;padding-bottom:.3rem}@media(hover:hover){.system-info-link[_ngcontent-%COMP%]:hover{text-decoration:underline}}"],changeDetection:0})}return o})();var Rs=["widgetcontainer"],Bs=["terminaltitle"],Ls=["terminaloutput"],wn=(()=>{class o{destroyRef=C(F);$terminal=C(Li);$settings=C(te);$navigationGuard=C(vt);$cdr=C(Be);widget=O.required();widgetContainerElement=K("widgetcontainer");titleElement=K("terminaltitle");termTarget=K("terminaloutput");terminalHeight=w(200);theme=w("dark");srExpanded=w(!1);contentId=`terminal-content-${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;visibilityChangeHandler=null;resizeEvent;configureEvent;onBeforeUnload(e){this.$navigationGuard.handleBeforeUnload(e)}onWindowFocus(){this.srExpanded()&&this.$terminal.activateTerminal()}onClick(){this.$terminal.activateTerminal()}onTouchStart(e){this.$terminal.onTouchStart(e)}onTouchEnd(e){this.$terminal.onTouchEnd(e)}patchXtermLiveRegion(){let e=this.termTarget()?.nativeElement;if(!e)return;let t=e.querySelector("[aria-live]");t&&(t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"))}applyTerminalA11yState(){let e=this.termTarget()?.nativeElement;if(!e)return;let t=e.querySelector("textarea");t&&(this.srExpanded()?(t.removeAttribute("aria-hidden"),t.removeAttribute("tabindex")):(t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex","-1")))}kickFocusOutOfCollapsedTerminal(){if(this.srExpanded())return;let e=this.termTarget()?.nativeElement;if(!e||!e.contains(document.activeElement))return;this.titleElement()?.nativeElement?.querySelector("button")?.focus()}toggleSrExpanded(e){e.stopPropagation(),this.srExpanded.set(!this.srExpanded()),setTimeout(()=>{this.applyTerminalA11yState(),this.patchXtermLiveRegion(),this.srExpanded()?(this.resizeEvent.next(void 0),this.$terminal.activateTerminal()):this.kickFocusOutOfCollapsedTerminal()},0)}ngOnInit(){this.theme.set(this.$settings.getEffectiveTerminalLightingMode()),queueMicrotask(()=>{let e=this.$settings.getTerminalOptions({cursorBlink:!1},!0);if(this.$terminal.isTerminalReady()){this.$terminal.reconnectTerminal(this.termTarget(),e,this.resizeEvent,!1);return}this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()?this.$terminal.reconnectTerminal(this.termTarget(),e,this.resizeEvent,!1):this.$terminal.startTerminal(this.termTarget(),e,this.resizeEvent,!1),setTimeout(()=>{this.applyTerminalA11yState(),this.patchXtermLiveRegion(),this.srExpanded()&&this.$terminal.activateTerminal()},100)}),this.resizeEvent.pipe(B(this.destroyRef)).subscribe({next:()=>{this.terminalHeight.set(this.getTerminalHeight())}}),this.configureEvent.pipe(B(this.destroyRef)).subscribe(()=>{}),this.$settings.terminalSettingsChanged.pipe(B(this.destroyRef)).subscribe({next:e=>{if(!this.$terminal.term)return;let t=!1;if(e.fontSize&&this.$terminal.term.options.fontSize!==e.fontSize&&(this.$terminal.term.options.fontSize=e.fontSize,t=!0),e.fontWeight&&this.$terminal.term.options.fontWeight!==e.fontWeight&&(this.$terminal.term.options.fontWeight=e.fontWeight,t=!0),e.lightingMode!==void 0){let i=this.$settings.getTerminalThemeOptions(!0);this.$terminal.term.options.theme=i.theme,this.$terminal.term.options.allowTransparency=i.allowTransparency,t=!0,this.$cdr.markForCheck()}t&&(this.resizeEvent.next(void 0),setTimeout(()=>{this.$terminal.term.scrollToBottom()},100))}}),this.visibilityChangeHandler=this.onVisibilityChange.bind(this),document.addEventListener("visibilitychange",this.visibilityChangeHandler)}onVisibilityChange(){!document.hidden&&this.$terminal.isTerminalReady()&&this.isTerminalWidgetVisible()&&setTimeout(()=>{this.applyTerminalA11yState(),this.patchXtermLiveRegion(),this.srExpanded()&&this.$terminal.activateTerminal()},100)}isTerminalWidgetVisible(){let e=this.widgetContainerElement()?.nativeElement;if(!e)return!1;let t=e.getBoundingClientRect();return t.width>0&&t.height>0}ngOnDestroy(){this.visibilityChangeHandler&&(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null),this.$settings.env.terminal?.persistence?this.$terminal.detachTerminal():this.$terminal.destroyTerminal()}getTerminalHeight(){let e=this.widgetContainerElement().nativeElement.offsetHeight,t=this.titleElement().nativeElement.offsetHeight;return e-t}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-terminal-widget"]],viewQuery:function(t,i){t&1&&ge(i.widgetContainerElement,Rs,5)(i.titleElement,Bs,5)(i.termTarget,Ls,5),t&2&&ue(3)},hostBindings:function(t,i){t&1&&W("beforeunload",function(c){return i.onBeforeUnload(c)},Qe)("focus",function(){return i.onWindowFocus()},Qe)("click",function(){return i.onClick()})("touchstart",function(c){return i.onTouchStart(c)})("touchend",function(c){return i.onTouchEnd(c)})},inputs:{widget:[1,"widget"]},decls:14,vars:19,consts:[["widgetcontainer",""],["terminaltitle",""],["terminaloutput",""],[1,"flex-column","d-flex","align-items-stretch","h-100","w-100"],[1,"drag-handler","p-2"],["aria-hidden","true"],["type","button",1,"visually-hidden-focusable",3,"click"],[1,"p-2"],[1,"terminal","gridster-item-content","w-100","h-100","terminal-max-height"]],template:function(t,i){t&1&&(b(0,"div",3,0)(2,"div",4,1)(4,"span",5),a(5),m(6,"translate"),x(),b(7,"button",6),m(8,"translate"),J("click",function(c){return i.toggleSrExpanded(c)}),a(9),m(10,"translate"),x()(),b(11,"div",7),X(12,"div",8,2),x()()),t&2&&(R("widget-container-dark",i.theme()==="dark"),r(2),R("terminal-title-dark",i.theme()==="dark"),r(3),I("Homebridge ",p(6,13,"menu.docker.terminal")),r(2),$("aria-expanded",i.srExpanded())("aria-controls",i.contentId)("aria-label",p(8,15,"menu.docker.terminal")),r(2),I(" ",p(10,17,"menu.docker.terminal")," "),r(2),be("height",i.terminalHeight(),"px"),$("id",i.contentId)("aria-hidden",i.srExpanded()?null:"true"))},dependencies:[L],styles:[".widget-container-dark[_ngcontent-%COMP%]{background-color:#2b2b2b}.terminal-title-dark[_ngcontent-%COMP%]{color:#fff;background-color:#2b2b2b}.terminal-max-height[_ngcontent-%COMP%]{max-height:100%}"],changeDetection:0})}return o})();var Pt=ti(Pn(),1);var zs=o=>({architecture:o}),Vs=(o,n)=>({pluginName:o,nodeVersion:n});function Os(o,n){o&1&&(d(0,"div",5),v(1,"i",13),l())}function Hs(o,n){if(o&1&&a(0),o&2){let e=h(2);I(" \u2192 ",e.latestVersion," ")}}function Ns(o,n){o&1&&(d(0,"li"),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.widget.info.node_update_message_2")))}function Us(o,n){o&1&&(d(0,"li"),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.widget.info.node_unsupp_message")))}function Fs(o,n){o&1&&(d(0,"div",27),v(1,"i",33),l())}function As(o,n){o&1&&(d(0,"div",27),v(1,"i",33),l())}function qs(o,n){o&1&&(d(0,"div",27),v(1,"i",33),l())}function js(o,n){o&1&&v(0,"i",38)}function Xs(o,n){o&1&&v(0,"i",39)}function Gs(o,n){if(o&1&&(d(0,"ul",32)(1,"li",34),a(2),m(3,"translate"),l(),d(4,"li",35)(5,"div",36),a(6," Node.js v24 "),v(7,"br"),d(8,"span",37),a(9),m(10,"translate"),l()(),d(11,"div",27),u(12,js,1,0,"i",38)(13,Xs,1,0,"i",39),l()()()),o&2){let e=h(2);r(2),_(p(3,3,"status.widget.info.node_major")),r(7),I(" ",G(10,5,e.supportsNodeJs24?"status.widget.info.node_next_yes":"status.widget.info.node_next_no",ci(8,zs,e.architecture))," "),r(3),f(e.supportsNodeJs24?12:13)}}function Ys(o,n){o&1&&v(0,"i",38)}function Qs(o,n){o&1&&v(0,"i",39)}function Js(o,n){o&1&&v(0,"i",41)}function Ks(o,n){if(o&1){let e=M();d(0,"li",35)(1,"div",22)(2,"img",40),W("error",function(){let i=E(e).$implicit,s=h(3);return S(s.handleIconError(i))}),l()(),d(3,"div",36),a(4),v(5,"br"),d(6,"span",37),a(7),m(8,"translate"),l()(),d(9,"div",27),u(10,Ys,1,0,"i",38)(11,Qs,1,0,"i",39)(12,Js,1,0,"i",41),l()()}if(o&2){let e=n.$implicit,t=h(3);r(2),k("src",e.icon,rt),r(2),I(" ",e.displayName),r(3),I(" ",G(8,4,e.isSupportedStr,mi(7,Vs,e.displayName,t.latestVersion))," "),r(3),f(e.isSupported==="yes"?10:e.isSupported==="no"?11:12)}}function Zs(o,n){if(o&1&&(d(0,"ul",32)(1,"li",34),a(2),m(3,"translate"),l(),Y(4,Ks,13,10,"li",35,fe),l()),o&2){let e=h(2);r(2),_(p(3,1,"menu.label_plugins")),r(2),Q(e.installedPlugins())}}function er(o,n){if(o&1&&(d(0,"div",9),v(1,"i",14),d(2,"h5",15),a(3),u(4,Hs,1,1),l()(),d(5,"ul",16)(6,"li"),a(7),m(8,"translate"),l(),u(9,Ns,3,3,"li"),u(10,Us,3,3,"li"),l(),d(11,"ul",17),m(12,"translate"),d(13,"div",18),a(14),m(15,"translate"),l(),d(16,"li",19)(17,"label",20),v(18,"input",21),m(19,"translate"),d(20,"div",22),v(21,"i",23),l(),d(22,"div",24)(23,"div",25),a(24),m(25,"translate"),l(),d(26,"small",26),a(27),m(28,"translate"),l()(),u(29,Fs,2,0,"div",27),l()(),d(30,"li",19)(31,"label",20),v(32,"input",28),m(33,"translate"),d(34,"div",22),v(35,"i",29),l(),d(36,"div",24)(37,"div",25),a(38),m(39,"translate"),l(),d(40,"small",26),a(41),m(42,"translate"),l()(),u(43,As,2,0,"div",27),l()(),d(44,"li",19)(45,"label",20),v(46,"input",30),m(47,"translate"),d(48,"div",22),v(49,"i",31),l(),d(50,"div",24)(51,"div",25),a(52),m(53,"translate"),l(),d(54,"small",26),a(55),m(56,"translate"),l()(),u(57,qs,2,0,"div",27),l()()(),u(58,Gs,14,10,"ul",32),u(59,Zs,6,3,"ul",32)),o&2){let e=h();r(3),I(" ",e.nodeVersion," "),r(),f(e.latestVersion!==e.nodeVersion?4:-1),r(3),_(p(8,36,"status.widget.info.node_update_message")),r(2),f(e.homebridgeRunningInSynologyPackage||e.homebridgeRunningInDocker?9:-1),r(),f(e.showNodeUnsupportedWarning?10:-1),r(),$("aria-label",p(12,38,"plugins.manage.notifications")),r(3),I(" ",p(15,40,"plugins.manage.notifications")," "),r(4),k("formControl",e.nodeUpdatePolicyControl),$("aria-label",p(19,42,"plugins.manage.notifications_all")),r(3),R("primary-text",e.nodeUpdatePolicyControl.value==="all")("grey-text",e.nodeUpdatePolicyControl.value!=="all"),r(3),_(p(25,44,"plugins.manage.notifications_all")),r(3),_(p(28,46,"plugins.manage.notifications_all_desc")),r(2),f(e.nodeUpdatePolicyControl.value==="all"?29:-1),r(3),k("formControl",e.nodeUpdatePolicyControl),$("aria-label",p(33,48,"plugins.manage.notifications_major")),r(3),R("primary-text",e.nodeUpdatePolicyControl.value==="major")("grey-text",e.nodeUpdatePolicyControl.value!=="major"),r(3),_(p(39,50,"plugins.manage.notifications_major")),r(3),_(p(42,52,"plugins.manage.notifications_major_desc")),r(2),f(e.nodeUpdatePolicyControl.value==="major"?43:-1),r(3),k("formControl",e.nodeUpdatePolicyControl),$("aria-label",p(47,54,"plugins.manage.notifications_none")),r(3),R("primary-text",e.nodeUpdatePolicyControl.value==="none")("grey-text",e.nodeUpdatePolicyControl.value!=="none"),r(3),_(p(53,56,"plugins.manage.notifications_none")),r(3),_(p(56,58,"plugins.manage.notifications_none_desc")),r(2),f(e.nodeUpdatePolicyControl.value==="none"?57:-1),r(),f(e.hasNode24OrAbove?-1:58),r(),f(e.installedPlugins().length?59:-1)}}var yn=(()=>{class o{$activeModal=C(We);$api=C(Ue);$pluginsCache=C(ji);$settings=C(te);$toastr=C(Me);$translate=C(de);modalData=C(xt);nodeVersion=this.modalData.nodeVersion;latestVersion=this.modalData.latestVersion;showNodeUnsupportedWarning=this.modalData.showNodeUnsupportedWarning;homebridgeRunningInSynologyPackage=this.modalData.homebridgeRunningInSynologyPackage;homebridgeRunningInDocker=this.modalData.homebridgeRunningInDocker;homebridgePkg=this.modalData.homebridgePkg;architecture=this.modalData.architecture;supportsNodeJs24=this.modalData.supportsNodeJs24;onUpdate=this.modalData.onUpdate;statusIo=this.modalData.statusIo;loading=w(!0);installedPlugins=w([]);hasNode24OrAbove=!1;nodeUpdatePolicyControl=new gt("all");defaultIcon="assets/hb-icon.png";ngOnInit(){this.nodeUpdatePolicyControl.setValue(this.$settings.env.nodeUpdatePolicy||"all"),this.hasNode24OrAbove=(0,Pt.satisfies)(this.nodeVersion,">=24.0.0",{includePrerelease:!0}),this.nodeUpdatePolicyControl.valueChanges.pipe(Se(500),Ve()).subscribe(e=>{this.updateNodeUpdatePolicy(e)}),this.initialize()}initialize(){return U(this,null,function*(){yield this.loadInstalledPlugins(),this.loading.set(!1)})}updateNodeUpdatePolicy(e){return U(this,null,function*(){try{yield this.$api.patch("/config-editor/ui",{nodeUpdatePolicy:e}),this.$settings.env.nodeUpdatePolicy=e,this.statusIo&&(yield this.statusIo.request("clear-nodejs-version-cache")),this.onUpdate&&(yield this.onUpdate()),this.$toastr.success(this.$translate.instant("config.config_saved"),this.$translate.instant("toast.title_success"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.toast_failed_to_save_config"),this.$translate.instant("toast.title_error")),this.nodeUpdatePolicyControl.setValue(this.$settings.env.nodeUpdatePolicy||"all",{emitEvent:!1})}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadInstalledPlugins(){return U(this,null,function*(){this.installedPlugins.set([]);try{let t=(yield this.$pluginsCache.get()).map(s=>{let c=s.engines?.node?(0,Pt.satisfies)(this.latestVersion,s.engines.node,{includePrerelease:!0})?"yes":"no":"unknown";return{displayName:s.displayName||s.name,name:s.name,isSupported:c,isSupportedStr:`status.widget.update_node_${c}`,icon:s.icon||this.defaultIcon}}).sort((s,c)=>s.name==="homebridge-config-ui-x"?-1:c.name==="homebridge-config-ui-x"?1:s.name.localeCompare(c.name)),i=(0,Pt.satisfies)(this.latestVersion,this.homebridgePkg.engines.node,{includePrerelease:!0})?"yes":"no";t.unshift({displayName:"Homebridge",name:"homebridge",isSupported:i,isSupportedStr:`status.widget.update_node_${i}`,icon:this.defaultIcon}),this.installedPlugins.set(t)}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}handleIconError(e){e.icon=this.defaultIcon}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-node-version-modal"]],decls:21,vars:13,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,"w-100","text-center","primary-text","text-center"],[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"],["target","_blank","href","https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none"],["aria-hidden","true",1,"fas","fa-external-link-alt"],["aria-hidden","true",1,"fas","fa-circle-notch","fa-spin","icon-xl"],["aria-hidden","true",1,"fas","fab","fa-node-js","primary-text","mb-3","icon-xl"],[1,"mb-3"],[1,"mb-0"],["role","radiogroup",1,"list-group","list-group-box","mt-3","mb-0"],["aria-hidden","true",1,"list-group-item","text-center"],[1,"list-group-item","text-start"],[1,"d-flex","align-items-center","w-100","mb-0","cursor-pointer"],["type","radio","name","nodeUpdatePolicy","value","all",1,"visually-hidden",3,"formControl"],[1,"me-3"],["aria-hidden","true",1,"fas","fa-bell","fa-2x"],[1,"flex-grow-1"],["aria-hidden","true"],[1,"grey-text"],[1,"ms-3"],["type","radio","name","nodeUpdatePolicy","value","major",1,"visually-hidden",3,"formControl"],["aria-hidden","true",1,"far","fa-bell","fa-2x"],["type","radio","name","nodeUpdatePolicy","value","none",1,"visually-hidden",3,"formControl"],["aria-hidden","true",1,"far","fa-bell-slash","fa-2x"],[1,"list-group","list-group-box","mt-3","mb-0"],["aria-hidden","true",1,"fas","fa-xl","fa-check-circle","primary-text"],[1,"list-group-item","text-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"text-start","flex-grow-1"],[1,"grey-text","small"],["aria-hidden","true",1,"fas","fa-check-circle","green-text","fa-xl"],["aria-hidden","true",1,"fas","fa-xmark-circle","red-text","fa-xl"],["alt","","aria-hidden","true",1,"plugin-icon-small",3,"error","src"],["aria-hidden","true",1,"fas","fa-question-circle","orange-text","fa-xl"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1)(2,"h5",2),a(3,"Node.js"),l(),d(4,"button",3),m(5,"translate"),W("click",function(){return i.dismissModal()}),l()(),d(6,"div",4),u(7,Os,2,0,"div",5)(8,er,60,60),l(),d(9,"div",6)(10,"div",7)(11,"button",8),m(12,"translate"),W("click",function(){return i.dismissModal()}),a(13),m(14,"translate"),l()(),v(15,"div",9),d(16,"div",10)(17,"a",11),a(18),m(19,"translate"),v(20,"i",12),l()()()()),t&2&&(r(4),$("aria-label",p(5,5,"form.button_close")),r(3),f(i.loading()?7:8),r(4),$("aria-label",p(12,7,"form.button_close")),r(2),I(" ",p(14,9,"form.button_close")," "),r(5),I(" ",p(19,11,"form.button_more_info")," "))},dependencies:[ft,Fe,yi,Ae,Ii,L],encapsulation:2,changeDetection:0})}return o})();function tr(o,n){o&1&&v(0,"i",12)}function ir(o,n){o&1&&v(0,"i",15)}function nr(o,n){o&1&&v(0,"i",16)}function or(o,n){if(o&1&&u(0,ir,1,0,"i",15)(1,nr,1,0,"i",16),o&2){let e=h(2);f(e.dockerInfo().updateAvailable?0:1)}}function sr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function rr(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(3);return S(i.dockerUpdateModal())}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function ar(o,n){if(o&1&&(d(0,"span",10),a(1),l(),u(2,rr,4,3)),o&2){let e=h(2);r(),_(e.dockerInfo().currentVersion),r(),f(e.dockerInfo().updateAvailable&&e.isAdmin?2:-1)}}function lr(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(4);return S(i.installAlternateVersion(i.homebridgePkg()))}),a(1," Homebridge "),l()}}function dr(o,n){o&1&&a(0," Homebridge ")}function cr(o,n){if(o&1){let e=M();d(0,"button",22),W("click",function(){E(e);let i=h(4);return S(i.readyForV2Modal())}),v(1,"i",23),l()}if(o&2){let e=h(4);k("openDelay",150),r(),R("green-text",e.isHbV2Ready())("orange-text",!e.isHbV2Ready())}}function mr(o,n){if(o&1&&(u(0,lr,2,0,"button",19)(1,dr,1,0),u(2,cr,2,5,"button",20)),o&2){let e=h(3);f(e.isAdmin?0:1),r(2),f(e.isHbV2Loaded()&&!e.isRunningHbV2()&&e.isAdmin?2:-1)}}function pr(o,n){o&1&&(d(0,"span"),a(1,"Homebridge"),l())}function hr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function gr(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(4);return S(i.updatePackage(i.homebridgePkg()))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function ur(o,n){if(o&1&&(d(0,"span",10),a(1),l(),u(2,gr,4,3)),o&2){let e=h(3);r(),I("v",e.homebridgeVersion),r(),f(e.homebridgePkg().updateAvailable&&e.isAdmin?2:-1)}}function fr(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(3);return S(i.installAlternateVersion(i.homebridgeUiPkg()))}),a(1," Homebridge UI "),l()}}function _r(o,n){o&1&&(d(0,"span"),a(1,"Homebridge UI"),l())}function Cr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function br(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(4);return S(i.updatePackage(i.homebridgeUiPkg()))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function xr(o,n){if(o&1&&(d(0,"span",10),a(1),l(),u(2,br,4,3)),o&2){let e=h(3);r(),I("v",e.packageVersion),r(),f(e.homebridgeUiPkg().updateAvailable&&e.isAdmin?2:-1)}}function vr(o,n){o&1&&a(0," \xB7 npm ")}function wr(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(3);return S(i.nodeVersionModal(i.serverInfo().nodeVersion))}),a(1," Node.js "),l(),u(2,vr,1,0)}if(o&2){let e,t=h(3);r(2),f(t.widget().showNpmVersion&&((e=t.nodejsInfo())!=null&&e.npmVersion)?2:-1)}}function yr(o,n){o&1&&(d(0,"span"),a(1,"Node.js"),l())}function Ir(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function Er(o,n){if(o&1&&a(0),o&2){let e=h(4);I(" \xB7 ",e.nodejsInfo().npmVersion," ")}}function Sr(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(4);return S(i.nodeVersionModal(i.nodejsInfo().latestVersion))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function Tr(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(4);return S(i.nodeVersionModal(i.serverInfo().nodeVersion))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"status.widget.info.node_unsupp")," "))}function Mr(o,n){if(o&1&&(d(0,"span",10),a(1),u(2,Er,1,1),l(),u(3,Sr,4,3),u(4,Tr,4,3)),o&2){let e,t=h(3);r(),I("",t.serverInfo().nodeVersion," "),r(),f(t.widget().showNpmVersion&&t.nodejsInfo().npmVersion?2:-1),r(),f((e=t.nodejsInfo())!=null&&e.updateAvailable&&t.isAdmin?3:-1),r(),f(t.nodejsInfo().showNodeUnsupportedWarning&&!t.nodejsInfo().updateAvailable?4:-1)}}function kr(o,n){if(o&1&&(d(0,"div",14)(1,"div",18)(2,"div",5)(3,"div",6),v(4,"i",7),l(),d(5,"div",8),u(6,mr,3,2)(7,pr,2,0,"span"),v(8,"br"),u(9,hr,3,3,"span",10)(10,ur,3,2),l()()(),d(11,"div",18)(12,"div",5)(13,"div",6),v(14,"i",7),l(),d(15,"div",8),u(16,fr,2,0,"button",19)(17,_r,2,0,"span"),v(18,"br"),u(19,Cr,3,3,"span",10)(20,xr,3,2),l()()(),d(21,"div",18)(22,"div",5)(23,"div",6),v(24,"i",7),l(),d(25,"div",8),u(26,wr,3,1)(27,yr,2,0,"span"),v(28,"br"),u(29,Ir,3,3,"span",10)(30,Mr,5,4),l()()()()),o&2){let e=h(2);r(4),se(`fas fa-lg ${e.getHomebridgeIconClass()}`),r(2),f(e.homebridgePkg().installedVersion?6:7),r(3),f(e.homebridgePkg().installedVersion?10:9),r(5),se(`fas fa-lg ${e.getHomebridgeUiIconClass()}`),r(2),f(e.homebridgeUiPkg().installedVersion&&e.isAdmin?16:17),r(3),f(e.homebridgeUiPkg().installedVersion?20:19),r(5),se(`fas fa-lg ${e.getNodejsIconClass()}`),r(2),f(e.nodejsStatusDone()&&e.serverInfo()?26:27),r(3),f(!e.nodejsStatusDone()||!e.serverInfo()?29:30)}}function Wr(o,n){if(o&1){let e=M();d(0,"div",3)(1,"div",11),W("click",function(){E(e);let i=h();return S(i.toggleDockerExpand())})("keydown.enter",function(){E(e);let i=h();return S(i.toggleDockerExpand())})("keydown.space",function(i){E(e);let s=h();return i.preventDefault(),S(s.toggleDockerExpand())}),d(2,"div",6),u(3,tr,1,0,"i",12)(4,or,2,1),l(),d(5,"div",8),a(6," Docker-Homebridge "),v(7,"i",13)(8,"br"),u(9,sr,3,3,"span",10)(10,ar,3,2),l()(),u(11,kr,31,12,"div",14),l()}if(o&2){let e=h();r(),$("aria-expanded",e.widget().dockerExpanded?"true":"false")("aria-controls","dockerExpandPanel"),r(2),f(e.dockerStatusDone()?4:3),r(4),R("fa-rotate-180",!e.widget().dockerExpanded),r(2),f(e.dockerStatusDone()?10:9),r(2),f(e.widget().dockerExpanded?11:-1)}}function $r(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(3);return S(i.installAlternateVersion(i.homebridgePkg()))}),a(1," Homebridge "),l()}}function Dr(o,n){o&1&&a(0," Homebridge ")}function Pr(o,n){if(o&1){let e=M();d(0,"button",22),W("click",function(){E(e);let i=h(3);return S(i.readyForV2Modal())}),v(1,"i",23),l()}if(o&2){let e=h(3);k("openDelay",150),r(),R("green-text",e.isHbV2Ready())("orange-text",!e.isHbV2Ready())}}function Rr(o,n){if(o&1&&(u(0,$r,2,0,"button",19)(1,Dr,1,0),u(2,Pr,2,5,"button",20)),o&2){let e=h(2);f(e.isAdmin?0:1),r(2),f(e.isHbV2Loaded()&&!e.isRunningHbV2()&&e.isAdmin&&e.homebridgeUpdatePolicy!=="none"&&e.homebridgeUpdatePolicy!=="major"?2:-1)}}function Br(o,n){o&1&&(d(0,"span"),a(1,"Homebridge"),l())}function Lr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function zr(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(3);return S(i.updatePackage(i.homebridgePkg()))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function Vr(o,n){if(o&1&&(d(0,"span",10),a(1),l(),u(2,zr,4,3)),o&2){let e=h(2);r(),I("v",e.homebridgeVersion),r(),f(e.homebridgePkg().updateAvailable&&e.isAdmin?2:-1)}}function Or(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(2);return S(i.installAlternateVersion(i.homebridgeUiPkg()))}),a(1," Homebridge UI "),l()}}function Hr(o,n){o&1&&(d(0,"span"),a(1,"Homebridge UI"),l())}function Nr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function Ur(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(3);return S(i.updatePackage(i.homebridgeUiPkg()))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function Fr(o,n){if(o&1&&(d(0,"span",10),a(1),l(),u(2,Ur,4,3)),o&2){let e=h(2);r(),I("v",e.packageVersion),r(),f(e.homebridgeUiPkg().updateAvailable&&e.isAdmin?2:-1)}}function Ar(o,n){if(o&1&&(d(0,"div",4)(1,"div",5)(2,"div",6),v(3,"i",7),l(),d(4,"div",8),u(5,Rr,3,2)(6,Br,2,0,"span"),v(7,"br"),u(8,Lr,3,3,"span",10)(9,Vr,3,2),l()()(),d(10,"div",4)(11,"div",5)(12,"div",6),v(13,"i",7),l(),d(14,"div",8),u(15,Or,2,0,"button",19)(16,Hr,2,0,"span"),v(17,"br"),u(18,Nr,3,3,"span",10)(19,Fr,3,2),l()()()),o&2){let e=h();r(3),se(`fas fa-lg ${e.getHomebridgeIconClass()}`),r(2),f(e.homebridgePkg().installedVersion?5:6),r(3),f(e.homebridgePkg().installedVersion?9:8),r(5),se(`fas fa-lg ${e.getHomebridgeUiIconClass()}`),r(2),f(e.homebridgeUiPkg().installedVersion&&e.isAdmin?15:16),r(3),f(e.homebridgeUiPkg().installedVersion?19:18)}}function qr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function jr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.up_to_date")))}function Xr(o,n){o&1&&(d(0,"a",24),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"plugins.button_update")))}function Gr(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"plugins.button_update")))}function Yr(o,n){if(o&1&&u(0,Xr,3,3,"a",24)(1,Gr,3,3,"span",10),o&2){let e=h(2);f(e.isAdmin?0:1)}}function Qr(o,n){if(o&1&&u(0,jr,3,3,"span",10)(1,Yr,2,1),o&2){let e=h();f(e.homebridgePluginStatus().length?1:0)}}function Jr(o,n){o&1&&a(0," \xB7 npm ")}function Kr(o,n){if(o&1){let e=M();d(0,"button",21),W("click",function(){E(e);let i=h(2);return S(i.nodeVersionModal(i.serverInfo().nodeVersion))}),a(1," Node.js "),l(),u(2,Jr,1,0)}if(o&2){let e,t=h(2);r(2),f(t.widget().showNpmVersion&&((e=t.nodejsInfo())!=null&&e.npmVersion)?2:-1)}}function Zr(o,n){o&1&&(d(0,"span"),a(1,"Node.js"),l())}function ea(o,n){o&1&&(d(0,"span",10),a(1),m(2,"translate"),l()),o&2&&(r(),_(p(2,1,"status.homebridge.checking")))}function ta(o,n){if(o&1&&a(0),o&2){let e=h(3);I(" \xB7 ",e.nodejsInfo().npmVersion," ")}}function ia(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(3);return S(i.nodeVersionModal(i.nodejsInfo().latestVersion))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"plugins.button_update")," "))}function na(o,n){if(o&1){let e=M();a(0," \xB7 "),d(1,"button",17),W("click",function(){E(e);let i=h(3);return S(i.nodeVersionModal(i.serverInfo().nodeVersion))}),a(2),m(3,"translate"),l()}o&2&&(r(2),I(" ",p(3,1,"status.widget.info.node_unsupp")," "))}function oa(o,n){if(o&1&&(d(0,"span",10),a(1),u(2,ta,1,1),l(),u(3,ia,4,3),u(4,na,4,3)),o&2){let e,t=h(2);r(),I("",t.serverInfo().nodeVersion," "),r(),f(t.widget().showNpmVersion&&t.nodejsInfo().npmVersion?2:-1),r(),f((e=t.nodejsInfo())!=null&&e.updateAvailable&&t.isAdmin?3:-1),r(),f(t.nodejsInfo().showNodeUnsupportedWarning&&!t.nodejsInfo().updateAvailable?4:-1)}}function sa(o,n){if(o&1&&(d(0,"div",4)(1,"div",5)(2,"div",6),v(3,"i",7),l(),d(4,"div",8),u(5,Kr,3,1)(6,Zr,2,0,"span"),v(7,"br"),u(8,ea,3,3,"span",10)(9,oa,5,4),l()()()),o&2){let e=h();r(3),se(`fas fa-lg ${e.getNodejsIconClass()}`),r(2),f(e.nodejsStatusDone()&&e.serverInfo()?5:6),r(3),f(!e.nodejsStatusDone()||!e.serverInfo()?8:9)}}var In=(()=>{class o{destroyRef=C(F);injector=C(st);$auth=C(ke);$errors=C(fi);$modal=C(_t);$plugin=C(Gi);$settings=C(te);$toastr=C(Me);$translate=C(de);$ws=C(ie);widget=O.required();homebridgePkg=w({});homebridgeUiPkg=w({});homebridgePluginStatus=w([]);homebridgePluginStatusDone=w(!1);nodejsInfo=w(null);nodejsStatusDone=w(!1);serverInfo=w(null);isRunningHbV2=w(!1);isHbV2Loaded=w(!1);isHbV2Ready=w(!1);dockerStatusDone=w(!1);dockerInfo=w({latestVersion:null,latestReleaseBody:"",updateAvailable:!1});io;packageVersion=this.$settings.env.packageVersion;homebridgeVersion=this.$settings.env.homebridgeVersion;runningInDocker=this.$settings.env.runningInDocker;isAdmin=this.$auth.user.admin;nodeUpdatePolicy="all";homebridgeUpdatePolicy="all";homebridgeUiUpdatePolicy="all";ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.nodeUpdatePolicy=this.$settings.env.nodeUpdatePolicy||"all",this.homebridgeUiUpdatePolicy=this.$settings.env.homebridgeUiUpdatePolicy||"all",this.homebridgeUpdatePolicy=this.$settings.env.homebridgeUpdatePolicy||"all",this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{queueMicrotask(()=>this.loadAllData())})}loadAllData(){return U(this,null,function*(){let e;try{e=yield ce(this.io.request("get-version-overview"))}catch(t){console.error(t),this.$toastr.error(this.$errors.toToastMessage(t),this.$translate.instant("toast.title_error"));return}if(e.serverInfo&&this.serverInfo.set(e.serverInfo),e.node&&(this.nodeUpdatePolicy=this.$settings.env.nodeUpdatePolicy||"all",this.nodejsInfo.set(e.node),this.nodejsStatusDone.set(!0)),e.homebridge){let t=e.homebridge;t.displayName="Homebridge",this.homebridgePkg.set(t),this.$settings.env.homebridgeVersion=t.installedVersion,this.homebridgeUpdatePolicy=this.$settings.env.homebridgeUpdatePolicy||"all",this.isRunningHbV2.set(t.installedVersion.startsWith("2."))}if(e.homebridgeUi){let t=e.homebridgeUi;this.$settings.env.homebridgeUiVersion=t.installedVersion,this.homebridgeUiUpdatePolicy=this.$settings.env.homebridgeUiUpdatePolicy||"all",Le.production||(t.updateAvailable=!1),this.homebridgeUiPkg.set(t)}this.homebridgePluginStatus.set(e.outOfDatePlugins.filter(t=>t.name!=="homebridge-config-ui-x"&&!this.$settings.env.plugins?.hideUpdatesFor?.includes(t.name))),this.homebridgePluginStatusDone.set(!0),e.serverInfo?.homebridgeRunningInDocker?e.docker&&(this.dockerInfo.set(e.docker),this.dockerStatusDone.set(!0)):this.dockerStatusDone.set(!0),!this.isRunningHbV2()&&this.isAdmin?(this.isHbV2Ready.set(e.hbV2Ready),this.isHbV2Loaded.set(!0)):this.isHbV2Ready.set(!0)})}nodeVersionModal(e){let t=Re([{provide:xt,useValue:{nodeVersion:this.serverInfo().nodeVersion,latestVersion:e,showNodeUnsupportedWarning:this.nodejsInfo().showNodeUnsupportedWarning,homebridgeRunningInSynologyPackage:this.serverInfo().homebridgeRunningInSynologyPackage,homebridgeRunningInDocker:this.serverInfo().homebridgeRunningInDocker,homebridgePkg:this.homebridgePkg(),architecture:this.nodejsInfo().architecture,supportsNodeJs24:this.nodejsInfo().supportsNodeJs24,statusIo:this.io,onUpdate:()=>U(this,null,function*(){yield this.getNodeInfo()})}}],this.injector);this.$modal.open(yn,{size:"lg",backdrop:"static",injector:t})}readyForV2Modal(){let e=Re([{provide:Pi,useValue:{isUpdating:!1,skipIfCompatible:!1}}],this.injector);this.$modal.open(Xi,{size:"lg",backdrop:"static",injector:e})}installAlternateVersion(e){let t=()=>U(this,null,function*(){e.name==="homebridge"?yield this.checkHomebridgeVersion():e.name==="homebridge-config-ui-x"&&(yield this.checkHomebridgeUiVersion())});this.$plugin.installAlternateVersion(e,t)}updatePackage(e){this.$plugin.upgradeHomebridge(e,e.latestVersion)}getHomebridgeIconClass(){return this.homebridgePkg().installedVersion?this.homebridgeUpdatePolicy==="none"||this.homebridgeUpdatePolicy==="major"&&!this.homebridgePkg().updateAvailable?"fa-circle green-text":this.homebridgePkg().updateAvailable?"fa-arrow-alt-circle-up orange-text":"fa-check-circle green-text":"fa-circle-notch fa-spin primary-text"}getHomebridgeUiIconClass(){return this.homebridgeUiPkg().installedVersion?this.homebridgeUiUpdatePolicy==="none"||this.homebridgeUiUpdatePolicy==="major"&&!this.homebridgeUiPkg().updateAvailable?"fa-circle green-text":this.homebridgeUiPkg().updateAvailable?"fa-arrow-alt-circle-up orange-text":"fa-check-circle green-text":"fa-circle-notch fa-spin primary-text"}getPluginsIconClass(){return this.homebridgePluginStatusDone()?this.homebridgePluginStatus().length?"fa-arrow-alt-circle-up orange-text":"fa-check-circle green-text":"fa-circle-notch fa-spin primary-text"}getNodejsIconClass(){return this.nodejsStatusDone()?this.nodeUpdatePolicy==="none"||this.nodeUpdatePolicy==="major"&&!this.nodejsInfo()?.updateAvailable?"fa-circle green-text":this.nodejsInfo()?.showNodeUnsupportedWarning?"fa-exclamation-circle orange-text":this.nodejsInfo()?.updateAvailable?"fa-arrow-alt-circle-up orange-text":"fa-check-circle green-text":"fa-circle-notch fa-spin primary-text"}checkHomebridgeVersion(){return U(this,null,function*(){try{let e=yield ce(this.io.request("homebridge-version-check"));e.displayName="Homebridge",this.homebridgePkg.set(e),this.$settings.env.homebridgeVersion=e.installedVersion,this.homebridgeUpdatePolicy=this.$settings.env.homebridgeUpdatePolicy||"all",this.isRunningHbV2.set(e.installedVersion.startsWith("2."))}catch(e){console.error(e),this.$toastr.error(this.$errors.toToastMessage(e),this.$translate.instant("toast.title_error"))}})}getNodeInfo(){return U(this,null,function*(){try{this.serverInfo.set(yield ce(this.io.request("get-homebridge-server-info")));let e=yield ce(this.io.request("nodejs-version-check"));this.nodeUpdatePolicy=this.$settings.env.nodeUpdatePolicy||"all",this.nodejsInfo.set(e),this.nodejsStatusDone.set(!0)}catch(e){console.error(e),this.$toastr.error(this.$errors.toToastMessage(e),this.$translate.instant("toast.title_error"))}})}checkHomebridgeUiVersion(){return U(this,null,function*(){try{let e=yield ce(this.io.request("homebridge-ui-version-check"));this.$settings.env.homebridgeUiVersion=e.installedVersion,this.homebridgeUiUpdatePolicy=this.$settings.env.homebridgeUiUpdatePolicy||"all",Le.production||(e.updateAvailable=!1),this.homebridgeUiPkg.set(e)}catch(e){console.error(e),this.$toastr.error(this.$errors.toToastMessage(e),this.$translate.instant("toast.title_error"))}})}toggleDockerExpand(){this.widget().dockerExpanded=!this.widget().dockerExpanded,this.widget().$saveWidgetsEvent.next()}dockerUpdateModal(){let e=this.dockerInfo(),t=Re([{provide:Di,useValue:{title:this.$translate.instant("status.widget.info.docker_update_title"),message:this.$translate.instant("status.widget.info.docker_update_message"),markdownMessage2:e.latestReleaseBody,subtitle:e.currentVersion&&e.latestVersion?`${e.currentVersion} → ${e.latestVersion}`:this.$translate.instant("accessories.control.unknown"),ctaButtonLabel:this.$translate.instant("form.button_more_info"),faIconClass:"fab fa-docker primary-text",ctaButtonLink:"https://github.com/homebridge/docker-homebridge/wiki/How-To-Update-Docker-Homebridge"}}],this.injector);this.$modal.open(Ri,{size:"lg",backdrop:"static",injector:t})}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-update-info-widget"]],inputs:{widget:[1,"widget"]},decls:19,vars:11,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-2"],[1,"drag-handler","p-2"],[1,"d-flex","flex-wrap","w-100","mt-1","justify-content-start","gridster-item-content","overflow-auto","no-scrollbars","align-items-start"],[1,"hb-status-item","hb-status-item-docker","d-flex","flex-column","mb-1"],[1,"hb-status-item","hb-status-item-quarter","d-flex","flex-row","mb-1"],[1,"d-flex","ps-3","py-1"],[1,"mb-0","d-flex","align-items-center"],["aria-hidden","true"],[1,"align-self-center","px-3"],["routerLink","/plugins",1,"card-link","card-link-title"],[1,"grey-text","small"],["role","button","tabindex","0",1,"d-flex","ps-3","py-1","align-items-center","cursor-pointer",3,"click","keydown.enter","keydown.space"],["aria-hidden","true",1,"fas","fa-lg","fa-circle-notch","fa-spin","primary-text"],["aria-hidden","true",1,"fas","fa-chevron-down","ms-2"],["id","dockerExpandPanel",1,"ps-5","pe-3","d-flex","flex-wrap"],["aria-hidden","true",1,"fas","fa-lg","fa-arrow-alt-circle-up","orange-text"],["aria-hidden","true",1,"fas","fa-lg","fa-check-circle","green-text"],["type","button",1,"btn","btn-link","p-0","text-decoration-none","primary-text","small",3,"click"],[1,"hb-status-item","hb-status-item-docker-child","d-flex","flex-row","py-1"],["type","button",1,"btn","btn-link","p-0","text-decoration-none","card-link","card-link-title"],["type","button","ngbTooltip","Homebridge v2 Readiness","container","body","triggers","hover","placement","top","aria-label","Homebridge v2 Readiness",1,"btn","btn-link","p-0","text-decoration-none","ms-1",3,"openDelay"],["type","button",1,"btn","btn-link","p-0","text-decoration-none","card-link","card-link-title",3,"click"],["type","button","ngbTooltip","Homebridge v2 Readiness","container","body","triggers","hover","placement","top","aria-label","Homebridge v2 Readiness",1,"btn","btn-link","p-0","text-decoration-none","ms-1",3,"click","openDelay"],["aria-hidden","true",1,"fas","fa-info-circle"],["routerLink","/plugins",1,"primary-text","small"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),a(2),m(3,"translate"),l(),d(4,"div",2),u(5,Wr,12,7,"div",3)(6,Ar,20,8),d(7,"div",4)(8,"div",5)(9,"div",6),v(10,"i",7),l(),d(11,"div",8)(12,"a",9),a(13),m(14,"translate"),l(),v(15,"br"),u(16,qr,3,3,"span",10)(17,Qr,2,1),l()()(),u(18,sa,10,4,"div",4),l()()),t&2&&(r(2),_(p(3,7,"status.services.updates")),r(3),f(i.runningInDocker?5:6),r(5),se(`fas fa-lg ${i.getPluginsIconClass()}`),r(3),I(" ",p(14,9,"menu.label_plugins")," "),r(3),f(i.homebridgePluginStatusDone()?17:16),r(2),f(i.runningInDocker?-1:18))},dependencies:[gi,$e,L],styles:[".hb-status-icon[_ngcontent-%COMP%]{font-size:20px}@media(max-width:767px){.hb-status-item[_ngcontent-%COMP%]{width:100%}}.hb-status-item[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{border-width:0;font-weight:inherit}.hb-status-item-docker[_ngcontent-%COMP%]{min-width:max(25%,200px)}.hb-status-item-docker-child[_ngcontent-%COMP%]{min-width:200px;flex:1 0 auto}.hb-status-item-quarter[_ngcontent-%COMP%]{min-width:max(25%,225px)}"],changeDetection:0})}return o})();function ra(o,n){if(o&1&&a(0),o&2){let e=h();I(" ",e.serverUptime()," ")}}function aa(o,n){o&1&&X(0,"i",6)}function la(o,n){if(o&1&&a(0),o&2){let e=h();I(" ",e.processUptime()," ")}}function da(o,n){o&1&&X(0,"i",6)}var En=(()=>{class o{destroyRef=C(F);$ws=C(ie);widget=O.required();serverUptime=w("");processUptime=w("");io;ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.getServerUptimeInfo()}),Ee(11e3).pipe(B(this.destroyRef)).subscribe(()=>{this.io.socket.connected&&this.getServerUptimeInfo()})}getServerUptimeInfo(){this.io.request("get-server-uptime-info").subscribe(e=>{this.serverUptime.set(this.humaniseDuration(e.time.uptime)),this.processUptime.set(this.humaniseDuration(e.processUptime))})}humaniseDuration(e){return e<50?"< 1m":e<3600?`${Math.round(e/60)}m`:e<86400?`${Math.round(e/60/60)}h`:`${Math.floor(e/60/60/24)}d`}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-uptime-widget"]],inputs:{widget:[1,"widget"]},decls:20,vars:13,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1"],[1,"drag-handler","p-2"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],[1,"d-flex","justify-content-around","flex-wrap","w-100"],[1,"text-center","widget-value-parent-wrap"],[1,"widget-value","mb-0"],[1,"fas","fa-circle-notch","fa-spin"],[1,"widget-value-label","grey-text"]],template:function(t,i){t&1&&(b(0,"div",0)(1,"div",1),a(2),m(3,"translate"),x(),b(4,"div",2)(5,"div",3)(6,"div",4)(7,"div",5),u(8,ra,1,1)(9,aa,1,0,"i",6),x(),b(10,"div",7),a(11),m(12,"translate"),x()(),b(13,"div",4)(14,"div",5),u(15,la,1,1)(16,da,1,0,"i",6),x(),b(17,"div",7),a(18),m(19,"translate"),x()()()()()),t&2&&(r(),R("widget-cursor",i.widget().draggable),r(),I(" ",p(3,7,"status.uptime.title_uptime")," "),r(6),f(i.serverUptime()?8:9),r(3),_(p(12,9,"status.widget.uptime.label_server")),r(4),f(i.processUptime()?15:16),r(3),_(p(19,11,"status.widget.uptime.label_process")))},dependencies:[L],encapsulation:2,changeDetection:0})}return o})();var Jt=ti(Dn(),1);function ca(o,n){o&1&&(b(0,"div",2)(1,"div",4)(2,"h1"),X(3,"i",5),x(),b(4,"p",6),a(5),m(6,"translate"),x()()()),o&2&&(r(5),_(p(6,1,"status.widget.weather.label_config_required_help")))}function ma(o,n){if(o&1&&(b(0,"div",3)(1,"div",7)(2,"div",8)(3,"h1"),X(4,"i"),x(),b(5,"h3"),a(6),m(7,"titlecase"),x(),b(8,"h2"),a(9),m(10,"convertTemp"),m(11,"number"),m(12,"uppercase"),x()()()()),o&2){let e=h();r(4),se(`primary-text ${e.getWeatherIconClass()}`),r(2),_(p(7,5,e.currentWeather().weather[0].description)),r(3),_e(" ",G(11,9,p(10,7,e.currentWeather().main.temp),"1.0-0"),"\xB0",p(12,12,e.temperatureUnits)," ")}}var Sn=(()=>{class o{destroyRef=C(F);$http=C(ht);$settings=C(te);$translate=C(de);$ws=C(ie);widget=O.required();currentWeather=w(null);io;temperatureUnits=this.$settings.env.temperatureUnits;configureEvent;ngOnInit(){this.io=this.$ws.getExistingNamespace("status"),this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.getCurrentWeather()}),this.configureEvent?.pipe(B(this.destroyRef)).subscribe(()=>{this.getCurrentWeather()}),Ee(13e5).pipe(B(this.destroyRef)).subscribe(()=>{this.getCurrentWeather()})}getWeatherIconClass(){switch(this.currentWeather()?.weather[0]?.icon){case"01d":return"far fa-sun";case"01n":return"far fa-moon";case"02d":return"fas fa-cloud-sun";case"02n":return"fas fa-cloud-moon";case"03d":return"fas fa-cloud-sun";case"03n":return"fas fa-cloud-moon";case"04d":return"fas fa-cloud-sun";case"04n":return"fas fa-cloud-moon";case"09d":return"fas fa-cloud-sun-rain";case"09n":return"fas fa-cloud-moon-rain";case"10d":return"fas fa-cloud-rain";case"10n":return"fas fa-cloud-moon-rain";case"11d":return"fas fa-cloud-showers-heavy";case"11n":return"fas fa-cloud-showers-heavy";case"13d":return"fas fa-snowflake";case"13n":return"fas fa-snowflake";case"50d":return"fas fa-smog";case"50n":return"fas fa-smog";default:return"fas fa-cloud"}}getCurrentWeather(){if(!(!this.widget().location||!this.widget().location.id)){try{let e=localStorage.getItem(`weather-${this.widget().location.id}`);if(e){let t=JSON.parse(e);if(t.timestamp&&(0,Jt.default)().diff((0,Jt.default)(t.timestamp),"minute")<20){this.currentWeather.set(t);return}}}catch(e){}this.$http.get("https://api.openweathermap.org/data/2.5/weather",{params:new pt({fromObject:{id:this.widget().location.id,appid:Le.owm.appid,units:"metric",lang:this.$translate.getCurrentLang()}})}).subscribe(e=>{let t=j(V({},e),{timestamp:new Date().toISOString()});this.currentWeather.set(t),localStorage.setItem(`weather-${this.widget().location.id}`,JSON.stringify(t))})}}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-weather-widget"]],inputs:{widget:[1,"widget"]},decls:6,vars:8,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100","w-100","pb-1"],[1,"drag-handler","p-2"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","text-center"],[1,"d-flex","flex-row","flex-grow-1","align-items-center","w-100","gridster-item-content","p-2"],[1,"d-flex","flex-column","w-100","pb-2"],[1,"fas","fa-cloud-sun"],[1,"grey-text"],[1,"d-flex","flex-column","w-100"],[1,"weather-now","d-flex","flex-column","align-items-center","text-center"]],template:function(t,i){if(t&1&&(b(0,"div",0)(1,"div",1),a(2),m(3,"translate"),x(),u(4,ca,7,3,"div",2),u(5,ma,13,14,"div",3),x()),t&2){let s,c,g;r(),R("widget-cursor",i.widget().draggable),r(),_e(" ",(s=i.currentWeather())==null?null:s.name," ",p(3,6,"status.widget.weather.title_weather")," "),r(2),f(!i.widget().location||!((c=i.widget().location)!=null&&c.id)?4:-1),r(),f(i.widget().location&&((g=i.widget().location)!=null&&g.id)&&i.currentWeather()?5:-1)}},dependencies:[Te,dt,L,wt,ct],encapsulation:2,changeDetection:0})}return o})();var Tn=["UpdateInfoWidgetComponent","WeatherWidgetComponent","ClockWidgetComponent","CpuWidgetComponent","MemoryWidgetComponent","NetworkWidgetComponent","HomebridgeLogsWidgetComponent"],Mn=["HapQrcodeWidgetComponent","HomebridgeLogsWidgetComponent","TerminalWidgetComponent","CpuWidgetComponent","NetworkWidgetComponent","MemoryWidgetComponent","UptimeWidgetComponent","UpdateInfoWidgetComponent","SystemInfoWidgetComponent","WeatherWidgetComponent","AccessoriesWidgetComponent","ClockWidgetComponent","BridgesWidgetComponent","MatterQrcodeWidgetComponent"],kn=(()=>{class o{appRef=C(ai);componentFactoryResolver=C(ri);el=C(He);injector=C(si);componentRef;availableWidgets={HapQrcodeWidgetComponent:fn,MatterQrcodeWidgetComponent:Cn,HomebridgeLogsWidgetComponent:_n,TerminalWidgetComponent:wn,CpuWidgetComponent:un,NetworkWidgetComponent:xn,MemoryWidgetComponent:bn,UptimeWidgetComponent:En,UpdateInfoWidgetComponent:In,SystemInfoWidgetComponent:vn,WeatherWidgetComponent:Sn,AccessoriesWidgetComponent:mn,ClockWidgetComponent:gn,BridgesWidgetComponent:hn};widget=O.required();ngOnInit(){Object.hasOwn(this.availableWidgets,this.widget().component)&&this.load(this.availableWidgets[this.widget().component])}ngOnDestroy(){this.componentRef&&(this.widget().$resizeEvent.complete(),this.widget().$configureEvent.complete(),this.componentRef.destroy())}load(e){this.componentRef=this.componentFactoryResolver.resolveComponentFactory(e).create(this.injector),this.componentRef.instance.resizeEvent=this.widget().$resizeEvent,this.componentRef.instance.configureEvent=this.widget().$configureEvent,this.componentRef.setInput("widget",this.widget());let t=this.componentRef.hostView.rootNodes[0];t.style.height="100%",t.style.width="100%",t.style.display="flex",this.el.nativeElement.appendChild(t),this.appRef.attachView(this.componentRef.hostView)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-widgets"]],inputs:{widget:[1,"widget"]},decls:0,vars:0,template:function(t,i){},encapsulation:2,changeDetection:0})}return o})();function ha(o,n){if(o&1){let e=M();d(0,"button",22),m(1,"translate"),m(2,"translate"),W("click",function(){E(e);let i=h(2);return S(i.addWidget())}),v(3,"i",23),l()}if(o&2){let e=h(2);k("disabled",e.reorderMode())("openDelay",150)("ngbTooltip",p(1,4,"status.widget.show_hide")),$("aria-label",p(2,6,"status.widget.show_hide"))}}function ga(o,n){if(o&1){let e=M();d(0,"button",24,0),m(2,"translate"),m(3,"translate"),W("click",function(){E(e);let i=li(1),s=h(2);return i.close(),S(s.toggleReorderMode())}),v(4,"i",25),l()}if(o&2){let e=h(2);k("openDelay",150)("ngbTooltip",p(2,6,e.reorderMode()?"status.reorder.exit_button":"status.reorder.enter_button")),$("aria-label",p(3,8,e.reorderMode()?"status.reorder.exit_button":"status.reorder.enter_button_label"))("aria-pressed",e.reorderMode()),r(4),se(`fas fa-arrow-down-up-across-line${e.reorderMode()?" primary-text":""}`)}}function ua(o,n){if(o&1){let e=M();d(0,"div",5)(1,"div",14),u(2,ha,4,8,"button",15),u(3,ga,5,10,"button",16),l(),d(4,"div",17)(5,"button",18),m(6,"translate"),m(7,"translate"),W("click",function(){E(e);let i=h();return S(i.unlockLayout())}),v(8,"i",19),l(),d(9,"button",20),m(10,"translate"),m(11,"translate"),W("click",function(){E(e);let i=h();return S(i.lockLayout())}),v(12,"i",21),l()()()}if(o&2){let e=h();r(2),f(e.options.draggable.enabled||e.page().showWidgetConfigure?2:-1),r(),f(e.options.draggable.enabled||e.page().showWidgetConfigure||e.reorderMode()?3:-1),r(2),k("disabled",e.options.draggable.enabled)("openDelay",150)("ngbTooltip",p(6,10,"form.button_unlock")),$("aria-label",p(7,12,"form.button_unlock")),r(4),k("disabled",!e.options.draggable.enabled)("openDelay",150)("ngbTooltip",p(10,14,"form.button_lock")),$("aria-label",p(11,16,"form.button_lock"))}}function fa(o,n){o&1&&v(0,"app-spinner")}function _a(o,n){if(o&1){let e=M();d(0,"li",33),W("focus",function(){let i=E(e).$implicit,s=h(3);return S(s.setSelectedReorderComponent(i))})("keydown",function(i){E(e);let s=h(3);return S(s.onReorderKeydown(i))}),d(1,"span",34),a(2),l(),d(3,"span",35)(4,"button",36),W("click",function(){let i=E(e).$implicit,s=h(3);return S(s.moveComponent(i,-1))}),v(5,"i",37),l(),d(6,"button",36),W("click",function(){let i=E(e).$implicit,s=h(3);return S(s.moveComponent(i,1))}),v(7,"i",38),l()()()}if(o&2){let e=n.$implicit,t=n.$index,i=n.$count,s=h(3);k("id",`reorder-item-${e}`),$("tabindex",e===s.selectedReorderComponent()?"0":"-1")("aria-selected",e===s.selectedReorderComponent())("aria-label",s.getReorderItemAriaLabel(e))("aria-describedby",s.showReorderHelp()&&e===s.selectedReorderComponent()?"reorder-instructions":null),r(2),_(s.getWidgetDisplayName(e)),r(2),k("disabled",t===0),r(2),k("disabled",t===i-1)}}function Ca(o,n){if(o&1&&(d(0,"div",26)(1,"div",28)(2,"span",29),a(3),m(4,"translate"),l()(),d(5,"ul",30),m(6,"translate"),Y(7,_a,8,8,"li",31,fe),l(),d(9,"span",32),a(10),m(11,"translate"),l()()),o&2){let e=h(2);r(3),_(p(4,3,"common.labels.beta")),r(2),$("aria-label",p(6,5,"status.reorder.listbox_label")),r(2),Q(e.reorderComponents),r(3),_(p(11,7,"status.reorder.help"))}}function ba(o,n){if(o&1){let e=M();d(0,"button",43),W("click",function(){E(e);let i=h(2).$implicit,s=h(2);return S(s.manageWidget(i))}),v(1,"i",44),l()}if(o&2){let e=h(2).$implicit,t=h(2);$("aria-label",t.getWidgetSettingsAriaLabel(e))}}function xa(o,n){if(o&1&&(d(0,"gridster-item",39)(1,"div",40),u(2,ba,2,1,"button",41),l(),v(3,"app-widgets",42),l()),o&2){let e=h().$implicit,t=h(2);k("item",e)("id",e.component),r(2),f((t.options.draggable.enabled||t.page().showWidgetConfigure)&&t.widgetsWithSettings.includes(e.component)&&!t.reorderMode()?2:-1),r(),k("widget",e)}}function va(o,n){if(o&1&&u(0,xa,4,4,"gridster-item",39),o&2){let e=n.$implicit,t=h(2);f(!(e.hideOnMobile&&t.page().mobile)&&!(e.hideOnDesktop&&!t.page().mobile)?0:-1)}}function wa(o,n){if(o&1&&(u(0,Ca,12,9,"div",26),d(1,"gridster",27),Y(2,va,1,1,null,null,fe),l()),o&2){let e=h();f(e.reorderMode()&&e.isAdmin?0:-1),r(),k("options",e.options)("hidden",e.consoleStatus()==="down"||e.reorderMode()),r(),Q(e.dashboard())}}var gp=(()=>{class o{destroyRef=C(F);injector=C(st);$auth=C(ke);$modal=C(_t);$navigationGuard=C(vt);$notification=C(ui);$settings=C(te);$toastr=C(Me);$translate=C(de);$ws=C(ie);isUnlocked=w(!1);io;isAdmin=this.$auth.user.admin;isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");saveWidgetsEvent=new he;options;dashboard=w([]);consoleStatus=w("down");currentYear;page=w({mobile:window.innerWidth<1024,showWidgetConfigure:window.innerWidth<576});widgetsWithSettings=Tn;reorderMode=w(!1);selectedReorderComponent=w(null);actionLiveMessage=w("");showReorderHelp=w(!1);actionTick=0;get reorderComponents(){return this.dashboard().map(e=>e?.component).filter(e=>typeof e=="string"&&e.length>0)}ngOnInit(){this.$settings.setPageTitle(),this.currentYear=new Date().getFullYear(),this.io=this.$ws.connectToNamespace("status"),this.options={mobileBreakpoint:1023,keepFixedHeightInMobile:!1,itemChangeCallback:this.gridChangedEvent.bind(this),itemResizeCallback:this.gridResizeEvent.bind(this),draggable:{enabled:this.isUnlocked()},resizable:{enabled:this.isUnlocked()},gridType:"verticalFixed",margin:8,minCols:20,maxCols:20,minRows:20,maxRows:40,fixedColWidth:36,fixedRowHeight:36,disableScrollHorizontal:!0,disableScrollVertical:!1,pushItems:!0,displayGrid:"none"};let e=!1;this.io.connected.pipe(B(this.destroyRef)).subscribe(()=>{this.consoleStatus.set("up"),this.io.socket.emit("monitor-server-status"),e?this.refreshRpiThrottledStatus():(e=!0,this.loadDashboardInit())}),this.io.socket.on("disconnect",()=>{this.consoleStatus.set("down")}),this.io.socket.on("homebridge-status",t=>{t.packageVersion&&t.packageVersion!==this.$settings.uiVersion&&window.location.reload()}),this.saveWidgetsEvent.pipe(B(this.destroyRef)).subscribe({next:()=>{this.gridChangedEvent()}})}lockLayout(){this.reorderMode()&&this.exitReorderMode(!0,!1),this.options=j(V({},this.options),{draggable:{enabled:!1},resizable:{enabled:!1}}),this.isUnlocked.set(!1),this.setLayout(this.dashboard())}unlockLayout(){this.options=j(V({},this.options),{draggable:{enabled:!0},resizable:{enabled:!0}}),this.isUnlocked.set(!0),this.setLayout(this.dashboard())}addWidget(){return U(this,null,function*(){let e=Re([{provide:bt,useValue:{dashboard:this.dashboard(),resetLayout:this.resetLayout.bind(this),lockLayout:this.lockLayout.bind(this),unlockLayout:this.unlockLayout.bind(this)}}],this.injector),t=this.$modal.open(cn,{size:"lg",backdrop:"static",injector:e});try{let i=yield t.result,s=[...this.dashboard()];for(let c of i){let g=s.findIndex(T=>T.component===c.component),y=c.showOnDesktop||c.showOnMobile;if(y&&g===-1){let T=s.reduce((D,q)=>Math.max(D,(q.y??0)+(q.rows??0)),0);s.push({x:0,y:T,component:c.component,cols:c.cols,rows:c.rows,mobileOrder:c.mobileOrder,hideOnDesktop:c.hideOnDesktop,hideOnMobile:c.hideOnMobile,$resizeEvent:new he,$configureEvent:new he,$saveWidgetsEvent:this.saveWidgetsEvent,draggable:this.options.draggable.enabled})}else!y&&g>-1?s.splice(g,1):y&&g>-1&&(s[g]=j(V({},s[g]),{hideOnDesktop:c.hideOnDesktop,hideOnMobile:c.hideOnMobile,$resizeEvent:s[g].$resizeEvent,$configureEvent:s[g].$configureEvent,$saveWidgetsEvent:s[g].$saveWidgetsEvent}))}this.dashboard.set(s),this.gridChangedEvent()}catch(i){}})}manageWidget(e){return U(this,null,function*(){let t=Re([{provide:Ct,useValue:{widget:e}}],this.injector),i=this.$modal.open(dn,{size:"lg",backdrop:"static",injector:t});try{yield i.result;let s=this.dashboard(),c=s.findIndex(g=>g.component===e.component);if(c>-1){let g=[...s];g[c]=j(V({},g[c]),{$resizeEvent:g[c].$resizeEvent,$configureEvent:g[c].$configureEvent,$saveWidgetsEvent:g[c].$saveWidgetsEvent}),this.dashboard.set(g),queueMicrotask(()=>g[c].$configureEvent.next())}this.gridChangedEvent()}catch(s){}})}openCreditsModal(){this.$modal.open(an,{size:"lg",backdrop:"static"})}manageWidgetByComponent(e){let t=this.dashboard().find(i=>i?.component===e);t&&this.manageWidget(t)}toggleReorderMode(){this.reorderMode()?this.exitReorderMode(!0,!0):this.enterReorderMode()}setSelectedReorderComponent(e){!this.reorderMode()||!this.reorderComponents.includes(e)||this.selectedReorderComponent.set(e)}getReorderItemAriaLabel(e){let t=this.getWidgetDisplayName(e),i=this.reorderComponents,s=i.indexOf(e)+1,c=i.length||1;return this.$translate.instant("status.reorder.item_label",{name:t,position:s,total:c})}getWidgetSettingsAriaLabel(e){let t=this.getWidgetDisplayName(e?.component||"");return this.$translate.instant("status.reorder.widget_settings",{name:t})}onReorderKeydown(e){if(!this.reorderMode())return;this.showReorderHelp()&&this.showReorderHelp.set(!1);let t=!0;switch(e.key){case"Tab":this.selectNext(e.shiftKey);break;case"ArrowUp":this.moveSelectedBy(-1);break;case"ArrowDown":this.moveSelectedBy(1);break;case"Home":case"ArrowLeft":this.moveSelectedToEdge("top");break;case"End":case"ArrowRight":this.moveSelectedToEdge("bottom");break;case"Escape":this.exitReorderMode(!0,!0);break;default:t=!1}t&&(e.preventDefault(),e.stopPropagation())}enterReorderMode(){let e=this.reorderComponents;this.reorderMode.set(!0),this.selectedReorderComponent.set(e[0]||null),this.showReorderHelp.set(!0);let t=this.selectedReorderComponent();t&&setTimeout(()=>{this.reorderMode()&&this.focusReorderItem(t)},0)}exitReorderMode(e,t){e&&this.gridChangedEvent(),this.reorderMode.set(!1),this.selectedReorderComponent.set(null),this.showReorderHelp.set(!1),t&&this.speakAction(this.$translate.instant("status.reorder.disabled")),setTimeout(()=>document.getElementById("reorder-toggle-button")?.focus(),0)}selectNext(e){let t=this.reorderComponents;if(!t.length)return;let i=this.selectedReorderComponent(),s=i&&t.includes(i)?t.indexOf(i):0,c=e?(s-1+t.length)%t.length:(s+1)%t.length,g=t[c];this.selectedReorderComponent.set(g),setTimeout(()=>this.focusReorderItem(g),0)}moveSelectedBy(e){let t=this.selectedReorderComponent();t&&this.moveComponent(t,e)&&setTimeout(()=>this.focusReorderItem(t),0)}moveComponent(e,t){let i=this.reorderComponents;if(!i.includes(e))return!1;let s=i.indexOf(e)+t;return s<0||s>=i.length?!1:(this.selectedReorderComponent.set(e),this.reorderTo(e,s),this.speakAction(this.$translate.instant("status.reorder.moved",{name:this.getWidgetDisplayName(e),position:s+1,total:i.length})),!0)}moveSelectedToEdge(e){let t=this.reorderComponents,i=this.selectedReorderComponent();if(!i||!t.includes(i))return;let s=e==="top"?0:t.length-1;this.reorderTo(i,s);let c=this.getWidgetDisplayName(i),g=this.$translate.instant(e==="top"?"status.reorder.edge_top":"status.reorder.edge_bottom");this.speakAction(this.$translate.instant("status.reorder.moved_to_edge",{name:c,edge:g,position:s+1,total:t.length})),setTimeout(()=>this.focusReorderItem(i),0)}reorderTo(e,t){let i=[...this.dashboard()],s=i.findIndex(g=>g?.component===e);if(s<0)return;let[c]=i.splice(s,1);i.splice(t,0,c),i.forEach((g,y)=>{g.mobileOrder=y}),this.dashboard.set(i)}focusReorderItem(e){let t=document.getElementById(`reorder-item-${e}`);t&&t.focus()}speakAction(e){this.actionTick=(this.actionTick+1)%10,this.actionLiveMessage.set(`${e}${"\u200B".repeat(this.actionTick)}`)}getWidgetDisplayName(e){switch(e){case"UpdateInfoWidgetComponent":return this.$translate.instant("status.services.updates");case"WeatherWidgetComponent":return this.$translate.instant("status.widget.weather.title_weather");case"AccessoriesWidgetComponent":return this.$translate.instant("menu.label_accessories");case"BridgesWidgetComponent":return this.$translate.instant("child_bridge.bridges");case"CpuWidgetComponent":return this.$translate.instant("status.cpu.title_cpu");case"MemoryWidgetComponent":return this.$translate.instant("status.memory.title_memory");case"NetworkWidgetComponent":return this.$translate.instant("status.network.title_network");case"UptimeWidgetComponent":return this.$translate.instant("status.uptime.title_uptime");case"SystemInfoWidgetComponent":return this.$translate.instant("status.widget.info");case"HapQrcodeWidgetComponent":return this.$translate.instant("status.widget.add.label_pairing_code");case"MatterQrcodeWidgetComponent":return this.$translate.instant("status.widget.add.matter_pairing_code");case"HomebridgeLogsWidgetComponent":return this.$translate.instant("status.widget.homebridge_logs");case"TerminalWidgetComponent":return`Homebridge ${this.$translate.instant("menu.docker.terminal")}`;case"ClockWidgetComponent":return this.$translate.instant("status.widget.clock");default:return e.replace(/WidgetComponent$/,"").replace(/Component$/,"").replace(/Widget$/,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").trim()||e}}ngOnDestroy(){this.io.end(),this.saveWidgetsEvent.complete()}loadDashboardInit(){this.io.request("get-dashboard-init").subscribe({next:e=>{e?.rpiThrottled&&this.$notification.raspberryPiThrottled.set(e.rpiThrottled),this.applyDashboardLayout(e?.layout??[])},error:()=>{this.$toastr.error(this.$translate.instant("toast.api_error_generic"),this.$translate.instant("toast.title_error"))}})}refreshRpiThrottledStatus(){this.io.request("get-dashboard-init").subscribe(e=>{e?.rpiThrottled&&this.$notification.raspberryPiThrottled.set(e.rpiThrottled)})}applyDashboardLayout(e){if(!e.length)return this.resetLayout();let t=!1;this.setLayout(e.map(i=>(i.component==="HomebridgeStatusWidgetComponent"?(i.component="UpdateInfoWidgetComponent",t=!0):i.component==="ChildBridgeWidgetComponent"&&(i.component="BridgesWidgetComponent",t=!0),i.component==="TerminalWidgetComponent"&&!this.isAdmin||i.component==="MatterQrcodeWidgetComponent"&&!this.isMatterSupported||!Mn.includes(i.component)||i.component==="AccessoriesWidgetComponent"&&!this.$settings.env.enableAccessories?null:i)).filter(Boolean)),t&&this.gridChangedEvent()}setLayout(e){this.dashboard.set(e.map(t=>j(V({},t),{$resizeEvent:t.$resizeEvent||new he,$configureEvent:t.$configureEvent||new he,$saveWidgetsEvent:this.saveWidgetsEvent,draggable:this.options.draggable.enabled})))}resetLayout(){let e=Wn();if(!this.isMatterSupported){let t=e.findIndex(i=>i.component==="MatterQrcodeWidgetComponent");t!==-1&&e.splice(t,1)}this.setLayout(e),this.gridChangedEvent()}gridResizeEvent(e){e.$resizeEvent.next("resize"),this.page.set({mobile:window.innerWidth<1024,showWidgetConfigure:window.innerWidth<576})}gridChangedEvent(){return U(this,null,function*(){let e=[...this.dashboard()];e.sort((i,s)=>i.mobileOrder-s.mobileOrder),this.dashboard.set(e);let t=e.map(i=>{let T=i,{$resizeEvent:s,$configureEvent:c,$saveWidgetsEvent:g}=T;return ei(T,["$resizeEvent","$configureEvent","$saveWidgetsEvent"])});try{yield ce(this.io.request("set-dashboard-layout",t))}catch(i){console.error("Failed to save dashboard layout"),console.error(i)}})}onBeforeUnload(e){if(this.dashboard().some(i=>i.component==="TerminalWidgetComponent"))return this.$navigationGuard.handleBeforeUnload(e)}canDeactivate(){return this.dashboard().some(t=>t.component==="TerminalWidgetComponent")?this.$navigationGuard.canDeactivate():!0}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=P({type:o,selectors:[["app-status"]],hostBindings:function(t,i){t&1&&W("beforeunload",function(c){return i.onBeforeUnload(c)},Qe)},decls:25,vars:11,consts:[["reorderTip","ngbTooltip"],["role","status","aria-atomic","true",1,"visually-hidden"],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"status-container","d-flex","flex-column","mt-0"],[1,"row","flex-column","flex-grow-1"],[1,"row","mb-auto"],[1,"col-md-12","text-center","px-4","pt-1","pt-lg-2","pb-3","pb-lg-2","grey-text"],["target","_blank","rel","noopener noreferrer","href","https://github.com/homebridge/homebridge",1,"grey-text"],["target","_blank","rel","noopener noreferrer","href","https://github.com/homebridge/homebridge-config-ui-x",1,"grey-text"],["type","button",1,"icon-button-reset","grey-text",3,"click"],["aria-hidden","true",1,"fas","fa-heart"],["role","group",1,"btn-group"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0",3,"disabled","openDelay","ngbTooltip"],["id","reorder-toggle-button","type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0",3,"openDelay","ngbTooltip"],["role","group",1,"btn-group","d-none","d-sm-inline-block"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","ms-2",3,"click","disabled","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-unlock"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-lock"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0",3,"click","disabled","openDelay","ngbTooltip"],["aria-hidden","true",1,"fas","fa-eye-low-vision"],["id","reorder-toggle-button","type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0",3,"click","openDelay","ngbTooltip"],["aria-hidden","true"],[1,"col-12","mb-3"],[1,"flex-grow-1","no-scrollbars","py-0",3,"options","hidden"],[1,"text-center","mb-2"],[1,"badge","badge-beta"],["role","listbox",1,"list-group","list-group-box"],["role","option",1,"list-group-item","d-flex","justify-content-between","align-items-center",3,"id"],["id","reorder-instructions",1,"visually-hidden"],["role","option",1,"list-group-item","d-flex","justify-content-between","align-items-center",3,"focus","keydown","id"],["aria-hidden","true",1,"pe-2"],["role","group","aria-hidden","true",1,"btn-group","reorder-controls"],["type","button","tabindex","-1",1,"btn","btn-primary","waves-effect","py-1",3,"click","disabled"],["aria-hidden","true",1,"fas","fa-chevron-up"],["aria-hidden","true",1,"fas","fa-chevron-down"],[1,"widget-item",3,"item","id"],[1,"gridster-item-content"],["type","button",1,"widget-control-button"],[1,"d-flex","h-100","w-100",3,"widget"],["type","button",1,"widget-control-button",3,"click"],["aria-hidden","true",1,"fas","fa-cog"]],template:function(t,i){t&1&&(d(0,"div",1),a(1),l(),d(2,"div",2)(3,"div",3)(4,"h3",4),a(5),m(6,"translate"),l()(),u(7,ua,13,18,"div",5),l(),d(8,"div",6),u(9,fa,1,0,"app-spinner"),d(10,"div",7),u(11,wa,4,3),l(),d(12,"div",8)(13,"div",9)(14,"small"),a(15),d(16,"a",10),a(17," Homebridge "),l(),a(18," \xB7 "),d(19,"a",11),a(20," Homebridge UI "),l(),a(21," \xB7 "),d(22,"button",12),m(23,"translate"),W("click",function(){return i.openCreditsModal()}),v(24,"i",13),l()()()()()),t&2&&(r(),_(i.actionLiveMessage()),r(4),_(p(6,7,"menu.label_status")),r(2),f(i.consoleStatus()==="up"&&i.isAdmin?7:-1),r(2),f(i.consoleStatus()==="down"?9:-1),r(2),f(i.dashboard().length?11:-1),r(4),I(" \xA9 ",i.currentYear," \xB7 "),r(7),$("aria-label",p(23,9,"status.credits.title")))},dependencies:[$e,Bi,kt,rn,kn,L],styles:["@media(hover:hover){a.grey-text[_ngcontent-%COMP%]:hover{text-decoration:underline}}.status-container[_ngcontent-%COMP%]{min-height:calc(100% - 30px)}gridster[_ngcontent-%COMP%]{background-color:inherit}.list-group-box[_ngcontent-%COMP%] .list-group-item[role=option][_ngcontent-%COMP%]{cursor:pointer}.list-group-box[_ngcontent-%COMP%] .list-group-item[role=option][aria-selected=true][_ngcontent-%COMP%]{background-color:#7f7f7f1f;font-weight:600}.list-group-box[_ngcontent-%COMP%] .list-group-item[role=option][_ngcontent-%COMP%]:focus-visible{outline:2px solid #4f7cff;outline-offset:-2px;z-index:1}.widget-control-button[_ngcontent-%COMP%]{position:absolute;float:right;top:0!important;right:2px!important;padding:10px;cursor:pointer;opacity:0;transition:opacity .2s ease-in;color:#999}.widget-control-button[_ngcontent-%COMP%]:active, .widget-control-button[_ngcontent-%COMP%]:hover, .widget-control-button[_ngcontent-%COMP%]:focus{transform:scale(1.1)}@media(max-width:767px){.widget-control-button[_ngcontent-%COMP%]{opacity:1}}@media(hover:hover){.widget-item[_ngcontent-%COMP%]:hover .widget-control-button[_ngcontent-%COMP%], .widget-item[_ngcontent-%COMP%]:active .widget-control-button[_ngcontent-%COMP%]{opacity:1}}gridster.mobile[_ngcontent-%COMP%] #UpdateInfoWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #SystemInfoWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #WeatherWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #BridgesWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #ClockWidgetComponent[_ngcontent-%COMP%]{height:unset!important}gridster.mobile[_ngcontent-%COMP%] #CpuWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #NetworkWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #MemoryWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #UptimeWidgetComponent[_ngcontent-%COMP%]{height:unset!important;padding-bottom:10px}gridster.mobile[_ngcontent-%COMP%] #HapQrcodeWidgetComponent[_ngcontent-%COMP%], gridster.mobile[_ngcontent-%COMP%] #MatterQrcodeWidgetComponent[_ngcontent-%COMP%]{height:360px!important}gridster.mobile[_ngcontent-%COMP%] #AccessoriesWidgetComponent[_ngcontent-%COMP%]{height:unset!important;border:none!important}"],changeDetection:0})}return o})();export{gp as StatusComponent};