homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
4 lines • 234 kB
JavaScript
import{a as E,i as D,n as B,o as w,s as x,t as A}from"./chunk-D39XL-zh.js";import{$ as Le,Ct as Qo$1,Dn as bT,E as Dy,Er as qi,Fr as se$1,Gr as uy,I as Ga,It as TT,Jr as ve,K as J,Kr as v3,Kt as Uy,Ln as db,M as Fe,Nt as Sn$1,Or as rc,Pr as sc,Q as Ko$1,Qn as i$,Rt as Te,Sn as a$,Tn as ac,Tr as qf,U as I_,Un as g,Ut as US,Vn as eu,Vt as U3,Wt as UT,X as Jt$1,Y as Je$1,Yn as hc,Yr as vy,Yt as Va,Zn as hv,Zr as w_,_ as By,_t as Pn$1,ai as xi,b as Co$1,bn as _w,br as pb,cn as Xt$1,d as Ay,dr as m_,dt as Nf,er as ie,f as BS,fi as zS,fn as Z,gr as o$,gt as Pe,h as Br$1,hn as _T,hr as nc,ht as PT,i as $y,it as Mi,j as FD,jt as S_,k as Et,kn as br$1,kt as ST,li as yr$1,mt as P,n as $T,nn as WS,nr as jT,o as A8,on as Xe,or as jy,pi as ze,pt as Ot,ri as x_,rn as Wf,rr as jd,sn as Xg,sr as kt$1,st as My,tr as ii,tt as Ln,u as An$1,ui as z0,un as YS,ut as N_,vr as oe,vt as Py,wr as q,wt as Qt$1,x as Cr$1,xr as pe,y as C_,yn as _s$1,yt as Q,zt as Ts$1}from"./chunk-D96TCRAL.js";import{t as Dt$1}from"./chunk-DZYp0NQB.js";import{n as zt,t as bt}from"./chunk-CdJ3i4Aq.js";import{$ as dn$1,B as Hn$1,F as jc,G as Mt$1,H as Jn$1,I as $,J as Xn$1,K as Se,P as Eh,R as Cn$1,U as Kn$1,V as Ht,W as Ln$1,X as Yn$1,Y as Ye$1,Z as _n$1,d as pr$1,et as fn$1,ft as he$1,l as gr$1,lt as fe,nt as mn,pt as j,q as Vt,r as Y,st as zn$1,t as m,tt as ln$1,u as oe$1,ut as si,z as Gt$1}from"./main-E3N63CH7.js";import"./chunk-CNdjlH36.js";import"./chunk-BMskvib5.js";import{t as ds$1}from"./chunk-CiY-LsUw.js";import"./chunk-CLsCjV2Q.js";import{t as L}from"./chunk-CyE5Vxdx.js";import{D as x$1,c as N$1,r as D$1,u as P$1,y as g$1}from"./chunk-nWnpef0a.js";import"./chunk-C-2fYS21.js";import{t as b}from"./chunk-DEWW9SZ8.js";import"./chunk-B9KT1fF8.js";import"./chunk-CTbxnc6u.js";import"./chunk-Bp5Om8MY.js";import"./chunk-MuM3itMG.js";import"./chunk-assYt6R8.js";import"./chunk-CKdicYhg.js";import"./chunk-I_ippnQy.js";import"./chunk-htzpKVdQ2.js";import"./chunk-Kj3J4PSZ2.js";import"./chunk-CAWrKCeJ2.js";import{t as p}from"./chunk-BinBJ-zk2.js";import"./chunk-Bwmof_W-2.js";import{t as N$2}from"./chunk-MQWddKEg2.js";import"./chunk-tTuB-TjV2.js";import"./chunk-B2ue2DGm2.js";import"./chunk-BF5hZcd92.js";import{n as P$2}from"./chunk-DOaV0Kb62.js";import{t as Ti}from"./chunk-Cgpv3T9Y2.js";import"./chunk-DJ26AmHP2.js";import{n as Z$1}from"./chunk-C4DEjFyc2.js";import{t as pr$2}from"./chunk-CyjdE5Hm2.js";import"./chunk-D_9w2yDS2.js";import"./chunk-BA5JJK7Y2.js";import"./chunk-QIVnO9La2.js";import"./chunk-By3GA2Y42.js";import"./chunk-DYMwD0gG2.js";import"./chunk-zRCOLcwS.js";import"./chunk-BOJ24JZp.js";import"./chunk-BYmiFHWh.js";import"./chunk-BrEC1trG.js";import"./chunk-CDFhfMZe.js";import"./chunk-B_c39FCv.js";import"./chunk-jcZFMRXG.js";import"./chunk-CT8rUNvc.js";import"./chunk-AeHsXVLc.js";import"./chunk-azhdPFP3.js";import{i as nn$1,n as Ie,t as Ge}from"./chunk-Bu7cyH6f.js";import{t as J$1}from"./chunk-bhmKVFCr.js";import"./chunk-EvMH-qNV.js";import{n as Re,r as le,t as IM}from"./chunk-2Xtb3vZq.js";var Pn=B((op,ya)=>{ya.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 on=[`*`];function zn(o,n){if(o&1&&Dy(0,`div`,0),o&2){let e=n.$index;vy(`ngStyle`,ve().gridRenderer.getGridColumnStyle(e))}}function Vn(o,n){if(o&1&&Dy(0,`div`,1),o&2){let e=n.$index;vy(`ngStyle`,ve().gridRenderer.getGridRowStyle(e))}}function On(o,n){if(o&1){let e=sc();Pe(0,`div`,8),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function Hn(o,n){if(o&1){let e=sc();Pe(0,`div`,9),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function Nn(o,n){if(o&1){let e=sc();Pe(0,`div`,10),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function Un(o,n){if(o&1){let e=sc();Pe(0,`div`,11),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function Fn(o,n){if(o&1){let e=sc();Pe(0,`div`,12),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function An(o,n){if(o&1){let e=sc();Pe(0,`div`,13),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function jn(o,n){if(o&1){let e=sc();Pe(0,`div`,14),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}function qn(o,n){if(o&1){let e=sc();Pe(0,`div`,15),xi(`mousedown`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))})(`touchstart`,function(i){Ko$1(e);return Qo$1(ve().resize.dragStartDelay(i))}),Je$1()}}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||{});var sn=(function(o){return o.Always=`always`,o.OnDragAndResize=`onDrag&Resize`,o.None=`none`,o})(sn||{});var 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||{});var se=(function(o){return o.LTR=`ltr`,o.RTL=`rtl`,o})(se||{});var jt=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(r=>r.$item().compactEnabled!==!1).sort((r,c)=>r.$item().y!==c.$item().y?r.$item().y-c.$item().y:r.$item().x-c.$item().x),e=0,t=0,i=0;n.forEach(r=>{let c=r.$item();t+c.cols>this.gridster.columns&&(e=i,t=0,i=e);let g=c.x,T=c.y;c.x=t,c.y=e,(g!==c.x||T!==c.y)&&(r.item().x=c.x,r.item().y=c.y,r.itemChanged()),t+=c.cols,i=Math.max(i,e+c.rows)})}moveToGridPosition(n){let e=0,t=0,i=0,r=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 r){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}};var Ki={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:sn.OnDragAndResize,disableWindowResize:!1,disableWarnings:!1,scrollToNewItems:!1,disableScrollHorizontal:!1,disableScrollVertical:!1,enableBoundaryControl:!1,disableAutoPositionOnConflict:!1,dirType:se.LTR};var re=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 r=n.getAttribute(`class`).split(` `);if(r.indexOf(t)>-1)return!0;if(r.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}};var 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||re.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||re.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(re.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(),re.checkTouchEvent(n);let t=this.gridster.el.getBoundingClientRect(),i=this.getPixelsX(n,t),r=this.getPixelsY(n,t),c=this.gridster.$options(),g={x:this.gridster.pixelsToPositionX(i,Math.floor,!0),y:this.gridster.pixelsToPositionY(r,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}};var At=(()=>{class o{el=g(Xe).nativeElement;gridster=g($t);renderer=g(yr$1);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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`gridster-preview`]],decls:0,vars:0,template:function(t,i){},styles:[`gridster-preview{position:absolute;display:none;background:#00000026}
`],encapsulation:2})}return o})();var Xt=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,se.LTR?`margin-right`:`margin-left`,``);else{let r=Math.round(this.gridster.curColWidth*e.x),c=Math.round(this.gridster.curRowHeight*e.y),g=this.gridster.curColWidth*e.cols-i.margin,T=this.gridster.curRowHeight*e.rows-i.margin;this.setCellPosition(t,n,r,c),t.setStyle(n,`width`,g+`px`),t.setStyle(n,`height`,T+`px`);let S=null,P=null;i.outerMargin&&(this.gridster.rows===e.rows+e.y&&(i.outerMarginBottom!==null?S=i.outerMarginBottom+`px`:S=i.margin+`px`),this.gridster.columns===e.cols+e.x&&(i.outerMarginBottom!==null?P=i.outerMarginRight+`px`:P=i.margin+`px`)),t.setStyle(n,`margin-bottom`,S),t.setStyle(n,i.dirType===se.LTR?`margin-right`:`margin-left`,P)}}updateGridster(){let n=this.gridster.$options(),e=``,t=``,i=``,r=``;if(n.gridType===z.Fit)e=z.Fit,t=z.ScrollVertical,i=z.ScrollHorizontal,r=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,r=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,r=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,r=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,r=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,r=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,r)}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=x(w({},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=x(w({},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===se.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 r=this.gridster.$options(),c=r.dirType===se.RTL?-t:t;if(r.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}};var $t=(()=>{class o{renderer=g(yr$1);cdRef=g(hc);zone=g(ie);elRef=g(Xe);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=a$.required(At);options=i$.required();$options=J(()=>re.merge(JSON.parse(JSON.stringify(Ki)),this.options(),Ki));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 jt(this);gridRenderer=new Xt(this);calculateLayout$=new P;resize$=new P;destroy$=new P;constructor(){ii(()=>{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,r=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+r&&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 r=this.$options().defaultLayerIndex;return(e.layerIndex===void 0?r:e.layerIndex)===(t.layerIndex===void 0?r:t.layerIndex)}ngOnInit(){let e=this.options();e.initCallback&&e.initCallback(this,this.api),this.calculateLayout$.pipe(Wf(0),Ts$1(this.destroy$)).subscribe(()=>this.calculateLayout()),this.resize$.pipe(Br$1(()=>Pn$1(100)),Ts$1(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,r=this.el.clientHeight,c=this.el.offsetHeight,g=this.el.scrollHeight,T=e<t&&g>c&&g-c<t-e,S=r<c&&i>t&&i-t<c-r;return T?!1:!S}checkIfMobile(){let e=this.$options();return e.useBodyForBreakpoint?e.mobileBreakpoint>document.body.clientWidth:e.mobileBreakpoint>this.curWidth}setGridSize(){let e=this.el,t,i,r=this.$options();r.setGridSize||r.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 r=this.grid.length-1;r>=0;r--){let c=this.grid[r];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 r=this.options();r.gridSizeChangedCallback&&r.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(),r=this.$options();t.cols===void 0&&(t.cols=r.defaultItemCols,i.cols=t.cols,e.itemChanged()),t.rows===void 0&&(t.rows=r.defaultItemRows,i.rows=t.rows,e.itemChanged()),t.x===-1||t.y===-1?this.autoPositionItem(e):this.checkCollision(t)&&(r.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`]))),r.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,r=this.options();if(r.itemValidateCallback&&(i=!r.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(),r=e.y>-1&&e.x>-1,c=e.cols+e.x<=i.maxCols,g=e.rows+e.y<=i.maxRows,T=e.maxItemCols===void 0?i.maxItemCols:e.maxItemCols,S=e.minItemCols===void 0?i.minItemCols:e.minItemCols,P=e.maxItemRows===void 0?i.maxItemRows:e.maxItemRows,Y=e.minItemRows===void 0?i.minItemRows:e.minItemRows,te=e.cols<=T&&e.cols>=S,H=e.rows<=P&&e.rows>=Y,A=!0;if(t){let Ke=e.itemAspectRatio||i.itemAspectRatio;Ke&&(A=e.cols/e.rows===Ke)}let Ie=e.minItemArea===void 0?i.minItemArea:e.minItemArea,Ee=e.maxItemArea===void 0?i.maxItemArea:e.maxItemArea,Se=e.cols*e.rows;return!(r&&c&&g&&A&&te&&H&&Ie<=Se&&Ee>=Se)}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 r=this.grid[i];r.$item()!==e&&this.checkCollisionTwoItems(r.$item(),e)&&t.push(r)}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 T=t.y||0;T<this.rows;T++){e.y=T;for(let S=t.x||0;S<this.columns;S++)if(e.x=S,!this.checkCollision(e))return!0}let r=i.maxRows>=this.rows+e.rows,c=i.maxCols>=this.columns+e.cols;return!(this.rows<=this.columns&&r)&&c?(e.x=this.columns,e.y=0,!0):r?(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((r,c)=>{let g=c.$item(),T={y:g.y+g.rows-1,x:g.x+g.cols-1};return re.compareItems(r,T)===1?T:r},t);let i=Object.assign({},e);return this.getNextPossiblePosition(i,t),i};pixelsToPositionX(e,t,i){let r=t(e/this.curColWidth);return i?r:Math.max(r,0)}pixelsToPositionY(e,t,i){let r=t(e/this.curRowHeight);return i?r:Math.max(r,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 r=this.findItemWithItemForSwapping(e);r&&(t=r)}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 r=Math.max(e,Math.floor(t/i));return r<0?0:Number.isFinite(r)?Math.floor(r):0}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`gridster`]],viewQuery:function(t,i){t&1&&My(i.gridsterPreview,At,5),t&2&&$T()},inputs:{options:[1,`options`]},ngContentSelectors:on,decls:6,vars:0,consts:[[1,`gridster-column`,3,`ngStyle`],[1,`gridster-row`,3,`ngStyle`],[1,`gridster-preview`]],template:function(t,i){t&1&&(PT(),_T(0,zn,1,1,`div`,0,bT),_T(2,Vn,1,1,`div`,1,bT),jT(4),Dy(5,`gridster-preview`,2)),t&2&&(ST(i.gridColumns),se$1(2),ST(i.gridRows))},dependencies:[BS,At],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})}return o})();var St=class{gridsterItem;fromSouth=`fromSouth`;fromNorth=`fromNorth`;fromEast=`fromEast`;fromWest=`fromWest`;pushedItems=[];pushedItemsTemp=[];pushedItemsTempPath=[];pushedItemsPath=[];gridster;pushedItemsOrder;tryPattern={fromEast:[this.tryWest,this.trySouth,this.tryNorth],fromWest:[this.tryEast,this.trySouth,this.tryNorth],fromNorth:[this.trySouth,this.tryEast,this.tryWest],fromSouth:[this.tryNorth,this.tryEast,this.tryWest]};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((S,P)=>i?P.$item().y-S.$item().y||P.$item().x-S.$item().x:S.$item().y-P.$item().y||S.$item().x-P.$item().x);let r=0,c,g=!0,T=[];for(;r<t.length;r++){if(c=t[r],c===this.gridsterItem)continue;if(!c.canBeDragged()){g=!1;break}let S=this.pushedItemsTemp.indexOf(c);if(S>-1&&this.pushedItemsTempPath[S].length>10){g=!1;break}if(this.tryPattern[e][0].call(this,c,n))this.pushedItemsOrder.push(c),T.push(c);else if(this.tryPattern[e][1].call(this,c,n))this.pushedItemsOrder.push(c),T.push(c);else if(this.tryPattern[e][2].call(this,c,n))this.pushedItemsOrder.push(c),T.push(c);else{g=!1;break}}if(!g&&(r=this.pushedItemsOrder.lastIndexOf(T[0]),r>-1)){let S=this.pushedItemsOrder.length-1;for(;S>=r;S--)c=this.pushedItemsOrder[S],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,r,c,g,T=!1;for(;i>-1;i--)r=t[i],c=n.$item().x,g=n.$item().y,n.$item().x=r.x,n.$item().y=r.y,this.gridster.findItemWithItem(n.$item())?(n.$item().x=c,n.$item().y=g):(n.setSize(),t.splice(i+1,t.length-i-1),T=!0);return t.length<2&&this.removeFromPushed(e),T}};var it;var Tt;var rn=40;var ge;var nt;var ye;var rt=!1;var Dt=!1;var Pt=!1;var at=!1;var ot;var st=null;var Mt=0;var kt=0;var Zi=Infinity;var en=Infinity;var Be;var Wt;window.requestAnimationFrame&&window.cancelAnimationFrame?(Be=window.requestAnimationFrame,Wt=window.cancelAnimationFrame):(Be=o=>setTimeout(()=>o(Date.now()),50),Wt=o=>clearTimeout(o));function an(o,n,e,t,i,r,c,g,T,S){let P=o.$options();it=P.scrollSensitivity,Tt=P.scrollSpeed,ge=o.el,nt=T,ye=S;let Y=ge.offsetWidth,te=ge.offsetHeight,H=ge.scrollLeft,A=ge.scrollTop,{clientX:Ie,clientY:Ee}=r;if(Mt=Ie,kt=Ee,!P.disableScrollVertical){let Se=e-A;te+A-e-i<it?(Qn(),!(nt&&ye&&!ye.south)&&!at&&tn(1,g,o)):A>0&&Se<it?(Yn(),!(nt&&ye&&!ye.north)&&!Pt&&tn(-1,g,o)):c.clientY!==Ee&&Qe()}if(!P.disableScrollHorizontal){let Se=H+Y-n-t,He=n-H,Le=P.dirType===se.RTL;Se<=it?(Gn(),!(nt&&ye&&!ye.east)&&!rt&&nn(1,g,o,Le)):H>0&&He<it?(Xn(),!(nt&&ye&&!ye.west)&&!Dt&&nn(-1,g,o,Le)):c.clientX!==Ie&&Ye()}}function tn(o,n,e){if(o>0){at=!0;let r=e.$options();en=r.maxRows*e.curRowHeight+r.margin-e.el.offsetHeight}else Pt=!0;let t,i=r=>{if(t===void 0){t=r,st=Be(i);return}if(!ge||o===-1&&ge.scrollTop-Tt<0){Qe();return}let c=(r-t)/rn;t=r;let g=o*Math.round(Tt*c);if(at&&ge.scrollTop+g>en){Qe();return}ge.scrollTop+=g,kt+=g,n({clientX:Mt,clientY:kt}),st=Be(i)};st=Be(i)}function nn(o,n,e,t){if(o>0){rt=!0;let c=e.$options();Zi=c.maxCols*e.curColWidth+c.margin-e.el.offsetWidth}else Dt=!0;let i,r=c=>{if(i===void 0){i=c,ot=Be(r);return}if(!ge){Ye();return}let g=(c-i)/rn;i=c;let T=o*Math.round(Tt*g),S=t?-T:T;if(rt&&ge.scrollLeft+S>Zi){Ye();return}ge.scrollLeft+=S,Mt+=S,n({clientX:Mt,clientY:kt}),ot=Be(r)};ot=Be(r)}function ln(){Ye(),Qe(),ge=null}function Ye(){ot!==null&&Wt(ot),rt=!1,Dt=!1}function Qe(){st!==null&&Wt(st),Pt=!1,at=!1}function Xn(){rt&&Ye()}function Gn(){Dt&&Ye()}function Yn(){at&&Qe()}function Qn(){Pt&&Qe()}var Gt=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 r=i,c=r.$item(),g=e.x,T=c.x,S=c.y,P=e.y,Y=g-T,te=P-S;c.x=t.x-Y,c.y=t.y-te,e.x=r.item().x+Y,e.y=r.item().y+te,this.gridster.checkCollision(c)||this.gridster.checkCollision(e)?(e.x=g,e.y=P,c.x=T,c.y=S):(r.setSize(),this.swapedItem=r,this.gridster.$options().swapWhileDragging&&(this.gridsterItem.checkItemChanges(this.gridsterItem.$item(),this.gridsterItem.item()),this.setSwapItem()))}}};var Jn=`gridster-item-resizable-handler`;var he=(function(o){return o.UP=`UP`,o.DOWN=`DOWN`,o.LEFT=`LEFT`,o.RIGHT=`RIGHT`,o})(he||{});var Yt=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.gridsterItem.isMoving.set(!0),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===se.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 St(this.gridsterItem),this.swap=new Gt(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(),re.checkTouchEvent(n);let e=this.getDirections(n);this.gridster.$options().enableBoundaryControl&&(e.includes(he.UP)&&this.gridsterItem.el.getBoundingClientRect().top<this.gridster.el.getBoundingClientRect().top+(this.outerMarginTop??this.margin)&&(e=e.filter(i=>i!=he.UP),n=new MouseEvent(n.type,{clientX:n.clientX,clientY:this.lastMouse.clientY})),e.includes(he.LEFT)&&this.gridsterItem.el.getBoundingClientRect().left<this.gridster.el.getBoundingClientRect().left+(this.outerMarginLeft??this.margin)&&(e=e.filter(i=>i!=he.LEFT),n=new MouseEvent(n.type,{clientX:this.lastMouse.clientX,clientY:n.clientY})),e.includes(he.RIGHT)&&this.gridsterItem.el.getBoundingClientRect().right>this.gridster.el.getBoundingClientRect().right-(this.outerMarginRight??this.margin)&&(e=e.filter(i=>i!=he.RIGHT),n=new MouseEvent(n.type,{clientX:this.lastMouse.clientX,clientY:n.clientY})),e.includes(he.DOWN)&&this.gridsterItem.el.getBoundingClientRect().bottom>this.gridster.el.getBoundingClientRect().bottom-(this.outerMarginBottom??this.margin)&&(e=e.filter(i=>i!=he.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,an(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===se.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===se.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(),ln(),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.gridsterItem.isMoving.set(!1),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(Jn)||re.checkContentClassForEvent(this.gridster,n))return;re.checkTouchEvent(n);let t=this.gridster.$options();if(!t.draggable.delayStart){this.dragStart(n);return}let i=setTimeout(()=>{this.dragStart(n),te(),this.cdRef.markForCheck()},t.draggable.delayStart),r=this.gridsterItem.renderer.listen(`document`,`mouseup`,te),c=this.gridsterItem.renderer.listen(`document`,`mouseleave`,te),g=this.gridsterItem.renderer.listen(`window`,`blur`,te),T=this.gridsterItem.renderer.listen(`document`,`touchmove`,Y),S=this.gridsterItem.renderer.listen(`document`,`touchend`,te),P=this.gridsterItem.renderer.listen(`document`,`touchcancel`,te);function Y(H){re.checkTouchEvent(H),(Math.abs(H.clientX-n.clientX)>9||Math.abs(H.clientY-n.clientY)>9)&&te()}function te(){clearTimeout(i),g(),r(),c(),T(),S(),P()}};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(he.UP),this.lastMouse.clientY<n.clientY&&e.push(he.DOWN),this.lastMouse.clientX<n.clientX&&e.push(he.RIGHT),this.lastMouse.clientX>n.clientX&&e.push(he.LEFT),e}};var Qt=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(),r=t.item();i.x=r.x||0,i.y=r.y||0,i.cols=r.cols||1,i.row=r.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(),r=i.y,c=i.rows;return i.y=e.$item().y+e.$item().rows,i.rows=c+r-i.y,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.y=r,i.rows=c,!1)}tryNorth(n,e,t){let i=n.$item(),r=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=r,!1)}tryEast(n,e,t){let i=n.$item(),r=i.x,c=i.cols;return i.x=e.$item().x+e.$item().cols,i.cols=c+r-i.x,!this.gridster.checkCollisionTwoItems(i,e.$item())&&!this.gridster.checkGridCollision(i)?(n.setSize(),this.addToPushed(n),this.push(e,t),!0):(i.x=r,i.cols=c,!1)}tryWest(n,e,t){let i=n.$item(),r=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=r,!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 r=t.length-2;r>-1;r--){let c=t[r],g=i.x,T=i.y,S=i.cols,P=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=T,i.cols=S,i.rows=P):(n.setSize(),t.splice(r+1,t.length-1-r))}return t.length<2?(this.removeFromPushed(e),!0):!1}};var Jt=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=q(!1);resizableHandles=q({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.gridsterItem.isResizing.set(!0),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 St(this.gridsterItem),this.pushResize=new Qt(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===se.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===se.RTL?(this.resizeEventScrollType.west=!0,this.directionFunction=this.handleWest):(this.resizeEventScrollType.east=!0,this.directionFunction=this.handleEast):i.contains(`handle-nw`)?t.dirType===se.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===se.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===se.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===se.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(),re.checkTouchEvent(n),this.offsetTop=this.gridster.el.scrollTop-this.gridster.el.offsetTop,this.offsetLeft=this.gridster.el.scrollLeft-this.gridster.el.offsetLeft,an(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(),ln(),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.gridsterItem.isResizing.set(!1),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===se.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,r=this.gridster.el.getBoundingClientRect();this.bottom=Math.min(this.bottom,r.bottom-r.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===se.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 r=this.outerMarginRight??this.margin,c=this.gridster.el.getBoundingClientRect();this.right=Math.min(this.right,c.right-c.left-2*r),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(re.checkTouchEvent(n),!this.gridster.$options().resizable.delayStart){this.dragStart(n);return}let e=setTimeout(()=>{this.dragStart(n),P()},this.gridster.$options().resizable.delayStart),{cancelMouse:t,cancelMouseLeave:i,cancelOnBlur:r,cancelTouchMove:c,cancelTouchEnd:g,cancelTouchCancel:T}=this.zone.runOutsideAngular(()=>{return{cancelMouse:this.gridsterItem.renderer.listen(`document`,`mouseup`,P),cancelMouseLeave:this.gridsterItem.renderer.listen(`document`,`mouseleave`,P),cancelOnBlur:this.gridsterItem.renderer.listen(`window`,`blur`,P),cancelTouchMove:this.gridsterItem.renderer.listen(`document`,`touchmove`,S),cancelTouchEnd:this.gridsterItem.renderer.listen(`document`,`touchend`,P),cancelTouchCancel:this.gridsterItem.renderer.listen(`document`,`touchcancel`,P)}});function S(Y){re.checkTouchEvent(Y),(Math.abs(Y.clientX-n.clientX)>9||Math.abs(Y.clientY-n.clientY)>9)&&P()}function P(){clearTimeout(e),r(),t(),i(),c(),g(),T()}}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),r=e.minItemCols||n.minItemCols,c=e.minItemRows||n.minItemRows,g=this.gridster.positionXToPixels(r)-this.margin,T=this.gridster.positionYToPixels(c)-this.margin,S=e.maxItemCols||n.maxItemCols||0,P=e.maxItemRows||n.maxItemRows||0,Y=S?this.gridster.positionXToPixels(S)-this.margin:Number.MAX_VALUE,te=P?this.gridster.positionYToPixels(P)-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>Y&&(H=Y,A=Y/i)):(this.resizeEventScrollType.east||this.resizeEventScrollType.west)&&(A=this.width/i,A<T?(A=T,H=T*i):A>te&&(A=te,H=te*i)),n.enableBoundaryControl){let Le=this.gridster.el.getBoundingClientRect(),Ke=Math.max(this.outerMarginTop||this.margin,this.outerMarginRight||this.margin,this.outerMarginBottom||this.margin,this.outerMarginLeft||this.margin),Zt=Le.width-2*Ke,ei=Le.height-2*Ke;this.resizeEventScrollType.west?this.right-H<0&&(H=this.right,A=H/i):this.resizeEventScrollType.east&&this.left+H>Zt&&(H=Zt-this.left,A=H/i),this.resizeEventScrollType.north?this.bottom-A<0&&(A=this.bottom,H=A*i):this.resizeEventScrollType.south&&this.top+A>ei&&(A=ei-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 Ie=n.pushItems?0:this.margin,Ee=n.pushItems?0:this.margin,Se=n.pushItems?this.margin:0,He=n.pushItems?this.margin:0;e.x=this.gridster.pixelsToPositionX(this.left+Ie,Math.floor),e.y=this.gridster.pixelsToPositionY(this.top+Ee,Math.floor),e.cols=this.gridster.pixelsToPositionX(this.width+Se,Math.ceil),e.rows=this.gridster.pixelsToPositionY(this.height+He,Math.ceil),this.setItemTop(this.top),this.setItemLeft(this.left),this.setItemWidth(this.width),this.setItemHeight(this.height)}};var dn=(()=>{class o{item=i$.required();itemInit=o$();itemChange=o$();itemResize=o$();cdRef=g(hc);el=g(Xe).nativeElement;gridster=g($t);renderer=g(yr$1);zone=g(ie);$item=J(()=>re.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 Yt(this,this.gridster,this.zone,this.cdRef);resize=new Jt(this,this.gridster,this.zone);notPlaced;init;isMoving=q(!1);isResizing=q(!1);zIndex=J(()=>{let e=this.getLayerIndex()+this.gridster.$options().baseLayerIndex;return this.isMoving()||this.isResizing()?e+1:e});constructor(){ii(()=>{this.$item(),this.init?oe(()=>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(),r=i.y*this.gridster.curRowHeight,c=i.x*this.gridster.curColWidth,g=i.cols*this.gridster.curColWidth-t.margin,T=i.rows*this.gridster.curRowHeight-t.margin;this.top=r,this.left=c;let S=this.item();!this.init&&g>0&&T>0&&(this.init=!0,S.initCallback&&S.initCallback(S,this),e.itemInitCallback&&e.itemInitCallback(S,this),this.itemInit.emit({item:S,itemComponent:this}),t.scrollToNewItems&&this.el.scrollIntoView({block:`end`,inline:`nearest`,behavior:`smooth`})),(g!==this.width||T!==this.height)&&(this.width=g,this.height=T,e.itemResizeCallback&&e.itemResizeCallback(S,this),this.itemResize.emit({item:S,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 r=this.item();r.cols=i.cols,r.rows=i.rows,r.x=i.x,r.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:w(w({},e),t)}bringToFront(e){if(e&&e<=0)return;let t=this.getLayerIndex(),i=this.gridster.$options().maxLayerIndex;if(t<i){let r=e?t+e:i;this.item().layerIndex=this.$item().layerIndex=r>i?i:r}}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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`gridster-item`]],hostVars:2,hostBindings:function(t,i){t&2&&Xt$1(`z-index`,i.zIndex())},inputs:{item:[1,`item`]},outputs:{itemInit:`itemInit`,itemChange:`itemChange`,itemResize:`itemResize`},ngContentSelectors:on,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&&(PT(),jT(0),Fe(1,On,1,0,`div`,0),Fe(2,Hn,1,0,`div`,1),Fe(3,Nn,1,0,`div`,2),Fe(4,Un,1,0,`div`,3),Fe(5,Fn,1,0,`div`,4),Fe(6,An,1,0,`div`,5),Fe(7,jn,1,0,`div`,6),Fe(8,qn,1,0,`div`,7)),t&2&&(se$1(),Le(i.resize.resizableHandles().s&&i.resize.resizeEnabled()?1:-1),se$1(),Le(i.resize.resizableHandles().e&&i.resize.resizeEnabled()?2:-1),se$1(),Le(i.resize.resizableHandles().n&&i.resize.resizeEnabled()?3:-1),se$1(),Le(i.resize.resizableHandles().w&&i.resize.resizeEnabled()?4:-1),se$1(),Le(i.resize.resizableHandles().se&&i.resize.resizeEnabled()?5:-1),se$1(),Le(i.resize.resizableHandles().ne&&i.resize.resizeEnabled()?6:-1),se$1(),Le(i.resize.resizableHandles().sw&&i.resize.resizeEnabled()?7:-1),se$1(),Le(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})}return o})();var Kn=(o,n)=>n.github;function Zn(o,n){if(o&1&&(Pe(0,`li`),Ot(1),Pe(2,`a`,23),Ot(3),Je$1()()),o&2){let e=n.$implicit;se$1(),kt$1(` `,e.language,`: `),se$1(),Mi(`href`,`https://github.com/${e.github}`,Xg),se$1(),Py(e.github)}}var cn=(()=>{class o{$activeModal=g(fe);translators=[{language:`Finnish`,github:`l1500s`},{language:`Hebrew`,github:`seidnerj`},{language:`Polish`,github:`mkz212`},{language:`Thai`,github:`tomzt`},{language:`Traditional Chinese`,github:`rncchen`},{language:`Ukrainian`,github:`xrust83`},{language:`Vietnam`,github:`khanhnd88`}];dismissModal(){this.$activeModal.dismiss(`Dismiss`)}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Pe(0,`div`,0)(1,`div`,1)(2,`h5`,2),Ot(3),S_(4,`translate`),Je$1(),Pe(5,`button`,3),S_(6,`translate`),xi(`click`,function(){return i.dismissModal()}),Je$1()(),Pe(7,`div`,4)(8,`div`,5),br$1(9,`i`,6),Je$1(),Pe(10,`h5`),Ot(11,`Homebridge`),Je$1(),Pe(12,`ul`)(13,`li`),Ot(14,` Homebridge was originally created by `),Pe(15,`a`,7),Ot(16,`Nick Farina`),Je$1(),Ot(17,`. `),Je$1(),Pe(18,`li`),Ot(19,` The original HomeKit API work was done by `),Pe(20,`a`,8),Ot(21,`Khaos Tian`),Je$1(),Ot(22,` in his `),Pe(23,`a`,9),Ot(24,`HAP-NodeJS`),Je$1(),Ot(25,` project. `),Je$1(),Pe(26,`li`),Ot(27,` Homebridge and HAP-NodeJS have since been maintained and improved by `),Pe(28,`a`,10),Ot(29,`Supereg`),Je$1(),Ot(30,`. `),Je$1(),Pe(31,`li`),Ot(32,` The `),Pe(33,`span`,11),Ot(34,`hb-service`),Je$1(),Ot(35,` utility was created by `),Pe(36,`a`,12),Ot(37,`oznu`),Je$1(),Ot(38,`. `),Je$1(),Pe(39,`li`),Ot(40,` We are grateful to `),Pe(41,`a`,13),Ot(42,`all contributors`),Je$1(),Ot(43,` of Homebridge since its first commit in December 2014. `),Je$1()(),Pe(44,`h5`),Ot(45,`Homebridge UI`),Je$1(),Pe(46,`ul`)(47,`li`),Ot(48,` Homebridge UI was originally created by `),Pe(49,`a`,12),Ot(50,`oznu`),Je$1(),Ot(51,`. `),Je$1(),Pe(52,`li`),Ot(53,` Thanks to `),Pe(54,`a`,14),Ot(55,`rfiorentino1`),Je$1(),Ot(56,` for their contributions to improving the accessibility of the UI. `),Je$1(),Pe(57,`li`),Ot(58,` We are grateful to `),Pe(59,`a`,15),Ot(60,`all contributors`),Je$1(),Ot(61,` of the Homebridge UI since its first commit in July 2017. `),Je$1()(),Pe(62,`h5`),Ot(63),S_(64,`translate`),Je$1(),Pe(65,`ul`)(66,`li`),Ot(67),S_(68,`translate`),Pe(69,`ul`,16),_T(70,Zn,4,3,`li`,null,Kn),Je$1()()(),Pe(72,`h5`),Ot(73),S_(74,`translate`),Je$1(),Pe(75,`ul`)(76,`li`),Ot(77,` Thanks to `),Pe(78,`a`,17),Ot(79,`appletechy`),Je$1(),Ot(80,` for being an active and super supportive member of the community. `),Je$1()(),Pe(81,`h5`),Ot(82),S_(83,`translate`),Je$1(),Pe(84,`ul`)(85,`li`),Ot(86),S_(87,`translate`),Je$1()()(),Pe(88,`div`,18),br$1(89,`div`,19),Pe(90,`div`,20)(91,`button`,21),S_(92,`translate`),xi(`click`,function(){return i.dismissModal()}),Ot(93),S_(94,`translate`),Je$1()(),br$1(95,`div`,22),Je$1()()),t&2&&(se$1(3),Py(N_(4,9,`status.credits.title`)),se$1(2),Cr$1(`aria-label`,N_(6,11,`form.button_close`)),se$1(58),Py(N_(64,13,`status.credits.translations`)),se$1(4),kt$1(` `,N_(68,15,`status.credits.translations_thanks`),` `),se$1(3),ST(i.translators),se$1(3),Py(N_(74,17,`status.credits.supporters`)),se$1(9),Py(N_(83,19,`menu.label_plugins`)),se$1(4),Py(N_(87,21,`status.credits.plugins_thanks`)),se$1(5),Cr$1(`aria-label`,N_(92,23,`form.button_close`)),se$1(2),kt$1(` `,N_(94,25,`form.button_close`),` `))},dependencies:[v3],encapsulation:2})}return o})();var eo=()=>({openWeather:`OpenWeather`});function to(o,n){if(o&1){let e=sc();Va(0,`li`,6)(1,`span`,13),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,14)(5,`input`,17),S_(6,`translate`),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve(2);return m_(r.widget.dockerExpanded,i)||(r.widget.dockerExpanded=i),Qo$1(i)}),jd(),db(),Dy(7,`label`,18),jd()()}if(o&2){let e=ve(2);se$1(2),Py(N_(3,3,`status.widget.expand_docker`)),se$1(3),$y(`ngModel`,e.widget.dockerExpanded),Cr$1(`aria-label`,N_(6,5,`status.widget.expand_docker`)),pb()}}function io(o,n){if(o&1){let e=sc();Va(0,`li`,6)(1,`span`,13),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,14)(5,`input`,15),S_(6,`translate`),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.showNpmVersion,i)||(r.widget.showNpmVersion=i),Qo$1(i)}),jd(),db(),Dy(7,`label`,16),jd()(),Fe(8,to,8,7,`li`,6)}if(o&2){let e=ve();se$1(2),Py(N_(3,4,`status.widget.hide_npm`)),se$1(3),$y(`ngModel`,e.widget.showNpmVersion),Cr$1(`aria-label`,N_(6,6,`status.widget.hide_npm`)),pb(),se$1(3),Le(e.serverInfo()?.homebridgeRunningInDocker?8:-1)}}function no(o,n){if(o&1){let e=sc();Va(0,`li`,19)(1,`label`,20),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,21)(5,`div`,22)(6,`span`,23),Dy(7,`i`,24),jd(),Va(8,`input`,25),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.location,i)||(r.widget.location=i),Qo$1(i)}),jd(),db(),jd()()(),Va(9,`li`,26),Ot(10),S_(11,`translate`),jd()}if(o&2){let e=ve();se$1(2),kt$1(` `,N_(3,13,`status.widget.weather.label_search_for_your_city`),` `),se$1(5),Ay(`fa-city`,!e.searching())(`fa-circle-notch`,e.searching())(`fa-spin`,e.searching()),se$1(),vy(`ngbTypeahead`,e.searchCountryCodes)(`resultFormatter`,e.searchCountryCodeFormatter)(`inputFormatter`,e.searchCountryCodeFormatter)(`editable`,!1),$y(`ngModel`,e.widget.location),pb(),se$1(2),kt$1(` `,x_(11,15,`status.widget.weather.provider`,I_(18,eo)),` `)}}function oo(o,n){if(o&1&&(Va(0,`option`,29),Ot(1),S_(2,`date`),jd()),o&2){let e=n.$implicit,t=ve(2);vy(`value`,e),se$1(),Py(x_(2,2,t.currentDate,e))}}function so(o,n){if(o&1&&(Va(0,`option`,29),Ot(1),S_(2,`date`),jd()),o&2){let e=n.$implicit,t=ve(2);vy(`value`,e),se$1(),Py(x_(2,2,t.currentDate,e))}}function ro(o,n){if(o&1){let e=sc();Va(0,`li`,19)(1,`label`,27),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,21)(5,`select`,28),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.timeFormat,i)||(r.widget.timeFormat=i),Qo$1(i)}),_T(6,oo,3,5,`option`,29,TT),jd(),db(),jd()(),Va(8,`li`,19)(9,`label`,30),Ot(10),S_(11,`translate`),jd(),Va(12,`div`,21)(13,`select`,31),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.dateFormat,i)||(r.widget.dateFormat=i),Qo$1(i)}),_T(14,so,3,5,`option`,29,TT),jd(),db(),jd()()}if(o&2){let e=ve();se$1(2),Py(N_(3,4,`status.widget.clock_timeformat`)),se$1(3),$y(`ngModel`,e.widget.timeFormat),pb(),se$1(),ST(e.timeFormats),se$1(4),Py(N_(11,6,`status.widget.clock_dateformat`)),se$1(3),$y(`ngModel`,e.widget.dateFormat),pb(),se$1(),ST(e.dateFormats)}}function ao(o,n){if(o&1){let e=sc();Va(0,`li`,6)(1,`span`,13),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,14)(5,`input`,32),S_(6,`translate`),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.showToolbar,i)||(r.widget.showToolbar=i),Qo$1(i)}),jd(),db(),Dy(7,`label`,33),jd()()}if(o&2){let e=ve();se$1(2),kt$1(` `,N_(3,3,`status.widget.show_toolbar`),` `),se$1(3),$y(`ngModel`,e.widget.showToolbar),Cr$1(`aria-label`,N_(6,5,`status.widget.show_toolbar`)),pb()}}function lo(o,n){if(o&1){let e=sc();Va(0,`li`,19)(1,`label`,34),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,21)(5,`div`,22)(6,`input`,35),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.refreshInterval,i)||(r.widget.refreshInterval=i),Qo$1(i)}),jd(),db(),Va(7,`span`,36),Ot(8),S_(9,`translate`),jd()()()(),Va(10,`li`,19)(11,`label`,37),Ot(12),S_(13,`translate`),jd(),Va(14,`div`,21)(15,`div`,22)(16,`input`,38),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.historyItems,i)||(r.widget.historyItems=i),Qo$1(i)}),jd(),db(),Va(17,`span`,36),Ot(18),S_(19,`translate`),jd()()()()}if(o&2){let e=ve();se$1(2),Py(N_(3,6,`status.widget.network.refresh_interval`)),se$1(4),$y(`ngModel`,e.widget.refreshInterval),pb(),se$1(2),Py(N_(9,8,`status.widget.network.seconds`)),se$1(4),Py(N_(13,10,`status.widget.network.history_items`)),se$1(4),$y(`ngModel`,e.widget.historyItems),pb(),se$1(2),Py(N_(19,12,`status.widget.network.items`))}}function co(o,n){if(o&1){let e=sc();Va(0,`li`,19)(1,`label`,39),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,21)(5,`div`,22)(6,`input`,40),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.refreshInterval,i)||(r.widget.refreshInterval=i),Qo$1(i)}),jd(),db(),Va(7,`span`,36),Ot(8),S_(9,`translate`),jd()()()(),Va(10,`li`,19)(11,`label`,41),Ot(12),S_(13,`translate`),jd(),Va(14,`div`,21)(15,`div`,22)(16,`input`,42),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.historyItems,i)||(r.widget.historyItems=i),Qo$1(i)}),jd(),db(),Va(17,`span`,36),Ot(18),S_(19,`translate`),jd()()()()}if(o&2){let e=ve();se$1(2),Py(N_(3,6,`status.widget.network.refresh_interval`)),se$1(4),$y(`ngModel`,e.widget.refreshInterval),pb(),se$1(2),Py(N_(9,8,`status.widget.network.seconds`)),se$1(4),Py(N_(13,10,`status.widget.network.history_items`)),se$1(4),$y(`ngModel`,e.widget.historyItems),pb(),se$1(2),Py(N_(19,12,`status.widget.network.items`))}}function mo(o,n){if(o&1&&(Va(0,`option`,29),Ot(1),jd()),o&2){let e=n.$implicit;vy(`value`,e),se$1(),Py(e)}}function po(o,n){if(o&1){let e=sc();Va(0,`select`,50),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve(2);return m_(r.widget.networkInterface,i)||(r.widget.networkInterface=i),Qo$1(i)}),_T(1,mo,2,2,`option`,29,TT),jd(),db()}if(o&2){let e=ve(2);$y(`ngModel`,e.widget.networkInterface),pb(),se$1(),ST(e.networkInterfaces())}}function ho(o,n){o&1&&(Va(0,`span`,45),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.widget.network.none_selected`)))}function go(o,n){if(o&1){let e=sc();Va(0,`li`,19)(1,`label`,43),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,21),Fe(5,po,3,1,`select`,44)(6,ho,3,3,`span`,45),jd()(),Va(7,`li`,19)(8,`label`,46),Ot(9),S_(10,`translate`),jd(),Va(11,`div`,21)(12,`div`,22)(13,`input`,47),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.refreshInterval,i)||(r.widget.refreshInterval=i),Qo$1(i)}),jd(),db(),Va(14,`span`,36),Ot(15),S_(16,`translate`),jd()()()(),Va(17,`li`,19)(18,`label`,48),Ot(19),S_(20,`translate`),jd(),Va(21,`div`,21)(22,`div`,22)(23,`input`,49),Uy(`ngModelChange`,function(i){Ko$1(e);let r=ve();return m_(r.widget.historyItems,i)||(r.widget.historyItems=i),Qo$1(i)}),jd(),db(),Va(24,`span`,36),Ot(25),S_(26,`translate`),jd()()()()}if(o&2){let e=ve();se$1(2),Py(N_(3,8,`status.widget.network.network_interface`)),se$1(3),Le(e.networkInterfaces().length?5:6),se$1(4),Py(N_(10,10,`status.widget.network.refresh_interval`)),se$1(4),$y(`ngModel`,e.widget.refreshInterval),pb(),se$1(2),Py(N_(16,12,`status.widget.network.seconds`)),se$1(4),Py(N_(20,14,`status.widget.network.history_items`)),se$1(4),$y(`ngModel`,e.widget.historyItems),pb(),se$1(2),Py(N_(26,16,`status.widget.network.items`))}}var pn=(()=>{class o{$activeModal=g(fe);$api=g(U3);$http=g(qi);$settings=g(zt);$translate=g(Nf);$ws=g(ds$1);modalData=g(N$1);widget=this.modalData.widget;searching=q(!1);serverInfo=q(null);networkInterfaces=q([]);isLightMode=q(!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(Wf(300),qf(),_s$1(()=>this.searching.set(!0)),Br$1(t=>t.length<3?ze([]):this.findOpenWeatherMapCity(t).pipe(eu(()=>(this.searching.set(!1),ze([]))))),_s$1(()=>this.searching.set(!1)));searchCountryCodeFormatter=e=>`${e.name}, ${e.country}`;ngOnInit(){this.initialize()}initialize(){return E(this,null,function*(){let e=this.widget;if(e){this.originalWidget=e,this.widget=w({},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 Ln(this.io.request(`get-homebridge-server-info`)))}catch(t){console.error(`Failed to fetch server info:`,t),this.serverInfo.set(null)}}})}loadNetworkInterfaces(){return E(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 Et({fromObject:{q:e,type:`like`,sort:`population`,cnt:`30`,appid:Co$1.owm.appid,lang:this.$translate.getCurrentLang()??`en`}})}).pipe(pe(t=>t.list.map(i=>({id:i.id,name:i.name,country:i.sys.country,coord:i.coord}))))}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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`],[`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&&(Va(0,`div`,0)(1,`div`,1)(2,`h5`,2),Ot(3),S_(4,`translate`),jd(),Va(5,`button`,3),S_(6,`translate`),ac(`click`,function(){return i.dismissModal()}),jd()(),Va(7,`div`,4)(8,`ul`,5),Fe(9,io,9,8)(10,no,12,19)(11,ro,16,8)(12,ao,8,7,`li`,6)(13,lo,20,14)(14,co,20,14)(15,go,27,18),jd()(),Va(16,`div`,7)(17,`div`,8)(18,`button`,9),S_(19,`translate`),ac(`click`,function(){return i.dismissModal()}),Ot(20),S_(21,`translate`),jd()(),Dy(22,`div`,10),Va(23,`div`,11)(24,`button`,12),ac(`click`,function(){return i.closeModal()}),Ot(25),S_(26,`translate`),jd()()()()),t&2){let r;Cr$1(`aria-labelledby`,`widget-control-modal-title`),se$1(3),Py(N_(4,8,`status.widget.title_manage_widget`)),se$1(2),Cr$1(`aria-label`,N_(6,10,`form.button_close`)),se$1(4),Le((r=i.widget.component)===`UpdateInfoWidgetComponent`?9:r===`WeatherWidgetComponent`?10:r===`ClockWidgetComponent`?11:r===`HomebridgeLogsWidgetComponent`?12:r===`CpuWidgetComponent`?13:r===`MemoryWidgetComponent`?14:r===`NetworkWidgetComponent`?15:-1),se$1(9),Cr$1(`aria-label`,N_(19,12,`form.button_close`)),se$1(2),kt$1(` `,N_(21,14,`form.button_close`),` `),se$1(4),vy(`disabled`,!i.hasChanges),se$1(),kt$1(` `,N_(26,16,`form.button_save`),` `)}},dependencies:[Kn$1,Xn$1,Yn$1,Ye$1,dn$1,Mt$1,Vt,Hn$1,Ht,Gt$1,ln$1,jc,WS,v3],encapsulation:2})}return o})();var uo=(o,n)=>n.component;function fo(o,n){if(o&1){let e=sc();Pe(0,`li`,20)(1,`div`,21),Ot(2),Je$1(),Pe(3,`div`,22)(4,`span`,23),Ot(5),S_(6,`translate`),Je$1(),Pe(7,`span`,24),br$1(8,`i`,25),Pe(9,`input`,26),S_(10,`translate`),xi(`click`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(2).toggleDesktop(i))}),Je$1(),br$1(11,`label`,27),Je$1()(),Pe(12,`div`,28)(13,`span`,23),Ot(14),S_(15,`translate`),Je$1(),Pe(16,`span`,24),br$1(17,`i`,29),Pe(18,`input`,26),S_(19,`translate`),xi(`click`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(2).toggleMobile(i))}),Je$1(),br$1(20,`label`,27),Je$1()()()}if(o&2){let e=n.$implicit;se$1(2),Py(e.name),se$1(3),Py(N_(6,11,`status.widget.show_on_desktop`)),se$1(4),Mi(`checked`,e.showOnDesktop)(`id`,`desktop-${e.component}`),Cr$1(`aria-label`,N_(10,13,`status.widget.show_on_desktop`)),se$1(2),Mi(`htmlFor`,`desktop-${e.component}`),se$1(3),Py(N_(15,15,`status.widget.show_on_mobile`)),se$1(4),Mi(`checked`,e.showOnMobile)(`id`,`mobile-${e.component}`),Cr$1(`aria-label`,N_(19,17,`status.widget.show_on_mobile`)),se$1(2),Mi(`htmlFor`,`mobile-${e.component}`)}}function Co(o,n){if(o&1&&(Pe(0,`ul`,5)(1,`li`,17)(2,`div`,18),br$1(3,`span`,19),S_(4,`translate`),br$1(5,`br`)(6,`span`,19),S_(7,`translate`),Je$1()(),_T(8,fo,21,19,`li`,20,uo),Je$1()),o&2){let e=ve();se$1(3),Mi(`innerHTML`,N_(4,2,`status.widget.account_1`),Ga),se$1(3),Mi(`innerHTML`,N_(7,4,`status.widget.account_2`),Ga),se$1(2),ST(e.availableWidgets())}}var hn=(()=>{class o{$activeModal=g(fe);$settings=g(zt);$translate=g(Nf);modalData=g(x$1);dashboard=this.modalData.dashboard;resetLayout=this.modalData.resetLayout;availableWidgets=q([]);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,r)=>i.name.localeCompare(r.name)).map(i=>{let r=this.dashboard.find(S=>S.component===i.component),c=!!r,g=c?r.hideOnDesktop??!1:!0,T=c?r.hideOnMobile??!1:!0;return{name:i.name,component:i.component,showOnDesktop:!g,showOnMobile:!T,cols:i.cols,rows:i.rows,mobileOrder:i.mobileOrder,hideOnDesktop:g,hideOnMobile:T,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),r=[...t];r[i]=x(w({},r[i]),{showOnDesktop:!r[i].showOnDesktop}),this.availableWidgets.set(r)}toggleMobile(e){let t=this.availableWidgets(),i=t.findIndex(c=>c.component===e.component),r=[...t];r[i]=x(w({},r[i]),{showOnMobile:!r[i].showOnMobile}),this.availableWidgets.set(r)}isFormUnchanged=J(()=>this.availableWidgets().every((t,i)=>t.showOnDesktop===this.originalState[i].showOnDesktop&&t.showOnMobile===this.originalState[i].showOnMobile));saveModal(){let e=this.availableWidgets().map(t=>x(w({},t),{hideOnDesktop:!t.showOnDesktop,hideOnMobile:!t.showOnMobile}));this.$activeModal.close(e)}doResetLayout(){this.resetLayout(),this.$activeModal.dismiss()}dismissModal(){this.$activeModal.dismiss(`Dismiss`)}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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,`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&&(Pe(0,`div`,0)(1,`div`,1)(2,`h5`,2),Ot(3),S_(4,`translate`),Je$1(),Pe(5,`button`,3),S_(6,`translate`),xi(`click`,function(){return i.dismissModal()}),Je$1()(),Pe(7,`div`,4),Fe(8,Co,10,6,`ul`,5),Pe(9,`ul`,6)(10,`li`,7)(11,`div`)(12,`span`),Ot(13),S_(14,`translate`),Je$1(),br$1(15,`br`),Pe(16,`small`,8),Ot(17),S_(18,`translate`),Je$1()(),Pe(19,`button`,9),S_(20,`translate`),xi(`click`,function(){return i.doResetLayout()}),br$1(21,`i`,10),Je$1()()()(),Pe(22,`div`,11)(23,`div`,12)(24,`button`,13),S_(25,`translate`),xi(`click`,function(){return i.dismissModal()}),Ot(26),S_(27,`translate`),Je$1()(),br$1(28,`div`,14),Pe(29,`div`,15)(30,`button`,16),xi(`click`,function(){return i.saveModal()}),Ot(31),S_(32,`translate`),Je$1()()()()),t&2&&(se$1(3),Py(N_(4,10,`status.widget.show_hide`)),se$1(2),Cr$1(`aria-label`,N_(6,12,`form.button_close`)),se$1(3),Le(i.availableWidgets().length?8:-1),se$1(5),Py(N_(14,14,`form.button_reset`)),se$1(4),Py(N_(18,16,`status.widget.reset`)),se$1(2),Cr$1(`aria-label`,N_(20,18,`form.button_reset`)),se$1(5),Cr$1(`aria-label`,N_(25,20,`form.button_close`)),se$1(2),kt$1(` `,N_(27,22,`form.button_close`),` `),se$1(4),Mi(`disabled`,i.isFormUnchanged()),se$1(),kt$1(` `,N_(32,24,`form.button_save`),` `))},dependencies:[Kn$1,v3],encapsulation:2})}return o})();function _o(o,n){if(o&1&&(Va(0,`div`,5),Dy(1,`app-accessory-tile`,6),jd()),o&2){let e=ve().$implicit;se$1(),vy(`service`,e)}}function bo(o,n){if(o&1&&Fe(0,_o,2,1,`div`,5),o&2){let e=n.$implicit;Le(e.hidden?-1:0)}}function xo(o,n){if(o&1){let e=sc();Va(0,`div`,4),ac(`dragulaModelChange`,function(i){Ko$1(e);return Qo$1(ve().dashboardAccessories.set(i))}),_T(1,bo,1,1,null,null,TT),jd()}if(o&2){let e=ve();vy(`dragulaModel`,e.dashboardAccessories()),se$1(),ST(e.dashboardAccessories())}}function vo(o,n){o&1&&(Va(0,`div`,3)(1,`div`,7)(2,`h1`),Dy(3,`i`,8),jd(),Va(4,`p`,9),Ot(5),S_(6,`translate`),jd()()()),o&2&&(se$1(5),Py(N_(6,1,`status.widget.accessories.choose_accessories`)))}var gn=(()=>{class o{destroyRef=g(Z);$accessories=g(le);$dragula=g(oe$1);$md=g(N$2);widget=i$.required();dashboardAccessories=q([]);loaded=q(!1);isMobile=q(!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(An$1(this.destroyRef)).subscribe(()=>{this.widget().accessoryOrder=this.dashboardAccessories().map(t=>t.uniqueId),this.widget().$saveWidgetsEvent.next(void 0)})}ngOnInit(){this.initialize()}initialize(){return E(this,null,function*(){this.$accessories.accessoryData.pipe(An$1(this.destroyRef)).subscribe(()=>{this.getDashboardAccessories()}),yield this.$accessories.start(),this.$accessories.layoutSaved.pipe(An$1(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 r=this.widget().accessoryOrder.findIndex(g=>g===t.uniqueId),c=this.widget().accessoryOrder.findIndex(g=>g===i.uniqueId);return r<c?-1:r>c?1:0}),this.dashboardAccessories.set(e),this.loaded.set(!0)}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Va(0,`div`,0)(1,`div`,1),Ot(2),S_(3,`translate`),jd(),Fe(4,xo,3,1,`div`,2),Fe(5,vo,7,3,`div`,3),jd()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),kt$1(` `,N_(3,5,`menu.label_accessories`),` `),se$1(2),Le(i.dashboardAccessories().length?4:-1),se$1(),Le(i.loaded()&&!i.dashboardAccessories().length?5:-1))},dependencies:[gr$1,pr$1,IM,v3],encapsulation:2})}return o})();var Rt=(function(o){return o.OK=`ok`,o.PENDING=`pending`,o.DOWN=`down`,o})(Rt||{});var un=(o,n)=>n.username;function wo(o,n){if(o&1&&(Va(0,`span`,1),Ot(1),jd()),o&2){let e=n.$implicit,t=ve();se$1(),kt$1(` `,t.childBridgeLiveMessages()[e.username||e.name],` `)}}function yo(o,n){if(o&1&&(Dy(0,`i`,13),S_(1,`translate`)),o&2){let e=ve();Ay(`green-text`,!e.isMainMatterExternalsOnly()&&e.homebridgeStatus()?.matter?.enabled&&e.homebridgeStatus()?.status===`ok`&&!e.isRestarting())(`text-warning`,!e.isMainMatterExternalsOnly()&&e.homebridgeStatus()?.matter?.enabled&&(e.homebridgeStatus()?.status===`pending`||e.isRestarting()))(`red-text`,!e.isMainMatterExternalsOnly()&&e.homebridgeStatus()?.matter?.enabled&&e.homebridgeStatus()?.status===`down`&&!e.isRestarting())(`grey-text`,!e.homebridgeStatus()?.matter?.enabled&&!e.isMainMatterExternalsOnly())(`opacity-muted`,!e.homebridgeStatus()?.matter?.enabled&&!e.isMainMatterExternalsOnly())(`text-info`,e.isMainMatterExternalsOnly()),vy(`openDelay`,150)(`ngbTooltip`,N_(1,14,e.isMainMatterExternalsOnly()?`status.services.matter_externals_only`:e.homebridgeStatus()?.matter?.enabled?e.homebridgeStatus()?.status===`down`&&!e.isRestarting()?`status.services.matter_not_running`:`status.services.matter_running`:`status.services.matter_not_enabled`))}}function Io(o,n){o&1&&Dy(0,`i`,10)}function Eo(o,n){o&1&&Dy(0,`i`,11)}function So(o,n){if(o&1&&(Dy(0,`i`,13),S_(1,`translate`)),o&2){let e=ve().$implicit,t=ve();Ay(`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)),vy(`openDelay`,150)(`ngbTooltip`,N_(1,14,t.childMatterTooltipKey(e)))}}function To(o,n){o&1&&Dy(0,`i`,10)}function Mo(o,n){o&1&&Dy(0,`i`,11)}function ko(o,n){if(o&1){let e=sc();Va(0,`button`,4),ac(`click`,function(){let i=Ko$1(e).$implicit,r=ve();return Qo$1(!(i.status===`pending`||i.restarting||r.isRestarting()||!r.isAdmin)&&r.restartChildBridge(i))}),Va(1,`div`,5),Dy(2,`i`,6),S_(3,`translate`),Fe(4,So,2,16,`i`,7),jd(),Va(5,`div`,8),Ot(6),jd(),Va(7,`div`,9),Fe(8,To,1,0,`i`,10),Fe(9,Mo,1,0,`i`,11),jd()()}if(o&2){let e=n.$implicit,t=ve();Cr$1(`aria-label`,t.childBridgeAriaLabel(e))(`aria-disabled`,e.status===`pending`||e.restarting||t.isRestarting()||!t.isAdmin?`true`:null),se$1(2),Ay(`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)),vy(`openDelay`,150)(`ngbTooltip`,N_(3,20,t.childHapTooltipKey(e))),se$1(2),Le(t.isMatterSupported?4:-1),se$1(2),Py(e.name),se$1(2),Le(e.status!==`pending`&&!e.restarting&&!t.isRestarting()&&t.isAdmin?8:-1),se$1(),Le(e.status===`pending`||e.restarting||t.isRestarting()?9:-1)}}var fn=(()=>{class o{destroyRef=g(Z);$api=g(U3);$auth=g(he$1);$cache=g(p);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);$ws=g(ds$1);widget=i$.required();homebridgeStatus=q(null);childBridges=q([]);isRestarting=q(!1);homebridgeLiveMessage=q(``);childBridgeLiveMessages=q({});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();return`${t}, ${this.bridgeStatusLabel(e?.status,i)}${this.matterStatusLabel(!!e?.matter?.enabled,e?.status,i)}${!i&&this.isAdmin?`, ${this.$translate.instant(`menu.tooltip_restart`)}`:``}`}childBridgeAriaLabel(e){let t=e.status===`pending`||e.restarting||this.isRestarting(),i=this.bridgeStatusLabel(e.status,t),r=this.matterStatusLabel(this.isChildMatterEnabled(e),e.status,t),c=!t&&this.isAdmin?`, ${this.$translate.instant(`menu.tooltip_restart`)}`:``;return`${e.name}, ${i}${r}${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 E(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(An$1(this.destroyRef)).subscribe(()=>E(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=>x(w({},t),{status:Rt.DOWN})),this.lastHomebridgeStatus=Rt.DOWN,this.maybeAnnounceHomebridgeRestart(e)}),this.ioChild=this.$ws.connectToNamespace(`child-bridges`),this.ioChild.connected.pipe(An$1(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(r=>{let c=r.findIndex(g=>g.username===e.username);if(c!==-1){let g=[...r];return g[c]=x(w(w({},g[c]),e),{restarting:e.status===`ok`?!1:g[c].restarting}),g}else return[...r,x(w({},e),{restarting:!1})].sort((g,T)=>g.name.localeCompare(T.name))}),this.maybeAnnounceChildRestart(e.name||t,t,i)})})}restartChildBridge(e){return E(this,null,function*(){let t=e.username||e.name;this.childRestartRequested[t]=!0,this.childAnnouncementPending[t]=!1;try{this.childBridges.update(i=>{let r=[...i],c=r.findIndex(g=>g.username===e.username);return c!==-1&&(r[c]=x(w({},r[c]),{restarting:!0})),r}),yield Ln(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 r=[...i],c=r.findIndex(g=>g.username===e.username);return c!==-1&&(r[c]=x(w({},r[c]),{restarting:!1})),r}),this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1},15e3)}})}restartHomebridge(){return E(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 r=this.homebridgeStatus()?.name||`Homebridge`,c=this.formatRestartCompleteMessage(r,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(P=>(P.username||P.name)===t),T=g?.status;if(!T||T===`pending`){this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1;return}let S=this.formatRestartCompleteMessage(g?.name||e,T);this.childBridgeLiveMessages.update(P=>x(w({},P),{[t]:S})),this.childRestartRequested[t]=!1,this.childAnnouncementPending[t]=!1,setTimeout(()=>{this.childBridgeLiveMessages()[t]===S&&this.childBridgeLiveMessages.update(P=>x(w({},P),{[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 E(this,null,function*(){let e=yield Ln(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=>x(w({},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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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){t&1&&(Va(0,`div`,0)(1,`span`,1),Ot(2),jd(),_T(3,wo,2,1,`span`,1,un),Va(5,`div`,2),Ot(6),S_(7,`translate`),jd(),Va(8,`div`,3)(9,`button`,4),ac(`click`,function(){return!(i.homebridgeStatus()?.status===`pending`||i.isRestarting()||!i.isAdmin)&&i.restartHomebridge()}),Va(10,`div`,5),Dy(11,`i`,6),S_(12,`translate`),Fe(13,yo,2,16,`i`,7),jd(),Va(14,`div`,8),Ot(15),jd(),Va(16,`div`,9),Fe(17,Io,1,0,`i`,10),Fe(18,Eo,1,0,`i`,11),jd()(),_T(19,ko,10,22,`button`,12,un),jd()()),t&2&&(se$1(2),kt$1(` `,i.homebridgeLiveMessage(),` `),se$1(),ST(i.childBridges()),se$1(2),Ay(`widget-cursor`,i.widget().draggable),se$1(),kt$1(` `,N_(7,24,`child_bridge.bridges`),` `),se$1(3),Cr$1(`aria-label`,i.mainBridgeAriaLabel())(`aria-disabled`,i.homebridgeStatus()?.status===`pending`||i.isRestarting()||!i.isAdmin?`true`:null),se$1(2),Ay(`green-text`,!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&i.homebridgeStatus()?.status===`ok`&&!i.isRestarting())(`text-warning`,!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&(i.homebridgeStatus()?.status===`pending`||i.isRestarting()))(`red-text`,!i.isMainHapDisabled()&&!i.isMainHapExternalsOnly()&&i.homebridgeStatus()?.status===`down`&&!i.isRestarting())(`grey-text`,i.isMainHapDisabled()&&!i.isMainHapExternalsOnly())(`opacity-muted`,i.isMainHapDisabled()&&!i.isMainHapExternalsOnly())(`text-info`,i.isMainHapExternalsOnly()),vy(`openDelay`,150)(`ngbTooltip`,N_(12,26,i.mainHapTooltipKey())),se$1(2),Le(i.isMatterSupported?13:-1),se$1(2),Py(i.homebridgeStatus()?.name||`Homebridge`),se$1(2),Le(i.homebridgeStatus()?.status!==`pending`&&!i.isRestarting()&&i.isAdmin?17:-1),se$1(),Le(i.homebridgeStatus()?.status===`pending`||i.isRestarting()?18:-1),se$1(),ST(i.childBridges()))},dependencies:[Y,v3],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}`]})}return o})();var Cn=(()=>{class o{destroyRef=g(Z);widget=i$.required();currentTime=q(new Date);ngOnInit(){this.widget().timeFormat||(this.widget().timeFormat=`H:mm`),this.widget().dateFormat||(this.widget().dateFormat=`yyyy-MM-dd`),FD(1e3).pipe(An$1(this.destroyRef)).subscribe(()=>{this.currentTime.set(new Date)})}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Pe(0,`div`,0)(1,`div`,1)(2,`div`,2)(3,`div`,3)(4,`div`,4),Ot(5),S_(6,`date`),Je$1(),Pe(7,`div`,5),Ot(8),S_(9,`date`),Je$1()()()()()),t&2&&(se$1(5),Py(x_(6,2,i.currentTime(),i.widget().timeFormat)),se$1(3),Py(x_(9,5,i.currentTime(),i.widget().dateFormat)))},dependencies:[WS],encapsulation:2})}return o})();var Wo=[`widgetbackground`];var Je=(()=>{class o{destroyRef=g(Z);$ws=g(ds$1);widget=i$.required();chart=a$(Eh);widgetBackground=a$(`widgetbackground`);io;stopInterval$=new P;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(An$1(this.destroyRef)).subscribe(()=>{this.fetchData()}),this.initializeWidget(),this.configureEvent.pipe(An$1(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)),FD(this.refreshInterval*1e3).pipe(Ts$1(this.stopInterval$),An$1(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=w({},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,r)=>{i+1<r.length&&(e[t]=this.lineChartData.datasets[0].data[r[i+1]])}),this.lineChartData.datasets[0].data=e,this.lineChartLabels=this.lineChartLabels.slice(1)}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-base-chart-widget`]],viewQuery:function(t,i){t&1&&My(i.chart,Eh,5)(i.widgetBackground,Wo,5),t&2&&$T(2)},inputs:{widget:[1,`widget`]},decls:0,vars:0,template:function(t,i){},encapsulation:2})}return o})();function $o(o,n){o&1&&(Va(0,`div`,4)(1,`div`,5),Ot(2),S_(3,`translate`),jd()()),o&2&&(se$1(2),Py(N_(3,1,`status.metrics.label_disabled`)))}function Do(o,n){if(o&1&&(Ot(0),S_(1,`number`)),o&2)kt$1(` `,x_(1,1,ve(2).currentLoad(),`1.0-0`),`% `)}function Po(o,n){o&1&&Dy(0,`i`,11)}function Ro(o,n){if(o&1&&(Va(0,`div`,9)(1,`div`,10),Ot(2),S_(3,`convertTemp`),S_(4,`number`),S_(5,`uppercase`),jd(),Va(6,`div`,12),Ot(7),S_(8,`translate`),jd()()),o&2){let e=ve(2);se$1(2),jy(` `,x_(4,6,x_(3,3,e.cpuTemperature().main,e.temperatureUnits),`1.0-0`),`°`,N_(5,9,e.temperatureUnits),` `),se$1(5),Py(N_(8,11,`status.cpu.temp`))}}function Bo(o,n){if(o&1&&(Dy(0,`canvas`,6),Va(1,`div`,7)(2,`div`,8)(3,`div`,9)(4,`div`,10),Fe(5,Do,2,4)(6,Po,1,0,`i`,11),jd(),Va(7,`div`,12),Ot(8),S_(9,`translate`),jd()(),Fe(10,Ro,9,13,`div`,9),jd()()),o&2){let e=ve();vy(`data`,e.lineChartData)(`labels`,e.lineChartLabels)(`options`,e.lineChartOptions)(`type`,e.lineChartType),se$1(5),Le(e.currentLoad()!==void 0?5:6),se$1(3),Py(N_(9,7,`status.cpu.load`)),se$1(2),Le(e.cpuTemperature().main!==void 0&&e.cpuTemperature().main!==null&&e.cpuTemperature().main!==-1?10:-1)}}var _n=(()=>{class o extends Je{$settings=g(zt);cpuTemperature=q({});currentLoad=q(0);temperatureUnits=this.$settings.env.temperatureUnits;metricsDisabled=this.$settings.env.disableServerMetricsMonitoring===!0;fetchData(){this.metricsDisabled||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 ɵfac=(()=>{let e;return function(i){return(e||(e=Sn$1(o)))(i||o)}})();static ɵcmp=nc({type:o,selectors:[[`app-cpu-widget`]],features:[rc],decls:8,vars:6,consts:[[`widgetbackground`,``],[1,`flex-column`,`d-flex`,`align-items-stretch`,`h-100`,`w-100`,`pb-1`],[1,`drag-handler`,`p-2`],[1,`hb-widget-chart-background`],[1,`d-flex`,`flex-row`,`flex-grow-1`,`align-items-center`,`justify-content-center`,`w-100`,`gridster-item-content`,`text-center`,`px-3`],[1,`grey-text`],[`baseChart`,``,1,`widget-chart`,`h-100`,`w-100`,3,`data`,`labels`,`options`,`type`],[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&&(Va(0,`div`,1)(1,`div`,2),Ot(2),S_(3,`translate`),jd(),Dy(4,`div`,3,0),Fe(6,$o,4,3,`div`,4)(7,Bo,11,9),jd()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),kt$1(` `,N_(3,4,`status.cpu.title_cpu`),` `),se$1(4),Le(i.metricsDisabled?6:7))},dependencies:[Eh,zS,YS,v3,Re],styles:[`.widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}`]})}return o})();var Lo=[`pincode`];var zo=[`qrcodecontainer`];function Vo(o,n){if(o&1&&Dy(0,`app-qrcode`,7),o&2)vy(`data`,ve().setupUri())}function Oo(o,n){o&1&&Dy(0,`i`,14)}function Ho(o,n){o&1&&Dy(0,`i`,15)}function No(o,n){o&1&&Dy(0,`i`,16)}function Uo(o,n){if(o&1&&(Va(0,`div`,8),Fe(1,Oo,1,0,`i`,14)(2,Ho,1,0,`i`,15)(3,No,1,0,`i`,16),jd()),o&2){let e=ve();se$1(),Le(e.loading()?1:e.externalsOnly()?2:e.enabled()?-1:3)}}function Fo(o,n){if(o&1&&(Va(0,`span`,11),Ot(1),jd()),o&2){let e=ve();se$1(),Py(e.pin())}}function Ao(o,n){o&1&&(Ot(0),S_(1,`translate`)),o&2&&kt$1(` `,N_(1,1,`status.services.hap_externals_only`),` `)}function jo(o,n){o&1&&(Dy(0,`br`),Va(1,`small`),Ot(2),S_(3,`translate`),jd()),o&2&&(se$1(2),Py(N_(3,1,`status.code_scan`)))}function qo(o,n){if(o&1&&(Ot(0,` · `),Dy(1,`i`,17),Ot(2),S_(3,`translate`),Fe(4,jo,4,3)),o&2){let e=ve(2);se$1(),Ay(`green-text`,e.paired())(`grey-text`,!e.paired()),se$1(),kt$1(` `,N_(3,6,e.paired()?`status.widget.qr_paired`:`status.widget.qr_unpaired`),` `),se$1(2),Le(e.paired()?-1:4)}}function Xo(o,n){if(o&1&&(Ot(0,` HAP `),Fe(1,qo,5,8)),o&2){let e=ve();se$1(),Le(e.pin()?1:-1)}}function Go(o,n){o&1&&(Ot(0),S_(1,`translate`)),o&2&&kt$1(` `,N_(1,1,`status.services.hap_not_enabled`),` `)}var bn=(()=>{class o{destroyRef=g(Z);$ws=g(ds$1);widget=i$.required();pincodeElement=a$(`pincode`);qrcodeContainerElement=a$(`qrcodecontainer`);enabled=q(!0);externalsOnly=q(!1);loading=q(!0);paired=q(!1);pin=q(``);setupUri=q(null);qrCodeHeight=q(0);qrCodeWidth=q(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(An$1(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,r=e-this.pincodeElement().nativeElement.offsetHeight,c=t>r?r:t;this.qrCodeHeight.set(r),this.qrCodeWidth.set(c)}getPairingPin(){this.io.request(`get-homebridge-pairing-pin`).subscribe({next:e=>{this.applyHapStatus(e),requestAnimationFrame(()=>this.resizeQrCode())}})}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-hap-qrcode-widget`]],viewQuery:function(t,i){t&1&&My(i.pincodeElement,Lo,5)(i.qrcodeContainerElement,zo,5),t&2&&$T(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&&(Va(0,`div`,2)(1,`div`,3,0)(3,`div`,4)(4,`div`,5)(5,`div`,6),Fe(6,Vo,1,1,`app-qrcode`,7)(7,Uo,4,1,`div`,8),jd()()(),Va(8,`div`,9,1)(10,`p`,10),Fe(11,Fo,2,1,`span`,11),jd(),Va(12,`p`,12),Dy(13,`i`,13),Fe(14,Ao,2,3)(15,Xo,2,1)(16,Go,2,3),jd()()()()),t&2&&(se$1(3),Xt$1(`height`,i.qrCodeHeight(),`px`)(`width`,i.qrCodeWidth(),`px`),se$1(3),Le(i.setupUri()?6:7),se$1(5),Le(i.pin()?11:-1),se$1(3),Le(i.externalsOnly()?14:i.enabled()?15:16))},dependencies:[pr$2,v3],styles:[`.qr-loading-container[_ngcontent-%COMP%]{min-height:200px}`]})}return o})();var Yo=[`widgetcontainer`];var Qo=[`terminaltitle`];var Jo=[`searchcontainer`];var Ko=[`searchInput`];var Zo=[`logoutput`];function es(o,n){if(o&1){let e=sc();Va(0,`div`,13)(1,`button`,14),S_(2,`translate`),S_(3,`translate`),ac(`mousedown`,function(i){return i.stopPropagation()})(`touchstart`,function(i){return i.stopPropagation()})(`click`,function(){Ko$1(e);return Qo$1(ve().showSearch())}),Dy(4,`i`,7),jd(),Va(5,`button`,14),S_(6,`translate`),S_(7,`translate`),ac(`mousedown`,function(i){return i.stopPropagation()})(`touchstart`,function(i){return i.stopPropagation()})(`click`,function(){Ko$1(e);return Qo$1(ve().downloadLogFile())}),Dy(8,`i`,15),jd(),Va(9,`button`,14),S_(10,`translate`),S_(11,`translate`),ac(`mousedown`,function(i){return i.stopPropagation()})(`touchstart`,function(i){return i.stopPropagation()})(`click`,function(){Ko$1(e);return Qo$1(ve().truncateLogFile())}),Dy(12,`i`,16),jd()()}if(o&2){let e=ve();Ay(`with-gear`,e.widget().draggable),se$1(),vy(`openDelay`,150)(`ngbTooltip`,N_(2,13,`form.search`)),Cr$1(`aria-label`,N_(3,15,`form.search`)),se$1(3),Jt$1(`fas fa-search${e.showSearchBar()?` primary-text`:``}`),se$1(),vy(`openDelay`,150)(`ngbTooltip`,N_(6,17,`form.button_download`)),Cr$1(`aria-label`,N_(7,19,`form.button_download`)),se$1(4),vy(`openDelay`,150)(`ngbTooltip`,N_(10,21,`form.button_delete`)),Cr$1(`aria-label`,N_(11,23,`form.button_delete`))}}function ts(o,n){if(o&1){let e=sc();Va(0,`button`,20),S_(1,`translate`),ac(`click`,function(){Ko$1(e);return Qo$1(ve(2).onClearSearch())}),Dy(2,`i`,21),jd()}o&2&&Cr$1(`aria-label`,N_(1,1,`form.button_clear`))}function is(o,n){if(o&1){let e=sc();Va(0,`div`,10,3)(2,`form`,17),ac(`ngSubmit`,function(){Ko$1(e);let i=ve();return Qo$1(i.onSubmit(i.form.value))}),Dy(3,`input`,18,4),S_(5,`translate`),db(),Fe(6,ts,3,3,`button`,19),jd()()}if(o&2){let e=ve();se$1(2),vy(`formGroup`,e.form),se$1(),Ay(`search-bar-light`,e.theme()===`light`)(`is-invalid`,e.searchInputInvalid),vy(`placeholder`,N_(5,7,`logs.placeholder_search_logs`)),pb(),se$1(3),Le(e.form.get(`query`)?.value?6:-1)}}var xn=(()=>{class o{destroyRef=g(Z);$auth=g(he$1);$log=g(Z$1);$settings=g(zt);$cdr=g(hc);widget=i$.required();widgetContainerElement=a$(`widgetcontainer`);titleElement=a$(`terminaltitle`);searchContainerElement=a$(`searchcontainer`);searchInput=a$(`searchInput`);termTarget=a$(`logoutput`);terminalHeight=q(200);theme=q(`dark`);showSearchBar=q(!1);showExitButton=q(!1);srExpanded=q(!1);contentId=`homebridge-logs-content-${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;isAdmin=this.$auth.user.admin;form=new $({query:new Se(``)});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(An$1(this.destroyRef)).subscribe(()=>{this.initialized&&this.terminalHeight.set(this.getTerminalHeight())}),this.configureEvent.pipe(An$1(this.destroyRef)).subscribe(()=>{}),this.form.get(`query`)?.valueChanges.pipe(Wf(500),qf(),An$1(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(An$1(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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-homebridge-logs-widget`]],viewQuery:function(t,i){t&1&&My(i.widgetContainerElement,Yo,5)(i.titleElement,Qo,5)(i.searchContainerElement,Jo,5)(i.searchInput,Ko,5)(i.termTarget,Zo,5),t&2&&$T(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&&(Va(0,`div`,5,0)(2,`div`,6,1)(4,`span`,7),Ot(5),S_(6,`translate`),jd(),Va(7,`button`,8),S_(8,`translate`),ac(`click`,function(c){return i.toggleSrExpanded(c)}),Ot(9),S_(10,`translate`),jd(),Fe(11,es,13,25,`div`,9),jd(),Fe(12,is,7,9,`div`,10),Va(13,`div`,11),Dy(14,`div`,12,2),jd()()),t&2&&(Ay(`widget-container-dark`,i.theme()===`dark`),se$1(2),Ay(`terminal-title-dark`,i.theme()===`dark`),se$1(3),Py(N_(6,15,`status.widget.homebridge_logs`)),se$1(2),Cr$1(`aria-expanded`,i.srExpanded())(`aria-controls`,i.contentId)(`aria-label`,N_(8,17,`status.widget.homebridge_logs`)),se$1(2),kt$1(` `,N_(10,19,`status.widget.homebridge_logs`),` `),se$1(2),Le(i.isAdmin&&i.widget().showToolbar?11:-1),se$1(),Le(i.showSearchBar()?12:-1),se$1(),Xt$1(`height`,i.terminalHeight(),`px`),Cr$1(`id`,i.contentId)(`aria-hidden`,i.srExpanded()?null:`true`))},dependencies:[Y,Jn$1,zn$1,Ye$1,Hn$1,Ln$1,Cn$1,_n$1,v3],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}`]})}return o})();var ns=[`pincodeMatter`];var os=[`qrcodecontainerMatter`];function ss(o,n){if(o&1&&Dy(0,`app-qrcode`,7),o&2)vy(`data`,ve().setupUri())}function rs(o,n){o&1&&Dy(0,`i`,14)}function as(o,n){o&1&&Dy(0,`i`,15)}function ls(o,n){if(o&1&&(Va(0,`div`,8),Fe(1,rs,1,0,`i`,14)(2,as,1,0,`i`,15),jd()),o&2){let e=ve();se$1(),Le(e.loading()?1:e.enabled()?-1:2)}}function ds(o,n){if(o&1&&(Va(0,`span`,11),Ot(1),jd()),o&2){let e=ve();se$1(),Py(e.pin())}}function cs(o,n){o&1&&(Dy(0,`br`),Va(1,`small`),Ot(2),S_(3,`translate`),jd()),o&2&&(se$1(2),Py(N_(3,1,`status.code_scan`)))}function ms(o,n){if(o&1&&(Ot(0,` Matter · `),Dy(1,`i`,16),Ot(2),S_(3,`translate`),Fe(4,cs,4,3)),o&2){let e=ve(2);se$1(),Ay(`green-text`,e.commissioned())(`grey-text`,!e.commissioned()),se$1(),kt$1(` `,N_(3,6,e.commissioned()?`status.widget.qr_paired`:`status.widget.qr_unpaired`),` `),se$1(2),Le(e.commissioned()?-1:4)}}function ps(o,n){if(o&1&&Fe(0,ms,5,8),o&2)Le(ve().pin()?0:-1)}function hs(o,n){o&1&&(Ot(0),S_(1,`translate`)),o&2&&kt$1(` `,N_(1,1,`status.services.matter_not_enabled`),` `)}var vn=(()=>{class o{destroyRef=g(Z);$ws=g(ds$1);widget=i$.required();pincodeElement=a$(`pincodeMatter`);qrcodeContainerElement=a$(`qrcodecontainerMatter`);enabled=q(!1);loading=q(!0);commissioned=q(!1);pin=q(``);setupUri=q(null);qrCodeHeight=q(0);qrCodeWidth=q(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(An$1(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,r=e-this.pincodeElement().nativeElement.offsetHeight,c=t>r?r:t;this.qrCodeHeight.set(r),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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-matter-qrcode-widget`]],viewQuery:function(t,i){t&1&&My(i.pincodeElement,ns,5)(i.qrcodeContainerElement,os,5),t&2&&$T(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&&(Va(0,`div`,2)(1,`div`,3,0)(3,`div`,4)(4,`div`,5)(5,`div`,6),Fe(6,ss,1,1,`app-qrcode`,7)(7,ls,3,1,`div`,8),jd()()(),Va(8,`div`,9,1)(10,`p`,10),Fe(11,ds,2,1,`span`,11),jd(),Va(12,`p`,12),Dy(13,`i`,13),Fe(14,ps,1,1)(15,hs,2,3),jd()()()()),t&2&&(se$1(3),Xt$1(`height`,i.qrCodeHeight(),`px`)(`width`,i.qrCodeWidth(),`px`),se$1(3),Le(i.setupUri()?6:7),se$1(5),Le(i.pin()?11:-1),se$1(3),Le(i.enabled()?14:15))},dependencies:[pr$2,v3],styles:[`.qr-loading-container[_ngcontent-%COMP%]{min-height:200px}`]})}return o})();function gs(o,n){o&1&&(Va(0,`div`,4)(1,`div`,5),Ot(2),S_(3,`translate`),jd()()),o&2&&(se$1(2),Py(N_(3,1,`status.metrics.label_disabled`)))}function us(o,n){if(o&1&&(Ot(0),S_(1,`number`)),o&2)kt$1(` `,x_(1,1,ve(2).totalMemory(),`1.0-2`),` GB `)}function fs(o,n){o&1&&Dy(0,`i`,11)}function Cs(o,n){if(o&1&&(Ot(0),S_(1,`number`)),o&2)kt$1(` `,x_(1,1,ve(2).freeMemory(),`1.0-2`),` GB `)}function _s(o,n){o&1&&Dy(0,`i`,11)}function bs(o,n){if(o&1&&(Dy(0,`canvas`,6),Va(1,`div`,7)(2,`div`,8)(3,`div`,9)(4,`div`,10),Fe(5,us,2,4)(6,fs,1,0,`i`,11),jd(),Va(7,`div`,12),Ot(8),S_(9,`translate`),jd()(),Va(10,`div`,9)(11,`div`,10),Fe(12,Cs,2,4)(13,_s,1,0,`i`,11),jd(),Va(14,`div`,12),Ot(15),S_(16,`translate`),jd()()()()),o&2){let e=ve();vy(`data`,e.lineChartData)(`labels`,e.lineChartLabels)(`options`,e.lineChartOptions)(`type`,e.lineChartType),se$1(5),Le(e.totalMemory()!==void 0?5:6),se$1(3),Py(N_(9,8,`status.memory.label_total`)),se$1(4),Le(e.freeMemory()!==void 0?12:13),se$1(3),Py(N_(16,10,`status.memory.label_available`))}}var wn=(()=>{class o extends Je{$settings=g(zt);totalMemory=q(0);freeMemory=q(0);metricsDisabled=this.$settings.env.disableServerMetricsMonitoring===!0;fetchData(){this.metricsDisabled||this.io.request(`get-server-memory-info`).subscribe(e=>{this.updateData(e),this.chart()?.update()})}updateData(e){if(!e.mem)return;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 ɵfac=(()=>{let e;return function(i){return(e||(e=Sn$1(o)))(i||o)}})();static ɵcmp=nc({type:o,selectors:[[`app-memory-widget`]],features:[rc],decls:8,vars:6,consts:[[`widgetbackground`,``],[1,`flex-column`,`d-flex`,`align-items-stretch`,`h-100`,`w-100`,`pb-1`],[1,`drag-handler`,`p-2`],[1,`hb-widget-chart-background`],[1,`d-flex`,`flex-row`,`flex-grow-1`,`align-items-center`,`justify-content-center`,`w-100`,`gridster-item-content`,`text-center`,`px-3`],[1,`grey-text`],[`baseChart`,``,1,`widget-chart`,`h-100`,`w-100`,3,`data`,`labels`,`options`,`type`],[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&&(Va(0,`div`,1)(1,`div`,2),Ot(2),S_(3,`translate`),jd(),Dy(4,`div`,3,0),Fe(6,gs,4,3,`div`,4)(7,bs,17,12),jd()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),kt$1(` `,N_(3,4,`status.memory.title_memory`),` `),se$1(4),Le(i.metricsDisabled?6:7))},dependencies:[Eh,YS,v3],styles:[`.widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}`]})}return o})();function xs(o,n){if(o&1&&(Ot(0),S_(1,`number`)),o&2)kt$1(` `,x_(1,1,ve().receivedPerSec(),`1.0-1`),` Mb/s `)}function vs(o,n){o&1&&Dy(0,`i`,9)}function ws(o,n){if(o&1&&(Ot(0),S_(1,`number`)),o&2)kt$1(` `,x_(1,1,ve().sentPerSec(),`1.0-1`),` Mb/s `)}function ys(o,n){o&1&&Dy(0,`i`,9)}var yn=(()=>{class o extends Je{interface=q(``);receivedPerSec=q(0);sentPerSec=q(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=w({},[]),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 ɵfac=(()=>{let e;return function(i){return(e||(e=Sn$1(o)))(i||o)}})();static ɵcmp=nc({type:o,selectors:[[`app-network-widget`]],features:[rc],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&&(Va(0,`div`,1)(1,`div`,2),Ot(2),S_(3,`translate`),jd(),Dy(4,`canvas`,3)(5,`div`,4,0),Va(7,`div`,5)(8,`div`,6)(9,`div`,7)(10,`div`,8),Fe(11,xs,2,4)(12,vs,1,0,`i`,9),jd(),Va(13,`div`,10),Ot(14),S_(15,`translate`),jd()(),Va(16,`div`,7)(17,`div`,8),Fe(18,ws,2,4)(19,ys,1,0,`i`,9),jd(),Va(20,`div`,10),Ot(21),S_(22,`translate`),jd()()()()()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),jy(` `,N_(3,12,`status.network.title_network`),` (`,i.widget().networkInterface,`) `),se$1(2),vy(`data`,i.lineChartData)(`labels`,i.lineChartLabels)(`options`,i.lineChartOptions)(`type`,i.lineChartType),se$1(7),Le(i.receivedPerSec()!==void 0?11:12),se$1(3),Py(N_(15,14,`status.network.received_per_second`)),se$1(4),Le(i.sentPerSec()!==void 0?18:19),se$1(3),Py(N_(22,16,`status.network.sent_per_second`)))},dependencies:[Eh,YS,v3],styles:[`.widget-chart[_ngcontent-%COMP%]{position:absolute;z-index:-1}`]})}return o})();function Is(o,n){if(o&1&&Ot(0),o&2){let e=ve(3);By(` `,e.serverInfo().os.distro,` `,e.serverInfo().os.codename,` (`,e.serverInfo().os.release,`) `)}}function Es(o,n){if(o&1&&Ot(0),o&2)kt$1(` `,ve(3).serverInfo().os.distro,` `)}function Ss(o,n){if(o&1&&(Ot(0),S_(1,`titlecase`)),o&2){let e=ve(3);By(` `,e.serverInfo().os.distro,` `,N_(1,3,e.serverInfo().os.codename),` (`,e.serverInfo().os.release,`) `)}}function Ts(o,n){if(o&1&&(Pe(0,`td`,5),Fe(1,Is,1,3)(2,Es,1,1)(3,Ss,2,5),Je$1()),o&2){let e,t=ve(2);se$1(),Le((e=t.serverInfo().os.platform)===`darwin`?1:e===`win32`?2:3)}}function Ms(o,n){o&1&&(Pe(0,`td`,5),Ot(1,`Synology DSM`),Je$1())}function ks(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Fe(4,Ts,4,1,`td`,5)(5,Ms,2,0,`td`,5),Je$1(),Pe(6,`tr`)(7,`th`,4),Ot(8),S_(9,`translate`),Je$1(),Pe(10,`td`,5),Ot(11),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,5,`status.widget.info.os`)),se$1(2),Le(e.serverInfo().homebridgeRunningInSynologyPackage?5:4),se$1(4),Py(N_(9,7,`status.widget.info.arch`)),se$1(3),jy(` `,e.serverInfo().os.arch,` (`,e.arch64bitList.includes(e.serverInfo().os.arch)?`64-bit`:`32-bit`,`) `)}}function Ws(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),jy(` `,N_(3,3,`status.widget.info.ipv4`),` (`,e.serverInfo().network.iface,`) `),se$1(3),Py(e.serverInfo().network.ip4)}}function $s(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),jy(` `,N_(3,3,`status.widget.info.ipv6`),` (`,e.serverInfo().network.iface,`) `),se$1(3),Py(e.serverInfo().network.ip6)}}function Ds(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.hostname`)),se$1(3),Py(e.serverInfo().os.hostname)}}function Ps(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.service_user`)),se$1(3),Py(e.serverInfo().serviceUser)}}function Rs(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.nodejs_path`)),se$1(3),Py(e.nodejsInfo().installPath)}}function Bs(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.storage_path`)),se$1(3),Py(e.serverInfo().homebridgeStoragePath)}}function Ls(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.config_path`)),se$1(3),Py(e.serverInfo().homebridgeConfigJsonPath)}}function zs(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.plugin_path`)),se$1(3),kt$1(` `,e.serverInfo().homebridgeCustomPluginPath||e.serverInfo().homebridgePluginPath,` `)}}function Vs(o,n){if(o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,5),Ot(5),Je$1()()),o&2){let e=ve();se$1(2),Py(N_(3,2,`status.widget.info.timezone`)),se$1(3),Py(e.serverInfo().time.timezone)}}function Os(o,n){o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,6),Ot(5),S_(6,`translate`),Je$1()()),o&2&&(se$1(2),Py(N_(3,2,`status.widget.info.docker`)),se$1(3),Py(N_(6,4,`status.widget.info.yes`)))}function Hs(o,n){o&1&&(Pe(0,`tr`)(1,`th`,4),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`td`,6),Ot(5),S_(6,`translate`),Je$1()()),o&2&&(se$1(2),Py(N_(3,2,`status.widget.info.synology_package`)),se$1(3),Py(N_(6,4,`status.widget.info.yes`)))}var In=(()=>{class o{destroyRef=g(Z);$ws=g(ds$1);widget=i$.required();serverInfo=q({network:{},os:{},time:{}});nodejsInfo=q({});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(An$1(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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Pe(0,`div`,0)(1,`div`,1),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`div`,2)(5,`table`,3)(6,`tbody`),Fe(7,ks,12,9),Fe(8,Ws,6,5,`tr`),Fe(9,$s,6,5,`tr`),Fe(10,Ds,6,4,`tr`),Fe(11,Ps,6,4,`tr`),Fe(12,Rs,6,4,`tr`),Fe(13,Bs,6,4,`tr`),Fe(14,Ls,6,4,`tr`),Fe(15,zs,6,4,`tr`),Fe(16,Vs,6,4,`tr`),Fe(17,Os,7,6,`tr`),Fe(18,Hs,7,6,`tr`),Je$1()()()()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),Py(N_(3,15,`status.widget.info`)),se$1(5),Le(`homebridgeRunningInSynologyPackage`in i.serverInfo()?7:-1),se$1(),Le(i.serverInfo().network.ip4?8:-1),se$1(),Le(i.serverInfo().network.ip6?9:-1),se$1(),Le(i.serverInfo().os.hostname?10:-1),se$1(),Le(`serviceUser`in i.serverInfo()?11:-1),se$1(),Le(`installPath`in i.nodejsInfo()?12:-1),se$1(),Le(`homebridgeStoragePath`in i.serverInfo()?13:-1),se$1(),Le(`homebridgeConfigJsonPath`in i.serverInfo()?14:-1),se$1(),Le(`homebridgeCustomPluginPath`in i.serverInfo()||`homebridgePluginPath`in i.serverInfo()?15:-1),se$1(),Le(i.serverInfo().time.timezone?16:-1),se$1(),Le(i.serverInfo().homebridgeRunningInDocker?17:-1),se$1(),Le(i.serverInfo().homebridgeRunningInSynologyPackage?18:-1))},dependencies:[US,v3],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}}`]})}return o})();var Ns=[`widgetcontainer`];var Us=[`terminaltitle`];var Fs=[`terminaloutput`];var En=(()=>{class o{destroyRef=g(Z);$terminal=g(L);$settings=g(zt);$navigationGuard=g(b);$cdr=g(hc);widget=i$.required();widgetContainerElement=a$(`widgetcontainer`);titleElement=a$(`terminaltitle`);termTarget=a$(`terminaloutput`);terminalHeight=q(200);theme=q(`dark`);srExpanded=q(!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(An$1(this.destroyRef)).subscribe({next:()=>{this.terminalHeight.set(this.getTerminalHeight())}}),this.configureEvent.pipe(An$1(this.destroyRef)).subscribe(()=>{}),this.$settings.terminalSettingsChanged.pipe(An$1(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(){return this.widgetContainerElement().nativeElement.offsetHeight-this.titleElement().nativeElement.offsetHeight}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-terminal-widget`]],viewQuery:function(t,i){t&1&&My(i.widgetContainerElement,Ns,5)(i.titleElement,Us,5)(i.termTarget,Fs,5),t&2&&$T(3)},hostBindings:function(t,i){t&1&&ac(`beforeunload`,function(c){return i.onBeforeUnload(c)},_w)(`focus`,function(){return i.onWindowFocus()},_w)(`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&&(Pe(0,`div`,3,0)(2,`div`,4,1)(4,`span`,5),Ot(5),S_(6,`translate`),Je$1(),Pe(7,`button`,6),S_(8,`translate`),xi(`click`,function(c){return i.toggleSrExpanded(c)}),Ot(9),S_(10,`translate`),Je$1()(),Pe(11,`div`,7),br$1(12,`div`,8,2),Je$1()()),t&2&&(Ay(`widget-container-dark`,i.theme()===`dark`),se$1(2),Ay(`terminal-title-dark`,i.theme()===`dark`),se$1(3),kt$1(`Homebridge `,N_(6,13,`menu.docker.terminal`)),se$1(2),Cr$1(`aria-expanded`,i.srExpanded())(`aria-controls`,i.contentId)(`aria-label`,N_(8,15,`menu.docker.terminal`)),se$1(2),kt$1(` `,N_(10,17,`menu.docker.terminal`),` `),se$1(2),Xt$1(`height`,i.terminalHeight(),`px`),Cr$1(`id`,i.contentId)(`aria-hidden`,i.srExpanded()?null:`true`))},dependencies:[v3],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%}`]})}return o})();var Bt=D(Ti(),1);var As=o=>({architecture:o});var js=(o,n)=>({pluginName:o,nodeVersion:n});function qs(o,n){o&1&&(Va(0,`div`,5),Dy(1,`i`,13),jd())}function Xs(o,n){if(o&1&&Ot(0),o&2)kt$1(` → `,ve(2).latestVersion,` `)}function Gs(o,n){o&1&&(Va(0,`li`),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.widget.info.node_update_message_2`)))}function Ys(o,n){o&1&&(Va(0,`li`),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.widget.info.node_unsupp_message`)))}function Qs(o,n){o&1&&(Va(0,`div`,27),Dy(1,`i`,33),jd())}function Js(o,n){o&1&&(Va(0,`div`,27),Dy(1,`i`,33),jd())}function Ks(o,n){o&1&&(Va(0,`div`,27),Dy(1,`i`,33),jd())}function Zs(o,n){o&1&&Dy(0,`i`,38)}function er(o,n){o&1&&Dy(0,`i`,39)}function tr(o,n){if(o&1&&(Va(0,`ul`,32)(1,`li`,34),Ot(2),S_(3,`translate`),jd(),Va(4,`li`,35)(5,`div`,36),Ot(6,` Node.js v24 `),Dy(7,`br`),Va(8,`span`,37),Ot(9),S_(10,`translate`),jd()(),Va(11,`div`,27),Fe(12,Zs,1,0,`i`,38)(13,er,1,0,`i`,39),jd()()()),o&2){let e=ve(2);se$1(2),Py(N_(3,3,`status.widget.info.node_major`)),se$1(7),kt$1(` `,x_(10,5,e.supportsNodeJs24?`status.widget.info.node_next_yes`:`status.widget.info.node_next_no`,w_(8,As,e.architecture)),` `),se$1(3),Le(e.supportsNodeJs24?12:13)}}function ir(o,n){o&1&&Dy(0,`i`,38)}function nr(o,n){o&1&&Dy(0,`i`,39)}function or(o,n){o&1&&Dy(0,`i`,41)}function sr(o,n){if(o&1){let e=sc();Va(0,`li`,35)(1,`div`,22)(2,`img`,40),ac(`error`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(3).handleIconError(i))}),jd()(),Va(3,`div`,36),Ot(4),Dy(5,`br`),Va(6,`span`,37),Ot(7),S_(8,`translate`),jd()(),Va(9,`div`,27),Fe(10,ir,1,0,`i`,38)(11,nr,1,0,`i`,39)(12,or,1,0,`i`,41),jd()()}if(o&2){let e=n.$implicit,t=ve(3);se$1(2),vy(`src`,e.icon,Xg),se$1(2),kt$1(` `,e.displayName),se$1(3),kt$1(` `,x_(8,4,e.isSupportedStr,C_(7,js,e.displayName,t.latestVersion)),` `),se$1(3),Le(e.isSupported===`yes`?10:e.isSupported===`no`?11:12)}}function rr(o,n){if(o&1&&(Va(0,`ul`,32)(1,`li`,34),Ot(2),S_(3,`translate`),jd(),_T(4,sr,13,10,`li`,35,TT),jd()),o&2){let e=ve(2);se$1(2),Py(N_(3,1,`menu.label_plugins`)),se$1(2),ST(e.installedPlugins())}}function ar(o,n){if(o&1&&(Va(0,`div`,9),Dy(1,`i`,14),Va(2,`h5`,15),Ot(3),Fe(4,Xs,1,1),jd()(),Va(5,`ul`,16)(6,`li`),Ot(7),S_(8,`translate`),jd(),Fe(9,Gs,3,3,`li`),Fe(10,Ys,3,3,`li`),jd(),Va(11,`ul`,17),S_(12,`translate`),Va(13,`div`,18),Ot(14),S_(15,`translate`),jd(),Va(16,`li`,19)(17,`label`,20),Dy(18,`input`,21),S_(19,`translate`),db(),Va(20,`div`,22),Dy(21,`i`,23),jd(),Va(22,`div`,24)(23,`div`,25),Ot(24),S_(25,`translate`),jd(),Va(26,`small`,26),Ot(27),S_(28,`translate`),jd()(),Fe(29,Qs,2,0,`div`,27),jd()(),Va(30,`li`,19)(31,`label`,20),Dy(32,`input`,28),S_(33,`translate`),db(),Va(34,`div`,22),Dy(35,`i`,29),jd(),Va(36,`div`,24)(37,`div`,25),Ot(38),S_(39,`translate`),jd(),Va(40,`small`,26),Ot(41),S_(42,`translate`),jd()(),Fe(43,Js,2,0,`div`,27),jd()(),Va(44,`li`,19)(45,`label`,20),Dy(46,`input`,30),S_(47,`translate`),db(),Va(48,`div`,22),Dy(49,`i`,31),jd(),Va(50,`div`,24)(51,`div`,25),Ot(52),S_(53,`translate`),jd(),Va(54,`small`,26),Ot(55),S_(56,`translate`),jd()(),Fe(57,Ks,2,0,`div`,27),jd()()(),Fe(58,tr,14,10,`ul`,32),Fe(59,rr,6,3,`ul`,32)),o&2){let e=ve();se$1(3),kt$1(` `,e.nodeVersion,` `),se$1(),Le(e.latestVersion!==e.nodeVersion?4:-1),se$1(3),Py(N_(8,36,`status.widget.info.node_update_message`)),se$1(2),Le(e.homebridgeRunningInSynologyPackage||e.homebridgeRunningInDocker?9:-1),se$1(),Le(e.showNodeUnsupportedWarning?10:-1),se$1(),Cr$1(`aria-label`,N_(12,38,`plugins.manage.notifications`)),se$1(3),kt$1(` `,N_(15,40,`plugins.manage.notifications`),` `),se$1(4),vy(`formControl`,e.nodeUpdatePolicyControl),Cr$1(`aria-label`,N_(19,42,`plugins.manage.notifications_all`)),pb(),se$1(3),Ay(`primary-text`,e.nodeUpdatePolicyControl.value===`all`)(`grey-text`,e.nodeUpdatePolicyControl.value!==`all`),se$1(3),Py(N_(25,44,`plugins.manage.notifications_all`)),se$1(3),Py(N_(28,46,`plugins.manage.notifications_all_desc`)),se$1(2),Le(e.nodeUpdatePolicyControl.value===`all`?29:-1),se$1(3),vy(`formControl`,e.nodeUpdatePolicyControl),Cr$1(`aria-label`,N_(33,48,`plugins.manage.notifications_major`)),pb(),se$1(3),Ay(`primary-text`,e.nodeUpdatePolicyControl.value===`major`)(`grey-text`,e.nodeUpdatePolicyControl.value!==`major`),se$1(3),Py(N_(39,50,`plugins.manage.notifications_major`)),se$1(3),Py(N_(42,52,`plugins.manage.notifications_major_desc`)),se$1(2),Le(e.nodeUpdatePolicyControl.value===`major`?43:-1),se$1(3),vy(`formControl`,e.nodeUpdatePolicyControl),Cr$1(`aria-label`,N_(47,54,`plugins.manage.notifications_none`)),pb(),se$1(3),Ay(`primary-text`,e.nodeUpdatePolicyControl.value===`none`)(`grey-text`,e.nodeUpdatePolicyControl.value!==`none`),se$1(3),Py(N_(53,56,`plugins.manage.notifications_none`)),se$1(3),Py(N_(56,58,`plugins.manage.notifications_none_desc`)),se$1(2),Le(e.nodeUpdatePolicyControl.value===`none`?57:-1),se$1(),Le(e.hasNode24OrAbove?-1:58),se$1(),Le(e.installedPlugins().length?59:-1)}}var Sn=(()=>{class o{$activeModal=g(fe);$api=g(U3);$pluginsCache=g(Ge);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);modalData=g(P$1);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=q(!0);installedPlugins=q([]);hasNode24OrAbove=!1;nodeUpdatePolicyControl=new Se(`all`);defaultIcon=`assets/hb-icon.png`;ngOnInit(){this.nodeUpdatePolicyControl.setValue(this.$settings.env.nodeUpdatePolicy||`all`),this.hasNode24OrAbove=(0,Bt.satisfies)(this.nodeVersion,`>=24.0.0`,{includePrerelease:!0}),this.nodeUpdatePolicyControl.valueChanges.pipe(Wf(500),qf()).subscribe(e=>{this.updateNodeUpdatePolicy(e)}),this.initialize()}initialize(){return E(this,null,function*(){yield this.loadInstalledPlugins(),this.loading.set(!1)})}updateNodeUpdatePolicy(e){return E(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 E(this,null,function*(){this.installedPlugins.set([]);try{let t=(yield this.$pluginsCache.get()).map(r=>{let c=r.engines?.node?(0,Bt.satisfies)(this.latestVersion,r.engines.node,{includePrerelease:!0})?`yes`:`no`:`unknown`;return{displayName:r.displayName||r.name,name:r.name,isSupported:c,isSupportedStr:`status.widget.update_node_${c}`,icon:r.icon||this.defaultIcon}}).sort((r,c)=>r.name===`homebridge-config-ui-x`?-1:c.name===`homebridge-config-ui-x`?1:r.name.localeCompare(c.name)),i=(0,Bt.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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Va(0,`div`,0)(1,`div`,1)(2,`h5`,2),Ot(3,`Node.js`),jd(),Va(4,`button`,3),S_(5,`translate`),ac(`click`,function(){return i.dismissModal()}),jd()(),Va(6,`div`,4),Fe(7,qs,2,0,`div`,5)(8,ar,60,60),jd(),Va(9,`div`,6)(10,`div`,7)(11,`button`,8),S_(12,`translate`),ac(`click`,function(){return i.dismissModal()}),Ot(13),S_(14,`translate`),jd()(),Dy(15,`div`,9),Va(16,`div`,10)(17,`a`,11),Ot(18),S_(19,`translate`),Dy(20,`i`,12),jd()()()()),t&2&&(se$1(4),Cr$1(`aria-label`,N_(5,5,`form.button_close`)),se$1(3),Le(i.loading()?7:8),se$1(4),Cr$1(`aria-label`,N_(12,7,`form.button_close`)),se$1(2),kt$1(` `,N_(14,9,`form.button_close`),` `),se$1(5),kt$1(` `,N_(19,11,`form.button_more_info`),` `))},dependencies:[Jn$1,Ye$1,fn$1,Hn$1,mn,v3],encapsulation:2})}return o})();function lr(o,n){o&1&&Dy(0,`i`,12)}function dr(o,n){o&1&&Dy(0,`i`,15)}function cr(o,n){o&1&&Dy(0,`i`,16)}function mr(o,n){if(o&1&&Fe(0,dr,1,0,`i`,15)(1,cr,1,0,`i`,16),o&2)Le(ve(2).dockerInfo().updateAvailable?0:1)}function pr(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function hr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);return Qo$1(ve(3).dockerUpdateModal())}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function gr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),jd(),Fe(2,hr,4,3)),o&2){let e=ve(2);se$1(),Py(e.dockerInfo().currentVersion),se$1(),Le(e.dockerInfo().updateAvailable&&e.isAdmin?2:-1)}}function ur(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(4);return Qo$1(i.installAlternateVersion(i.homebridgePkg()))}),Ot(1,` Homebridge `),jd()}}function fr(o,n){o&1&&Ot(0,` Homebridge `)}function Cr(o,n){if(o&1){let e=sc();Va(0,`button`,22),ac(`click`,function(){Ko$1(e);return Qo$1(ve(4).readyForV2Modal())}),Dy(1,`i`,23),jd()}if(o&2){let e=ve(4);vy(`openDelay`,150),se$1(),Ay(`green-text`,e.isHbV2Ready())(`orange-text`,!e.isHbV2Ready())}}function _r(o,n){if(o&1&&(Fe(0,ur,2,0,`button`,19)(1,fr,1,0),Fe(2,Cr,2,5,`button`,20)),o&2){let e=ve(3);Le(e.isAdmin?0:1),se$1(2),Le(e.isHbV2Loaded()&&!e.isRunningHbV2()&&e.isAdmin?2:-1)}}function br(o,n){o&1&&(Va(0,`span`),Ot(1,`Homebridge`),jd())}function xr(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function vr(o,n){o&1&&(Ot(0,` · `),Va(1,`a`,24),Ot(2),S_(3,`translate`),jd()),o&2&&(se$1(2),kt$1(` `,N_(3,1,`status.homebridge.multiple_installs`),` `))}function wr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(4);return Qo$1(i.updatePackage(i.homebridgePkg()))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function yr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),jd(),Fe(2,vr,4,3),Fe(3,wr,4,3)),o&2){let e=ve(3);se$1(),kt$1(`v`,e.homebridgeVersion),se$1(),Le(e.homebridgePkg().multipleInstances?2:-1),se$1(),Le(e.homebridgePkg().updateAvailable&&e.isAdmin?3:-1)}}function Ir(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.installAlternateVersion(i.homebridgeUiPkg()))}),Ot(1,` Homebridge UI `),jd()}}function Er(o,n){o&1&&(Va(0,`span`),Ot(1,`Homebridge UI`),jd())}function Sr(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function Tr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(4);return Qo$1(i.updatePackage(i.homebridgeUiPkg()))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function Mr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),jd(),Fe(2,Tr,4,3)),o&2){let e=ve(3);se$1(),kt$1(`v`,e.packageVersion),se$1(),Le(e.homebridgeUiPkg().updateAvailable&&e.isAdmin?2:-1)}}function kr(o,n){o&1&&Ot(0,` · npm `)}function Wr(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.nodeVersionModal(i.serverInfo().nodeVersion))}),Ot(1,` Node.js `),jd(),Fe(2,kr,1,0)}if(o&2){let e=ve(3);se$1(2),Le(e.widget().showNpmVersion&&e.nodejsInfo()?.npmVersion?2:-1)}}function $r(o,n){o&1&&(Va(0,`span`),Ot(1,`Node.js`),jd())}function Dr(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function Pr(o,n){if(o&1&&Ot(0),o&2)kt$1(` · `,ve(4).nodejsInfo().npmVersion,` `)}function Rr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(4);return Qo$1(i.nodeVersionModal(i.nodejsInfo().latestVersion))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function Br(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(4);return Qo$1(i.nodeVersionModal(i.serverInfo().nodeVersion))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`status.widget.info.node_unsupp`),` `))}function Lr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),Fe(2,Pr,1,1),jd(),Fe(3,Rr,4,3),Fe(4,Br,4,3)),o&2){let e=ve(3);se$1(),kt$1(``,e.serverInfo().nodeVersion,` `),se$1(),Le(e.widget().showNpmVersion&&e.nodejsInfo().npmVersion?2:-1),se$1(),Le(e.nodejsInfo()?.updateAvailable&&e.isAdmin?3:-1),se$1(),Le(e.nodejsInfo().showNodeUnsupportedWarning&&!e.nodejsInfo().updateAvailable?4:-1)}}function zr(o,n){if(o&1&&(Va(0,`div`,14)(1,`div`,18)(2,`div`,5)(3,`div`,6),Dy(4,`i`,7),jd(),Va(5,`div`,8),Fe(6,_r,3,2)(7,br,2,0,`span`),Dy(8,`br`),Fe(9,xr,3,3,`span`,10)(10,yr,4,3),jd()()(),Va(11,`div`,18)(12,`div`,5)(13,`div`,6),Dy(14,`i`,7),jd(),Va(15,`div`,8),Fe(16,Ir,2,0,`button`,19)(17,Er,2,0,`span`),Dy(18,`br`),Fe(19,Sr,3,3,`span`,10)(20,Mr,3,2),jd()()(),Va(21,`div`,18)(22,`div`,5)(23,`div`,6),Dy(24,`i`,7),jd(),Va(25,`div`,8),Fe(26,Wr,3,1)(27,$r,2,0,`span`),Dy(28,`br`),Fe(29,Dr,3,3,`span`,10)(30,Lr,5,4),jd()()()()),o&2){let e=ve(2);se$1(4),Jt$1(`fas fa-lg ${e.getHomebridgeIconClass()}`),se$1(2),Le(e.homebridgePkg().installedVersion?6:7),se$1(3),Le(e.homebridgePkg().installedVersion?10:9),se$1(5),Jt$1(`fas fa-lg ${e.getHomebridgeUiIconClass()}`),se$1(2),Le(e.homebridgeUiPkg().installedVersion&&e.isAdmin?16:17),se$1(3),Le(e.homebridgeUiPkg().installedVersion?20:19),se$1(5),Jt$1(`fas fa-lg ${e.getNodejsIconClass()}`),se$1(2),Le(e.nodejsStatusDone()&&e.serverInfo()?26:27),se$1(3),Le(!e.nodejsStatusDone()||!e.serverInfo()?29:30)}}function Vr(o,n){if(o&1){let e=sc();Va(0,`div`,3)(1,`div`,11),ac(`click`,function(){Ko$1(e);return Qo$1(ve().toggleDockerExpand())})(`keydown.enter`,function(){Ko$1(e);return Qo$1(ve().toggleDockerExpand())})(`keydown.space`,function(i){Ko$1(e);let r=ve();return i.preventDefault(),Qo$1(r.toggleDockerExpand())}),Va(2,`div`,6),Fe(3,lr,1,0,`i`,12)(4,mr,2,1),jd(),Va(5,`div`,8),Ot(6,` Docker-Homebridge `),Dy(7,`i`,13)(8,`br`),Fe(9,pr,3,3,`span`,10)(10,gr,3,2),jd()(),Fe(11,zr,31,12,`div`,14),jd()}if(o&2){let e=ve();se$1(),Cr$1(`aria-expanded`,e.widget().dockerExpanded?`true`:`false`)(`aria-controls`,`dockerExpandPanel`),se$1(2),Le(e.dockerStatusDone()?4:3),se$1(4),Ay(`fa-rotate-180`,!e.widget().dockerExpanded),se$1(2),Le(e.dockerStatusDone()?10:9),se$1(2),Le(e.widget().dockerExpanded?11:-1)}}function Or(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.installAlternateVersion(i.homebridgePkg()))}),Ot(1,` Homebridge `),jd()}}function Hr(o,n){o&1&&Ot(0,` Homebridge `)}function Nr(o,n){if(o&1){let e=sc();Va(0,`button`,22),ac(`click`,function(){Ko$1(e);return Qo$1(ve(3).readyForV2Modal())}),Dy(1,`i`,23),jd()}if(o&2){let e=ve(3);vy(`openDelay`,150),se$1(),Ay(`green-text`,e.isHbV2Ready())(`orange-text`,!e.isHbV2Ready())}}function Ur(o,n){if(o&1&&(Fe(0,Or,2,0,`button`,19)(1,Hr,1,0),Fe(2,Nr,2,5,`button`,20)),o&2){let e=ve(2);Le(e.isAdmin?0:1),se$1(2),Le(e.isHbV2Loaded()&&!e.isRunningHbV2()&&e.isAdmin&&e.homebridgeUpdatePolicy!==`none`&&e.homebridgeUpdatePolicy!==`major`?2:-1)}}function Fr(o,n){o&1&&(Va(0,`span`),Ot(1,`Homebridge`),jd())}function Ar(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function jr(o,n){o&1&&(Ot(0,` · `),Va(1,`a`,24),Ot(2),S_(3,`translate`),jd()),o&2&&(se$1(2),kt$1(` `,N_(3,1,`status.homebridge.multiple_installs`),` `))}function qr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.updatePackage(i.homebridgePkg()))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function Xr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),jd(),Fe(2,jr,4,3),Fe(3,qr,4,3)),o&2){let e=ve(2);se$1(),kt$1(`v`,e.homebridgeVersion),se$1(),Le(e.homebridgePkg().multipleInstances?2:-1),se$1(),Le(e.homebridgePkg().updateAvailable&&e.isAdmin?3:-1)}}function Gr(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(2);return Qo$1(i.installAlternateVersion(i.homebridgeUiPkg()))}),Ot(1,` Homebridge UI `),jd()}}function Yr(o,n){o&1&&(Va(0,`span`),Ot(1,`Homebridge UI`),jd())}function Qr(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function Jr(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.updatePackage(i.homebridgeUiPkg()))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function Kr(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),jd(),Fe(2,Jr,4,3)),o&2){let e=ve(2);se$1(),kt$1(`v`,e.packageVersion),se$1(),Le(e.homebridgeUiPkg().updateAvailable&&e.isAdmin?2:-1)}}function Zr(o,n){if(o&1&&(Va(0,`div`,4)(1,`div`,5)(2,`div`,6),Dy(3,`i`,7),jd(),Va(4,`div`,8),Fe(5,Ur,3,2)(6,Fr,2,0,`span`),Dy(7,`br`),Fe(8,Ar,3,3,`span`,10)(9,Xr,4,3),jd()()(),Va(10,`div`,4)(11,`div`,5)(12,`div`,6),Dy(13,`i`,7),jd(),Va(14,`div`,8),Fe(15,Gr,2,0,`button`,19)(16,Yr,2,0,`span`),Dy(17,`br`),Fe(18,Qr,3,3,`span`,10)(19,Kr,3,2),jd()()()),o&2){let e=ve();se$1(3),Jt$1(`fas fa-lg ${e.getHomebridgeIconClass()}`),se$1(2),Le(e.homebridgePkg().installedVersion?5:6),se$1(3),Le(e.homebridgePkg().installedVersion?9:8),se$1(5),Jt$1(`fas fa-lg ${e.getHomebridgeUiIconClass()}`),se$1(2),Le(e.homebridgeUiPkg().installedVersion&&e.isAdmin?15:16),se$1(3),Le(e.homebridgeUiPkg().installedVersion?19:18)}}function ea(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function ta(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.up_to_date`)))}function ia(o,n){o&1&&(Va(0,`a`,25),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`plugins.button_update`)))}function na(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`plugins.button_update`)))}function oa(o,n){if(o&1&&Fe(0,ia,3,3,`a`,25)(1,na,3,3,`span`,10),o&2)Le(ve(2).isAdmin?0:1)}function sa(o,n){if(o&1&&Fe(0,ta,3,3,`span`,10)(1,oa,2,1),o&2)Le(ve().homebridgePluginStatus().length?1:0)}function ra(o,n){o&1&&Ot(0,` · npm `)}function aa(o,n){if(o&1){let e=sc();Va(0,`button`,21),ac(`click`,function(){Ko$1(e);let i=ve(2);return Qo$1(i.nodeVersionModal(i.serverInfo().nodeVersion))}),Ot(1,` Node.js `),jd(),Fe(2,ra,1,0)}if(o&2){let e=ve(2);se$1(2),Le(e.widget().showNpmVersion&&e.nodejsInfo()?.npmVersion?2:-1)}}function la(o,n){o&1&&(Va(0,`span`),Ot(1,`Node.js`),jd())}function da(o,n){o&1&&(Va(0,`span`,10),Ot(1),S_(2,`translate`),jd()),o&2&&(se$1(),Py(N_(2,1,`status.homebridge.checking`)))}function ca(o,n){if(o&1&&Ot(0),o&2)kt$1(` · `,ve(3).nodejsInfo().npmVersion,` `)}function ma(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.nodeVersionModal(i.nodejsInfo().latestVersion))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`plugins.button_update`),` `))}function pa(o,n){if(o&1){let e=sc();Ot(0,` · `),Va(1,`button`,17),ac(`click`,function(){Ko$1(e);let i=ve(3);return Qo$1(i.nodeVersionModal(i.serverInfo().nodeVersion))}),Ot(2),S_(3,`translate`),jd()}o&2&&(se$1(2),kt$1(` `,N_(3,1,`status.widget.info.node_unsupp`),` `))}function ha(o,n){if(o&1&&(Va(0,`span`,10),Ot(1),Fe(2,ca,1,1),jd(),Fe(3,ma,4,3),Fe(4,pa,4,3)),o&2){let e=ve(2);se$1(),kt$1(``,e.serverInfo().nodeVersion,` `),se$1(),Le(e.widget().showNpmVersion&&e.nodejsInfo().npmVersion?2:-1),se$1(),Le(e.nodejsInfo()?.updateAvailable&&e.isAdmin?3:-1),se$1(),Le(e.nodejsInfo().showNodeUnsupportedWarning&&!e.nodejsInfo().updateAvailable?4:-1)}}function ga(o,n){if(o&1&&(Va(0,`div`,4)(1,`div`,5)(2,`div`,6),Dy(3,`i`,7),jd(),Va(4,`div`,8),Fe(5,aa,3,1)(6,la,2,0,`span`),Dy(7,`br`),Fe(8,da,3,3,`span`,10)(9,ha,5,4),jd()()()),o&2){let e=ve();se$1(3),Jt$1(`fas fa-lg ${e.getNodejsIconClass()}`),se$1(2),Le(e.nodejsStatusDone()&&e.serverInfo()?5:6),se$1(3),Le(!e.nodejsStatusDone()||!e.serverInfo()?8:9)}}var Tn=(()=>{class o{destroyRef=g(Z);injector=g(Te);$auth=g(he$1);$errors=g(m);$modal=g(si);$plugin=g(Ie);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);$ws=g(ds$1);widget=i$.required();homebridgePkg=q({});homebridgeUiPkg=q({});homebridgePluginStatus=q([]);homebridgePluginStatusDone=q(!1);nodejsInfo=q(null);nodejsStatusDone=q(!1);serverInfo=q(null);isRunningHbV2=q(!1);isHbV2Loaded=q(!1);isHbV2Ready=q(!1);dockerStatusDone=q(!1);dockerInfo=q({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(An$1(this.destroyRef)).subscribe(()=>{queueMicrotask(()=>this.loadAllData())})}loadAllData(){return E(this,null,function*(){let e;try{e=yield Ln(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.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`,Co$1.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=uy([{provide:P$1,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:()=>E(this,null,function*(){yield this.getNodeInfo()})}}],this.injector);this.$modal.open(Sn,{size:`lg`,backdrop:`static`,injector:t})}readyForV2Modal(){let e=uy([{provide:g$1,useValue:{isUpdating:!1,skipIfCompatible:!1}}],this.injector);this.$modal.open(nn$1,{size:`lg`,backdrop:`static`,injector:e})}installAlternateVersion(e){let t=()=>E(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.homebridgePkg().multipleInstances?`fa-exclamation-circle orange-text`: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 E(this,null,function*(){try{let e=yield Ln(this.io.request(`homebridge-version-check`));e.displayName=`Homebridge`,this.homebridgePkg.set(e),this.$settings.env.homebridgeVersion=e.installedVersion,this.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 E(this,null,function*(){try{this.serverInfo.set(yield Ln(this.io.request(`get-homebridge-server-info`)));let e=yield Ln(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 E(this,null,function*(){try{let e=yield Ln(this.io.request(`homebridge-ui-version-check`));this.$settings.env.homebridgeUiVersion=e.installedVersion,this.homebridgeUiUpdatePolicy=this.$settings.env.homebridgeUiUpdatePolicy||`all`,Co$1.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=uy([{provide:D$1,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(J$1,{size:`lg`,backdrop:`static`,injector:t})}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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`],[`href`,`https://homebridge.io/w/JJSgm`,`target`,`_blank`,`rel`,`noopener noreferrer`,1,`orange-text`,`small`,`text-decoration-none`],[`routerLink`,`/plugins`,1,`primary-text`,`small`]],template:function(t,i){t&1&&(Va(0,`div`,0)(1,`div`,1),Ot(2),S_(3,`translate`),jd(),Va(4,`div`,2),Fe(5,Vr,12,7,`div`,3)(6,Zr,20,8),Va(7,`div`,4)(8,`div`,5)(9,`div`,6),Dy(10,`i`,7),jd(),Va(11,`div`,8)(12,`a`,9),Ot(13),S_(14,`translate`),jd(),Dy(15,`br`),Fe(16,ea,3,3,`span`,10)(17,sa,2,1),jd()()(),Fe(18,ga,10,4,`div`,4),jd()()),t&2&&(se$1(2),Py(N_(3,7,`status.services.updates`)),se$1(3),Le(i.runningInDocker?5:6),se$1(5),Jt$1(`fas fa-lg ${i.getPluginsIconClass()}`),se$1(3),kt$1(` `,N_(14,9,`menu.label_plugins`),` `),se$1(3),Le(i.homebridgePluginStatusDone()?17:16),se$1(2),Le(i.runningInDocker?-1:18))},dependencies:[Dt$1,Y,v3],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)}`]})}return o})();function ua(o,n){if(o&1&&Ot(0),o&2)kt$1(` `,ve().serverUptime(),` `)}function fa(o,n){o&1&&br$1(0,`i`,6)}function Ca(o,n){if(o&1&&Ot(0),o&2)kt$1(` `,ve().processUptime(),` `)}function _a(o,n){o&1&&br$1(0,`i`,6)}var Mn=(()=>{class o{destroyRef=g(Z);$ws=g(ds$1);widget=i$.required();serverUptime=q(``);processUptime=q(``);io;ngOnInit(){this.io=this.$ws.getExistingNamespace(`status`),this.io.connected.pipe(An$1(this.destroyRef)).subscribe(()=>{this.getServerUptimeInfo()}),FD(11e3).pipe(An$1(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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({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&&(Pe(0,`div`,0)(1,`div`,1),Ot(2),S_(3,`translate`),Je$1(),Pe(4,`div`,2)(5,`div`,3)(6,`div`,4)(7,`div`,5),Fe(8,ua,1,1)(9,fa,1,0,`i`,6),Je$1(),Pe(10,`div`,7),Ot(11),S_(12,`translate`),Je$1()(),Pe(13,`div`,4)(14,`div`,5),Fe(15,Ca,1,1)(16,_a,1,0,`i`,6),Je$1(),Pe(17,`div`,7),Ot(18),S_(19,`translate`),Je$1()()()()()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),kt$1(` `,N_(3,7,`status.uptime.title_uptime`),` `),se$1(6),Le(i.serverUptime()?8:9),se$1(3),Py(N_(12,9,`status.widget.uptime.label_server`)),se$1(4),Le(i.processUptime()?15:16),se$1(3),Py(N_(19,11,`status.widget.uptime.label_process`)))},dependencies:[v3],encapsulation:2})}return o})();var Kt=D(bt(),1);function ba(o,n){o&1&&(Pe(0,`div`,2)(1,`div`,4)(2,`h1`),br$1(3,`i`,5),Je$1(),Pe(4,`p`,6),Ot(5),S_(6,`translate`),Je$1()()()),o&2&&(se$1(5),Py(N_(6,1,`status.widget.weather.label_config_required_help`)))}function xa(o,n){if(o&1&&(Pe(0,`div`,3)(1,`div`,7)(2,`div`,8)(3,`h1`),br$1(4,`i`),Je$1(),Pe(5,`h3`),Ot(6),S_(7,`titlecase`),Je$1(),Pe(8,`h2`),Ot(9),S_(10,`convertTemp`),S_(11,`number`),S_(12,`uppercase`),Je$1()()()()),o&2){let e=ve();se$1(4),Jt$1(`primary-text ${e.getWeatherIconClass()}`),se$1(2),Py(N_(7,5,e.currentWeather().weather[0].description)),se$1(3),jy(` `,x_(11,9,N_(10,7,e.currentWeather().main.temp),`1.0-0`),`°`,N_(12,12,e.temperatureUnits),` `)}}function va(o,n){o&1&&(Pe(0,`div`,2)(1,`div`,4)(2,`h1`),br$1(3,`i`,9),Je$1()()())}var wa=20;var kn=(()=>{class o{destroyRef=g(Z);$settings=g(zt);$translate=g(Nf);$ws=g(ds$1);widget=i$.required();refreshTrigger=q(0);cachedWeather=q(null);weather=A8(()=>{this.refreshTrigger();let e=this.widget().location;if(e?.id&&!this.readFreshCache(e.id))return{url:`https://api.openweathermap.org/data/2.5/weather`,params:{id:e.id,appid:Co$1.owm.appid,units:`metric`,lang:this.$translate.getCurrentLang()??`en`}}});currentWeather=J(()=>this.weather.value()??this.cachedWeather());io;temperatureUnits=this.$settings.env.temperatureUnits;configureEvent;constructor(){ii(()=>{let e=this.weather.value();if(!e)return;let t=oe(()=>this.widget().location?.id);if(!t)return;let i=x(w({},e),{timestamp:new Date().toISOString()});this.cachedWeather.set(i),localStorage.setItem(`weather-${t}`,JSON.stringify(i))})}ngOnInit(){let e=this.widget().location?.id;if(e){let t=this.readFreshCache(e);t&&this.cachedWeather.set(t)}this.io=this.$ws.getExistingNamespace(`status`),this.io.connected.pipe(An$1(this.destroyRef)).subscribe(()=>this.refresh()),this.configureEvent?.pipe(An$1(this.destroyRef)).subscribe(()=>this.refresh()),FD(13e5).pipe(An$1(this.destroyRef)).subscribe(()=>this.refresh())}refresh(){this.refreshTrigger.update(e=>e+1)}readFreshCache(e){try{let t=localStorage.getItem(`weather-${e}`);if(t){let i=JSON.parse(t);if(i.timestamp&&(0,Kt.default)().diff((0,Kt.default)(i.timestamp),`minute`)<wa)return i}}catch(t){}return null}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`}}static ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-weather-widget`]],inputs:{widget:[1,`widget`]},decls:7,vars:7,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`],[1,`fas`,`fa-circle-notch`,`fa-spin`]],template:function(t,i){t&1&&(Pe(0,`div`,0)(1,`div`,1),Ot(2),S_(3,`translate`),Je$1(),Fe(4,ba,7,3,`div`,2)(5,xa,13,14,`div`,3)(6,va,4,0,`div`,2),Je$1()),t&2&&(se$1(),Ay(`widget-cursor`,i.widget().draggable),se$1(),jy(` `,i.currentWeather()?.name,` `,N_(3,5,`status.widget.weather.title_weather`),` `),se$1(2),Le(i.widget().location?.id?i.currentWeather()?5:6:4))},dependencies:[YS,US,v3,Re,zS],encapsulation:2})}return o})();var Wn=[`UpdateInfoWidgetComponent`,`WeatherWidgetComponent`,`ClockWidgetComponent`,`CpuWidgetComponent`,`MemoryWidgetComponent`,`NetworkWidgetComponent`,`HomebridgeLogsWidgetComponent`];var $n=[`HapQrcodeWidgetComponent`,`HomebridgeLogsWidgetComponent`,`TerminalWidgetComponent`,`CpuWidgetComponent`,`NetworkWidgetComponent`,`MemoryWidgetComponent`,`UptimeWidgetComponent`,`UpdateInfoWidgetComponent`,`SystemInfoWidgetComponent`,`WeatherWidgetComponent`,`AccessoriesWidgetComponent`,`ClockWidgetComponent`,`BridgesWidgetComponent`,`MatterQrcodeWidgetComponent`];var Dn=(()=>{class o{appRef=g(Qt$1);el=g(Xe);environmentInjector=g(Te);injector=g(Q);componentRef;availableWidgets={HapQrcodeWidgetComponent:bn,MatterQrcodeWidgetComponent:vn,HomebridgeLogsWidgetComponent:xn,TerminalWidgetComponent:En,CpuWidgetComponent:_n,NetworkWidgetComponent:yn,MemoryWidgetComponent:wn,UptimeWidgetComponent:Mn,UpdateInfoWidgetComponent:Tn,SystemInfoWidgetComponent:In,WeatherWidgetComponent:kn,AccessoriesWidgetComponent:gn,ClockWidgetComponent:Cn,BridgesWidgetComponent:fn};widget=i$.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=hv(e,{environmentInjector:this.environmentInjector,elementInjector: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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-widgets`]],inputs:{widget:[1,`widget`]},decls:0,vars:0,template:function(t,i){},encapsulation:2})}return o})();function Ia(o,n){if(o&1){let e=sc();Va(0,`button`,22),S_(1,`translate`),S_(2,`translate`),ac(`click`,function(){Ko$1(e);return Qo$1(ve(2).addWidget())}),Dy(3,`i`,23),jd()}if(o&2)vy(`disabled`,ve(2).reorderMode())(`openDelay`,150)(`ngbTooltip`,N_(1,4,`status.widget.show_hide`)),Cr$1(`aria-label`,N_(2,6,`status.widget.show_hide`))}function Ea(o,n){if(o&1){let e=sc();Va(0,`button`,24,0),S_(2,`translate`),S_(3,`translate`),ac(`click`,function(){Ko$1(e);let i=UT(1),r=ve(2);return i.close(),Qo$1(r.toggleReorderMode())}),Dy(4,`i`,25),jd()}if(o&2){let e=ve(2);vy(`openDelay`,150)(`ngbTooltip`,N_(2,6,e.reorderMode()?`status.reorder.exit_button`:`status.reorder.enter_button`)),Cr$1(`aria-label`,N_(3,8,e.reorderMode()?`status.reorder.exit_button`:`status.reorder.enter_button_label`))(`aria-pressed`,e.reorderMode()),se$1(4),Jt$1(`fas fa-arrow-down-up-across-line${e.reorderMode()?` primary-text`:``}`)}}function Sa(o,n){if(o&1){let e=sc();Va(0,`div`,5)(1,`div`,14),Fe(2,Ia,4,8,`button`,15),Fe(3,Ea,5,10,`button`,16),jd(),Va(4,`div`,17)(5,`button`,18),S_(6,`translate`),S_(7,`translate`),ac(`click`,function(){Ko$1(e);return Qo$1(ve().unlockLayout())}),Dy(8,`i`,19),jd(),Va(9,`button`,20),S_(10,`translate`),S_(11,`translate`),ac(`click`,function(){Ko$1(e);return Qo$1(ve().lockLayout())}),Dy(12,`i`,21),jd()()()}if(o&2){let e=ve();se$1(2),Le(e.options.draggable.enabled||e.page().showWidgetConfigure?2:-1),se$1(),Le(e.options.draggable.enabled||e.page().showWidgetConfigure||e.reorderMode()?3:-1),se$1(2),vy(`disabled`,e.options.draggable.enabled)(`openDelay`,150)(`ngbTooltip`,N_(6,10,`form.button_unlock`)),Cr$1(`aria-label`,N_(7,12,`form.button_unlock`)),se$1(4),vy(`disabled`,!e.options.draggable.enabled)(`openDelay`,150)(`ngbTooltip`,N_(10,14,`form.button_lock`)),Cr$1(`aria-label`,N_(11,16,`form.button_lock`))}}function Ta(o,n){o&1&&Dy(0,`app-spinner`)}function Ma(o,n){if(o&1){let e=sc();Va(0,`li`,33),ac(`focus`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(3).setSelectedReorderComponent(i))})(`keydown`,function(i){Ko$1(e);return Qo$1(ve(3).onReorderKeydown(i))}),Va(1,`span`,34),Ot(2),jd(),Va(3,`span`,35)(4,`button`,36),ac(`click`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(3).moveComponent(i,-1))}),Dy(5,`i`,37),jd(),Va(6,`button`,36),ac(`click`,function(){let i=Ko$1(e).$implicit;return Qo$1(ve(3).moveComponent(i,1))}),Dy(7,`i`,38),jd()()()}if(o&2){let e=n.$implicit,t=n.$index,i=n.$count,r=ve(3);vy(`id`,`reorder-item-${e}`),Cr$1(`tabindex`,e===r.selectedReorderComponent()?`0`:`-1`)(`aria-selected`,e===r.selectedReorderComponent())(`aria-label`,r.getReorderItemAriaLabel(e))(`aria-describedby`,r.showReorderHelp()&&e===r.selectedReorderComponent()?`reorder-instructions`:null),se$1(2),Py(r.getWidgetDisplayName(e)),se$1(2),vy(`disabled`,t===0),se$1(2),vy(`disabled`,t===i-1)}}function ka(o,n){if(o&1&&(Va(0,`div`,26)(1,`div`,28)(2,`span`,29),Ot(3),S_(4,`translate`),jd()(),Va(5,`ul`,30),S_(6,`translate`),_T(7,Ma,8,8,`li`,31,TT),jd(),Va(9,`span`,32),Ot(10),S_(11,`translate`),jd()()),o&2){let e=ve(2);se$1(3),Py(N_(4,3,`common.labels.beta`)),se$1(2),Cr$1(`aria-label`,N_(6,5,`status.reorder.listbox_label`)),se$1(2),ST(e.reorderComponents),se$1(3),Py(N_(11,7,`status.reorder.help`))}}function Wa(o,n){if(o&1){let e=sc();Va(0,`button`,43),ac(`click`,function(){Ko$1(e);let i=ve(2).$implicit;return Qo$1(ve(2).manageWidget(i))}),Dy(1,`i`,44),jd()}if(o&2){let e=ve(2).$implicit;Cr$1(`aria-label`,ve(2).getWidgetSettingsAriaLabel(e))}}function $a(o,n){if(o&1&&(Va(0,`gridster-item`,39)(1,`div`,40),Fe(2,Wa,2,1,`button`,41),jd(),Dy(3,`app-widgets`,42),jd()),o&2){let e=ve().$implicit,t=ve(2);vy(`item`,e)(`id`,e.component),se$1(2),Le((t.options.draggable.enabled||t.page().showWidgetConfigure)&&t.widgetsWithSettings.includes(e.component)&&!t.reorderMode()?2:-1),se$1(),vy(`widget`,e)}}function Da(o,n){if(o&1&&Fe(0,$a,4,4,`gridster-item`,39),o&2){let e=n.$implicit,t=ve(2);Le(!(e.hideOnMobile&&t.page().mobile)&&!(e.hideOnDesktop&&!t.page().mobile)?0:-1)}}function Pa(o,n){if(o&1&&(Fe(0,ka,12,9,`div`,26),Va(1,`gridster`,27),_T(2,Da,1,1,null,null,TT),jd()),o&2){let e=ve();Le(e.reorderMode()&&e.isAdmin?0:-1),se$1(),vy(`options`,e.options)(`hidden`,e.consoleStatus()===`down`||e.reorderMode()),se$1(),ST(e.dashboard())}}var Sp=(()=>{class o{destroyRef=g(Z);injector=g(Te);$auth=g(he$1);$modal=g(si);$navigationGuard=g(b);$notification=g(j);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);$ws=g(ds$1);isUnlocked=q(!1);io;initialLayoutLoaded=!1;isAdmin=this.$auth.user.admin;isMatterSupported=this.$settings.isFeatureEnabled(`matterSupport`);saveWidgetsEvent=new P;options;dashboard=q([]);consoleStatus=q(`down`);currentYear;page=q({mobile:window.innerWidth<1024,showWidgetConfigure:window.innerWidth<576});widgetsWithSettings=Wn;reorderMode=q(!1);selectedReorderComponent=q(null);actionLiveMessage=q(``);showReorderHelp=q(!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`},this.io.connected.pipe(An$1(this.destroyRef)).subscribe(()=>{this.consoleStatus.set(`up`),this.io.socket.emit(`monitor-server-status`),this.initialLayoutLoaded?this.refreshRpiThrottledStatus():this.loadDashboardInit()}),this.io.socket.on(`disconnect`,()=>{this.consoleStatus.set(`down`)}),this.io.socket.on(`homebridge-status`,e=>{e.packageVersion&&e.packageVersion!==this.$settings.uiVersion&&window.location.reload()}),this.saveWidgetsEvent.pipe(An$1(this.destroyRef)).subscribe({next:()=>{this.gridChangedEvent()}})}lockLayout(){this.reorderMode()&&this.exitReorderMode(!0,!1),this.options=x(w({},this.options),{draggable:{enabled:!1},resizable:{enabled:!1}}),this.isUnlocked.set(!1),this.setLayout(this.dashboard())}unlockLayout(){this.options=x(w({},this.options),{draggable:{enabled:!0},resizable:{enabled:!0}}),this.isUnlocked.set(!0),this.setLayout(this.dashboard())}addWidget(){return E(this,null,function*(){let e=uy([{provide:x$1,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(hn,{size:`lg`,backdrop:`static`,injector:e});try{let i=yield t.result,r=[...this.dashboard()];for(let c of i){let g=r.findIndex(S=>S.component===c.component),T=c.showOnDesktop||c.showOnMobile;if(T&&g===-1){let S=r.reduce((P,Y)=>Math.max(P,(Y.y??0)+(Y.rows??0)),0);r.push({x:0,y:S,component:c.component,cols:c.cols,rows:c.rows,mobileOrder:c.mobileOrder,hideOnDesktop:c.hideOnDesktop,hideOnMobile:c.hideOnMobile,$resizeEvent:new P,$configureEvent:new P,$saveWidgetsEvent:this.saveWidgetsEvent,draggable:this.options.draggable.enabled})}else!T&&g>-1?r.splice(g,1):T&&g>-1&&(r[g]=x(w({},r[g]),{hideOnDesktop:c.hideOnDesktop,hideOnMobile:c.hideOnMobile,$resizeEvent:r[g].$resizeEvent,$configureEvent:r[g].$configureEvent,$saveWidgetsEvent:r[g].$saveWidgetsEvent}))}this.dashboard.set(r),this.gridChangedEvent()}catch(i){}})}manageWidget(e){return E(this,null,function*(){let t=uy([{provide:N$1,useValue:{widget:e}}],this.injector),i=this.$modal.open(pn,{size:`lg`,backdrop:`static`,injector:t});try{yield i.result;let r=this.dashboard(),c=r.findIndex(g=>g.component===e.component);if(c>-1){let g=[...r];g[c]=x(w({},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(r){}})}openCreditsModal(){this.$modal.open(cn,{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,r=i.indexOf(e)+1,c=i.length||1;return this.$translate.instant(`status.reorder.item_label`,{name:t,position:r,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(),r=i&&t.includes(i)?t.indexOf(i):0,g=t[e?(r-1+t.length)%t.length:(r+1)%t.length];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 r=i.indexOf(e)+t;return r<0||r>=i.length?!1:(this.selectedReorderComponent.set(e),this.reorderTo(e,r),this.speakAction(this.$translate.instant(`status.reorder.moved`,{name:this.getWidgetDisplayName(e),position:r+1,total:i.length})),!0)}moveSelectedToEdge(e){let t=this.reorderComponents,i=this.selectedReorderComponent();if(!i||!t.includes(i))return;let r=e===`top`?0:t.length-1;this.reorderTo(i,r);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:r+1,total:t.length})),setTimeout(()=>this.focusReorderItem(i),0)}reorderTo(e,t){let i=[...this.dashboard()],r=i.findIndex(g=>g?.component===e);if(r<0)return;let[c]=i.splice(r,1);i.splice(t,0,c),i.forEach((g,T)=>{g.mobileOrder=T}),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}${``.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??[]),this.initialLayoutLoaded=!0},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||!$n.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=>x(w({},t),{$resizeEvent:t.$resizeEvent||new P,$configureEvent:t.$configureEvent||new P,$saveWidgetsEvent:this.saveWidgetsEvent,draggable:this.options.draggable.enabled})))}resetLayout(){let e=[...Pn()];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 E(this,null,function*(){let e=[...this.dashboard()];e.sort((i,r)=>i.mobileOrder-r.mobileOrder),this.dashboard.set(e);let t=e.map(i=>{let S=i,{$resizeEvent:r,$configureEvent:c,$saveWidgetsEvent:g}=S;return A(S,[`$resizeEvent`,`$configureEvent`,`$saveWidgetsEvent`])});try{yield Ln(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 ɵfac=function(t){return new(t||o)};static ɵcmp=nc({type:o,selectors:[[`app-status`]],hostBindings:function(t,i){t&1&&ac(`beforeunload`,function(c){return i.onBeforeUnload(c)},_w)},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&&(Va(0,`div`,1),Ot(1),jd(),Va(2,`div`,2)(3,`div`,3)(4,`h3`,4),Ot(5),S_(6,`translate`),jd()(),Fe(7,Sa,13,18,`div`,5),jd(),Va(8,`div`,6),Fe(9,Ta,1,0,`app-spinner`),Va(10,`div`,7),Fe(11,Pa,4,3),jd(),Va(12,`div`,8)(13,`div`,9)(14,`small`),Ot(15),Va(16,`a`,10),Ot(17,` Homebridge `),jd(),Ot(18,` · `),Va(19,`a`,11),Ot(20,` Homebridge UI `),jd(),Ot(21,` · `),Va(22,`button`,12),S_(23,`translate`),ac(`click`,function(){return i.openCreditsModal()}),Dy(24,`i`,13),jd()()()()()),t&2&&(se$1(),Py(i.actionLiveMessage()),se$1(4),Py(N_(6,7,`menu.label_status`)),se$1(2),Le(i.consoleStatus()===`up`&&i.isAdmin?7:-1),se$1(2),Le(i.consoleStatus()===`down`?9:-1),se$1(2),Le(i.dashboard().length?11:-1),se$1(4),kt$1(` © `,i.currentYear,` · `),se$1(7),Cr$1(`aria-label`,N_(23,9,`status.credits.title`)))},dependencies:[Y,P$2,$t,dn,Dn,v3],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}`]})}return o})();export{Sp as StatusComponent};