@mxtommy/kip 3.8.2 → 3.9.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,237 +0,0 @@
1
- import{A as dc,B as cc,C as _a,D as pn,E as Gt,F as wa,G as Sa,H as Ca,I as Qr,J as Zr,K as hc,L as ka,M as xa,a as dt,b as hn,c as un,d as qr,e as On,f as Ja,g as Di,h as mn,i as hi,j as jr,k as $r,l as ya,m as In,n as Yr,o as Xr,p as Pi,q as bs,r as Kr,s as er,t as lc,u as _s,v as ws,w as Ss,x as Cs,y as ba,z as tr}from"./chunk-NS2FPVWM.js";import{b as fc,g as gc}from"./chunk-SIMUFQFG.js";import{a as ft,b as ec,c as Hr,d as ga,e as va,f as tc,g as ic,h as nc,i as ac,j as rc,k as oc,l as sc,m as Ur,n as Gr}from"./chunk-GQ3O7IYU.js";import"./chunk-PKNLASTF.js";import{a as Hi}from"./chunk-VYUMZVH2.js";import{a as uc,b as mc,c as pc}from"./chunk-KTDDP73O.js";import{d as ni}from"./chunk-CBUY7NMR.js";import"./chunk-JY3WVS7C.js";import"./chunk-ZBCOJLI4.js";import{a as vd,b as yd,c as bd,d as _d,e as wd,f as Sd,g as ca,h as Cd,i as kd,j as ln,l as xd,m as Td,n as Ed,o as Dd,p as Ut,q as Ct}from"./chunk-SMXTNO74.js";import{f as $d}from"./chunk-3LEMFOCV.js";import{a as Ht}from"./chunk-7VNHJHIE.js";import{a as Jd}from"./chunk-2YVW3TBK.js";import{D as Kd,Q as Qd,Z as Zd,a as Bi,b as hd,c as ud,d as da,e as Nr,g as Si,h as Wr,i as ii,j as ci,k as ha,l as re,m as ua,n as dn,o as Md,p as cn,r as Yd,w as Xd}from"./chunk-TA4GACKT.js";import{$ as ds,$b as Y,$c as sn,$d as Pd,$e as Gd,A as li,Aa as N,Ab as me,Ac as Je,Ad as ld,Ba as pe,Bc as _t,Ca as mt,Cb as Pr,Cc as td,Cd as dd,Da as tn,Db as Ql,Dd as cd,De as zd,Ea as nn,Ec as xe,Fa as Li,Fb as Tt,Fc as Te,Fe as Pt,Gb as at,Gc as Ee,Ge as Br,H as zl,Hb as an,Hc as id,I as os,Ic as nd,Ie as Lt,J as xr,Ja as le,Jc as ad,Je as gs,K as Fl,Kc as on,Kd as md,Ke as Fd,L as ta,Ld as pd,Le as Bd,Mc as sa,Md as fd,Na as ra,Nd as gd,Oa as oa,Ob as Zl,Oe as vs,P as Tr,Pd as Wt,Qa as et,Qc as zi,Qd as ti,R as Bl,Ra as ql,Rb as ue,Rc as Ir,S as ss,Sb as ze,Sc as la,T as ls,Tb as Fe,Ub as rn,Uc as ps,Ue as Hd,V as Hl,Ve as fa,W as Ul,Wa as us,Wb as bi,Wc as lt,Wd as ma,We as Ud,Xb as _i,Xc as St,Xe as ys,Yb as G,Yc as de,Yd as fs,Zb as g,_b as C,a as ee,aa as ia,ac as L,ad as U,b as ht,bc as H,bd as se,be as Ad,c as Ll,cc as ne,ce as Od,d as ns,dc as Ar,dd as Dn,df as qd,e as Qa,ec as Or,ed as Fi,ee as Lr,ef as jd,f as ea,fa as cs,g as Cr,gc as J,ha as di,hb as Er,he as Vr,ia as hs,ib as Mr,ic as W,id as Rr,ie as Id,jc as Za,je as Rd,kb as jl,kc as X,ke as Nd,la as nt,lb as x,lc as wi,ld as rd,le as zr,m as xt,mc as Nt,me as Wd,nb as $l,nc as En,o as en,oa as wt,ob as Yl,oc as Mi,pa as vi,pb as Dr,pc as zt,qb as ei,qc as Ft,ra as na,re as Ld,sa as aa,sb as ms,sc as oe,se as Vd,t as Vl,ta as D,tb as Xl,tc as Re,te as pa,u as as,uc as Jl,ud as od,va as Gl,vc as _e,ve as Fr,wb as q,wc as Bt,we as Pn,x as kr,xb as yi,xc as ed,xd as sd,xe as An,yb as Vi,yc as Mn,z as rs,za as R,zb as Kl,zc as w}from"./chunk-35L7BBBD.js";var Ps=ns(ro=>{(function(){"use strict";var a=function(){this.init()};a.prototype={init:function(){var l=this||n;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var c=this||n;if(l=parseFloat(l),c.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(c._volume=l,c._muted)return c;c.usingWebAudio&&c.masterGain.gain.setValueAtTime(l,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var v=c._howls[m]._getSoundIds(),b=0;b<v.length;b++){var k=c._howls[m]._soundById(v[b]);k&&k._node&&(k._node.volume=k._volume*l)}return c}return c._volume},mute:function(l){var c=this||n;c.ctx||p(),c._muted=l,c.usingWebAudio&&c.masterGain.gain.setValueAtTime(l?0:c._volume,n.ctx.currentTime);for(var m=0;m<c._howls.length;m++)if(!c._howls[m]._webAudio)for(var v=c._howls[m]._getSoundIds(),b=0;b<v.length;b++){var k=c._howls[m]._soundById(v[b]);k&&k._node&&(k._node.muted=l?!0:k._muted)}return c},stop:function(){for(var l=this||n,c=0;c<l._howls.length;c++)l._howls[c].stop();return l},unload:function(){for(var l=this||n,c=l._howls.length-1;c>=0;c--)l._howls[c].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||n)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||n;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var c=new Audio;typeof c.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var c=new Audio;c.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||n,c=null;try{c=typeof Audio<"u"?new Audio:null}catch{return l}if(!c||typeof c.canPlayType!="function")return l;var m=c.canPlayType("audio/mpeg;").replace(/^no$/,""),v=l._navigator?l._navigator.userAgent:"",b=v.match(/OPR\/(\d+)/g),k=b&&parseInt(b[0].split("/")[1],10)<33,M=v.indexOf("Safari")!==-1&&v.indexOf("Chrome")===-1,F=v.match(/Version\/(.*?) /),j=M&&F&&parseInt(F[1],10)<15;return l._codecs={mp3:!!(!k&&(m||c.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!m,opus:!!c.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!c.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(c.canPlayType('audio/wav; codecs="1"')||c.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!c.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!c.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(c.canPlayType("audio/x-m4a;")||c.canPlayType("audio/m4a;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(c.canPlayType("audio/x-m4b;")||c.canPlayType("audio/m4b;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(c.canPlayType("audio/x-mp4;")||c.canPlayType("audio/mp4;")||c.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!j&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!j&&c.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!c.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(c.canPlayType("audio/x-flac;")||c.canPlayType("audio/flac;")).replace(/^no$/,"")},l},_unlockAudio:function(){var l=this||n;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var c=function(m){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var v=new Audio;v._unlocked=!0,l._releaseHtml5Audio(v)}catch{l.noAudio=!0;break}for(var b=0;b<l._howls.length;b++)if(!l._howls[b]._webAudio)for(var k=l._howls[b]._getSoundIds(),M=0;M<k.length;M++){var F=l._howls[b]._soundById(k[M]);F&&F._node&&!F._node._unlocked&&(F._node._unlocked=!0,F._node.load())}l._autoResume();var j=l.ctx.createBufferSource();j.buffer=l._scratchBuffer,j.connect(l.ctx.destination),typeof j.start>"u"?j.noteOn(0):j.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),j.onended=function(){j.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",c,!0),document.removeEventListener("touchend",c,!0),document.removeEventListener("click",c,!0),document.removeEventListener("keydown",c,!0);for(var te=0;te<l._howls.length;te++)l._howls[te]._emit("unlock")}};return document.addEventListener("touchstart",c,!0),document.addEventListener("touchend",c,!0),document.addEventListener("click",c,!0),document.addEventListener("keydown",c,!0),l}},_obtainHtml5Audio:function(){var l=this||n;if(l._html5AudioPool.length)return l._html5AudioPool.pop();var c=new Audio().play();return c&&typeof Promise<"u"&&(c instanceof Promise||typeof c.then=="function")&&c.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(l){var c=this||n;return l._unlocked&&c._html5AudioPool.push(l),c},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!n.usingWebAudio)){for(var c=0;c<l._howls.length;c++)if(l._howls[c]._webAudio){for(var m=0;m<l._howls[c]._sounds.length;m++)if(!l._howls[c]._sounds[m]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(l.autoSuspend){l._suspendTimer=null,l.state="suspending";var v=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(v,v)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!n.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var c=0;c<l._howls.length;c++)l._howls[c]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var n=new a,e=function(l){var c=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}c.init(l)};e.prototype={init:function(l){var c=this;return n.ctx||p(),c._autoplay=l.autoplay||!1,c._format=typeof l.format!="string"?l.format:[l.format],c._html5=l.html5||!1,c._muted=l.mute||!1,c._loop=l.loop||!1,c._pool=l.pool||5,c._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,c._rate=l.rate||1,c._sprite=l.sprite||{},c._src=typeof l.src!="string"?l.src:[l.src],c._volume=l.volume!==void 0?l.volume:1,c._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},c._duration=0,c._state="unloaded",c._sounds=[],c._endTimers={},c._queue=[],c._playLock=!1,c._onend=l.onend?[{fn:l.onend}]:[],c._onfade=l.onfade?[{fn:l.onfade}]:[],c._onload=l.onload?[{fn:l.onload}]:[],c._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],c._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],c._onpause=l.onpause?[{fn:l.onpause}]:[],c._onplay=l.onplay?[{fn:l.onplay}]:[],c._onstop=l.onstop?[{fn:l.onstop}]:[],c._onmute=l.onmute?[{fn:l.onmute}]:[],c._onvolume=l.onvolume?[{fn:l.onvolume}]:[],c._onrate=l.onrate?[{fn:l.onrate}]:[],c._onseek=l.onseek?[{fn:l.onseek}]:[],c._onunlock=l.onunlock?[{fn:l.onunlock}]:[],c._onresume=[],c._webAudio=n.usingWebAudio&&!c._html5,typeof n.ctx<"u"&&n.ctx&&n.autoUnlock&&n._unlockAudio(),n._howls.push(c),c._autoplay&&c._queue.push({event:"play",action:function(){c.play()}}),c._preload&&c._preload!=="none"&&c.load(),c},load:function(){var l=this,c=null;if(n.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var m=0;m<l._src.length;m++){var v,b;if(l._format&&l._format[m])v=l._format[m];else{if(b=l._src[m],typeof b!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}v=/^data:audio\/([^;,]+);/i.exec(b),v||(v=/\.([^.]+)$/.exec(b.split("?",1)[0])),v&&(v=v[1].toLowerCase())}if(v||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),v&&n.codecs(v)){c=l._src[m];break}}if(!c){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=c,l._state="loading",window.location.protocol==="https:"&&c.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&r(l),l},play:function(l,c){var m=this,v=null;if(typeof l=="number")v=l,l=null;else{if(typeof l=="string"&&m._state==="loaded"&&!m._sprite[l])return null;if(typeof l>"u"&&(l="__default",!m._playLock)){for(var b=0,k=0;k<m._sounds.length;k++)m._sounds[k]._paused&&!m._sounds[k]._ended&&(b++,v=m._sounds[k]._id);b===1?l=null:v=null}}var M=v?m._soundById(v):m._inactiveSound();if(!M)return null;if(v&&!l&&(l=M._sprite||"__default"),m._state!=="loaded"){M._sprite=l,M._ended=!1;var F=M._id;return m._queue.push({event:"play",action:function(){m.play(F)}}),F}if(v&&!M._paused)return c||m._loadQueue("play"),M._id;m._webAudio&&n._autoResume();var j=Math.max(0,M._seek>0?M._seek:m._sprite[l][0]/1e3),te=Math.max(0,(m._sprite[l][0]+m._sprite[l][1])/1e3-j),ye=te*1e3/Math.abs(M._rate),Le=m._sprite[l][0]/1e3,qe=(m._sprite[l][0]+m._sprite[l][1])/1e3;M._sprite=l,M._ended=!1;var ke=function(){M._paused=!1,M._seek=j,M._start=Le,M._stop=qe,M._loop=!!(M._loop||m._sprite[l][2])};if(j>=qe){m._ended(M);return}var Z=M._node;if(m._webAudio){var Pe=function(){m._playLock=!1,ke(),m._refreshBuffer(M);var tt=M._muted||m._muted?0:M._volume;Z.gain.setValueAtTime(tt,n.ctx.currentTime),M._playStart=n.ctx.currentTime,typeof Z.bufferSource.start>"u"?M._loop?Z.bufferSource.noteGrainOn(0,j,86400):Z.bufferSource.noteGrainOn(0,j,te):M._loop?Z.bufferSource.start(0,j,86400):Z.bufferSource.start(0,j,te),ye!==1/0&&(m._endTimers[M._id]=setTimeout(m._ended.bind(m,M),ye)),c||setTimeout(function(){m._emit("play",M._id),m._loadQueue()},0)};n.state==="running"&&n.ctx.state!=="interrupted"?Pe():(m._playLock=!0,m.once("resume",Pe),m._clearTimer(M._id))}else{var je=function(){Z.currentTime=j,Z.muted=M._muted||m._muted||n._muted||Z.muted,Z.volume=M._volume*n.volume(),Z.playbackRate=M._rate;try{var tt=Z.play();if(tt&&typeof Promise<"u"&&(tt instanceof Promise||typeof tt.then=="function")?(m._playLock=!0,ke(),tt.then(function(){m._playLock=!1,Z._unlocked=!0,c?m._loadQueue():m._emit("play",M._id)}).catch(function(){m._playLock=!1,m._emit("playerror",M._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),M._ended=!0,M._paused=!0})):c||(m._playLock=!1,ke(),m._emit("play",M._id)),Z.playbackRate=M._rate,Z.paused){m._emit("playerror",M._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}l!=="__default"||M._loop?m._endTimers[M._id]=setTimeout(m._ended.bind(m,M),ye):(m._endTimers[M._id]=function(){m._ended(M),Z.removeEventListener("ended",m._endTimers[M._id],!1)},Z.addEventListener("ended",m._endTimers[M._id],!1))}catch(yt){m._emit("playerror",M._id,yt)}};Z.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(Z.src=m._src,Z.load());var vt=window&&window.ejecta||!Z.readyState&&n._navigator.isCocoonJS;if(Z.readyState>=3||vt)je();else{m._playLock=!0,m._state="loading";var it=function(){m._state="loaded",je(),Z.removeEventListener(n._canPlayEvent,it,!1)};Z.addEventListener(n._canPlayEvent,it,!1),m._clearTimer(M._id)}}return M._id},pause:function(l){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"pause",action:function(){c.pause(l)}}),c;for(var m=c._getSoundIds(l),v=0;v<m.length;v++){c._clearTimer(m[v]);var b=c._soundById(m[v]);if(b&&!b._paused&&(b._seek=c.seek(m[v]),b._rateSeek=0,b._paused=!0,c._stopFade(m[v]),b._node))if(c._webAudio){if(!b._node.bufferSource)continue;typeof b._node.bufferSource.stop>"u"?b._node.bufferSource.noteOff(0):b._node.bufferSource.stop(0),c._cleanBuffer(b._node)}else(!isNaN(b._node.duration)||b._node.duration===1/0)&&b._node.pause();arguments[1]||c._emit("pause",b?b._id:null)}return c},stop:function(l,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"stop",action:function(){m.stop(l)}}),m;for(var v=m._getSoundIds(l),b=0;b<v.length;b++){m._clearTimer(v[b]);var k=m._soundById(v[b]);k&&(k._seek=k._start||0,k._rateSeek=0,k._paused=!0,k._ended=!0,m._stopFade(v[b]),k._node&&(m._webAudio?k._node.bufferSource&&(typeof k._node.bufferSource.stop>"u"?k._node.bufferSource.noteOff(0):k._node.bufferSource.stop(0),m._cleanBuffer(k._node)):(!isNaN(k._node.duration)||k._node.duration===1/0)&&(k._node.currentTime=k._start||0,k._node.pause(),k._node.duration===1/0&&m._clearSound(k._node))),c||m._emit("stop",k._id))}return m},mute:function(l,c){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"mute",action:function(){m.mute(l,c)}}),m;if(typeof c>"u")if(typeof l=="boolean")m._muted=l;else return m._muted;for(var v=m._getSoundIds(c),b=0;b<v.length;b++){var k=m._soundById(v[b]);k&&(k._muted=l,k._interval&&m._stopFade(k._id),m._webAudio&&k._node?k._node.gain.setValueAtTime(l?0:k._volume,n.ctx.currentTime):k._node&&(k._node.muted=n._muted?!0:l),m._emit("mute",k._id))}return m},volume:function(){var l=this,c=arguments,m,v;if(c.length===0)return l._volume;if(c.length===1||c.length===2&&typeof c[1]>"u"){var b=l._getSoundIds(),k=b.indexOf(c[0]);k>=0?v=parseInt(c[0],10):m=parseFloat(c[0])}else c.length>=2&&(m=parseFloat(c[0]),v=parseInt(c[1],10));var M;if(typeof m<"u"&&m>=0&&m<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,c)}}),l;typeof v>"u"&&(l._volume=m),v=l._getSoundIds(v);for(var F=0;F<v.length;F++)M=l._soundById(v[F]),M&&(M._volume=m,c[2]||l._stopFade(v[F]),l._webAudio&&M._node&&!M._muted?M._node.gain.setValueAtTime(m,n.ctx.currentTime):M._node&&!M._muted&&(M._node.volume=m*n.volume()),l._emit("volume",M._id))}else return M=v?l._soundById(v):l._sounds[0],M?M._volume:0;return l},fade:function(l,c,m,v){var b=this;if(b._state!=="loaded"||b._playLock)return b._queue.push({event:"fade",action:function(){b.fade(l,c,m,v)}}),b;l=Math.min(Math.max(0,parseFloat(l)),1),c=Math.min(Math.max(0,parseFloat(c)),1),m=parseFloat(m),b.volume(l,v);for(var k=b._getSoundIds(v),M=0;M<k.length;M++){var F=b._soundById(k[M]);if(F){if(v||b._stopFade(k[M]),b._webAudio&&!F._muted){var j=n.ctx.currentTime,te=j+m/1e3;F._volume=l,F._node.gain.setValueAtTime(l,j),F._node.gain.linearRampToValueAtTime(c,te)}b._startFadeInterval(F,l,c,m,k[M],typeof v>"u")}}return b},_startFadeInterval:function(l,c,m,v,b,k){var M=this,F=c,j=m-c,te=Math.abs(j/.01),ye=Math.max(4,te>0?v/te:v),Le=Date.now();l._fadeTo=m,l._interval=setInterval(function(){var qe=(Date.now()-Le)/v;Le=Date.now(),F+=j*qe,F=Math.round(F*100)/100,j<0?F=Math.max(m,F):F=Math.min(m,F),M._webAudio?l._volume=F:M.volume(F,l._id,!0),k&&(M._volume=F),(m<c&&F<=m||m>c&&F>=m)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,M.volume(m,l._id),M._emit("fade",l._id))},ye)},_stopFade:function(l){var c=this,m=c._soundById(l);return m&&m._interval&&(c._webAudio&&m._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(m._interval),m._interval=null,c.volume(m._fadeTo,l),m._fadeTo=null,c._emit("fade",l)),c},loop:function(){var l=this,c=arguments,m,v,b;if(c.length===0)return l._loop;if(c.length===1)if(typeof c[0]=="boolean")m=c[0],l._loop=m;else return b=l._soundById(parseInt(c[0],10)),b?b._loop:!1;else c.length===2&&(m=c[0],v=parseInt(c[1],10));for(var k=l._getSoundIds(v),M=0;M<k.length;M++)b=l._soundById(k[M]),b&&(b._loop=m,l._webAudio&&b._node&&b._node.bufferSource&&(b._node.bufferSource.loop=m,m&&(b._node.bufferSource.loopStart=b._start||0,b._node.bufferSource.loopEnd=b._stop,l.playing(k[M])&&(l.pause(k[M],!0),l.play(k[M],!0)))));return l},rate:function(){var l=this,c=arguments,m,v;if(c.length===0)v=l._sounds[0]._id;else if(c.length===1){var b=l._getSoundIds(),k=b.indexOf(c[0]);k>=0?v=parseInt(c[0],10):m=parseFloat(c[0])}else c.length===2&&(m=parseFloat(c[0]),v=parseInt(c[1],10));var M;if(typeof m=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,c)}}),l;typeof v>"u"&&(l._rate=m),v=l._getSoundIds(v);for(var F=0;F<v.length;F++)if(M=l._soundById(v[F]),M){l.playing(v[F])&&(M._rateSeek=l.seek(v[F]),M._playStart=l._webAudio?n.ctx.currentTime:M._playStart),M._rate=m,l._webAudio&&M._node&&M._node.bufferSource?M._node.bufferSource.playbackRate.setValueAtTime(m,n.ctx.currentTime):M._node&&(M._node.playbackRate=m);var j=l.seek(v[F]),te=(l._sprite[M._sprite][0]+l._sprite[M._sprite][1])/1e3-j,ye=te*1e3/Math.abs(M._rate);(l._endTimers[v[F]]||!M._paused)&&(l._clearTimer(v[F]),l._endTimers[v[F]]=setTimeout(l._ended.bind(l,M),ye)),l._emit("rate",M._id)}}else return M=l._soundById(v),M?M._rate:l._rate;return l},seek:function(){var l=this,c=arguments,m,v;if(c.length===0)l._sounds.length&&(v=l._sounds[0]._id);else if(c.length===1){var b=l._getSoundIds(),k=b.indexOf(c[0]);k>=0?v=parseInt(c[0],10):l._sounds.length&&(v=l._sounds[0]._id,m=parseFloat(c[0]))}else c.length===2&&(m=parseFloat(c[0]),v=parseInt(c[1],10));if(typeof v>"u")return 0;if(typeof m=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,c)}}),l;var M=l._soundById(v);if(M)if(typeof m=="number"&&m>=0){var F=l.playing(v);F&&l.pause(v,!0),M._seek=m,M._ended=!1,l._clearTimer(v),!l._webAudio&&M._node&&!isNaN(M._node.duration)&&(M._node.currentTime=m);var j=function(){F&&l.play(v,!0),l._emit("seek",v)};if(F&&!l._webAudio){var te=function(){l._playLock?setTimeout(te,0):j()};setTimeout(te,0)}else j()}else if(l._webAudio){var ye=l.playing(v)?n.ctx.currentTime-M._playStart:0,Le=M._rateSeek?M._rateSeek-M._seek:0;return M._seek+(Le+ye*Math.abs(M._rate))}else return M._node.currentTime;return l},playing:function(l){var c=this;if(typeof l=="number"){var m=c._soundById(l);return m?!m._paused:!1}for(var v=0;v<c._sounds.length;v++)if(!c._sounds[v]._paused)return!0;return!1},duration:function(l){var c=this,m=c._duration,v=c._soundById(l);return v&&(m=c._sprite[v._sprite][1]/1e3),m},state:function(){return this._state},unload:function(){for(var l=this,c=l._sounds,m=0;m<c.length;m++)c[m]._paused||l.stop(c[m]._id),l._webAudio||(l._clearSound(c[m]._node),c[m]._node.removeEventListener("error",c[m]._errorFn,!1),c[m]._node.removeEventListener(n._canPlayEvent,c[m]._loadFn,!1),c[m]._node.removeEventListener("ended",c[m]._endFn,!1),n._releaseHtml5Audio(c[m]._node)),delete c[m]._node,l._clearTimer(c[m]._id);var v=n._howls.indexOf(l);v>=0&&n._howls.splice(v,1);var b=!0;for(m=0;m<n._howls.length;m++)if(n._howls[m]._src===l._src||l._src.indexOf(n._howls[m]._src)>=0){b=!1;break}return i&&b&&delete i[l._src],n.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,c,m,v){var b=this,k=b["_on"+l];return typeof c=="function"&&k.push(v?{id:m,fn:c,once:v}:{id:m,fn:c}),b},off:function(l,c,m){var v=this,b=v["_on"+l],k=0;if(typeof c=="number"&&(m=c,c=null),c||m)for(k=0;k<b.length;k++){var M=m===b[k].id;if(c===b[k].fn&&M||!c&&M){b.splice(k,1);break}}else if(l)v["_on"+l]=[];else{var F=Object.keys(v);for(k=0;k<F.length;k++)F[k].indexOf("_on")===0&&Array.isArray(v[F[k]])&&(v[F[k]]=[])}return v},once:function(l,c,m){var v=this;return v.on(l,c,m,1),v},_emit:function(l,c,m){for(var v=this,b=v["_on"+l],k=b.length-1;k>=0;k--)(!b[k].id||b[k].id===c||l==="load")&&(setTimeout((function(M){M.call(this,c,m)}).bind(v,b[k].fn),0),b[k].once&&v.off(l,b[k].fn,b[k].id));return v._loadQueue(l),v},_loadQueue:function(l){var c=this;if(c._queue.length>0){var m=c._queue[0];m.event===l&&(c._queue.shift(),c._loadQueue()),l||m.action()}return c},_ended:function(l){var c=this,m=l._sprite;if(!c._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(c._ended.bind(c,l),100),c;var v=!!(l._loop||c._sprite[m][2]);if(c._emit("end",l._id),!c._webAudio&&v&&c.stop(l._id,!0).play(l._id),c._webAudio&&v){c._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=n.ctx.currentTime;var b=(l._stop-l._start)*1e3/Math.abs(l._rate);c._endTimers[l._id]=setTimeout(c._ended.bind(c,l),b)}return c._webAudio&&!v&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,c._clearTimer(l._id),c._cleanBuffer(l._node),n._autoSuspend()),!c._webAudio&&!v&&c.stop(l._id,!0),c},_clearTimer:function(l){var c=this;if(c._endTimers[l]){if(typeof c._endTimers[l]!="function")clearTimeout(c._endTimers[l]);else{var m=c._soundById(l);m&&m._node&&m._node.removeEventListener("ended",c._endTimers[l],!1)}delete c._endTimers[l]}return c},_soundById:function(l){for(var c=this,m=0;m<c._sounds.length;m++)if(l===c._sounds[m]._id)return c._sounds[m];return null},_inactiveSound:function(){var l=this;l._drain();for(var c=0;c<l._sounds.length;c++)if(l._sounds[c]._ended)return l._sounds[c].reset();return new t(l)},_drain:function(){var l=this,c=l._pool,m=0,v=0;if(!(l._sounds.length<c)){for(v=0;v<l._sounds.length;v++)l._sounds[v]._ended&&m++;for(v=l._sounds.length-1;v>=0;v--){if(m<=c)return;l._sounds[v]._ended&&(l._webAudio&&l._sounds[v]._node&&l._sounds[v]._node.disconnect(0),l._sounds.splice(v,1),m--)}}},_getSoundIds:function(l){var c=this;if(typeof l>"u"){for(var m=[],v=0;v<c._sounds.length;v++)m.push(c._sounds[v]._id);return m}else return[l]},_refreshBuffer:function(l){var c=this;return l._node.bufferSource=n.ctx.createBufferSource(),l._node.bufferSource.buffer=i[c._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,n.ctx.currentTime),c},_cleanBuffer:function(l){var c=this,m=n._navigator&&n._navigator.vendor.indexOf("Apple")>=0;if(!l.bufferSource)return c;if(n._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),m))try{l.bufferSource.buffer=n._scratchBuffer}catch{}return l.bufferSource=null,c},_clearSound:function(l){var c=/MSIE |Trident\//.test(n._navigator&&n._navigator.userAgent);c||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,c=l._parent;return l._muted=c._muted,l._loop=c._loop,l._volume=c._volume,l._rate=c._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++n._counter,c._sounds.push(l),l.create(),l},create:function(){var l=this,c=l._parent,m=n._muted||l._muted||l._parent._muted?0:l._volume;return c._webAudio?(l._node=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),l._node.gain.setValueAtTime(m,n.ctx.currentTime),l._node.paused=!0,l._node.connect(n.masterGain)):n.noAudio||(l._node=n._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(n._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=c._src,l._node.preload=c._preload===!0?"auto":c._preload,l._node.volume=m*n.volume(),l._node.load()),l},reset:function(){var l=this,c=l._parent;return l._muted=c._muted,l._loop=c._loop,l._volume=c._volume,l._rate=c._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++n._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,c=l._parent;c._duration=Math.ceil(l._node.duration*10)/10,Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue()),l._node.removeEventListener(n._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,c=l._parent;c._duration===1/0&&(c._duration=Math.ceil(l._node.duration*10)/10,c._sprite.__default[1]===1/0&&(c._sprite.__default[1]=c._duration*1e3),c._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var i={},r=function(l){var c=l._src;if(i[c]){l._duration=i[c].duration,d(l);return}if(/^data:[^;]+;base64,/.test(c)){for(var m=atob(c.split(",")[1]),v=new Uint8Array(m.length),b=0;b<m.length;++b)v[b]=m.charCodeAt(b);s(v.buffer,l)}else{var k=new XMLHttpRequest;k.open(l._xhr.method,c,!0),k.withCredentials=l._xhr.withCredentials,k.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(M){k.setRequestHeader(M,l._xhr.headers[M])}),k.onload=function(){var M=(k.status+"")[0];if(M!=="0"&&M!=="2"&&M!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+k.status+".");return}s(k.response,l)},k.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete i[c],l.load())},o(k)}},o=function(l){try{l.send()}catch{l.onerror()}},s=function(l,c){var m=function(){c._emit("loaderror",null,"Decoding audio data failed.")},v=function(b){b&&c._sounds.length>0?(i[c._src]=b,d(c,b)):m()};typeof Promise<"u"&&n.ctx.decodeAudioData.length===1?n.ctx.decodeAudioData(l).then(v).catch(m):n.ctx.decodeAudioData(l,v,m)},d=function(l,c){c&&!l._duration&&(l._duration=c.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},p=function(){if(n.usingWebAudio){try{typeof AudioContext<"u"?n.ctx=new AudioContext:typeof webkitAudioContext<"u"?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch{n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var l=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),c=n._navigator&&n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),m=c?parseInt(c[1],10):null;if(l&&m&&m<9){var v=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!v&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=typeof n.ctx.createGain>"u"?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:n,Howl:e}}),typeof ro<"u"&&(ro.Howler=n,ro.Howl=e),typeof global<"u"?(global.HowlerGlobal=a,global.Howler=n,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=a,window.Howler=n,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(n){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(n);return e},HowlerGlobal.prototype.pos=function(n,e,t){var i=this;if(!i.ctx||!i.ctx.listener)return i;if(e=typeof e!="number"?i._pos[1]:e,t=typeof t!="number"?i._pos[2]:t,typeof n=="number")i._pos=[n,e,t],typeof i.ctx.listener.positionX<"u"?(i.ctx.listener.positionX.setTargetAtTime(i._pos[0],Howler.ctx.currentTime,.1),i.ctx.listener.positionY.setTargetAtTime(i._pos[1],Howler.ctx.currentTime,.1),i.ctx.listener.positionZ.setTargetAtTime(i._pos[2],Howler.ctx.currentTime,.1)):i.ctx.listener.setPosition(i._pos[0],i._pos[1],i._pos[2]);else return i._pos;return i},HowlerGlobal.prototype.orientation=function(n,e,t,i,r,o){var s=this;if(!s.ctx||!s.ctx.listener)return s;var d=s._orientation;if(e=typeof e!="number"?d[1]:e,t=typeof t!="number"?d[2]:t,i=typeof i!="number"?d[3]:i,r=typeof r!="number"?d[4]:r,o=typeof o!="number"?d[5]:o,typeof n=="number")s._orientation=[n,e,t,i,r,o],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(n,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(n,e,t,i,r,o);else return d;return s},Howl.prototype.init=(function(n){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}})(Howl.prototype.init),Howl.prototype.stereo=function(n,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(n,e)}}),t;var i=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof n=="number")t._stereo=n,t._pos=[n,0,0];else return t._stereo;for(var r=t._getSoundIds(e),o=0;o<r.length;o++){var s=t._soundById(r[o]);if(s)if(typeof n=="number")s._stereo=n,s._pos=[n,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&a(s,i),i==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(n,0,0):s._panner.pan.setValueAtTime(n,Howler.ctx.currentTime)),t._emit("stereo",s._id);else return s._stereo}return t},Howl.prototype.pos=function(n,e,t,i){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"pos",action:function(){r.pos(n,e,t,i)}}),r;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof i>"u")if(typeof n=="number")r._pos=[n,e,t];else return r._pos;for(var o=r._getSoundIds(i),s=0;s<o.length;s++){var d=r._soundById(o[s]);if(d)if(typeof n=="number")d._pos=[n,e,t],d._node&&((!d._panner||d._panner.pan)&&a(d,"spatial"),typeof d._panner.positionX<"u"?(d._panner.positionX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setPosition(n,e,t)),r._emit("pos",d._id);else return d._pos}return r},Howl.prototype.orientation=function(n,e,t,i){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"orientation",action:function(){r.orientation(n,e,t,i)}}),r;if(e=typeof e!="number"?r._orientation[1]:e,t=typeof t!="number"?r._orientation[2]:t,typeof i>"u")if(typeof n=="number")r._orientation=[n,e,t];else return r._orientation;for(var o=r._getSoundIds(i),s=0;s<o.length;s++){var d=r._soundById(o[s]);if(d)if(typeof n=="number")d._orientation=[n,e,t],d._node&&(d._panner||(d._pos||(d._pos=r._pos||[0,0,-.5]),a(d,"spatial")),typeof d._panner.orientationX<"u"?(d._panner.orientationX.setValueAtTime(n,Howler.ctx.currentTime),d._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),d._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):d._panner.setOrientation(n,e,t)),r._emit("orientation",d._id);else return d._orientation}return r},Howl.prototype.pannerAttr=function(){var n=this,e=arguments,t,i,r;if(!n._webAudio)return n;if(e.length===0)return n._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof i>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),n._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:n._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:n._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:n._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:n._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:n._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:n._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:n._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:n._panningModel});else return r=n._soundById(parseInt(e[0],10)),r?r._pannerAttr:n._pannerAttr;else e.length===2&&(t=e[0],i=parseInt(e[1],10));for(var o=n._getSoundIds(i),s=0;s<o.length;s++)if(r=n._soundById(o[s]),r){var d=r._pannerAttr;d={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:d.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:d.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:d.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:d.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:d.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:d.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:d.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:d.panningModel};var p=r._panner;p||(r._pos||(r._pos=n._pos||[0,0,-.5]),a(r,"spatial"),p=r._panner),p.coneInnerAngle=d.coneInnerAngle,p.coneOuterAngle=d.coneOuterAngle,p.coneOuterGain=d.coneOuterGain,p.distanceModel=d.distanceModel,p.maxDistance=d.maxDistance,p.refDistance=d.refDistance,p.rolloffFactor=d.rolloffFactor,p.panningModel=d.panningModel}return n},Sound.prototype.init=(function(n){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,n.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}})(Sound.prototype.init),Sound.prototype.reset=(function(n){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),n.call(this)}})(Sound.prototype.reset);var a=function(n,e){e=e||"spatial",e==="spatial"?(n._panner=Howler.ctx.createPanner(),n._panner.coneInnerAngle=n._pannerAttr.coneInnerAngle,n._panner.coneOuterAngle=n._pannerAttr.coneOuterAngle,n._panner.coneOuterGain=n._pannerAttr.coneOuterGain,n._panner.distanceModel=n._pannerAttr.distanceModel,n._panner.maxDistance=n._pannerAttr.maxDistance,n._panner.refDistance=n._pannerAttr.refDistance,n._panner.rolloffFactor=n._pannerAttr.rolloffFactor,n._panner.panningModel=n._pannerAttr.panningModel,typeof n._panner.positionX<"u"?(n._panner.positionX.setValueAtTime(n._pos[0],Howler.ctx.currentTime),n._panner.positionY.setValueAtTime(n._pos[1],Howler.ctx.currentTime),n._panner.positionZ.setValueAtTime(n._pos[2],Howler.ctx.currentTime)):n._panner.setPosition(n._pos[0],n._pos[1],n._pos[2]),typeof n._panner.orientationX<"u"?(n._panner.orientationX.setValueAtTime(n._orientation[0],Howler.ctx.currentTime),n._panner.orientationY.setValueAtTime(n._orientation[1],Howler.ctx.currentTime),n._panner.orientationZ.setValueAtTime(n._orientation[2],Howler.ctx.currentTime)):n._panner.setOrientation(n._orientation[0],n._orientation[1],n._orientation[2])):(n._panner=Howler.ctx.createStereoPanner(),n._panner.pan.setValueAtTime(n._stereo,Howler.ctx.currentTime)),n._panner.connect(n._node),n._paused||n._parent.pause(n._id,!0).play(n._id,!0)}})()});var Ys=ns((jC,bo)=>{(function(a){"use strict";function n(u){if(Array.isArray(u)){for(var h=0,f=Array(u.length);h<u.length;h++)f[h]=u[h];return f}return Array.from(u)}function e(u,h){if(!u)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!h||typeof h!="object"&&typeof h!="function"?u:h}function t(u,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof h);u.prototype=Object.create(h&&h.prototype,{constructor:{value:u,enumerable:!1,writable:!0,configurable:!0}}),h&&(Object.setPrototypeOf?Object.setPrototypeOf(u,h):u.__proto__=h)}function i(u,h){if(!(u instanceof h))throw new TypeError("Cannot call a class as a function")}function r(u,h){if(h||(h=typeof window>"u"?global:window),h[u]!==void 0)return h[u];if(qi===null){var f=window.getComputedStyle(document.documentElement,"");qi=(Array.prototype.slice.call(f).join("").match(/-(moz|webkit|ms)-/)||f.OLink===""&&["","o"]||["",""])[1]}if(qi==="")return null;var S=u.charAt(0).toUpperCase()+u.substr(1),E=h[qi+S];return E!==void 0?E:null}function o(u,h,f,S,E,P,O){if(typeof S!="function")throw new TypeError("Invalid animation rule:",S);var z=u-f,V=z/E,B=0;V>1&&(V=1),V!==1&&(B=S(V),isFinite(B)&&!isNaN(B)&&(V=B)),h&&h(V),z<E?O.frame=br(function(K){return o(K,h,f,S,E,P,O)}):(P&&P(),O.inProgress=!1)}function s(){Array.prototype.constructor.apply(this,arguments)}function d(u){if(!(u instanceof DOMException&&u.result===2152923147))throw u}function p(u,h){return h.replace(Zo,function(f,S){var E=u[S];return E!==void 0?E:f})}function l(u){return u.majorTicks instanceof Array||(u.majorTicks=u.majorTicks?[u.majorTicks]:[]),u.majorTicks.length||(u.majorTicks.push(ce.formatMajorTickNumber(u.minValue,u)),u.majorTicks.push(ce.formatMajorTickNumber(u.maxValue,u))),[u.tickSide!=="right",u.tickSide!=="left"]}function c(u,h,f,S,E,P){u.beginPath(),u.moveTo(h+P,f),u.lineTo(h+S-P,f),u.quadraticCurveTo(h+S,f,h+S,f+P),u.lineTo(h+S,f+E-P),u.quadraticCurveTo(h+S,f+E,h+S-P,f+E),u.lineTo(h+P,f+E),u.quadraticCurveTo(h,f+E,h,f+E-P),u.lineTo(h,f+P),u.quadraticCurveTo(h,f,h+P,f),u.closePath()}function m(u,h){var f=h.valueDec,S=h.valueInt,E=0,P=void 0,O=void 0,z=void 0;if(u=parseFloat(u),z=u<0,u=Math.abs(u),f>0){for(O=u.toFixed(f).toString().split("."),P=S-O[0].length;E<P;++E)O[0]="0"+O[0];O=(z?"-":"")+O[0]+"."+O[1]}else{for(O=Math.round(u).toString(),P=S-O.length;E<P;++E)O="0"+O;O=(z?"-":"")+O}return O}function v(u,h){var f=void 0,S=!1;return f=h.majorTicksDec===0?Math.round(u).toString():u.toFixed(h.majorTicksDec),h.majorTicksInt>1?(S=~f.indexOf("."),~f.indexOf("-")?"-"+[h.majorTicksInt+h.majorTicksDec+2+(S?1:0)-f.length].join("0")+f.replace("-",""):[h.majorTicksInt+h.majorTicksDec+1+(S?1:0)-f.length].join("0")+f):f}function b(u){return u*Math.PI/180}function k(u,h){return{x:-u*Math.sin(h),y:u*Math.cos(h)}}function M(u,h,f,S){var E=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],P=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,O=u.createLinearGradient(E?0:P,E?P:0,E?0:S,E?S:0);return O.addColorStop(0,h),O.addColorStop(1,f),O}function F(u,h){h.needleShadow&&(u.shadowOffsetX=2,u.shadowOffsetY=2,u.shadowBlur=10,u.shadowColor=h.colorNeedleShadowDown)}function j(u,h,f){return u["font"+h+"Style"]+" "+u["font"+h+"Weight"]+" "+u["font"+h+"Size"]*f+"px "+u["font"+h]}function te(u){u.shadowOffsetX=null,u.shadowOffsetY=null,u.shadowBlur=null,u.shadowColor="",u.strokeStyle=null,u.lineWidth=0,u.save()}function ye(u,h,f,S){h.valueTextShadow&&(u.shadowOffsetX=f,u.shadowOffsetY=f,u.shadowBlur=S,u.shadowColor=h.colorValueTextShadow)}function Le(u,h,f,S,E,P){if(h.valueBox){te(u);var O=h.valueDec?1+h.valueDec:0,z="9".repeat(Math.max.apply(null,[String(parseInt(f)).length+O].concat(h.majorTicks.map(function(Ve){return String(parseInt(Ve,10)).length+O})))),V=h.valueText||m(f,h),B=P/200,K=P/100,Q=.4*K,he=1.2*K;u.font=j(h,"Value",B),ye(u,h,Q,he);var Ce=u.measureText(h.valueText?V:"-"+m(Number(z),h)).width;te(u);var De=parseFloat(h.fontValueSize)*B+Q+he,Ye=K*parseFloat(h.valueBoxStroke),Ae=2*P-2*Ye,Xe=Ce+10*K,Ke=1.1*De+Q+he,Qe=K*h.valueBoxBorderRadius,Me=(parseFloat(h.valueBoxWidth)||0)/100*Ae;Me>Xe&&(Xe=Me),Xe>Ae&&(Xe=Ae);var He=S-Xe/2,Oe=E-Ke/2,be=E-5.75*K;if(u.beginPath(),Qe?c(u,He,Oe,Xe,Ke,Qe):u.rect(He,Oe,Xe,Ke),Ye){var Ie=u.createRadialGradient(S,be,10*K,S,be,20*K);Ie.addColorStop(0,h.colorValueBoxRect),Ie.addColorStop(1,h.colorValueBoxRectEnd),u.strokeStyle=Ie,u.lineWidth=Ye,u.stroke()}h.colorValueBoxShadow&&(u.shadowBlur=1.2*K,u.shadowColor=h.colorValueBoxShadow),h.colorValueBoxBackground&&(u.fillStyle=h.colorValueBoxBackground,u.fill()),u.closePath(),u.restore(),ye(u,h,Q,he),u.fillStyle=h.colorValueText,u.textAlign="center",u.textBaseline="alphabetic",u.fillText(V,He+Xe/2,E+Ke/2-De/3),u.restore()}}function qe(u){var h=u.value,f=u.minValue,S=u.maxValue,E=.01*(S-f);return{normal:h<f?f:h>S?S:h,indented:h<f?f-E:h>S?S+E:h}}function ke(u,h,f,S,E){f.beginPath(),f.arc(0,0,Zt(u),0,2*Tn,!0),f.lineWidth=h,f.strokeStyle=E?ce.linearGradient(f,S,E,u):S,f.stroke(),f.closePath()}function Z(u,h){var f=si.pixelRatio;return u.maxRadius||(u.maxRadius=u.max-h.borderShadowWidth-h.borderOuterWidth*f-h.borderMiddleWidth*f-h.borderInnerWidth*f+(h.borderOuterWidth?.5:0)+(h.borderMiddleWidth?.5:0)+(h.borderInnerWidth?.5:0)),u.maxRadius}function Pe(u,h){function f(Q,he,Ce,De,Ye,Ae){return he&&(!Ae&&h.borderShadowWidth&&(Ce.save(),Ce.shadowBlur=h.borderShadowWidth,Ce.shadowColor=h.colorBorderShadow),ke(Q,he*S,Ce,De,Ye),!Ae&&h.borderShadowWidth&&(Ae=!0,Ce.restore())),Ae}var S=si.pixelRatio,E=h.borderShadowWidth*S,P=u.max-E-h.borderOuterWidth*S/2,O=P-h.borderOuterWidth*S/2-h.borderMiddleWidth*S/2+.5,z=O-h.borderMiddleWidth*S/2-h.borderInnerWidth*S/2+.5,V=Z(u,h),B=void 0,K=!1;u.save(),K=f(P,h.borderOuterWidth,u,h.colorBorderOuter,h.colorBorderOuterEnd,K),K=f(O,h.borderMiddleWidth,u,h.colorBorderMiddle,h.colorBorderMiddleEnd,K),K=f(z,h.borderInnerWidth,u,h.colorBorderInner,h.colorBorderInnerEnd,K),!K&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),u.beginPath(),u.arc(0,0,Zt(V),0,2*Tn,!0),h.colorPlateEnd?(B=u.createRadialGradient(0,0,V/2,0,0,V),B.addColorStop(0,h.colorPlate),B.addColorStop(1,h.colorPlateEnd)):B=h.colorPlate,u.fillStyle=B,u.fill(),u.closePath(),u.restore()}function je(u,h){if(h.highlights!=="false"&&h.highlights.length&&h.highlightsWidth!==0){var f=u.max*(parseFloat(h.highlightsWidth)||0)/100,S=Zt(it(u,h)-f/2),E=h.highlights.length,P=(h.maxValue-h.minValue)/h.ticksAngle;u.save();for(var O=0;O<E;O++){var z=h.highlights[O];u.lineWidth=f,u.lineCap=h.highlightsLineCap,u.strokeStyle=z.color,u.beginPath(),u.rotate(Kn),u.arc(0,0,S,ce.radians(h.startAngle+(z.from-h.minValue)/P),ce.radians(h.startAngle+(z.to-h.minValue)/P),!1),u.stroke(),u.closePath(),u.restore(),u.save()}u.restore()}}function vt(u,h){var f=it(u,h),S=void 0,E=void 0,P=void 0,O=0,z=Math.abs(h.minorTicks)||0,V=h.ticksAngle/(h.maxValue-h.minValue);h.exactTicks?(E=h.maxValue-h.minValue,S=z?E/z:0,O=(Jt.mod(h.majorTicks[0],z)||0)*V):S=z*(h.majorTicks.length-1),u.lineWidth=si.pixelRatio,u.strokeStyle=h.colorMinorTicks||h.colorStrokeTicks,u.save();for(var B=0;B<S;++B)(P=h.startAngle+O+B*(h.ticksAngle/S))<=h.ticksAngle+h.startAngle&&(u.rotate(ce.radians(P)),u.beginPath(),u.moveTo(0,f),u.lineTo(0,f-.075*u.max),ui(u));u.restore()}function it(u,h){var f=u.max/100;return Z(u,h)-5*f-(h.barWidth?2*(parseFloat(h.barStrokeWidth)||0)+((parseFloat(h.barWidth)||0)+5)*f:0)}function tt(u,h){ce.prepareTicks(h);var f=Zt(it(u,h)),S=void 0,E=h.majorTicks.length,P=si.pixelRatio;u.lineWidth=2*P,S=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(E).fill(h.colorStrokeTicks||h.colorMajorTicks);for(var O=0;O<E;++O)u.save(),u.strokeStyle=S[O],u.rotate(ce.radians(yt(h,h.exactTicks?h.majorTicks[O]:O,E))),u.beginPath(),u.moveTo(0,f),u.lineTo(0,f-.15*u.max),u.stroke(),u.closePath(),u.restore();h.strokeTicks&&(u.save(),u.strokeStyle=h.colorStrokeTicks||S[0],u.rotate(Kn),u.beginPath(),u.arc(0,0,f,ce.radians(h.startAngle),ce.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore())}function yt(u,h,f){if(u.exactTicks){var S=u.ticksAngle/(u.maxValue-u.minValue);return u.startAngle+S*(h-u.minValue)}return u.startAngle+h*(u.ticksAngle/(f-1))}function ui(u){u.stroke(),u.restore(),u.closePath(),u.save()}function ie(u,h){var f=it(u,h)-.15*u.max,S={},E=0,P=h.majorTicks.length,O=h.animationTarget!=="needle",z=h.colorNumbers instanceof Array?h.colorNumbers:new Array(P).fill(h.colorNumbers),V=O?-(h.value-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle:0;for(O&&(u.save(),u.rotate(-ce.radians(V))),u.font=ce.font(h,"Numbers",u.max/200),u.lineWidth=0,u.textAlign="center",u.textBaseline="middle";E<P;++E){var B=V+yt(h,h.exactTicks?h.majorTicks[E]:E,P),K=u.measureText(h.majorTicks[E]).width,Q=h.fontNumbersSize,he=Math.sqrt(K*K+Q*Q)/2,Ce=ce.radialPoint(f-he-h.numbersMargin/100*u.max,ce.radians(B));B===360&&(B=0),S[B]||(S[B]=!0,u.fillStyle=z[E],u.fillText(h.majorTicks[E],Ce.x,Ce.y))}O&&u.restore()}function fe(u,h){h.title&&(u.save(),u.font=ce.font(h,"Title",u.max/200),u.fillStyle=h.colorTitle,u.textAlign="center",u.fillText(h.title,0,-u.max/4.25,.8*u.max),u.restore())}function we(u,h){h.units&&(u.save(),u.font=ce.font(h,"Units",u.max/200),u.fillStyle=h.colorUnits,u.textAlign="center",u.fillText(ce.formatContext(h,h.units),0,u.max/3.25,.8*u.max),u.restore())}function $e(u,h){if(h.needle){var f=h.animationTarget!=="needle",S=h.ticksAngle<360?ce.normalizedValue(h).indented:h.value,E=f?h.startAngle:h.startAngle+(S-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle;h.barStartPosition==="right"&&(E=h.startAngle+h.ticksAngle-(S-h.minValue)/(h.maxValue-h.minValue)*h.ticksAngle);var P=Z(u,h),O=Zt(P/100*h.needleCircleSize),z=Zt(P/100*h.needleCircleSize*.75),V=Zt(P/100*h.needleEnd),B=Zt(h.needleStart?P/100*h.needleStart:0),K=P/100*h.needleWidth,Q=P/100*h.needleWidth/2,he=si.pixelRatio;u.save(),ce.drawNeedleShadow(u,h),u.rotate(ce.radians(E)),u.fillStyle=ce.linearGradient(u,h.colorNeedle,h.colorNeedleEnd,V-B),h.needleType==="arrow"?(u.beginPath(),u.moveTo(-Q,-B),u.lineTo(-K,0),u.lineTo(-1*he,V),u.lineTo(he,V),u.lineTo(K,0),u.lineTo(Q,-B),u.closePath(),u.fill(),u.beginPath(),u.lineTo(-.5*he,V),u.lineTo(-1*he,V),u.lineTo(-K,0),u.lineTo(-Q,-B),u.lineTo(Q/2*he-2*he,-B),u.closePath(),u.fillStyle=h.colorNeedleShadowUp,u.fill()):(u.beginPath(),u.moveTo(-Q,V),u.lineTo(-Q,B),u.lineTo(Q,B),u.lineTo(Q,V),u.closePath(),u.fill()),u.restore(),h.needleCircleSize&&(u.save(),ce.drawNeedleShadow(u,h),h.needleCircleOuter&&(u.beginPath(),u.arc(0,0,O,0,2*Tn,!0),u.fillStyle=ce.linearGradient(u,h.colorNeedleCircleOuter,h.colorNeedleCircleOuterEnd,O),u.fill(),u.closePath()),h.needleCircleInner&&(u.beginPath(),u.arc(0,0,z,0,2*Tn,!0),u.fillStyle=ce.linearGradient(u,h.colorNeedleCircleInner,h.colorNeedleCircleInnerEnd,z),u.fill(),u.closePath()),u.restore())}}function bt(u,h,f){ce.drawValueBox(u,h,f,0,u.max-.33*u.max,u.max)}function Et(u){var h=u.startAngle,f=u.startAngle+u.ticksAngle,S=h,E=h+(ce.normalizedValue(u).normal-u.minValue)/(u.maxValue-u.minValue)*u.ticksAngle;if(u.barStartPosition==="middle"){var P=.5*(u.minValue+u.maxValue);u.value<P?(S=180-(P-ce.normalizedValue(u).normal)/(u.maxValue-u.minValue)*u.ticksAngle,E=180):(S=180,E=180+(ce.normalizedValue(u).normal-P)/(u.maxValue-u.minValue)*u.ticksAngle)}else u.barStartPosition==="right"&&(S=f-E+h,E=f);return{startAngle:S,endAngle:E}}function Mt(u,h){var f=u.max/100,S=Z(u,h)-5*f,E=parseFloat(h.barStrokeWidth+"")||0,P=(parseFloat(h.barWidth+"")||0)*f,O=S-2*E-P,z=(S-O)/2,V=O+z,B=E/V,K=h.startAngle,Q=h.startAngle+h.ticksAngle;if(u.save(),u.rotate(Kn),E&&(u.beginPath(),u.arc(0,0,V,ce.radians(K)-B,ce.radians(Q)+B,!1),u.strokeStyle=h.colorBarStroke,u.lineWidth=2*z,u.stroke(),u.closePath()),P&&(u.beginPath(),u.arc(0,0,V,ce.radians(K),ce.radians(Q),!1),u.strokeStyle=h.colorBar,u.lineWidth=P,u.stroke(),u.closePath(),h.barShadow&&(u.save(),u.beginPath(),u.arc(0,0,S,ce.radians(K),ce.radians(Q),!1),u.clip(),u.beginPath(),u.strokeStyle=h.colorBar,u.lineWidth=1,u.shadowBlur=h.barShadow,u.shadowColor=h.colorBarShadow,u.shadowOffsetX=0,u.shadowOffsetY=0,u.arc(0,0,S,ce.radians(h.startAngle),ce.radians(h.startAngle+h.ticksAngle),!1),u.stroke(),u.closePath(),u.restore()),h.barProgress)){var he=Et(h),Ce=he.startAngle,De=he.endAngle;u.beginPath(),u.arc(0,0,V,ce.radians(Ce),ce.radians(De),!1),u.strokeStyle=h.colorBarProgress,u.lineWidth=P,u.stroke(),u.closePath()}u.restore()}function $t(u){return u.options.animatedValue?u.options.value:u.value}function pt(u,h,f,S,E,P,O,z){u.beginPath(),u.fillStyle=z?ce.linearGradient(u,O,z,E>P?E:P,P>E,E>P?f:S):O,h>0?ce.roundRect(u,f,S,E,P,h):u.rect(f,S,E,P),u.fill(),u.closePath()}function $n(u,h,f,S,E,P,O,z,V){u.beginPath(),u.lineWidth=h,u.strokeStyle=V?ce.linearGradient(u,z,V,O,!0,E):z,f>0?ce.roundRect(u,S,E,P,O,f):u.rect(S,E,P,O),u.stroke(),u.closePath()}function kt(u,h,f,S,E,P){function O(Ve,Ge,ut,At){return Ve&&(!At&&h.borderShadowWidth&&(u.save(),u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),$n(u,Ve*z,V,f+Ve*z/2-be,S+Ve*z/2-be,B,Ce,Ge,ut),be+=.5*z,!At&&h.borderShadowWidth&&(At=!0,u.restore())),At}var z=si.pixelRatio,V=h.borderRadius*z,B=E-h.borderShadowWidth-h.borderOuterWidth*z,K=B-h.borderOuterWidth*z-h.borderMiddleWidth*z,Q=K-h.borderMiddleWidth*z-h.borderInnerWidth*z,he=Q-h.borderInnerWidth*z,Ce=P-h.borderShadowWidth-h.borderOuterWidth*z,De=Ce-h.borderOuterWidth*z-h.borderMiddleWidth*z,Ye=De-h.borderMiddleWidth*z-h.borderInnerWidth*z,Ae=Ye-h.borderInnerWidth*z,Xe=f-(K-B)/2,Ke=Xe-(Q-K)/2,Qe=Ke-(he-Q)/2,Me=S-(De-Ce)/2,He=Me-(Ye-De)/2,Oe=He-(Ae-Ye)/2,be=0,Ie=!1;return u.save(),Ie=O(h.borderOuterWidth,h.colorBorderOuter,h.colorBorderOuterEnd,Ie),Ie=O(h.borderMiddleWidth,h.colorBorderMiddle,h.colorBorderMiddleEnd,Ie),Ie=O(h.borderInnerWidth,h.colorBorderInner,h.colorBorderInnerEnd,Ie),!Ie&&h.borderShadowWidth&&(u.shadowBlur=h.borderShadowWidth,u.shadowColor=h.colorBorderShadow),pt(u,V,Qe,Oe,he+2*be,Ae+2*be,h.colorPlate,h.colorPlateEnd),u.restore(),[Qe,Oe,he,Ae]}function gt(u,h,f,S,E,P){var O=si.pixelRatio,z=P>=E,V=z?.85*E:P,B=z?P:E;f=z?Be(f+(E-V)/2):f;var K=!!h.title,Q=!!h.units,he=!!h.valueBox,Ce=void 0,De=void 0,Ye=void 0;z?(De=Be(.05*B),Ce=Be(.075*B),Ye=Be(.11*B),K&&(B-=Ce,S+=Ce),Q&&(B-=De),he&&(B-=Ye)):(De=Ce=Be(.15*V),K&&(V-=Ce,S+=Ce),Q&&(V-=De));var Ae=2*h.barStrokeWidth,Xe=h.barBeginCircle?Be(V*h.barBeginCircle/200-Ae/2):0,Ke=Be(V*h.barWidth/100-Ae),Qe=Be(B*h.barLength/100-Ae),Me=Be((B-Qe)/2),He=Be(f+(z?V/2:Me+Xe)),Oe=Be(S+(z?B-Me-Xe+Ae/2:V/2)),be=!z||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*V,Ie=z||h.hasLeft&&h.hasRight?0:(h.hasRight?-1:1)*h.ticksWidth/100*V;return u.barDimensions={isVertical:z,width:V,length:B,barWidth:Ke,barLength:Qe,strokeWidth:Ae,barMargin:Me,radius:Xe,pixelRatio:O,barOffset:null,titleMargin:K?Ce:0,unitsMargin:Q?De:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:f+be,Y:S+Ie,x0:He+be,y0:Oe+Ie,baseX:f,baseY:S,ticksPadding:h.ticksPadding/100},u.barDimensions}function st(u,h,f,S,E,P,O){var z=gt(u,h,S,E,P,O),V=z.isVertical,B=z.width,K=z.barWidth,Q=z.barLength,he=z.strokeWidth,Ce=z.barMargin,De=z.radius,Ye=z.x0,Ae=z.y0,Xe=z.X,Ke=z.Y,Qe=Q;u.save(),u.beginPath();var Me=null;if(h.barBeginCircle){var He=ce.radians(V?270:0),Oe=Math.asin(K/2/De),be=Math.cos(Oe),Ie=Math.sin(Oe),Ve=Ye+(V?De*Ie:De*be-he/2),Ge=V?Ae-De*be:Ae+De*Ie,ut=Zt(V?Ge-Ae:Ve-Ye);Me=Be(ut+De);var At=V?Be(Ye-De*Ie):Ve,Ot=V?Ge:Be(Ae-De*Ie);f==="progress"&&(Q=Me+(Q-Me)*(ce.normalizedValue(h).normal-h.minValue)/(h.maxValue-h.minValue));var It=Be(Ve+Q-Me+he/2),gi=Be(Ge-Q+Me-he/2);u.arc(Ye,Ae,De,He+Oe,He-Oe),V?(u.moveTo(Ve,Ot),u.lineTo(Ve,gi),u.lineTo(At,gi),u.lineTo(At,Ot)):(u.moveTo(Ve,Ot),u.lineTo(It,Ot),u.lineTo(It,Ge),u.lineTo(Ve,Ge))}else{var Zn=Be(V?Xe+(B-K)/2:Xe+Ce),Jn=Be(V?Ke+Q+Ce:Ke+(B-K)/2);f==="progress"&&(Q*=(h.value-h.minValue)/(h.maxValue-h.minValue)),V?u.rect(Zn,Jn,K,-Q):u.rect(Zn,Jn,Q,K)}f!=="progress"&&h.barStrokeWidth&&(u.lineWidth=he,u.strokeStyle=h.colorBarStroke,u.stroke()),f!=="progress"&&h.colorBar?(u.fillStyle=h.colorBarEnd?ce.linearGradient(u,h.colorBar,h.colorBarEnd,Q,V,V?Ke:Xe):h.colorBar,u.fill()):f==="progress"&&h.colorBarProgress&&(u.fillStyle=h.colorBarProgressEnd?ce.linearGradient(u,h.colorBarProgress,h.colorBarProgressEnd,Qe,V,V?Ke:Xe):h.colorBarProgress,u.fill()),u.closePath(),u.restore(),h.barBeginCircle&&(u.barDimensions.radius+=he),u.barDimensions.barOffset=Me,u.barDimensions.barWidth+=he,u.barDimensions.barLength+=he}function ct(u,h,f,S,E,P){st(u,h,"",f,S,E,P)}function mi(u,h){return h.needleSide!==u||h.tickSide!==u||h.numberSide!==u}function Ei(u,h,f,S,E,P){h.barProgress&&st(u,h,"progress",f,S,E,P)}function kn(u,h){var f=u.barDimensions,S=f.isVertical,E=f.width,P=f.length,O=f.barWidth,z=f.barOffset,V=f.barMargin,B=f.X,K=f.Y,Q=f.ticksLength,he=f.ticksPadding,Ce=E*(parseFloat(h.highlightsWidth)||0)/100;if(h.highlights&&Ce){var De=h.tickSide!=="right",Ye=h.tickSide!=="left",Ae=0,Xe=h.highlights.length,Ke=(E-O)/2,Qe=h.maxValue-h.minValue,Me=Be(S?B+Ke:B+V+z),He=Ce,Oe=S?K+P-V-z:K+Ke,be=Be((h.ticksWidth/100+he)*E)+(Ce-h.ticksWidth/100*E),Ie=Be(O+he*E);for(u.save();Ae<Xe;Ae++){var Ve=h.highlights[Ae],Ge=Q*Zt(h.minValue-Ve.from)/Qe,ut=Q*Zt((Ve.to-Ve.from)/Qe);u.beginPath(),u.fillStyle=Ve.color,S?(De&&u.rect(Me-be,Oe-Ge,He,-ut),Ye&&u.rect(Me+Ie,Oe-Ge,He,-ut)):(De&&u.rect(Me+Ge,Oe-be,ut,He),Ye&&u.rect(Me+Ge,Oe+Ie,ut,He)),u.fill(),u.closePath()}u.restore()}}function Ri(u,h,f,S,E){u.beginPath(),u.moveTo(h,f),u.lineTo(S,E),u.stroke(),u.closePath()}function Ki(u,h,f,S,E,P,O,z,V){var B=u.barDimensions,K=B.isVertical,Q=B.length,he=B.barWidth,Ce=B.barOffset,De=B.barMargin,Ye=B.pixelRatio,Ae=B.width,Xe=B.X,Ke=B.Y,Qe=B.ticksLength,Me=B.ticksPadding,He=(Ae-he)/2,Oe=void 0,be=void 0,Ie=0,Ve=f.length,Ge=void 0,ut=V*Ae,At=He-Me*Ae,Ot=He+he+ut+Me*Ae,It=h instanceof Array?h:new Array(f.length).fill(h);u.save(),u.lineWidth=z*Ye;for(var gi=Qe/(E-S);Ie<Ve;Ie++)Ge=f[Ie],u.strokeStyle=It[Ie],K?(be=Ke+Q-De-Ce+(S-Ge)*gi,P&&(Oe=Xe+At,Ri(u,Oe,be,Be(Oe-ut),be)),O&&(Oe=Xe+Ot,Ri(u,Oe,be,Be(Oe-ut),be))):(Oe=Xe+De+Ce-(S-Ge)*gi,P&&(be=Ke+At,Ri(u,Oe,be,Oe,Be(be-ut))),O&&(be=Ke+Ot,Ri(u,Oe,Be(be),Oe,be-ut)));u.restore()}function pi(u,h){var f=ce.prepareTicks(h),S=$a(f,2),E=S[0],P=S[1],O=2,z=(h.maxValue-h.minValue)/(h.majorTicks.length-1),V=h.colorMajorTicks instanceof Array?h.colorMajorTicks:new Array(h.majorTicks.length).fill(h.colorStrokeTicks||h.colorMajorTicks);if(Ki(u,V,h.exactTicks?h.majorTicks:h.majorTicks.map(function(ut,At){return h.minValue+z*At}),h.minValue,h.maxValue,E,P,O,h.ticksWidth/100),h.strokeTicks){var B=u.barDimensions,K=B.isVertical,Q=B.length,he=B.width,Ce=B.barWidth,De=B.barMargin,Ye=B.barOffset,Ae=B.X,Xe=B.Y,Ke=B.ticksLength,Qe=B.pixelRatio,Me=B.ticksPadding,He=(he-Ce)/2+Ce+Me*he,Oe=(he-Ce)/2-Me*he,be=void 0,Ie=void 0,Ve=void 0,Ge=void 0;u.strokeStyle=h.colorStrokeTicks||V[0],O*=Qe,K?(Ie=Xe+Q-De-Ye+O/2,Ge=Ie-Ke-O,E&&(Ve=be=Be(Ae+Oe),fi(u,be,Ie,Ve,Ge)),P&&(Ve=be=Be(Ae+He),fi(u,be,Ie,Ve,Ge))):(be=Ae+De+Ye-O/2,Ve=be+Ke+O,E&&(Ge=Ie=Be(Xe+Oe),fi(u,be,Ie,Ve,Ge)),P&&(Ge=Ie=Be(Xe+He),fi(u,be,Ie,Ve,Ge)))}}function fi(u,h,f,S,E){u.beginPath(),u.moveTo(h,f),u.lineTo(S,E),u.stroke(),u.closePath()}function fr(u,h){var f=ce.prepareTicks(h),S=$a(f,2),E=S[0],P=S[1],O=[],z=h.minValue,V=Math.abs(h.minorTicks)||0,B=V?(h.maxValue-h.minValue)/(V*(h.majorTicks.length-1)):0;if(V)if(h.exactTicks)for(var K=Jt.mod(h.majorTicks[0],V)||0;z<h.maxValue;z+=V)K+z<h.maxValue&&O.push(K+z);else for(;z<h.maxValue;z+=B)O.push(z);Ki(u,h.colorMinorTicks||h.colorStrokeTicks,O,h.minValue,h.maxValue,E,P,1,h.ticksWidthMinor/100)}function gr(u,h){var f=u.barDimensions,S=f.isVertical,E=f.length,P=f.width,O=f.barWidth,z=f.barMargin,V=f.barOffset,B=f.X,K=f.Y,Q=f.ticksLength,he=f.ticksPadding,Ce=h.maxValue-h.minValue,De=Ce/(h.majorTicks.length-1),Ye=h.exactTicks?h.majorTicks:h.majorTicks.map(function(It,gi){return h.minValue+De*gi}),Ae=Ye.length,Xe=h.numberSide!=="right",Ke=h.numberSide!=="left",Qe=h.fontNumbersSize*P/200,Me=0,He=(h.ticksWidth/100+2*he)*P,Oe=(P-O)/2-He,be=(P-O)/2+O+He,Ie=void 0,Ve=void 0,Ge=void 0,ut=void 0,At=h.colorNumbers instanceof Array?h.colorNumbers:new Array(Ae).fill(h.colorNumbers),Ot=h.numbersMargin/100*P;for(u.font=ce.font(h,"Numbers",P/200),u.lineWidth=0,u.textAlign="center";Me<Ae;Me++)u.fillStyle=At[Me],ut=h.majorTicks[Me],Ge=h.exactTicks?Q*((Ye[Me]-h.minValue)/Ce):Me*Q/(Ae-1),S?(Ve=K+E-z-V-Ge+Qe/3,Xe&&(u.textAlign="right",u.fillText(ut,B+Oe-Ot,Ve)),Ke&&(u.textAlign="left",u.fillText(ut,B+be+Ot,Ve))):(u.measureText(ut).width,Ie=B+z+V+Ge,Xe&&u.fillText(ut,Ie,K+Oe-Ot),Ke&&u.fillText(ut,Ie,K+be+Qe+Ot))}function Yn(u,h){if(h.title){var f=u.barDimensions,S=f.isVertical,E=f.width,P=f.length,O=f.baseX,z=f.baseY,V=f.titleMargin,B=h.fontTitleSize*E/200,K=Be(O+(S?E:P)/2),Q=Be(z+V/2-(S?B:B/2)-.025*(S?P:E));u.save(),u.textAlign="center",u.fillStyle=h.colorTitle,u.font=ce.font(h,"Title",E/200),u.lineWidth=0,u.fillText(h.title,K,Q,S?E:P),u.restore()}}function Qt(u,h){if(h.units){var f=u.barDimensions,S=f.isVertical,E=f.width,P=f.length,O=f.baseX,z=f.baseY,V=f.unitsMargin,B=h.fontUnitsSize*E/200,K=Be(O+(S?E:P)/2),Q=Be(z+(S?P:E)+V/2-B/2);u.save(),u.textAlign="center",u.fillStyle=h.colorUnits,u.font=ce.font(h,"Units",E/200),u.lineWidth=0,u.fillText(ce.formatContext(h,h.units),K,Q,S?E:P),u.restore()}}function Yo(u,h){if(h.needle){var f=u.barDimensions,S=f.isVertical,E=f.width,P=f.length,O=f.barWidth,z=f.barOffset,V=f.barMargin,B=f.ticksLength,K=f.X,Q=f.Y,he=f.ticksPadding,Ce=h.needleSide!=="right",De=h.needleSide!=="left",Ye=B*(ce.normalizedValue(h).indented-h.minValue)/(h.maxValue-h.minValue),Ae=(h.ticksWidth/100+he)*E,Xe=O/2+Ae,Ke=Xe*(h.needleEnd/100),Qe=void 0,Me=void 0,He=void 0,Oe=void 0,be=h.needleType.toLowerCase()==="arrow"?Ko:Xo,Ie=(E-O)/2,Ve=Xe*(h.needleStart/100),Ge=Ie-Ae-Ve,ut=Ie+O+Ae+Ve;u.save(),ce.drawNeedleShadow(u,h),S?(He=Be(Q+P-V-z-Ye),Ce&&(Qe=Be(K+Ge),Me=Qe+Ke,be(u,h,Qe,He,Me,He,Ke)),De&&(Qe=Be(K+ut),Me=Qe-Ke,be(u,h,Qe,He,Me,He,Ke,!0))):(Qe=Be(K+V+z+Ye),Ce&&(He=Be(Q+Ge),Oe=He+Ke,be(u,h,Qe,He,Qe,Oe,Ke)),De&&(He=Be(Q+ut),Oe=He-Ke,be(u,h,Qe,He,Qe,Oe,Ke,!0))),u.restore()}}function vr(u,h,f,S){return h.colorNeedleEnd?ce.linearGradient(u,S?h.colorNeedleEnd:h.colorNeedle,S?h.colorNeedle:h.colorNeedleEnd,f,!u.barDimensions.isVertical):h.colorNeedle}function Xo(u,h,f,S,E,P,O,z){u.lineWidth=h.needleWidth,u.strokeStyle=vr(u,h,O,z),u.beginPath(),u.moveTo(f,S),u.lineTo(E,P),u.stroke(),u.closePath()}function Ko(u,h,f,S,E,P,O,z){var V=Be(.4*O),B=O-V,K=f===E,Q=h.needleWidth/2;u.fillStyle=vr(u,h,O,z),u.beginPath(),K?(S>P&&(B*=-1),u.moveTo(f-Q,S),u.lineTo(f+Q,S),u.lineTo(f+Q,S+B),u.lineTo(f,P),u.lineTo(f-Q,S+B),u.lineTo(f-Q,S)):(f>E&&(B*=-1),u.moveTo(f,S-Q),u.lineTo(f,S+Q),u.lineTo(f+B,S+Q),u.lineTo(E,S),u.lineTo(f+B,S-Q),u.lineTo(f,S-Q)),u.fill(),u.closePath()}function Qo(u,h,f,S,E,P,O){var z=(parseFloat(h.fontValueSize)||0)*P/200,V=(.11*O-z)/2;u.barDimensions.isVertical&&ce.drawValueBox(u,h,f,S+P/2,E+O-z-V,P)}var $a=(function(){function u(h,f){var S=[],E=!0,P=!1,O=void 0;try{for(var z,V=h[Symbol.iterator]();!(E=(z=V.next()).done)&&(S.push(z.value),!f||S.length!==f);E=!0);}catch(B){P=!0,O=B}finally{try{!E&&V.return&&V.return()}finally{if(P)throw O}}return S}return function(h,f){if(Array.isArray(h))return h;if(Symbol.iterator in Object(h))return u(h,f);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),Xn=function u(h,f,S){h===null&&(h=Function.prototype);var E=Object.getOwnPropertyDescriptor(h,f);if(E===void 0){var P=Object.getPrototypeOf(h);return P===null?void 0:u(P,f,S)}if("value"in E)return E.value;var O=E.get;if(O!==void 0)return O.call(S)},yr=function u(h,f,S,E){var P=Object.getOwnPropertyDescriptor(h,f);if(P===void 0){var O=Object.getPrototypeOf(h);O!==null&&u(O,f,S,E)}else if("value"in P&&P.writable)P.value=S;else{var z=P.set;z!==void 0&&z.call(E,S)}return S},Ni=(function(){function u(h,f){for(var S=0;S<f.length;S++){var E=f[S];E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(h,E.key,E)}}return function(h,f,S){return f&&u(h.prototype,f),S&&u(h,S),h}})(),qi=null,Ya=(function(){function u(){i(this,u),this._events={},this.addListener=this.on,this.removeListener=this.off}return Ni(u,[{key:"emit",value:function(h){if(this._events[h]){for(var f=0,S=this._events[h].length,E=arguments.length,P=Array(E>1?E-1:0),O=1;O<E;O++)P[O-1]=arguments[O];for(;f<S;f++)this._events[h][f]&&this._events[h][f].apply(this,P)}}},{key:"once",value:function(h){for(var f=arguments.length,S=Array(f>1?f-1:0),E=1;E<f;E++)S[E-1]=arguments[E];for(var P=0,O=S.length,z=this;P<O;P++)(function(){var V=S[P],B=function K(){z.off(h,K),V.apply(z,arguments)};S[P]=B})();this.on.apply(this,[h].concat(S))}},{key:"on",value:function(h){this._events[h]||(this._events[h]=[]);for(var f=0,S=arguments.length<=1?0:arguments.length-1;f<S;f++)this._events[h].push(arguments.length<=f+1?void 0:arguments[f+1])}},{key:"off",value:function(h){if(this._events[h])for(var f=0,S=arguments.length<=1?0:arguments.length-1;f<S;f++)for(var E=arguments.length<=f+1?void 0:arguments[f+1],P=void 0;~(P=this._events[h].indexOf(E));)this._events[h].splice(P,1)}},{key:"removeAllListeners",value:function(h){delete this._events[h]}},{key:"listeners",get:function(){return this._events}}]),u})(),br=r("requestAnimationFrame")||function(u){return setTimeout(function(){return u(new Date().getTime())},1e3/60)},xn={linear:function(u){return u},quad:function(u){return Math.pow(u,2)},dequad:function(u){return 1-xn.quad(1-u)},quint:function(u){return Math.pow(u,5)},dequint:function(u){return 1-Math.pow(1-u,5)},cycle:function(u){return 1-Math.sin(Math.acos(u))},decycle:function(u){return Math.sin(Math.acos(1-u))},bounce:function(u){return 1-xn.debounce(1-u)},debounce:function(u){for(var h=0,f=1;;h+=f,f/=2)if(u>=(7-4*h)/11)return-Math.pow((11-6*h-11*u)/4,2)+Math.pow(f,2)},elastic:function(u){return 1-xn.delastic(1-u)},delastic:function(u){return Math.pow(2,10*(u-1))*Math.cos(20*Math.PI*1.5/3*u)}},Xa=(function(){function u(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},E=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,u),this.duration=f,this.rule=h,this.draw=S,this.end=E,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",S);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",E)}return Ni(u,[{key:"animate",value:function(h,f){var S=this;this.frame&&this.cancel();var E=window.performance&&window.performance.now?window.performance.now():r("animationStartTime")||Date.now();h=h||this.draw,f=f||this.end,this.draw=h,this.end=f,this.frame=br(function(P){return o(P,h,E,xn[S.rule]||S.rule,S.duration,f,S)})}},{key:"cancel",value:function(){this.frame&&((r("cancelAnimationFrame")||function(h){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),u})();Xa.rules=xn;var Qi=(function(){function u(h,f,S){i(this,u),this.options=h,this.element=f.toLowerCase(),this.type=u.toDashed(S),this.Type=a[S],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||u.domReady(this.traverse.bind(this))}return Ni(u,[{key:"isValidNode",value:function(h){return!(!h.tagName||h.tagName.toLowerCase()!==this.element||h.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var h=document.getElementsByTagName(this.element),f=0,S=h.length;f<S;f++)this.process(h[f]);this.isObservable&&!this.mutationsObserved&&(new MutationObserver(this.observe.bind(this)).observe(document.body,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),this.mutationsObserved=!0)}},{key:"observe",value:function(h){for(var f=0,S=h.length;f<S;f++){var E=h[f];if(E.type==="attributes"&&E.attributeName==="data-type"&&this.isValidNode(E.target)&&E.oldValue!==this.type)setTimeout(this.process.bind(this,E.target));else if(E.addedNodes&&E.addedNodes.length)for(var P=0,O=E.addedNodes.length;P<O;P++)setTimeout(this.process.bind(this,E.addedNodes[P]))}}},{key:"process",value:function(h){var f=this;if(!this.isValidNode(h))return null;var S=void 0,E=JSON.parse(JSON.stringify(this.options)),P=null;for(S in E)if(E.hasOwnProperty(S)){var O=u.toAttributeName(S),z=u.parse(h.getAttribute(O));z!=null&&(E[S]=z)}return E.renderTo=h,P=new this.Type(E),P.draw&&P.draw(),this.isObservable&&(P.observer=new MutationObserver(function(V){V.forEach(function(B){if(B.type==="attributes"){var K=B.attributeName.toLowerCase(),Q=h.getAttribute(K).toLowerCase();if(K==="data-type"&&Q&&Q!==f.type)P.observer.disconnect(),delete P.observer,P.destroy&&P.destroy();else if(K.substr(0,5)==="data-"){var he=K.substr(5).split("-").map(function(De,Ye){return Ye?De.charAt(0).toUpperCase()+De.substr(1):De}).join(""),Ce={};Ce[he]=u.parse(h.getAttribute(B.attributeName)),he==="value"?P&&(P.value=Ce[he]):P.update&&P.update(Ce)}}})}),P.observer.observe(h,{attributes:!0})),P}}],[{key:"parse",value:function(h){if(h==="true")return!0;if(h==="false")return!1;if(h!=="undefined"){if(h==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(h))return h.split(",");try{return JSON.parse(h)}catch{}return h}}},{key:"toDashed",value:function(h){for(var f=h.split(/(?=[A-Z])/),S=1,E=f.length,P=f[0].toLowerCase();S<E;S++)P+="-"+f[S].toLowerCase();return P}},{key:"toCamelCase",value:function(h){for(var f=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],S=h.split(/-/),E=0,P=S.length,O="";E<P;E++)O+=E||f?S[E][0].toUpperCase()+S[E].substr(1).toLowerCase():S[E].toLowerCase();return O}},{key:"toAttributeName",value:function(h){return"data-"+u.toDashed(h)}},{key:"domReady",value:function(h){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return h();window.addEventListener?window.addEventListener("DOMContentLoaded",h,!1):window.attachEvent&&window.attachEvent("onload",h)}}]),u})(),si=(function(){function u(h,f,S){i(this,u),u.collection.push(this),this.width=f||0,this.height=S||0,this.element=h,this.init()}return Ni(u,[{key:"init",value:function(){var h=u.pixelRatio;this.element.width=this.width*h,this.element.height=this.height*h,this.element.style.width=this.width+"px",this.element.style.height=this.height+"px",this.elementClone=this.element.cloneNode(!0),this.context=this.element.getContext("2d"),this.contextClone=this.elementClone.getContext("2d"),this.drawWidth=this.element.width,this.drawHeight=this.element.height,this.drawX=this.drawWidth/2,this.drawY=this.drawHeight/2,this.minSide=this.drawX<this.drawY?this.drawX:this.drawY,this.contextClone.translate(this.drawX,this.drawY),this.elementClone.initialized=!1,this.context.translate(this.drawX,this.drawY),this.context.max=this.contextClone.max=this.minSide,this.context.maxRadius=this.contextClone.maxRadius=null}},{key:"destroy",value:function(){var h=u.collection.indexOf(this);~h&&u.collection.splice(h,1),this.context.clearRect(-this.drawX,-this.drawY,this.drawWidth,this.drawHeight),this.context.max=null,delete this.context.max,this.context.maxRadius=null,delete this.context.maxRadius,this.context=null,this.contextClone=null,this.elementClone=null,this.element=null,this.onRedraw=null}},{key:"commit",value:function(){var h=u.pixelRatio;return h!==1&&this.contextClone.scale(h,h),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var h=0,f=u.collection.length;h<f;h++)u.collection[h].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),u})();si.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(si.redraw);var Zi={renderTo:null,width:0,height:0,minValue:0,maxValue:100,value:0,units:!1,exactTicks:!1,majorTicks:[0,20,40,60,80,100],minorTicks:10,strokeTicks:!0,animatedValue:!1,animateOnInit:!1,title:!1,borders:!0,numbersMargin:1,listeners:null,valueInt:3,valueDec:2,majorTicksInt:1,majorTicksDec:0,animation:!0,animationDuration:500,animationRule:"cycle",colorPlate:"#fff",colorPlateEnd:"",colorMajorTicks:"#444",colorMinorTicks:"#666",colorStrokeTicks:"",colorTitle:"#888",colorUnits:"#888",colorNumbers:"#444",colorNeedle:"rgba(240,128,128,1)",colorNeedleEnd:"rgba(255,160,122,.9)",colorValueText:"#444",colorValueTextShadow:"rgba(0,0,0,0.3)",colorBorderShadow:"rgba(0,0,0,0.5)",colorBorderOuter:"#ddd",colorBorderOuterEnd:"#aaa",colorBorderMiddle:"#eee",colorBorderMiddleEnd:"#f0f0f0",colorBorderInner:"#fafafa",colorBorderInnerEnd:"#ccc",colorValueBoxRect:"#888",colorValueBoxRectEnd:"#666",colorValueBoxBackground:"#babab2",colorValueBoxShadow:"rgba(0,0,0,1)",colorNeedleShadowUp:"rgba(2,255,255,0.2)",colorNeedleShadowDown:"rgba(188,143,143,0.45)",colorBarStroke:"#222",colorBar:"#ccc",colorBarProgress:"#888",colorBarShadow:"#000",fontNumbers:"Arial",fontTitle:"Arial",fontUnits:"Arial",fontValue:"Arial",fontNumbersSize:20,fontTitleSize:24,fontUnitsSize:22,fontValueSize:26,fontNumbersStyle:"normal",fontTitleStyle:"normal",fontUnitsStyle:"normal",fontValueStyle:"normal",fontNumbersWeight:"normal",fontTitleWeight:"normal",fontUnitsWeight:"normal",fontValueWeight:"normal",needle:!0,needleShadow:!0,needleType:"arrow",needleStart:5,needleEnd:85,needleWidth:4,borderOuterWidth:3,borderMiddleWidth:3,borderInnerWidth:3,borderShadowWidth:3,valueBox:!0,valueBoxStroke:5,valueBoxWidth:0,valueText:"",valueTextShadow:!0,valueBoxBorderRadius:2.5,highlights:[{from:20,to:60,color:"#eee"},{from:60,to:80,color:"#ccc"},{from:80,to:100,color:"#999"}],highlightsWidth:15,highlightsLineCap:"butt",barWidth:20,barStrokeWidth:0,barProgress:!0,barShadow:0};s.prototype=Object.create(Array.prototype),s.prototype.constructor=s,s.prototype.get=function(u){if(typeof u=="string")for(var h=0,f=this.length;h<f;h++){var S=this[h].options.renderTo.tagName?this[h].options.renderTo:document.getElementById(this[h].options.renderTo||"");if(S.getAttribute("id")===u)return this[h]}else if(typeof u=="number")return this[u];return null};var Ka="2.2.1",Be=Math.round,Zt=Math.abs,Ji=new s;Ji.version=Ka;var Jt=(function(u){function h(f){i(this,h);var S=e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this)),E=S.constructor.name;if(E==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(Ji.push(S),f.listeners&&Object.keys(f.listeners).forEach(function(O){(f.listeners[O]instanceof Array?f.listeners[O]:[f.listeners[O]]).forEach(function(z){S.on(O,z)})}),S.version=Ka,S.type=a[E]||h,S.initialized=!1,f.minValue=parseFloat(f.minValue),f.maxValue=parseFloat(f.maxValue),f.value=parseFloat(f.value)||0,f.borders||(f.borderInnerWidth=f.borderMiddleWidth=f.borderOuterWidth=0),!f.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var P=f.renderTo.tagName?f.renderTo:document.getElementById(f.renderTo);if(!(P instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return f.width=parseFloat(f.width)||0,f.height=parseFloat(f.height)||0,f.width&&f.height||(f.width||(f.width=P.parentNode?P.parentNode.offsetWidth:P.offsetWidth),f.height||(f.height=P.parentNode?P.parentNode.offsetHeight:P.offsetHeight)),S.options=f||{},S.options.animateOnInit&&(S._value=S.options.value,S.options.value=S.options.minValue),S.canvas=new si(P,f.width,f.height),S.canvas.onRedraw=S.draw.bind(S),S.animation=new Xa(f.animationRule,f.animationDuration),S}return t(h,u),Ni(h,[{key:"update",value:function(f){return Object.assign(this.options,this.type.configure(f||{})),this.canvas.width=this.options.width,this.canvas.height=this.options.height,this.animation.rule=this.options.animationRule,this.animation.duration=this.options.animationDuration,this.canvas.redraw(),this}},{key:"destroy",value:function(){var f=Ji.indexOf(this);~f&&Ji.splice(f,1),this.canvas.destroy(),this.canvas=null,this.animation.destroy(),this.animation=null,this.emit("destroy")}},{key:"draw",value:function(){return this.options.animateOnInit&&!this.initialized&&(this.value=this._value,this.initialized=!0,this.emit("init")),this.emit("render"),this}},{key:"value",set:function(f){var S=this;f=h.ensureValue(f,this.options.minValue);var E=this.options.value;if(f!==E)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===f))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=f),this.emit("animationStart"),this.animation.animate(function(P){var O=E+(f-E)*P;S.options.animatedValue&&S.emit("value",O,S.value),S.options.value=O,S.draw(),S.emit("animate",P,S.options.value)},function(){S._value!==void 0&&(S.emit("value",S._value,S.value),S.options.value=S._value,delete S._value),S.draw(),S.emit("animationEnd"),S.animation.frame=null})}else this.emit("value",f,this.value),this.options.value=f,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(f){return f}},{key:"initialize",value:function(f,S){return new Qi(S,"canvas",f)}},{key:"fromElement",value:function(f){var S=Qi.toCamelCase(f.getAttribute("data-type")),E=f.attributes,P=0,O=E.length,z={};if(S){for(/Gauge$/.test(S)||(S+="Gauge");P<O;P++)z[Qi.toCamelCase(E[P].name.replace(/^data-/,""),!1)]=Qi.parse(E[P].value);new Qi(z,f.tagName,S).process(f)}}},{key:"ensureValue",value:function(f){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return f=parseFloat(f),!isNaN(f)&&isFinite(f)||(f=parseFloat(S)||0),f}},{key:"mod",value:function(f,S){return(f%S+S)%S}},{key:"version",get:function(){return Ka}}]),h})(Ya);a!==void 0&&(a.BaseGauge=Jt,a.gauges=(window.document||{}).gauges=Ji);var Zo=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,ce={roundRect:c,padValue:m,formatMajorTickNumber:v,radians:b,radialPoint:k,linearGradient:M,drawNeedleShadow:F,drawValueBox:Le,verifyError:d,prepareTicks:l,font:j,normalizedValue:qe,formatContext:p},Tn=Math.PI,Kn=Tn/2,_r=Object.assign({},Zi,{ticksAngle:270,startAngle:45,colorNeedleCircleOuter:"#f0f0f0",colorNeedleCircleOuterEnd:"#ccc",colorNeedleCircleInner:"#e8e8e8",colorNeedleCircleInnerEnd:"#f5f5f5",needleCircleSize:10,needleCircleInner:!0,needleCircleOuter:!0,needleStart:20,animationTarget:"needle",useMinPath:!1,barWidth:0,barStartPosition:"left"}),Jo=(function(u){function h(f){return i(this,h),f=Object.assign({},_r,f||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(f)))}return t(h,u),Ni(h,[{key:"draw",value:function(){try{var f=this.canvas,S=[-f.drawX,-f.drawY,f.drawWidth,f.drawHeight],E=S[0],P=S[1],O=S[2],z=S[3],V=this.options;if(V.animationTarget==="needle"){if(!f.elementClone.initialized){var B=f.contextClone;B.clearRect(E,P,O,z),this.emit("beforePlate"),Pe(B,V),this.emit("beforeHighlights"),je(B,V),this.emit("beforeMinorTicks"),vt(B,V),this.emit("beforeMajorTicks"),tt(B,V),this.emit("beforeNumbers"),ie(B,V),this.emit("beforeTitle"),fe(B,V),this.emit("beforeUnits"),we(B,V),f.elementClone.initialized=!0}this.canvas.commit(),f.context.clearRect(E,P,O,z),f.context.drawImage(f.elementClone,E,P,O,z),this.emit("beforeProgressBar"),Mt(f.context,V),this.emit("beforeValueBox"),bt(f.context,V,$t(this)),this.emit("beforeNeedle"),$e(f.context,V)}else{var K=-ce.radians((V.value-V.minValue)/(V.maxValue-V.minValue)*V.ticksAngle);if(f.context.clearRect(E,P,O,z),this.emit("beforePlate"),Pe(f.context,V),f.context.rotate(K),this.emit("beforeHighlights"),je(f.context,V),this.emit("beforeMinorTicks"),vt(f.context,V),this.emit("beforeMajorTicks"),tt(f.context,V),this.emit("beforeNumbers"),ie(f.context,V),this.emit("beforeProgressBar"),Mt(f.context,V),f.context.rotate(-K),!f.elementClone.initialized){var Q=f.contextClone;Q.clearRect(E,P,O,z),this.emit("beforeTitle"),fe(Q,V),this.emit("beforeUnits"),we(Q,V),this.emit("beforeNeedle"),$e(Q,V),f.elementClone.initialized=!0}f.context.drawImage(f.elementClone,E,P,O,z)}this.emit("beforeValueBox"),bt(f.context,V,$t(this)),Xn(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(he){ce.verifyError(he)}return this}},{key:"value",set:function(f){f=Jt.ensureValue(f,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=f,f=this.options.value+((f-this.options.value)%360+540)%360-180),yr(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",f,this)},get:function(){return Xn(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",this)}}],[{key:"configure",value:function(f){return f.barWidth>50&&(f.barWidth=50),isNaN(f.startAngle)&&(f.startAngle=45),isNaN(f.ticksAngle)&&(f.ticksAngle=270),f.ticksAngle>360&&(f.ticksAngle=360),f.ticksAngle<0&&(f.ticksAngle=0),f.startAngle<0&&(f.startAngle=0),f.startAngle>360&&(f.startAngle=360),f}}]),h})(Jt);a!==void 0&&(a.RadialGauge=Jo),Jt.initialize("RadialGauge",_r);var wr=Object.assign({},Zi,{borderRadius:0,barBeginCircle:30,colorBarEnd:"",colorBarProgressEnd:"",needleWidth:6,tickSide:"both",needleSide:"both",numberSide:"both",ticksWidth:10,ticksWidthMinor:5,ticksPadding:5,barLength:85,fontTitleSize:26,highlightsWidth:10}),Qn=(function(u){function h(f){return i(this,h),f=Object.assign({},wr,f||{}),e(this,(h.__proto__||Object.getPrototypeOf(h)).call(this,h.configure(f)))}return t(h,u),Ni(h,[{key:"draw",value:function(){try{var f=this.canvas,S=[-f.drawX,-f.drawY,f.drawWidth,f.drawHeight],E=S[0],P=S[1],O=S[2],z=S[3],V=this.options;if(!f.elementClone.initialized){var B=f.contextClone;B.clearRect(E,P,O,z),this.emit("beforePlate"),this.drawBox=kt(B,V,E,P,O,z),this.emit("beforeBar"),ct.apply(void 0,[B,V].concat(n(this.drawBox))),f.contextClone.barDimensions=B.barDimensions,this.emit("beforeHighlights"),kn(B,V),this.emit("beforeMinorTicks"),fr(B,V),this.emit("beforeMajorTicks"),pi(B,V),this.emit("beforeNumbers"),gr(B,V),this.emit("beforeTitle"),Yn(B,V),this.emit("beforeUnits"),Qt(B,V),f.elementClone.initialized=!0}this.canvas.commit(),f.context.clearRect(E,P,O,z),f.context.drawImage(f.elementClone,E,P,O,z),this.emit("beforeProgressBar"),Ei.apply(void 0,[f.context,V].concat(n(this.drawBox))),this.emit("beforeNeedle"),Yo(f.context,V),this.emit("beforeValueBox"),Qo.apply(void 0,[f.context,V,V.animatedValue?this.options.value:this.value].concat(n(this.drawBox))),Xn(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"draw",this).call(this)}catch(K){ce.verifyError(K)}return this}}],[{key:"configure",value:function(f){return f.barStrokeWidth>=f.barWidth&&(f.barStrokeWidth=Be(f.barWidth/2)),f.hasLeft=mi("right",f),f.hasRight=mi("left",f),f.value>f.maxValue&&(f.value=f.maxValue),f.value<f.minValue&&(f.value=f.minValue),Jt.configure(f)}}]),h})(Jt);a!==void 0&&(a.LinearGauge=Qn),Jt.initialize("LinearGauge",wr),typeof bo<"u"&&Object.assign(a,{Collection:s,GenericOptions:Zi,Animation:Xa,BaseGauge:Jt,drawings:ce,SmartCanvas:si,DomObserver:Qi,vendorize:r})})(typeof bo<"u"?bo.exports:window)});var km=ns((PD,$o)=>{(function(a,n,e,t){"use strict";var i=["","webkit","Moz","MS","ms","o"],r=n.createElement("div"),o="function",s=Math.round,d=Math.abs,p=Date.now;function l(y,_,T){return setTimeout(j(y,T),_)}function c(y,_,T){return Array.isArray(y)?(m(y,T[_],T),!0):!1}function m(y,_,T){var I;if(y)if(y.forEach)y.forEach(_,T);else if(y.length!==t)for(I=0;I<y.length;)_.call(T,y[I],I,y),I++;else for(I in y)y.hasOwnProperty(I)&&_.call(T,y[I],I,y)}function v(y,_,T){var I="DEPRECATED METHOD: "+_+`
2
- `+T+` AT
3
- `;return function(){var $=new Error("get-stack-trace"),ae=$&&$.stack?$.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",Ze=a.console&&(a.console.warn||a.console.log);return Ze&&Ze.call(a.console,I,ae),y.apply(this,arguments)}}var b;typeof Object.assign!="function"?b=function(_){if(_===t||_===null)throw new TypeError("Cannot convert undefined or null to object");for(var T=Object(_),I=1;I<arguments.length;I++){var $=arguments[I];if($!==t&&$!==null)for(var ae in $)$.hasOwnProperty(ae)&&(T[ae]=$[ae])}return T}:b=Object.assign;var k=v(function(_,T,I){for(var $=Object.keys(T),ae=0;ae<$.length;)(!I||I&&_[$[ae]]===t)&&(_[$[ae]]=T[$[ae]]),ae++;return _},"extend","Use `assign`."),M=v(function(_,T){return k(_,T,!0)},"merge","Use `assign`.");function F(y,_,T){var I=_.prototype,$;$=y.prototype=Object.create(I),$.constructor=y,$._super=I,T&&b($,T)}function j(y,_){return function(){return y.apply(_,arguments)}}function te(y,_){return typeof y==o?y.apply(_&&_[0]||t,_):y}function ye(y,_){return y===t?_:y}function Le(y,_,T){m(Pe(_),function(I){y.addEventListener(I,T,!1)})}function qe(y,_,T){m(Pe(_),function(I){y.removeEventListener(I,T,!1)})}function ke(y,_){for(;y;){if(y==_)return!0;y=y.parentNode}return!1}function Z(y,_){return y.indexOf(_)>-1}function Pe(y){return y.trim().split(/\s+/g)}function je(y,_,T){if(y.indexOf&&!T)return y.indexOf(_);for(var I=0;I<y.length;){if(T&&y[I][T]==_||!T&&y[I]===_)return I;I++}return-1}function vt(y){return Array.prototype.slice.call(y,0)}function it(y,_,T){for(var I=[],$=[],ae=0;ae<y.length;){var Ze=_?y[ae][_]:y[ae];je($,Ze)<0&&I.push(y[ae]),$[ae]=Ze,ae++}return T&&(_?I=I.sort(function(Rt,Yt){return Rt[_]>Yt[_]}):I=I.sort()),I}function tt(y,_){for(var T,I,$=_[0].toUpperCase()+_.slice(1),ae=0;ae<i.length;){if(T=i[ae],I=T?T+$:_,I in y)return I;ae++}return t}var yt=1;function ui(){return yt++}function ie(y){var _=y.ownerDocument||y;return _.defaultView||_.parentWindow||a}var fe=/mobile|tablet|ip(ad|hone|od)|android/i,we="ontouchstart"in a,$e=tt(a,"PointerEvent")!==t,bt=we&&fe.test(navigator.userAgent),Et="touch",Mt="pen",$t="mouse",pt="kinect",$n=25,kt=1,gt=2,st=4,ct=8,mi=1,Ei=2,kn=4,Ri=8,Ki=16,pi=Ei|kn,fi=Ri|Ki,fr=pi|fi,gr=["x","y"],Yn=["clientX","clientY"];function Qt(y,_){var T=this;this.manager=y,this.callback=_,this.element=y.element,this.target=y.options.inputTarget,this.domHandler=function(I){te(y.options.enable,[y])&&T.handler(I)},this.init()}Qt.prototype={handler:function(){},init:function(){this.evEl&&Le(this.element,this.evEl,this.domHandler),this.evTarget&&Le(this.target,this.evTarget,this.domHandler),this.evWin&&Le(ie(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&qe(this.element,this.evEl,this.domHandler),this.evTarget&&qe(this.target,this.evTarget,this.domHandler),this.evWin&&qe(ie(this.element),this.evWin,this.domHandler)}};function Yo(y){var _,T=y.options.inputClass;return T?_=T:$e?_=Jt:bt?_=Qn:we?_=S:_=Zi,new _(y,vr)}function vr(y,_,T){var I=T.pointers.length,$=T.changedPointers.length,ae=_&kt&&I-$===0,Ze=_&(st|ct)&&I-$===0;T.isFirst=!!ae,T.isFinal=!!Ze,ae&&(y.session={}),T.eventType=_,Xo(y,T),y.emit("hammer.input",T),y.recognize(T),y.session.prevInput=T}function Xo(y,_){var T=y.session,I=_.pointers,$=I.length;T.firstInput||(T.firstInput=$a(_)),$>1&&!T.firstMultiple?T.firstMultiple=$a(_):$===1&&(T.firstMultiple=!1);var ae=T.firstInput,Ze=T.firstMultiple,Dt=Ze?Ze.center:ae.center,Rt=_.center=Xn(I);_.timeStamp=p(),_.deltaTime=_.timeStamp-ae.timeStamp,_.angle=Ya(Dt,Rt),_.distance=qi(Dt,Rt),Ko(T,_),_.offsetDirection=Ni(_.deltaX,_.deltaY);var Yt=yr(_.deltaTime,_.deltaX,_.deltaY);_.overallVelocityX=Yt.x,_.overallVelocityY=Yt.y,_.overallVelocity=d(Yt.x)>d(Yt.y)?Yt.x:Yt.y,_.scale=Ze?xn(Ze.pointers,I):1,_.rotation=Ze?br(Ze.pointers,I):0,_.maxPointers=T.prevInput?_.pointers.length>T.prevInput.maxPointers?_.pointers.length:T.prevInput.maxPointers:_.pointers.length,Qo(T,_);var Wi=y.element;ke(_.srcEvent.target,Wi)&&(Wi=_.srcEvent.target),_.target=Wi}function Ko(y,_){var T=_.center,I=y.offsetDelta||{},$=y.prevDelta||{},ae=y.prevInput||{};(_.eventType===kt||ae.eventType===st)&&($=y.prevDelta={x:ae.deltaX||0,y:ae.deltaY||0},I=y.offsetDelta={x:T.x,y:T.y}),_.deltaX=$.x+(T.x-I.x),_.deltaY=$.y+(T.y-I.y)}function Qo(y,_){var T=y.lastInterval||_,I=_.timeStamp-T.timeStamp,$,ae,Ze,Dt;if(_.eventType!=ct&&(I>$n||T.velocity===t)){var Rt=_.deltaX-T.deltaX,Yt=_.deltaY-T.deltaY,Wi=yr(I,Rt,Yt);ae=Wi.x,Ze=Wi.y,$=d(Wi.x)>d(Wi.y)?Wi.x:Wi.y,Dt=Ni(Rt,Yt),y.lastInterval=_}else $=T.velocity,ae=T.velocityX,Ze=T.velocityY,Dt=T.direction;_.velocity=$,_.velocityX=ae,_.velocityY=Ze,_.direction=Dt}function $a(y){for(var _=[],T=0;T<y.pointers.length;)_[T]={clientX:s(y.pointers[T].clientX),clientY:s(y.pointers[T].clientY)},T++;return{timeStamp:p(),pointers:_,center:Xn(_),deltaX:y.deltaX,deltaY:y.deltaY}}function Xn(y){var _=y.length;if(_===1)return{x:s(y[0].clientX),y:s(y[0].clientY)};for(var T=0,I=0,$=0;$<_;)T+=y[$].clientX,I+=y[$].clientY,$++;return{x:s(T/_),y:s(I/_)}}function yr(y,_,T){return{x:_/y||0,y:T/y||0}}function Ni(y,_){return y===_?mi:d(y)>=d(_)?y<0?Ei:kn:_<0?Ri:Ki}function qi(y,_,T){T||(T=gr);var I=_[T[0]]-y[T[0]],$=_[T[1]]-y[T[1]];return Math.sqrt(I*I+$*$)}function Ya(y,_,T){T||(T=gr);var I=_[T[0]]-y[T[0]],$=_[T[1]]-y[T[1]];return Math.atan2($,I)*180/Math.PI}function br(y,_){return Ya(_[1],_[0],Yn)+Ya(y[1],y[0],Yn)}function xn(y,_){return qi(_[0],_[1],Yn)/qi(y[0],y[1],Yn)}var Xa={mousedown:kt,mousemove:gt,mouseup:st},Qi="mousedown",si="mousemove mouseup";function Zi(){this.evEl=Qi,this.evWin=si,this.pressed=!1,Qt.apply(this,arguments)}F(Zi,Qt,{handler:function(_){var T=Xa[_.type];T&kt&&_.button===0&&(this.pressed=!0),T&gt&&_.which!==1&&(T=st),this.pressed&&(T&st&&(this.pressed=!1),this.callback(this.manager,T,{pointers:[_],changedPointers:[_],pointerType:$t,srcEvent:_}))}});var Ka={pointerdown:kt,pointermove:gt,pointerup:st,pointercancel:ct,pointerout:ct},Be={2:Et,3:Mt,4:$t,5:pt},Zt="pointerdown",Ji="pointermove pointerup pointercancel";a.MSPointerEvent&&!a.PointerEvent&&(Zt="MSPointerDown",Ji="MSPointerMove MSPointerUp MSPointerCancel");function Jt(){this.evEl=Zt,this.evWin=Ji,Qt.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}F(Jt,Qt,{handler:function(_){var T=this.store,I=!1,$=_.type.toLowerCase().replace("ms",""),ae=Ka[$],Ze=Be[_.pointerType]||_.pointerType,Dt=Ze==Et,Rt=je(T,_.pointerId,"pointerId");ae&kt&&(_.button===0||Dt)?Rt<0&&(T.push(_),Rt=T.length-1):ae&(st|ct)&&(I=!0),!(Rt<0)&&(T[Rt]=_,this.callback(this.manager,ae,{pointers:T,changedPointers:[_],pointerType:Ze,srcEvent:_}),I&&T.splice(Rt,1))}});var Zo={touchstart:kt,touchmove:gt,touchend:st,touchcancel:ct},ce="touchstart",Tn="touchstart touchmove touchend touchcancel";function Kn(){this.evTarget=ce,this.evWin=Tn,this.started=!1,Qt.apply(this,arguments)}F(Kn,Qt,{handler:function(_){var T=Zo[_.type];if(T===kt&&(this.started=!0),!!this.started){var I=_r.call(this,_,T);T&(st|ct)&&I[0].length-I[1].length===0&&(this.started=!1),this.callback(this.manager,T,{pointers:I[0],changedPointers:I[1],pointerType:Et,srcEvent:_})}}});function _r(y,_){var T=vt(y.touches),I=vt(y.changedTouches);return _&(st|ct)&&(T=it(T.concat(I),"identifier",!0)),[T,I]}var Jo={touchstart:kt,touchmove:gt,touchend:st,touchcancel:ct},wr="touchstart touchmove touchend touchcancel";function Qn(){this.evTarget=wr,this.targetIds={},Qt.apply(this,arguments)}F(Qn,Qt,{handler:function(_){var T=Jo[_.type],I=u.call(this,_,T);I&&this.callback(this.manager,T,{pointers:I[0],changedPointers:I[1],pointerType:Et,srcEvent:_})}});function u(y,_){var T=vt(y.touches),I=this.targetIds;if(_&(kt|gt)&&T.length===1)return I[T[0].identifier]=!0,[T,T];var $,ae,Ze=vt(y.changedTouches),Dt=[],Rt=this.target;if(ae=T.filter(function(Yt){return ke(Yt.target,Rt)}),_===kt)for($=0;$<ae.length;)I[ae[$].identifier]=!0,$++;for($=0;$<Ze.length;)I[Ze[$].identifier]&&Dt.push(Ze[$]),_&(st|ct)&&delete I[Ze[$].identifier],$++;if(Dt.length)return[it(ae.concat(Dt),"identifier",!0),Dt]}var h=2500,f=25;function S(){Qt.apply(this,arguments);var y=j(this.handler,this);this.touch=new Qn(this.manager,y),this.mouse=new Zi(this.manager,y),this.primaryTouch=null,this.lastTouches=[]}F(S,Qt,{handler:function(_,T,I){var $=I.pointerType==Et,ae=I.pointerType==$t;if(!(ae&&I.sourceCapabilities&&I.sourceCapabilities.firesTouchEvents)){if($)E.call(this,T,I);else if(ae&&O.call(this,I))return;this.callback(_,T,I)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});function E(y,_){y&kt?(this.primaryTouch=_.changedPointers[0].identifier,P.call(this,_)):y&(st|ct)&&P.call(this,_)}function P(y){var _=y.changedPointers[0];if(_.identifier===this.primaryTouch){var T={x:_.clientX,y:_.clientY};this.lastTouches.push(T);var I=this.lastTouches,$=function(){var ae=I.indexOf(T);ae>-1&&I.splice(ae,1)};setTimeout($,h)}}function O(y){for(var _=y.srcEvent.clientX,T=y.srcEvent.clientY,I=0;I<this.lastTouches.length;I++){var $=this.lastTouches[I],ae=Math.abs(_-$.x),Ze=Math.abs(T-$.y);if(ae<=f&&Ze<=f)return!0}return!1}var z=tt(r.style,"touchAction"),V=z!==t,B="compute",K="auto",Q="manipulation",he="none",Ce="pan-x",De="pan-y",Ye=Ke();function Ae(y,_){this.manager=y,this.set(_)}Ae.prototype={set:function(y){y==B&&(y=this.compute()),V&&this.manager.element.style&&Ye[y]&&(this.manager.element.style[z]=y),this.actions=y.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var y=[];return m(this.manager.recognizers,function(_){te(_.options.enable,[_])&&(y=y.concat(_.getTouchAction()))}),Xe(y.join(" "))},preventDefaults:function(y){var _=y.srcEvent,T=y.offsetDirection;if(this.manager.session.prevented){_.preventDefault();return}var I=this.actions,$=Z(I,he)&&!Ye[he],ae=Z(I,De)&&!Ye[De],Ze=Z(I,Ce)&&!Ye[Ce];if($){var Dt=y.pointers.length===1,Rt=y.distance<2,Yt=y.deltaTime<250;if(Dt&&Rt&&Yt)return}if(!(Ze&&ae)&&($||ae&&T&pi||Ze&&T&fi))return this.preventSrc(_)},preventSrc:function(y){this.manager.session.prevented=!0,y.preventDefault()}};function Xe(y){if(Z(y,he))return he;var _=Z(y,Ce),T=Z(y,De);return _&&T?he:_||T?_?Ce:De:Z(y,Q)?Q:K}function Ke(){if(!V)return!1;var y={},_=a.CSS&&a.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(T){y[T]=_?a.CSS.supports("touch-action",T):!0}),y}var Qe=1,Me=2,He=4,Oe=8,be=Oe,Ie=16,Ve=32;function Ge(y){this.options=b({},this.defaults,y||{}),this.id=ui(),this.manager=null,this.options.enable=ye(this.options.enable,!0),this.state=Qe,this.simultaneous={},this.requireFail=[]}Ge.prototype={defaults:{},set:function(y){return b(this.options,y),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(y){if(c(y,"recognizeWith",this))return this;var _=this.simultaneous;return y=Ot(y,this),_[y.id]||(_[y.id]=y,y.recognizeWith(this)),this},dropRecognizeWith:function(y){return c(y,"dropRecognizeWith",this)?this:(y=Ot(y,this),delete this.simultaneous[y.id],this)},requireFailure:function(y){if(c(y,"requireFailure",this))return this;var _=this.requireFail;return y=Ot(y,this),je(_,y)===-1&&(_.push(y),y.requireFailure(this)),this},dropRequireFailure:function(y){if(c(y,"dropRequireFailure",this))return this;y=Ot(y,this);var _=je(this.requireFail,y);return _>-1&&this.requireFail.splice(_,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(y){return!!this.simultaneous[y.id]},emit:function(y){var _=this,T=this.state;function I($){_.manager.emit($,y)}T<Oe&&I(_.options.event+ut(T)),I(_.options.event),y.additionalEvent&&I(y.additionalEvent),T>=Oe&&I(_.options.event+ut(T))},tryEmit:function(y){if(this.canEmit())return this.emit(y);this.state=Ve},canEmit:function(){for(var y=0;y<this.requireFail.length;){if(!(this.requireFail[y].state&(Ve|Qe)))return!1;y++}return!0},recognize:function(y){var _=b({},y);if(!te(this.options.enable,[this,_])){this.reset(),this.state=Ve;return}this.state&(be|Ie|Ve)&&(this.state=Qe),this.state=this.process(_),this.state&(Me|He|Oe|Ie)&&this.tryEmit(_)},process:function(y){},getTouchAction:function(){},reset:function(){}};function ut(y){return y&Ie?"cancel":y&Oe?"end":y&He?"move":y&Me?"start":""}function At(y){return y==Ki?"down":y==Ri?"up":y==Ei?"left":y==kn?"right":""}function Ot(y,_){var T=_.manager;return T?T.get(y):y}function It(){Ge.apply(this,arguments)}F(It,Ge,{defaults:{pointers:1},attrTest:function(y){var _=this.options.pointers;return _===0||y.pointers.length===_},process:function(y){var _=this.state,T=y.eventType,I=_&(Me|He),$=this.attrTest(y);return I&&(T&ct||!$)?_|Ie:I||$?T&st?_|Oe:_&Me?_|He:Me:Ve}});function gi(){It.apply(this,arguments),this.pX=null,this.pY=null}F(gi,It,{defaults:{event:"pan",threshold:10,pointers:1,direction:fr},getTouchAction:function(){var y=this.options.direction,_=[];return y&pi&&_.push(De),y&fi&&_.push(Ce),_},directionTest:function(y){var _=this.options,T=!0,I=y.distance,$=y.direction,ae=y.deltaX,Ze=y.deltaY;return $&_.direction||(_.direction&pi?($=ae===0?mi:ae<0?Ei:kn,T=ae!=this.pX,I=Math.abs(y.deltaX)):($=Ze===0?mi:Ze<0?Ri:Ki,T=Ze!=this.pY,I=Math.abs(y.deltaY))),y.direction=$,T&&I>_.threshold&&$&_.direction},attrTest:function(y){return It.prototype.attrTest.call(this,y)&&(this.state&Me||!(this.state&Me)&&this.directionTest(y))},emit:function(y){this.pX=y.deltaX,this.pY=y.deltaY;var _=At(y.direction);_&&(y.additionalEvent=this.options.event+_),this._super.emit.call(this,y)}});function Zn(){It.apply(this,arguments)}F(Zn,It,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[he]},attrTest:function(y){return this._super.attrTest.call(this,y)&&(Math.abs(y.scale-1)>this.options.threshold||this.state&Me)},emit:function(y){if(y.scale!==1){var _=y.scale<1?"in":"out";y.additionalEvent=this.options.event+_}this._super.emit.call(this,y)}});function Jn(){Ge.apply(this,arguments),this._timer=null,this._input=null}F(Jn,Ge,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[K]},process:function(y){var _=this.options,T=y.pointers.length===_.pointers,I=y.distance<_.threshold,$=y.deltaTime>_.time;if(this._input=y,!I||!T||y.eventType&(st|ct)&&!$)this.reset();else if(y.eventType&kt)this.reset(),this._timer=l(function(){this.state=be,this.tryEmit()},_.time,this);else if(y.eventType&st)return be;return Ve},reset:function(){clearTimeout(this._timer)},emit:function(y){this.state===be&&(y&&y.eventType&st?this.manager.emit(this.options.event+"up",y):(this._input.timeStamp=p(),this.manager.emit(this.options.event,this._input)))}});function es(){It.apply(this,arguments)}F(es,It,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[he]},attrTest:function(y){return this._super.attrTest.call(this,y)&&(Math.abs(y.rotation)>this.options.threshold||this.state&Me)}});function ts(){It.apply(this,arguments)}F(ts,It,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:pi|fi,pointers:1},getTouchAction:function(){return gi.prototype.getTouchAction.call(this)},attrTest:function(y){var _=this.options.direction,T;return _&(pi|fi)?T=y.overallVelocity:_&pi?T=y.overallVelocityX:_&fi&&(T=y.overallVelocityY),this._super.attrTest.call(this,y)&&_&y.offsetDirection&&y.distance>this.options.threshold&&y.maxPointers==this.options.pointers&&d(T)>this.options.velocity&&y.eventType&st},emit:function(y){var _=At(y.offsetDirection);_&&this.manager.emit(this.options.event+_,y),this.manager.emit(this.options.event,y)}});function Sr(){Ge.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}F(Sr,Ge,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Q]},process:function(y){var _=this.options,T=y.pointers.length===_.pointers,I=y.distance<_.threshold,$=y.deltaTime<_.time;if(this.reset(),y.eventType&kt&&this.count===0)return this.failTimeout();if(I&&$&&T){if(y.eventType!=st)return this.failTimeout();var ae=this.pTime?y.timeStamp-this.pTime<_.interval:!0,Ze=!this.pCenter||qi(this.pCenter,y.center)<_.posThreshold;this.pTime=y.timeStamp,this.pCenter=y.center,!Ze||!ae?this.count=1:this.count+=1,this._input=y;var Dt=this.count%_.taps;if(Dt===0)return this.hasRequireFailures()?(this._timer=l(function(){this.state=be,this.tryEmit()},_.interval,this),Me):be}return Ve},failTimeout:function(){return this._timer=l(function(){this.state=Ve},this.options.interval,this),Ve},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==be&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}});function ji(y,_){return _=_||{},_.recognizers=ye(_.recognizers,ji.defaults.preset),new is(y,_)}ji.VERSION="2.0.7",ji.defaults={domEvents:!1,touchAction:B,enable:!0,inputTarget:null,inputClass:null,preset:[[es,{enable:!1}],[Zn,{enable:!1},["rotate"]],[ts,{direction:pi}],[gi,{direction:pi},["swipe"]],[Sr],[Sr,{event:"doubletap",taps:2},["tap"]],[Jn]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var xm=1,Nl=2;function is(y,_){this.options=b({},ji.defaults,_||{}),this.options.inputTarget=this.options.inputTarget||y,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=y,this.input=Yo(this),this.touchAction=new Ae(this,this.options.touchAction),Wl(this,!0),m(this.options.recognizers,function(T){var I=this.add(new T[0](T[1]));T[2]&&I.recognizeWith(T[2]),T[3]&&I.requireFailure(T[3])},this)}is.prototype={set:function(y){return b(this.options,y),y.touchAction&&this.touchAction.update(),y.inputTarget&&(this.input.destroy(),this.input.target=y.inputTarget,this.input.init()),this},stop:function(y){this.session.stopped=y?Nl:xm},recognize:function(y){var _=this.session;if(!_.stopped){this.touchAction.preventDefaults(y);var T,I=this.recognizers,$=_.curRecognizer;(!$||$&&$.state&be)&&($=_.curRecognizer=null);for(var ae=0;ae<I.length;)T=I[ae],_.stopped!==Nl&&(!$||T==$||T.canRecognizeWith($))?T.recognize(y):T.reset(),!$&&T.state&(Me|He|Oe)&&($=_.curRecognizer=T),ae++}},get:function(y){if(y instanceof Ge)return y;for(var _=this.recognizers,T=0;T<_.length;T++)if(_[T].options.event==y)return _[T];return null},add:function(y){if(c(y,"add",this))return this;var _=this.get(y.options.event);return _&&this.remove(_),this.recognizers.push(y),y.manager=this,this.touchAction.update(),y},remove:function(y){if(c(y,"remove",this))return this;if(y=this.get(y),y){var _=this.recognizers,T=je(_,y);T!==-1&&(_.splice(T,1),this.touchAction.update())}return this},on:function(y,_){if(y!==t&&_!==t){var T=this.handlers;return m(Pe(y),function(I){T[I]=T[I]||[],T[I].push(_)}),this}},off:function(y,_){if(y!==t){var T=this.handlers;return m(Pe(y),function(I){_?T[I]&&T[I].splice(je(T[I],_),1):delete T[I]}),this}},emit:function(y,_){this.options.domEvents&&Tm(y,_);var T=this.handlers[y]&&this.handlers[y].slice();if(!(!T||!T.length)){_.type=y,_.preventDefault=function(){_.srcEvent.preventDefault()};for(var I=0;I<T.length;)T[I](_),I++}},destroy:function(){this.element&&Wl(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}};function Wl(y,_){var T=y.element;if(T.style){var I;m(y.options.cssProps,function($,ae){I=tt(T.style,ae),_?(y.oldCssProps[I]=T.style[I],T.style[I]=$):T.style[I]=y.oldCssProps[I]||""}),_||(y.oldCssProps={})}}function Tm(y,_){var T=n.createEvent("Event");T.initEvent(y,!0,!0),T.gesture=_,_.target.dispatchEvent(T)}b(ji,{INPUT_START:kt,INPUT_MOVE:gt,INPUT_END:st,INPUT_CANCEL:ct,STATE_POSSIBLE:Qe,STATE_BEGAN:Me,STATE_CHANGED:He,STATE_ENDED:Oe,STATE_RECOGNIZED:be,STATE_CANCELLED:Ie,STATE_FAILED:Ve,DIRECTION_NONE:mi,DIRECTION_LEFT:Ei,DIRECTION_RIGHT:kn,DIRECTION_UP:Ri,DIRECTION_DOWN:Ki,DIRECTION_HORIZONTAL:pi,DIRECTION_VERTICAL:fi,DIRECTION_ALL:fr,Manager:is,Input:Qt,TouchAction:Ae,TouchInput:Qn,MouseInput:Zi,PointerEventInput:Jt,TouchMouseInput:S,SingleTouchInput:Kn,Recognizer:Ge,AttrRecognizer:It,Tap:Sr,Pan:gi,Swipe:ts,Pinch:Zn,Rotate:es,Press:Jn,on:Le,off:qe,each:m,merge:M,extend:k,assign:b,inherit:F,bindFn:j,prefixed:tt});var Em=typeof a<"u"?a:typeof self<"u"?self:{};Em.Hammer=ji,typeof define=="function"&&define.amd?define(function(){return ji}):typeof $o<"u"&&$o.exports?$o.exports=ji:a[e]=ji})(window,document,"Hammer")});function vc(a,n,e,t,i){let r=(...o)=>(console.warn("gridstack.js: Function `"+e+"` is deprecated in "+i+" and has been replaced with `"+t+"`. It will be **removed** in a future release"),n.apply(a,o));return r.prototype=n.prototype,r}var A=class a{static getElements(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(t&&!isNaN(+n[0])){let r=t.getElementById(n);return r?[r]:[]}let i=e.querySelectorAll(n);return!i.length&&n[0]!=="."&&n[0]!=="#"&&(i=e.querySelectorAll("."+n),i.length||(i=e.querySelectorAll("#"+n))),Array.from(i)}return[n]}static getElement(n,e=document){if(typeof n=="string"){let t="getElementById"in e?e:void 0;if(!n.length)return null;if(t&&n[0]==="#")return t.getElementById(n.substring(1));if(n[0]==="#"||n[0]==="."||n[0]==="[")return e.querySelector(n);if(t&&!isNaN(+n[0]))return t.getElementById(n);let i=e.querySelector(n);return t&&!i&&(i=t.getElementById(n)),i||(i=e.querySelector("."+n)),i}return n}static lazyLoad(n){return n.lazyLoad||n.grid?.opts?.lazyLoad&&n.lazyLoad!==!1}static createDiv(n,e){let t=document.createElement("div");return n.forEach(i=>{i&&t.classList.add(i)}),e?.appendChild(t),t}static shouldSizeToContent(n,e=!1){return n?.grid&&(e?n.sizeToContent===!0||n.grid.opts.sizeToContent===!0&&n.sizeToContent===void 0:!!n.sizeToContent||n.grid.opts.sizeToContent&&n.sizeToContent!==!1)}static isIntercepted(n,e){return!(n.y>=e.y+e.h||n.y+n.h<=e.y||n.x+n.w<=e.x||n.x>=e.x+e.w)}static isTouching(n,e){return a.isIntercepted(n,{x:e.x-.5,y:e.y-.5,w:e.w+1,h:e.h+1})}static areaIntercept(n,e){let t=n.x>e.x?n.x:e.x,i=n.x+n.w<e.x+e.w?n.x+n.w:e.x+e.w;if(i<=t)return 0;let r=n.y>e.y?n.y:e.y,o=n.y+n.h<e.y+e.h?n.y+n.h:e.y+e.h;return o<=r?0:(i-t)*(o-r)}static area(n){return n.w*n.h}static sort(n,e=1){return n.sort((i,r)=>{let o=e*((i.y??1e4)-(r.y??1e4));return o===0?e*((i.x??1e4)-(r.x??1e4)):o})}static find(n,e){return e?n.find(t=>t.id===e):void 0}static createStylesheet(n,e,t){let i=document.createElement("style"),r=t?.nonce;return r&&(i.nonce=r),i.setAttribute("type","text/css"),i.setAttribute("gs-style-id",n),i.styleSheet?i.styleSheet.cssText="":i.appendChild(document.createTextNode("")),e?e.insertBefore(i,e.firstChild):(e=document.getElementsByTagName("head")[0],e.appendChild(i)),i}static removeStylesheet(n,e){let i=(e||document).querySelector("STYLE[gs-style-id="+n+"]");i&&i.parentNode&&i.remove()}static addCSSRule(n,e,t){n.textContent+=`${e} { ${t} } `}static toBool(n){return typeof n=="boolean"?n:typeof n=="string"?(n=n.toLowerCase(),!(n===""||n==="no"||n==="false"||n==="0")):!!n}static toNumber(n){return n===null||n.length===0?void 0:Number(n)}static parseHeight(n){let e,t="px";if(typeof n=="string")if(n==="auto"||n==="")e=0;else{let i=n.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!i)throw new Error(`Invalid height val = ${n}`);t=i[2]||"px",e=parseFloat(i[1])}else e=n;return{h:e,unit:t}}static defaults(n,...e){return e.forEach(t=>{for(let i in t){if(!t.hasOwnProperty(i))return;n[i]===null||n[i]===void 0?n[i]=t[i]:typeof t[i]=="object"&&typeof n[i]=="object"&&this.defaults(n[i],t[i])}}),n}static same(n,e){if(typeof n!="object")return n==e;if(typeof n!=typeof e||Object.keys(n).length!==Object.keys(e).length)return!1;for(let t in n)if(n[t]!==e[t])return!1;return!0}static copyPos(n,e,t=!1){return e.x!==void 0&&(n.x=e.x),e.y!==void 0&&(n.y=e.y),e.w!==void 0&&(n.w=e.w),e.h!==void 0&&(n.h=e.h),t&&(e.minW&&(n.minW=e.minW),e.minH&&(n.minH=e.minH),e.maxW&&(n.maxW=e.maxW),e.maxH&&(n.maxH=e.maxH)),n}static samePos(n,e){return n&&e&&n.x===e.x&&n.y===e.y&&(n.w||1)===(e.w||1)&&(n.h||1)===(e.h||1)}static sanitizeMinMax(n){n.minW||delete n.minW,n.minH||delete n.minH,n.maxW||delete n.maxW,n.maxH||delete n.maxH}static removeInternalAndSame(n,e){if(!(typeof n!="object"||typeof e!="object"))for(let t in n){let i=n[t],r=e[t];t[0]==="_"||i===r?delete n[t]:i&&typeof i=="object"&&r!==void 0&&(a.removeInternalAndSame(i,r),Object.keys(i).length||delete n[t])}}static removeInternalForSave(n,e=!0){for(let t in n)(t[0]==="_"||n[t]===null||n[t]===void 0)&&delete n[t];delete n.grid,e&&delete n.el,n.autoPosition||delete n.autoPosition,n.noResize||delete n.noResize,n.noMove||delete n.noMove,n.locked||delete n.locked,(n.w===1||n.w===n.minW)&&delete n.w,(n.h===1||n.h===n.minH)&&delete n.h}static throttle(n,e){let t=!1;return(...i)=>{t||(t=!0,setTimeout(()=>{n(...i),t=!1},e))}}static removePositioningStyles(n){let e=n.style;e.position&&e.removeProperty("position"),e.left&&e.removeProperty("left"),e.top&&e.removeProperty("top"),e.width&&e.removeProperty("width"),e.height&&e.removeProperty("height")}static getScrollElement(n){if(!n)return document.scrollingElement||document.documentElement;let e=getComputedStyle(n);return/(auto|scroll)/.test(e.overflow+e.overflowY)?n:this.getScrollElement(n.parentElement)}static updateScrollPosition(n,e,t){let i=n.getBoundingClientRect(),r=window.innerHeight||document.documentElement.clientHeight;if(i.top<0||i.bottom>r){let o=i.bottom-r,s=i.top,d=this.getScrollElement(n);if(d!==null){let p=d.scrollTop;i.top<0&&t<0?n.offsetHeight>r?d.scrollTop+=t:d.scrollTop+=Math.abs(s)>Math.abs(t)?t:s:t>0&&(n.offsetHeight>r?d.scrollTop+=t:d.scrollTop+=o>t?t:o),e.top+=d.scrollTop-p}}}static updateScrollResize(n,e,t){let i=this.getScrollElement(e),r=i.clientHeight,o=i===this.getScrollElement()?0:i.getBoundingClientRect().top,s=n.clientY-o,d=s<t,p=s>r-t;d?i.scrollBy({behavior:"smooth",top:s-t}):p&&i.scrollBy({behavior:"smooth",top:t-(r-s)})}static clone(n){return n==null||typeof n!="object"?n:n instanceof Array?[...n]:ee({},n)}static cloneDeep(n){let e=["parentGrid","el","grid","subGrid","engine"],t=a.clone(n);for(let i in t)t.hasOwnProperty(i)&&typeof t[i]=="object"&&i.substring(0,2)!=="__"&&!e.find(r=>r===i)&&(t[i]=a.cloneDeep(n[i]));return t}static cloneNode(n){let e=n.cloneNode(!0);return e.removeAttribute("id"),e}static appendTo(n,e){let t;typeof e=="string"?t=a.getElement(e):t=e,t&&t.appendChild(n)}static addElStyles(n,e){if(e instanceof Object)for(let t in e)e.hasOwnProperty(t)&&(Array.isArray(e[t])?e[t].forEach(i=>{n.style[t]=i}):n.style[t]=e[t])}static initEvent(n,e){let t={type:e.type},i={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:e.target?e.target:n.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(r=>t[r]=n[r]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(r=>t[r]=n[r]),ee(ee({},t),i)}static simulateMouseEvent(n,e,t){let i=n,r=new MouseEvent(e,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY,ctrlKey:i.ctrlKey??!1,altKey:i.altKey??!1,shiftKey:i.shiftKey??!1,metaKey:i.metaKey??!1,button:0,relatedTarget:n.target});(t||n.target).dispatchEvent(r)}static getValuesFromTransformedElement(n){let e=document.createElement("div");a.addElStyles(e,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),n.appendChild(e);let t=e.getBoundingClientRect();return n.removeChild(e),e.remove(),{xScale:1/t.width,yScale:1/t.height,xOffset:t.left,yOffset:t.top}}static swap(n,e,t){if(!n)return;let i=n[e];n[e]=n[t],n[t]=i}static canBeRotated(n){return!(!n||n.w===n.h||n.locked||n.noResize||n.grid?.opts.disableResize||n.minW&&n.minW===n.maxW||n.minH&&n.minH===n.maxH)}};var Jr=(()=>{class a{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,r={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!r.nested&&!this.float&&this.swap(e,i))return!0;let o=t;!this._loading&&this._useEntireRowArea(e,t)&&(o={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,o,r.skip));let s=!1,d={nested:!0,pack:!1},p=0;for(;i=i||this.collide(e,o,r.skip);){if(p++>this.nodes.length*2)throw new Error("Infinite collide check");let l;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,ht(ee({},i),{y:e.y}),e)||!this.collide(i,ht(ee({},i),{y:t.y-i.h}),e))){e._skipDown=e._skipDown||t.y>e.y;let c=ee(ht(ee({},t),{y:i.y+i.h}),d);l=this._loading&&A.samePos(e,c)?!0:this.moveNode(e,c),(i.locked||this._loading)&&l?A.copyPos(t,e):!i.locked&&l&&r.pack&&(this._packNodes(),t.y=i.y+i.h,A.copyPos(e,t)),s=s||l}else l=this.moveNode(i,ee(ht(ee({},i),{y:t.y+t.h,skip:e}),d));if(!l)return s;i=void 0}return s}collide(e,t=e,i){let r=e._id,o=i?._id;return this.nodes.find(s=>s._id!==r&&s._id!==o&&A.isIntercepted(s,t))}collideAll(e,t=e,i){let r=e._id,o=i?._id;return this.nodes.filter(s=>s._id!==r&&s._id!==o&&A.isIntercepted(s,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;let r=e._rect,o=ee({},t.rect);o.y>r.y?(o.h+=o.y-r.y,o.y=r.y):o.h+=r.y-o.y,o.x>r.x?(o.w+=o.x-r.x,o.x=r.x):o.w+=r.x-o.x;let s,d=.5;for(let p of i){if(p.locked||!p._rect)break;let l=p._rect,c=Number.MAX_VALUE,m=Number.MAX_VALUE;r.y<l.y?c=(o.y+o.h-l.y)/l.h:r.y+r.h>l.y+l.h&&(c=(l.y+l.h-o.y)/l.h),r.x<l.x?m=(o.x+o.w-l.x)/l.w:r.x+r.w>l.x+l.w&&(m=(l.x+l.w-o.x)/l.w);let v=Math.min(m,c);v>d&&(d=v,s=p)}return t.collide=s,s}cacheRects(e,t,i,r,o,s){return this.nodes.forEach(d=>d._rect={y:d.y*t+i,x:d.x*e+s,w:d.w*e-s-r,h:d.h*t-i-o}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){let o=t.x,s=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=o,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=s):(e.x=o,e.y=s),e._dirty=t._dirty=!0,!0}let r;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(r=A.isTouching(e,t)))return i();if(r!==!1){if(e.w===t.w&&e.x===t.x&&(r||(r=A.isTouching(e,t)))){if(t.y<e.y){let o=e;e=t,t=o}return i()}if(r!==!1){if(e.h===t.h&&e.y===t.y&&(r||(r=A.isTouching(e,t)))){if(t.x<e.x){let o=e;e=t,t=o}return i()}return!1}}}isAreaEmpty(e,t,i,r){let o={x:e||0,y:t||0,w:i||1,h:r||1};return!this.collide(o)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();let i=this.batchMode;i||this.batchUpdate();let r=this._inColumnResize;r||(this._inColumnResize=!0);let o=this.nodes;return this.nodes=[],o.forEach((s,d,p)=>{let l;s.locked||(s.autoPosition=!0,e==="list"&&d&&(l=p[d-1])),this.addNode(s,!1,l)}),r||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=A.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){let i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??a._idSeq++;let i=e.id;if(i){let o=1;for(;this.nodes.find(s=>s.id===e.id&&s!==e);)e.id=i+"_"+o++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);let r={x:0,y:0,w:1,h:1};return A.defaults(e,r),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,A.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=r.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=r.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=r.w),isNaN(e.h)&&(e.h=r.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){let i=e._orig||A.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){let o=ee({},e);o.autoPosition||o.x===void 0?(delete o.x,delete o.y):o.x=Math.min(this.defaultColumn-1,o.x),o.w=Math.min(this.defaultColumn,o.w||1),this.cacheOneLayout(o,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),A.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!A.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;let t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=A.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||A.samePos(e,e._orig)||(A.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,r){let o=r?r.y*i+(r.x+r.w):0,s=!1;for(let d=o;!s;++d){let p=d%i,l=Math.floor(d/i);if(p+e.w>i)continue;let c={x:p,y:l,w:e.w,h:e.h};t.find(m=>A.isIntercepted(c,m))||((e.x!==p||e.y!==l)&&(e._dirty=!0),e.x=p,e.y=l,delete e.autoPosition,s=!0)}return s}addNode(e,t=!1,i){let r=this.nodes.find(s=>s._id===e._id);if(r)return r;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let o;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,o=!0),this.nodes.push(e),t&&this.addedNodes.push(e),o||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(r=>r._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(r=>r._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(r=>r._removeDOM=!0);let i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i,r=new a({column:this.column,float:this.float,nodes:this.nodes.map(s=>s._id===e._id?(i=ee({},s),i):ee({},s))});if(!i)return!1;let o=r.moveNode(i,t)&&r.getRow()<=Math.max(this.getRow(),this.maxRow);if(!o&&!t.resizing&&t.collide){let s=t.collide.el.gridstackNode;if(this.swap(e,s))return this._notify(),!0}return o?(r.nodes.filter(s=>s._dirty).forEach(s=>{let d=this.nodes.find(p=>p._id===s._id);d&&(A.copyPos(d,s),d._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;let t=new a({column:this.column,float:this.float,nodes:this.nodes.map(r=>ee({},r))}),i=ee({},e);return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=A.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);let r=e.w!==t.w||e.h!==t.h,o=A.copyPos({},e,!0);if(A.copyPos(o,t),this.nodeBoundFix(o,r),A.copyPos(t,o),!t.forceCollide&&A.samePos(e,t))return!1;let s=A.copyPos({},e),d=this.collideAll(e,o,t.skip),p=!0;if(d.length){let l=e._moving&&!t.nested,c=l?this.directionCollideCoverage(e,t,d):d[0];if(l&&c&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){let m=A.areaIntercept(t.rect,c._rect),v=A.area(t.rect),b=A.area(c._rect);m/(v<b?v:b)>.8&&(c.grid.makeSubGrid(c.el,void 0,e),c=void 0)}c?p=!this._fixCollisions(e,o,c,t):(p=!1,i&&delete t.pack)}return p&&!A.samePos(e,o)&&(e._dirty=!0,A.copyPos(e,o)),t.pack&&this._packNodes()._notify(),!A.samePos(e,s)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){let i=this._layouts?.length,r=i&&this.column!==i-1?this._layouts[i-1]:null,o=[];return this.sortNodes(),this.nodes.forEach(s=>{let d=r?.find(l=>l._id===s._id),p=ee(ee({},s),d||{});A.removeInternalForSave(p,!e),t&&t(s,p),o.push(p)}),o}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{let r=i/this.column;e.forEach(o=>{if(!o._orig)return;let s=t.find(d=>d._id===o._id);s&&(s.y>=0&&o.y!==o._orig.y&&(s.y+=o.y-o._orig.y),o.x!==o._orig.x&&(s.x=Math.round(o.x*r)),o.w!==o._orig.w&&(s.w=Math.round(o.w*r)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;let r=i==="compact"||i==="list";r&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let o=[],s=r?this.nodes:A.sort(this.nodes,-1);if(t>e&&this._layouts){let d=this._layouts[t]||[],p=this._layouts.length-1;!d.length&&e!==p&&this._layouts[p]?.length&&(e=p,this._layouts[p].forEach(l=>{let c=s.find(m=>m._id===l._id);c&&(!r&&!l.autoPosition&&(c.x=l.x??c.x,c.y=l.y??c.y),c.w=l.w??c.w,(l.x==null||l.y===void 0)&&(c.autoPosition=!0))})),d.forEach(l=>{let c=s.findIndex(m=>m._id===l._id);if(c!==-1){let m=s[c];if(r){m.w=l.w;return}(l.autoPosition||isNaN(l.x)||isNaN(l.y))&&this.findEmptyPosition(l,o),l.autoPosition||(m.x=l.x??m.x,m.y=l.y??m.y,m.w=l.w??m.w,o.push(m)),s.splice(c,1)}})}if(r)this.compact(i,!1);else{if(s.length)if(typeof i=="function")i(t,e,o,s);else{let d=r||i==="none"?1:t/e,p=i==="move"||i==="moveScale",l=i==="scale"||i==="moveScale";s.forEach(c=>{c.x=t===1?0:p?Math.round(c.x*d):Math.min(c.x,t-1),c.w=t===1||e===1?1:l?Math.round(c.w*d)||1:Math.min(c.w,t),o.push(c)}),s=[]}o=A.sort(o,-1),this._inColumnResize=!0,this.nodes=[],o.forEach(d=>{this.addNode(d,!1),delete d._orig})}return this.nodes.forEach(d=>delete d._orig),this.batchUpdate(!1,!r),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){let r=[];return e.forEach((o,s)=>{if(o._id===void 0){let d=o.id?this.nodes.find(p=>p.id===o.id):void 0;o._id=d?._id??a._idSeq++}r[s]={x:o.x,y:o.y,w:o.w,_id:o._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=r,this}cacheOneLayout(e,t){e._id=e._id??a._idSeq++;let i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];let r=this.findCacheLayout(e,t);return r===-1?this._layouts[t].push(i):this._layouts[t][r]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){let i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(let t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}return a._idSeq=0,a})();var ai={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};var ve=class{};var Xt=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),Ci=class{};function eo(a,n){a.touches.length>1||(a.cancelable&&a.preventDefault(),A.simulateMouseEvent(a.changedTouches[0],n))}function yc(a,n){a.cancelable&&a.preventDefault(),A.simulateMouseEvent(a,n)}function Ta(a){Ci.touchHandled||(Ci.touchHandled=!0,eo(a,"mousedown"))}function Ea(a){Ci.touchHandled&&eo(a,"mousemove")}function Ma(a){if(!Ci.touchHandled)return;Ci.pointerLeaveTimeout&&(window.clearTimeout(Ci.pointerLeaveTimeout),delete Ci.pointerLeaveTimeout);let n=!!ve.dragElement;eo(a,"mouseup"),n||eo(a,"click"),Ci.touchHandled=!1}function Da(a){a.pointerType!=="mouse"&&a.target.releasePointerCapture(a.pointerId)}function ks(a){ve.dragElement&&a.pointerType!=="mouse"&&yc(a,"mouseenter")}function xs(a){ve.dragElement&&a.pointerType!=="mouse"&&(Ci.pointerLeaveTimeout=window.setTimeout(()=>{delete Ci.pointerLeaveTimeout,yc(a,"mouseleave")},10))}var bc=(()=>{class a{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){let e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${a.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Xt&&(this.el.addEventListener("touchstart",Ta),this.el.addEventListener("pointerdown",Da)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Xt&&(this.el.removeEventListener("touchstart",Ta),this.el.removeEventListener("pointerdown",Da)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Xt&&(this.el.addEventListener("touchmove",Ea),this.el.addEventListener("touchend",Ma)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){let t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Xt&&(this.el.removeEventListener("touchmove",Ea),this.el.removeEventListener("touchend",Ma)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}return a.prefix="ui-resizable-",a})();var fn=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(n,e){this._eventRegister[n]=e}off(n){delete this._eventRegister[n]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(n,e){if(!this.disabled&&this._eventRegister&&this._eventRegister[n])return this._eventRegister[n](e)}};var _c=(()=>{class a extends fn{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{let r=this.el.parentElement.getBoundingClientRect(),o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},s=this.temporalRect||o;return{position:{left:(s.left-r.left)*this.rectScale.x,top:(s.top-r.top)*this.rectScale.y},size:{width:s.width*this.rectScale.x,height:s.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){let t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(r=>this.option[r]=e[r]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),ve.overResizeElement===this&&delete ve.overResizeElement),this}_mouseOver(e){ve.overResizeElement||ve.dragElement||(ve.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){ve.overResizeElement===this&&(delete ve.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new bc(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=A.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=A.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();let t=A.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();let i=A.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){let t=A.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=a._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;let e=this.el.parentElement,t=A.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return a._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){let i=this.startEvent,r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},o=e.clientX-i.clientX,s=this.sizeToContent?0:e.clientY-i.clientY,d,p;t.indexOf("e")>-1?r.width+=o:t.indexOf("w")>-1&&(r.width-=o,r.left+=o,d=!0),t.indexOf("s")>-1?r.height+=s:t.indexOf("n")>-1&&(r.height-=s,r.top+=s,p=!0);let l=this._constrainSize(r.width,r.height,d,p);return Math.round(r.width)!==Math.round(l.width)&&(t.indexOf("w")>-1&&(r.left+=r.width-l.width),r.width=l.width),Math.round(r.height)!==Math.round(l.height)&&(t.indexOf("n")>-1&&(r.top+=r.height-l.height),r.height=l.height),r}_constrainSize(e,t,i,r){let o=this.option,s=(i?o.maxWidthMoveLeft:o.maxWidth)||Number.MAX_SAFE_INTEGER,d=o.minWidth/this.rectScale.x||e,p=(r?o.maxHeightMoveUp:o.maxHeight)||Number.MAX_SAFE_INTEGER,l=o.minHeight/this.rectScale.y||t,c=Math.min(s,Math.max(d,e)),m=Math.min(p,Math.max(l,t));return{width:c,height:m}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let t=this.el.parentElement,{left:i,top:r}=t.getBoundingClientRect();e={left:i,top:r,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{let i=this.temporalRect[t],r=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*r+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}return a._originStyleProp=["width","height","position","left","top","opacity","zIndex"],a})();var Mm='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle',wc=(()=>{class a extends fn{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};let i=t?.handle?.substring(1),r=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:r?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),Xt&&(e.addEventListener("touchstart",Ta),e.addEventListener("pointerdown",Da))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),Xt&&(t.removeEventListener("touchstart",Ta),t.removeEventListener("pointerdown",Da))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!ve.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(Mm)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete ve.dragElement,delete ve.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),Xt&&(e.currentTarget.addEventListener("touchmove",Ea),e.currentTarget.addEventListener("touchend",Ma)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),ve.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;let t=A.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){let t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),ve.pauseDrag){let i=Number.isInteger(ve.pauseDrag)?ve.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,ve.dragElement=this;let i=this.el.gridstackNode?.grid;i?ve.dropElement=i.el.ddElement.ddDroppable:delete ve.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=A.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);let r=A.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(r,this.ui()),this.triggerEvent("dragstart",r),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Xt&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",Ea,!0),e.currentTarget.removeEventListener("touchend",Ma,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),ve.dropElement?.el===this.el.parentElement&&delete ve.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();let t=A.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),ve.dropElement&&ve.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete ve.dragElement,delete ve.dropElement,delete ve.mouseHandled,e.preventDefault()}_keyEvent(e){let t=this.el.gridstackNode,i=t?.grid||ve.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!A.canBeRotated(t))return;t._origRotate=t._origRotate||ee({},t._orig),delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",A.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=A.cloneNode(this.el)),e.parentElement||A.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=a.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");let t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){let t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",a.originStyleProp.forEach(r=>t.style[r]=this.dragElementOriginStyle[r]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){let t={left:0,top:0},i=this.helper.style,r=this.dragOffset;i.left=(e.clientX+r.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+r.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let r=0,o=0;i&&(r=this.dragTransform.xOffset,o=this.dragTransform.yOffset);let s=t.getBoundingClientRect();return{left:s.left,top:s.top,offsetLeft:-e.clientX+s.left-r,offsetTop:-e.clientY+s.top-o,width:s.width*this.dragTransform.xScale,height:s.height*this.dragTransform.yScale}}ui(){let t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}return a.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"],a})();var to=class extends fn{constructor(n,e={}){super(),this.el=n,this.option=e,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(n,e){super.on(n,e)}off(n){super.off(n)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Xt&&(this.el.addEventListener("pointerenter",ks),this.el.addEventListener("pointerleave",xs)))}disable(n=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),n||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Xt&&(this.el.removeEventListener("pointerenter",ks),this.el.removeEventListener("pointerleave",xs)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(n){return Object.keys(n).forEach(e=>this.option[e]=n[e]),this._setupAccept(),this}_mouseEnter(n){if(!ve.dragElement||!this._canDrop(ve.dragElement.el))return;n.preventDefault(),n.stopPropagation(),ve.dropElement&&ve.dropElement!==this&&ve.dropElement._mouseLeave(n,!0),ve.dropElement=this;let e=A.initEvent(n,{target:this.el,type:"dropover"});this.option.over&&this.option.over(e,this._ui(ve.dragElement)),this.triggerEvent("dropover",e),this.el.classList.add("ui-droppable-over")}_mouseLeave(n,e=!1){if(!ve.dragElement||ve.dropElement!==this)return;n.preventDefault(),n.stopPropagation();let t=A.initEvent(n,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(t,this._ui(ve.dragElement)),this.triggerEvent("dropout",t),ve.dropElement===this&&(delete ve.dropElement,!e)){let i,r=this.el.parentElement;for(;!i&&r;)i=r.ddElement?.ddDroppable,r=r.parentElement;i&&i._mouseEnter(n)}}drop(n){n.preventDefault();let e=A.initEvent(n,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(e,this._ui(ve.dragElement)),this.triggerEvent("drop",e)}_canDrop(n){return n&&(!this.accept||this.accept(n))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=n=>n.classList.contains(this.option.accept)||n.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(n){return ee({draggable:n.el},n.ui())}};var io=class a{static init(n){return n.ddElement||(n.ddElement=new a(n)),n.ddElement}constructor(n){this.el=n}on(n,e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.on(n,e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.on(n,e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.on(n,e),this}off(n){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(n)>-1?this.ddDraggable.off(n):this.ddDroppable&&["drop","dropover","dropout"].indexOf(n)>-1?this.ddDroppable.off(n):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(n)>-1&&this.ddResizable.off(n),this}setupDraggable(n){return this.ddDraggable?this.ddDraggable.updateOption(n):this.ddDraggable=new wc(this.el,n),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(n){return this.ddResizable?this.ddResizable.updateOption(n):this.ddResizable=new _c(this.el,n),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(n){return this.ddDroppable?this.ddDroppable.updateOption(n):this.ddDroppable=new to(this.el,n),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};var no=class{resizable(n,e,t,i){return this._getDDElements(n,e).forEach(r=>{if(e==="disable"||e==="enable")r.ddResizable&&r.ddResizable[e]();else if(e==="destroy")r.ddResizable&&r.cleanResizable();else if(e==="option")r.setupResizable({[t]:i});else{let s=r.el.gridstackNode.grid,d=r.el.getAttribute("gs-resize-handles")||s.opts.resizable.handles||"e,s,se";d==="all"&&(d="n,e,s,w,se,sw,ne,nw");let p=!s.opts.alwaysShowResizeHandle;r.setupResizable(ht(ee({},s.opts.resizable),{handles:d,autoHide:p,start:e.start,stop:e.stop,resize:e.resize}))}}),this}draggable(n,e,t,i){return this._getDDElements(n,e).forEach(r=>{if(e==="disable"||e==="enable")r.ddDraggable&&r.ddDraggable[e]();else if(e==="destroy")r.ddDraggable&&r.cleanDraggable();else if(e==="option")r.setupDraggable({[t]:i});else{let o=r.el.gridstackNode.grid;r.setupDraggable(ht(ee({},o.opts.draggable),{start:e.start,stop:e.stop,drag:e.drag}))}}),this}dragIn(n,e){return this._getDDElements(n).forEach(t=>t.setupDraggable(e)),this}droppable(n,e,t,i){return typeof e.accept=="function"&&!e._accept&&(e._accept=e.accept,e.accept=r=>e._accept(r)),this._getDDElements(n,e).forEach(r=>{e==="disable"||e==="enable"?r.ddDroppable&&r.ddDroppable[e]():e==="destroy"?r.ddDroppable&&r.cleanDroppable():e==="option"?r.setupDroppable({[t]:i}):r.setupDroppable(e)}),this}isDroppable(n){return!!(n?.ddElement?.ddDroppable&&!n.ddElement.ddDroppable.disabled)}isDraggable(n){return!!(n?.ddElement?.ddDraggable&&!n.ddElement.ddDraggable.disabled)}isResizable(n){return!!(n?.ddElement?.ddResizable&&!n.ddElement.ddResizable.disabled)}on(n,e,t){return this._getDDElements(n).forEach(i=>i.on(e,r=>{t(r,ve.dragElement?ve.dragElement.el:r.target,ve.dragElement?ve.dragElement.helper:null)})),this}off(n,e){return this._getDDElements(n).forEach(t=>t.off(e)),this}_getDDElements(n,e){let t=n.gridstack||e!=="destroy"&&e!=="disable",i=A.getElements(n);return i.length?i.map(o=>o.ddElement||(t?io.init(o):null)).filter(o=>o):[]}};var Kt=new no,Pa=(()=>{class a{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;let i=a.getGridElement(t);return i?(i.gridstack||(i.gridstack=new a(i,A.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
4
- Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:"GridStack.init() no grid element was passed."),null)}static initAll(e={},t=".grid-stack"){let i=[];return typeof document>"u"||(a.getGridElements(t).forEach(r=>{r.gridstack||(r.gridstack=new a(r,A.cloneDeep(e))),i.push(r.gridstack)}),i.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
5
- Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`)),i}static addGrid(e,t={}){if(!e)return null;let i=e;if(i.gridstack){let s=i.gridstack;return t&&(s.opts=ee(ee({},s.opts),t)),t.children!==void 0&&s.load(t.children),s}return(!e.classList.contains("grid-stack")||a.addRemoveCB)&&(a.addRemoveCB?i=a.addRemoveCB(e,t,!0,!0):i=A.createDiv(["grid-stack",t.class],e)),a.init(t,i)}static registerEngine(e){a.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=A.createDiv([this.opts.placeholderClass,ai.itemClass,this.opts.itemClass]);let e=A.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){this.el=e,this.opts=t,this.animationDelay=310,this._gsEventHandler={},this._extraDragRow=0,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},e.gridstack=this,this.opts=t=t||{},e.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),t.row&&(t.minRow=t.maxRow=t.row,delete t.row);let i=A.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let r=t.columnOpts?.breakpoints,o=t;if(o.oneColumnModeDomSort&&(delete o.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),o.oneColumnSize||o.disableOneColumnMode===!1){let m=o.oneColumnSize||768;delete o.oneColumnSize,delete o.disableOneColumnMode,t.columnOpts=t.columnOpts||{},r=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let v=r.find(b=>b.c===1);v?v.w=m:(v={c:1,w:m},r.push(v,{c:12,w:m+1}))}let s=t.columnOpts;s&&(!s.columnWidth&&!s.breakpoints?.length?(delete t.columnOpts,r=void 0):s.columnMax=s.columnMax||12),r?.length>1&&r.sort((m,v)=>(v.w||0)-(m.w||0));let d=ht(ee({},A.cloneDeep(ai)),{column:A.toNumber(e.getAttribute("gs-column"))||ai.column,minRow:i||A.toNumber(e.getAttribute("gs-min-row"))||ai.minRow,maxRow:i||A.toNumber(e.getAttribute("gs-max-row"))||ai.maxRow,staticGrid:A.toBool(e.getAttribute("gs-static"))||ai.staticGrid,sizeToContent:A.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||ai.draggable.handle},removableOptions:{accept:t.itemClass||ai.removableOptions.accept,decline:ai.removableOptions.decline}});e.getAttribute("gs-animate")&&(d.animate=A.toBool(e.getAttribute("gs-animate"))),t=A.defaults(t,d),this._initMargin(),this.checkDynamicColumn(),this.el.classList.add("gs-"+t.column),t.rtl==="auto"&&(t.rtl=e.style.direction==="rtl"),t.rtl&&this.el.classList.add("grid-stack-rtl");let l=this.el.closest("."+ai.itemClass)?.gridstackNode;l&&(l.subGrid=this,this.parentGridNode=l,this.el.classList.add("grid-stack-nested"),l.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=t.cellHeight==="auto",this._isAutoCellHeight||t.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof t.cellHeight=="number"&&t.cellHeightUnit&&t.cellHeightUnit!==ai.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=Xt),this._styleSheetClass="gs-id-"+Jr._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();let c=t.engineClass||a.engineClass||Jr;if(this.engine=new c({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:m=>{let v=0;this.engine.nodes.forEach(b=>{v=Math.max(v,b.y+b.h)}),m.forEach(b=>{let k=b.el;k&&(b._removeDOM?(k&&k.remove(),delete b._removeDOM):this._writePosAttr(k,b))}),this._updateStyles(!1,v)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(m=>this._prepareElement(m)),delete this.engine._loading,this.batchUpdate(!1)),t.children){let m=t.children;delete t.children,m.length&&this.load(m)}this.setAnimation(),t.subGridDynamic&&!ve.pauseDrag&&(ve.pauseDrag=!0),t.draggable?.pause!==void 0&&(ve.pauseDrag=t.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateResizeEvent()}addWidget(e){if(typeof e=="string"){console.error("V11: GridStack.addWidget() does not support string anymore. see #2736");return}if(e.ELEMENT_NODE)return console.error("V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()"),this.makeWidget(e);let t,i=e;if(i.grid=this,i?.el?t=i.el:a.addRemoveCB?t=a.addRemoveCB(this.el,e,!0,!1):t=this.createWidgetDivs(i),!t)return;if(i=t.gridstackNode,i&&t.parentElement===this.el&&this.engine.nodes.find(o=>o._id===i._id))return t;let r=this._readAttr(t);return A.defaults(e,r),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){let t=A.createDiv(["grid-stack-item",this.opts.itemClass]),i=A.createDiv(["grid-stack-item-content"],t);return A.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([r])=>{r.isIntersecting&&(e.visibleObservable?.disconnect(),delete e.visibleObservable,a.renderCB(i,e),e.grid?.prepareDragDrop(e.el))}),window.setTimeout(()=>e.visibleObservable?.observe(t))):a.renderCB(i,e),t}makeSubGrid(e,t,i,r=!0){let o=e.gridstackNode;if(o||(o=this.makeWidget(e).gridstackNode),o.subGrid?.el)return o.subGrid;let s,d=this;for(;d&&!s;)s=d.opts?.subGridOpts,d=d.parentGridNode?.grid;t=A.cloneDeep(ee(ee(ht(ee({},this.opts),{id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0}),s||{}),t||o.subGridOpts||{})),o.subGridOpts=t;let p;t.column==="auto"&&(p=!0,t.column=Math.max(o.w||1,i?.w||1),delete t.columnOpts);let l=o.el.querySelector(".grid-stack-item-content"),c,m;if(r&&(this._removeDD(o.el),m=ht(ee({},o),{x:0,y:0}),A.removeInternalForSave(m),delete m.subGridOpts,o.content&&(m.content=o.content,delete o.content),a.addRemoveCB?c=a.addRemoveCB(this.el,m,!0,!1):(c=A.createDiv(["grid-stack-item"]),c.appendChild(l),l=A.createDiv(["grid-stack-item-content"],o.el)),this.prepareDragDrop(o.el)),i){let b=p?t.column:o.w,k=o.h+i.h,M=o.el.style;M.transition="none",this.update(o.el,{w:b,h:k}),setTimeout(()=>M.transition=null)}let v=o.subGrid=a.addGrid(l,t);return i?._moving&&(v._isTemp=!0),p&&(v._autoColumn=!0),r&&v.makeWidget(c,m),i&&(i._moving?window.setTimeout(()=>A.simulateMouseEvent(i._event,"mouseenter",v.el),0):v.makeWidget(o.el,o)),this.resizeToContentCheck(!1,o),v}removeAsSubGrid(e){let t=this.parentGridNode?.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(i=>{i.x+=this.parentGridNode.x,i.y+=this.parentGridNode.y,t.makeWidget(i.el,i)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>A.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=a.saveCB){let r=this.engine.save(e,i);if(r.forEach(o=>{if(e&&o.el&&!o.subGrid&&!i){let s=o.el.querySelector(".grid-stack-item-content");o.content=s?.innerHTML,o.content||delete o.content}else if(!e&&!i&&delete o.content,o.subGrid?.el){let s=o.subGrid.save(e,t,i);o.subGridOpts=t?s:{children:s},delete o.subGrid}delete o.el}),t){let o=A.cloneDeep(this.opts);o.marginBottom===o.marginTop&&o.marginRight===o.marginLeft&&o.marginTop===o.marginRight&&(o.margin=o.marginTop,delete o.marginTop,delete o.marginRight,delete o.marginBottom,delete o.marginLeft),o.rtl===(this.el.style.direction==="rtl")&&(o.rtl="auto"),this._isAutoCellHeight&&(o.cellHeight="auto"),this._autoColumn&&(o.column="auto");let s=o._alwaysShowResizeHandle;return delete o._alwaysShowResizeHandle,s!==void 0?o.alwaysShowResizeHandle=s:delete o.alwaysShowResizeHandle,A.removeInternalAndSame(o,ai),o.children=r,o}return r}load(e,t=a.addRemoveCB||!0){e=A.cloneDeep(e);let i=this.getColumn();e.forEach(l=>{l.w=l.w||1,l.h=l.h||1}),e=A.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let r=0;e.forEach(l=>{r=Math.max(r,(l.x||0)+l.w)}),r>this.engine.defaultColumn&&(this.engine.defaultColumn=r),r>i&&this.engine.cacheLayout(e,r,!0);let o=a.addRemoveCB;typeof t=="function"&&(a.addRemoveCB=t);let s=[];this.batchUpdate();let d=!this.engine.nodes.length;d&&this.setAnimation(!1),!d&&t&&[...this.engine.nodes].forEach(c=>{if(!c.id)return;A.find(e,c.id)||(a.addRemoveCB&&a.addRemoveCB(this.el,c,!1,!1),s.push(c),this.removeWidget(c.el,!0,!1))}),this.engine._loading=!0;let p=[];return this.engine.nodes=this.engine.nodes.filter(l=>A.find(e,l.id)?(p.push(l),!1):!0),e.forEach(l=>{let c=A.find(p,l.id);if(c){if(A.shouldSizeToContent(c)&&(l.h=c.h),this.engine.nodeBoundFix(l),(l.autoPosition||l.x===void 0||l.y===void 0)&&(l.w=l.w||c.w,l.h=l.h||c.h,this.engine.findEmptyPosition(l)),this.engine.nodes.push(c),A.samePos(c,l)&&this.engine.nodes.length>1&&(this.moveNode(c,ht(ee({},l),{forceCollide:!0})),A.copyPos(l,c)),this.update(c.el,l),l.subGridOpts?.children){let m=c.el.querySelector(".grid-stack");m&&m.gridstack&&m.gridstack.load(l.subGridOpts.children)}}else t&&this.addWidget(l)}),delete this.engine._loading,this.engine.removedNodes=s,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,o?a.addRemoveCB=o:delete a.addRemoveCB,d&&this.opts?.animate&&this.setAnimation(this.opts.animate,!0),this}batchUpdate(e=!0){return this.engine.batchUpdate(e),e||(this._updateContainerHeight(),this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(e=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!e||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;if(this.opts.cellHeightUnit==="rem")return this.opts.cellHeight*parseFloat(getComputedStyle(document.documentElement).fontSize);if(this.opts.cellHeightUnit==="em")return this.opts.cellHeight*parseFloat(getComputedStyle(this.el).fontSize);if(this.opts.cellHeightUnit==="cm")return this.opts.cellHeight*(96/2.54);if(this.opts.cellHeightUnit==="mm")return this.opts.cellHeight*(96/2.54)/10;let t=this.el.querySelector("."+this.opts.itemClass);if(t){let r=A.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/r)}let i=parseInt(this.el.getAttribute("gs-current-row"));return i?Math.round(this.el.getBoundingClientRect().height/i):this.opts.cellHeight}cellHeight(e,t=!0){if(t&&e!==void 0&&this._isAutoCellHeight!==(e==="auto")&&(this._isAutoCellHeight=e==="auto",this._updateResizeEvent()),(e==="initial"||e==="auto")&&(e=void 0),e===void 0){let r=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+r}let i=A.parseHeight(e);return this.opts.cellHeightUnit===i.unit&&this.opts.cellHeight===i.h?this:(this.opts.cellHeightUnit=i.unit,this.opts.cellHeight=i.h,this.resizeToContentCheck(),t&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(e=!1){return e&&this.opts.columnOpts?.breakpointForWindow?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){let e=this.opts.columnOpts;if(!e||!e.columnWidth&&!e.breakpoints?.length)return!1;let t=this.getColumn(),i=t,r=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(r/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let o=0;for(;o<e.breakpoints.length&&r<=e.breakpoints[o].w;)i=e.breakpoints[o++].c||t}if(i!==t){let o=e.breakpoints?.find(s=>s.c===i);return this.column(i,o?.layout||e.layout),!0}return!1}compact(e="compact",t=!0){return this.engine.compact(e,t),this._triggerChangeEvent(),this}column(e,t="moveScale"){if(!e||e<1||this.opts.column===e)return this;let i=this.getColumn();return this.opts.column=e,this.engine?(this.engine.column=e,this.el.classList.remove("gs-"+i),this.el.classList.add("gs-"+e),this.engine.columnChanged(i,e,t),this._isAutoCellHeight&&this.cellHeight(),this.resizeToContentCheck(!0),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this):this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(e=>e.matches("."+this.opts.itemClass)&&!e.matches("."+this.opts.placeholderClass))}isIgnoreChangeCB(){return this._ignoreLayoutsNodeChange}destroy(e=!0){if(this.el)return this.offAll(),this._updateResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),e?this.el.parentNode.removeChild(this.el):(this.removeAll(e),this.el.classList.remove(this._styleSheetClass),this.el.removeAttribute("gs-current-row")),this._removeStylesheet(),delete this.parentGridNode?.subGrid,delete this.parentGridNode,delete this.opts,delete this._placeholder?.gridstackNode,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(e){return this.opts.float!==e&&(this.opts.float=this.engine.float=e,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(e,t=!1){let i=this.el.getBoundingClientRect(),r;t?r={top:i.top+document.documentElement.scrollTop,left:i.left}:r={top:this.el.offsetTop,left:this.el.offsetLeft};let o=e.left-r.left,s=e.top-r.top,d=i.width/this.getColumn(),p=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(o/d),y:Math.floor(s/p)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,r){return this.engine.isAreaEmpty(e,t,i,r)}makeWidget(e,t){let i=a.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);let r=i.gridstackNode;this._updateContainerHeight(),r.subGridOpts&&this.makeSubGrid(i,r.subGridOpts,void 0,!1);let o;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(o=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),o&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(r=>this.on(r,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=r=>t(r):this._gsEventHandler[e]=r=>{r.detail&&t(r,r.detail)},this.el.addEventListener(e,this._gsEventHandler[e])):e==="drag"||e==="dragstart"||e==="dragstop"||e==="resizestart"||e==="resize"||e==="resizestop"||e==="dropped"||e==="resizecontent"?this._gsEventHandler[e]=t:console.error("GridStack.on("+e+") event not supported"),this)}off(e){return e.indexOf(" ")!==-1?(e.split(" ").forEach(i=>this.off(i)),this):((e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable")&&this._gsEventHandler[e]&&this.el.removeEventListener(e,this._gsEventHandler[e]),delete this._gsEventHandler[e],this)}offAll(){return Object.keys(this._gsEventHandler).forEach(e=>this.off(e)),this}removeWidget(e,t=!0,i=!0){return e?(a.getElements(e).forEach(r=>{if(r.parentElement&&r.parentElement!==this.el)return;let o=r.gridstackNode;o||(o=this.engine.nodes.find(s=>r===s.el)),o&&(t&&a.addRemoveCB&&a.addRemoveCB(this.el,o,!1,!1),delete r.gridstackNode,this._removeDD(r),this.engine.removeNode(o,t,i),t&&r.parentElement&&r.remove())}),i&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this):(console.error("Error: GridStack.removeWidget(undefined) called"),this)}removeAll(e=!0,t=!0){return this.engine.nodes.forEach(i=>{e&&a.addRemoveCB&&a.addRemoveCB(this.el,i,!1,!1),delete i.el.gridstackNode,this.opts.staticGrid||this._removeDD(i.el)}),this.engine.removeAll(e,t),t&&this._triggerRemoveEvent(),this}setAnimation(e=this.opts.animate,t){return t?setTimeout(()=>{this.opts&&this.setAnimation(e)}):e?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}hasAnimationCSS(){return this.el.classList.contains("grid-stack-animate")}setStatic(e,t=!0,i=!0){return!!this.opts.staticGrid===e?this:(e?this.opts.staticGrid=!0:delete this.opts.staticGrid,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(r=>{this.prepareDragDrop(r.el),r.subGrid&&i&&r.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){let t=this.opts;return e.acceptWidgets!==void 0&&this._setupAcceptWidget(),e.animate!==void 0&&this.setAnimation(),e.cellHeight&&(this.cellHeight(e.cellHeight,!0),delete e.cellHeight),e.class&&e.class!==t.class&&(t.class&&this.el.classList.remove(t.class),this.el.classList.add(e.class)),typeof e.column=="number"&&!e.columnOpts&&(this.column(e.column),delete e.column),e.margin!==void 0&&this.margin(e.margin),e.staticGrid!==void 0&&this.setStatic(e.staticGrid),e.disableDrag!==void 0&&!e.staticGrid&&this.enableMove(!e.disableDrag),e.disableResize!==void 0&&!e.staticGrid&&this.enableResize(!e.disableResize),e.float!==void 0&&this.float(e.float),e.row!==void 0&&(t.minRow=t.maxRow=e.row),e.children?.length&&(this.load(e.children),delete e.children),this.opts=ee(ee({},this.opts),e),this}update(e,t){return a.getElements(e).forEach(i=>{let r=i?.gridstackNode;if(!r)return;let o=ee(ee({},A.copyPos({},r)),A.cloneDeep(t));this.engine.nodeBoundFix(o),delete o.autoPosition;let s=["x","y","w","h"],d;if(s.some(c=>o[c]!==void 0&&o[c]!==r[c])&&(d={},s.forEach(c=>{d[c]=o[c]!==void 0?o[c]:r[c],delete o[c]})),!d&&(o.minW||o.minH||o.maxW||o.maxH)&&(d={}),o.content!==void 0){let c=i.querySelector(".grid-stack-item-content");c&&c.textContent!==o.content&&(r.content=o.content,a.renderCB(c,o),r.subGrid?.el&&(c.appendChild(r.subGrid.el),r.subGrid.opts.styleInHead||r.subGrid._updateStyles(!0))),delete o.content}let p=!1,l=!1;for(let c in o)c[0]!=="_"&&r[c]!==o[c]&&(r[c]=o[c],p=!0,l=l||!this.opts.staticGrid&&(c==="noResize"||c==="noMove"||c==="locked"));if(A.sanitizeMinMax(r),d){let c=d.w!==void 0&&d.w!==r.w;this.moveNode(r,d),c&&r.subGrid?r.subGrid.onResize(this.hasAnimationCSS()?r.w:void 0):this.resizeToContentCheck(c,r),delete r._orig}(d||p)&&this._writeAttr(i,r),l&&this.prepareDragDrop(r.el)}),this}moveNode(e,t){let i=e._updating;i||this.engine.cleanNodes().beginUpdate(e),this.engine.moveNode(e,t),this._updateContainerHeight(),i||(this._triggerChangeEvent(),this.engine.endUpdate())}resizeToContent(e){if(!e||(e.classList.remove("size-to-content-max"),!e.clientHeight))return;let t=e.gridstackNode;if(!t)return;let i=t.grid;if(!i||e.parentElement!==i.el)return;let r=i.getCellHeight(!0);if(!r)return;let o=t.h?t.h*r:e.clientHeight,s;if(t.resizeToContentParent&&(s=e.querySelector(t.resizeToContentParent)),s||(s=e.querySelector(a.resizeToContentParent)),!s)return;let d=e.clientHeight-s.clientHeight,p=t.h?t.h*r-d:s.clientHeight,l;if(t.subGrid){l=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);let v=t.subGrid.el.getBoundingClientRect(),b=t.subGrid.el.parentElement.getBoundingClientRect();l+=v.top-b.top}else{if(t.subGridOpts?.children?.length)return;{let v=s.firstElementChild;if(!v){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${a.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}l=v.getBoundingClientRect().height||p}}if(p===l)return;o+=l-p;let c=Math.ceil(o/r),m=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;m&&c>m&&(c=m,e.classList.add("size-to-content-max")),t.minH&&c<t.minH?c=t.minH:t.maxH&&c>t.maxH&&(c=t.maxH),c!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:c}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){a.resizeToContentCB?a.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return a.getElements(e).forEach(i=>{let r=i.gridstackNode;if(!A.canBeRotated(r))return;let o={w:r.h,h:r.w,minH:r.minW,minW:r.minH,maxH:r.maxW,maxW:r.maxH};if(t){let d=t.left>0?Math.floor(t.left/this.cellWidth()):0,p=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;o.x=r.x+d-(r.h-(p+1)),o.y=r.y+p-d}Object.keys(o).forEach(d=>{o[d]===void 0&&delete o[d]});let s=r._orig;this.update(i,o),r._orig=s}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){let i=A.parseHeight(e);if(this.opts.marginUnit===i.unit&&this.opts.margin===i.h)return}return this.opts.margin=e,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(e){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");let t=arguments,i=0,r={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(r)}return this.engine.willItFit(e)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let e=this.engine.getDirtyNodes(!0);return e&&e.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(e),this._triggerEvent("change",e)),this.engine.saveInitial(),this}_triggerAddEvent(){if(this.engine.batchMode)return this;if(this.engine.addedNodes?.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(t=>{delete t._dirty});let e=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",e)}return this}_triggerRemoveEvent(){if(this.engine.batchMode)return this;if(this.engine.removedNodes?.length){let e=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",e)}return this}_triggerEvent(e,t){let i=t?new CustomEvent(e,{bubbles:!1,detail:t}):new Event(e);return this.el.dispatchEvent(i),this}_removeStylesheet(){if(this._styles){let e=this.opts.styleInHead?void 0:this.el.parentNode;A.removeStylesheet(this._styleSheetClass,e),delete this._styles}return this}_updateStyles(e=!1,t){if(e&&this._removeStylesheet(),t===void 0&&(t=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;let i=this.opts.cellHeight,r=this.opts.cellHeightUnit,o=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){let s=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=A.createStylesheet(this._styleSheetClass,s,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,A.addCSSRule(this._styles,o,`height: ${i}${r}`);let d=this.opts.marginTop+this.opts.marginUnit,p=this.opts.marginBottom+this.opts.marginUnit,l=this.opts.marginRight+this.opts.marginUnit,c=this.opts.marginLeft+this.opts.marginUnit,m=`${o} > .grid-stack-item-content`,v=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;A.addCSSRule(this._styles,m,`top: ${d}; right: ${l}; bottom: ${p}; left: ${c};`),A.addCSSRule(this._styles,v,`top: ${d}; right: ${l}; bottom: ${p}; left: ${c};`),A.addCSSRule(this._styles,`${o} > .ui-resizable-n`,`top: ${d};`),A.addCSSRule(this._styles,`${o} > .ui-resizable-s`,`bottom: ${p}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-ne`,`right: ${l}; top: ${d}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-e`,`right: ${l}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-se`,`right: ${l}; bottom: ${p}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-nw`,`left: ${c}; top: ${d}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-w`,`left: ${c}`),A.addCSSRule(this._styles,`${o} > .ui-resizable-sw`,`left: ${c}; bottom: ${p}`)}if(t=t||this._styles._max,t>this._styles._max){let s=d=>i*d+r;for(let d=this._styles._max+1;d<=t;d++)A.addCSSRule(this._styles,`${o}[gs-y="${d}"]`,`top: ${s(d)}`),A.addCSSRule(this._styles,`${o}[gs-h="${d+1}"]`,`height: ${s(d+1)}`);this._styles._max=t}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let e=this.parentGridNode,t=this.getRow()+this._extraDragRow,i=this.opts.cellHeight,r=this.opts.cellHeightUnit;if(!i)return this;if(!e){let o=A.parseHeight(getComputedStyle(this.el).minHeight);if(o.h>0&&o.unit===r){let s=Math.floor(o.h/i);t<s&&(t=s)}}return this.el.setAttribute("gs-current-row",String(t)),this.el.style.removeProperty("min-height"),this.el.style.removeProperty("height"),t&&(this.el.style[e?"minHeight":"height"]=t*i+r),e&&!e.grid.engine.batchMode&&A.shouldSizeToContent(e)&&e.grid.resizeToContentCBCheck(e.el),this}_prepareElement(e,t=!1,i){i=i||this._readAttr(e),e.gridstackNode=i,i.el=e,i.grid=this,i=this.engine.addNode(i,t),this._writeAttr(e,i),e.classList.add(ai.itemClass,this.opts.itemClass);let r=A.shouldSizeToContent(i);return r?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),r&&this.resizeToContentCheck(!1,i),A.lazyLoad(i)||this.prepareDragDrop(i.el),this}_writePosAttr(e,t){return t.x!==void 0&&t.x!==null&&e.setAttribute("gs-x",String(t.x)),t.y!==void 0&&t.y!==null&&e.setAttribute("gs-y",String(t.y)),t.w>1?e.setAttribute("gs-w",String(t.w)):e.removeAttribute("gs-w"),t.h>1?e.setAttribute("gs-h",String(t.h)):e.removeAttribute("gs-h"),this}_writeAttr(e,t){if(!t)return this;this._writePosAttr(e,t);let i={noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id",sizeToContent:"gs-size-to-content"};for(let r in i)t[r]?e.setAttribute(i[r],String(t[r])):e.removeAttribute(i[r]);return this}_readAttr(e,t=!0){let i={};i.x=A.toNumber(e.getAttribute("gs-x")),i.y=A.toNumber(e.getAttribute("gs-y")),i.w=A.toNumber(e.getAttribute("gs-w")),i.h=A.toNumber(e.getAttribute("gs-h")),i.autoPosition=A.toBool(e.getAttribute("gs-auto-position")),i.noResize=A.toBool(e.getAttribute("gs-no-resize")),i.noMove=A.toBool(e.getAttribute("gs-no-move")),i.locked=A.toBool(e.getAttribute("gs-locked"));let r=e.getAttribute("gs-size-to-content");r&&(r==="true"||r==="false"?i.sizeToContent=A.toBool(r):i.sizeToContent=parseInt(r,10)),i.id=e.getAttribute("gs-id"),i.maxW=A.toNumber(e.getAttribute("gs-max-w")),i.minW=A.toNumber(e.getAttribute("gs-min-w")),i.maxH=A.toNumber(e.getAttribute("gs-max-h")),i.minH=A.toNumber(e.getAttribute("gs-min-h")),t&&(i.w===1&&e.removeAttribute("gs-w"),i.h===1&&e.removeAttribute("gs-h"),i.maxW&&e.removeAttribute("gs-max-w"),i.minW&&e.removeAttribute("gs-min-w"),i.maxH&&e.removeAttribute("gs-max-h"),i.minH&&e.removeAttribute("gs-min-h"));for(let o in i){if(!i.hasOwnProperty(o))return;!i[o]&&i[o]!==0&&o!=="gs-size-to-content"&&delete i[o]}return i}_setStaticClass(){let e=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...e),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...e),this.el.removeAttribute("gs-static")),this}onResize(e=this.el?.clientWidth){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let t=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),t=!0):t=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(i=>{i.subGrid&&i.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(t),delete this._skipInitialResize,this.batchUpdate(!1),this}resizeToContentCheck(e=!1,t=void 0){if(this.engine){if(e&&this.hasAnimationCSS())return setTimeout(()=>this.resizeToContentCheck(!1,t),this.animationDelay);if(t)A.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>A.shouldSizeToContent(i))){let i=[...this.engine.nodes];this.batchUpdate(),i.forEach(r=>{A.shouldSizeToContent(r)&&this.resizeToContentCBCheck(r.el)}),this.batchUpdate(!1)}this._gsEventHandler.resizecontent&&this._gsEventHandler.resizecontent(null,t?[t]:this.engine.nodes)}}_updateResizeEvent(e=!1){let t=!this.parentGridNode&&(this._isAutoCellHeight||this.opts.sizeToContent||this.opts.columnOpts||this.engine.nodes.find(i=>i.sizeToContent));return!e&&t&&!this.resizeObserver?(this._sizeThrottle=A.throttle(()=>this.onResize(),this.opts.cellHeightThrottle),this.resizeObserver=new ResizeObserver(()=>this._sizeThrottle()),this.resizeObserver.observe(this.el),this._skipInitialResize=!0):(e||!t)&&this.resizeObserver&&(this.resizeObserver.disconnect(),delete this.resizeObserver,delete this._sizeThrottle),this}static getElement(e=".grid-stack-item"){return A.getElement(e)}static getElements(e=".grid-stack-item"){return A.getElements(e)}static getGridElement(e){return a.getElement(e)}static getGridElements(e){return A.getElements(e)}_initMargin(){let e,t=0,i=[];return typeof this.opts.margin=="string"&&(i=this.opts.margin.split(" ")),i.length===2?(this.opts.marginTop=this.opts.marginBottom=i[0],this.opts.marginLeft=this.opts.marginRight=i[1]):i.length===4?(this.opts.marginTop=i[0],this.opts.marginRight=i[1],this.opts.marginBottom=i[2],this.opts.marginLeft=i[3]):(e=A.parseHeight(this.opts.margin),this.opts.marginUnit=e.unit,t=this.opts.margin=e.h),this.opts.marginTop===void 0?this.opts.marginTop=t:(e=A.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=A.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=A.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=A.parseHeight(this.opts.marginLeft),this.opts.marginLeft=e.h,delete this.opts.margin),this.opts.marginUnit=e.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return Kt}static setupDragIn(e,t,i,r=document){t?.pause!==void 0&&(ve.pauseDrag=t.pause),t=ee({appendTo:"body",helper:"clone"},t||{}),(typeof e=="string"?A.getElements(e,r):e).forEach((s,d)=>{Kt.isDraggable(s)||Kt.dragIn(s,t),i?.[d]&&(s.gridstackNode=i[d])})}movable(e,t){return this.opts.staticGrid?this:(a.getElements(e).forEach(i=>{let r=i.gridstackNode;r&&(t?delete r.noMove:r.noMove=!0,this.prepareDragDrop(r.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(a.getElements(e).forEach(i=>{let r=i.gridstackNode;r&&(t?delete r.noResize:r.noResize=!0,this.prepareDragDrop(r.el))}),this)}disable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!1,e),this.enableResize(!1,e),this._triggerEvent("disable"),this}enable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!0,e),this.enableResize(!0,e),this._triggerEvent("enable"),this}enableMove(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableDrag:this.opts.disableDrag=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableMove(e,t)}),this)}enableResize(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableResize:this.opts.disableResize=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableResize(e,t)}),this)}cancelDrag(){let e=this._placeholder?.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&a._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return Kt.draggable(e,"destroy").resizable(e,"destroy"),e.gridstackNode&&delete e.gridstackNode._initDD,delete e.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return Kt.droppable(this.el,"destroy"),this;let e,t,i=(r,o,s)=>{s=s||o;let d=s.gridstackNode;if(!d)return;if(!d.grid?.el){s.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;let v=s.getBoundingClientRect();s.style.left=v.x+(this.dragTransform.xScale-1)*(r.clientX-v.x)/this.dragTransform.xScale+"px",s.style.top=v.y+(this.dragTransform.yScale-1)*(r.clientY-v.y)/this.dragTransform.yScale+"px",s.style.transformOrigin="0px 0px"}let{top:p,left:l}=s.getBoundingClientRect(),c=this.el.getBoundingClientRect();l-=c.left,p-=c.top;let m={position:{top:p*this.dragTransform.xScale,left:l*this.dragTransform.yScale}};if(d._temporaryRemoved){if(d.x=Math.max(0,Math.round(l/t)),d.y=Math.max(0,Math.round(p/e)),delete d.autoPosition,this.engine.nodeBoundFix(d),!this.engine.willItFit(d)){if(d.autoPosition=!0,!this.engine.willItFit(d)){Kt.off(o,"drag");return}d._willFitPos&&(A.copyPos(d,d._willFitPos),delete d._willFitPos)}this._onStartMoving(s,r,m,d,t,e)}else this._dragOrResize(s,r,m,d,t,e)};return Kt.droppable(this.el,{accept:r=>{let o=r.gridstackNode||this._readAttr(r,!1);if(o?.grid===this)return!0;if(!this.opts.acceptWidgets)return!1;let s=!0;if(typeof this.opts.acceptWidgets=="function")s=this.opts.acceptWidgets(r);else{let d=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;s=r.matches(d)}if(s&&o&&this.opts.maxRow){let d={w:o.w,h:o.h,minW:o.minW,minH:o.minH};s=this.engine.willItFit(d)}return s}}).on(this.el,"dropover",(r,o,s)=>{let d=s?.gridstackNode||o.gridstackNode;if(d?.grid===this&&!d._temporaryRemoved)return!1;if(d?._sidebarOrig&&(d.w=d._sidebarOrig.w,d.h=d._sidebarOrig.h),d?.grid&&d.grid!==this&&!d._temporaryRemoved&&d.grid._leave(o,s),s=s||o,t=this.cellWidth(),e=this.getCellHeight(!0),!d){let c=s.getAttribute("data-gs-widget")||s.getAttribute("gridstacknode");if(c){try{d=JSON.parse(c)}catch{console.error("Gridstack dropover: Bad JSON format: ",c)}s.removeAttribute("data-gs-widget"),s.removeAttribute("gridstacknode")}d||(d=this._readAttr(s)),d._sidebarOrig={w:d.w,h:d.h}}d.grid||(d.el||(d=ee({},d)),d._isExternal=!0,s.gridstackNode=d);let p=d.w||Math.round(s.offsetWidth/t)||1,l=d.h||Math.round(s.offsetHeight/e)||1;return d.grid&&d.grid!==this?(o._gridstackNodeOrig||(o._gridstackNodeOrig=d),o.gridstackNode=d=ht(ee({},d),{w:p,h:l,grid:this}),delete d.x,delete d.y,this.engine.cleanupNode(d).nodeBoundFix(d),d._initDD=d._isExternal=d._temporaryRemoved=!0):(d.w=p,d.h=l,d._temporaryRemoved=!0),a._itemRemoving(d.el,!1),Kt.on(o,"drag",i),i(r,o,s),!1}).on(this.el,"dropout",(r,o,s)=>{let d=s?.gridstackNode||o.gridstackNode;return d&&(!d.grid||d.grid===this)&&(this._leave(o,s),this._isTemp&&this.removeAsSubGrid(d)),!1}).on(this.el,"drop",(r,o,s)=>{let d=s?.gridstackNode||o.gridstackNode;if(d?.grid===this&&!d._isExternal)return!1;let p=!!this.placeholder.parentElement,l=o!==s;this.placeholder.remove(),delete this.placeholder.gridstackNode;let c=p&&this.opts.animate;c&&this.setAnimation(!1);let m=o._gridstackNodeOrig;if(delete o._gridstackNodeOrig,p&&m?.grid&&m.grid!==this){let b=m.grid;b.engine.removeNodeFromLayoutCache(m),b.engine.removedNodes.push(m),b._triggerRemoveEvent()._triggerChangeEvent(),b.parentGridNode&&!b.engine.nodes.length&&b.opts.subGridDynamic&&b.removeAsSubGrid()}if(!d||(p&&(this.engine.cleanupNode(d),d.grid=this),delete d.grid?._isTemp,Kt.off(o,"drag"),s!==o?(s.remove(),o=s):o.remove(),this._removeDD(o),!p))return!1;let v=d.subGrid?.el?.gridstack;return A.copyPos(d,this._readAttr(this.placeholder)),A.removePositioningStyles(o),l&&(d.content||d.subGridOpts||a.addRemoveCB)?(delete d.el,o=this.addWidget(d)):(this._prepareElement(o,!0,d),this.el.appendChild(o),this.resizeToContentCheck(!1,d),v&&(v.parentGridNode=d,v.opts.styleInHead||v._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(d),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped(ht(ee({},r),{type:"dropped"}),m&&m.grid?m:void 0,d),c&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;let i=e?e.gridstackNode:void 0;!i?.grid||e.classList.contains(i.grid.opts.removableOptions.decline)||(t?i._isAboutToRemove=!0:delete i._isAboutToRemove,t?e.classList.add("grid-stack-item-removing"):e.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(typeof this.opts.removable!="string")return this;let e=document.querySelector(this.opts.removable);return e?(!this.opts.staticGrid&&!Kt.isDroppable(e)&&Kt.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>a._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>a._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){let i=e?.gridstackNode;if(!i)return;let r=i.noMove||this.opts.disableDrag,o=i.noResize||this.opts.disableResize,s=this.opts.staticGrid||r&&o;if((t||s)&&(i._initDD&&(this._removeDD(e),delete i._initDD),s&&e.classList.add("ui-draggable-disabled","ui-resizable-disabled"),!t))return this;if(!i._initDD){let d,p,l=(v,b)=>{this._gsEventHandler[v.type]&&this._gsEventHandler[v.type](v,v.target),d=this.cellWidth(),p=this.getCellHeight(!0),this._onStartMoving(e,v,b,i,d,p)},c=(v,b)=>{this._dragOrResize(e,v,b,i,d,p)},m=v=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;let b=i.w!==i._orig.w,k=v.target;if(!(!k.gridstackNode||k.gridstackNode.grid!==this)){if(i.el=k,i._isAboutToRemove){let M=e.gridstackNode.grid;M._gsEventHandler[v.type]&&M._gsEventHandler[v.type](v,k),M.engine.nodes.push(i),M.removeWidget(e,!0,!0)}else A.removePositioningStyles(k),i._temporaryRemoved?(A.copyPos(i,i._orig),this._writePosAttr(k,i),this.engine.addNode(i)):this._writePosAttr(k,i),this._gsEventHandler[v.type]&&this._gsEventHandler[v.type](v,k);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),v.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(b,i))}};Kt.draggable(e,{start:l,stop:m,drag:c}).resizable(e,{start:l,stop:m,resize:c}),i._initDD=!0}return Kt.draggable(e,r?"disable":"enable").resizable(e,o?"disable":"enable"),this}_onStartMoving(e,t,i,r,o,s){if(this.engine.cleanNodes().beginUpdate(r),this._writePosAttr(this.placeholder,r),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=r,r.grid?.el)this.dragTransform=A.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){let d=this.placeholder.closest(".grid-stack");this.dragTransform=A.getValuesFromTransformedElement(d)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(r.el=this.placeholder,r._lastUiPosition=i.position,r._prevYPix=i.position.top,r._moving=t.type==="dragstart",delete r._lastTried,t.type==="dropover"&&r._temporaryRemoved&&(this.engine.addNode(r),r._moving=!0),this.engine.cacheRects(o,s,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){let d=this.getColumn()-r.x,p=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-r.y;Kt.resizable(e,"option","minWidth",o*Math.min(r.minW||1,d)).resizable(e,"option","minHeight",s*Math.min(r.minH||1,p)).resizable(e,"option","maxWidth",o*Math.min(r.maxW||Number.MAX_SAFE_INTEGER,d)).resizable(e,"option","maxWidthMoveLeft",o*Math.min(r.maxW||Number.MAX_SAFE_INTEGER,r.x+r.w)).resizable(e,"option","maxHeight",s*Math.min(r.maxH||Number.MAX_SAFE_INTEGER,p)).resizable(e,"option","maxHeightMoveUp",s*Math.min(r.maxH||Number.MAX_SAFE_INTEGER,r.y+r.h))}}_dragOrResize(e,t,i,r,o,s){let d=ee({},r._orig),p,l=this.opts.marginLeft,c=this.opts.marginRight,m=this.opts.marginTop,v=this.opts.marginBottom,b=Math.round(s*.1),k=Math.round(o*.1);if(l=Math.min(l,k),c=Math.min(c,k),m=Math.min(m,b),v=Math.min(v,b),t.type==="drag"){if(r._temporaryRemoved)return;let F=i.position.top-r._prevYPix;r._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&A.updateScrollPosition(e,i.position,F);let j=i.position.left+(i.position.left>r._lastUiPosition.left?-c:l),te=i.position.top+(i.position.top>r._lastUiPosition.top?-v:m);d.x=Math.round(j/o),d.y=Math.round(te/s);let ye=this._extraDragRow;if(this.engine.collide(r,d)){let Le=this.getRow(),qe=Math.max(0,d.y+r.h-Le);this.opts.maxRow&&Le+qe>this.opts.maxRow&&(qe=Math.max(0,this.opts.maxRow-Le)),this._extraDragRow=qe}else this._extraDragRow=0;if(this._extraDragRow!==ye&&this._updateContainerHeight(),r.x===d.x&&r.y===d.y)return}else if(t.type==="resize"){if(d.x<0||(A.updateScrollResize(t,e,s),d.w=Math.round((i.size.width-l)/o),d.h=Math.round((i.size.height-m)/s),r.w===d.w&&r.h===d.h)||r._lastTried&&r._lastTried.w===d.w&&r._lastTried.h===d.h)return;let F=i.position.left+l,j=i.position.top+m;d.x=Math.round(F/o),d.y=Math.round(j/s),p=!0}r._event=t,r._lastTried=d;let M={x:i.position.left+l,y:i.position.top+m,w:(i.size?i.size.width:r.w*o)-l-c,h:(i.size?i.size.height:r.h*s)-m-v};if(this.engine.moveNodeCheck(r,ht(ee({},d),{cellWidth:o,cellHeight:s,rect:M,resizing:p}))){r._lastUiPosition=i.position,this.engine.cacheRects(o,s,m,c,v,l),delete r._skipDown,p&&r.subGrid&&r.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();let F=t.target;r._sidebarOrig||this._writePosAttr(F,r),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,F)}}_leave(e,t){t=t||e;let i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,Kt.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;let r=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=r,this.opts.removable===!0&&a._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return vc(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}return a.renderCB=(n,e)=>{n&&e?.content&&(n.textContent=e.content)},a.resizeToContentParent=".grid-stack-item-content",a.Utils=A,a.Engine=Jr,a.GDRev="11.5.1",a})();var Sc=["container"],Dm=["*"];function Pm(a,n){}var Am=["*",[["","empty-content",""]]],Om=["*","[empty-content]"];function Im(a,n){a&1&&Nt(0,1,["*ngIf","isEmpty"])}function Rm(a,n){}var Cc=(()=>{class a{serialize(){}deserialize(e){this.widgetItem=e,e&&e.input&&Object.assign(this,e.input)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=wt({token:a,factory:a.\u0275fac}),a})(),Ts=(()=>{class a{constructor(e){this.elementRef=e,this.el._gridItemComp=this}set options(e){let t=this.el.gridstackNode?.grid;t?t.update(this.el,e):this._options=ht(ee({},e),{el:this.el})}get options(){return this.el.gridstackNode||this._options||{el:this.el}}get el(){return this.elementRef.nativeElement}clearOptions(){delete this._options}ngOnDestroy(){this.clearOptions(),delete this.childWidget,delete this.el._gridItemComp,delete this.container,delete this.ref}}return a.\u0275fac=function(e){return new(e||a)(ei(et))},a.\u0275cmp=q({type:a,selectors:[["gridstack-item"]],viewQuery:function(e,t){if(e&1&&Mi(Sc,7,ms),e&2){let i;zt(i=Ft())&&(t.container=i.first)}},inputs:{options:"options"},ngContentSelectors:Dm,decls:5,vars:1,consts:[["container",""],[1,"grid-stack-item-content"]],template:function(e,t){e&1&&(wi(),L(0,"div",1),Ql(1,Pm,0,0,"ng-template",null,0,ps),Nt(3),w(4),H()),e&2&&(x(4),_t(" ",t.options.content," "))},styles:["[_nghost-%COMP%]{display:block}"]}),a})(),Rn=(()=>{class a{constructor(e){this.elementRef=e,this.addedCB=new Tt,this.changeCB=new Tt,this.disableCB=new Tt,this.dragCB=new Tt,this.dragStartCB=new Tt,this.dragStopCB=new Tt,this.droppedCB=new Tt,this.enableCB=new Tt,this.removedCB=new Tt,this.resizeCB=new Tt,this.resizeStartCB=new Tt,this.resizeStopCB=new Tt,Pa.addRemoveCB||(Pa.addRemoveCB=Nm),Pa.saveCB||(Pa.saveCB=Wm),this.el._gridComp=this}set options(e){this._grid?this._grid.updateOptions(e):this._options=e}get options(){return this._grid?.opts||this._options||{}}get el(){return this.elementRef.nativeElement}get grid(){return this._grid}static addComponentToSelectorType(e){e.forEach(t=>a.selectorToType[a.getSelector(t)]=t)}static getSelector(e){return rd(e).selector}ngOnInit(){this.loaded=!!this.options?.children?.length,this._grid=Pa.init(this._options,this.el),delete this._options,this.checkEmpty()}ngAfterContentInit(){this._sub=this.gridstackItems?.changes.subscribe(()=>this.updateAll()),this.loaded||this.updateAll(),this.hookEvents(this.grid)}ngOnDestroy(){this.unhookEvents(this._grid),this._sub?.unsubscribe(),this._grid?.destroy(),delete this._grid,delete this.el._gridComp,delete this.container,delete this.ref}updateAll(){if(!this.grid)return;let e=[];this.gridstackItems?.forEach(t=>{e.push(t.options),t.clearOptions()}),this.grid.load(e)}checkEmpty(){this.grid&&(this.isEmpty=!this.grid.engine.nodes.length)}hookEvents(e){e&&e.on("added",(t,i)=>{this.checkEmpty(),this.addedCB.emit({event:t,nodes:i})}).on("change",(t,i)=>this.changeCB.emit({event:t,nodes:i})).on("disable",t=>this.disableCB.emit({event:t})).on("drag",(t,i)=>this.dragCB.emit({event:t,el:i})).on("dragstart",(t,i)=>this.dragStartCB.emit({event:t,el:i})).on("dragstop",(t,i)=>this.dragStopCB.emit({event:t,el:i})).on("dropped",(t,i,r)=>this.droppedCB.emit({event:t,previousNode:i,newNode:r})).on("enable",t=>this.enableCB.emit({event:t})).on("removed",(t,i)=>{this.checkEmpty(),this.removedCB.emit({event:t,nodes:i})}).on("resize",(t,i)=>this.resizeCB.emit({event:t,el:i})).on("resizestart",(t,i)=>this.resizeStartCB.emit({event:t,el:i})).on("resizestop",(t,i)=>this.resizeStopCB.emit({event:t,el:i}))}unhookEvents(e){e&&e.off("added change disable drag dragstart dragstop dropped enable removed resize resizestart resizestop")}}return a.selectorToType={},a.\u0275fac=function(e){return new(e||a)(ei(et))},a.\u0275cmp=q({type:a,selectors:[["gridstack"]],contentQueries:function(e,t,i){if(e&1&&En(i,Ts,4),e&2){let r;zt(r=Ft())&&(t.gridstackItems=r)}},viewQuery:function(e,t){if(e&1&&Mi(Sc,7,ms),e&2){let i;zt(i=Ft())&&(t.container=i.first)}},inputs:{options:"options",isEmpty:"isEmpty"},outputs:{addedCB:"addedCB",changeCB:"changeCB",disableCB:"disableCB",dragCB:"dragCB",dragStartCB:"dragStartCB",dragStopCB:"dragStopCB",droppedCB:"droppedCB",enableCB:"enableCB",removedCB:"removedCB",resizeCB:"resizeCB",resizeStartCB:"resizeStartCB",resizeStopCB:"resizeStopCB"},ngContentSelectors:Om,decls:4,vars:1,consts:[["container",""],[4,"ngIf"]],template:function(e,t){e&1&&(wi(Am),Pr(0,Im,1,0,"ng-content",1)(1,Rm,0,0,"ng-template",null,0,ps),Nt(3)),e&2&&G("ngIf",t.isEmpty)},dependencies:[sd],styles:["[_nghost-%COMP%]{display:block}"]}),a})();function Nm(a,n,e,t){if(e){if(!a)return;if(t){let i=a.parentElement?._gridItemComp;if(!i)return;let o=(i.childWidget?.container||i.container)?.createComponent(Rn),s=o?.instance;return s?(s.ref=o,s.options=n,s.el):void 0}else{let r=a._gridComp?.container?.createComponent(Ts),o=r?.instance;if(!o)return;o.ref=r;let s=n.selector,d=s?Rn.selectorToType[s]:void 0;if(d){let p=()=>{let c=o.container?.createComponent(d)?.instance;c&&typeof c.serialize=="function"&&typeof c.deserialize=="function"&&(o.childWidget=c,c.deserialize(n))};n.lazyLoad||n.grid?.opts?.lazyLoad&&n.lazyLoad!==!1?n.visibleObservable||(n.visibleObservable=new IntersectionObserver(([c])=>{c.isIntersecting&&(n.visibleObservable?.disconnect(),delete n.visibleObservable,p())}),window.setTimeout(()=>n.visibleObservable?.observe(o.el))):p()}return o.el}}else if(t){let i=n.el?._gridComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}else{let i=n.el?._gridItemComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}}function Wm(a,n){let e=a.el?._gridItemComp;if(e){let i=e.childWidget?.serialize();i&&(n.input=i);return}let t=a.el?._gridComp}var kc=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=yi({type:a}),a.\u0275inj=vi({imports:[Ts,Rn]}),a})();var Ue=(function(a){return a[a.State=0]="State",a[a.Transition=1]="Transition",a[a.Sequence=2]="Sequence",a[a.Group=3]="Group",a[a.Animate=4]="Animate",a[a.Keyframes=5]="Keyframes",a[a.Style=6]="Style",a[a.Trigger=7]="Trigger",a[a.Reference=8]="Reference",a[a.AnimateChild=9]="AnimateChild",a[a.AnimateRef=10]="AnimateRef",a[a.Query=11]="Query",a[a.Stagger=12]="Stagger",a})(Ue||{}),ki="*";function Es(a,n){return{type:Ue.Trigger,name:a,definitions:n,options:{}}}function ao(a,n=null){return{type:Ue.Animate,styles:n,timings:a}}function xc(a,n=null){return{type:Ue.Sequence,steps:a,options:n}}function $i(a){return{type:Ue.Style,styles:a,offset:null}}function Ms(a,n,e=null){return{type:Ue.Transition,expr:a,animation:n,options:e}}var Ui=class{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,e=0){this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){let e=n=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Nn=class{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let e=0,t=0,i=0,r=this.players.length;r==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(o=>{o.onDone(()=>{++e==r&&this._onFinish()}),o.onDestroy(()=>{++t==r&&this._onDestroy()}),o.onStart(()=>{++i==r&&this._onStart()})}),this.totalTime=this.players.reduce((o,s)=>Math.max(o,s.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){let e=n*this.totalTime;this.players.forEach(t=>{let i=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(i)})}getPosition(){let n=this.players.reduce((e,t)=>e===null||t.totalTime>e.totalTime?t:e,null);return n!=null?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){let e=n=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Aa="!";var Vm=(a,n)=>n.id;function zm(a,n){if(a&1&&ne(0,"div",4),a&2){let e=n.$index;X();let t=ad(0);_e("background-color",t===e?"var(--mat-sys-on-surface)":"var(--mat-sys-inverse-on-surface)")}}var Tc=(()=>{class a{activePage=U();dashboards=U();static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["dashboard-scroller"]],inputs:{activePage:[1,"activePage"],dashboards:[1,"dashboards"]},decls:7,vars:4,consts:[[1,"page-scroll-title","page-scroll-container"],[1,"page-label"],[1,"page-scroll-page-number","page-scroll-container"],[1,"page-marker",3,"background-color"],[1,"page-marker"]],template:function(t,i){if(t&1&&(id(0),L(1,"div",0)(2,"span",1),w(3),H()(),L(4,"div",2),bi(5,zm,1,2,"div",3,Vm),H()),t&2){let r=i.dashboards(),o=nd(i.activePage());x(),G("@fadeInOut",o),x(2),Je(r[o].name),x(),G("@fadeInOut",o),x(),_i(r)}},styles:["[_nghost-%COMP%]{pointer-events:none}.page-scroll-title[_ngcontent-%COMP%]{position:absolute;top:50%;right:54px;transform:translateY(-50%);z-index:100;cursor:default;text-align:center;padding:10px;color:var(--mat-sys-inverse-surface)}.page-scroll-page-number[_ngcontent-%COMP%]{position:absolute;top:50%;right:15px;transform:translateY(-50%);z-index:100;cursor:default;display:grid;padding:0}.page-scroll-container[_ngcontent-%COMP%]{opacity:0;background-color:var(--mat-sys-tertiary-fixed-dim);border-radius:10px;border:1px solid var(--mat-sys-inverse-surface)}.page-label[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);text-shadow:1px 1px 0 var(--mat-sys-outline),-1px 1px 0 var(--mat-sys-outline),-1px -1px 0 var(--mat-sys-outline),1px -1px 0 var(--mat-sys-outline);font-size:x-large}.page-marker[_ngcontent-%COMP%]{height:20px;width:20px;margin:4px;border-radius:50%;border:1px solid var(--mat-sys-outline)}"],data:{animation:[Es("fadeInOut",[Ms(":increment, :decrement",[$i({opacity:0}),ao(100,$i({opacity:1})),$i({opacity:1}),ao("250ms 1000ms",$i({opacity:0}))])])]}})}return a})();var Ec="mat-badge-content",Fm=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["ng-component"]],decls:0,vars:0,template:function(t,i){},styles:[`.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;pointer-events:none;background-color:var(--mat-badge-background-color, var(--mat-sys-error));color:var(--mat-badge-text-color, var(--mat-sys-on-error));font-family:var(--mat-badge-text-font, var(--mat-sys-label-small-font));font-weight:var(--mat-badge-text-weight, var(--mat-sys-label-small-weight));border-radius:var(--mat-badge-container-shape, var(--mat-sys-corner-full))}.mat-badge-above .mat-badge-content{bottom:100%}.mat-badge-below .mat-badge-content{top:100%}.mat-badge-before .mat-badge-content{right:100%}[dir=rtl] .mat-badge-before .mat-badge-content{right:auto;left:100%}.mat-badge-after .mat-badge-content{left:100%}[dir=rtl] .mat-badge-after .mat-badge-content{left:auto;right:100%}@media(forced-colors: active){.mat-badge-content{outline:solid 1px;border-radius:0}}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color, color-mix(in srgb, var(--mat-sys-error) 38%, transparent));color:var(--mat-badge-disabled-state-text-color, var(--mat-sys-on-error))}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:var(--mat-badge-legacy-small-size-container-size, unset);height:var(--mat-badge-legacy-small-size-container-size, unset);min-width:var(--mat-badge-small-size-container-size, 6px);min-height:var(--mat-badge-small-size-container-size, 6px);line-height:var(--mat-badge-small-size-line-height, 6px);padding:var(--mat-badge-small-size-container-padding, 0);font-size:var(--mat-badge-small-size-text-size, 0);margin:var(--mat-badge-small-size-container-offset, -6px 0)}.mat-badge-small.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-small-size-container-overlap-offset, -6px)}.mat-badge-medium .mat-badge-content{width:var(--mat-badge-legacy-container-size, unset);height:var(--mat-badge-legacy-container-size, unset);min-width:var(--mat-badge-container-size, 16px);min-height:var(--mat-badge-container-size, 16px);line-height:var(--mat-badge-line-height, 16px);padding:var(--mat-badge-container-padding, 0 4px);font-size:var(--mat-badge-text-size, var(--mat-sys-label-small-size));margin:var(--mat-badge-container-offset, -12px 0)}.mat-badge-medium.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-container-overlap-offset, -12px)}.mat-badge-large .mat-badge-content{width:var(--mat-badge-legacy-large-size-container-size, unset);height:var(--mat-badge-legacy-large-size-container-size, unset);min-width:var(--mat-badge-large-size-container-size, 16px);min-height:var(--mat-badge-large-size-container-size, 16px);line-height:var(--mat-badge-large-size-line-height, 16px);padding:var(--mat-badge-large-size-container-padding, 0 4px);font-size:var(--mat-badge-large-size-text-size, var(--mat-sys-label-small-size));margin:var(--mat-badge-large-size-container-offset, -12px 0)}.mat-badge-large.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-large-size-container-overlap-offset, -12px)}
6
- `],encapsulation:2,changeDetection:0})}return a})(),Mc=(()=>{class a{_ngZone=D(at);_elementRef=D(et);_ariaDescriber=D(Ld);_renderer=D(Dr);_animationsDisabled=Pn();_idGenerator=D(zr);get color(){return this._color}set color(e){this._setColor(e),this._color=e}_color="primary";overlap=!0;disabled;position="above after";get content(){return this._content}set content(e){this._updateRenderedContent(e)}_content;get description(){return this._description}set description(e){this._updateDescription(e)}_description;size="medium";hidden;_badgeElement;_inlineBadgeDescription;_isInitialized=!1;_interactivityChecker=D(Vr);_document=D(nn);constructor(){let e=D(Ad);e.load(Fm),e.load(Od)}isAbove(){return this.position.indexOf("below")===-1}isAfter(){return this.position.indexOf("before")===-1}getBadgeElement(){return this._badgeElement}ngOnInit(){this._clearExistingBadges(),this.content&&!this._badgeElement&&(this._badgeElement=this._createBadgeElement(),this._updateRenderedContent(this.content)),this._isInitialized=!0}ngOnDestroy(){this._renderer.destroyNode&&(this._renderer.destroyNode(this._badgeElement),this._inlineBadgeDescription?.remove()),this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this.description)}_isHostInteractive(){return this._interactivityChecker.isFocusable(this._elementRef.nativeElement,{ignoreVisibility:!0})}_createBadgeElement(){let e=this._renderer.createElement("span"),t="mat-badge-active";return e.setAttribute("id",this._idGenerator.getId("mat-badge-content-")),e.setAttribute("aria-hidden","true"),e.classList.add(Ec),this._animationsDisabled&&e.classList.add("_mat-animation-noopable"),this._elementRef.nativeElement.appendChild(e),typeof requestAnimationFrame=="function"&&!this._animationsDisabled?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{e.classList.add(t)})}):e.classList.add(t),e}_updateRenderedContent(e){let t=`${e??""}`.trim();this._isInitialized&&t&&!this._badgeElement&&(this._badgeElement=this._createBadgeElement()),this._badgeElement&&(this._badgeElement.textContent=t),this._content=t}_updateDescription(e){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this.description),(!e||this._isHostInteractive())&&this._removeInlineDescription(),this._description=e,this._isHostInteractive()?this._ariaDescriber.describe(this._elementRef.nativeElement,e):this._updateInlineDescription()}_updateInlineDescription(){this._inlineBadgeDescription||(this._inlineBadgeDescription=this._document.createElement("span"),this._inlineBadgeDescription.classList.add("cdk-visually-hidden")),this._inlineBadgeDescription.textContent=this.description,this._badgeElement?.appendChild(this._inlineBadgeDescription)}_removeInlineDescription(){this._inlineBadgeDescription?.remove(),this._inlineBadgeDescription=void 0}_setColor(e){let t=this._elementRef.nativeElement.classList;t.remove(`mat-badge-${this._color}`),e&&t.add(`mat-badge-${e}`)}_clearExistingBadges(){let e=this._elementRef.nativeElement.querySelectorAll(`:scope > .${Ec}`);for(let t of Array.from(e))t!==this._badgeElement&&t.remove()}static \u0275fac=function(t){return new(t||a)};static \u0275dir=Vi({type:a,selectors:[["","matBadge",""]],hostAttrs:[1,"mat-badge"],hostVars:20,hostBindings:function(t,i){t&2&&Bt("mat-badge-overlap",i.overlap)("mat-badge-above",i.isAbove())("mat-badge-below",!i.isAbove())("mat-badge-before",!i.isAfter())("mat-badge-after",i.isAfter())("mat-badge-small",i.size==="small")("mat-badge-medium",i.size==="medium")("mat-badge-large",i.size==="large")("mat-badge-hidden",i.hidden||!i.content)("mat-badge-disabled",i.disabled)},inputs:{color:[0,"matBadgeColor","color"],overlap:[2,"matBadgeOverlap","overlap",Rr],disabled:[2,"matBadgeDisabled","disabled",Rr],position:[0,"matBadgePosition","position"],content:[0,"matBadge","content"],description:[0,"matBadgeDescription","description"],size:[0,"matBadgeSize","size"],hidden:[2,"matBadgeHidden","hidden",Rr]}})}return a})(),Oa=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=yi({type:a});static \u0275inj=vi({imports:[Nd,pa,pa]})}return a})();var Ds={200:"The request was successfully.",202:"Request accepted and pending completion.",400:"Something is wrong with the client's request.",401:"Login failed. Your User ID or Password is incorrect.",403:"DENIED: Authorization with R/W or Admin permission level is required to send commands. Configure Sign In credential.",405:"The server does not support the request.",500:"The request failed.",502:"Something went wrong carrying out the request on the server.",504:"Timeout on the server side trying to carry out the request."},xi=(()=>{class a{signalKDeltaService=D(dn);appSettingsService=D(ii);appService=D(Ht);auth=D(Si);requestStatus$=new xt;requests=[];constructor(){this.signalKDeltaService.subscribeRequestUpdates().pipe(Wt()).subscribe(e=>{this.updateRequest(e)})}requestDeviceAccessToken(){let e=Bi.create(),t={requestId:e,accessRequest:{clientId:this.appSettingsService.KipUUID,description:"KIP Instrument MDF",permissions:"admin"}};console.log("[Request Service] Requesting Device Authorization Token"),this.signalKDeltaService.publishDelta(t);let i={requestId:e,state:null,statusCode:null};return this.requests.push(i),e}requestUserLogin(e,t){let i=Bi.create(),r={requestId:i,login:{username:e,password:t}};console.log("[Request Service] Requesting User Login"),this.signalKDeltaService.publishDelta(r);let o={requestId:i,state:null,statusCode:null};return this.requests.push(o),i}putRequest(e,t,i){let r=Bi.create(),o=e.replace(/^(self\.)/,""),d={context:"vessels.self",requestId:r,put:{path:o,value:t}};this.signalKDeltaService.publishDelta(d);let p={requestId:r,state:null,statusCode:null,widgetUUID:i};return this.requests.push(p),r}updateRequest(e){let t=this.requests.findIndex(i=>i.requestId==e.requestId);if(t>-1){this.requests[t].state=e.state,this.requests[t].statusCode=e.statusCode,this.requests[t].message=e.message;let i=Ds[e.statusCode];if(typeof i<"u"&&(this.requests[t].statusCode==200||this.requests[t].statusCode==202||this.requests[t].statusCode==400||this.requests[t].statusCode==401||this.requests[t].statusCode==403||this.requests[t].statusCode==405)){if(this.requests[t].statusCodeDescription=i,this.requests[t].statusCode==202){console.log("[Request Service] Async 202 response received");return}this.requests[t].statusCode==400&&(this.appService.sendSnackbarNotification(this.requests[t].message),console.log("[Request Service] "+this.requests[t].message)),this.requests[t].statusCode==403&&console.warn("[Request Service] Status Code: "+this.requests[t].statusCode+" - "+this.requests[t].statusCodeDescription),this.requests[t].statusCode==405&&console.error("[Request Service] Status Code: "+this.requests[t].statusCode+" - "+this.requests[t].message),e.accessRequest!==void 0&&e.accessRequest.token!==void 0?(this.appService.sendSnackbarNotification(e.accessRequest.permission+": Device Access Token received from server."),console.log(`[Request Service] ${e.accessRequest.permission}: Device Access Token received`),this.auth.setDeviceAccessToken(e.accessRequest.token)):e.login!==void 0&&e.login.token}else this.appService.sendSnackbarNotification("ERROR: Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+Ds[this.requests[t].statusCode]+" - "+this.requests[t].message),console.error("[Request Service] Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+Ds[this.requests[t].statusCode]+" - "+this.requests[t].message);try{this.requestStatus$.next(this.requests[t]),this.requests.splice(t,1)}catch(r){this.requestStatus$.error(r),console.error("[Request Service] "+r),this.requests=[]}}else this.appService.sendSnackbarNotification(`ERROR: A request message that contains an unknown Request ID was received. Request Delta:
7
- `+JSON.stringify(e)),console.error(`[Request Service] A Request message that contains an unknown Request ID was received. from delta:
8
- `+JSON.stringify(e))}subscribeRequest(){return this.requestStatus$.asObservable()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var Dc=Qa(Ps());var Hm={1e3:"notification",1001:"alert",1002:"warn",1003:"alarm",1004:"emergency"},gn=(()=>{class a{settings=D(ii);data=D(cn);requests=D(xi);static ALARM_SEVERITIES={normal:{sound:0,visual:0},nominal:{sound:0,visual:0},alert:{sound:1,visual:0},warn:{sound:2,visual:1},alarm:{sound:3,visual:2},emergency:{sound:4,visual:2}};_notificationSettingsSubscription=null;_notificationDataStreamSubscription=null;_notificationMetaStreamSubscription=null;_resetServiceSubscription=null;_notificationConfig;_notificationConfig$=new en(hd);_notifications=[];_notifications$=new en([]);_alarmsInfo$=new en({audioSev:0,visualSev:0,alarmCount:0,isMuted:!1});_players=new Map;_activeAlarmSoundtrack=null;_activeHowlId=null;_isHowlIdMuted=!1;_lastEmittedValue=null;constructor(){this._notificationSettingsSubscription=this.settings.getNotificationServiceConfigAsO().subscribe(e=>{this._notificationConfig=e,this.reset(),this._notificationConfig$.next(e),this._notificationConfig.disableNotifications&&!this._notificationDataStreamSubscription?.closed&&this.stopNotificationStream(),!this._notificationConfig.disableNotifications&&(this._notificationDataStreamSubscription===null||this._notificationDataStreamSubscription?.closed)&&this.startNotificationStream(),this._notificationConfig.sound.disableSound?this.playAlarm(1e3):this.updateNotificationsState()}),this._resetServiceSubscription=this.data.isResetService().subscribe(e=>{e&&this.reset()}),this.getPlayer(1e3)}startNotificationStream(){this._notificationDataStreamSubscription=this.data.getNotificationMsgObservable().subscribe(e=>this.processNotificationDeltaMsg(e)),this._notificationMetaStreamSubscription=this.data.getNotificationMetaObservable().subscribe(e=>this.processNotificationDeltaMeta(e))}stopNotificationStream(){this._notificationDataStreamSubscription?.unsubscribe(),this._notificationMetaStreamSubscription?.unsubscribe(),this.reset()}reset(){this._notificationConfig.disableNotifications&&(this._notifications=[],this._notifications$.next([])),this.updateNotificationsState()}observeNotifications(){return this._notifications$}addValue(e){this._notifications.push({path:e.path,value:e.value}),this.updateNotificationsState(),this._notifications$.next(this._notifications)}updateValue(e){let t=this._notifications.find(i=>i.path==e.path);t?(t.value=ee({},e.value),this.updateNotificationsState(),this._notifications$.next(this._notifications)):console.log("[Notification Service] Update path not found for: "+e.path)}deleteValue(e){let t=this._notifications.find(i=>i.path==e);t?(delete t.value,this.updateNotificationsState(),this._notifications$.next(this._notifications)):console.log("[Notification Service] Notification to delete not found for: "+e)}updateNotificationsState(){let e=0,t=0,i=0;for(let o of this._notifications){if(!o.value||!("method"in o.value)||o.value.method.length===0||o.value.state===re.Normal&&!this._notificationConfig.devices.showNormalState||o.value.state===re.Nominal&&!this._notificationConfig.devices.showNominalState)continue;i++;let{aSev:s,vSev:d}=this.getNotificationSeverity(o);e=Math.max(e,s),t=Math.max(t,d)}this._notificationConfig.sound.disableSound||this.playAlarm(1e3+e);let r={audioSev:e,visualSev:t,alarmCount:i,isMuted:this._isHowlIdMuted};ci(r,this._lastEmittedValue)||(this._alarmsInfo$.next(r),this._lastEmittedValue=r)}processNotificationDeltaMsg(e){if(!e.path.startsWith("notifications.security"))if(e.value===null)this.deleteValue(e.path);else{let t=this._notifications.find(i=>i.path==e.path);t?(!t.value||t.value.state!==e.value.state||t.value.message!==e.value.message||!ci(t.value.method,e.value.method))&&this.updateValue(e):this.addValue(e)}}processNotificationDeltaMeta(e){let t=this._notifications.find(i=>i.path==e.path);t?t.meta=e.meta:this._notifications.push({path:e.path,meta:e.meta}),this._notifications$.next(this._notifications)}getNotificationSeverity(e){let t=e.value.state,i=a.ALARM_SEVERITIES[t];if(!i)return console.log(`[Notification Service] Unknown Notification State
9
- `+JSON.stringify(e)),{aSev:0,vSev:0};let r=i.sound,o=i.visual;return(!e.value.method.includes(ua.Sound)||this._notificationConfig.sound[`mute${t.charAt(0).toUpperCase()+t.slice(1)}`]||this._isHowlIdMuted)&&(r=0),e.value.method.includes(ua.Visual)||(o=0),{aSev:r,vSev:o}}setSkMethod(e,t){this.requests.putRequest(`${e}.method`,t,Bi.create())}setSkState(e,t){this.requests.putRequest(`${e}.state`,t,Bi.create())}observerNotificationsInfo(){return this._alarmsInfo$.pipe(li(e=>{let t=!1,i=!1;switch(e.visualSev){case 1:t=!0;break;case 2:i=!0;break}return ht(ee({},e),{isWarn:t,isAlarmEmergency:i})}))}getPlayer(e){if(this._players.has(e))return this._players.get(e);let t=Hm[e];if(!t)return console.warn("[Notification Service] Unknown track id",e),this.getPlayer(1e3);let i=new Dc.Howl({src:[`assets/${t}.mp3`],autoplay:!1,preload:!0,loop:!0,onloaderror:(r,o)=>{console.log("[Notification Service] load error track:",e,o)},onplayerror:(r,o)=>{console.log("[Notification Service] play locked track:",e,o),i.once("unlock",()=>i.play())}});return this._players.set(e,i),i}mutePlayer(e){if(this._activeAlarmSoundtrack!=null&&this._activeAlarmSoundtrack!==1e3){let t=this._players.get(this._activeAlarmSoundtrack);t&&this._activeHowlId!=null&&t.mute(e,this._activeHowlId)}this._isHowlIdMuted=e,this.updateNotificationsState()}playAlarm(e){if(this._activeAlarmSoundtrack===e)return;if(this._activeAlarmSoundtrack!=null&&this._players.get(this._activeAlarmSoundtrack)?.stop(),e===1e3){this._activeAlarmSoundtrack=1e3,this._activeHowlId=null;return}let t=this.getPlayer(e);this._activeAlarmSoundtrack=e,this._activeHowlId=t.play(),t.mute(this._isHowlIdMuted,this._activeHowlId)}observeNotificationConfiguration(){return this._notificationConfig$.asObservable()}ngOnDestroy(){this._notificationSettingsSubscription?.unsubscribe(),this._resetServiceSubscription?.unsubscribe(),this._notificationDataStreamSubscription?.unsubscribe(),this._notificationMetaStreamSubscription?.unsubscribe(),this._notificationConfig$.complete(),this._notifications$.complete(),this._alarmsInfo$.complete();for(let e of this._players.values())try{e.unload()}catch{}this._players.clear()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var Pc=(()=>{class a{_notifications=D(gn);hasNotifications=sn();notificationsInfo=ti(this._notifications.observerNotificationsInfo());openNotificationMenu(){let e=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(e)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["notification-badge"]],outputs:{hasNotifications:"hasNotifications"},decls:4,vars:6,consts:[["mat-fab","",1,"layout-action-btn",3,"click"],["aria-hidden","false","matBadgeSize","large","matBadgePosition","after","matBadgeOverlap","true",1,"icon-alert-color",3,"matBadgeHidden","matBadge"]],template:function(t,i){t&1&&(g(0,"div")(1,"button",0),W("click",function(){return i.openNotificationMenu()}),g(2,"mat-icon",1),w(3,"notifications "),C()()()),t&2&&(x(),Bt("warn",i.notificationsInfo().isWarn)("alarm-emergency-blink",i.notificationsInfo().isAlarmEmergency),x(),G("matBadgeHidden",!i.notificationsInfo().alarmCount)("matBadge",i.notificationsInfo().alarmCount))},dependencies:[Lt,Br,Ct,Ut,Oa,Mc],styles:["[_nghost-%COMP%]{z-index:102;position:absolute;display:block;bottom:20px;left:20px;height:56px;width:56px;text-align:center;align-content:center}.layout-action-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);background-color:var(--mat-sys-primary)}.icon-alert-color[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-color: var(--kip-zone-alert-color)}.icon-warn-color[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-color: var(--kip-zone-warn-color)}.icon-alarm-color[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-color: var(--kip-zone-alarm-color)}.icon-emergency-color[_ngcontent-%COMP%]{--mat-list-list-item-leading-icon-color: var(--kip-zone-emergency-color)}.alarm-emergency-blink[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_blinking-emergency 1.5s infinite}@keyframes _ngcontent-%COMP%_blinking-emergency{0%{background-color:var(--kip-zone-alarm-color)}50%{background-color:var(--mat-sys-primary)}to{background-color:var(--kip-zone-alarm-color)}}.warn[_ngcontent-%COMP%]{color:var(--kip-zone-warn-color)}"]})}return a})();var Ne=(()=>{class a extends Cc{widgetProperties;zones$=new en([]);DataService=D(cn);unitsService=D(Hi);app=D(Ht);theme=ti(this.app.cssThemeColorRoles$,{requireSync:!0});defaultConfig=void 0;dataStream=void 0;dataSubscriptions=void 0;metaSubscriptions=void 0;constructor(){super()}serialize(){return{widgetProperties:this.widgetProperties}}observeMetaStream(){if(this.widgetProperties&&this.widgetProperties.config.paths&&Object.keys(this.widgetProperties.config.paths).length>0){let e=Object.keys(this.widgetProperties.config.paths)[0],t=this.widgetProperties.config.paths[e].path;this.metaSubscriptions=this.DataService.getPathMetaObservable(t).subscribe(i=>{i?i.zones?this.zones$.next(i.zones):this.zones$.next([]):this.zones$.next([])})}}unsubscribeMetaStream(){this.metaSubscriptions?.unsubscribe(),this.metaSubscriptions=void 0}validateConfig(){this.widgetProperties.config=ha(Md(this.defaultConfig,this.widgetProperties.config))}createDataObservable(){if(this.widgetProperties!==void 0){if(Object.keys(this.widgetProperties.config.paths).length==0){this.dataStream=void 0;return}else this.dataStream=[];Object.keys(this.widgetProperties.config.paths).forEach(e=>{typeof this.widgetProperties.config.paths[e].path!="string"||this.widgetProperties.config.paths[e].path==""||this.widgetProperties.config.paths[e].path==null||this.dataStream.push({pathName:e,observable:this.DataService.subscribePath(this.widgetProperties.config.paths[e].path,this.widgetProperties.config.paths[e].source)})})}}observeDataStream(e,t){(this.dataStream===void 0||this.dataStream.length==0)&&this.createDataObservable();let i=this.widgetProperties.config.paths[e].pathType,r=this.widgetProperties.config.paths[e].path,o=this.widgetProperties.config.paths[e].convertUnitTo,s=this.widgetProperties.config.paths[e].sampleTime,d=this.widgetProperties.config.dataTimeout*1e3,p=5e3,l=`[Widget] ${this.widgetProperties.config.displayName} - ${d/1e3} second data update timeout reached for `,c=`[Widget] ${this.widgetProperties.config.displayName} - Retrying in ${p/1e3} secondes`,m=this.buildObserver(e,t),v=this.dataStream.find(k=>k.pathName===e);if(v===void 0)return;let b;i=="number"?this.widgetProperties.config.enableTimeout?b=v.observable.pipe(li(k=>({data:{value:this.unitsService.convertToUnit(o,k.data.value),timestamp:k.data.timestamp},state:k.state})),ia(s),rs({each:d,with:()=>as(()=>{console.log(l+r),this.DataService.timeoutPathObservable(r,i)})}),ds(k=>k.pipe(hs(()=>console.log(c)),ls(()=>os(p))))):b=v.observable.pipe(li(k=>({data:{value:this.unitsService.convertToUnit(o,k.data.value),timestamp:k.data.timestamp},state:k.state})),ia(s)):i=="string"||i=="Date"?this.widgetProperties.config.enableTimeout?b=v.observable.pipe(ia(s),rs({each:d,with:()=>as(()=>{console.log(l+r),this.DataService.timeoutPathObservable(r,i)})}),ds(k=>k.pipe(hs(()=>console.log(c)),ls(()=>os(p))))):b=v.observable.pipe(ia(s)):b=v.observable.pipe(ia(s)),this.dataSubscriptions===void 0?this.dataSubscriptions=b.subscribe(m):this.dataSubscriptions.add(b.subscribe(m))}unsubscribeDataStream(){this.dataSubscriptions?.unsubscribe(),this.dataSubscriptions=void 0,this.dataStream=void 0}buildObserver(e,t){return{next:r=>t(r),error:r=>console.error("[Widget] Observer got an error: "+r),complete:()=>console.log("[Widget] Observer got a complete notification: "+e)}}formatWidgetNumberValue(e){return typeof e!="number"||e==null?"":(e=Math.min(Math.max(e,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),e.toFixed(this.widgetProperties.config.numDecimal))}destroyDataStreams(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zones$.complete()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["ng-component"]],inputs:{widgetProperties:"widgetProperties"},features:[me],decls:0,vars:0,template:function(t,i){},encapsulation:2})}return a})();var Ac=(()=>{class a{_bottomSheetRef=D(tc);clickAction(e){this._bottomSheetRef.dismiss(e)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-host-bottom-sheet"]],decls:11,vars:0,consts:[["mat-list-item","",3,"click"],["matListItemIcon",""]],template:function(t,i){t&1&&(g(0,"mat-action-list")(1,"button",0),W("click",function(){return i.clickAction("duplicate")}),g(2,"mat-icon",1),w(3,"content_copy"),C(),g(4,"span"),w(5,"Duplicate"),C()(),g(6,"button",0),W("click",function(){return i.clickAction("delete")}),g(7,"mat-icon",1),w(8,"delete_forever"),C(),g(9,"span"),w(10,"Delete"),C()()())},dependencies:[Gr,oc,Ur,rc,Ct,Ut],encapsulation:2})}return a})();var Gm=["*"],We=(()=>{class a{config=Dn.required();id=U.required();_dialog=D(ga);_dashboard=D(ft);_bottomSheet=D(ic);constructor(){}openWidgetOptions(){if(!this._dashboard.isDashboardStatic()){if(!this.config())return;this._dialog.openWidgetOptions({title:"Widget Options",config:this.config(),confirmBtnText:"Save",cancelBtnText:"Cancel"}).afterClosed().subscribe(e=>{e&&this.config.set(e)})}}openBottomSheet(){this._dashboard.isDashboardStatic()||this._bottomSheet.open(Ac).afterDismissed().subscribe(t=>{switch(t){case"delete":this._dashboard.deleteWidget(this.id());break;case"duplicate":this._dashboard.duplicateWidget(this.id());break;default:break}})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-host"]],inputs:{config:[1,"config"],id:[1,"id"]},outputs:{config:"configChange"},ngContentSelectors:Gm,decls:2,vars:2,consts:[["appearance","raised",1,"widget-container","kip-widget-card-colors",3,"doubletap","press"]],template:function(t,i){t&1&&(wi(),g(0,"mat-card",0),W("doubletap",function(){return i.openWidgetOptions()})("press",function(){return i.openBottomSheet()}),Nt(1),C()),t&2&&_e("border",i._dashboard.isDashboardStatic()?"":"1px dashed var(--mat-sys-outline)")},dependencies:[Hr,ec,nc],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:block}.widget-container[_ngcontent-%COMP%]{display:block;width:100%;height:100%;margin:0;padding:0}.kip-widget-card-colors[_ngcontent-%COMP%]{background-color:var(--kip-widget-card-background-color)}"]})}return a})();var Oc=(()=>{let n=class n{constructor(t){this.ngZone=t,this.count=0,this.elementMap=new Map,this.observer=null}ngOnDestroy(){this.observer&&this.clearObserver()}observe(t,i,r){this.observer||(this.observer=new ResizeObserver(o=>{for(let s of o){let d=this.elementMap.get(s.target);d&&this.ngZone.run(()=>{d(s)})}})),r==="border-box"?this.observer.observe(t,{box:"border-box"}):this.observer.observe(t),this.count+=1,this.elementMap.set(t,i)}unobserve(t){this.elementMap.get(t)&&this.observer&&(this.observer.unobserve(t),this.elementMap.delete(t),this.count-=1,this.count===0&&this.clearObserver())}clearObserver(){this.observer&&this.observer.disconnect(),this.observer=null,this.count=0,this.elementMap=new Map}};n.\u0275fac=function(i){return new(i||n)(aa(at))},n.\u0275prov=wt({token:n,factory:n.\u0275fac});let a=n;return a})(),rt=(()=>{let n=class n{constructor(t,i,r){this.elementRef=t,this.ngxResizeObserverService=i,this.ngZone=r,this.resizeBoxModel="",this.onResize=new Tt,this.observing=!1,an(()=>{this.observe()})}ngOnChanges(t){this.observing&&(t.resizeBoxModel||t.onResize)&&(this.unobserve(),this.observe())}ngOnDestroy(){this.unobserve()}observe(){this.observing||(this.ngxResizeObserverService.observe(this.elementRef.nativeElement,t=>{this.ngZone.run(()=>{this.onResize.emit(t)})},this.resizeBoxModel),this.observing=!0)}unobserve(){this.observing&&(this.ngxResizeObserverService.unobserve(this.elementRef.nativeElement),this.observing=!1)}};n.\u0275fac=function(i){return new(i||n)(ei(et),ei(Oc),ei(at))},n.\u0275dir=Vi({type:n,selectors:[["","onResize",""]],inputs:{resizeBoxModel:"resizeBoxModel"},outputs:{onResize:"onResize"},features:[ra]});let a=n;return a})(),ot=(()=>{let n=class n{};n.\u0275fac=function(i){return new(i||n)},n.\u0275mod=yi({type:n}),n.\u0275inj=vi({providers:[Oc]});let a=n;return a})();var qm=["canvas"],jt=(()=>{class a{text=U.required();color=U.required();canvasRef=se.required("canvas");canvas=D(dt);canvasElement;canvasCtx;isReady=!1;constructor(){}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.canvasElement&&(this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.setHighDPISize(this.canvasElement,this.canvasElement.parentElement.getBoundingClientRect())),this.isReady=!0,this.drawTitle()}ngOnChanges(e){(e.text||e.color)&&this.drawTitle()}onResized(e){this.canvas.setHighDPISize(this.canvasElement,e.contentRect),this.drawTitle()}drawTitle(){this.isReady&&this.canvas.drawTitle(this.canvasCtx,this.text(),this.color(),"normal",this.canvasElement.width,this.canvasElement.height)}ngOnDestroy(){this.canvas.releaseCanvas(this.canvasElement,{clear:!0,removeFromDom:!0}),this.canvasCtx=null,this.canvasElement=null}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-title"]],viewQuery:function(t,i){t&1&&oe(i.canvasRef,qm,5),t&2&&Re()},inputs:{text:[1,"text"],color:[1,"color"]},features:[ra],decls:3,vars:0,consts:[["canvas",""],[1,"textGenericWrapper",3,"onResize"]],template:function(t,i){if(t&1){let r=J();g(0,"div",1),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(1,"canvas",null,0),C()}},dependencies:[ot,rt],styles:["[_nghost-%COMP%]{position:absolute;display:block;width:100%;height:100%;z-index:10}canvas[_ngcontent-%COMP%]{display:block}.textGenericWrapper[_ngcontent-%COMP%]{position:relative;width:100%;height:100%}"]})}return a})();function Se(a,n){return{contrast:{color:n.contrast,dim:n.contrastDim,dimmer:n.contrastDimmer},blue:{color:n.blue,dim:n.blueDim,dimmer:n.blueDimmer},green:{color:n.green,dim:n.greenDim,dimmer:n.greenDimmer},pink:{color:n.pink,dim:n.pinkDim,dimmer:n.pinkDimmer},orange:{color:n.orange,dim:n.orangeDim,dimmer:n.orangeDimmer},purple:{color:n.purple,dim:n.purpleDim,dimmer:n.purpleDimmer},yellow:{color:n.yellow,dim:n.yellowDim,dimmer:n.yellowDimmer},grey:{color:n.grey,dim:n.greyDim,dimmer:n.greyDimmer}}[a]}var jm=["canvasValue"],Ic=(()=>{class a extends Ne{canvasValue=se.required("canvasValue");canvas=D(dt);dataValue=null;canvasCtx;labelColor=le(void 0);valueColor=void 0;isDestroyed=!1;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{stringPath:{description:"String Data",path:null,source:null,pathType:"string",isPathConfigurable:!0,sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5},de(()=>{this.theme()&&(this.setColors(),this.drawValue())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){let e=this.canvasValue().nativeElement;this.canvas.setHighDPISize(this.canvasValue().nativeElement,e.parentElement.getBoundingClientRect()),this.canvasCtx=this.canvasValue().nativeElement.getContext("2d"),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.8),!this.isDestroyed&&this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("stringPath",e=>{this.dataValue=e.data.value,this.drawValue()})}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawValue()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvas.releaseCanvas(this.canvasValue()?.nativeElement,{clear:!0,removeFromDom:!0})}setColors(){this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.canvas.setHighDPISize(this.canvasValue().nativeElement,e.contentRect),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.7),!this.isDestroyed&&this.drawValue())}drawValue(){if(!this.canvasCtx)return;this.canvas.clearCanvas(this.canvasCtx,this.canvasValue().nativeElement.width,this.canvasValue().nativeElement.height);let e=this.dataValue===null?"--":this.dataValue;this.canvas.drawText(this.canvasCtx,e,Math.floor(this.canvasValue().nativeElement.width/2),Math.floor(this.canvasValue().nativeElement.height/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","middle")}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-text"]],viewQuery:function(t,i){t&1&&oe(i.canvasValue,jm,5),t&2&&Re()},features:[me],decls:5,vars:4,consts:[["canvasValue",""],[3,"configChange","config","id"],[1,"textGenericWrapper",3,"onResize"],[2,"z-index","inherit"],[3,"text","color"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"canvas",3,0)(4,"widget-title",4),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(4),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()))},dependencies:[We,ot,rt,jt],styles:["canvas[_ngcontent-%COMP%]{display:block;position:absolute;top:0;left:0}.textGenericWrapper[_ngcontent-%COMP%]{position:relative;width:100%;height:100%}"]})}return a})();var $m=["widgetDataChart"];Gt.register(xa,ka,_a,Sa,wa,Ca,hc);var oo=(()=>{class a{theme=U.required();color=null;dataPath=null;dataSource=null;convertUnitTo=null;numDecimal=null;yScaleMin=null;yScaleMax=null;inverseYAxis=!1;verticalChart=null;datasetUUID=null;unitsService=D(Hi);dsService=D(ni);ngZone=D(at);canvasService=D(dt);widgetDataChart=se("widgetDataChart",{read:et});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;config={datasetAverageArray:"sma",showAverageData:!1,trackAgainstAverage:!1,startScaleAtZero:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1};constructor(){de(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}startChart(){this.datasetUUID&&(this.datasetConfig=this.dsService.getDatasetConfig(this.datasetUUID),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.datasetUUID),this.datasetConfig&&(this.setChartOptions(),this.createDatasets(),this.chart?this.chart.update():this.chart=new Gt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming()))}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=this.verticalChart?"y":"x",this.verticalChart?this.lineChartOptions.scales={x:{display:!1,position:"right",suggestedMin:this.config.enableMinMaxScaleLimit?null:this.yScaleMin,suggestedMax:this.config.enableMinMaxScaleLimit?null:this.yScaleMax,min:this.config.enableMinMaxScaleLimit?this.yScaleMin:null,max:this.config.enableMinMaxScaleLimit?this.yScaleMax:null,beginAtZero:this.config.startScaleAtZero,reverse:this.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}},y:{type:"time",display:!1,title:{display:!1},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:!1,title:{display:!1},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}},y:{display:!1,position:"right",suggestedMin:this.config.enableMinMaxScaleLimit?null:this.yScaleMin,suggestedMax:this.config.enableMinMaxScaleLimit?null:this.yScaleMax,min:this.config.enableMinMaxScaleLimit?this.yScaleMin:null,max:this.config.enableMinMaxScaleLimit?this.yScaleMax:null,beginAtZero:this.config.startScaleAtZero,reverse:this.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!1,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={legend:{display:!1}}}createDatasets(){let e=this.lineChartOptions.scales?.y?.reverse?"start":!0;this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:0,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:e}),this.lineChartData.datasets.push({label:"Average",data:[],order:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:e}),this.setDatasetsColors()}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.borderColor=this.getThemeColors().averageLine,e.backgroundColor=this.getThemeColors().averageFill})}getThemeColors(){let e=this.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.config.trackAgainstAverage?(t.valueLine=this.theme().contrastDimmer,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=t.averageLine):(t.valueLine=this.theme().contrast,t.valueFill=this.theme().contrast,t.averageLine=this.theme().contrastDimmer,t.averageFill=this.theme().contrastDimmer,t.chartValue=this.theme().contrast),t.averageChartLine=this.theme().contrastDim,t.chartLabel=this.theme().contrastDim;break;case"blue":this.config.trackAgainstAverage?(t.valueLine=this.theme().blueDimmer,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=t.averageLine):(t.valueLine=this.theme().blue,t.valueFill=this.theme().blue,t.averageLine=this.theme().blueDimmer,t.averageFill=this.theme().blueDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().contrastDim;break;case"green":this.config.trackAgainstAverage?(t.valueLine=this.theme().greenDimmer,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=t.averageLine):(t.valueLine=this.theme().green,t.valueFill=this.theme().green,t.averageLine=this.theme().greenDimmer,t.averageFill=this.theme().greenDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().contrastDim;break;case"pink":this.config.trackAgainstAverage?(t.valueLine=this.theme().pinkDimmer,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=t.averageLine):(t.valueLine=this.theme().pink,t.valueFill=this.theme().pink,t.averageLine=this.theme().pinkDimmer,t.averageFill=this.theme().pinkDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().contrastDim;break;case"orange":this.config.trackAgainstAverage?(t.valueLine=this.theme().orangeDimmer,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=t.averageLine):(t.valueLine=this.theme().orange,t.valueFill=this.theme().orange,t.averageLine=this.theme().orangeDimmer,t.averageFill=this.theme().orangeDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().contrastDim;break;case"purple":this.config.trackAgainstAverage?(t.valueLine=this.theme().purpleDimmer,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=t.averageLine):(t.valueLine=this.theme().purple,t.valueFill=this.theme().purple,t.averageLine=this.theme().purpleDimmer,t.averageFill=this.theme().purpleDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().contrastDim;break;case"grey":this.config.trackAgainstAverage?(t.valueLine=this.theme().greyDimmer,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=t.averageLine):(t.valueLine=this.theme().grey,t.valueFill=this.theme().grey,t.averageLine=this.theme().greyDimmer,t.averageFill=this.theme().greyDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().contrastDim;break;case"yellow":this.config.trackAgainstAverage?(t.valueLine=this.theme().yellowDimmer,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=t.averageLine):(t.valueLine=this.theme().yellow,t.valueFill=this.theme().yellow,t.averageLine=this.theme().yellowDimmer,t.averageFill=this.theme().yellowDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().contrastDim;break}return t}startStreaming(){this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.datasetUUID);this.dsServiceSub=e?.subscribe(t=>{if(Array.isArray(t)){let i=this.transformDatasetRows(t,0);if(this.chart.data.datasets[0].data.push(...i),this.config.showAverageData){let r=this.transformDatasetRows(t,this.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...r)}}else{let i=this.transformDatasetRows([t],0)[0];if(this.chart.data.datasets[0].data.push(i),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[0].data.shift(),this.config.showAverageData){let r=this.transformDatasetRows([t],this.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(r),this.chart.data.datasets[1].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[1].data.shift()}}this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}transformDatasetRows(e,t){let i=s=>this.unitsService.convertToUnit(this.convertUnitTo,s),r=this.verticalChart,o=this.config.datasetAverageArray;return e.map(s=>{if(r){if(t===0)return{x:i(s.data.value),y:s.timestamp};{let d={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:i(d[o]),y:s.timestamp}}}else{if(t===0)return{x:s.timestamp,y:i(s.data.value)};{let d={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:s.timestamp,y:i(d[o])}}}})}ngOnDestroy(){this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["minichart"]],viewQuery:function(t,i){t&1&&oe(i.widgetDataChart,$m,5,et),t&2&&Re()},inputs:{theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&ne(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:calc(90% - 10px);position:absolute;bottom:0;border-radius:17px;overflow:hidden}"]})}return a})();var Ym=["canvasUnit"],Xm=["canvasMinMax"],Km=["canvasValue"];function Qm(a,n){if(a&1&&Y(0,"minichart",6),a&2){let e=X();G("theme",e.theme())}}var so=(()=>{class a extends Ne{miniChart=se(oo);canvasUnit=se.required("canvasUnit");canvasMinMax=se.required("canvasMinMax");canvasValue=se.required("canvasValue");showMiniChart=le(!1);canvas=D(dt);_dataset=D(ni);dataValue=null;maxValue=null;minValue=null;labelColor=le(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;maxMinMaxTextWidth=0;maxMinMaxTextHeight=0;flashInterval=null;isDestroyed=!1;canvasValCtx;canvasMinMaxCtx;canvasUnitCtx;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,convertUnitTo:"unitless",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,showMiniChart:!1,yScaleMin:0,yScaleMax:10,inverseYAxis:!1,verticalChart:!1,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},de(()=>{this.theme()&&(this.setColors(),this.updateCanvas(),this.updateCanvasUnit())})}ngOnInit(){this.validateConfig(),this.showMiniChart.set(this.widgetProperties.config.showMiniChart)}ngAfterViewInit(){let e=this.canvasValue().nativeElement;this.canvas.setHighDPISize(this.canvasValue().nativeElement,e.parentElement.getBoundingClientRect()),this.canvas.setHighDPISize(this.canvasUnit().nativeElement,e.parentElement.getBoundingClientRect()),this.canvas.setHighDPISize(this.canvasMinMax().nativeElement,e.parentElement.getBoundingClientRect()),this.canvasValCtx=this.canvasValue().nativeElement.getContext("2d"),this.canvasMinMaxCtx=this.canvasMinMax().nativeElement.getContext("2d"),this.canvasUnitCtx=this.canvasUnit().nativeElement.getContext("2d"),this.maxValueTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxValueTextHeight=Math.floor(this.canvasValue().nativeElement.height*.7),this.maxMinMaxTextWidth=Math.floor(this.canvasMinMax().nativeElement.width*.57),this.maxMinMaxTextHeight=Math.floor(this.canvasMinMax().nativeElement.height*.1),!this.isDestroyed&&(this.manageDatasetAndChart(),this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget(),this.updateCanvasUnit())}startWidget(){this.showMiniChart()&&this.miniChart()&&this.miniChart().startChart(),this.unsubscribeDataStream(),this.minValue=null,this.maxValue=null,this.dataValue=null,this.setColors(),this.observeDataStream("numericPath",e=>{if(this.dataValue=e.data.value,this.minValue===null||this.dataValue<this.minValue?this.minValue=this.dataValue:(this.maxValue===null||this.dataValue>this.maxValue)&&(this.maxValue=this.dataValue),!this.widgetProperties.config.ignoreZones)switch(e.state){case re.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case re.Warn:this.valueStateColor=this.theme().zoneWarn;break;case re.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.updateCanvas()})}updateConfig(e){this.widgetProperties.config=e,this.manageDatasetAndChart(),setTimeout(()=>{this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget(),this.updateCanvas(),this.updateCanvasUnit()})}manageDatasetAndChart(){let e=this.widgetProperties.config.paths.numericPath;!e||!e.path||!e.source||(this.widgetProperties.config.showMiniChart?this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).length===0&&this._dataset.create(e.path,e.source,"minute",.2,`simple-chart-${this.widgetProperties.uuid}`,!0,!1,this.widgetProperties.uuid):this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).forEach(t=>this._dataset.remove(t.uuid)),this.showMiniChart.set(this.widgetProperties.config.showMiniChart))}setMiniChart(){this.miniChart().dataPath=this.widgetProperties.config.paths.numericPath.path,this.miniChart().dataSource=this.widgetProperties.config.paths.numericPath.source,this.miniChart().color=this.widgetProperties.config.color,this.miniChart().convertUnitTo=this.widgetProperties.config.paths.numericPath.convertUnitTo,this.miniChart().numDecimal=this.widgetProperties.config.numDecimal,this.miniChart().yScaleMin=this.widgetProperties.config.yScaleMin,this.miniChart().yScaleMax=this.widgetProperties.config.yScaleMax,this.miniChart().inverseYAxis=this.widgetProperties.config.inverseYAxis,this.miniChart().verticalChart=this.widgetProperties.config.verticalChart,this.miniChart().datasetUUID=this.widgetProperties.uuid}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.canvas.setHighDPISize(this.canvasValue().nativeElement,e.contentRect),this.canvas.setHighDPISize(this.canvasUnit().nativeElement,e.contentRect),this.canvas.setHighDPISize(this.canvasMinMax().nativeElement,e.contentRect),this.maxValueTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxValueTextHeight=Math.floor(this.canvasValue().nativeElement.height*.7),this.maxMinMaxTextWidth=Math.floor(this.canvasMinMax().nativeElement.width*.57),this.maxMinMaxTextHeight=Math.floor(this.canvasMinMax().nativeElement.height*.1),!this.isDestroyed&&(this.updateCanvas(),this.updateCanvasUnit()))}setColors(){this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueStateColor=this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null),this._dataset.removeIfExists(this.widgetProperties?.uuid,!0),this.canvas.releaseCanvases([this.canvasValue()?.nativeElement,this.canvasMinMax()?.nativeElement,this.canvasUnit()?.nativeElement],{clear:!0,removeFromDom:!1})}updateCanvas(){this.canvasValCtx&&(this.canvas.clearCanvas(this.canvasValCtx,this.canvasValue().nativeElement.width,this.canvasValue().nativeElement.height),this.drawValue(),(this.widgetProperties.config.showMax||this.widgetProperties.config.showMin)&&(this.canvas.clearCanvas(this.canvasMinMaxCtx,this.canvasMinMax().nativeElement.width,this.canvasMinMax().nativeElement.height),this.drawMinMax()))}updateCanvasUnit(){this.canvasUnitCtx&&(this.canvas.clearCanvas(this.canvasUnitCtx,this.canvasUnit().nativeElement.width,this.canvasUnit().nativeElement.height),this.drawUnit())}drawValue(){let e=this.getValueText();this.canvas.clearCanvas(this.canvasValCtx,this.canvasValue().nativeElement.width,this.canvasValue().nativeElement.height),this.canvas.drawText(this.canvasValCtx,e,Math.floor(this.canvasValue().nativeElement.width/2),Math.floor(this.canvasValue().nativeElement.height/2*1.15),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}getValueText(){if(this.dataValue===null)return"--";let e=this.widgetProperties.config.paths.numericPath.convertUnitTo;return["latitudeSec","latitudeMin","longitudeSec","longitudeMin","D HH:MM:SS"].includes(e)?this.dataValue.toString():this.applyDecorations(this.dataValue.toFixed(this.widgetProperties.config.numDecimal))}drawUnit(){let e=this.widgetProperties.config.paths.numericPath.convertUnitTo;if(["unitless","percent","ratio","latitudeSec","latitudeMin","longitudeSec","longitudeMin"].includes(e))return;let t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor,r=this.canvasUnit().nativeElement.width,o=this.canvasUnit().nativeElement.height;this.canvas.drawText(this.canvasUnitCtx,e,r-t,o-i,Math.floor(r*.25),Math.floor(o*.15),"bold",this.valueColor,"end","bottom")}drawMinMax(){if(!this.widgetProperties.config.showMin&&!this.widgetProperties.config.showMax)return;let e="";this.widgetProperties.config.showMin&&(e=this.minValue!=null?` Min: ${this.applyDecorations(this.minValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Min: --"),this.widgetProperties.config.showMax&&(e+=this.maxValue!=null?` Max: ${this.applyDecorations(this.maxValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Max: --"),e=e.trim();let t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor,r=this.canvasUnit().nativeElement.height;this.canvas.drawText(this.canvasMinMaxCtx,e,t,Math.floor(r-i),this.maxMinMaxTextWidth,this.maxMinMaxTextHeight,"normal",this.valueColor,"start","bottom")}applyDecorations(e){switch(this.widgetProperties.config.paths.numericPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-numeric"]],viewQuery:function(t,i){t&1&&(oe(i.miniChart,oo,5),oe(i.canvasUnit,Ym,5),oe(i.canvasMinMax,Xm,5),oe(i.canvasValue,Km,5)),t&2&&Re(4)},features:[me],decls:10,vars:5,consts:[["canvasUnit",""],["canvasValue",""],["canvasMinMax",""],[3,"configChange","config","id"],[1,"textGenericWrapper",3,"onResize"],[3,"text","color"],[3,"theme"],[1,"canvas"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",3),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",4),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"widget-title",5),ze(3,Qm,1,1,"minichart",6),Y(4,"canvas",7,0)(6,"canvas",7,1)(8,"canvas",7,2),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(2),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()),x(),Fe(i.showMiniChart()?3:-1))},dependencies:[We,ot,rt,jt,oo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.textGenericWrapper[_ngcontent-%COMP%]{position:absolute;display:block;width:100%;height:100%;z-index:inherit}.canvas[_ngcontent-%COMP%]{display:block;position:absolute;top:0;left:0}"]})}return a})();var Zm=["canvasValue"],lo=(()=>{class a extends Ne{canvasValue=se.required("canvasValue");canvas=D(dt);dataValue=null;_timeZoneGTM="";isDestroyed=!1;canvasCtx;labelColor=le(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Time Label",filterSelfPaths:!0,paths:{gaugePath:{description:"String Data",path:null,source:null,pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:!1,dataTimeout:5},de(()=>{this.theme()&&(this.setColors(),this.drawValue())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvas.setHighDPISize(this.canvasValue().nativeElement,this.canvasValue().nativeElement.parentElement.getBoundingClientRect()),this.canvasCtx=this.canvasValue().nativeElement.getContext("2d"),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.7),!this.isDestroyed&&this.startWidget()}startWidget(){this._timeZoneGTM=this.getGMTOffset(this.widgetProperties.config.dateTimezone),this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("gaugePath",e=>{this.dataValue=e.data.value,this.drawValue()})}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawValue()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvas.releaseCanvas(this.canvasValue()?.nativeElement,{clear:!0,removeFromDom:!0})}getGMTOffset(e){try{if(e==="System Timezone -")return"";let r=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(o=>o.type==="timeZoneName");return r?r.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}setColors(){this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.canvas.setHighDPISize(this.canvasValue().nativeElement,e.contentRect),this.canvasCtx=this.canvasValue().nativeElement.getContext("2d"),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.7),!this.isDestroyed&&this.drawValue())}drawValue(){if(!this.canvasCtx)return;let e;if(this.canvas.clearCanvas(this.canvasCtx,this.canvasValue().nativeElement.width,this.canvasValue().nativeElement.height),isNaN(Date.parse(this.dataValue)))e="--";else try{e=od(this.dataValue,this.widgetProperties.config.dateFormat,"en-US",this._timeZoneGTM)}catch(t){e=t,console.log("[Date Time Widget]: "+t)}this.canvas.drawText(this.canvasCtx,e,Math.floor(this.canvasValue().nativeElement.width/2),Math.floor(this.canvasValue().nativeElement.height/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&oe(i.canvasValue,Zm,5),t&2&&Re()},features:[me],decls:5,vars:4,consts:[["canvasValue",""],[3,"configChange","config","id"],[1,"dateGenericWrapper",3,"onResize"],[2,"z-index","inherit"],[3,"text","color"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"canvas",3,0)(4,"widget-title",4),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(4),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()))},dependencies:[We,ot,rt,jt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}canvas[_ngcontent-%COMP%]{position:absolute;display:block;top:0;left:0}.dateGenericWrapper[_ngcontent-%COMP%]{position:relative;width:100%;height:100%}"]})}return a})();var Rc=(()=>{class a{data=U(null,{alias:"controlData"});theme=U(null);dimensions=U.required();toggleClick=sn();toggleOff="0 35 180 35";toggleOn="0 0 180 35";ctrlState=null;ctrlColor="";oldTheme=null;viewBox=this.toggleOff;labelColor=null;valueColor=null;constructor(){}ngDoCheck(){let e=this.data();e.value!=this.ctrlState&&(this.ctrlState=e.value,this.viewBox=e.value?this.toggleOn:this.toggleOff),e.color!=this.ctrlColor&&(this.ctrlColor=e.color,this.getColors(e.color));let t=this.theme();this.oldTheme!=t&&(this.oldTheme=t,this.getColors(e.color))}toggle(e){let t=this.data();t.value=e,this.toggleClick.emit(t)}getColors(e){switch(e){case"contrast":this.labelColor=this.theme().contrastDim,this.valueColor=this.theme().contrast;break;case"blue":this.labelColor=this.theme().blueDim,this.valueColor=this.theme().blue;break;case"green":this.labelColor=this.theme().greenDim,this.valueColor=this.theme().green;break;case"pink":this.labelColor=this.theme().pinkDim,this.valueColor=this.theme().pink;break;case"orange":this.labelColor=this.theme().orangeDim,this.valueColor=this.theme().orange;break;case"purple":this.labelColor=this.theme().purpleDim,this.valueColor=this.theme().purple;break;case"grey":this.labelColor=this.theme().greyDim,this.valueColor=this.theme().grey;break;case"yellow":this.labelColor=this.theme().yellowDim,this.valueColor=this.theme().yellow;break;default:this.labelColor=this.theme().contrastDim,this.valueColor=this.theme().contrast;break}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["app-svg-boolean-light"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:20,vars:8,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg"],["id","defs1"],["id","linearGradient32"],["offset","0","id","stop32",2,"stop-color","#000000","stop-opacity","0.88486844"],["offset","1","id","stop33",2,"stop-color","#f7f7f7","stop-opacity","0.17763157"],[0,"xlink","href","#linearGradient32","id","linearGradient33","x1","7.0431595","y1","17.869596","x2","39.043159","y2","17.869596","gradientUnits","userSpaceOnUse"],["id","disabled","transform","translate(0,35)"],["width","180","height","35","id","rect1-5","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["x","0","y","0","width","175","height","35","viewBox","0 0 175 35"],["id","text1-5","x","47.083984","y","22.636719",2,"text-align","center","font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["transform","translate(6,2)","id","disabledToogleControl"],["cx","18","cy","16","fill","#9f9f9f","id","circle3-7","r","13.5",2,"stroke-width","5","stroke","url(#linearGradient33)","stroke-opacity","0.2","stroke-dasharray","none"],["id","enabled"],["width","180","height","35","id","rect1","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["transform","translate(6,2)","id","enabledToogleControl"],["cx","18","cy","16","id","circle3","r","13.5",2,"stroke","url(#linearGradient33)","stroke-width","5","stroke-opacity","0.2","stroke-dasharray","none"]],template:function(t,i){t&1&&(pe(),L(0,"svg",0)(1,"defs",1)(2,"linearGradient",2),ne(3,"stop",3)(4,"stop",4),H(),ne(5,"linearGradient",5),H(),L(6,"g",6),ne(7,"rect",7),L(8,"svg",8)(9,"text",9),w(10),H()(),L(11,"g",10),ne(12,"circle",11),H()(),L(13,"g",12),ne(14,"rect",13),L(15,"svg",8)(16,"text",14),w(17),H()(),L(18,"g",15),ne(19,"circle",16),H()()()),t&2&&(ue("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),x(9),ue("fill",i.labelColor),x(),_t(" ",i.data().ctrlLabel," "),x(6),ue("fill",i.valueColor),x(),_t("",i.data().ctrlLabel," "),x(2),ue("fill",i.valueColor))},encapsulation:2})}return a})();var Nc=(()=>{class a{data=U(null,{alias:"controlData"});theme=U(null);dimensions=U.required();toggleClick=sn();toggleOff="0 35 180 35";toggleOn="0 0 180 35";oldTheme=null;holdTimeoutId=null;emitIntervalId=null;pressed=!1;isSwiping=!1;pointerStartX=0;pointerStartY=0;viewBox=this.toggleOff;labelColorEnabled=null;labelColorDisabled=null;valueColor=null;ctrlColor="";ngDoCheck(){this.viewBox=this.pressed?this.toggleOn:this.toggleOff;let e=this.data();e.color!=this.ctrlColor&&(this.ctrlColor=e.color,this.getColors(e.color));let t=this.theme();this.oldTheme!=t&&(this.oldTheme=t,this.getColors(this.data().color))}handleClickDown(e){this.isSwiping=!1,this.pointerStartX=e.clientX,this.pointerStartY=e.clientY,this.clearTimers(),this.holdTimeoutId=setTimeout(()=>{if(!this.isSwiping){this.pressed=!0;let t=ha(this.data());t.value=this.pressed,this.toggleClick.emit(t),this.emitIntervalId=setInterval(()=>{this.toggleClick.emit(t)},100)}},200)}handlePointerMove(e){let t=Math.abs(e.clientX-this.pointerStartX),i=Math.abs(e.clientY-this.pointerStartY);(t>30||i>30)&&(this.isSwiping=!0,this.holdTimeoutId&&(clearTimeout(this.holdTimeoutId),this.holdTimeoutId=null))}handleClickUp(){if(this.isSwiping){this.isSwiping=!1;return}this.pressed=!1,this.emitIntervalId&&(clearInterval(this.emitIntervalId),this.emitIntervalId=null),this.holdTimeoutId&&(clearTimeout(this.holdTimeoutId),this.holdTimeoutId=null)}getColors(e){switch(e){case"contrast":this.labelColorEnabled="black",this.labelColorDisabled=this.theme().contrastDim,this.valueColor=this.theme().contrast;break;case"blue":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().blueDim,this.valueColor=this.theme().blue;break;case"green":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().greenDim,this.valueColor=this.theme().green;break;case"pink":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().pinkDim,this.valueColor=this.theme().pink;break;case"orange":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().orangeDim,this.valueColor=this.theme().orange;break;case"purple":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().purpleDim,this.valueColor=this.theme().purple;break;case"grey":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().greyDim,this.valueColor=this.theme().grey;break;case"yellow":this.labelColorEnabled=this.theme().contrast,this.labelColorDisabled=this.theme().yellowDim,this.valueColor=this.theme().yellow;break;default:this.labelColorEnabled="black",this.labelColorDisabled=this.theme().contrastDim,this.valueColor=this.theme().contrast;break}}clearTimers(){this.holdTimeoutId&&(clearTimeout(this.holdTimeoutId),this.holdTimeoutId=null),this.emitIntervalId&&(clearInterval(this.emitIntervalId),this.emitIntervalId=null)}ngOnDestroy(){this.clearTimers()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["app-svg-boolean-button"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:15,vars:8,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg"],["id","defs9"],[3,"pointerup","pointerleave","pointerdown","pointermove"],["id","disabled","transform","translate(0,35)"],["id","clickRecDisabled","width","180","height","35","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["id","buttonDisabled","width","165.02518","height","25.025183","rx","3.6672263","x","7.4874101","y","4.9874086",2,"display","inline","mix-blend-mode","normal","fill","#9f9f9f","fill-opacity","0.972549","stroke","#ffffff","stroke-width","1.5","stroke-dasharray","none","stroke-opacity","0.2"],["x","12","y","0","width","156","height","35","viewBox","0 0 156 35"],["id","textDisabled","x","77.968102","y","22",2,"text-anchor","middle","text-align","center","font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["id","enabled"],["width","180","height","35","id","rect1","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["id","buttonEnabled","width","165.02518","height","25.025183","rx","3.6672263","x","5.9874086","y","4.9874086","transform","translate(1.5)",2,"display","inline","opacity","1","mix-blend-mode","normal","stroke","#000000","stroke-width","1.5","stroke-dasharray","none","stroke-opacity","0.2"],["id","textEnabled","x","77.968102","y","22",2,"text-anchor","middle","text-align","center","font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"]],template:function(t,i){t&1&&(pe(),L(0,"svg",0),ne(1,"defs",1),L(2,"g",2),Za("pointerup",function(){return i.handleClickUp()})("pointerleave",function(){return i.handleClickUp()})("pointerdown",function(o){return i.handleClickDown(o)})("pointermove",function(o){return i.handlePointerMove(o)}),L(3,"g",3),ne(4,"rect",4)(5,"rect",5),L(6,"svg",6)(7,"text",7),w(8),H()()(),L(9,"g",8),ne(10,"rect",9)(11,"rect",10),L(12,"svg",6)(13,"text",11),w(14),H()()()()()),t&2&&(ue("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),x(7),ue("fill",i.labelColorDisabled),x(),_t(" ",i.data().ctrlLabel," "),x(3),ue("fill",i.valueColor),x(2),ue("fill",i.labelColorEnabled),x(),_t(" ",i.data().ctrlLabel," "))},encapsulation:2})}return a})();var Wc=(()=>{class a{data=U(null,{alias:"controlData"});theme=U(null);dimensions=U.required();toggleClick=sn();toggleOff="0 35 180 35";toggleOn="0 0 180 35";ctrlState=null;oldTheme=null;isSwiping=!1;pointerStartX=0;pointerStartY=0;viewBox=this.toggleOff;labelColor=null;valueColor=null;ctrlColor="";constructor(){}ngDoCheck(){let e=this.data();e.value!=this.ctrlState&&(this.ctrlState=e.value,this.viewBox=e.value?this.toggleOn:this.toggleOff),e.color!=this.ctrlColor&&(this.ctrlColor=e.color,this.getColors(e.color));let t=this.theme();this.oldTheme!=t&&(this.oldTheme=t,this.getColors(e.color))}onPointerDown(e){this.isSwiping=!1,this.pointerStartX=e.clientX,this.pointerStartY=e.clientY}onPointerMove(e){let t=Math.abs(e.clientX-this.pointerStartX),i=Math.abs(e.clientY-this.pointerStartY);(t>30||i>30)&&(this.isSwiping=!0)}onPointerUp(e,t){if(this.isSwiping){this.isSwiping=!1;return}this.toggle(t)}toggle(e){let t=this.data();t.value=e,this.toggleClick.emit(t)}getColors(e){switch(e){case"contrast":this.labelColor=this.theme().contrastDim,this.valueColor=this.theme().contrast;break;case"blue":this.labelColor=this.theme().blueDim,this.valueColor=this.theme().blue;break;case"green":this.labelColor=this.theme().greenDim,this.valueColor=this.theme().green;break;case"pink":this.labelColor=this.theme().pinkDim,this.valueColor=this.theme().pink;break;case"orange":this.labelColor=this.theme().orangeDim,this.valueColor=this.theme().orange;break;case"purple":this.labelColor=this.theme().purpleDim,this.valueColor=this.theme().purple;break;case"grey":this.labelColor=this.theme().greyDim,this.valueColor=this.theme().grey;break;case"yellow":this.labelColor=this.theme().yellowDim,this.valueColor=this.theme().yellow;break;default:this.labelColor=this.theme().contrastDim,this.valueColor=this.theme().contrast;break}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["app-svg-boolean-switch"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:18,vars:8,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg"],["id","defs9"],["id","disabled","transform","translate(0,35)",3,"pointerdown","pointermove","pointerup"],["width","180","height","35","id","rect1-5","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["x","0","y","0","width","175","height","35","viewBox","0 0 175 35"],["id","text1-5","x","47.083984","y","22.636719",2,"text-align","center","font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["transform","translate(6,2)","id","disabledToogleControl"],["width","37.714306","height","22","rx","10.999999","id","rect3-4","x","0","y","5",2,"stroke-width","1.57144","fill","#9f9f9f","fill-opacity","0.97216702"],["cx","11.5","cy","16","fill","#ffffff","id","circle3-7","r","10",2,"stroke-width","1.5","stroke","black","stroke-opacity","0.2","stroke-dasharray","none"],["id","enabled",3,"pointerdown","pointermove","pointerup"],["width","180","height","35","id","rect1","x","0","y","0",2,"display","inline","opacity","1","fill","black","fill-opacity","0","stroke","none","stroke-width","0","stroke-dasharray","none","stroke-opacity","1"],["id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","14px","font-family","arial","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["transform","translate(6,2)","id","enabledToogleControl"],["width","37.714306","height","22","rx","10.999999","id","rect3","x","0","y","5",2,"stroke-width","1.57144"],["cx","26.5","cy","16","fill","#ffffff","id","circle3","r","10",2,"stroke-width","1.5","stroke","black","stroke-opacity","0.2","stroke-dasharray","none"]],template:function(t,i){t&1&&(pe(),L(0,"svg",0),ne(1,"defs",1),L(2,"g",2),Za("pointerdown",function(o){return i.onPointerDown(o)})("pointermove",function(o){return i.onPointerMove(o)})("pointerup",function(o){return i.onPointerUp(o,!0)}),ne(3,"rect",3),L(4,"svg",4)(5,"text",5),w(6),H()(),L(7,"g",6),ne(8,"rect",7)(9,"circle",8),H()(),L(10,"g",9),Za("pointerdown",function(o){return i.onPointerDown(o)})("pointermove",function(o){return i.onPointerMove(o)})("pointerup",function(o){return i.onPointerUp(o,!1)}),ne(11,"rect",10),L(12,"svg",4)(13,"text",11),w(14),H()(),L(15,"g",12),ne(16,"rect",13)(17,"circle",14),H()()()),t&2&&(ue("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),x(5),ue("fill",i.labelColor),x(),_t(" ",i.data().ctrlLabel," "),x(7),ue("fill",i.valueColor),x(),_t("",i.data().ctrlLabel," "),x(2),ue("fill",i.valueColor))},encapsulation:2})}return a})();function Jm(a,n){if(a&1){let e=J();g(0,"app-svg-boolean-switch",6),W("toggleClick",function(i){R(e);let r=X(2);return N(r.toggle(i))}),C()}if(a&2){let e=X().$implicit,t=X();G("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function ep(a,n){if(a&1){let e=J();g(0,"app-svg-boolean-button",6),W("toggleClick",function(i){R(e);let r=X(2);return N(r.toggle(i))}),C()}if(a&2){let e=X().$implicit,t=X();G("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function tp(a,n){if(a&1){let e=J();g(0,"app-svg-boolean-light",6),W("toggleClick",function(i){R(e);let r=X(2);return N(r.toggle(i))}),C()}if(a&2){let e=X().$implicit,t=X();G("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function ip(a,n){if(a&1&&(Ar(0),ze(1,Jm,1,3,"app-svg-boolean-switch",5)(2,ep,1,3,"app-svg-boolean-button",5)(3,tp,1,3,"app-svg-boolean-light",5),Or()),a&2){let e,t=n.$implicit;x(),Fe((e=t.type)==="1"?1:e==="2"?2:e==="3"?3:-1)}}function np(a,n){a&1&&Y(0,"div",4)}var Lc=(()=>{class a extends Ne{dashboard=D(ft);signalkRequestsService=D(xi);appService=D(Ht);switchControls=le([]);skRequestSub=new Cr;labelColor=le(void 0);nbCtrl=null;ctrlDimensions={width:0,height:0};constructor(){super(),this.defaultConfig={displayName:"Switch Panel Label",filterSelfPaths:!0,paths:[],enableTimeout:!1,dataTimeout:5,color:"contrast",putEnable:!0,putMomentary:!1,multiChildCtrls:[]},de(()=>{this.theme()&&this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim)})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.startWidget()}startWidget(){this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.nbCtrl=this.widgetProperties.config.multiChildCtrls.length,this.switchControls.set([]),this.widgetProperties.config.multiChildCtrls.forEach(e=>{e.isNumeric||(e.isNumeric=!1),this.switchControls().push(ee({},e))}),this.unsubscribeDataStream();for(let e in this.switchControls())if(Object.prototype.hasOwnProperty.call(this.switchControls(),e)){let t=this.switchControls()[e];this.observeDataStream(e,i=>{t.isNumeric?[0,1,null].includes(i.data.value)&&(t.value=!!i.data.value):t.value=i.data.value})}this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}onResized(e){let t=e.contentRect.height/this.nbCtrl,i=35*e.contentRect.width/180,r=i<t?i:t;this.ctrlDimensions={width:e.contentRect.width,height:r}}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}toggle(e){let i=this.widgetProperties.config.paths.findIndex(r=>r.pathID==e.pathID);e.isNumeric?this.signalkRequestsService.putRequest(this.widgetProperties.config.paths[i].path,e.value?1:0,this.widgetProperties.uuid):this.signalkRequestsService.putRequest(this.widgetProperties.config.paths[i].path,e.value,this.widgetProperties.uuid)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-boolean-switch"]],features:[me],decls:7,vars:5,consts:[["widgetContainer",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],[1,"widgetOverlay"],[1,"svg-widget",3,"controlData","theme","dimensions"],[1,"svg-widget",3,"toggleClick","controlData","theme","dimensions"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),Y(1,"widget-title",2),g(2,"div",3,0),W("onResize",function(s){return R(r),N(i.onResized(s))}),bi(4,ip,4,1,"ng-container",null,rn),C(),ze(6,np,1,0,"div",4),C()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()),x(3),_i(i.switchControls()),x(2),Fe(i.dashboard.isDashboardStatic()?-1:6))},dependencies:[We,ot,rt,Wc,Nc,Rc,jt],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20}.svg-widget[_ngcontent-%COMP%]{display:flex}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();function Vt(a,n,e,t=1e3,i,r,o=[500,500],s){if(r){let b=r.get(a);b&&cancelAnimationFrame(b)}n=(()=>{let b=a.getAttribute("transform");if(b){let k=/rotate\((-?\d+(\.\d+)?)/.exec(b);if(k)return parseFloat(k[1])}return n})();let p=b=>(b+360)%360;n=p(n),e=p(e);let l=e-n;l>180&&(l-=360),l<-180&&(l+=360);let c=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,m=b=>s?s.runOutsideAngular(b):b(),v=b=>s?s.run(b):b();m(()=>{let b=performance.now(),k=F=>{let j=F-b,te=Math.min(j/t,1),ye=c(te),Le=n+l*ye;if(a.setAttribute("transform",`rotate(${Le} ${o[0]} ${o[1]})`),te<1){let qe=requestAnimationFrame(k);r&&r.set(a,qe)}else a.setAttribute("transform",`rotate(${e} ${o[0]} ${o[1]})`),i&&v(i),r&&r.delete(a)},M=requestAnimationFrame(k);r&&r.set(a,M)})}function ir(a,n,e,t=500,i,r,o){if(r){let p=r.get(a);p&&cancelAnimationFrame(p)}let s=p=>o?o.runOutsideAngular(p):p(),d=p=>o?o.run(p):p();s(()=>{let p=performance.now(),l=e-n,c=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,m=b=>{let k=b-p,M=Math.min(k/t,1),F=c(M),j=n+l*F;if(a.setAttribute("width",j.toString()),M<1){let te=requestAnimationFrame(m);r&&r.set(a,te)}else a.setAttribute("width",e.toString()),i&&d(i),r&&r.delete(a)},v=requestAnimationFrame(m);r&&r.set(a,v)})}var Vc=a=>a<.5?4*a*a*a:1-Math.pow(-2*a+2,3)/2,co=a=>(a%360+360)%360,ap=(a,n)=>{let e=co(n)-co(a);return e>180&&(e-=360),e<=-180&&(e+=360),e};function zc(a,n,e,t,i,r){let o=p=>r?r.runOutsideAngular(p):p(),s=p=>r?r.run(p):p(),d=0;return o(()=>{let p=performance.now(),l=ap(a,n),c=co(a),m=v=>{let b=Math.min((v-p)/e,1),k=Vc(b),M=c+l*k;t(co(M)),b<1?d=requestAnimationFrame(m):i&&s(i)};d=requestAnimationFrame(m)}),d}var rp=(a,n,e)=>({min:a.min+(n.min-a.min)*e,mid:a.mid+(n.mid-a.mid)*e,max:a.max+(n.max-a.max)*e});function Fc(a,n,e,t,i,r){let o=p=>r?r.runOutsideAngular(p):p(),s=p=>r?r.run(p):p(),d=0;return o(()=>{let p=performance.now(),l=c=>{let m=Math.min((c-p)/e,1),v=Vc(m);t(rp(a,n,v)),m<1?d=requestAnimationFrame(l):i&&s(i)};d=requestAnimationFrame(l)}),d}var op=["rotatingDial"],sp=["awaIndicator"],lp=["rudderStarboardRect"],dp=["rudderPortRect"],Bc=(()=>{class a{rotatingDial=se.required("rotatingDial");awaIndicator=se.required("awaIndicator");rudderStarboardRect=se.required("rudderStarboardRect");rudderPortRect=se.required("rudderPortRect");apMode=U("off-line");targetPilotHeading=U.required();targetWindAngleHeading=U.required();rudderAngle=U.required();courseXte=U.required();compassHeading=U.required();appWindAngle=U.required();targetPilotHeadingTrue=U.required();headingDirectionTrue=U.required();compass={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};oldRudderPrtAngle=0;newRudderPrtAngle=0;oldRudderStbAngle=0;newRudderStbAngle=0;apModeValue=le("");apModeValueAnnotation=le("");apModeValueDirection=le("");apTWA=St(()=>{let e=parseFloat(this.targetWindAngleHeading().toFixed(0));if(e!=null)return e});lockedMode=St(()=>{let e=this.apMode();return e==="auto"||e==="compass"?"Heading Hold":e==="gps"?"GPS Hold":e==="route"||e==="nav"?"Track":e==="wind"?"Wind Hold":e==="wind true"?"Wind True Hold":e==="standby"?"Standby":"Off-line"});lockedHdg=St(()=>{let e=parseFloat(this.targetPilotHeading().toFixed(0)),t=parseFloat(this.targetWindAngleHeading().toFixed(0));switch(this.apMode()){case"auto":return e;case"route":return e;case"wind":return t;default:return"--"}});lockedHdgAnnotation=St(()=>{let e=this.apMode();return e==="route"||e==="auto"?this.targetPilotHeadingTrue()?"True":"Mag":e==="wind"&&typeof this.lockedHdg()=="number"?this.lockedHdg()>0?"Stbd":"Port":""});hdgDirectionTrue=St(()=>this.headingDirectionTrue()?"T":"M");animationFrameIds=new WeakMap;rudderAnimationFrames=new WeakMap;ANIMATION_DURATION=1e3;DEG_TO_PX=16.66666667;ngZone=D(at);constructor(){de(()=>{if(this.compassHeading()===null||this.compassHeading()===void 0)return;let e=parseFloat(this.compassHeading().toFixed(0));lt(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.rotatingDial()?.nativeElement&&Vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,500,void 0,this.animationFrameIds,[500,560.061],this.ngZone)})}),de(()=>{let t=(parseFloat(this.appWindAngle().toFixed(0))+360)%360;lt(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&Vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[500,560.061],this.ngZone)})}),de(()=>{let e=this.rudderAngle();e!=null&&lt(()=>{this.updateRudderAngle(-e)})}),de(()=>{let e=this.apMode(),t=parseFloat(this.appWindAngle().toFixed(0)),i=this.courseXte();lt(()=>{switch(e){case"auto":case"route":{let r,o,s;i<0?s=" Port":i>0?s=" Stbd":s="",i=Math.abs(i),i>999?(r=(i/1e3).toFixed(1),o=" km"):(r=i.toFixed(0),o=" m"),this.apModeValueAnnotation.set(o),this.apModeValue.set(r),this.apModeValueDirection.set(s);break}case"standby":this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break;case"wind":this.apModeValueAnnotation.set(t?t>0?"S":"P":""),this.apModeValue.set(Math.abs(t)+"\xB0"),this.apModeValueDirection.set("");break;default:this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break}})})}updateRudderAngle(e){let i=Math.min(Math.abs(e),30)*this.DEG_TO_PX;e<=0?(ir(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,i,500,void 0,this.rudderAnimationFrames,this.ngZone),ir(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,0,500,void 0,this.rudderAnimationFrames,this.ngZone),this.oldRudderStbAngle=i,this.oldRudderPrtAngle=0):(ir(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,i,500,void 0,this.rudderAnimationFrames,this.ngZone),ir(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,0,500,void 0,this.rudderAnimationFrames,this.ngZone),this.oldRudderPrtAngle=i,this.oldRudderStbAngle=0)}ngOnDestroy(){let e=[this.rotatingDial(),this.awaIndicator()];for(let i of e){let r=i?.nativeElement;if(!r)continue;let o=this.animationFrameIds.get(r);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(r)}let t=[this.rudderStarboardRect(),this.rudderPortRect()];for(let i of t){let r=i?.nativeElement;if(!r)continue;let o=this.rudderAnimationFrames.get(r);o&&cancelAnimationFrame(o),this.rudderAnimationFrames.delete(r)}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["app-svg-autopilot"]],viewQuery:function(t,i){t&1&&(oe(i.rotatingDial,op,5),oe(i.awaIndicator,sp,5),oe(i.rudderStarboardRect,lp,5),oe(i.rudderPortRect,dp,5)),t&2&&Re(4)},inputs:{apMode:[1,"apMode"],targetPilotHeading:[1,"targetPilotHeading"],targetWindAngleHeading:[1,"targetWindAngleHeading"],rudderAngle:[1,"rudderAngle"],courseXte:[1,"courseXte"],compassHeading:[1,"compassHeading"],appWindAngle:[1,"appWindAngle"],targetPilotHeadingTrue:[1,"targetPilotHeadingTrue"],headingDirectionTrue:[1,"headingDirectionTrue"]},decls:123,vars:17,consts:[["rotatingDial",""],["awaIndicator",""],["rudderStarboardRect",""],["rudderPortRect",""],["viewBox","0 0 1000 500","preserveAspectRatio","xMidYMid meet"],["id","compassDial"],["id","fixedDial"],["d","M 499.99997,70.521 A 489.47916,489.47916 0 0 0 10.520805,560.00017 489.47916,489.47916 0 0 0 499.99997,1049.4793 489.47916,489.47916 0 0 0 989.47913,560.00017 489.47916,489.47916 0 0 0 499.99997,70.521 Z m 0,132.29166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none"],["d","M 93.283801,325.18249 A 469.63541,469.63541 0 0 1 339.37522,118.68726",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["d","M 660.62476,118.68725 A 469.63541,469.63541 0 0 1 906.71619,325.18247",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],[2,"display","inline"],["transform","translate(0,59.999714)"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",1,"contrast-text",2,"display","inline","fill","none","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",1,"contrast-text",2,"display","inline","fill","none","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","lightGray","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","fill-opacity","1","stroke","none"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","triangle","d","M 499.5601,155 450,197 h 100 z",1,"fixed-dial-background",2,"display","inline","stroke","none"],["id","counterAWA",2,"display","inline"],[0,"xml","space","preserve","x","910.14893","y","90.67927",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],[0,"xml","space","preserve","x","907.84814","y","160.33212",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","73.3333px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],[2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","33.3333px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],[0,"xml","space","preserve","x","910.14893","y","200",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","34.6667px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],[0,"xml","space","preserve","x","97","y","90.47614",1,"contrast-text-dim",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","33.3333px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],[0,"xml","space","preserve","x","109.25","y","160.33212",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","73.3333px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","displayArea",2,"display","inline"],[0,"xml","space","preserve","x","523.93127","y","480",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","240px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["dy","-38",2,"font-weight","normal","font-size","180px"],[0,"xml","space","preserve","x","730","y","484",1,"contrast-text-dim",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","33.3333px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","fill-opacity","1","stroke","none"],[0,"xml","space","preserve","x","500","y","280",1,"contrast-text-dim",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","45px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","IndicatorsLayer",2,"display","inline"],["transform","matrix(0.78967872,0,0,0.78967872,95.846484,6.0520865)"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,113.64335,37.878309)",1,"awa-text",2,"stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","486.45618","y","136.29939",1,"card-color",2,"font-weight","bold","font-size","52.9167px","stroke","none"],["id","tspan8","x","486.45618","y","136.29939",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","70.5556px","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","fill","#001000","fill-opacity","1","stroke","none","stroke-width","14.5521"],["id","rudder",2,"display","inline"],["width","0","height","35","x","500","y","0",1,"rudderStarboard",2,"display","inline","opacity","1","fill-opacity","1","stroke","none"],["width","0","height","35","x","-500","y","0","transform","scale(-1,1)",1,"rudderPort",2,"display","inline","opacity","1","fill-opacity","1","stroke","none"],["width","331.54941","height","33.216152","x","167.55841","y","0.89179999",1,"boxes",2,"display","inline","opacity","1","fill","none","stroke-width","2","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["width","331.54941","height","33.216152","x","500.89182","y","0.89179999",1,"boxes",2,"display","inline","opacity","1","fill","none","stroke-width","2","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["width","331.54941","height","33.216152","x","334.22531","y","0.89179999",1,"boxes",2,"display","inline","opacity","1","fill","none","stroke-width","2","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","rect12","width","998.26178","height","33.261108","x","0.86909997","y","0.86909997",1,"boxes",2,"display","inline","opacity","1","fill","none","stroke-width","2","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(pe(),L(0,"svg",4)(1,"g",5)(2,"g",6),ne(3,"path",7)(4,"path",8)(5,"path",9),H(),L(6,"g",10,0)(8,"g",11),ne(9,"path",12)(10,"path",13)(11,"path",14)(12,"path",15)(13,"path",16)(14,"path",17)(15,"path",18)(16,"path",19)(17,"path",20)(18,"path",21)(19,"path",22)(20,"path",23)(21,"path",24)(22,"path",25)(23,"path",26)(24,"path",27)(25,"path",28)(26,"path",29)(27,"path",30)(28,"path",31)(29,"path",32)(30,"path",33)(31,"path",34)(32,"path",35)(33,"path",36)(34,"path",37)(35,"path",38)(36,"path",39)(37,"path",40)(38,"path",41)(39,"path",42)(40,"path",43)(41,"path",44)(42,"path",45)(43,"path",46)(44,"path",47)(45,"path",48),L(46,"text",49)(47,"tspan",50),w(48,"330"),H()(),L(49,"text",51)(50,"tspan",52),w(51,"300"),H()(),L(52,"text",53)(53,"tspan",54),w(54,"W"),H()(),L(55,"text",55)(56,"tspan",56),w(57,"240"),H()(),L(58,"text",57)(59,"tspan",58),w(60,"210"),H()(),L(61,"text",59)(62,"tspan",60),w(63,"S"),H()(),L(64,"text",61)(65,"tspan",62),w(66,"150"),H()(),L(67,"text",63)(68,"tspan",64),w(69,"120"),H()(),L(70,"text",65)(71,"tspan",66),w(72,"E"),H()(),L(73,"text",67)(74,"tspan",68),w(75,"60"),H()(),L(76,"text",69)(77,"tspan",70),w(78,"30"),H()(),L(79,"text",71)(80,"tspan",72),w(81,"N"),H()()()(),ne(82,"path",73),H(),L(83,"g",74)(84,"text",75),w(85),H(),L(86,"text",76),w(87),L(88,"tspan",77),w(89),H()(),L(90,"text",78),w(91),H(),L(92,"text",79),w(93,"HDG"),H(),L(94,"text",80),w(95),L(96,"tspan",77),w(97),H()()(),L(98,"g",81)(99,"text",82),w(100),L(101,"tspan",83),w(102,"\xB0"),H()(),L(103,"text",84),w(104),H(),L(105,"text",85),w(106),H()(),L(107,"g",86)(108,"g",87,1),ne(110,"path",88),L(111,"text",89)(112,"tspan",90),w(113,"A"),H()()()(),L(114,"g",91),ne(115,"rect",92,2)(117,"rect",93,3)(119,"rect",94)(120,"rect",95)(121,"rect",96)(122,"rect",97),H()()),t&2&&(x(84),Mn(i.apMode()=="wind"?"awa-text-dim":"contrast-text-dim"),ue("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),x(),_t(" ",i.apMode()==="route"?"XTE":"AWA"),x(),Mn(i.apMode()=="wind"?"awa-text":"contrast-text"),ue("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),x(),Je(i.apModeValue()),x(2),Je(i.apModeValueAnnotation()),x(),ue("display",i.apMode()=="route"?"inline":"none"),x(),Je(i.apModeValueDirection()),x(4),_t("",i.compass.newValue,"\xB0"),x(2),Je(i.hdgDirectionTrue()),x(3),Je(i.lockedHdg()),x(4),Je(i.lockedHdgAnnotation()),x(2),Je(i.lockedMode()),x(2),ue("display",i.apMode()=="wind"?"inline":"none"))},styles:["[_nghost-%COMP%]{display:block;width:100%;font-family:Roboto;overflow:hidden;aspect-ratio:2/1;max-width:100%;max-height:100%}svg[_ngcontent-%COMP%]{width:100%;height:100%;display:block;overflow:hidden}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);stroke:var(--kip-contrast-color)}.contrast-text-dim[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color);stroke:var(--kip-contrast-dim-color)}.awa-text[_ngcontent-%COMP%]{fill:var(--kip-orange-color);stroke:var(--kip-orange-color)}.awa-text-dim[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color);stroke:var(--kip-orange-dim-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.rudderPort[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.rudderStarboard[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.boxes[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-grey-color)}"]})}return a})();var cp=["canvasValue"],ho=(()=>{class a extends Ne{canvasValue=se.required("canvasValue");canvas=D(dt);latPos="";longPos="";labelColor=le(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;middle=0;center=0;fontSizeOffset=0;canvasValCtx;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Position",filterSelfPaths:!0,paths:{longPath:{description:"Longitude",path:"self.navigation.position.longitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"longitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500},latPath:{description:"Latitude",path:"self.navigation.position.latitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"latitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5},de(()=>{this.theme()&&(this.setColors(),this.drawValue())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvas.setHighDPISize(this.canvasValue().nativeElement,this.canvasValue().nativeElement.parentElement.getBoundingClientRect()),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.6/2),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.canvasValCtx=this.canvasValue().nativeElement.getContext("2d"),this.calculateFontSizeAndPositions(),!this.isDestroyed&&this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("longPath",e=>{e.data.value===null?this.longPos="":this.widgetProperties.config.paths.longPath.convertUnitTo==="pdeg"?this.longPos=e.data.value.toFixed(6)+"\xB0":this.longPos=e.data.value.toString(),this.drawValue()}),this.observeDataStream("latPath",e=>{e.data.value===null?this.latPos="":this.widgetProperties.config.paths.latPath.convertUnitTo==="pdeg"?this.latPos=e.data.value.toFixed(7)+"\xB0":this.latPos=e.data.value.toString(),this.drawValue()})}ngOnDestroy(){this.isDestroyed=!0,this.unsubscribeDataStream(),this.canvas.releaseCanvas(this.canvasValue()?.nativeElement,{clear:!0,removeFromDom:!0})}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.canvas.setHighDPISize(this.canvasValue().nativeElement,this.canvasValue().nativeElement.parentElement.getBoundingClientRect()),this.maxTextHeight=Math.floor(this.canvasValue().nativeElement.height*.6/2),this.maxTextWidth=Math.floor(this.canvasValue().nativeElement.width*.85),this.calculateFontSizeAndPositions(),this.drawValue())}setColors(){this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color}calculateFontSizeAndPositions(){this.center=this.canvasValue().nativeElement.width/2,this.middle=this.canvasValue().nativeElement.height*.57;let e=this.latPos.length>this.longPos.length?this.latPos:this.longPos,t=this.canvas.calculateOptimalFontSize(this.canvasValCtx,e,this.maxTextWidth,this.maxTextHeight,"bold");this.fontSizeOffset=Math.floor(t*5e-4)}drawValue(){this.canvasValCtx&&(this.canvas.clearCanvas(this.canvasValCtx,this.canvasValue().nativeElement.width,this.canvasValue().nativeElement.height),this.canvas.drawText(this.canvasValCtx,this.latPos,this.center,this.middle-this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","bottom"),this.canvas.drawText(this.canvasValCtx,this.longPos,this.center,this.middle+this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","top"))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-position"]],viewQuery:function(t,i){t&1&&oe(i.canvasValue,cp,5),t&2&&Re()},features:[me],decls:5,vars:4,consts:[["canvasValue",""],[3,"configChange","config","id"],[3,"text","color"],[1,"textGenericWrapper",3,"onResize"],[1,"canvas"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),Y(1,"widget-title",2),g(2,"div",3),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(3,"canvas",4,0),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()))},dependencies:[We,ot,rt,jt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.textGenericWrapper[_ngcontent-%COMP%]{position:relative;width:100%;height:100%}.canvas[_ngcontent-%COMP%]{position:absolute;top:0;left:0;z-index:inherit}"]})}return a})();function hp(a,n){if(a&1){let e=J();g(0,"button",18),W("click",function(){R(e);let i=X();return N(i.toggleDodge())}),g(1,"mat-icon",19),pe(),g(2,"svg",36)(3,"text",42),w(4,"Dodge"),C(),Y(5,"path",43)(6,"path",44),g(7,"text",45),w(8,"!"),C()()()()}if(a&2){let e=X();Bt("ap-btn-active",e.dodgeModeActive()),G("disabled",e.apBtnDisabled()),x(5),_e("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor"),x(),_e("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor")}}function up(a,n){if(a&1){let e=J();pe(),g(0,"g",50),W("click",function(){let i=R(e).$implicit,r=X(2);return N(!i.disabled&&r.onMenuItemClick(i.action))})("keyup.enter",function(){let i=R(e).$implicit,r=X(2);return N(!i.disabled&&r.onMenuItemClick(i.action))})("keyup.space",function(){let i=R(e).$implicit,r=X(2);return N(!i.disabled&&r.onMenuItemClick(i.action))}),Y(1,"rect",51),g(2,"text",52),w(3),C()()}if(a&2){let e=n.$implicit,t=n.$index,i=X(2);ue("aria-label",e.label),x(),Mn(e.isCancel?"svg-menu-item-cancel":e.current?"svg-menu-item-current":e.disabled?"svg-menu-item-disabled":"svg-menu-item"),ue("y",t*i.itemHeight)("height",i.itemHeight),x(),Mn(e.isCancel?"svg-menu-item-cancel-text":e.current?"svg-menu-item-current-text":e.disabled?"svg-menu-item-disabled-text":"svg-menu-item-text"),ue("y",(t+.65)*i.itemHeight),x(),td(" ",e.current?"\u2713 ":"","",e.label," ")}}function mp(a,n){if(a&1){let e=J();g(0,"div",46),W("click",function(){R(e);let i=X();return N(i.toggleMenu())})("keyup.enter",function(){R(e);let i=X();return N(i.toggleMenu())})("keyup.space",function(){R(e);let i=X();return N(i.toggleMenu())}),pe(),g(1,"svg",47),W("click",function(i){return R(e),N(i.stopPropagation())})("keyup.enter",function(i){return R(e),N(i.stopPropagation())})("keyup.space",function(i){return R(e),N(i.stopPropagation())}),Y(2,"rect",48),Ar(3),bi(4,up,4,10,":svg:g",49,rn),Or(),C()()}if(a&2){let e=X();x(),ue("viewBox","0 0 240 "+e.menuItems().length*e.itemHeight),x(),ue("height",e.menuItems().length*e.itemHeight),x(2),_i(e.menuItems())}}function pp(a,n){a&1&&Y(0,"div",41)}var Ai={V1_MODE_PATH:"self.steering.autopilot.state",V2_BASE:"/signalk/v2/api",V2_AUTOPILOTS:"/signalk/v2/api/vessels/self/autopilots",V2_COURSE:"/signalk/v2/api/vessels/self/navigation/course"},vn={BASE:a=>`${Ai.V2_AUTOPILOTS}/${a}`,ENGAGE:a=>`${Ai.V2_AUTOPILOTS}/${a}/engage`,DISENGAGE:a=>`${Ai.V2_AUTOPILOTS}/${a}/disengage`,MODE:a=>`${Ai.V2_AUTOPILOTS}/${a}/mode`,TARGET_HEADING:a=>`${Ai.V2_AUTOPILOTS}/${a}/target`,TACK:a=>`${Ai.V2_AUTOPILOTS}/${a}/tack`,GYBE:a=>`${Ai.V2_AUTOPILOTS}/${a}/gybe`,DODGE:a=>`${Ai.V2_AUTOPILOTS}/${a}/dodge`,ADJUST_HEADING:a=>`${Ai.V2_AUTOPILOTS}/${a}/target/adjust`},As={auto:{path:"self.steering.autopilot.state",value:"auto"},wind:{path:"self.steering.autopilot.state",value:"wind"},route:{path:"self.steering.autopilot.state",value:"route"},standby:{path:"self.steering.autopilot.state",value:"standby"},"+1":{path:"self.steering.autopilot.actions.adjustHeading",value:1},"+10":{path:"self.steering.autopilot.actions.adjustHeading",value:10},"-1":{path:"self.steering.autopilot.actions.adjustHeading",value:-1},"-10":{path:"self.steering.autopilot.actions.adjustHeading",value:-10},tackToPort:{path:"self.steering.autopilot.actions.tack",value:"port"},tackToStarboard:{path:"self.steering.autopilot.actions.tack",value:"starboard"},advanceWaypoint:{path:"self.steering.autopilot.actions.advanceWaypoint",value:"1"},compass:{path:"v2 only command",value:"v2 only command"},gps:{path:"v2 only command",value:"v2 only command"},"true wind":{path:"v2 only command",value:"v2 only command"},nav:{path:"v2 only command",value:"v2 only command"}},Os={COUNTDOWN_SECONDS:5,ERROR_DISPLAY_DURATION:6e3,MESSAGE_DISPLAY_DURATION:5e3},Hc=(()=>{class a extends Ne{signalkRequestsService=D(xi);http=D(md);dashboard=D(ft);_destroyRef=D(Li);_app=D(Ht);apiEndpoints;apState=le(null);apEngaged=le(null);apMode=le(null);dodgeModeActive=le(!1);autopilotTargetHeading=0;autopilotTargetWindHeading=0;courseTargetHeading=0;heading=0;crossTrackError=0;windAngleApparent=0;rudder=0;currentRequests=new Set;apGrid=St(()=>this.apMode()?"grid":"none");apEngageBtnDisabled=St(()=>{let e=this.apMode(),t=this.widgetProperties.config.autopilot.apiVersion;if(t){if(t==="v1")return e==="standby"||e==="off-line"}else return!0;return!1});apBtnDisabled=St(()=>{let e=this.apEngaged();return this.widgetProperties.config.autopilot.apiVersion==="v1"?this.apMode()==="standby":!e});adjustHdgBtnVisibility=St(()=>{let e=this.apMode();return e==="auto"||e==="compass"||e==="gps"||e==="wind"||e==="true wind"||e==="standby"});tackBtnVisibility=St(()=>{let e=this.apMode();return e==="auto"||e==="compass"||e==="gps"||e==="wind"||e==="true wind"||e==="standby"});routeBtnVisibility=St(()=>{let e=this.apMode();return e==="route"||e==="nav"});countdownOverlayVisibility=le("hidden");countdownOverlayText=le("");msgOverlayVisibility=le("hidden");msgOverlayText=le("");errorOverlayVisibility=le("hidden");errorOverlayText=le("");handleCountDownCounterTimeout=null;handleConfirmActionTimeout=null;handleDisplayErrorTimeout=null;handleMessageTimeout=null;isPersistentError=!1;countDownValue=-1;actionToBeConfirmed="";menuItems=St(()=>{let e=this.apMode(),t=this.widgetProperties.config.autopilot.apiVersion,i=this.widgetProperties.config.autopilot.pluginId,r=[];return lt(()=>{if(t==="v2"){if(i=="pypilot-autopilot-provider"){let o=[{label:"Compass",action:"compass"},{label:"GPS",action:"gps"},{label:"Wind",action:"wind"},{label:"True Wind",action:"true wind"},{label:"Navigation",action:"nav"},{label:"Close",action:"cancel",isCancel:!0}];r=this.parseMenuItems(o,e)}}else if(t==="v1"){let o=[{label:"Auto",action:"auto"},{label:"Wind",action:"wind"},{label:"Route",action:"route"},{label:"Close",action:"cancel",isCancel:!0}];r=this.parseMenuItems(o,e)}}),r});menuOpen=le(!1);itemHeight=60;padding=20;embedWidgetColor="contrast";nextWptProperties=le({type:"widget-position",uuid:"db473695-42b1-4435-9d3d-ac2f27bf9665",config:{displayName:"Next WPT",filterSelfPaths:!0,paths:{longPath:{description:"Longitude",path:"self.navigation.courseGreatCircle.nextPoint.position.longitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"longitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500},latPath:{description:"Latitude",path:"self.navigation.courseGreatCircle.nextPoint.position.latitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"latitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},color:this.embedWidgetColor,enableTimeout:!1,dataTimeout:5}},{equal:ci});ttwProperties=le({type:"widget-numeric",uuid:"ee022f2f-ee23-41a7-b0b1-0928dc28864d",config:{displayName:"TTWpt",filterSelfPaths:!0,paths:{numericPath:{description:"Time To Waypoint",path:"self.navigation.course.calcValues.timeToGo",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"D HH:MM:SS",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,showMiniChart:!1,color:this.embedWidgetColor,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}},{equal:ci});etaProperties=le({type:"widget-datetime",uuid:"544ca35d-18bf-4a90-9aa8-b12312e3fc60",config:{displayName:"ETA",filterSelfPaths:!0,paths:{gaugePath:{description:"Estimated Time Of Arrival Date",path:"self.navigation.course.calcValues.estimatedTimeOfArrival",source:"default",pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"EEE HH:mm",dateTimezone:"System Timezone -",color:this.embedWidgetColor,enableTimeout:!1,dataTimeout:5}},{equal:ci});dtwProperties=le({type:"widget-numeric",uuid:"ee02ef2f-ee23-41a7-b0b1-0928dc28864d",config:{displayName:"DTWpt",filterSelfPaths:!0,paths:{numericPath:{description:"Distance To Waypoint",path:"self.navigation.course.calcValues.distance",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"nm",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,showMiniChart:!1,color:this.embedWidgetColor,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}},{equal:ci});xteProperties=le({type:"widget-numeric",uuid:"9234856b-7573-4154-a44f-3baf7c6f119c",config:{displayName:"XTE",filterSelfPaths:!0,paths:{numericPath:{description:"Cross Track Error",path:"self.navigation.course.calcValues.crossTrackError",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,numInt:1,showMiniChart:!1,color:this.embedWidgetColor,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}},{equal:ci});constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{autopilotState:{description:"Autopilot State",path:"self.steering.autopilot.state",source:"default",pathType:"string",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},autopilotMode:{description:"Autopilot Mode",path:"self.steering.autopilot.mode",source:"default",pathType:"string",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},autopilotEngaged:{description:"Autopilot Engaged",path:"self.steering.autopilot.engaged",source:"default",pathType:"boolean",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},autopilotTargetHeading:{description:"Autopilot Target Magnetic Heading",path:"self.steering.autopilot.target.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},autopilotTargetWindHeading:{description:"Autopilot Target Apparent Wind Angle",path:"self.steering.autopilot.target.windAngleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},rudderAngle:{description:"Rudder Angle",path:"self.steering.rudderAngle",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",sampleTime:500},courseXte:{description:"Cross Track Error",path:"self.navigation.course.calcValues.crossTrackError",source:"default",pathType:"number",isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathRequired:!1,pathSkUnitsFilter:"m",sampleTime:500},headingMag:{description:"Magnetic Heading",path:"self.navigation.headingMagnetic",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,sampleTime:500},headingTrue:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,sampleTime:500},windAngleApparent:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,sampleTime:500},windAngleTrueWater:{description:"Wind Angle True Water",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,sampleTime:500}},autopilot:{invertRudder:!0,headingDirectionTrue:!1,courseDirectionTrue:!1,apiVersion:null,instanceId:null,pluginId:null,modes:null},enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){let e={statusCode:500,statusCodeDescription:"Autopilot widget not configured",requestId:"",state:""},t=this.widgetProperties.config.autopilot.apiVersion,i=this.widgetProperties.config.autopilot.instanceId,r=this.widgetProperties.config.autopilot.pluginId,o=s=>{this.unsubscribeDataStream(),console.error(`[Autopilot Widget] ${s}`),this.displayApError(e),this.isPersistentError=!0,this.apMode.set("off-line"),this.apState.set("off-line"),this.apEngaged.set(!1)};if(this.unsubscribeDataStream(),!t){o("Not configured with autopilot API version, skipping initialization");return}if(t==="v2"){if(!i){o("No autopilot instance ID configured for V2 API, skipping initialization");return}if(!r){o("No autopilot plugin ID configured for V2 API, skipping initialization");return}this.apiEndpoints=this.setV2Endpoint(i),this.startV2Subscriptions();return}if(t==="v1"){this.startV1Subscriptions();return}o(`Unknown autopilot API version: ${t}`)}setV2Endpoint(e){return{engage:vn.ENGAGE(e),disengage:vn.DISENGAGE(e),mode:vn.MODE(e),target:vn.TARGET_HEADING(e),tack:vn.TACK(e),gybe:vn.GYBE(e),dodge:vn.DODGE(e),adjustHeading:vn.ADJUST_HEADING(e)}}isV2CommandSupported(e){return this.widgetProperties.config.autopilot.modes.includes(e)}updateConfig(e){this.widgetProperties.config=e,this.cancelAllHttpRequests(),this.isPersistentError=!1,this.errorOverlayVisibility.set("hidden"),this.errorOverlayText.set(""),this.apEngaged.set(null),this.startWidget()}startV2Subscriptions(){this.observeDataStream("autopilotState",e=>{e.data?.value?this.apState.set(e.data.value):(this.apState.set("off-line"),console.warn("[Autopilot Widget] Autopilot state is null or not available"))}),this.observeDataStream("autopilotMode",e=>{e.data?.value?this.apMode.set(e.data.value):(this.apMode.set("off-line"),console.warn("[Autopilot Widget] Autopilot mode is null or not available"))}),this.observeDataStream("autopilotEngaged",e=>{e.data?.value?this.apEngaged.set(e.data.value):(this.apEngaged.set(!1),console.warn("[Autopilot Widget] Autopilot engaged is null or not available"))}),this.startDataSubscription()}startV1Subscriptions(){this.widgetProperties.config.paths.autopilotMode.path=Ai.V1_MODE_PATH,this.observeDataStream("autopilotMode",e=>{e.data?.value?this.apMode.set(e.data.value):(this.apMode.set("off-line"),console.warn("[Autopilot Widget] Autopilot V1 mode state is null or not available"))}),this.startDataSubscription(),this.subscribePutResponse(),this.apState.set(null)}startDataSubscription(){this.observeDataStream("autopilotTargetHeading",e=>this.autopilotTargetHeading=e.data.value!=null?e.data.value:0),this.observeDataStream("autopilotTargetWindHeading",e=>this.autopilotTargetWindHeading=e.data.value!=null?e.data.value:0),this.observeDataStream("courseXte",e=>this.crossTrackError=e.data.value!=null?e.data.value:0),this.observeDataStream("rudderAngle",e=>{e.data.value===null?this.rudder=0:this.rudder=this.widgetProperties.config.autopilot.invertRudder?-e.data.value:e.data.value}),this.widgetProperties.config.autopilot.headingDirectionTrue?this.observeDataStream("headingTrue",e=>this.heading=e.data.value!=null?e.data.value:0):this.observeDataStream("headingMag",e=>this.heading=e.data.value!=null?e.data.value:0),this.observeDataStream("windAngleApparent",e=>this.windAngleApparent=e.data.value!=null?e.data.value:0)}subscribePutResponse(){this.signalkRequestsService.subscribeRequest().pipe(Wt(this._destroyRef)).subscribe(e=>{e.widgetUUID==this.widgetProperties.uuid&&this.commandReceived(e)})}makeHttpRequest(e){let t=e.pipe(Wt(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ul(()=>this.currentRequests.delete(t)))}cancelAllHttpRequests(){this.currentRequests.clear()}buildAndSendCommand(e){let t=As[e];if(typeof t>"u"){alert("Unknown Autopilot command: "+e);return}if(this.actionToBeConfirmed!==""&&this.actionToBeConfirmed!==e&&this.clearConfirmCmd(),(e==="tackToPort"||e==="tackToStarboard")&&this.actionToBeConfirmed===""){this.confirmTack(e);return}if((e==="route"&&this.apMode()==="route"||e==="route"&&this.apMode()==="nav")&&this.actionToBeConfirmed===""){this.confirmAdvanceWaypoint(e);return}if(this.actionToBeConfirmed===e){if(this.clearConfirmCmd(),e==="tackToPort"||e==="tackToStarboard"){let i=e==="tackToPort"?"port":"starboard";this.performTackOrGybe("tack",i)}(e==="route"&&this.apMode()==="route"||e==="route"&&this.apMode()==="nav")&&this.routeCommand(e,As.advanceWaypoint);return}this.routeCommand(e,t)}routeCommand(e,t){let i=this.widgetProperties.config.autopilot.apiVersion;i==="v2"?(e==="route"&&this.apMode()==="nav"&&(e="advanceWaypoint"),this.sendV2Command(e)):i==="v1"&&!t.path.startsWith("v2:")?this.sendV1Command(t):(console.error("[Autopilot Widget] Unsupported basic command:",t.path),this.displayApError({statusCode:400,statusCodeDescription:"Unsupported Command",message:`Command path '${t.path}' is not supported in the current API version`,widgetUUID:this.widgetProperties.uuid}))}sendV1Command(e){this.signalkRequestsService.putRequest(e.path,e.value,this.widgetProperties.uuid),console.log(`AP Action:
10
- `+JSON.stringify(e))}sendV2Command(e,t){return ea(this,null,function*(){let i=this.apiEndpoints;if(!i){console.error("V2 endpoints not available");return}let r=this.dodgeModeActive(),o;switch(e){case"+1":o={path:r?i.dodge:i.adjustHeading,value:{value:1,units:"deg"}},this.executeRestRequest("PUT",o);break;case"+10":o={path:r?i.dodge:i.adjustHeading,value:{value:10,units:"deg"}},this.executeRestRequest("PUT",o);break;case"-1":o={path:r?i.dodge:i.adjustHeading,value:{value:-1,units:"deg"}},this.executeRestRequest("PUT",o);break;case"-10":o={path:r?i.dodge:i.adjustHeading,value:{value:-10,units:"deg"}},this.executeRestRequest("PUT",o);break;case"target_heading":o={path:i.target,value:t},this.executeRestRequest("PUT",o);break;case"auto":o={path:i.mode,value:{value:"auto"}},this.executeRestRequest("PUT",o);break;case"compass":o={path:i.mode,value:{value:"compass"}},this.executeRestRequest("PUT",o);break;case"gps":o={path:i.mode,value:{value:"gps"}},this.executeRestRequest("PUT",o);break;case"wind":o={path:i.mode,value:{value:"wind"}},this.executeRestRequest("PUT",o);break;case"true wind":o={path:i.mode,value:{value:"true wind"}},this.executeRestRequest("PUT",o);break;case"route":o={path:i.mode,value:{value:"route"}},this.executeRestRequest("PUT",o);break;case"nav":o={path:i.mode,value:{value:"nav"}},this.executeRestRequest("PUT",o);break;case"standby":{let s={path:this.apEngaged()?`${i.disengage}`:`${i.engage}`};this.executeRestRequest("POST",s)}break;case"advanceWaypoint":o={path:`${Ai.V2_COURSE}/activeRoute/nextPoint`},this.executeRestRequest("PUT",o);break;case"tack":o={path:`${i.tack}/${t.value}`},this.executeRestRequest("POST",o);break;case"gybe":o={path:`${i.gybe}/${t}`},this.executeRestRequest("POST",o);break;case"dodge":o={path:i.dodge},this.dodgeModeActive()?this.executeRestRequest("DELETE",o).then(s=>{s.status==="success"&&this.dodgeModeActive.set(!1)}):this.executeRestRequest("POST",o).then(s=>{s.status==="success"&&this.dodgeModeActive.set(!0)});break;default:console.error("Unknown V2 command:",e),this.displayApError({statusCode:400,statusCodeDescription:"Unknown Command",message:`V2 command '${e}' is not supported`,widgetUUID:this.widgetProperties.uuid})}})}executeRestRequest(e,t){return ea(this,null,function*(){try{let i;switch(e){case"POST":i=yield kr(this.makeHttpRequest(this.http.post(t.path,void 0)));break;case"PUT":i=yield kr(this.makeHttpRequest(this.http.put(t.path,t.value==null?void 0:t.value)));break;case"DELETE":i=yield kr(this.makeHttpRequest(this.http.delete(t.path)));break;default:console.error("[Autopilot Widget] Unsupported REST method:",e)}return i&&i.status==="success"?i:(console.warn("[Autopilot Widget] V2 Command completed with non-success status:",JSON.stringify(i)),i||{status:"error",message:"Invalid response format",data:null})}catch(i){return console.error("[Autopilot Widget] REST operation failed:",i),this.displayApError({statusCode:500,statusCodeDescription:"V2 Command Failed",message:`Failed to execute ${e} ${t.path}`,widgetUUID:this.widgetProperties.uuid}),{status:"error",message:i instanceof Error?i.message:"REST operation failed",data:null}}})}performTackOrGybe(e,t){if(this.widgetProperties.config.autopilot.apiVersion==="v2")this.sendV2Command(e,{value:t});else{if(e!=="tack")return;let i=As[t==="port"?"tackToPort":"tackToStarboard"];this.signalkRequestsService.putRequest(i.path,i.value,this.widgetProperties.uuid)}}setAbsoluteTarget(e){this.widgetProperties.config.autopilot.apiVersion==="v2"?this.sendV2Command("target_heading",{value:e,units:"deg"}):console.error("[Autopilot Widget] Absolute target only available in V2 API")}toggleDodge(){this.widgetProperties.config.autopilot.apiVersion==="v2"?this.sendV2Command("dodge"):(console.warn("[Autopilot Widget] Dodge mode only available in V2 API"),this.displayApError({statusCode:400,statusCodeDescription:"V2 API Required",message:"Dodge mode only available in V2 API",widgetUUID:this.widgetProperties.uuid}))}commandReceived(e){e.statusCode!=200&&this.displayApError(e)}confirmAdvanceWaypoint(e){this.startConfirmCmd(e,"Repeat key [Adv Wpt] to confirm")}confirmTack(e){let t="";if(e==="tackToPort")t="Port",this.actionToBeConfirmed=e;else if(e==="tackToStarboard")t="Starboard",this.actionToBeConfirmed=e;else{this.actionToBeConfirmed="";return}let i=`Repeat [Tack ${t}] key to confirm`;this.startConfirmCmd(e,i)}startConfirmCmd(e,t){this.countDownValue=Os.COUNTDOWN_SECONDS,this.actionToBeConfirmed=e,this.countdownOverlayText.set(t),this.countdownOverlayVisibility.set("visible"),this.updateCountDownCounter(t),clearTimeout(this.handleConfirmActionTimeout),this.handleConfirmActionTimeout=setTimeout(()=>{this.countdownOverlayVisibility.set("hidden"),this.countdownOverlayText.set(""),this.actionToBeConfirmed=""},Os.MESSAGE_DISPLAY_DURATION)}clearConfirmCmd(){clearTimeout(this.handleConfirmActionTimeout),clearTimeout(this.handleCountDownCounterTimeout),this.countDownValue=-1,this.countdownOverlayVisibility.set("hidden"),this.countdownOverlayText.set(""),this.actionToBeConfirmed=""}updateCountDownCounter(e){this.countDownValue>0?(clearTimeout(this.handleCountDownCounterTimeout),this.countdownOverlayText.set(e),this.countDownValue-=1,this.handleCountDownCounterTimeout=setTimeout(()=>{this.updateCountDownCounter(e)},1e3)):(this.countDownValue=-1,clearTimeout(this.handleCountDownCounterTimeout))}displayApError(e){if(this.isPersistentError){console.warn("[Autopilot Widget] Skipping temporary error display - persistent error active:",e.statusCodeDescription);return}let t=e.statusCode+" - "+e.statusCodeDescription+".";e.message&&(t=t+"Server Message: "+e.message+"."),this.errorOverlayText.set(t),this.errorOverlayVisibility.set("visible"),clearTimeout(this.handleDisplayErrorTimeout),this.handleDisplayErrorTimeout=setTimeout(()=>{this.isPersistentError||(this.errorOverlayVisibility.set("hidden"),this.errorOverlayText.set(""))},Os.ERROR_DISPLAY_DURATION)}toggleMenu(){this.menuOpen.set(!this.menuOpen())}onMenuItemClick(e){if(e==="cancel"){this.toggleMenu();return}this.buildAndSendCommand(e),this.menuOpen.set(!1)}parseMenuItems(e,t){let i=this.widgetProperties.config.autopilot.apiVersion;return e.map(o=>{if(o.isCancel)return ht(ee({},o),{current:!1,disabled:!1});let s=!1;if(i==="v1")switch(t){case"standby":s=o.action==="auto"||o.action==="wind";break;case"auto":s=o.action==="wind"||o.action==="route";break;case"wind":s=o.action==="auto";break;case"route":s=o.action==="auto";break;default:s=!1}else i==="v2"&&(s=this.widgetProperties.config.autopilot.modes.includes(o.action));return ht(ee({},o),{current:o.action===t,disabled:!s})})}ngOnDestroy(){this.cancelAllHttpRequests(),clearTimeout(this.handleCountDownCounterTimeout),clearTimeout(this.handleConfirmActionTimeout),clearTimeout(this.handleDisplayErrorTimeout),clearTimeout(this.handleMessageTimeout),this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-autopilot"]],features:[me],decls:94,vars:67,consts:[[1,"widget-host",3,"configChange","config","id"],[1,"autopilot-grid-container"],[1,"ap-modes"],["mat-flat-button","",1,"ap-btn","ap-btn-ctrlbar",3,"click","disabled"],[1,"svg-icon-ctrlbar"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-element","svg-modes"],[0,"xml","space","preserve","x","50","y","10.7"],["mat-flat-button","",3,"click","disabled"],[0,"xml","space","preserve","x","50.090435","y","10.743966"],[1,"ap-screen"],[3,"apMode","targetPilotHeading","targetWindAngleHeading","compassHeading","courseXte","appWindAngle","rudderAngle","targetPilotHeadingTrue","headingDirectionTrue"],[1,"ap-screen-overlay"],["viewBox","0 0 100 100","width","100%","height","100%","preserveAspectRatio","xMidYMid meet"],["x","50%","y","25",1,"svg-element-msg",3,"innerHTML"],["x","50%","dy","75",1,"svg-element-msg",2,"font-size","3em",3,"innerHTML"],[1,"ap-screen-overlay","ap-error-text"],[1,"material-icons","ap-error-icon"],["x","50%","y","25",1,"svg-element-msg","svg-element-error-txt",3,"innerHTML"],["mat-flat-button","",1,"ap-btn",3,"click","disabled"],[1,"svg-icon"],["width","100%","height","100%","viewBox","0 0 100 100","preserveAspectRatio","xMidYMid meet",1,"svg-element"],["fill","currentColor","stroke","currentColor",0,"xml","space","preserve","x","49.894032","y","98.734871"],["fill","currentColor","stroke","currentColor","d","M 31.033486,35.785143 68.966514,66.630677 M 31.033486,35.640825 68.966514,4.79529"],["fill","currentColor","stroke","currentColor",0,"xml","space","preserve","x","50.052986","y","98.734871"],["fill","currentColor","stroke","currentColor","d","M 68.966514,35.785143 31.033486,66.630677 M 68.966514,35.640825 31.033486,4.79529"],["fill","currentColor","stroke","currentColor","d","M 15.778367,35.785143 53.711395,66.630677 M 15.778367,35.640825 53.711395,4.79529"],["fill","currentColor","stroke","currentColor","d","M 46.288608,35.785143 84.221633,66.630677 M 46.288608,35.640825 84.221633,4.79529"],["fill","currentColor","stroke","currentColor","d","M 84.221633,35.785143 46.288605,66.630677 M 84.221633,35.640825 46.288605,4.79529"],["fill","currentColor","stroke","currentColor","d","M 53.711392,35.785143 15.778367,66.630677 M 53.711392,35.640825 15.778367,4.79529"],["transform","scale(-1,1) translate(-100,0)"],["fill","currentColor","d","M 90.5,22.5 67.5,45 96,53 Z",2,"stroke-width","8","stroke-linecap","round","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["fill","none","stroke","currentColor","d",`M 76,31
11
- A 36 38 0 0 0 24,33`,2,"stroke-width","8.45947","stroke-linecap","square","stroke-linejoin","miter","stroke-miterlimit","0"],["fill","currentColor","cx","14.5","cy","45.25","r","12"],["fill","none","stroke","currentColor","d",`M 76,31
12
- A 36 38 0 0 0 24,33`,2,"stroke-width","8.45947","stroke-linecap","square","stroke-linejoin","miter","stroke-miterlimit","0"],[1,"embed-widget",3,"widgetProperties"],["mat-flat-button","",1,"ap-btn",3,"disabled","ap-btn-active"],["viewBox","0 0 100 100","preserveAspectRatio","xMidYMid meet",1,"svg-element","svg-route"],["fill","currentColor","stroke","currentColor",0,"xml","space","preserve","x","49.961578","y","86.799866"],["fill","currentColor","d","M 12.090795,4 V 63.58544 L 71.676235,33.792718 Z",2,"stroke","none"],["fill","currentColor","stroke","currentColor","d","M 75.95674,4 V 63.58544",2,"fill","none","stroke-width","9.90493","stroke-linecap","butt","stroke-linejoin","miter","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],["tabindex","0","role","button","aria-label","Close menu",1,"svg-menu-overlay"],[1,"widgetOverlay"],[0,"xml","space","preserve","x","49.961578","y","86.799866"],["d","M 4.6584699,36.552789 29.229283,58.159051 M 4.6584699,36.451699 29.229283,14.845436",2,"stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],["d","M 95.34153,36.552789 70.770717,58.159051 M 95.34153,36.451699 70.770717,14.845436",2,"stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xml","space","preserve","x","50.167503","y","61.058273",2,"font-size","68.6095px"],["tabindex","0","role","button","aria-label","Close menu",1,"svg-menu-overlay",3,"click","keyup.enter","keyup.space"],["tabindex","0","role","presentation","aria-label","Menu",1,"svg-menu",3,"click","keyup.enter","keyup.space"],["x","0","y","0","width","240",1,"svg-menu-box"],["tabindex","0","role","button",2,"cursor","pointer"],["tabindex","0","role","button",2,"cursor","pointer",3,"click","keyup.enter","keyup.space"],["x","0","width","240"],["x","120"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),g(1,"div",1)(2,"div",2)(3,"button",3),W("click",function(){return i.toggleMenu()}),g(4,"mat-icon",4),pe(),g(5,"svg",5)(6,"text",6),w(7),zi(8,"titlecase"),C()()()(),mt(),g(9,"button",7),W("click",function(){return i.buildAndSendCommand("standby")}),g(10,"mat-icon",4),pe(),g(11,"svg",5)(12,"text",8),w(13,"Disengage"),C()()()()(),mt(),g(14,"div",9),Y(15,"app-svg-autopilot",10),g(16,"div",11),pe(),g(17,"svg",12),Y(18,"text",13)(19,"text",14),C()(),mt(),g(20,"div",15)(21,"span",16),w(22,"warning"),C(),pe(),g(23,"svg",12),Y(24,"text",17),C()()(),mt(),g(25,"div")(26,"button",18),W("click",function(){return i.buildAndSendCommand("-1")}),g(27,"mat-icon",19),pe(),g(28,"svg",20)(29,"text",21),w(30,"-1\xB0"),C(),Y(31,"path",22),C()()()(),mt(),g(32,"div")(33,"button",18),W("click",function(){return i.buildAndSendCommand("+1")}),g(34,"mat-icon",19),pe(),g(35,"svg",20)(36,"text",23),w(37,"+1\xB0"),C(),Y(38,"path",24),C()()()(),mt(),g(39,"div")(40,"button",18),W("click",function(){return i.buildAndSendCommand("-10")}),g(41,"mat-icon",19),pe(),g(42,"svg",20)(43,"text",21),w(44,"-10\xB0"),C(),Y(45,"path",25)(46,"path",26),C()()()(),mt(),g(47,"div")(48,"button",18),W("click",function(){return i.buildAndSendCommand("+10")}),g(49,"mat-icon",19),pe(),g(50,"svg",20)(51,"text",23),w(52,"+10\xB0"),C(),Y(53,"path",27)(54,"path",28),C()()()(),mt(),g(55,"div")(56,"button",18),W("click",function(){return i.buildAndSendCommand("tackToPort")}),g(57,"mat-icon",19),pe(),g(58,"svg",20)(59,"text",21),w(60,"Tack"),C(),g(61,"g",29),Y(62,"path",30)(63,"path",31)(64,"circle",32),C()()()()(),mt(),g(65,"div")(66,"button",18),W("click",function(){return i.buildAndSendCommand("tackToStarboard")}),g(67,"mat-icon",19),pe(),g(68,"svg",20)(69,"text",21),w(70,"Tack"),C(),Y(71,"path",30)(72,"path",33)(73,"circle",32),C()()()(),mt(),g(74,"div"),Y(75,"widget-position",34),C(),g(76,"div"),Y(77,"widget-datetime",34),C(),g(78,"div"),Y(79,"widget-numeric",34),C(),g(80,"div"),Y(81,"widget-numeric",34),C(),g(82,"div"),ze(83,hp,9,11,"button",35),C(),g(84,"div")(85,"button",18),W("click",function(){return i.buildAndSendCommand("route")}),g(86,"mat-icon",19),pe(),g(87,"svg",36)(88,"text",37),w(89,"Adv Wpt"),C(),Y(90,"path",38)(91,"path",39),C()()()()(),ze(92,mp,6,2,"div",40),ze(93,pp,1,0,"div",41),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),_e("display",i.apGrid()),x(2),G("disabled",i.apState()==="off-line"||i.apMode()==="off-line"),x(4),_t("Mode ",Ir(8,65,i.apMode())," \xA0\u22EE"),x(2),Mn(i.apEngaged()?"ap-btn ap-btn-ctrlbar ap-btn-disengage":"ap-btn ap-btn-ctrlbar ap-btn-engage"),G("disabled",i.apEngageBtnDisabled()),x(6),G("apMode",i.apMode())("targetPilotHeading",i.autopilotTargetHeading)("targetWindAngleHeading",i.autopilotTargetWindHeading)("compassHeading",i.heading)("courseXte",i.crossTrackError)("appWindAngle",i.windAngleApparent)("rudderAngle",i.rudder)("targetPilotHeadingTrue",i.widgetProperties.config.autopilot.courseDirectionTrue)("headingDirectionTrue",i.widgetProperties.config.autopilot.headingDirectionTrue),x(),_e("visibility",i.countdownOverlayVisibility()),x(2),G("innerHTML",i.countdownOverlayText(),Er),x(),_e("visibility",i.countDownValue>=0?"visible":"hidden"),G("innerHTML",i.countDownValue+1,Er),x(),_e("visibility",i.errorOverlayVisibility()),x(4),G("innerHTML",i.errorOverlayText(),Er),x(),_e("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(6),_e("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(6),_e("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(7),_e("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(7),_e("display",i.tackBtnVisibility()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(9),_e("display",i.tackBtnVisibility()?"block":"none"),x(),G("disabled",i.apBtnDisabled()),x(8),_e("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),x(),G("widgetProperties",i.nextWptProperties()),x(),_e("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),x(),G("widgetProperties",i.etaProperties()),x(),_e("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),x(),G("widgetProperties",i.dtwProperties()),x(),_e("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),x(),G("widgetProperties",i.ttwProperties()),x(),_e("display",i.routeBtnVisibility()?"block":"none"),x(),Fe(i.widgetProperties.config.autopilot.apiVersion==="v2"?83:-1),x(),_e("display",i.routeBtnVisibility()?"block":"none"),x(),G("disabled",i.apBtnDisabled()||i.dodgeModeActive()),x(7),Fe(i.menuOpen()?92:-1),x(),Fe(i.dashboard.isDashboardStatic()?-1:93))},dependencies:[We,Bc,Lt,Pt,Ct,Ut,Oa,ho,so,lo,ld],styles:['[_nghost-%COMP%]{display:block;height:100%;width:100%}.widget-host[_ngcontent-%COMP%]{display:block;height:100%;width:100%}.autopilot-grid-container[_ngcontent-%COMP%]{box-sizing:border-box;width:100%;height:100%;display:grid;gap:.5rem .5rem;padding:10px;grid-template:"modes modes" minmax(50px,1fr) "screen screen" minmax(50px,auto)/1fr 1fr;grid-template-rows:.15fr 1fr;grid-auto-rows:minmax(50px,2fr)}.ap-modes[_ngcontent-%COMP%]{grid-area:modes;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(50px,1fr);gap:.5rem .5rem}.ap-screen[_ngcontent-%COMP%]{position:relative;grid-area:screen;width:100%;height:100%;max-height:200px;align-content:center}.ap-screen-overlay[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:50;vertical-align:middle;text-align:center;background-color:var(--mat-sys-background)}.ap-error-icon[_ngcontent-%COMP%]{padding-top:15px}.ap-error-text[_ngcontent-%COMP%]{color:var(--mat-sys-error-container)}.ap-btn[_ngcontent-%COMP%]{width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-color: var(--kip-blue-dim-color);--mat-button-filled-label-text-color: var(--kip-contrast-color);--mat-button-filled-container-height: 100%}.ap-btn-ctrlbar[_ngcontent-%COMP%]{padding:4px}.ap-btn-modes[_ngcontent-%COMP%]{--mat-button-filled-horizontal-padding: 0rem}.ap-btn-notifications[_ngcontent-%COMP%]{--mat-button-filled-container-color: var(--kip-yellow-dim-color)}.ap-btn-engage[_ngcontent-%COMP%]{--mat-button-filled-horizontal-padding: 0rem;--mat-button-filled-container-color: var(--kip-port-color)}.ap-btn-disengage[_ngcontent-%COMP%]{--mat-button-filled-horizontal-padding: 0rem;--mat-button-filled-container-color: var(--kip-starboard-color)}.svg-icon-ctrlbar[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:.5rem}.svg-element[_ngcontent-%COMP%]{width:100%;height:100%;padding:0}.svg-element[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:25px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.svg-element[_ngcontent-%COMP%] path[_ngcontent-%COMP%]{stroke-width:7.59058;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none}.svg-element-msg[_ngcontent-%COMP%]{font-family:Roboto;font-size:12px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:var(--kip-contrast-color);fill-opacity:1;stroke:none}.svg-element-note[_ngcontent-%COMP%]{font-family:Roboto;font-size:.5em;font-weight:400;text-align:center;text-anchor:middle;font-style:italic;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:var(--kip-contrast-dim-color);fill-opacity:1;stroke:none}.svg-element-error-txt[_ngcontent-%COMP%]{fill:var(--mat-sys-error-container)}.svg-element-notifications[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.svg-element-clear-notifications[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);fill-opacity:1;stroke:none}.svg-modes[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:12px}.svg-route[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:25px}.embed-widget[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-surface-container-highest);border-radius:12px}@media (max-width: 600px){.autopilot-grid-container[_ngcontent-%COMP%]{padding:.5rem;gap:.25rem}.autopilot-btn[_ngcontent-%COMP%]{font-size:.95rem;padding:.4em .5em}}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.svg-menu-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;background:#000c;z-index:19;display:flex;align-items:center;justify-content:center}.svg-menu-box[_ngcontent-%COMP%]{fill:var(--mat-sys-surface);stroke:none;border-radius:12px}.svg-menu[_ngcontent-%COMP%]{max-width:80%;background:transparent;border-radius:12px;box-shadow:0 4px 24px #00000026;z-index:20;display:block;font-family:Roboto;font-size:1.1rem;font-weight:700;text-anchor:middle;text-align:center;alignment-baseline:middle}g[_ngcontent-%COMP%]:hover rect[_ngcontent-%COMP%]{fill-opacity:.7}g[_ngcontent-%COMP%]:hover text[_ngcontent-%COMP%]{fill-opacity:.7}g[_ngcontent-%COMP%]:active rect[_ngcontent-%COMP%]{fill-opacity:.4}g[_ngcontent-%COMP%]:active text[_ngcontent-%COMP%]{fill-opacity:.4}.svg-menu-item[_ngcontent-%COMP%]{fill:var(--kip-blue-color);stroke:var(--mat-sys-outline-variant)}.svg-menu-item-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);stroke:none}.svg-menu-item-current[_ngcontent-%COMP%]{fill:var(--kip-blue-color);pointer-events:none;stroke:var(--mat-sys-outline-variant)}.svg-menu-item-current-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);stroke:none;pointer-events:none}.svg-menu-item-disabled[_ngcontent-%COMP%]{fill:var(--kip-blue-color);pointer-events:none;stroke:var(--mat-sys-outline-variant)}.svg-menu-item-disabled-text[_ngcontent-%COMP%]{fill:var(--mat-sys-surface-tint);stroke:none;pointer-events:none}.svg-menu-item-cancel[_ngcontent-%COMP%]{fill:var(--mat-sys-outline);stroke:var(--mat-sys-outline-variant)}.svg-menu-item-cancel-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);stroke:none}.counterText[_ngcontent-%COMP%]{font-weight:700;font-size:7em;margin-top:0;margin-bottom:0}']})}return a})();var Uc={modes:{point(a,n){return uo(a,n,{intersect:!0})},nearest(a,n,e){return vp(a,n,e)},x(a,n,e){return uo(a,n,{intersect:e.intersect,axis:"x"})},y(a,n,e){return uo(a,n,{intersect:e.intersect,axis:"y"})}}};function Bs(a,n,e){return(Uc.modes[e.mode]||Uc.modes.nearest)(a,n,e)}function fp(a,n,e){return e!=="x"&&e!=="y"?a.inRange(n.x,n.y,"x",!0)||a.inRange(n.x,n.y,"y",!0):a.inRange(n.x,n.y,e,!0)}function gp(a,n,e){return e==="x"?{x:a.x,y:n.y}:e==="y"?{x:n.x,y:a.y}:n}function uo(a,n,e){return a.filter(t=>e.intersect?t.inRange(n.x,n.y):fp(t,n,e.axis))}function vp(a,n,e){let t=Number.POSITIVE_INFINITY;return uo(a,n,e).reduce((i,r)=>{let o=r.getCenterPoint(),s=gp(n,o,e.axis),d=er(n,s);return d<t?(i=[r],t=d):d===t&&i.push(r),i},[]).sort((i,r)=>i._index-r._index).slice(0,1)}function Bn(a,n,e){let t=Math.cos(e),i=Math.sin(e),r=n.x,o=n.y;return{x:r+t*(a.x-r)-i*(a.y-o),y:o+i*(a.x-r)+t*(a.y-o)}}var yp=(a,n)=>n>a||a.length>n.length&&a.slice(0,n.length)===n,Ln=.001,po=(a,n,e)=>Math.min(e,Math.max(n,a)),dh=(a,n)=>a.value>=a.start-n&&a.value<=a.end+n;function bp(a,n,e){for(let t of Object.keys(a))a[t]=po(a[t],n,e);return a}function _p(a,n,e,t){return!a||!n||e<=0?!1:Math.pow(a.x-n.x,2)+Math.pow(a.y-n.y,2)<=Math.pow(e+t,2)}function ch(a,{x:n,y:e,x2:t,y2:i},r,{borderWidth:o,hitTolerance:s}){let d=(o+s)/2,p=a.x>=n-d-Ln&&a.x<=t+d+Ln,l=a.y>=e-d-Ln&&a.y<=i+d+Ln;return r==="x"?p:(r==="y"||p)&&l}function hh(a,{rect:n,center:e},t,{rotation:i,borderWidth:r,hitTolerance:o}){let s=Bn(a,e,Pi(-i));return ch(s,n,t,{borderWidth:r,hitTolerance:o})}function Hn(a,n){let{centerX:e,centerY:t}=a.getProps(["centerX","centerY"],n);return{x:e,y:t}}function wp(a,n,e,t=!0){let i=e.split("."),r=0;for(let o of n.split(".")){let s=i[r++];if(parseInt(o,10)<parseInt(s,10))break;if(yp(s,o)){if(t)throw new Error(`${a} v${e} is not supported. v${n} or newer is required.`);return!1}}return!0}var uh=a=>typeof a=="string"&&a.endsWith("%"),mh=a=>parseFloat(a)/100,ph=a=>po(mh(a),0,1),nr=(a,n)=>({x:a,y:n,x2:a,y2:n,width:0,height:0}),Sp={box:a=>nr(a.centerX,a.centerY),doughnutLabel:a=>nr(a.centerX,a.centerY),ellipse:a=>({centerX:a.centerX,centerY:a.centerX,radius:0,width:0,height:0}),label:a=>nr(a.centerX,a.centerY),line:a=>nr(a.x,a.y),point:a=>({centerX:a.centerX,centerY:a.centerY,radius:0,width:0,height:0}),polygon:a=>nr(a.centerX,a.centerY)};function Hs(a,n){return n==="start"?0:n==="end"?a:uh(n)?ph(n)*a:a/2}function _n(a,n,e=!0){return typeof n=="number"?n:uh(n)?(e?ph(n):mh(n))*a:a}function Cp(a,n){let{x:e,width:t}=a,i=n.textAlign;return i==="center"?e+t/2:i==="end"||i==="right"?e+t:e}function fh(a,n,{borderWidth:e,position:t,xAdjust:i,yAdjust:r},o){let s=un(o),d=n.width+(s?o.width:0)+e,p=n.height+(s?o.height:0)+e,l=Us(t),c=Gc(a.x,d,i,l.x),m=Gc(a.y,p,r,l.y);return{x:c,y:m,x2:c+d,y2:m+p,width:d,height:p,centerX:c+d/2,centerY:m+p/2}}function Us(a,n="center"){return un(a)?{x:On(a.x,n),y:On(a.y,n)}:(a=On(a,n),{x:a,y:a})}var gh=(a,n)=>a&&a.autoFit&&n<1;function vh(a,n){let e=a.font,t=hn(e)?e:[e];return gh(a,n)?t.map(function(i){let r=tr(i);return r.size=Math.floor(i.size*n),r.lineHeight=i.lineHeight,tr(r)}):t.map(i=>tr(i))}function yh(a){return a&&(Di(a.xValue)||Di(a.yValue))}function Gc(a,n,e=0,t){return a-Hs(n,t)+e}function Va(a,n,e){let t=e.init;if(t){if(t===!0)return _h(n,e)}else return;return kp(a,n,e)}function bh(a,n,e){let t=!1;return n.forEach(i=>{mn(a[i])?(t=!0,e[i]=a[i]):Di(e[i])&&delete e[i]}),t}function _h(a,n){let e=n.type||"line";return Sp[e](a)}function kp(a,n,e){let t=Ja(e.init,[{chart:a,properties:n,options:e}]);if(t===!0)return _h(n,e);if(un(t))return t}var Is=new Map,xp=a=>isNaN(a)||a<=0,Tp=a=>a.reduce(function(n,e){return n+=e.string,n},"");function fo(a){if(a&&typeof a=="object"){let n=a.toString();return n==="[object HTMLImageElement]"||n==="[object HTMLCanvasElement]"}}function go(a,{x:n,y:e},t){t&&(a.translate(n,e),a.rotate(Pi(t)),a.translate(-n,-e))}function Yi(a,n){if(n&&n.borderWidth)return a.lineCap=n.borderCapStyle||"butt",a.setLineDash(n.borderDash),a.lineDashOffset=n.borderDashOffset,a.lineJoin=n.borderJoinStyle||"miter",a.lineWidth=n.borderWidth,a.strokeStyle=n.borderColor,!0}function za(a,n){a.shadowColor=n.backgroundShadowColor,a.shadowBlur=n.shadowBlur,a.shadowOffsetX=n.shadowOffsetX,a.shadowOffsetY=n.shadowOffsetY}function vo(a,n){let e=n.content;if(fo(e))return{width:_n(e.width,n.width),height:_n(e.height,n.height)};let t=vh(n),i=n.textStrokeWidth,r=hn(e)?e:[e],o=r.join()+Tp(t)+i+(a._measureText?"-spriting":"");return Is.has(o)||Is.set(o,Pp(a,r,t,i)),Is.get(o)}function wh(a,n,e){let{x:t,y:i,width:r,height:o}=n;a.save(),za(a,e);let s=Yi(a,e);a.fillStyle=e.backgroundColor,a.beginPath(),Ss(a,{x:t,y:i,w:r,h:o,radius:bp(Cs(e.borderRadius),0,Math.min(r,o)/2)}),a.closePath(),a.fill(),s&&(a.shadowColor=e.borderShadowColor,a.stroke()),a.restore()}function Sh(a,n,e,t){let i=e.content;if(fo(i)){a.save(),a.globalAlpha=Ip(e.opacity,i.style.opacity),a.drawImage(i,n.x,n.y,n.width,n.height),a.restore();return}let r=hn(i)?i:[i],o=vh(e,t),s=e.color,d=hn(s)?s:[s],p=Cp(n,e),l=n.y+e.textStrokeWidth/2;a.save(),a.textBaseline="middle",a.textAlign=e.textAlign,Ep(a,e)&&Ap(a,{x:p,y:l},r,o),Op(a,{x:p,y:l},r,{fonts:o,colors:d}),a.restore()}function Ep(a,n){if(n.textStrokeWidth>0)return a.lineJoin="round",a.miterLimit=2,a.lineWidth=n.textStrokeWidth,a.strokeStyle=n.textStrokeColor,!0}function Mp(a,n,e,t){let{radius:i,options:r}=n,o=r.pointStyle,s=r.rotation,d=(s||0)*$r;if(fo(o)){a.save(),a.translate(e,t),a.rotate(d),a.drawImage(o,-o.width/2,-o.height/2,o.width,o.height),a.restore();return}xp(i)||Dp(a,{x:e,y:t,radius:i,rotation:s,style:o,rad:d})}function Dp(a,{x:n,y:e,radius:t,rotation:i,style:r,rad:o}){let s,d,p,l;switch(a.beginPath(),r){default:a.arc(n,e,t,0,jr),a.closePath();break;case"triangle":a.moveTo(n+Math.sin(o)*t,e-Math.cos(o)*t),o+=Yr,a.lineTo(n+Math.sin(o)*t,e-Math.cos(o)*t),o+=Yr,a.lineTo(n+Math.sin(o)*t,e-Math.cos(o)*t),a.closePath();break;case"rectRounded":l=t*.516,p=t-l,s=Math.cos(o+In)*p,d=Math.sin(o+In)*p,a.arc(n-s,e-d,l,o-hi,o-ya),a.arc(n+d,e-s,l,o-ya,o),a.arc(n+s,e+d,l,o,o+ya),a.arc(n-d,e+s,l,o+ya,o+hi),a.closePath();break;case"rect":if(!i){p=Math.SQRT1_2*t,a.rect(n-p,e-p,2*p,2*p);break}o+=In;case"rectRot":s=Math.cos(o)*t,d=Math.sin(o)*t,a.moveTo(n-s,e-d),a.lineTo(n+d,e-s),a.lineTo(n+s,e+d),a.lineTo(n-d,e+s),a.closePath();break;case"crossRot":o+=In;case"cross":s=Math.cos(o)*t,d=Math.sin(o)*t,a.moveTo(n-s,e-d),a.lineTo(n+s,e+d),a.moveTo(n+d,e-s),a.lineTo(n-d,e+s);break;case"star":s=Math.cos(o)*t,d=Math.sin(o)*t,a.moveTo(n-s,e-d),a.lineTo(n+s,e+d),a.moveTo(n+d,e-s),a.lineTo(n-d,e+s),o+=In,s=Math.cos(o)*t,d=Math.sin(o)*t,a.moveTo(n-s,e-d),a.lineTo(n+s,e+d),a.moveTo(n+d,e-s),a.lineTo(n-d,e+s);break;case"line":s=Math.cos(o)*t,d=Math.sin(o)*t,a.moveTo(n-s,e-d),a.lineTo(n+s,e+d);break;case"dash":a.moveTo(n,e),a.lineTo(n+Math.cos(o)*t,e+Math.sin(o)*t);break}a.fill()}function Pp(a,n,e,t){a.save();let i=n.length,r=0,o=t;for(let s=0;s<i;s++){let d=e[Math.min(s,e.length-1)];a.font=d.string;let p=n[s];r=Math.max(r,a.measureText(p).width+t),o+=d.lineHeight}return a.restore(),{width:r,height:o}}function Ap(a,{x:n,y:e},t,i){a.beginPath();let r=0;t.forEach(function(o,s){let d=i[Math.min(s,i.length-1)],p=d.lineHeight;a.font=d.string,a.strokeText(o,n,e+p/2+r),r+=p}),a.stroke()}function Op(a,{x:n,y:e},t,{fonts:i,colors:r}){let o=0;t.forEach(function(s,d){let p=r[Math.min(d,r.length-1)],l=i[Math.min(d,i.length-1)],c=l.lineHeight;a.beginPath(),a.font=l.string,a.fillStyle=p,a.fillText(s,n,e+c/2+o),o+=c,a.fill()})}function Ip(a,n){let e=Xr(a)?a:n;return Xr(e)?po(e,0,1):1}var Ch=["left","bottom","top","right"];function Rp(a,n){let{pointX:e,pointY:t,options:i}=n,r=i.callout,o=r&&r.display&&zp(n,r);if(!o||Bp(n,r,o))return;if(a.save(),a.beginPath(),!Yi(a,r))return a.restore();let{separatorStart:d,separatorEnd:p}=Np(n,o),{sideStart:l,sideEnd:c}=Lp(n,o,d);(r.margin>0||i.borderWidth===0)&&(a.moveTo(d.x,d.y),a.lineTo(p.x,p.y)),a.moveTo(l.x,l.y),a.lineTo(c.x,c.y);let m=Bn({x:e,y:t},n.getCenterPoint(),Pi(-n.rotation));a.lineTo(m.x,m.y),a.stroke(),a.restore()}function Np(a,n){let{x:e,y:t,x2:i,y2:r}=a,o=Wp(a,n),s,d;return n==="left"||n==="right"?(s={x:e+o,y:t},d={x:s.x,y:r}):(s={x:e,y:t+o},d={x:i,y:s.y}),{separatorStart:s,separatorEnd:d}}function Wp(a,n){let{width:e,height:t,options:i}=a,r=i.callout.margin+i.borderWidth/2;return n==="right"?e+r:n==="bottom"?t+r:-r}function Lp(a,n,e){let{y:t,width:i,height:r,options:o}=a,s=o.callout.start,d=Vp(n,o.callout),p,l;return n==="left"||n==="right"?(p={x:e.x,y:t+_n(r,s)},l={x:p.x+d,y:p.y}):(p={x:e.x+_n(i,s),y:e.y},l={x:p.x,y:p.y+d}),{sideStart:p,sideEnd:l}}function Vp(a,n){let e=n.side;return a==="left"||a==="top"?-e:e}function zp(a,n){let e=n.position;return Ch.includes(e)?e:Fp(a,n)}function Fp(a,n){let{x:e,y:t,x2:i,y2:r,width:o,height:s,pointX:d,pointY:p,centerX:l,centerY:c,rotation:m}=a,v={x:l,y:c},b=n.start,k=_n(o,b),M=_n(s,b),F=[e,e+k,e+k,i],j=[t+M,r,t,r],te=[];for(let ye=0;ye<4;ye++){let Le=Bn({x:F[ye],y:j[ye]},v,Pi(m));te.push({position:Ch[ye],distance:er(Le,{x:d,y:p})})}return te.sort((ye,Le)=>ye.distance-Le.distance)[0].position}function Bp(a,n,e){let{pointX:t,pointY:i}=a,r=n.margin,o=t,s=i;return e==="left"?o+=r:e==="right"?o-=r:e==="top"?s+=r:e==="bottom"&&(s-=r),a.inRange(o,s)}var qc={xScaleID:{min:"xMin",max:"xMax",start:"left",end:"right",startProp:"x",endProp:"x2"},yScaleID:{min:"yMin",max:"yMax",start:"bottom",end:"top",startProp:"y",endProp:"y2"}};function Ra(a,n,e){return n=typeof n=="number"?n:a.parse(n),qr(n)?a.getPixelForValue(n):e}function Vn(a,n,e){let t=n[e];if(t||e==="scaleID")return t;let i=e.charAt(0),r=Object.values(a).filter(o=>o.axis&&o.axis===i);return r.length?r[0].id:i}function kh(a,n){if(a){let e=a.options.reverse,t=Ra(a,n.min,e?n.end:n.start),i=Ra(a,n.max,e?n.start:n.end);return{start:t,end:i}}}function xh(a,n){let{chartArea:e,scales:t}=a,i=t[Vn(t,n,"xScaleID")],r=t[Vn(t,n,"yScaleID")],o=e.width/2,s=e.height/2;return i&&(o=Ra(i,n.xValue,i.left+i.width/2)),r&&(s=Ra(r,n.yValue,r.top+r.height/2)),{x:o,y:s}}function Gs(a,n){let e=a.scales,t=e[Vn(e,n,"xScaleID")],i=e[Vn(e,n,"yScaleID")];if(!t&&!i)return{};let{left:r,right:o}=t||a.chartArea,{top:s,bottom:d}=i||a.chartArea,p=jc(t,{min:n.xMin,max:n.xMax,start:r,end:o});r=p.start,o=p.end;let l=jc(i,{min:n.yMin,max:n.yMax,start:d,end:s});return s=l.start,d=l.end,{x:r,y:s,x2:o,y2:d,width:o-r,height:d-s,centerX:r+(o-r)/2,centerY:s+(d-s)/2}}function Th(a,n){if(!yh(n)){let e=Gs(a,n),t=n.radius;(!t||isNaN(t))&&(t=Math.min(e.width,e.height)/2,n.radius=t);let i=t*2,r=e.centerX+n.xAdjust,o=e.centerY+n.yAdjust;return{x:r-t,y:o-t,x2:r+t,y2:o+t,centerX:r,centerY:o,width:i,height:i,radius:t}}return Up(a,n)}function Hp(a,n){let{scales:e,chartArea:t}=a,i=e[n.scaleID],r={x:t.left,y:t.top,x2:t.right,y2:t.bottom};return i?Gp(i,r,n):qp(e,r,n),r}function Eh(a,n){let e=Gs(a,n);return e.initProperties=Va(a,e,n),e.elements=[{type:"label",optionScope:"label",properties:Yp(a,e,n),initProperties:e.initProperties}],e}function Up(a,n){let e=xh(a,n),t=n.radius*2;return{x:e.x-n.radius+n.xAdjust,y:e.y-n.radius+n.yAdjust,x2:e.x+n.radius+n.xAdjust,y2:e.y+n.radius+n.yAdjust,centerX:e.x+n.xAdjust,centerY:e.y+n.yAdjust,radius:n.radius,width:t,height:t}}function jc(a,n){let e=kh(a,n)||n;return{start:Math.min(e.start,e.end),end:Math.max(e.start,e.end)}}function Gp(a,n,e){let t=Ra(a,e.value,NaN),i=Ra(a,e.endValue,t);a.isHorizontal()?(n.x=t,n.x2=i):(n.y=t,n.y2=i)}function qp(a,n,e){for(let t of Object.keys(qc)){let i=a[Vn(a,e,t)];if(i){let{min:r,max:o,start:s,end:d,startProp:p,endProp:l}=qc[t],c=kh(i,{min:e[r],max:e[o],start:i[s],end:i[d]});n[p]=c.start,n[l]=c.end}}}function jp({properties:a,options:n},e,t,i){let{x:r,x2:o,width:s}=a;return Mh({start:r,end:o,size:s,borderWidth:n.borderWidth},{position:t.x,padding:{start:i.left,end:i.right},adjust:n.label.xAdjust,size:e.width})}function $p({properties:a,options:n},e,t,i){let{y:r,y2:o,height:s}=a;return Mh({start:r,end:o,size:s,borderWidth:n.borderWidth},{position:t.y,padding:{start:i.top,end:i.bottom},adjust:n.label.yAdjust,size:e.height})}function Mh(a,n){let{start:e,end:t,borderWidth:i}=a,{position:r,padding:{start:o,end:s},adjust:d}=n,p=t-i-e-o-s-n.size;return e+i/2+d+Hs(p,r)}function Yp(a,n,e){let t=e.label;t.backgroundColor="transparent",t.callout.display=!1;let i=Us(t.position),r=ba(t.padding),o=vo(a.ctx,t),s=jp({properties:n,options:e},o,i,r),d=$p({properties:n,options:e},o,i,r),p=o.width+r.width,l=o.height+r.height;return{x:s,y:d,x2:s+p,y2:d+l,width:p,height:l,centerX:s+p/2,centerY:d+l/2,rotation:t.rotation}}var Rs=["enter","leave"],qs=Rs.concat("click");function Xp(a,n,e){n.listened=bh(e,qs,n.listeners),n.moveListened=!1,Rs.forEach(t=>{mn(e[t])&&(n.moveListened=!0)}),(!n.listened||!n.moveListened)&&n.annotations.forEach(t=>{!n.listened&&mn(t.click)&&(n.listened=!0),n.moveListened||Rs.forEach(i=>{mn(t[i])&&(n.listened=!0,n.moveListened=!0)})})}function Kp(a,n,e){if(a.listened)switch(n.type){case"mousemove":case"mouseout":return Qp(a,n,e);case"click":return Zp(a,n,e)}}function Qp(a,n,e){if(!a.moveListened)return;let t;n.type==="mousemove"?t=Bs(a.visibleElements,n,e.interaction):t=[];let i=a.hovered;a.hovered=t;let r={state:a,event:n},o=$c(r,"leave",i,t);return $c(r,"enter",t,i)||o}function $c({state:a,event:n},e,t,i){let r;for(let o of t)i.indexOf(o)<0&&(r=Dh(o.options[e]||a.listeners[e],o,n)||r);return r}function Zp(a,n,e){let t=a.listeners,i=Bs(a.visibleElements,n,e.interaction),r;for(let o of i)r=Dh(o.options.click||t.click,o,n)||r;return r}function Dh(a,n,e){return Ja(a,[n.$context,e])===!0}var mo=["afterDraw","beforeDraw"];function Jp(a,n,e){let t=n.visibleElements;n.hooked=bh(e,mo,n.hooks),n.hooked||t.forEach(i=>{n.hooked||mo.forEach(r=>{mn(i.options[r])&&(n.hooked=!0)})})}function Yc(a,n,e){if(a.hooked){let t=n.options[e]||a.hooks[e];return Ja(t,[n.$context])}}function ef(a,n,e){let t=of(a.scales,n,e),i=Xc(n,t,"min","suggestedMin");i=Xc(n,t,"max","suggestedMax")||i,i&&mn(n.handleTickRangeOptions)&&n.handleTickRangeOptions()}function tf(a,n){for(let e of a)af(e,n)}function Xc(a,n,e,t){if(qr(n[e])&&!nf(a.options,e,t)){let i=a[e]!==n[e];return a[e]=n[e],i}}function nf(a,n,e){return Di(a[n])||Di(a[e])}function af(a,n){for(let e of["scaleID","xScaleID","yScaleID"]){let t=Vn(n,a,e);t&&!n[t]&&rf(a,e)&&console.warn(`No scale found with id '${t}' for annotation '${a.id}'`)}}function rf(a,n){if(n==="scaleID")return!0;let e=n.charAt(0);for(let t of["Min","Max","Value"])if(Di(a[e+t]))return!0;return!1}function of(a,n,e){let t=n.axis,i=n.id,r=t+"ScaleID",o={min:On(n.min,Number.NEGATIVE_INFINITY),max:On(n.max,Number.POSITIVE_INFINITY)};for(let s of e)s.scaleID===i?Kc(s,n,["value","endValue"],o):Vn(a,s,r)===i&&Kc(s,n,[t+"Min",t+"Max",t+"Value"],o);return o}function Kc(a,n,e,t){for(let i of e){let r=a[i];if(Di(r)){let o=n.parse(r);t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}}}var wn=class extends pn{inRange(n,e,t,i){let{x:r,y:o}=Bn({x:n,y:e},this.getCenterPoint(i),Pi(-this.options.rotation));return ch({x:r,y:o},this.getProps(["x","y","x2","y2"],i),t,this.options)}getCenterPoint(n){return Hn(this,n)}draw(n){n.save(),go(n,this.getCenterPoint(),this.options.rotation),wh(n,this,this.options),n.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(n,e){return Eh(n,e)}};wn.id="boxAnnotation";wn.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderRadius:0,borderShadowColor:"transparent",borderWidth:1,display:!0,init:void 0,hitTolerance:0,label:{backgroundColor:"transparent",borderWidth:0,callout:{display:!1},color:"black",content:null,display:!1,drawTime:void 0,font:{family:void 0,lineHeight:void 0,size:void 0,style:void 0,weight:"bold"},height:void 0,hitTolerance:void 0,opacity:void 0,padding:6,position:"center",rotation:void 0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,width:void 0,xAdjust:0,yAdjust:0,z:void 0},rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,xMax:void 0,xMin:void 0,xScaleID:void 0,yMax:void 0,yMin:void 0,yScaleID:void 0,z:0};wn.defaultRoutes={borderColor:"color",backgroundColor:"color"};wn.descriptors={label:{_fallback:!0}};var Na=class extends pn{inRange(n,e,t,i){return hh({x:n,y:e},{rect:this.getProps(["x","y","x2","y2"],i),center:this.getCenterPoint(i)},t,{rotation:this.rotation,borderWidth:0,hitTolerance:this.options.hitTolerance})}getCenterPoint(n){return Hn(this,n)}draw(n){let e=this.options;!e.display||!e.content||(uf(n,this),n.save(),go(n,this.getCenterPoint(),this.rotation),Sh(n,this,e,this._fitRatio),n.restore())}resolveElementProperties(n,e){let t=sf(n,e);if(!t)return{};let{controllerMeta:i,point:r,radius:o}=df(n,e,t),s=vo(n.ctx,e),d=cf(s,o);gh(e,d)&&(s={width:s.width*d,height:s.height*d});let{position:p,xAdjust:l,yAdjust:c}=e,m=fh(r,s,{borderWidth:0,position:p,xAdjust:l,yAdjust:c});return ht(ee(ee({initProperties:Va(n,m,e)},m),i),{rotation:e.rotation,_fitRatio:d})}};Na.id="doughnutLabelAnnotation";Na.defaults={autoFit:!0,autoHide:!0,backgroundColor:"transparent",backgroundShadowColor:"transparent",borderColor:"transparent",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderShadowColor:"transparent",borderWidth:0,color:"black",content:null,display:!0,font:{family:void 0,lineHeight:void 0,size:void 0,style:void 0,weight:void 0},height:void 0,hitTolerance:0,init:void 0,opacity:void 0,position:"center",rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,spacing:1,textAlign:"center",textStrokeColor:void 0,textStrokeWidth:0,width:void 0,xAdjust:0,yAdjust:0};Na.defaultRoutes={};function sf(a,n){return a.getSortedVisibleDatasetMetas().reduce(function(e,t){let i=t.controller;return i instanceof cc&&lf(a,n,t.data)&&(!e||i.innerRadius<e.controller.innerRadius)&&i.options.circumference>=90?t:e},void 0)}function lf(a,n,e){if(!n.autoHide)return!0;for(let t=0;t<e.length;t++)if(!e[t].hidden&&a.getDataVisibility(t))return!0}function df({chartArea:a},n,e){let{left:t,top:i,right:r,bottom:o}=a,{innerRadius:s,offsetX:d,offsetY:p}=e.controller,l=(t+r)/2+d,c=(i+o)/2+p,m={left:Math.max(l-s,t),right:Math.min(l+s,r),top:Math.max(c-s,i),bottom:Math.min(c+s,o)},v={x:(m.left+m.right)/2,y:(m.top+m.bottom)/2},b=n.spacing+n.borderWidth/2,k=s-b,M=v.y>c,F=M?i+b:o-b,j=hf(F,l,c,k);return{controllerMeta:ee({_centerX:l,_centerY:c,_radius:k,_counterclockwise:M},j),point:v,radius:Math.min(s,Math.min(m.right-m.left,m.bottom-m.top)/2)}}function cf({width:a,height:n},e){let t=Math.sqrt(Math.pow(a,2)+Math.pow(n,2));return e*2/t}function hf(a,n,e,t){let i=Math.pow(e-a,2),r=Math.pow(t,2),o=n*-2,s=Math.pow(n,2)+i-r,d=Math.pow(o,2)-4*s;if(d<=0)return{_startAngle:0,_endAngle:jr};let p=(-o-Math.sqrt(d))/2,l=(-o+Math.sqrt(d))/2;return{_startAngle:Kr({x:n,y:e},{x:p,y:a}).angle,_endAngle:Kr({x:n,y:e},{x:l,y:a}).angle}}function uf(a,n){let{_centerX:e,_centerY:t,_radius:i,_startAngle:r,_endAngle:o,_counterclockwise:s,options:d}=n;a.save();let p=Yi(a,d);a.fillStyle=d.backgroundColor,a.beginPath(),a.arc(e,t,i,r,o,s),a.closePath(),a.fill(),p&&a.stroke(),a.restore()}var zn=class extends pn{inRange(n,e,t,i){return hh({x:n,y:e},{rect:this.getProps(["x","y","x2","y2"],i),center:this.getCenterPoint(i)},t,{rotation:this.rotation,borderWidth:this.options.borderWidth,hitTolerance:this.options.hitTolerance})}getCenterPoint(n){return Hn(this,n)}draw(n){let e=this.options,t=!Di(this._visible)||this._visible;!e.display||!e.content||!t||(n.save(),go(n,this.getCenterPoint(),this.rotation),Rp(n,this),wh(n,this,e),Sh(n,mf(this),e),n.restore())}resolveElementProperties(n,e){let t;if(yh(e))t=xh(n,e);else{let{centerX:s,centerY:d}=Gs(n,e);t={x:s,y:d}}let i=ba(e.padding),r=vo(n.ctx,e),o=fh(t,r,e,i);return ht(ee({initProperties:Va(n,o,e),pointX:t.x,pointY:t.y},o),{rotation:e.rotation})}};zn.id="labelAnnotation";zn.defaults={adjustScaleRange:!0,backgroundColor:"transparent",backgroundShadowColor:"transparent",borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderRadius:0,borderShadowColor:"transparent",borderWidth:0,callout:{borderCapStyle:"butt",borderColor:void 0,borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:1,display:!1,margin:5,position:"auto",side:5,start:"50%"},color:"black",content:null,display:!0,font:{family:void 0,lineHeight:void 0,size:void 0,style:void 0,weight:void 0},height:void 0,hitTolerance:0,init:void 0,opacity:void 0,padding:6,position:"center",rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,textAlign:"center",textStrokeColor:void 0,textStrokeWidth:0,width:void 0,xAdjust:0,xMax:void 0,xMin:void 0,xScaleID:void 0,xValue:void 0,yAdjust:0,yMax:void 0,yMin:void 0,yScaleID:void 0,yValue:void 0,z:0};zn.defaultRoutes={borderColor:"color"};function mf({x:a,y:n,width:e,height:t,options:i}){let r=i.borderWidth/2,o=ba(i.padding);return{x:a+o.left+r,y:n+o.top+r,width:e-o.left-o.right-i.borderWidth,height:t-o.top-o.bottom-i.borderWidth}}var js=(a,n,e)=>({x:a.x+e*(n.x-a.x),y:a.y+e*(n.y-a.y)}),Ns=(a,n,e)=>js(n,e,Math.abs((a-n.y)/(e.y-n.y))).x,Qc=(a,n,e)=>js(n,e,Math.abs((a-n.x)/(e.x-n.x))).y,rr=a=>a*a,pf=(a,n,{x:e,y:t,x2:i,y2:r},o)=>o==="y"?{start:Math.min(t,r),end:Math.max(t,r),value:n}:{start:Math.min(e,i),end:Math.max(e,i),value:a},Zc=(a,n,e,t)=>(1-t)*(1-t)*a+2*(1-t)*t*n+t*t*e,Ws=(a,n,e,t)=>({x:Zc(a.x,n.x,e.x,t),y:Zc(a.y,n.y,e.y,t)}),Jc=(a,n,e,t)=>2*(1-t)*(n-a)+2*t*(e-n),eh=(a,n,e,t)=>-Math.atan2(Jc(a.x,n.x,e.x,t),Jc(a.y,n.y,e.y,t))+.5*hi,yo=(()=>{class a extends pn{inRange(e,t,i,r){let o=(this.options.borderWidth+this.options.hitTolerance)/2;if(i!=="x"&&i!=="y"){let s={mouseX:e,mouseY:t},{path:d,ctx:p}=this;if(d){Yi(p,this.options),p.lineWidth+=this.options.hitTolerance;let{chart:c}=this.$context,m=e*c.currentDevicePixelRatio,v=t*c.currentDevicePixelRatio,b=p.isPointInStroke(d,m,v)||Ls(this,s,r);return p.restore(),b}let l=rr(o);return yf(this,s,l,r)||Ls(this,s,r)}return ff(this,{mouseX:e,mouseY:t},i,{hitSize:o,useFinalPosition:r})}getCenterPoint(e){return Hn(this,e)}draw(e){let{x:t,y:i,x2:r,y2:o,cp:s,options:d}=this;if(e.save(),!Yi(e,d))return e.restore();za(e,d);let p=Math.sqrt(Math.pow(r-t,2)+Math.pow(o-i,2));if(d.curve&&s)return Tf(e,this,s,p),e.restore();let{startOpts:l,endOpts:c,startAdjust:m,endAdjust:v}=Ph(this),b=Math.atan2(o-i,r-t);e.translate(t,i),e.rotate(b),e.beginPath(),e.moveTo(0+m,0),e.lineTo(p-v,0),e.shadowColor=d.borderShadowColor,e.stroke(),Vs(e,0,m,l),Vs(e,p,-v,c),e.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(e,t){let i=Hp(e,t),{x:r,y:o,x2:s,y2:d}=i,p=gf(i,e.chartArea),l=p?vf({x:r,y:o},{x:s,y:d},e.chartArea):{x:r,y:o,x2:s,y2:d,width:Math.abs(s-r),height:Math.abs(d-o)};if(l.centerX=(s+r)/2,l.centerY=(d+o)/2,l.initProperties=Va(e,l,t),t.curve){let m={x:l.x,y:l.y},v={x:l.x2,y:l.y2};l.cp=xf(l,t,er(m,v))}let c=bf(e,l,t.label);return c._visible=p,l.elements=[{type:"label",optionScope:"label",properties:c,initProperties:l.initProperties}],l}}return a.id="lineAnnotation",a})(),th={backgroundColor:void 0,backgroundShadowColor:void 0,borderColor:void 0,borderDash:void 0,borderDashOffset:void 0,borderShadowColor:void 0,borderWidth:void 0,display:void 0,fill:void 0,length:void 0,shadowBlur:void 0,shadowOffsetX:void 0,shadowOffsetY:void 0,width:void 0};yo.defaults={adjustScaleRange:!0,arrowHeads:{display:!1,end:Object.assign({},th),fill:!1,length:12,start:Object.assign({},th),width:6},borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:2,curve:!1,controlPoint:{y:"-50%"},display:!0,endValue:void 0,init:void 0,hitTolerance:0,label:{backgroundColor:"rgba(0,0,0,0.8)",backgroundShadowColor:"transparent",borderCapStyle:"butt",borderColor:"black",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderRadius:6,borderShadowColor:"transparent",borderWidth:0,callout:Object.assign({},zn.defaults.callout),color:"#fff",content:null,display:!1,drawTime:void 0,font:{family:void 0,lineHeight:void 0,size:void 0,style:void 0,weight:"bold"},height:void 0,hitTolerance:void 0,opacity:void 0,padding:6,position:"center",rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,textAlign:"center",textStrokeColor:void 0,textStrokeWidth:0,width:void 0,xAdjust:0,yAdjust:0,z:void 0},scaleID:void 0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,value:void 0,xMax:void 0,xMin:void 0,xScaleID:void 0,yMax:void 0,yMin:void 0,yScaleID:void 0,z:0};yo.descriptors={arrowHeads:{start:{_fallback:!0},end:{_fallback:!0},_fallback:!0}};yo.defaultRoutes={borderColor:"color"};function ff(a,{mouseX:n,mouseY:e},t,{hitSize:i,useFinalPosition:r}){let o=pf(n,e,a.getProps(["x","y","x2","y2"],r),t);return dh(o,i)||Ls(a,{mouseX:n,mouseY:e},r,t)}function gf({x:a,y:n,x2:e,y2:t},{top:i,right:r,bottom:o,left:s}){return!(a<s&&e<s||a>r&&e>r||n<i&&t<i||n>o&&t>o)}function ih({x:a,y:n},e,{top:t,right:i,bottom:r,left:o}){return a<o&&(n=Qc(o,{x:a,y:n},e),a=o),a>i&&(n=Qc(i,{x:a,y:n},e),a=i),n<t&&(a=Ns(t,{x:a,y:n},e),n=t),n>r&&(a=Ns(r,{x:a,y:n},e),n=r),{x:a,y:n}}function vf(a,n,e){let{x:t,y:i}=ih(a,n,e),{x:r,y:o}=ih(n,a,e);return{x:t,y:i,x2:r,y2:o,width:Math.abs(r-t),height:Math.abs(o-i)}}function yf(a,{mouseX:n,mouseY:e},t=Ln,i){let{x:r,y:o,x2:s,y2:d}=a.getProps(["x","y","x2","y2"],i),p=s-r,l=d-o,c=rr(p)+rr(l),m=c===0?-1:((n-r)*p+(e-o)*l)/c,v,b;return m<0?(v=r,b=o):m>1?(v=s,b=d):(v=r+m*p,b=o+m*l),rr(n-v)+rr(e-b)<=t}function Ls(a,{mouseX:n,mouseY:e},t,i){let r=a.label;return r.options.display&&r.inRange(n,e,i,t)}function bf(a,n,e){let t=e.borderWidth,i=ba(e.padding),r=vo(a.ctx,e),o=r.width+i.width+t,s=r.height+i.height+t;return wf(n,e,{width:o,height:s,padding:i},a.chartArea)}function _f(a){let{x:n,y:e,x2:t,y2:i}=a,r=Math.atan2(i-e,t-n);return r>hi/2?r-hi:r<hi/-2?r+hi:r}function wf(a,n,e,t){let{width:i,height:r,padding:o}=e,{xAdjust:s,yAdjust:d}=n,p={x:a.x,y:a.y},l={x:a.x2,y:a.y2},c=n.rotation==="auto"?_f(a):Pi(n.rotation),m=Sf(i,r,c),v=Cf(a,n,{labelSize:m,padding:o},t),b=a.cp?Ws(p,a.cp,l,v):js(p,l,v),k={size:m.w,min:t.left,max:t.right,padding:o.left},M={size:m.h,min:t.top,max:t.bottom,padding:o.top},F=ah(b.x,k)+s,j=ah(b.y,M)+d;return{x:F-i/2,y:j-r/2,x2:F+i/2,y2:j+r/2,centerX:F,centerY:j,pointX:b.x,pointY:b.y,width:i,height:r,rotation:bs(c)}}function Sf(a,n,e){let t=Math.cos(e),i=Math.sin(e);return{w:Math.abs(a*t)+Math.abs(n*i),h:Math.abs(a*i)+Math.abs(n*t)}}function Cf(a,n,e,t){let i,r=kf(a,t);return n.position==="start"?i=nh({w:a.x2-a.x,h:a.y2-a.y},e,n,r):n.position==="end"?i=1-nh({w:a.x-a.x2,h:a.y-a.y2},e,n,r):i=Hs(1,n.position),i}function nh(a,n,e,t){let{labelSize:i,padding:r}=n,o=a.w*t.dx,s=a.h*t.dy,d=o>0&&(i.w/2+r.left-t.x)/o,p=s>0&&(i.h/2+r.top-t.y)/s;return po(Math.max(d,p),0,.25)}function kf(a,n){let{x:e,x2:t,y:i,y2:r}=a,o=Math.min(i,r)-n.top,s=Math.min(e,t)-n.left,d=n.bottom-Math.max(i,r),p=n.right-Math.max(e,t);return{x:Math.min(s,p),y:Math.min(o,d),dx:s<=p?1:-1,dy:o<=d?1:-1}}function ah(a,n){let{size:e,min:t,max:i,padding:r}=n,o=e/2;return e>i-t?(i+t)/2:(t>=a-r-o&&(a=t+r+o),i<=a+r+o&&(a=i-r-o),a)}function Ph(a){let n=a.options,e=n.arrowHeads&&n.arrowHeads.start,t=n.arrowHeads&&n.arrowHeads.end;return{startOpts:e,endOpts:t,startAdjust:rh(a,e),endAdjust:rh(a,t)}}function rh(a,n){if(!n||!n.display)return 0;let{length:e,width:t}=n,i=a.options.borderWidth/2,r={x:e,y:t+i};return Math.abs(Ns(0,r,{x:0,y:i}))}function Vs(a,n,e,t){if(!t||!t.display)return;let{length:i,width:r,fill:o,backgroundColor:s,borderColor:d}=t,p=Math.abs(n-i)+e;a.beginPath(),za(a,t),Yi(a,t),a.moveTo(p,-r),a.lineTo(n+e,0),a.lineTo(p,r),o===!0?(a.fillStyle=s||d,a.closePath(),a.fill(),a.shadowColor="transparent"):a.shadowColor=t.borderShadowColor,a.stroke()}function xf(a,n,e){let{x:t,y:i,x2:r,y2:o,centerX:s,centerY:d}=a,p=Math.atan2(o-i,r-t),l=Us(n.controlPoint,0),c={x:s+_n(e,l.x,!1),y:d+_n(e,l.y,!1)};return Bn(c,{x:s,y:d},p)}function oh(a,{x:n,y:e},{angle:t,adjust:i},r){!r||!r.display||(a.save(),a.translate(n,e),a.rotate(t),Vs(a,0,-i,r),a.restore())}function Tf(a,n,e,t){let{x:i,y:r,x2:o,y2:s,options:d}=n,{startOpts:p,endOpts:l,startAdjust:c,endAdjust:m}=Ph(n),v={x:i,y:r},b={x:o,y:s},k=eh(v,e,b,0),M=eh(v,e,b,1)-hi,F=Ws(v,e,b,c/t),j=Ws(v,e,b,1-m/t),te=new Path2D;a.beginPath(),te.moveTo(F.x,F.y),te.quadraticCurveTo(e.x,e.y,j.x,j.y),a.shadowColor=d.borderShadowColor,a.stroke(te),n.path=te,n.ctx=a,oh(a,F,{angle:k,adjust:c},p),oh(a,j,{angle:M,adjust:m},l)}var Fn=class extends pn{inRange(n,e,t,i){let r=this.options.rotation,o=(this.options.borderWidth+this.options.hitTolerance)/2;if(t!=="x"&&t!=="y")return Ef({x:n,y:e},this.getProps(["width","height","centerX","centerY"],i),r,o);let{x:s,y:d,x2:p,y2:l}=this.getProps(["x","y","x2","y2"],i),c=t==="y"?{start:d,end:l}:{start:s,end:p},m=Bn({x:n,y:e},this.getCenterPoint(i),Pi(-r));return m[t]>=c.start-o-Ln&&m[t]<=c.end+o+Ln}getCenterPoint(n){return Hn(this,n)}draw(n){let{width:e,height:t,centerX:i,centerY:r,options:o}=this;n.save(),go(n,this.getCenterPoint(),o.rotation),za(n,this.options),n.beginPath(),n.fillStyle=o.backgroundColor;let s=Yi(n,o);n.ellipse(i,r,t/2,e/2,hi/2,0,2*hi),n.fill(),s&&(n.shadowColor=o.borderShadowColor,n.stroke()),n.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(n,e){return Eh(n,e)}};Fn.id="ellipseAnnotation";Fn.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,label:Object.assign({},wn.defaults.label),rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,xMax:void 0,xMin:void 0,xScaleID:void 0,yMax:void 0,yMin:void 0,yScaleID:void 0,z:0};Fn.defaultRoutes={borderColor:"color",backgroundColor:"color"};Fn.descriptors={label:{_fallback:!0}};function Ef(a,n,e,t){let{width:i,height:r,centerX:o,centerY:s}=n,d=i/2,p=r/2;if(d<=0||p<=0)return!1;let l=Pi(e||0),c=Math.cos(l),m=Math.sin(l),v=Math.pow(c*(a.x-o)+m*(a.y-s),2),b=Math.pow(m*(a.x-o)-c*(a.y-s),2);return v/Math.pow(d+t,2)+b/Math.pow(p+t,2)<=1.0001}var Wa=class extends pn{inRange(n,e,t,i){let{x:r,y:o,x2:s,y2:d,width:p}=this.getProps(["x","y","x2","y2","width"],i),l=(this.options.borderWidth+this.options.hitTolerance)/2;return t!=="x"&&t!=="y"?_p({x:n,y:e},this.getCenterPoint(i),p/2,l):dh(t==="y"?{start:o,end:d,value:e}:{start:r,end:s,value:n},l)}getCenterPoint(n){return Hn(this,n)}draw(n){let e=this.options,t=e.borderWidth;if(e.radius<.1)return;n.save(),n.fillStyle=e.backgroundColor,za(n,e);let i=Yi(n,e);Mp(n,this,this.centerX,this.centerY),i&&!fo(e.pointStyle)&&(n.shadowColor=e.borderShadowColor,n.stroke()),n.restore(),e.borderWidth=t}resolveElementProperties(n,e){let t=Th(n,e);return t.initProperties=Va(n,t,e),t}};Wa.id="pointAnnotation";Wa.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,pointStyle:"circle",radius:10,rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,xAdjust:0,xMax:void 0,xMin:void 0,xScaleID:void 0,xValue:void 0,yAdjust:0,yMax:void 0,yMin:void 0,yScaleID:void 0,yValue:void 0,z:0};Wa.defaultRoutes={borderColor:"color",backgroundColor:"color"};var La=class extends pn{inRange(n,e,t,i){if(t!=="x"&&t!=="y")return this.options.radius>=.1&&this.elements.length>1&&Df(this.elements,n,e,i);let r=Bn({x:n,y:e},this.getCenterPoint(i),Pi(-this.options.rotation)),o=this.elements.map(p=>t==="y"?p.bY:p.bX),s=Math.min(...o),d=Math.max(...o);return r[t]>=s&&r[t]<=d}getCenterPoint(n){return Hn(this,n)}draw(n){let{elements:e,options:t}=this;n.save(),n.beginPath(),n.fillStyle=t.backgroundColor,za(n,t);let i=Yi(n,t),r=!0;for(let o of e)r?(n.moveTo(o.x,o.y),r=!1):n.lineTo(o.x,o.y);n.closePath(),n.fill(),i&&(n.shadowColor=t.borderShadowColor,n.stroke()),n.restore()}resolveElementProperties(n,e){let t=Th(n,e),{sides:i,rotation:r}=e,o=[],s=2*hi/i,d=r*$r;for(let p=0;p<i;p++,d+=s){let l=Mf(t,e,d);l.initProperties=Va(n,t,e),o.push(l)}return t.elements=o,t}};La.id="polygonAnnotation";La.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,point:{radius:0},radius:10,rotation:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,sides:3,xAdjust:0,xMax:void 0,xMin:void 0,xScaleID:void 0,xValue:void 0,yAdjust:0,yMax:void 0,yMin:void 0,yScaleID:void 0,yValue:void 0,z:0};La.defaultRoutes={borderColor:"color",backgroundColor:"color"};function Mf({centerX:a,centerY:n},{radius:e,borderWidth:t,hitTolerance:i},r){let o=(t+i)/2,s=Math.sin(r),d=Math.cos(r),p={x:a+s*e,y:n-d*e};return{type:"point",optionScope:"point",properties:{x:p.x,y:p.y,centerX:p.x,centerY:p.y,bX:a+s*(e+o),bY:n-d*(e+o)}}}function Df(a,n,e,t){let i=!1,r=a[a.length-1].getProps(["bX","bY"],t);for(let o of a){let s=o.getProps(["bX","bY"],t);s.bY>e!=r.bY>e&&n<(r.bX-s.bX)*(e-s.bY)/(r.bY-s.bY)+s.bX&&(i=!i),r=s}return i}var bn={box:wn,doughnutLabel:Na,ellipse:Fn,label:zn,line:yo,point:Wa,polygon:La};Object.keys(bn).forEach(a=>{lc.describe(`elements.${bn[a].id}`,{_fallback:"plugins.annotation.common"})});var Pf={update:Object.assign},Af=qs.concat(mo),sh=(a,n)=>un(n)?Fs(a,n):a,zs=a=>a==="color"||a==="font";function $s(a="line"){return bn[a]?a:(console.warn(`Unknown annotation type: '${a}', defaulting to 'line'`),"line")}function Of(a,n,e,t){let i=Rf(a,e.animations,t),r=n.annotations,o=Lf(n.elements,r);for(let s=0;s<r.length;s++){let d=r[s],p=Ah(o,s,d.type),l=d.setContext(Wf(a,p,o,d)),c=p.resolveElementProperties(a,l);c.skip=If(c),"elements"in c&&(Nf(p,c.elements,l,i),delete c.elements),Di(p.x)||Object.assign(p,c),Object.assign(p,c.initProperties),c.options=Oh(l),i.update(p,c)}}function If(a){return isNaN(a.x)||isNaN(a.y)}function Rf(a,n,e){return e==="reset"||e==="none"||e==="resize"?Pf:new dc(a,n)}function Nf(a,n,e,t){let i=a.elements||(a.elements=[]);i.length=n.length;for(let r=0;r<n.length;r++){let o=n[r],s=o.properties,d=Ah(i,r,o.type,o.initProperties),p=e[o.optionScope].override(o);s.options=Oh(p),t.update(d,s)}}function Ah(a,n,e,t){let i=bn[$s(e)],r=a[n];return(!r||!(r instanceof i))&&(r=a[n]=new i,Object.assign(r,t)),r}function Oh(a){let n=bn[$s(a.type)],e={};e.id=a.id,e.type=a.type,e.drawTime=a.drawTime,Object.assign(e,Fs(a,n.defaults),Fs(a,n.defaultRoutes));for(let t of Af)e[t]=a[t];return e}function Fs(a,n){let e={};for(let t of Object.keys(n)){let i=n[t],r=a[t];zs(t)&&hn(r)?e[t]=r.map(o=>sh(o,i)):e[t]=sh(r,i)}return e}function Wf(a,n,e,t){return n.$context||(n.$context=Object.assign(Object.create(a.getContext()),{element:n,get elements(){return e.filter(i=>i&&i.options)},id:t.id,type:"annotation"}))}function Lf(a,n){let e=n.length,t=a.length;if(t<e){let i=e-t;a.splice(t,0,...new Array(i))}else t>e&&a.splice(e,t-e);return a}var Vf="3.1.0",yn=new Map,lh=a=>a.type!=="doughnutLabel",zf=qs.concat(mo),Ih={id:"annotation",version:Vf,beforeRegister(){wp("chart.js","4.0",Gt.version)},afterRegister(){Gt.register(bn)},afterUnregister(){Gt.unregister(bn)},beforeInit(a){yn.set(a,{annotations:[],elements:[],visibleElements:[],listeners:{},listened:!1,moveListened:!1,hooks:{},hooked:!1,hovered:[]})},beforeUpdate(a,n,e){let t=yn.get(a),i=t.annotations=[],r=e.annotations;un(r)?Object.keys(r).forEach(o=>{let s=r[o];un(s)&&(s.id=o,i.push(s))}):hn(r)&&i.push(...r),tf(i.filter(lh),a.scales)},afterDataLimits(a,n){let e=yn.get(a);ef(a,n.scale,e.annotations.filter(lh).filter(t=>t.display&&t.adjustScaleRange))},afterUpdate(a,n,e){let t=yn.get(a);Xp(a,t,e),Of(a,t,e,n.mode),t.visibleElements=t.elements.filter(i=>!i.skip&&i.options.display),Jp(a,t,e)},beforeDatasetsDraw(a,n,e){ar(a,"beforeDatasetsDraw",e.clip)},afterDatasetsDraw(a,n,e){ar(a,"afterDatasetsDraw",e.clip)},beforeDatasetDraw(a,n,e){ar(a,n.index,e.clip)},beforeDraw(a,n,e){ar(a,"beforeDraw",e.clip)},afterDraw(a,n,e){ar(a,"afterDraw",e.clip)},beforeEvent(a,n,e){let t=yn.get(a);Kp(t,n.event,e)&&(n.changed=!0)},afterDestroy(a){yn.delete(a)},getAnnotations(a){let n=yn.get(a);return n?n.elements:[]},_getAnnotationElementsAtEventForMode(a,n,e){return Bs(a,n,e)},defaults:{animations:{numbers:{properties:["x","y","x2","y2","width","height","centerX","centerY","pointX","pointY","radius"],type:"number"},colors:{properties:["backgroundColor","borderColor"],type:"color"}},clip:!0,interaction:{mode:void 0,axis:void 0,intersect:void 0},common:{drawTime:"afterDatasetsDraw",init:!1,label:{}}},descriptors:{_indexable:!1,_scriptable:a=>!zf.includes(a)&&a!=="init",annotations:{_allKeys:!1,_fallback:(a,n)=>`elements.${bn[$s(n.type)].id}`},interaction:{_fallback:!0},common:{label:{_indexable:zs,_fallback:!0},_indexable:zs}},additionalOptionScopes:[""]};function ar(a,n,e){let{ctx:t,chartArea:i}=a,r=yn.get(a);e&&_s(t,i);let o=Ff(r.visibleElements,n).sort((s,d)=>s.element.options.z-d.element.options.z);for(let s of o)Bf(t,i,r,s);e&&ws(t)}function Ff(a,n){let e=[];for(let t of a)if(t.options.drawTime===n&&e.push({element:t,main:!0}),t.elements&&t.elements.length)for(let i of t.elements)i.options.display&&i.options.drawTime===n&&e.push({element:i});return e}function Bf(a,n,e,t){let i=t.element;t.main?(Yc(e,i,"beforeDraw"),i.draw(a,n),Yc(e,i,"afterDraw")):i.draw(a,n)}var Hf=["widgetDataChart"];Gt.register(Ih,xa,ka,_a,Sa,wa,Ca,Qr,Zr);var Rh=(()=>{class a extends Ne{dsService=D(ni);ngZone=D(at);canvasService=D(dt);widgetDataChart=se("widgetDataChart",{read:et});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;constructor(){super(),this.defaultConfig={displayName:"Chart Label",filterSelfPaths:!0,convertUnitTo:"unitless",datasetUUID:null,inverseYAxis:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!1,showTimeScale:!1,startScaleAtZero:!1,verticalChart:!1,showYScale:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null,numDecimal:1,color:"contrast"},de(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this.dsService.getDatasetConfig(this.widgetProperties.config.datasetUUID),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.widgetProperties.config.datasetUUID),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.chart.update():this.chart=new Gt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=this.widgetProperties.config.verticalChart?"y":"x",this.widgetProperties.config.verticalChart?this.lineChartOptions.scales={y:{type:"time",display:this.widgetProperties.config.showTimeScale,position:this.widgetProperties.config.verticalChart?"right":"left",suggestedMin:"",suggestedMax:"",title:{display:!0,text:`Last ${this.datasetConfig.period} ${this.datasetConfig.timeScaleFormat}`,align:"center"},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}},x:{type:"linear",display:this.widgetProperties.config.showYScale,position:this.widgetProperties.config.verticalChart?"top":"bottom",suggestedMin:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMin,suggestedMax:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMax,min:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMin:null,max:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMax:null,beginAtZero:this.widgetProperties.config.startScaleAtZero,reverse:this.widgetProperties.config.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.widgetProperties.config.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:this.widgetProperties.config.showTimeScale,title:{display:!0,text:`Last ${this.datasetConfig.period} ${this.datasetConfig.timeScaleFormat}`,align:"center"},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}},y:{display:this.widgetProperties.config.showYScale,position:"right",suggestedMin:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMin,suggestedMax:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMax,min:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMin:null,max:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMax:null,beginAtZero:this.widgetProperties.config.startScaleAtZero,reverse:this.widgetProperties.config.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.widgetProperties.config.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"",font:{size:32},color:this.getThemeColors().chartValue},subtitle:{display:this.widgetProperties.config.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${this.widgetProperties.config.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetMinimumValueLine,value:null,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",yAdjust:12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},maximumLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetMaximumValueLine,value:null,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",yAdjust:-12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},averageLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetAverageValueLine,value:null,borderDash:[6,6],borderColor:this.getThemeColors().averageChartLine,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",padding:4,color:this.getThemeColors().chartValue,backgroundColor:"rgba(63,63,63,0.7)"}}}},legend:{display:!1}}}createDatasets(){let e,t;this.widgetProperties.config.inverseYAxis&&this.widgetProperties.config.trackAgainstAverage?(e="start",t=!1):this.widgetProperties.config.inverseYAxis&&!this.widgetProperties.config.trackAgainstAverage?(e=!1,t="start"):!this.widgetProperties.config.inverseYAxis&&this.widgetProperties.config.trackAgainstAverage?(e=!0,t=!1):(e=!1,t=!0),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:this.widgetProperties.config.trackAgainstAverage?1:0,parsing:!1,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:this.widgetProperties.config.trackAgainstAverage?0:3,fill:e}),this.lineChartData.datasets.push({label:"Average",data:[],order:this.widgetProperties.config.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:this.widgetProperties.config.trackAgainstAverage?3:0,fill:t}),this.setDatasetsColors()}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"?(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill):e.label==="Average"&&(e.borderColor=this.getThemeColors().averageLine,e.backgroundColor=this.getThemeColors().averageFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().contrastDimmer,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=t.averageLine):(t.valueLine=this.theme().contrast,t.valueFill=this.theme().contrast,t.averageLine=this.theme().contrastDimmer,t.averageFill=this.theme().contrastDimmer,t.chartValue=this.theme().contrast),t.averageChartLine=this.theme().contrastDim,t.chartLabel=this.theme().contrastDim;break;case"blue":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().blueDimmer,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=t.averageLine):(t.valueLine=this.theme().blue,t.valueFill=this.theme().blue,t.averageLine=this.theme().blueDimmer,t.averageFill=this.theme().blueDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().contrastDim;break;case"green":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().greenDimmer,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=t.averageLine):(t.valueLine=this.theme().green,t.valueFill=this.theme().green,t.averageLine=this.theme().greenDimmer,t.averageFill=this.theme().greenDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().contrastDim;break;case"pink":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().pinkDimmer,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=t.averageLine):(t.valueLine=this.theme().pink,t.valueFill=this.theme().pink,t.averageLine=this.theme().pinkDimmer,t.averageFill=this.theme().pinkDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().contrastDim;break;case"orange":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().orangeDimmer,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=t.averageLine):(t.valueLine=this.theme().orange,t.valueFill=this.theme().orange,t.averageLine=this.theme().orangeDimmer,t.averageFill=this.theme().orangeDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().contrastDim;break;case"purple":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().purpleDimmer,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=t.averageLine):(t.valueLine=this.theme().purple,t.valueFill=this.theme().purple,t.averageLine=this.theme().purpleDimmer,t.averageFill=this.theme().purpleDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().contrastDim;break;case"grey":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().greyDimmer,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=t.averageLine):(t.valueLine=this.theme().grey,t.valueFill=this.theme().grey,t.averageLine=this.theme().greyDimmer,t.averageFill=this.theme().greyDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().contrastDim;break;case"yellow":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().yellowDimmer,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=t.averageLine):(t.valueLine=this.theme().yellow,t.valueFill=this.theme().yellow,t.averageLine=this.theme().yellowDimmer,t.averageFill=this.theme().yellowDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().contrastDim;break}return t}getUnitsLabel(){let e=null;switch(this.widgetProperties.config.convertUnitTo){case"percent":case"percentraw":e="%";break;case"latitudeMin":e="latitude in minutes";break;case"latitudeSec":e="latitude in secondes";break;case"longitudeMin":e="longitude in minutes";break;case"longitudeSec":e="longitude in secondes";break;default:e=this.widgetProperties.config.convertUnitTo;break}return e}startStreaming(){this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.widgetProperties.config.datasetUUID);this.dsServiceSub=e?.subscribe(t=>{if(Array.isArray(t)){let i=this.transformDatasetRows(t,0);if(this.chart.data.datasets[0].data.push(...i),this.widgetProperties.config.showAverageData){let r=this.transformDatasetRows(t,this.widgetProperties.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...r)}}else{let i=this.transformDatasetRows([t],0)[0];if(this.chart.data.datasets[0].data.push(i),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[0].data.shift(),this.widgetProperties.config.showAverageData){let p=this.transformDatasetRows([t],this.widgetProperties.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(p),this.chart.data.datasets[1].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[1].data.shift()}let r=this.widgetProperties.config.trackAgainstAverage?t.data.sma:t.data.value;this.chart.options.plugins.title.text=`${this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,r).toFixed(this.widgetProperties.config.numDecimal)} ${this.getUnitsLabel()} `;let o=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastAverage),s=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastMinimum),d=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastMaximum);this.chart.options.plugins.annotation.annotations.averageLine.value!=o&&(this.chart.options.plugins.annotation.annotations.averageLine.value=o,this.chart.options.plugins.annotation.annotations.averageLine.label.content=`${o.toFixed(this.widgetProperties.config.numDecimal)}`),this.chart.options.plugins.annotation.annotations.minimumLine.value!=s&&(this.chart.options.plugins.annotation.annotations.minimumLine.value=s,this.chart.options.plugins.annotation.annotations.minimumLine.label.content=`${s.toFixed(this.widgetProperties.config.numDecimal)}`),this.chart.options.plugins.annotation.annotations.maximumLine.value!=d&&(this.chart.options.plugins.annotation.annotations.maximumLine.value=d,this.chart.options.plugins.annotation.annotations.maximumLine.label.content=`${d.toFixed(this.widgetProperties.config.numDecimal)}`)}this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}transformDatasetRows(e,t){let i=s=>this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,s),r=this.widgetProperties.config.verticalChart,o=this.widgetProperties.config.datasetAverageArray;return e.map(s=>{if(r){if(t===0)return{x:i(s.data.value),y:s.timestamp};{let d={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:i(d[o]),y:s.timestamp}}}else{if(t===0)return{x:s.timestamp,y:i(s.data.value)};{let d={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:s.timestamp,y:i(d[o])}}}})}ngOnDestroy(){this.destroyDataStreams(),this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-data-chart"]],viewQuery:function(t,i){t&1&&oe(i.widgetDataChart,Hf,5,et),t&2&&Re()},features:[me],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),Y(1,"canvas",2,0),C()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid))},dependencies:[We],encapsulation:2})}return a})();var Nh=(()=>{class a{sanitizer=D(ca);transform(e){return this.sanitizer.bypassSecurityTrustResourceUrl(e)}static \u0275fac=function(t){return new(t||a)};static \u0275pipe=Kl({name:"safe",type:a,pure:!0})}return a})();var Uf=["freeboardSkIframe"];function Gf(a,n){a&1&&Y(0,"div",3)}var Wh=(()=>{class a extends Ne{appSettings=D(ii);auth=D(Si);_dashboard=D(ft);iframe=se.required("freeboardSkIframe");widgetUrl=null;_authTokenSubscription=null;dashboard=D(ft);constructor(){super()}ngOnInit(){let e=null;this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{e=t?.token}),this.widgetUrl=e?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${e}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`,window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){this.iframe&&(this.iframe().nativeElement.onload=()=>this.injectHammerJS())}startWidget(){}updateConfig(){}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:r}=e.data.keyEventData,o=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(o)}}};injectHammerJS(){let e=document.getElementsByTagName("base")[0]?.href||"/",t=this.iframe().nativeElement.contentWindow,i=this.iframe().nativeElement.contentDocument;if(!i||!t){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}if(t.Hammer){console.log("[FSK Widget] HammerJS already loaded in iframe");return}let r=i.createElement("script");r.src=`${e}assets/hammer.min.js`,r.onload=()=>this.injectSwipeHandler(),i.body.appendChild(r)}injectSwipeHandler(){let e=this.iframe().nativeElement.contentDocument;if(!e){console.error("[FSK Widget] Iframe contentDocument is undefined. Possible cross-origin issue or iframe not fully loaded.");return}let t=e.createElement("script");t.textContent=`
13
- if (!window.hammerInstance) {
14
- const hammer = new Hammer(document.body);
15
- hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL, velocity: 1.5, threshold: 200, domEvents: true });
16
-
17
- const instanceId = '${this.widgetProperties.uuid}'; // Include the instance ID in the script to prevent multiple listeners
18
-
19
- hammer.on('swipeleft', (ev) => {
20
- ev.preventDefault();
21
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
22
- const eventData = {
23
- type: ev.type,
24
- deltaX: ev.deltaX,
25
- deltaY: ev.deltaY,
26
- velocityX: ev.velocityX,
27
- velocityY: ev.velocityY,
28
- direction: ev.direction,
29
- distance: ev.distance,
30
- angle: ev.angle,
31
- center: ev.center,
32
- offsetDirection: ev.offsetDirection,
33
- scale: ev.scale,
34
- rotation: ev.rotation,
35
- isFinal: ev.isFinal,
36
- instanceId: instanceId // Include the instance ID in the event data
37
- };
38
- window.parent.postMessage({ gesture: 'swipeleft', eventData: eventData }, '*');
39
- });
40
-
41
- hammer.on('swiperight', (ev) => {
42
- ev.preventDefault();
43
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
44
- const eventData = {
45
- type: ev.type,
46
- deltaX: ev.deltaX,
47
- deltaY: ev.deltaY,
48
- velocityX: ev.velocityX,
49
- velocityY: ev.velocityY,
50
- direction: ev.direction,
51
- distance: ev.distance,
52
- angle: ev.angle,
53
- center: ev.center,
54
- offsetDirection: ev.offsetDirection,
55
- scale: ev.scale,
56
- rotation: ev.rotation,
57
- isFinal: ev.isFinal,
58
- instanceId: instanceId // Include the instance ID in the event data
59
- };
60
- window.parent.postMessage({ gesture: 'swiperight', eventData: eventData }, '*');
61
- });
62
-
63
- hammer.on('swipeup', (ev) => {
64
- ev.preventDefault();
65
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
66
- const eventData = {
67
- type: ev.type,
68
- deltaX: ev.deltaX,
69
- deltaY: ev.deltaY,
70
- velocityX: ev.velocityX,
71
- velocityY: ev.velocityY,
72
- direction: ev.direction,
73
- distance: ev.distance,
74
- angle: ev.angle,
75
- center: ev.center,
76
- offsetDirection: ev.offsetDirection,
77
- scale: ev.scale,
78
- rotation: ev.rotation,
79
- isFinal: ev.isFinal,
80
- instanceId: instanceId // Include the instance ID in the event data
81
- };
82
- window.parent.postMessage({ gesture: 'swipeup', eventData: eventData }, '*');
83
- });
84
-
85
- hammer.on('swipedown', (ev) => {
86
- ev.preventDefault();
87
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
88
- const eventData = {
89
- type: ev.type,
90
- deltaX: ev.deltaX,
91
- deltaY: ev.deltaY,
92
- velocityX: ev.velocityX,
93
- velocityY: ev.velocityY,
94
- direction: ev.direction,
95
- distance: ev.distance,
96
- angle: ev.angle,
97
- center: ev.center,
98
- offsetDirection: ev.offsetDirection,
99
- scale: ev.scale,
100
- rotation: ev.rotation,
101
- isFinal: ev.isFinal,
102
- instanceId: instanceId // Include the instance ID in the event data
103
- };
104
- window.parent.postMessage({ gesture: 'swipedown', eventData: eventData }, '*');
105
- });
106
-
107
- // Add keydown listener
108
- document.addEventListener('keydown', (event) => {
109
- if (event.ctrlKey && event.shiftKey && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'E', 'F', 'N'].includes(event.key)) {
110
- const keyEventData = {
111
- key: event.key,
112
- ctrlKey: event.ctrlKey,
113
- shiftKey: event.shiftKey,
114
- instanceId: instanceId
115
- };
116
- window.parent.postMessage({ type: 'keydown', keyEventData: keyEventData }, '*');
117
- }
118
- });
119
-
120
- window.hammerInstance = hammer; // Store the instance to prevent multiple listeners
121
- }
122
- `,e.body.appendChild(t)}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this._authTokenSubscription?.unsubscribe(),this.destroyDataStreams(),this.iframe&&(this.iframe().nativeElement.onload=null)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&oe(i.iframe,Uf,5),t&2&&Re()},features:[me],decls:5,vars:6,consts:[["freeboardSkIframe",""],[2,"overflow","clip",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",3,"src"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(){return R(r),N(i.updateConfig())}),Y(1,"iframe",2,0),zi(3,"safe"),ze(4,Gf,1,0,"div",3),C()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("src",Ir(3,4,i.widgetUrl),Mr),x(3),Fe(i.dashboard.isDashboardStatic()?-1:4))},dependencies:[We,Nh],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var Sn=Qa(Ys(),1),zh=Qa(Ys(),1);var qf=["gauge"],jf=a=>a.replace(/(\-\w)/g,n=>n[1].toUpperCase()),$f=a=>a.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Lh=a=>jf(a),Vh=(()=>{class a{el;zone;canvas;gauge;isInited=!1;preInitValue;preInitOptions;domListener;constructor(e,t){this.el=e,this.zone=t}get options(){let e={};e.renderTo=this.canvas.nativeElement;for(let t of this.el.nativeElement.attributes){let i=Lh(t.name);e[i]=Sn.DomObserver.parse(t.value)}for(let t in this.preInitOptions)e[t]=this.preInitOptions[t];return this.isInited&&(this.preInitOptions=null),e}set options(e){if(!this.isInited){this.preInitOptions=e;return}this.update(e)}set value(e){if(!this.isInited){this.preInitValue=e;return}this.zone.runOutsideAngular(()=>{this.gauge.value=e})}update(e){if(e)for(let t in e){let i=e[t].toString();if(t==="value")this.value=Sn.DomObserver.parse(i);else{let r=$f(t);this.el.nativeElement.setAttribute(r,i)}}}ngOnDestroy(){this.destroy(),this.cleanup()}cleanup(){}destroy(){this.stopListeningForDOMEvents(),this.gauge.destroy()}ngAfterViewInit(){this.initGauge(),this.listenForDOMEvents(),this.isInited=!0,this.preInitValue&&(this.value=this.preInitValue)}listenForDOMEvents(){this.domListener=new MutationObserver(e=>{let t={};e.forEach(i=>{i.type==="attributes"&&(t[Lh(i.attributeName)]=Sn.DomObserver.parse(this.el.nativeElement.getAttribute(i.attributeName)))}),this.basicUpdate(t)}),this.domListener.observe(this.el.nativeElement,{attributes:!0})}stopListeningForDOMEvents(){this.domListener&&(this.domListener.disconnect(),this.domListener=null)}initGauge(){let e=this.options;(!e.hasOwnProperty("renderTo")||!e.renderTo)&&(e.renderTo=this.canvas.nativeElement),this.basicUpdate(e)}basicUpdate(e){typeof e.value=="number"&&(this.value=e.value,delete e.value),Object.keys(e).length&&this.gauge.update(e)}static \u0275fac=function(t){return new(t||a)(ei(et),ei(at))};static \u0275dir=Vi({type:a,viewQuery:function(t,i){if(t&1&&Mi(qf,7),t&2){let r;zt(r=Ft())&&(i.canvas=r.first)}},inputs:{options:"options",value:"value"}})}return a})();var or=(()=>{class a extends Vh{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Sn.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(ei(et),ei(at))};static \u0275cmp=q({type:a,selectors:[["linear-gauge"]],features:[me],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&Y(0,"canvas",null,0)},encapsulation:2})}return a})();var _o=(()=>{class a extends Vh{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Sn.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||a)(ei(et),ei(at))};static \u0275cmp=q({type:a,selectors:[["radial-gauge"]],features:[me],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&Y(0,"canvas",null,0)},encapsulation:2})}return a})(),Fa=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=yi({type:a});static \u0275inj=vi({})}return a})();var Fh=["compassGauge"];function Ks(a){let n=a.match(/(\d+(\.\d+)?|\.\d+)/g);if(!n||n.length<3)throw new Error("Invalid RGBA format");let[e,t,i,r=1]=n.map(Number),o=r===1?"":Math.round(r*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+o}function Yf(a){return a<0&&(a=360+a),a}var Bh=(()=>{class a extends Ne{DEG="deg";LINE="line";NEEDLE_START=40;NEEDLE_END=100;NEEDLE_CIRCLE_SIZE=15;BORDER_MIDDLE_WIDTH=2;BORDER_INNER_WIDTH=2;ANIMATION_TARGET_PLATE="plate";ANIMATION_TARGET_NEEDLE="needle";textValue="--";value=0;ngGauge=se("compassGauge");gauge=se("compassGauge",{read:et});initCompleted=!1;gaugeOptions={};colorStrokeTicks="";unitName=null;state=re.Normal;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater"];constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:this.DEG,sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5},de(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data||e.data.value===null)e={data:{value:0,timestamp:new Date},state:re.Normal},this.value=0,this.textValue="--";else{let t=this.negToPortPaths.includes(this.widgetProperties.config.paths.gaugePath.path)?Yf(e.data.value):e.data.value;this.value=Math.min(Math.max(t,0),360),this.textValue=this.value.toFixed(0)}if(e.state==null&&(e.state=re.Normal),this.state!==e.state){this.state=e.state;let t={};switch(e.state){case re.Emergency:t.colorValueText=this.theme().zoneEmergency;break;case re.Alarm:t.colorValueText=this.theme().zoneAlarm;break;case re.Warn:t.colorValueText=this.theme().zoneWarn;break;case re.Alert:t.colorValueText=this.theme().zoneAlert;break;default:t.colorValueText=this.theme().contrast}this.ngGauge().update(t)}})}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.minValue=0,this.gaugeOptions.maxValue=360,this.gaugeOptions.valueDec=0,this.gaugeOptions.valueInt=1,this.gaugeOptions.units="",this.gaugeOptions.barProgress=!1,this.gaugeOptions.barWidth=0,this.gaugeOptions.valueBox=this.widgetProperties.config.gauge.showValueBox,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=26,this.gaugeOptions.valueBoxBorderRadius=10,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=180,this.gaugeOptions.exactTicks=!1,this.gaugeOptions.strokeTicks="",this.gaugeOptions.majorTicks=this.widgetProperties.config.gauge.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],this.gaugeOptions.majorTicksDec=0,this.gaugeOptions.majorTicksInt=1,this.gaugeOptions.numbersMargin=5,this.gaugeOptions.fontNumbersSize=25,this.gaugeOptions.minorTicks=this.widgetProperties.config.gauge.compassUseNumbers?3:2,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleStart=this.NEEDLE_START,this.gaugeOptions.needleEnd=this.NEEDLE_END,this.gaugeOptions.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,this.gaugeOptions.needleWidth=4,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=0,this.gaugeOptions.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,this.gaugeOptions.borderInnerWidth=this.BORDER_INNER_WIDTH,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="normal",this.gaugeOptions.fontTitleSize=25,this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.highlightsWidth=0,this.widgetProperties.config.gauge.subType==="marineCompass"?(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_PLATE,this.gaugeOptions.useMinPath=!0):this.widgetProperties.config.gauge.subType==="baseplateCompass"&&(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!0),this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!0,this.gaugeOptions.animatedValue=!0,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-50,this.setGaugeOptions(Se(this.widgetProperties.config.color,this.theme()).color,Ks(Se(this.widgetProperties.config.color,this.theme()).dim),Ks(Se(this.widgetProperties.config.color,this.theme()).dimmer))}setGaugeOptions(e,t,i){let r=Ks(Se("contrast",this.theme()).dim);this.gaugeOptions.colorBarProgress=e,this.gaugeOptions.colorBorderMiddle=t,this.gaugeOptions.colorBorderMiddleEnd=t,this.gaugeOptions.colorNeedle=e,this.gaugeOptions.colorNeedleEnd=e,this.gaugeOptions.colorTitle=r,this.gaugeOptions.colorUnits=r,this.gaugeOptions.colorValueText=e,this.gaugeOptions.colorMinorTicks=r,this.gaugeOptions.colorNumbers=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,r,r,t,r,r,t,r,r,t,r,r,this.theme().port]:[this.theme().port,t,t,t,t,t,t,t,this.theme().port],this.gaugeOptions.colorMajorTicks=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port]:[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port],this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.gaugeOptions.colorBorderInner=this.gaugeOptions.colorBorderInnerEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.colorValueBoxBackground=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&(oe(i.ngGauge,Fh,5),oe(i.gauge,Fh,5,et)),t&2&&Re(2)},features:[me],decls:3,vars:8,consts:[["compassGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"radial-gauge",2,0),W("onResize",function(s){return R(r),N(i.onResized(s))}),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("id",on(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ue("value-text",i.textValue)("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[We,ot,rt,Fa,_o],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px}"]})}return a})();function wo(a,n,e=!1){let t=[],i=n-a,r=0,o=10;i=Hh(n-a,!1),r=Hh(i/(o-1),!0);let s=Math.floor(a/r)*r,d=Math.ceil(n/r)*r;t.push(s);let p=i/r;for(let l=0;l<p;l++)if(t[l]<d){let c=(Number(t[l].toFixed(2))*100+Number(r.toFixed(2))*100)/100;t.push(c)}if(t[t.length-1]!==d&&t.push(d),e){let l=[...t].reverse();return{min:s,max:d,majorTicks:l}}return{min:s,max:d,majorTicks:t}}function Hh(a,n){let e=Math.floor(Math.log10(a)),t=a/Math.pow(10,e),i=null;return n?1.5>t?i=1:3>t?i=2:7>t?i=5:i=10:1>=t?i=1:2>=t?i=2:5>=t?i=5:i=10,i*Math.pow(10,e)}function Ba(a,n,e,t,i,r,o=!1){let s=[],d=[...a].sort((p,l)=>p.lower-l.lower);for(let p of d){let l=null,c=null,m;switch(p.state){case re.Emergency:m=n.zoneEmergency;break;case re.Alarm:m=n.zoneAlarm;break;case re.Warn:m=n.zoneWarn;break;case re.Alert:m=n.zoneAlert;break;case re.Nominal:m=n.zoneNominal;break;default:m="rgba(0,0,0,0)"}if(l=t.convertToUnit(e,p.lower),c=t.convertToUnit(e,p.upper),!(c<i||l>r)){if(l=l!==null?l:i,c=c!==null?c:r,l=Math.max(l,i),c>r){c=r,s.push({from:l,to:c,color:m});break}s.push({from:l,to:c,color:m})}}return o&&(s=s.map(p=>({from:r-p.to,to:r-p.from,color:p.color}))),s}var Uh=["linearGauge"],Gh=(()=>{class a extends Ne{ngGauge=se("linearGauge",{read:or});gauge=se("linearGauge",{read:et});initCompleted=!1;textValue="";value=0;gaugeOptions={};isGaugeVertical=!0;adjustedScale;metaSub;state=re.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngLinear",subType:"vertical",enableTicks:!1,highlightsWidth:5,useNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},de(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:re.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=re.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case re.Emergency:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency):(i.colorBarProgress=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency);break;case re.Alarm:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm):(i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm);break;case re.Warn:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn):(i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn);break;case re.Alert:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert):(i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert);break;default:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=Se(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=Se(this.widgetProperties.config.color,this.theme()).color):(i.colorBarProgress=Se(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=Se(this.widgetProperties.config.color,this.theme()).color)}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0){let i=Ba(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(i,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};this.widgetProperties.config.gauge.subType==="vertical"?(t.height=e.contentRect.height,t.width=t.height*.3,t.width>e.contentRect.width&&(t.width=e.contentRect.width,t.height=t.width/.3)):(t.width=e.contentRect.width,t.height=t.width*.3,t.height>e.contentRect.height&&(t.height=e.contentRect.height,t.width=t.height/.3)),t.height-=10,this.ngGauge().update(t)}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}setGaugeConfig(){let e=this.widgetProperties.config.gauge.subType==="vertical",t=this.widgetProperties.config.gauge.useNeedle,i=this.widgetProperties.config.gauge.enableTicks;this.adjustedScale={min:this.widgetProperties.config.displayScale.lower,max:this.widgetProperties.config.displayScale.upper,majorTicks:[]};let r=this.gauge().nativeElement.getBoundingClientRect(),o=null,s=null;this.widgetProperties.config.gauge.subType==="vertical"?(o=r.height,s=r.height*.3):(o=r.width*.3,s=r.width),i&&(this.adjustedScale=wo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper));let d={height:o,width:s,minValue:this.adjustedScale.min,maxValue:this.adjustedScale.max,valueInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,valueDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,title:this.widgetProperties.config.displayName,fontTitleSize:40,fontTitle:"Roboto",fontTitleWeight:"bold",barLength:e?80:90,barWidth:i?t?0:30:60,barProgress:!0,barBeginCircle:0,barStrokeWidth:0,barShadow:0,needle:t,needleType:this.widgetProperties.config.gauge.useNeedle?"arrow":"line",needleShadow:!0,needleSide:"both",needleStart:this.widgetProperties.config.gauge.useNeedle?e?200:155:-45,needleEnd:this.widgetProperties.config.gauge.useNeedle?e?175:180:55,colorNeedleEnd:Se(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowUp:Se(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowDown:Se(this.widgetProperties.config.color,this.theme()).color,units:this.widgetProperties.config.paths.gaugePath.convertUnitTo,fontUnits:"Roboto",fontUnitsWeight:"normal",borders:!1,borderOuterWidth:0,colorBorderOuter:"red",colorBorderOuterEnd:"red",borderMiddleWidth:0,colorBorderMiddle:"#63afdf",colorBorderMiddleEnd:"#63afdf",borderInnerWidth:0,colorBorderInner:"red",colorBorderInnerEnd:"#121212",borderShadowWidth:0,borderRadius:0,colorBarEnd:"",colorBarStroke:"0",valueBoxStroke:0,colorValueBoxRect:"",colorValueBoxRectEnd:"",colorValueBoxBackground:this.theme().background,fontValueSize:50,fontValue:"Roboto",fontValueWeight:"bold",valueTextShadow:!1,colorValueBoxShadow:"",fontNumbers:"Roboto",fontNumbersWeight:"normal",fontUnitsSize:this.isGaugeVertical?40:35,colorTitle:Se("contrast",this.theme()).dim,colorUnits:Se("contrast",this.theme()).dim,colorValueText:Se(this.widgetProperties.config.color,this.theme()).color,colorPlate:this.theme().cardColor,colorBar:this.theme().background,colorMajorTicks:Se("contrast",this.theme()).dim,colorMinorTicks:Se("contrast",this.theme()).dim,colorNumbers:Se("contrast",this.theme()).dim,majorTicks:i?this.adjustedScale.majorTicks:[],majorTicksInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,majorTicksDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,numberSide:t?"right":"left",fontNumbersSize:i?e?22:30:0,numbersMargin:e?t?-7:-3:t?-33:-5,tickSide:"left",ticksWidth:i?t&&e?15:10:0,ticksPadding:i?e?t?0:5:t?9:8:0,strokeTicks:i,minorTicks:i?2:0,ticksWidthMinor:i?6:0,valueBox:!0,valueBoxWidth:35,valueBoxBorderRadius:10,highlights:[],highlightsWidth:this.widgetProperties.config.gauge.highlightsWidth,animation:!0,animationRule:"linear",animatedValue:!1,animateOnInit:!1,animationDuration:this.widgetProperties.config.paths.gaugePath.sampleTime-25};Object.assign(this.gaugeOptions,d),this.setThemePaletteColor()}setThemePaletteColor(){let e="",t="";switch(this.widgetProperties.config.color){case"contrast":e=this.theme().contrast,t=this.theme().contrastDim;break;case"blue":e=this.theme().blue,t=this.theme().blueDim;break;case"green":e=this.theme().green,t=this.theme().greenDim;break;case"pink":e=this.theme().pink,t=this.theme().pinkDim;break;case"orange":e=this.theme().orange,t=this.theme().orangeDim;break;case"purple":e=this.theme().purple,t=this.theme().purpleDim;break;case"grey":e=this.theme().grey,t=this.theme().greyDim;break;case"yellow":e=this.theme().yellow,t=this.theme().yellowDim;break;default:e=this.theme().contrast,t=this.theme().contrastDim;break}Object.assign(this.gaugeOptions,{colorBarProgress:this.widgetProperties.config.gauge.useNeedle?"":e,colorBarProgressEnd:"",colorNeedle:this.widgetProperties.config.gauge.useNeedle?e:t,needleWidth:this.widgetProperties.config.gauge.useNeedle?45:0})}ngOnDestroy(){this.destroyDataStreams(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&(oe(i.ngGauge,Uh,5,or),oe(i.gauge,Uh,5,et)),t&2&&Re(2)},features:[me],decls:4,vars:7,consts:[["host",""],["linearGauge",""],[3,"configChange","config","id"],[1,"linearGauge",3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",2,0),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(2,"linear-gauge",3,1),W("onResize",function(s){return R(r),N(i.onResized(s))}),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(2),G("id",on(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ue("value-text",i.textValue))},dependencies:[We,ot,rt,Fa,or],styles:["linear-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} linear-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:5px}"]})}return a})();var qh=["radialGauge"],jh=(()=>{class a extends Ne{LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=se("radialGauge");gauge=se("radialGauge",{read:et});initCompleted=!1;textValue="";value=null;adjustedScale;gaugeOptions={};colorStrokeTicks="";unitName=null;metaSub;state=re.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1,highlightsWidth:5,scaleStart:180,barStartPosition:"left"},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1},de(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:re.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=re.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case re.Alarm:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm;break;case re.Warn:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn;break;case re.Alert:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert;break;default:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.widgetProperties.config.gauge.subType=="measuring"?Se(this.widgetProperties.config.color,this.theme()).color:Se(this.widgetProperties.config.color,this.theme()).dim,i.colorValueText=Se(this.widgetProperties.config.color,this.theme()).color}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0&&this.widgetProperties.config.gauge.subType=="measuring"){let i=this.widgetProperties.config.gauge.barStartPosition==="right",r=Ba(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max,i);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(r,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){switch(this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="bold",this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.valueInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.valueDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.majorTicksInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.majorTicksDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!1,this.gaugeOptions.animatedValue=!1,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-25,this.gaugeOptions.colorBorderShadow=!1,this.gaugeOptions.colorBorderOuter=this.theme().cardColor,this.gaugeOptions.colorBorderOuterEnd="",this.gaugeOptions.colorBorderMiddle=this.theme().cardColor,this.gaugeOptions.colorBorderMiddleEnd="",this.gaugeOptions.colorBarProgress=Se(this.widgetProperties.config.color,this.theme()).color,this.gaugeOptions.colorNeedle=Se(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorNeedleEnd=Se(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorTitle=this.theme().contrastDim,this.gaugeOptions.colorUnits=this.theme().contrastDim,this.gaugeOptions.colorValueText=Se(this.widgetProperties.config.color,this.theme()).color,this.colorStrokeTicks=this.theme().contrastDim,this.gaugeOptions.colorMinorTicks=this.theme().contrastDim,this.gaugeOptions.colorNumbers=this.theme().contrastDim,this.gaugeOptions.colorMajorTicks=this.theme().contrastDim,this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="black",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate,this.widgetProperties.config.gauge.subType){case"capacity":this.configureCapacityGauge();break;case"measuring":this.configureMeasuringGauge();break;default:}}configureCapacityGauge(){this.gaugeOptions.minValue=this.widgetProperties.config.displayScale.lower,this.gaugeOptions.maxValue=this.widgetProperties.config.displayScale.upper,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=40,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=20,this.gaugeOptions.colorBarProgress=Se(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=10,this.gaugeOptions.valueBoxBorderRadius=5,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.colorValueBoxRect="",this.gaugeOptions.colorValueBoxRectEnd="",this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=this.widgetProperties.config.gauge.scaleStart||180,this.gaugeOptions.majorTicks=0,this.gaugeOptions.exactTicks=!0,this.gaugeOptions.strokeTicks=!1,this.gaugeOptions.minorTicks=0,this.gaugeOptions.numbersMargin=0,this.gaugeOptions.fontNumbersSize=0,this.gaugeOptions.colorMajorTicks=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNumbers=this.gaugeOptions.colorMinorTicks="",this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=75,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}configureMeasuringGauge(){this.adjustedScale=wo(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper,this.widgetProperties.config.gauge.barStartPosition==="right"),this.gaugeOptions.minValue=this.adjustedScale.min,this.gaugeOptions.maxValue=this.adjustedScale.max,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=24,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=15,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=100,this.gaugeOptions.valueBoxBorderRadius=0,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.exactTicks=!1,this.gaugeOptions.majorTicks=this.adjustedScale.majorTicks,this.gaugeOptions.minorTicks=2,this.gaugeOptions.ticksAngle=270,this.gaugeOptions.startAngle=45,this.gaugeOptions.barStartPosition=this.widgetProperties.config.gauge.barStartPosition||"left",this.gaugeOptions.strokeTicks=!0,this.gaugeOptions.numbersMargin=3,this.gaugeOptions.fontNumbersSize=15,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=0,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=10,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}ngOnDestroy(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&(oe(i.ngGauge,qh,5),oe(i.gauge,qh,5,et)),t&2&&Re(2)},features:[me],decls:3,vars:7,consts:[["radialGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"radial-gauge",2,0),W("onResize",function(s){return R(r),N(i.onResized(s))}),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("id",on(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),ue("value-text",i.textValue))},dependencies:[We,ot,rt,Fa,_o],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:0}"]})}return a})();var Xf=["gaugeCanvas"];typeof steelseries>"u"&&(globalThis.steelseries={BackgroundColor:{DARK_GRAY:"darkGray",SATIN_GRAY:"satinGray",LIGHT_GRAY:"lightGray",WHITE:"white",BLACK:"black",BEIGE:"beige",BROWN:"brown",RED:"red",GREEN:"green",BLUE:"blue",ANTHRACITE:"anthracite",MUD:"mud",PUNCHED_SHEET:"punchedSheet",CARBON:"carbon",STAINLESS:"stainless",BRUSHED_METAL:"brushedMetal",BRUSHED_STAINLESS:"brushedStainless",TURNED:"turned"},FrameDesign:{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"}});var Qs={darkGray:steelseries.BackgroundColor.DARK_GRAY,satinGray:steelseries.BackgroundColor.SATIN_GRAY,lightGray:steelseries.BackgroundColor.LIGHT_GRAY,white:steelseries.BackgroundColor.WHITE,black:steelseries.BackgroundColor.BLACK,beige:steelseries.BackgroundColor.BEIGE,brown:steelseries.BackgroundColor.BROWN,red:steelseries.BackgroundColor.RED,green:steelseries.BackgroundColor.GREEN,blue:steelseries.BackgroundColor.BLUE,anthracite:steelseries.BackgroundColor.ANTHRACITE,mud:steelseries.BackgroundColor.MUD,punchedSheet:steelseries.BackgroundColor.PUNCHED_SHEET,carbon:steelseries.BackgroundColor.CARBON,stainless:steelseries.BackgroundColor.STAINLESS,brushedMetal:steelseries.BackgroundColor.BRUSHED_METAL,brushedStainless:steelseries.BackgroundColor.BRUSHED_STAINLESS,turned:steelseries.BackgroundColor.TURNED},Zs={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},$h=(()=>{class a{unitsService=D(Hi);canvasService=D(dt);canvasRef=se("gaugeCanvas");widgetUUID=U(void 0);subType=U(void 0);barGauge=U(void 0);radialSize=U(void 0);backgroundColor=U(void 0);frameColor=U(void 0);minValue=U(void 0);maxValue=U(void 0);decimals=U(void 0);zones=U(void 0);title=U(void 0);units=U(void 0);value=U(void 0);theme=U(void 0,{alias:"themeColors"});gaugeStarted=!1;gauge;gaugeOptions={};paddingTop=0;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;ngOnInit(){this.buildOptions()}buildOptions(){this.gaugeOptions.minValue=this.minValue(),this.gaugeOptions.maxValue=this.maxValue();let e=this.decimals();this.gaugeOptions.lcdDecimals=e??2,this.gaugeOptions.titleString=this.title(),this.gaugeOptions.unitString=this.units(),this.subType()=="radial"&&(this.gaugeOptions.gaugeType=this.setGaugeType(this.radialSize()));let t=this.zones();if(t){let i=[],r=[],o=[...t].sort((s,d)=>s.lower-d.lower);for(let s of o){let d=null,p=null,l;switch(s.state){case re.Emergency:l=this.theme().zoneEmergency;break;case re.Alarm:l=this.theme().zoneAlarm;break;case re.Warn:l=this.theme().zoneWarn;break;case re.Alert:l=this.theme().zoneAlert;break;case re.Nominal:l=this.theme().zoneNominal;break;default:l="rgba(0,0,0,0)"}let c=this.units();if(c=="ratio"?(d=s.lower,p=s.upper):(d=this.unitsService.convertToUnit(c,s.lower),p=this.unitsService.convertToUnit(c,s.upper)),!(p<this.minValue()||d>this.maxValue())){if(d=d!==null?d:this.minValue(),p=p!==null?p:this.maxValue(),d=Math.max(d,this.minValue()),p>this.maxValue()){p=this.maxValue(),i.push(steelseries.Section(d,p,l));break}i.push(steelseries.Section(d,p,l))}}this.gaugeOptions.section=i,this.gaugeOptions.area=r,this.gaugeOptions.useSectionColors=!0}Qs[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=Qs[this.backgroundColor()]),Zs[this.frameColor()]&&(this.gaugeOptions.frameDesign=Zs[this.frameColor()]),this.barGauge()&&(this.gaugeOptions.valueColor=steelseries.ColorDef.GREEN),this.gaugeOptions.lcdVisible=!0,this.gaugeOptions.thresholdVisible=!1,this.gaugeOptions.threshold=this.maxValue(),this.gaugeOptions.ledVisible=!1}setGaugeType(e){switch(e){case"quarter":return steelseries.GaugeType.TYPE1;case"half":return steelseries.GaugeType.TYPE2;case"three-quarter":return steelseries.GaugeType.TYPE3;case"full":default:return steelseries.GaugeType.TYPE4}}startGauge(e=!1){this.buildOptions();let t=this.widgetUUID();if(!t)return;let i=e||this.pendingStructuralRebuild;if(this.gauge&&!i){this.gauge.setValueAnimated&&this.value()!=null,this.gaugeStarted=!0;return}this.pendingStructuralRebuild=!1,this.gaugeStarted=!0;let r=this.subType();r==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):r==="linear"&&(this.barGauge()?this.gauge=new steelseries.LinearBargraph(t,this.gaugeOptions):this.gauge=new steelseries.Linear(t,this.gaugeOptions))}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t;if(this.subType()==="radial"){let i=Math.min(e.contentRect.height,e.contentRect.width);this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),r=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=r,t=`linear:${i}x${r}`}t!==this.lastSizeSignature&&(this.lastSizeSignature=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startGauge(!0),this.resizeTimer=null},120))}ngOnChanges(e){this.gaugeStarted&&(e.value&&!e.value.firstChange&&this.gauge.setValueAnimated(e.value.currentValue),e.zones&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.title&&this.gauge.setTitleString(e.title.currentValue),e.backgroundColor&&this.gauge.setBackgroundColor(Qs[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(Zs[e.frameColor.currentValue]),e.radialSize&&(this.pendingStructuralRebuild=!0,this.startGauge(!0)),e.minValue&&this.gauge.setMinValue(e.minValue.currentValue),e.maxValue&&this.gauge.setMaxValue(e.maxValue.currentValue))}ngOnDestroy(){let e=this.widgetUUID();if(e){let t=document.getElementById(e);this.canvasService.releaseCanvas(t,{clear:!0,removeFromDom:!0})}this.gauge=null}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&oe(i.canvasRef,Xf,5),t&2&&Re()},inputs:{widgetUUID:[1,"widgetUUID"],subType:[1,"subType"],barGauge:[1,"barGauge"],radialSize:[1,"radialSize"],backgroundColor:[1,"backgroundColor"],frameColor:[1,"frameColor"],minValue:[1,"minValue"],maxValue:[1,"maxValue"],decimals:[1,"decimals"],zones:[1,"zones"],title:[1,"title"],units:[1,"units"],value:[1,"value"],theme:[1,"themeColors","theme"]},features:[ra],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let r=J();g(0,"div",1),W("onResize",function(s){return R(r),N(i.onResized(s))}),g(1,"canvas",2,0),w(3," Browser does not support canvas element. "),C()()}t&2&&(x(),G("id",on(i.widgetUUID())))},dependencies:[ot,rt],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return a})();var Yh=(()=>{class a extends Ne{dataValue=0;zones=[];metaSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{type:"linear",lower:0,upper:100},gauge:{type:"steel",subType:"radial",backgroundColor:"carbon",faceColor:"anthracite",radialSize:"full",rotateFace:!1,digitalMeter:!1},numDecimal:2,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",e=>{(!e||!e.data)&&(e={data:{value:0,timestamp:new Date},state:"normal"}),this.dataValue=Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)}),this.widgetProperties.config.ignoreZones?this.zones=[]:(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(e=>{e?e.length>0?this.zones=e:this.zones=[]:this.zones=[]}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-gauge-steel"]],features:[me],decls:2,vars:16,consts:[[3,"configChange","config","id"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),Y(1,"gauge-steel",1),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("widgetUUID",i.widgetProperties.uuid)("subType",i.widgetProperties.config.gauge.subType)("barGauge",i.widgetProperties.config.gauge.digitalMeter)("radialSize",i.widgetProperties.config.gauge.radialSize)("backgroundColor",i.widgetProperties.config.gauge.backgroundColor)("frameColor",i.widgetProperties.config.gauge.faceColor)("minValue",i.widgetProperties.config.displayScale.lower)("maxValue",i.widgetProperties.config.displayScale.upper)("decimals",i.widgetProperties.config.numDecimal)("zones",i.zones)("title",i.widgetProperties.config.displayName)("units",i.widgetProperties.config.paths.gaugePath.convertUnitTo)("value",i.dataValue)("themeColors",i.theme()))},dependencies:[We,$h],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}gauge-steel[_ngcontent-%COMP%]{display:block;position:relative;width:100%;height:100%} .wrapper{display:block;position:relative;width:100%;height:100%;padding:10px} .wrapper>canvas{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var Kf=["plainIframe"];function Qf(a,n){if(a&1&&Y(0,"iframe",2,0),a&2){let e=X();G("src",e.widgetUrl,Mr)}}function Zf(a,n){a&1&&(g(0,"div",3)(1,"h2"),w(2,"Empty or bad URL"),C(),g(3,"p"),w(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),C(),g(5,"p"),w(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),C()())}var Xh=(()=>{class a extends Ne{_sanitizer=D(ca);_dashboard=D(ft);iframe=se.required("plainIframe");widgetUrl=null;displayTransparentOverlay=le("block");constructor(){super(),this.defaultConfig={widgetUrl:null,allowInput:!1},de(()=>{this._dashboard.isDashboardStatic()?this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}ngOnInit(){this.validateConfig(),window.addEventListener("message",this.handleIframeGesture),this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"),this.widgetUrl=this.resolveUrl(this.widgetProperties.config.widgetUrl)}ngAfterViewInit(){this.iframe()&&(this.iframe().nativeElement.onload=()=>this.injectHammerJS())}startWidget(){}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this.iframe()&&(this.iframe().nativeElement.onload=null)}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:r}=e.data.keyEventData,o=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(o)}}};injectHammerJS(){let e=document.getElementsByTagName("base")[0]?.href||"/",t=this.iframe().nativeElement.contentWindow,i=this.iframe().nativeElement.contentDocument;if(!i||!t){console.error("[WidgetIframe] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}if(t.Hammer){console.log("[WidgetIframe] HammerJS already loaded in iframe");return}let r=i.createElement("script");r.src=`${e}assets/hammer.min.js`,r.onload=()=>this.injectSwipeHandler(),i.body.appendChild(r)}injectSwipeHandler(){let e=this.iframe().nativeElement.contentDocument;if(!e){console.error("[WidgetIframe] Iframe contentDocument is undefined. Possible cross-origin issue or iframe not fully loaded.");return}let t=e.createElement("script");t.textContent=`
123
- if (!window.hammerInstance) {
124
- const hammer = new Hammer(document.body);
125
- hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL, velocity: 1.5, threshold: 200, domEvents: true });
126
-
127
- const instanceId = '${this.widgetProperties.uuid}'; // Include the instance ID in the script to prevent multiple listeners
128
-
129
- hammer.on('swipeleft', (ev) => {
130
- ev.preventDefault();
131
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
132
- const eventData = {
133
- type: ev.type,
134
- deltaX: ev.deltaX,
135
- deltaY: ev.deltaY,
136
- velocityX: ev.velocityX,
137
- velocityY: ev.velocityY,
138
- direction: ev.direction,
139
- distance: ev.distance,
140
- angle: ev.angle,
141
- center: ev.center,
142
- offsetDirection: ev.offsetDirection,
143
- scale: ev.scale,
144
- rotation: ev.rotation,
145
- isFinal: ev.isFinal,
146
- instanceId: instanceId // Include the instance ID in the event data
147
- };
148
- window.parent.postMessage({ gesture: 'swipeleft', eventData: eventData }, '*');
149
- });
150
-
151
- hammer.on('swiperight', (ev) => {
152
- ev.preventDefault();
153
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
154
- const eventData = {
155
- type: ev.type,
156
- deltaX: ev.deltaX,
157
- deltaY: ev.deltaY,
158
- velocityX: ev.velocityX,
159
- velocityY: ev.velocityY,
160
- direction: ev.direction,
161
- distance: ev.distance,
162
- angle: ev.angle,
163
- center: ev.center,
164
- offsetDirection: ev.offsetDirection,
165
- scale: ev.scale,
166
- rotation: ev.rotation,
167
- isFinal: ev.isFinal,
168
- instanceId: instanceId // Include the instance ID in the event data
169
- };
170
- window.parent.postMessage({ gesture: 'swiperight', eventData: eventData }, '*');
171
- });
172
-
173
- hammer.on('swipeup', (ev) => {
174
- ev.preventDefault();
175
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
176
- const eventData = {
177
- type: ev.type,
178
- deltaX: ev.deltaX,
179
- deltaY: ev.deltaY,
180
- velocityX: ev.velocityX,
181
- velocityY: ev.velocityY,
182
- direction: ev.direction,
183
- distance: ev.distance,
184
- angle: ev.angle,
185
- center: ev.center,
186
- offsetDirection: ev.offsetDirection,
187
- scale: ev.scale,
188
- rotation: ev.rotation,
189
- isFinal: ev.isFinal,
190
- instanceId: instanceId // Include the instance ID in the event data
191
- };
192
- window.parent.postMessage({ gesture: 'swipeup', eventData: eventData }, '*');
193
- });
194
-
195
- hammer.on('swipedown', (ev) => {
196
- ev.preventDefault();
197
- ev.srcEvent.stopPropagation(); // Stop propagation to prevent FSK from handling the gesture
198
- const eventData = {
199
- type: ev.type,
200
- deltaX: ev.deltaX,
201
- deltaY: ev.deltaY,
202
- velocityX: ev.velocityX,
203
- velocityY: ev.velocityY,
204
- direction: ev.direction,
205
- distance: ev.distance,
206
- angle: ev.angle,
207
- center: ev.center,
208
- offsetDirection: ev.offsetDirection,
209
- scale: ev.scale,
210
- rotation: ev.rotation,
211
- isFinal: ev.isFinal,
212
- instanceId: instanceId // Include the instance ID in the event data
213
- };
214
- window.parent.postMessage({ gesture: 'swipedown', eventData: eventData }, '*');
215
- });
216
-
217
- // Add keydown listener
218
- document.addEventListener('keydown', (event) => {
219
- if (event.ctrlKey && event.shiftKey && ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'E', 'F', 'N'].includes(event.key)) {
220
- const keyEventData = {
221
- key: event.key,
222
- ctrlKey: event.ctrlKey,
223
- shiftKey: event.shiftKey,
224
- instanceId: instanceId
225
- };
226
- window.parent.postMessage({ type: 'keydown', keyEventData: keyEventData }, '*');
227
- }
228
- });
229
-
230
- window.hammerInstance = hammer; // Store the instance to prevent multiple listeners
231
- }
232
- `,e.body.appendChild(t)}updateConfig(e){this.widgetUrl=this.resolveUrl(e.widgetUrl)}isValidProtocol(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch(t){return console.warn(`[Embed Widget] Invalid Url: ${e}, Error: ${t}`),!1}}resolveUrl(e){if(!e)return null;try{let t=new URL(e,window.location.origin);return this.isValidProtocol(t.href)?this._sanitizer.bypassSecurityTrustResourceUrl(t.href):null}catch(t){return console.warn(`[Embed Widget] Can't resolve Url: ${e}, Error: ${t}`),null}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&oe(i.iframe,Kf,5),t&2&&Re()},features:[me],decls:4,vars:5,consts:[["plainIframe",""],[2,"overflow","hidden",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(g(0,"widget-host",1),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),ze(1,Qf,2,1,"iframe",2)(2,Zf,7,0,"div",3),Y(3,"div",4),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),Fe(i.widgetUrl?1:2),x(2),_e("display",i.displayTransparentOverlay()))},dependencies:[We],styles:[".widgetIframe[_ngcontent-%COMP%]{background-color:#fff;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return a})();var So=(()=>{class a{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new en(t),timeoutID:null,intervalMS:i},this.kipTimers[e].currentValue.asObservable())}startTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID===null&&(this.kipTimers[e].timeoutID=setInterval(()=>{this.kipTimers[e].currentValue.next(this.kipTimers[e].currentValue.value+1)},this.kipTimers[e].intervalMS))}stopTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].timeoutID!==null&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null)}setTimer(e,t){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&this.kipTimers[e].currentValue.next(t)}deleteTimer(e){Object.prototype.hasOwnProperty.call(this.kipTimers,e)&&(this.stopTimer(e),this.kipTimers[e].currentValue.complete(),delete this.kipTimers[e])}isRunning(e){let t=!1;return e in this.kipTimers&&(t=this.kipTimers[e].timeoutID!==null),t}ngOnDestroy(){Object.keys(this.kipTimers).forEach(e=>{this.kipTimers[e].timeoutID&&(clearInterval(this.kipTimers[e].timeoutID),this.kipTimers[e].timeoutID=null),this.kipTimers[e].currentValue.complete()}),this.kipTimers={}}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var Jf=["canvasEl"];function eg(a,n){if(a&1){let e=J();g(0,"button",12),W("click",function(){R(e);let i=X();return N(i.startTimer())}),w(1," Start "),C()}}function tg(a,n){if(a&1){let e=J();g(0,"button",13),W("click",function(){R(e);let i=X();return N(i.pauseTimer())}),w(1," Pause "),C()}}var Kh=(()=>{class a extends Ne{TimersService=D(So);canvas=D(dt);canvasEl=se("canvasEl");dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=!1;timeName="race";warnColor=null;warmContrast=null;textColor=null;timerSub=null;canvasCtx=null;constructor(){super(),this.defaultConfig={timerLength:300,color:"contrast"},de(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.updateCanvas())})}ngOnInit(){this.validateConfig(),this.subscribeTimer(),this.startWidget()}startWidget(){this.getColors(this.widgetProperties.config.color),this.canvasCtx=this.canvasEl().nativeElement.getContext("2d")}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.updateCanvas()}onResized(e){e.contentRect.height<50||e.contentRect.width<50||(this.canvasEl().nativeElement.width!=Math.floor(e.contentRect.width)||this.canvasEl().nativeElement.height!=Math.floor(e.contentRect.height))&&(this.canvasEl().nativeElement.width=Math.floor(e.contentRect.width),this.canvasEl().nativeElement.height=Math.floor(e.contentRect.height/2),this.currentValueLength=0,this.updateCanvas())}subscribeTimer(){this.timerRunning=this.TimersService.isRunning(this.timeName),this.timerSub=this.TimersService.createTimer(this.timeName,-3e3,100).subscribe(e=>{this.dataValue=e,e>0?this.zoneState=re.Normal:e>-100?this.zoneState=re.Alarm:e>-300?this.zoneState=re.Warn:this.zoneState=re.Normal,this.zoneState==re.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.updateCanvas()},500):this.zoneState!=re.Alarm&&(clearInterval(this.flashInterval),this.flashInterval=null),this.updateCanvas()})}startTimer(){this.TimersService.startTimer(this.timeName),this.timerRunning=!0}resetTimer(){this.unsubscribeTimer(),this.TimersService.deleteTimer(this.timeName),this.timerRunning=!1,this.subscribeTimer()}pauseTimer(){this.TimersService.stopTimer(this.timeName),this.timerRunning=!1}roundToMin(){let e=this.dataValue;this.dataValue<0&&(e=e*-1);let t=e%600;this.dataValue>0?t>300?this.TimersService.setTimer(this.timeName,this.dataValue+(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue-t):t>300?this.TimersService.setTimer(this.timeName,this.dataValue-(600-t)):this.TimersService.setTimer(this.timeName,this.dataValue+t)}addOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue+600)}remOneMin(){this.TimersService.setTimer(this.timeName,this.dataValue-600)}getColors(e){switch(e){case"contrast":this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"blue":this.textColor=this.theme().blue,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"green":this.textColor=this.theme().green,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"pink":this.textColor=this.theme().pink,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"orange":this.textColor=this.theme().orange,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"purple":this.textColor=this.theme().purple,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"grey":this.textColor=this.theme().grey,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"yellow":this.textColor=this.theme().yellow,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;default:this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break}}unsubscribeTimer(){this.timerSub?.unsubscribe()}ngOnDestroy(){this.timerSub?.unsubscribe(),this.canvasCtx&&this.canvas.releaseCanvas(this.canvasEl()?.nativeElement,{clear:!0,removeFromDom:!0}),clearInterval(this.flashInterval),this.flashInterval=null,this.destroyDataStreams()}updateCanvas(){this.canvasCtx&&(this.canvas.clearCanvas(this.canvasCtx,this.canvasEl().nativeElement.width,this.canvasEl().nativeElement.height),this.drawValue())}drawValue(){let e=this.canvasEl().nativeElement,t=Math.floor(e.width*.95),i=Math.floor(e.height),r;if(this.dataValue!=null){let o=Math.abs(this.dataValue),s=Math.floor(o/600),d=Math.floor(o%600/10),p=Math.floor(o%10);r=`${s}:${("0"+d).slice(-2)}.${p}`,this.dataValue<0&&(r=`-${r}`)}else r="--";switch(this.currentValueLength!==r.length&&(this.currentValueLength=r.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.canvasCtx,r,t,i,"bold")),this.zoneState){case re.Alarm:this.flashOn?this.canvasCtx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.canvasCtx,0,0,e.width,e.height,this.warnColor),this.canvasCtx.fillStyle=this.textColor);break;case re.Warn:this.canvasCtx.fillStyle=this.warnColor;break;default:this.canvasCtx.fillStyle=this.textColor}this.canvas.drawText(this.canvasCtx,r,e.width/2,e.height/2,t,i,"bold",this.canvasCtx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&oe(i.canvasEl,Jf,5),t&2&&Re()},features:[me],decls:17,vars:4,consts:[["canvasEl",""],[3,"configChange","config","id"],[1,"raceWrapper",3,"onResize"],["id","canvasValue",1,"canvas-size"],[1,"timerBarContainer"],[1,"timer-button-groups","timer-adjusters-group"],["mat-flat-button","",1,"timer-adjust-buttons",3,"click"],["mat-flat-button","",1,"timer-reset-button",3,"click"],[1,"timer-button-groups","timer-countdown-group"],["mat-flat-button","",1,"timer-start-button","button-color-red"],["mat-flat-button","",1,"timer-start-button"],["mat-flat-button","",1,"timer-synch-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button","button-color-red",3,"click"],["mat-flat-button","",1,"timer-start-button",3,"click"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"canvas",3,0),g(4,"div",4)(5,"div",5)(6,"button",6),W("click",function(){return R(r),N(i.remOneMin())}),w(7," -1 "),C(),g(8,"button",7),W("click",function(){return R(r),N(i.resetTimer())}),w(9," Reset "),C(),g(10,"button",6),W("click",function(){return R(r),N(i.addOneMin())}),w(11," +1 "),C()(),g(12,"div",8),ze(13,eg,2,0,"button",9),ze(14,tg,2,0,"button",10),g(15,"button",11),W("click",function(){return R(r),N(i.roundToMin())}),w(16," Synch "),C()()()()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(13),Fe(i.timerRunning?-1:13),x(),Fe(i.timerRunning?14:-1))},dependencies:[We,ot,rt,Pt],styles:[".raceWrapper[_ngcontent-%COMP%]{height:100%;width:100%}.canvas-size[_ngcontent-%COMP%]{position:absolute;width:100%;height:50%;top:0;left:0;z-index:inherit}.button-color-red[_ngcontent-%COMP%]{--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.timerBarContainer[_ngcontent-%COMP%]{position:absolute;left:0;bottom:8%;height:auto;width:calc(100% - 20px);margin:0 10px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:stretch;align-content:stretch;gap:20px}.timer-button-groups[_ngcontent-%COMP%]{min-width:247px;max-width:100%;--mat-button-filled-container-shape: 5px}.timer-adjusters-group[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.timer-countdown-group[_ngcontent-%COMP%]{flex-grow:3;flex-shrink:3}.timer-synch-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-left:5px}.timer-start-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-right:5px}.timer-reset-button[_ngcontent-%COMP%]{width:calc(40% + -0px);margin:0 10px}.timer-adjust-buttons[_ngcontent-%COMP%]{width:calc(30% - 10px)}"]})}return a})();var ig=["dToLineCanvas"];function ng(a,n){if(a&1&&(g(0,"div",12),pe(),g(1,"svg",13)(2,"text",14),w(3),C()()(),mt(),g(4,"div",15),pe(),g(5,"svg",16)(6,"text",17)(7,"tspan",18),w(8,"\u2691"),C(),w(9),g(10,"tspan",19),w(11,"\u2691"),C()()()(),mt(),g(12,"div",20),pe(),g(13,"svg",21)(14,"text",14),w(15),C()()()),a&2){let e=X();x(3),Je(e.portBiasValue()),x(6),Je(e.lineLengthValue()),x(6),Je(e.stbBiasValue())}}function ag(a,n){if(a&1){let e=J();g(0,"button",22),W("click",function(){R(e);let i=X();return N(i.setLineEnd("port"))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",23),w(4,"Port End"),C()()()(),mt(),g(5,"button",24),W("click",function(){R(e);let i=X();return N(i.setLineEnd("stb"))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",23),w(9,"Stbd End"),C()()()()}}function rg(a,n){if(a&1){let e=J();g(0,"button",25),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("port",5,0))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",26),w(4,"+5m"),C()()()(),mt(),g(5,"button",25),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("port",-5,0))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",26),w(9,"-5m"),C()()()(),mt(),g(10,"button",27),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("stb",5,0))}),g(11,"mat-icon",8),pe(),g(12,"svg",9)(13,"text",26),w(14,"-5m"),C()()()(),mt(),g(15,"button",27),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("stb",-5,0))}),g(16,"mat-icon",8),pe(),g(17,"svg",9)(18,"text",26),w(19,"+5m"),C()()()()}}function og(a,n){if(a&1){let e=J();g(0,"button",25),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("port",0,i.toRadians(1)))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",26),w(4,"\u21911\xB0"),C()()()(),mt(),g(5,"button",25),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("port",0,i.toRadians(-1)))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",26),w(9,"\u21931\xB0"),C()()()(),mt(),g(10,"button",27),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("stb",0,i.toRadians(1)))}),g(11,"mat-icon",8),pe(),g(12,"svg",9)(13,"text",26),w(14,"\u21911\xB0"),C()()()(),mt(),g(15,"button",27),W("click",function(){R(e);let i=X();return N(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),g(16,"mat-icon",8),pe(),g(17,"svg",9)(18,"text",26),w(19,"\u21931\xB0"),C()()()()}}function sg(a,n){a&1&&Y(0,"div",11)}var Qh=(()=>{class a extends Ne{signalk=D(xi);dashboard=D(ft);dToLineCanvas=se.required("dToLineCanvas");dToLineContext;dToLineElement;canvasService=D(dt);dtsValue=null;lengthValue=null;biasValue=null;labelColor=le(void 0);valueColor=void 0;dtsColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=le("");lineLengthValue=le("");stbBiasValue=le("");infoFontSize="1em";initCompleted=!1;isDestroyed=!1;mode=0;destroyRef=D(Li);constructor(){super(),this.defaultConfig={displayName:"DTS",filterSelfPaths:!0,playBeeps:!0,convertUnitTo:"m",convertUnitToGroup:"Length",numDecimal:0,ignoreZones:!0,color:"contrast",enableTimeout:!1,dataTimeout:5,paths:{dtsPath:{description:"Distance to Start Line",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:500},lineLengthPath:{description:"Length of the start line",path:"self.navigation.racing.startLineLength",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3},lineBiasPath:{description:"Bias of the start line to starboard end",path:"self.navigation.racing.stbLineBias",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3}}},de(()=>{if(this.theme()){if(!this.initCompleted)return;lt(()=>{this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color,this.updateCanvas()})}})}ngOnInit(){this.validateConfig(),this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color}ngAfterViewInit(){this.initCompleted=!0,this.initCanvasContexts(),!this.isDestroyed&&this.startWidget()}initCanvasContexts(){this.dToLineElement=this.dToLineCanvas().nativeElement,this.canvasService.setHighDPISize(this.dToLineElement,this.dToLineElement.parentElement.getBoundingClientRect()),this.dToLineContext=this.dToLineElement.getContext("2d"),this.maxValueTextWidth=Math.floor(this.dToLineElement.width*.95),this.maxValueTextHeight=Math.floor(this.dToLineElement.height*.95)}startWidget(){this.widgetProperties.config.paths.dtsPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineLengthPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineBiasPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.unsubscribeDataStream(),this.dtsValue=null,this.lengthValue=null,this.biasValue=null,this.drawUnit(),this.observeDataStream("dtsPath",e=>{if(this.dtsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.dtsValue?this.dtsValue<0?this.dtsColor=this.theme().zoneAlarm:this.dtsValue<10?this.dtsColor=this.theme().zoneWarn:this.dtsValue<20?this.dtsColor=this.theme().zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor;else switch(e.state){case re.Alarm:this.dtsColor=this.theme().zoneAlarm;break;case re.Warn:this.dtsColor=this.theme().zoneWarn;break;case re.Alert:this.dtsColor=this.theme().zoneAlert;break;default:this.dtsColor=this.valueColor;break}this.updateCanvas()}),this.observeDataStream("lineLengthPath",e=>{this.lengthValue=e.data.value,this.updateCanvas()}),this.observeDataStream("lineBiasPath",e=>{this.biasValue=e.data.value,this.drawLenBias()}),this.signalk.subscribeRequest().pipe(Wt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.infoFontSize=Math.floor(e.contentRect.width*.05)+"px",this.initCanvasContexts(),!this.isDestroyed&&this.updateCanvas())}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),r=i.createOscillator(),o=i.createGain();r.connect(o),o.connect(i.destination),r.type="sine",r.frequency.value=e,o.gain.value=.1,r.start(),r.stop(i.currentTime+t/1e3)}}updateCanvas(){this.drawDToLine(),this.drawLenBias(),this.drawUnit()}drawDToLine(){if(this.dToLineCanvas){this.canvasService.clearCanvas(this.dToLineContext,this.dToLineElement.width,this.dToLineElement.height);let e=this.getValueText();this.canvasService.drawText(this.dToLineContext,e,Math.floor(this.dToLineElement.width/2),Math.floor(this.dToLineElement.height/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}}getValueText(){return this.dtsValue===null?"--":this.dtsValue.toFixed(this.widgetProperties.config.numDecimal)}drawUnit(){let e=this.widgetProperties.config.paths.dtsPath.convertUnitTo;this.canvasService.drawText(this.dToLineContext,e,Math.floor(this.dToLineElement.width-10*this.canvasService.scaleFactor),Math.floor(this.dToLineElement.height-7*this.canvasService.scaleFactor),Math.floor(this.dToLineElement.width*.25),Math.floor(this.dToLineElement.height*.15),"bold",this.dtsColor,"end","alphabetic")}drawLenBias(){if(this.widgetProperties.config.paths.lineLengthPath.path!==""&&this.lengthValue){let e=this.widgetProperties.config.paths.lineLengthPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(this.widgetProperties.config.numDecimal))}${e}\u2015`)}if(this.widgetProperties.config.paths.lineBiasPath.path!==""&&this.biasValue){let e=this.widgetProperties.config.paths.lineBiasPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(" +"+this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e))}}applyDecorations(e){switch(this.widgetProperties.config.paths.dtsPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}toggleMode(){this.mode=(this.mode+1)%4,this.updateCanvas()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.widgetProperties.uuid)}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.widgetProperties.uuid)}toRadians(e){return e?e*(Math.PI/180):null}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvasService.releaseCanvas(this.dToLineElement,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&oe(i.dToLineCanvas,ig,5),t&2&&Re()},features:[me],decls:17,vars:6,consts:[["dToLineCanvas",""],[3,"configChange","config","id"],[1,"text-generic-wrapper",3,"onResize"],[3,"text","color"],[1,"filler"],[1,"canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"widgetOverlay"],[1,"pin-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","pin"],[0,"xml","space","preserve","x","33","y","14"],[1,"len-bias-container"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","len-bias"],[0,"xml","space","preserve","x","45","y","9"],[1,"pin"],[1,"boat"],[1,"boat-container"],["width","100%","height","100%","viewBox","0 0 70 18","preserveAspectRatio","xMidYMid meet",1,"svg-content","boat"],["mat-flat-button","",1,"button","port-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","starboard-button",3,"click"],["mat-flat-button","",1,"button","port-small-button",3,"click"],[0,"xml","space","preserve","x","50","y","12"],["mat-flat-button","",1,"button","starboard-small-button",3,"click"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"widget-title",3),g(3,"div",4),Y(4,"canvas",5,0),C(),g(6,"div",6)(7,"button",7),W("click",function(){return R(r),N(i.toggleMode())}),g(8,"mat-icon",8),pe(),g(9,"svg",9)(10,"text",10),w(11,"\u22EE"),C()()()(),ze(12,ng,16,3)(13,ag,10,0)(14,rg,20,0)(15,og,20,0),C()(),ze(16,sg,1,0,"div",11),C()}if(t&2){let r;xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(2),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()),x(10),Fe((r=i.mode)===0?12:r===1?13:r===2?14:r===3?15:-1),x(4),Fe(i.dashboard.isDashboardStatic()?-1:16)}},dependencies:[We,ot,rt,jt,Lt,Pt,Ct,Ut],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.text-generic-wrapper[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%}.canvas[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;top:0;left:0;z-index:inherit}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.port-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.starboard-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-starboard-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.pin-container[_ngcontent-%COMP%]{flex-basis:18%}.pin[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.pin[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.len-bias-container[_ngcontent-%COMP%]{flex-basis:35%}.len-bias[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.len-bias[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:12px}.boat-container[_ngcontent-%COMP%]{flex-basis:18%}.boat[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.boat[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-size:19px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var lg=["timeToSCanvas"];function dg(a,n){if(a&1&&(g(0,"div",11),pe(),g(1,"svg",14)(2,"text",15),w(3),C()()()),a&2){let e=X();x(3),_t("Start at: ",e.startAtTime())}}function cg(a,n){if(a&1){let e=J();g(0,"button",16),W("click",function(){R(e);let i=X();return N(i.sendStartTimerCommand("start"))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",17),w(4,"Start"),C()()()(),mt(),g(5,"button",18),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(-60))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",17),w(9,"-1m"),C()()()(),mt(),g(10,"button",18),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(60))}),g(11,"mat-icon",8),pe(),g(12,"svg",9)(13,"text",17),w(14,"+1m"),C()()()()}}function hg(a,n){if(a&1){let e=J();g(0,"button",16),W("click",function(){R(e);let i=X();return N(i.sendStartTimerCommand("sync"))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",17),w(4,"Sync"),C()()()(),mt(),g(5,"button",19),W("click",function(){R(e);let i=X();return N(i.sendStartTimerCommand("reset"))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",17),w(9,"Reset"),C()()()()}}function ug(a,n){if(a&1){let e=J();g(0,"button",20),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(-60))}),g(1,"mat-icon",8),pe(),g(2,"svg",9)(3,"text",17),w(4,"-1m"),C()()()(),mt(),g(5,"button",18),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(-1))}),g(6,"mat-icon",8),pe(),g(7,"svg",9)(8,"text",17),w(9,"-1s"),C()()()(),mt(),g(10,"button",18),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(1))}),g(11,"mat-icon",8),pe(),g(12,"svg",9)(13,"text",17),w(14,"+1s"),C()()()(),mt(),g(15,"button",20),W("click",function(){R(e);let i=X();return N(i.adjustStartTime(60))}),g(16,"mat-icon",8),pe(),g(17,"svg",9)(18,"text",17),w(19,"+1m"),C()()()()}}function mg(a,n){if(a&1){let e=J();g(0,"input",21),Ee("ngModelChange",function(i){R(e);let r=X();return Te(r.startAtTimeEdit,i)||(r.startAtTimeEdit=i),N(i)}),W("keyup.enter",function(){R(e);let i=X();return N(i.setStartTime())}),C()}if(a&2){let e=X();xe("ngModel",e.startAtTimeEdit)}}function pg(a,n){a&1&&Y(0,"div",13)}var Zh=(()=>{class a extends Ne{signalk=D(xi);router=D(ln);dashboard=D(ft);timeToSCanvas=se.required("timeToSCanvas");canvasService=D(dt);ttsValue=null;dtsValue=null;labelColor=le(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;flashInterval=null;isDestroyed=!1;mode=le(1);timeToSContext;timeToSElement;destroyRef=D(Li);startAtTime=le("00:00:00");startAtTimeEdit=Dn("");constructor(){super(),this.defaultConfig={displayName:"TTS",nextDashboard:0,playBeeps:!0,filterSelfPaths:!0,paths:{ttsPath:{description:"Time to the Start in seconds",path:"self.navigation.racing.timeToStart",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"s",showConvertUnitTo:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"s",sampleTime:500},startTimePath:{description:"Time of the start",path:"self.navigation.racing.startTime",source:"default",pathType:"Date",pathRequired:!1,isPathConfigurable:!1,sampleTime:500},dtsPath:{description:"Distance to Start Line path, used to determine OCS",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m",sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!0},de(()=>{this.theme()&&lt(()=>{this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color,this.updateCanvas()})})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.initCanvases(),!this.isDestroyed&&(this.startWidget(),this.updateCanvas())}initCanvases(){this.timeToSElement=this.timeToSCanvas().nativeElement,this.canvasService.setHighDPISize(this.timeToSElement,this.timeToSElement.parentElement.getBoundingClientRect()),this.timeToSContext=this.timeToSElement.getContext("2d"),this.maxValueTextWidth=Math.floor(this.timeToSElement.width*.95),this.maxValueTextHeight=Math.floor(this.timeToSElement.height*.95)}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),r=i.createOscillator(),o=i.createGain();r.connect(o),o.connect(i.destination),r.type="sine",r.frequency.value=e,o.gain.value=.1,r.start(),r.stop(i.currentTime+t/1e3)}}startWidget(){this.unsubscribeDataStream(),this.ttsValue=null,this.dtsValue=null,this.labelColor.set(Se(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=Se(this.widgetProperties.config.color,this.theme()).color,this.observeDataStream("ttsPath",e=>{let t=this.ttsValue;if(this.ttsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=this.dtsValue<0?this.theme().zoneAlarm:this.theme().zoneWarn:this.ttsValue<60?this.valueStateColor=this.theme().zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor;else switch(e.state){case re.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case re.Warn:this.valueStateColor=this.theme().zoneWarn;break;case re.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.ttsValue===0?(this.mode.set(2),this.dtsValue<0&&(this.valueStateColor=this.theme().zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.updateCanvas(),this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"&&t!==0&&(this.ttsValue===0?this.beep(500,1e3):this.ttsValue<10?this.beep(450,100):this.ttsValue<60&&this.ttsValue%10===0?this.beep(400,150):this.ttsValue%60===0&&this.beep(350,200)),this.widgetProperties.config.nextDashboard>=0&&t===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)&&this.router.navigate(["/dashboard",this.widgetProperties.config.nextDashboard])}),this.observeDataStream("startTimePath",e=>{if(!e.data.value)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let t=new Date(e.data.value);this.startAtTimeEdit.set(t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.updateCanvas()}),this.observeDataStream("dtsPath",e=>{this.dtsValue=e.data.value}),this.signalk.subscribeRequest().pipe(Wt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}isStartTimerRunning(){return this.ttsValue>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.updateCanvas()}onResized(e){e.contentRect.height<25||e.contentRect.width<25||(this.initCanvases(),!this.isDestroyed&&this.updateCanvas())}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null),this.canvasService.releaseCanvas(this.timeToSElement,{clear:!0,removeFromDom:!0})}updateCanvas(){this.drawTimeToStart()}drawTimeToStart(){if(this.timeToSContext){this.canvasService.clearCanvas(this.timeToSContext,this.timeToSElement.width,this.timeToSElement.height);let e=this.getValueText();this.canvasService.drawText(this.timeToSContext,e,Math.floor(this.timeToSElement.width/2),Math.floor(this.timeToSElement.height/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}}getValueText(){if(this.ttsValue===null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),r=Math.floor(t%60),o=Math.floor(e%60);return`${i.toString()}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),r=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${r.toString().padStart(2,"0")}`}}toggleMode(){switch(this.mode.update(e=>(e+1)%5),this.mode()){case 1:this.isStartTimerRunning()&&this.mode.set(2);break;case 2:this.ttsValue!==0&&!this.isStartTimerRunning()&&this.mode.set(3);break;default:}this.updateCanvas()}sendStartTimerCommand(e){let t=this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.widgetProperties.uuid);switch(e){case"start":this.mode.set(0);break;case"reset":this.startAtTime.set("HH:MM:SS"),this.mode.set(1);break;default:}return t}adjustStartTime(e){return this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.widgetProperties.uuid)}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],r=t[1],o=t.length>=3?t[2]:0,s=new Date(e);s.setHours(i,r,o,0),s<=e&&s.setDate(s.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:s.toISOString()},this.widgetProperties.uuid)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&oe(i.timeToSCanvas,lg,5),t&2&&Re()},inputs:{startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},features:[me],decls:18,vars:6,consts:[["timeToSCanvas",""],[3,"configChange","config","id"],[1,"text-generic-wrapper",3,"onResize"],[3,"text","color"],[1,"filler"],[1,"canvas"],[1,"buttons-container"],["mat-flat-button","",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],[0,"xml","space","preserve","x","50","y","9"],[1,"start-at"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModel"],[1,"widgetOverlay"],["width","100%","height","100%","viewBox","0 0 90 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","svg-start-at"],[0,"xml","space","preserve","x","45","y","10"],["mat-flat-button","",1,"button","main-button",3,"click"],[0,"xml","space","preserve","x","50","y","11"],["mat-flat-button","",1,"button","other-small-button",3,"click"],["mat-flat-button","",1,"button","other-button",3,"click"],["mat-flat-button","",1,"button","main-small-button",3,"click"],["matInput","","type","time","step","1",1,"set-start-at",3,"ngModelChange","keyup.enter","ngModel"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"widget-title",3),g(3,"div",4),Y(4,"canvas",5,0),C(),g(6,"div",6)(7,"button",7),W("click",function(){return R(r),N(i.toggleMode())}),g(8,"mat-icon",8),pe(),g(9,"svg",9)(10,"text",10),w(11,"\u22EE"),C()()()(),ze(12,dg,4,1,"div",11)(13,cg,15,0)(14,hg,10,0)(15,ug,20,0)(16,mg,1,1,"input",12),C()(),ze(17,pg,1,0,"div",13),C()}if(t&2){let r;xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(2),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()),x(10),Fe((r=i.mode())===0?12:r===1?13:r===2?14:r===3?15:r===4?16:-1),x(5),Fe(i.dashboard.isDashboardStatic()?-1:17)}},dependencies:[We,ot,rt,jt,Lt,Pt,Ct,Ut,Qd,Yd,Xd,Kd],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.text-generic-wrapper[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%}.canvas[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;top:0;left:0;z-index:inherit}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.set-start-at[_ngcontent-%COMP%]{flex:1 1 auto;background-color:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%]{height:100%;width:100%;flex:1 1 auto}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:9px;font-weight:400;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.svg-start-at[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color)}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return a})();var fg=["gaugeBarAnimate"];function gg(a,n){if(a&1&&(pe(),ne(0,"rect",14)),a&2){let e=n.$implicit,t=X();ue("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var Jh=(()=>{class a{gaugeBarAnimate=se("gaugeBarAnimate");displayName=U.required();displayNameColor=U.required();dataValue=U.required();dataValueLabel=U.required();unitLabel=U.required();barColor=U.required();barColorGradient=U.required();barColorBackground=U.required();gaugeMinValue=U.required();gaugeMaxValue=U.required();highlights=U.required();scaleSliceValue=St(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=le(null);oldGaugeValue=le(null);constructor(){de(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),lt(()=>{this.oldGaugeValue.set(this.newGaugeValue()!==null?this.newGaugeValue():e),this.newGaugeValue.set(this.dataValue()!==null?(t-e)*this.scaleSliceValue():e)}),this.gaugeBarAnimate()?.nativeElement&&requestAnimationFrame(()=>{let i=this.gaugeBarAnimate();i?.nativeElement&&i.nativeElement.beginElement()})})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&oe(i.gaugeBarAnimate,fg,5),t&2&&Re()},inputs:{displayName:[1,"displayName"],displayNameColor:[1,"displayNameColor"],dataValue:[1,"dataValue"],dataValueLabel:[1,"dataValueLabel"],unitLabel:[1,"unitLabel"],barColor:[1,"barColor"],barColorGradient:[1,"barColorGradient"],barColorBackground:[1,"barColorBackground"],gaugeMinValue:[1,"gaugeMinValue"],gaugeMaxValue:[1,"gaugeMaxValue"],highlights:[1,"highlights"]},decls:26,vars:11,consts:[["gaugeBarAnimate",""],["viewBox","0 0 205 50","preserveAspectRatio","xMidYMid","version","1.1","id","svg8",1,"svg-simple-linear"],["id","defs2"],["id","gaugeBarGradient"],["id","stop849","offset","0",2,"stop-opacity","1"],["id","stop851","offset","0.40",2,"stop-opacity","0"],["id","linearGradient855","gradientTransform","translate(5,-30)","gradientUnits","userSpaceOnUse","y2","34.5","x2","-5","y1","34.5","x1","-6","href","#gaugeBarGradient"],["id","layer1",2,"display","inline"],["id","GaugeBackground","width","195","height","9","x","5","y","30","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","gaugeBar"],["id","gaugeValue","width","1","height","9","x","0","y","0","ry","0",2,"mix-blend-mode","normal","fill-opacity","1","stroke","none"],["id","gaugeValueGradient","transform","scale(-1,1)","width","1","height","9","x","-1","y","0","ry","0",2,"display","inline","opacity","1","mix-blend-mode","multiply","fill","url(#linearGradient855)","stroke","none"],[0,"xlink","href","#gaugeBar","transform","translate(5,30)"],["attributeName","transform","type","scale","begin","indefinite","dur","0.5s","additive","sum","fill","freeze"],["y","39.5","height","0.75","ry","0",2,"opacity","1","fill-opacity","1","stroke","none","stroke-width","0.265899","stroke-miterlimit","4","stroke-dasharray","none","stroke-opacity","1"],["id","layer2",2,"display","inline"],[0,"xml","space","preserve","x","4.1731763","y","25.413595","id","displayNameText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["id","tspan1945","x","4.1731763","y","25.413595",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","12.7px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["text-anchor","end","id","gaugeTexts","y","25.293016","x","200.37138",0,"xml","space","preserve",1,"simpleLinear-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","line-height","1.25","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","letter-spacing","0px","word-spacing","0px"],["y","25.293016","x","200.37138","id","valueText",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","22.5778px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal"],["dy","-9","id","unitText",2,"text-transform","capitalize","font-size","9.87778px"]],template:function(t,i){t&1&&(pe(),L(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),ne(3,"stop",4)(4,"stop",5),H(),ne(5,"linearGradient",6),H(),L(6,"g",7),ne(7,"rect",8),L(8,"defs")(9,"g",9),ne(10,"rect",10)(11,"rect",11),H()(),L(12,"use",12),ne(13,"animateTransform",13,0),H(),bi(15,gg,1,3,":svg:rect",14,rn),H(),L(17,"g",15)(18,"text",16)(19,"tspan",17),w(20),H()(),L(21,"text",18)(22,"tspan",19),w(23),H(),L(24,"tspan",20),w(25),H()()()()),t&2&&(x(3),ue("stop-color",i.barColorGradient()),x(),ue("stop-color",i.barColorGradient()),x(3),ue("fill",i.barColorBackground()),x(5),_e("fill",i.barColor()),x(),ue("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),x(2),_i(i.highlights()),x(4),ue("fill",i.displayNameColor()),x(),_t(" ",i.displayName()),x(3),Je(i.dataValueLabel()),x(2),Je(i.unitLabel()))},styles:["svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.simpleLinear-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}"]})}return a})();var eu=(()=>{class a extends Ne{_units=D(Hi);unitsLabel=le("");dataLabelValue=le("0");dataValue=le(null);barColor=le("");barColorGradient=le("");barColorBackground=le("");highlights=le([],{equal:ci});zonesSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,ignoreZones:!1,color:"contrast",enableTimeout:!1,dataTimeout:5},de(()=>{this.theme()&&(this.updateGaugeSettings(),this.startWidget())})}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe(),this.widgetProperties.config.gauge.unitLabelFormat=="abr"?this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo.substr(0,1)):this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo),this.observeDataStream("gaugePath",e=>{if(e.data.value==null?(this.dataValue.set(this.widgetProperties.config.displayScale.lower),this.dataLabelValue.set("--")):(this.dataValue.set(Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)),this.dataLabelValue.set(this.dataValue().toFixed(this.widgetProperties.config.numDecimal))),!this.widgetProperties.config.ignoreZones)switch(e.state){case re.Alarm:this.barColor.set(this.theme().zoneAlarm);break;case re.Warn:this.barColor.set(this.theme().zoneWarn);break;case re.Alert:this.barColor.set(this.theme().zoneAlert);break;case re.Nominal:this.barColor.set(this.theme().zoneNominal);break;default:this.barColor.set(Se(this.widgetProperties.config.color,this.theme()).color)}}),this.widgetProperties.config.ignoreZones?this.highlights.set([]):(this.observeMetaStream(),this.zonesSub=this.zones$.subscribe(e=>{e&&e.length>0?this.highlights.set(Ba(e,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this._units,this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper)):this.highlights.set([])}))}updateConfig(e){this.widgetProperties.config=e,this.updateGaugeSettings(),this.startWidget()}updateGaugeSettings(){switch(this.barColorBackground.set(this.theme().background),this.widgetProperties.config.color){case"contrast":this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer);break;case"blue":this.barColor.set(this.theme().blue),this.barColorGradient.set(this.theme().blueDimmer);break;case"green":this.barColor.set(this.theme().green),this.barColorGradient.set(this.theme().greenDimmer);break;case"pink":this.barColor.set(this.theme().pink),this.barColorGradient.set(this.theme().pinkDimmer);break;case"orange":this.barColor.set(this.theme().orange),this.barColorGradient.set(this.theme().orangeDimmer);break;case"purple":this.barColor.set(this.theme().purple),this.barColorGradient.set(this.theme().purpleDimmer);break;case"grey":this.barColor.set(this.theme().grey),this.barColorGradient.set(this.theme().greyDimmer);break;case"yellow":this.barColor.set(this.theme().yellow),this.barColorGradient.set(this.theme().yellowDimmer);break;default:this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer)}}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-simple-linear"]],features:[me],decls:2,vars:13,consts:[[3,"configChange","config","id"],[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),Y(1,"svg-simple-linear-gauge",1),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("displayName",i.widgetProperties.config.displayName)("displayNameColor",i.theme().contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",i.widgetProperties.config.displayScale.upper)("gaugeMinValue",i.widgetProperties.config.displayScale.lower)("highlights",i.highlights()))},dependencies:[We,Jh],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return a})();function vg(a,n){if(a&1){let e=J();g(0,"h3"),w(1,"Getting Started"),C(),g(2,"p"),w(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application:"),C(),g(4,"table",2)(5,"thead")(6,"tr")(7,"th"),w(8,"Actions"),C(),g(9,"th"),w(10,"Touch"),C(),g(11,"th"),w(12,"Mouse"),C(),g(13,"th"),w(14,"Keyboard Shortcuts"),C()()(),g(15,"tbody")(16,"tr")(17,"td"),w(18,"Open Actions menu"),C(),g(19,"td"),w(20,"Swipe left"),C(),g(21,"td"),w(22,"Click, drag left, and release"),C(),g(23,"td")(24,"kbd"),w(25,"Shift"),C(),w(26," + "),g(27,"kbd"),w(28,"Ctrl"),C(),w(29," + "),g(30,"kbd",3),w(31,"\u2190"),C(),w(32," (Left Arrow)"),C()(),g(33,"tr")(34,"td"),w(35,"Open Notification menu"),C(),g(36,"td"),w(37,"Swipe right"),C(),g(38,"td"),w(39,"Click, drag right, and release"),C(),g(40,"td")(41,"kbd"),w(42,"Shift"),C(),w(43," + "),g(44,"kbd"),w(45,"Ctrl"),C(),w(46," + "),g(47,"kbd",3),w(48,"\u2192"),C(),w(49," (Right Arrow)"),C()(),g(50,"tr")(51,"td"),w(52,"Cycle through dashboards"),C(),g(53,"td"),w(54,"Swipe up/down"),C(),g(55,"td"),w(56,"Click, drag up/down, and release"),C(),g(57,"td")(58,"kbd"),w(59,"Shift"),C(),w(60," + "),g(61,"kbd"),w(62,"Ctrl"),C(),w(63," + "),g(64,"kbd",3),w(65,"\u2191"),C(),w(66,"/"),g(67,"kbd",3),w(68,"\u2193"),C(),w(69," (Up/Down Arrow)"),C()(),g(70,"tr")(71,"td"),w(72,"Toggle Fullscreen"),C(),g(73,"td"),w(74,"N/A"),C(),g(75,"td"),w(76,"N/A"),C(),g(77,"td")(78,"kbd"),w(79,"Shift"),C(),w(80," + "),g(81,"kbd"),w(82,"Ctrl"),C(),w(83," + "),g(84,"kbd"),w(85,"F"),C()()(),g(86,"tr")(87,"td"),w(88,"Toggle Night mode"),C(),g(89,"td"),w(90,"N/A"),C(),g(91,"td"),w(92,"N/A"),C(),g(93,"td")(94,"kbd"),w(95,"Shift"),C(),w(96," + "),g(97,"kbd"),w(98,"Ctrl"),C(),w(99," + "),g(100,"kbd"),w(101,"N"),C()()(),g(102,"tr")(103,"td"),w(104,"Toggle dashboard edit mode"),C(),g(105,"td"),w(106,"N/A"),C(),g(107,"td"),w(108,"N/A"),C(),g(109,"td")(110,"kbd"),w(111,"Shift"),C(),w(112," + "),g(113,"kbd"),w(114,"Ctrl"),C(),w(115," + "),g(116,"kbd"),w(117,"E"),C()()()()(),g(118,"i"),w(119,"Note that the words Touch and Tap are synonymous with mouse click."),C(),Y(120,"br")(121,"br"),g(122,"h3"),w(123,"Log in to Signal K"),C(),g(124,"p"),w(125," The first step is to configure Signal K server authentication ("),g(126,"i"),w(127,"a pre-existing Signal K server username and password is required"),C(),w(128,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select "),g(129,"strong"),w(130,"Settings"),C(),w(131,". Toggle "),g(132,"strong"),w(133,"Login to server"),C(),w(134," and enter your Signal K credentials. "),C(),g(135,"ul")(136,"li")(137,"strong"),w(138,"Why log in?"),C(),w(139," Logging in allows KIP to do two things: 1) to send commands to Signal K and 2) to save its configuration on the server so it can be shared between multiple devices. It is the recommended method to use KIP. "),C(),g(140,"li"),w(141," If you don\u2019t have a Signal K account, ask your Signal K administrator, access the Signal K Admin Settings / Users page and create a user or check your server\u2019s documentation for setup instructions. "),C(),g(142,"li"),w(143," After entering your credentials, select "),g(144,"strong"),w(145,"Login"),C(),w(146," or "),g(147,"strong"),w(148,"Connect"),C(),w(149,". If successful, your connection status will update and live data will appear in KIP. "),C(),g(150,"li"),w(151," If you see an error, double-check your username and password, and make sure your device is on the same network as your Signal K server. "),C()(),g(152,"h3"),w(153,"Option 1: Load Demonstration Dashboards"),C(),g(154,"p"),w(155," Try the sample dashboards using data from your server: "),Y(156,"br"),g(157,"button",4),W("click",function(){R(e);let i=X();return N(i.loadDemoConfig())}),w(158,"Load Demo"),C()(),g(159,"h3"),w(160,"Option 2: Create Your Own Layout"),C(),g(161,"p"),w(162,' The text you are reading is actually a full screen widget in a dashboard. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. You can later add and manage dashboards using the Dashboards page from the Actions menu. '),C(),g(163,"p")(164,"strong"),w(165,"Try editing the Dashboard now to receive further instructions!"),C()()}}function yg(a,n){a&1&&(g(0,"h2"),w(1,"Changing Layouts"),C(),w(2," Follow these simple steps to learn how to change your dashboard layout: "),g(3,"ol")(4,"li"),w(5,"Resize this Tutorial widget using the now visible dashed borders or corners arrows. Resize it so it does not take up all the screen. You need free space in your dashboard to add more widgets. You can delete this Tutorial widget later when you are done with the instructions."),C(),g(6,"li"),w(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),C(),g(8,"li"),w(9,"Choose a widget from the selection panel to add it to the dashboard."),C()(),g(10,"h3"),w(11,"Possible widget operations"),C(),g(12,"ul")(13,"li")(14,"strong"),w(15,"Touch and drag"),C(),w(16," to move widgets"),C(),g(17,"li")(18,"strong"),w(19,"Drag corners and sides"),C(),w(20," to resize widgets"),C(),g(21,"li")(22,"strong"),w(23,"Double Tap"),C(),w(24," on a widget to configure it"),C(),g(25,"li")(26,"strong"),w(27,"Press and Hold"),C(),w(28," on a widget to delete or duplicate widgets"),C()(),g(29,"h2"),w(30,"Exiting dashboard edit mode"),C(),g(31,"p"),w(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),C(),g(33,"h2"),w(34,"Adding more dashboards"),C(),g(35,"p"),w(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),C())}var tu=(()=>{class a extends Ne{dashboard=D(ft);settings=D(ii);constructor(){super()}loadDemoConfig(){this.settings.loadDemoConfig()}startWidget(){}updateConfig(){}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-tutorial"]],features:[me],decls:4,vars:3,consts:[[3,"configChange","config","id"],[1,"tutorial-container"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(){return i.updateConfig()}),g(1,"div",1),ze(2,vg,166,0)(3,yg,37,0),C()()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(2),Fe(i.dashboard.isDashboardStatic()?2:3))},dependencies:[We,Pt],styles:[".tutorial-container[_ngcontent-%COMP%]{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow:none}.tutorial-container[_ngcontent-%COMP%]{padding:0 15px}.nav-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:2em}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .nav-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #bbb;padding:.5em 1em;text-align:center}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:#ddd;color:#222;font-weight:700}.nav-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#242424}.warning[_ngcontent-%COMP%]{color:#b71c1c}.button-group[_ngcontent-%COMP%]{margin-top:2em;display:flex;gap:20px}"]})}return a})();var bg=["rotatingDial"],_g=["awaIndicator"],wg=["twaIndicator"],Sg=["wptIndicator"],Cg=["setIndicator"],kg=["cogIndicator"],iu=([a,n],[e,t],[i,r])=>(Math.atan2(r-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,nu=(()=>{class a{rotatingDial=se.required("rotatingDial");awaIndicator=se.required("awaIndicator");twaIndicator=se.required("twaIndicator");wptIndicator=se.required("wptIndicator");setIndicator=se.required("setIndicator");cogIndicator=se.required("cogIndicator");compassHeading=U.required();courseOverGroundAngle=U(void 0);courseOverGroundEnabled=U.required();trueWindAngle=U.required();twsEnabled=U.required();twaEnabled=U.required();trueWindSpeed=U.required();trueWindSpeedUnit=U.required();appWindAngle=U.required();awsEnabled=U.required();appWindSpeed=U.required();appWindSpeedUnit=U.required();laylineAngle=U(void 0);closeHauledLineEnabled=U.required();sailSetupEnabled=U.required();windSectorEnabled=U.required();driftEnabled=U.required();driftSet=U(void 0);driftFlow=U(void 0);waypointAngle=U(void 0);waypointEnabled=U.required();trueWindMinHistoric=U(void 0);trueWindMidHistoric=U(void 0);trueWindMaxHistoric=U(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";trueWindHeading=0;waypointActive=le(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=D(at);constructor(){de(()=>{let e=this.waypointEnabled();lt(()=>{this.waypointActive.set(e)})}),de(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&lt(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(Vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(!1),this.updateWindSectors(!1))})}),de(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&lt(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&Vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=this.waypointAngle();lt(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&Vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&lt(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&Vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),de(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&lt(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&Vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&lt(()=>this.updateCloseHauledLines())}),de(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&lt(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&Vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),lt(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath="none",this.stbdWindSectorPath="none";return}this.updateWindSectors(!0)})})}updateCloseHauledLines(e=!0){if(!this.closeHauledLineEnabled())return;let t=Number(this.compass.newValue)||0,i=Number(this.awa.newValue)||0,r=Number(this.laylineAngle())||0,o=this.addHeading(t,this.addHeading(i,r*-1));this.animateLayline(this.portLaylinePrev,o,!0,e),this.portLaylinePrev=o;let s=this.addHeading(t,this.addHeading(i,r));this.animateLayline(this.stbdLaylinePrev,s,!1,e),this.stbdLaylinePrev=s}animateLayline(e,t,i,r=!0){if(i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.angleDelta(e,t)<this.EPS_ANGLE){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}if(!r){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let o=zc(e,t,this.ANIMATION_DURATION,s=>this.drawLayline(s,i),()=>{i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},this.ngZone);i?this.portLaylineAnimId=o:this.stbdLaylineAnimId=o}drawLayline(e,t){let i=e*Math.PI/180,r=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),o=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${r},${o}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${r},${o}`}windSectorsInitialized=!1;updateWindSectors(e=!0){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},i={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.windSectorsInitialized=!0,e?(this.animateWindSector(t,t,!0),this.animateWindSector(i,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i;return}e?this.angleDelta(this.portSectorPrev.min,t.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,t.max)<this.EPS_ANGLE?(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i}animateWindSector(e,t,i){if(i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(e.min,t.min)<this.EPS_ANGLE&&this.angleDelta(e.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(e.max,t.max)<this.EPS_ANGLE){let s=this.computeSectorPath(t,i);i?this.portWindSectorPath=s:this.stbdWindSectorPath=s,i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let o=Fc(e,t,this.ANIMATION_DURATION,s=>{let d=this.computeSectorPath(s,i);i?this.portWindSectorPath=d:this.stbdWindSectorPath=d},()=>{i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},this.ngZone);i?this.portSectorAnimId=o:this.stbdSectorAnimId=o}addHeading(e=0,t=0){let i=(e+t)%360;return i<0&&(i+=360),i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let r=this.animationFrameIds.get(i);r&&cancelAnimationFrame(r),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let r=(Number(this.laylineAngle())||0)*(t?-1:1),o=Number(this.compass.newValue)||0,s=this.addHeading(o,this.addHeading(e.min,r)),d=this.addHeading(o,this.addHeading(e.mid,r)),p=this.addHeading(o,this.addHeading(e.max,r)),l=this.RADIUS*Math.sin(s*Math.PI/180)+this.CENTER,c=this.RADIUS*Math.cos(s*Math.PI/180)*-1+this.CENTER,m=this.RADIUS*Math.sin(d*Math.PI/180)+this.CENTER,v=this.RADIUS*Math.cos(d*Math.PI/180)*-1+this.CENTER,b=this.RADIUS*Math.sin(p*Math.PI/180)+this.CENTER,k=this.RADIUS*Math.cos(p*Math.PI/180)*-1+this.CENTER,M=Math.abs(iu([l,c],[m,v],[b,k]))>Math.PI/2?0:1,F=iu([b,k],[l,c],[m,v])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${l},${c} A ${this.RADIUS},${this.RADIUS} 0 ${M} ${F} ${b},${k} z`}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&(oe(i.rotatingDial,bg,5),oe(i.awaIndicator,_g,5),oe(i.twaIndicator,wg,5),oe(i.wptIndicator,Sg,5),oe(i.setIndicator,Cg,5),oe(i.cogIndicator,kg,5)),t&2&&Re(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:158,vars:43,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(pe(),L(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),ne(3,"stop",9)(4,"stop",10),H(),L(5,"linearGradient",11),ne(6,"stop",9)(7,"stop",10),H(),L(8,"linearGradient",12),ne(9,"stop",13)(10,"stop",14),H(),L(11,"linearGradient",15),ne(12,"stop",16),H(),L(13,"clipPath",17),ne(14,"ellipse",18),H(),ne(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),H(),L(18,"g",22)(19,"g",23),ne(20,"path",24)(21,"path",25),H()(),L(22,"g",26)(23,"g",27),ne(24,"path",28)(25,"path",29)(26,"path",30),H(),L(27,"g",null,0)(29,"g",31),ne(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68),L(67,"text",69)(68,"tspan",70),w(69,"330"),H()(),L(70,"text",71)(71,"tspan",72),w(72,"300"),H()(),L(73,"text",73)(74,"tspan",74),w(75,"W"),H()(),L(76,"text",75)(77,"tspan",76),w(78,"240"),H()(),L(79,"text",77)(80,"tspan",78),w(81,"210"),H()(),L(82,"text",79)(83,"tspan",80),w(84,"S"),H()(),L(85,"text",81)(86,"tspan",82),w(87,"150"),H()(),L(88,"text",83)(89,"tspan",84),w(90,"120"),H()(),L(91,"text",85)(92,"tspan",86),w(93,"E"),H()(),L(94,"text",87)(95,"tspan",88),w(96,"60"),H()(),L(97,"text",89)(98,"tspan",90),w(99,"30"),H()(),L(100,"text",91)(101,"tspan",92),w(102,"N"),H()()(),L(103,"g",93),ne(104,"path",94)(105,"path",95),H(),L(106,"g",96),ne(107,"path",97)(108,"path",98),H(),L(109,"g",null,1),ne(111,"path",99)(112,"ellipse",100),H(),L(113,"g",null,2),ne(115,"path",101),H()()(),L(116,"g",102)(117,"g",103)(118,"text",104),w(119),H(),L(120,"text",105),w(121),zi(122,"number"),H(),L(123,"text",106),w(124,"TWS"),H()(),L(125,"g",107)(126,"text",108),w(127),H(),L(128,"text",109),w(129),zi(130,"number"),H(),L(131,"text",110),w(132,"AWS"),H()()(),L(133,"g",111)(134,"text",112),w(135),zi(136,"number"),H()(),L(137,"g",113)(138,"g",null,3),ne(140,"path",114),H(),L(141,"g",null,4),ne(143,"path",115),L(144,"text",116),w(145,"A"),H()(),L(146,"g",null,5),ne(148,"path",117),L(149,"text",118),w(150,"T"),H()()(),L(151,"g",119),ne(152,"rect",120),L(153,"text",121)(154,"tspan"),w(155),L(156,"tspan"),w(157,"\xB0"),H()()()()()),t&2&&(x(103),_e("display",i.closeHauledLineEnabled()?"inline":"none"),x(),_e("display",i.appWindAngle()!=null?"inline":"none"),ue("d",i.closeHauledLineStbdPath),x(),_e("display",i.appWindAngle()!=null?"inline":"none"),ue("d",i.closeHauledLinePortPath),x(),_e("display",i.windSectorEnabled()?"inline":"none"),x(),_e("display",i.portWindSectorPath!="none"?"inline":"none"),ue("d",i.portWindSectorPath),x(),_e("display",i.stbdWindSectorPath!="none"?"inline":"none"),ue("d",i.stbdWindSectorPath),x(),ue("display",i.waypointActive()?"inline":"none"),x(4),_e("display",i.driftEnabled()?"inline":"none"),x(4),_e("display",i.twsEnabled()?"inline":"none"),x(2),Je(i.trueWindSpeedUnit()),x(2),Je(la(122,34,i.trueWindSpeed(),"1.1-1")??"--"),x(4),_e("display",i.awsEnabled()?"inline":"none"),x(2),Je(i.appWindSpeedUnit()),x(2),Je(la(130,37,i.appWindSpeed(),"1.1-1")??"--"),x(4),_e("display",i.driftEnabled()?"inline":"none"),x(2),Je(la(136,40,i.driftFlow(),"1.1-1")??"--"),x(3),ue("display",i.courseOverGroundEnabled()?"inline":"none"),x(8),_e("display",i.twaEnabled()?"inline":"none"),x(9),Je(i.headingValue))},dependencies:[dd],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"],changeDetection:0})}return a})();var au=(()=>{class a extends Ne{zones=D(at);cdr=D(Fi);markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,twaEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors();let e=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,t=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo;this.appWindSpeedUnit!==e&&(this.appWindSpeedUnit=e),this.trueWindSpeedUnit!==t&&(this.trueWindSpeedUnit=t),this.zones.runOutsideAngular(()=>{this.observeDataStream("headingPath",i=>{i.data.value==null&&(i.data.value=0);let r=this.normalizeAngle(i.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading,r)>=this.DEG_EPSILON)&&(this.currentHeading=r,this.hasHeading=!0,this.scheduleMarkForCheck())}),this.observeDataStream("courseOverGround",i=>{i.data.value==null&&(i.data.value=0);let r=this.normalizeAngle(i.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle,r)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle=r,this.hasCOG=!0,this.scheduleMarkForCheck())}),this.observeDataStream("drift",i=>{i.data.value==null&&(i.data.value=0);let r=i.data.value;(!this.hasDrift||Math.abs(this.driftFlow-r)>=this.SPEED_EPSILON)&&(this.driftFlow=r,this.hasDrift=!0,this.scheduleMarkForCheck())}),this.observeDataStream("set",i=>{i.data.value==null&&(i.data.value=0);let r=this.normalizeAngle(i.data.value);(!this.hasSet||this.angleDelta(this.driftSet,r)>=this.DEG_EPSILON)&&(this.driftSet=r,this.hasSet=!0,this.scheduleMarkForCheck())}),this.observeDataStream("nextWaypointBearing",i=>{let r=i.data.value,o=this.normalizeAngle(r);(!this.hasWPT||this.angleDelta(this.waypointAngle,o)>=this.DEG_EPSILON)&&(this.waypointAngle=o,this.hasWPT=!0,this.scheduleMarkForCheck())}),this.observeDataStream("appWindAngle",i=>{i.data.value==null&&(i.data.value=0);let r=i.data.value,o=this.normalizeAngle(r);(!this.hasAWA||this.angleDelta(this.appWindAngle,o)>=this.DEG_EPSILON)&&(this.appWindAngle=o,this.hasAWA=!0,this.widgetProperties.config.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(r)),this.scheduleMarkForCheck())}),this.observeDataStream("appWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let r=i.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed-r)>=this.SPEED_EPSILON)&&(this.appWindSpeed=r,this.hasAWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let r=i.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed-r)>=this.SPEED_EPSILON)&&(this.trueWindSpeed=r,this.hasTWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindAngle",i=>{i.data.value==null&&(i.data.value=0);let r=this.widgetProperties.config.paths.trueWindAngle.path,o=r.includes("angleTrueWater")||r.includes("angleTrueGround")?this.addHeading(this.currentHeading,i.data.value):i.data.value,s=this.normalizeAngle(o);(!this.hasTWA||this.angleDelta(this.trueWindAngle,s)>=this.DEG_EPSILON)&&(this.trueWindAngle=s,this.hasTWA=!0,this.scheduleMarkForCheck())})}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors(),this.scheduleRafId!=null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.widgetProperties.config.windSectorEnable){this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xr(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),r=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:r});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:r,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:r,u:i})}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,r)=>{let o=r;for(;o<i.min-180;)o+=360;for(;o>i.max+180;)o-=360;return i.min=Math.min(i.min,o),i.max=Math.max(i.max,o),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){if(!this.widgetProperties.config.windSectorEnable)return;let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let l=this.windSamples.shift();if(!l)break;this.windMinDeque.length&&this.windMinDeque[0].i===l.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===l.i&&this.windMaxDeque.shift()}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric!==void 0||this.trueWindMidHistoric!==void 0||this.trueWindMaxHistoric!==void 0)&&(this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,r=(t+i)/2,o=this.normalizeAngle(t),s=this.normalizeAngle(r),d=this.normalizeAngle(i);(this.lastSector.min===void 0||this.angleDelta(this.lastSector.min,o)>=this.DEG_EPSILON||this.lastSector.mid===void 0||this.angleDelta(this.lastSector.mid,s)>=this.DEG_EPSILON||this.lastSector.max===void 0||this.angleDelta(this.lastSector.max,d)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric=o,this.trueWindMidHistoric=s,this.trueWindMaxHistoric=d,this.lastSector={min:o,mid:s,max:d},this.scheduleMarkForCheck())}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}unwrapAngle(e){if(this.lastUnwrapped==null)return this.lastUnwrapped=e,e;let t=this.lastUnwrapped,i=(t%360+360)%360,r=(e-i+540)%360-180,o=t+r;return this.lastUnwrapped=o,o}normalizeAngle(e){return(e%360+360)%360}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}scheduleMarkForCheck(){this.markScheduled||(this.markScheduled=!0,this.zones.runOutsideAngular(()=>{this.scheduleRafId=requestAnimationFrame(()=>{this.zones.run(()=>{this.cdr.markForCheck()}),this.markScheduled=!1,this.scheduleRafId=null})}))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-wind-steer"]],features:[me],decls:2,vars:26,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),Y(1,"svg-windsteer",1),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("twaEnabled",i.widgetProperties.config.twaEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[nu,We],encapsulation:2,changeDetection:0})}return a})();var xg=["canvasEl"],ru=(()=>{class a extends Ne{canvasEl=se("canvasEl");canvas=D(dt);canvasCtx=null;isDestroyed=!1;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0},de(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.updateCanvas())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.canvas.setHighDPISize(this.canvasEl().nativeElement,this.canvasEl().nativeElement.parentElement.getBoundingClientRect()),this.canvasCtx=this.canvasEl().nativeElement.getContext("2d"),this.maxTextWidth=this.canvasEl().nativeElement.width-40,this.maxTextHeight=this.canvasEl().nativeElement.height-40,!this.isDestroyed&&this.updateCanvas()}ngOnDestroy(){this.isDestroyed=!0,this.canvas.releaseCanvas(this.canvasEl()?.nativeElement,{clear:!0,removeFromDom:!0})}startWidget(){}updateConfig(e){e.displayName?this.widgetProperties.config.displayName=e.displayName:this.widgetProperties.config.displayName="",this.updateCanvas()}onResized(e){this.canvas.setHighDPISize(this.canvasEl().nativeElement,e.contentRect),this.maxTextWidth=Math.floor(this.canvasEl().nativeElement.width-40),this.maxTextHeight=Math.floor(this.canvasEl().nativeElement.height-40),this.updateCanvas()}getColors(e){switch(e){case"contrast":return this.theme().contrast;case"blue":return this.theme().blue;case"green":return this.theme().green;case"pink":return this.theme().pink;case"orange":return this.theme().orange;case"purple":return this.theme().purple;case"grey":return this.theme().grey;case"yellow":return this.theme().yellow;default:return this.theme().contrast}}updateCanvas(){this.canvasCtx&&(this.canvas.clearCanvas(this.canvasCtx,this.canvasEl().nativeElement.width,this.canvasEl().nativeElement.height),this.widgetProperties.config.noBgColor||this.canvas.drawRectangle(this.canvasCtx,0,0,this.canvasEl().nativeElement.width,this.canvasEl().nativeElement.height,this.getColors(this.widgetProperties.config.bgColor)),this.drawValue())}drawValue(){this.canvas.drawText(this.canvasCtx,this.widgetProperties.config.displayName,Math.floor(this.canvasEl().nativeElement.width/2),Math.floor(this.canvasEl().nativeElement.height/2+10),this.maxTextWidth,this.maxTextHeight,"bold",this.getColors(this.widgetProperties.config.color))}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&oe(i.canvasEl,xg,5),t&2&&Re()},features:[me],decls:4,vars:2,consts:[["canvasEl",""],[3,"configChange","config","id"],[1,"wrapper",3,"onResize"],[1,"canvas",2,"z-index","inherit"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),g(1,"div",2),W("onResize",function(s){return R(r),N(i.onResized(s))}),Y(2,"canvas",3,0),C()()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid))},dependencies:[We,ot,rt],styles:["[_nghost-%COMP%]{display:block;position:relative;width:100%;height:100%}.wrapper[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%}.canvas[_ngcontent-%COMP%]{display:block;z-index:inherit;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}"]})}return a})();var Tg=["svgSlider"];function Eg(a,n){a&1&&Y(0,"div",11)}var ou=(()=>{class a extends Ne{svgElement=se.required("svgSlider");canvas=D(dt);dashboard=D(ft);signalkRequestsService=D(xi);appService=D(Ht);labelColor=le(void 0);barColor=le(void 0);skRequestSub=new Cr;lineStartPx;lineWidthPx;lineEndPx;resizeTimeout;debounceTimeout;handlePosition=20;pathValue=0;lineStart=this.handlePosition;isDragStarted=!1;lineWidth="0px";VIEWBOX_WIDTH=200;LINE_START=20;LINE_WIDTH=160;colorMap=new Map([["contrast",{label:this.theme().contrastDim,bar:this.theme().contrast}],["blue",{label:this.theme().blueDim,bar:this.theme().blue}],["green",{label:this.theme().greenDim,bar:this.theme().green}],["pink",{label:this.theme().pinkDim,bar:this.theme().pink}],["orange",{label:this.theme().orangeDim,bar:this.theme().orange}],["purple",{label:this.theme().purpleDim,bar:this.theme().purple}],["grey",{label:this.theme().greyDim,bar:this.theme().grey}],["yellow",{label:this.theme().yellowDim,bar:this.theme().yellow}]]);valueChange$=new xt;constructor(){super(),this.defaultConfig={displayName:"Slider Label",filterSelfPaths:!0,paths:{gaugePath:{description:"PUT Supported Numeric Path. IMPORTANT: Format must be set to (base)",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,showConvertUnitTo:!1,convertUnitTo:null,supportsPut:!0,sampleTime:500}},displayScale:{lower:0,upper:1,type:"linear"},enableTimeout:!1,dataTimeout:5,color:"contrast"},de(()=>{this.theme()&&this.getColors(this.widgetProperties.config.color)})}ngOnInit(){this.validateConfig(),this.valueChange$.pipe(li(e=>this.isWithinMargin(e,this.widgetProperties.config.displayScale.lower)?this.widgetProperties.config.displayScale.lower:this.isWithinMargin(e,this.widgetProperties.config.displayScale.upper)?this.widgetProperties.config.displayScale.upper:parseFloat(e.toFixed(2))),Tr(200),Hl()).subscribe(e=>{this.sendValue(e)})}ngAfterViewInit(){this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data){this.handlePosition=this.mapValueToPosition(this.widgetProperties.config.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(e.data.value))}),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}mapValueToPosition(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.widgetProperties.config.displayScale.lower)/t*i+this.LINE_START}mapPositionToValue(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.LINE_START)/i*t+this.widgetProperties.config.displayScale.lower}isWithinMargin(e,t){let i=(this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower)*.01;return Math.abs(e-t)<=i}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}sendValue(e){let t=this.widgetProperties.config.paths.gaugePath.path;this.signalkRequestsService.putRequest(t,e,this.widgetProperties.uuid)}updateConfig(e){this.widgetProperties.config=e,this.getColors(this.widgetProperties.config.color),this.calculateLineBounds(),this.startWidget()}onResized(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.calculateLineBounds()},200)}calculateLineBounds(){if(!this.svgElement()?.nativeElement){console.warn("[Slider Widget] SVG element is not initialized yet.");return}let e=this.svgElement().nativeElement.getBoundingClientRect(),t=this.LINE_START/this.VIEWBOX_WIDTH*e.width,i=this.LINE_WIDTH/this.VIEWBOX_WIDTH*e.width;this.lineStartPx=t,this.lineWidthPx=i,this.lineEndPx=this.lineStartPx+this.lineWidthPx}updateHandlePosition(e){this.handlePosition=e,this.lineWidth=`${e-this.lineStart}px`}getPointerX(e){return e.clientX-this.svgElement().nativeElement.getBoundingClientRect().left}onPointerDown(e){this.isDragStarted=!0,this.onPointerMove(e),e.stopPropagation(),e.preventDefault()}onPointerMove(e){if(this.isDragStarted){let t=this.getPointerX(e);if(t>=this.lineStartPx&&t<=this.lineEndPx){let i=(t-this.lineStartPx)/this.lineWidthPx*this.LINE_WIDTH+this.LINE_START;this.updateHandlePosition(i),this.handlePosition<=this.LINE_START?this.pathValue=this.widgetProperties.config.displayScale.lower:this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=this.widgetProperties.config.displayScale.upper:this.pathValue=this.mapPositionToValue(this.handlePosition),this.valueChange$.next(this.pathValue)}}}onPointerUp(){this.isDragStarted=!1,this.valueChange$.next(this.pathValue)}onPointerLeave(){this.isDragStarted&&(this.isDragStarted=!1,this.valueChange$.next(this.pathValue))}getColors(e){let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&oe(i.svgElement,Tg,5),t&2&&Re()},features:[me],decls:12,vars:9,consts:[["svgSlider",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],["width","100%","height","100%","viewBox","0 40 200 40"],["width","160","height","8","rx","4.5","id","rect3","x","20","y","56",1,"slider-bg-bar",2,"display","inline","stroke-width","1.57144"],["height","8","rx","4.5","id","rect3","x","20","y","56",2,"display","inline","stroke-width","1.57144"],["id","g22"],["cy","60","fill","#ffffff","id","circle3","r","19.549999",2,"display","inline","fill","#4d4d4d","fill-opacity","1","stroke","#8c8c8c","stroke-width","0.9","stroke-dasharray","none","stroke-opacity","1"],["cy","60","fill","#ffffff","id","circle3-3","r","17.950001",2,"display","inline","fill","#ffffff","fill-opacity","1","stroke","#e6e6e6","stroke-width","1.8","stroke-dasharray","none","stroke-opacity","0.97"],["cursor","pointer","width","200","height","40","x","0","y","40",2,"display","inline","fill","rgba(0, 0, 0, 0)","stroke","none","stroke-width","0.3","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0",3,"pointerdown","pointerup","pointermove","pointerleave"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),Y(1,"widget-title",2),g(2,"div",3),W("onResize",function(){return R(r),N(i.onResized())}),pe(),g(3,"svg",4),Y(4,"rect",5)(5,"rect",6),g(6,"g",7),Y(7,"circle",8)(8,"circle",9),C(),g(9,"rect",10,0),W("pointerdown",function(s){return R(r),N(i.onPointerDown(s))})("pointerup",function(){return R(r),N(i.onPointerUp())})("pointermove",function(s){return R(r),N(i.onPointerMove(s))})("pointerleave",function(){return R(r),N(i.onPointerLeave())}),C()()(),ze(11,Eg,1,0,"div",11),C()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("text",i.widgetProperties.config.displayName)("color",i.labelColor()),x(4),ue("width",i.lineWidth)("fill",i.barColor()),x(2),ue("cx",i.handlePosition),x(),ue("cx",i.handlePosition),x(3),Fe(i.dashboard.isDashboardStatic()?-1:11))},dependencies:[We,ot,rt,jt],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20;padding:0 20px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.slider-bg-bar[_ngcontent-%COMP%]{fill:var(--mat-sys-inverse-on-surface)}"]})}return a})();var Mg=["rotatingDial"],Dg=["awaIndicator"],Pg=["twaIndicator"],Ag=["wptIndicator"],Og=["setIndicator"],Ig=["cogIndicator"],su=([a,n],[e,t],[i,r])=>(Math.atan2(r-t,i-e)-Math.atan2(n-t,a-e)+3*Math.PI)%(2*Math.PI)-Math.PI,lu=(()=>{class a{rotatingDial=se.required("rotatingDial");awaIndicator=se.required("awaIndicator");twaIndicator=se.required("twaIndicator");wptIndicator=se.required("wptIndicator");setIndicator=se.required("setIndicator");cogIndicator=se.required("cogIndicator");compassHeading=U.required();courseOverGroundAngle=U(void 0);courseOverGroundEnabled=U.required();trueWindAngle=U.required();twsEnabled=U.required();trueWindSpeed=U.required();trueWindSpeedUnit=U.required();appWindAngle=U.required();awsEnabled=U.required();appWindSpeed=U.required();appWindSpeedUnit=U.required();laylineAngle=U(void 0);closeHauledLineEnabled=U.required();sailSetupEnabled=U.required();windSectorEnabled=U.required();driftEnabled=U.required();driftSet=U(void 0);driftFlow=U(void 0);waypointAngle=U(void 0);waypointEnabled=U.required();trueWindMinHistoric=U(void 0);trueWindMidHistoric=U(void 0);trueWindMaxHistoric=U(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";appWindSpeedDisplay=St(()=>{let e=this.appWindSpeed();return e==null?"--":e.toFixed(1)});trueWindSpeedDisplay=St(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});trueWindHeading=0;waypointActive=le(!1);flow=St(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;ngZone=D(at);CENTER=500;RADIUS=350;ANIMATION_DURATION=1e3;constructor(){de(()=>{let e=this.waypointEnabled();lt(()=>{this.waypointActive.set(e)})}),de(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&lt(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue=e.toString(),this.rotatingDial()?.nativeElement&&(Vt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(),this.updateWindSectors())})}),de(()=>{let e=parseFloat(this.courseOverGroundAngle().toFixed(0));e!=null&&lt(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=e-this.compass.newValue,this.cogIndicator()?.nativeElement&&Vt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=this.waypointAngle();lt(()=>{if(!e){this.waypointActive.set(!1);return}this.waypointEnabled()?this.waypointActive.set(!0):this.waypointActive.set(!1),this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=e,this.wptIndicator()?.nativeElement&&Vt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=parseFloat(this.appWindAngle().toFixed(0));e!=null&&lt(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=e,this.awaIndicator()?.nativeElement&&Vt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),de(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&lt(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(Vt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines())})}),de(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&lt(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&Vt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})})}updateCloseHauledLines(){if(!this.closeHauledLineEnabled())return;let e=this.addHeading(Number(this.awa.newValue),this.laylineAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.awa.newValue),this.laylineAngle());this.animateLayline(this.stbdLaylinePrev,t,!1),this.stbdLaylinePrev=t}animateLayline(e,t,i){i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId);let r=this.ANIMATION_DURATION,o=performance.now(),s=l=>l<.5?4*l*l*l:1-Math.pow(-2*l+2,3)/2,d=l=>{let c=l-o,m=Math.min(c/r,1),v=s(m),b=t-e;b>180&&(b-=360),b<-180&&(b+=360);let M=(e+b*v+360)%360*Math.PI/180,F=Math.floor(this.RADIUS*Math.sin(M)+this.CENTER),j=Math.floor(this.RADIUS*Math.cos(M)*-1+this.CENTER);if(i?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${F},${j}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${F},${j}`,m<1){let te=requestAnimationFrame(d);i?this.portLaylineAnimId=te:this.stbdLaylineAnimId=te}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},p=requestAnimationFrame(d);i?this.portLaylineAnimId=p:this.stbdLaylineAnimId=p}windSectorsInitialized=!1;updateWindSectors(){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.portSectorPrev=e,this.stbdSectorPrev=t,this.windSectorsInitialized=!0,this.animateWindSector(e,e,!0),this.animateWindSector(t,t,!1);return}this.animateWindSector(this.portSectorPrev,e,!0),this.animateWindSector(this.stbdSectorPrev,t,!1),this.portSectorPrev=e,this.stbdSectorPrev=t}animateWindSector(e,t,i){i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId);let r=this.ANIMATION_DURATION,o=performance.now(),s=l=>l<.5?4*l*l*l:1-Math.pow(-2*l+2,3)/2,d=l=>{let c=l-o,m=Math.min(c/r,1),v=s(m),b=(yt,ui)=>yt+(ui-yt)*v,k=b(e.min,t.min),M=b(e.mid,t.mid),F=b(e.max,t.max),j=this.addHeading(this.addHeading(k,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),te=this.addHeading(this.addHeading(M,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),ye=this.addHeading(this.addHeading(F,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Le=this.RADIUS*Math.sin(j*Math.PI/180)+this.CENTER,qe=this.RADIUS*Math.cos(j*Math.PI/180)*-1+this.CENTER,ke=this.RADIUS*Math.sin(te*Math.PI/180)+this.CENTER,Z=this.RADIUS*Math.cos(te*Math.PI/180)*-1+this.CENTER,Pe=this.RADIUS*Math.sin(ye*Math.PI/180)+this.CENTER,je=this.RADIUS*Math.cos(ye*Math.PI/180)*-1+this.CENTER,vt=Math.abs(su([Le,qe],[ke,Z],[Pe,je]))>Math.PI/2?0:1,it=su([Pe,je],[Le,qe],[ke,Z])>0?0:1,tt=`M ${this.CENTER},${this.CENTER} L ${Le},${qe} A ${this.RADIUS},${this.RADIUS} 0 ${vt} ${it} ${Pe},${je} z`;if(i?this.portWindSectorPath=tt:this.stbdWindSectorPath=tt,m<1){let yt=requestAnimationFrame(d);i?this.portSectorAnimId=yt:this.stbdSectorAnimId=yt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},p=requestAnimationFrame(d);i?this.portSectorAnimId=p:this.stbdSectorAnimId=p}addHeading(e=0,t=0){let i=e+t;for(;i>359;)i=i-359;for(;i<0;)i=i+359;return i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let r=this.animationFrameIds.get(i);r&&cancelAnimationFrame(r),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&(oe(i.rotatingDial,Mg,5),oe(i.awaIndicator,Dg,5),oe(i.twaIndicator,Pg,5),oe(i.wptIndicator,Ag,5),oe(i.setIndicator,Og,5),oe(i.cogIndicator,Ig,5)),t&2&&Re(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:156,vars:32,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(pe(),L(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),ne(3,"stop",9)(4,"stop",10),H(),L(5,"linearGradient",11),ne(6,"stop",9)(7,"stop",10),H(),L(8,"linearGradient",12),ne(9,"stop",13)(10,"stop",14),H(),L(11,"linearGradient",15),ne(12,"stop",16),H(),L(13,"clipPath",17),ne(14,"ellipse",18),H(),ne(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),H(),L(18,"g",22)(19,"g",23),ne(20,"path",24)(21,"path",25),H()(),L(22,"g",26),ne(23,"path",27)(24,"path",28),H(),L(25,"g",29),ne(26,"path",30)(27,"path",31),H(),L(28,"g",32)(29,"g",33),ne(30,"path",34)(31,"path",35)(32,"path",36),H(),L(33,"g",null,0)(35,"g",37),ne(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68)(67,"path",69)(68,"path",70)(69,"path",71)(70,"path",72)(71,"path",73)(72,"path",74),L(73,"text",75)(74,"tspan",76),w(75,"330"),H()(),L(76,"text",77)(77,"tspan",78),w(78,"300"),H()(),L(79,"text",79)(80,"tspan",80),w(81,"W"),H()(),L(82,"text",81)(83,"tspan",82),w(84,"240"),H()(),L(85,"text",83)(86,"tspan",84),w(87,"210"),H()(),L(88,"text",85)(89,"tspan",86),w(90,"S"),H()(),L(91,"text",87)(92,"tspan",88),w(93,"150"),H()(),L(94,"text",89)(95,"tspan",90),w(96,"120"),H()(),L(97,"text",91)(98,"tspan",92),w(99,"E"),H()(),L(100,"text",93)(101,"tspan",94),w(102,"60"),H()(),L(103,"text",95)(104,"tspan",96),w(105,"30"),H()(),L(106,"text",97)(107,"tspan",98),w(108,"N"),H()()(),L(109,"g",null,1),ne(111,"path",99)(112,"ellipse",100),H(),L(113,"g",null,2),ne(115,"path",101),H()()(),L(116,"g",102)(117,"g",103)(118,"text",104),w(119),H(),L(120,"text",105),w(121),H(),L(122,"text",106),w(123,"TWS"),H()(),L(124,"g",107)(125,"text",108),w(126),H(),L(127,"text",109),w(128),H(),L(129,"text",110),w(130,"AWS"),H()()(),L(131,"g",111)(132,"text",112),w(133),H()(),L(134,"g",113)(135,"g",null,3),ne(137,"path",114),H(),L(138,"g",null,4),ne(140,"path",115),L(141,"text",116),w(142,"A"),H()(),L(143,"g",null,5),ne(145,"path",117),L(146,"text",118),w(147,"T"),H(),w(148,` attributeName="transform" type="rotate" [attr.from]="trueWind.oldDegreeIndicator+' 500 500'" [attr.to]="trueWind.newDegreeIndicator+' 500 500'" begin="indefinite" dur="0.5s" keySplines="0.25 0.1 0.25 1" keyTimes="0;1" calcMode="spline" additive="replace" fill="freeze" /> `),H()(),L(149,"g",119),ne(150,"rect",120),L(151,"text",121)(152,"tspan"),w(153),L(154,"tspan"),w(155,"\xB0"),H()()()()()),t&2&&(x(22),_e("display",i.closeHauledLineEnabled()?"inline":"none"),x(),_e("display",i.trueWindAngle()!=null?"inline":"none"),ue("d",i.closeHauledLineStbdPath),x(),_e("display",i.trueWindAngle()!=null?"inline":"none"),ue("d",i.closeHauledLinePortPath),x(),_e("display",i.windSectorEnabled()?"inline":"none"),x(),_e("display",i.portWindSectorPath!="none"?"inline":"none"),ue("d",i.portWindSectorPath),x(),_e("display",i.portWindSectorPath!="none"?"inline":"none"),ue("d",i.stbdWindSectorPath),x(82),ue("display",i.waypointActive()?"inline":"none"),x(4),_e("display",i.driftEnabled()?"inline":"none"),x(4),_e("display",i.twsEnabled()?"inline":"none"),x(2),Je(i.trueWindSpeedUnit()),x(2),Je(i.trueWindSpeedDisplay()),x(3),_e("display",i.awsEnabled()?"inline":"none"),x(2),Je(i.appWindSpeedUnit()),x(2),Je(i.appWindSpeedDisplay()),x(3),_e("display",i.driftEnabled()?"inline":"none"),x(2),Je(i.flow()),x(2),ue("display",i.courseOverGroundEnabled()?"inline":"none"),x(18),Je(i.headingValue))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return a})();var du=(()=>{class a extends Ne{zones=D(at);currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors(),this.appWindSpeedUnit=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo,this.trueWindSpeedUnit=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,this.observeDataStream("headingPath",e=>{e.data.value==null&&(e.data.value=0),this.currentHeading=e.data.value}),this.observeDataStream("courseOverGround",e=>{e.data.value==null&&(e.data.value=0),this.courseOverGroundAngle=e.data.value}),this.observeDataStream("drift",e=>{e.data.value==null&&(e.data.value=0),this.driftFlow=e.data.value}),this.observeDataStream("set",e=>{e.data.value==null&&(e.data.value=0),this.driftSet=e.data.value}),this.observeDataStream("nextWaypointBearing",e=>{e.data.value<0?this.waypointAngle=360+e.data.value:this.waypointAngle=e.data.value}),this.observeDataStream("appWindAngle",e=>{if(e.data.value==null&&(e.data.value=0),e.data.value<0?this.appWindAngle=360+e.data.value:this.appWindAngle=e.data.value,this.widgetProperties.config.windSectorEnable){let t=this.addHeading(this.currentHeading,e.data.value);this.addHistoricalWindDirection(t)}}),this.observeDataStream("appWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.appWindSpeed=e.data.value}),this.observeDataStream("trueWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.trueWindSpeed=e.data.value}),this.observeDataStream("trueWindAngle",e=>{e.data.value==null&&(e.data.value=0);let t=this.widgetProperties.config.paths.trueWindAngle.path;t.includes("angleTrueWater")||t.includes("angleTrueGround")?this.trueWindAngle=this.addHeading(this.currentHeading,e.data.value):this.trueWindAngle=e.data.value}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors()}startWindSectors(){this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xr(500).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let t=this.arcForAngles(this.historicalWindDirection.map(i=>i.windDirection));this.trueWindMinHistoric=t.min,this.trueWindMaxHistoric=t.max,this.trueWindMidHistoric=t.mid}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,r)=>{let o=r;for(;o<i.min-180;)o+=360;for(;o>i.max+180;)o-=360;return i.min=Math.min(i.min,o),i.max=Math.max(i.max,o),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(){let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(t=>t.timestamp>=e)}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-racesteer"]],features:[me],decls:2,vars:25,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),Y(1,"svg-racesteer",1),C()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),G("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[lu,We],encapsulation:2})}return a})();var Rg=["widgetDataChart"];Gt.register(xa,ka,_a,Sa,wa,Ca,Qr,Zr);var cu=(()=>{class a extends Ne{ngZone=D(at);_dataset=D(ni);canvasService=D(dt);widgetDataChart=se("widgetDataChart",{read:et});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.3}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;_dsDirectionSub=null;_dsSpeedSub=null;datasetConfig=null;dataSourceInfo=null;xCenter=null;xStep=null;xCenterSpeed=null;xStepSpeed=null;CENTER_LINE_WIDTH=4;GRID_LINE_WIDTH=1;EDGE_EXTEND_UP_PX=42;EDGE_SPEED_LABEL_OFFSET=5;EDGE_DIR_LABEL_OFFSET=5;TICK_LABEL_FONT_SIZE=20;CENTER_LABEL_FONT_SIZE=22;SPEED_VALUE_FONT_SIZE=62;TOP_VALUE_Y_OFFSET=62;TOP_UNIT_Y_OFFSET=51;UNIT_FONT_SIZE=28;UNIT_PADDING=8;nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let r=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*r}resolveTickColor(e,t,i){let o=t.options.ticks?.color;return typeof o=="function"?o({chart:e,scale:t,tick:{value:i}})??Gt.defaults.color:typeof o=="string"?o:Gt.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,r=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=r.background,i.fillRect(t.left,t.top,t.width/2,t.height),i.restore()}};centerTickPlugin={id:"centerTickStyle",afterDraw:e=>{let t=e.ctx,i=e.chartArea,r=this.theme(),o=this.getThemeColors(),s=Gt.defaults.font,d=e.scales,p=e.options?.scales,l=e.data?.datasets?.[0]?.data,c=e.data?.datasets?.[5]?.data,m=(l?.length??0)>=2&&(c?.length??0)>=2,v=(ke,Z)=>{let Pe=d?.[ke],je=p;if(!Pe)return;let vt=Pe,it=je?.[ke]?.min??vt.min,tt=je?.[ke]?.max??vt.max;if(typeof it!="number"||typeof tt!="number"||!isFinite(it)||!isFinite(tt))return;let yt=(it+tt)/2,ui=Pe.getPixelForValue(yt);t.save(),t.strokeStyle=r.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(ui,i.top),t.lineTo(ui,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=r.contrastDim,t.font=`bold ${this.CENTER_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="top";let ie=this.axisTopLabelY(Pe);t.fillText(Z(yt),ui,ie),t.restore()};v("x",ke=>`${((ke%360+360)%360).toFixed(0)}\xB0`),v("xSpeed",ke=>`${ke.toFixed(1)}`);let b=d?.xSpeed;if(b){let ke=p,Z=b,Pe=ke?.xSpeed?.max??Z.max;if(typeof Pe=="number"&&isFinite(Pe)){let je=b.getPixelForValue(Pe);t.save(),t.fillStyle=this.resolveTickColor(e,b,Pe),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="right",t.textBaseline="top";let vt=this.axisTopLabelY(b),it=this.xStepSpeed??1,tt=Math.max(0,Math.min(3,Math.ceil(-Math.log10(it))));t.fillText(`${Pe.toFixed(tt)}`,je-this.EDGE_SPEED_LABEL_OFFSET,vt),t.restore(),t.save(),t.strokeStyle=r.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let yt=Math.round(je)+.5;t.moveTo(yt,i.bottom),t.lineTo(yt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let k=d?.x;if(k){let ke=p,Z=k,Pe=ke?.x?.min??Z.min;if(typeof Pe=="number"&&isFinite(Pe)){let je=k.getPixelForValue(Pe);t.save(),t.fillStyle=this.resolveTickColor(e,k,Pe),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.textBaseline="top";let vt=this.axisTopLabelY(k),it=this.normalizeAngle(Pe);t.fillText(`${it.toFixed(0)}\xB0`,je+this.EDGE_DIR_LABEL_OFFSET,vt),t.restore()}}let M=e.data?.datasets,F=M?.[5]?.data,j=F?.length?F.length-1:-1,te=j>=0?F[j]?.x:void 0;if(typeof te=="number"&&isFinite(te)){t.save(),t.fillStyle=o.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle";let ke=`${te.toFixed(1)}`,Z=i.left+i.width/4,Pe=i.top-this.TOP_VALUE_Y_OFFSET;t.fillText(ke,Z,Pe);let je=t.measureText(ke),vt=Z+je.width/2+this.UNIT_PADDING,it=i.top-this.TOP_UNIT_Y_OFFSET;t.font=`bold ${this.UNIT_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.fillText("kts",vt,it),t.restore()}let ye=M?.[0]?.data,Le=ye?.length?ye.length-1:-1,qe=Le>=0?ye[Le]?.x:void 0;if(typeof qe=="number"&&isFinite(qe)){let ke=this.normalizeAngle(qe);t.save(),t.fillStyle=o.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${ke.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-this.TOP_VALUE_Y_OFFSET),t.restore()}if(!m){let ke=Math.min(i.width*.7,420),Z=90,Pe=i.left+(i.width-ke)/2,je=i.top+(i.height-Z)/2;t.save(),t.globalAlpha=.82,t.fillStyle=r.background,t.fillRect(Pe,je,ke,Z),t.restore(),t.save(),t.strokeStyle=r.contrastDim,t.lineWidth=2,t.strokeRect(Pe,je,ke,Z),t.restore(),t.save(),t.fillStyle=this.getThemeColors().chartLabel,t.textAlign="center",t.textBaseline="middle",t.font=`bold 18px ${s.family}`,t.fillText("Data acquisition...",Pe+ke/2,je+Z/2),t.restore()}}};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"},de(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig(),this.createServiceDataset()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this._dataset.getDatasetConfig(`${this.widgetProperties.uuid}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.widgetProperties.uuid}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")}):(this.chart=new Gt(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions,plugins:[this.gridBackgroundPlugin,this.centerTickPlugin]}),this.ngZone.runOutsideAngular(()=>{this.chart?.update()})),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-twd`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-tws`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-tws`),this.createServiceDataset(),this.startWidget()}createServiceDataset(){if(this.widgetProperties.config.timeScale==="")return;let e="self.environment.wind.directionTrue",t="self.environment.wind.speedTrue",i="default";this._dataset.list().filter(r=>r.uuid===`${this.widgetProperties.uuid}-twd`).length===0&&this._dataset.create(e,i,this.widgetProperties.config.timeScale,30,`windtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(r=>r.uuid===`${this.widgetProperties.uuid}-tws`).length===0&&this._dataset.create(t,i,this.widgetProperties.config.timeScale,30,`speedtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,r=0,o=20,s=(o-r)/4;this.lineChartOptions.scales={y:{type:"linear",display:!0,position:"right",reverse:!0,title:{display:!0,text:`${this.datasetConfig.timeScaleFormat}`,align:"center"},ticks:{count:6,autoSkip:!1,includeBounds:!0,align:"inner",major:{enabled:!0},font:{size:16},callback:d=>{let p=Number(d),l=this.datasetConfig?.timeScaleFormat,c=this.getWindowMs(l);return l==="Last 5 Minutes"?`${Math.round(p/6e4)}'`:c>=10*6e4?`${Math.round(p/6e4)}'`:`${Math.round(p/1e3)}"`}},grid:{display:!0,color:this.theme().contrastDimmer}},x:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:e,max:t,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:i,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenter??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.x?.min;return typeof c=="number"&&this.nearlyEqual(d,c)?"":`${((d%360+360)%360).toFixed(0)}\xB0`},font:d=>{let p=d.tick?.value??Number.NaN,l=this.xCenter??Number.NaN;return{size:20,weight:this.nearlyEqual(p,l)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,l=this.xCenter??Number.NaN;return this.nearlyEqual(p,l)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,l=d.scale,c=this.chart?.options?.scales,m=l,v=c?.x?.min??m.min;return this.nearlyEqual(p,v)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:r,max:o,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:s,minRotation:0,maxRotation:0,callback:d=>{let p=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(d,p))return"";let c=this.chart?.options?.scales?.xSpeed?.max;if(typeof c=="number"&&this.nearlyEqual(d,c))return"";let m=this.xStepSpeed??Number.NaN,v=Number.isFinite(m)?m:1,b=Math.max(0,Math.min(3,Math.ceil(-Math.log10(v))));return`${d.toFixed(b)}`},font:d=>{let p=d.tick?.value??Number.NaN,l=this.xCenterSpeed??Number.NaN;return{size:20,weight:this.nearlyEqual(p,l)?"bold":"normal"}},color:d=>{let p=d.tick?.value??Number.NaN,l=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(p,l)?this.theme().contrast:void 0}},grid:{display:!0,color:d=>{let p=d.tick?.value??Number.NaN,l=d.scale,c=this.chart?.options?.scales,m=l,v=c?.xSpeed?.max??m.max;return this.nearlyEqual(p,v)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"TWD ",font:{size:35,weight:"normal"},color:this.getThemeColors().chartLabel},subtitle:{display:!0,align:"start",padding:{top:-41,bottom:12},text:" TWS",font:{size:35},color:this.getThemeColors().chartLabel},annotation:{},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(r+o)/2,this.xStepSpeed=s}createDatasets(){this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"x"},{label:"SMA",data:[],order:0,parsing:!1,normalized:!0,tension:.3,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:10,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"x")},backgroundColor:"red",xAxisID:"x"},{label:"lastAverage",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"x"},{label:"lastMinimum",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"lastMaximum",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"x"},{label:"Value Speed",data:[],order:2,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:1,fill:!1,xAxisID:"xSpeed"},{label:"SMA Speed",data:[],order:0,parsing:!1,normalized:!0,tension:.2,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:3,fill:!1,borderColor:e=>{let t=e.chart,{ctx:i}=t;return this.lineGradientForAxis(i,t,"xSpeed")},xAxisID:"xSpeed"},{label:"lastAverage Speed",data:[],order:1,parsing:!1,normalized:!0,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:0,borderColor:"",fill:!1,hidden:!0,xAxisID:"xSpeed"},{label:"lastMinimum Speed",data:[],order:3,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"},{label:"lastMaximum Speed",data:[],order:4,parsing:!1,normalized:!0,hidden:!0,xAxisID:"xSpeed"}),this.setDatasetsColors()}startStreaming(){this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe();let e=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-tws`);this._dsDirectionSub=e?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToDatasets(i);else if(this.pushRowsToDatasets([i]),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints)for(let r=0;r<=4;r++)this.chart.data.datasets[r].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})}),this._dsSpeedSub=t?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToSpeedDatasets(i);else if(this.pushRowsToSpeedDatasets([i]),this.chart.data.datasets[5].data.length>this.dataSourceInfo.maxDataPoints)for(let r=5;r<=9;r++)this.chart.data.datasets[r].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let r of e){if(r==null){t.push(null);continue}if(i==null){t.push(r),i=r;continue}let o=r-i;o>180&&(o-=360),o<-180&&(o+=360),t.push(t[t.length-1]+o),i=r}return t}pushRowsToDatasets(e){this.pushRowsGeneric(e,0,"deg",!0)}pushRowsToSpeedDatasets(e){this.pushRowsGeneric(e,5,"knots",!1)}getRowValue(e,t){switch(t){case"value":return e.data.value??null;case"sma":return e.data.sma??null;case"ema":return e.data.ema??null;case"dema":return e.data.doubleEma??null;case"avg":return e.data.lastAverage??null;case"min":return e.data.lastMinimum??null;case"max":return e.data.lastMaximum??null;default:return null}}transformRows(e,t,i,r){let o=e.map(d=>{let p=this.getRowValue(d,t);return p==null?null:this.unitsService.convertToUnit(i,p)}),s=r?this.unwrapAngles(o):o;return e.map((d,p)=>({x:s[p],y:d.timestamp,ts:d.timestamp}))}pushRowsGeneric(e,t,i,r){["value","sma","avg","min","max"].forEach((s,d)=>{this.chart.data.datasets[t+d].data.push(...this.transformRows(e,s,i,r))})}normalizeAngle(e){return(e%360+360)%360}angularDiff(e,t){let i=(e-t+540)%360-180;return Math.abs(i)}niceStepFromMantissas(e,t){if(!isFinite(e)||e<=0)return 1;let i=Math.floor(Math.log10(e)),r=e/Math.pow(10,i);return(t.find(s=>r<=s)??t[t.length-1])*Math.pow(10,i)}updateChartAfterDataChange(){let e=this.chart.data.datasets[2]?.data,t=this.chart.data.datasets[1]?.data,i=this.chart.data.datasets[0]?.data,r=!!e?.length,o=!!t?.length,s=!!i?.length,d=r?e[e.length-1].x:o?t[t.length-1].x:s?i[i.length-1].x:void 0;if(typeof d=="number"&&isFinite(d)){let m=this.chart.data.datasets[3]?.data,v=this.chart.data.datasets[4]?.data,b=m?.length?m[m.length-1].x:void 0,k=v?.length?v[v.length-1].x:void 0,M=typeof b=="number"&&isFinite(b)?this.angularDiff(d,b):Number.NaN,F=typeof k=="number"&&isFinite(k)?this.angularDiff(d,k):Number.NaN,j=Number.isFinite(M)||Number.isFinite(F)?Math.max(Number.isFinite(M)?M:0,Number.isFinite(F)?F:0):Number.NaN;if(!Number.isFinite(j)){let Pe=r?e:o?t:i,je=Math.min(30,Pe?.length??0);if(je>1){let it=Pe.slice(Pe.length-je).map(tt=>tt.x).filter(tt=>typeof tt=="number"&&isFinite(tt));it.length&&(j=it.reduce((tt,yt)=>Math.max(tt,this.angularDiff(d,yt)),0))}}j=Math.max(j||0,15);let ye=2*j/4,Le=this.niceStepFromMantissas(ye,[1,1.5,2,2.5,5,7.5,10]),qe=d-2*Le,ke=d+2*Le;this.chart.options.scales.x.min=qe,this.chart.options.scales.x.max=ke;let Z=this.chart.options.scales;Z.x.ticks=ht(ee({},Z.x.ticks??{}),{stepSize:Le}),this.xCenter=d,this.xStep=Le}let p=this.chart.data.datasets[7]?.data;if(p&&p.length){let m=p.length-1,v=p[m]?.x??0,b=this.chart.data.datasets[8].data[m]?.x??v,k=this.chart.data.datasets[9].data[m]?.x??v,M=Math.abs(v-b),F=Math.abs(k-v),j=Math.max(M,F);j=Math.max(j,.5);let ye=2*j/4,Le=this.niceStepFromMantissas(ye,[1,2,2.5,5,10]),qe=v-2*Le,ke=v+2*Le,Z=this.chart.options.scales;Z.xSpeed.min=qe,Z.xSpeed.max=ke,Z.xSpeed.ticks=ht(ee({},Z.xSpeed.ticks??{}),{stepSize:Le}),this.xCenterSpeed=v,this.xStepSpeed=Le}let l=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let m=Date.now();this.chart.data.datasets.forEach(F=>{F.data.forEach(j=>{let te=j.ts??j.y;j.y=Math.max(0,Math.min(l,m-te))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=l;let v;switch(this.datasetConfig?.timeScaleFormat){case"Last Minute":v=15e3;break;case"Last 5 Minutes":v=6e4;break;case"Last 30 Minutes":v=5*6e4;break;default:v=l/5;break}let k=this.chart.options.scales,M=ee({},k.y.ticks??{});delete M.count,M.stepSize=v,k.y.ticks=M}}getWindowMs(e){switch(e){case"Last 30 Minutes":return 30*6e4;case"Last 5 Minutes":return 5*6e4;case"Last Minute":return 6e4;default:return 6e4}}lineGradientForAxis(e,t,i){let r=t.chartArea;if(!r)return null;let o=t.scales?.[i];if(!o)return null;let s=t.options?.scales,d=o,p=s?.[i]?.min??d.min,l=s?.[i]?.max??d.max;if(typeof p!="number"||typeof l!="number"||!isFinite(p)||!isFinite(l))return null;let c=(p+l)/2,m=o.getPixelForValue(c),v=Math.max(0,Math.min(1,(m-r.left)/r.width)),b=e.createLinearGradient(r.left,0,r.right,0);return b.addColorStop(0,this.theme().port),b.addColorStop(v,this.theme().port),b.addColorStop(v,this.theme().starboard),b.addColorStop(1,this.theme().starboard),b}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill),e.label==="Value Speed"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":t.valueLine=this.theme().contrastDim,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=this.theme().contrast,t.averageChartLine=this.theme().contrast,t.chartLabel=this.theme().contrastDim;break;case"blue":t.valueLine=this.theme().blueDim,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=this.theme().blue,t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().blueDim;break;case"green":t.valueLine=this.theme().greenDim,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=this.theme().green,t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().greenDim;break;case"pink":t.valueLine=this.theme().pinkDim,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=this.theme().pink,t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().pinkDim;break;case"orange":t.valueLine=this.theme().orangeDim,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=this.theme().orange,t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().orangeDim;break;case"purple":t.valueLine=this.theme().purpleDim,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=this.theme().purple,t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().purpleDim;break;case"grey":t.valueLine=this.theme().greyDim,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=this.theme().grey,t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().greyDim;break;case"yellow":t.valueLine=this.theme().yellowDim,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=this.theme().yellow,t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().yellowDim;break}return t}ngOnDestroy(){this.destroyDataStreams(),this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&oe(i.widgetDataChart,Rg,5,et),t&2&&Re()},features:[me],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let r=J();g(0,"widget-host",1),Ee("configChange",function(s){return R(r),Te(i.widgetProperties.config,s)||(i.widgetProperties.config=s),N(s)}),W("configChange",function(s){return R(r),N(i.updateConfig(s))}),Y(1,"canvas",2,0),C()}t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid))},dependencies:[We],encapsulation:2})}return a})();typeof steelseries>"u"&&(globalThis.steelseries={});var Co=globalThis.steelseries;Co.ColorDef=Co.ColorDef||{RED:"red",GREEN:"green",BLUE:"blue",ORANGE:"orange",YELLOW:"yellow",CYAN:"cyan",MAGENTA:"magenta",WHITE:"white",GRAY:"gray",BLACK:"black",RAITH:"raith",GREEN_LCD:"greenLcd",JUG_GREEN:"jugGreen"};Co.FrameDesign=Co.FrameDesign||{BLACK_METAL:"blackMetal",METAL:"metal",SHINY_METAL:"shinyMetal",BRASS:"brass",STEEL:"steel",CHROME:"chrome",GOLD:"gold",ANTHRACITE:"anthracite",TILTED_GRAY:"tiltedGray",TILTED_BLACK:"tiltedBlack",GLOSSY_METAL:"glossyMetal"};var Ng={Red:steelseries.ColorDef.RED,Green:steelseries.ColorDef.GREEN,Blue:steelseries.ColorDef.BLUE,Orange:steelseries.ColorDef.ORANGE,Yellow:steelseries.ColorDef.YELLOW,Cyan:steelseries.ColorDef.CYAN,Magenta:steelseries.ColorDef.MAGENTA,White:steelseries.ColorDef.WHITE,Gray:steelseries.ColorDef.GRAY,Black:steelseries.ColorDef.BLACK,Raith:steelseries.ColorDef.RAITH,"Green LCD":steelseries.ColorDef.GREEN_LCD,"JUG Green":steelseries.ColorDef.JUG_GREEN},Wg={blackMetal:steelseries.FrameDesign.BLACK_METAL,metal:steelseries.FrameDesign.METAL,shinyMetal:steelseries.FrameDesign.SHINY_METAL,brass:steelseries.FrameDesign.BRASS,steel:steelseries.FrameDesign.STEEL,chrome:steelseries.FrameDesign.CHROME,gold:steelseries.FrameDesign.GOLD,anthracite:steelseries.FrameDesign.ANTHRACITE,tiltedGray:steelseries.FrameDesign.TILTED_GRAY,tiltedBlack:steelseries.FrameDesign.TILTED_BLACK,glossyMetal:steelseries.FrameDesign.GLOSSY_METAL},hu=(()=>{class a extends Ne{cdr=D(Fi);canvasService=D(dt);gaugeOptions={};gauge=null;streamsInitialized=!1;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{gaugePitchPath:{description:"Attitude Pitch Data",path:"self.navigation.attitude.pitch",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3},gaugeRollPath:{description:"Attitude Roll Data",path:"self.navigation.attitude.roll",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3}},gauge:{type:"horizon",noFrameVisible:!1,faceColor:"anthracite",invertPitch:!1,invertRoll:!1},enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig()}ngAfterContentInit(){this.cdr.detectChanges(),this.startWidget();let t=document.getElementById(this.widgetProperties.uuid+"-canvas")?.parentElement;if(t){let i=t.getBoundingClientRect();this.onResized({contentRect:{width:i.width,height:i.height}})}}startWidget(e=!1){this.buildOptions();let t=this.widgetProperties.uuid+"-canvas";t&&(this.gauge&&!e&&!this.pendingStructuralRebuild||(this.pendingStructuralRebuild=!1,this.gauge=new steelseries.Horizon(t,this.gaugeOptions)),this.streamsInitialized||(this.observeDataStream("gaugePitchPath",i=>{let r=i.data.value??0;this.gauge.setPitchAnimated(this.widgetProperties.config.gauge.invertPitch?-r:r)}),this.observeDataStream("gaugeRollPath",i=>{let r=i.data.value??0;this.gauge.setRollAnimated(this.widgetProperties.config.gauge.invertRoll?-r:r)}),this.streamsInitialized=!0))}updateConfig(e){this.widgetProperties.config=e,this.pendingStructuralRebuild=!0,this.startWidget(!0)}buildOptions(){this.gaugeOptions.pointerColor=Ng.Red,this.gaugeOptions.frameVisible=this.widgetProperties.config.gauge.noFrameVisible??!1,this.gaugeOptions.frameDesign=Wg[this.widgetProperties.config.gauge.faceColor??"anthracite"],this.gaugeOptions.foregroundVisible=!1}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t=Math.min(e.contentRect.height,e.contentRect.width),i="horizon:"+t;i!==this.lastSizeSignature&&(this.lastSizeSignature=i,this.gaugeOptions.size=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startWidget(!0),this.resizeTimer=null},120))}ngOnDestroy(){this.destroyDataStreams(),this.gauge&&(this.gauge=null);let e=document.getElementById(this.widgetProperties.uuid+"-canvas");this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["widget-horizon"]],features:[me],decls:4,vars:5,consts:[[3,"configChange","config","id"],[1,"canvas-wrap",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(g(0,"widget-host",0),Ee("configChange",function(o){return Te(i.widgetProperties.config,o)||(i.widgetProperties.config=o),o}),W("configChange",function(o){return i.updateConfig(o)}),g(1,"div",1),W("onResize",function(o){return i.onResized(o)}),g(2,"canvas",2),w(3," Browser does not support canvas element. "),C()()()),t&2&&(xe("config",i.widgetProperties.config),G("id",i.widgetProperties.uuid),x(),ed(i.gaugeOptions.frameVisible===!0?"padding: 10px;":""),x(),G("id",i.widgetProperties.uuid+"-canvas"))},dependencies:[We,ot,rt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return a})();var Lg=["grid"];function Vg(a,n){a&1&&(g(0,"p",7)(1,"strong"),w(2,"Long press/click and hold anywhere"),C(),w(3," to add widgets"),C(),g(4,"mat-icon",8),w(5,"touch_app"),C())}function zg(a,n){if(a&1){let e=J();g(0,"p",7),w(1,"This empty dashboard is ready to be customized."),C(),g(2,"button",9),W("click",function(){R(e);let i=X();return N(i.editDashboard())}),g(3,"mat-icon"),w(4,"lock_open"),C(),w(5," Unlock and Customize "),C(),g(6,"div",10)(7,"button",11),W("click",function(){R(e);let i=X();return N(i.navigateToHelp())}),g(8,"mat-icon"),w(9,"help"),C(),w(10," Get Help "),C()()}}function Fg(a,n){if(a&1){let e=J();g(0,"div",6)(1,"button",12),W("click",function(){R(e);let i=X();return N(i.saveLayoutChanges())}),g(2,"mat-icon"),w(3,"done"),C()(),g(4,"button",13),W("click",function(){R(e);let i=X();return N(i.cancelLayoutChanges())}),g(5,"mat-icon"),w(6,"close"),C()()()}}function Bg(a,n){a&1&&Y(0,"notification-badge")}function Hg(a,n){if(a&1&&(Y(0,"dashboard-scroller",14),ze(1,Bg,1,0,"notification-badge")),a&2){let e=X();G("activePage",e.dashboard.activeDashboard())("dashboards",e.dashboard.dashboards()),x(),Fe(e.notificationsInfo().alarmCount>0?1:-1)}}var Js=(()=>{class a{activatedRoute=D(Cd);_app=D(Ht);_dialog=D(ga);dashboard=D(ft);_notifications=D(gn);_destroyRef=D(Li);_uiEvent=D(va);_dataset=D(ni);_router=D(ln);notificationsInfo=ti(this._notifications.observerNotificationsInfo());isDashboardStatic=ti(this.dashboard.isDashboardStatic$);_gridstack=se.required("grid");_previousIsStaticState=!0;gridOptions=le({margin:4,minRow:12,maxRow:12,float:!0,acceptWidgets:!1,resizable:{handles:"all"}});_boundHandleKeyDown=this.handleKeyDown.bind(this);constructor(){Rn.addComponentToSelectorType([so,Ic,lo,Lc,eu,Gh,jh,Bh,Yh,Wh,Hc,Rh,Qh,Zh,Kh,Xh,tu,au,du,ho,ru,ou,cu,hu])}ngAfterViewInit(){this.resizeGridColumns(),this._uiEvent.addHotkeyListener(this._boundHandleKeyDown,{ctrlKey:!0,keys:["arrowdown","arrowup"]}),this.dashboard.isDashboardStatic$.pipe(Wt(this._destroyRef)).subscribe(e=>{e?(this._gridstack().grid.setStatic(e),e!==this._previousIsStaticState&&(this.saveDashboard(),this._previousIsStaticState=e)):(this._gridstack().grid.setStatic(e),this._previousIsStaticState=e)}),this.dashboard.widgetAction$.pipe(Wt(this._destroyRef)).subscribe(e=>{e&&this._gridstack().grid.getGridItems().forEach(t=>{if(t.gridstackNode.id===e.id)switch(e.operation){case"delete":this.deleteWidget(t);break;case"duplicate":this.duplicateWidget(t);break;default:break}})}),this.activatedRoute.params.pipe(Wt(this._destroyRef)).subscribe(e=>{let t=e.id,i=null;t!=null&&t!==""&&!isNaN(Number(t))&&(i=Number(t)),this.dashboard.setActiveDashboard(i??this.dashboard.activeDashboard()),this.loadDashboard(this.dashboard.activeDashboard())})}ngOnDestroy(){let e=this._gridstack();e?.grid&&e.grid.destroy(!0),this._uiEvent.removeHotkeyListener(this._boundHandleKeyDown)}handleKeyDown(e,t){e==="arrowdown"?this.previousDashboard(t):e==="arrowup"&&this.nextDashboard(t)}resizeGridColumns(){this._gridstack().grid.cellHeight(window.innerHeight/this._gridstack().grid.getRow())}loadDashboard(e){let t=this.dashboard.dashboards()[e],i=this._gridstack();i?.grid&&setTimeout(()=>{i.grid.batchUpdate(),i.grid.load(t.configuration),i.grid.commit()},0)}saveDashboard(){let e=this._gridstack().grid.save(!1,!1)||null;this.dashboard.updateConfiguration(this.dashboard.activeDashboard(),e)}saveLayoutChanges(){this.dashboard.setStaticDashboard(!0)}cancelLayoutChanges(){this.loadDashboard(this.dashboard.activeDashboard()),this.dashboard.setStaticDashboard(!0)}addNewWidget(e){if(!this.dashboard.isDashboardStatic()){let t=e.center.x,i=e.center.y,r=this._gridstack().grid.getCellFromPixel({left:t,top:i});this._gridstack().grid.isAreaEmpty(r.x,r.y,1,1)&&(this._gridstack().grid.willItFit({x:r.x,y:r.y,w:2,h:3})?this._dialog.openFrameDialog({title:"Add Widget",component:"select-widget"},!0).subscribe(s=>{if(!s||typeof s!="object")return;let d=Bi.create(),p=s,l={x:r.x,y:r.y,w:p.defaultWidth,h:p.defaultHeight,minW:p.minWidth,minH:p.minHeight,id:d,selector:p.selector,input:{widgetProperties:{type:p.selector,uuid:d}}};this._gridstack().grid.addWidget(l)}):this._app.sendSnackbarNotification("Error Adding Widget: Not enough space at the selected location. Please reorganize the dashboard to free up space or choose a larger empty area.",0))}}duplicateWidget(e){let t=Bi.create(),i=e.gridstackNode,r={w:i.w,h:i.h,id:t,selector:i.selector,input:{widgetProperties:{type:i.input.widgetProperties.type,uuid:t,config:ha(i.input.widgetProperties.config)}}},o=this._gridstack();o.grid.willItFit(r)?o.grid.addWidget(r):(r.h=2,r.w=2,o.grid.willItFit(r)?o.grid.addWidget(r):this._app.sendSnackbarNotification("Duplication failed: Insufficient space on the dashboard. Please reorganize to free up space.",0))}deleteWidget(e){let t=e.gridstackNode;switch(this._gridstack().grid.removeWidget(e),t.selector){case"widget-numeric-chart":case"widget-windtrends-chart":{(this._dataset.list()?.filter(o=>o.uuid===t.id||o.uuid?.startsWith(`${t.id}-`))||[]).forEach(o=>this._dataset.remove(o.uuid));break}}}nextDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard()}previousDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard()}editDashboard(){this.dashboard.toggleStaticDashboard()}navigateToHelp(){this._router.navigate(["/help"])}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["dashboard"]],viewQuery:function(t,i){t&1&&oe(i._gridstack,Lg,5),t&2&&Re()},decls:11,vars:3,consts:[["grid",""],[3,"swipeup","swipedown","press","resize","options"],["empty-content","",1,"dashboard-empty-state"],[1,"empty-state-content"],[1,"empty-state-actions"],[1,"empty-state-icon"],[1,"edit-layout-close-icon"],[1,"empty-state-text"],[1,"touch-icon"],["mat-flat-button","",1,"empty-state-button",3,"click"],[1,"empty-state-help"],["mat-button","",1,"empty-state-help-button",3,"click"],["mat-fab","",1,"layout-action-btn",2,"margin-right","10px",3,"click"],["mat-fab","",1,"layout-action-btn",3,"click"],[3,"activePage","dashboards"]],template:function(t,i){if(t&1){let r=J();g(0,"gridstack",1,0),W("swipeup",function(s){return R(r),N(i.previousDashboard(s))})("swipedown",function(s){return R(r),N(i.nextDashboard(s))})("press",function(s){return R(r),N(i.addNewWidget(s))})("resize",function(){return R(r),N(i.resizeGridColumns())},jl),g(2,"div",2)(3,"div",3)(4,"div",4)(5,"mat-icon",5),w(6,"dashboard"),C(),ze(7,Vg,6,0)(8,zg,11,0),C()()()(),ze(9,Fg,7,0,"div",6)(10,Hg,2,3)}t&2&&(G("options",i.gridOptions()),x(7),Fe(i.dashboard.isDashboardStatic()?8:7),x(2),Fe(i.dashboard.isDashboardStatic()?10:9))},dependencies:[kc,Rn,Tc,Ct,Ut,Lt,Pt,Br,Pc],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;height:100%;width:100%;overflow:hidden}.grid-stack[_ngcontent-%COMP%]{width:100%}.edit-layout-close-icon[_ngcontent-%COMP%]{position:absolute;bottom:20px;right:20px;cursor:pointer;z-index:100}.layout-action-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);background-color:var(--mat-sys-primary)}.dashboard-empty-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;min-height:80vh;width:100%;padding:2rem;text-align:center}.empty-state-content[_ngcontent-%COMP%]{max-width:500px;color:var(--mat-sys-outline-variant)}.empty-state-icon[_ngcontent-%COMP%]{font-size:4rem;width:4rem;height:4rem;color:var(--mat-sys-outline-variant);margin-bottom:1rem}.empty-state-actions[_ngcontent-%COMP%] .touch-icon[_ngcontent-%COMP%]{font-size:2rem;width:2rem;height:2rem;color:var(--mat-sys-outline-variant);margin-top:.5rem;animation:_ngcontent-%COMP%_bounce 2s infinite}.empty-state-button[_ngcontent-%COMP%]{--mat-button-filled-label-text-color: var(--kip-widget-card-background-color);--mat-button-filled-container-color: var(--mat-sys-outline-variant);--mat-button-filled-hover-state-layer-opacity: .7;--mat-button-filled-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-help[_ngcontent-%COMP%]{position:fixed;left:50%;bottom:10%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center}.empty-state-help-button[_ngcontent-%COMP%]{--mat-button-text-label-text-color: var(--mat-sys-outline-variant);--mat-button-text-hover-state-layer-opacity: .7;--mat-button-text-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-text[_ngcontent-%COMP%]{color:var(--mat-sys-outline-variant);font-style:italic}@keyframes _ngcontent-%COMP%_bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}"]})}return a})();var uu=[{path:"dashboard/:id",component:Js},{path:"settings",loadComponent:()=>import("./chunk-4WFDZ6FH.js").then(a=>a.AppSettingsComponent),title:"KIP - Settings"},{path:"help",loadComponent:()=>import("./chunk-OPPBJYH7.js").then(a=>a.AppHelpComponent),title:"KIP - Help"},{path:"data",loadComponent:()=>import("./chunk-WD5WD3GY.js").then(a=>a.DataInspectorComponent),title:"KIP - Data Inspector"},{path:"dashboards",loadComponent:()=>import("./chunk-TE3Z6IE7.js").then(a=>a.DashboardsEditorComponent),title:"KIP - Dashboards"},{path:"datasets",loadComponent:()=>import("./chunk-ZWNGAG3P.js").then(a=>a.SettingsDatasetsComponent),title:"KIP - Datasets"},{path:"configurations",loadComponent:()=>import("./chunk-7BMBGIZI.js").then(a=>a.SettingsConfigComponent),title:"KIP - Configurations"},{path:"login",loadComponent:()=>import("./chunk-KPQDHC2Z.js").then(a=>a.WidgetLoginComponent),title:"Login"},{path:"**",component:Js,title:"KIP"}];var mu={production:!0};var wu=Qa(Ps());function Ug(a,n){if(a&1){let e=J();g(0,"div",1)(1,"button",2),W("click",function(){R(e);let i=X();return N(i.action())}),w(2),C()()}if(a&2){let e=X();x(2),_t(" ",e.data.action," ")}}var Gg=["label"];function qg(a,n){}var jg=Math.pow(2,31)-1,sr=class{_overlayRef;instance;containerInstance;_afterDismissed=new xt;_afterOpened=new xt;_onAction=new xt;_durationTimeoutId;_dismissedByAction=!1;constructor(n,e){this._overlayRef=e,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,jg))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},pu=new na("MatSnackBarData"),Ha=class{politeness="polite";announcementMessage="";viewContainerRef;duration=0;panelClass;direction;data=null;horizontalPosition="center";verticalPosition="bottom"},$g=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=Vi({type:a,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]})}return a})(),Yg=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=Vi({type:a,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]})}return a})(),Xg=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275dir=Vi({type:a,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]})}return a})(),Kg=(()=>{class a{snackBarRef=D(sr);data=D(pu);constructor(){}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["matButton","","matSnackBarAction","",3,"click"]],template:function(t,i){t&1&&(g(0,"div",0),w(1),C(),ze(2,Ug,3,1,"div",1)),t&2&&(x(),_t(" ",i.data.message,`
233
- `),x(),Fe(i.hasAction?2:-1))},dependencies:[Pt,$g,Yg,Xg],styles:[`.mat-mdc-simple-snack-bar{display:flex}
234
- `],encapsulation:2,changeDetection:0})}return a})(),el="_mat-snack-bar-enter",tl="_mat-snack-bar-exit",Qg=(()=>{class a extends Bd{_ngZone=D(at);_elementRef=D(et);_changeDetectorRef=D(Fi);_platform=D(ma);_animationsDisabled=Pn();snackBarConfig=D(Ha);_document=D(nn);_trackedModals=new Set;_enterFallback;_exitFallback;_injector=D(tn);_announceDelay=150;_announceTimeoutId;_destroyed=!1;_portalOutlet;_onAnnounce=new xt;_onExit=new xt;_onEnter=new xt;_animationState="void";_live;_label;_role;_liveElementId=D(zr).getId("mat-snack-bar-container-live-");constructor(){super();let e=this.snackBarConfig;e.politeness==="assertive"&&!e.announcementMessage?this._live="assertive":e.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();let t=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),t}attachTemplatePortal(e){this._assertNotAttached();let t=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),t}attachDomPortal=e=>{this._assertNotAttached();let t=this._portalOutlet.attachDomPortal(e);return this._afterPortalAttached(),t};onAnimationEnd(e){e===tl?this._completeExit():e===el&&(clearTimeout(this._enterFallback),this._ngZone.run(()=>{this._onEnter.next(),this._onEnter.complete()}))}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce(),this._animationsDisabled?an(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(el)))},{injector:this._injector}):(clearTimeout(this._enterFallback),this._enterFallback=setTimeout(()=>{this._elementRef.nativeElement.classList.add("mat-snack-bar-fallback-visible"),this.onAnimationEnd(el)},200)))}exit(){return this._destroyed?Vl(void 0):(this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId),this._animationsDisabled?an(()=>{this._ngZone.run(()=>queueMicrotask(()=>this.onAnimationEnd(tl)))},{injector:this._injector}):(clearTimeout(this._exitFallback),this._exitFallback=setTimeout(()=>this.onAnimationEnd(tl),200))}),this._onExit)}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){clearTimeout(this._exitFallback),queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let e=this._elementRef.nativeElement,t=this.snackBarConfig.panelClass;t&&(Array.isArray(t)?t.forEach(o=>e.classList.add(o)):e.classList.add(t)),this._exposeToModals();let i=this._label.nativeElement,r="mdc-snackbar__label";i.classList.toggle(r,!i.querySelector(`.${r}`))}_exposeToModals(){let e=this._liveElementId,t=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let i=0;i<t.length;i++){let r=t[i],o=r.getAttribute("aria-owns");this._trackedModals.add(r),o?o.indexOf(e)===-1&&r.setAttribute("aria-owns",o+" "+e):r.setAttribute("aria-owns",e)}}_clearFromModals(){this._trackedModals.forEach(e=>{let t=e.getAttribute("aria-owns");if(t){let i=t.replace(this._liveElementId,"").trim();i.length>0?e.setAttribute("aria-owns",i):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{if(this._destroyed)return;let e=this._elementRef.nativeElement,t=e.querySelector("[aria-hidden]"),i=e.querySelector("[aria-live]");if(t&&i){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&t.contains(document.activeElement)&&(r=document.activeElement),t.removeAttribute("aria-hidden"),i.appendChild(t),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["mat-snack-bar-container"]],viewQuery:function(t,i){if(t&1&&(Mi(vs,7),Mi(Gg,7)),t&2){let r;zt(r=Ft())&&(i._portalOutlet=r.first),zt(r=Ft())&&(i._label=r.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:6,hostBindings:function(t,i){t&1&&W("animationend",function(o){return i.onAnimationEnd(o.animationName)})("animationcancel",function(o){return i.onAnimationEnd(o.animationName)}),t&2&&Bt("mat-snack-bar-container-enter",i._animationState==="visible")("mat-snack-bar-container-exit",i._animationState==="hidden")("mat-snack-bar-container-animations-enabled",!i._animationsDisabled)},features:[me],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(t,i){t&1&&(g(0,"div",1)(1,"div",2,0)(3,"div",3),Pr(4,qg,0,0,"ng-template",4),C(),Y(5,"div"),C()()),t&2&&(x(5),ue("aria-live",i._live)("role",i._role)("id",i._liveElementId))},dependencies:[vs],styles:[`@keyframes _mat-snack-bar-enter{from{transform:scale(0.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes _mat-snack-bar-exit{from{opacity:1}to{opacity:0}}.mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-snack-bar-container-animations-enabled{opacity:0}.mat-snack-bar-container-animations-enabled.mat-snack-bar-fallback-visible{opacity:1}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-enter{animation:_mat-snack-bar-enter 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-snack-bar-container-animations-enabled.mat-snack-bar-container-exit{animation:_mat-snack-bar-exit 75ms cubic-bezier(0.4, 0, 1, 1) forwards}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}@media(forced-colors: active){.mat-mdc-snackbar-surface{outline:solid 1px}}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mat-snack-bar-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-snack-bar-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-snack-bar-container-color, var(--mat-sys-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mat-snack-bar-supporting-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-snack-bar-supporting-text-size, var(--mat-sys-body-medium-size));font-weight:var(--mat-snack-bar-supporting-text-weight, var(--mat-sys-body-medium-weight));line-height:var(--mat-snack-bar-supporting-text-line-height, var(--mat-sys-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){--mat-button-text-state-layer-color: currentColor;--mat-button-text-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled).mat-unthemed{color:var(--mat-snack-bar-button-color, var(--mat-sys-inverse-primary))}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}
235
- `],encapsulation:2})}return a})();function Zg(){return new Ha}var Jg=new na("mat-snack-bar-default-options",{providedIn:"root",factory:Zg}),fu=(()=>{class a{_live=D(Rd);_injector=D(tn);_breakpointObserver=D(Lr);_parentSnackBar=D(a,{optional:!0,skipSelf:!0});_defaultConfig=D(Jg);_animationsDisabled=Pn();_snackBarRefAtThisLevel=null;simpleSnackBarComponent=Kg;snackBarContainerComponent=Qg;handsetCssClass="mat-mdc-snack-bar-handset";get _openedSnackBarRef(){let e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(){}openFromComponent(e,t){return this._attach(e,t)}openFromTemplate(e,t){return this._attach(e,t)}open(e,t="",i){let r=ee(ee({},this._defaultConfig),i);return r.data={message:e,action:t},r.announcementMessage===e&&(r.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,r)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,t){let i=t&&t.viewContainerRef&&t.viewContainerRef.injector,r=tn.create({parent:i||this._injector,providers:[{provide:Ha,useValue:t}]}),o=new gs(this.snackBarContainerComponent,t.viewContainerRef,r),s=e.attach(o);return s.instance.snackBarConfig=t,s.instance}_attach(e,t){let i=ee(ee(ee({},new Ha),this._defaultConfig),t),r=this._createOverlay(i),o=this._attachSnackBarContainer(r,i),s=new sr(o,r);if(e instanceof $l){let d=new Fd(e,null,{$implicit:i.data,snackBarRef:s});s.instance=o.attachTemplatePortal(d)}else{let d=this._createInjector(i,s),p=new gs(e,void 0,d),l=o.attachComponentPortal(p);s.instance=l.instance}return this._breakpointObserver.observe(Fr.HandsetPortrait).pipe(di(r.detachments())).subscribe(d=>{r.overlayElement.classList.toggle(this.handsetCssClass,d.matches)}),i.announcementMessage&&o._onAnnounce.subscribe(()=>{this._live.announce(i.announcementMessage,i.politeness)}),this._animateSnackBar(s,i),this._openedSnackBarRef=s,this._openedSnackBarRef}_animateSnackBar(e,t){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),t.announcementMessage&&this._live.clear()}),t.duration&&t.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(t.duration)),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter()}_createOverlay(e){let t=new Gd;t.direction=e.direction;let i=qd(this._injector),r=e.direction==="rtl",o=e.horizontalPosition==="left"||e.horizontalPosition==="start"&&!r||e.horizontalPosition==="end"&&r,s=!o&&e.horizontalPosition!=="center";return o?i.left("0"):s?i.right("0"):i.centerHorizontally(),e.verticalPosition==="top"?i.top("0"):i.bottom("0"),t.positionStrategy=i,t.disableAnimations=this._animationsDisabled,jd(this._injector,t)}_createInjector(e,t){let i=e&&e.viewContainerRef&&e.viewContainerRef.injector;return tn.create({parent:i||this._injector,providers:[{provide:sr,useValue:t},{provide:pu,useValue:e.data}]})}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac,providedIn:"root"})}return a})();var e0=(a,n)=>n.path;function t0(a,n){a&1&&(g(0,"mat-icon"),w(1,"info"),C())}function i0(a,n){a&1&&(g(0,"mat-icon"),w(1,"info"),C())}function n0(a,n){a&1&&(g(0,"mat-icon",3),w(1,"report"),C())}function a0(a,n){a&1&&(g(0,"mat-icon",4),w(1,"warning"),C())}function r0(a,n){a&1&&(g(0,"mat-icon",5),w(1,"error"),C())}function o0(a,n){a&1&&(g(0,"mat-icon",6),w(1,"emergency_home"),C())}function s0(a,n){if(a&1){let e=J();g(0,"div",2),ze(1,t0,2,0,"mat-icon")(2,i0,2,0,"mat-icon")(3,n0,2,0,"mat-icon",3)(4,a0,2,0,"mat-icon",4)(5,r0,2,0,"mat-icon",5)(6,o0,2,0,"mat-icon",6),g(7,"div",7),w(8),C(),g(9,"div",8),w(10),zi(11,"slice"),C(),g(12,"div",9),w(13),C(),g(14,"button",10),W("click",function(){let i=R(e).$implicit,r=X();return N(r.silence(i.path))}),g(15,"mat-icon"),w(16,"music_off"),C()(),g(17,"button",11),W("click",function(){let i=R(e).$implicit,r=X();return N(r.clear(i.path))}),g(18,"mat-icon"),w(19,"published_with_changes"),C()()(),Y(20,"mat-divider",12)}if(a&2){let e,t=n.$implicit;x(),Fe((e=t.value.state)==="nominal"?1:e==="normal"?2:e==="alert"?3:e==="warn"?4:e==="alarm"?5:e==="emergency"?6:-1),x(7),Je(t.value.state),x(2),Je(la(11,5,t.path,14)),x(3),Je(t.value.message),x(),G("disabled",!t.value.method.includes("sound"))}}function l0(a,n){a&1&&(g(0,"mat-list-item",13)(1,"span",15),w(2,"Notifications Disabled"),C(),g(3,"span")(4,"i"),w(5,"*Enable notifications in Settings."),C()()())}function d0(a,n){a&1&&(g(0,"mat-list-item",14)(1,"i"),w(2,'"No Notification"'),C()())}function c0(a,n){if(a&1&&ze(0,l0,6,0,"mat-list-item",13)(1,d0,3,0,"mat-list-item",14),a&2){let e=X();Fe(e.notificationConfig().disableNotifications?0:1)}}function h0(a,n){if(a&1){let e=J();g(0,"button",17),W("click",function(){R(e);let i=X(2);return N(i.mutePlayer(!i.isMuted))}),g(1,"span",18),w(2,"volume_up"),C(),w(3," Unmute Audio "),C()}}function u0(a,n){if(a&1){let e=J();g(0,"button",17),W("click",function(){R(e);let i=X(2);return N(i.mutePlayer(!i.isMuted))}),g(1,"span",18),w(2,"volume_off"),C(),w(3," Mute Audio "),C()}}function m0(a,n){if(a&1&&ze(0,h0,4,0,"button",16)(1,u0,4,0,"button",16),a&2){let e=X();Fe(e.isMuted?0:1)}}var gu=(()=>{class a{_notificationsService=D(gn);_notifications$=this._notificationsService.observeNotifications();notificationConfig=ti(this._notificationsService.observeNotificationConfiguration(),{requireSync:!0});menuNotifications=ti(this._notifications$.pipe(li(e=>{let t=[];return this.notificationConfig().devices.showNormalState||t.push(re.Normal),this.notificationConfig().devices.showNominalState||t.push(re.Nominal),e.filter(i=>i.value&&i.value.state&&!t.includes(i.value.state))}),li(e=>e.filter(t=>t.value&&t.value.method&&t.value.method.includes(ua.Visual)))),{requireSync:!0,equal:ci});isMuted=!1;mutePlayer(e){this.isMuted=e,this._notificationsService.mutePlayer(e)}silence(e){this._notificationsService.setSkMethod(e,[ua.Visual])}clear(e){this._notificationsService.setSkState(e,re.Normal)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["menu-notifications"]],decls:6,vars:2,consts:[[1,"menu-item-container"],[1,"actions-container","actions-bottom-container"],[1,"notification-container"],[1,"icon-alert-color"],[1,"icon-warn-color"],[1,"icon-alarm-color"],[1,"icon-emergency-color"],[1,"notification-title"],[1,"notification-path","scrollable-text"],[1,"notification-text"],["mat-icon-button","",1,"notification-action-btn",3,"click","disabled"],["mat-icon-button","",1,"notification-action-btn",3,"click"],[1,"notification-divider"],["lines","3","disabled","true",2,"text-align","center"],["disabled","true",2,"text-align","center"],["matListItemTitle",""],["mat-flat-button","","matTooltip","Temporally toggle all notification audio. To permanently disable/enable notification audio, use the configuration settings option",1,"action-button"],["mat-flat-button","","matTooltip","Temporally toggle all notification audio. To permanently disable/enable notification audio, use the configuration settings option",1,"action-button",3,"click"],[1,"material-icons"]],template:function(t,i){t&1&&(g(0,"mat-list",0),bi(1,s0,21,8,null,null,e0,!1,c0,2,1),C(),g(4,"div",1),ze(5,m0,2,1),C()),t&2&&(x(),_i(i.menuNotifications()),x(4),Fe(i.notificationConfig().disableNotifications?-1:5))},dependencies:[Gr,sc,Ur,Jd,ac,Lt,Pt,zd,Oa,pc,mc,Ct,Ut,cd],styles:[".notification-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;padding:2px 10px 7px;scroll-behavior:smooth}mat-icon[_ngcontent-%COMP%]{margin-right:10px}.scrollable-text[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.scrollable-text[_ngcontent-%COMP%]:hover{overflow:auto;white-space:normal;word-wrap:break-word}.notification-title[_ngcontent-%COMP%]{text-transform:capitalize;font-size:var(--mat-sys-headline-small-size);width:calc(100% - 34px)}.notification-path[_ngcontent-%COMP%]{font-size:var(--mat-sys-body-small-size);word-break:break-all;width:100%}.notification-text[_ngcontent-%COMP%]{font-size:var(--mat-sys-body-small-line-height);font-style:italic;width:100%;overflow:auto;white-space:normal;word-wrap:break-word}.notification-action-btn[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface-container)}.notification-btn-container[_ngcontent-%COMP%]{display:inline-block;width:50%;height:48px;text-align:center}.menu-item-container[_ngcontent-%COMP%]{width:230px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;height:calc(100% - 48px)}.notification-bottom-container[_ngcontent-%COMP%]{position:absolute;bottom:0;width:100%;background-color:var(--mat-sys-surface-container)}.actions-container[_ngcontent-%COMP%]{display:grid;grid-auto-flow:column}.actions-bottom-container[_ngcontent-%COMP%]{position:absolute;bottom:0;width:100%;height:48px}.action-button[_ngcontent-%COMP%]{border-radius:0;height:48px;border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large))}.icon-alert-color[_ngcontent-%COMP%]{color:var(--kip-zone-alert-color)}.icon-warn-color[_ngcontent-%COMP%]{color:var(--kip-zone-warn-color)}.icon-alarm-color[_ngcontent-%COMP%]{color:var(--kip-zone-alarm-color)}.icon-emergency-color[_ngcontent-%COMP%]{color:var(--kip-zone-emergency-color)}.alarm-emergency-blink[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_blinking-emergency 1.5s infinite}@keyframes _ngcontent-%COMP%_blinking-emergency{0%{background-color:var(--kip-zone-alarm-color)}50%{background-color:transparent}to{background-color:var(--kip-zone-alarm-color)}}.warn[_ngcontent-%COMP%]{color:var(--kip-zone-warn-color)}.notification-divider[_ngcontent-%COMP%]{padding-top:10px}"]})}return a})();var To=["*"],f0=["content"],g0=[[["mat-drawer"]],[["mat-drawer-content"]],"*"],v0=["mat-drawer","mat-drawer-content","*"];function y0(a,n){if(a&1){let e=J();g(0,"div",1),W("click",function(){R(e);let i=X();return N(i._onBackdropClicked())}),C()}if(a&2){let e=X();Bt("mat-drawer-shown",e._isShowingBackdrop())}}function b0(a,n){a&1&&(g(0,"mat-drawer-content"),Nt(1,2),C())}var _0=[[["mat-sidenav"]],[["mat-sidenav-content"]],"*"],w0=["mat-sidenav","mat-sidenav-content","*"];function S0(a,n){if(a&1){let e=J();g(0,"div",1),W("click",function(){R(e);let i=X();return N(i._onBackdropClicked())}),C()}if(a&2){let e=X();Bt("mat-drawer-shown",e._isShowingBackdrop())}}function C0(a,n){a&1&&(g(0,"mat-sidenav-content"),Nt(1,2),C())}var k0=`.mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color, var(--mat-sys-on-background));background-color:var(--mat-sidenav-content-background-color, var(--mat-sys-background));box-sizing:border-box;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color, color-mix(in srgb, var(--mat-sys-neutral-variant20) 40%, transparent))}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}@media(forced-colors: active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-content.mat-drawer-content-hidden{opacity:0}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color, var(--mat-sys-on-surface-variant));box-shadow:var(--mat-sidenav-container-elevation-shadow, none);background-color:var(--mat-sidenav-container-background-color, var(--mat-sys-surface));border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));width:var(--mat-sidenav-container-width, 360px);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}@media(forced-colors: active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media(forced-colors: active){[dir=rtl] .mat-drawer,.mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer-transition .mat-drawer{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating){visibility:hidden;box-shadow:none}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating) .mat-drawer-inner-container{display:none}.mat-drawer.mat-drawer-opened.mat-drawer-opened{transform:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto}.mat-sidenav-fixed{position:fixed}
236
- `;var x0=new na("MAT_DRAWER_DEFAULT_AUTOSIZE",{providedIn:"root",factory:T0}),al=new na("MAT_DRAWER_CONTAINER");function T0(){return!1}var ko=(()=>{class a extends fa{_platform=D(ma);_changeDetectorRef=D(Fi);_container=D(nl);constructor(){let e=D(et),t=D(Hd),i=D(at);super(e,t,i)}ngAfterContentInit(){this._container._contentMarginChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})}_shouldBeHidden(){if(this._platform.isBrowser)return!1;let{start:e,end:t}=this._container;return e!=null&&e.mode!=="over"&&e.opened||t!=null&&t.mode!=="over"&&t.opened}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["mat-drawer-content"]],hostAttrs:[1,"mat-drawer-content"],hostVars:6,hostBindings:function(t,i){t&2&&(_e("margin-left",i._container._contentMargins.left,"px")("margin-right",i._container._contentMargins.right,"px"),Bt("mat-drawer-content-hidden",i._shouldBeHidden()))},features:[sa([{provide:fa,useExisting:a}]),me],ngContentSelectors:To,decls:1,vars:0,template:function(t,i){t&1&&(wi(),Nt(0))},encapsulation:2,changeDetection:0})}return a})(),il=(()=>{class a{_elementRef=D(et);_focusTrapFactory=D(Id);_focusMonitor=D(Pd);_platform=D(ma);_ngZone=D(at);_renderer=D(Dr);_interactivityChecker=D(Vr);_doc=D(nn);_container=D(al,{optional:!0});_focusTrap=null;_elementFocusedBeforeDrawerWasOpened=null;_eventCleanups;_isAttached;_anchor;get position(){return this._position}set position(e){e=e==="end"?"end":"start",e!==this._position&&(this._isAttached&&this._updatePositionInParent(e),this._position=e,this.onPositionChanged.emit())}_position="start";get mode(){return this._mode}set mode(e){this._mode=e,this._updateFocusTrapState(),this._modeChanged.next()}_mode="over";get disableClose(){return this._disableClose}set disableClose(e){this._disableClose=An(e)}_disableClose=!1;get autoFocus(){let e=this._autoFocus;return e??(this.mode==="side"?"dialog":"first-tabbable")}set autoFocus(e){(e==="true"||e==="false"||e==null)&&(e=An(e)),this._autoFocus=e}_autoFocus;get opened(){return this._opened()}set opened(e){this.toggle(An(e))}_opened=le(!1);_openedVia;_animationStarted=new xt;_animationEnd=new xt;openedChange=new Tt(!0);_openedStream=this.openedChange.pipe(ta(e=>e),li(()=>{}));openedStart=this._animationStarted.pipe(ta(()=>this.opened),ss(void 0));_closedStream=this.openedChange.pipe(ta(e=>!e),li(()=>{}));closedStart=this._animationStarted.pipe(ta(()=>!this.opened),ss(void 0));_destroyed=new xt;onPositionChanged=new Tt;_content;_modeChanged=new xt;_injector=D(tn);_changeDetectorRef=D(Fi);constructor(){this.openedChange.pipe(di(this._destroyed)).subscribe(e=>{e?(this._elementFocusedBeforeDrawerWasOpened=this._doc.activeElement,this._takeFocus()):this._isFocusWithinDrawer()&&this._restoreFocus(this._openedVia||"program")}),this._ngZone.runOutsideAngular(()=>{let e=this._elementRef.nativeElement;zl(e,"keydown").pipe(ta(t=>t.keyCode===27&&!this.disableClose&&!Wd(t)),di(this._destroyed)).subscribe(t=>this._ngZone.run(()=>{this.close(),t.stopPropagation(),t.preventDefault()})),this._eventCleanups=[this._renderer.listen(e,"transitionrun",this._handleTransitionEvent),this._renderer.listen(e,"transitionend",this._handleTransitionEvent),this._renderer.listen(e,"transitioncancel",this._handleTransitionEvent)]}),this._animationEnd.subscribe(()=>{this.openedChange.emit(this.opened)})}_forceFocus(e,t){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let i=()=>{r(),o(),e.removeAttribute("tabindex")},r=this._renderer.listen(e,"blur",i),o=this._renderer.listen(e,"mousedown",i)})),e.focus(t)}_focusByCssSelector(e,t){let i=this._elementRef.nativeElement.querySelector(e);i&&this._forceFocus(i,t)}_takeFocus(){if(!this._focusTrap)return;let e=this._elementRef.nativeElement;switch(this.autoFocus){case!1:case"dialog":return;case!0:case"first-tabbable":an(()=>{!this._focusTrap.focusInitialElement()&&typeof e.focus=="function"&&e.focus()},{injector:this._injector});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this.autoFocus);break}}_restoreFocus(e){this.autoFocus!=="dialog"&&(this._elementFocusedBeforeDrawerWasOpened?this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened,e):this._elementRef.nativeElement.blur(),this._elementFocusedBeforeDrawerWasOpened=null)}_isFocusWithinDrawer(){let e=this._doc.activeElement;return!!e&&this._elementRef.nativeElement.contains(e)}ngAfterViewInit(){this._isAttached=!0,this._position==="end"&&this._updatePositionInParent("end"),this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._updateFocusTrapState())}ngOnDestroy(){this._eventCleanups.forEach(e=>e()),this._focusTrap?.destroy(),this._anchor?.remove(),this._anchor=null,this._animationStarted.complete(),this._animationEnd.complete(),this._modeChanged.complete(),this._destroyed.next(),this._destroyed.complete()}open(e){return this.toggle(!0,e)}close(){return this.toggle(!1)}_closeViaBackdropClick(){return this._setOpen(!1,!0,"mouse")}toggle(e=!this.opened,t){e&&t&&(this._openedVia=t);let i=this._setOpen(e,!e&&this._isFocusWithinDrawer(),this._openedVia||"program");return e||(this._openedVia=null),i}_setOpen(e,t,i){return e===this.opened?Promise.resolve(e?"open":"close"):(this._opened.set(e),this._container?._transitionsEnabled?this._setIsAnimating(!0):setTimeout(()=>{this._animationStarted.next(),this._animationEnd.next()}),this._elementRef.nativeElement.classList.toggle("mat-drawer-opened",e),!e&&t&&this._restoreFocus(i),this._changeDetectorRef.markForCheck(),this._updateFocusTrapState(),new Promise(r=>{this.openedChange.pipe(Bl(1)).subscribe(o=>r(o?"open":"close"))}))}_setIsAnimating(e){this._elementRef.nativeElement.classList.toggle("mat-drawer-animating",e)}_getWidth(){return this._elementRef.nativeElement.offsetWidth||0}_updateFocusTrapState(){this._focusTrap&&(this._focusTrap.enabled=!!this._container?.hasBackdrop&&this.opened)}_updatePositionInParent(e){if(!this._platform.isBrowser)return;let t=this._elementRef.nativeElement,i=t.parentNode;e==="end"?(this._anchor||(this._anchor=this._doc.createComment("mat-drawer-anchor"),i.insertBefore(this._anchor,t)),i.appendChild(t)):this._anchor&&this._anchor.parentNode.insertBefore(t,this._anchor)}_handleTransitionEvent=e=>{let t=this._elementRef.nativeElement;e.target===t&&this._ngZone.run(()=>{e.type==="transitionrun"?this._animationStarted.next(e):(e.type==="transitionend"&&this._setIsAnimating(!1),this._animationEnd.next(e))})};static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["mat-drawer"]],viewQuery:function(t,i){if(t&1&&Mi(f0,5),t&2){let r;zt(r=Ft())&&(i._content=r.first)}},hostAttrs:[1,"mat-drawer"],hostVars:12,hostBindings:function(t,i){t&2&&(ue("align",null)("tabIndex",i.mode!=="side"?"-1":null),_e("visibility",!i._container&&!i.opened?"hidden":null),Bt("mat-drawer-end",i.position==="end")("mat-drawer-over",i.mode==="over")("mat-drawer-push",i.mode==="push")("mat-drawer-side",i.mode==="side"))},inputs:{position:"position",mode:"mode",disableClose:"disableClose",autoFocus:"autoFocus",opened:"opened"},outputs:{openedChange:"openedChange",_openedStream:"opened",openedStart:"openedStart",_closedStream:"closed",closedStart:"closedStart",onPositionChanged:"positionChanged"},exportAs:["matDrawer"],ngContentSelectors:To,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(t,i){t&1&&(wi(),g(0,"div",1,0),Nt(2),C())},dependencies:[fa],encapsulation:2,changeDetection:0})}return a})(),nl=(()=>{class a{_dir=D(Vd,{optional:!0});_element=D(et);_ngZone=D(at);_changeDetectorRef=D(Fi);_animationDisabled=Pn();_transitionsEnabled=!1;_allDrawers;_drawers=new ql;_content;_userContent;get start(){return this._start}get end(){return this._end}get autosize(){return this._autosize}set autosize(e){this._autosize=An(e)}_autosize=D(x0);get hasBackdrop(){return this._drawerHasBackdrop(this._start)||this._drawerHasBackdrop(this._end)}set hasBackdrop(e){this._backdropOverride=e==null?null:An(e)}_backdropOverride;backdropClick=new Tt;_start;_end;_left;_right;_destroyed=new xt;_doCheckSubject=new xt;_contentMargins={left:null,right:null};_contentMarginChanges=new xt;get scrollable(){return this._userContent||this._content}_injector=D(tn);constructor(){let e=D(ma),t=D(Ud);this._dir?.change.pipe(di(this._destroyed)).subscribe(()=>{this._validateDrawers(),this.updateContentMargins()}),t.change().pipe(di(this._destroyed)).subscribe(()=>this.updateContentMargins()),!this._animationDisabled&&e.isBrowser&&this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{this._element.nativeElement.classList.add("mat-drawer-transition"),this._transitionsEnabled=!0},200)})}ngAfterContentInit(){this._allDrawers.changes.pipe(cs(this._allDrawers),di(this._destroyed)).subscribe(e=>{this._drawers.reset(e.filter(t=>!t._container||t._container===this)),this._drawers.notifyOnChanges()}),this._drawers.changes.pipe(cs(null)).subscribe(()=>{this._validateDrawers(),this._drawers.forEach(e=>{this._watchDrawerToggle(e),this._watchDrawerPosition(e),this._watchDrawerMode(e)}),(!this._drawers.length||this._isDrawerOpen(this._start)||this._isDrawerOpen(this._end))&&this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),this._ngZone.runOutsideAngular(()=>{this._doCheckSubject.pipe(Tr(10),di(this._destroyed)).subscribe(()=>this.updateContentMargins())})}ngOnDestroy(){this._contentMarginChanges.complete(),this._doCheckSubject.complete(),this._drawers.destroy(),this._destroyed.next(),this._destroyed.complete()}open(){this._drawers.forEach(e=>e.open())}close(){this._drawers.forEach(e=>e.close())}updateContentMargins(){let e=0,t=0;if(this._left&&this._left.opened){if(this._left.mode=="side")e+=this._left._getWidth();else if(this._left.mode=="push"){let i=this._left._getWidth();e+=i,t-=i}}if(this._right&&this._right.opened){if(this._right.mode=="side")t+=this._right._getWidth();else if(this._right.mode=="push"){let i=this._right._getWidth();t+=i,e-=i}}e=e||null,t=t||null,(e!==this._contentMargins.left||t!==this._contentMargins.right)&&(this._contentMargins={left:e,right:t},this._ngZone.run(()=>this._contentMarginChanges.next(this._contentMargins)))}ngDoCheck(){this._autosize&&this._isPushed()&&this._ngZone.runOutsideAngular(()=>this._doCheckSubject.next())}_watchDrawerToggle(e){e._animationStarted.pipe(di(this._drawers.changes)).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),e.mode!=="side"&&e.openedChange.pipe(di(this._drawers.changes)).subscribe(()=>this._setContainerClass(e.opened))}_watchDrawerPosition(e){e.onPositionChanged.pipe(di(this._drawers.changes)).subscribe(()=>{an({read:()=>this._validateDrawers()},{injector:this._injector})})}_watchDrawerMode(e){e._modeChanged.pipe(di(Fl(this._drawers.changes,this._destroyed))).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()})}_setContainerClass(e){let t=this._element.nativeElement.classList,i="mat-drawer-container-has-open";e?t.add(i):t.remove(i)}_validateDrawers(){this._start=this._end=null,this._drawers.forEach(e=>{e.position=="end"?(this._end!=null,this._end=e):(this._start!=null,this._start=e)}),this._right=this._left=null,this._dir&&this._dir.value==="rtl"?(this._left=this._end,this._right=this._start):(this._left=this._start,this._right=this._end)}_isPushed(){return this._isDrawerOpen(this._start)&&this._start.mode!="over"||this._isDrawerOpen(this._end)&&this._end.mode!="over"}_onBackdropClicked(){this.backdropClick.emit(),this._closeModalDrawersViaBackdrop()}_closeModalDrawersViaBackdrop(){[this._start,this._end].filter(e=>e&&!e.disableClose&&this._drawerHasBackdrop(e)).forEach(e=>e._closeViaBackdropClick())}_isShowingBackdrop(){return this._isDrawerOpen(this._start)&&this._drawerHasBackdrop(this._start)||this._isDrawerOpen(this._end)&&this._drawerHasBackdrop(this._end)}_isDrawerOpen(e){return e!=null&&e.opened}_drawerHasBackdrop(e){return this._backdropOverride==null?!!e&&e.mode!=="side":this._backdropOverride}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["mat-drawer-container"]],contentQueries:function(t,i,r){if(t&1&&(En(r,ko,5),En(r,il,5)),t&2){let o;zt(o=Ft())&&(i._content=o.first),zt(o=Ft())&&(i._allDrawers=o)}},viewQuery:function(t,i){if(t&1&&Mi(ko,5),t&2){let r;zt(r=Ft())&&(i._userContent=r.first)}},hostAttrs:[1,"mat-drawer-container"],hostVars:2,hostBindings:function(t,i){t&2&&Bt("mat-drawer-container-explicit-backdrop",i._backdropOverride)},inputs:{autosize:"autosize",hasBackdrop:"hasBackdrop"},outputs:{backdropClick:"backdropClick"},exportAs:["matDrawerContainer"],features:[sa([{provide:al,useExisting:a}])],ngContentSelectors:v0,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(t,i){t&1&&(wi(g0),ze(0,y0,1,2,"div",0),Nt(1),Nt(2,1),ze(3,b0,2,0,"mat-drawer-content")),t&2&&(Fe(i.hasBackdrop?0:-1),x(3),Fe(i._content?-1:3))},dependencies:[ko],styles:[`.mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color, var(--mat-sys-on-background));background-color:var(--mat-sidenav-content-background-color, var(--mat-sys-background));box-sizing:border-box;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color, color-mix(in srgb, var(--mat-sys-neutral-variant20) 40%, transparent))}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}@media(forced-colors: active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-content.mat-drawer-content-hidden{opacity:0}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color, var(--mat-sys-on-surface-variant));box-shadow:var(--mat-sidenav-container-elevation-shadow, none);background-color:var(--mat-sidenav-container-background-color, var(--mat-sys-surface));border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));width:var(--mat-sidenav-container-width, 360px);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}@media(forced-colors: active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media(forced-colors: active){[dir=rtl] .mat-drawer,.mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-sys-corner-large));border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer-transition .mat-drawer{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating){visibility:hidden;box-shadow:none}.mat-drawer:not(.mat-drawer-opened):not(.mat-drawer-animating) .mat-drawer-inner-container{display:none}.mat-drawer.mat-drawer-opened.mat-drawer-opened{transform:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color, transparent);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color, transparent);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto}.mat-sidenav-fixed{position:fixed}
237
- `],encapsulation:2,changeDetection:0})}return a})(),xo=(()=>{class a extends ko{static \u0275fac=(()=>{let e;return function(i){return(e||(e=oa(a)))(i||a)}})();static \u0275cmp=q({type:a,selectors:[["mat-sidenav-content"]],hostAttrs:[1,"mat-drawer-content","mat-sidenav-content"],features:[sa([{provide:fa,useExisting:a}]),me],ngContentSelectors:To,decls:1,vars:0,template:function(t,i){t&1&&(wi(),Nt(0))},encapsulation:2,changeDetection:0})}return a})(),rl=(()=>{class a extends il{get fixedInViewport(){return this._fixedInViewport}set fixedInViewport(e){this._fixedInViewport=An(e)}_fixedInViewport=!1;get fixedTopGap(){return this._fixedTopGap}set fixedTopGap(e){this._fixedTopGap=fs(e)}_fixedTopGap=0;get fixedBottomGap(){return this._fixedBottomGap}set fixedBottomGap(e){this._fixedBottomGap=fs(e)}_fixedBottomGap=0;static \u0275fac=(()=>{let e;return function(i){return(e||(e=oa(a)))(i||a)}})();static \u0275cmp=q({type:a,selectors:[["mat-sidenav"]],hostAttrs:[1,"mat-drawer","mat-sidenav"],hostVars:16,hostBindings:function(t,i){t&2&&(ue("tabIndex",i.mode!=="side"?"-1":null)("align",null),_e("top",i.fixedInViewport?i.fixedTopGap:null,"px")("bottom",i.fixedInViewport?i.fixedBottomGap:null,"px"),Bt("mat-drawer-end",i.position==="end")("mat-drawer-over",i.mode==="over")("mat-drawer-push",i.mode==="push")("mat-drawer-side",i.mode==="side")("mat-sidenav-fixed",i.fixedInViewport))},inputs:{fixedInViewport:"fixedInViewport",fixedTopGap:"fixedTopGap",fixedBottomGap:"fixedBottomGap"},exportAs:["matSidenav"],features:[sa([{provide:il,useExisting:a}]),me],ngContentSelectors:To,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(t,i){t&1&&(wi(),g(0,"div",1,0),Nt(2),C())},dependencies:[fa],encapsulation:2,changeDetection:0})}return a})(),vu=(()=>{class a extends nl{_allDrawers=void 0;_content=void 0;static \u0275fac=(()=>{let e;return function(i){return(e||(e=oa(a)))(i||a)}})();static \u0275cmp=q({type:a,selectors:[["mat-sidenav-container"]],contentQueries:function(t,i,r){if(t&1&&(En(r,xo,5),En(r,rl,5)),t&2){let o;zt(o=Ft())&&(i._content=o.first),zt(o=Ft())&&(i._allDrawers=o)}},hostAttrs:[1,"mat-drawer-container","mat-sidenav-container"],hostVars:2,hostBindings:function(t,i){t&2&&Bt("mat-drawer-container-explicit-backdrop",i._backdropOverride)},exportAs:["matSidenavContainer"],features:[sa([{provide:al,useExisting:a},{provide:nl,useExisting:a}]),me],ngContentSelectors:w0,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(t,i){t&1&&(wi(_0),ze(0,S0,1,2,"div",0),Nt(1),Nt(2,1),ze(3,C0,2,0,"mat-sidenav-content")),t&2&&(Fe(i.hasBackdrop?0:-1),x(3),Fe(i._content?-1:3))},dependencies:[xo],styles:[k0],encapsulation:2,changeDetection:0})}return a})(),yu=(()=>{class a{static \u0275fac=function(t){return new(t||a)};static \u0275mod=yi({type:a});static \u0275inj=vi({imports:[pa,ys,ys,pa]})}return a})();var bu=(()=>{class a{static _iconSetRegistered=!1;svgIcon=U.required();iconSize=U.required();label=U.required();constructor(){let e=D(Dd),t=D(ca);a._iconSetRegistered||(e.addSvgIconSet(t.bypassSecurityTrustResourceUrl("assets/svg/icons.svg")),a._iconSetRegistered=!0)}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["tile-large-icon"]],inputs:{svgIcon:[1,"svgIcon"],iconSize:[1,"iconSize"],label:[1,"label"]},decls:3,vars:6,consts:[["aria-hidden","false",3,"svgIcon"],[1,"large-icon-tile-label"]],template:function(t,i){t&1&&(Y(0,"mat-icon",0),g(1,"p",1),w(2),C()),t&2&&(_e("width",i.iconSize(),"px")("height",i.iconSize(),"px"),G("svgIcon",i.svgIcon()),x(2),Je(i.label()))},dependencies:[Ct,Ut,Hr],styles:["[_nghost-%COMP%]{display:block;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;padding:10px}[_nghost-%COMP%]:hover{background-color:var(--mat-sys-inverse-on-surface)}[_nghost-%COMP%]:focus-visible{background-color:var(--mat-sys-surface-bright);outline:-webkit-focus-ring-color auto 0px}.large-icon-tile-label[_ngcontent-%COMP%]{cursor:pointer;color:var(--mat-sys-outline)}"]})}return a})();function M0(a,n){if(a&1){let e=J();g(0,"button",7),W("click",function(){R(e);let i=X(2);return N(i.onActionItem("toggleFullScreen"))}),g(1,"span",5),w(2,"fullscreen"),C()()}}function D0(a,n){if(a&1){let e=J();g(0,"button",7),W("click",function(){R(e);let i=X(2);return N(i.onActionItem("toggleFullScreen"))}),g(1,"span",5),w(2,"close_fullscreen"),C()()}}function P0(a,n){if(a&1&&ze(0,M0,3,0,"button",6)(1,D0,3,0,"button",6),a&2){let e=X();Fe(e.uiEvent.fullscreenStatus()?1:0)}}function A0(a,n){if(a&1){let e=J();g(0,"button",4),W("click",function(){R(e);let i=X(2);return N(i.onActionItem("nightMode"))}),g(1,"span",5),w(2,"mode_night"),C()()}}function O0(a,n){if(a&1){let e=J();g(0,"button",4),W("click",function(){R(e);let i=X(2);return N(i.onActionItem("nightMode"))}),g(1,"span",5),w(2,"light_mode"),C()()}}function I0(a,n){if(a&1&&ze(0,A0,3,0,"button",8)(1,O0,3,0,"button",8),a&2){let e=X();Fe(e.app.isNightMode()?1:0)}}function R0(a,n){if(a&1){let e=J();g(0,"tile-large-icon",9),W("click",function(){let i=R(e).$implicit,r=X();return N(r.onActionItem(i.action))}),C()}if(a&2){let e=n.$implicit;G("svgIcon",e.svgIcon)("iconSize",e.iconSize)("label",e.label)}}var _u=(()=>{class a{actionsSidenav=U.required();_router=D(ln);uiEvent=D(va);dashboard=D(ft);app=D(Ht);_settings=D(ii);isAutoNightMode=ti(this._settings.getAutoNightModeAsO(),{requireSync:!0});menuItems=[{svgIcon:"dashboard",iconSize:48,label:"Dashboards",action:"dashboards"},{svgIcon:"troubleshoot",iconSize:48,label:"Data Inspector",action:"datainspector"},{svgIcon:"dataset",iconSize:48,label:"Datasets",action:"datasets"},{svgIcon:"configuration",iconSize:48,label:"Configurations",action:"configurations"},{svgIcon:"settings",iconSize:48,label:"Settings",action:"settings"},{svgIcon:"help-center",iconSize:48,label:"Help",action:"help"}];constructor(){}ngAfterViewInit(){this.uiEvent.addHotkeyListener((e,t)=>this.handleKeyDown(e,t),{ctrlKey:!0,shiftKey:!0,keys:["e","f","n"]})}ngOnDestroy(){this.uiEvent.removeHotkeyListener(this.handleKeyDown.bind(this))}handleKeyDown(e,t){switch(e){case"e":this.onActionItem("layout");break;case"f":this.onActionItem("toggleFullScreen");break;case"n":this.onActionItem("nightMode");break;default:break}}onActionItem(e){switch(this.actionsSidenav().close(),e){case"help":this._router.navigate(["/help"]);break;case"dashboards":this._router.navigate(["/dashboards"]);break;case"datainspector":this._router.navigate(["/data"]);break;case"datasets":this._router.navigate(["/datasets"]);break;case"configurations":this._router.navigate(["/configurations"]);break;case"toggleFullScreen":this.uiEvent.toggleFullScreen();break;case"settings":this._router.navigate(["/settings"]);break;case"layout":this.dashboard.toggleStaticDashboard();break;case"nightMode":this.app.isNightMode.set(!this.app.isNightMode()),this.app.toggleDayNightMode();break;default:break}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["menu-actions"]],inputs:{actionsSidenav:[1,"actionsSidenav"]},decls:10,vars:2,consts:[[1,"actions-container","actions-top-container"],[1,"menu-item-container"],["tabindex","0",3,"svgIcon","iconSize","label"],[1,"actions-container","actions-bottom-container"],["mat-flat-button","",1,"action-button",3,"click"],[1,"material-icons"],["mat-flat-button","","tabindex","0",1,"action-button"],["mat-flat-button","","tabindex","0",1,"action-button",3,"click"],["mat-flat-button","",1,"action-button"],["tabindex","0",3,"click","svgIcon","iconSize","label"]],template:function(t,i){t&1&&(g(0,"div",0),ze(1,P0,2,1),ze(2,I0,2,1),C(),g(3,"div",1),bi(4,R0,1,3,"tile-large-icon",2,rn),C(),g(6,"div",3)(7,"button",4),W("click",function(){return i.onActionItem("layout")}),g(8,"span",5),w(9,"lock_open"),C()()()),t&2&&(x(),Fe(i.uiEvent.fullscreenSupported()?1:-1),x(),Fe(i.isAutoNightMode()?-1:2),x(2),_i(i.menuItems))},dependencies:[Ct,Lt,Pt,bu],styles:[".actions-container[_ngcontent-%COMP%]{display:grid;grid-auto-flow:column}.actions-top-container[_ngcontent-%COMP%]{position:absolute;top:0;width:100%}.actions-bottom-container[_ngcontent-%COMP%]{position:absolute;bottom:0;width:100%}.action-button[_ngcontent-%COMP%]{border-radius:0;height:48px}.menu-item-container[_ngcontent-%COMP%]{position:absolute;top:48px;width:135px;overflow-y:auto;scrollbar-width:none;overflow-x:hidden;scroll-behavior:smooth;height:calc(100% - 96px)}"]})}return a})();var Su=(()=>{class a{_snackBar=D(fu);_deltaService=D(dn);_connectionStateMachine=D(da);_app=D(Ht);_dashboard=D(ft);_uiEvent=D(va);_dialog=D(ga);appSettingsService=D(ii);authenticationService=D(Si);_dataSet=D(ni);_responsive=D(Lr);_destroyRef=D(Li);notificationHowl;_upgradeShown=!1;actionsSidenavOpened=Dn(!1);notificationsSidenavOpened=Dn(!1);isPhonePortrait;_swipeLeftHandler=e=>this.onSwipeLeft(e);_swipeRightHandler=e=>this.onSwipeRight(e);_hotkeyHandler=(e,t)=>this.handleKeyDown(e,t);constructor(){de(()=>{!this._upgradeShown&&this.appSettingsService.configUpgrade()&&(this._upgradeShown=!0,this._dialog.openFrameDialog({title:"Upgrade Instructions",component:"upgrade-config"},!0).pipe(Wt(this._destroyRef)).subscribe())}),this.isPhonePortrait=ti(this._responsive.observe(Fr.HandsetPortrait)),this._connectionStateMachine.status$.pipe(Wt(this._destroyRef)).subscribe(e=>this.displayConnectionsStatusNotification(e)),this._app.getSnackbarAppNotifications().pipe(Wt(this._destroyRef)).subscribe(e=>{this._snackBar.open(e.message,e.action,{duration:e.duration,verticalPosition:"top"}),!this.appSettingsService.getNotificationConfig().sound.disableSound&&!e.silent&&(this.notificationHowl||(this.notificationHowl=new wu.Howl({src:["assets/notification.mp3"],preload:!0,volume:.3})),this.notificationHowl.stop(),this.notificationHowl.play())})}ngOnInit(){this._uiEvent.addGestureListeners(this._swipeLeftHandler,this._swipeRightHandler)}ngAfterViewInit(){this._uiEvent.addHotkeyListener(this._hotkeyHandler,{ctrlKey:!0,keys:["arrowright","arrowleft"]})}handleKeyDown(e,t){switch(e){case"arrowright":this.onSwipeRight(t);break;case"arrowleft":this.onSwipeLeft(t);break;case"escape":this.backdropClicked();break}}escapeKeyPressed(e){e=e.toLowerCase(),e==="escape"&&this.backdropClicked()}displayConnectionsStatusNotification(e){let t=e.message;switch(e.operation){case 0:this._app.sendSnackbarNotification(t,5e3,!0);break;case 1:case 2:break;case 3:this._app.sendSnackbarNotification(t,3e3,!1,"");break;case 4:this._app.sendSnackbarNotification(t,3e3,!0,"");break;case 5:this._app.sendSnackbarNotification(t,0,!1);break;default:console.error("[AppComponent] Unknown operation code:",e.operation),this._app.sendSnackbarNotification(`Unknown connection status: ${e.state}`,0,!1)}}onSwipeRight(e){this._dashboard.isDashboardStatic()&&!this._uiEvent.isDragging()&&(e.preventDefault(),this.isPhonePortrait().matches?(this.actionsSidenavOpened.set(!1),this.notificationsSidenavOpened.set(!0)):(this.actionsSidenavOpened.set(!1),this.notificationsSidenavOpened.update(t=>!t)))}backdropClicked(){this.notificationsSidenavOpened.update(e=>e?!e:!1),this.actionsSidenavOpened.update(e=>e?!e:!1)}onSwipeLeft(e){this._dashboard.isDashboardStatic()&&!this._uiEvent.isDragging()&&(e.preventDefault(),this.isPhonePortrait().matches?(this.notificationsSidenavOpened.set(!1),this.actionsSidenavOpened.set(!0)):(this.notificationsSidenavOpened.set(!1),this.actionsSidenavOpened.update(t=>!t)))}ngOnDestroy(){this._uiEvent.removeGestureListeners(this._swipeLeftHandler,this._swipeRightHandler),this._uiEvent.removeHotkeyListener(this._hotkeyHandler),this.notificationHowl?.unload(),this.notificationHowl=void 0}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=q({type:a,selectors:[["app-root"]],inputs:{actionsSidenavOpened:[1,"actionsSidenavOpened"],notificationsSidenavOpened:[1,"notificationsSidenavOpened"]},outputs:{actionsSidenavOpened:"actionsSidenavOpenedChange",notificationsSidenavOpened:"notificationsSidenavOpenedChange"},decls:8,vars:3,consts:[["actionsSidenav",""],[1,"sidenav-container",3,"swipeleft","swiperight","backdropClick"],["mode","over","position","start","autoFocus","true","disableClose","",1,"sidenav-notifications",3,"openedChange","keydown","opened"],["mode","over","position","end","autoFocus","true","disableClose","",1,"sidenav-actions",3,"openedChange","keydown","opened"],[3,"actionsSidenav"],[1,"router-outlet-container"]],template:function(t,i){if(t&1){let r=J();g(0,"mat-sidenav-container",1),W("swipeleft",function(s){return R(r),N(i.onSwipeLeft(s))})("swiperight",function(s){return R(r),N(i.onSwipeRight(s))})("backdropClick",function(){return R(r),N(i.backdropClicked())}),g(1,"mat-sidenav",2),Ee("openedChange",function(s){return R(r),Te(i.notificationsSidenavOpened,s)||(i.notificationsSidenavOpened=s),N(s)}),W("keydown",function(s){return R(r),N(i.escapeKeyPressed(s.key))}),Y(2,"menu-notifications"),C(),g(3,"mat-sidenav",3,0),Ee("openedChange",function(s){return R(r),Te(i.actionsSidenavOpened,s)||(i.actionsSidenavOpened=s),N(s)}),W("keydown",function(s){return R(r),N(i.escapeKeyPressed(s.key))}),Y(5,"menu-actions",4),C(),g(6,"mat-sidenav-content"),Y(7,"router-outlet",5),C()()}if(t&2){let r=Jl(4);x(),xe("opened",i.notificationsSidenavOpened),x(2),xe("opened",i.actionsSidenavOpened),x(2),G("actionsSidenav",r)}},dependencies:[gu,_u,Lt,gc,Ct,Ed,kd,yu,rl,vu,xo],styles:[".sidenav-container[_ngcontent-%COMP%]{height:100%;width:100%}mat-sidenav.sidenav-notifications[_ngcontent-%COMP%]{width:230px}mat-sidenav.sidenav-actions[_ngcontent-%COMP%]{width:135px}"]})}return a})();function Cu(a){return new nt(3e3,!1)}function N0(){return new nt(3100,!1)}function W0(){return new nt(3101,!1)}function L0(a){return new nt(3001,!1)}function V0(a){return new nt(3003,!1)}function z0(a){return new nt(3004,!1)}function xu(a,n){return new nt(3005,!1)}function Tu(){return new nt(3006,!1)}function Eu(){return new nt(3007,!1)}function Mu(a,n){return new nt(3008,!1)}function Du(a){return new nt(3002,!1)}function Pu(a,n,e,t,i){return new nt(3010,!1)}function Au(){return new nt(3011,!1)}function Ou(){return new nt(3012,!1)}function Iu(){return new nt(3200,!1)}function Ru(){return new nt(3202,!1)}function Nu(){return new nt(3013,!1)}function Wu(a){return new nt(3014,!1)}function Lu(a){return new nt(3015,!1)}function Vu(a){return new nt(3016,!1)}function zu(a,n){return new nt(3404,!1)}function F0(a){return new nt(3502,!1)}function Fu(a){return new nt(3503,!1)}function Bu(){return new nt(3300,!1)}function Hu(a){return new nt(3504,!1)}function Uu(a){return new nt(3301,!1)}function Gu(a,n){return new nt(3302,!1)}function qu(a){return new nt(3303,!1)}function ju(a,n){return new nt(3400,!1)}function $u(a){return new nt(3401,!1)}function Yu(a){return new nt(3402,!1)}function Xu(a,n){return new nt(3505,!1)}function Xi(a){switch(a.length){case 0:return new Ui;case 1:return a[0];default:return new Nn(a)}}function dl(a,n,e=new Map,t=new Map){let i=[],r=[],o=-1,s=null;if(n.forEach(d=>{let p=d.get("offset"),l=p==o,c=l&&s||new Map;d.forEach((m,v)=>{let b=v,k=m;if(v!=="offset")switch(b=a.normalizePropertyName(b,i),k){case Aa:k=e.get(v);break;case ki:k=t.get(v);break;default:k=a.normalizeStyleValue(v,b,k,i);break}c.set(b,k)}),l||r.push(c),s=c,o=p}),i.length)throw F0(i);return r}function Eo(a,n,e,t){switch(n){case"start":a.onStart(()=>t(e&&ol(e,"start",a)));break;case"done":a.onDone(()=>t(e&&ol(e,"done",a)));break;case"destroy":a.onDestroy(()=>t(e&&ol(e,"destroy",a)));break}}function ol(a,n,e){let t=e.totalTime,i=!!e.disabled,r=Mo(a.element,a.triggerName,a.fromState,a.toState,n||a.phaseName,t??a.totalTime,i),o=a._data;return o!=null&&(r._data=o),r}function Mo(a,n,e,t,i="",r=0,o){return{element:a,triggerName:n,fromState:e,toState:t,phaseName:i,totalTime:r,disabled:!!o}}function ri(a,n,e){let t=a.get(n);return t||a.set(n,t=e),t}function cl(a){let n=a.indexOf(":"),e=a.substring(1,n),t=a.slice(n+1);return[e,t]}var B0=typeof document>"u"?null:document.documentElement;function Do(a){let n=a.parentNode||a.host||null;return n===B0?null:n}function H0(a){return a.substring(1,6)=="ebkit"}var Un=null,ku=!1;function Ku(a){Un||(Un=U0()||{},ku=Un.style?"WebkitAppearance"in Un.style:!1);let n=!0;return Un.style&&!H0(a)&&(n=a in Un.style,!n&&ku&&(n="Webkit"+a.charAt(0).toUpperCase()+a.slice(1)in Un.style)),n}function U0(){return typeof document<"u"?document.body:null}function hl(a,n){for(;n;){if(n===a)return!0;n=Do(n)}return!1}function ul(a,n,e){if(e)return Array.from(a.querySelectorAll(n));let t=a.querySelector(n);return t?[t]:[]}var G0=1e3,ml="{{",q0="}}",pl="ng-enter",Po="ng-leave",lr="ng-trigger",dr=".ng-trigger",fl="ng-animating",Ao=".ng-animating";function Gi(a){if(typeof a=="number")return a;let n=a.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:sl(parseFloat(n[1]),n[2])}function sl(a,n){switch(n){case"s":return a*G0;default:return a}}function cr(a,n,e){return a.hasOwnProperty("duration")?a:$0(a,n,e)}var j0=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function $0(a,n,e){let t,i=0,r="";if(typeof a=="string"){let o=a.match(j0);if(o===null)return n.push(Cu(a)),{duration:0,delay:0,easing:""};t=sl(parseFloat(o[1]),o[2]);let s=o[3];s!=null&&(i=sl(parseFloat(s),o[4]));let d=o[5];d&&(r=d)}else t=a;if(!e){let o=!1,s=n.length;t<0&&(n.push(N0()),o=!0),i<0&&(n.push(W0()),o=!0),o&&n.splice(s,0,Cu(a))}return{duration:t,delay:i,easing:r}}function Qu(a){return a.length?a[0]instanceof Map?a:a.map(n=>new Map(Object.entries(n))):[]}function Oi(a,n,e){n.forEach((t,i)=>{let r=Oo(i);e&&!e.has(i)&&e.set(i,a.style[r]),a.style[r]=t})}function Cn(a,n){n.forEach((e,t)=>{let i=Oo(t);a.style[i]=""})}function Ua(a){return Array.isArray(a)?a.length==1?a[0]:xc(a):a}function Zu(a,n,e){let t=n.params||{},i=gl(a);i.length&&i.forEach(r=>{t.hasOwnProperty(r)||e.push(L0(r))})}var ll=new RegExp(`${ml}\\s*(.+?)\\s*${q0}`,"g");function gl(a){let n=[];if(typeof a=="string"){let e;for(;e=ll.exec(a);)n.push(e[1]);ll.lastIndex=0}return n}function Ga(a,n,e){let t=`${a}`,i=t.replace(ll,(r,o)=>{let s=n[o];return s==null&&(e.push(V0(o)),s=""),s.toString()});return i==t?a:i}var Y0=/-+([a-z0-9])/g;function Oo(a){return a.replace(Y0,(...n)=>n[1].toUpperCase())}function Ju(a,n){return a===0||n===0}function em(a,n,e){if(e.size&&n.length){let t=n[0],i=[];if(e.forEach((r,o)=>{t.has(o)||i.push(o),t.set(o,r)}),i.length)for(let r=1;r<n.length;r++){let o=n[r];i.forEach(s=>o.set(s,Io(a,s)))}}return n}function oi(a,n,e){switch(n.type){case Ue.Trigger:return a.visitTrigger(n,e);case Ue.State:return a.visitState(n,e);case Ue.Transition:return a.visitTransition(n,e);case Ue.Sequence:return a.visitSequence(n,e);case Ue.Group:return a.visitGroup(n,e);case Ue.Animate:return a.visitAnimate(n,e);case Ue.Keyframes:return a.visitKeyframes(n,e);case Ue.Style:return a.visitStyle(n,e);case Ue.Reference:return a.visitReference(n,e);case Ue.AnimateChild:return a.visitAnimateChild(n,e);case Ue.AnimateRef:return a.visitAnimateRef(n,e);case Ue.Query:return a.visitQuery(n,e);case Ue.Stagger:return a.visitStagger(n,e);default:throw z0(n.type)}}function Io(a,n){return window.getComputedStyle(a)[n]}var Il=(()=>{class a{validateStyleProperty(e){return Ku(e)}containsElement(e,t){return hl(e,t)}getParentElement(e){return Do(e)}query(e,t,i){return ul(e,t,i)}computeStyle(e,t,i){return i||""}animate(e,t,i,r,o,s=[],d){return new Ui(i,r)}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac})}return a})(),qn=class{static NOOP=new Il},jn=class{};var X0=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),Vo=class extends jn{normalizePropertyName(n,e){return Oo(n)}normalizeStyleValue(n,e,t,i){let r="",o=t.toString().trim();if(X0.has(e)&&t!==0&&t!=="0")if(typeof t=="number")r="px";else{let s=t.match(/^[+-]?[\d\.]+([a-z]*)$/);s&&s[1].length==0&&i.push(xu(n,t))}return o+r}};var zo="*";function K0(a,n){let e=[];return typeof a=="string"?a.split(/\s*,\s*/).forEach(t=>Q0(t,e,n)):e.push(a),e}function Q0(a,n,e){if(a[0]==":"){let d=Z0(a,e);if(typeof d=="function"){n.push(d);return}a=d}let t=a.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(t==null||t.length<4)return e.push(Lu(a)),n;let i=t[1],r=t[2],o=t[3];n.push(tm(i,o));let s=i==zo&&o==zo;r[0]=="<"&&!s&&n.push(tm(o,i))}function Z0(a,n){switch(a){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,t)=>parseFloat(t)>parseFloat(e);case":decrement":return(e,t)=>parseFloat(t)<parseFloat(e);default:return n.push(Vu(a)),"* => *"}}var Ro=new Set(["true","1"]),No=new Set(["false","0"]);function tm(a,n){let e=Ro.has(a)||No.has(a),t=Ro.has(n)||No.has(n);return(i,r)=>{let o=a==zo||a==i,s=n==zo||n==r;return!o&&e&&typeof i=="boolean"&&(o=i?Ro.has(a):No.has(a)),!s&&t&&typeof r=="boolean"&&(s=r?Ro.has(n):No.has(n)),o&&s}}var hm=":self",J0=new RegExp(`s*${hm}s*,?`,"g");function um(a,n,e,t){return new Sl(a).build(n,e,t)}var im="",Sl=class{_driver;constructor(n){this._driver=n}build(n,e,t){let i=new Cl(e);return this._resetContextStyleTimingState(i),oi(this,Ua(n),i)}_resetContextStyleTimingState(n){n.currentQuerySelector=im,n.collectedStyles=new Map,n.collectedStyles.set(im,new Map),n.currentTime=0}visitTrigger(n,e){let t=e.queryCount=0,i=e.depCount=0,r=[],o=[];return n.name.charAt(0)=="@"&&e.errors.push(Tu()),n.definitions.forEach(s=>{if(this._resetContextStyleTimingState(e),s.type==Ue.State){let d=s,p=d.name;p.toString().split(/\s*,\s*/).forEach(l=>{d.name=l,r.push(this.visitState(d,e))}),d.name=p}else if(s.type==Ue.Transition){let d=this.visitTransition(s,e);t+=d.queryCount,i+=d.depCount,o.push(d)}else e.errors.push(Eu())}),{type:Ue.Trigger,name:n.name,states:r,transitions:o,queryCount:t,depCount:i,options:null}}visitState(n,e){let t=this.visitStyle(n.styles,e),i=n.options&&n.options.params||null;if(t.containsDynamicStyles){let r=new Set,o=i||{};t.styles.forEach(s=>{s instanceof Map&&s.forEach(d=>{gl(d).forEach(p=>{o.hasOwnProperty(p)||r.add(p)})})}),r.size&&e.errors.push(Mu(n.name,[...r.values()]))}return{type:Ue.State,name:n.name,style:t,options:i?{params:i}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;let t=oi(this,Ua(n.animation),e),i=K0(n.expr,e.errors);return{type:Ue.Transition,matchers:i,animation:t,queryCount:e.queryCount,depCount:e.depCount,options:Gn(n.options)}}visitSequence(n,e){return{type:Ue.Sequence,steps:n.steps.map(t=>oi(this,t,e)),options:Gn(n.options)}}visitGroup(n,e){let t=e.currentTime,i=0,r=n.steps.map(o=>{e.currentTime=t;let s=oi(this,o,e);return i=Math.max(i,e.currentTime),s});return e.currentTime=i,{type:Ue.Group,steps:r,options:Gn(n.options)}}visitAnimate(n,e){let t=nv(n.timings,e.errors);e.currentAnimateTimings=t;let i,r=n.styles?n.styles:$i({});if(r.type==Ue.Keyframes)i=this.visitKeyframes(r,e);else{let o=n.styles,s=!1;if(!o){s=!0;let p={};t.easing&&(p.easing=t.easing),o=$i(p)}e.currentTime+=t.duration+t.delay;let d=this.visitStyle(o,e);d.isEmptyStep=s,i=d}return e.currentAnimateTimings=null,{type:Ue.Animate,timings:t,style:i,options:null}}visitStyle(n,e){let t=this._makeStyleAst(n,e);return this._validateStyleAst(t,e),t}_makeStyleAst(n,e){let t=[],i=Array.isArray(n.styles)?n.styles:[n.styles];for(let s of i)typeof s=="string"?s===ki?t.push(s):e.errors.push(Du(s)):t.push(new Map(Object.entries(s)));let r=!1,o=null;return t.forEach(s=>{if(s instanceof Map&&(s.has("easing")&&(o=s.get("easing"),s.delete("easing")),!r)){for(let d of s.values())if(d.toString().indexOf(ml)>=0){r=!0;break}}}),{type:Ue.Style,styles:t,easing:o,offset:n.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(n,e){let t=e.currentAnimateTimings,i=e.currentTime,r=e.currentTime;t&&r>0&&(r-=t.duration+t.delay),n.styles.forEach(o=>{typeof o!="string"&&o.forEach((s,d)=>{let p=e.collectedStyles.get(e.currentQuerySelector),l=p.get(d),c=!0;l&&(r!=i&&r>=l.startTime&&i<=l.endTime&&(e.errors.push(Pu(d,l.startTime,l.endTime,r,i)),c=!1),r=l.startTime),c&&p.set(d,{startTime:r,endTime:i}),e.options&&Zu(s,e.options,e.errors)})})}visitKeyframes(n,e){let t={type:Ue.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(Au()),t;let i=1,r=0,o=[],s=!1,d=!1,p=0,l=n.steps.map(F=>{let j=this._makeStyleAst(F,e),te=j.offset!=null?j.offset:iv(j.styles),ye=0;return te!=null&&(r++,ye=j.offset=te),d=d||ye<0||ye>1,s=s||ye<p,p=ye,o.push(ye),j});d&&e.errors.push(Ou()),s&&e.errors.push(Iu());let c=n.steps.length,m=0;r>0&&r<c?e.errors.push(Ru()):r==0&&(m=i/(c-1));let v=c-1,b=e.currentTime,k=e.currentAnimateTimings,M=k.duration;return l.forEach((F,j)=>{let te=m>0?j==v?1:m*j:o[j],ye=te*M;e.currentTime=b+k.delay+ye,k.duration=ye,this._validateStyleAst(F,e),F.offset=te,t.styles.push(F)}),t}visitReference(n,e){return{type:Ue.Reference,animation:oi(this,Ua(n.animation),e),options:Gn(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Ue.AnimateChild,options:Gn(n.options)}}visitAnimateRef(n,e){return{type:Ue.AnimateRef,animation:this.visitReference(n.animation,e),options:Gn(n.options)}}visitQuery(n,e){let t=e.currentQuerySelector,i=n.options||{};e.queryCount++,e.currentQuery=n;let[r,o]=ev(n.selector);e.currentQuerySelector=t.length?t+" "+r:r,ri(e.collectedStyles,e.currentQuerySelector,new Map);let s=oi(this,Ua(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=t,{type:Ue.Query,selector:r,limit:i.limit||0,optional:!!i.optional,includeSelf:o,animation:s,originalSelector:n.selector,options:Gn(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(Nu());let t=n.timings==="full"?{duration:0,delay:0,easing:"full"}:cr(n.timings,e.errors,!0);return{type:Ue.Stagger,animation:oi(this,Ua(n.animation),e),timings:t,options:null}}};function ev(a){let n=!!a.split(/\s*,\s*/).find(e=>e==hm);return n&&(a=a.replace(J0,"")),a=a.replace(/@\*/g,dr).replace(/@\w+/g,e=>dr+"-"+e.slice(1)).replace(/:animating/g,Ao),[a,n]}function tv(a){return a?ee({},a):null}var Cl=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}};function iv(a){if(typeof a=="string")return null;let n=null;if(Array.isArray(a))a.forEach(e=>{if(e instanceof Map&&e.has("offset")){let t=e;n=parseFloat(t.get("offset")),t.delete("offset")}});else if(a instanceof Map&&a.has("offset")){let e=a;n=parseFloat(e.get("offset")),e.delete("offset")}return n}function nv(a,n){if(a.hasOwnProperty("duration"))return a;if(typeof a=="number"){let r=cr(a,n).duration;return vl(r,0,"")}let e=a;if(e.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=vl(0,0,"");return r.dynamic=!0,r.strValue=e,r}let i=cr(e,n);return vl(i.duration,i.delay,i.easing)}function Gn(a){return a?(a=ee({},a),a.params&&(a.params=tv(a.params))):a={},a}function vl(a,n,e){return{duration:a,delay:n,easing:e}}function Rl(a,n,e,t,i,r,o=null,s=!1){return{type:1,element:a,keyframes:n,preStyleProps:e,postStyleProps:t,duration:i,delay:r,totalTime:i+r,easing:o,subTimeline:s}}var ur=class{_map=new Map;get(n){return this._map.get(n)||[]}append(n,e){let t=this._map.get(n);t||this._map.set(n,t=[]),t.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}},av=1,rv=":enter",ov=new RegExp(rv,"g"),sv=":leave",lv=new RegExp(sv,"g");function mm(a,n,e,t,i,r=new Map,o=new Map,s,d,p=[]){return new kl().buildKeyframes(a,n,e,t,i,r,o,s,d,p)}var kl=class{buildKeyframes(n,e,t,i,r,o,s,d,p,l=[]){p=p||new ur;let c=new xl(n,e,p,i,r,l,[]);c.options=d;let m=d.delay?Gi(d.delay):0;c.currentTimeline.delayNextStep(m),c.currentTimeline.setStyles([o],null,c.errors,d),oi(this,t,c);let v=c.timelines.filter(b=>b.containsAnimation());if(v.length&&s.size){let b;for(let k=v.length-1;k>=0;k--){let M=v[k];if(M.element===e){b=M;break}}b&&!b.allowOnlyTimelineStyles()&&b.setStyles([s],null,c.errors,d)}return v.length?v.map(b=>b.buildKeyframes()):[Rl(e,[],[],[],0,m,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){let t=e.subInstructions.get(e.element);if(t){let i=e.createSubContext(n.options),r=e.currentTimeline.currentTime,o=this._visitSubInstructions(t,i,i.options);r!=o&&e.transformIntoNewTimeline(o)}e.previousNode=n}visitAnimateRef(n,e){let t=e.createSubContext(n.options);t.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,t),this.visitReference(n.animation,t),e.transformIntoNewTimeline(t.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,t){for(let i of n){let r=i?.delay;if(r){let o=typeof r=="number"?r:Gi(Ga(r,i?.params??{},e.errors));t.delayNextStep(o)}}}_visitSubInstructions(n,e,t){let r=e.currentTimeline.currentTime,o=t.duration!=null?Gi(t.duration):null,s=t.delay!=null?Gi(t.delay):null;return o!==0&&n.forEach(d=>{let p=e.appendInstructionToTimeline(d,o,s);r=Math.max(r,p.duration+p.delay)}),r}visitReference(n,e){e.updateOptions(n.options,!0),oi(this,n.animation,e),e.previousNode=n}visitSequence(n,e){let t=e.subContextCount,i=e,r=n.options;if(r&&(r.params||r.delay)&&(i=e.createSubContext(r),i.transformIntoNewTimeline(),r.delay!=null)){i.previousNode.type==Ue.Style&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Fo);let o=Gi(r.delay);i.delayNextStep(o)}n.steps.length&&(n.steps.forEach(o=>oi(this,o,i)),i.currentTimeline.applyStylesToKeyframe(),i.subContextCount>t&&i.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){let t=[],i=e.currentTimeline.currentTime,r=n.options&&n.options.delay?Gi(n.options.delay):0;n.steps.forEach(o=>{let s=e.createSubContext(n.options);r&&s.delayNextStep(r),oi(this,o,s),i=Math.max(i,s.currentTimeline.currentTime),t.push(s.currentTimeline)}),t.forEach(o=>e.currentTimeline.mergeTimelineCollectedStyles(o)),e.transformIntoNewTimeline(i),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){let t=n.strValue,i=e.params?Ga(t,e.params,e.errors):t;return cr(i,e.errors)}else return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){let t=e.currentAnimateTimings=this._visitTiming(n.timings,e),i=e.currentTimeline;t.delay&&(e.incrementTime(t.delay),i.snapshotCurrentStyles());let r=n.style;r.type==Ue.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(t.duration),this.visitStyle(r,e),i.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){let t=e.currentTimeline,i=e.currentAnimateTimings;!i&&t.hasCurrentStyleProperties()&&t.forwardFrame();let r=i&&i.easing||n.easing;n.isEmptyStep?t.applyEmptyStep(r):t.setStyles(n.styles,r,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){let t=e.currentAnimateTimings,i=e.currentTimeline.duration,r=t.duration,s=e.createSubContext().currentTimeline;s.easing=t.easing,n.styles.forEach(d=>{let p=d.offset||0;s.forwardTime(p*r),s.setStyles(d.styles,d.easing,e.errors,e.options),s.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(s),e.transformIntoNewTimeline(i+r),e.previousNode=n}visitQuery(n,e){let t=e.currentTimeline.currentTime,i=n.options||{},r=i.delay?Gi(i.delay):0;r&&(e.previousNode.type===Ue.Style||t==0&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Fo);let o=t,s=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!i.optional,e.errors);e.currentQueryTotal=s.length;let d=null;s.forEach((p,l)=>{e.currentQueryIndex=l;let c=e.createSubContext(n.options,p);r&&c.delayNextStep(r),p===e.element&&(d=c.currentTimeline),oi(this,n.animation,c),c.currentTimeline.applyStylesToKeyframe();let m=c.currentTimeline.currentTime;o=Math.max(o,m)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(o),d&&(e.currentTimeline.mergeTimelineCollectedStyles(d),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){let t=e.parentContext,i=e.currentTimeline,r=n.timings,o=Math.abs(r.duration),s=o*(e.currentQueryTotal-1),d=o*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":d=s-d;break;case"full":d=t.currentStaggerTime;break}let l=e.currentTimeline;d&&l.delayNextStep(d);let c=l.currentTime;oi(this,n.animation,e),e.previousNode=n,t.currentStaggerTime=i.currentTime-c+(i.startTime-t.currentTimeline.startTime)}},Fo={},xl=class a{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=Fo;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,e,t,i,r,o,s,d){this._driver=n,this.element=e,this.subInstructions=t,this._enterClassName=i,this._leaveClassName=r,this.errors=o,this.timelines=s,this.currentTimeline=d||new Bo(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;let t=n,i=this.options;t.duration!=null&&(i.duration=Gi(t.duration)),t.delay!=null&&(i.delay=Gi(t.delay));let r=t.params;if(r){let o=i.params;o||(o=this.options.params={}),Object.keys(r).forEach(s=>{(!e||!o.hasOwnProperty(s))&&(o[s]=Ga(r[s],o,this.errors))})}}_copyOptions(){let n={};if(this.options){let e=this.options.params;if(e){let t=n.params={};Object.keys(e).forEach(i=>{t[i]=e[i]})}}return n}createSubContext(n=null,e,t){let i=e||this.element,r=new a(this._driver,i,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(i,t||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(n),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(n){return this.previousNode=Fo,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,t){let i={duration:e??n.duration,delay:this.currentTimeline.currentTime+(t??0)+n.delay,easing:""},r=new Tl(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,i,n.stretchStartingKeyframe);return this.timelines.push(r),i}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,t,i,r,o){let s=[];if(i&&s.push(this.element),n.length>0){n=n.replace(ov,"."+this._enterClassName),n=n.replace(lv,"."+this._leaveClassName);let d=t!=1,p=this._driver.query(this.element,n,d);t!==0&&(p=t<0?p.slice(p.length+t,p.length):p.slice(0,t)),s.push(...p)}return!r&&s.length==0&&o.push(Wu(e)),s}},Bo=class a{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,e,t,i){this._driver=n,this.element=e,this.startTime=t,this._elementTimelineStylesLookup=i,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){let e=this._keyframes.size===1&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new a(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=av,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,t]of this._globalTimelineStyles)this._backFill.set(e,t||ki),this._currentKeyframe.set(e,ki);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,t,i){e&&this._previousKeyframe.set("easing",e);let r=i&&i.params||{},o=dv(n,this._globalTimelineStyles);for(let[s,d]of o){let p=Ga(d,r,t);this._pendingStyles.set(s,p),this._localTimelineStyles.has(s)||this._backFill.set(s,this._globalTimelineStyles.get(s)??ki),this._updateStyle(s,p)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,t)=>{let i=this._styleSummary.get(t);(!i||e.time>i.time)&&this._updateStyle(t,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();let n=new Set,e=new Set,t=this._keyframes.size===1&&this.duration===0,i=[];this._keyframes.forEach((s,d)=>{let p=new Map([...this._backFill,...s]);p.forEach((l,c)=>{l===Aa?n.add(c):l===ki&&e.add(c)}),t||p.set("offset",d/this.duration),i.push(p)});let r=[...n.values()],o=[...e.values()];if(t){let s=i[0],d=new Map(s);s.set("offset",0),d.set("offset",1),i=[s,d]}return Rl(this.element,i,r,o,this.duration,this.startTime,this.easing,!1)}},Tl=class extends Bo{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,e,t,i,r,o,s=!1){super(n,e,o.delay),this.keyframes=t,this.preStyleProps=i,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:o.duration,delay:o.delay,easing:o.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:t,easing:i}=this.timings;if(this._stretchStartingKeyframe&&e){let r=[],o=t+e,s=e/o,d=new Map(n[0]);d.set("offset",0),r.push(d);let p=new Map(n[0]);p.set("offset",nm(s)),r.push(p);let l=n.length-1;for(let c=1;c<=l;c++){let m=new Map(n[c]),v=m.get("offset"),b=e+v*t;m.set("offset",nm(b/o)),r.push(m)}t=o,e=0,i="",n=r}return Rl(this.element,n,this.preStyleProps,this.postStyleProps,t,e,i,!0)}};function nm(a,n=3){let e=Math.pow(10,n-1);return Math.round(a*e)/e}function dv(a,n){let e=new Map,t;return a.forEach(i=>{if(i==="*"){t??=n.keys();for(let r of t)e.set(r,ki)}else for(let[r,o]of i)e.set(r,o)}),e}function am(a,n,e,t,i,r,o,s,d,p,l,c,m){return{type:0,element:a,triggerName:n,isRemovalTransition:i,fromState:e,fromStyles:r,toState:t,toStyles:o,timelines:s,queriedElements:d,preStyleProps:p,postStyleProps:l,totalTime:c,errors:m}}var yl={},Ho=class{_triggerName;ast;_stateStyles;constructor(n,e,t){this._triggerName=n,this.ast=e,this._stateStyles=t}match(n,e,t,i){return cv(this.ast.matchers,n,e,t,i)}buildStyles(n,e,t){let i=this._stateStyles.get("*");return n!==void 0&&(i=this._stateStyles.get(n?.toString())||i),i?i.buildStyles(e,t):new Map}build(n,e,t,i,r,o,s,d,p,l){let c=[],m=this.ast.options&&this.ast.options.params||yl,v=s&&s.params||yl,b=this.buildStyles(t,v,c),k=d&&d.params||yl,M=this.buildStyles(i,k,c),F=new Set,j=new Map,te=new Map,ye=i==="void",Le={params:pm(k,m),delay:this.ast.options?.delay},qe=l?[]:mm(n,e,this.ast.animation,r,o,b,M,Le,p,c),ke=0;return qe.forEach(Z=>{ke=Math.max(Z.duration+Z.delay,ke)}),c.length?am(e,this._triggerName,t,i,ye,b,M,[],[],j,te,ke,c):(qe.forEach(Z=>{let Pe=Z.element,je=ri(j,Pe,new Set);Z.preStyleProps.forEach(it=>je.add(it));let vt=ri(te,Pe,new Set);Z.postStyleProps.forEach(it=>vt.add(it)),Pe!==e&&F.add(Pe)}),am(e,this._triggerName,t,i,ye,b,M,qe,[...F.values()],j,te,ke))}};function cv(a,n,e,t,i){return a.some(r=>r(n,e,t,i))}function pm(a,n){let e=ee({},n);return Object.entries(a).forEach(([t,i])=>{i!=null&&(e[t]=i)}),e}var El=class{styles;defaultParams;normalizer;constructor(n,e,t){this.styles=n,this.defaultParams=e,this.normalizer=t}buildStyles(n,e){let t=new Map,i=pm(n,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((o,s)=>{o&&(o=Ga(o,i,e));let d=this.normalizer.normalizePropertyName(s,e);o=this.normalizer.normalizeStyleValue(s,d,o,e),t.set(s,o)})}),t}};function hv(a,n,e){return new Ml(a,n,e)}var Ml=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,e,t){this.name=n,this.ast=e,this._normalizer=t,e.states.forEach(i=>{let r=i.options&&i.options.params||{};this.states.set(i.name,new El(i.style,r,t))}),rm(this.states,"true","1"),rm(this.states,"false","0"),e.transitions.forEach(i=>{this.transitionFactories.push(new Ho(n,i,this.states))}),this.fallbackTransition=uv(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,t,i){return this.transitionFactories.find(o=>o.match(n,e,t,i))||null}matchStyles(n,e,t){return this.fallbackTransition.buildStyles(n,e,t)}};function uv(a,n,e){let t=[(o,s)=>!0],i={type:Ue.Sequence,steps:[],options:null},r={type:Ue.Transition,animation:i,matchers:t,options:null,queryCount:0,depCount:0};return new Ho(a,r,n)}function rm(a,n,e){a.has(n)?a.has(e)||a.set(e,a.get(n)):a.has(e)&&a.set(n,a.get(e))}var mv=new ur,Dl=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,e,t){this.bodyNode=n,this._driver=e,this._normalizer=t}register(n,e){let t=[],i=[],r=um(this._driver,e,t,i);if(t.length)throw Fu(t);this._animations.set(n,r)}_buildPlayer(n,e,t){let i=n.element,r=dl(this._normalizer,n.keyframes,e,t);return this._driver.animate(i,r,n.duration,n.delay,n.easing,[],!0)}create(n,e,t={}){let i=[],r=this._animations.get(n),o,s=new Map;if(r?(o=mm(this._driver,e,r,pl,Po,new Map,new Map,t,mv,i),o.forEach(l=>{let c=ri(s,l.element,new Map);l.postStyleProps.forEach(m=>c.set(m,null))})):(i.push(Bu()),o=[]),i.length)throw Hu(i);s.forEach((l,c)=>{l.forEach((m,v)=>{l.set(v,this._driver.computeStyle(c,v,ki))})});let d=o.map(l=>{let c=s.get(l.element);return this._buildPlayer(l,new Map,c)}),p=Xi(d);return this._playersById.set(n,p),p.onDestroy(()=>this.destroy(n)),this.players.push(p),p}destroy(n){let e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);let t=this.players.indexOf(e);t>=0&&this.players.splice(t,1)}_getPlayer(n){let e=this._playersById.get(n);if(!e)throw Uu(n);return e}listen(n,e,t,i){let r=Mo(e,"","","");return Eo(this._getPlayer(n),t,r,i),()=>{}}command(n,e,t,i){if(t=="register"){this.register(n,i[0]);return}if(t=="create"){let o=i[0]||{};this.create(n,e,o);return}let r=this._getPlayer(n);switch(t){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(n);break}}},om="ng-animate-queued",pv=".ng-animate-queued",bl="ng-animate-disabled",fv=".ng-animate-disabled",gv="ng-star-inserted",vv=".ng-star-inserted",yv=[],fm={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},bv={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ii="__ng_removed",mr=class{namespaceId;value;options;get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;let t=n&&n.hasOwnProperty("value"),i=t?n.value:n;if(this.value=wv(i),t){let r=n,{value:o}=r,s=Ll(r,["value"]);this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){let e=n.params;if(e){let t=this.options.params;Object.keys(e).forEach(i=>{t[i]==null&&(t[i]=e[i])})}}},hr="void",_l=new mr(hr),Pl=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,e,t){this.id=n,this.hostElement=e,this._engine=t,this._hostClassName="ng-tns-"+n,Ti(e,this._hostClassName)}listen(n,e,t,i){if(!this._triggers.has(e))throw Gu(t,e);if(t==null||t.length==0)throw qu(e);if(!Sv(t))throw ju(t,e);let r=ri(this._elementListeners,n,[]),o={name:e,phase:t,callback:i};r.push(o);let s=ri(this._engine.statesByElement,n,new Map);return s.has(e)||(Ti(n,lr),Ti(n,lr+"-"+e),s.set(e,_l)),()=>{this._engine.afterFlush(()=>{let d=r.indexOf(o);d>=0&&r.splice(d,1),this._triggers.has(e)||s.delete(e)})}}register(n,e){return this._triggers.has(n)?!1:(this._triggers.set(n,e),!0)}_getTrigger(n){let e=this._triggers.get(n);if(!e)throw $u(n);return e}trigger(n,e,t,i=!0){let r=this._getTrigger(e),o=new pr(this.id,e,n),s=this._engine.statesByElement.get(n);s||(Ti(n,lr),Ti(n,lr+"-"+e),this._engine.statesByElement.set(n,s=new Map));let d=s.get(e),p=new mr(t,this.id);if(!(t&&t.hasOwnProperty("value"))&&d&&p.absorbOptions(d.options),s.set(e,p),d||(d=_l),!(p.value===hr)&&d.value===p.value){if(!xv(d.params,p.params)){let k=[],M=r.matchStyles(d.value,d.params,k),F=r.matchStyles(p.value,p.params,k);k.length?this._engine.reportError(k):this._engine.afterFlush(()=>{Cn(n,M),Oi(n,F)})}return}let m=ri(this._engine.playersByElement,n,[]);m.forEach(k=>{k.namespaceId==this.id&&k.triggerName==e&&k.queued&&k.destroy()});let v=r.matchTransition(d.value,p.value,n,p.params),b=!1;if(!v){if(!i)return;v=r.fallbackTransition,b=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:v,fromState:d,toState:p,player:o,isFallbackTransition:b}),b||(Ti(n,om),o.onStart(()=>{qa(n,om)})),o.onDone(()=>{let k=this.players.indexOf(o);k>=0&&this.players.splice(k,1);let M=this._engine.playersByElement.get(n);if(M){let F=M.indexOf(o);F>=0&&M.splice(F,1)}}),this.players.push(o),m.push(o),o}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,t)=>{this._elementListeners.set(t,e.filter(i=>i.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);let e=this._engine.playersByElement.get(n);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){let t=this._engine.driver.query(n,dr,!0);t.forEach(i=>{if(i[Ii])return;let r=this._engine.fetchNamespacesByElement(i);r.size?r.forEach(o=>o.triggerLeaveAnimation(i,e,!1,!0)):this.clearElementCache(i)}),this._engine.afterFlushAnimationsDone(()=>t.forEach(i=>this.clearElementCache(i)))}triggerLeaveAnimation(n,e,t,i){let r=this._engine.statesByElement.get(n),o=new Map;if(r){let s=[];if(r.forEach((d,p)=>{if(o.set(p,d.value),this._triggers.has(p)){let l=this.trigger(n,p,hr,i);l&&s.push(l)}}),s.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,o),t&&Xi(s).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){let e=this._elementListeners.get(n),t=this._engine.statesByElement.get(n);if(e&&t){let i=new Set;e.forEach(r=>{let o=r.name;if(i.has(o))return;i.add(o);let d=this._triggers.get(o).fallbackTransition,p=t.get(o)||_l,l=new mr(hr),c=new pr(this.id,o,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:o,transition:d,fromState:p,toState:l,player:c,isFallbackTransition:!0})})}}removeNode(n,e){let t=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let i=!1;if(t.totalAnimations){let r=t.players.length?t.playersByQueriedElement.get(n):[];if(r&&r.length)i=!0;else{let o=n;for(;o=o.parentNode;)if(t.statesByElement.get(o)){i=!0;break}}}if(this.prepareLeaveAnimationListeners(n),i)t.markElementAsRemoved(this.id,n,!1,e);else{let r=n[Ii];(!r||r===fm)&&(t.afterFlush(()=>this.clearElementCache(n)),t.destroyInnerAnimations(n),t._onRemovalComplete(n,e))}}insertNode(n,e){Ti(n,this._hostClassName)}drainQueuedTransitions(n){let e=[];return this._queue.forEach(t=>{let i=t.player;if(i.destroyed)return;let r=t.element,o=this._elementListeners.get(r);o&&o.forEach(s=>{if(s.name==t.triggerName){let d=Mo(r,t.triggerName,t.fromState.value,t.toState.value);d._data=n,Eo(t.player,s.phase,d,s.callback)}}),i.markedForDestroy?this._engine.afterFlush(()=>{i.destroy()}):e.push(t)}),this._queue=[],e.sort((t,i)=>{let r=t.transition.ast.depCount,o=i.transition.ast.depCount;return r==0||o==0?r-o:this._engine.driver.containsElement(t.element,i.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}},Al=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,e)=>{};_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,t){this.bodyNode=n,this.driver=e,this._normalizer=t}get queuedPlayers(){let n=[];return this._namespaceList.forEach(e=>{e.players.forEach(t=>{t.queued&&n.push(t)})}),n}createNamespace(n,e){let t=new Pl(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(t,e):(this.newHostElements.set(e,t),this.collectEnterElement(e)),this._namespaceLookup[n]=t}_balanceNamespaceList(n,e){let t=this._namespaceList,i=this.namespacesByHostElement;if(t.length-1>=0){let o=!1,s=this.driver.getParentElement(e);for(;s;){let d=i.get(s);if(d){let p=t.indexOf(d);t.splice(p+1,0,n),o=!0;break}s=this.driver.getParentElement(s)}o||t.unshift(n)}else t.push(n);return i.set(e,n),n}register(n,e){let t=this._namespaceLookup[n];return t||(t=this.createNamespace(n,e)),t}registerTrigger(n,e,t){let i=this._namespaceLookup[n];i&&i.register(e,t)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let t=this._fetchNamespace(n);this.namespacesByHostElement.delete(t.hostElement);let i=this._namespaceList.indexOf(t);i>=0&&this._namespaceList.splice(i,1),t.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){let e=new Set,t=this.statesByElement.get(n);if(t){for(let i of t.values())if(i.namespaceId){let r=this._fetchNamespace(i.namespaceId);r&&e.add(r)}}return e}trigger(n,e,t,i){if(Wo(e)){let r=this._fetchNamespace(n);if(r)return r.trigger(e,t,i),!0}return!1}insertNode(n,e,t,i){if(!Wo(e))return;let r=e[Ii];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let o=this.collectedLeaveElements.indexOf(e);o>=0&&this.collectedLeaveElements.splice(o,1)}if(n){let o=this._fetchNamespace(n);o&&o.insertNode(e,t)}i&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Ti(n,bl)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),qa(n,bl))}removeNode(n,e,t){if(Wo(e)){let i=n?this._fetchNamespace(n):null;i?i.removeNode(e,t):this.markElementAsRemoved(n,e,!1,t);let r=this.namespacesByHostElement.get(e);r&&r.id!==n&&r.removeNode(e,t)}else this._onRemovalComplete(e,t)}markElementAsRemoved(n,e,t,i,r){this.collectedLeaveElements.push(e),e[Ii]={namespaceId:n,setForRemoval:i,hasAnimation:t,removedBeforeQueried:!1,previousTriggersValues:r}}listen(n,e,t,i,r){return Wo(e)?this._fetchNamespace(n).listen(e,t,i,r):()=>{}}_buildInstruction(n,e,t,i,r){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,t,i,n.fromState.options,n.toState.options,e,r)}destroyInnerAnimations(n){let e=this.driver.query(n,dr,!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),this.playersByQueriedElement.size!=0&&(e=this.driver.query(n,Ao,!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(n){let e=this.playersByElement.get(n);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(n){let e=this.playersByQueriedElement.get(n);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Xi(this.players).onDone(()=>n());n()})}processLeaveNode(n){let e=n[Ii];if(e&&e.setForRemoval){if(n[Ii]=fm,e.namespaceId){this.destroyInnerAnimations(n);let t=this._fetchNamespace(e.namespaceId);t&&t.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(bl)&&this.markElementAsDisabled(n,!1),this.driver.query(n,fv,!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,i)=>this._balanceNamespaceList(t,i)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let t=0;t<this.collectedEnterElements.length;t++){let i=this.collectedEnterElements[t];Ti(i,gv)}if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){let t=[];try{e=this._flushAnimations(t,n)}finally{for(let i=0;i<t.length;i++)t[i]()}}else for(let t=0;t<this.collectedLeaveElements.length;t++){let i=this.collectedLeaveElements[t];this.processLeaveNode(i)}if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(t=>t()),this._flushFns=[],this._whenQuietFns.length){let t=this._whenQuietFns;this._whenQuietFns=[],e.length?Xi(e).onDone(()=>{t.forEach(i=>i())}):t.forEach(i=>i())}}reportError(n){throw Yu(n)}_flushAnimations(n,e){let t=new ur,i=[],r=new Map,o=[],s=new Map,d=new Map,p=new Map,l=new Set;this.disabledNodes.forEach(ie=>{l.add(ie);let fe=this.driver.query(ie,pv,!0);for(let we=0;we<fe.length;we++)l.add(fe[we])});let c=this.bodyNode,m=Array.from(this.statesByElement.keys()),v=dm(m,this.collectedEnterElements),b=new Map,k=0;v.forEach((ie,fe)=>{let we=pl+k++;b.set(fe,we),ie.forEach($e=>Ti($e,we))});let M=[],F=new Set,j=new Set;for(let ie=0;ie<this.collectedLeaveElements.length;ie++){let fe=this.collectedLeaveElements[ie],we=fe[Ii];we&&we.setForRemoval&&(M.push(fe),F.add(fe),we.hasAnimation?this.driver.query(fe,vv,!0).forEach($e=>F.add($e)):j.add(fe))}let te=new Map,ye=dm(m,Array.from(F));ye.forEach((ie,fe)=>{let we=Po+k++;te.set(fe,we),ie.forEach($e=>Ti($e,we))}),n.push(()=>{v.forEach((ie,fe)=>{let we=b.get(fe);ie.forEach($e=>qa($e,we))}),ye.forEach((ie,fe)=>{let we=te.get(fe);ie.forEach($e=>qa($e,we))}),M.forEach(ie=>{this.processLeaveNode(ie)})});let Le=[],qe=[];for(let ie=this._namespaceList.length-1;ie>=0;ie--)this._namespaceList[ie].drainQueuedTransitions(e).forEach(we=>{let $e=we.player,bt=we.element;if(Le.push($e),this.collectedEnterElements.length){let gt=bt[Ii];if(gt&&gt.setForMove){if(gt.previousTriggersValues&&gt.previousTriggersValues.has(we.triggerName)){let st=gt.previousTriggersValues.get(we.triggerName),ct=this.statesByElement.get(we.element);if(ct&&ct.has(we.triggerName)){let mi=ct.get(we.triggerName);mi.value=st,ct.set(we.triggerName,mi)}}$e.destroy();return}}let Et=!c||!this.driver.containsElement(c,bt),Mt=te.get(bt),$t=b.get(bt),pt=this._buildInstruction(we,t,$t,Mt,Et);if(pt.errors&&pt.errors.length){qe.push(pt);return}if(Et){$e.onStart(()=>Cn(bt,pt.fromStyles)),$e.onDestroy(()=>Oi(bt,pt.toStyles)),i.push($e);return}if(we.isFallbackTransition){$e.onStart(()=>Cn(bt,pt.fromStyles)),$e.onDestroy(()=>Oi(bt,pt.toStyles)),i.push($e);return}let $n=[];pt.timelines.forEach(gt=>{gt.stretchStartingKeyframe=!0,this.disabledNodes.has(gt.element)||$n.push(gt)}),pt.timelines=$n,t.append(bt,pt.timelines);let kt={instruction:pt,player:$e,element:bt};o.push(kt),pt.queriedElements.forEach(gt=>ri(s,gt,[]).push($e)),pt.preStyleProps.forEach((gt,st)=>{if(gt.size){let ct=d.get(st);ct||d.set(st,ct=new Set),gt.forEach((mi,Ei)=>ct.add(Ei))}}),pt.postStyleProps.forEach((gt,st)=>{let ct=p.get(st);ct||p.set(st,ct=new Set),gt.forEach((mi,Ei)=>ct.add(Ei))})});if(qe.length){let ie=[];qe.forEach(fe=>{ie.push(Xu(fe.triggerName,fe.errors))}),Le.forEach(fe=>fe.destroy()),this.reportError(ie)}let ke=new Map,Z=new Map;o.forEach(ie=>{let fe=ie.element;t.has(fe)&&(Z.set(fe,fe),this._beforeAnimationBuild(ie.player.namespaceId,ie.instruction,ke))}),i.forEach(ie=>{let fe=ie.element;this._getPreviousPlayers(fe,!1,ie.namespaceId,ie.triggerName,null).forEach($e=>{ri(ke,fe,[]).push($e),$e.destroy()})});let Pe=M.filter(ie=>cm(ie,d,p)),je=new Map;lm(je,this.driver,j,p,ki).forEach(ie=>{cm(ie,d,p)&&Pe.push(ie)});let it=new Map;v.forEach((ie,fe)=>{lm(it,this.driver,new Set(ie),d,Aa)}),Pe.forEach(ie=>{let fe=je.get(ie),we=it.get(ie);je.set(ie,new Map([...fe?.entries()??[],...we?.entries()??[]]))});let tt=[],yt=[],ui={};o.forEach(ie=>{let{element:fe,player:we,instruction:$e}=ie;if(t.has(fe)){if(l.has(fe)){we.onDestroy(()=>Oi(fe,$e.toStyles)),we.disabled=!0,we.overrideTotalTime($e.totalTime),i.push(we);return}let bt=ui;if(Z.size>1){let Mt=fe,$t=[];for(;Mt=Mt.parentNode;){let pt=Z.get(Mt);if(pt){bt=pt;break}$t.push(Mt)}$t.forEach(pt=>Z.set(pt,bt))}let Et=this._buildAnimation(we.namespaceId,$e,ke,r,it,je);if(we.setRealPlayer(Et),bt===ui)tt.push(we);else{let Mt=this.playersByElement.get(bt);Mt&&Mt.length&&(we.parentPlayer=Xi(Mt)),i.push(we)}}else Cn(fe,$e.fromStyles),we.onDestroy(()=>Oi(fe,$e.toStyles)),yt.push(we),l.has(fe)&&i.push(we)}),yt.forEach(ie=>{let fe=r.get(ie.element);if(fe&&fe.length){let we=Xi(fe);ie.setRealPlayer(we)}}),i.forEach(ie=>{ie.parentPlayer?ie.syncPlayerEvents(ie.parentPlayer):ie.destroy()});for(let ie=0;ie<M.length;ie++){let fe=M[ie],we=fe[Ii];if(qa(fe,Po),we&&we.hasAnimation)continue;let $e=[];if(s.size){let Et=s.get(fe);Et&&Et.length&&$e.push(...Et);let Mt=this.driver.query(fe,Ao,!0);for(let $t=0;$t<Mt.length;$t++){let pt=s.get(Mt[$t]);pt&&pt.length&&$e.push(...pt)}}let bt=$e.filter(Et=>!Et.destroyed);bt.length?Cv(this,fe,bt):this.processLeaveNode(fe)}return M.length=0,tt.forEach(ie=>{this.players.push(ie),ie.onDone(()=>{ie.destroy();let fe=this.players.indexOf(ie);this.players.splice(fe,1)}),ie.play()}),tt}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,t,i,r){let o=[];if(e){let s=this.playersByQueriedElement.get(n);s&&(o=s)}else{let s=this.playersByElement.get(n);if(s){let d=!r||r==hr;s.forEach(p=>{p.queued||!d&&p.triggerName!=i||o.push(p)})}}return(t||i)&&(o=o.filter(s=>!(t&&t!=s.namespaceId||i&&i!=s.triggerName))),o}_beforeAnimationBuild(n,e,t){let i=e.triggerName,r=e.element,o=e.isRemovalTransition?void 0:n,s=e.isRemovalTransition?void 0:i;for(let d of e.timelines){let p=d.element,l=p!==r,c=ri(t,p,[]);this._getPreviousPlayers(p,l,o,s,e.toState).forEach(v=>{let b=v.getRealPlayer();b.beforeDestroy&&b.beforeDestroy(),v.destroy(),c.push(v)})}Cn(r,e.fromStyles)}_buildAnimation(n,e,t,i,r,o){let s=e.triggerName,d=e.element,p=[],l=new Set,c=new Set,m=e.timelines.map(b=>{let k=b.element;l.add(k);let M=k[Ii];if(M&&M.removedBeforeQueried)return new Ui(b.duration,b.delay);let F=k!==d,j=kv((t.get(k)||yv).map(ke=>ke.getRealPlayer())).filter(ke=>{let Z=ke;return Z.element?Z.element===k:!1}),te=r.get(k),ye=o.get(k),Le=dl(this._normalizer,b.keyframes,te,ye),qe=this._buildPlayer(b,Le,j);if(b.subTimeline&&i&&c.add(k),F){let ke=new pr(n,s,k);ke.setRealPlayer(qe),p.push(ke)}return qe});p.forEach(b=>{ri(this.playersByQueriedElement,b.element,[]).push(b),b.onDone(()=>_v(this.playersByQueriedElement,b.element,b))}),l.forEach(b=>Ti(b,fl));let v=Xi(m);return v.onDestroy(()=>{l.forEach(b=>qa(b,fl)),Oi(d,e.toStyles)}),c.forEach(b=>{ri(i,b,[]).push(v)}),v}_buildPlayer(n,e,t){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,t):new Ui(n.duration,n.delay)}},pr=class{namespaceId;triggerName;element;_player=new Ui;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,e,t){this.namespaceId=n,this.triggerName=e,this.element=t}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,t)=>{e.forEach(i=>Eo(n,t,void 0,i))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){let e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){ri(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){let e=this._player;e.triggerCallback&&e.triggerCallback(n)}};function _v(a,n,e){let t=a.get(n);if(t){if(t.length){let i=t.indexOf(e);t.splice(i,1)}t.length==0&&a.delete(n)}return t}function wv(a){return a??null}function Wo(a){return a&&a.nodeType===1}function Sv(a){return a=="start"||a=="done"}function sm(a,n){let e=a.style.display;return a.style.display=n??"none",e}function lm(a,n,e,t,i){let r=[];e.forEach(d=>r.push(sm(d)));let o=[];t.forEach((d,p)=>{let l=new Map;d.forEach(c=>{let m=n.computeStyle(p,c,i);l.set(c,m),(!m||m.length==0)&&(p[Ii]=bv,o.push(p))}),a.set(p,l)});let s=0;return e.forEach(d=>sm(d,r[s++])),o}function dm(a,n){let e=new Map;if(a.forEach(s=>e.set(s,[])),n.length==0)return e;let t=1,i=new Set(n),r=new Map;function o(s){if(!s)return t;let d=r.get(s);if(d)return d;let p=s.parentNode;return e.has(p)?d=p:i.has(p)?d=t:d=o(p),r.set(s,d),d}return n.forEach(s=>{let d=o(s);d!==t&&e.get(d).push(s)}),e}function Ti(a,n){a.classList?.add(n)}function qa(a,n){a.classList?.remove(n)}function Cv(a,n,e){Xi(e).onDone(()=>a.processLeaveNode(n))}function kv(a){let n=[];return gm(a,n),n}function gm(a,n){for(let e=0;e<a.length;e++){let t=a[e];t instanceof Nn?gm(t.players,n):n.push(t)}}function xv(a,n){let e=Object.keys(a),t=Object.keys(n);if(e.length!=t.length)return!1;for(let i=0;i<e.length;i++){let r=e[i];if(!n.hasOwnProperty(r)||a[r]!==n[r])return!1}return!0}function cm(a,n,e){let t=e.get(a);if(!t)return!1;let i=n.get(a);return i?t.forEach(r=>i.add(r)):n.set(a,t),e.delete(a),!0}var ja=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,e)=>{};constructor(n,e,t){this._driver=e,this._normalizer=t,this._transitionEngine=new Al(n.body,e,t),this._timelineEngine=new Dl(n.body,e,t),this._transitionEngine.onRemovalComplete=(i,r)=>this.onRemovalComplete(i,r)}registerTrigger(n,e,t,i,r){let o=n+"-"+i,s=this._triggerCache[o];if(!s){let d=[],p=[],l=um(this._driver,r,d,p);if(d.length)throw zu(i,d);s=hv(i,l,this._normalizer),this._triggerCache[o]=s}this._transitionEngine.registerTrigger(e,i,s)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,t,i){this._transitionEngine.insertNode(n,e,t,i)}onRemove(n,e,t){this._transitionEngine.removeNode(n,e,t)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,t,i){if(t.charAt(0)=="@"){let[r,o]=cl(t),s=i;this._timelineEngine.command(r,e,o,s)}else this._transitionEngine.trigger(n,e,t,i)}listen(n,e,t,i,r){if(t.charAt(0)=="@"){let[o,s]=cl(t);return this._timelineEngine.listen(o,e,s,r)}return this._transitionEngine.listen(n,e,t,i,r)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}};function Tv(a,n){let e=null,t=null;return Array.isArray(n)&&n.length?(e=wl(n[0]),n.length>1&&(t=wl(n[n.length-1]))):n instanceof Map&&(e=wl(n)),e||t?new Ev(a,e,t):null}var Ev=(()=>{class a{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,t,i){this._element=e,this._startStyles=t,this._endStyles=i;let r=a.initialStylesByElement.get(e);r||a.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Oi(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Oi(this._element,this._initialStyles),this._endStyles&&(Oi(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(a.initialStylesByElement.delete(this._element),this._startStyles&&(Cn(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Cn(this._element,this._endStyles),this._endStyles=null),Oi(this._element,this._initialStyles),this._state=3)}}return a})();function wl(a){let n=null;return a.forEach((e,t)=>{Mv(t)&&(n=n||new Map,n.set(t,e))}),n}function Mv(a){return a==="display"||a==="position"}var Uo=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,e,t,i){this.element=n,this.keyframes=e,this.options=t,this._specialStyles=i,this._duration=t.duration,this._delay=t.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let n=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,n,this.options),this._finalKeyframe=n.length?n[n.length-1]:new Map;let e=()=>this._onFinish();this.domPlayer.addEventListener("finish",e),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",e)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(n){let e=[];return n.forEach(t=>{e.push(Object.fromEntries(t))}),e}_triggerWebAnimation(n,e,t){return n.animate(this._convertKeyframesToObject(e),t)}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(n=>n()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=n*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((t,i)=>{i!=="offset"&&n.set(i,this._finished?t:Io(this.element,i))}),this.currentSnapshot=n}triggerCallback(n){let e=n==="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Go=class{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,e){return hl(n,e)}getParentElement(n){return Do(n)}query(n,e,t){return ul(n,e,t)}computeStyle(n,e,t){return Io(n,e)}animate(n,e,t,i,r,o=[]){let s=i==0?"both":"forwards",d={duration:t,delay:i,fill:s};r&&(d.easing=r);let p=new Map,l=o.filter(v=>v instanceof Uo);Ju(t,i)&&l.forEach(v=>{v.currentSnapshot.forEach((b,k)=>p.set(k,b))});let c=Qu(e).map(v=>new Map(v));c=em(n,c,p);let m=Tv(n,c);return new Uo(n,c,d,m)}};var Lo="@",vm="@.disabled",qo=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,e,t,i){this.namespaceId=n,this.delegate=e,this.engine=t,this._onDestroy=i}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,t,i=!0){this.delegate.insertBefore(n,e,t),this.engine.onInsert(this.namespaceId,e,n,i)}removeChild(n,e,t){this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,t,i){this.delegate.setAttribute(n,e,t,i)}removeAttribute(n,e,t){this.delegate.removeAttribute(n,e,t)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,t,i){this.delegate.setStyle(n,e,t,i)}removeStyle(n,e,t){this.delegate.removeStyle(n,e,t)}setProperty(n,e,t){e.charAt(0)==Lo&&e==vm?this.disableAnimations(n,!!t):this.delegate.setProperty(n,e,t)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,t,i){return this.delegate.listen(n,e,t,i)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}},Ol=class extends qo{factory;constructor(n,e,t,i,r){super(e,t,i,r),this.factory=n,this.namespaceId=e}setProperty(n,e,t){e.charAt(0)==Lo?e.charAt(1)=="."&&e==vm?(t=t===void 0?!0:!!t,this.disableAnimations(n,t)):this.engine.process(this.namespaceId,n,e.slice(1),t):this.delegate.setProperty(n,e,t)}listen(n,e,t,i){if(e.charAt(0)==Lo){let r=Dv(n),o=e.slice(1),s="";return o.charAt(0)!=Lo&&([o,s]=Pv(o)),this.engine.listen(this.namespaceId,r,o,s,d=>{let p=d._data||-1;this.factory.scheduleListenerCallback(p,t,d)})}return this.delegate.listen(n,e,t,i)}};function Dv(a){switch(a){case"body":return document.body;case"document":return document;case"window":return window;default:return a}}function Pv(a){let n=a.indexOf("."),e=a.substring(0,n),t=a.slice(n+1);return[e,t]}var jo=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,e,t){this.delegate=n,this.engine=e,this._zone=t,e.onRemovalComplete=(i,r)=>{r?.removeChild(null,i)}}createRenderer(n,e){let i=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){let p=this._rendererCache,l=p.get(i);if(!l){let c=()=>p.delete(i);l=new qo("",i,this.engine,c),p.set(i,l)}return l}let r=e.id,o=e.id+"-"+this._currentId;this._currentId++,this.engine.register(o,n);let s=p=>{Array.isArray(p)?p.forEach(s):this.engine.registerTrigger(r,o,n,p.name,p)};return e.data.animation.forEach(s),new Ol(this,o,i,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,t){if(n>=0&&n<this._microtaskId){this._zone.run(()=>e(t));return}let i=this._animationCallbacksBuffer;i.length==0&&queueMicrotask(()=>{this._zone.run(()=>{i.forEach(r=>{let[o,s]=r;o(s)}),this._animationCallbacksBuffer=[]})}),i.push([e,t])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}};var Ov=(()=>{class a extends ja{constructor(e,t,i){super(e,t,i)}ngOnDestroy(){this.flush()}static \u0275fac=function(t){return new(t||a)(aa(nn),aa(qn),aa(jn))};static \u0275prov=wt({token:a,factory:a.\u0275fac})}return a})();function Iv(){return new Vo}function Rv(a,n,e){return new jo(a,n,e)}var ym=[{provide:jn,useFactory:Iv},{provide:ja,useClass:Ov},{provide:Yl,useFactory:Rv,deps:[vd,ja,at]}],uD=[{provide:qn,useClass:Il},{provide:us,useValue:"NoopAnimations"},...ym],Nv=[{provide:qn,useFactory:()=>new Go},{provide:us,useFactory:()=>"BrowserAnimations"},...ym];function bm(){return Xl("NgEagerAnimations"),[...Nv]}var _m=11,wm="connectionConfig",Sm=(()=>{class a{config;isLoggedIn=null;loggedInSubscription=null;connection=D(Nr);auth=D(Si);connectionStateMachine=D(da);router=D(ln);delta=D(dn);data=D(cn);storage=D(Wr);constructor(){this.loggedInSubscription=this.auth.isLoggedIn$.subscribe(e=>{this.isLoggedIn=e})}initNetworkServices(){return ea(this,null,function*(){this.loadLocalStorageConfig(),this.preloadFonts();try{this.config?.signalKUrl!==void 0&&this.config.signalKUrl!==null&&(yield this.connection.initializeConnection({url:this.config.signalKUrl,new:!1},this.config.proxyEnabled,this.config.signalKSubscribeAll)),!this.isLoggedIn&&this.config?.signalKUrl&&this.config?.useSharedConfig&&this.config?.loginName&&this.config?.loginPassword&&(yield this.login()),this.isLoggedIn&&this.config?.useSharedConfig&&(this.storage.activeConfigFileVersion=_m,this.storage.sharedConfigName=this.config.sharedConfigName,yield this.storage.getConfig("user",this.config.sharedConfigName,_m,!0)),!this.isLoggedIn&&this.config?.signalKUrl&&this.config?.useSharedConfig&&this.router.navigate(["/login"])}catch(e){return e.status===0?console.warn("[AppInit Network Service] Initialization failed. Network error. Redirecting to settings page."):e.status===401?console.warn("[AppInit Network Service] Initialization failed. Unauthorized access. Redirecting to login page."):console.warn("[AppInit Network Service] Initialization failed. Error: ",JSON.stringify(e)),Promise.reject("[AppInit Network Service] Startup completed with connection issue.")}finally{console.log("[AppInit Network Service] Initialization completed"),this.connectionStateMachine.enableWebSocketMode(),this.connectionStateMachine.isHTTPConnected()&&(console.log("[AppInit Network Service] Starting WebSocket connection after initialization"),this.connectionStateMachine.startWebSocketConnection())}})}login(){return ea(this,null,function*(){if(!this.isLoggedIn&&this.config.useSharedConfig&&this.config.loginName&&this.config.loginPassword)try{yield this.auth.login({usr:this.config.loginName,pwd:this.config.loginPassword})}catch(e){throw e.status===0?this.router.navigate(["/settings"]):e.status===401&&this.router.navigate(["/login"]),e}})}setLocalStorageConfig(){localStorage.setItem(wm,JSON.stringify(this.config))}loadLocalStorageConfig(){this.config=JSON.parse(localStorage.getItem(wm)),this.config?this.config.signalKUrl||(this.config.signalKUrl=window.location.origin,this.setLocalStorageConfig(),console.log(`[AppInit Network Service] Config found with no server URL. Setting Auto-Discovery URL: ${this.config.signalKUrl}`)):(this.config=ud,this.config.signalKUrl=window.location.origin,console.log(`[AppInit Network Service] Connection Configuration not found. Creating configuration using Auto-Discovery URL: ${this.config.signalKUrl}`),this.setLocalStorageConfig()),this.config.configVersion==9&&(this.config.configVersion=10,this.setLocalStorageConfig(),console.log("[AppInit Network Service] Upgrading Connection version from 9 to 10")),this.config.configVersion==10&&(this.config.configVersion=11,this.setLocalStorageConfig(),console.log("[AppInit Network Service] Upgrading Connection version from 10 to 11"))}preloadFonts(){let e=[{family:"Roboto",src:"url(./assets/google-fonts/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2)",options:{weight:"300",style:"normal"}},{family:"Roboto",src:"url(./assets/google-fonts/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2)",options:{weight:"300",style:"normal"}},{family:"Roboto",src:"url(./assets/google-fonts/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2)",options:{weight:"400",style:"normal"}},{family:"Roboto",src:"url(./assets/google-fonts/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2)",options:{weight:"400",style:"normal"}},{family:"Roboto",src:"url(./assets/google-fonts/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2)",options:{weight:"500",style:"normal"}},{family:"Roboto",src:"url(./assets/google-fonts/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2)",options:{weight:"500",style:"normal"}}];for(let{family:t,src:i,options:r}of e){let o=new FontFace(t,i,r);o.load().then(()=>document.fonts.add(o)).catch(s=>console.log(`[AppInit Network Service] Error loading fonts: ${s}`))}}ngOnDestroy(){this.loggedInSubscription?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac})}return a})();var Cm=(()=>{class a{auth=D(Si);authToken=null;authTokenSubscription=null;constructor(){this.authTokenSubscription=this.auth.authToken$.subscribe(e=>{this.authToken=e})}intercept(e,t){let i=e.clone();return this.authToken&&(i=e.clone({headers:e.headers.set("authorization","JWT "+this.authToken.token)})),t.handle(i)}ngOnDestroy(){this.authTokenSubscription?.unsubscribe()}static \u0275fac=function(t){return new(t||a)};static \u0275prov=wt({token:a,factory:a.\u0275fac})}return a})();var rP=Qa(km());var Wv=(()=>{class a extends wd{overrides={swipe:{direction:Hammer.DIRECTION_ALL,velocity:.3,threshold:10,domEvents:!0},press:{time:500,domEvents:!0}};options={domEvents:!0};static \u0275fac=(()=>{let e;return function(i){return(e||(e=oa(a)))(i||a)}})();static \u0275prov=wt({token:a,factory:a.\u0275fac})}return a})();mu.production&&void 0;yd(Su,{providers:[Gl(bd,Sd),{provide:pd,useClass:Cm,multi:!0},{provide:_d,useClass:Wv},{provide:$d,useValue:{hasBackdrop:!0,disableClose:!1,autoFocus:"first-tabbable",delayFocusTrap:!0,backdropClass:"dialogBackdrop"}},{provide:Zd,useValue:{appearance:"outline",floatLabel:"always",subscriptSizing:"dynamic"}},{provide:uc,useValue:{showDelay:1500,hideDelay:0}},Si,cn,Nr,dn,da,ni,ft,Hi,ii,gn,So,Wr,fc(),fd(gd()),xd(uu,Td()),bm(),Zl(()=>new Sm().initNetworkServices().then(()=>{}).catch(()=>{}))]});export{Wv as kipHammerConfig};