@mxtommy/kip 4.0.2 → 4.0.4
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.
- package/CHANGELOG.md +10 -0
- package/package.json +1 -1
- package/public/{chunk-OA5PBKO5.js → chunk-2DBQEP6W.js} +1 -1
- package/public/{chunk-KI5CZR7P.js → chunk-34G2VVZF.js} +1 -1
- package/public/{chunk-BEFXDBJY.js → chunk-3O3POI5Z.js} +1 -1
- package/public/{chunk-V2FKRRBL.js → chunk-6V3WWWDX.js} +1 -1
- package/public/{chunk-CA2BN4YV.js → chunk-7C7K2XSO.js} +1 -1
- package/public/chunk-IO5SDLYV.js +1 -0
- package/public/{chunk-B4SMHL7P.js → chunk-NDOR4O4J.js} +1 -1
- package/public/{chunk-NBMGYSW2.js → chunk-PKKBBIJK.js} +1 -1
- package/public/{chunk-H3EFQCTE.js → chunk-QLTN6G6E.js} +1 -1
- package/public/{chunk-UIO7WC72.js → chunk-QZJKBIMY.js} +1 -1
- package/public/{chunk-PPT35KWJ.js → chunk-SY22WXMI.js} +1 -1
- package/public/{chunk-E7MNINLP.js → chunk-WL5TH323.js} +1 -1
- package/public/chunk-XDPHEQEO.js +2 -0
- package/public/{chunk-DKOFT6NI.js → chunk-XZW7P6RL.js} +13 -13
- package/public/index.html +1 -1
- package/public/{main-7RENLC7I.js → main-PXPGE7J4.js} +1 -1
- package/public/chunk-F75BVJPY.js +0 -2
- package/public/chunk-WYPJEP5R.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A as wl,B as Jo,C as er,D as tr,E as ir,F as jn,G as Ca,H as xl,I as _l,J as Yn,K as Ji,L as Et,M as Qn,N as $n,O as Zn,P as ho,Q as po,R as Ml,S as Xn,T as Kn,a as Gt,b as ii,c as oo,d as vl,e as yl,f as Cl,g as Sl,h as je,i as Zi,j as Xi,k as ro,l as pn,m as va,n as ui,o as Ki,p as qt,q as so,r as lo,s as Hn,t as gn,u as co,v as mo,w as hi,x as Ko,y as uo,z as ya}from"./chunk-PPT35KWJ.js";import{a as Al,b as ao}from"./chunk-RYHOAWDD.js";import{a as ti,b as $i,c as at}from"./chunk-NBMGYSW2.js";import{a as dl,b as cl,c as ml,d as zn,e as ul,f as Tt,g as hl,h as pl,i as gl,k as fl,m as Aa,n as bl}from"./chunk-HIADZ4BV.js";import{a as wt,b as Lt}from"./chunk-WYPJEP5R.js";import{a as sl,b as ll}from"./chunk-OQULS6SV.js";import{A as ft,B as ei,a as ce,c as Ws,d as Ci,e as Zs,f as Xs,g as Ks,h as Si,i as wi,k as Js,l as xi,m as _i,n as Mi,o as zi,p as Xt,r as mt,s as Yi,t as ol,u as Qi,w as rl,y as ut,z as Jt}from"./chunk-H3EFQCTE.js";import{A as Bn,B as ki,C as Ti,D as kt,E as nl,F as al,G as Hi,H as Un,I as ji,J as ct,L as qn,M as pt,N as gt,a as qi,d as Ut,e as Nn,f as ws,i as xs,j as _s,k as $a,l as Ms,m as $t,n as Gn,o as dt,q as _t,s as nt,t as Mt,u as el,v as tl,w as no,x as il,y as Kt,z as Fn}from"./chunk-F75BVJPY.js";import{b as Gs,f as Fs,g as Bs,h as zs,i as Xo,j as Hs,m as js,n as Ys,o as Qs,s as $s}from"./chunk-SZ2GUIT5.js";import{$ as cs,$b as Bt,Ab as Ct,Ad as Zo,Ba as La,Bb as St,Bc as za,Bd as Ka,C as ha,Ca as pa,Cc as Ha,Cd as Vs,D as xn,Db as te,Dd as Ja,E as Vi,Eb as me,Ec as Ss,F as Wi,Fa as g,Fb as It,Fd as Ot,Ga as ps,Gb as re,Gc as ja,Gd as ze,Hb as Je,Hd as Ze,I as ns,Ia as kn,Ib as Rn,Ic as Ya,J as Li,Ja as li,Jb as Ft,K as Gi,Kb as m,La as Ga,Lb as ne,Ld as mi,M as as,Mb as ye,N as os,Nb as Ui,Nc as et,Nd as Zt,O as rs,Oa as L,Oc as Qa,P as Ra,Pa as Wt,Pb as cn,Qa as st,Qb as mn,R as ss,Ra as Fa,Rb as un,S as ls,Sa as ga,Sc as Za,Ta as gs,Td as eo,U as ds,Ua as Bi,Ud as to,V as _n,Va as fs,Vb as di,Vd as xt,W as Na,Wa as yt,Wd as io,X as Va,Xa as Ge,Xb as hn,Xc as ks,Xd as lt,Ya as Tn,Yb as ba,Z as Wa,Zd as Ls,_b as At,_d as Xe,a as Ue,ab as Y,ac as Ua,b as Ke,ba as Mn,bb as G,ca as ht,cb as F,cc as W,d as Cm,da as Vt,db as Me,dc as se,dd as Ts,e as Zr,ea as jt,eb as En,ec as R,ed as Es,f as it,fa as ms,fb as ue,fc as bs,fd as Ds,fe as Us,g as Ni,ga as A,gb as he,ge as qs,hb as T,hc as qa,i as jo,ia as us,ib as d,ic as $e,j as Nt,ja as q,jb as u,jc as v,ka as z,kb as U,kc as ie,kd as Xa,l as Ia,la as K,lb as _,m as Xr,ma as Ve,mb as k,mc as As,md as Vn,na as Fi,nb as H,nc as ci,nd as Ps,oa as hs,ob as Dn,od as Is,p as Kr,pa as rt,pb as Pn,pc as qe,pd as Wn,q as Yo,qb as Ba,qc as $o,r as Jr,ra as w,rb as ae,sb as Pi,sd as Os,t as Oa,tb as B,u as Qo,ua as Yt,ub as fa,v as es,vb as I,vd as Rs,w as vi,wa as Ie,wb as In,wc as vs,wd as yi,xb as On,xc as ys,xd as Ln,y as ts,yb as dn,yc as Cs,yd as Ns,z as is,zb as Qt}from"./chunk-OB3QLUH6.js";var mr=Cm((rx,Eo)=>{(function(n){"use strict";function o(c){if(Array.isArray(c)){for(var l=0,p=Array(c.length);l<c.length;l++)p[l]=c[l];return p}return Array.from(c)}function e(c,l){if(!c)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!l||typeof l!="object"&&typeof l!="function"?c:l}function t(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof l);c.prototype=Object.create(l&&l.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}}),l&&(Object.setPrototypeOf?Object.setPrototypeOf(c,l):c.__proto__=l)}function i(c,l){if(!(c instanceof l))throw new TypeError("Cannot call a class as a function")}function a(c,l){if(l||(l=typeof window>"u"?global:window),l[c]!==void 0)return l[c];if(Pa===null){var p=window.getComputedStyle(document.documentElement,"");Pa=(Array.prototype.slice.call(p).join("").match(/-(moz|webkit|ms)-/)||p.OLink===""&&["","o"]||["",""])[1]}if(Pa==="")return null;var y=c.charAt(0).toUpperCase()+c.substr(1),S=l[Pa+y];return S!==void 0?S:null}function r(c,l,p,y,S,x,E){if(typeof y!="function")throw new TypeError("Invalid animation rule:",y);var O=c-p,P=O/S,N=0;P>1&&(P=1),P!==1&&(N=y(P),isFinite(N)&&!isNaN(N)&&(P=N)),l&&l(P),O<S?E.frame=Hr(function(Q){return r(Q,l,p,y,S,x,E)}):(x&&x(),E.inProgress=!1)}function s(){Array.prototype.constructor.apply(this,arguments)}function h(c){if(!(c instanceof DOMException&&c.result===2152923147))throw c}function f(c,l){return l.replace(Am,function(p,y){var S=c[y];return S!==void 0?S:p})}function b(c){return c.majorTicks instanceof Array||(c.majorTicks=c.majorTicks?[c.majorTicks]:[]),c.majorTicks.length||(c.majorTicks.push(oe.formatMajorTickNumber(c.minValue,c)),c.majorTicks.push(oe.formatMajorTickNumber(c.maxValue,c))),[c.tickSide!=="right",c.tickSide!=="left"]}function C(c,l,p,y,S,x){c.beginPath(),c.moveTo(l+x,p),c.lineTo(l+y-x,p),c.quadraticCurveTo(l+y,p,l+y,p+x),c.lineTo(l+y,p+S-x),c.quadraticCurveTo(l+y,p+S,l+y-x,p+S),c.lineTo(l+x,p+S),c.quadraticCurveTo(l,p+S,l,p+S-x),c.lineTo(l,p+x),c.quadraticCurveTo(l,p,l+x,p),c.closePath()}function M(c,l){var p=l.valueDec,y=l.valueInt,S=0,x=void 0,E=void 0,O=void 0;if(c=parseFloat(c),O=c<0,c=Math.abs(c),p>0){for(E=c.toFixed(p).toString().split("."),x=y-E[0].length;S<x;++S)E[0]="0"+E[0];E=(O?"-":"")+E[0]+"."+E[1]}else{for(E=Math.round(c).toString(),x=y-E.length;S<x;++S)E="0"+E;E=(O?"-":"")+E}return E}function V(c,l){var p=void 0,y=!1;return p=l.majorTicksDec===0?Math.round(c).toString():c.toFixed(l.majorTicksDec),l.majorTicksInt>1?(y=~p.indexOf("."),~p.indexOf("-")?"-"+[l.majorTicksInt+l.majorTicksDec+2+(y?1:0)-p.length].join("0")+p.replace("-",""):[l.majorTicksInt+l.majorTicksDec+1+(y?1:0)-p.length].join("0")+p):p}function D(c){return c*Math.PI/180}function j(c,l){return{x:-c*Math.sin(l),y:c*Math.cos(l)}}function X(c,l,p,y){var S=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],x=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,E=c.createLinearGradient(S?0:x,S?x:0,S?0:y,S?y:0);return E.addColorStop(0,l),E.addColorStop(1,p),E}function Z(c,l){l.needleShadow&&(c.shadowOffsetX=2,c.shadowOffsetY=2,c.shadowBlur=10,c.shadowColor=l.colorNeedleShadowDown)}function ee(c,l,p){return c["font"+l+"Style"]+" "+c["font"+l+"Weight"]+" "+c["font"+l+"Size"]*p+"px "+c["font"+l]}function be(c){c.shadowOffsetX=null,c.shadowOffsetY=null,c.shadowBlur=null,c.shadowColor="",c.strokeStyle=null,c.lineWidth=0,c.save()}function Oe(c,l,p,y){l.valueTextShadow&&(c.shadowOffsetX=p,c.shadowOffsetY=p,c.shadowBlur=y,c.shadowColor=l.colorValueTextShadow)}function Te(c,l,p,y,S,x){if(l.valueBox){be(c);var E=l.valueDec?1+l.valueDec:0,O="9".repeat(Math.max.apply(null,[String(parseInt(p)).length+E].concat(l.majorTicks.map(function(Pe){return String(parseInt(Pe,10)).length+E})))),P=l.valueText||M(p,l),N=x/200,Q=x/100,$=.4*Q,le=1.2*Q;c.font=ee(l,"Value",N),Oe(c,l,$,le);var ge=c.measureText(l.valueText?P:"-"+M(Number(O),l)).width;be(c);var ve=parseFloat(l.fontValueSize)*N+$+le,Le=Q*parseFloat(l.valueBoxStroke),Ae=2*x-2*Le,Re=ge+10*Q,Ne=1.1*ve+$+le,Fe=Q*l.valueBoxBorderRadius,ke=(parseFloat(l.valueBoxWidth)||0)/100*Ae;ke>Re&&(Re=ke),Re>Ae&&(Re=Ae);var De=y-Re/2,xe=S-Ne/2,fe=S-5.75*Q;if(c.beginPath(),Fe?C(c,De,xe,Re,Ne,Fe):c.rect(De,xe,Re,Ne),Le){var Ce=c.createRadialGradient(y,fe,10*Q,y,fe,20*Q);Ce.addColorStop(0,l.colorValueBoxRect),Ce.addColorStop(1,l.colorValueBoxRectEnd),c.strokeStyle=Ce,c.lineWidth=Le,c.stroke()}l.colorValueBoxShadow&&(c.shadowBlur=1.2*Q,c.shadowColor=l.colorValueBoxShadow),l.colorValueBoxBackground&&(c.fillStyle=l.colorValueBoxBackground,c.fill()),c.closePath(),c.restore(),Oe(c,l,$,le),c.fillStyle=l.colorValueText,c.textAlign="center",c.textBaseline="alphabetic",c.fillText(P,De+Re/2,S+Ne/2-ve/3),c.restore()}}function Ye(c){var l=c.value,p=c.minValue,y=c.maxValue,S=.01*(y-p);return{normal:l<p?p:l>y?y:l,indented:l<p?p-S:l>y?y+S:l}}function Ee(c,l,p,y,S){p.beginPath(),p.arc(0,0,si(c),0,2*ma,!0),p.lineWidth=l,p.strokeStyle=S?oe.linearGradient(p,y,S,c):y,p.stroke(),p.closePath()}function We(c,l){var p=ri.pixelRatio;return c.maxRadius||(c.maxRadius=c.max-l.borderShadowWidth-l.borderOuterWidth*p-l.borderMiddleWidth*p-l.borderInnerWidth*p+(l.borderOuterWidth?.5:0)+(l.borderMiddleWidth?.5:0)+(l.borderInnerWidth?.5:0)),c.maxRadius}function pe(c,l){function p($,le,ge,ve,Le,Ae){return le&&(!Ae&&l.borderShadowWidth&&(ge.save(),ge.shadowBlur=l.borderShadowWidth,ge.shadowColor=l.colorBorderShadow),Ee($,le*y,ge,ve,Le),!Ae&&l.borderShadowWidth&&(Ae=!0,ge.restore())),Ae}var y=ri.pixelRatio,S=l.borderShadowWidth*y,x=c.max-S-l.borderOuterWidth*y/2,E=x-l.borderOuterWidth*y/2-l.borderMiddleWidth*y/2+.5,O=E-l.borderMiddleWidth*y/2-l.borderInnerWidth*y/2+.5,P=We(c,l),N=void 0,Q=!1;c.save(),Q=p(x,l.borderOuterWidth,c,l.colorBorderOuter,l.colorBorderOuterEnd,Q),Q=p(E,l.borderMiddleWidth,c,l.colorBorderMiddle,l.colorBorderMiddleEnd,Q),Q=p(O,l.borderInnerWidth,c,l.colorBorderInner,l.colorBorderInnerEnd,Q),!Q&&l.borderShadowWidth&&(c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),c.beginPath(),c.arc(0,0,si(P),0,2*ma,!0),l.colorPlateEnd?(N=c.createRadialGradient(0,0,P/2,0,0,P),N.addColorStop(0,l.colorPlate),N.addColorStop(1,l.colorPlateEnd)):N=l.colorPlate,c.fillStyle=N,c.fill(),c.closePath(),c.restore()}function He(c,l){if(l.highlights!=="false"&&l.highlights.length&&l.highlightsWidth!==0){var p=c.max*(parseFloat(l.highlightsWidth)||0)/100,y=si(tt(c,l)-p/2),S=l.highlights.length,x=(l.maxValue-l.minValue)/l.ticksAngle;c.save();for(var E=0;E<S;E++){var O=l.highlights[E];c.lineWidth=p,c.lineCap=l.highlightsLineCap,c.strokeStyle=O.color,c.beginPath(),c.rotate(Ho),c.arc(0,0,y,oe.radians(l.startAngle+(O.from-l.minValue)/x),oe.radians(l.startAngle+(O.to-l.minValue)/x),!1),c.stroke(),c.closePath(),c.restore(),c.save()}c.restore()}}function bt(c,l){var p=tt(c,l),y=void 0,S=void 0,x=void 0,E=0,O=Math.abs(l.minorTicks)||0,P=l.ticksAngle/(l.maxValue-l.minValue);l.exactTicks?(S=l.maxValue-l.minValue,y=O?S/O:0,E=(Ai.mod(l.majorTicks[0],O)||0)*P):y=O*(l.majorTicks.length-1),c.lineWidth=ri.pixelRatio,c.strokeStyle=l.colorMinorTicks||l.colorStrokeTicks,c.save();for(var N=0;N<y;++N)(x=l.startAngle+E+N*(l.ticksAngle/y))<=l.ticksAngle+l.startAngle&&(c.rotate(oe.radians(x)),c.beginPath(),c.moveTo(0,p),c.lineTo(0,p-.075*c.max),rn(c));c.restore()}function tt(c,l){var p=c.max/100;return We(c,l)-5*p-(l.barWidth?2*(parseFloat(l.barStrokeWidth)||0)+((parseFloat(l.barWidth)||0)+5)*p:0)}function ot(c,l){oe.prepareTicks(l);var p=si(tt(c,l)),y=void 0,S=l.majorTicks.length,x=ri.pixelRatio;c.lineWidth=2*x,y=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(S).fill(l.colorStrokeTicks||l.colorMajorTicks);for(var E=0;E<S;++E)c.save(),c.strokeStyle=y[E],c.rotate(oe.radians(vt(l,l.exactTicks?l.majorTicks[E]:E,S))),c.beginPath(),c.moveTo(0,p),c.lineTo(0,p-.15*c.max),c.stroke(),c.closePath(),c.restore();l.strokeTicks&&(c.save(),c.strokeStyle=l.colorStrokeTicks||y[0],c.rotate(Ho),c.beginPath(),c.arc(0,0,p,oe.radians(l.startAngle),oe.radians(l.startAngle+l.ticksAngle),!1),c.stroke(),c.closePath(),c.restore())}function vt(c,l,p){if(c.exactTicks){var y=c.ticksAngle/(c.maxValue-c.minValue);return c.startAngle+y*(l-c.minValue)}return c.startAngle+l*(c.ticksAngle/(p-1))}function rn(c){c.stroke(),c.restore(),c.closePath(),c.save()}function Ta(c,l){var p=tt(c,l)-.15*c.max,y={},S=0,x=l.majorTicks.length,E=l.animationTarget!=="needle",O=l.colorNumbers instanceof Array?l.colorNumbers:new Array(x).fill(l.colorNumbers),P=E?-(l.value-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle:0;for(E&&(c.save(),c.rotate(-oe.radians(P))),c.font=oe.font(l,"Numbers",c.max/200),c.lineWidth=0,c.textAlign="center",c.textBaseline="middle";S<x;++S){var N=P+vt(l,l.exactTicks?l.majorTicks[S]:S,x),Q=c.measureText(l.majorTicks[S]).width,$=l.fontNumbersSize,le=Math.sqrt(Q*Q+$*$)/2,ge=oe.radialPoint(p-le-l.numbersMargin/100*c.max,oe.radians(N));N===360&&(N=0),y[N]||(y[N]=!0,c.fillStyle=O[S],c.fillText(l.majorTicks[S],ge.x,ge.y))}E&&c.restore()}function Rr(c,l){l.title&&(c.save(),c.font=oe.font(l,"Title",c.max/200),c.fillStyle=l.colorTitle,c.textAlign="center",c.fillText(l.title,0,-c.max/4.25,.8*c.max),c.restore())}function Nr(c,l){l.units&&(c.save(),c.font=oe.font(l,"Units",c.max/200),c.fillStyle=l.colorUnits,c.textAlign="center",c.fillText(oe.formatContext(l,l.units),0,c.max/3.25,.8*c.max),c.restore())}function Vr(c,l){if(l.needle){var p=l.animationTarget!=="needle",y=l.ticksAngle<360?oe.normalizedValue(l).indented:l.value,S=p?l.startAngle:l.startAngle+(y-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle;l.barStartPosition==="right"&&(S=l.startAngle+l.ticksAngle-(y-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle);var x=We(c,l),E=si(x/100*l.needleCircleSize),O=si(x/100*l.needleCircleSize*.75),P=si(x/100*l.needleEnd),N=si(l.needleStart?x/100*l.needleStart:0),Q=x/100*l.needleWidth,$=x/100*l.needleWidth/2,le=ri.pixelRatio;c.save(),oe.drawNeedleShadow(c,l),c.rotate(oe.radians(S)),c.fillStyle=oe.linearGradient(c,l.colorNeedle,l.colorNeedleEnd,P-N),l.needleType==="arrow"?(c.beginPath(),c.moveTo(-$,-N),c.lineTo(-Q,0),c.lineTo(-1*le,P),c.lineTo(le,P),c.lineTo(Q,0),c.lineTo($,-N),c.closePath(),c.fill(),c.beginPath(),c.lineTo(-.5*le,P),c.lineTo(-1*le,P),c.lineTo(-Q,0),c.lineTo(-$,-N),c.lineTo($/2*le-2*le,-N),c.closePath(),c.fillStyle=l.colorNeedleShadowUp,c.fill()):(c.beginPath(),c.moveTo(-$,P),c.lineTo(-$,N),c.lineTo($,N),c.lineTo($,P),c.closePath(),c.fill()),c.restore(),l.needleCircleSize&&(c.save(),oe.drawNeedleShadow(c,l),l.needleCircleOuter&&(c.beginPath(),c.arc(0,0,E,0,2*ma,!0),c.fillStyle=oe.linearGradient(c,l.colorNeedleCircleOuter,l.colorNeedleCircleOuterEnd,E),c.fill(),c.closePath()),l.needleCircleInner&&(c.beginPath(),c.arc(0,0,O,0,2*ma,!0),c.fillStyle=oe.linearGradient(c,l.colorNeedleCircleInner,l.colorNeedleCircleInnerEnd,O),c.fill(),c.closePath()),c.restore())}}function Wr(c,l,p){oe.drawValueBox(c,l,p,0,c.max-.33*c.max,c.max)}function Jc(c){var l=c.startAngle,p=c.startAngle+c.ticksAngle,y=l,S=l+(oe.normalizedValue(c).normal-c.minValue)/(c.maxValue-c.minValue)*c.ticksAngle;if(c.barStartPosition==="middle"){var x=.5*(c.minValue+c.maxValue);c.value<x?(y=180-(x-oe.normalizedValue(c).normal)/(c.maxValue-c.minValue)*c.ticksAngle,S=180):(y=180,S=180+(oe.normalizedValue(c).normal-x)/(c.maxValue-c.minValue)*c.ticksAngle)}else c.barStartPosition==="right"&&(y=p-S+l,S=p);return{startAngle:y,endAngle:S}}function Lr(c,l){var p=c.max/100,y=We(c,l)-5*p,S=parseFloat(l.barStrokeWidth+"")||0,x=(parseFloat(l.barWidth+"")||0)*p,E=y-2*S-x,O=(y-E)/2,P=E+O,N=S/P,Q=l.startAngle,$=l.startAngle+l.ticksAngle;if(c.save(),c.rotate(Ho),S&&(c.beginPath(),c.arc(0,0,P,oe.radians(Q)-N,oe.radians($)+N,!1),c.strokeStyle=l.colorBarStroke,c.lineWidth=2*O,c.stroke(),c.closePath()),x&&(c.beginPath(),c.arc(0,0,P,oe.radians(Q),oe.radians($),!1),c.strokeStyle=l.colorBar,c.lineWidth=x,c.stroke(),c.closePath(),l.barShadow&&(c.save(),c.beginPath(),c.arc(0,0,y,oe.radians(Q),oe.radians($),!1),c.clip(),c.beginPath(),c.strokeStyle=l.colorBar,c.lineWidth=1,c.shadowBlur=l.barShadow,c.shadowColor=l.colorBarShadow,c.shadowOffsetX=0,c.shadowOffsetY=0,c.arc(0,0,y,oe.radians(l.startAngle),oe.radians(l.startAngle+l.ticksAngle),!1),c.stroke(),c.closePath(),c.restore()),l.barProgress)){var le=Jc(l),ge=le.startAngle,ve=le.endAngle;c.beginPath(),c.arc(0,0,P,oe.radians(ge),oe.radians(ve),!1),c.strokeStyle=l.colorBarProgress,c.lineWidth=x,c.stroke(),c.closePath()}c.restore()}function Gr(c){return c.options.animatedValue?c.options.value:c.value}function em(c,l,p,y,S,x,E,O){c.beginPath(),c.fillStyle=O?oe.linearGradient(c,E,O,S>x?S:x,x>S,S>x?p:y):E,l>0?oe.roundRect(c,p,y,S,x,l):c.rect(p,y,S,x),c.fill(),c.closePath()}function tm(c,l,p,y,S,x,E,O,P){c.beginPath(),c.lineWidth=l,c.strokeStyle=P?oe.linearGradient(c,O,P,E,!0,S):O,p>0?oe.roundRect(c,y,S,x,E,p):c.rect(y,S,x,E),c.stroke(),c.closePath()}function im(c,l,p,y,S,x){function E(Pe,Be,Qe,Rt){return Pe&&(!Rt&&l.borderShadowWidth&&(c.save(),c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),tm(c,Pe*O,P,p+Pe*O/2-fe,y+Pe*O/2-fe,N,ge,Be,Qe),fe+=.5*O,!Rt&&l.borderShadowWidth&&(Rt=!0,c.restore())),Rt}var O=ri.pixelRatio,P=l.borderRadius*O,N=S-l.borderShadowWidth-l.borderOuterWidth*O,Q=N-l.borderOuterWidth*O-l.borderMiddleWidth*O,$=Q-l.borderMiddleWidth*O-l.borderInnerWidth*O,le=$-l.borderInnerWidth*O,ge=x-l.borderShadowWidth-l.borderOuterWidth*O,ve=ge-l.borderOuterWidth*O-l.borderMiddleWidth*O,Le=ve-l.borderMiddleWidth*O-l.borderInnerWidth*O,Ae=Le-l.borderInnerWidth*O,Re=p-(Q-N)/2,Ne=Re-($-Q)/2,Fe=Ne-(le-$)/2,ke=y-(ve-ge)/2,De=ke-(Le-ve)/2,xe=De-(Ae-Le)/2,fe=0,Ce=!1;return c.save(),Ce=E(l.borderOuterWidth,l.colorBorderOuter,l.colorBorderOuterEnd,Ce),Ce=E(l.borderMiddleWidth,l.colorBorderMiddle,l.colorBorderMiddleEnd,Ce),Ce=E(l.borderInnerWidth,l.colorBorderInner,l.colorBorderInnerEnd,Ce),!Ce&&l.borderShadowWidth&&(c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),em(c,P,Fe,xe,le+2*fe,Ae+2*fe,l.colorPlate,l.colorPlateEnd),c.restore(),[Fe,xe,le,Ae]}function nm(c,l,p,y,S,x){var E=ri.pixelRatio,O=x>=S,P=O?.85*S:x,N=O?x:S;p=O?we(p+(S-P)/2):p;var Q=!!l.title,$=!!l.units,le=!!l.valueBox,ge=void 0,ve=void 0,Le=void 0;O?(ve=we(.05*N),ge=we(.075*N),Le=we(.11*N),Q&&(N-=ge,y+=ge),$&&(N-=ve),le&&(N-=Le)):(ve=ge=we(.15*P),Q&&(P-=ge,y+=ge),$&&(P-=ve));var Ae=2*l.barStrokeWidth,Re=l.barBeginCircle?we(P*l.barBeginCircle/200-Ae/2):0,Ne=we(P*l.barWidth/100-Ae),Fe=we(N*l.barLength/100-Ae),ke=we((N-Fe)/2),De=we(p+(O?P/2:ke+Re)),xe=we(y+(O?N-ke-Re+Ae/2:P/2)),fe=!O||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*P,Ce=O||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*P;return c.barDimensions={isVertical:O,width:P,length:N,barWidth:Ne,barLength:Fe,strokeWidth:Ae,barMargin:ke,radius:Re,pixelRatio:E,barOffset:null,titleMargin:Q?ge:0,unitsMargin:$?ve:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:p+fe,Y:y+Ce,x0:De+fe,y0:xe+Ce,baseX:p,baseY:y,ticksPadding:l.ticksPadding/100},c.barDimensions}function Fr(c,l,p,y,S,x,E){var O=nm(c,l,y,S,x,E),P=O.isVertical,N=O.width,Q=O.barWidth,$=O.barLength,le=O.strokeWidth,ge=O.barMargin,ve=O.radius,Le=O.x0,Ae=O.y0,Re=O.X,Ne=O.Y,Fe=$;c.save(),c.beginPath();var ke=null;if(l.barBeginCircle){var De=oe.radians(P?270:0),xe=Math.asin(Q/2/ve),fe=Math.cos(xe),Ce=Math.sin(xe),Pe=Le+(P?ve*Ce:ve*fe-le/2),Be=P?Ae-ve*fe:Ae+ve*Ce,Qe=si(P?Be-Ae:Pe-Le);ke=we(Qe+ve);var Rt=P?we(Le-ve*Ce):Pe,Ht=P?Be:we(Ae-ve*Ce);p==="progress"&&($=ke+($-ke)*(oe.normalizedValue(l).normal-l.minValue)/(l.maxValue-l.minValue));var ua=we(Pe+$-ke+le/2),ln=we(Be-$+ke-le/2);c.arc(Le,Ae,ve,De+xe,De-xe),P?(c.moveTo(Pe,Ht),c.lineTo(Pe,ln),c.lineTo(Rt,ln),c.lineTo(Rt,Ht)):(c.moveTo(Pe,Ht),c.lineTo(ua,Ht),c.lineTo(ua,Be),c.lineTo(Pe,Be))}else{var Qr=we(P?Re+(N-Q)/2:Re+ge),$r=we(P?Ne+$+ge:Ne+(N-Q)/2);p==="progress"&&($*=(l.value-l.minValue)/(l.maxValue-l.minValue)),P?c.rect(Qr,$r,Q,-$):c.rect(Qr,$r,$,Q)}p!=="progress"&&l.barStrokeWidth&&(c.lineWidth=le,c.strokeStyle=l.colorBarStroke,c.stroke()),p!=="progress"&&l.colorBar?(c.fillStyle=l.colorBarEnd?oe.linearGradient(c,l.colorBar,l.colorBarEnd,$,P,P?Ne:Re):l.colorBar,c.fill()):p==="progress"&&l.colorBarProgress&&(c.fillStyle=l.colorBarProgressEnd?oe.linearGradient(c,l.colorBarProgress,l.colorBarProgressEnd,Fe,P,P?Ne:Re):l.colorBarProgress,c.fill()),c.closePath(),c.restore(),l.barBeginCircle&&(c.barDimensions.radius+=le),c.barDimensions.barOffset=ke,c.barDimensions.barWidth+=le,c.barDimensions.barLength+=le}function am(c,l,p,y,S,x){Fr(c,l,"",p,y,S,x)}function Br(c,l){return l.needleSide!==c||l.tickSide!==c||l.numberSide!==c}function om(c,l,p,y,S,x){l.barProgress&&Fr(c,l,"progress",p,y,S,x)}function rm(c,l){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.barWidth,O=p.barOffset,P=p.barMargin,N=p.X,Q=p.Y,$=p.ticksLength,le=p.ticksPadding,ge=S*(parseFloat(l.highlightsWidth)||0)/100;if(l.highlights&&ge){var ve=l.tickSide!=="right",Le=l.tickSide!=="left",Ae=0,Re=l.highlights.length,Ne=(S-E)/2,Fe=l.maxValue-l.minValue,ke=we(y?N+Ne:N+P+O),De=ge,xe=y?Q+x-P-O:Q+Ne,fe=we((l.ticksWidth/100+le)*S)+(ge-l.ticksWidth/100*S),Ce=we(E+le*S);for(c.save();Ae<Re;Ae++){var Pe=l.highlights[Ae],Be=$*si(l.minValue-Pe.from)/Fe,Qe=$*si((Pe.to-Pe.from)/Fe);c.beginPath(),c.fillStyle=Pe.color,y?(ve&&c.rect(ke-fe,xe-Be,De,-Qe),Le&&c.rect(ke+Ce,xe-Be,De,-Qe)):(ve&&c.rect(ke+Be,xe-fe,Qe,De),Le&&c.rect(ke+Be,xe+Ce,Qe,De)),c.fill(),c.closePath()}c.restore()}}function Ea(c,l,p,y,S){c.beginPath(),c.moveTo(l,p),c.lineTo(y,S),c.stroke(),c.closePath()}function Ur(c,l,p,y,S,x,E,O,P){var N=c.barDimensions,Q=N.isVertical,$=N.length,le=N.barWidth,ge=N.barOffset,ve=N.barMargin,Le=N.pixelRatio,Ae=N.width,Re=N.X,Ne=N.Y,Fe=N.ticksLength,ke=N.ticksPadding,De=(Ae-le)/2,xe=void 0,fe=void 0,Ce=0,Pe=p.length,Be=void 0,Qe=P*Ae,Rt=De-ke*Ae,Ht=De+le+Qe+ke*Ae,ua=l instanceof Array?l:new Array(p.length).fill(l);c.save(),c.lineWidth=O*Le;for(var ln=Fe/(S-y);Ce<Pe;Ce++)Be=p[Ce],c.strokeStyle=ua[Ce],Q?(fe=Ne+$-ve-ge+(y-Be)*ln,x&&(xe=Re+Rt,Ea(c,xe,fe,we(xe-Qe),fe)),E&&(xe=Re+Ht,Ea(c,xe,fe,we(xe-Qe),fe))):(xe=Re+ve+ge-(y-Be)*ln,x&&(fe=Ne+Rt,Ea(c,xe,fe,xe,we(fe-Qe))),E&&(fe=Ne+Ht,Ea(c,xe,we(fe),xe,fe-Qe)));c.restore()}function sm(c,l){var p=oe.prepareTicks(l),y=zr(p,2),S=y[0],x=y[1],E=2,O=(l.maxValue-l.minValue)/(l.majorTicks.length-1),P=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(l.majorTicks.length).fill(l.colorStrokeTicks||l.colorMajorTicks);if(Ur(c,P,l.exactTicks?l.majorTicks:l.majorTicks.map(function(Qe,Rt){return l.minValue+O*Rt}),l.minValue,l.maxValue,S,x,E,l.ticksWidth/100),l.strokeTicks){var N=c.barDimensions,Q=N.isVertical,$=N.length,le=N.width,ge=N.barWidth,ve=N.barMargin,Le=N.barOffset,Ae=N.X,Re=N.Y,Ne=N.ticksLength,Fe=N.pixelRatio,ke=N.ticksPadding,De=(le-ge)/2+ge+ke*le,xe=(le-ge)/2-ke*le,fe=void 0,Ce=void 0,Pe=void 0,Be=void 0;c.strokeStyle=l.colorStrokeTicks||P[0],E*=Fe,Q?(Ce=Re+$-ve-Le+E/2,Be=Ce-Ne-E,S&&(Pe=fe=we(Ae+xe),Da(c,fe,Ce,Pe,Be)),x&&(Pe=fe=we(Ae+De),Da(c,fe,Ce,Pe,Be))):(fe=Ae+ve+Le-E/2,Pe=fe+Ne+E,S&&(Be=Ce=we(Re+xe),Da(c,fe,Ce,Pe,Be)),x&&(Be=Ce=we(Re+De),Da(c,fe,Ce,Pe,Be)))}}function Da(c,l,p,y,S){c.beginPath(),c.moveTo(l,p),c.lineTo(y,S),c.stroke(),c.closePath()}function lm(c,l){var p=oe.prepareTicks(l),y=zr(p,2),S=y[0],x=y[1],E=[],O=l.minValue,P=Math.abs(l.minorTicks)||0,N=P?(l.maxValue-l.minValue)/(P*(l.majorTicks.length-1)):0;if(P)if(l.exactTicks)for(var Q=Ai.mod(l.majorTicks[0],P)||0;O<l.maxValue;O+=P)Q+O<l.maxValue&&E.push(Q+O);else for(;O<l.maxValue;O+=N)E.push(O);Ur(c,l.colorMinorTicks||l.colorStrokeTicks,E,l.minValue,l.maxValue,S,x,1,l.ticksWidthMinor/100)}function dm(c,l){var p=c.barDimensions,y=p.isVertical,S=p.length,x=p.width,E=p.barWidth,O=p.barMargin,P=p.barOffset,N=p.X,Q=p.Y,$=p.ticksLength,le=p.ticksPadding,ge=l.maxValue-l.minValue,ve=ge/(l.majorTicks.length-1),Le=l.exactTicks?l.majorTicks:l.majorTicks.map(function(ua,ln){return l.minValue+ve*ln}),Ae=Le.length,Re=l.numberSide!=="right",Ne=l.numberSide!=="left",Fe=l.fontNumbersSize*x/200,ke=0,De=(l.ticksWidth/100+2*le)*x,xe=(x-E)/2-De,fe=(x-E)/2+E+De,Ce=void 0,Pe=void 0,Be=void 0,Qe=void 0,Rt=l.colorNumbers instanceof Array?l.colorNumbers:new Array(Ae).fill(l.colorNumbers),Ht=l.numbersMargin/100*x;for(c.font=oe.font(l,"Numbers",x/200),c.lineWidth=0,c.textAlign="center";ke<Ae;ke++)c.fillStyle=Rt[ke],Qe=l.majorTicks[ke],Be=l.exactTicks?$*((Le[ke]-l.minValue)/ge):ke*$/(Ae-1),y?(Pe=Q+S-O-P-Be+Fe/3,Re&&(c.textAlign="right",c.fillText(Qe,N+xe-Ht,Pe)),Ne&&(c.textAlign="left",c.fillText(Qe,N+fe+Ht,Pe))):(c.measureText(Qe).width,Ce=N+O+P+Be,Re&&c.fillText(Qe,Ce,Q+xe-Ht),Ne&&c.fillText(Qe,Ce,Q+fe+Fe+Ht))}function cm(c,l){if(l.title){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.baseX,O=p.baseY,P=p.titleMargin,N=l.fontTitleSize*S/200,Q=we(E+(y?S:x)/2),$=we(O+P/2-(y?N:N/2)-.025*(y?x:S));c.save(),c.textAlign="center",c.fillStyle=l.colorTitle,c.font=oe.font(l,"Title",S/200),c.lineWidth=0,c.fillText(l.title,Q,$,y?S:x),c.restore()}}function mm(c,l){if(l.units){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.baseX,O=p.baseY,P=p.unitsMargin,N=l.fontUnitsSize*S/200,Q=we(E+(y?S:x)/2),$=we(O+(y?x:S)+P/2-N/2);c.save(),c.textAlign="center",c.fillStyle=l.colorUnits,c.font=oe.font(l,"Units",S/200),c.lineWidth=0,c.fillText(oe.formatContext(l,l.units),Q,$,y?S:x),c.restore()}}function um(c,l){if(l.needle){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.barWidth,O=p.barOffset,P=p.barMargin,N=p.ticksLength,Q=p.X,$=p.Y,le=p.ticksPadding,ge=l.needleSide!=="right",ve=l.needleSide!=="left",Le=N*(oe.normalizedValue(l).indented-l.minValue)/(l.maxValue-l.minValue),Ae=(l.ticksWidth/100+le)*S,Re=E/2+Ae,Ne=Re*(l.needleEnd/100),Fe=void 0,ke=void 0,De=void 0,xe=void 0,fe=l.needleType.toLowerCase()==="arrow"?pm:hm,Ce=(S-E)/2,Pe=Re*(l.needleStart/100),Be=Ce-Ae-Pe,Qe=Ce+E+Ae+Pe;c.save(),oe.drawNeedleShadow(c,l),y?(De=we($+x-P-O-Le),ge&&(Fe=we(Q+Be),ke=Fe+Ne,fe(c,l,Fe,De,ke,De,Ne)),ve&&(Fe=we(Q+Qe),ke=Fe-Ne,fe(c,l,Fe,De,ke,De,Ne,!0))):(Fe=we(Q+P+O+Le),ge&&(De=we($+Be),xe=De+Ne,fe(c,l,Fe,De,Fe,xe,Ne)),ve&&(De=we($+Qe),xe=De-Ne,fe(c,l,Fe,De,Fe,xe,Ne,!0))),c.restore()}}function qr(c,l,p,y){return l.colorNeedleEnd?oe.linearGradient(c,y?l.colorNeedleEnd:l.colorNeedle,y?l.colorNeedle:l.colorNeedleEnd,p,!c.barDimensions.isVertical):l.colorNeedle}function hm(c,l,p,y,S,x,E,O){c.lineWidth=l.needleWidth,c.strokeStyle=qr(c,l,E,O),c.beginPath(),c.moveTo(p,y),c.lineTo(S,x),c.stroke(),c.closePath()}function pm(c,l,p,y,S,x,E,O){var P=we(.4*E),N=E-P,Q=p===S,$=l.needleWidth/2;c.fillStyle=qr(c,l,E,O),c.beginPath(),Q?(y>x&&(N*=-1),c.moveTo(p-$,y),c.lineTo(p+$,y),c.lineTo(p+$,y+N),c.lineTo(p,x),c.lineTo(p-$,y+N),c.lineTo(p-$,y)):(p>S&&(N*=-1),c.moveTo(p,y-$),c.lineTo(p,y+$),c.lineTo(p+N,y+$),c.lineTo(S,y),c.lineTo(p+N,y-$),c.lineTo(p,y-$)),c.fill(),c.closePath()}function gm(c,l,p,y,S,x,E){var O=(parseFloat(l.fontValueSize)||0)*x/200,P=(.11*E-O)/2;c.barDimensions.isVertical&&oe.drawValueBox(c,l,p,y+x/2,S+E-O-P,x)}var zr=(function(){function c(l,p){var y=[],S=!0,x=!1,E=void 0;try{for(var O,P=l[Symbol.iterator]();!(S=(O=P.next()).done)&&(y.push(O.value),!p||y.length!==p);S=!0);}catch(N){x=!0,E=N}finally{try{!S&&P.return&&P.return()}finally{if(x)throw E}}return y}return function(l,p){if(Array.isArray(l))return l;if(Symbol.iterator in Object(l))return c(l,p);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),Bo=function c(l,p,y){l===null&&(l=Function.prototype);var S=Object.getOwnPropertyDescriptor(l,p);if(S===void 0){var x=Object.getPrototypeOf(l);return x===null?void 0:c(x,p,y)}if("value"in S)return S.value;var E=S.get;if(E!==void 0)return E.call(y)},fm=function c(l,p,y,S){var x=Object.getOwnPropertyDescriptor(l,p);if(x===void 0){var E=Object.getPrototypeOf(l);E!==null&&c(E,p,y,S)}else if("value"in x&&x.writable)x.value=y;else{var O=x.set;O!==void 0&&O.call(S,y)}return y},sn=(function(){function c(l,p){for(var y=0;y<p.length;y++){var S=p[y];S.enumerable=S.enumerable||!1,S.configurable=!0,"value"in S&&(S.writable=!0),Object.defineProperty(l,S.key,S)}}return function(l,p,y){return p&&c(l.prototype,p),y&&c(l,y),l}})(),Pa=null,bm=(function(){function c(){i(this,c),this._events={},this.addListener=this.on,this.removeListener=this.off}return sn(c,[{key:"emit",value:function(l){if(this._events[l]){for(var p=0,y=this._events[l].length,S=arguments.length,x=Array(S>1?S-1:0),E=1;E<S;E++)x[E-1]=arguments[E];for(;p<y;p++)this._events[l][p]&&this._events[l][p].apply(this,x)}}},{key:"once",value:function(l){for(var p=arguments.length,y=Array(p>1?p-1:0),S=1;S<p;S++)y[S-1]=arguments[S];for(var x=0,E=y.length,O=this;x<E;x++)(function(){var P=y[x],N=function Q(){O.off(l,Q),P.apply(O,arguments)};y[x]=N})();this.on.apply(this,[l].concat(y))}},{key:"on",value:function(l){this._events[l]||(this._events[l]=[]);for(var p=0,y=arguments.length<=1?0:arguments.length-1;p<y;p++)this._events[l].push(arguments.length<=p+1?void 0:arguments[p+1])}},{key:"off",value:function(l){if(this._events[l])for(var p=0,y=arguments.length<=1?0:arguments.length-1;p<y;p++)for(var S=arguments.length<=p+1?void 0:arguments[p+1],x=void 0;~(x=this._events[l].indexOf(S));)this._events[l].splice(x,1)}},{key:"removeAllListeners",value:function(l){delete this._events[l]}},{key:"listeners",get:function(){return this._events}}]),c})(),Hr=a("requestAnimationFrame")||function(c){return setTimeout(function(){return c(new Date().getTime())},1e3/60)},da={linear:function(c){return c},quad:function(c){return Math.pow(c,2)},dequad:function(c){return 1-da.quad(1-c)},quint:function(c){return Math.pow(c,5)},dequint:function(c){return 1-Math.pow(1-c,5)},cycle:function(c){return 1-Math.sin(Math.acos(c))},decycle:function(c){return Math.sin(Math.acos(1-c))},bounce:function(c){return 1-da.debounce(1-c)},debounce:function(c){for(var l=0,p=1;;l+=p,p/=2)if(c>=(7-4*l)/11)return-Math.pow((11-6*l-11*c)/4,2)+Math.pow(p,2)},elastic:function(c){return 1-da.delastic(1-c)},delastic:function(c){return Math.pow(2,10*(c-1))*Math.cos(20*Math.PI*1.5/3*c)}},Uo=(function(){function c(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,c),this.duration=p,this.rule=l,this.draw=y,this.end=S,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",y);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",S)}return sn(c,[{key:"animate",value:function(l,p){var y=this;this.frame&&this.cancel();var S=window.performance&&window.performance.now?window.performance.now():a("animationStartTime")||Date.now();l=l||this.draw,p=p||this.end,this.draw=l,this.end=p,this.frame=Hr(function(x){return r(x,l,S,da[y.rule]||y.rule,y.duration,p,y)})}},{key:"cancel",value:function(){this.frame&&((a("cancelAnimationFrame")||function(l){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),c})();Uo.rules=da;var wn=(function(){function c(l,p,y){i(this,c),this.options=l,this.element=p.toLowerCase(),this.type=c.toDashed(y),this.Type=n[y],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||c.domReady(this.traverse.bind(this))}return sn(c,[{key:"isValidNode",value:function(l){return!(!l.tagName||l.tagName.toLowerCase()!==this.element||l.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var l=document.getElementsByTagName(this.element),p=0,y=l.length;p<y;p++)this.process(l[p]);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(l){for(var p=0,y=l.length;p<y;p++){var S=l[p];if(S.type==="attributes"&&S.attributeName==="data-type"&&this.isValidNode(S.target)&&S.oldValue!==this.type)setTimeout(this.process.bind(this,S.target));else if(S.addedNodes&&S.addedNodes.length)for(var x=0,E=S.addedNodes.length;x<E;x++)setTimeout(this.process.bind(this,S.addedNodes[x]))}}},{key:"process",value:function(l){var p=this;if(!this.isValidNode(l))return null;var y=void 0,S=JSON.parse(JSON.stringify(this.options)),x=null;for(y in S)if(S.hasOwnProperty(y)){var E=c.toAttributeName(y),O=c.parse(l.getAttribute(E));O!=null&&(S[y]=O)}return S.renderTo=l,x=new this.Type(S),x.draw&&x.draw(),this.isObservable&&(x.observer=new MutationObserver(function(P){P.forEach(function(N){if(N.type==="attributes"){var Q=N.attributeName.toLowerCase(),$=l.getAttribute(Q).toLowerCase();if(Q==="data-type"&&$&&$!==p.type)x.observer.disconnect(),delete x.observer,x.destroy&&x.destroy();else if(Q.substr(0,5)==="data-"){var le=Q.substr(5).split("-").map(function(ve,Le){return Le?ve.charAt(0).toUpperCase()+ve.substr(1):ve}).join(""),ge={};ge[le]=c.parse(l.getAttribute(N.attributeName)),le==="value"?x&&(x.value=ge[le]):x.update&&x.update(ge)}}})}),x.observer.observe(l,{attributes:!0})),x}}],[{key:"parse",value:function(l){if(l==="true")return!0;if(l==="false")return!1;if(l!=="undefined"){if(l==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(l))return l.split(",");try{return JSON.parse(l)}catch{}return l}}},{key:"toDashed",value:function(l){for(var p=l.split(/(?=[A-Z])/),y=1,S=p.length,x=p[0].toLowerCase();y<S;y++)x+="-"+p[y].toLowerCase();return x}},{key:"toCamelCase",value:function(l){for(var p=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],y=l.split(/-/),S=0,x=y.length,E="";S<x;S++)E+=S||p?y[S][0].toUpperCase()+y[S].substr(1).toLowerCase():y[S].toLowerCase();return E}},{key:"toAttributeName",value:function(l){return"data-"+c.toDashed(l)}},{key:"domReady",value:function(l){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return l();window.addEventListener?window.addEventListener("DOMContentLoaded",l,!1):window.attachEvent&&window.attachEvent("onload",l)}}]),c})(),ri=(function(){function c(l,p,y){i(this,c),c.collection.push(this),this.width=p||0,this.height=y||0,this.element=l,this.init()}return sn(c,[{key:"init",value:function(){var l=c.pixelRatio;this.element.width=this.width*l,this.element.height=this.height*l,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 l=c.collection.indexOf(this);~l&&c.collection.splice(l,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 l=c.pixelRatio;return l!==1&&this.contextClone.scale(l,l),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var l=0,p=c.collection.length;l<p;l++)c.collection[l].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),c})();ri.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(ri.redraw);var qo={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(c){if(typeof c=="string")for(var l=0,p=this.length;l<p;l++){var y=this[l].options.renderTo.tagName?this[l].options.renderTo:document.getElementById(this[l].options.renderTo||"");if(y.getAttribute("id")===c)return this[l]}else if(typeof c=="number")return this[c];return null};var zo="2.2.1",we=Math.round,si=Math.abs,ca=new s;ca.version=zo;var Ai=(function(c){function l(p){i(this,l);var y=e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this)),S=y.constructor.name;if(S==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(ca.push(y),p.listeners&&Object.keys(p.listeners).forEach(function(E){(p.listeners[E]instanceof Array?p.listeners[E]:[p.listeners[E]]).forEach(function(O){y.on(E,O)})}),y.version=zo,y.type=n[S]||l,y.initialized=!1,p.minValue=parseFloat(p.minValue),p.maxValue=parseFloat(p.maxValue),p.value=parseFloat(p.value)||0,p.borders||(p.borderInnerWidth=p.borderMiddleWidth=p.borderOuterWidth=0),!p.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var x=p.renderTo.tagName?p.renderTo:document.getElementById(p.renderTo);if(!(x instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return p.width=parseFloat(p.width)||0,p.height=parseFloat(p.height)||0,p.width&&p.height||(p.width||(p.width=x.parentNode?x.parentNode.offsetWidth:x.offsetWidth),p.height||(p.height=x.parentNode?x.parentNode.offsetHeight:x.offsetHeight)),y.options=p||{},y.options.animateOnInit&&(y._value=y.options.value,y.options.value=y.options.minValue),y.canvas=new ri(x,p.width,p.height),y.canvas.onRedraw=y.draw.bind(y),y.animation=new Uo(p.animationRule,p.animationDuration),y}return t(l,c),sn(l,[{key:"update",value:function(p){return Object.assign(this.options,this.type.configure(p||{})),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 p=ca.indexOf(this);~p&&ca.splice(p,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(p){var y=this;p=l.ensureValue(p,this.options.minValue);var S=this.options.value;if(p!==S)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===p))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=p),this.emit("animationStart"),this.animation.animate(function(x){var E=S+(p-S)*x;y.options.animatedValue&&y.emit("value",E,y.value),y.options.value=E,y.draw(),y.emit("animate",x,y.options.value)},function(){y._value!==void 0&&(y.emit("value",y._value,y.value),y.options.value=y._value,delete y._value),y.draw(),y.emit("animationEnd"),y.animation.frame=null})}else this.emit("value",p,this.value),this.options.value=p,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(p){return p}},{key:"initialize",value:function(p,y){return new wn(y,"canvas",p)}},{key:"fromElement",value:function(p){var y=wn.toCamelCase(p.getAttribute("data-type")),S=p.attributes,x=0,E=S.length,O={};if(y){for(/Gauge$/.test(y)||(y+="Gauge");x<E;x++)O[wn.toCamelCase(S[x].name.replace(/^data-/,""),!1)]=wn.parse(S[x].value);new wn(O,p.tagName,y).process(p)}}},{key:"ensureValue",value:function(p){var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return p=parseFloat(p),!isNaN(p)&&isFinite(p)||(p=parseFloat(y)||0),p}},{key:"mod",value:function(p,y){return(p%y+y)%y}},{key:"version",get:function(){return zo}}]),l})(bm);n!==void 0&&(n.BaseGauge=Ai,n.gauges=(window.document||{}).gauges=ca);var Am=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,oe={roundRect:C,padValue:M,formatMajorTickNumber:V,radians:D,radialPoint:j,linearGradient:X,drawNeedleShadow:Z,drawValueBox:Te,verifyError:h,prepareTicks:b,font:ee,normalizedValue:Ye,formatContext:f},ma=Math.PI,Ho=ma/2,jr=Object.assign({},qo,{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"}),vm=(function(c){function l(p){return i(this,l),p=Object.assign({},jr,p||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(p)))}return t(l,c),sn(l,[{key:"draw",value:function(){try{var p=this.canvas,y=[-p.drawX,-p.drawY,p.drawWidth,p.drawHeight],S=y[0],x=y[1],E=y[2],O=y[3],P=this.options;if(P.animationTarget==="needle"){if(!p.elementClone.initialized){var N=p.contextClone;N.clearRect(S,x,E,O),this.emit("beforePlate"),pe(N,P),this.emit("beforeHighlights"),He(N,P),this.emit("beforeMinorTicks"),bt(N,P),this.emit("beforeMajorTicks"),ot(N,P),this.emit("beforeNumbers"),Ta(N,P),this.emit("beforeTitle"),Rr(N,P),this.emit("beforeUnits"),Nr(N,P),p.elementClone.initialized=!0}this.canvas.commit(),p.context.clearRect(S,x,E,O),p.context.drawImage(p.elementClone,S,x,E,O),this.emit("beforeProgressBar"),Lr(p.context,P),this.emit("beforeValueBox"),Wr(p.context,P,Gr(this)),this.emit("beforeNeedle"),Vr(p.context,P)}else{var Q=-oe.radians((P.value-P.minValue)/(P.maxValue-P.minValue)*P.ticksAngle);if(p.context.clearRect(S,x,E,O),this.emit("beforePlate"),pe(p.context,P),p.context.rotate(Q),this.emit("beforeHighlights"),He(p.context,P),this.emit("beforeMinorTicks"),bt(p.context,P),this.emit("beforeMajorTicks"),ot(p.context,P),this.emit("beforeNumbers"),Ta(p.context,P),this.emit("beforeProgressBar"),Lr(p.context,P),p.context.rotate(-Q),!p.elementClone.initialized){var $=p.contextClone;$.clearRect(S,x,E,O),this.emit("beforeTitle"),Rr($,P),this.emit("beforeUnits"),Nr($,P),this.emit("beforeNeedle"),Vr($,P),p.elementClone.initialized=!0}p.context.drawImage(p.elementClone,S,x,E,O)}this.emit("beforeValueBox"),Wr(p.context,P,Gr(this)),Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(le){oe.verifyError(le)}return this}},{key:"value",set:function(p){p=Ai.ensureValue(p,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=p,p=this.options.value+((p-this.options.value)%360+540)%360-180),fm(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",p,this)},get:function(){return Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",this)}}],[{key:"configure",value:function(p){return p.barWidth>50&&(p.barWidth=50),isNaN(p.startAngle)&&(p.startAngle=45),isNaN(p.ticksAngle)&&(p.ticksAngle=270),p.ticksAngle>360&&(p.ticksAngle=360),p.ticksAngle<0&&(p.ticksAngle=0),p.startAngle<0&&(p.startAngle=0),p.startAngle>360&&(p.startAngle=360),p}}]),l})(Ai);n!==void 0&&(n.RadialGauge=vm),Ai.initialize("RadialGauge",jr);var Yr=Object.assign({},qo,{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}),ym=(function(c){function l(p){return i(this,l),p=Object.assign({},Yr,p||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(p)))}return t(l,c),sn(l,[{key:"draw",value:function(){try{var p=this.canvas,y=[-p.drawX,-p.drawY,p.drawWidth,p.drawHeight],S=y[0],x=y[1],E=y[2],O=y[3],P=this.options;if(!p.elementClone.initialized){var N=p.contextClone;N.clearRect(S,x,E,O),this.emit("beforePlate"),this.drawBox=im(N,P,S,x,E,O),this.emit("beforeBar"),am.apply(void 0,[N,P].concat(o(this.drawBox))),p.contextClone.barDimensions=N.barDimensions,this.emit("beforeHighlights"),rm(N,P),this.emit("beforeMinorTicks"),lm(N,P),this.emit("beforeMajorTicks"),sm(N,P),this.emit("beforeNumbers"),dm(N,P),this.emit("beforeTitle"),cm(N,P),this.emit("beforeUnits"),mm(N,P),p.elementClone.initialized=!0}this.canvas.commit(),p.context.clearRect(S,x,E,O),p.context.drawImage(p.elementClone,S,x,E,O),this.emit("beforeProgressBar"),om.apply(void 0,[p.context,P].concat(o(this.drawBox))),this.emit("beforeNeedle"),um(p.context,P),this.emit("beforeValueBox"),gm.apply(void 0,[p.context,P,P.animatedValue?this.options.value:this.value].concat(o(this.drawBox))),Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(Q){oe.verifyError(Q)}return this}}],[{key:"configure",value:function(p){return p.barStrokeWidth>=p.barWidth&&(p.barStrokeWidth=we(p.barWidth/2)),p.hasLeft=Br("right",p),p.hasRight=Br("left",p),p.value>p.maxValue&&(p.value=p.maxValue),p.value<p.minValue&&(p.value=p.minValue),Ai.configure(p)}}]),l})(Ai);n!==void 0&&(n.LinearGauge=ym),Ai.initialize("LinearGauge",Yr),typeof Eo<"u"&&Object.assign(n,{Collection:s,GenericOptions:qo,Animation:Uo,BaseGauge:Ai,drawings:oe,SmartCanvas:ri,DomObserver:wn,vendorize:a})})(typeof Eo<"u"?Eo.exports:window)});var Ei=(()=>{class n{appSettings=A($t);data=A(Ci);_svcDatasetConfigs=[];_svcDataSource=[];_svcSubjectObserverRegistry=[];signedAnglePaths=new Set(["self.navigation.attitude.roll","self.navigation.attitude.pitch","self.navigation.attitude.yaw","self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater","self.steering.rudderAngle"]);constructor(){this._svcDatasetConfigs=this.appSettings.getDataSets(),this.cleanupDatasets(),this.startAll()}cleanupDatasets(){if(this.appSettings.configUpgrade()||this.appSettings.getAppConfig().configVersion<12)return;let t=this.appSettings.getDashboardConfig(),i=new Set;t.forEach(h=>{h.configuration?.forEach(f=>{f?.id&&i.add(f.id)})});function a(h){let f=h.match(/^(windtrends|speedtrends)-(.+)$/);return f?f[2]:null}let r=[],s=[];for(let h of this._svcDatasetConfigs){let f=h.label||"",b=!1;if(f.startsWith("windtrends-")||f.startsWith("speedtrends-")){let C=a(f);b=!!(C&&i.has(C))}else(f.startsWith("simple-chart-")||(f.match(/\|/g)||[]).length===4)&&(b=i.has(h.uuid));b?s.push(h):r.push(h)}r.length&&(r.forEach(h=>{console.warn(`[DatasetService] Cleaned dataset: uuid=${h.uuid}, label="${h.label}"`)}),this._svcDatasetConfigs=s,this.appSettings.saveDataSets(this._svcDatasetConfigs))}setupServiceSubjectRegistry(e,t){let i=this._svcSubjectObserverRegistry.findIndex(a=>a.datasetUuid==e);i>=0&&(this._svcSubjectObserverRegistry[i].rxjsSubject.complete(),this._svcSubjectObserverRegistry.splice(i,1)),this._svcSubjectObserverRegistry.push({datasetUuid:e,rxjsSubject:new Xr(t)})}createDataSourceConfiguration(e){let i={uuid:e.uuid,pathObserverSubscription:null,sampleTime:null,maxDataPoints:null,smoothingPeriod:null,historicalData:[]};switch(e.timeScaleFormat){case"Last 30 Minutes":i.maxDataPoints=120,i.sampleTime=15e3,i.smoothingPeriod=50;break;case"Last 5 Minutes":i.maxDataPoints=60,i.sampleTime=5e3,i.smoothingPeriod=25;break;case"Last Minute":i.maxDataPoints=60,i.sampleTime=1e3,i.smoothingPeriod=25;break;case"hour":i.maxDataPoints=e.period*120,i.sampleTime=3e4,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break;case"minute":i.maxDataPoints=e.period*60,i.sampleTime=1e3,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break;default:i.maxDataPoints=e.period*5,i.sampleTime=200,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break}return(!i.maxDataPoints||i.maxDataPoints<1)&&(i.maxDataPoints=1),i}startAll(){console.log("[Dataset Service] Auto Starting "+this._svcDatasetConfigs.length.toString()+" Datasets");for(let e of this._svcDatasetConfigs)this.start(e.uuid)}start(e){let t=this._svcDatasetConfigs.find(h=>h.uuid==e);if(!t){console.warn(`[Dataset Service] Dataset UUID:${e} not found`);return}let i=this.createDataSourceConfiguration(t);this.setupServiceSubjectRegistry(i.uuid,i.maxDataPoints);let a=this._svcDataSource[this._svcDataSource.push(i)-1];console.log(`[Dataset Service] Starting recording process: ${t.path}, Scale: ${t.timeScaleFormat}, Period: ${t.period}, Datapoints: ${i.maxDataPoints}`);function r(h){return f=>xn(h).pipe(cs(f,(b,C)=>C))}let s=this.resolveAngleDomain(t.path,t.baseUnit);a.pathObserverSubscription=this.data.subscribePath(t.path,t.pathSource).pipe(r(i.sampleTime)).subscribe(h=>{if(h.data.value===null)return;a.maxDataPoints>0&&a.historicalData.length>=a.maxDataPoints&&a.historicalData.shift(),a.historicalData.push(h.data.value);let f=this.updateDataset(a,t.baseUnit,s);this._svcSubjectObserverRegistry.find(b=>b.datasetUuid===a.uuid).rxjsSubject.next(f)})}stop(e){let t=this._svcDataSource.findIndex(i=>i.uuid==e);console.log(`[Dataset Service] Stopping Dataset ${e} data capture`),this._svcDataSource[t].pathObserverSubscription.unsubscribe(),this._svcDataSource.splice(t,1)}list(){return Ut(this._svcDatasetConfigs)}getDatasetConfig(e){return this._svcDatasetConfigs.find(t=>t.uuid===e)}getDataSourceInfo(e){return this._svcDataSource.find(t=>t.uuid===e)}create(e,t,i,a,r,s=!0,h=!0,f){if(!e||!t||!i||!a||!r)return null;let b=f||qi.create(),C={uuid:b,path:e,pathSource:t,baseUnit:this.data.getPathUnitType(e),timeScaleFormat:i,period:a,label:r,editable:h};return console.log(`[Dataset Service] Creating ${s?"":"non-"}persistent ${h?"":"hidden "}dataset: ${C.uuid}, Path: ${C.path}, Source: ${C.pathSource} Scale: ${C.timeScaleFormat}, Period: ${C.period}`),this._svcDatasetConfigs.push(C),this.start(b),s===!0&&this.appSettings.saveDataSets(this._svcDatasetConfigs),b}edit(e){let t=this._svcDatasetConfigs.find(i=>i.uuid===e.uuid);return t?JSON.stringify(t)===JSON.stringify(e)?(console.log(`[Dataset Service] No changes detected for Dataset ${e.uuid}.`),!1):(this.stop(e.uuid),console.log(`[Dataset Service] Updating Dataset: ${e.uuid}`),e.baseUnit=this.data.getPathUnitType(e.path),this._svcDatasetConfigs.splice(this._svcDatasetConfigs.findIndex(i=>i.uuid===e.uuid),1,e),this.start(e.uuid),this.appSettings.saveDataSets(this._svcDatasetConfigs),!0):!1}remove(e,t=!0){return!e||e===""||this._svcDatasetConfigs.findIndex(i=>i.uuid===e)===-1?!1:(this.stop(e),console.log(`[Dataset Service] Removing ${t?"":"non-"}persistent Dataset: ${e}`),this._svcDatasetConfigs.splice(this._svcDatasetConfigs.findIndex(i=>i.uuid===e),1),this._svcSubjectObserverRegistry.find(i=>i.datasetUuid===e).rxjsSubject.complete(),this._svcSubjectObserverRegistry.splice(this._svcSubjectObserverRegistry.findIndex(i=>i.datasetUuid===e),1),t===!0&&this.appSettings.saveDataSets(this._svcDatasetConfigs),!0)}getDatasetObservable(e){let t=this._svcSubjectObserverRegistry.find(i=>i.datasetUuid==e);return t?t.rxjsSubject.asObservable():null}getDatasetBatchThenLiveObservable(e){let t=this._svcSubjectObserverRegistry.find(h=>h.datasetUuid==e);if(!t)return null;let i=t.rxjsSubject,a=i._buffer?i._buffer.slice():[],r=Kr([a]),s=i.pipe(ds(a.length));return ts(r,s)}updateDataset(e,t,i="scalar"){let a=null,r=null,s=null,h=null;if(t==="rad"){a=this.circularMeanRad(e.historicalData);let M=e.historicalData.slice(-e.smoothingPeriod);r=this.circularMeanRad(M);let{min:V,max:D}=this.circularMinMaxRad(e.historicalData);i==="direction"?(a=this.normalizeToDirection(a),r=this.normalizeToDirection(r),s=this.normalizeToDirection(V),h=this.normalizeToDirection(D)):i==="signed"?(a=this.normalizeToSigned(a),r=this.normalizeToSigned(r),s=this.normalizeToSigned(V),h=this.normalizeToSigned(D)):(s=V,h=D)}else a=b(e.historicalData),r=C(e.historicalData,e.smoothingPeriod),s=Math.min(...e.historicalData),h=Math.max(...e.historicalData);return{timestamp:Date.now(),data:{value:t==="rad"?i==="signed"?this.normalizeToSigned(e.historicalData[e.historicalData.length-1]):this.normalizeToDirection(e.historicalData[e.historicalData.length-1]):e.historicalData[e.historicalData.length-1],sma:r,ema:null,doubleEma:null,lastAverage:a,lastMinimum:s,lastMaximum:h}};function b(M){return M.length===0?null:M.reduce((D,j)=>D+j,0)/M.length}function C(M,V){M.length<V&&(V=M.length);let D=0;for(let j=M.length-V;j<M.length;j++)D+=M[j];return D/V}}circularMeanRad(e){if(e.length===0)return 0;let t=e.reduce((a,r)=>a+Math.sin(r),0),i=e.reduce((a,r)=>a+Math.cos(r),0);return Math.atan2(t/e.length,i/e.length)}circularMinMaxRad(e){if(e.length===0)return{min:0,max:0};let t=e.map(h=>(h*180/Math.PI+360)%360).sort((h,f)=>h-f),i=0,a=0;for(let h=0;h<t.length;h++){let f=(h+1)%t.length,b=(t[f]-t[h]+360)%360;b>i&&(i=b,a=f)}let r=t[a]*Math.PI/180,s=t[(a-1+t.length)%t.length]*Math.PI/180;return{min:r,max:s}}resolveAngleDomain(e,t){if(t!=="rad")return"scalar";let i=this.normalizePathKey(e);for(let a of this.signedAnglePaths)if(i===this.normalizePathKey(a))return"signed";return"direction"}normalizePathKey(e){return e.replace(/^vessels\.self\./,"").replace(/^self\./,"")}mod(e,t){return(e%t+t)%t}normalizeToDirection(e){let t=2*Math.PI;return this.mod(e,t)}normalizeToSigned(e){let t=2*Math.PI;return this.mod(e+Math.PI,t)-Math.PI}removeIfExists(e,t=!0){return!e||this._svcDatasetConfigs.findIndex(i=>i.uuid===e)===-1?!1:this.remove(e,t)}ngOnDestroy(){[...this._svcDataSource].forEach(e=>{try{this.stop(e.uuid)}catch{}}),this._svcSubjectObserverRegistry.forEach(e=>e.rxjsSubject.complete()),this._svcSubjectObserverRegistry=[]}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var kl=(()=>{class n{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new Ia(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||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Tl=(()=>{class n{sanitizer=A(Za);transform(e){return this.sanitizer.bypassSecurityTrustResourceUrl(e)}static \u0275fac=function(t){return new(t||n)};static \u0275pipe=Fa({name:"safe",type:n,pure:!0})}return n})();var Sm={minDist:230,maxDur:550,minVelocity:1.5,axisDominance:1.8,deadzoneMs:160,purityRatio:.8,lockThreshold:28,directionLockAngle:25,reversalPrimaryThreshold:34};function go(n){let o=Ue(Ue({},Sm),n);return`(() => {
|
|
1
|
+
import{A as wl,B as Jo,C as er,D as tr,E as ir,F as jn,G as Ca,H as xl,I as _l,J as Yn,K as Ji,L as Et,M as Qn,N as $n,O as Zn,P as ho,Q as po,R as Ml,S as Xn,T as Kn,a as Gt,b as ni,c as oo,d as vl,e as yl,f as Cl,g as Sl,h as je,i as Zi,j as Xi,k as ro,l as pn,m as va,n as ui,o as Ki,p as zt,q as so,r as lo,s as Hn,t as gn,u as co,v as mo,w as hi,x as Ko,y as uo,z as ya}from"./chunk-SY22WXMI.js";import{a as Al,b as ao}from"./chunk-RYHOAWDD.js";import{a as ii,b as $i,c as at}from"./chunk-PKKBBIJK.js";import{a as dl,b as cl,c as ml,d as zn,e as ul,f as Tt,g as hl,h as pl,i as gl,k as fl,m as Aa,n as bl}from"./chunk-HIADZ4BV.js";import{a as wt,b as Lt}from"./chunk-IO5SDLYV.js";import{a as sl,b as ll}from"./chunk-OQULS6SV.js";import{A as ft,B as ti,a as ce,c as Ws,d as Ci,e as Zs,f as Xs,g as Ks,h as Si,i as wi,k as Js,l as xi,m as _i,n as Mi,o as zi,p as Kt,r as mt,s as Yi,t as ol,u as Qi,w as rl,y as ut,z as ei}from"./chunk-QLTN6G6E.js";import{A as Bn,B as ki,C as Ti,D as kt,E as nl,F as al,G as Hi,H as Un,I as ji,J as ct,L as qn,M as pt,N as gt,a as qi,d as qt,e as Nn,f as ws,i as xs,j as _s,k as $a,l as Ms,m as Zt,n as Gn,o as dt,q as _t,s as nt,t as Mt,u as el,v as tl,w as no,x as il,y as Jt,z as Fn}from"./chunk-XDPHEQEO.js";import{b as Gs,f as Fs,g as Bs,h as zs,i as Xo,j as Hs,m as js,n as Ys,o as Qs,s as $s}from"./chunk-SZ2GUIT5.js";import{$ as cs,$b as Bt,Ab as Ct,Ad as Zo,Ba as La,Bb as St,Bc as za,Bd as Ka,C as ha,Ca as pa,Cc as Ha,Cd as Vs,D as xn,Db as te,Dd as Ja,E as Vi,Eb as me,Ec as Ss,F as Wi,Fa as g,Fb as It,Fd as Ot,Ga as ps,Gb as re,Gc as ja,Gd as ze,Hb as Je,Hd as Xe,I as ns,Ia as kn,Ib as Rn,Ic as Ya,J as Li,Ja as di,Jb as Ft,K as Gi,Kb as m,La as Ga,Lb as ne,Ld as mi,M as as,Mb as ye,N as os,Nb as Ui,Nc as et,Nd as Xt,O as rs,Oa as L,Oc as Qa,P as Ra,Pa as Wt,Pb as cn,Qa as st,Qb as mn,R as ss,Ra as Fa,Rb as un,S as ls,Sa as ga,Sc as Za,Ta as gs,Td as eo,U as ds,Ua as Bi,Ud as to,V as _n,Va as fs,Vb as ci,Vd as xt,W as Na,Wa as yt,Wd as io,X as Va,Xa as We,Xb as hn,Xc as ks,Xd as lt,Ya as Tn,Yb as ba,Z as Wa,Zd as Ls,_b as At,_d as Ke,a as Be,ab as Y,ac as Ua,b as Ze,ba as Mn,bb as G,ca as ht,cb as F,cc as W,d as Cm,da as Vt,db as Me,dc as se,dd as Ts,e as Zr,ea as Yt,eb as En,ec as R,ed as Es,f as it,fa as ms,fb as ue,fc as bs,fd as Ds,fe as Us,g as Ni,ga as A,gb as he,ge as qs,hb as T,hc as qa,i as jo,ia as us,ib as d,ic as $e,j as Nt,ja as q,jb as u,jc as v,ka as z,kb as U,kc as ie,kd as Xa,l as Ia,la as K,lb as _,m as Xr,ma as Ve,mb as k,mc as As,md as Vn,na as Fi,nb as H,nc as Ut,nd as Ps,oa as hs,ob as Dn,od as Is,p as Kr,pa as rt,pb as Pn,pc as qe,pd as Wn,q as Yo,qb as Ba,qc as $o,r as Jr,ra as w,rb as ae,sb as Pi,sd as Os,t as Oa,tb as B,u as Qo,ua as Qt,ub as fa,v as es,vb as I,vd as Rs,w as vi,wa as Ie,wb as In,wc as vs,wd as yi,xb as On,xc as ys,xd as Ln,y as ts,yb as dn,yc as Cs,yd as Ns,z as is,zb as $t}from"./chunk-OB3QLUH6.js";var mr=Cm((rx,Eo)=>{(function(n){"use strict";function o(c){if(Array.isArray(c)){for(var l=0,p=Array(c.length);l<c.length;l++)p[l]=c[l];return p}return Array.from(c)}function e(c,l){if(!c)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!l||typeof l!="object"&&typeof l!="function"?c:l}function t(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof l);c.prototype=Object.create(l&&l.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}}),l&&(Object.setPrototypeOf?Object.setPrototypeOf(c,l):c.__proto__=l)}function i(c,l){if(!(c instanceof l))throw new TypeError("Cannot call a class as a function")}function a(c,l){if(l||(l=typeof window>"u"?global:window),l[c]!==void 0)return l[c];if(Pa===null){var p=window.getComputedStyle(document.documentElement,"");Pa=(Array.prototype.slice.call(p).join("").match(/-(moz|webkit|ms)-/)||p.OLink===""&&["","o"]||["",""])[1]}if(Pa==="")return null;var y=c.charAt(0).toUpperCase()+c.substr(1),S=l[Pa+y];return S!==void 0?S:null}function r(c,l,p,y,S,x,E){if(typeof y!="function")throw new TypeError("Invalid animation rule:",y);var O=c-p,P=O/S,V=0;P>1&&(P=1),P!==1&&(V=y(P),isFinite(V)&&!isNaN(V)&&(P=V)),l&&l(P),O<S?E.frame=Hr(function(Q){return r(Q,l,p,y,S,x,E)}):(x&&x(),E.inProgress=!1)}function s(){Array.prototype.constructor.apply(this,arguments)}function h(c){if(!(c instanceof DOMException&&c.result===2152923147))throw c}function f(c,l){return l.replace(Am,function(p,y){var S=c[y];return S!==void 0?S:p})}function b(c){return c.majorTicks instanceof Array||(c.majorTicks=c.majorTicks?[c.majorTicks]:[]),c.majorTicks.length||(c.majorTicks.push(oe.formatMajorTickNumber(c.minValue,c)),c.majorTicks.push(oe.formatMajorTickNumber(c.maxValue,c))),[c.tickSide!=="right",c.tickSide!=="left"]}function C(c,l,p,y,S,x){c.beginPath(),c.moveTo(l+x,p),c.lineTo(l+y-x,p),c.quadraticCurveTo(l+y,p,l+y,p+x),c.lineTo(l+y,p+S-x),c.quadraticCurveTo(l+y,p+S,l+y-x,p+S),c.lineTo(l+x,p+S),c.quadraticCurveTo(l,p+S,l,p+S-x),c.lineTo(l,p+x),c.quadraticCurveTo(l,p,l+x,p),c.closePath()}function M(c,l){var p=l.valueDec,y=l.valueInt,S=0,x=void 0,E=void 0,O=void 0;if(c=parseFloat(c),O=c<0,c=Math.abs(c),p>0){for(E=c.toFixed(p).toString().split("."),x=y-E[0].length;S<x;++S)E[0]="0"+E[0];E=(O?"-":"")+E[0]+"."+E[1]}else{for(E=Math.round(c).toString(),x=y-E.length;S<x;++S)E="0"+E;E=(O?"-":"")+E}return E}function N(c,l){var p=void 0,y=!1;return p=l.majorTicksDec===0?Math.round(c).toString():c.toFixed(l.majorTicksDec),l.majorTicksInt>1?(y=~p.indexOf("."),~p.indexOf("-")?"-"+[l.majorTicksInt+l.majorTicksDec+2+(y?1:0)-p.length].join("0")+p.replace("-",""):[l.majorTicksInt+l.majorTicksDec+1+(y?1:0)-p.length].join("0")+p):p}function D(c){return c*Math.PI/180}function j(c,l){return{x:-c*Math.sin(l),y:c*Math.cos(l)}}function X(c,l,p,y){var S=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],x=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,E=c.createLinearGradient(S?0:x,S?x:0,S?0:y,S?y:0);return E.addColorStop(0,l),E.addColorStop(1,p),E}function Z(c,l){l.needleShadow&&(c.shadowOffsetX=2,c.shadowOffsetY=2,c.shadowBlur=10,c.shadowColor=l.colorNeedleShadowDown)}function ee(c,l,p){return c["font"+l+"Style"]+" "+c["font"+l+"Weight"]+" "+c["font"+l+"Size"]*p+"px "+c["font"+l]}function be(c){c.shadowOffsetX=null,c.shadowOffsetY=null,c.shadowBlur=null,c.shadowColor="",c.strokeStyle=null,c.lineWidth=0,c.save()}function Oe(c,l,p,y){l.valueTextShadow&&(c.shadowOffsetX=p,c.shadowOffsetY=p,c.shadowBlur=y,c.shadowColor=l.colorValueTextShadow)}function Te(c,l,p,y,S,x){if(l.valueBox){be(c);var E=l.valueDec?1+l.valueDec:0,O="9".repeat(Math.max.apply(null,[String(parseInt(p)).length+E].concat(l.majorTicks.map(function(Pe){return String(parseInt(Pe,10)).length+E})))),P=l.valueText||M(p,l),V=x/200,Q=x/100,$=.4*Q,le=1.2*Q;c.font=ee(l,"Value",V),Oe(c,l,$,le);var ge=c.measureText(l.valueText?P:"-"+M(Number(O),l)).width;be(c);var ve=parseFloat(l.fontValueSize)*V+$+le,Ge=Q*parseFloat(l.valueBoxStroke),Ae=2*x-2*Ge,Re=ge+10*Q,Ne=1.1*ve+$+le,Fe=Q*l.valueBoxBorderRadius,ke=(parseFloat(l.valueBoxWidth)||0)/100*Ae;ke>Re&&(Re=ke),Re>Ae&&(Re=Ae);var De=y-Re/2,xe=S-Ne/2,fe=S-5.75*Q;if(c.beginPath(),Fe?C(c,De,xe,Re,Ne,Fe):c.rect(De,xe,Re,Ne),Ge){var Ce=c.createRadialGradient(y,fe,10*Q,y,fe,20*Q);Ce.addColorStop(0,l.colorValueBoxRect),Ce.addColorStop(1,l.colorValueBoxRectEnd),c.strokeStyle=Ce,c.lineWidth=Ge,c.stroke()}l.colorValueBoxShadow&&(c.shadowBlur=1.2*Q,c.shadowColor=l.colorValueBoxShadow),l.colorValueBoxBackground&&(c.fillStyle=l.colorValueBoxBackground,c.fill()),c.closePath(),c.restore(),Oe(c,l,$,le),c.fillStyle=l.colorValueText,c.textAlign="center",c.textBaseline="alphabetic",c.fillText(P,De+Re/2,S+Ne/2-ve/3),c.restore()}}function Ye(c){var l=c.value,p=c.minValue,y=c.maxValue,S=.01*(y-p);return{normal:l<p?p:l>y?y:l,indented:l<p?p-S:l>y?y+S:l}}function Ee(c,l,p,y,S){p.beginPath(),p.arc(0,0,li(c),0,2*ma,!0),p.lineWidth=l,p.strokeStyle=S?oe.linearGradient(p,y,S,c):y,p.stroke(),p.closePath()}function Le(c,l){var p=si.pixelRatio;return c.maxRadius||(c.maxRadius=c.max-l.borderShadowWidth-l.borderOuterWidth*p-l.borderMiddleWidth*p-l.borderInnerWidth*p+(l.borderOuterWidth?.5:0)+(l.borderMiddleWidth?.5:0)+(l.borderInnerWidth?.5:0)),c.maxRadius}function pe(c,l){function p($,le,ge,ve,Ge,Ae){return le&&(!Ae&&l.borderShadowWidth&&(ge.save(),ge.shadowBlur=l.borderShadowWidth,ge.shadowColor=l.colorBorderShadow),Ee($,le*y,ge,ve,Ge),!Ae&&l.borderShadowWidth&&(Ae=!0,ge.restore())),Ae}var y=si.pixelRatio,S=l.borderShadowWidth*y,x=c.max-S-l.borderOuterWidth*y/2,E=x-l.borderOuterWidth*y/2-l.borderMiddleWidth*y/2+.5,O=E-l.borderMiddleWidth*y/2-l.borderInnerWidth*y/2+.5,P=Le(c,l),V=void 0,Q=!1;c.save(),Q=p(x,l.borderOuterWidth,c,l.colorBorderOuter,l.colorBorderOuterEnd,Q),Q=p(E,l.borderMiddleWidth,c,l.colorBorderMiddle,l.colorBorderMiddleEnd,Q),Q=p(O,l.borderInnerWidth,c,l.colorBorderInner,l.colorBorderInnerEnd,Q),!Q&&l.borderShadowWidth&&(c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),c.beginPath(),c.arc(0,0,li(P),0,2*ma,!0),l.colorPlateEnd?(V=c.createRadialGradient(0,0,P/2,0,0,P),V.addColorStop(0,l.colorPlate),V.addColorStop(1,l.colorPlateEnd)):V=l.colorPlate,c.fillStyle=V,c.fill(),c.closePath(),c.restore()}function He(c,l){if(l.highlights!=="false"&&l.highlights.length&&l.highlightsWidth!==0){var p=c.max*(parseFloat(l.highlightsWidth)||0)/100,y=li(tt(c,l)-p/2),S=l.highlights.length,x=(l.maxValue-l.minValue)/l.ticksAngle;c.save();for(var E=0;E<S;E++){var O=l.highlights[E];c.lineWidth=p,c.lineCap=l.highlightsLineCap,c.strokeStyle=O.color,c.beginPath(),c.rotate(Ho),c.arc(0,0,y,oe.radians(l.startAngle+(O.from-l.minValue)/x),oe.radians(l.startAngle+(O.to-l.minValue)/x),!1),c.stroke(),c.closePath(),c.restore(),c.save()}c.restore()}}function bt(c,l){var p=tt(c,l),y=void 0,S=void 0,x=void 0,E=0,O=Math.abs(l.minorTicks)||0,P=l.ticksAngle/(l.maxValue-l.minValue);l.exactTicks?(S=l.maxValue-l.minValue,y=O?S/O:0,E=(Ai.mod(l.majorTicks[0],O)||0)*P):y=O*(l.majorTicks.length-1),c.lineWidth=si.pixelRatio,c.strokeStyle=l.colorMinorTicks||l.colorStrokeTicks,c.save();for(var V=0;V<y;++V)(x=l.startAngle+E+V*(l.ticksAngle/y))<=l.ticksAngle+l.startAngle&&(c.rotate(oe.radians(x)),c.beginPath(),c.moveTo(0,p),c.lineTo(0,p-.075*c.max),rn(c));c.restore()}function tt(c,l){var p=c.max/100;return Le(c,l)-5*p-(l.barWidth?2*(parseFloat(l.barStrokeWidth)||0)+((parseFloat(l.barWidth)||0)+5)*p:0)}function ot(c,l){oe.prepareTicks(l);var p=li(tt(c,l)),y=void 0,S=l.majorTicks.length,x=si.pixelRatio;c.lineWidth=2*x,y=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(S).fill(l.colorStrokeTicks||l.colorMajorTicks);for(var E=0;E<S;++E)c.save(),c.strokeStyle=y[E],c.rotate(oe.radians(vt(l,l.exactTicks?l.majorTicks[E]:E,S))),c.beginPath(),c.moveTo(0,p),c.lineTo(0,p-.15*c.max),c.stroke(),c.closePath(),c.restore();l.strokeTicks&&(c.save(),c.strokeStyle=l.colorStrokeTicks||y[0],c.rotate(Ho),c.beginPath(),c.arc(0,0,p,oe.radians(l.startAngle),oe.radians(l.startAngle+l.ticksAngle),!1),c.stroke(),c.closePath(),c.restore())}function vt(c,l,p){if(c.exactTicks){var y=c.ticksAngle/(c.maxValue-c.minValue);return c.startAngle+y*(l-c.minValue)}return c.startAngle+l*(c.ticksAngle/(p-1))}function rn(c){c.stroke(),c.restore(),c.closePath(),c.save()}function Ta(c,l){var p=tt(c,l)-.15*c.max,y={},S=0,x=l.majorTicks.length,E=l.animationTarget!=="needle",O=l.colorNumbers instanceof Array?l.colorNumbers:new Array(x).fill(l.colorNumbers),P=E?-(l.value-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle:0;for(E&&(c.save(),c.rotate(-oe.radians(P))),c.font=oe.font(l,"Numbers",c.max/200),c.lineWidth=0,c.textAlign="center",c.textBaseline="middle";S<x;++S){var V=P+vt(l,l.exactTicks?l.majorTicks[S]:S,x),Q=c.measureText(l.majorTicks[S]).width,$=l.fontNumbersSize,le=Math.sqrt(Q*Q+$*$)/2,ge=oe.radialPoint(p-le-l.numbersMargin/100*c.max,oe.radians(V));V===360&&(V=0),y[V]||(y[V]=!0,c.fillStyle=O[S],c.fillText(l.majorTicks[S],ge.x,ge.y))}E&&c.restore()}function Rr(c,l){l.title&&(c.save(),c.font=oe.font(l,"Title",c.max/200),c.fillStyle=l.colorTitle,c.textAlign="center",c.fillText(l.title,0,-c.max/4.25,.8*c.max),c.restore())}function Nr(c,l){l.units&&(c.save(),c.font=oe.font(l,"Units",c.max/200),c.fillStyle=l.colorUnits,c.textAlign="center",c.fillText(oe.formatContext(l,l.units),0,c.max/3.25,.8*c.max),c.restore())}function Vr(c,l){if(l.needle){var p=l.animationTarget!=="needle",y=l.ticksAngle<360?oe.normalizedValue(l).indented:l.value,S=p?l.startAngle:l.startAngle+(y-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle;l.barStartPosition==="right"&&(S=l.startAngle+l.ticksAngle-(y-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle);var x=Le(c,l),E=li(x/100*l.needleCircleSize),O=li(x/100*l.needleCircleSize*.75),P=li(x/100*l.needleEnd),V=li(l.needleStart?x/100*l.needleStart:0),Q=x/100*l.needleWidth,$=x/100*l.needleWidth/2,le=si.pixelRatio;c.save(),oe.drawNeedleShadow(c,l),c.rotate(oe.radians(S)),c.fillStyle=oe.linearGradient(c,l.colorNeedle,l.colorNeedleEnd,P-V),l.needleType==="arrow"?(c.beginPath(),c.moveTo(-$,-V),c.lineTo(-Q,0),c.lineTo(-1*le,P),c.lineTo(le,P),c.lineTo(Q,0),c.lineTo($,-V),c.closePath(),c.fill(),c.beginPath(),c.lineTo(-.5*le,P),c.lineTo(-1*le,P),c.lineTo(-Q,0),c.lineTo(-$,-V),c.lineTo($/2*le-2*le,-V),c.closePath(),c.fillStyle=l.colorNeedleShadowUp,c.fill()):(c.beginPath(),c.moveTo(-$,P),c.lineTo(-$,V),c.lineTo($,V),c.lineTo($,P),c.closePath(),c.fill()),c.restore(),l.needleCircleSize&&(c.save(),oe.drawNeedleShadow(c,l),l.needleCircleOuter&&(c.beginPath(),c.arc(0,0,E,0,2*ma,!0),c.fillStyle=oe.linearGradient(c,l.colorNeedleCircleOuter,l.colorNeedleCircleOuterEnd,E),c.fill(),c.closePath()),l.needleCircleInner&&(c.beginPath(),c.arc(0,0,O,0,2*ma,!0),c.fillStyle=oe.linearGradient(c,l.colorNeedleCircleInner,l.colorNeedleCircleInnerEnd,O),c.fill(),c.closePath()),c.restore())}}function Wr(c,l,p){oe.drawValueBox(c,l,p,0,c.max-.33*c.max,c.max)}function Jc(c){var l=c.startAngle,p=c.startAngle+c.ticksAngle,y=l,S=l+(oe.normalizedValue(c).normal-c.minValue)/(c.maxValue-c.minValue)*c.ticksAngle;if(c.barStartPosition==="middle"){var x=.5*(c.minValue+c.maxValue);c.value<x?(y=180-(x-oe.normalizedValue(c).normal)/(c.maxValue-c.minValue)*c.ticksAngle,S=180):(y=180,S=180+(oe.normalizedValue(c).normal-x)/(c.maxValue-c.minValue)*c.ticksAngle)}else c.barStartPosition==="right"&&(y=p-S+l,S=p);return{startAngle:y,endAngle:S}}function Lr(c,l){var p=c.max/100,y=Le(c,l)-5*p,S=parseFloat(l.barStrokeWidth+"")||0,x=(parseFloat(l.barWidth+"")||0)*p,E=y-2*S-x,O=(y-E)/2,P=E+O,V=S/P,Q=l.startAngle,$=l.startAngle+l.ticksAngle;if(c.save(),c.rotate(Ho),S&&(c.beginPath(),c.arc(0,0,P,oe.radians(Q)-V,oe.radians($)+V,!1),c.strokeStyle=l.colorBarStroke,c.lineWidth=2*O,c.stroke(),c.closePath()),x&&(c.beginPath(),c.arc(0,0,P,oe.radians(Q),oe.radians($),!1),c.strokeStyle=l.colorBar,c.lineWidth=x,c.stroke(),c.closePath(),l.barShadow&&(c.save(),c.beginPath(),c.arc(0,0,y,oe.radians(Q),oe.radians($),!1),c.clip(),c.beginPath(),c.strokeStyle=l.colorBar,c.lineWidth=1,c.shadowBlur=l.barShadow,c.shadowColor=l.colorBarShadow,c.shadowOffsetX=0,c.shadowOffsetY=0,c.arc(0,0,y,oe.radians(l.startAngle),oe.radians(l.startAngle+l.ticksAngle),!1),c.stroke(),c.closePath(),c.restore()),l.barProgress)){var le=Jc(l),ge=le.startAngle,ve=le.endAngle;c.beginPath(),c.arc(0,0,P,oe.radians(ge),oe.radians(ve),!1),c.strokeStyle=l.colorBarProgress,c.lineWidth=x,c.stroke(),c.closePath()}c.restore()}function Gr(c){return c.options.animatedValue?c.options.value:c.value}function em(c,l,p,y,S,x,E,O){c.beginPath(),c.fillStyle=O?oe.linearGradient(c,E,O,S>x?S:x,x>S,S>x?p:y):E,l>0?oe.roundRect(c,p,y,S,x,l):c.rect(p,y,S,x),c.fill(),c.closePath()}function tm(c,l,p,y,S,x,E,O,P){c.beginPath(),c.lineWidth=l,c.strokeStyle=P?oe.linearGradient(c,O,P,E,!0,S):O,p>0?oe.roundRect(c,y,S,x,E,p):c.rect(y,S,x,E),c.stroke(),c.closePath()}function im(c,l,p,y,S,x){function E(Pe,Ue,Qe,Rt){return Pe&&(!Rt&&l.borderShadowWidth&&(c.save(),c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),tm(c,Pe*O,P,p+Pe*O/2-fe,y+Pe*O/2-fe,V,ge,Ue,Qe),fe+=.5*O,!Rt&&l.borderShadowWidth&&(Rt=!0,c.restore())),Rt}var O=si.pixelRatio,P=l.borderRadius*O,V=S-l.borderShadowWidth-l.borderOuterWidth*O,Q=V-l.borderOuterWidth*O-l.borderMiddleWidth*O,$=Q-l.borderMiddleWidth*O-l.borderInnerWidth*O,le=$-l.borderInnerWidth*O,ge=x-l.borderShadowWidth-l.borderOuterWidth*O,ve=ge-l.borderOuterWidth*O-l.borderMiddleWidth*O,Ge=ve-l.borderMiddleWidth*O-l.borderInnerWidth*O,Ae=Ge-l.borderInnerWidth*O,Re=p-(Q-V)/2,Ne=Re-($-Q)/2,Fe=Ne-(le-$)/2,ke=y-(ve-ge)/2,De=ke-(Ge-ve)/2,xe=De-(Ae-Ge)/2,fe=0,Ce=!1;return c.save(),Ce=E(l.borderOuterWidth,l.colorBorderOuter,l.colorBorderOuterEnd,Ce),Ce=E(l.borderMiddleWidth,l.colorBorderMiddle,l.colorBorderMiddleEnd,Ce),Ce=E(l.borderInnerWidth,l.colorBorderInner,l.colorBorderInnerEnd,Ce),!Ce&&l.borderShadowWidth&&(c.shadowBlur=l.borderShadowWidth,c.shadowColor=l.colorBorderShadow),em(c,P,Fe,xe,le+2*fe,Ae+2*fe,l.colorPlate,l.colorPlateEnd),c.restore(),[Fe,xe,le,Ae]}function nm(c,l,p,y,S,x){var E=si.pixelRatio,O=x>=S,P=O?.85*S:x,V=O?x:S;p=O?we(p+(S-P)/2):p;var Q=!!l.title,$=!!l.units,le=!!l.valueBox,ge=void 0,ve=void 0,Ge=void 0;O?(ve=we(.05*V),ge=we(.075*V),Ge=we(.11*V),Q&&(V-=ge,y+=ge),$&&(V-=ve),le&&(V-=Ge)):(ve=ge=we(.15*P),Q&&(P-=ge,y+=ge),$&&(P-=ve));var Ae=2*l.barStrokeWidth,Re=l.barBeginCircle?we(P*l.barBeginCircle/200-Ae/2):0,Ne=we(P*l.barWidth/100-Ae),Fe=we(V*l.barLength/100-Ae),ke=we((V-Fe)/2),De=we(p+(O?P/2:ke+Re)),xe=we(y+(O?V-ke-Re+Ae/2:P/2)),fe=!O||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*P,Ce=O||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*P;return c.barDimensions={isVertical:O,width:P,length:V,barWidth:Ne,barLength:Fe,strokeWidth:Ae,barMargin:ke,radius:Re,pixelRatio:E,barOffset:null,titleMargin:Q?ge:0,unitsMargin:$?ve:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:p+fe,Y:y+Ce,x0:De+fe,y0:xe+Ce,baseX:p,baseY:y,ticksPadding:l.ticksPadding/100},c.barDimensions}function Fr(c,l,p,y,S,x,E){var O=nm(c,l,y,S,x,E),P=O.isVertical,V=O.width,Q=O.barWidth,$=O.barLength,le=O.strokeWidth,ge=O.barMargin,ve=O.radius,Ge=O.x0,Ae=O.y0,Re=O.X,Ne=O.Y,Fe=$;c.save(),c.beginPath();var ke=null;if(l.barBeginCircle){var De=oe.radians(P?270:0),xe=Math.asin(Q/2/ve),fe=Math.cos(xe),Ce=Math.sin(xe),Pe=Ge+(P?ve*Ce:ve*fe-le/2),Ue=P?Ae-ve*fe:Ae+ve*Ce,Qe=li(P?Ue-Ae:Pe-Ge);ke=we(Qe+ve);var Rt=P?we(Ge-ve*Ce):Pe,jt=P?Ue:we(Ae-ve*Ce);p==="progress"&&($=ke+($-ke)*(oe.normalizedValue(l).normal-l.minValue)/(l.maxValue-l.minValue));var ua=we(Pe+$-ke+le/2),ln=we(Ue-$+ke-le/2);c.arc(Ge,Ae,ve,De+xe,De-xe),P?(c.moveTo(Pe,jt),c.lineTo(Pe,ln),c.lineTo(Rt,ln),c.lineTo(Rt,jt)):(c.moveTo(Pe,jt),c.lineTo(ua,jt),c.lineTo(ua,Ue),c.lineTo(Pe,Ue))}else{var Qr=we(P?Re+(V-Q)/2:Re+ge),$r=we(P?Ne+$+ge:Ne+(V-Q)/2);p==="progress"&&($*=(l.value-l.minValue)/(l.maxValue-l.minValue)),P?c.rect(Qr,$r,Q,-$):c.rect(Qr,$r,$,Q)}p!=="progress"&&l.barStrokeWidth&&(c.lineWidth=le,c.strokeStyle=l.colorBarStroke,c.stroke()),p!=="progress"&&l.colorBar?(c.fillStyle=l.colorBarEnd?oe.linearGradient(c,l.colorBar,l.colorBarEnd,$,P,P?Ne:Re):l.colorBar,c.fill()):p==="progress"&&l.colorBarProgress&&(c.fillStyle=l.colorBarProgressEnd?oe.linearGradient(c,l.colorBarProgress,l.colorBarProgressEnd,Fe,P,P?Ne:Re):l.colorBarProgress,c.fill()),c.closePath(),c.restore(),l.barBeginCircle&&(c.barDimensions.radius+=le),c.barDimensions.barOffset=ke,c.barDimensions.barWidth+=le,c.barDimensions.barLength+=le}function am(c,l,p,y,S,x){Fr(c,l,"",p,y,S,x)}function Br(c,l){return l.needleSide!==c||l.tickSide!==c||l.numberSide!==c}function om(c,l,p,y,S,x){l.barProgress&&Fr(c,l,"progress",p,y,S,x)}function rm(c,l){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.barWidth,O=p.barOffset,P=p.barMargin,V=p.X,Q=p.Y,$=p.ticksLength,le=p.ticksPadding,ge=S*(parseFloat(l.highlightsWidth)||0)/100;if(l.highlights&&ge){var ve=l.tickSide!=="right",Ge=l.tickSide!=="left",Ae=0,Re=l.highlights.length,Ne=(S-E)/2,Fe=l.maxValue-l.minValue,ke=we(y?V+Ne:V+P+O),De=ge,xe=y?Q+x-P-O:Q+Ne,fe=we((l.ticksWidth/100+le)*S)+(ge-l.ticksWidth/100*S),Ce=we(E+le*S);for(c.save();Ae<Re;Ae++){var Pe=l.highlights[Ae],Ue=$*li(l.minValue-Pe.from)/Fe,Qe=$*li((Pe.to-Pe.from)/Fe);c.beginPath(),c.fillStyle=Pe.color,y?(ve&&c.rect(ke-fe,xe-Ue,De,-Qe),Ge&&c.rect(ke+Ce,xe-Ue,De,-Qe)):(ve&&c.rect(ke+Ue,xe-fe,Qe,De),Ge&&c.rect(ke+Ue,xe+Ce,Qe,De)),c.fill(),c.closePath()}c.restore()}}function Ea(c,l,p,y,S){c.beginPath(),c.moveTo(l,p),c.lineTo(y,S),c.stroke(),c.closePath()}function Ur(c,l,p,y,S,x,E,O,P){var V=c.barDimensions,Q=V.isVertical,$=V.length,le=V.barWidth,ge=V.barOffset,ve=V.barMargin,Ge=V.pixelRatio,Ae=V.width,Re=V.X,Ne=V.Y,Fe=V.ticksLength,ke=V.ticksPadding,De=(Ae-le)/2,xe=void 0,fe=void 0,Ce=0,Pe=p.length,Ue=void 0,Qe=P*Ae,Rt=De-ke*Ae,jt=De+le+Qe+ke*Ae,ua=l instanceof Array?l:new Array(p.length).fill(l);c.save(),c.lineWidth=O*Ge;for(var ln=Fe/(S-y);Ce<Pe;Ce++)Ue=p[Ce],c.strokeStyle=ua[Ce],Q?(fe=Ne+$-ve-ge+(y-Ue)*ln,x&&(xe=Re+Rt,Ea(c,xe,fe,we(xe-Qe),fe)),E&&(xe=Re+jt,Ea(c,xe,fe,we(xe-Qe),fe))):(xe=Re+ve+ge-(y-Ue)*ln,x&&(fe=Ne+Rt,Ea(c,xe,fe,xe,we(fe-Qe))),E&&(fe=Ne+jt,Ea(c,xe,we(fe),xe,fe-Qe)));c.restore()}function sm(c,l){var p=oe.prepareTicks(l),y=zr(p,2),S=y[0],x=y[1],E=2,O=(l.maxValue-l.minValue)/(l.majorTicks.length-1),P=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(l.majorTicks.length).fill(l.colorStrokeTicks||l.colorMajorTicks);if(Ur(c,P,l.exactTicks?l.majorTicks:l.majorTicks.map(function(Qe,Rt){return l.minValue+O*Rt}),l.minValue,l.maxValue,S,x,E,l.ticksWidth/100),l.strokeTicks){var V=c.barDimensions,Q=V.isVertical,$=V.length,le=V.width,ge=V.barWidth,ve=V.barMargin,Ge=V.barOffset,Ae=V.X,Re=V.Y,Ne=V.ticksLength,Fe=V.pixelRatio,ke=V.ticksPadding,De=(le-ge)/2+ge+ke*le,xe=(le-ge)/2-ke*le,fe=void 0,Ce=void 0,Pe=void 0,Ue=void 0;c.strokeStyle=l.colorStrokeTicks||P[0],E*=Fe,Q?(Ce=Re+$-ve-Ge+E/2,Ue=Ce-Ne-E,S&&(Pe=fe=we(Ae+xe),Da(c,fe,Ce,Pe,Ue)),x&&(Pe=fe=we(Ae+De),Da(c,fe,Ce,Pe,Ue))):(fe=Ae+ve+Ge-E/2,Pe=fe+Ne+E,S&&(Ue=Ce=we(Re+xe),Da(c,fe,Ce,Pe,Ue)),x&&(Ue=Ce=we(Re+De),Da(c,fe,Ce,Pe,Ue)))}}function Da(c,l,p,y,S){c.beginPath(),c.moveTo(l,p),c.lineTo(y,S),c.stroke(),c.closePath()}function lm(c,l){var p=oe.prepareTicks(l),y=zr(p,2),S=y[0],x=y[1],E=[],O=l.minValue,P=Math.abs(l.minorTicks)||0,V=P?(l.maxValue-l.minValue)/(P*(l.majorTicks.length-1)):0;if(P)if(l.exactTicks)for(var Q=Ai.mod(l.majorTicks[0],P)||0;O<l.maxValue;O+=P)Q+O<l.maxValue&&E.push(Q+O);else for(;O<l.maxValue;O+=V)E.push(O);Ur(c,l.colorMinorTicks||l.colorStrokeTicks,E,l.minValue,l.maxValue,S,x,1,l.ticksWidthMinor/100)}function dm(c,l){var p=c.barDimensions,y=p.isVertical,S=p.length,x=p.width,E=p.barWidth,O=p.barMargin,P=p.barOffset,V=p.X,Q=p.Y,$=p.ticksLength,le=p.ticksPadding,ge=l.maxValue-l.minValue,ve=ge/(l.majorTicks.length-1),Ge=l.exactTicks?l.majorTicks:l.majorTicks.map(function(ua,ln){return l.minValue+ve*ln}),Ae=Ge.length,Re=l.numberSide!=="right",Ne=l.numberSide!=="left",Fe=l.fontNumbersSize*x/200,ke=0,De=(l.ticksWidth/100+2*le)*x,xe=(x-E)/2-De,fe=(x-E)/2+E+De,Ce=void 0,Pe=void 0,Ue=void 0,Qe=void 0,Rt=l.colorNumbers instanceof Array?l.colorNumbers:new Array(Ae).fill(l.colorNumbers),jt=l.numbersMargin/100*x;for(c.font=oe.font(l,"Numbers",x/200),c.lineWidth=0,c.textAlign="center";ke<Ae;ke++)c.fillStyle=Rt[ke],Qe=l.majorTicks[ke],Ue=l.exactTicks?$*((Ge[ke]-l.minValue)/ge):ke*$/(Ae-1),y?(Pe=Q+S-O-P-Ue+Fe/3,Re&&(c.textAlign="right",c.fillText(Qe,V+xe-jt,Pe)),Ne&&(c.textAlign="left",c.fillText(Qe,V+fe+jt,Pe))):(c.measureText(Qe).width,Ce=V+O+P+Ue,Re&&c.fillText(Qe,Ce,Q+xe-jt),Ne&&c.fillText(Qe,Ce,Q+fe+Fe+jt))}function cm(c,l){if(l.title){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.baseX,O=p.baseY,P=p.titleMargin,V=l.fontTitleSize*S/200,Q=we(E+(y?S:x)/2),$=we(O+P/2-(y?V:V/2)-.025*(y?x:S));c.save(),c.textAlign="center",c.fillStyle=l.colorTitle,c.font=oe.font(l,"Title",S/200),c.lineWidth=0,c.fillText(l.title,Q,$,y?S:x),c.restore()}}function mm(c,l){if(l.units){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.baseX,O=p.baseY,P=p.unitsMargin,V=l.fontUnitsSize*S/200,Q=we(E+(y?S:x)/2),$=we(O+(y?x:S)+P/2-V/2);c.save(),c.textAlign="center",c.fillStyle=l.colorUnits,c.font=oe.font(l,"Units",S/200),c.lineWidth=0,c.fillText(oe.formatContext(l,l.units),Q,$,y?S:x),c.restore()}}function um(c,l){if(l.needle){var p=c.barDimensions,y=p.isVertical,S=p.width,x=p.length,E=p.barWidth,O=p.barOffset,P=p.barMargin,V=p.ticksLength,Q=p.X,$=p.Y,le=p.ticksPadding,ge=l.needleSide!=="right",ve=l.needleSide!=="left",Ge=V*(oe.normalizedValue(l).indented-l.minValue)/(l.maxValue-l.minValue),Ae=(l.ticksWidth/100+le)*S,Re=E/2+Ae,Ne=Re*(l.needleEnd/100),Fe=void 0,ke=void 0,De=void 0,xe=void 0,fe=l.needleType.toLowerCase()==="arrow"?pm:hm,Ce=(S-E)/2,Pe=Re*(l.needleStart/100),Ue=Ce-Ae-Pe,Qe=Ce+E+Ae+Pe;c.save(),oe.drawNeedleShadow(c,l),y?(De=we($+x-P-O-Ge),ge&&(Fe=we(Q+Ue),ke=Fe+Ne,fe(c,l,Fe,De,ke,De,Ne)),ve&&(Fe=we(Q+Qe),ke=Fe-Ne,fe(c,l,Fe,De,ke,De,Ne,!0))):(Fe=we(Q+P+O+Ge),ge&&(De=we($+Ue),xe=De+Ne,fe(c,l,Fe,De,Fe,xe,Ne)),ve&&(De=we($+Qe),xe=De-Ne,fe(c,l,Fe,De,Fe,xe,Ne,!0))),c.restore()}}function qr(c,l,p,y){return l.colorNeedleEnd?oe.linearGradient(c,y?l.colorNeedleEnd:l.colorNeedle,y?l.colorNeedle:l.colorNeedleEnd,p,!c.barDimensions.isVertical):l.colorNeedle}function hm(c,l,p,y,S,x,E,O){c.lineWidth=l.needleWidth,c.strokeStyle=qr(c,l,E,O),c.beginPath(),c.moveTo(p,y),c.lineTo(S,x),c.stroke(),c.closePath()}function pm(c,l,p,y,S,x,E,O){var P=we(.4*E),V=E-P,Q=p===S,$=l.needleWidth/2;c.fillStyle=qr(c,l,E,O),c.beginPath(),Q?(y>x&&(V*=-1),c.moveTo(p-$,y),c.lineTo(p+$,y),c.lineTo(p+$,y+V),c.lineTo(p,x),c.lineTo(p-$,y+V),c.lineTo(p-$,y)):(p>S&&(V*=-1),c.moveTo(p,y-$),c.lineTo(p,y+$),c.lineTo(p+V,y+$),c.lineTo(S,y),c.lineTo(p+V,y-$),c.lineTo(p,y-$)),c.fill(),c.closePath()}function gm(c,l,p,y,S,x,E){var O=(parseFloat(l.fontValueSize)||0)*x/200,P=(.11*E-O)/2;c.barDimensions.isVertical&&oe.drawValueBox(c,l,p,y+x/2,S+E-O-P,x)}var zr=(function(){function c(l,p){var y=[],S=!0,x=!1,E=void 0;try{for(var O,P=l[Symbol.iterator]();!(S=(O=P.next()).done)&&(y.push(O.value),!p||y.length!==p);S=!0);}catch(V){x=!0,E=V}finally{try{!S&&P.return&&P.return()}finally{if(x)throw E}}return y}return function(l,p){if(Array.isArray(l))return l;if(Symbol.iterator in Object(l))return c(l,p);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),Bo=function c(l,p,y){l===null&&(l=Function.prototype);var S=Object.getOwnPropertyDescriptor(l,p);if(S===void 0){var x=Object.getPrototypeOf(l);return x===null?void 0:c(x,p,y)}if("value"in S)return S.value;var E=S.get;if(E!==void 0)return E.call(y)},fm=function c(l,p,y,S){var x=Object.getOwnPropertyDescriptor(l,p);if(x===void 0){var E=Object.getPrototypeOf(l);E!==null&&c(E,p,y,S)}else if("value"in x&&x.writable)x.value=y;else{var O=x.set;O!==void 0&&O.call(S,y)}return y},sn=(function(){function c(l,p){for(var y=0;y<p.length;y++){var S=p[y];S.enumerable=S.enumerable||!1,S.configurable=!0,"value"in S&&(S.writable=!0),Object.defineProperty(l,S.key,S)}}return function(l,p,y){return p&&c(l.prototype,p),y&&c(l,y),l}})(),Pa=null,bm=(function(){function c(){i(this,c),this._events={},this.addListener=this.on,this.removeListener=this.off}return sn(c,[{key:"emit",value:function(l){if(this._events[l]){for(var p=0,y=this._events[l].length,S=arguments.length,x=Array(S>1?S-1:0),E=1;E<S;E++)x[E-1]=arguments[E];for(;p<y;p++)this._events[l][p]&&this._events[l][p].apply(this,x)}}},{key:"once",value:function(l){for(var p=arguments.length,y=Array(p>1?p-1:0),S=1;S<p;S++)y[S-1]=arguments[S];for(var x=0,E=y.length,O=this;x<E;x++)(function(){var P=y[x],V=function Q(){O.off(l,Q),P.apply(O,arguments)};y[x]=V})();this.on.apply(this,[l].concat(y))}},{key:"on",value:function(l){this._events[l]||(this._events[l]=[]);for(var p=0,y=arguments.length<=1?0:arguments.length-1;p<y;p++)this._events[l].push(arguments.length<=p+1?void 0:arguments[p+1])}},{key:"off",value:function(l){if(this._events[l])for(var p=0,y=arguments.length<=1?0:arguments.length-1;p<y;p++)for(var S=arguments.length<=p+1?void 0:arguments[p+1],x=void 0;~(x=this._events[l].indexOf(S));)this._events[l].splice(x,1)}},{key:"removeAllListeners",value:function(l){delete this._events[l]}},{key:"listeners",get:function(){return this._events}}]),c})(),Hr=a("requestAnimationFrame")||function(c){return setTimeout(function(){return c(new Date().getTime())},1e3/60)},da={linear:function(c){return c},quad:function(c){return Math.pow(c,2)},dequad:function(c){return 1-da.quad(1-c)},quint:function(c){return Math.pow(c,5)},dequint:function(c){return 1-Math.pow(1-c,5)},cycle:function(c){return 1-Math.sin(Math.acos(c))},decycle:function(c){return Math.sin(Math.acos(1-c))},bounce:function(c){return 1-da.debounce(1-c)},debounce:function(c){for(var l=0,p=1;;l+=p,p/=2)if(c>=(7-4*l)/11)return-Math.pow((11-6*l-11*c)/4,2)+Math.pow(p,2)},elastic:function(c){return 1-da.delastic(1-c)},delastic:function(c){return Math.pow(2,10*(c-1))*Math.cos(20*Math.PI*1.5/3*c)}},Uo=(function(){function c(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},S=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,c),this.duration=p,this.rule=l,this.draw=y,this.end=S,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",y);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",S)}return sn(c,[{key:"animate",value:function(l,p){var y=this;this.frame&&this.cancel();var S=window.performance&&window.performance.now?window.performance.now():a("animationStartTime")||Date.now();l=l||this.draw,p=p||this.end,this.draw=l,this.end=p,this.frame=Hr(function(x){return r(x,l,S,da[y.rule]||y.rule,y.duration,p,y)})}},{key:"cancel",value:function(){this.frame&&((a("cancelAnimationFrame")||function(l){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),c})();Uo.rules=da;var wn=(function(){function c(l,p,y){i(this,c),this.options=l,this.element=p.toLowerCase(),this.type=c.toDashed(y),this.Type=n[y],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||c.domReady(this.traverse.bind(this))}return sn(c,[{key:"isValidNode",value:function(l){return!(!l.tagName||l.tagName.toLowerCase()!==this.element||l.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var l=document.getElementsByTagName(this.element),p=0,y=l.length;p<y;p++)this.process(l[p]);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(l){for(var p=0,y=l.length;p<y;p++){var S=l[p];if(S.type==="attributes"&&S.attributeName==="data-type"&&this.isValidNode(S.target)&&S.oldValue!==this.type)setTimeout(this.process.bind(this,S.target));else if(S.addedNodes&&S.addedNodes.length)for(var x=0,E=S.addedNodes.length;x<E;x++)setTimeout(this.process.bind(this,S.addedNodes[x]))}}},{key:"process",value:function(l){var p=this;if(!this.isValidNode(l))return null;var y=void 0,S=JSON.parse(JSON.stringify(this.options)),x=null;for(y in S)if(S.hasOwnProperty(y)){var E=c.toAttributeName(y),O=c.parse(l.getAttribute(E));O!=null&&(S[y]=O)}return S.renderTo=l,x=new this.Type(S),x.draw&&x.draw(),this.isObservable&&(x.observer=new MutationObserver(function(P){P.forEach(function(V){if(V.type==="attributes"){var Q=V.attributeName.toLowerCase(),$=l.getAttribute(Q).toLowerCase();if(Q==="data-type"&&$&&$!==p.type)x.observer.disconnect(),delete x.observer,x.destroy&&x.destroy();else if(Q.substr(0,5)==="data-"){var le=Q.substr(5).split("-").map(function(ve,Ge){return Ge?ve.charAt(0).toUpperCase()+ve.substr(1):ve}).join(""),ge={};ge[le]=c.parse(l.getAttribute(V.attributeName)),le==="value"?x&&(x.value=ge[le]):x.update&&x.update(ge)}}})}),x.observer.observe(l,{attributes:!0})),x}}],[{key:"parse",value:function(l){if(l==="true")return!0;if(l==="false")return!1;if(l!=="undefined"){if(l==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(l))return l.split(",");try{return JSON.parse(l)}catch{}return l}}},{key:"toDashed",value:function(l){for(var p=l.split(/(?=[A-Z])/),y=1,S=p.length,x=p[0].toLowerCase();y<S;y++)x+="-"+p[y].toLowerCase();return x}},{key:"toCamelCase",value:function(l){for(var p=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],y=l.split(/-/),S=0,x=y.length,E="";S<x;S++)E+=S||p?y[S][0].toUpperCase()+y[S].substr(1).toLowerCase():y[S].toLowerCase();return E}},{key:"toAttributeName",value:function(l){return"data-"+c.toDashed(l)}},{key:"domReady",value:function(l){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return l();window.addEventListener?window.addEventListener("DOMContentLoaded",l,!1):window.attachEvent&&window.attachEvent("onload",l)}}]),c})(),si=(function(){function c(l,p,y){i(this,c),c.collection.push(this),this.width=p||0,this.height=y||0,this.element=l,this.init()}return sn(c,[{key:"init",value:function(){var l=c.pixelRatio;this.element.width=this.width*l,this.element.height=this.height*l,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 l=c.collection.indexOf(this);~l&&c.collection.splice(l,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 l=c.pixelRatio;return l!==1&&this.contextClone.scale(l,l),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var l=0,p=c.collection.length;l<p;l++)c.collection[l].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),c})();si.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(si.redraw);var qo={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(c){if(typeof c=="string")for(var l=0,p=this.length;l<p;l++){var y=this[l].options.renderTo.tagName?this[l].options.renderTo:document.getElementById(this[l].options.renderTo||"");if(y.getAttribute("id")===c)return this[l]}else if(typeof c=="number")return this[c];return null};var zo="2.2.1",we=Math.round,li=Math.abs,ca=new s;ca.version=zo;var Ai=(function(c){function l(p){i(this,l);var y=e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this)),S=y.constructor.name;if(S==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(ca.push(y),p.listeners&&Object.keys(p.listeners).forEach(function(E){(p.listeners[E]instanceof Array?p.listeners[E]:[p.listeners[E]]).forEach(function(O){y.on(E,O)})}),y.version=zo,y.type=n[S]||l,y.initialized=!1,p.minValue=parseFloat(p.minValue),p.maxValue=parseFloat(p.maxValue),p.value=parseFloat(p.value)||0,p.borders||(p.borderInnerWidth=p.borderMiddleWidth=p.borderOuterWidth=0),!p.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var x=p.renderTo.tagName?p.renderTo:document.getElementById(p.renderTo);if(!(x instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return p.width=parseFloat(p.width)||0,p.height=parseFloat(p.height)||0,p.width&&p.height||(p.width||(p.width=x.parentNode?x.parentNode.offsetWidth:x.offsetWidth),p.height||(p.height=x.parentNode?x.parentNode.offsetHeight:x.offsetHeight)),y.options=p||{},y.options.animateOnInit&&(y._value=y.options.value,y.options.value=y.options.minValue),y.canvas=new si(x,p.width,p.height),y.canvas.onRedraw=y.draw.bind(y),y.animation=new Uo(p.animationRule,p.animationDuration),y}return t(l,c),sn(l,[{key:"update",value:function(p){return Object.assign(this.options,this.type.configure(p||{})),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 p=ca.indexOf(this);~p&&ca.splice(p,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(p){var y=this;p=l.ensureValue(p,this.options.minValue);var S=this.options.value;if(p!==S)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===p))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=p),this.emit("animationStart"),this.animation.animate(function(x){var E=S+(p-S)*x;y.options.animatedValue&&y.emit("value",E,y.value),y.options.value=E,y.draw(),y.emit("animate",x,y.options.value)},function(){y._value!==void 0&&(y.emit("value",y._value,y.value),y.options.value=y._value,delete y._value),y.draw(),y.emit("animationEnd"),y.animation.frame=null})}else this.emit("value",p,this.value),this.options.value=p,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(p){return p}},{key:"initialize",value:function(p,y){return new wn(y,"canvas",p)}},{key:"fromElement",value:function(p){var y=wn.toCamelCase(p.getAttribute("data-type")),S=p.attributes,x=0,E=S.length,O={};if(y){for(/Gauge$/.test(y)||(y+="Gauge");x<E;x++)O[wn.toCamelCase(S[x].name.replace(/^data-/,""),!1)]=wn.parse(S[x].value);new wn(O,p.tagName,y).process(p)}}},{key:"ensureValue",value:function(p){var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return p=parseFloat(p),!isNaN(p)&&isFinite(p)||(p=parseFloat(y)||0),p}},{key:"mod",value:function(p,y){return(p%y+y)%y}},{key:"version",get:function(){return zo}}]),l})(bm);n!==void 0&&(n.BaseGauge=Ai,n.gauges=(window.document||{}).gauges=ca);var Am=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,oe={roundRect:C,padValue:M,formatMajorTickNumber:N,radians:D,radialPoint:j,linearGradient:X,drawNeedleShadow:Z,drawValueBox:Te,verifyError:h,prepareTicks:b,font:ee,normalizedValue:Ye,formatContext:f},ma=Math.PI,Ho=ma/2,jr=Object.assign({},qo,{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"}),vm=(function(c){function l(p){return i(this,l),p=Object.assign({},jr,p||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(p)))}return t(l,c),sn(l,[{key:"draw",value:function(){try{var p=this.canvas,y=[-p.drawX,-p.drawY,p.drawWidth,p.drawHeight],S=y[0],x=y[1],E=y[2],O=y[3],P=this.options;if(P.animationTarget==="needle"){if(!p.elementClone.initialized){var V=p.contextClone;V.clearRect(S,x,E,O),this.emit("beforePlate"),pe(V,P),this.emit("beforeHighlights"),He(V,P),this.emit("beforeMinorTicks"),bt(V,P),this.emit("beforeMajorTicks"),ot(V,P),this.emit("beforeNumbers"),Ta(V,P),this.emit("beforeTitle"),Rr(V,P),this.emit("beforeUnits"),Nr(V,P),p.elementClone.initialized=!0}this.canvas.commit(),p.context.clearRect(S,x,E,O),p.context.drawImage(p.elementClone,S,x,E,O),this.emit("beforeProgressBar"),Lr(p.context,P),this.emit("beforeValueBox"),Wr(p.context,P,Gr(this)),this.emit("beforeNeedle"),Vr(p.context,P)}else{var Q=-oe.radians((P.value-P.minValue)/(P.maxValue-P.minValue)*P.ticksAngle);if(p.context.clearRect(S,x,E,O),this.emit("beforePlate"),pe(p.context,P),p.context.rotate(Q),this.emit("beforeHighlights"),He(p.context,P),this.emit("beforeMinorTicks"),bt(p.context,P),this.emit("beforeMajorTicks"),ot(p.context,P),this.emit("beforeNumbers"),Ta(p.context,P),this.emit("beforeProgressBar"),Lr(p.context,P),p.context.rotate(-Q),!p.elementClone.initialized){var $=p.contextClone;$.clearRect(S,x,E,O),this.emit("beforeTitle"),Rr($,P),this.emit("beforeUnits"),Nr($,P),this.emit("beforeNeedle"),Vr($,P),p.elementClone.initialized=!0}p.context.drawImage(p.elementClone,S,x,E,O)}this.emit("beforeValueBox"),Wr(p.context,P,Gr(this)),Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(le){oe.verifyError(le)}return this}},{key:"value",set:function(p){p=Ai.ensureValue(p,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=p,p=this.options.value+((p-this.options.value)%360+540)%360-180),fm(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",p,this)},get:function(){return Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",this)}}],[{key:"configure",value:function(p){return p.barWidth>50&&(p.barWidth=50),isNaN(p.startAngle)&&(p.startAngle=45),isNaN(p.ticksAngle)&&(p.ticksAngle=270),p.ticksAngle>360&&(p.ticksAngle=360),p.ticksAngle<0&&(p.ticksAngle=0),p.startAngle<0&&(p.startAngle=0),p.startAngle>360&&(p.startAngle=360),p}}]),l})(Ai);n!==void 0&&(n.RadialGauge=vm),Ai.initialize("RadialGauge",jr);var Yr=Object.assign({},qo,{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}),ym=(function(c){function l(p){return i(this,l),p=Object.assign({},Yr,p||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(p)))}return t(l,c),sn(l,[{key:"draw",value:function(){try{var p=this.canvas,y=[-p.drawX,-p.drawY,p.drawWidth,p.drawHeight],S=y[0],x=y[1],E=y[2],O=y[3],P=this.options;if(!p.elementClone.initialized){var V=p.contextClone;V.clearRect(S,x,E,O),this.emit("beforePlate"),this.drawBox=im(V,P,S,x,E,O),this.emit("beforeBar"),am.apply(void 0,[V,P].concat(o(this.drawBox))),p.contextClone.barDimensions=V.barDimensions,this.emit("beforeHighlights"),rm(V,P),this.emit("beforeMinorTicks"),lm(V,P),this.emit("beforeMajorTicks"),sm(V,P),this.emit("beforeNumbers"),dm(V,P),this.emit("beforeTitle"),cm(V,P),this.emit("beforeUnits"),mm(V,P),p.elementClone.initialized=!0}this.canvas.commit(),p.context.clearRect(S,x,E,O),p.context.drawImage(p.elementClone,S,x,E,O),this.emit("beforeProgressBar"),om.apply(void 0,[p.context,P].concat(o(this.drawBox))),this.emit("beforeNeedle"),um(p.context,P),this.emit("beforeValueBox"),gm.apply(void 0,[p.context,P,P.animatedValue?this.options.value:this.value].concat(o(this.drawBox))),Bo(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(Q){oe.verifyError(Q)}return this}}],[{key:"configure",value:function(p){return p.barStrokeWidth>=p.barWidth&&(p.barStrokeWidth=we(p.barWidth/2)),p.hasLeft=Br("right",p),p.hasRight=Br("left",p),p.value>p.maxValue&&(p.value=p.maxValue),p.value<p.minValue&&(p.value=p.minValue),Ai.configure(p)}}]),l})(Ai);n!==void 0&&(n.LinearGauge=ym),Ai.initialize("LinearGauge",Yr),typeof Eo<"u"&&Object.assign(n,{Collection:s,GenericOptions:qo,Animation:Uo,BaseGauge:Ai,drawings:oe,SmartCanvas:si,DomObserver:wn,vendorize:a})})(typeof Eo<"u"?Eo.exports:window)});var Ei=(()=>{class n{appSettings=A(Zt);data=A(Ci);_svcDatasetConfigs=[];_svcDataSource=[];_svcSubjectObserverRegistry=[];signedAnglePaths=new Set(["self.navigation.attitude.roll","self.navigation.attitude.pitch","self.navigation.attitude.yaw","self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater","self.steering.rudderAngle"]);constructor(){this._svcDatasetConfigs=this.appSettings.getDataSets(),this.cleanupDatasets(),this.startAll()}cleanupDatasets(){if(this.appSettings.configUpgrade()||this.appSettings.getAppConfig().configVersion<12)return;let t=this.appSettings.getDashboardConfig(),i=new Set;t.forEach(h=>{h.configuration?.forEach(f=>{f?.id&&i.add(f.id)})});function a(h){let f=h.match(/^(windtrends|speedtrends)-(.+)$/);return f?f[2]:null}let r=[],s=[];for(let h of this._svcDatasetConfigs){let f=h.label||"",b=!1;if(f.startsWith("windtrends-")||f.startsWith("speedtrends-")){let C=a(f);b=!!(C&&i.has(C))}else(f.startsWith("simple-chart-")||(f.match(/\|/g)||[]).length===4)&&(b=i.has(h.uuid));b?s.push(h):r.push(h)}r.length&&(r.forEach(h=>{console.warn(`[DatasetService] Cleaned dataset: uuid=${h.uuid}, label="${h.label}"`)}),this._svcDatasetConfigs=s,this.appSettings.saveDataSets(this._svcDatasetConfigs))}setupServiceSubjectRegistry(e,t){let i=this._svcSubjectObserverRegistry.findIndex(a=>a.datasetUuid==e);i>=0&&(this._svcSubjectObserverRegistry[i].rxjsSubject.complete(),this._svcSubjectObserverRegistry.splice(i,1)),this._svcSubjectObserverRegistry.push({datasetUuid:e,rxjsSubject:new Xr(t)})}createDataSourceConfiguration(e){let i={uuid:e.uuid,pathObserverSubscription:null,sampleTime:null,maxDataPoints:null,smoothingPeriod:null,historicalData:[]};switch(e.timeScaleFormat){case"Last 30 Minutes":i.maxDataPoints=120,i.sampleTime=15e3,i.smoothingPeriod=50;break;case"Last 5 Minutes":i.maxDataPoints=60,i.sampleTime=5e3,i.smoothingPeriod=25;break;case"Last Minute":i.maxDataPoints=60,i.sampleTime=1e3,i.smoothingPeriod=25;break;case"hour":i.maxDataPoints=e.period*120,i.sampleTime=3e4,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break;case"minute":i.maxDataPoints=e.period*60,i.sampleTime=1e3,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break;default:i.maxDataPoints=e.period*5,i.sampleTime=200,i.smoothingPeriod=Math.floor(i.maxDataPoints*.25);break}return(!i.maxDataPoints||i.maxDataPoints<1)&&(i.maxDataPoints=1),i}startAll(){console.log("[Dataset Service] Auto Starting "+this._svcDatasetConfigs.length.toString()+" Datasets");for(let e of this._svcDatasetConfigs)this.start(e.uuid)}start(e){let t=this._svcDatasetConfigs.find(h=>h.uuid==e);if(!t){console.warn(`[Dataset Service] Dataset UUID:${e} not found`);return}let i=this.createDataSourceConfiguration(t);this.setupServiceSubjectRegistry(i.uuid,i.maxDataPoints);let a=this._svcDataSource[this._svcDataSource.push(i)-1];console.log(`[Dataset Service] Starting recording process: ${t.path}, Scale: ${t.timeScaleFormat}, Period: ${t.period}, Datapoints: ${i.maxDataPoints}`);function r(h){return f=>xn(h).pipe(cs(f,(b,C)=>C))}let s=this.resolveAngleDomain(t.path,t.baseUnit);a.pathObserverSubscription=this.data.subscribePath(t.path,t.pathSource).pipe(r(i.sampleTime)).subscribe(h=>{if(h.data.value===null)return;a.maxDataPoints>0&&a.historicalData.length>=a.maxDataPoints&&a.historicalData.shift(),a.historicalData.push(h.data.value);let f=this.updateDataset(a,t.baseUnit,s);this._svcSubjectObserverRegistry.find(b=>b.datasetUuid===a.uuid).rxjsSubject.next(f)})}stop(e){let t=this._svcDataSource.findIndex(i=>i.uuid==e);console.log(`[Dataset Service] Stopping Dataset ${e} data capture`),this._svcDataSource[t].pathObserverSubscription.unsubscribe(),this._svcDataSource.splice(t,1)}list(){return qt(this._svcDatasetConfigs)}getDatasetConfig(e){return this._svcDatasetConfigs.find(t=>t.uuid===e)}getDataSourceInfo(e){return this._svcDataSource.find(t=>t.uuid===e)}create(e,t,i,a,r,s=!0,h=!0,f){if(!e||!t||!i||!a||!r)return null;let b=f||qi.create(),C={uuid:b,path:e,pathSource:t,baseUnit:this.data.getPathUnitType(e),timeScaleFormat:i,period:a,label:r,editable:h};return console.log(`[Dataset Service] Creating ${s?"":"non-"}persistent ${h?"":"hidden "}dataset: ${C.uuid}, Path: ${C.path}, Source: ${C.pathSource} Scale: ${C.timeScaleFormat}, Period: ${C.period}`),this._svcDatasetConfigs.push(C),this.start(b),s===!0&&this.appSettings.saveDataSets(this._svcDatasetConfigs),b}edit(e,t=!0){let i=this._svcDatasetConfigs.find(a=>a.uuid===e.uuid);return i?JSON.stringify(i)===JSON.stringify(e)?(console.log(`[Dataset Service] No changes detected for Dataset ${e.uuid}.`),!1):(this.stop(e.uuid),console.log(`[Dataset Service] Updating Dataset: ${e.uuid}`),e.baseUnit=this.data.getPathUnitType(e.path),this._svcDatasetConfigs.splice(this._svcDatasetConfigs.findIndex(a=>a.uuid===e.uuid),1,e),this.start(e.uuid),t===!0&&this.appSettings.saveDataSets(this._svcDatasetConfigs),!0):!1}remove(e,t=!0){return!e||e===""||this._svcDatasetConfigs.findIndex(i=>i.uuid===e)===-1?!1:(this.stop(e),console.log(`[Dataset Service] Removing ${t?"":"non-"}persistent Dataset: ${e}`),this._svcDatasetConfigs.splice(this._svcDatasetConfigs.findIndex(i=>i.uuid===e),1),this._svcSubjectObserverRegistry.find(i=>i.datasetUuid===e).rxjsSubject.complete(),this._svcSubjectObserverRegistry.splice(this._svcSubjectObserverRegistry.findIndex(i=>i.datasetUuid===e),1),t===!0&&this.appSettings.saveDataSets(this._svcDatasetConfigs),!0)}getDatasetObservable(e){let t=this._svcSubjectObserverRegistry.find(i=>i.datasetUuid==e);return t?t.rxjsSubject.asObservable():null}getDatasetBatchThenLiveObservable(e){let t=this._svcSubjectObserverRegistry.find(h=>h.datasetUuid==e);if(!t)return null;let i=t.rxjsSubject,a=i._buffer?i._buffer.slice():[],r=Kr([a]),s=i.pipe(ds(a.length));return ts(r,s)}updateDataset(e,t,i="scalar"){let a=null,r=null,s=null,h=null;if(t==="rad"){a=this.circularMeanRad(e.historicalData);let M=e.historicalData.slice(-e.smoothingPeriod);r=this.circularMeanRad(M);let{min:N,max:D}=this.circularMinMaxRad(e.historicalData);i==="direction"?(a=this.normalizeToDirection(a),r=this.normalizeToDirection(r),s=this.normalizeToDirection(N),h=this.normalizeToDirection(D)):i==="signed"?(a=this.normalizeToSigned(a),r=this.normalizeToSigned(r),s=this.normalizeToSigned(N),h=this.normalizeToSigned(D)):(s=N,h=D)}else a=b(e.historicalData),r=C(e.historicalData,e.smoothingPeriod),s=Math.min(...e.historicalData),h=Math.max(...e.historicalData);return{timestamp:Date.now(),data:{value:t==="rad"?i==="signed"?this.normalizeToSigned(e.historicalData[e.historicalData.length-1]):this.normalizeToDirection(e.historicalData[e.historicalData.length-1]):e.historicalData[e.historicalData.length-1],sma:r,ema:null,doubleEma:null,lastAverage:a,lastMinimum:s,lastMaximum:h}};function b(M){return M.length===0?null:M.reduce((D,j)=>D+j,0)/M.length}function C(M,N){M.length<N&&(N=M.length);let D=0;for(let j=M.length-N;j<M.length;j++)D+=M[j];return D/N}}circularMeanRad(e){if(e.length===0)return 0;let t=e.reduce((a,r)=>a+Math.sin(r),0),i=e.reduce((a,r)=>a+Math.cos(r),0);return Math.atan2(t/e.length,i/e.length)}circularMinMaxRad(e){if(e.length===0)return{min:0,max:0};let t=e.map(h=>(h*180/Math.PI+360)%360).sort((h,f)=>h-f),i=0,a=0;for(let h=0;h<t.length;h++){let f=(h+1)%t.length,b=(t[f]-t[h]+360)%360;b>i&&(i=b,a=f)}let r=t[a]*Math.PI/180,s=t[(a-1+t.length)%t.length]*Math.PI/180;return{min:r,max:s}}resolveAngleDomain(e,t){if(t!=="rad")return"scalar";let i=this.normalizePathKey(e);for(let a of this.signedAnglePaths)if(i===this.normalizePathKey(a))return"signed";return"direction"}normalizePathKey(e){return e.replace(/^vessels\.self\./,"").replace(/^self\./,"")}mod(e,t){return(e%t+t)%t}normalizeToDirection(e){let t=2*Math.PI;return this.mod(e,t)}normalizeToSigned(e){let t=2*Math.PI;return this.mod(e+Math.PI,t)-Math.PI}removeIfExists(e,t=!0){return!e||this._svcDatasetConfigs.findIndex(i=>i.uuid===e)===-1?!1:this.remove(e,t)}ngOnDestroy(){[...this._svcDataSource].forEach(e=>{try{this.stop(e.uuid)}catch{}}),this._svcSubjectObserverRegistry.forEach(e=>e.rxjsSubject.complete()),this._svcSubjectObserverRegistry=[]}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var kl=(()=>{class n{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new Ia(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||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Tl=(()=>{class n{sanitizer=A(Za);transform(e){return this.sanitizer.bypassSecurityTrustResourceUrl(e)}static \u0275fac=function(t){return new(t||n)};static \u0275pipe=Fa({name:"safe",type:n,pure:!0})}return n})();var Sm={minDist:230,maxDur:550,minVelocity:1.5,axisDominance:1.8,deadzoneMs:160,purityRatio:.8,lockThreshold:28,directionLockAngle:25,reversalPrimaryThreshold:34};function go(n){let o=Be(Be({},Sm),n);return`(() => {
|
|
2
2
|
if (window.__kipSwipeInit) return; window.__kipSwipeInit = true;
|
|
3
3
|
const instanceId='${o.instanceId}';
|
|
4
4
|
let pointerId=null; let startX=0; let startY=0; let startT=0; let peakPrimary=0; let peakCross=0; let cancelled=false;
|
|
@@ -36,17 +36,17 @@ import{A as wl,B as Jo,C as er,D as tr,E as ir,F as jn,G as Ca,H as xl,I as _l,J
|
|
|
36
36
|
window.parent.postMessage({ type:'keydown', keyEventData:{ key:event.key, ctrlKey:event.ctrlKey, shiftKey:event.shiftKey, instanceId }}, '*');
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
|
-
})();`}var de=(()=>{class n{config=v();defaultConfig=w(void 0);runtimeConfig=$e();_runtimeConfig=w(void 0);lastBaseRef;lastUserRef;lastMergedRef;options=se(()=>{let e=this.defaultConfig(),t=this._runtimeConfig();if(this.lastMergedRef&&e===this.lastBaseRef&&t===this.lastUserRef)return this.lastMergedRef;let i;return e&&t?i=ws(Ut(e),Ut(t)):e&&!t?i=Ut(e):!e&&t?i=Ut(t):i=void 0,this.lastBaseRef=e,this.lastUserRef=t,this.lastMergedRef=i,this.runtimeConfig.emit(i),i});firstPathKey=se(()=>{let e=this.options();if(!e?.paths)return;let t=Object.keys(e.paths);return t.length?t[0]:void 0});constructor(){R(()=>{let e=this.config();W(()=>{e&&this.setRuntimeConfig(e)})})}getPathCfg(e){return this.options()?.paths?.[e]}setRuntimeConfig(e){this._runtimeConfig.set(e)}initialize(e,t){e&&this.defaultConfig.set(e),t&&this._runtimeConfig.set(t)}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-runtime",""]],inputs:{config:[1,"config"]},outputs:{runtimeConfig:"runtimeConfig"},exportAs:["widgetRuntime"]})}return n})();var xm=["freeboardSkIframe"];function _m(n,o){if(n&1&&(H(0,"iframe",1,0),At(2,"safe")),n&2){let e=I();Pi("src",Bt(2,1,e.widgetUrl),pa)}}function Mm(n,o){n&1&&H(0,"div",4)}function km(n,o){if(n&1&&(_(0,"div",2),H(1,"iframe",3,0),At(3,"safe"),G(4,Mm,1,0,"div",4),k()),n&2){let e=I();g(),Pi("src",Bt(3,2,e.widgetUrl),pa),g(3),F(e.dashboard.isDashboardStatic()?-1:4)}}var El=(()=>{class n{id=v();type=v();theme=v();runtime=A(de,{optional:!0});appSettings=A($t);auth=A($a);dashboard=A(wt);iframe=ie.required("freeboardSkIframe");widgetUrl=null;disableWidgetShell=v(!1);swipeDisabled=v(!1);_authTokenSubscription=null;viewReady=w(!1);static DEFAULT_CONFIG={};constructor(){R(()=>{let e=this.runtime?.options();this._authTokenSubscription||(this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{let i=t?.token;this.widgetUrl=i?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${i}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`}))}),window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){if(this.viewReady.set(!0),this.iframe)try{this.iframe().nativeElement.onload=()=>this.injectSwipeScript()}catch{}}handleIframeGesture=e=>{if(!e.data)return;let t=this.id();if(e.data.gesture&&e.data.eventData.instanceId===t)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":window.document.dispatchEvent(new Event("openLeftSidenav",{bubbles:!0,cancelable:!0}));break;case"swiperight":window.document.dispatchEvent(new Event("openRightSidenav",{bubbles:!0,cancelable:!0}));break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===t){let{key:i,ctrlKey:a,shiftKey:r}=e.data.keyEventData,s=new KeyboardEvent("keydown",{key:i,ctrlKey:a,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(s)}};injectSwipeScript(){if(this.swipeDisabled())return;let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined.");return}try{let i=`kip-gesture-inject-${this.id()}`;if(t.getElementById(i))return;let a=go({instanceId:this.id()}),r=t.createElement("script");r.id=i,r.textContent=a,t.body.appendChild(r)}catch(i){console.warn("[FSK Widget] Failed to inject swipe script into iframe:",i)}}ngOnDestroy(){if(window.removeEventListener("message",this.handleIframeGesture),this._authTokenSubscription?.unsubscribe(),this.iframe){try{this.iframe().nativeElement.onload=null}catch(e){}try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.id()}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&te(i.iframe,xm,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],disableWidgetShell:[1,"disableWidgetShell"],swipeDisabled:[1,"swipeDisabled"]},decls:2,vars:1,consts:[["freeboardSkIframe",""],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",1,"freeboardsk-iframe","no-shell",3,"src"],[1,"widget-shell",2,"overflow","clip","position","relative","width","100%","height","100%"],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",1,"freeboardsk-iframe",3,"src"],[1,"widgetOverlay"]],template:function(t,i){t&1&&G(0,_m,3,3,"iframe",1)(1,km,5,4,"div",2),t&2&&F(i.disableWidgetShell()?0:1)},dependencies:[Tl],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return n})();var fo=class n{isChromeOnMac;isFirefox;static DEBUG=!1;static _suppressAllGesturesUntil=0;static _instanceCounter=0;_instanceId;static _laneOwners=new Map;static _activePointers=new Set;static _instanceToEl=new Map;swipeMinDistance=v(30);swipeMaxDuration=v(600);longPressMs=v(500);doubleTapInterval=v(300);tapSlop=v(20);pressMoveSlop=v(10);mode=v("all");disableGestures=v(!1);enablePress=v(!0);enableDoubleTap=v(!0);bridgeUiEvents=v(!1);_swipeMinDistance=30;_swipeMaxDuration=600;_longPressMs=500;_doubleTapInterval=300;_tapSlop=20;_pressMoveSlop=10;swipeleft=$e();swiperight=$e();swipeup=$e();swipedown=$e();press=$e();doubletap=$e();zone=A(Ge);destroyRef=A(rt);host=A(Ie);pointerId=null;startX=0;startY=0;startTime=0;tracking=!1;longPressTimer=null;pressFired=!1;ownedLanes={h:!1,v:!1,p:!1};cancelLongpressHandlers=[];lastTapTime=0;lastTapX=0;lastTapY=0;currentPointerType=null;lastTapUpTime=0;lastTapUpX=0;lastTapUpY=0;potentialDoubleTap=!1;onContextMenu=o=>{o.preventDefault()};lockedAxis=null;axisLockThreshold=6;static MOVES_BUFFER_SIZE=120;moveSamples=[];constructor(){this.isChromeOnMac=(()=>{let o=navigator.userAgent,e=navigator.platform;return/Chrome\//.test(o)&&/Mac/.test(e)&&!/Edg\//.test(o)&&!/OPR\//.test(o)})(),this.isFirefox=/Firefox\//.test(navigator.userAgent),this._instanceId=++n._instanceCounter,this.debug("GestureDirective instance created",{instanceId:this._instanceId});try{n._instanceToEl.set(this._instanceId,this.host.nativeElement)}catch{}this.zone.runOutsideAngular(()=>{let o=this.host.nativeElement;o.style.touchAction||(o.style.touchAction="none","webkitTouchCallout"in o.style&&(o.style.webkitTouchCallout="none")),o.addEventListener("pointerdown",this.onPointerDown,{passive:!1,capture:!0}),o.addEventListener("pointermove",this.onPointerMove,{passive:!0,capture:!0}),o.addEventListener("pointerrawupdate",this.onPointerRawUpdate,{passive:!0,capture:!0}),o.addEventListener("pointerup",this.onPointerUp,{passive:!0}),o.addEventListener("pointercancel",this.onPointerCancel,{passive:!0,capture:!0}),o.addEventListener("lostpointercapture",this.onPointerCancel,{passive:!0,capture:!0}),o.addEventListener("dblclick",this.onNativeDblClick,{passive:!0});let e=i=>{let a=i;if(a.detail?.__gid===this._instanceId||this.disableGestures())return;let s=this.modeAllowsHorizontal(),h=this.modeAllowsVertical(),f=this.modeAllowsPress(),b=this.modeAllowsDoubleTap();if(this.mode()==="dashboard"&&(a.type==="press"||a.type==="doubletap")){let C=a.target,M=C&&typeof C.closest=="function"?C.closest(".widget-container"):null;M&&M!==this.host.nativeElement&&(f=!1,b=!1)}switch(this.debug("rebroadcast gate",{type:a.type,allowH:s,allowV:h,allowP:f,allowDT:b}),a.type){case"press":f&&this.press.emit(a);break;case"doubletap":b&&this.doubletap.emit(a);break;case"swipeleft":s&&this.swipeleft.emit(a);break;case"swiperight":s&&this.swiperight.emit(a);break;case"swipeup":h&&this.swipeup.emit(a);break;case"swipedown":h&&this.swipedown.emit(a);break}},t={passive:!0};o.addEventListener("press",e,t),o.addEventListener("doubletap",e,t),o.addEventListener("swipeleft",e,t),o.addEventListener("swiperight",e,t),o.addEventListener("swipeup",e,t),o.addEventListener("swipedown",e,t),o.addEventListener("contextmenu",this.onContextMenu,{passive:!1}),this.destroyRef.onDestroy(()=>{o.removeEventListener("pointerdown",this.onPointerDown,{capture:!0}),o.removeEventListener("pointermove",this.onPointerMove,{capture:!0}),o.removeEventListener("pointerrawupdate",this.onPointerRawUpdate,{capture:!0}),o.removeEventListener("pointerup",this.onPointerUp),o.removeEventListener("pointercancel",this.onPointerCancel,{capture:!0}),o.removeEventListener("lostpointercapture",this.onPointerCancel,{capture:!0}),o.removeEventListener("dblclick",this.onNativeDblClick),o.removeEventListener("press",e,t),o.removeEventListener("doubletap",e,t),o.removeEventListener("swipeleft",e,t),o.removeEventListener("swiperight",e,t),o.removeEventListener("swipeup",e,t),o.removeEventListener("swipedown",e,t),o.removeEventListener("contextmenu",this.onContextMenu),this.longPressTimer&&(window.clearTimeout(this.longPressTimer),this.longPressTimer=null),this.removeLongpressCancelListeners();try{this.pointerId!==null&&typeof o.releasePointerCapture=="function"&&o.releasePointerCapture(this.pointerId)}catch{}this.pointerId=null,this.tracking=!1;try{n._instanceToEl.delete(this._instanceId)}catch{}})})}onNativeDblClick=o=>{if(this.disableGestures()||!this.modeAllowsDoubleTap())return;let e=new CustomEvent("doubletap",{detail:{x:o.clientX,y:o.clientY,dt:0}});this.zone.run(()=>this.doubletap.emit(e)),this.lastTapTime=0};onPointerDown=o=>{(this.tracking||this.pressFired||this.longPressTimer)&&(this.debug("pointerdown with stale state; force reset",{tracking:this.tracking,pressFired:this.pressFired,hasTimer:!!this.longPressTimer}),this.reset());let e=performance.now(),t=this.constructor._suppressAllGesturesUntil;if(e<t){this.debug("pointerdown suppressed by global window after longpress",{now:Math.round(e),suppressUntil:Math.round(t),remainingMs:Math.round(t-e)});return}if(this.disableGestures()||(this.debug("pointerdown",{x:o.clientX,y:o.clientY,pointerId:o.pointerId,pointerType:o.pointerType,sourceElement:o.target instanceof Element?o.target.outerHTML:String(o.target)}),this.pointerId!==null))return;let i=this.modeAllowsHorizontal(),a=this.modeAllowsVertical(),r=this.modeAllowsPress(),s=this.modeAllowsDoubleTap();if(this.mode()==="dashboard"){let j=o.target,X=j&&typeof j.closest=="function"?j.closest(".widget-container"):null;X&&X!==this.host.nativeElement&&(r=!1,s=!1)}if(!i&&!a&&!r&&!s){this.debug("ignoring pointerdown: no gestures enabled for current mode");return}let h=r||s,f=this.constructor._laneOwners,b=this.constructor._activePointers;b.has(o.pointerId)||(b.add(o.pointerId),f.has(o.pointerId)&&(this.debug("new pointer sequence; clearing stale lane owners",{pointerId:o.pointerId,prevOwners:f.get(o.pointerId)}),f.delete(o.pointerId)));let C=f.get(o.pointerId)??{};if(C.p!==void 0){let j=C.p,X=this.constructor._instanceToEl.get(j),Z=this.host.nativeElement,ee=o.target??null,be=this.ownerRelationshipSummary(X??null,Z,ee);this.debug("pre-acquire owners (press lane already owned)",{owners:C,ownerId:j,ownerEl:this.elDesc(X),hostEl:this.elDesc(Z),targetEl:this.elDesc(ee),rel:be})}else this.debug("pre-acquire owners",{owners:C});if(this.ownedLanes={h:!1,v:!1,p:!1},i&&C.h===void 0&&(C.h=this._instanceId,this.ownedLanes.h=!0),a&&C.v===void 0&&(C.v=this._instanceId,this.ownedLanes.v=!0),h&&C.p===void 0&&(C.p=this._instanceId,this.ownedLanes.p=!0),this.debug("lane acquisition",{allowH:i,allowV:a,allowPress:r,allowDT:s,wantP:h,acquired:this.ownedLanes,existingOwners:C}),!this.ownedLanes.h&&!this.ownedLanes.v&&!this.ownedLanes.p){if(h&&C.p!==void 0){let j=C.p,X=this.constructor._instanceToEl.get(j),Z=this.host.nativeElement,ee=o.target??null,be=this.ownerRelationshipSummary(X??null,Z,ee);this.debug("ignoring pointerdown: press lane not owned",{owners:C,ownerId:j,ownerEl:this.elDesc(X),hostEl:this.elDesc(Z),targetEl:this.elDesc(ee),rel:be})}else this.debug("ignoring pointerdown: other instance owns relevant lanes",{owners:C});return}switch(this.pointerId=o.pointerId,f.set(o.pointerId,C),this.tracking=!0,this.pressFired=!1,this.currentPointerType=o.pointerType||null,this.lockedAxis=null,this.isDebugEnabled()&&(this.moveSamples=[{t:performance.now(),x:o.clientX,y:o.clientY,source:"move"}]),o.pointerType){case"touch":this._swipeMinDistance=this.isChromeOnMac?Math.min(25,this.swipeMinDistance()):this.swipeMinDistance(),this._swipeMaxDuration=this.isChromeOnMac?Math.max(850,this.swipeMaxDuration()):this.swipeMaxDuration(),this._longPressMs=this.longPressMs(),this._doubleTapInterval=this.doubleTapInterval(),this._tapSlop=this.tapSlop(),this._pressMoveSlop=this.pressMoveSlop();break;case"pen":this._swipeMinDistance=20,this._swipeMaxDuration=500,this._longPressMs=400,this._doubleTapInterval=250,this._tapSlop=10,this._pressMoveSlop=8;break;case"mouse":default:this._swipeMinDistance=15,this._swipeMaxDuration=400,this._longPressMs=350,this._doubleTapInterval=250,this._tapSlop=8,this._pressMoveSlop=6;break}this.debug("thresholds",{pointerType:o.pointerType,swipeMinDistance:this._swipeMinDistance,swipeMaxDuration:this._swipeMaxDuration,longPressMs:this._longPressMs,doubleTapInterval:this._doubleTapInterval,tapSlop:this._tapSlop,pressMoveSlop:this._pressMoveSlop,axisLockThreshold:this.axisLockThreshold});let V=performance.now()-this.lastTapUpTime,D=Math.hypot(o.clientX-this.lastTapUpX,o.clientY-this.lastTapUpY);if(this.potentialDoubleTap=s&&V<=this._doubleTapInterval&&D<=this._tapSlop,this.startX=o.clientX,this.startY=o.clientY,this.startTime=performance.now(),o.pointerType!=="mouse")try{this.host.nativeElement.setPointerCapture(o.pointerId),this.debug("setPointerCapture success",{pointerId:o.pointerId,pointerType:o.pointerType})}catch{this.debug("setPointerCapture failed",{pointerId:o.pointerId,pointerType:o.pointerType})}this.longPressTimer&&(this.debug("longpress timer cleared on pointerdown"),window.clearTimeout(this.longPressTimer)),!this.potentialDoubleTap&&r&&this.ownedLanes.p?(this.addLongpressCancelListeners(),this.debug("longpress timer scheduled",{scheduleAt:Math.round(performance.now()),firesAt:Math.round(performance.now()+this._longPressMs),longPressMs:this._longPressMs,pressMoveSlop:this._pressMoveSlop,ownedLanes:this.ownedLanes,pointerType:this.currentPointerType}),this.longPressTimer=window.setTimeout(()=>{if(this.debug("longpress timer fired",{tracking:this.tracking,firedAt:Math.round(performance.now())}),!this.tracking){this.debug("longpress cancelled: not tracking");return}let j=o.clientX-this.startX,X=o.clientY-this.startY;if(Math.abs(j)<=this._pressMoveSlop&&Math.abs(X)<=this._pressMoveSlop){this.debug("longpress recognized",{x:this.startX,y:this.startY}),this.isFirefox&&this.currentPointerType!=="mouse"&&this.suppressNextClick(500),this.currentPointerType!=="mouse"&&(this.constructor._suppressAllGesturesUntil=performance.now()+600,this.debug("set global suppression window after longpress",{until:Math.round(this.constructor._suppressAllGesturesUntil)})),this.pressFired=!0;let Z={x:this.startX,y:this.startY,center:{x:this.startX,y:this.startY}};this.zone.run(()=>this.emitPressEvent(Z)),this.reset()}this.longPressTimer=null,this.removeLongpressCancelListeners()},this._longPressMs)):this.debug("longpress not scheduled",{potentialDoubleTap:this.potentialDoubleTap,allowPress:r,ownedPressLane:this.ownedLanes.p,reason:this.potentialDoubleTap?"awaiting doubletap":r?this.ownedLanes.p?"unknown":"press lane not owned":"press disabled by mode/flag",ownersForPointer:C})};suppressNextClick(o=500){this.debug("suppressNextClick (Firefox)",{timeoutMs:o});let e={capture:!0,passive:!1},t=["click","pointerup","mouseup","mousedown","auxclick","touchend","touchstart","contextmenu"],i=s=>{this.debug("suppress ghost event",s.type),s.preventDefault(),s.stopPropagation();let h=s;typeof h.stopImmediatePropagation=="function"&&h.stopImmediatePropagation()},a=()=>{t.forEach(s=>document.removeEventListener(s,i,e)),window.clearTimeout(r)};t.forEach(s=>document.addEventListener(s,i,e));let r=window.setTimeout(a,o)}onPointerMove=o=>this.handlePointerMotion(o,"move");onPointerRawUpdate=o=>this.handlePointerMotion(o,"raw");handlePointerMotion(o,e){if(!(!this.tracking||o.pointerId!==this.pointerId)&&!this.pressFired){if(this.recordMove(o,e),this.longPressTimer){let t=Math.abs(o.clientX-this.startX),i=Math.abs(o.clientY-this.startY);(t>this._pressMoveSlop||i>this._pressMoveSlop)&&(this.debug(`longpress cancelled by pointer${e==="raw"?"rawupdate":"move"}: moved beyond slop`,{dx:t,dy:i,slop:this._pressMoveSlop}),window.clearTimeout(this.longPressTimer),this.longPressTimer=null,this.removeLongpressCancelListeners())}if(!this.lockedAxis){let t=o.clientX-this.startX,i=o.clientY-this.startY,a=Math.abs(t),r=Math.abs(i);(a>=this.axisLockThreshold||r>=this.axisLockThreshold)&&(this.lockedAxis=a>=r?"x":"y",this.debug(`axis locked${e==="raw"?" (raw)":""}`,{axis:this.lockedAxis,dx:t,dy:i}))}}}onPointerUp=o=>{this.debug("pointerup",{x:o.clientX,y:o.clientY,pointerId:o.pointerId}),!(!this.tracking||o.pointerId!==this.pointerId)&&this.finishGesture(o,!1)};onPointerCancel=o=>{let e=this.host.nativeElement;this.debug("pointercancel",{pointerId:o.pointerId,pointerType:o.pointerType,event:o,documentActiveElement:document.activeElement,elementIsConnected:e.isConnected,elementVisibility:e.offsetParent!==null,hasPointerCapture:typeof e.hasPointerCapture=="function"?e.hasPointerCapture(o.pointerId):void 0,documentHidden:document.hidden}),!(!this.tracking||o.pointerId!==this.pointerId)&&this.finishGesture(o,!0)};finishGesture(o,e){this.debug("finishGesture begin",{cancelled:e,hasTimer:!!this.longPressTimer,pressFired:this.pressFired,ownedLanes:this.ownedLanes});try{let b=this.constructor._activePointers.delete(o.pointerId);this.debug("activePointers delete",{pointerId:o.pointerId,deleted:b})}catch{}let t=performance.now(),i=t-this.startTime,a=o.clientX-this.startX,r=o.clientY-this.startY,s=Math.abs(a),h=Math.abs(r);if(this.longPressTimer&&(this.debug(`longpress cancelled by ${e?"pointercancel":"pointerup"}`,{durationMs:Math.round(i),absDx:s,absDy:h,pressMoveSlop:this._pressMoveSlop}),window.clearTimeout(this.longPressTimer),this.longPressTimer=null,this.removeLongpressCancelListeners()),this.pressFired){this.debug(`${e?"pointercancel":"pointerup"} after longpress: resetting gesture state`),this.reset();return}if(i<=this._swipeMaxDuration){let b=this.modeAllowsHorizontal(),C=this.modeAllowsVertical(),M=b&&this.ownedLanes.h&&(this.lockedAxis==="x"&&s>=this._swipeMinDistance||!this.lockedAxis&&s>=this._swipeMinDistance&&s>=h),V=C&&this.ownedLanes.v&&(this.lockedAxis==="y"&&h>=this._swipeMinDistance||!this.lockedAxis&&h>=this._swipeMinDistance&&h>s);if(this.debug("swipe gating",{allowH:b,allowV:C,owned:this.ownedLanes,lockedAxis:this.lockedAxis,horizontalOk:M,verticalOk:V}),M){this.debugSwipeDecision({phase:"recognized",axis:"x",dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:e?"horizontal swipe (on cancel)":"horizontal swipe"}),this.debug("swipe detected",{direction:a>0?"right":"left",dx:a,dy:r,duration:i}),this.zone.run(()=>{a>0?this.emitSwipeEvent("swiperight",{dx:a,dy:r,duration:i}):this.emitSwipeEvent("swipeleft",{dx:a,dy:r,duration:i})}),this.reset();return}else if(V){this.debugSwipeDecision({phase:"recognized",axis:"y",dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:e?"vertical swipe (on cancel)":"vertical swipe"}),this.debug("swipe detected",{direction:r>0?"down":"up",dx:a,dy:r,duration:i}),this.zone.run(()=>{r>0?this.emitSwipeEvent("swipedown",{dx:a,dy:r,duration:i}):this.emitSwipeEvent("swipeup",{dx:a,dy:r,duration:i})}),this.reset();return}if(!e){let D=this.lockedAxis??(s>=h?"x":"y"),j=D==="x"?s:h,X=[];j<this._swipeMinDistance&&X.push(`distance ${Math.round(j)}px < min ${this._swipeMinDistance}px`),!this.lockedAxis&&(D==="x"&&h>s||D==="y"&&s>h)&&X.push("orthogonal movement dominated"),this.debugSwipeDecision({phase:"rejected",axis:D,dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:X.join("; ")||"fell through conditions"})}}else e||this.debugSwipeDecision({phase:"rejected",axis:this.lockedAxis??(s>=h?"x":"y"),dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:`duration ${Math.round(i)}ms exceeds max ${this._swipeMaxDuration}ms`});if(!e&&this.ownedLanes.p&&this.modeAllowsDoubleTap()&&this.currentPointerType!=="mouse"&&s<=this._tapSlop&&h<=this._tapSlop&&i<this._longPressMs){let b=t,C=b-this.lastTapTime,M=Math.hypot(o.clientX-this.lastTapX,o.clientY-this.lastTapY);C<=this._doubleTapInterval&&M<=this._tapSlop?(this.zone.run(()=>this.doubletap.emit(new CustomEvent("doubletap",{detail:{x:o.clientX,y:o.clientY,dt:C}}))),this.lastTapTime=0,this.potentialDoubleTap=!1):(this.lastTapTime=b,this.lastTapX=o.clientX,this.lastTapY=o.clientY)}!e&&!this.pressFired&&s<=this._tapSlop&&h<=this._tapSlop&&i<this._longPressMs?(this.lastTapUpTime=t,this.lastTapUpX=o.clientX,this.lastTapUpY=o.clientY):this.potentialDoubleTap=!1,this.reset()}addLongpressCancelListeners(){this.debug("addLongpressCancelListeners");let o=r=>{this.debug("longpress cancelled by event",r?.type),this.longPressTimer&&(window.clearTimeout(this.longPressTimer),this.longPressTimer=null),this.removeLongpressCancelListeners()},e=this.host.nativeElement,t=document,i={capture:!0},a=[{type:"pointermove",handler:o,opts:i,targets:["el","doc"]},{type:"lostpointercapture",handler:o,opts:i,targets:["el","doc"]}];this.currentPointerType!=="mouse"&&a.push({type:"pointerleave",handler:o,opts:i,targets:["el","doc"]},{type:"pointerout",handler:o,opts:i,targets:["el","doc"]},{type:"blur",handler:o,opts:i,targets:["window"]}),this.cancelLongpressHandlers=a;for(let r of this.cancelLongpressHandlers){let{type:s,handler:h,opts:f,targets:b}=r;b&&b.includes("el")&&e.addEventListener(s,h,f),b&&b.includes("doc")&&t.addEventListener(s,h,f),b&&b.includes("window")&&window.addEventListener(s,h,f)}}removeLongpressCancelListeners(){this.debug("removeLongpressCancelListeners");let o=this.host.nativeElement,e=document;for(let t of this.cancelLongpressHandlers){let{type:i,handler:a,opts:r,targets:s}=t;s&&s.includes("el")&&o.removeEventListener(i,a,r),s&&s.includes("doc")&&e.removeEventListener(i,a,r),s&&s.includes("window")&&window.removeEventListener(i,a,r)}this.cancelLongpressHandlers=[]}reset(){this.debug("reset gesture state");try{let o=this.host.nativeElement;this.pointerId!==null&&typeof o.releasePointerCapture=="function"&&o.releasePointerCapture(this.pointerId)}catch{}try{if(this.pointerId!==null){let o=this.constructor._laneOwners,e=o.get(this.pointerId);e&&(this.debug("releasing lane ownership",{pointerId:this.pointerId,ownersBefore:e,ownedByThis:this.ownedLanes,instanceId:this._instanceId}),this.ownedLanes.h&&e.h===this._instanceId&&delete e.h,this.ownedLanes.v&&e.v===this._instanceId&&delete e.v,this.ownedLanes.p&&e.p===this._instanceId&&delete e.p,!e.h&&!e.v&&!e.p?o.delete(this.pointerId):o.set(this.pointerId,e),this.debug("lane owners after release",{pointerId:this.pointerId,owners:e}))}}catch{}try{if(this.pointerId!==null){let o=this.constructor._activePointers.delete(this.pointerId);this.debug("activePointers delete (reset)",{pointerId:this.pointerId,deleted:o})}}catch{}this.pointerId=null,this.tracking=!1,this.pressFired=!1,this.currentPointerType=null,this.lockedAxis=null,this.ownedLanes={h:!1,v:!1,p:!1},this.removeLongpressCancelListeners()}isDebugEnabled(){try{return this.constructor.DEBUG}catch{return this.constructor.DEBUG}}recordMove(o,e){this.isDebugEnabled()&&(this.moveSamples.push({t:performance.now(),x:o.clientX,y:o.clientY,source:e}),this.moveSamples.length>this.constructor.MOVES_BUFFER_SIZE&&this.moveSamples.shift())}debugSwipeDecision(o){if(!this.isDebugEnabled())return;let e=this.moveSamples,t=e[e.length-1],i;if(e.length>=2){let a=t?.t??performance.now(),r=100,s=e.length-2;for(;s>=0&&a-e[s].t<r;)s--;s=Math.max(0,s);let h=e[s],f=Math.max(1,(t?.t??a)-h.t),b=(t?.x??0)-h.x,C=(t?.y??0)-h.y;i=(o.axis==="x"?Math.abs(b):Math.abs(C))/f}this.debug("swipe decision",{phase:o.phase,axis:o.axis,dx:o.dx,dy:o.dy,absDx:o.absDx,absDy:o.absDy,durationMs:Math.round(o.duration),velocityAvgPxPerMs:o.velocity??(o.axis==="x"?o.absDx:o.absDy)/Math.max(1,o.duration),recentVelocity100msPxPerMs:i,minDistance:this._swipeMinDistance,maxDuration:this._swipeMaxDuration,lockedAxis:this.lockedAxis,reason:o.reason,samplesCount:e.length,firstSample:e[0],lastSample:e[e.length-1]})}debug(...o){this.isDebugEnabled()&&console.debug(`[GestureDirective][#${this._instanceId}]`,...o)}emitSwipeEvent(o,e){e.__gid=this._instanceId;let t=new CustomEvent(o,{detail:e,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(t)}catch{}if(this.debug("emitSwipeEvent",{name:o,detail:e}),this.bridgeUiEvents()&&(o==="swipeleft"||o==="swiperight"))try{let i=o==="swipeleft"?"openLeftSidenav":"openRightSidenav";document.dispatchEvent(new CustomEvent(i,{detail:e}))}catch{}switch(o){case"swipeleft":this.swipeleft.emit(t);break;case"swiperight":this.swiperight.emit(t);break;case"swipeup":this.swipeup.emit(t);break;case"swipedown":this.swipedown.emit(t);break}}emitPressEvent(o){let e=performance.now();if(e-this._lastPressEmitTs<80){this.debug("press emit suppressed by cooldown");return}this._lastPressEmitTs=e,o.__gid=this._instanceId;let t=new CustomEvent("press",{detail:o,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(t)}catch{}this.debug("emitPressEvent",{detail:o}),this.press.emit(t)}emitDoubleTapEvent(o){o.__gid=this._instanceId;let e=new CustomEvent("doubletap",{detail:o,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(e)}catch{}this.doubletap.emit(e)}modeAllowsHorizontal(){let o=this.mode();return this.disableGestures()?!1:o==="all"||o==="horizontal"}modeAllowsVertical(){let o=this.mode();return this.disableGestures()?!1:o==="all"||o==="dashboard"}modeAllowsPress(){let o=this.mode();return this.disableGestures()?!1:(o==="all"||o==="dashboard"||o==="press"||o==="editor")&&this.enablePress()}modeAllowsDoubleTap(){let o=this.mode();return this.disableGestures()?!1:(o==="all"||o==="dashboard"||o==="press"||o==="editor")&&this.enableDoubleTap()}elDesc(o){if(!o)return null;try{let e=o,t=o.tagName?.toLowerCase?.()??"node",i=e.id?`#${e.id}`:"",a=e.className&&typeof e.className=="string"?e.className:"",r=a?"."+a.split(/\s+/).filter(Boolean).slice(0,4).join("."):"";return`${t}${i}${r}`}catch{return"node"}}ownerRelationshipSummary(o,e,t){try{return{owner:this.elDesc(o),host:this.elDesc(e),target:this.elDesc(t),ownerIsConnected:o?o.isConnected:null,hostIsConnected:e.isConnected,targetIsConnected:t?t.isConnected:null,targetInOwner:o&&t?o.contains(t):null,targetInHost:t?e.contains(t):null,ownerInHost:o?e.contains(o):null,hostInOwner:o?o.contains(e):null}}catch{return{}}}static \u0275fac=function(e){return new(e||n)};static \u0275dir=st({type:n,selectors:[["","kipGestures",""]],inputs:{swipeMinDistance:[1,"swipeMinDistance"],swipeMaxDuration:[1,"swipeMaxDuration"],longPressMs:[1,"longPressMs"],doubleTapInterval:[1,"doubleTapInterval"],tapSlop:[1,"tapSlop"],pressMoveSlop:[1,"pressMoveSlop"],mode:[1,"mode"],disableGestures:[1,"disableGestures"],enablePress:[1,"enablePress"],enableDoubleTap:[1,"enableDoubleTap"],bridgeUiEvents:[1,"bridgeUiEvents"]},outputs:{swipeleft:"swipeleft",swiperight:"swiperight",swipeup:"swipeup",swipedown:"swipedown",press:"press",doubletap:"doubletap"}})};(()=>{try{(typeof localStorage<"u"?localStorage.getItem("kip:gesturesDebug"):null)==="1"&&(fo.DEBUG=!0);let o=window;o.kipGesturesDebug=e=>{let t=fo;typeof e=="boolean"?t.DEBUG=e:t.DEBUG=!t.DEBUG;try{localStorage.setItem("kip:gesturesDebug",t.DEBUG?"1":"0")}catch{}return console.info("KIP gestures debug:",t.DEBUG),t.DEBUG}}catch{}})();var nr={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."},Di=(()=>{class n{signalKDeltaService=A(Ws);appSettingsService=A($t);appService=A(Lt);auth=A($a);requestStatus$=new Nt;requests=[];constructor(){this.signalKDeltaService.subscribeRequestUpdates().pipe(et()).subscribe(e=>{this.updateRequest(e)})}requestDeviceAccessToken(){let e=qi.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=qi.create(),a={requestId:i,login:{username:e,password:t}};console.log("[Request Service] Requesting User Login"),this.signalKDeltaService.publishDelta(a);let r={requestId:i,state:null,statusCode:null};return this.requests.push(r),i}putRequest(e,t,i){if(typeof t>"u")return console.error("[Request Service] Undefined value for PUT request"),null;if(!e)return console.error("[Request Service] Path is required for PUT request"),null;let a=qi.create(),r=e.replace(/^(self\.)/,""),h={context:"vessels.self",requestId:a,put:{path:r,value:t}};this.signalKDeltaService.publishDelta(h);let f={requestId:a,state:null,statusCode:null,widgetUUID:i};return this.requests.push(f),a}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=nr[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+" - "+nr[this.requests[t].statusCode]+" - "+this.requests[t].message),console.error("[Request Service] Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+nr[this.requests[t].statusCode]+" - "+this.requests[t].message);try{this.requestStatus$.next(this.requests[t]),this.requests.splice(t,1)}catch(a){this.requestStatus$.error(a),console.error("[Request Service] "+a),this.requests=[]}}else this.appService.sendSnackbarNotification(`ERROR: A request message that contains an unknown Request ID was received. Request Delta:
|
|
39
|
+
})();`}var de=(()=>{class n{config=v();defaultConfig=w(void 0);runtimeConfig=$e();_runtimeConfig=w(void 0);lastBaseRef;lastUserRef;lastMergedRef;options=se(()=>{let e=this.defaultConfig(),t=this._runtimeConfig();if(this.lastMergedRef&&e===this.lastBaseRef&&t===this.lastUserRef)return this.lastMergedRef;let i;return e&&t?i=ws(qt(e),qt(t)):e&&!t?i=qt(e):!e&&t?i=qt(t):i=void 0,this.lastBaseRef=e,this.lastUserRef=t,this.lastMergedRef=i,this.runtimeConfig.emit(i),i});firstPathKey=se(()=>{let e=this.options();if(!e?.paths)return;let t=Object.keys(e.paths);return t.length?t[0]:void 0});constructor(){R(()=>{let e=this.config();W(()=>{e&&this.setRuntimeConfig(e)})})}getPathCfg(e){return this.options()?.paths?.[e]}setRuntimeConfig(e){this._runtimeConfig.set(e)}initialize(e,t){e&&this.defaultConfig.set(e),t&&this._runtimeConfig.set(t)}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-runtime",""]],inputs:{config:[1,"config"]},outputs:{runtimeConfig:"runtimeConfig"},exportAs:["widgetRuntime"]})}return n})();var xm=["freeboardSkIframe"];function _m(n,o){if(n&1&&(H(0,"iframe",1,0),At(2,"safe")),n&2){let e=I();Pi("src",Bt(2,1,e.widgetUrl),pa)}}function Mm(n,o){n&1&&H(0,"div",4)}function km(n,o){if(n&1&&(_(0,"div",2),H(1,"iframe",3,0),At(3,"safe"),G(4,Mm,1,0,"div",4),k()),n&2){let e=I();g(),Pi("src",Bt(3,2,e.widgetUrl),pa),g(3),F(e.dashboard.isDashboardStatic()?-1:4)}}var El=(()=>{class n{id=v();type=v();theme=v();runtime=A(de,{optional:!0});appSettings=A(Zt);auth=A($a);dashboard=A(wt);iframe=ie.required("freeboardSkIframe");widgetUrl=null;disableWidgetShell=v(!1);swipeDisabled=v(!1);_authTokenSubscription=null;viewReady=w(!1);static DEFAULT_CONFIG={};constructor(){R(()=>{let e=this.runtime?.options();this._authTokenSubscription||(this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{let i=t?.token;this.widgetUrl=i?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${i}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`}))}),window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){if(this.viewReady.set(!0),this.iframe)try{this.iframe().nativeElement.onload=()=>this.injectSwipeScript()}catch{}}handleIframeGesture=e=>{if(!e.data)return;let t=this.id();if(e.data.gesture&&e.data.eventData.instanceId===t)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":window.document.dispatchEvent(new Event("openLeftSidenav",{bubbles:!0,cancelable:!0}));break;case"swiperight":window.document.dispatchEvent(new Event("openRightSidenav",{bubbles:!0,cancelable:!0}));break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===t){let{key:i,ctrlKey:a,shiftKey:r}=e.data.keyEventData,s=new KeyboardEvent("keydown",{key:i,ctrlKey:a,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(s)}};injectSwipeScript(){if(this.swipeDisabled())return;let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined.");return}try{let i=`kip-gesture-inject-${this.id()}`;if(t.getElementById(i))return;let a=go({instanceId:this.id()}),r=t.createElement("script");r.id=i,r.textContent=a,t.body.appendChild(r)}catch(i){console.warn("[FSK Widget] Failed to inject swipe script into iframe:",i)}}ngOnDestroy(){if(window.removeEventListener("message",this.handleIframeGesture),this._authTokenSubscription?.unsubscribe(),this.iframe){try{this.iframe().nativeElement.onload=null}catch(e){}try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.id()}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&te(i.iframe,xm,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],disableWidgetShell:[1,"disableWidgetShell"],swipeDisabled:[1,"swipeDisabled"]},decls:2,vars:1,consts:[["freeboardSkIframe",""],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",1,"freeboardsk-iframe","no-shell",3,"src"],[1,"widget-shell",2,"overflow","clip","position","relative","width","100%","height","100%"],["width","100%","height","100%","frameborder","0","sandbox","allow-same-origin allow-scripts allow-forms",1,"freeboardsk-iframe",3,"src"],[1,"widgetOverlay"]],template:function(t,i){t&1&&G(0,_m,3,3,"iframe",1)(1,km,5,4,"div",2),t&2&&F(i.disableWidgetShell()?0:1)},dependencies:[Tl],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return n})();var fo=class n{isChromeOnMac;isFirefox;static DEBUG=!1;static _suppressAllGesturesUntil=0;static _instanceCounter=0;_instanceId;static _laneOwners=new Map;static _activePointers=new Set;static _instanceToEl=new Map;swipeMinDistance=v(30);swipeMaxDuration=v(600);longPressMs=v(500);doubleTapInterval=v(300);tapSlop=v(20);pressMoveSlop=v(10);mode=v("all");disableGestures=v(!1);enablePress=v(!0);enableDoubleTap=v(!0);bridgeUiEvents=v(!1);_swipeMinDistance=30;_swipeMaxDuration=600;_longPressMs=500;_doubleTapInterval=300;_tapSlop=20;_pressMoveSlop=10;swipeleft=$e();swiperight=$e();swipeup=$e();swipedown=$e();press=$e();doubletap=$e();zone=A(We);destroyRef=A(rt);host=A(Ie);pointerId=null;startX=0;startY=0;startTime=0;tracking=!1;longPressTimer=null;pressFired=!1;ownedLanes={h:!1,v:!1,p:!1};cancelLongpressHandlers=[];lastTapTime=0;lastTapX=0;lastTapY=0;currentPointerType=null;lastTapUpTime=0;lastTapUpX=0;lastTapUpY=0;potentialDoubleTap=!1;onContextMenu=o=>{o.preventDefault()};lockedAxis=null;axisLockThreshold=6;static MOVES_BUFFER_SIZE=120;moveSamples=[];constructor(){this.isChromeOnMac=(()=>{let o=navigator.userAgent,e=navigator.platform;return/Chrome\//.test(o)&&/Mac/.test(e)&&!/Edg\//.test(o)&&!/OPR\//.test(o)})(),this.isFirefox=/Firefox\//.test(navigator.userAgent),this._instanceId=++n._instanceCounter,this.debug("GestureDirective instance created",{instanceId:this._instanceId});try{n._instanceToEl.set(this._instanceId,this.host.nativeElement)}catch{}this.zone.runOutsideAngular(()=>{let o=this.host.nativeElement;o.style.touchAction||(o.style.touchAction="none","webkitTouchCallout"in o.style&&(o.style.webkitTouchCallout="none")),o.addEventListener("pointerdown",this.onPointerDown,{passive:!1,capture:!0}),o.addEventListener("pointermove",this.onPointerMove,{passive:!0,capture:!0}),o.addEventListener("pointerrawupdate",this.onPointerRawUpdate,{passive:!0,capture:!0}),o.addEventListener("pointerup",this.onPointerUp,{passive:!0}),o.addEventListener("pointercancel",this.onPointerCancel,{passive:!0,capture:!0}),o.addEventListener("lostpointercapture",this.onPointerCancel,{passive:!0,capture:!0}),o.addEventListener("dblclick",this.onNativeDblClick,{passive:!0});let e=i=>{let a=i;if(a.detail?.__gid===this._instanceId||this.disableGestures())return;let s=this.modeAllowsHorizontal(),h=this.modeAllowsVertical(),f=this.modeAllowsPress(),b=this.modeAllowsDoubleTap();if(this.mode()==="dashboard"&&(a.type==="press"||a.type==="doubletap")){let C=a.target,M=C&&typeof C.closest=="function"?C.closest(".widget-container"):null;M&&M!==this.host.nativeElement&&(f=!1,b=!1)}switch(this.debug("rebroadcast gate",{type:a.type,allowH:s,allowV:h,allowP:f,allowDT:b}),a.type){case"press":f&&this.press.emit(a);break;case"doubletap":b&&this.doubletap.emit(a);break;case"swipeleft":s&&this.swipeleft.emit(a);break;case"swiperight":s&&this.swiperight.emit(a);break;case"swipeup":h&&this.swipeup.emit(a);break;case"swipedown":h&&this.swipedown.emit(a);break}},t={passive:!0};o.addEventListener("press",e,t),o.addEventListener("doubletap",e,t),o.addEventListener("swipeleft",e,t),o.addEventListener("swiperight",e,t),o.addEventListener("swipeup",e,t),o.addEventListener("swipedown",e,t),o.addEventListener("contextmenu",this.onContextMenu,{passive:!1}),this.destroyRef.onDestroy(()=>{o.removeEventListener("pointerdown",this.onPointerDown,{capture:!0}),o.removeEventListener("pointermove",this.onPointerMove,{capture:!0}),o.removeEventListener("pointerrawupdate",this.onPointerRawUpdate,{capture:!0}),o.removeEventListener("pointerup",this.onPointerUp),o.removeEventListener("pointercancel",this.onPointerCancel,{capture:!0}),o.removeEventListener("lostpointercapture",this.onPointerCancel,{capture:!0}),o.removeEventListener("dblclick",this.onNativeDblClick),o.removeEventListener("press",e,t),o.removeEventListener("doubletap",e,t),o.removeEventListener("swipeleft",e,t),o.removeEventListener("swiperight",e,t),o.removeEventListener("swipeup",e,t),o.removeEventListener("swipedown",e,t),o.removeEventListener("contextmenu",this.onContextMenu),this.longPressTimer&&(window.clearTimeout(this.longPressTimer),this.longPressTimer=null),this.removeLongpressCancelListeners();try{this.pointerId!==null&&typeof o.releasePointerCapture=="function"&&o.releasePointerCapture(this.pointerId)}catch{}this.pointerId=null,this.tracking=!1;try{n._instanceToEl.delete(this._instanceId)}catch{}})})}onNativeDblClick=o=>{if(this.disableGestures()||!this.modeAllowsDoubleTap())return;let e=new CustomEvent("doubletap",{detail:{x:o.clientX,y:o.clientY,dt:0}});this.zone.run(()=>this.doubletap.emit(e)),this.lastTapTime=0};onPointerDown=o=>{(this.tracking||this.pressFired||this.longPressTimer)&&(this.debug("pointerdown with stale state; force reset",{tracking:this.tracking,pressFired:this.pressFired,hasTimer:!!this.longPressTimer}),this.reset());let e=performance.now(),t=this.constructor._suppressAllGesturesUntil;if(e<t){this.debug("pointerdown suppressed by global window after longpress",{now:Math.round(e),suppressUntil:Math.round(t),remainingMs:Math.round(t-e)});return}if(this.disableGestures()||(this.debug("pointerdown",{x:o.clientX,y:o.clientY,pointerId:o.pointerId,pointerType:o.pointerType,sourceElement:o.target instanceof Element?o.target.outerHTML:String(o.target)}),this.pointerId!==null))return;let i=this.modeAllowsHorizontal(),a=this.modeAllowsVertical(),r=this.modeAllowsPress(),s=this.modeAllowsDoubleTap();if(this.mode()==="dashboard"){let j=o.target,X=j&&typeof j.closest=="function"?j.closest(".widget-container"):null;X&&X!==this.host.nativeElement&&(r=!1,s=!1)}if(!i&&!a&&!r&&!s){this.debug("ignoring pointerdown: no gestures enabled for current mode");return}let h=r||s,f=this.constructor._laneOwners,b=this.constructor._activePointers;b.has(o.pointerId)||(b.add(o.pointerId),f.has(o.pointerId)&&(this.debug("new pointer sequence; clearing stale lane owners",{pointerId:o.pointerId,prevOwners:f.get(o.pointerId)}),f.delete(o.pointerId)));let C=f.get(o.pointerId)??{};if(C.p!==void 0){let j=C.p,X=this.constructor._instanceToEl.get(j),Z=this.host.nativeElement,ee=o.target??null,be=this.ownerRelationshipSummary(X??null,Z,ee);this.debug("pre-acquire owners (press lane already owned)",{owners:C,ownerId:j,ownerEl:this.elDesc(X),hostEl:this.elDesc(Z),targetEl:this.elDesc(ee),rel:be})}else this.debug("pre-acquire owners",{owners:C});if(this.ownedLanes={h:!1,v:!1,p:!1},i&&C.h===void 0&&(C.h=this._instanceId,this.ownedLanes.h=!0),a&&C.v===void 0&&(C.v=this._instanceId,this.ownedLanes.v=!0),h&&C.p===void 0&&(C.p=this._instanceId,this.ownedLanes.p=!0),this.debug("lane acquisition",{allowH:i,allowV:a,allowPress:r,allowDT:s,wantP:h,acquired:this.ownedLanes,existingOwners:C}),!this.ownedLanes.h&&!this.ownedLanes.v&&!this.ownedLanes.p){if(h&&C.p!==void 0){let j=C.p,X=this.constructor._instanceToEl.get(j),Z=this.host.nativeElement,ee=o.target??null,be=this.ownerRelationshipSummary(X??null,Z,ee);this.debug("ignoring pointerdown: press lane not owned",{owners:C,ownerId:j,ownerEl:this.elDesc(X),hostEl:this.elDesc(Z),targetEl:this.elDesc(ee),rel:be})}else this.debug("ignoring pointerdown: other instance owns relevant lanes",{owners:C});return}switch(this.pointerId=o.pointerId,f.set(o.pointerId,C),this.tracking=!0,this.pressFired=!1,this.currentPointerType=o.pointerType||null,this.lockedAxis=null,this.isDebugEnabled()&&(this.moveSamples=[{t:performance.now(),x:o.clientX,y:o.clientY,source:"move"}]),o.pointerType){case"touch":this._swipeMinDistance=this.isChromeOnMac?Math.min(25,this.swipeMinDistance()):this.swipeMinDistance(),this._swipeMaxDuration=this.isChromeOnMac?Math.max(850,this.swipeMaxDuration()):this.swipeMaxDuration(),this._longPressMs=this.longPressMs(),this._doubleTapInterval=this.doubleTapInterval(),this._tapSlop=this.tapSlop(),this._pressMoveSlop=this.pressMoveSlop();break;case"pen":this._swipeMinDistance=20,this._swipeMaxDuration=500,this._longPressMs=400,this._doubleTapInterval=250,this._tapSlop=10,this._pressMoveSlop=8;break;case"mouse":default:this._swipeMinDistance=15,this._swipeMaxDuration=400,this._longPressMs=350,this._doubleTapInterval=250,this._tapSlop=8,this._pressMoveSlop=6;break}this.debug("thresholds",{pointerType:o.pointerType,swipeMinDistance:this._swipeMinDistance,swipeMaxDuration:this._swipeMaxDuration,longPressMs:this._longPressMs,doubleTapInterval:this._doubleTapInterval,tapSlop:this._tapSlop,pressMoveSlop:this._pressMoveSlop,axisLockThreshold:this.axisLockThreshold});let N=performance.now()-this.lastTapUpTime,D=Math.hypot(o.clientX-this.lastTapUpX,o.clientY-this.lastTapUpY);if(this.potentialDoubleTap=s&&N<=this._doubleTapInterval&&D<=this._tapSlop,this.startX=o.clientX,this.startY=o.clientY,this.startTime=performance.now(),o.pointerType!=="mouse")try{this.host.nativeElement.setPointerCapture(o.pointerId),this.debug("setPointerCapture success",{pointerId:o.pointerId,pointerType:o.pointerType})}catch{this.debug("setPointerCapture failed",{pointerId:o.pointerId,pointerType:o.pointerType})}this.longPressTimer&&(this.debug("longpress timer cleared on pointerdown"),window.clearTimeout(this.longPressTimer)),!this.potentialDoubleTap&&r&&this.ownedLanes.p?(this.addLongpressCancelListeners(),this.debug("longpress timer scheduled",{scheduleAt:Math.round(performance.now()),firesAt:Math.round(performance.now()+this._longPressMs),longPressMs:this._longPressMs,pressMoveSlop:this._pressMoveSlop,ownedLanes:this.ownedLanes,pointerType:this.currentPointerType}),this.longPressTimer=window.setTimeout(()=>{if(this.debug("longpress timer fired",{tracking:this.tracking,firedAt:Math.round(performance.now())}),!this.tracking){this.debug("longpress cancelled: not tracking");return}let j=o.clientX-this.startX,X=o.clientY-this.startY;if(Math.abs(j)<=this._pressMoveSlop&&Math.abs(X)<=this._pressMoveSlop){this.debug("longpress recognized",{x:this.startX,y:this.startY}),this.isFirefox&&this.currentPointerType!=="mouse"&&this.suppressNextClick(500),this.currentPointerType!=="mouse"&&(this.constructor._suppressAllGesturesUntil=performance.now()+600,this.debug("set global suppression window after longpress",{until:Math.round(this.constructor._suppressAllGesturesUntil)})),this.pressFired=!0;let Z={x:this.startX,y:this.startY,center:{x:this.startX,y:this.startY}};this.zone.run(()=>this.emitPressEvent(Z)),this.reset()}this.longPressTimer=null,this.removeLongpressCancelListeners()},this._longPressMs)):this.debug("longpress not scheduled",{potentialDoubleTap:this.potentialDoubleTap,allowPress:r,ownedPressLane:this.ownedLanes.p,reason:this.potentialDoubleTap?"awaiting doubletap":r?this.ownedLanes.p?"unknown":"press lane not owned":"press disabled by mode/flag",ownersForPointer:C})};suppressNextClick(o=500){this.debug("suppressNextClick (Firefox)",{timeoutMs:o});let e={capture:!0,passive:!1},t=["click","pointerup","mouseup","mousedown","auxclick","touchend","touchstart","contextmenu"],i=s=>{this.debug("suppress ghost event",s.type),s.preventDefault(),s.stopPropagation();let h=s;typeof h.stopImmediatePropagation=="function"&&h.stopImmediatePropagation()},a=()=>{t.forEach(s=>document.removeEventListener(s,i,e)),window.clearTimeout(r)};t.forEach(s=>document.addEventListener(s,i,e));let r=window.setTimeout(a,o)}onPointerMove=o=>this.handlePointerMotion(o,"move");onPointerRawUpdate=o=>this.handlePointerMotion(o,"raw");handlePointerMotion(o,e){if(!(!this.tracking||o.pointerId!==this.pointerId)&&!this.pressFired){if(this.recordMove(o,e),this.longPressTimer){let t=Math.abs(o.clientX-this.startX),i=Math.abs(o.clientY-this.startY);(t>this._pressMoveSlop||i>this._pressMoveSlop)&&(this.debug(`longpress cancelled by pointer${e==="raw"?"rawupdate":"move"}: moved beyond slop`,{dx:t,dy:i,slop:this._pressMoveSlop}),window.clearTimeout(this.longPressTimer),this.longPressTimer=null,this.removeLongpressCancelListeners())}if(!this.lockedAxis){let t=o.clientX-this.startX,i=o.clientY-this.startY,a=Math.abs(t),r=Math.abs(i);(a>=this.axisLockThreshold||r>=this.axisLockThreshold)&&(this.lockedAxis=a>=r?"x":"y",this.debug(`axis locked${e==="raw"?" (raw)":""}`,{axis:this.lockedAxis,dx:t,dy:i}))}}}onPointerUp=o=>{this.debug("pointerup",{x:o.clientX,y:o.clientY,pointerId:o.pointerId}),!(!this.tracking||o.pointerId!==this.pointerId)&&this.finishGesture(o,!1)};onPointerCancel=o=>{let e=this.host.nativeElement;this.debug("pointercancel",{pointerId:o.pointerId,pointerType:o.pointerType,event:o,documentActiveElement:document.activeElement,elementIsConnected:e.isConnected,elementVisibility:e.offsetParent!==null,hasPointerCapture:typeof e.hasPointerCapture=="function"?e.hasPointerCapture(o.pointerId):void 0,documentHidden:document.hidden}),!(!this.tracking||o.pointerId!==this.pointerId)&&this.finishGesture(o,!0)};finishGesture(o,e){this.debug("finishGesture begin",{cancelled:e,hasTimer:!!this.longPressTimer,pressFired:this.pressFired,ownedLanes:this.ownedLanes});try{let b=this.constructor._activePointers.delete(o.pointerId);this.debug("activePointers delete",{pointerId:o.pointerId,deleted:b})}catch{}let t=performance.now(),i=t-this.startTime,a=o.clientX-this.startX,r=o.clientY-this.startY,s=Math.abs(a),h=Math.abs(r);if(this.longPressTimer&&(this.debug(`longpress cancelled by ${e?"pointercancel":"pointerup"}`,{durationMs:Math.round(i),absDx:s,absDy:h,pressMoveSlop:this._pressMoveSlop}),window.clearTimeout(this.longPressTimer),this.longPressTimer=null,this.removeLongpressCancelListeners()),this.pressFired){this.debug(`${e?"pointercancel":"pointerup"} after longpress: resetting gesture state`),this.reset();return}if(i<=this._swipeMaxDuration){let b=this.modeAllowsHorizontal(),C=this.modeAllowsVertical(),M=b&&this.ownedLanes.h&&(this.lockedAxis==="x"&&s>=this._swipeMinDistance||!this.lockedAxis&&s>=this._swipeMinDistance&&s>=h),N=C&&this.ownedLanes.v&&(this.lockedAxis==="y"&&h>=this._swipeMinDistance||!this.lockedAxis&&h>=this._swipeMinDistance&&h>s);if(this.debug("swipe gating",{allowH:b,allowV:C,owned:this.ownedLanes,lockedAxis:this.lockedAxis,horizontalOk:M,verticalOk:N}),M){this.debugSwipeDecision({phase:"recognized",axis:"x",dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:e?"horizontal swipe (on cancel)":"horizontal swipe"}),this.debug("swipe detected",{direction:a>0?"right":"left",dx:a,dy:r,duration:i}),this.zone.run(()=>{a>0?this.emitSwipeEvent("swiperight",{dx:a,dy:r,duration:i}):this.emitSwipeEvent("swipeleft",{dx:a,dy:r,duration:i})}),this.reset();return}else if(N){this.debugSwipeDecision({phase:"recognized",axis:"y",dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:e?"vertical swipe (on cancel)":"vertical swipe"}),this.debug("swipe detected",{direction:r>0?"down":"up",dx:a,dy:r,duration:i}),this.zone.run(()=>{r>0?this.emitSwipeEvent("swipedown",{dx:a,dy:r,duration:i}):this.emitSwipeEvent("swipeup",{dx:a,dy:r,duration:i})}),this.reset();return}if(!e){let D=this.lockedAxis??(s>=h?"x":"y"),j=D==="x"?s:h,X=[];j<this._swipeMinDistance&&X.push(`distance ${Math.round(j)}px < min ${this._swipeMinDistance}px`),!this.lockedAxis&&(D==="x"&&h>s||D==="y"&&s>h)&&X.push("orthogonal movement dominated"),this.debugSwipeDecision({phase:"rejected",axis:D,dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:X.join("; ")||"fell through conditions"})}}else e||this.debugSwipeDecision({phase:"rejected",axis:this.lockedAxis??(s>=h?"x":"y"),dx:a,dy:r,absDx:s,absDy:h,duration:i,reason:`duration ${Math.round(i)}ms exceeds max ${this._swipeMaxDuration}ms`});if(!e&&this.ownedLanes.p&&this.modeAllowsDoubleTap()&&this.currentPointerType!=="mouse"&&s<=this._tapSlop&&h<=this._tapSlop&&i<this._longPressMs){let b=t,C=b-this.lastTapTime,M=Math.hypot(o.clientX-this.lastTapX,o.clientY-this.lastTapY);C<=this._doubleTapInterval&&M<=this._tapSlop?(this.zone.run(()=>this.doubletap.emit(new CustomEvent("doubletap",{detail:{x:o.clientX,y:o.clientY,dt:C}}))),this.lastTapTime=0,this.potentialDoubleTap=!1):(this.lastTapTime=b,this.lastTapX=o.clientX,this.lastTapY=o.clientY)}!e&&!this.pressFired&&s<=this._tapSlop&&h<=this._tapSlop&&i<this._longPressMs?(this.lastTapUpTime=t,this.lastTapUpX=o.clientX,this.lastTapUpY=o.clientY):this.potentialDoubleTap=!1,this.reset()}addLongpressCancelListeners(){this.debug("addLongpressCancelListeners");let o=r=>{this.debug("longpress cancelled by event",r?.type),this.longPressTimer&&(window.clearTimeout(this.longPressTimer),this.longPressTimer=null),this.removeLongpressCancelListeners()},e=this.host.nativeElement,t=document,i={capture:!0},a=[{type:"pointermove",handler:o,opts:i,targets:["el","doc"]},{type:"lostpointercapture",handler:o,opts:i,targets:["el","doc"]}];this.currentPointerType!=="mouse"&&a.push({type:"pointerleave",handler:o,opts:i,targets:["el","doc"]},{type:"pointerout",handler:o,opts:i,targets:["el","doc"]},{type:"blur",handler:o,opts:i,targets:["window"]}),this.cancelLongpressHandlers=a;for(let r of this.cancelLongpressHandlers){let{type:s,handler:h,opts:f,targets:b}=r;b&&b.includes("el")&&e.addEventListener(s,h,f),b&&b.includes("doc")&&t.addEventListener(s,h,f),b&&b.includes("window")&&window.addEventListener(s,h,f)}}removeLongpressCancelListeners(){this.debug("removeLongpressCancelListeners");let o=this.host.nativeElement,e=document;for(let t of this.cancelLongpressHandlers){let{type:i,handler:a,opts:r,targets:s}=t;s&&s.includes("el")&&o.removeEventListener(i,a,r),s&&s.includes("doc")&&e.removeEventListener(i,a,r),s&&s.includes("window")&&window.removeEventListener(i,a,r)}this.cancelLongpressHandlers=[]}reset(){this.debug("reset gesture state");try{let o=this.host.nativeElement;this.pointerId!==null&&typeof o.releasePointerCapture=="function"&&o.releasePointerCapture(this.pointerId)}catch{}try{if(this.pointerId!==null){let o=this.constructor._laneOwners,e=o.get(this.pointerId);e&&(this.debug("releasing lane ownership",{pointerId:this.pointerId,ownersBefore:e,ownedByThis:this.ownedLanes,instanceId:this._instanceId}),this.ownedLanes.h&&e.h===this._instanceId&&delete e.h,this.ownedLanes.v&&e.v===this._instanceId&&delete e.v,this.ownedLanes.p&&e.p===this._instanceId&&delete e.p,!e.h&&!e.v&&!e.p?o.delete(this.pointerId):o.set(this.pointerId,e),this.debug("lane owners after release",{pointerId:this.pointerId,owners:e}))}}catch{}try{if(this.pointerId!==null){let o=this.constructor._activePointers.delete(this.pointerId);this.debug("activePointers delete (reset)",{pointerId:this.pointerId,deleted:o})}}catch{}this.pointerId=null,this.tracking=!1,this.pressFired=!1,this.currentPointerType=null,this.lockedAxis=null,this.ownedLanes={h:!1,v:!1,p:!1},this.removeLongpressCancelListeners()}isDebugEnabled(){try{return this.constructor.DEBUG}catch{return this.constructor.DEBUG}}recordMove(o,e){this.isDebugEnabled()&&(this.moveSamples.push({t:performance.now(),x:o.clientX,y:o.clientY,source:e}),this.moveSamples.length>this.constructor.MOVES_BUFFER_SIZE&&this.moveSamples.shift())}debugSwipeDecision(o){if(!this.isDebugEnabled())return;let e=this.moveSamples,t=e[e.length-1],i;if(e.length>=2){let a=t?.t??performance.now(),r=100,s=e.length-2;for(;s>=0&&a-e[s].t<r;)s--;s=Math.max(0,s);let h=e[s],f=Math.max(1,(t?.t??a)-h.t),b=(t?.x??0)-h.x,C=(t?.y??0)-h.y;i=(o.axis==="x"?Math.abs(b):Math.abs(C))/f}this.debug("swipe decision",{phase:o.phase,axis:o.axis,dx:o.dx,dy:o.dy,absDx:o.absDx,absDy:o.absDy,durationMs:Math.round(o.duration),velocityAvgPxPerMs:o.velocity??(o.axis==="x"?o.absDx:o.absDy)/Math.max(1,o.duration),recentVelocity100msPxPerMs:i,minDistance:this._swipeMinDistance,maxDuration:this._swipeMaxDuration,lockedAxis:this.lockedAxis,reason:o.reason,samplesCount:e.length,firstSample:e[0],lastSample:e[e.length-1]})}debug(...o){this.isDebugEnabled()&&console.debug(`[GestureDirective][#${this._instanceId}]`,...o)}emitSwipeEvent(o,e){e.__gid=this._instanceId;let t=new CustomEvent(o,{detail:e,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(t)}catch{}if(this.debug("emitSwipeEvent",{name:o,detail:e}),this.bridgeUiEvents()&&(o==="swipeleft"||o==="swiperight"))try{let i=o==="swipeleft"?"openLeftSidenav":"openRightSidenav";document.dispatchEvent(new CustomEvent(i,{detail:e}))}catch{}switch(o){case"swipeleft":this.swipeleft.emit(t);break;case"swiperight":this.swiperight.emit(t);break;case"swipeup":this.swipeup.emit(t);break;case"swipedown":this.swipedown.emit(t);break}}emitPressEvent(o){let e=performance.now();if(e-this._lastPressEmitTs<80){this.debug("press emit suppressed by cooldown");return}this._lastPressEmitTs=e,o.__gid=this._instanceId;let t=new CustomEvent("press",{detail:o,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(t)}catch{}this.debug("emitPressEvent",{detail:o}),this.press.emit(t)}emitDoubleTapEvent(o){o.__gid=this._instanceId;let e=new CustomEvent("doubletap",{detail:o,bubbles:!0,composed:!0});try{this.host.nativeElement.dispatchEvent(e)}catch{}this.doubletap.emit(e)}modeAllowsHorizontal(){let o=this.mode();return this.disableGestures()?!1:o==="all"||o==="horizontal"}modeAllowsVertical(){let o=this.mode();return this.disableGestures()?!1:o==="all"||o==="dashboard"}modeAllowsPress(){let o=this.mode();return this.disableGestures()?!1:(o==="all"||o==="dashboard"||o==="press"||o==="editor")&&this.enablePress()}modeAllowsDoubleTap(){let o=this.mode();return this.disableGestures()?!1:(o==="all"||o==="dashboard"||o==="press"||o==="editor")&&this.enableDoubleTap()}elDesc(o){if(!o)return null;try{let e=o,t=o.tagName?.toLowerCase?.()??"node",i=e.id?`#${e.id}`:"",a=e.className&&typeof e.className=="string"?e.className:"",r=a?"."+a.split(/\s+/).filter(Boolean).slice(0,4).join("."):"";return`${t}${i}${r}`}catch{return"node"}}ownerRelationshipSummary(o,e,t){try{return{owner:this.elDesc(o),host:this.elDesc(e),target:this.elDesc(t),ownerIsConnected:o?o.isConnected:null,hostIsConnected:e.isConnected,targetIsConnected:t?t.isConnected:null,targetInOwner:o&&t?o.contains(t):null,targetInHost:t?e.contains(t):null,ownerInHost:o?e.contains(o):null,hostInOwner:o?o.contains(e):null}}catch{return{}}}static \u0275fac=function(e){return new(e||n)};static \u0275dir=st({type:n,selectors:[["","kipGestures",""]],inputs:{swipeMinDistance:[1,"swipeMinDistance"],swipeMaxDuration:[1,"swipeMaxDuration"],longPressMs:[1,"longPressMs"],doubleTapInterval:[1,"doubleTapInterval"],tapSlop:[1,"tapSlop"],pressMoveSlop:[1,"pressMoveSlop"],mode:[1,"mode"],disableGestures:[1,"disableGestures"],enablePress:[1,"enablePress"],enableDoubleTap:[1,"enableDoubleTap"],bridgeUiEvents:[1,"bridgeUiEvents"]},outputs:{swipeleft:"swipeleft",swiperight:"swiperight",swipeup:"swipeup",swipedown:"swipedown",press:"press",doubletap:"doubletap"}})};(()=>{try{(typeof localStorage<"u"?localStorage.getItem("kip:gesturesDebug"):null)==="1"&&(fo.DEBUG=!0);let o=window;o.kipGesturesDebug=e=>{let t=fo;typeof e=="boolean"?t.DEBUG=e:t.DEBUG=!t.DEBUG;try{localStorage.setItem("kip:gesturesDebug",t.DEBUG?"1":"0")}catch{}return console.info("KIP gestures debug:",t.DEBUG),t.DEBUG}}catch{}})();var nr={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."},Di=(()=>{class n{signalKDeltaService=A(Ws);appSettingsService=A(Zt);appService=A(Lt);auth=A($a);requestStatus$=new Nt;requests=[];constructor(){this.signalKDeltaService.subscribeRequestUpdates().pipe(et()).subscribe(e=>{this.updateRequest(e)})}requestDeviceAccessToken(){let e=qi.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=qi.create(),a={requestId:i,login:{username:e,password:t}};console.log("[Request Service] Requesting User Login"),this.signalKDeltaService.publishDelta(a);let r={requestId:i,state:null,statusCode:null};return this.requests.push(r),i}putRequest(e,t,i){if(typeof t>"u")return console.error("[Request Service] Undefined value for PUT request"),null;if(!e)return console.error("[Request Service] Path is required for PUT request"),null;let a=qi.create(),r=e.replace(/^(self\.)/,""),h={context:"vessels.self",requestId:a,put:{path:r,value:t}};this.signalKDeltaService.publishDelta(h);let f={requestId:a,state:null,statusCode:null,widgetUUID:i};return this.requests.push(f),a}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=nr[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+" - "+nr[this.requests[t].statusCode]+" - "+this.requests[t].message),console.error("[Request Service] Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+nr[this.requests[t].statusCode]+" - "+this.requests[t].message);try{this.requestStatus$.next(this.requests[t]),this.requests.splice(t,1)}catch(a){this.requestStatus$.error(a),console.error("[Request Service] "+a),this.requests=[]}}else this.appService.sendSnackbarNotification(`ERROR: A request message that contains an unknown Request ID was received. Request Delta:
|
|
40
40
|
`+JSON.stringify(e)),console.error(`[Request Service] A Request message that contains an unknown Request ID was received. from delta:
|
|
41
|
-
`+JSON.stringify(e))}subscribeRequest(){return this.requestStatus$.asObservable()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Dl=(()=>{class n{_storage=A(Ms);_settings=A($t);upgrading=w(!1);error=w(null);messages=w([]);legacyFileVersion=9;legacyConfigVersion=10;targetConfigVersion=12;static widgetTypeToSelectorMap={WidgetNumeric:"widget-numeric",WidgetTextGeneric:"widget-text",WidgetDateGeneric:"widget-datetime",WidgetBooleanSwitch:"widget-boolean-switch",WidgetBlank:"widget-blank",WidgetStateComponent:"widget-button",WidgetSimpleLinearComponent:"widget-simple-linear",WidgetGaugeNgLinearComponent:"widget-gauge-ng-linear",WidgetGaugeNgRadialComponent:"widget-gauge-ng-radial",WidgetGaugeNgCompassComponent:"widget-gauge-ng-compass",WidgetGaugeComponent:"widget-gauge-steel",WidgetWindComponent:"widget-wind-steer",WidgetFreeboardskComponent:"widget-freeboardsk",WidgetAutopilotComponent:"widget-autopilot",WidgetDataChart:"widget-data-chart",WidgetRaceTimerComponent:"widget-racetimer",WidgetIframeComponent:"widget-iframe",WidgetTutorial:"widget-tutorial"};runUpgrade(e){return it(this,null,function*(){if(this.error.set(null),this.upgrading.set(!0),this.messages.set([]),e===void 0)try{let t=yield this._storage.listConfigs(this.legacyFileVersion);for(let i of t){let a=yield this.transformConfig(i);if(a)try{yield this._storage.setConfig(a.scope,a.name,a.newConfiguration),yield this._storage.setConfig(a.scope,a.name,a.oldConfiguration,this.legacyFileVersion),this.pushMsg(`[Upgrade] Configuration ${a.scope}/${a.name} upgraded to version ${this.targetConfigVersion}. Old configuration patched to version 0.`)}catch(r){this.pushError(`[Upgrade] Error saving configuration for ${i.name}: ${r.message}`)}}setTimeout(()=>this._settings.reloadApp(),1500)}catch(t){this.pushError("Error fetching configuration data: "+t.message)}finally{this.upgrading.set(!1)}else if(e===11&&this._settings.useSharedConfig)try{let t=yield this._storage.listConfigs(11);for(let i of t)try{let a=yield this._storage.getConfig(i.scope,i.name,11),r=Ut(a);this.pushMsg(`[Upgrade] Saving configuration backup to file ${i.scope}/${i.name}...`),yield this._storage.setConfig(i.scope,i.name,r,11.99),this.pushMsg(`[Upgrade] ${i.scope}/${i.name} -> v${this.targetConfigVersion}.`);let s=this.upgradeConfig(a);if(!s)continue;this.pushMsg("[Upgrade] Saving upgraded configurations..."),yield this._storage.setConfig(i.scope,i.name,s)}catch(a){this.pushError(`[Upgrade] Error upgrading ${i.scope}/${i.name}: ${a.message}`)}this.pushMsg("[Upgrade] Reloading app to finalize upgrade..."),setTimeout(()=>this._settings.reloadApp(),1500)}catch(t){this.pushError("Error fetching configuration data. Aborting upgrade. Details: "+t.message)}else if(e===11&&!this._settings.useSharedConfig){let t={app:null,dashboards:null,theme:null};t.app=this._settings.getAppConfig(),t.dashboards=this._settings.getDashboardConfig(),t.theme=this._settings.getThemeConfig(),t.app.configVersion=this.targetConfigVersion,this.addSplitShellConfigKeys(t.app);let i=this.extractAppDatasets(t.app);this.upgradeDashboardWidgets(t.dashboards),this.migrateDatasetsToDataCharts(i,t.dashboards),this.migrateUseNeedleToEnableNeedle(t.dashboards),localStorage.setItem("appConfig",JSON.stringify(t.app)),localStorage.setItem("dashboardsConfig",JSON.stringify(t.dashboards)),localStorage.setItem("themeConfig",JSON.stringify(t.theme)),setTimeout(()=>this._settings.reloadApp(),1500),this.upgrading.set(!1)}else{let t={app:null,widget:null,layout:null,theme:null};t.app=this._settings.loadConfigFromLocalStorage("appConfig"),t.widget=this._settings.loadConfigFromLocalStorage("widgetConfig"),t.layout=this._settings.loadConfigFromLocalStorage("layoutConfig"),t.theme=this._settings.loadConfigFromLocalStorage("themeConfig");let i=this.transformApp(t.app),a=this.extractAppDatasets(i),r=this.transformTheme(t.theme),s=t.layout?.rootSplits||[],h=t.layout?.splitSets||[],f=t.widget?.widgets||[],b=s.map((C,M)=>{let V=this.extractWidgetsFromSplitSets(h,f,C);return{id:C,name:`Dashboard ${M+1}`,configuration:V}});this.migrateDatasetsToDataCharts(a,b),this.migrateUseNeedleToEnableNeedle(b),localStorage.setItem("appConfig",JSON.stringify(i)),localStorage.setItem("dashboardsConfig",JSON.stringify(b)),localStorage.setItem("themeConfig",JSON.stringify(r)),setTimeout(()=>this._settings.reloadApp(),1500),this.upgrading.set(!1)}})}startFresh(){if(this.error.set(null),this.upgrading.set(!0),this._storage.initConfig===null)this._storage.listConfigs(this.legacyFileVersion).then(e=>it(this,null,function*(){for(let t of e){let i=yield this._storage.getConfig(t.scope,t.name,this.legacyFileVersion);if(i.app.configVersion=0,t.scope==="global")try{setTimeout(()=>{this._storage.patchGlobal(t.name,t.scope,i,"replace",this.legacyFileVersion),this.pushMsg(`[Retired] Configuration ${t.scope}/${t.name} patched to version 0.`)},750)}catch{this.pushError(`[Upgrade] Error saving configuration for ${t.name}.`)}else try{yield this._storage.setConfig(t.scope,t.name,i,this.legacyFileVersion),this.pushMsg(`[Retired] Configuration ${t.scope}/${t.name} patched to version 0.`)}catch{this.pushError(`[Upgrade] Error saving configuration for ${t.name}.`)}}})).catch(e=>this.pushError("Error fetching configuration data: "+e.message)).finally(()=>{this.upgrading.set(!1),this._settings.resetSettings()});else{let e={app:null,dashboards:null,theme:null};e.app=this._settings.loadConfigFromLocalStorage("appConfig"),e.theme=this._settings.loadConfigFromLocalStorage("themeConfig"),e.app.configVersion=this.targetConfigVersion,e.app.nightModeBrightness=.27,e.theme.themeName="",localStorage.setItem("appConfig",JSON.stringify(e.app)),localStorage.setItem("themeConfig",JSON.stringify(e.theme)),localStorage.removeItem("widgetConfig"),localStorage.removeItem("layoutConfig"),this.upgrading.set(!1)}}transformConfig(e){return it(this,null,function*(){let t=yield this._storage.getConfig(e.scope,e.name,this.legacyFileVersion);if(t.app.configVersion!==this.legacyConfigVersion)return this.pushError(`[Upgrade Service] ${e.scope}/${e.name} is not an upgradable version ${this.legacyConfigVersion} config. Skipping.`),null;let i=this.transformApp(t.app),a=this.extractAppDatasets(i),r=this.transformTheme(t.theme),s=t.layout?.rootSplits||[],h=t.layout?.splitSets||[],f=t.widget?.widgets||[],b=s.map((M,V)=>{let D=this.extractWidgetsFromSplitSets(h,f,M);return{id:M,name:`Dashboard ${V+1}`,configuration:D}});this.migrateDatasetsToDataCharts(a,b),this.migrateUseNeedleToEnableNeedle(b);let C=Ut(t);return C.app.configVersion=0,{scope:e.scope,name:e.name,newConfiguration:{app:i,theme:r,dashboards:b},oldConfiguration:C}})}extractAppDatasets(e){if(!e||!Array.isArray(e.dataSets))return[];let t=0,i=[],a=[];e.dataSets.forEach((r,s)=>{(r.editable===!0||r.editable===void 0)&&(a.push({period:r.period,datachartPath:r.path,datachartSource:r.pathSource,timeScale:r.timeScaleFormat,datasetUUID:r.uuid}),i.push(s),t++)});for(let r=i.length-1;r>=0;r--)e.dataSets.splice(i[r],1);return t&&this.pushMsg(`[Upgrade] Retired ${t} Dataset(s).`),a}migrateDatasetsToDataCharts(e,t){!Array.isArray(e)||e.length===0||Array.isArray(t)&&t.forEach(i=>{let a=0;i&&Array.isArray(i.configuration)&&(i.configuration.forEach(r=>{if(r&&typeof r=="object"&&r.input?.widgetProperties?.config){let s=e.find(h=>h.datasetUUID===r.input?.widgetProperties?.config.datasetUUID);s&&(Object.entries(s).forEach(([h,f])=>{h!=="datasetUUID"&&(r.input.widgetProperties.config[h]=f)}),delete r.input.widgetProperties.config?.datasetUUID,delete r.input.widgetProperties.config?.timeScaleFormat,a++)}}),a&&this.pushMsg(`[Upgrade] Migrated ${a} Realtime Data Chart widget(s).`))})}transformWidget(e,t){if(e.color==="white"&&(e.color="contrast"),e.textColor){switch(e.textColor){case"text":e.color="contrast";break;case"primary":e.color="blue";break;case"accent":e.color="yellow";break;case"warn":e.color="purple";break;case"nobar":t==="WidgetGaugeNgLinearComponent"&&(e.color="blue",e.gauge=e.gauge||{},e.gauge.useNeedle=!1);break;default:e.color=e.textColor}delete e.textColor}return e}transformApp(e){if(!e)return null;let t=Ut(e);return t.configVersion=this.targetConfigVersion,t.nightModeBrightness=.27,t.splitShellEnabled=!1,t.splitShellSide="left",t.splitShellWidth=.2,t.splitShellSwipeDisabled=!1,t}transformTheme(e){return e?{themeName:""}:null}upgradeConfig(e){try{if(e.app.configVersion!==11)return this.pushError(`[Upgrade Service] Config version ${e.app.configVersion} upgrade is not supported. Skipping...`),null;this.addSplitShellConfigKeys(e.app);let t=this.extractAppDatasets(e.app);this.migrateDatasetsToDataCharts(t,e.dashboards),this.migrateUseNeedleToEnableNeedle(e.dashboards);let i=0,a=0;if(Array.isArray(e.dashboards)){for(let r of e.dashboards)if(r&&Array.isArray(r.configuration)){for(let s of r.configuration)if(s&&typeof s=="object"){s.selector!=="widget-host2"&&(s.selector="widget-host2",i++);let h=f=>{let b=s[f],C=typeof b=="string"?Number(b):b;Number.isFinite(C)&&C!==0&&(s[f]=C*2,a++)};if(h("w"),h("h"),h("x"),h("y"),s.w===void 0||s.w===null){let f=s.minW,b=f||2;s.w=b,a++}if(s.h===void 0||s.h===null){let f=s.minH,b=f||2;s.h=b,a++}}}}return i&&this.pushMsg(`[Upgrade] Updated ${i} widget selector(s) to 'widget-host2'.`),a&&this.pushMsg(`[Upgrade] Doubled widget grid metrics for ${a} non-zero (w/h/x/y) entries.`),e.app.configVersion=12,{app:e.app,theme:e.theme,dashboards:e.dashboards}}catch(t){return this.pushError(`[Upgrade Service] Error upgrading ${e.app.configVersion}: ${t.message}`),null}}migrateUseNeedleToEnableNeedle(e){if(!Array.isArray(e))return;let t=0;for(let i of e)if(!(!i||!Array.isArray(i.configuration)))for(let a of i.configuration){let h=a.input?.widgetProperties?.config?.gauge;!h||typeof h!="object"||Object.prototype.hasOwnProperty.call(h,"useNeedle")&&(h.enableNeedle===void 0?h.enableNeedle=!!h.useNeedle:h.enableNeedle=!!h.enableNeedle,delete h.useNeedle,t++)}t&&this.pushMsg(`[Upgrade] Renamed gauge.useNeedle -> gauge.enableNeedle on ${t} widget(s).`)}addSplitShellConfigKeys(e){e&&(e.splitShellEnabled===void 0&&(e.splitShellEnabled=!1),e.splitShellSide===void 0&&(e.splitShellSide="left"),e.splitShellWidth===void 0&&(e.splitShellWidth=.2),e.splitShellSwipeDisabled===void 0&&(e.splitShellSwipeDisabled=!1))}upgradeDashboardWidgets(e){let t=0,i=0;if(Array.isArray(e)){for(let a of e)if(!(!a||!Array.isArray(a.configuration)))for(let r of a.configuration){if(!r||typeof r!="object")continue;r.selector!=="widget-host2"&&(r.selector="widget-host2",t++);let s=h=>{let f=r[h],b=typeof f=="string"?Number(f):f;Number.isFinite(b)&&b!==0&&(r[h]=b*2,i++)};if(s("w"),s("h"),s("x"),s("y"),r.w===void 0||r.w===null){let h=r.minW,f=typeof h=="string"?Number(h):h,b=Number.isFinite(f)&&f>0?f:2;r.w=b*2,i++}if(r.h===void 0||r.h===null){let h=r.minH,f=typeof h=="string"?Number(h):h,b=Number.isFinite(f)&&f>0?f:2;r.h=b*2,i++}}}t&&this.pushMsg(`[Upgrade] Updated ${t} localStorage widget selector(s) to 'widget-host2'.`),i&&this.pushMsg(`[Upgrade] Doubled grid metrics for ${i} non-zero (w/h/x/y) entries.`)}extractWidgetsFromSplitSets(e,t,i){let a=new Map(t.map(j=>[j.uuid,j])),r=[],s=[],h=0,f=0,b=24,C=24,M=3,V=3,D=j=>{let X=e.find(Z=>Z.uuid===j);if(!X){s.push(`Missing splitSet with UUID: ${j}`);return}X.splitAreas.forEach(Z=>{if(Z.type==="widget"){let ee=a.get(Z.uuid);if(ee){if(ee.type==="WidgetBlank")return;if(f+V>C){s.push(`No space left for widget: ${ee.uuid}`);return}let be=n.widgetTypeToSelectorMap[ee.type]||"widget-unknown",Oe=this.transformWidget(ee.config,ee.type);r.push({id:ee.uuid,selector:"widget-host2",input:{widgetProperties:{type:be,uuid:ee.uuid,config:Oe}},x:h,y:f,w:M,h:V}),h+=M,h>=b&&(h=0,f+=V)}else s.push(`Missing widget with UUID: ${Z.uuid}`)}else Z.type==="splitSet"&&D(Z.uuid)})};return D(i),s.length&&this.pushMsg("Transformation Issues: "+s.join("; ")),r}pushMsg(e){this.messages.update(t=>[...t,e])}pushError(e){this.error.set(e),this.pushMsg(e)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function Tm(n,o){n&1&&Ba(0)}var Pl=(()=>{class n{data=A(wi);static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-frame"]],decls:8,vars:3,consts:[[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"dialog-content-padding"],[4,"ngComponentOutlet"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"h6",1),m(2),u(),d(3,"button",2)(4,"mat-icon"),m(5,"close"),u()()(),d(6,"mat-dialog-content",3),Bi(7,Tm,1,0,"ng-container",4),u()),t&2&&(g(2),ne(i.data.title),g(),T("mat-dialog-close",!1),g(4),T("ngComponentOutlet",i.data.componentType))},dependencies:[ze,Xt,xi,_i,Mi,Xe,xt,Cs],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return n})();function Em(n,o){if(n&1&&(d(0,"button",4),m(1),u()),n&2){let e=I();T("mat-dialog-close",!0),g(),ne(e.data.confirmBtnText)}}var Il=(()=>{class n{data=A(wi);static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-confirmation"]],decls:12,vars:6,consts:[[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"h5",1),m(2),u(),d(3,"button",2)(4,"mat-icon"),m(5,"close"),u()()(),d(6,"mat-dialog-content"),m(7),u(),d(8,"mat-dialog-actions",3)(9,"button",4),m(10),u(),G(11,Em,2,2,"button",4),u()),t&2&&(g(2),ne(i.data.title),g(),T("mat-dialog-close",!1),g(4),ye(" ",i.data.message,`
|
|
42
|
-
`),g(2),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?11:-1))},dependencies:[ze,Xt,xi,_i,zi,Mi,Xe,lt,xt],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return n})();function Dm(n,o){if(n&1&&(d(0,"button",9),m(1),u()),n&2){let e=I(),t=It(1);T("disabled",!t.valid),g(),ne(e.data.confirmBtnText)}}var Ol=(()=>{class n{dialogRef=A(Si);data=A(wi);saveName(){this.dialogRef.close(this.data)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-name"]],decls:19,vars:6,consts:[["name","ngForm"],["name","name",3,"ngSubmit"],[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"field-margin"],["matInput","","type","text","id","name","placeholder","Name","name","name","required","","cdkFocusInitial","",3,"ngModelChange","ngModel"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"],["mat-flat-button","","type","submit",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();d(0,"form",1,0),B("ngSubmit",function(){return q(a),z(i.saveName())}),d(2,"div",2)(3,"h5",3),m(4),u(),d(5,"button",4)(6,"mat-icon"),m(7,"close"),u()()(),d(8,"mat-dialog-content")(9,"mat-form-field",5)(10,"mat-label"),m(11,"Name"),u(),d(12,"input",6),un("ngModelChange",function(s){return q(a),mn(i.data.name,s)||(i.data.name=s),z(s)}),u(),d(13,"mat-error"),m(14," A name is required "),u()()(),d(15,"mat-dialog-actions",7)(16,"button",8),m(17),u(),G(18,Dm,2,2,"button",9),u()()}t&2&&(g(4),ne(i.data.title),g(),T("mat-dialog-close",!1),g(7),cn("ngModel",i.data.name),g(4),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?18:-1))},dependencies:[Xt,xi,_i,zi,Mi,Ze,ze,Jt,ut,mt,Yi,ei,ft,Xe,lt,xt,pt,Bn,dt,nt,Mt,ct,Fn,no],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}.field-margin[_ngcontent-%COMP%]{margin-left:15px;margin-bottom:15px}"]})}return n})();function Pm(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",di(e.value)),g(),ne(e.label)}}function Im(n,o){if(n&1){let e=ae();d(0,"button",21),B("click",function(){q(e);let i=I();return z(i.moveCtrlUp())}),d(1,"mat-icon"),m(2,"arrow_drop_up"),u()()}}function Om(n,o){if(n&1){let e=ae();d(0,"button",22),B("click",function(){q(e);let i=I();return z(i.moveCtrlDown())}),d(1,"mat-icon"),m(2,"arrow_drop_down"),u()()}}var Rl=(()=>{class n{app=A(Lt);ctrlFormGroup=v.required();controlIndex=v(void 0);arrayLength=v(void 0);deleteCtrl=$e();moveUp=$e();moveDown=$e();colors=[];ngOnInit(){this.colors=this.app.configurableThemeColors}deleteControl(){let e={ctrlIndex:this.controlIndex(),pathID:this.ctrlFormGroup().get("pathID").value};this.deleteCtrl.emit(e)}moveCtrlUp(){this.moveUp.emit(this.controlIndex())}moveCtrlDown(){this.moveDown.emit(this.controlIndex())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["boolean-control-config"]],inputs:{ctrlFormGroup:[1,"ctrlFormGroup"],controlIndex:[1,"controlIndex"],arrayLength:[1,"arrayLength"]},outputs:{deleteCtrl:"deleteCtrl",moveUp:"moveUp",moveDown:"moveDown"},decls:36,vars:3,consts:[[1,"ctrl-grid","rounded-card","rounded-card-color",3,"formGroup"],[1,"controls","flex-container"],[1,"flex-label"],[1,"full-width"],["matInput","","type","string","placeholder","Enter a display label...","formControlName","ctrlLabel"],[1,"flex-settings"],[1,"settings"],["placeholder","Select Type...","formControlName","type","name","type","required",""],["value","1"],["value","2"],["value","3"],["placeholder","Select Color...","formControlName","color","name","color","required",""],[3,"value"],[1,"flex-full-width"],["formControlName","isNumeric"],[1,"actions"],[1,"flex-actions"],[1,"btn-grid"],["mat-icon-button","","type","button","aria-label","Move control up in the list",1,"up"],["mat-icon-button","","type","button","aria-label","Move control down in the list",1,"down"],["mat-icon-button","","type","button","aria-label","Delete control",1,"delete",3,"click"],["mat-icon-button","","type","button","aria-label","Move control up in the list",1,"up",3,"click"],["mat-icon-button","","type","button","aria-label","Move control down in the list",1,"down",3,"click"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-form-field",3)(4,"mat-label"),m(5,"Label"),u(),U(6,"input",4),u()(),d(7,"div",5)(8,"mat-form-field",6)(9,"mat-label"),m(10,"Type"),u(),d(11,"mat-select",7)(12,"mat-option",8),m(13,"Toggle"),u(),d(14,"mat-option",9),m(15,"Push"),u(),d(16,"mat-option",10),m(17,"Indicator"),u()()()(),d(18,"div",5)(19,"mat-form-field",6)(20,"mat-label"),m(21,"Color"),u(),d(22,"mat-select",11),ue(23,Pm,2,3,"mat-option",12,Me),u()()(),d(25,"div",13)(26,"mat-checkbox",14),m(27," Use numeric path "),u()()(),d(28,"div",15)(29,"div",16)(30,"div",17),G(31,Im,3,0,"button",18),G(32,Om,3,0,"button",19),d(33,"button",20),B("click",function(){return i.deleteControl()}),d(34,"mat-icon"),m(35,"delete"),u()()()()()()),t&2&&(T("formGroup",i.ctrlFormGroup()),g(23),he(i.colors),g(8),F(i.controlIndex()!==0?31:-1),g(),F(i.controlIndex()!==i.arrayLength()-1?32:-1))},dependencies:[pt,dt,nt,Mt,ct,gt,kt,Hi,ut,mt,ft,ti,Tt,xt,ii,Gt,Ze,ze],styles:['.ctrl-grid[_ngcontent-%COMP%]{display:grid;width:auto;height:auto;margin:0 0 10px;grid-template-columns:[col-start] calc(100% - 90px) [col1-end] 80px [col2-end];grid-template-areas:"controls actions";row-gap:0px;column-gap:10px;justify-items:center;align-items:center;justify-content:center;align-content:center;padding-top:20px}.controls[_ngcontent-%COMP%]{grid-area:controls;width:100%}.actions[_ngcontent-%COMP%]{grid-area:actions}.btn-grid[_ngcontent-%COMP%]{display:grid;width:80px;height:80px;margin:0;grid-template-columns:[col-start] 50% [col1-end] 50% [col2-end];grid-template-rows:[row-start] 50% [row1-end] 50% [row2-end];grid-template-areas:"up delete" "down delete";row-gap:0px;column-gap:0px;justify-items:center;align-items:center;justify-content:center;align-content:center}.up[_ngcontent-%COMP%]{grid-area:up}.down[_ngcontent-%COMP%]{grid-area:down}.delete[_ngcontent-%COMP%]{grid-area:delete}.flex-label[_ngcontent-%COMP%]{flex-grow:2;flex-shrink:2}.flex-settings[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.settings[_ngcontent-%COMP%]{min-width:100px}.flex-actions[_ngcontent-%COMP%]{flex-grow:0;flex-shrink:0}.flex-full-width[_ngcontent-%COMP%]{width:100%}']})}return n})();function Rm(n,o){if(n&1){let e=ae();d(0,"boolean-control-config",4),B("moveUp",function(i){q(e);let a=I();return z(a.moveUp(i))})("moveDown",function(i){q(e);let a=I();return z(a.moveDown(i))})("deleteCtrl",function(i){q(e);let a=I();return z(a.deletePath(i))}),u()}if(n&2){let e=o.$implicit,t=o.$index,i=I();T("ctrlFormGroup",i.getFormGroup(e))("controlIndex",t)("arrayLength",i.arrayLength)}}var Nl=(()=>{class n{fb=A(qn);multiCtrlArray=v.required();addPath=$e();updatePath=$e();delPath=$e();multiFormGroup=null;arrayLength=0;multiCtrlArraySubscription=null;ngOnInit(){this.arrayLength=this.multiCtrlArray().length,this.multiFormGroup=new el({multiCtrlArray:this.multiCtrlArray()}),this.multiCtrlArraySubscription=this.multiCtrlArray().valueChanges.pipe(Li(350)).subscribe(e=>{this.updatePath.emit(e)})}addCtrlGroup(){let e=qi.create();this.multiCtrlArray().push(this.fb.group({ctrlLabel:[null,_t.required],type:["1",_t.required],pathID:[e],color:["contrast"],isNumeric:[!1],value:[null]})),this.arrayLength=this.multiCtrlArray().length;let t={path:{description:null,path:null,pathID:e,source:"default",pathType:"boolean",supportsPut:!0,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,convertUnitTo:null,sampleTime:500},ctrlType:1};this.addPath.emit(t)}moveUp(e){let t=this.multiCtrlArray().at(e);this.multiCtrlArray().removeAt(e,{emitEvent:!1}),this.multiCtrlArray().insert(e-1,t,{emitEvent:!1})}moveDown(e){let t=this.multiCtrlArray().at(e);this.multiCtrlArray().removeAt(e,{emitEvent:!1}),this.multiCtrlArray().insert(e+1,t,{emitEvent:!1})}deletePath(e){this.delPath.emit(e),this.arrayLength=this.multiCtrlArray().length}getFormGroup(e){return e}ngOnDestroy(){this.multiCtrlArraySubscription?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["boolean-multicontrol-options"]],inputs:{multiCtrlArray:[1,"multiCtrlArray"]},outputs:{addPath:"addPath",updatePath:"updatePath",delPath:"delPath"},decls:7,vars:1,consts:[[3,"formGroup"],["formArrayName","multiCtrlArray"],[1,"full-width",3,"ctrlFormGroup","controlIndex","arrayLength"],["type","button","mat-mini-fab","","color","primary","aria-label","Add control down in the list",1,"add-btn",3,"click"],[1,"full-width",3,"moveUp","moveDown","deleteCtrl","ctrlFormGroup","controlIndex","arrayLength"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),ue(2,Rm,1,3,"boolean-control-config",2,En),d(4,"button",3),B("click",function(){return i.addCtrlGroup()}),d(5,"mat-icon"),m(6,"add"),u()()()()),t&2&&(T("formGroup",i.multiFormGroup),g(2),he(i.multiCtrlArray().controls))},dependencies:[pt,Mt,gt,kt,al,Rl,Xe,Ls,Ze,ze],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;padding-top:15px;padding-bottom:15px}.add-btn[_ngcontent-%COMP%]{margin-left:calc(50% - 20px)}"]})}return n})();var Nm=["input"],Vm=["formField"],Wm=["*"],vo=class{source;value;constructor(o,e){this.source=o,this.value=e}},Lm={provide:Gn,useExisting:Mn(()=>ar),multi:!0},Vl=new jt("MatRadioGroup"),Gm=new jt("mat-radio-default-options",{providedIn:"root",factory:Fm});function Fm(){return{color:"accent",disabledInteractive:!1}}var ar=(()=>{class n{_changeDetector=A(ci);_value=null;_name=A(yi).getId("mat-radio-group-");_selected=null;_isInitialized=!1;_labelPosition="after";_disabled=!1;_required=!1;_buttonChanges;_controlValueAccessorChangeFn=()=>{};onTouched=()=>{};change=new yt;_radios;color;get name(){return this._name}set name(e){this._name=e,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition=e==="before"?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(e){this._selected=e,this.value=e?e.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markRadiosForCheck()}get required(){return this._required}set required(e){this._required=e,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markRadiosForCheck()}_disabledInteractive=!1;constructor(){}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(e=>e===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(e=>{e.name=this.name,e._markForCheck()})}_updateSelectedRadioFromValue(){let e=this._selected!==null&&this._selected.value===this._value;this._radios&&!e&&(this._selected=null,this._radios.forEach(t=>{t.checked=this.value===t.value,t.checked&&(this._selected=t)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new vo(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(e=>e._markForCheck())}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetector.markForCheck()}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["mat-radio-group"]],contentQueries:function(t,i,a){if(t&1&&dn(a,yo,5),t&2){let r;Ct(r=St())&&(i._radios=r)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[2,"disabled","disabled",qe],required:[2,"required","required",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matRadioGroup"],features:[hn([Lm,{provide:Vl,useExisting:n}])]})}return n})(),yo=(()=>{class n{_elementRef=A(Ie);_changeDetector=A(ci);_focusMonitor=A(Xa);_radioDispatcher=A(gl);_defaultOptions=A(Gm,{optional:!0});_ngZone=A(Ge);_renderer=A(kn);_uniqueId=A(yi).getId("mat-radio-");_cleanupClick;id=this._uniqueId;name;ariaLabel;ariaLabelledby;ariaDescribedby;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=e,e&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!e&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),e&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this.radioGroup!==null&&(this.checked||(this.checked=this.radioGroup.value===e),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(e){this._labelPosition=e}_labelPosition;get disabled(){return this._disabled||this.radioGroup!==null&&this.radioGroup.disabled}set disabled(e){this._setDisabled(e)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(e){e!==this._required&&this._changeDetector.markForCheck(),this._required=e}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||"accent"}set color(e){this._color=e}_color;get disabledInteractive(){return this._disabledInteractive||this.radioGroup!==null&&this.radioGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new yt;radioGroup;get inputId(){return`${this.id||this._uniqueId}-input`}_checked=!1;_disabled;_required;_value=null;_removeUniqueSelectionListener=()=>{};_previousTabIndex;_inputElement;_rippleTrigger;_noopAnimations=Zt();_injector=A(Fi);constructor(){A(Vn).load(to);let e=A(Vl,{optional:!0}),t=A(new qa("tabindex"),{optional:!0});this.radioGroup=e,this._disabledInteractive=this._defaultOptions?.disabledInteractive??!1,t&&(this.tabIndex=$o(t,0))}focus(e,t){t?this._focusMonitor.focusVia(this._inputElement,t,e):this._inputElement.nativeElement.focus(e)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((e,t)=>{e!==this.id&&t===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{!e&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._cleanupClick=this._renderer.listen(this._inputElement.nativeElement,"click",this._onInputClick)})}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new vo(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(e){if(e.stopPropagation(),!this.checked&&!this.disabled){let t=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),t&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(e){this._onInputInteraction(e),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(e){this._disabled!==e&&(this._disabled=e,this._changeDetector.markForCheck())}_onInputClick=e=>{this.disabled&&this.disabledInteractive&&e.preventDefault()};_updateTabIndex(){let e=this.radioGroup,t;if(!e||!e.selected||this.disabled?t=this.tabIndex:t=e.selected===this?this.tabIndex:-1,t!==this._previousTabIndex){let i=this._inputElement?.nativeElement;i&&(i.setAttribute("tabindex",t+""),this._previousTabIndex=t,Tn(()=>{queueMicrotask(()=>{e&&e.selected&&e.selected!==this&&document.activeElement===i&&(e.selected?._inputElement.nativeElement.focus(),document.activeElement===i&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-radio-button"]],viewQuery:function(t,i){if(t&1&&(Qt(Nm,5),Qt(Vm,7,Ie)),t&2){let a;Ct(a=St())&&(i._inputElement=a.first),Ct(a=St())&&(i._rippleTrigger=a.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:19,hostBindings:function(t,i){t&1&&B("focus",function(){return i._inputElement.nativeElement.focus()}),t&2&&(Y("id",i.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),Je("mat-primary",i.color==="primary")("mat-accent",i.color==="accent")("mat-warn",i.color==="warn")("mat-mdc-radio-checked",i.checked)("mat-mdc-radio-disabled",i.disabled)("mat-mdc-radio-disabled-interactive",i.disabledInteractive)("_mat-animation-noopable",i._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],disableRipple:[2,"disableRipple","disableRipple",qe],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$o(e)],checked:[2,"checked","checked",qe],value:"value",labelPosition:"labelPosition",disabled:[2,"disabled","disabled",qe],required:[2,"required","required",qe],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matRadioButton"],ngContentSelectors:Wm,decls:13,vars:17,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],[1,"mat-mdc-radio-touch-target",3,"click"],["type","radio","aria-invalid","false",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],[1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","",1,"mat-radio-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(t,i){if(t&1){let a=ae();In(),d(0,"div",2,0)(2,"div",3)(3,"div",4),B("click",function(s){return q(a),z(i._onTouchTargetClick(s))}),u(),d(4,"input",5,1),B("change",function(s){return q(a),z(i._onInputInteraction(s))}),u(),d(6,"div",6),U(7,"div",7)(8,"div",8),u(),d(9,"div",9),U(10,"div",10),u()(),d(11,"label",11),On(12),u()()}t&2&&(T("labelPosition",i.labelPosition),g(2),Je("mdc-radio--disabled",i.disabled),g(2),T("id",i.inputId)("checked",i.checked)("disabled",i.disabled&&!i.disabledInteractive)("required",i.required),Y("name",i.name)("value",i.value)("aria-label",i.ariaLabel)("aria-labelledby",i.ariaLabelledby)("aria-describedby",i.ariaDescribedby)("aria-disabled",i.disabled&&i.disabledInteractive?"true":null),g(5),T("matRippleTrigger",i._rippleTrigger.nativeElement)("matRippleDisabled",i._isRippleDisabled())("matRippleCentered",!0),g(2),T("for",i.inputId))},dependencies:[eo,bl],styles:[`.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled])~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-hover-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-pressed-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px);top:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0);border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),background-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}@media(forced-colors: active){.mat-mdc-radio-button .mdc-radio__inner-circle{background-color:CanvasText !important}}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-sys-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple>.mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio>.mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-focus-indicator::before{content:""}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display, block)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}
|
|
43
|
-
`],encapsulation:2,changeDetection:0})}return n})(),Wl=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Ot,io,yo,Ot]})}return n})();function Um(n,o){if(n&1&&(d(0,"mat-option",8),m(1),u()),n&2){let e=o.$implicit;T("value",di(e.value)),g(),ne(e.label)}}var Ll=(()=>{class n{app=A(Lt);displayName=v.required();showLabel=v.required();convertUnitTo=v.required();datasetUUID=v.required();datasetAverageArray=v.required();showAverageData=v.required();trackAgainstAverage=v.required();showDatasetMinimumValueLine=v.required();showDatasetMaximumValueLine=v.required();showDatasetAverageValueLine=v.required();showDatasetAngleAverageValueLine=v.required();verticalChart=v.required();inverseYAxis=v.required();showTimeScale=v.required();showYScale=v.required();startScaleAtZero=v.required();yScaleSuggestedMin=v.required();yScaleSuggestedMax=v.required();enableMinMaxScaleLimit=v.required();yScaleMin=v.required();yScaleMax=v.required();numDecimal=v.required();color=v.required();colors=[];ngOnInit(){this.colors=this.app.configurableThemeColors,this.showAverageData()&&!this.showAverageData()?.value&&this.trackAgainstAverage().disable(),this.enableMinMaxScaleLimit()&&this.setValueScaleOptionsControls(this.enableMinMaxScaleLimit().value)}setValueScaleOptionsControls(e){e?(this.yScaleMin()?.enable(),this.yScaleMax()?.enable(),this.yScaleSuggestedMin()?.disable(),this.yScaleSuggestedMax()?.disable()):(this.yScaleMin()?.disable(),this.yScaleMax()?.disable(),this.yScaleSuggestedMin()?.enable(),this.yScaleSuggestedMax()?.enable())}setScaleControls(e){this.setValueScaleOptionsControls(e.value)}enableTrackAgainstMovingAverage(e){e.checked?this.trackAgainstAverage().enable():(this.trackAgainstAverage().setValue(e.checked),this.trackAgainstAverage().disable())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["config-display-chart-options"]],inputs:{displayName:[1,"displayName"],showLabel:[1,"showLabel"],convertUnitTo:[1,"convertUnitTo"],datasetUUID:[1,"datasetUUID"],datasetAverageArray:[1,"datasetAverageArray"],showAverageData:[1,"showAverageData"],trackAgainstAverage:[1,"trackAgainstAverage"],showDatasetMinimumValueLine:[1,"showDatasetMinimumValueLine"],showDatasetMaximumValueLine:[1,"showDatasetMaximumValueLine"],showDatasetAverageValueLine:[1,"showDatasetAverageValueLine"],showDatasetAngleAverageValueLine:[1,"showDatasetAngleAverageValueLine"],verticalChart:[1,"verticalChart"],inverseYAxis:[1,"inverseYAxis"],showTimeScale:[1,"showTimeScale"],showYScale:[1,"showYScale"],startScaleAtZero:[1,"startScaleAtZero"],yScaleSuggestedMin:[1,"yScaleSuggestedMin"],yScaleSuggestedMax:[1,"yScaleSuggestedMax"],enableMinMaxScaleLimit:[1,"enableMinMaxScaleLimit"],yScaleMin:[1,"yScaleMin"],yScaleMax:[1,"yScaleMax"],numDecimal:[1,"numDecimal"],color:[1,"color"]},decls:84,vars:20,consts:[["minLine",""],[1,"tab-content"],[1,"chart-flex-container"],[1,"chart-panel-group"],[1,"full-width"],["matInput","","placeholder","Enter a label to display","name","displayName",3,"formControl"],["name","showLabel",1,"full-width",3,"formControl"],["placeholder","Select Color...","name","color","required","",3,"formControl"],[3,"value"],[1,"flex-item-rounded-card","rounded-card-color"],[2,"margin-left","10px"],["matInput","","type","number","min","0","max","5","placeholder","Enter or select number...","name","numDecimal","required","",3,"formControl"],["name","showAverageData",1,"full-width",2,"margin-top","10px",3,"change","formControl"],["name","trackAgainstAverage",1,"full-width",2,"margin-left","25px",3,"formControl"],["name","verticalChart",3,"formControl"],[1,"no-margin"],[1,"mat-caption"],["aria-label","Select an option","name","enableMinMaxScaleLimit",1,"chart-option-radio-group",3,"formControl"],[1,"chart-option-radio-button",3,"change","value"],[1,"chart-option-radio-button-config"],[1,"chart-option-radio-button-config-form-field"],["matInput","","type","number","name","yScaleSuggestedMin",3,"formControl"],["matInput","","type","number","name","yScaleSuggestedMax",3,"formControl"],[1,"chart-option-radio-button-config-item"],["matInput","","type","number","name","yScaleMin","required","",3,"formControl"],["matInput","","type","number","name","yScaleMax","required","",3,"formControl"],["name","showYScale",1,"full-width",3,"formControl"],["name","inverseYAxis",3,"formControl"],["name","showTimeScale",1,"full-width",3,"formControl"],["name","showDatasetMaximumValueLine",1,"full-width",3,"formControl"],["name","showDatasetAverageValueLine",1,"full-width",3,"formControl"],["name","showDatasetMinimumValueLine",1,"full-width",3,"formControl"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1)(1,"div",2)(2,"div",3)(3,"mat-form-field",4)(4,"mat-label"),m(5,"Widget Label"),u(),U(6,"input",5),u()(),d(7,"div",3)(8,"mat-checkbox",6),m(9," Show Label "),u()()(),d(10,"div",2)(11,"mat-form-field",4)(12,"mat-label"),m(13,"Color"),u(),d(14,"mat-select",7),ue(15,Um,2,3,"mat-option",8,Me),u()()(),d(17,"div",2)(18,"div",9)(19,"div")(20,"p"),m(21,"Series"),u(),d(22,"mat-form-field",10)(23,"mat-label"),m(24,"Value Decimal Places"),u(),U(25,"input",11),u(),d(26,"mat-checkbox",12),B("change",function(s){return q(a),z(i.enableTrackAgainstMovingAverage(s))}),m(27," Display Moving Average "),u(),d(28,"mat-checkbox",13),m(29," Track Against Moving Average "),u()(),d(30,"mat-checkbox",14),m(31," Vertical Data Graph "),u()(),d(32,"div",9)(33,"div")(34,"p",15),m(35,"Data Scale"),u(),d(36,"span",16),m(37,"(Default node is automatic scale)"),u(),d(38,"mat-radio-group",17)(39,"mat-radio-button",18),B("change",function(s){return q(a),z(i.setScaleControls(s))}),m(40,"Auto Scale"),u(),d(41,"div",19)(42,"mat-form-field",20)(43,"mat-label"),m(44,"Suggested Min"),u(),U(45,"input",21),u(),d(46,"mat-form-field",20)(47,"mat-label"),m(48,"Suggested Max"),u(),U(49,"input",22),u()(),d(50,"mat-radio-button",18),B("change",function(s){return q(a),z(i.setScaleControls(s))}),m(51," Fixed Scale "),u(),d(52,"div",19)(53,"div",23)(54,"mat-form-field",20)(55,"mat-label"),m(56,"Min"),u(),U(57,"input",24),u()(),d(58,"div",23)(59,"mat-form-field",20)(60,"mat-label"),m(61,"Max"),u(),U(62,"input",25),u()()()(),d(63,"mat-checkbox",26),m(64," Show Scale Ticks "),u(),d(65,"mat-checkbox",27),m(66," Inverse Scale "),u()()(),d(67,"div",9)(68,"div")(69,"p",15),m(70,"Time Scale"),u(),d(71,"mat-checkbox",28),m(72," Show Scale Ticks "),u()()(),d(73,"div",9)(74,"div")(75,"p",15),m(76,"Dataset"),u(),d(77,"mat-checkbox",29),m(78," Show Maximum Line "),u(),d(79,"mat-checkbox",30),m(80," Show Average Line "),u(),d(81,"mat-checkbox",31,0),m(83," Show Minimum Line "),u()()()()()}t&2&&(g(6),T("formControl",i.displayName()),g(2),T("formControl",i.showLabel()),g(6),T("formControl",i.color()),g(),he(i.colors),g(10),T("formControl",i.numDecimal()),g(),T("formControl",i.showAverageData()),g(2),T("formControl",i.trackAgainstAverage()),g(2),T("formControl",i.verticalChart()),g(8),T("formControl",i.enableMinMaxScaleLimit()),g(),T("value",!1),g(6),T("formControl",i.yScaleSuggestedMin()),g(4),T("formControl",i.yScaleSuggestedMax()),g(),T("value",!0),g(7),T("formControl",i.yScaleMin()),g(5),T("formControl",i.yScaleMax()),g(),T("formControl",i.showYScale()),g(2),T("formControl",i.inverseYAxis()),g(6),T("formControl",i.showTimeScale()),g(6),T("formControl",i.showDatasetMaximumValueLine()),g(2),T("formControl",i.showDatasetAverageValueLine()),g(2),T("formControl",i.showDatasetMinimumValueLine()))},dependencies:[ao,Jt,ut,mt,ii,Gt,$i,ti,Tt,Aa,ei,ft,Wl,ar,yo,gt,dt,ki,nt,ct,ji,Un,Ti],styles:[".chart-flex-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;margin:15px 0;gap:15px;align-items:stretch}.chart-panel-group[_ngcontent-%COMP%]{min-width:250px;flex-grow:1}.no-margin[_ngcontent-%COMP%]{margin:0}.chart-option-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:0;align-items:flex-start}.chart-option-radio-button[_ngcontent-%COMP%]{margin:0}.chart-option-radio-button-config[_ngcontent-%COMP%]{margin-left:35px;display:flex;flex-direction:row;flex-wrap:wrap;gap:10px;align-items:flex-start}.chart-option-radio-button-config-item[_ngcontent-%COMP%]{flex-grow:0;flex-shrink:1;min-width:50px}.chart-option-radio-button-config-form-field[_ngcontent-%COMP%]{display:block;max-width:118px}"]})}return n})();var zm=["panel"],Hm=["*"];function jm(n,o){if(n&1&&(_(0,"div",1,0),On(2),k()),n&2){let e=o.id,t=I();Ft(t._classList),Je("mat-mdc-autocomplete-visible",t.showPanel)("mat-mdc-autocomplete-hidden",!t.showPanel)("mat-autocomplete-panel-animations-enabled",!t._animationsDisabled)("mat-primary",t._color==="primary")("mat-accent",t._color==="accent")("mat-warn",t._color==="warn"),Pi("id",t.id),Y("aria-label",t.ariaLabel||null)("aria-labelledby",t._getPanelAriaLabelledby(e))}}var rr=class{source;option;constructor(o,e){this.source=o,this.option=e}},Bl=new jt("mat-autocomplete-default-options",{providedIn:"root",factory:Ym});function Ym(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1,hasBackdrop:!1}}var Jn=(()=>{class n{_changeDetectorRef=A(ci);_elementRef=A(Ie);_defaults=A(Bl);_animationsDisabled=Zt();_activeOptionChanges=Ni.EMPTY;_keyManager;showPanel=!1;get isOpen(){return this._isOpen&&this.showPanel}_isOpen=!1;_latestOpeningTrigger;_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}_color;template;panel;options;optionGroups;ariaLabel;ariaLabelledby;displayWith=null;autoActiveFirstOption;autoSelectActiveOption;requireSelection;panelWidth;disableRipple;optionSelected=new yt;opened=new yt;closed=new yt;optionActivated=new yt;set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}_classList;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator;_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}id=A(yi).getId("mat-autocomplete-");inertGroups;constructor(){let e=A(Ds);this.inertGroups=e?.SAFARI||!1,this.autoActiveFirstOption=!!this._defaults.autoActiveFirstOption,this.autoSelectActiveOption=!!this._defaults.autoSelectActiveOption,this.requireSelection=!!this._defaults.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new Ns(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options?.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){let t=new rr(this,e);this.optionSelected.emit(t)}_getPanelAriaLabelledby(e){if(this.ariaLabel)return null;let t=e?e+" ":"";return this.ariaLabelledby?t+this.ariaLabelledby:e}_skipPredicate(){return!1}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-autocomplete"]],contentQueries:function(t,i,a){if(t&1&&(dn(a,Tt,5),dn(a,ml,5)),t&2){let r;Ct(r=St())&&(i.options=r),Ct(r=St())&&(i.optionGroups=r)}},viewQuery:function(t,i){if(t&1&&(Qt(ps,7),Qt(zm,5)),t&2){let a;Ct(a=St())&&(i.template=a.first),Ct(a=St())&&(i.panel=a.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[2,"autoActiveFirstOption","autoActiveFirstOption",qe],autoSelectActiveOption:[2,"autoSelectActiveOption","autoSelectActiveOption",qe],requireSelection:[2,"requireSelection","requireSelection",qe],panelWidth:"panelWidth",disableRipple:[2,"disableRipple","disableRipple",qe],classList:[0,"class","classList"],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",qe]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],features:[hn([{provide:cl,useExisting:n}])],ngContentSelectors:Hm,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(t,i){t&1&&(In(),fs(0,jm,3,17,"ng-template"))},styles:[`div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:relative;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}@keyframes _mat-autocomplete-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}.mat-autocomplete-panel-animations-enabled{animation:_mat-autocomplete-enter 120ms cubic-bezier(0, 0, 0.2, 1)}mat-autocomplete{display:none}
|
|
44
|
-
`],encapsulation:2,changeDetection:0})}return n})();var Qm={provide:Gn,useExisting:Mn(()=>fn),multi:!0};var Ul=new jt("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{let n=A(Fi);return()=>Xo(n)}});function $m(n){let o=A(Fi);return()=>Xo(o)}var Zm={provide:Ul,deps:[],useFactory:$m},fn=(()=>{class n{_environmentInjector=A(us);_element=A(Ie);_injector=A(Fi);_viewContainerRef=A(Ga);_zone=A(Ge);_changeDetectorRef=A(ci);_dir=A(Ja,{optional:!0});_formField=A(rl,{optional:!0,host:!0});_viewportRuler=A(Us);_scrollStrategy=A(Ul);_renderer=A(kn);_animationsDisabled=Zt();_defaults=A(Bl,{optional:!0});_overlayRef;_portal;_componentDestroyed=!1;_initialized=new Nt;_keydownSubscription;_outsideClickSubscription;_cleanupWindowBlur;_previousValue;_valueOnAttach;_valueOnLastKeydown;_positionStrategy;_manuallyFloatingLabel=!1;_closingActionsSubscription;_viewportSubscription=Ni.EMPTY;_breakpointObserver=A(Wn);_handsetLandscapeSubscription=Ni.EMPTY;_canOpenOnNextFocus=!0;_valueBeforeAutoSelection;_pendingAutoselectedOption;_closeKeyEventStream=new Nt;_overlayPanelClass=Is(this._defaults?.overlayPanelClass||[]);_windowBlurHandler=()=>{this._canOpenOnNextFocus=this.panelOpen||!this._hasFocus()};_onChange=()=>{};_onTouched=()=>{};autocomplete;position="auto";connectedTo;autocompleteAttribute="off";autocompleteDisabled;constructor(){}_aboveClass="mat-mdc-autocomplete-panel-above";ngAfterViewInit(){this._initialized.next(),this._initialized.complete(),this._cleanupWindowBlur=this._renderer.listen("window","blur",this._windowBlurHandler)}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){this._cleanupWindowBlur?.(),this._handsetLandscapeSubscription.unsubscribe(),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}_overlayAttached=!1;openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&Ka(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Vi(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(Wi(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(Wi(()=>this._overlayAttached)):Yo()).pipe(vi(e=>e instanceof ul?e:null))}optionSelections=is(()=>{let e=this.autocomplete?this.autocomplete.options:null;return e?e.changes.pipe(_n(e),Na(()=>Vi(...e.map(t=>t.onSelectionChange)))):this._initialized.pipe(Na(()=>this.optionSelections))});get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return new jo(e=>{let t=a=>{let r=Es(a),s=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,h=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;this._overlayAttached&&r!==this._element.nativeElement&&!this._hasFocus()&&(!s||!s.contains(r))&&(!h||!h.contains(r))&&this._overlayRef&&!this._overlayRef.overlayElement.contains(r)&&e.next(a)},i=[this._renderer.listen("document","click",t),this._renderer.listen("document","auxclick",t),this._renderer.listen("document","touchend",t)];return()=>{i.forEach(a=>a())}})}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){let t=e,i=t.keyCode,a=Ln(t);if(i===27&&!a&&t.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&i===13&&this.panelOpen&&!a)this.activeOption._selectViaInteraction(),this._resetActiveItem(),t.preventDefault();else if(this.autocomplete){let r=this.autocomplete._keyManager.activeItem,s=i===38||i===40;i===9||s&&!a&&this.panelOpen?this.autocomplete._keyManager.onKeydown(t):s&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(s||this.autocomplete._keyManager.activeItem!==r)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let t=e.target,i=t.value;if(t.type==="number"&&(i=i==""?null:parseFloat(i)),this._previousValue!==i){if(this._previousValue=i,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(i),!i)this._clearPreviousSelectedOption(null,!1);else if(this.panelOpen&&!this.autocomplete.requireSelection){let a=this.autocomplete.options?.find(r=>r.selected);if(a){let r=this._getDisplayValue(a.value);i!==r&&a.deselect(!1)}}if(this._canOpen()&&this._hasFocus()){let a=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(a)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_hasFocus(){return Ts()===this._element.nativeElement}_floatLabel(e=!1){this._formField&&this._formField.floatLabel==="auto"&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){let e=new jo(i=>{Tn(()=>{i.next()},{injector:this._environmentInjector})}),t=this.autocomplete.options?.changes.pipe(Wa(()=>this._positionStrategy.reapplyLastPosition()),os(0))??Yo();return Vi(e,t).pipe(Na(()=>this._zone.run(()=>{let i=this.panelOpen;return this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),i!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit()),this.panelClosingActions})),Gi(1)).subscribe(i=>this._setValueAndClose(i))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){let t=this.autocomplete;return t&&t.displayWith?t.displayWith(e):e}_assignOptionValue(e){let t=this._getDisplayValue(e);e==null&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(t??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){let t=this.autocomplete,i=e?e.source:this._pendingAutoselectedOption;i?(this._clearPreviousSelectedOption(i),this._assignOptionValue(i.value),this._onChange(i.value),t._emitSelectEvent(i),this._element.nativeElement.focus()):t.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,t){this.autocomplete?.options?.forEach(i=>{i!==e&&i.selected&&i.deselect(t)})}_openPanelInternal(e=this._element.nativeElement.value){if(this._attachOverlay(e),this._floatLabel(),this._trackedModal){let t=this.autocomplete.id;Zo(this._trackedModal,"aria-owns",t)}}_attachOverlay(e){this.autocomplete;let t=this._overlayRef;t?(this._positionStrategy.setOrigin(this._getConnectedElement()),t.updateSize({width:this._getPanelWidth()})):(this._portal=new Gs(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),t=Qs(this._injector,this._getOverlayConfig()),this._overlayRef=t,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&t&&t.updateSize({width:this._getPanelWidth()})}),this._handsetLandscapeSubscription=this._breakpointObserver.observe(mi.HandsetLandscape).subscribe(a=>{a.matches?this._positionStrategy.withFlexibleDimensions(!0).withGrowAfterOpen(!0).withViewportMargin(8):this._positionStrategy.withFlexibleDimensions(!1).withGrowAfterOpen(!1).withViewportMargin(0)})),t&&!t.hasAttached()&&(t.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());let i=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&i!==this.panelOpen&&this._emitOpened()}_handlePanelKeydown=e=>{(e.keyCode===27&&!Ln(e)||e.keyCode===38&&Ln(e,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),e.stopPropagation(),e.preventDefault())};_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){let e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=null}_getOverlayConfig(){return new Hs({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,hasBackdrop:this._defaults?.hasBackdrop,backdropClass:this._defaults?.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:this._overlayPanelClass,disableAnimations:this._animationsDisabled})}_getOverlayPosition(){let e=js(this._injector,this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){let t=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],i=this._aboveClass,a=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:i},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:i}],r;this.position==="above"?r=a:this.position==="below"?r=t:r=[...t,...a],e.withPositions(r)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){let e=this.autocomplete;if(e.autoActiveFirstOption){let t=-1;for(let i=0;i<e.options.length;i++)if(!e.options.get(i).disabled){t=i;break}e._keyManager.setActiveItem(t)}else e._keyManager.setActiveItem(-1)}_canOpen(){let e=this._element.nativeElement;return!e.readOnly&&!e.disabled&&!this.autocompleteDisabled}_scrollToOption(e){let t=this.autocomplete,i=hl(e,t.options,t.optionGroups);if(e===0&&i===1)t._setScrollTop(0);else if(t.panel){let a=t.options.toArray()[e];if(a){let r=a._getHostElement(),s=pl(r.offsetTop,r.offsetHeight,t._getScrollTop(),t.panel.nativeElement.offsetHeight);t._setScrollTop(s)}}}_trackedModal=null;_applyModalPanelOwnership(){let e=this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;let t=this.autocomplete.id;this._trackedModal&&Ka(this._trackedModal,"aria-owns",t),Zo(e,"aria-owns",t),this._trackedModal=e}_clearFromModal(){if(this._trackedModal){let e=this.autocomplete.id;Ka(this._trackedModal,"aria-owns",e),this._trackedModal=null}}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(t,i){t&1&&B("focusin",function(){return i._handleFocus()})("blur",function(){return i._onTouched()})("input",function(r){return i._handleInput(r)})("keydown",function(r){return i._handleKeydown(r)})("click",function(){return i._handleClick()}),t&2&&Y("autocomplete",i.autocompleteAttribute)("role",i.autocompleteDisabled?null:"combobox")("aria-autocomplete",i.autocompleteDisabled?null:"list")("aria-activedescendant",i.panelOpen&&i.activeOption?i.activeOption.id:null)("aria-expanded",i.autocompleteDisabled?null:i.panelOpen.toString())("aria-controls",i.autocompleteDisabled||!i.panelOpen||i.autocomplete==null?null:i.autocomplete.id)("aria-haspopup",i.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[0,"matAutocomplete","autocomplete"],position:[0,"matAutocompletePosition","position"],connectedTo:[0,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[0,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[2,"matAutocompleteDisabled","autocompleteDisabled",qe]},exportAs:["matAutocompleteTrigger"],features:[hn([Qm]),Yt]})}return n})(),wo=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({providers:[Zm],imports:[$s,Aa,Ot,qs,Aa,Ot]})}return n})();var Xm=(n,o)=>o.path;function Km(n,o){if(n&1){let e=ae();d(0,"button",21),B("click",function(){q(e);let i=I();return z(i.clearPathInputField())}),d(1,"mat-icon"),m(2,"close"),u()()}}function Jm(n,o){n&1&&(d(0,"mat-error"),m(1," Path is required. Please enter a valid Signal K path. "),u())}function eu(n,o){n&1&&(d(0,"mat-error"),m(1," Path not recognized. Please enter a path from the server's published list. "),u())}function tu(n,o){if(n&1&&(d(0,"span"),m(1),u(),U(2,"br"),d(3,"small",22),m(4),u()),n&2){let e=I().$implicit;g(),ne(e.path),g(3),ne(e.meta.description)}}function iu(n,o){if(n&1&&m(0),n&2){let e=I().$implicit;ye(" ",e.path," ")}}function nu(n,o){if(n&1&&(d(0,"mat-option",8),G(1,tu,5,2)(2,iu,1,1),u()),n&2){let e=o.$implicit;T("value",e.path),g(),F(e.meta!==void 0?1:2)}}function au(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function ou(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function ru(n,o){if(n&1&&(d(0,"mat-optgroup",14),ue(1,ou,2,2,"mat-option",12,Me),u()),n&2){let e=o.$implicit;T("label",e.group),g(),he(e.units)}}function su(n){return o=>{let e=o.parent?.value?.pathRequired!==!1,t=o.value;return e?t===null||t===""?{requireMatch:!0}:n().some(r=>r.path===t)?null:{requireMatch:!0}:t===null||t===""||n().some(r=>r.path===t)?null:{requireMatch:!0}}}var zl=(()=>{class n{convertUnitTo=v.required();filterSelfPaths=v.required();datachartPath=v.required();datachartSource=v.required();timeScale=v.required();period=v.required();data=A(Ci);units=A(at);_destroyRef=A(rt);numericPaths=w([]);filteredNumericPaths=w([]);unitList=w({});pathSources=w([]);ngOnInit(){if(this.numericPaths.set(this.data.getPathsAndMetaByType("number",!1,this.filterSelfPaths().value).sort()),this.filteredNumericPaths.set(this.numericPaths()),this.datachartPath().valueChanges.pipe(Li(300),et(this._destroyRef)).subscribe(e=>{let t=(e||"").toLowerCase().trim();t?this.filteredNumericPaths.set(this.numericPaths().filter(i=>i.path.toLowerCase().includes(t))):this.filteredNumericPaths.set(this.numericPaths())}),this.datachartPath().setValidators([su(()=>this.getPaths())]),this.datachartPath()?.value){let e=this.data.getPathObject(this.datachartPath().value);this.setPathSources(e),this.unitList.set(this.units.getConversionsForPath(this.datachartPath().value))}this.setInitFormState()}setInitFormState(e=!1){this.datachartSource().value&&!e?this.datachartSource().enable():(this.datachartSource().reset(),this.datachartSource().disable()),this.convertUnitTo().value!==""&&!e?this.convertUnitTo().enable():(this.convertUnitTo().reset(),this.convertUnitTo().disable()),this.timeScale().value?this.timeScale().enable():this.timeScale().disable(),this.period().value?this.period().enable():this.period().disable()}getPaths(){return this.data.getPathsAndMetaByType("number",!1,this.filterSelfPaths().value).sort()}clearPathInputField(){this.datachartPath().setValue(""),this.setInitFormState(!0)}changePath(e){let t=this.data.getPathObject(e.option.value);if(t===null){this.pathSources.set([]),this.datachartSource().reset(),this.datachartSource().disable(),this.convertUnitTo().reset(),this.convertUnitTo().disable(),this.setPathUnits();return}this.setPathSources(t),this.setPathUnits(t.path)}setPathSources(e){Object.keys(e.sources).length==1?(this.pathSources.set(["default"]),this.datachartSource().setValue("default"),this.datachartSource().enable()):Object.keys(e.sources).length>1&&(this.pathSources.set(Object.keys(e.sources).sort()),this.datachartSource().reset(),this.datachartSource().enable())}setPathUnits(e){e?(this.unitList.set(this.units.getConversionsForPath(e)),this.convertUnitTo().reset(),this.convertUnitTo()?.enable()):(this.unitList.set(this.units.getConversionsForPath("")),this.convertUnitTo().reset(),this.convertUnitTo()?.disable())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["config-dataset-chart-options"]],inputs:{convertUnitTo:[1,"convertUnitTo"],filterSelfPaths:[1,"filterSelfPaths"],datachartPath:[1,"datachartPath"],datachartSource:[1,"datachartSource"],timeScale:[1,"timeScale"],period:[1,"period"]},decls:59,vars:9,consts:[["pathInput",""],["pathAutoComplete","matAutocomplete"],[1,"display-content","tab-content"],[1,"flex-container",2,"margin-top","10px"],[1,"full-width"],["type","text","matInput","","placeholder","Type to use autocomplete or select from list","required","",3,"formControl","matAutocomplete"],["mat-icon-button","","matIconSuffix","","aria-label","Clear"],[3,"optionSelected"],[2,"min-height","48px","line-height","1.15","height","auto","padding","8px 16px","white-space","normal",3,"value"],[3,"formControl"],[1,"flex-field-50"],["placeholder","Select data source","name","sourceControl","required","",3,"formControl"],[3,"value"],["placeholder","Select unit...","name","convertUnitTo","required","",3,"formControl"],[3,"label"],[2,"margin-top","10px"],["placeholder","Select dataset time scale","name","timeScaleFormat","required","",3,"formControl"],["value","hour"],["value","minute"],["value","second"],["matInput","","type","number","min","1","max","60","step","1","placeholder","Enter or select number...","required","",3,"formControl"],["mat-icon-button","","matIconSuffix","","aria-label","Clear",3,"click"],[1,"pathMetaDescription"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",2)(1,"div",3)(2,"mat-form-field",4)(3,"mat-label"),m(4," Signal K Path "),u(),U(5,"input",5,0),G(7,Km,3,0,"button",6),G(8,Jm,2,0,"mat-error")(9,eu,2,0,"mat-error"),d(10,"mat-autocomplete",7,1),B("optionSelected",function(s){return q(a),z(i.changePath(s))}),ue(12,nu,3,2,"mat-option",8,Xm),u()()(),d(14,"div",3)(15,"mat-checkbox",9),m(16," Restrict to own vessel "),u()(),d(17,"div",3)(18,"div",10)(19,"mat-form-field",4)(20,"mat-label"),m(21,"Source"),u(),d(22,"mat-select",11),ue(23,au,2,2,"mat-option",12,En),u()()(),d(25,"div",10)(26,"mat-form-field",4)(27,"mat-label"),m(28,"Display Format"),u(),d(29,"mat-select",13),ue(30,ru,3,1,"mat-optgroup",14,Me),u()()()(),U(32,"br"),d(33,"p",15),m(34," The time scale defines the data sampling rate and overall Dataset level of precision. Select a Time Scale that is targeted to your intended usage. Shorter Time Scales have higher system resources costs, for both the data capture and widget rendering process. "),u(),d(35,"div",3)(36,"div",10)(37,"mat-form-field",4)(38,"mat-label"),m(39,"Time Scale"),u(),d(40,"mat-select",16)(41,"mat-option",17),m(42,"Hours"),u(),d(43,"mat-option",18),m(44,"Minutes"),u(),d(45,"mat-option",19),m(46,"Seconds"),u()()()(),d(47,"div",10)(48,"mat-form-field",4)(49,"mat-label"),m(50,"Duration"),u(),U(51,"input",20),u()()(),d(52,"ul")(53,"li"),m(54,"Hours: per minute sampling rate. Intended for long sampling periods when slow refresh rate is acceptable and system resource usage should be minimized. A Grafana Embed Webpage Viewer widget is a better alternative to this Time Scale. "),u(),d(55,"li"),m(56,"Minutes: per second sampling rate. Meant for trends observations such wind speed, depth, solar power, voltage, etc. "),u(),d(57,"li"),m(58,"Secondes: 200ms sampling rate. Intended for use cases where user may act upon realtime information such as when racing. "),u()()()}if(t&2){let a=It(6),r=It(11);g(5),T("formControl",i.datachartPath())("matAutocomplete",r),g(2),F(a.value?7:-1),g(),F(a.validity.valueMissing?8:i.datachartPath().errors?9:-1),g(4),he(i.filteredNumericPaths()),g(3),T("formControl",i.filterSelfPaths()),g(7),T("formControl",i.datachartSource()),g(),he(i.pathSources()),g(6),T("formControl",i.convertUnitTo()),g(),he(i.unitList().conversions),g(10),T("formControl",i.timeScale()),g(11),T("formControl",i.period())}},dependencies:[Ze,ze,wo,Jn,Tt,zn,fn,ii,Gt,Jt,ut,mt,Yi,Qi,$i,ti,ei,ft,Xe,xt,gt,dt,ki,nt,ct,ji,Un,Ti],styles:[".display-content[_ngcontent-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:10px}"]})}return n})();var Hl=(()=>{class n{transform(e){return Object.keys(e)}static \u0275fac=function(t){return new(t||n)};static \u0275pipe=Fa({name:"objectKeys",type:n,pure:!0})}return n})();var lu=(n,o)=>o.path;function du(n,o){n&1&&U(0,"i",22)}function cu(n,o){n&1&&U(0,"i",23)}function mu(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),Ui("",e.properties.quantity,": ",e.properties.display)}}function uu(n,o){if(n&1){let e=ae();d(0,"div",5)(1,"mat-form-field",21)(2,"mat-label"),G(3,du,1,0,"i",22)(4,cu,1,0,"i",23),m(5," Filter"),u(),d(6,"mat-select",24,2),B("selectionChange",function(){q(e),I();let i=It(11),a=I();return z(a.pathFormGroup().controls.path.setValue(i.value))}),d(8,"mat-option"),m(9,"All"),u(),ue(10,mu,2,3,"mat-option",16,Me),u()()()}if(n&2){let e=It(7),t=I(2);g(3),F(e.value?4:3),g(3),T("formControl",t.pathSkUnitsFilterControl),g(4),he(t.pathSkUnitsFiltersList)}}function hu(n,o){n&1&&(d(0,"span",8),m(1,"(optional)"),u())}function pu(n,o){n&1&&(d(0,"mat-hint"),m(1,"Leave blank to disable this path."),u())}function gu(n,o){if(n&1){let e=ae();d(0,"button",25),B("click",function(){q(e);let i=I(2);return z(i.pathFormGroup().controls.path.setValue(""))}),d(1,"mat-icon"),m(2,"close"),u()()}}function fu(n,o){n&1&&(d(0,"mat-error"),m(1," Path is required. Please enter a valid Signal K path. "),u())}function bu(n,o){n&1&&(d(0,"mat-error"),m(1," Path not recognized. Please enter a path from the server's published list. "),u())}function Au(n,o){if(n&1&&(d(0,"span"),m(1),u(),U(2,"br"),d(3,"small",26),m(4),u()),n&2){let e=I().$implicit;g(),ne(e.path),g(3),ne(e.meta.description)}}function vu(n,o){if(n&1&&m(0),n&2){let e=I().$implicit;ye(" ",e.path," ")}}function yu(n,o){if(n&1&&(d(0,"mat-option",11),G(1,Au,5,2)(2,vu,1,1),u()),n&2){let e=o.$implicit;T("value",e.path),g(),F(e.meta!==void 0?1:2)}}function Cu(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function Su(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function wu(n,o){if(n&1&&(d(0,"mat-optgroup",28),ue(1,Su,2,2,"mat-option",16,Me),u()),n&2){let e=o.$implicit;T("label",e.group),g(),he(e.units)}}function xu(n,o){if(n&1&&(d(0,"mat-form-field",20)(1,"mat-label"),m(2,"Display Format"),u(),d(3,"mat-select",27),ue(4,wu,3,1,"mat-optgroup",28,Me),u()()),n&2){let e=I(2);g(4),he(e.unitList.conversions)}}function _u(n,o){if(n&1&&(d(0,"div",3)(1,"div",4)(2,"span"),m(3),u()(),G(4,uu,12,2,"div",5),d(5,"div",6)(6,"mat-form-field",7)(7,"mat-label"),m(8," Signal K Path "),G(9,hu,2,0,"span",8),u(),U(10,"input",9,0),G(12,pu,2,0,"mat-hint"),G(13,gu,3,0,"button",10),G(14,fu,2,0,"mat-error")(15,bu,2,0,"mat-error"),d(16,"mat-autocomplete",null,1),ue(18,yu,3,2,"mat-option",11,lu),At(20,"async"),u()()(),d(21,"div",12)(22,"div",13)(23,"mat-form-field",14)(24,"mat-label"),m(25,"Data Source"),u(),d(26,"mat-select",15),ue(27,Cu,2,2,"mat-option",16,Me),u()()(),d(29,"div",17)(30,"mat-form-field",14)(31,"mat-label"),m(32,"Sample Time"),u(),U(33,"input",18),u()(),d(34,"div",19),G(35,xu,6,0,"mat-form-field",20),u()()()),n&2){let e,t=It(17),i=I();T("formGroup",i.pathFormGroup()),g(2),re("color",i.pathFormGroup().enabled?"":"rgba(255,255,255,0.5)"),g(),ne(i.pathFormGroup().value.description),g(),F(i.pathFormGroup().value.pathType==="number"&&i.showPathSkUnitsFilter?4:-1),g(5),F(i.pathFormGroup().value.pathRequired===!1?9:-1),g(),T("matAutocomplete",t),g(2),F(i.pathFormGroup().value.pathRequired===!1?12:-1),g(),F(i.pathFormGroup().value.path?13:-1),g(),F((e=i.pathFormGroup().controls.path.errors)!=null&&e.required?14:(e=i.pathFormGroup().controls.path.errors)!=null&&e.requireMatch?15:-1),g(4),he(Bt(20,11,i.filteredPaths)),g(9),he(i.availableSources),g(8),F(i.pathFormGroup().value.pathType==="number"&&i.pathFormGroup().value.showConvertUnitTo===void 0||i.pathFormGroup().value.pathType==="number"&&i.pathFormGroup().value.showConvertUnitTo===!0?35:-1)}}function Mu(n){return o=>{let e=o.parent?.value?.pathRequired!==!1,t=o.value;return e?t===null||t===""?{requireMatch:!0}:n().some(r=>r.path===t)?null:{requireMatch:!0}:t===null||t===""||n().some(r=>r.path===t)?null:{requireMatch:!0}}}var jl=(()=>{class n{_data=A(Ci);_units=A(at);_connection=A(xs);_destroyRef=A(rt);pathFormGroup=v.required();multiCTRLArray=v.required();filterSelfPaths=v.required();availablePaths;filteredPaths=new Ia(null);availableSources;unitList={base:"",conversions:[]};showPathSkUnitsFilter=!1;pathSkUnitsFilterControl=new il(null);pathSkUnitsFiltersList;unitlessUnit={unit:"unitless",properties:{display:"(null)",quantity:"Unitless",quantityDisplay:"(null)",description:""}};ngOnInit(){let e=this.pathFormGroup();e.controls.path.disabled||(this.pathSkUnitsFiltersList=this._units.skBaseUnits.sort((t,i)=>t.properties.quantity>i.properties.quantity?1:-1),this.pathSkUnitsFiltersList.unshift(this.unitlessUnit),e.value.pathSkUnitsFilter&&this.pathSkUnitsFilterControl.setValue(this.pathSkUnitsFiltersList.find(t=>t.unit===this.pathFormGroup().value.pathSkUnitsFilter),{onlySelf:!0}),e.value.showPathSkUnitsFilter&&(this.showPathSkUnitsFilter=e.value.showPathSkUnitsFilter),e.controls.path.setValidators([Mu(()=>this.getPaths())]),e.controls.path.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),e.controls.pathRequired&&e.controls.pathRequired.valueChanges.pipe(et(this._destroyRef)).subscribe(()=>{this.pathFormGroup().controls.path.updateValueAndValidity()}),e.controls.path.valid?this.enableFormFields(!1):this.disablePathFields(),e.controls.sampleTime||(e.addControl("sampleTime",new Kt("500",_t.required)),e.controls.sampleTime.updateValueAndValidity({onlySelf:!0,emitEvent:!1})),e.controls.path.valueChanges.pipe(ns(t=>t===""?ha(0):ha(350)),_n(""),vi(t=>this.filterPaths(t||""))).pipe(et(this._destroyRef)).subscribe(()=>{let t=this.pathFormGroup();t.controls.path.pristine||(t.controls.path.valid?(this.enableFormFields(!0),this.updatePathMetaBoundDisplayName(t.controls.path.value),this.updatePathMetaBoundDisplayScale(t.controls.path.value)):this.disablePathFields())}),e.controls.pathType.valueChanges.pipe(et(this._destroyRef)).subscribe(()=>{let t=this.pathFormGroup();t.value.showPathSkUnitsFilter?this.pathSkUnitsFilterControl.setValue(this.unitlessUnit):this.pathSkUnitsFilterControl.setValue(null),t.controls.path.updateValueAndValidity()}))}ngOnChanges(e){e.filterSelfPaths&&!e.filterSelfPaths.firstChange&&this.pathFormGroup().controls.path.updateValueAndValidity()}getPaths(){let e=this.pathFormGroup().controls.pathType.value,t=this.filterSelfPaths(),i=!1,a=this.pathFormGroup();if(a.value.supportsPut){let r=!1;this.multiCTRLArray().length>0&&(r=this.multiCTRLArray().some(s=>s.pathID===this.pathFormGroup().value.pathID&&s.type==="3")),r?i=!1:i=_s(this._connection.skServerVersion,"2.12.0",">=")?a.value.supportsPut:!1}return this._data.getPathsAndMetaByType(e,i,t).sort()}filterPaths(e){let t=e.toLowerCase(),i=this.getPaths();if(this.pathSkUnitsFilterControl.value){let a=this.pathSkUnitsFilterControl.value.unit;i=i.filter(r=>{let s=!!r.meta&&!!r.meta.units,h=a==="unitless";return s&&r.meta.units===a||!s&&h})}i=i.filter(a=>a.path.toLowerCase().includes(t)),this.filteredPaths.next(i)}enableFormFields(e){let t=this._data.getPathObject(this.pathFormGroup().controls.path.value);if(t!=null){this.pathFormGroup().controls.sampleTime.enable({onlySelf:!1});let i=this.pathFormGroup();i.controls.pathType.value=="number"&&(this.unitList=this._units.getConversionsForPath(i.controls.path.value),e&&i.controls.convertUnitTo.setValue(this.unitList.base,{onlySelf:!0}),i.controls.convertUnitTo.enable({onlySelf:!1})),Object.keys(t.sources).length==1?(this.availableSources=["default"],e?i.controls.source.value!="default"&&i.controls.source.setValue("default",{onlySelf:!0}):i.controls.source.value!="default"&&i.controls.source.setValue("",{onlySelf:!0})):Object.keys(t.sources).length>1&&(this.availableSources=Object.keys(t.sources),i.controls.source.value=="default"&&i.controls.source.reset()),i.controls.source.enable({onlySelf:!1})}else this.disablePathFields()}disablePathFields(){this.pathFormGroup().controls.source.reset("",{onlySelf:!0}),this.pathFormGroup().controls.source.disable({onlySelf:!1}),this.pathFormGroup().controls.sampleTime.disable({onlySelf:!1});let e=this.pathFormGroup();e.controls.pathType.value=="number"&&(e.controls.convertUnitTo.reset("",{onlySelf:!0}),e.controls.convertUnitTo.disable({onlySelf:!1}))}updatePathMetaBoundDisplayName(e){let t=this.pathFormGroup();if(!Object.prototype.hasOwnProperty.call(t.parent.parent.value,"displayName"))return;let i=this._data.getPathMeta(e);i?.displayName&&t.parent.parent.controls.displayName.setValue(i.displayName)}updatePathMetaBoundDisplayScale(e){let t=this.pathFormGroup();if(!Object.prototype.hasOwnProperty.call(t.parent.parent.value,"displayScale"))return;let i=this._data.getPathMeta(e);if(i?.displayScale){let a=t.parent.parent.get("displayScale"),r=t.controls.convertUnitTo.value;i.displayScale.lower!==null&&i.displayScale.lower!==void 0&&a.controls.lower.setValue(this._units.convertToUnit(r,i.displayScale.lower)),i.displayScale.upper!==null&&i.displayScale.upper!==void 0&&a.controls.upper.setValue(this._units.convertToUnit(r,i.displayScale.upper)),i.displayScale.type!==null&&i.displayScale.type!==void 0&&a.controls.type.setValue(i.displayScale.type),i.displayScale.power!==null&&i.displayScale.power!==void 0&&a.controls.power.setValue(i.displayScale.power)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["path-control-config"]],inputs:{pathFormGroup:[1,"pathFormGroup"],multiCTRLArray:[1,"multiCTRLArray"],filterSelfPaths:[1,"filterSelfPaths"]},features:[Yt],decls:1,vars:1,consts:[["pathInput",""],["pathAutoComplete","matAutocomplete"],["pathUnitsFilter",""],[1,"flex-container","rounded-card","rounded-card-color",3,"formGroup"],[1,"flex-field-100"],[1,"flex-field-fixed"],[1,"flex-field-to-100"],["floatLabel","auto","appearance","fill",1,"pathField"],[1,"optional-label"],["type","text","matInput","","placeholder","Type to use autocomplete or select from list","formControlName","path",3,"matAutocomplete"],["mat-icon-button","","matIconSuffix","","aria-label","Clear"],[2,"min-height","48px","line-height","1.15","height","auto","padding","8px 16px","white-space","normal",3,"value"],[1,"pathProperties"],[1,"sourceField"],["appearance","outline","floatLabel","always",1,"fields"],["placeholder","Select source","formControlName","source","required",""],[3,"value"],[1,"sampleTimeField"],["matInput","","type","number","placeholder","Sample time in milliseconds","formControlName","sampleTime","required",""],[1,"unitField"],[1,"fields"],["floatLabel","auto","appearance","fill",1,"filter-path"],[1,"fa-solid","fa-filter"],[1,"fa-solid","fa-filter-circle-xmark"],["panelWidth","",3,"selectionChange","formControl"],["mat-icon-button","","matIconSuffix","","aria-label","Clear",3,"click"],[1,"pathMetaDescription"],["placeholder","Select unit","formControlName","convertUnitTo","required",""],[3,"label"]],template:function(t,i){t&1&&G(0,_u,36,13,"div",3),t&2&&F(i.pathFormGroup().value.isPathConfigurable?0:-1)},dependencies:[pt,dt,ki,nt,Mt,ct,gt,Ti,kt,Hi,ut,mt,ft,wo,Jn,Tt,zn,fn,xt,Qi,Yi,ti,Ze,ze,ol,za],styles:[".pathGroup[_ngcontent-%COMP%]{width:100%}.pathGroupFields[_ngcontent-%COMP%]{display:block;width:calc(100% - 5px)}.pathField[_ngcontent-%COMP%]{width:100%}.pathProperties[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center;align-content:flex-start;gap:10px}.fields[_ngcontent-%COMP%]{width:100%}.sourceField[_ngcontent-%COMP%]{flex:3 1}.sampleTimeField[_ngcontent-%COMP%]{flex:1 3}.unitField[_ngcontent-%COMP%]{flex:3 1}"]})}return n})();function ku(n,o){if(n&1&&U(0,"path-control-config",6),n&2){let e=o.$implicit,t=I(2);T("pathFormGroup",e)("filterSelfPaths",t.filterSelfPaths().value)("multiCTRLArray",t.multiCTRLArray)}}function Tu(n,o){if(n&1&&ue(0,ku,1,3,"path-control-config",6,Me),n&2){let e=I();he(e.pathsFormGroup.controls)}}function Eu(n,o){if(n&1&&U(0,"path-control-config",6),n&2){let e=o.$implicit,t=I(2);T("pathFormGroup",t.pathsFormGroup.get(e))("filterSelfPaths",t.filterSelfPaths().value)("multiCTRLArray",t.multiCTRLArray)}}function Du(n,o){if(n&1&&(ue(0,Eu,1,3,"path-control-config",6,Me),At(2,"objectKeys")),n&2){let e=I();he(Bt(2,0,e.pathsFormGroup.controls))}}var Yl=(()=>{class n{rootFormGroup=A(kt);fb=A(qn);formGroupName=v.required();isArray=v.required();enableTimeout=v.required();dataTimeout=v.required();filterSelfPaths=v.required();addPathEvent=v(void 0);delPathEvent=v(void 0);updatePathEvent=v(void 0);pathsFormGroup;multiCTRLArray=[];ngOnInit(){this.isArray()?(this.pathsFormGroup=this.rootFormGroup.control.get(this.formGroupName()),this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value):this.pathsFormGroup=this.rootFormGroup.control.get(this.formGroupName())}addPath(e){this.pathsFormGroup.push(this.fb.group({description:[e.path.description],path:[e.path.path,_t.required],pathID:[e.path.pathID],source:[e.path.source,_t.required],pathType:[e.path.pathType],isPathConfigurable:[e.path.isPathConfigurable],showPathSkUnitsFilter:[e.path.showPathSkUnitsFilter],pathSkUnitsFilter:[e.path.pathSkUnitsFilter],convertUnitTo:[e.path.convertUnitTo],sampleTime:[e.path.sampleTime],supportsPut:[e.path.supportsPut]})),this.pathsFormGroup.updateValueAndValidity(),this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value}delPath(){this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value}updatePath(e){this.multiCTRLArray=e}ngOnChanges(e){e.addPathEvent&&!e.addPathEvent.firstChange&&this.addPath(e.addPathEvent.currentValue),e.delPathEvent&&!e.delPathEvent.firstChange&&this.delPath(),e.updatePathEvent&&!e.updatePathEvent.firstChange&&this.updatePath(e.updatePathEvent.currentValue)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["paths-options"]],inputs:{formGroupName:[1,"formGroupName"],isArray:[1,"isArray"],enableTimeout:[1,"enableTimeout"],dataTimeout:[1,"dataTimeout"],filterSelfPaths:[1,"filterSelfPaths"],addPathEvent:[1,"addPathEvent"],delPathEvent:[1,"delPathEvent"],updatePathEvent:[1,"updatePathEvent"]},features:[Yt],decls:14,vars:5,consts:[[1,"widget-options-grid"],["name","enableTimeout",3,"formControl"],["type","number","matNativeControl","","placeholder","Time in seconds...","name","dataTimeout","min","2","required","",3,"formControl"],["matTextSuffix",""],[3,"formGroup"],["name","filterSelfPaths",3,"formControl"],[2,"display","block",3,"pathFormGroup","filterSelfPaths","multiCTRLArray"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"mat-checkbox",1),m(2," Enable Widget Data TTL "),u(),d(3,"mat-form-field")(4,"mat-label"),m(5,"TTL Timeout For Paths"),u(),U(6,"input",2),d(7,"span",3),m(8,"Seconds"),u()()(),Dn(9,4),G(10,Tu,2,0)(11,Du,3,2),Pn(),d(12,"mat-checkbox",5),m(13,` Restrict to own vessel
|
|
45
|
-
`),u()),t&2&&(g(),T("formControl",i.enableTimeout()),g(5),T("formControl",i.dataTimeout()),g(3),T("formGroup",i.pathsFormGroup),g(),F(i.isArray()?10:11),g(2),T("formControl",i.filterSelfPaths()))},dependencies:[Gt,pt,dt,ki,nt,Mt,ct,ji,gt,Ti,kt,ut,mt,ft,Qi,jl,Hl],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:5px}"]})}return n})();function Pu(n,o){if(n&1){let e=ae();d(0,"button",7),B("click",function(){q(e);let i=I();return z(i.dateTimezone().setValue(""))}),U(1,"span",8),u()}}function Iu(n,o){if(n&1&&(d(0,"mat-option",6),m(1),u()),n&2){let e=o.$implicit;T("value",e.label),g(),Ui(" ",e.offset," - ",e.label," ")}}function Ou(n){return o=>n.some(t=>t.label===o.value)?null:{requireMatch:!0}}var Ru=()=>{let n=Intl.supportedValuesOf("timeZone"),o=new Date;return n.map(e=>({offset:new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"shortOffset"}).formatToParts(o).find(r=>r.type==="timeZoneName")?.value||"",label:e}))},Ql=(()=>{class n{_destroyRef=A(rt);dateFormat=v(void 0);dateTimezone=v(void 0);tz=[];filteredTZ;filteredTZSubscription=null;constructor(){}ngOnInit(){typeof Intl.supportedValuesOf<"u"?this.tz=Ru().sort((e,t)=>this.compareOffsets(e.offset,t.offset)):(console.log("[Widget Options] Feature not supported. Using static Time Zone list"),this.tz=[{offset:"GMT",label:"Africa/Abidjan"},{offset:"GMT",label:"Africa/Accra"},{offset:"GMT+3",label:"Africa/Addis_Ababa"},{offset:"GMT+1",label:"Africa/Algiers"},{offset:"GMT+3",label:"Africa/Asmera"},{offset:"GMT",label:"Africa/Bamako"},{offset:"GMT+1",label:"Africa/Bangui"},{offset:"GMT",label:"Africa/Banjul"},{offset:"GMT",label:"Africa/Bissau"},{offset:"GMT+2",label:"Africa/Blantyre"},{offset:"GMT+1",label:"Africa/Brazzaville"},{offset:"GMT+2",label:"Africa/Bujumbura"},{offset:"GMT+2",label:"Africa/Cairo"},{offset:"GMT",label:"Africa/Casablanca"},{offset:"GMT+2",label:"Africa/Ceuta"},{offset:"GMT",label:"Africa/Conakry"},{offset:"GMT",label:"Africa/Dakar"},{offset:"GMT+3",label:"Africa/Dar_es_Salaam"},{offset:"GMT+3",label:"Africa/Djibouti"},{offset:"GMT+1",label:"Africa/Douala"},{offset:"GMT",label:"Africa/El_Aaiun"},{offset:"GMT",label:"Africa/Freetown"},{offset:"GMT+2",label:"Africa/Gaborone"},{offset:"GMT+2",label:"Africa/Harare"},{offset:"GMT+2",label:"Africa/Johannesburg"},{offset:"GMT+2",label:"Africa/Juba"},{offset:"GMT+3",label:"Africa/Kampala"},{offset:"GMT+2",label:"Africa/Khartoum"},{offset:"GMT+2",label:"Africa/Kigali"},{offset:"GMT+1",label:"Africa/Kinshasa"},{offset:"GMT+1",label:"Africa/Lagos"},{offset:"GMT+1",label:"Africa/Libreville"},{offset:"GMT",label:"Africa/Lome"},{offset:"GMT+1",label:"Africa/Luanda"},{offset:"GMT+2",label:"Africa/Lubumbashi"},{offset:"GMT+2",label:"Africa/Lusaka"},{offset:"GMT+1",label:"Africa/Malabo"},{offset:"GMT+2",label:"Africa/Maputo"},{offset:"GMT+2",label:"Africa/Maseru"},{offset:"GMT+2",label:"Africa/Mbabane"},{offset:"GMT+3",label:"Africa/Mogadishu"},{offset:"GMT",label:"Africa/Monrovia"},{offset:"GMT+3",label:"Africa/Nairobi"},{offset:"GMT+1",label:"Africa/Ndjamena"},{offset:"GMT+1",label:"Africa/Niamey"},{offset:"GMT",label:"Africa/Nouakchott"},{offset:"GMT",label:"Africa/Ouagadougou"},{offset:"GMT+1",label:"Africa/Porto-Novo"},{offset:"GMT",label:"Africa/Sao_Tome"},{offset:"GMT+2",label:"Africa/Tripoli"},{offset:"GMT+1",label:"Africa/Tunis"},{offset:"GMT+2",label:"Africa/Windhoek"},{offset:"GMT-9",label:"America/Adak"},{offset:"GMT-8",label:"America/Anchorage"},{offset:"GMT-4",label:"America/Anguilla"},{offset:"GMT-4",label:"America/Antigua"},{offset:"GMT-3",label:"America/Araguaina"},{offset:"GMT-3",label:"America/Argentina/La_Rioja"},{offset:"GMT-3",label:"America/Argentina/Rio_Gallegos"},{offset:"GMT-3",label:"America/Argentina/Salta"},{offset:"GMT-3",label:"America/Argentina/San_Juan"},{offset:"GMT-3",label:"America/Argentina/San_Luis"},{offset:"GMT-3",label:"America/Argentina/Tucuman"},{offset:"GMT-3",label:"America/Argentina/Ushuaia"},{offset:"GMT-4",label:"America/Aruba"},{offset:"GMT-3",label:"America/Asuncion"},{offset:"GMT-3",label:"America/Bahia"},{offset:"GMT-6",label:"America/Bahia_Banderas"},{offset:"GMT-4",label:"America/Barbados"},{offset:"GMT-3",label:"America/Belem"},{offset:"GMT-6",label:"America/Belize"},{offset:"GMT-4",label:"America/Blanc-Sablon"},{offset:"GMT-4",label:"America/Boa_Vista"},{offset:"GMT-5",label:"America/Bogota"},{offset:"GMT-6",label:"America/Boise"},{offset:"GMT-3",label:"America/Buenos_Aires"},{offset:"GMT-6",label:"America/Cambridge_Bay"},{offset:"GMT-4",label:"America/Campo_Grande"},{offset:"GMT-5",label:"America/Cancun"},{offset:"GMT-4",label:"America/Caracas"},{offset:"GMT-3",label:"America/Catamarca"},{offset:"GMT-3",label:"America/Cayenne"},{offset:"GMT-5",label:"America/Cayman"},{offset:"GMT-5",label:"America/Chicago"},{offset:"GMT-6",label:"America/Chihuahua"},{offset:"GMT-6",label:"America/Ciudad_Juarez"},{offset:"GMT-5",label:"America/Coral_Harbour"},{offset:"GMT-3",label:"America/Cordoba"},{offset:"GMT-6",label:"America/Costa_Rica"},{offset:"GMT-7",label:"America/Creston"},{offset:"GMT-4",label:"America/Cuiaba"},{offset:"GMT-4",label:"America/Curacao"},{offset:"GMT",label:"America/Danmarkshavn"},{offset:"GMT-7",label:"America/Dawson"},{offset:"GMT-7",label:"America/Dawson_Creek"},{offset:"GMT-6",label:"America/Denver"},{offset:"GMT-4",label:"America/Detroit"},{offset:"GMT-4",label:"America/Dominica"},{offset:"GMT-6",label:"America/Edmonton"},{offset:"GMT-5",label:"America/Eirunepe"},{offset:"GMT-6",label:"America/El_Salvador"},{offset:"GMT-7",label:"America/Fort_Nelson"},{offset:"GMT-3",label:"America/Fortaleza"},{offset:"GMT-3",label:"America/Glace_Bay"},{offset:"GMT-1",label:"America/Godthab"},{offset:"GMT-3",label:"America/Goose_Bay"},{offset:"GMT-4",label:"America/Grand_Turk"},{offset:"GMT-4",label:"America/Grenada"},{offset:"GMT-4",label:"America/Guadeloupe"},{offset:"GMT-6",label:"America/Guatemala"},{offset:"GMT-5",label:"America/Guayaquil"},{offset:"GMT-4",label:"America/Guyana"},{offset:"GMT-3",label:"America/Halifax"},{offset:"GMT-4",label:"America/Havana"},{offset:"GMT-7",label:"America/Hermosillo"},{offset:"GMT-5",label:"America/Indiana/Knox"},{offset:"GMT-4",label:"America/Indiana/Marengo"},{offset:"GMT-4",label:"America/Indiana/Petersburg"},{offset:"GMT-5",label:"America/Indiana/Tell_City"},{offset:"GMT-4",label:"America/Indiana/Vevay"},{offset:"GMT-4",label:"America/Indiana/Vincennes"},{offset:"GMT-4",label:"America/Indiana/Winamac"},{offset:"GMT-4",label:"America/Indianapolis"},{offset:"GMT-6",label:"America/Inuvik"},{offset:"GMT-4",label:"America/Iqaluit"},{offset:"GMT-5",label:"America/Jamaica"},{offset:"GMT-3",label:"America/Jujuy"},{offset:"GMT-8",label:"America/Juneau"},{offset:"GMT-4",label:"America/Kentucky/Monticello"},{offset:"GMT-4",label:"America/Kralendijk"},{offset:"GMT-4",label:"America/La_Paz"},{offset:"GMT-5",label:"America/Lima"},{offset:"GMT-7",label:"America/Los_Angeles"},{offset:"GMT-4",label:"America/Louisville"},{offset:"GMT-4",label:"America/Lower_Princes"},{offset:"GMT-3",label:"America/Maceio"},{offset:"GMT-6",label:"America/Managua"},{offset:"GMT-4",label:"America/Manaus"},{offset:"GMT-4",label:"America/Marigot"},{offset:"GMT-4",label:"America/Martinique"},{offset:"GMT-5",label:"America/Matamoros"},{offset:"GMT-7",label:"America/Mazatlan"},{offset:"GMT-3",label:"America/Mendoza"},{offset:"GMT-5",label:"America/Menominee"},{offset:"GMT-6",label:"America/Merida"},{offset:"GMT-8",label:"America/Metlakatla"},{offset:"GMT-6",label:"America/Mexico_City"},{offset:"GMT-2",label:"America/Miquelon"},{offset:"GMT-3",label:"America/Moncton"},{offset:"GMT-6",label:"America/Monterrey"},{offset:"GMT-3",label:"America/Montevideo"},{offset:"GMT-4",label:"America/Montserrat"},{offset:"GMT-4",label:"America/Nassau"},{offset:"GMT-4",label:"America/New_York"},{offset:"GMT-8",label:"America/Nome"},{offset:"GMT-2",label:"America/Noronha"},{offset:"GMT-5",label:"America/North_Dakota/Beulah"},{offset:"GMT-5",label:"America/North_Dakota/Center"},{offset:"GMT-5",label:"America/North_Dakota/New_Salem"},{offset:"GMT-5",label:"America/Ojinaga"},{offset:"GMT-5",label:"America/Panama"},{offset:"GMT-3",label:"America/Paramaribo"},{offset:"GMT-7",label:"America/Phoenix"},{offset:"GMT-4",label:"America/Port-au-Prince"},{offset:"GMT-4",label:"America/Port_of_Spain"},{offset:"GMT-4",label:"America/Porto_Velho"},{offset:"GMT-4",label:"America/Puerto_Rico"},{offset:"GMT-3",label:"America/Punta_Arenas"},{offset:"GMT-5",label:"America/Rankin_Inlet"},{offset:"GMT-3",label:"America/Recife"},{offset:"GMT-6",label:"America/Regina"},{offset:"GMT-5",label:"America/Resolute"},{offset:"GMT-5",label:"America/Rio_Branco"},{offset:"GMT-3",label:"America/Santarem"},{offset:"GMT-3",label:"America/Santiago"},{offset:"GMT-4",label:"America/Santo_Domingo"},{offset:"GMT-3",label:"America/Sao_Paulo"},{offset:"GMT-1",label:"America/Scoresbysund"},{offset:"GMT-8",label:"America/Sitka"},{offset:"GMT-4",label:"America/St_Barthelemy"},{offset:"GMT-2:30",label:"America/St_Johns"},{offset:"GMT-4",label:"America/St_Kitts"},{offset:"GMT-4",label:"America/St_Lucia"},{offset:"GMT-4",label:"America/St_Thomas"},{offset:"GMT-4",label:"America/St_Vincent"},{offset:"GMT-6",label:"America/Swift_Current"},{offset:"GMT-6",label:"America/Tegucigalpa"},{offset:"GMT-3",label:"America/Thule"},{offset:"GMT-7",label:"America/Tijuana"},{offset:"GMT-4",label:"America/Toronto"},{offset:"GMT-4",label:"America/Tortola"},{offset:"GMT-7",label:"America/Vancouver"},{offset:"GMT-7",label:"America/Whitehorse"},{offset:"GMT-5",label:"America/Winnipeg"},{offset:"GMT-8",label:"America/Yakutat"},{offset:"GMT+8",label:"Antarctica/Casey"},{offset:"GMT+7",label:"Antarctica/Davis"},{offset:"GMT+10",label:"Antarctica/DumontDUrville"},{offset:"GMT+11",label:"Antarctica/Macquarie"},{offset:"GMT+5",label:"Antarctica/Mawson"},{offset:"GMT+13",label:"Antarctica/McMurdo"},{offset:"GMT-3",label:"Antarctica/Palmer"},{offset:"GMT-3",label:"Antarctica/Rothera"},{offset:"GMT+3",label:"Antarctica/Syowa"},{offset:"GMT+2",label:"Antarctica/Troll"},{offset:"GMT+5",label:"Antarctica/Vostok"},{offset:"GMT+2",label:"Arctic/Longyearbyen"},{offset:"GMT+3",label:"Asia/Aden"},{offset:"GMT+5",label:"Asia/Almaty"},{offset:"GMT+3",label:"Asia/Amman"},{offset:"GMT+12",label:"Asia/Anadyr"},{offset:"GMT+5",label:"Asia/Aqtau"},{offset:"GMT+5",label:"Asia/Aqtobe"},{offset:"GMT+5",label:"Asia/Ashgabat"},{offset:"GMT+5",label:"Asia/Atyrau"},{offset:"GMT+3",label:"Asia/Baghdad"},{offset:"GMT+3",label:"Asia/Bahrain"},{offset:"GMT+4",label:"Asia/Baku"},{offset:"GMT+7",label:"Asia/Bangkok"},{offset:"GMT+7",label:"Asia/Barnaul"},{offset:"GMT+3",label:"Asia/Beirut"},{offset:"GMT+6",label:"Asia/Bishkek"},{offset:"GMT+8",label:"Asia/Brunei"},{offset:"GMT+5:30",label:"Asia/Calcutta"},{offset:"GMT+9",label:"Asia/Chita"},{offset:"GMT+5:30",label:"Asia/Colombo"},{offset:"GMT+3",label:"Asia/Damascus"},{offset:"GMT+6",label:"Asia/Dhaka"},{offset:"GMT+9",label:"Asia/Dili"},{offset:"GMT+4",label:"Asia/Dubai"},{offset:"GMT+5",label:"Asia/Dushanbe"},{offset:"GMT+3",label:"Asia/Famagusta"},{offset:"GMT+2",label:"Asia/Gaza"},{offset:"GMT+2",label:"Asia/Hebron"},{offset:"GMT+8",label:"Asia/Hong_Kong"},{offset:"GMT+7",label:"Asia/Hovd"},{offset:"GMT+8",label:"Asia/Irkutsk"},{offset:"GMT+7",label:"Asia/Jakarta"},{offset:"GMT+9",label:"Asia/Jayapura"},{offset:"GMT+3",label:"Asia/Jerusalem"},{offset:"GMT+4:30",label:"Asia/Kabul"},{offset:"GMT+12",label:"Asia/Kamchatka"},{offset:"GMT+5",label:"Asia/Karachi"},{offset:"GMT+5:45",label:"Asia/Katmandu"},{offset:"GMT+9",label:"Asia/Khandyga"},{offset:"GMT+7",label:"Asia/Krasnoyarsk"},{offset:"GMT+8",label:"Asia/Kuala_Lumpur"},{offset:"GMT+8",label:"Asia/Kuching"},{offset:"GMT+3",label:"Asia/Kuwait"},{offset:"GMT+8",label:"Asia/Macau"},{offset:"GMT+11",label:"Asia/Magadan"},{offset:"GMT+8",label:"Asia/Makassar"},{offset:"GMT+8",label:"Asia/Manila"},{offset:"GMT+4",label:"Asia/Muscat"},{offset:"GMT+3",label:"Asia/Nicosia"},{offset:"GMT+7",label:"Asia/Novokuznetsk"},{offset:"GMT+7",label:"Asia/Novosibirsk"},{offset:"GMT+6",label:"Asia/Omsk"},{offset:"GMT+5",label:"Asia/Oral"},{offset:"GMT+7",label:"Asia/Phnom_Penh"},{offset:"GMT+7",label:"Asia/Pontianak"},{offset:"GMT+9",label:"Asia/Pyongyang"},{offset:"GMT+3",label:"Asia/Qatar"},{offset:"GMT+5",label:"Asia/Qostanay"},{offset:"GMT+5",label:"Asia/Qyzylorda"},{offset:"GMT+6:30",label:"Asia/Rangoon"},{offset:"GMT+3",label:"Asia/Riyadh"},{offset:"GMT+7",label:"Asia/Saigon"},{offset:"GMT+11",label:"Asia/Sakhalin"},{offset:"GMT+5",label:"Asia/Samarkand"},{offset:"GMT+9",label:"Asia/Seoul"},{offset:"GMT+8",label:"Asia/Shanghai"},{offset:"GMT+8",label:"Asia/Singapore"},{offset:"GMT+11",label:"Asia/Srednekolymsk"},{offset:"GMT+8",label:"Asia/Taipei"},{offset:"GMT+5",label:"Asia/Tashkent"},{offset:"GMT+4",label:"Asia/Tbilisi"},{offset:"GMT+3:30",label:"Asia/Tehran"},{offset:"GMT+6",label:"Asia/Thimphu"},{offset:"GMT+9",label:"Asia/Tokyo"},{offset:"GMT+7",label:"Asia/Tomsk"},{offset:"GMT+8",label:"Asia/Ulaanbaatar"},{offset:"GMT+6",label:"Asia/Urumqi"},{offset:"GMT+10",label:"Asia/Ust-Nera"},{offset:"GMT+7",label:"Asia/Vientiane"},{offset:"GMT+10",label:"Asia/Vladivostok"},{offset:"GMT+9",label:"Asia/Yakutsk"},{offset:"GMT+5",label:"Asia/Yekaterinburg"},{offset:"GMT+4",label:"Asia/Yerevan"},{offset:"GMT",label:"Atlantic/Azores"},{offset:"GMT-3",label:"Atlantic/Bermuda"},{offset:"GMT+1",label:"Atlantic/Canary"},{offset:"GMT-1",label:"Atlantic/Cape_Verde"},{offset:"GMT+1",label:"Atlantic/Faeroe"},{offset:"GMT+1",label:"Atlantic/Madeira"},{offset:"GMT",label:"Atlantic/Reykjavik"},{offset:"GMT-2",label:"Atlantic/South_Georgia"},{offset:"GMT",label:"Atlantic/St_Helena"},{offset:"GMT-3",label:"Atlantic/Stanley"},{offset:"GMT+10:30",label:"Australia/Adelaide"},{offset:"GMT+10",label:"Australia/Brisbane"},{offset:"GMT+10:30",label:"Australia/Broken_Hill"},{offset:"GMT+9:30",label:"Australia/Darwin"},{offset:"GMT+8:45",label:"Australia/Eucla"},{offset:"GMT+11",label:"Australia/Hobart"},{offset:"GMT+10",label:"Australia/Lindeman"},{offset:"GMT+11",label:"Australia/Lord_Howe"},{offset:"GMT+11",label:"Australia/Melbourne"},{offset:"GMT+8",label:"Australia/Perth"},{offset:"GMT+11",label:"Australia/Sydney"},{offset:"GMT+2",label:"Europe/Amsterdam"},{offset:"GMT+2",label:"Europe/Andorra"},{offset:"GMT+4",label:"Europe/Astrakhan"},{offset:"GMT+3",label:"Europe/Athens"},{offset:"GMT+2",label:"Europe/Belgrade"},{offset:"GMT+2",label:"Europe/Berlin"},{offset:"GMT+2",label:"Europe/Bratislava"},{offset:"GMT+2",label:"Europe/Brussels"},{offset:"GMT+3",label:"Europe/Bucharest"},{offset:"GMT+2",label:"Europe/Budapest"},{offset:"GMT+2",label:"Europe/Busingen"},{offset:"GMT+3",label:"Europe/Chisinau"},{offset:"GMT+2",label:"Europe/Copenhagen"},{offset:"GMT+1",label:"Europe/Dublin"},{offset:"GMT+2",label:"Europe/Gibraltar"},{offset:"GMT+1",label:"Europe/Guernsey"},{offset:"GMT+3",label:"Europe/Helsinki"},{offset:"GMT+1",label:"Europe/Isle_of_Man"},{offset:"GMT+3",label:"Europe/Istanbul"},{offset:"GMT+1",label:"Europe/Jersey"},{offset:"GMT+2",label:"Europe/Kaliningrad"},{offset:"GMT+3",label:"Europe/Kiev"},{offset:"GMT+3",label:"Europe/Kirov"},{offset:"GMT+1",label:"Europe/Lisbon"},{offset:"GMT+2",label:"Europe/Ljubljana"},{offset:"GMT+1",label:"Europe/London"},{offset:"GMT+2",label:"Europe/Luxembourg"},{offset:"GMT+2",label:"Europe/Madrid"},{offset:"GMT+2",label:"Europe/Malta"},{offset:"GMT+3",label:"Europe/Mariehamn"},{offset:"GMT+3",label:"Europe/Minsk"},{offset:"GMT+2",label:"Europe/Monaco"},{offset:"GMT+3",label:"Europe/Moscow"},{offset:"GMT+2",label:"Europe/Oslo"},{offset:"GMT+2",label:"Europe/Paris"},{offset:"GMT+2",label:"Europe/Podgorica"},{offset:"GMT+2",label:"Europe/Prague"},{offset:"GMT+3",label:"Europe/Riga"},{offset:"GMT+2",label:"Europe/Rome"},{offset:"GMT+4",label:"Europe/Samara"},{offset:"GMT+2",label:"Europe/San_Marino"},{offset:"GMT+2",label:"Europe/Sarajevo"},{offset:"GMT+4",label:"Europe/Saratov"},{offset:"GMT+3",label:"Europe/Simferopol"},{offset:"GMT+2",label:"Europe/Skopje"},{offset:"GMT+3",label:"Europe/Sofia"},{offset:"GMT+2",label:"Europe/Stockholm"},{offset:"GMT+3",label:"Europe/Tallinn"},{offset:"GMT+2",label:"Europe/Tirane"},{offset:"GMT+4",label:"Europe/Ulyanovsk"},{offset:"GMT+2",label:"Europe/Vaduz"},{offset:"GMT+2",label:"Europe/Vatican"},{offset:"GMT+2",label:"Europe/Vienna"},{offset:"GMT+3",label:"Europe/Vilnius"},{offset:"GMT+3",label:"Europe/Volgograd"},{offset:"GMT+2",label:"Europe/Warsaw"},{offset:"GMT+2",label:"Europe/Zagreb"},{offset:"GMT+2",label:"Europe/Zurich"},{offset:"GMT+3",label:"Indian/Antananarivo"},{offset:"GMT+6",label:"Indian/Chagos"},{offset:"GMT+7",label:"Indian/Christmas"},{offset:"GMT+6:30",label:"Indian/Cocos"},{offset:"GMT+3",label:"Indian/Comoro"},{offset:"GMT+5",label:"Indian/Kerguelen"},{offset:"GMT+4",label:"Indian/Mahe"},{offset:"GMT+5",label:"Indian/Maldives"},{offset:"GMT+4",label:"Indian/Mauritius"},{offset:"GMT+3",label:"Indian/Mayotte"},{offset:"GMT+4",label:"Indian/Reunion"},{offset:"GMT+13",label:"Pacific/Apia"},{offset:"GMT+13",label:"Pacific/Auckland"},{offset:"GMT+11",label:"Pacific/Bougainville"},{offset:"GMT+13:45",label:"Pacific/Chatham"},{offset:"GMT-5",label:"Pacific/Easter"},{offset:"GMT+11",label:"Pacific/Efate"},{offset:"GMT+13",label:"Pacific/Enderbury"},{offset:"GMT+13",label:"Pacific/Fakaofo"},{offset:"GMT+12",label:"Pacific/Fiji"},{offset:"GMT+12",label:"Pacific/Funafuti"},{offset:"GMT-6",label:"Pacific/Galapagos"},{offset:"GMT-9",label:"Pacific/Gambier"},{offset:"GMT+11",label:"Pacific/Guadalcanal"},{offset:"GMT+10",label:"Pacific/Guam"},{offset:"GMT-10",label:"Pacific/Honolulu"},{offset:"GMT+14",label:"Pacific/Kiritimati"},{offset:"GMT+11",label:"Pacific/Kosrae"},{offset:"GMT+12",label:"Pacific/Kwajalein"},{offset:"GMT+12",label:"Pacific/Majuro"},{offset:"GMT-9:30",label:"Pacific/Marquesas"},{offset:"GMT-11",label:"Pacific/Midway"},{offset:"GMT+12",label:"Pacific/Nauru"},{offset:"GMT-11",label:"Pacific/Niue"},{offset:"GMT+12",label:"Pacific/Norfolk"},{offset:"GMT+11",label:"Pacific/Noumea"},{offset:"GMT-11",label:"Pacific/Pago_Pago"},{offset:"GMT+9",label:"Pacific/Palau"},{offset:"GMT-8",label:"Pacific/Pitcairn"},{offset:"GMT+11",label:"Pacific/Ponape"},{offset:"GMT+10",label:"Pacific/Port_Moresby"},{offset:"GMT-10",label:"Pacific/Rarotonga"},{offset:"GMT+10",label:"Pacific/Saipan"},{offset:"GMT-10",label:"Pacific/Tahiti"},{offset:"GMT+12",label:"Pacific/Tarawa"},{offset:"GMT+13",label:"Pacific/Tongatapu"},{offset:"GMT+10",label:"Pacific/Truk"},{offset:"GMT+12",label:"Pacific/Wake"},{offset:"GMT+12",label:"Pacific/Wallis"}].sort((e,t)=>this.compareOffsets(e.offset,t.offset))),this.tz.unshift({offset:"",label:"System Timezone -"}),this.dateTimezone().setValidators([_t.required,Ou(this.tz)]),this.filteredTZ=this.dateTimezone().valueChanges.pipe(Li(500),_n(""),vi(e=>this.filterTZ(e||""))),this.filteredTZSubscription=this.filteredTZ.pipe(et(this._destroyRef)).subscribe()}filterTZ(e){let t=e.toLowerCase();return this.tz.filter(i=>i.label.toLowerCase().includes(t))}compareOffsets(e,t){let i=a=>{let r=a.match(/([+-]?)(\d+)(?::(\d+))?/);if(!r)return 0;let s=r[1]==="-"?-1:1,h=parseInt(r[2],10),f=r[3]?parseInt(r[3],10):0;return s*(h*60+f)};return i(e)-i(t)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["display-datetime-options"]],inputs:{dateFormat:[1,"dateFormat"],dateTimezone:[1,"dateTimezone"]},decls:15,vars:6,consts:[["timeZoneAutoComplete","matAutocomplete"],[1,"widget-options-grid"],[1,"options-grid-span2"],["matInput","","placeholder","dd/MM/yyyy HH:mm:ss","name","dateFormat","required","",3,"formControl"],["type","text","matInput","","placeholder","Type to use autocomplete","name","dateTimezone","required","",3,"formControl","matAutocomplete"],["mat-icon-button","","matSuffix","","aria-label","Clear"],[3,"value"],["mat-icon-button","","matSuffix","","aria-label","Clear",3,"click"],[1,"fa-solid","fa-close"]],template:function(t,i){if(t&1&&(d(0,"div",1)(1,"mat-form-field",2)(2,"mat-label"),m(3,"Date & Time Format"),u(),U(4,"input",3),u(),d(5,"mat-form-field",2)(6,"mat-label"),m(7,"Adjust Value to Time Zone"),u(),U(8,"input",4),G(9,Pu,2,0,"button",5),d(10,"mat-autocomplete",null,0),ue(12,Iu,2,3,"mat-option",6,En),At(14,"async"),u()()()),t&2){let a=It(11);g(4),T("formControl",i.dateFormat()),g(4),T("formControl",i.dateTimezone())("matAutocomplete",a),g(),F(i.dateTimezone().value?9:-1),g(3),he(Bt(14,4,i.filteredTZ))}},dependencies:[ut,mt,ft,pt,dt,nt,ct,gt,Ti,fn,xt,Qi,Jn,Tt,za],encapsulation:2})}return n})();function Nu(n,o){if(n&1&&(d(0,"mat-option",6),m(1),At(2,"titlecase"),u()),n&2){let e=o.$implicit;T("value",di(e)),g(),ne(Bt(2,3,e))}}var sr={V1_PLUGIN:"autopilot",V2_BASE:"/signalk/v2/api",V2_AUTOPILOTS:"/signalk/v2/api/vessels/self/autopilots",V2_DEFAULT_AUTOPILOT_ID:"/signalk/v2/api/vessels/self/autopilots/_providers/_default"},$l={options:{modes:[],states:[]},state:null,mode:"off-line",target:null,engaged:!1},Zl=(()=>{class n{formGroupName=v.required();_plugins=A(oo);_destroyRef=A(rt);http=A(Ya);rootFormGroup=A(kt);autopilotFormGroup;apiVersion=w(null);availableAutopilots=w({});autopilotPlugin=w(null);discoveryInProgress=w(!1);apiDetectionError=w(null);apInstances=se(()=>{let e=this.availableAutopilots();return e?Object.keys(e):[]});modes=w(null);pluginId=w(null);currentRequests=new Set;constructor(){R(()=>{this.autopilotFormGroup.get("apiVersion")?.setValue(this.apiVersion(),{emitEvent:!1})})}ngOnInit(){this.autopilotFormGroup=this.rootFormGroup.control.get(this.formGroupName()),this.modes.set(this.autopilotFormGroup.value.modes||null),this.detectAutopilotApi()}detectAutopilotApi(){return it(this,null,function*(){this.discoveryInProgress.set(!0),console.log("[Autopilot Options] Starting API detection...");try{if(yield this.checkV2Api())if(this.apiVersion.set("v2"),this.autopilotFormGroup.get("apiVersion")?.setValue("v2",{emitEvent:!1}),this.availableAutopilots()&&Object.keys(this.availableAutopilots()).length>0){this.pluginId.set(Object.values(this.availableAutopilots())[0]?.provider??null),this.autopilotFormGroup.get("pluginId")?.setValue(this.pluginId(),{emitEvent:!1}),this.discoveryInProgress.set(!1);return}else console.warn("[Autopilot Options] No V2 autopilot provider found")}catch(e){console.error("[Autopilot Options] Error checking V2 API, checking V1...",e)}try{if(yield this._plugins.isEnabled(sr.V1_PLUGIN)){this.apiVersion.set("v1"),this.autopilotFormGroup.get("apiVersion")?.setValue("v1",{emitEvent:!1}),this.availableAutopilots.set({"Default Autopilot":{provider:"Signal K Autopilot",isDefault:!0}}),this.pluginId.set("Signal K Autopilot"),this.autopilotFormGroup.get("pluginId")?.setValue("Signal K Autopilot",{emitEvent:!1}),console.log("[Autopilot Options] V1 API Signal K Autopilot plugin detected"),this.discoveryInProgress.set(!1);return}console.log("[Autopilot Options] V1 API plugin (signalk-autopilot) not found")}catch(e){console.error("[Autopilot Options] V1 plugin detection failed:",e)}console.warn("[Autopilot Options] No Autopilot detected"),this.discoveryInProgress.set(!1)})}checkV2Api(){return it(this,null,function*(){try{let e=yield Qo(this.makeHttpRequest(this.http.get(sr.V2_AUTOPILOTS,{observe:"response",responseType:"json"})));return e&&e.body&&Object.keys(e.body).length>0?(this.availableAutopilots.set(e.body),console.log("[Autopilot Options] Discovered V2 API autopilot providers:",JSON.stringify(e.body))):(this.availableAutopilots.set({}),console.warn("[Autopilot Options] No V2 autopilot provider plugin found.")),e?.status===200}catch(e){if(e&&typeof e=="object"&&"status"in e){let t=e;t.status===404?console.log("[Autopilot Options] V2 API endpoint not found (404)"):t.status>=500?console.warn("[Autopilot Options] V2 API server error:",t.status,t.statusText):console.log("[Autopilot Options] V2 API call to discover Autopilot Providers failed:",t.status,t.statusText)}else console.log("[Autopilot Options] V2 API network error:",e);return!1}})}discoverV2AutopilotOptions(e){return it(this,null,function*(){let t;try{try{this.discoveryInProgress.set(!0),t=yield Qo(this.makeHttpRequest(this.http.get(`${sr.V2_AUTOPILOTS}/${e}`))),console.log("[Autopilot Options] V2 Autopilot Options response:",JSON.stringify(t))}catch{t=$l,console.log(`[Autopilot Options] Default AP discovery endpoint error for instance '${e}'`)}return this.discoveryInProgress.set(!1),t}catch(i){return console.error("[Autopilot Options] Failed to discover V2 endpoints:",i),console.log(`[Autopilot Options] Using fallback V2 endpoints for instance '${e}'`),$l}})}onAutopilotInstanceIdChange(e){let t=e.value;if(e.value===""){this.modes.set(""),this.autopilotFormGroup.get("modes")?.setValue("",{emitEvent:!1});return}console.log("[Autopilot Options] Selected Autopilot Instance ID:",t),this.apiVersion()==="v2"?this.discoverV2AutopilotOptions(t).then(i=>{let a=i.options.modes||[];this.modes.set(a.join(", ")),this.autopilotFormGroup.get("modes")?.setValue(a,{emitEvent:!1}),console.log("[Autopilot Options] Autopilot plugin supported modes :",a.join(", "))}).catch(i=>{console.error("[Autopilot Options] Error requesting autopilot modes:",i),this.autopilotFormGroup.get("modes")?.setValue([],{emitEvent:!1})}):this.apiVersion()==="v1"&&(this.modes.set("standby, auto, wind, route"),this.autopilotFormGroup.get("modes")?.setValue("standby, auto, wind, route",{emitEvent:!1}),console.log("[Autopilot Options] Autopilot mode set to Raymarine v1 API modes: standby, auto, wind, route"))}makeHttpRequest(e){let t=e.pipe(et(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ra(()=>this.currentRequests.delete(t)))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["select-autopilot"]],inputs:{formGroupName:[1,"formGroupName"]},decls:30,vars:4,consts:[[1,"display-content","tab-content"],[1,"autopilot-options",3,"formGroup"],[1,"flex-item-rounded-card","rounded-card-color",2,"margin-block","10px"],[2,"margin-block-start","0px"],["placeholder","Select autopilot...","formControlName","instanceId","name","instanceId","required","",3,"selectionChange"],["value",""],[3,"value"],[1,"flex-item-rounded-card","rounded-card-color",2,"margin-block","10px","margin-left","10px","margin-right","10px"],["name","headingDirectionTrue","formControlName","headingDirectionTrue"],["name","invertRudder","formControlName","invertRudder"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),m(4,"Signal K Service Discovery"),u(),d(5,"ul")(6,"li")(7,"b"),m(8,"API Version:"),u(),m(9),u(),d(10,"li")(11,"b"),m(12,"Plugin:"),u(),m(13),u()()(),d(14,"mat-form-field")(15,"mat-label"),m(16,"Target Autopilot"),u(),d(17,"mat-select",4),B("selectionChange",function(r){return i.onAutopilotInstanceIdChange(r)}),d(18,"mat-option",5),m(19,"No autopilot"),u(),ue(20,Nu,3,5,"mat-option",6,Me),u()(),d(22,"div",7)(23,"b"),m(24,"Supported modes:"),u(),m(25),u(),d(26,"mat-checkbox",8),m(27," Display True Heading "),u(),d(28,"mat-checkbox",9),m(29," Invert Rudder Angle Indicator "),u()()()),t&2&&(g(),T("formGroup",i.autopilotFormGroup),g(8),ye(" ",i.apiVersion()),g(4),ye(" ",i.pluginId()),g(7),he(i.apInstances()),g(5),ye(" ",i.modes()," "))},dependencies:[gt,nt,Mt,ct,kt,Hi,Jt,ut,mt,ii,Gt,$i,ti,Tt,ei,Ha],styles:[".autopilot-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}"]})}return n})();var Xl=()=>["measuring","capacity"],Vu=()=>["marineCompass","baseplateCompass"],Wu=()=>["measuring"];function Lu(n,o){if(n&1&&U(0,"config-display-chart-options",5),n&2){let e=I();T("displayName",e.displayNameToControl)("datasetUUID",e.datasetUUIDToControl)("convertUnitTo",e.convertUnitToControl)("showAverageData",e.showAverageDataToControl)("trackAgainstAverage",e.trackAgainstAverageToControl)("datasetAverageArray",e.datasetAverageArrayToControl)("showDatasetMinimumValueLine",e.showDatasetMinimumValueLineToControl)("showDatasetMaximumValueLine",e.showDatasetMaximumValueLineToControl)("showDatasetAverageValueLine",e.showDatasetAverageValueLineToControl)("showDatasetAngleAverageValueLine",e.showDatasetAngleAverageValueLineToControl)("startScaleAtZero",e.startScaleAtZeroToControl)("showLabel",e.showLabelToControl)("showTimeScale",e.showTimeScaleToControl)("showYScale",e.showYScaleToControl)("yScaleSuggestedMin",e.yScaleSuggestedMinToControl)("yScaleSuggestedMax",e.yScaleSuggestedMaxToControl)("enableMinMaxScaleLimit",e.enableMinMaxScaleLimitToControl)("yScaleMin",e.yScaleMinToControl)("yScaleMax",e.yScaleMaxToControl)("numDecimal",e.numDecimalToControl)("verticalChart",e.verticalChartToControl)("inverseYAxis",e.inverseYAxisToControl)("color",e.colorToControl)}}function Gu(n,o){n&1&&U(0,"select-autopilot",6)}function Fu(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"URL"),u(),U(3,"input",39),u())}function Bu(n,o){n&1&&(d(0,"mat-checkbox",17),m(1," Allow pointer events on embedded content. WARNING: this may prevent swipe gestures over the Embed widget or keyboard events, while the focus is in the embed, from triggering normal KIP interactions. "),u())}function Uu(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Widget Label"),u(),U(3,"input",40),u())}function qu(n,o){n&1&&(d(0,"mat-form-field",41)(1,"mat-label"),m(2,"Scale Start"),u(),U(3,"input",42),u(),d(4,"mat-form-field",41)(5,"mat-label"),m(6,"Scale End"),u(),U(7,"input",43),u())}function zu(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Integer Places"),u(),U(3,"input",44),u())}function Hu(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Decimal Places"),u(),U(3,"input",45),u()),n&2){let e=I(2);Ft(e.widgetConfig.showMiniChart!==void 0?"options-grid-span2":"")}}function ju(n,o){n&1&&(d(0,"mat-checkbox",19),m(1," Show Min recorded value "),u())}function Yu(n,o){n&1&&(d(0,"mat-checkbox",20),m(1," Show Max recorded value "),u())}function Qu(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Next Dashboard after start"),u(),U(3,"input",46),u()),n&2){let e=I(2);Je("options-grid-span2",!e.widgetConfig.numInt)}}function $u(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function Zu(n,o){if(n&1&&(d(0,"mat-optgroup",48),ue(1,$u,2,2,"mat-option",49,Me),u()),n&2){let e=I().$implicit;T("label",e.group),g(),he(e.units)}}function Xu(n,o){if(n&1&&G(0,Zu,3,1,"mat-optgroup",48),n&2){let e=o.$implicit,t=I(3);F(!t.widgetConfig.convertUnitToGroup||t.widgetConfig.convertUnitToGroup===""||t.widgetConfig.convertUnitToGroup===e.group?0:-1)}}function Ku(n,o){if(n&1&&(d(0,"mat-form-field",22)(1,"mat-label"),m(2,"Display Units"),u(),d(3,"mat-select",47),ue(4,Xu,1,1,null,null,Me),u()()),n&2){let e=I(2);g(4),he(e.unitList.conversions)}}function Ju(n,o){n&1&&(d(0,"mat-checkbox",23),m(1," Enable beeps on count down "),u())}function eh(n,o){if(n&1&&U(0,"display-datetime-options",24),n&2){let e=I(2);T("dateFormat",e.dateFormatToControl)("dateTimezone",e.dateTimezoneToControl)}}function th(n,o){n&1&&(d(0,"mat-checkbox",25),m(1," Close-hauled Lines "),u())}function ih(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Vessel Close-hauled Angle"),u(),U(3,"input",50),u())}function nh(n,o){n&1&&(d(0,"mat-checkbox",26),m(1," Wind Sectors "),u())}function ah(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Sector Duration"),u(),U(3,"input",51),u())}function oh(n,o){n&1&&(d(0,"mat-checkbox",27),m(1," Apparent Wind Speed Value "),u())}function rh(n,o){n&1&&(d(0,"mat-checkbox",28),m(1," True Wind Speed Value "),u())}function sh(n,o){n&1&&(d(0,"mat-checkbox",29),m(1," Course Over Ground "),u())}function lh(n,o){n&1&&(d(0,"mat-checkbox",30),m(1," True Wind Angle Indicator "),u())}function dh(n,o){n&1&&(d(0,"mat-checkbox",31),m(1," Next Waypoint "),u())}function ch(n,o){n&1&&(d(0,"mat-checkbox",32),m(1," Drift "),u())}function mh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Minimum Value"),u(),U(3,"input",52),u())}function uh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Maximum Value"),u(),U(3,"input",53),u())}function hh(n,o){n&1&&(d(0,"mat-checkbox",33),m(1," Ignore Zones configuration "),u())}function ph(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",55),m(2," Show Heeling Side Label "),u()(),d(3,"div",54)(4,"mat-checkbox",56),m(5," Reverse Angle "),u()())}function gh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",59),m(2," Show Progress Bar "),u()(),d(3,"div",34)(4,"mat-checkbox",60),m(5," Show Ticks "),u()())}function fh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",60),m(2," Show Ticks "),u()())}function bh(n,o){if(n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Highlights Width"),u(),U(3,"input",57),u(),d(4,"div",54)(5,"mat-checkbox",58),m(6," Show Needle Indicator "),u()(),G(7,gh,6,0)(8,fh,3,0,"div",54)),n&2){let e=I(2);g(7),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"?7:8)}}function Ah(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Rotation Element"),u(),d(3,"mat-select",61)(4,"mat-option",62),m(5,"Dial (Marine Compass)"),u(),d(6,"mat-option",63),m(7,"Needle (Base plate compass)"),u()()(),d(8,"div",54)(9,"mat-checkbox",64),m(10," Show value box "),u()(),d(11,"div",54)(12,"mat-checkbox",65),m(13," Show cardinal degrees "),u()())}function vh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Progress Bar Start Position"),u(),d(3,"mat-select",68)(4,"mat-option",69),m(5,"Left"),u(),d(6,"mat-option",70),m(7,"Middle"),u(),d(8,"mat-option",71),m(9,"Right"),u()()())}function yh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Progress Bar Start Angle"),u(),U(3,"input",72),u())}function Ch(n,o){if(n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Gauge Type"),u(),d(3,"mat-select",61)(4,"mat-option",66),m(5,"Measuring"),u(),d(6,"mat-option",67),m(7,"Capacity"),u()()(),G(8,vh,10,0,"mat-form-field",54),G(9,yh,4,0,"mat-form-field",54)),n&2){let e=I(3);g(8),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"&&ba(2,Wu).includes(e.formMaster.value.gauge.subType)?8:-1),g(),F(e.formMaster.value.gauge.subType==="capacity"?9:-1)}}function Sh(n,o){if(n&1&&G(0,Ah,14,0)(1,Ch,10,3),n&2){let e=I(2);F(ba(1,Vu).indexOf(e.formMaster.value.gauge.subType)>-1?0:ba(2,Xl).indexOf(e.formMaster.value.gauge.subType)>-1?1:-1)}}function wh(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Orientation"),u(),d(3,"mat-select",73)(4,"mat-option",74),m(5,"Vertical"),u(),d(6,"mat-option",75),m(7,"Horizontal"),u()()())}function xh(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Unit Label"),u(),d(3,"mat-select",76)(4,"mat-option",77),m(5,"Full Label"),u(),d(6,"mat-option",78),m(7,"First Letter Only"),u()()())}function _h(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",di(e.value)),g(),ne(e.label)}}function Mh(n,o){if(n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Color"),u(),d(3,"mat-select",79),ue(4,_h,2,3,"mat-option",49,Me),u()()),n&2){let e=I(2);g(4),he(e.colors)}}function kh(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Scale Span"),u(),d(3,"mat-select",80)(4,"mat-option",81),m(5,"1 Minute"),u(),d(6,"mat-option",82),m(7,"5 Minutes"),u(),d(8,"mat-option",83),m(9,"30 Minutes"),u()()())}function Th(n,o){n&1&&(d(0,"mat-checkbox",35),m(1," Show Background Graph "),d(2,"i"),m(3,"(Too many graphs may affect performance)"),u()())}function Eh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Suggested Scale Start"),u(),U(3,"input",84),u())}function Dh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Suggested Scale End"),u(),U(3,"input",85),u())}function Ph(n,o){n&1&&(d(0,"mat-checkbox",36),m(1," Inverse Scale Axis "),u())}function Ih(n,o){n&1&&(d(0,"mat-checkbox",37),m(1," Vertical Data Graph "),u())}function Oh(n,o){n&1&&(d(0,"mat-checkbox",38),m(1," Disable background color "),u())}function Rh(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",di(e.value)),g(),ne(e.label)}}function Nh(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Background Color"),u(),d(3,"mat-select",86),ue(4,Rh,2,3,"mat-option",49,Me),u()()),n&2){let e=I(2);g(4),he(e.colors)}}function Vh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Background Style"),u(),d(3,"mat-select",99)(4,"mat-option",100),m(5,"Dark Gray"),u(),d(6,"mat-option",101),m(7,"Satin Gray"),u(),d(8,"mat-option",102),m(9,"Light Gray"),u(),d(10,"mat-option",103),m(11,"White"),u(),d(12,"mat-option",104),m(13,"Black"),u(),d(14,"mat-option",105),m(15,"Beige"),u(),d(16,"mat-option",106),m(17,"Brown"),u(),d(18,"mat-option",107),m(19,"Red"),u(),d(20,"mat-option",108),m(21,"Green"),u(),d(22,"mat-option",109),m(23,"Blue"),u(),d(24,"mat-option",95),m(25,"Anthracite"),u(),d(26,"mat-option",110),m(27,"Mud"),u(),d(28,"mat-option",111),m(29,"Punched Sheet"),u(),d(30,"mat-option",112),m(31,"Carbon"),u(),d(32,"mat-option",113),m(33,"Stainless"),u(),d(34,"mat-option",114),m(35,"Brushed Metal"),u(),d(36,"mat-option",115),m(37,"Brushed Stainless"),u(),d(38,"mat-option",116),m(39,"Turned"),u()()())}function Wh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",117),m(2," Reverse Pitch Axis "),u()(),d(3,"div",54)(4,"mat-checkbox",118),m(5," Reverse Roll Axis "),u()(),d(6,"div",54)(7,"mat-checkbox",119),m(8," Show Frame "),u()())}function Lh(n,o){if(n&1&&(G(0,Vh,40,0,"mat-form-field",54),G(1,Wh,9,0),d(2,"mat-form-field",54)(3,"mat-label"),m(4,"Frame Style"),u(),d(5,"mat-select",87)(6,"mat-option",88),m(7,"Black Metal"),u(),d(8,"mat-option",89),m(9,"Metal"),u(),d(10,"mat-option",90),m(11,"Shiny Metal"),u(),d(12,"mat-option",91),m(13,"Brass"),u(),d(14,"mat-option",92),m(15,"Steel"),u(),d(16,"mat-option",93),m(17,"Chrome"),u(),d(18,"mat-option",94),m(19,"Gold"),u(),d(20,"mat-option",95),m(21,"Anthracite"),u(),d(22,"mat-option",96),m(23,"Tilted Gray"),u(),d(24,"mat-option",97),m(25,"Tilted Black"),u(),d(26,"mat-option",98),m(27,"Glossy Metal"),u()()()),n&2){let e=I(2);F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)!=="horizon"?0:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="horizon"?1:-1)}}function Gh(n,o){if(n&1&&(d(0,"div",7)(1,"div",15),G(2,Fu,4,0,"mat-form-field",16),G(3,Bu,2,0,"mat-checkbox",17),G(4,Uu,4,0,"mat-form-field",16),G(5,qu,8,0),G(6,zu,4,0,"mat-form-field"),G(7,Hu,4,2,"mat-form-field",18),G(8,ju,2,0,"mat-checkbox",19),G(9,Yu,2,0,"mat-checkbox",20),G(10,Qu,4,2,"mat-form-field",21),G(11,Ku,6,0,"mat-form-field",22),G(12,Ju,2,0,"mat-checkbox",23),G(13,eh,1,2,"display-datetime-options",24),G(14,th,2,0,"mat-checkbox",25),G(15,ih,4,0,"mat-form-field"),G(16,nh,2,0,"mat-checkbox",26),G(17,ah,4,0,"mat-form-field"),G(18,oh,2,0,"mat-checkbox",27),G(19,rh,2,0,"mat-checkbox",28),G(20,sh,2,0,"mat-checkbox",29),G(21,lh,2,0,"mat-checkbox",30),G(22,dh,2,0,"mat-checkbox",31),G(23,ch,2,0,"mat-checkbox",32),G(24,mh,4,0,"mat-form-field"),G(25,uh,4,0,"mat-form-field"),G(26,hh,2,0,"mat-checkbox",33),G(27,ph,6,0),G(28,bh,9,1),G(29,Sh,2,3),G(30,wh,8,0,"mat-form-field",34),G(31,xh,8,0,"mat-form-field",34),G(32,Mh,6,0,"mat-form-field",16),G(33,kh,10,0,"mat-form-field",16),G(34,Th,4,0,"mat-checkbox",35),G(35,Eh,4,0,"mat-form-field"),G(36,Dh,4,0,"mat-form-field"),G(37,Ph,2,0,"mat-checkbox",36),G(38,Ih,2,0,"mat-checkbox",37),G(39,Oh,2,0,"mat-checkbox",38),G(40,Nh,6,0,"mat-form-field"),G(41,Lh,28,2),u()()),n&2){let e=I();g(2),F((e.widgetConfig==null?null:e.widgetConfig.widgetUrl)!==void 0?2:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.allowInput)!==void 0?3:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.displayName)!==void 0?4:-1),g(),F(e.formMaster.get("displayScale")?5:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.numInt)!==void 0?6:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.numDecimal)!==void 0?7:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMin)!==void 0?8:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMax)!==void 0?9:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.nextDashboard)!==void 0?10:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.convertUnitTo)!==void 0?11:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.playBeeps)!==void 0?12:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.dateFormat)!==void 0?13:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.laylineEnable)!==void 0?14:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.laylineEnable)!==void 0?15:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.windSectorEnable)!==void 0?16:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.windSectorEnable)!==void 0?17:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.awsEnable)!==void 0?18:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.twsEnable)!==void 0?19:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.courseOverGroundEnable)!==void 0?20:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.twaEnable)!==void 0?21:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.waypointEnable)!==void 0?22:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.driftEnable)!==void 0?23:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.minValue)!==void 0&&!e.formMaster.get("displayScale")?24:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.maxValue)!==void 0&&!e.formMaster.get("displayScale")?25:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.ignoreZones)!==void 0?26:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="angle"?27:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"&&ba(40,Xl).includes(e.formMaster.value.gauge.subType)||(e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngLinear"?28:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"?29:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngLinear"?30:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="simpleLinear"?31:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.color)!==void 0?32:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.timeScale)!==void 0?33:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMiniChart)!==void 0?34:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.yScaleMin)!==void 0?35:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.yScaleMax)!==void 0?36:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.inverseYAxis)!==void 0?37:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.verticalChart)!==void 0?38:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.noBgColor)!==void 0?39:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.bgColor)!==void 0?40:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="steel"||(e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="horizon"?41:-1)}}function Fh(n,o){if(n&1&&(U(0,"span",123),m(1,"\xA0Controls ")),n&2){let e=I(2);Rn(e.formMaster.controls.multiChildCtrls.valid?"display: none":"display: block")}}function Bh(n,o){if(n&1){let e=ae();d(0,"mat-tab",8)(1,"div",120)(2,"div"),Bi(3,Fh,2,2,"ng-template",121),u(),d(4,"boolean-multicontrol-options",122),B("addPath",function(i){q(e);let a=I();return z(a.addPathGroup(i))})("updatePath",function(i){q(e);let a=I();return z(a.updatePath(i))})("delPath",function(i){q(e);let a=I();return z(a.deletePath(i))}),u()()()}if(n&2){let e=I();g(4),T("multiCtrlArray",e.multiChildCtrlsToControl)}}function Uh(n,o){if(n&1&&(d(0,"span",125),m(1," error "),u(),m(2," \xA0Paths ")),n&2){let e=I(2);Rn(e.formMaster.controls.paths.valid||e.formMaster.controls.paths.disabled?"display: none":"display: block")}}function qh(n,o){if(n&1&&(d(0,"mat-tab",9)(1,"div",120)(2,"div"),Bi(3,Uh,3,2,"ng-template",121),u(),U(4,"paths-options",124),u()()),n&2){let e=I();g(4),T("isArray",e.isPathArray)("enableTimeout",e.enableTimeoutToControl)("dataTimeout",e.dataTimeoutToControl)("filterSelfPaths",e.filterSelfPathsToControl)("addPathEvent",e.addPathEvent)("delPathEvent",e.delPathEvent)("updatePathEvent",e.updatePathEvent)}}function zh(n,o){n&1&&(d(0,"p")(1,"mat-checkbox",128),m(2," Digital display "),u()())}function Hh(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Dial Size"),u(),d(3,"mat-select",129)(4,"mat-option",130),m(5,"1/4"),u(),d(6,"mat-option",131),m(7,"1/2"),u(),d(8,"mat-option",132),m(9,"3/4"),u(),d(10,"mat-option",77),m(11,"Full"),u()()())}function jh(n,o){if(n&1&&(d(0,"mat-tab",10)(1,"div",7)(2,"mat-form-field",16)(3,"mat-label"),m(4,"Gauge Type"),u(),d(5,"mat-select",73)(6,"mat-option",126),m(7,"Linear"),u(),d(8,"mat-option",127),m(9,"Radial"),u()()(),G(10,zh,3,0,"p"),G(11,Hh,12,0,"mat-form-field",16),u()()),n&2){let e=I();g(10),F(e.formMaster.value.gauge.subType==="linear"?10:-1),g(),F(e.formMaster.value.gauge.subType==="radial"?11:-1)}}function Yh(n,o){n&1&&(d(0,"p")(1,"mat-checkbox",135),m(2," Value to send on button push (checked = on, unchecked = off) "),u()())}function Qh(n,o){if(n&1&&(d(0,"mat-tab",11)(1,"div",120)(2,"p")(3,"mat-checkbox",133),m(4," Enable Put Requests "),u()(),d(5,"p")(6,"mat-checkbox",134),m(7," Momentary mode (instead of switching between on/off) "),u()(),G(8,Yh,3,0,"p"),u()()),n&2){let e=I();g(8),F(e.formMaster.controls.putMomentary.value?8:-1)}}function $h(n,o){n&1&&U(0,"span",123)}function Zh(n,o){if(n&1&&(G(0,$h,1,0,"span",123),m(1," Dataset ")),n&2){let e=I(2);F(e.formMaster.controls.datachartPath.valid?-1:0)}}function Xh(n,o){if(n&1&&(d(0,"mat-tab",12),Bi(1,Zh,2,1,"ng-template",121),U(2,"config-dataset-chart-options",136),u()),n&2){let e=I();g(2),T("filterSelfPaths",e.filterSelfPathsToControl)("datachartPath",e.datachartPathControl)("datachartSource",e.datachartSourceControl)("convertUnitTo",e.convertUnitToControl)("timeScale",e.timeScaleControl)("period",e.periodControl)}}var Kl=(()=>{class n{static KEY_MULTI_CHILD_CTRLS="multiChildCtrls";static KEY_DISPLAY_SCALE="displayScale";static KEY_GAUGE="gauge";static KEY_AUTOPILOT="autopilot";static KEY_PATHS="paths";static KEY_CONVERT_UNIT_TO="convertUnitTo";dialogRef=A(Si);fb=A(qn);DatasetService=A(Ei);units=A(at);app=A(Lt);widgetConfig=A(wi);titleDialog="Widget Options";formMaster;availableDataSets;unitList={};isPathArray=!1;addPathEvent;delPathEvent;updatePathEvent;colors=[];ngOnInit(){if(!this.widgetConfig){console.error("Widget configuration data is missing. Closing dialog."),this.dialogRef.close();return}this.availableDataSets=this.DatasetService.list().sort((e,t)=>{let i=e.label||"",a=t.label||"";return i.localeCompare(a,void 0,{sensitivity:"base"})}),this.unitList=this.units.getConversionsForPath(""),this.formMaster=this.generateFormGroups(this.widgetConfig),this.colors=this.app.configurableThemeColors}isPlainObject(e){return Object.prototype.toString.call(e)==="[object Object]"}generateFormGroups(e,t){let i=this.fb.group({});return Object.keys(e).forEach(a=>{let r=e[a];if(r!==null&&(Array.isArray(r)||this.isPlainObject(r))){if(a===n.KEY_MULTI_CHILD_CTRLS){i.addControl(a,this.fb.array([]));let s=i.get(a);r.forEach(h=>{s.push(this.generateCtrlArray(h))})}else if(a===n.KEY_DISPLAY_SCALE)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_GAUGE)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_AUTOPILOT)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_PATHS){let s=r;if(this.widgetConfig.multiChildCtrls!==void 0){this.isPathArray=!0,i.addControl(a,this.fb.array([]));let h=i.get(a);Object.keys(s).forEach(f=>{let b=s[f];if(b){let C=this.generatePathArray(f,b);b.isPathConfigurable===!1&&C.disable(),h.push(C)}})}else{let h=this.fb.group({});Object.keys(s).forEach(f=>{let b=s[f];if(b){let C=this.generateFormGroups(b,f);b.isPathConfigurable===!1&&C.disable(),h.addControl(f,C)}}),i.addControl(a,h)}}t===n.KEY_PATHS&&i.addControl(a,this.generateFormGroups(r,a))}else if(t===n.KEY_CONVERT_UNIT_TO){let s=e[a];(s&&s.pathType=="number"||"datasetUUID"in this.widgetConfig)&&i.addControl(a,new Kt(r))}else switch(a){case"path":i.addControl(a,new Kt(r));break;case"datasetUUID":i.addControl(a,new Kt(r,_t.required));break;case"dataTimeout":i.addControl(a,new Kt(r,_t.required));break;default:i.addControl(a,new Kt(r));break}}),i}generatePathArray(e,t){let i=new tl({});return Object.keys(t).forEach(a=>{i.addControl(a,this.generatePathFields(a,t[a]))}),i}generatePathFields(e,t){let i=null;switch(e){case"path":i=new Kt(t);break;case"source":i=new Kt(t,_t.required);break;case"sampleTime":i=new Kt(t,_t.required);break;default:i=new Kt(t);break}return i}generateCtrlArray(e){let t=this.fb.group(e);return t.get("ctrlLabel").addValidators(_t.required),t}addPathGroup(e){this.addPathEvent=e}updatePath(e){e.forEach(t=>{this.formMaster.get("paths").controls.forEach(a=>{a.get("pathID").value==t.pathID&&(a.controls.description.setValue(t.ctrlLabel),a.controls.pathType.setValue(t.isNumeric?"number":"boolean"),this.updatePathEvent=e)})})}deletePath(e){let t=this.formMaster.get("paths"),i=0;t.controls.forEach(r=>{r.get("pathID").value==e.pathID?t.removeAt(i):i++}),this.formMaster.get("multiChildCtrls").removeAt(e.ctrlIndex),this.delPathEvent=e.pathID,this.formMaster.updateValueAndValidity()}get datachartPathControl(){return this.formMaster.get("datachartPath")}get datachartSourceControl(){return this.formMaster.get("datachartSource")}get convertUnitToControl(){return this.formMaster.get("convertUnitTo")}get timeScaleControl(){return this.formMaster.get("timeScale")}get periodControl(){return this.formMaster.get("period")}get datasetUUIDToControl(){return this.formMaster.get("datasetUUID")}get filterSelfPathsToControl(){return this.formMaster.get("filterSelfPaths")}get dataTimeoutToControl(){return this.formMaster.get("dataTimeout")}get enableTimeoutToControl(){return this.formMaster.get("enableTimeout")}get dateTimezoneToControl(){return this.formMaster.get("dateTimezone")}get yScaleSuggestedMaxToControl(){return this.formMaster.get("yScaleSuggestedMax")}get enableMinMaxScaleLimitToControl(){return this.formMaster.get("enableMinMaxScaleLimit")}get showDatasetMinimumValueLineToControl(){return this.formMaster.get("showDatasetMinimumValueLine")}get showDatasetMaximumValueLineToControl(){return this.formMaster.get("showDatasetMaximumValueLine")}get showDatasetAverageValueLineToControl(){return this.formMaster.get("showDatasetAverageValueLine")}get showDatasetAngleAverageValueLineToControl(){return this.formMaster.get("showDatasetAngleAverageValueLine")}get startScaleAtZeroToControl(){return this.formMaster.get("startScaleAtZero")}get showLabelToControl(){return this.formMaster.get("showLabel")}get showTimeScaleToControl(){return this.formMaster.get("showTimeScale")}get showYScaleToControl(){return this.formMaster.get("showYScale")}get yScaleSuggestedMinToControl(){return this.formMaster.get("yScaleSuggestedMin")}get yScaleMinToControl(){return this.formMaster.get("yScaleMin")}get yScaleMaxToControl(){return this.formMaster.get("yScaleMax")}get datasetAverageArrayToControl(){return this.formMaster.get("datasetAverageArray")}get trackAgainstAverageToControl(){return this.formMaster.get("trackAgainstAverage")}get showAverageDataToControl(){return this.formMaster.get("showAverageData")}get displayNameToControl(){return this.formMaster.get("displayName")}get numDecimalToControl(){return this.formMaster.get("numDecimal")}get verticalChartToControl(){return this.formMaster.get("verticalChart")}get inverseYAxisToControl(){return this.formMaster.get("inverseYAxis")}get colorToControl(){return this.formMaster.get("color")}get dateFormatToControl(){return this.formMaster.get("dateFormat")}get multiChildCtrlsToControl(){return this.formMaster.get("multiChildCtrls")}submitConfig(){this.dialogRef.close(this.formMaster.getRawValue())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["modal-widget-config"]],decls:20,vars:9,consts:[[3,"ngSubmit","formGroup"],["mat-dialog-title",""],[1,"widget-config-dialog-content"],[1,"tab-group-content"],["label","Display"],[1,"tab-content",3,"displayName","datasetUUID","convertUnitTo","showAverageData","trackAgainstAverage","datasetAverageArray","showDatasetMinimumValueLine","showDatasetMaximumValueLine","showDatasetAverageValueLine","showDatasetAngleAverageValueLine","startScaleAtZero","showLabel","showTimeScale","showYScale","yScaleSuggestedMin","yScaleSuggestedMax","enableMinMaxScaleLimit","yScaleMin","yScaleMax","numDecimal","verticalChart","inverseYAxis","color"],["formGroupName","autopilot",1,"tab-content"],[1,"display-content","tab-content"],["label","Controls"],["label","Paths"],["label","Settings","formGroupName","gauge"],["label","Put Request"],["label","Dataset"],["type","button","mat-dialog-close","","mat-flat-button",""],["mat-flat-button","","type","submit",3,"disabled"],[1,"widget-options-grid"],[1,"options-grid-span2"],["name","allowInput","formControlName","allowInput",1,"options-grid-span2"],[3,"class"],["name","showMin","formControlName","showMin"],["name","showMax","formControlName","showMax"],[3,"options-grid-span2"],[1,"fields"],["name","playBeeps","formControlName","playBeeps"],[1,"options-grid-span2",3,"dateFormat","dateTimezone"],["name","laylineEnable","formControlName","laylineEnable",1,"fields"],["name","windSectorEnable","formControlName","windSectorEnable"],["name","awsEnable","formControlName","awsEnable"],["name","twsEnable","formControlName","twsEnable"],["name","courseOverGroundEnable","formControlName","courseOverGroundEnable"],["name","twaEnable","formControlName","twaEnable"],["name","waypointEnable","formControlName","waypointEnable"],["name","driftEnable","formControlName","driftEnable"],["name","ignoreZones","formControlName","ignoreZones"],["formGroupName","gauge",1,"options-grid-span2"],["name","showMiniChart","formControlName","showMiniChart",1,"options-grid-span2"],["name","inverseYAxis","formControlName","inverseYAxis"],["name","verticalChart","formControlName","verticalChart"],["name","noBgColor","formControlName","noBgColor"],["type","url","matInput","","placeholder","Enter URL to page/resource","name","widgetUrl","formControlName","widgetUrl"],["matInput","","placeholder","Enter a label to display","name","displayName","formControlName","displayName"],["formGroupName","displayScale","appearance","outline"],["matNativeControl","","type","number","name","lower","formControlName","lower","placeholder","Enter number..."],["matInput","","type","number","name","upper","formControlName","upper","placeholder","Enter number..."],["type","number","min","1","max","5","matInput","","placeholder","Enter or select number...","name","numInt","formControlName","numInt","required",""],["type","number","min","0","max","5","matInput","","placeholder","Enter or select number...","name","numDecimal","formControlName","numDecimal","required",""],["type","number","min","0","max","99","matInput","","placeholder","Enter or select number...","name","nextDashboard","formControlName","nextDashboard"],["placeholder","Select unit","formControlName","convertUnitTo","required",""],[3,"label"],[3,"value"],["type","number","min","10","max","90","matInput","","placeholder","Select angle...","name","laylineAngle","formControlName","laylineAngle"],["type","number","min","1","max","90","matInput","","placeholder","Select or enter duration...","name","windSectorWindowSeconds","formControlName","windSectorWindowSeconds"],["matInput","","type","number","name","minValue","formControlName","minValue","placeholder","Enter or select number..."],["matInput","","type","number","name","maxValue","formControlName","maxValue","placeholder","Enter or select number..."],["formGroupName","gauge"],["name","sideLabel","formControlName","sideLabel"],["name","invertAngle","formControlName","invertAngle"],["type","number","min","0","max","25","matInput","","placeholder","Enter or select number...","name","highlightsWidth","formControlName","highlightsWidth","required",""],["name","enableNeedle","formControlName","enableNeedle"],["name","enableProgressbar","formControlName","enableProgressbar"],["name","enableTicks","formControlName","enableTicks"],["placeholder","Select Gauge Type...","formControlName","subType","name","subType"],["value","marineCompass"],["value","baseplateCompass"],["name","showValueBox","formControlName","showValueBox"],["name","compassUseNumbers","formControlName","compassUseNumbers"],["value","measuring"],["value","capacity"],["placeholder","Select start position...","formControlName","barStartPosition","name","barStartPosition"],["value","left"],["value","middle"],["value","right"],["type","number","min","1","max","360","matInput","","placeholder","Enter or select number...","name","scaleStart","formControlName","scaleStart","required",""],["placeholder","Select type...","formControlName","subType","name","subType"],["value","vertical"],["value","horizontal"],["placeholder","Select label format","formControlName","unitLabelFormat","name","unitLabelFormat"],["value","full"],["value","abr"],["placeholder","Select Color...","formControlName","color","name","color","required",""],["placeholder","Select span duration...","formControlName","timeScale","name","timeScale","required",""],["value","Last Minute"],["value","Last 5 Minutes"],["value","Last 30 Minutes"],["type","number","matInput","","placeholder","Enter or select number...","name","yScaleMin","formControlName","yScaleMin","required",""],["type","number","matInput","","placeholder","Enter or select number...","name","yScaleMax","formControlName","yScaleMax","required",""],["placeholder","Select Color...","formControlName","bgColor","name","bgColor","required",""],["placeholder","Select style...","formControlName","faceColor","name","faceColor"],["value","blackMetal"],["value","metal"],["value","shinyMetal"],["value","brass"],["value","steel"],["value","chrome"],["value","gold"],["value","anthracite"],["value","tiltedGray"],["value","tiltedBlack"],["value","glossyMetal"],["placeholder","Select style...","formControlName","backgroundColor","name","backgroundColor"],["value","darkGray"],["value","satinGray"],["value","lightGray"],["value","white"],["value","black"],["value","beige"],["value","brown"],["value","red"],["value","green"],["value","blue"],["value","mud"],["value","punchedSheet"],["value","carbon"],["value","stainless"],["value","brushedMetal"],["value","brushedStainless"],["value","turned"],["name","invertPitch","formControlName","invertPitch"],["name","invertRoll","formControlName","invertRoll"],["name","noFrameVisible","formControlName","noFrameVisible"],[1,"tab-content"],["mat-tab-label",""],[3,"addPath","updatePath","delPath","multiCtrlArray"],[1,"warning","fa","fa-exclamation-circle"],["formGroupName","paths",3,"isArray","enableTimeout","dataTimeout","filterSelfPaths","addPathEvent","delPathEvent","updatePathEvent"],[1,"warning","material-icons"],["value","linear"],["value","radial"],["formControlName","digitalMeter","name","digitalMeter"],["placeholder","Select size...","formControlName","radialSize","name","radialSize"],["value","quarter"],["value","half"],["value","three-quarter"],["formControlName","putEnable","name","putEnable"],["formControlName","putMomentary","name","putMomentary"],["formControlName","putMomentaryValue","name","putMomentaryValue"],[3,"filterSelfPaths","datachartPath","datachartSource","convertUnitTo","timeScale","period"]],template:function(t,i){t&1&&(d(0,"form",0),B("ngSubmit",function(){return i.submitConfig()}),d(1,"h6",1),m(2),u(),d(3,"mat-dialog-content",2)(4,"mat-tab-group",3)(5,"mat-tab",4),G(6,Lu,1,23,"config-display-chart-options",5)(7,Gu,1,0,"select-autopilot",6)(8,Gh,42,41,"div",7),u(),G(9,Bh,5,1,"mat-tab",8),G(10,qh,5,7,"mat-tab",9),G(11,jh,12,2,"mat-tab",10),G(12,Qh,9,1,"mat-tab",11),G(13,Xh,3,6,"mat-tab",12),u()(),U(14,"mat-divider"),d(15,"mat-dialog-actions")(16,"button",13),m(17,"Cancel"),u(),d(18,"button",14),m(19," Save "),u()()()),t&2&&(T("formGroup",i.formMaster),g(2),ne(i.titleDialog),g(4),F((i.widgetConfig==null?null:i.widgetConfig.datachartPath)!==void 0?6:i.widgetConfig!=null&&i.widgetConfig.autopilot?7:8),g(3),F((i.widgetConfig==null?null:i.widgetConfig.multiChildCtrls)!==void 0?9:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.paths)!==void 0?10:-1),g(),F((i.widgetConfig==null||i.widgetConfig.gauge==null?null:i.widgetConfig.gauge.type)==="steel"?11:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.putEnable)!==void 0&&(i.widgetConfig==null?null:i.widgetConfig.multiChildCtrls)===void 0?12:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.datachartPath)!==void 0?13:-1),g(5),T("disabled",!i.formMaster.valid))},dependencies:[pt,Bn,dt,ki,nt,Mt,ct,ji,Un,gt,kt,Hi,nl,Xt,xi,_i,zi,Mi,Jt,ut,mt,ei,ft,Sl,vl,yl,Cl,ii,Gt,$i,ti,Tt,zn,ll,sl,Xe,lt,Ql,Ll,zl,Nl,Yl,Zl],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%}.widget-config-dialog-content[_ngcontent-%COMP%]{height:100%}.display-content[_ngcontent-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:10px}.warning[_ngcontent-%COMP%]{color:var(--mat-sys-error-container)}.tab-group-content[_ngcontent-%COMP%]{overflow:hidden;width:100%}"]})}return n})();var Kh=["button"],Jh=["*"];function ep(n,o){if(n&1&&(d(0,"div",2),U(1,"mat-pseudo-checkbox",6),u()),n&2){let e=I();g(),T("disabled",e.disabled)}}var Jl=new jt("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS",{providedIn:"root",factory:tp});function tp(){return{hideSingleSelectionIndicator:!1,hideMultipleSelectionIndicator:!1,disabledInteractive:!1}}var ed=new jt("MatButtonToggleGroup"),ip={provide:Gn,useExisting:Mn(()=>lr),multi:!0},xo=class{source;value;constructor(o,e){this.source=o,this.value=e}},lr=(()=>{class n{_changeDetector=A(ci);_dir=A(Ja,{optional:!0});_multiple=!1;_disabled=!1;_disabledInteractive=!1;_selectionModel;_rawValue;_controlValueAccessorChangeFn=()=>{};_onTouched=()=>{};_buttonToggles;appearance;get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}_name=A(yi).getId("mat-button-toggle-group-");vertical;get value(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(t=>t.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}valueChange=new yt;get selected(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=e,this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markButtonsForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markButtonsForCheck()}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}change=new yt;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._markButtonsForCheck()}_hideSingleSelectionIndicator;get hideMultipleSelectionIndicator(){return this._hideMultipleSelectionIndicator}set hideMultipleSelectionIndicator(e){this._hideMultipleSelectionIndicator=e,this._markButtonsForCheck()}_hideMultipleSelectionIndicator;constructor(){let e=A(Jl,{optional:!0});this.appearance=e&&e.appearance?e.appearance:"standard",this.hideSingleSelectionIndicator=e?.hideSingleSelectionIndicator??!1,this.hideMultipleSelectionIndicator=e?.hideMultipleSelectionIndicator??!1}ngOnInit(){this._selectionModel=new fl(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked)),this.multiple||this._initializeTabIndex()}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_keydown(e){if(this.multiple||this.disabled)return;let i=e.target.id,a=this._buttonToggles.toArray().findIndex(s=>s.buttonId===i),r=null;switch(e.keyCode){case 32:case 13:r=this._buttonToggles.get(a)||null;break;case 38:r=this._getNextButton(a,-1);break;case 37:r=this._getNextButton(a,this.dir==="ltr"?-1:1);break;case 40:r=this._getNextButton(a,1);break;case 39:r=this._getNextButton(a,this.dir==="ltr"?1:-1);break;default:return}r&&(e.preventDefault(),r._onButtonClick(),r.focus())}_emitChangeEvent(e){let t=new xo(e,this.value);this._rawValue=t.value,this._controlValueAccessorChangeFn(t.value),this.change.emit(t)}_syncButtonToggle(e,t,i=!1,a=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?t?this._selectionModel.select(e):this._selectionModel.deselect(e):a=!0,a?Promise.resolve().then(()=>this._updateModelValue(e,i)):this._updateModelValue(e,i)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return typeof this._rawValue>"u"?!1:this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(t=>e.value!=null&&t===e.value):e.value===this._rawValue}_initializeTabIndex(){if(this._buttonToggles.forEach(e=>{e.tabIndex=-1}),this.selected)this.selected.tabIndex=0;else for(let e=0;e<this._buttonToggles.length;e++){let t=this._buttonToggles.get(e);if(!t.disabled){t.tabIndex=0;break}}}_getNextButton(e,t){let i=this._buttonToggles;for(let a=1;a<=i.length;a++){let r=(e+t*a+i.length)%i.length,s=i.get(r);if(s&&!s.disabled)return s}return null}_setSelectionByValue(e){if(this._rawValue=e,!this._buttonToggles)return;let t=this._buttonToggles.toArray();if(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(i=>this._selectValue(i,t))):(this._clearSelection(),this._selectValue(e,t)),!this.multiple&&t.every(i=>i.tabIndex===-1)){for(let i of t)if(!i.disabled){i.tabIndex=0;break}}}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>{e.checked=!1,this.multiple||(e.tabIndex=-1)})}_selectValue(e,t){for(let i of t)if(i.value===e){i.checked=!0,this._selectionModel.select(i),this.multiple||(i.tabIndex=0);break}}_updateModelValue(e,t){t&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){this._buttonToggles?.forEach(e=>e._markForCheck())}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["mat-button-toggle-group"]],contentQueries:function(t,i,a){if(t&1&&dn(a,_o,5),t&2){let r;Ct(r=St())&&(i._buttonToggles=r)}},hostAttrs:[1,"mat-button-toggle-group"],hostVars:6,hostBindings:function(t,i){t&1&&B("keydown",function(r){return i._keydown(r)}),t&2&&(Y("role",i.multiple?"group":"radiogroup")("aria-disabled",i.disabled),Je("mat-button-toggle-vertical",i.vertical)("mat-button-toggle-group-appearance-standard",i.appearance==="standard"))},inputs:{appearance:"appearance",name:"name",vertical:[2,"vertical","vertical",qe],value:"value",multiple:[2,"multiple","multiple",qe],disabled:[2,"disabled","disabled",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",qe],hideMultipleSelectionIndicator:[2,"hideMultipleSelectionIndicator","hideMultipleSelectionIndicator",qe]},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[hn([ip,{provide:ed,useExisting:n}])]})}return n})(),_o=(()=>{class n{_changeDetectorRef=A(ci);_elementRef=A(Ie);_focusMonitor=A(Xa);_idGenerator=A(yi);_animationDisabled=Zt();_checked=!1;ariaLabel;ariaLabelledby=null;_buttonElement;buttonToggleGroup;get buttonId(){return`${this.id}-button`}id;name;value;get tabIndex(){return this._tabIndex()}set tabIndex(e){this._tabIndex.set(e)}_tabIndex;disableRipple;get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}_appearance;get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=e}_disabled=!1;get disabledInteractive(){return this._disabledInteractive||this.buttonToggleGroup!==null&&this.buttonToggleGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new yt;constructor(){A(Vn).load(to);let e=A(ed,{optional:!0}),t=A(new qa("tabindex"),{optional:!0})||"",i=A(Jl,{optional:!0});this._tabIndex=w(parseInt(t)||0),this.buttonToggleGroup=e,this.appearance=i&&i.appearance?i.appearance:"standard",this.disabledInteractive=i?.disabledInteractive??!1}ngOnInit(){let e=this.buttonToggleGroup;this.id=this.id||this._idGenerator.getId("mat-button-toggle-"),e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._animationDisabled||this._elementRef.nativeElement.classList.add("mat-button-toggle-animations-enabled"),this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){let e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){if(this.disabled)return;let e=this.isSingleSelector()?!0:!this._checked;if(e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.isSingleSelector()){let t=this.buttonToggleGroup._buttonToggles.find(i=>i.tabIndex===0);t&&(t.tabIndex=-1),this.tabIndex=0}this.change.emit(new xo(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this.isSingleSelector()?this.buttonToggleGroup.name:this.name||null}isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-button-toggle"]],viewQuery:function(t,i){if(t&1&&Qt(Kh,5),t&2){let a;Ct(a=St())&&(i._buttonElement=a.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:14,hostBindings:function(t,i){t&1&&B("focus",function(){return i.focus()}),t&2&&(Y("aria-label",null)("aria-labelledby",null)("id",i.id)("name",null),Je("mat-button-toggle-standalone",!i.buttonToggleGroup)("mat-button-toggle-checked",i.checked)("mat-button-toggle-disabled",i.disabled)("mat-button-toggle-disabled-interactive",i.disabledInteractive)("mat-button-toggle-appearance-standard",i.appearance==="standard"))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",disableRipple:[2,"disableRipple","disableRipple",qe],appearance:"appearance",checked:[2,"checked","checked",qe],disabled:[2,"disabled","disabled",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matButtonToggle"],ngContentSelectors:Jh,decls:7,vars:13,consts:[["button",""],["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"click","id","disabled"],[1,"mat-button-toggle-checkbox-wrapper"],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"],["state","checked","aria-hidden","true","appearance","minimal",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();In(),d(0,"button",1,0),B("click",function(){return q(a),z(i._onButtonClick())}),G(2,ep,2,1,"div",2),d(3,"span",3),On(4),u()(),U(5,"span",4)(6,"span",5)}if(t&2){let a=It(1);T("id",i.buttonId)("disabled",i.disabled&&!i.disabledInteractive||null),Y("role",i.isSingleSelector()?"radio":"button")("tabindex",i.disabled&&!i.disabledInteractive?-1:i.tabIndex)("aria-pressed",i.isSingleSelector()?null:i.checked)("aria-checked",i.isSingleSelector()?i.checked:null)("name",i._getButtonName())("aria-label",i.ariaLabel)("aria-labelledby",i.ariaLabelledby)("aria-disabled",i.disabled&&i.disabledInteractive?"true":null),g(2),F(i.buttonToggleGroup&&(!i.buttonToggleGroup.multiple&&!i.buttonToggleGroup.hideSingleSelectionIndicator||i.buttonToggleGroup.multiple&&!i.buttonToggleGroup.hideMultipleSelectionIndicator)?2:-1),g(4),T("matRippleTrigger",a)("matRippleDisabled",i.disableRipple||i.disabled)}},dependencies:[eo,dl],styles:[`.mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mat-button-toggle-legacy-shape);transform:translateZ(0)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}@media(forced-colors: active){.mat-button-toggle-standalone,.mat-button-toggle-group{outline:solid 1px}}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard .mat-pseudo-checkbox,.mat-button-toggle-group-appearance-standard .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}@media(forced-colors: active){.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{outline:0}}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-button-toggle-legacy-text-color);font-family:var(--mat-button-toggle-legacy-label-text-font);font-size:var(--mat-button-toggle-legacy-label-text-size);line-height:var(--mat-button-toggle-legacy-label-text-line-height);font-weight:var(--mat-button-toggle-legacy-label-text-weight);letter-spacing:var(--mat-button-toggle-legacy-label-text-tracking);--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-legacy-selected-state-text-color)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-legacy-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checkbox-wrapper{display:inline-block;justify-content:flex-start;align-items:center;width:0;height:18px;line-height:18px;overflow:hidden;box-sizing:border-box;position:absolute;top:50%;left:16px;transform:translate3d(0, -50%, 0)}[dir=rtl] .mat-button-toggle-checkbox-wrapper{left:auto;right:16px}.mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:12px}[dir=rtl] .mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:auto;right:12px}.mat-button-toggle-checked .mat-button-toggle-checkbox-wrapper{width:18px}.mat-button-toggle-animations-enabled .mat-button-toggle-checkbox-wrapper{transition:width 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-checkbox-wrapper{transition:none}.mat-button-toggle-checked{color:var(--mat-button-toggle-legacy-selected-state-text-color);background-color:var(--mat-button-toggle-legacy-selected-state-background-color)}.mat-button-toggle-disabled{pointer-events:none;color:var(--mat-button-toggle-legacy-disabled-state-text-color);background-color:var(--mat-button-toggle-legacy-disabled-state-background-color);--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-legacy-disabled-state-text-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-button-toggle-legacy-disabled-selected-state-background-color)}.mat-button-toggle-disabled-interactive{pointer-events:auto}.mat-button-toggle-appearance-standard{color:var(--mat-button-toggle-text-color, var(--mat-sys-on-surface));background-color:var(--mat-button-toggle-background-color, transparent);font-family:var(--mat-button-toggle-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-toggle-label-text-size, var(--mat-sys-label-large-size));line-height:var(--mat-button-toggle-label-text-line-height, var(--mat-sys-label-large-line-height));font-weight:var(--mat-button-toggle-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-button-toggle-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-toggle-selected-state-background-color, var(--mat-sys-secondary-container))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-button-toggle-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-state-background-color, transparent)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-selected-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-button-toggle-state-layer-color, var(--mat-sys-on-surface))}.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-button-toggle-appearance-standard.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}@media(hover: none){.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-button-toggle-legacy-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-button-toggle-height, 40px)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-button-toggle-legacy-state-layer-color)}@media(forced-colors: active){.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-animations-enabled .mat-button-toggle-button{transition:padding 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-button{transition:none}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}.mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:30px}[dir=rtl] .mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:0;padding-right:30px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{--mat-focus-indicator-border-radius: var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}
|
|
46
|
-
`],encapsulation:2,changeDetection:0})}return n})(),td=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Ot,io,_o,Ot]})}return n})();var ap=["widgetDataChart"];Et.register(Kn,Xn,Yn,$n,Qn,Zn,Ml);var Mo=(()=>{class n{theme=v.required();color=null;dataPath=null;dataSource=null;convertUnitTo=null;numDecimal=null;yScaleMin=null;yScaleMax=null;inverseYAxis=!1;verticalChart=null;datasetUUID=null;unitsService=A(at);dsService=A(Ei);ngZone=A(Ge);canvasService=A(je);widgetDataChart=ie("widgetDataChart",{read:Ie});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(){R(()=>{this.theme()&&W(()=>{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 Et(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 a=this.transformDatasetRows(t,this.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...a)}}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 a=this.transformDatasetRows([t],this.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(a),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),a=this.verticalChart,r=this.config.datasetAverageArray;return e.map(s=>{if(a){if(t===0)return{x:i(s.data.value),y:s.timestamp};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:i(h[r]),y:s.timestamp}}}else{if(t===0)return{x:s.timestamp,y:i(s.data.value)};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:s.timestamp,y:i(h[r])}}}})}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||n)};static \u0275cmp=L({type:n,selectors:[["minichart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,ap,5,Ie),t&2&&me()},inputs:{theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:calc(90% - 10px);position:absolute;bottom:0;border-radius:12px;overflow:hidden}"]})}return n})();var _e=(()=>{class n{_streamsConfig=w(void 0);dataService=A(Ci);unitsService=A(at);destroyRef=A(rt);streams;registrations=[];subscriptions=new Map;reset$=new Nt;rootSignature;buildObserver(e,t){return{next:i=>t(i),error:i=>console.error("[Widget] Observer got an error: "+i),complete:()=>{}}}computePathSignature(e){return[this.normalizePath(e.path)??"",e.pathType,e.sampleTime,e.convertUnitTo,e.source||""].join("|")}normalizePath(e){if(typeof e!="string")return;let t=e.trim();return t.length?t:void 0}computeRootSignature(e){return e?`timeout:${e.enableTimeout?"1":"0"}:${e.dataTimeout??""}`:"none"}ensureStreamsMap(){this.streams||(this.streams=new Map)}buildAndSubscribe(e,t,i,a){let r=this.normalizePath(a.path);if(!r){let pe=this.subscriptions.get(e);pe&&pe.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e);return}this.ensureStreamsMap(),this.streams.has(e)||this.streams.set(e,this.dataService.subscribePath(r,a.source||"default"));let s=this.streams.get(e),h=!!i.enableTimeout,f=(i.dataTimeout??5)*1e3,b=5e3,C=`[Widget] ${i.displayName} - ${f/1e3} second data update timeout reached for `,M=`[Widget] ${i.displayName} - Retrying in ${b/1e3} seconds`,V=a.pathType,D=a.convertUnitTo,j=Number(a.sampleTime);(!Number.isFinite(j)||j<=0)&&(j=1e3);let X=pe=>D?this.unitsService.convertToUnit(D,pe):pe,Z=s;V==="number"&&(Z=Z.pipe(vi(pe=>({data:{value:X(pe.data.value),timestamp:pe.data.timestamp},state:pe.state}))));let ee=Z.pipe(Gi(1)),be=Z.pipe(ls(j));Z=Vi(ee,be),h&&(Z=Z.pipe(es({each:f,with:()=>Jr(()=>{console.log(C+r),this.dataService.timeoutPathObservable(r,V)})}),ss(pe=>pe.pipe(Wa(()=>console.log(M)),as(()=>ha(b))))));let Oe=this.buildObserver(e,t),Te=Z.pipe(Va(this.reset$),et(this.destroyRef)).subscribe(Oe),Ye=Ke(Ue({},a),{path:r}),Ee=this.computePathSignature(Ye),We=this.subscriptions.get(e);We&&We.sub.unsubscribe(),this.subscriptions.set(e,{sub:Te,signature:Ee})}setStreamsConfig(e){this._streamsConfig.set(e)}applyStreamsConfigDiff(e){let t=this._streamsConfig(),i=this.rootSignature,a=this.computeRootSignature(e);if(this._streamsConfig.set(e),this.rootSignature=a,!t||!t.paths||!Object.keys(t.paths).length)return;if(!e||!e.paths){this.subscriptions.forEach(b=>b.sub.unsubscribe()),this.subscriptions.clear(),this.streams=void 0,this.registrations=[];return}let r=Object.keys(t.paths),s=Object.keys(e.paths),h=r.filter(b=>!s.includes(b));for(let b of h){let C=this.subscriptions.get(b);C&&C.sub.unsubscribe(),this.subscriptions.delete(b),this.streams?.delete(b),this.registrations=this.registrations.filter(M=>M.pathName!==b)}let f=i!==a;for(let b of s){let C=e.paths[b],M=this.normalizePath(C?.path);if(!M){let X=this.subscriptions.get(b);X&&X.sub.unsubscribe(),this.subscriptions.delete(b),this.streams?.delete(b);continue}let V=Ke(Ue({},C),{path:M}),D=this.computePathSignature(V),j=this.subscriptions.get(b);if(!j||j.signature!==D||f){let X=this.registrations.filter(Z=>Z.pathName===b);if(!X.length)this.ensureStreamsMap(),this.streams.set(b,this.dataService.subscribePath(M,C.source||"default")),j&&(j.sub.unsubscribe(),this.subscriptions.delete(b));else{let Z=X[0];this.buildAndSubscribe(b,Z.next,e,V)}}}}observe(e,t){this.registrations=this.registrations.filter(b=>b.pathName!==e),this.registrations.push({pathName:e,next:t});let i=this._streamsConfig();if(!i||!i.paths?.[e]){let b=this.subscriptions.get(e);b&&(b.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e));return}let a=i.paths[e],r=this.normalizePath(a?.path);if(!r){let b=this.subscriptions.get(e);b&&(b.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e)),this.registrations=this.registrations.filter(C=>C.pathName!==e);return}let s=Ke(Ue({},a),{path:r}),h=this.computePathSignature(s),f=this.subscriptions.get(e);f&&f.signature===h||this.buildAndSubscribe(e,t,i,s)}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-streams",""]],exportAs:["widgetStreams"]})}return n})();function Se(n,o){return{contrast:{color:o.contrast,dim:o.contrastDim,dimmer:o.contrastDimmer},blue:{color:o.blue,dim:o.blueDim,dimmer:o.blueDimmer},green:{color:o.green,dim:o.greenDim,dimmer:o.greenDimmer},pink:{color:o.pink,dim:o.pinkDim,dimmer:o.pinkDimmer},orange:{color:o.orange,dim:o.orangeDim,dimmer:o.orangeDimmer},purple:{color:o.purple,dim:o.purpleDim,dimmer:o.purpleDimmer},yellow:{color:o.yellow,dim:o.yellowDim,dimmer:o.yellowDimmer},grey:{color:o.grey,dim:o.greyDim,dimmer:o.greyDimmer}}[n]}var rp=["canvasMainRef"];function sp(n,o){if(n&1&&U(0,"minichart",1),n&2){let e=I();T("theme",e.theme())}}var id=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);canvas=A(je);dataset=A(Ei);miniChart=ie(Mo);canvasMainRef=ie.required("canvasMainRef");showMiniChart=w(!1);labelColor=w(void 0);canvasElement;canvasCtx;cssWidth=0;cssHeight=0;backgroundBitmap=null;backgroundBitmapText=null;dataValue=null;maxValue=null;minValue=null;lastDrawnValue=void 0;lastDrawnMin=void 0;lastDrawnMax=void 0;valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;maxMinMaxTextWidth=0;maxMinMaxTextHeight=0;streamRegistered=!1;isDestroyed=!1;onNumericValue=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.runtime?.options().ignoreZones)switch(e.state){case ce.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case ce.Warn:this.valueStateColor=this.theme().zoneWarn;break;case ce.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.drawWidget()};constructor(){this.showMiniChart.set(this.runtime.options().showMiniChart),R(()=>{let e=this.theme();W(()=>{e&&(this.setColors(),this.drawWidget())})}),R(()=>{this.runtime?.options()&&W(()=>{this.isDestroyed||!this.canvasCtx||(this.manageDatasetAndChart(),this.setColors(),this.startWidget(),this.drawWidget())})}),R(()=>{let e=this.showMiniChart(),t=this.miniChart();e&&t&&(this.setMiniChart(),this.miniChart().startChart())})}ngOnInit(){this.setColors(),this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.calculateMaxMinTextDimensions(),this.drawWidget()}})}ngAfterViewInit(){this.isDestroyed||(this.startWidget(),this.manageDatasetAndChart())}calculateMaxMinTextDimensions(){this.maxValueTextWidth=Math.floor(this.cssWidth*.85),this.maxValueTextHeight=Math.floor(this.cssHeight*.7),this.maxMinMaxTextWidth=Math.floor(this.cssWidth*.57),this.maxMinMaxTextHeight=Math.floor(this.cssHeight*.1)}startWidget(){this.minValue=null,this.maxValue=null,this.dataValue=null,this.streamRegistered||(this.runtime?.options()?.paths?.numericPath?.path?(this.stream?.observe("numericPath",this.onNumericValue),this.streamRegistered=!0):this.drawValue())}manageDatasetAndChart(){let e=this.runtime.options(),t=e.paths.numericPath,i=!!e.showMiniChart;if(this.showMiniChart.set(i),!i){this.dataset.removeIfExists(this.id(),!0);return}if(!t||!t.path)return;let a=t.source??"default",r=this.dataset.getDatasetConfig(this.id());r?(r.path!==t.path||r.pathSource!==a)&&this.dataset.edit(Ke(Ue({},r),{path:t.path,pathSource:a})):this.dataset.create(t.path,a,"minute",.2,`simple-chart-${this.id()}`,!0,!1,this.id())}setMiniChart(){let e=this.runtime.options(),t=e.paths.numericPath;this.miniChart().dataPath=t?.path??null,this.miniChart().dataSource=t?.source??"default",this.miniChart().color=e.color,this.miniChart().convertUnitTo=t?.convertUnitTo,this.miniChart().numDecimal=e.numDecimal,this.miniChart().yScaleMin=e.yScaleMin,this.miniChart().yScaleMax=e.yScaleMax,this.miniChart().inverseYAxis=e.inverseYAxis,this.miniChart().verticalChart=e.verticalChart,this.miniChart().datasetUUID=this.id()}setColors(){let e=this.runtime.options();e&&(this.labelColor.set(Se(e.color,this.theme()).dim),this.valueStateColor=this.valueColor=Se(e.color,this.theme()).color,this.backgroundBitmap=null,this.backgroundBitmapText=null)}drawWidget(){if(!this.canvasCtx)return;let e=this.runtime.options();if(!e)return;let t=e.paths.numericPath.convertUnitTo,i=10*this.canvas.scaleFactor,a=5*this.canvas.scaleFactor,r=e.displayName+"|"+t;(!this.backgroundBitmap||this.backgroundBitmap.width!==this.canvasElement.width||this.backgroundBitmap.height!==this.canvasElement.height||this.backgroundBitmapText!==r)&&(this.backgroundBitmap=this.canvas.renderStaticToBitmap(this.canvasCtx,this.cssWidth,this.cssHeight,s=>{this.canvas.drawTitleInternal(s,e.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight,.1),["unitless","percent","ratio","latitudeSec","latitudeMin","longitudeSec","longitudeMin"].includes(t)||this.canvas.drawText(s,t,this.cssWidth-i,this.cssHeight-a,Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.valueColor,"end","bottom")}),this.backgroundBitmapText=r),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.backgroundBitmap&&this.backgroundBitmap.width>0&&this.backgroundBitmap.height>0&&this.canvasCtx.drawImage(this.backgroundBitmap,0,0,this.cssWidth,this.cssHeight),this.drawValue(),(e.showMax||e.showMin)&&(this.drawMinMax(),this.lastDrawnMin=this.minValue,this.lastDrawnMax=this.maxValue)}drawValue(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor),this.lastDrawnValue=this.dataValue}getValueText(){if(this.dataValue===null)return"--";let e=this.runtime.options().paths.numericPath.convertUnitTo;return["latitudeSec","latitudeMin","longitudeSec","longitudeMin","D HH:MM:SS"].includes(e)?this.dataValue.toString():this.applyDecorations(this.dataValue.toFixed(this.runtime.options().numDecimal))}drawMinMax(){let e=this.runtime.options();if(!e.showMin&&!e.showMax)return;let t="";e.showMin&&(t=this.minValue!=null?` Min: ${this.applyDecorations(this.minValue.toFixed(e.numDecimal))}`:" Min: --"),e.showMax&&(t+=this.maxValue!=null?` Max: ${this.applyDecorations(this.maxValue.toFixed(e.numDecimal))}`:" Max: --"),t=t.trim();let i=10*this.canvas.scaleFactor,a=5*this.canvas.scaleFactor;this.canvas.drawText(this.canvasCtx,t,i,Math.floor(this.cssHeight-a),this.maxMinMaxTextWidth,this.maxMinMaxTextHeight,"normal",this.valueColor,"start","bottom")}applyDecorations(e){switch(this.runtime.options().paths.numericPath.convertUnitTo){case"percent":case"percentraw":e+="%";break}return e}ngOnDestroy(){this.isDestroyed=!0,this.dataset.removeIfExists(this.id(),!0);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-numeric"]],viewQuery:function(t,i){t&1&&(te(i.miniChart,Mo,5),te(i.canvasMainRef,rp,5)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:1,consts:[["canvasMainRef",""],[3,"theme"],[1,"numeric-canvas"]],template:function(t,i){t&1&&(G(0,sp,1,1,"minichart",1),U(1,"canvas",2,0)),t&2&&F(i.showMiniChart()?0:-1)},dependencies:[Mo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.numeric-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.numeric-canvas[_ngcontent-%COMP%]{position:relative;width:100%!important;height:100%!important;display:block}"]})}return n})();var lp=["canvasMainRef"],nd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);canvas=A(je);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;cssWidth=0;cssHeight=0;dataValue=null;labelColor=w(void 0);valueColor=void 0;isDestroyed=!1;streamRegistered=!1;constructor(){R(()=>{let e=this.theme();W(()=>{this.runtime?.options()&&e&&(this.setColors(),this.drawWidget())})}),R(()=>{this.runtime?.options()&&(this.isDestroyed||!this.canvasCtx||W(()=>{this.setColors(),this.startWidget(),this.drawWidget()}))})}ngOnInit(){this.setColors()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),!this.isDestroyed&&this.startWidget()}startWidget(){this.dataValue=null,this.streamRegistered||(this.runtime?.options()?.paths?.stringPath?.path?(this.stream.observe("stringPath",t=>{this.dataValue=t.data.value,this.drawWidget()}),this.streamRegistered=!0):this.drawWidget())}setColors(){let e=this.runtime?.options();e&&(this.labelColor.set(Se(e.color,this.theme()).dim),this.valueColor=Se(e.color,this.theme()).color)}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=Math.floor(this.cssHeight*.1),t=this.runtime.options(),i=t.displayName+"|"+this.labelColor();(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==i)&&(this.titleBitmap=this.canvas.createTitleBitmap(t.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t.displayName+"|"+this.labelColor()),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let a=this.dataValue===null?"--":this.dataValue,r=this.canvas.EDGE_BUFFER||10,s=Math.max(0,this.cssHeight-e-2*r),h=Math.max(0,Math.floor(this.cssWidth-2*r)),f=Math.max(0,Math.floor(s)),b=Math.floor(this.cssWidth/2),C=Math.floor(e+r+s/2);this.canvas.drawText(this.canvasCtx,a,b,C,h,f,"bold",this.valueColor,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-text"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,lp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"text-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.text-canvas[_ngcontent-%COMP%]{display:block;width:100%!important;height:100%!important;min-height:1px}"]})}return n})();var dp=["widgetDataChart"];Et.register(Kn,Xn,Yn,$n,Qn,Zn,ho,po);var ad=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de,{optional:!0});static DEFAULT_CONFIG={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"};ngZone=A(Ge);_dataset=A(Ei);canvasService=A(je);unitsService=A(at);responsive=A(Wn);isPhonePortrait;widgetDataChart=ie("widgetDataChart",{read:Ie});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;TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE=11;CENTER_LABEL_FONT_SIZE=22;CENTER_LABEL_PHONE_PORTRAIT_FONT_SIZE=13;SPEED_VALUE_FONT_SIZE=62;SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE=32;TOP_VALUE_Y_OFFSET=62;TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET=44;TOP_UNIT_Y_OFFSET=51;TOP_UNIT_PHONE_PORTRAIT_Y_OFFSET=38;UNIT_FONT_SIZE=28;UNIT_PHONE_PORTRAIT_FONT_SIZE=14;UNIT_PADDING=8;UNIT_PHONE_PORTRAIT_PADDING=3;gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,a=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=a.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,a=this.theme(),r=this.getThemeColors(),s=Et.defaults.font,h=e.scales,f=e.options?.scales,b=e.data?.datasets?.[0]?.data,C=e.data?.datasets?.[5]?.data,M=(b?.length??0)>=2&&(C?.length??0)>=2,V=(Ee,We)=>{let pe=h?.[Ee],He=f;if(!pe)return;let bt=pe,tt=He?.[Ee]?.min??bt.min,ot=He?.[Ee]?.max??bt.max;if(typeof tt!="number"||typeof ot!="number"||!isFinite(tt)||!isFinite(ot))return;let vt=(tt+ot)/2,rn=pe.getPixelForValue(vt);t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(rn,i.top),t.lineTo(rn,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=a.contrastDim,t.font=this.isPhonePortrait().matches?`bold ${this.CENTER_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.CENTER_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="top";let Ta=this.axisTopLabelY(pe);t.fillText(We(vt),rn,Ta),t.restore()};V("x",Ee=>`${((Ee%360+360)%360).toFixed(0)}\xB0`),V("xSpeed",Ee=>`${Ee.toFixed(1)}`);let D=h?.xSpeed;if(D){let Ee=f,We=D,pe=Ee?.xSpeed?.max??We.max;if(typeof pe=="number"&&isFinite(pe)){let He=D.getPixelForValue(pe);t.save(),t.fillStyle=this.resolveTickColor(e,D,pe),t.font=this.isPhonePortrait().matches?`normal ${this.TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="right",t.textBaseline="top";let bt=this.axisTopLabelY(D),tt=this.xStepSpeed??1,ot=Math.max(0,Math.min(3,Math.ceil(-Math.log10(tt))));t.fillText(`${pe.toFixed(ot)}`,He-this.EDGE_SPEED_LABEL_OFFSET,bt),t.restore(),t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let vt=Math.round(He)+.5;t.moveTo(vt,i.bottom),t.lineTo(vt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let j=h?.x;if(j){let Ee=f,We=j,pe=Ee?.x?.min??We.min;if(typeof pe=="number"&&isFinite(pe)){let He=j.getPixelForValue(pe);t.save(),t.fillStyle=this.resolveTickColor(e,j,pe),t.font=this.isPhonePortrait().matches?`normal ${this.TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.textBaseline="top";let bt=this.axisTopLabelY(j),tt=this.normalizeAngle(pe);t.fillText(`${tt.toFixed(0)}\xB0`,He+this.EDGE_DIR_LABEL_OFFSET,bt),t.restore()}}let X=e.data?.datasets,Z=X?.[5]?.data,ee=Z?.length?Z.length-1:-1,be=ee>=0?Z[ee]?.x:void 0;if(typeof be=="number"&&isFinite(be)){t.save(),t.fillStyle=r.chartValue,t.font=this.isPhonePortrait().matches?`bold ${this.SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle";let Ee=`${be.toFixed(1)}`,We=i.left+i.width/4,pe=i.top-(this.isPhonePortrait().matches?this.TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET:this.TOP_VALUE_Y_OFFSET);t.fillText(Ee,We,pe);let He=t.measureText(Ee),bt=We+He.width/2+(this.isPhonePortrait().matches?this.UNIT_PHONE_PORTRAIT_PADDING:this.UNIT_PADDING),tt=i.top-(this.isPhonePortrait().matches?this.TOP_UNIT_PHONE_PORTRAIT_Y_OFFSET:this.TOP_UNIT_Y_OFFSET);t.font=this.isPhonePortrait().matches?`bold ${this.UNIT_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.UNIT_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.fillText("kts",bt,tt),t.restore()}let Oe=X?.[0]?.data,Te=Oe?.length?Oe.length-1:-1,Ye=Te>=0?Oe[Te]?.x:void 0;if(typeof Ye=="number"&&isFinite(Ye)){let Ee=this.normalizeAngle(Ye);t.save(),t.fillStyle=r.chartValue,t.font=this.isPhonePortrait().matches?`bold ${this.SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${Ee.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-(this.isPhonePortrait().matches?this.TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET:this.TOP_VALUE_Y_OFFSET)),t.restore()}if(!M){let Ee=Math.min(i.width*.7,420),We=90,pe=i.left+(i.width-Ee)/2,He=i.top+(i.height-We)/2;t.save(),t.globalAlpha=.82,t.fillStyle=a.background,t.fillRect(pe,He,Ee,We),t.restore(),t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=2,t.strokeRect(pe,He,Ee,We),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+Ee/2,He+We/2),t.restore()}}};constructor(){this.isPhonePortrait=Qa(this.responsive.observe(mi.HandsetPortrait)),R(()=>{let e=this.theme(),t=this.runtime?.options();!e||!t||W(()=>{this.datasetConfig&&this.chart&&(this.setChartOptions(),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")))})}),R(()=>{let e=this.runtime?.options();if(!e)return;!this.datasetConfig||this.datasetConfig.timeScaleFormat!==e.timeScale?(this.removeServiceDatasets(),this.createServiceDataset(),this.startWidget()):this.chart&&this.setChartOptions()})}startWidget(){this.widgetDataChart()&&(this.datasetConfig=this._dataset.getDatasetConfig(`${this.id()}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.id()}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>this.chart?.update("none")):(this.chart=new Et(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()))}removeServiceDatasets(){[`${this.id()}-twd`,`${this.id()}-tws`].forEach(t=>{this._dataset.list().some(i=>i.uuid===t)&&this._dataset.remove(t)})}createServiceDataset(){let e=this.runtime?.options();if(!e||e.timeScale==="")return;let t="self.environment.wind.directionTrue",i="self.environment.wind.speedTrue",a="default";this._dataset.list().filter(r=>r.uuid===`${this.id()}-twd`).length===0&&this._dataset.create(t,a,e.timeScale,30,`windtrends-${this.id()}`,!0,!1,`${this.id()}-twd`),this._dataset.list().filter(r=>r.uuid===`${this.id()}-tws`).length===0&&this._dataset.create(i,a,e.timeScale,30,`speedtrends-${this.id()}`,!0,!1,`${this.id()}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,a=0,r=20,s=(r-a)/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:this.isPhonePortrait().matches?{size:12}:{size:16},callback:h=>{let f=Number(h),b=this.datasetConfig?.timeScaleFormat,C=this.getWindowMs(b);return b==="Last 5 Minutes"?`${Math.round(f/6e4)}'`:C>=10*6e4?`${Math.round(f/6e4)}'`:`${Math.round(f/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:h=>{let f=this.xCenter??Number.NaN;if(this.nearlyEqual(h,f))return"";let C=this.chart?.options?.scales?.x?.min;return typeof C=="number"&&this.nearlyEqual(h,C)?"":`${((h%360+360)%360).toFixed(0)}\xB0`},font:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenter??Number.NaN,C=this.nearlyEqual(f,b);return this.isPhonePortrait().matches?{size:11,weight:C?"bold":"normal"}:{size:20,weight:C?"bold":"normal"}},color:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenter??Number.NaN;return this.nearlyEqual(f,b)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let f=h.tick?.value??Number.NaN,b=h.scale,C=this.chart?.options?.scales,M=b,V=C?.x?.min??M.min;return this.nearlyEqual(f,V)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:a,max:r,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:s,minRotation:0,maxRotation:0,callback:h=>{let f=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(h,f))return"";let C=this.chart?.options?.scales?.xSpeed?.max;if(typeof C=="number"&&this.nearlyEqual(h,C))return"";let M=this.xStepSpeed??Number.NaN,V=Number.isFinite(M)?M:1,D=Math.max(0,Math.min(3,Math.ceil(-Math.log10(V))));return`${h.toFixed(D)}`},font:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenterSpeed??Number.NaN,C=this.nearlyEqual(f,b);return this.isPhonePortrait().matches?{size:11,weight:C?"bold":"normal"}:{size:20,weight:C?"bold":"normal"}},color:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(f,b)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let f=h.tick?.value??Number.NaN,b=h.scale,C=this.chart?.options?.scales,M=b,V=C?.xSpeed?.max??M.max;return this.nearlyEqual(f,V)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",text:"TWD ",color:this.getThemeColors().chartLabel,padding:this.isPhonePortrait().matches?{top:3,bottom:0}:{top:3,bottom:0},font:this.isPhonePortrait().matches?{size:16,weight:"normal"}:{size:35,weight:"normal"}},subtitle:{display:!0,align:"start",text:" TWS",color:this.getThemeColors().chartLabel,padding:this.isPhonePortrait().matches?{top:-18,bottom:12}:{top:-41,bottom:12},font:this.isPhonePortrait().matches?{size:16}:{size:35}},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(a+r)/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.id()}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.id()}-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 a=0;a<=4;a++)this.chart.data.datasets[a].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("none")})}),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 a=5;a<=9;a++)this.chart.data.datasets[a].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("none")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let a of e){if(a==null){t.push(null);continue}if(i==null){t.push(a),i=a;continue}let r=a-i;r>180&&(r-=360),r<-180&&(r+=360),t.push(t[t.length-1]+r),i=a}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,a){let r=e.map(h=>{let f=this.getRowValue(h,t);return f==null?null:this.unitsService.convertToUnit(i,f)}),s=a?this.unwrapAngles(r):r;return e.map((h,f)=>({x:s[f],y:h.timestamp,ts:h.timestamp}))}pushRowsGeneric(e,t,i,a){["value","sma","avg","min","max"].forEach((s,h)=>{this.chart.data.datasets[t+h].data.push(...this.transformRows(e,s,i,a))})}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)),a=e/Math.pow(10,i);return(t.find(s=>a<=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,a=!!e?.length,r=!!t?.length,s=!!i?.length,h=a?e[e.length-1].x:r?t[t.length-1].x:s?i[i.length-1].x:void 0;if(typeof h=="number"&&isFinite(h)){let M=this.chart.data.datasets[3]?.data,V=this.chart.data.datasets[4]?.data,D=M?.length?M[M.length-1].x:void 0,j=V?.length?V[V.length-1].x:void 0,X=typeof D=="number"&&isFinite(D)?this.angularDiff(h,D):Number.NaN,Z=typeof j=="number"&&isFinite(j)?this.angularDiff(h,j):Number.NaN,ee=Number.isFinite(X)||Number.isFinite(Z)?Math.max(Number.isFinite(X)?X:0,Number.isFinite(Z)?Z:0):Number.NaN;if(!Number.isFinite(ee)){let pe=a?e:r?t:i,He=Math.min(30,pe?.length??0);if(He>1){let tt=pe.slice(pe.length-He).map(ot=>ot.x).filter(ot=>typeof ot=="number"&&isFinite(ot));tt.length&&(ee=tt.reduce((ot,vt)=>Math.max(ot,this.angularDiff(h,vt)),0))}}ee=Math.max(ee||0,15);let Oe=2*ee/4,Te=this.niceStepFromMantissas(Oe,[1,1.5,2,2.5,5,7.5,10]),Ye=h-2*Te,Ee=h+2*Te;this.chart.options.scales.x.min=Ye,this.chart.options.scales.x.max=Ee;let We=this.chart.options.scales;We.x.ticks=Ke(Ue({},We.x.ticks??{}),{stepSize:Te}),this.xCenter=h,this.xStep=Te}let f=this.chart.data.datasets[7]?.data;if(f&&f.length){let M=f.length-1,V=f[M]?.x??0,D=this.chart.data.datasets[8].data[M]?.x??V,j=this.chart.data.datasets[9].data[M]?.x??V,X=Math.abs(V-D),Z=Math.abs(j-V),ee=Math.max(X,Z);ee=Math.max(ee,.5);let Oe=2*ee/4,Te=this.niceStepFromMantissas(Oe,[1,2,2.5,5,10]),Ye=V-2*Te,Ee=V+2*Te,We=this.chart.options.scales;We.xSpeed.min=Ye,We.xSpeed.max=Ee,We.xSpeed.ticks=Ke(Ue({},We.xSpeed.ticks??{}),{stepSize:Te}),this.xCenterSpeed=V,this.xStepSpeed=Te}let b=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let M=Date.now();this.chart.data.datasets.forEach(Z=>{Z.data.forEach(ee=>{let be=ee.ts??ee.y;ee.y=Math.max(0,Math.min(b,M-be))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=b;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=b/5;break}let j=this.chart.options.scales,X=Ue({},j.y.ticks??{});delete X.count,X.stepSize=V,j.y.ticks=X}}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 a=t.chartArea;if(!a)return null;let r=t.scales?.[i];if(!r)return null;let s=t.options?.scales,h=r,f=s?.[i]?.min??h.min,b=s?.[i]?.max??h.max;if(typeof f!="number"||typeof b!="number"||!isFinite(f)||!isFinite(b))return null;let C=(f+b)/2,M=r.getPixelForValue(C),V=Math.max(0,Math.min(1,(M-a.left)/a.width)),D=e.createLinearGradient(a.left,0,a.right,0);return D.addColorStop(0,this.theme().port),D.addColorStop(V,this.theme().port),D.addColorStop(V,this.theme().starboard),D.addColorStop(1,this.theme().starboard),D}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.runtime?.options()?.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}nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let a=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*a}resolveTickColor(e,t,i){let r=t.options.ticks?.color;return typeof r=="function"?r({chart:e,scale:t,tick:{value:i}})??Et.defaults.color:typeof r=="string"?r:Et.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}ngOnDestroy(){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||n)};static \u0275cmp=L({type:n,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,dp,5,Ie),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}"]})}return n})();function Dt(n,o,e,t=1e3,i,a,r=[500,500],s){if(a){let D=a.get(n);D&&cancelAnimationFrame(D)}o=(()=>{let D=n.getAttribute("transform");if(D){let j=/rotate\((-?\d+(\.\d+)?)/.exec(D);if(j)return parseFloat(j[1])}return o})();let f=D=>(D+360)%360;o=f(o),e=f(e);let b=e-o;b>180&&(b-=360),b<-180&&(b+=360);let C=D=>D<.5?4*D*D*D:1-Math.pow(-2*D+2,3)/2,M=D=>s?s.runOutsideAngular(D):D(),V=D=>s?s.run(D):D();M(()=>{let D=performance.now(),j=Z=>{let ee=Z-D,be=Math.min(ee/t,1),Oe=C(be),Te=o+b*Oe;if(n.setAttribute("transform",`rotate(${Te} ${r[0]} ${r[1]})`),be<1){let Ye=requestAnimationFrame(j);a&&a.set(n,Ye)}else n.setAttribute("transform",`rotate(${e} ${r[0]} ${r[1]})`),i&&V(i),a&&a.delete(n)},X=requestAnimationFrame(j);a&&a.set(n,X)})}function xa(n,o,e,t=500,i,a,r){if(a){let f=a.get(n);f&&cancelAnimationFrame(f)}let s=f=>r?r.runOutsideAngular(f):f(),h=f=>r?r.run(f):f();s(()=>{let f=performance.now(),b=e-o,C=D=>D<.5?4*D*D*D:1-Math.pow(-2*D+2,3)/2,M=D=>{let j=D-f,X=Math.min(j/t,1),Z=C(X),ee=o+b*Z;if(n.setAttribute("width",ee.toString()),X<1){let be=requestAnimationFrame(M);a&&a.set(n,be)}else n.setAttribute("width",e.toString()),i&&h(i),a&&a.delete(n)},V=requestAnimationFrame(M);a&&a.set(n,V)})}var od=n=>n<.5?4*n*n*n:1-Math.pow(-2*n+2,3)/2,ko=n=>(n%360+360)%360,cp=(n,o)=>{let e=ko(o)-ko(n);return e>180&&(e-=360),e<=-180&&(e+=360),e};function rd(n,o,e,t,i,a){let r=f=>a?a.runOutsideAngular(f):f(),s=f=>a?a.run(f):f(),h=0;return r(()=>{let f=performance.now(),b=cp(n,o),C=ko(n),M=V=>{let D=Math.min((V-f)/e,1),j=od(D),X=C+b*j;t(ko(X)),D<1?h=requestAnimationFrame(M):i&&s(i)};h=requestAnimationFrame(M)}),h}var mp=(n,o,e)=>({min:n.min+(o.min-n.min)*e,mid:n.mid+(o.mid-n.mid)*e,max:n.max+(o.max-n.max)*e});function sd(n,o,e,t,i,a){let r=f=>a?a.runOutsideAngular(f):f(),s=f=>a?a.run(f):f(),h=0;return r(()=>{let f=performance.now(),b=C=>{let M=Math.min((C-f)/e,1),V=od(M);t(mp(n,o,V)),M<1?h=requestAnimationFrame(b):i&&s(i)};h=requestAnimationFrame(b)}),h}var up=["rotatingDial"],hp=["awaIndicator"],pp=["twaIndicator"],gp=["wptIndicator"],fp=["setIndicator"],bp=["cogIndicator"],ld=([n,o],[e,t],[i,a])=>(Math.atan2(a-t,i-e)-Math.atan2(o-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,dd=(()=>{class n{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=v.required();courseOverGroundAngle=v(void 0);courseOverGroundEnabled=v.required();trueWindAngle=v.required();twsEnabled=v.required();twaEnabled=v.required();trueWindSpeed=v.required();trueWindSpeedUnit=v.required();appWindAngle=v.required();awsEnabled=v.required();appWindSpeed=v.required();appWindSpeedUnit=v.required();laylineAngle=v(void 0);closeHauledLineEnabled=v.required();sailSetupEnabled=v.required();windSectorEnabled=v.required();driftEnabled=v.required();driftSet=v(void 0);driftFlow=v(void 0);waypointAngle=v(void 0);waypointEnabled=v.required();trueWindMinHistoric=v(void 0);trueWindMidHistoric=v(void 0);trueWindMaxHistoric=v(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=w(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath=w("M 500,500 500,500");closeHauledLineStbdPath=w("M 500,500 500,500");portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=w("");stbdWindSectorPath=w("");animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=A(Ge);constructor(){R(()=>{let e=this.waypointEnabled();W(()=>{this.waypointActive.set(e)})}),R(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(Dt(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))})}),R(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&Dt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.waypointAngle();W(()=>{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&&Dt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&Dt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),R(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&Dt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&W(()=>this.updateCloseHauledLines())}),R(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&Dt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),W(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath.set("none"),this.stbdWindSectorPath.set("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,a=Number(this.laylineAngle())||0,r=this.addHeading(t,this.addHeading(i,a*-1));this.animateLayline(this.portLaylinePrev,r,!0,e),this.portLaylinePrev=r;let s=this.addHeading(t,this.addHeading(i,a));this.animateLayline(this.stbdLaylinePrev,s,!1,e),this.stbdLaylinePrev=s}animateLayline(e,t,i,a=!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(!a){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=rd(e,t,this.ANIMATION_DURATION,s=>this.drawLayline(s,i),()=>{i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},this.ngZone);i?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r}drawLayline(e,t){let i=e*Math.PI/180,a=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath.set(`M ${this.CENTER},${this.CENTER} L ${a},${r}`):this.closeHauledLineStbdPath.set(`M ${this.CENTER},${this.CENTER} L ${a},${r}`)}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.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(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.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(this.computeSectorPath(i,!1))):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(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.set(s):this.stbdWindSectorPath.set(s),i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=sd(e,t,this.ANIMATION_DURATION,s=>{let h=this.computeSectorPath(s,i);i?this.portWindSectorPath.set(h):this.stbdWindSectorPath.set(h)},()=>{i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},this.ngZone);i?this.portSectorAnimId=r:this.stbdSectorAnimId=r}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 a=this.animationFrameIds.get(i);a&&cancelAnimationFrame(a),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let a=(Number(this.laylineAngle())||0)*(t?-1:1),r=Number(this.compass.newValue)||0,s=this.addHeading(r,this.addHeading(e.min,a)),h=this.addHeading(r,this.addHeading(e.mid,a)),f=this.addHeading(r,this.addHeading(e.max,a)),b=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(h*Math.PI/180)+this.CENTER,V=this.RADIUS*Math.cos(h*Math.PI/180)*-1+this.CENTER,D=this.RADIUS*Math.sin(f*Math.PI/180)+this.CENTER,j=this.RADIUS*Math.cos(f*Math.PI/180)*-1+this.CENTER,X=Math.abs(ld([b,C],[M,V],[D,j]))>Math.PI/2?0:1,Z=ld([D,j],[b,C],[M,V])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${b},${C} A ${this.RADIUS},${this.RADIUS} 0 ${X} ${Z} ${D},${j} z`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,up,5),te(i.awaIndicator,hp,5),te(i.twaIndicator,pp,5),te(i.wptIndicator,gp,5),te(i.setIndicator,fp,5),te(i.cogIndicator,bp,5)),t&2&&me(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"],["cx","500","cy","500","r","404",1,"rotating-dial-Backplate"],[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&&(K(),_(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),H(3,"stop",9)(4,"stop",10),k(),_(5,"linearGradient",11),H(6,"stop",9)(7,"stop",10),k(),_(8,"linearGradient",12),H(9,"stop",13)(10,"stop",14),k(),_(11,"linearGradient",15),H(12,"stop",16),k(),_(13,"clipPath",17),H(14,"ellipse",18),k(),H(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),k(),_(18,"g",22)(19,"g",23),H(20,"path",24)(21,"path",25),k()(),_(22,"g",26)(23,"g",27),H(24,"path",28)(25,"path",29)(26,"path",30),k(),_(27,"g",null,0)(29,"g",31),H(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,"circle",68),_(67,"text",69)(68,"tspan",70),m(69,"330"),k()(),_(70,"text",71)(71,"tspan",72),m(72,"300"),k()(),_(73,"text",73)(74,"tspan",74),m(75,"W"),k()(),_(76,"text",75)(77,"tspan",76),m(78,"240"),k()(),_(79,"text",77)(80,"tspan",78),m(81,"210"),k()(),_(82,"text",79)(83,"tspan",80),m(84,"S"),k()(),_(85,"text",81)(86,"tspan",82),m(87,"150"),k()(),_(88,"text",83)(89,"tspan",84),m(90,"120"),k()(),_(91,"text",85)(92,"tspan",86),m(93,"E"),k()(),_(94,"text",87)(95,"tspan",88),m(96,"60"),k()(),_(97,"text",89)(98,"tspan",90),m(99,"30"),k()(),_(100,"text",91)(101,"tspan",92),m(102,"N"),k()()(),_(103,"g",93),H(104,"path",94)(105,"path",95),k(),_(106,"g",96),H(107,"path",97)(108,"path",98),k(),_(109,"g",null,1),H(111,"path",99)(112,"ellipse",100),k(),_(113,"g",null,2),H(115,"path",101),k()()(),_(116,"g",102)(117,"g",103)(118,"text",104),m(119),k(),_(120,"text",105),m(121),At(122,"number"),k(),_(123,"text",106),m(124,"TWS"),k()(),_(125,"g",107)(126,"text",108),m(127),k(),_(128,"text",109),m(129),At(130,"number"),k(),_(131,"text",110),m(132,"AWS"),k()()(),_(133,"g",111)(134,"text",112),m(135),At(136,"number"),k()(),_(137,"g",113)(138,"g",null,3),H(140,"path",114),k(),_(141,"g",null,4),H(143,"path",115),_(144,"text",116),m(145,"A"),k()(),_(146,"g",null,5),H(148,"path",117),_(149,"text",118),m(150,"T"),k()()(),_(151,"g",119),H(152,"rect",120),_(153,"text",121)(154,"tspan"),m(155),_(156,"tspan"),m(157,"\xB0"),k()()()()()),t&2&&(g(103),re("display",i.closeHauledLineEnabled()?"inline":"none"),g(),re("display",i.appWindAngle()!=null?"inline":"none"),Y("d",i.closeHauledLineStbdPath()),g(),re("display",i.appWindAngle()!=null?"inline":"none"),Y("d",i.closeHauledLinePortPath()),g(),re("display",i.windSectorEnabled()?"inline":"none"),g(),re("display",i.portWindSectorPath()!="none"?"inline":"none"),Y("d",i.portWindSectorPath()),g(),re("display",i.stbdWindSectorPath()!="none"?"inline":"none"),Y("d",i.stbdWindSectorPath()),g(),Y("display",i.waypointActive()?"inline":"none"),g(4),re("display",i.driftEnabled()?"inline":"none"),g(4),re("display",i.twsEnabled()?"inline":"none"),g(2),ne(i.trueWindSpeedUnit()),g(2),ne(Ua(122,34,i.trueWindSpeed(),"1.1-1")??"--"),g(4),re("display",i.awsEnabled()?"inline":"none"),g(2),ne(i.appWindSpeedUnit()),g(2),ne(Ua(130,37,i.appWindSpeed(),"1.1-1")??"--"),g(4),re("display",i.driftEnabled()?"inline":"none"),g(2),ne(Ua(136,40,i.driftFlow(),"1.1-1")??"--"),g(3),Y("display",i.courseOverGroundEnabled()?"inline":"none"),g(8),re("display",i.twaEnabled()?"inline":"none"),g(9),ne(i.headingValue))},dependencies:[Ss],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%]{stroke:var(--mat-sys-background);fill:none;stroke-width:95}.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 n})();var cd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);zones=A(Ge);cdr=A(ci);hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=w(0);courseOverGroundAngle=w(0);appWindAngle=w(0);appWindSpeed=w(0);appWindSpeedUnit=w("");trueWindAngle=w(0);trueWindSpeed=w(0);trueWindSpeedUnit=w("");driftFlow=w(0);driftSet=w(0);waypointAngle=w(0);historicalWindDirection=[];trueWindMinHistoric=w(void 0);trueWindMidHistoric=w(void 0);trueWindMaxHistoric=w(void 0);windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;constructor(){R(()=>{let e=this.runtime.options();e&&W(()=>{this.appWindSpeedUnit.set(e.paths.appWindSpeed.convertUnitTo),this.trueWindSpeedUnit.set(e.paths.trueWindSpeed.convertUnitTo),this.registerStreams(),this.stopWindSectors(),this.startWindSectors()})})}onHeadingUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading(),t)>=this.DEG_EPSILON)&&(this.currentHeading.set(t),this.hasHeading=!0,this.scheduleMarkForCheck())};onCOGUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle(),t)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle.set(t),this.hasCOG=!0,this.scheduleMarkForCheck())};onDriftUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasDrift||Math.abs(this.driftFlow()-t)>=this.SPEED_EPSILON)&&(this.driftFlow.set(t),this.hasDrift=!0,this.scheduleMarkForCheck())};onSetUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasSet||this.angleDelta(this.driftSet(),t)>=this.DEG_EPSILON)&&(this.driftSet.set(t),this.hasSet=!0,this.scheduleMarkForCheck())};onWaypointUpdate=e=>{let t=e.data.value,i=this.normalizeAngle(t);(!this.hasWPT||this.angleDelta(this.waypointAngle(),i)>=this.DEG_EPSILON)&&(this.waypointAngle.set(i),this.hasWPT=!0,this.scheduleMarkForCheck())};onAppWindAngle=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value,i=this.normalizeAngle(t);(!this.hasAWA||this.angleDelta(this.appWindAngle(),i)>=this.DEG_EPSILON)&&(this.appWindAngle.set(i),this.hasAWA=!0,this.runtime.options()?.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(t)),this.scheduleMarkForCheck())};onAppWindSpeed=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed()-t)>=this.SPEED_EPSILON)&&(this.appWindSpeed.set(t),this.hasAWS=!0,this.scheduleMarkForCheck())};onTrueWindSpeed=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed()-t)>=this.SPEED_EPSILON)&&(this.trueWindSpeed.set(t),this.hasTWS=!0,this.scheduleMarkForCheck())};onTrueWindAngle=e=>{e.data.value==null&&(e.data.value=0);let i=this.runtime.options()?.paths.trueWindAngle.path||"",a=i.includes("angleTrueWater")||i.includes("angleTrueGround")?this.addHeading(this.currentHeading(),e.data.value):e.data.value,r=this.normalizeAngle(a);(!this.hasTWA||this.angleDelta(this.trueWindAngle(),r)>=this.DEG_EPSILON)&&(this.trueWindAngle.set(r),this.hasTWA=!0,this.scheduleMarkForCheck())};registerStreams(){this.runtime.options()&&this.zones.runOutsideAngular(()=>{this.stream.observe("headingPath",this.onHeadingUpdate),this.stream.observe("courseOverGround",this.onCOGUpdate),this.stream.observe("drift",this.onDriftUpdate),this.stream.observe("set",this.onSetUpdate),this.stream.observe("nextWaypointBearing",this.onWaypointUpdate),this.stream.observe("appWindAngle",this.onAppWindAngle),this.stream.observe("appWindSpeed",this.onAppWindSpeed),this.stream.observe("trueWindSpeed",this.onTrueWindSpeed),this.stream.observe("trueWindAngle",this.onTrueWindAngle)})}ngOnDestroy(){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.runtime.options()?.windSectorEnable){this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={},this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xn(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),a=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:a});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:a,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:a,u:i})}historicalCleanup(){if(!this.runtime.options()?.windSectorEnable)return;let e=Date.now()-this.runtime.options().windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let b=this.windSamples.shift();if(!b)break;this.windMinDeque.length&&this.windMinDeque[0].i===b.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===b.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.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,a=(t+i)/2,r=this.normalizeAngle(t),s=this.normalizeAngle(a),h=this.normalizeAngle(i);(this.lastSector.min===void 0||this.angleDelta(this.lastSector.min,r)>=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,h)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric.set(r),this.trueWindMidHistoric.set(s),this.trueWindMaxHistoric.set(h),this.lastSector={min:r,mid:s,max:h},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,a=(e-i+540)%360-180,r=t+a;return this.lastUnwrapped=r,r}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-wind-steer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:24,consts:[[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){if(t&1&&U(0,"svg-windsteer",0),t&2){let a,r,s,h,f,b,C,M,V,D;T("compassHeading",i.currentHeading())("courseOverGroundAngle",i.courseOverGroundAngle())("courseOverGroundEnabled",(a=i.runtime.options())==null?null:a.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle())("twsEnabled",(r=i.runtime.options())==null?null:r.twsEnable)("twaEnabled",(s=i.runtime.options())==null?null:s.twaEnable)("trueWindSpeed",i.trueWindSpeed())("trueWindSpeedUnit",i.trueWindSpeedUnit())("appWindAngle",i.appWindAngle())("awsEnabled",(h=i.runtime.options())==null?null:h.awsEnable)("appWindSpeed",i.appWindSpeed())("appWindSpeedUnit",i.appWindSpeedUnit())("laylineAngle",(f=i.runtime.options())==null?null:f.laylineAngle)("closeHauledLineEnabled",(b=i.runtime.options())==null?null:b.laylineEnable)("windSectorEnabled",(C=i.runtime.options())==null?null:C.windSectorEnable)("driftEnabled",(M=i.runtime.options())==null?null:M.driftEnable)("driftFlow",i.driftFlow())("driftSet",i.driftSet())("waypointAngle",i.waypointAngle())("waypointEnabled",(V=i.runtime.options())==null?null:V.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric())("trueWindMidHistoric",i.trueWindMidHistoric())("trueWindMaxHistoric",i.trueWindMaxHistoric())("sailSetupEnabled",((D=i.runtime.options())==null?null:D.sailSetupEnable)??!1)}},dependencies:[dd],encapsulation:2,changeDetection:0})}return n})();function Ap(n,o){if(n&1){let e=ae();d(0,"h3"),m(1,"Getting Started"),u(),d(2,"p"),m(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application. Access the "),d(4,"a",1),m(5,"KIP Help"),u(),m(6," to learn more."),u(),d(7,"table",2)(8,"thead")(9,"tr")(10,"th"),m(11,"Actions"),u(),d(12,"th"),m(13,"Touch"),u(),d(14,"th"),m(15,"Mouse"),u(),d(16,"th"),m(17,"Keyboard Shortcuts"),u()()(),d(18,"tbody")(19,"tr")(20,"td"),m(21,"Open Actions menu"),u(),d(22,"td"),m(23,"Swipe left"),u(),d(24,"td"),m(25,"Click, drag left, and release"),u(),d(26,"td")(27,"kbd"),m(28,"Shift"),u(),m(29," + "),d(30,"kbd"),m(31,"Ctrl"),u(),m(32," + "),d(33,"kbd",3),m(34,"\u2190"),u(),m(35," (Left Arrow)"),u()(),d(36,"tr")(37,"td"),m(38,"Open Notification menu"),u(),d(39,"td"),m(40,"Swipe right"),u(),d(41,"td"),m(42,"Click, drag right, and release"),u(),d(43,"td")(44,"kbd"),m(45,"Shift"),u(),m(46," + "),d(47,"kbd"),m(48,"Ctrl"),u(),m(49," + "),d(50,"kbd",3),m(51,"\u2192"),u(),m(52," (Right Arrow)"),u()(),d(53,"tr")(54,"td"),m(55,"Cycle through dashboards"),u(),d(56,"td"),m(57,"Swipe up/down"),u(),d(58,"td"),m(59,"Click, drag up/down, and release"),u(),d(60,"td")(61,"kbd"),m(62,"Shift"),u(),m(63," + "),d(64,"kbd"),m(65,"Ctrl"),u(),m(66," + "),d(67,"kbd",3),m(68,"\u2191"),u(),m(69,"/"),d(70,"kbd",3),m(71,"\u2193"),u(),m(72," (Up/Down Arrow)"),u()(),d(73,"tr")(74,"td"),m(75,"Toggle Fullscreen"),u(),d(76,"td"),m(77,"N/A"),u(),d(78,"td"),m(79,"N/A"),u(),d(80,"td")(81,"kbd"),m(82,"Shift"),u(),m(83," + "),d(84,"kbd"),m(85,"Ctrl"),u(),m(86," + "),d(87,"kbd"),m(88,"F"),u()()(),d(89,"tr")(90,"td"),m(91,"Toggle Night mode"),u(),d(92,"td"),m(93,"N/A"),u(),d(94,"td"),m(95,"N/A"),u(),d(96,"td")(97,"kbd"),m(98,"Shift"),u(),m(99," + "),d(100,"kbd"),m(101,"Ctrl"),u(),m(102," + "),d(103,"kbd"),m(104,"N"),u()()(),d(105,"tr")(106,"td"),m(107,"Toggle dashboard edit mode"),u(),d(108,"td"),m(109,"N/A"),u(),d(110,"td"),m(111,"N/A"),u(),d(112,"td")(113,"kbd"),m(114,"Shift"),u(),m(115," + "),d(116,"kbd"),m(117,"Ctrl"),u(),m(118," + "),d(119,"kbd"),m(120,"E"),u()()()()(),d(121,"i"),m(122,"Note that the words Touch and Tap are synonymous with mouse Click."),u(),U(123,"br")(124,"br"),d(125,"h3"),m(126,"Login to Signal K"),u(),d(127,"p"),m(128," The first step is to configure Signal K server authentication ("),d(129,"i"),m(130,"a pre-existing Signal K server username and password is required"),u(),m(131,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select the top right "),d(132,"strong"),m(133,"Settings button"),u(),m(134,", then the top left "),d(135,"strong"),m(136,"Options button"),u(),m(137,". Toggle "),d(138,"strong"),m(139,"Login to server"),u(),m(140," and enter your Signal K credentials. "),u(),d(141,"ul")(142,"li")(143,"strong"),m(144,"Why login?"),u(),m(145," 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. "),u(),d(146,"li"),m(147," 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. "),u(),d(148,"li"),m(149," After entering your credentials, select "),d(150,"strong"),m(151,"Login"),u(),m(152," or "),d(153,"strong"),m(154,"Connect"),u(),m(155,". If successful, your connection status will update and live data will appear in KIP. "),u(),d(156,"li"),m(157," 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. "),u()(),d(158,"h3"),m(159,"Option 1: Load Demonstration Dashboards"),u(),d(160,"p"),m(161," Try the sample dashboards using data from your server: "),U(162,"br"),d(163,"button",4),B("click",function(){q(e);let i=I();return z(i.loadDemoConfig())}),m(164,"Load Demo"),u()(),d(165,"h3"),m(166,"Option 2: Create Your Own Layout"),u(),d(167,"p"),m(168,' The text you are reading is actually a widget that fills the dashboard. The screen is split in halves at the middle. This mode is called Chartplotter mode. It can later be turned off in Settings / Options / Display. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. Note that you can add and manage dashboards using the Settings button from the Actions menu. '),u(),d(169,"p")(170,"strong"),m(171,"Try editing the Dashboard now to receive further instructions!"),u()()}}function vp(n,o){n&1&&(d(0,"h2"),m(1,"Changing Layouts"),u(),m(2," Follow these simple steps to learn how to change your dashboard layout: "),d(3,"ol")(4,"li"),m(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."),u(),d(6,"li"),m(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),u(),d(8,"li"),m(9,"Choose a widget from the selection panel to add it to the dashboard."),u()(),d(10,"h3"),m(11,"Possible widget operations"),u(),d(12,"ul")(13,"li")(14,"strong"),m(15,"Touch and drag"),u(),m(16," to move widgets"),u(),d(17,"li")(18,"strong"),m(19,"Drag corners and sides"),u(),m(20," to resize widgets"),u(),d(21,"li")(22,"strong"),m(23,"Double Tap"),u(),m(24," on a widget to configure it"),u(),d(25,"li")(26,"strong"),m(27,"Press and Hold"),u(),m(28," on a widget to delete or duplicate widgets"),u()(),d(29,"h2"),m(30,"Exiting dashboard edit mode"),u(),d(31,"p"),m(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),u(),d(33,"h2"),m(34,"Adding more dashboards"),u(),d(35,"p"),m(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),u())}var md=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={filterSelfPaths:!0};dashboard=A(wt);settings=A($t);loadDemoConfig(){this.settings.loadDemoConfig()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-tutorial"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:1,consts:[[1,"tutorial-container"],["routerLink","/help"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(d(0,"div",0),G(1,Ap,172,0)(2,vp,37,0),u()),t&2&&(g(),F(i.dashboard.isDashboardStatic()?1:2))},dependencies:[lt,ks],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}"],changeDetection:0})}return n})();var ud=(()=>{let o=class o{constructor(t){this.ngZone=t,this.count=0,this.elementMap=new Map,this.observer=null}ngOnDestroy(){this.observer&&this.clearObserver()}observe(t,i,a){this.observer||(this.observer=new ResizeObserver(r=>{for(let s of r){let h=this.elementMap.get(s.target);h&&this.ngZone.run(()=>{h(s)})}})),a==="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}};o.\u0275fac=function(i){return new(i||o)(ms(Ge))},o.\u0275prov=ht({token:o,factory:o.\u0275fac});let n=o;return n})(),ni=(()=>{let o=class o{constructor(t,i,a){this.elementRef=t,this.ngxResizeObserverService=i,this.ngZone=a,this.resizeBoxModel="",this.onResize=new yt,this.observing=!1,Tn(()=>{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)}};o.\u0275fac=function(i){return new(i||o)(li(Ie),li(ud),li(Ge))},o.\u0275dir=st({type:o,selectors:[["","onResize",""]],inputs:{resizeBoxModel:"resizeBoxModel"},outputs:{onResize:"onResize"},features:[Yt]});let n=o;return n})(),Pt=(()=>{let o=class o{};o.\u0275fac=function(i){return new(i||o)},o.\u0275mod=Wt({type:o}),o.\u0275inj=Vt({providers:[ud]});let n=o;return n})();var yp=["canvas"],To=(()=>{class n{text=v.required();color=v.required();canvasRef=ie.required("canvas");canvas=A(je);canvasElement;canvasCtx;isReady=!1;cssWidth=0;cssHeight=0;constructor(){}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.drawTitle()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.isReady=!0,this.drawTitle()}ngOnChanges(e){(e.text||e.color)&&this.drawTitle()}drawTitle(){this.isReady&&this.canvas.drawTitle(this.canvasCtx,this.text(),this.color(),"normal",this.cssWidth,this.cssHeight)}ngOnDestroy(){try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}this.canvasCtx=null,this.canvasElement=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-title"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,yp,5),t&2&&me()},inputs:{text:[1,"text"],color:[1,"color"]},features:[Yt],decls:3,vars:0,consts:[["canvas",""],[1,"title-wrapper"],[1,"title-canvas"]],template:function(t,i){t&1&&(_(0,"div",1),H(1,"canvas",2,0),k())},dependencies:[Pt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;z-index:10}.title-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.title-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}"]})}return n})();var Cp=["svgSlider"];function Sp(n,o){n&1&&U(0,"div",10)}var hd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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"};runtime=A(de);streams=A(_e);svgElement=ie.required("svgSlider");dashboard=A(wt);signalkRequestsService=A(Di);appService=A(Lt);labelColor=w(void 0);barColor=w(void 0);skRequestSub=new Ni;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=null;valueChange$=new Nt;constructor(){R(()=>{let e=this.theme(),t=this.runtime.options();!t||!e||W(()=>{this.ensureColorMap(),this.getColors(t.color)})}),R(()=>{let e=this.runtime.options(),t=e?.paths?.gaugePath?.path;!e||!t||W(()=>{this.calculateLineBounds(),this.streams.observe("gaugePath",i=>{if(!i||!i.data){this.handlePosition=this.mapValueToPosition(e.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(i.data.value))})})})}ngOnInit(){let e=this.runtime.options();e&&this.getColors(e.color),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest(),this.valueChange$.pipe(vi(t=>{let i=this.runtime.options();return i?this.isWithinMargin(t,i.displayScale.lower,i)?i.displayScale.lower:this.isWithinMargin(t,i.displayScale.upper,i)?i.displayScale.upper:parseFloat(t.toFixed(2)):t}),Li(200),rs()).subscribe(t=>{this.sendValue(t)})}mapValueToPosition(e){let t=this.runtime.options();if(!t)return e;let i=t.displayScale.upper-t.displayScale.lower,a=this.LINE_WIDTH;return(e-t.displayScale.lower)/i*a+this.LINE_START}mapPositionToValue(e){let t=this.runtime.options();if(!t)return e;let i=t.displayScale.upper-t.displayScale.lower,a=this.LINE_WIDTH;return(e-this.LINE_START)/a*i+t.displayScale.lower}isWithinMargin(e,t,i){let a=(i.displayScale.upper-i.displayScale.lower)*.01;return Math.abs(e-t)<=a}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.id()){let i=`Toggle Widget ${this.runtime.options()?.displayName}: `;e.statusCode!=200&&(e.message?i+=e.message:i+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(i,0))}})}sendValue(e){let t=this.runtime.options()?.paths?.gaugePath?.path;this.signalkRequestsService.putRequest(t,e,this.id())}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);let a=this.runtime.options();a&&this.handlePosition<=this.LINE_START?this.pathValue=a.displayScale.lower:a&&this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=a.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){if(this.ensureColorMap(),!this.colorMap)return;let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ensureColorMap(){let e=this.theme();e&&(this.colorMap=new Map([["contrast",{label:e.contrastDim,bar:e.contrast}],["blue",{label:e.blueDim,bar:e.blue}],["green",{label:e.greenDim,bar:e.green}],["pink",{label:e.pinkDim,bar:e.pink}],["orange",{label:e.orangeDim,bar:e.orange}],["purple",{label:e.purpleDim,bar:e.purple}],["grey",{label:e.greyDim,bar:e.grey}],["yellow",{label:e.yellowDim,bar:e.yellow}]]))}ngOnDestroy(){this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&te(i.svgElement,Cp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:11,vars:7,consts:[["svgSlider",""],[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 a=ae();U(0,"widget-title",1),d(1,"div",2),B("onResize",function(){return q(a),z(i.onResized())}),K(),d(2,"svg",3),U(3,"rect",4)(4,"rect",5),d(5,"g",6),U(6,"circle",7)(7,"circle",8),u(),d(8,"rect",9,0),B("pointerdown",function(s){return q(a),z(i.onPointerDown(s))})("pointerup",function(){return q(a),z(i.onPointerUp())})("pointermove",function(s){return q(a),z(i.onPointerMove(s))})("pointerleave",function(){return q(a),z(i.onPointerLeave())}),u()(),G(10,Sp,1,0,"div",10),u()}if(t&2){let a;T("text",i.runtime==null||(a=i.runtime.options())==null?null:a.displayName)("color",i.labelColor()),g(4),Y("width",i.lineWidth)("fill",i.barColor()),g(2),Y("cx",i.handlePosition),g(),Y("cx",i.handlePosition),g(3),F(i.dashboard.isDashboardStatic()?-1:10)}},dependencies:[Pt,ni,To],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 n})();var wp=["gaugeBarAnimate"];function xp(n,o){if(n&1&&(K(),H(0,"rect",14)),n&2){let e=o.$implicit,t=I();Y("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var pd=(()=>{class n{gaugeBarAnimate=ie("gaugeBarAnimate");displayName=v.required();displayNameColor=v.required();dataValue=v.required();dataValueLabel=v.required();unitLabel=v.required();barColor=v.required();barColorGradient=v.required();barColorBackground=v.required();gaugeMinValue=v.required();gaugeMaxValue=v.required();highlights=v.required();scaleSliceValue=se(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=w(null);oldGaugeValue=w(null);scheduleRafId=null;constructor(){R(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),W(()=>{this.oldGaugeValue.set(this.newGaugeValue()!==null?this.newGaugeValue():e),this.newGaugeValue.set(this.dataValue()!==null?(t-e)*this.scaleSliceValue():e),this.gaugeBarAnimate()?.nativeElement&&(this.scheduleRafId!==null&&cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=requestAnimationFrame(()=>{let i=this.gaugeBarAnimate();i?.nativeElement&&i.nativeElement.beginElement(),this.scheduleRafId=null}))})})}ngOnDestroy(){this.scheduleRafId!==null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&te(i.gaugeBarAnimate,wp,5),t&2&&me()},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&&(K(),_(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),H(3,"stop",4)(4,"stop",5),k(),H(5,"linearGradient",6),k(),_(6,"g",7),H(7,"rect",8),_(8,"defs")(9,"g",9),H(10,"rect",10)(11,"rect",11),k()(),_(12,"use",12),H(13,"animateTransform",13,0),k(),ue(15,xp,1,3,":svg:rect",14,Me),k(),_(17,"g",15)(18,"text",16)(19,"tspan",17),m(20),k()(),_(21,"text",18)(22,"tspan",19),m(23),k(),_(24,"tspan",20),m(25),k()()()()),t&2&&(g(3),Y("stop-color",i.barColorGradient()),g(),Y("stop-color",i.barColorGradient()),g(3),Y("fill",i.barColorBackground()),g(5),re("fill",i.barColor()),g(),Y("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),g(2),he(i.highlights()),g(4),Y("fill",i.displayNameColor()),g(),ye(" ",i.displayName()),g(3),ne(i.dataValueLabel()),g(2),ne(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 n})();var ai=(()=>{class n{zones=w([]);metaConfig=v();metaWidget=v();_metaConfig=w(void 0);dataService=A(Ci);destroyRef=A(rt);runtime=A(de,{optional:!0});reset$=new Nt;lastKey;currentSub;pathSignature;observe(e){let t=this.runtime?.options()??this._metaConfig()??this.metaConfig();if(!t?.paths||Object.keys(t.paths).length===0)return;let i=e||Object.keys(t.paths)[0];this.lastKey=i;let a=t.paths[i]?.path;if(!a)return;let r=a;this.pathSignature!==r&&this.subscribePathMeta(a,r)}subscribePathMeta(e,t){this.currentSub&&(this.currentSub.unsubscribe(),this.currentSub=void 0),this.pathSignature=t;let i=this.dataService.getPathMetaObservable(e).pipe(Va(this.reset$),et(this.destroyRef)).subscribe(a=>{a?a.zones?this.zones.set([...a.zones]):this.zones.set([]):this.zones.set([])});this.currentSub=i}setMetaConfig(e){this._metaConfig.set(e)}applyMetaConfigDiff(e){if(this._metaConfig.set(e),!e?.paths||Object.keys(e.paths).length===0){this.reset();return}let t=this.lastKey&&e.paths[this.lastKey]?this.lastKey:Object.keys(e.paths)[0],i=e.paths[t]?.path,a=i??"";if(!i){this.reset();return}this.pathSignature!==a&&this.subscribePathMeta(i,a)}reset(){this.reset$.next(),this.reset$.complete(),this.reset$=new Nt,this.currentSub&&(this.currentSub.unsubscribe(),this.currentSub=void 0),this.pathSignature=void 0,this.zones.set([])}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-metadata",""]],inputs:{metaConfig:[1,"metaConfig"],metaWidget:[1,"metaWidget"]},exportAs:["widgetMetadata"]})}return n})();function ta(n,o,e,t,i,a,r=!1){let s=[],h=[...n].sort((f,b)=>f.lower-b.lower);for(let f of h){let b=null,C=null,M;switch(f.state){case ce.Emergency:M=o.zoneEmergency;break;case ce.Alarm:M=o.zoneAlarm;break;case ce.Warn:M=o.zoneWarn;break;case ce.Alert:M=o.zoneAlert;break;case ce.Nominal:M=o.zoneNominal;break;default:M="rgba(0,0,0,0)"}if(b=t.convertToUnit(e,f.lower),C=t.convertToUnit(e,f.upper),!(C<i||b>a)){if(b=b!==null?b:i,C=C!==null?C:a,b=Math.max(b,i),C>a){C=a,s.push({from:b,to:C,color:M});break}s.push({from:b,to:C,color:M})}}return r&&(s=s.map(f=>({from:a-f.to,to:a-f.from,color:f.color}))),s}var gd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);streams=A(_e);metadata=A(ai,{optional:!0});unitsService=A(at);unitsLabel=w("");dataLabelValue=w("0");dataValue=w(null);barColor=w("");barColorGradient=w("");barColorBackground=w("");highlights=se(()=>{let e=this.metadata.zones(),t=this.runtime.options(),i=this.theme();if(!t||!i)return[];if(t.ignoreZones||!this.metadata)return[];if(!e?.length)return[];let a=t.paths.gaugePath.convertUnitTo,r=t.displayScale.lower,s=t.displayScale.upper;return ta(e,i,a,this.unitsService,r,s)});lastState=null;constructor(){R(()=>{let e=this.runtime.options(),t=e?.paths?.gaugePath?.path;!e||!t||W(()=>{this.streams.observe("gaugePath",a=>{let r=this.theme();if(!e||!r)return;let s=a?.data?.value;if(s==null)this.dataValue.set(e.displayScale.lower),this.dataLabelValue.set("--");else{let h=Math.min(Math.max(s,e.displayScale.lower),e.displayScale.upper);this.dataValue.set(h),this.dataLabelValue.set(h.toFixed(e.numDecimal))}if(!e.ignoreZones){let h=a?.state;if(h&&h!==this.lastState)switch(this.lastState=h,h){case ce.Alarm:this.barColor.set(r.zoneAlarm);break;case ce.Warn:this.barColor.set(r.zoneWarn);break;case ce.Alert:this.barColor.set(r.zoneAlert);break;case ce.Nominal:this.barColor.set(r.zoneNominal);break;default:this.barColor.set(Se(e.color,r).color);break}}});let i=e.paths.gaugePath.convertUnitTo;this.unitsLabel.set(e.gauge.unitLabelFormat==="abr"?i?.substring(0,1):i)})}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.barColorBackground.set(t.background);let i=Se(e.color,t);e.ignoreZones?this.barColor.set(i.color):this.lastState||this.barColor.set(i.color),this.barColorGradient.set(i.dimmer||i.dim||i.color)})}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||!this.metadata||W(()=>this.metadata.observe("gaugePath"))})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-simple-linear"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:11,consts:[[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){if(t&1&&U(0,"svg-simple-linear-gauge",0),t&2){let a,r=i.runtime.options();T("displayName",r.displayName)("displayNameColor",(a=i.theme())==null?null:a.contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",r.displayScale.upper)("gaugeMinValue",r.displayScale.lower)("highlights",i.highlights())}},dependencies:[pd],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return n})();var Mp=["rotatingDial"],kp=["twaIndicator"],Tp=["wptIndicator"],Ep=["setIndicator"],Dp=["tackIndicator"],fd=([n,o],[e,t],[i,a])=>(Math.atan2(a-t,i-e)-Math.atan2(o-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,bd=(()=>{class n{rotatingDial=ie.required("rotatingDial");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");tackIndicator=ie.required("tackIndicator");compassHeading=v.required();tackTrue=v.required();polarSpeedRatio=v.required();trueWindAngle=v.required();trueWindSpeed=v.required();targetAngle=v.required();optimalWindAngle=v.required();targetVMG=v.required();VMG=v.required();sailSetupEnabled=v.required();driftEnabled=v.required();driftSet=v(void 0);driftFlow=v(void 0);waypointEnabled=v.required();waypointAngle=v(void 0);vmgToWaypoint=v(void 0);trueWindMinHistoric=v(void 0);trueWindMidHistoric=v(void 0);trueWindMaxHistoric=v(void 0);gradianColor=v.required();compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};tack={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue=w("--");windSectorsInitialized=!1;trueWindHeading=0;trueWindSpeedDisplay=se(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});windAnglePerformanceRatioColor=se(()=>{let e=this.optimalWindAngle(),t=this.targetAngle(),i=this.gradianColor().start,a=this.gradianColor().stop;if(e==null||t==null)return i;let r=1-Math.abs(e-t)/180;return this.interpolateColor(i,a,r)});targetVMGOffset=se(()=>{let e=this.VMG(),t=this.targetVMG();return e==null||t==null?"--":(e-t).toFixed(1)});targetVMGOffsetRatioColor=se(()=>{let e=this.VMG(),t=this.targetVMG(),i=this.gradianColor().start,a=this.gradianColor().stop;if(e==null||t==null)return i;let r=e/t;return this.interpolateColor(i,a,r)});waypointActive=w(!1);flow=se(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;CENTER_X=600;CENTER_Y=620;RADIUS=540;ANIMATION_DURATION=1e3;laylinePortPath=w(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);laylineStbdPath=w(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=w("");stbdWindSectorPath=w("");speedLineTipY=w(620);speedTipPoints=w("600,570 580,600 620,600");speedRatioColor=w("");speedLinePrevRatio=0;speedLinePrevTipY=600;speedLineAnimId=null;animationFrameIds=new WeakMap;ngZone=A(Ge);constructor(){R(()=>{let e=this.waypointEnabled();W(()=>{this.waypointActive.set(e)})}),R(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&W(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue.set(e.toString()),this.rotatingDial()?.nativeElement&&(Dt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateLaylines(),this.updateWindSectors())})}),R(()=>{let e=parseFloat(this.tackTrue().toFixed(0));e!=null&&W(()=>{this.tack.oldValue=this.tack.newValue,this.tack.newValue=e-this.compass.newValue,this.tackIndicator()?.nativeElement&&Dt(this.tackIndicator().nativeElement,this.tack.oldValue,this.tack.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620])})}),R(()=>{let e=this.waypointAngle();W(()=>{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&&Dt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620])})}),R(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&W(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(Dt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateLaylines())})}),R(()=>{let e=this.polarSpeedRatio(),t=Math.max(0,Math.min(1,e)),i=620,r=i-166,s=i-r*t;this.animateSpeedLine(this.speedLinePrevTipY,s),this.speedLinePrevTipY=s,this.speedLinePrevRatio=t}),R(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&W(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&Dt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone)})})}updateLaylines(){let e=this.addHeading(Number(this.twa.newValue),this.targetAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.twa.newValue),this.targetAngle());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 a=this.ANIMATION_DURATION,r=performance.now(),s=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,h=b=>{let C=b-r,M=Math.min(C/a,1),V=s(M),D=t-e;D>180&&(D-=360),D<-180&&(D+=360);let X=(e+D*V+360)%360*Math.PI/180,Z=Math.floor(this.RADIUS*Math.sin(X)+this.CENTER_X),ee=Math.floor(this.RADIUS*Math.cos(X)*-1+this.CENTER_Y);if(i?this.laylinePortPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${Z},${ee}`):this.laylineStbdPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${Z},${ee}`),M<1){let be=requestAnimationFrame(h);i?this.portLaylineAnimId=be:this.stbdLaylineAnimId=be}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},f=requestAnimationFrame(h);i?this.portLaylineAnimId=f:this.stbdLaylineAnimId=f}updateWindSectors(){if(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 a=this.ANIMATION_DURATION,r=performance.now(),s=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,h=b=>{let C=b-r,M=Math.min(C/a,1),V=s(M),D=(vt,rn)=>vt+(rn-vt)*V,j=D(e.min,t.min),X=D(e.mid,t.mid),Z=D(e.max,t.max),ee=this.addHeading(this.addHeading(j,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),be=this.addHeading(this.addHeading(X,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),Oe=this.addHeading(this.addHeading(Z,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),Te=this.RADIUS*Math.sin(ee*Math.PI/180)+this.CENTER_X,Ye=this.RADIUS*Math.cos(ee*Math.PI/180)*-1+this.CENTER_Y,Ee=this.RADIUS*Math.sin(be*Math.PI/180)+this.CENTER_X,We=this.RADIUS*Math.cos(be*Math.PI/180)*-1+this.CENTER_Y,pe=this.RADIUS*Math.sin(Oe*Math.PI/180)+this.CENTER_X,He=this.RADIUS*Math.cos(Oe*Math.PI/180)*-1+this.CENTER_Y,bt=Math.abs(fd([Te,Ye],[Ee,We],[pe,He]))>Math.PI/2?0:1,tt=fd([pe,He],[Te,Ye],[Ee,We])>0?0:1,ot=`M ${this.CENTER_X},${this.CENTER_Y} L ${Te},${Ye} A ${this.RADIUS},${this.RADIUS} 0 ${bt} ${tt} ${pe},${He} z`;if(i?this.portWindSectorPath.set(ot):this.stbdWindSectorPath.set(ot),M<1){let vt=requestAnimationFrame(h);i?this.portSectorAnimId=vt:this.stbdSectorAnimId=vt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},f=requestAnimationFrame(h);i?this.portSectorAnimId=f:this.stbdSectorAnimId=f}animateSpeedLine(e,t){this.speedLineAnimId&&(cancelAnimationFrame(this.speedLineAnimId),this.speedLineAnimId=null);let i=1e3,a=performance.now(),r=this.speedLinePrevRatio,s=(600-t)/454,h=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,f=b=>{let C=b-a,M=Math.min(C/i,1),V=h(M),D=(Oe,Te)=>Oe+(Te-Oe)*V,j=D(e,t),X=D(r,s);this.speedLineTipY.set(j);let Z=30,ee=20,be=j-Z;this.speedTipPoints.set(`600,${be} ${600-ee},${j} ${600+ee},${j}`),this.speedRatioColor.set(this.interpolateColor(this.gradianColor().start,this.gradianColor().stop,X)),M<1?this.speedLineAnimId=requestAnimationFrame(f):this.speedLineAnimId=null};requestAnimationFrame(f)}interpolateColor(e,t,i){i=Math.max(0,Math.min(1,i));function a(j){j=j.replace("#",""),j.length===3&&(j=j.split("").map(Z=>Z+Z).join(""));let X=parseInt(j,16);return[X>>16&255,X>>8&255,X&255]}let[r,s,h]=a(e),[f,b,C]=a(t),M=Math.round(r+(f-r)*i),V=Math.round(s+(b-s)*i),D=Math.round(h+(C-h)*i);return`rgb(${M},${V},${D})`}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.twaIndicator(),this.wptIndicator(),this.setIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let a=this.animationFrameIds.get(i);a&&cancelAnimationFrame(a),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Mp,5),te(i.twaIndicator,kp,5),te(i.wptIndicator,Tp,5),te(i.setIndicator,Ep,5),te(i.tackIndicator,Dp,5)),t&2&&me(5)},inputs:{compassHeading:[1,"compassHeading"],tackTrue:[1,"tackTrue"],polarSpeedRatio:[1,"polarSpeedRatio"],trueWindAngle:[1,"trueWindAngle"],trueWindSpeed:[1,"trueWindSpeed"],targetAngle:[1,"targetAngle"],optimalWindAngle:[1,"optimalWindAngle"],targetVMG:[1,"targetVMG"],VMG:[1,"VMG"],sailSetupEnabled:[1,"sailSetupEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointEnabled:[1,"waypointEnabled"],waypointAngle:[1,"waypointAngle"],vmgToWaypoint:[1,"vmgToWaypoint"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"],gradianColor:[1,"gradianColor"]},decls:173,vars:36,consts:[["rotatingDial",""],["tackIndicator",""],["twaIndicator",""],["wptIndicator",""],["setIndicator",""],["viewBox","0 0 1200 1200"],["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"],["id","linearGradient14",0,"xlink","href","#linearGradient13","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1211.2051,-79.73465)"],["id","linearGradient17",0,"xlink","href","#linearGradient16","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","linearGradient19",0,"xlink","href","#linearGradient18","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground","transform","translate(100,100)",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","dialBackground","cx","600","cy","620","r","516",1,"fixed-dial-background",2,"display","inline","stroke-width","46"],["id","barsAndText","transform","scale(1.1) translate(45,64)",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"],[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","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.4","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.4","stroke","none"],["id","LayerLayline"],["id","PortLayline",1,"portLayline"],["id","StbdLayline",1,"stbdLayline"],["id","layerCounter"],["id","tackCounter"],[0,"xml","space","preserve","x","1062","y","80",1,"tack-label"],["x","936","y","95","width","252","height","100","rx","20",1,"tack-box"],[0,"xml","space","preserve","x","1072","y","175","id","text42",1,"tack-value"],[2,"font-weight","normal"],[2,"font-weight","normal","font-size","30px"],["id","windVmgCounter"],[0,"xml","space","preserve","x","600","y","780",1,"tack-label"],[0,"xml","space","preserve","x","610","y","850",1,"wind-vmg-value"],[0,"xml","space","preserve","x","610","y","890",1,"wind-vmg-offset"],["id","waypointCounter"],[0,"xml","space","preserve","x","1062","y","1030",1,"tack-label"],["x","936","y","1045","width","252","height","140","rx","20",1,"waypoint-box"],[0,"xml","space","preserve","x","1060","y","1100",1,"waypoint-value"],[1,"tack-label"],[0,"xml","space","preserve","x","1060","y","1165",1,"waypoint-value"],["id","layerIndicators",2,"display","inline"],["d","m 606.20767,217.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 576.25472,75.811298 593.47058,58.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 576.25472,89.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 218.26408 h -12.77766 z",1,"tack-angle"],["d","m 451.77021,5.469207 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,230.15629 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,21.357036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,296.91787,121.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","600","y","210","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"],["cx","600","cy","225","rx","23","ry","23",1,"next-waypoint"],["id","layerDirectionSpeed"],["id","directionLine","x1","600","y1","620","x2","600","y2","110",1,"direction-line"],["id","speedLine","x1","600","y1","620","x2","600",1,"speed-line"],["id","speedTip",1,"speed-line"],["id","layerDrift","transform","translate(0, 20)"],["id","setArrow","d","m 663.93337,580.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",1,"drift-arrow",2,"fill","url(#linearGradient14)"],["id","text11",0,"xml","space","preserve","x","599.78842","y","623.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","layerHeading"],["id","rect1","width","290","height","117","x","455","y","10","rx","20",1,"heading-box",2,"stroke-width","5","stroke-opacity","0.5"],["x","615","y","110",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","120px","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&&(K(),_(0,"svg",5)(1,"defs",6)(2,"linearGradient",7),H(3,"stop",8)(4,"stop",9),k(),_(5,"linearGradient",10),H(6,"stop",8)(7,"stop",9),k(),_(8,"linearGradient",11),H(9,"stop",12)(10,"stop",13),k(),_(11,"linearGradient",14),H(12,"stop",15),k(),_(13,"clipPath",16),H(14,"ellipse",17),k(),H(15,"linearGradient",18)(16,"linearGradient",19)(17,"linearGradient",20),k(),_(18,"g",21)(19,"g",22),H(20,"path",23)(21,"path",24),k()(),_(22,"g",25)(23,"g",26),H(24,"circle",27),k(),_(25,"g",null,0)(27,"g",28),H(28,"path",29)(29,"path",30)(30,"path",31)(31,"path",32)(32,"path",33)(33,"path",34)(34,"path",35)(35,"path",36)(36,"path",37)(37,"path",38)(38,"path",39)(39,"path",40)(40,"path",41)(41,"path",42)(42,"path",43)(43,"path",44)(44,"path",45)(45,"path",46)(46,"path",47)(47,"path",48)(48,"path",49)(49,"path",50)(50,"path",51)(51,"path",52)(52,"path",53)(53,"path",54)(54,"path",55)(55,"path",56)(56,"path",57)(57,"path",58)(58,"path",59)(59,"path",60)(60,"path",61)(61,"path",62)(62,"path",63)(63,"path",64),_(64,"text",65)(65,"tspan",66),m(66,"330"),k()(),_(67,"text",67)(68,"tspan",68),m(69,"300"),k()(),_(70,"text",69)(71,"tspan",70),m(72,"W"),k()(),_(73,"text",71)(74,"tspan",72),m(75,"240"),k()(),_(76,"text",73)(77,"tspan",74),m(78,"210"),k()(),_(79,"text",75)(80,"tspan",76),m(81,"S"),k()(),_(82,"text",77)(83,"tspan",78),m(84,"150"),k()(),_(85,"text",79)(86,"tspan",80),m(87,"120"),k()(),_(88,"text",81)(89,"tspan",82),m(90,"E"),k()(),_(91,"text",83)(92,"tspan",84),m(93,"60"),k()(),_(94,"text",85)(95,"tspan",86),m(96,"30"),k()(),_(97,"text",87)(98,"tspan",88),m(99,"N"),k()()()()(),_(100,"g",89),H(101,"path",90)(102,"path",91),k(),_(103,"g",92),H(104,"path",93)(105,"path",94),k(),_(106,"g",95)(107,"g",96)(108,"text",97),m(109,"Tack/Gybe"),k(),H(110,"rect",98),_(111,"text",99),m(112),_(113,"tspan",100),m(114,"\xB0"),_(115,"tspan",101),m(116,"T"),k()()()(),_(117,"g",102)(118,"text",103),m(119,"Wind VMG"),k(),_(120,"text",104),m(121),_(122,"tspan",101),m(123," kts"),k()(),_(124,"text",105),m(125),_(126,"tspan",101),m(127," kts"),k()()(),_(128,"g",106)(129,"text",107),m(130,"Waypoint"),k(),H(131,"rect",108),_(132,"text",109)(133,"tspan",110),m(134,"VMG: "),k(),m(135),_(136,"tspan",101),m(137," kts"),k()(),_(138,"text",111)(139,"tspan",110),m(140,"HDG: "),k(),m(141),_(142,"tspan",100),m(143,"\xB0"),_(144,"tspan",101),m(145,"T"),k()()()()(),_(146,"g",112)(147,"g",null,1),H(149,"path",113),k(),_(150,"g",null,2),H(152,"path",114),_(153,"text",115),m(154,"T"),k()(),_(155,"g",null,3),H(157,"ellipse",116),k()(),_(158,"g",117),H(159,"line",118)(160,"line",119)(161,"polygon",120),k(),_(162,"g",121),H(163,"path",122,4),_(165,"text",123),m(166),k()(),_(167,"g",124),H(168,"rect",125),_(169,"text",126),m(170),_(171,"tspan",100),m(172,"\xB0"),k()()()()),t&2&&(g(101),re("display",i.portWindSectorPath()!="none"?"inline":"none"),Y("d",i.portWindSectorPath()),g(),re("display",i.stbdWindSectorPath()!="none"?"inline":"none"),Y("d",i.stbdWindSectorPath()),g(2),re("display",i.trueWindAngle()!=null?"inline":"none"),Y("d",i.laylinePortPath()),g(),re("display",i.trueWindAngle()!=null?"inline":"none"),Y("d",i.laylineStbdPath()),g(7),ne(i.tackTrue()),g(8),re("fill",i.targetVMGOffsetRatioColor()),g(),ne(i.targetVMG()),g(3),re("fill",i.targetVMGOffsetRatioColor()),g(),ne(i.targetVMGOffset()),g(10),ne(i.vmgToWaypoint()),g(6),ne(i.waypointAngle()),g(11),re("fill",i.windAnglePerformanceRatioColor()),g(3),Y("display",i.waypointActive()?"inline":"none"),g(5),re("stroke",i.speedRatioColor()),Y("y2",i.speedLineTipY()),g(),re("fill",i.speedRatioColor())("stroke",i.speedRatioColor()),Y("points",i.speedTipPoints()),g(),re("display",i.driftEnabled()?"inline":"none"),g(4),ne(i.flow()),g(4),ye(" ",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:none;stroke: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-box[_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)}.tack-box[_ngcontent-%COMP%]{stroke:var(--kip-yellow-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.tack-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.tack-label[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.waypoint-box[_ngcontent-%COMP%]{stroke:var(--kip-orange-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.waypoint-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:50px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-offset[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-blue-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.tack-angle[_ngcontent-%COMP%]{fill:var(--kip-yellow-color);stroke-width:15;stroke-linecap:square}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-orange-color);stroke-width:20;fill:none}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.portLayline[_ngcontent-%COMP%]{stroke:var(--kip-port-color);stroke-width:5}.stbdLayline[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color);stroke-width:5}.direction-line[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color);stroke-width:5}.speed-line[_ngcontent-%COMP%]{stroke:var(--kip-blue-color);stroke-width:10;fill:var(--kip-blue-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);stroke:var(--kip-widget-card-background-color);stroke-width:3}"]})}return n})();var Ad=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},tackTrue:{description:"True Tack",path:"self.performance.tackTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},polarSpeedRatio:{description:"Polar Speed Ratio",path:"self.performance.polarSpeedRatio",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"ratio",sampleTime:500},targetAngle:{description:"Target Angle",path:"self.performance.targetAngle",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"deg",sampleTime:500},optimalWindAngle:{description:"Optimal Wind Angle",path:"self.performance.optimumWindAngle",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"deg",sampleTime:500},targetVMG:{description:"Target Velocity Made Good",path:"self.performance.targetVelocityMadeGood",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},VMG:{description:"Velocity Made Good",path:"self.performance.velocityMadeGood",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,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,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!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,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},vmgToWaypoint:{description:"Velocity Made Good to Waypoint",path:"self.performance.velocityMadeGoodToWaypoint",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!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};runtime=A(de);streams=A(_e);currentHeading=w(0);courseOverGroundAngle=w(0);appWindAngle=w(0);appWindSpeed=w(0);appWindSpeedUnit=w("knots");trueWindAngle=w(0);trueWindSpeed=w(0);trueWindSpeedUnit=w("knots");driftFlow=w(0);driftSet=w(0);waypointAngle=w(0);vmgToWaypoint=w(null);tackTrue=w(0);polarSpeedRatio=w(0);targetAngle=w(0);optimalWindAngle=w(0);targetVMG=w(0);VMG=w(0);gradianColor=w({start:"#3298ff",stop:"#15af00"});trueWindMinHistoric=w(0);trueWindMidHistoric=w(0);trueWindMaxHistoric=w(0);windSectorSub=null;historicalWindDirection=[];constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.headingPath?.path||W(()=>this.streams.observe("headingPath",a=>{let r=a?.data?.value;this.currentHeading.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.courseOverGroundEnable||!e.paths?.courseOverGround?.path||W(()=>this.streams.observe("courseOverGround",a=>{let r=a?.data?.value;this.courseOverGroundAngle.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.driftEnable||!e.paths?.drift?.path||W(()=>this.streams.observe("drift",a=>{let r=a?.data?.value;this.driftFlow.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.driftEnable||!e.paths?.set?.path||W(()=>this.streams.observe("set",a=>{let r=a?.data?.value,s=r??0;this.driftSet.set(this.addHeading(-this.currentHeading(),s))}))}),R(()=>{let e=this.runtime.options();!e||!e.waypointEnable||!e.paths?.nextWaypointBearing?.path||W(()=>this.streams.observe("nextWaypointBearing",a=>{let r=a?.data?.value;if(r==null){this.waypointAngle.set(0);return}let s=r<0?360+r:r,h=this.addHeading(-this.currentHeading(),s);this.waypointAngle.set(Math.round(h))}))}),R(()=>{let e=this.runtime.options();!e||!e.awsEnable||!e.paths?.appWindAngle?.path||W(()=>this.streams.observe("appWindAngle",a=>{let r=a?.data?.value,s=r??0;if(s=s<0?360+s:s,this.appWindAngle.set(s),e.windSectorEnable){let h=this.currentHeading(),f=this.addHeading(h,r??0);this.addHistoricalWindDirection(f,e.windSectorWindowSeconds)}}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.tackTrue?.path||W(()=>this.streams.observe("tackTrue",a=>{let r=a?.data?.value;this.tackTrue.set(r==null?0:Math.round(r))}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.polarSpeedRatio?.path||W(()=>this.streams.observe("polarSpeedRatio",a=>{let r=a?.data?.value;this.polarSpeedRatio.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.targetAngle?.path||W(()=>this.streams.observe("targetAngle",a=>{let r=a?.data?.value,s=r==null?0:r<0?360+r:r;this.targetAngle.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.optimalWindAngle?.path||W(()=>this.streams.observe("optimalWindAngle",a=>{let r=a?.data?.value;this.optimalWindAngle.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.targetVMG?.path||W(()=>this.streams.observe("targetVMG",a=>{let r=a?.data?.value,s=r==null?0:Math.round(r*10)/10;this.targetVMG.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.VMG?.path||W(()=>this.streams.observe("VMG",a=>{let r=a?.data?.value,s=r==null?0:Math.round(r*10)/10;this.VMG.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.vmgToWaypoint?.path||W(()=>this.streams.observe("vmgToWaypoint",a=>{let r=a?.data?.value,s=r==null?null:Math.round(r*10)/10;this.vmgToWaypoint.set(s)}))}),R(()=>{let e=this.theme();if(!e)return;let t=e?.blue??"#3298ff",i=e?.green??"#15af00";W(()=>this.gradianColor.set({start:t,stop:i}))}),R(()=>{let e=this.runtime.options();!e||!e.awsEnable||!e.paths?.appWindSpeed?.path||W(()=>this.streams.observe("appWindSpeed",a=>{let r=a?.data?.value;this.appWindSpeed.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.twsEnable||!e.paths?.trueWindSpeed?.path||W(()=>this.streams.observe("trueWindSpeed",a=>{let r=a?.data?.value;this.trueWindSpeed.set(r??0)}))}),R(()=>{let e=this.runtime.options();if(!e||!e.twsEnable)return;let i=e.paths?.trueWindAngle?.path;i&&W(()=>this.streams.observe("trueWindAngle",a=>{let r=a?.data?.value,s=r??0;if(i.includes("angleTrueWater")||i.includes("angleTrueGround")){let h=this.currentHeading();s=this.addHeading(h,s)}else s=s<0?360+s:s;this.trueWindAngle.set(s)}))}),R(()=>{let e=this.runtime.options();e&&(e.windSectorEnable?this.windSectorSub||W(()=>this.windSectorSub=xn(500).subscribe(()=>this.historicalCleanup(e.windSectorWindowSeconds))):(this.windSectorSub?.unsubscribe(),this.windSectorSub=null))})}sectorArc=se(()=>{let e=this.trueWindMinHistoric(),t=this.trueWindMidHistoric(),i=this.trueWindMaxHistoric();return{min:e,mid:t,max:i}});addHistoricalWindDirection(e,t){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let i=this.arcForAngles(this.historicalWindDirection.map(a=>a.windDirection));this.trueWindMinHistoric.set(i.min),this.trueWindMaxHistoric.set(i.max),this.trueWindMidHistoric.set(i.mid),this.historicalCleanup(t)}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,a)=>{let r=a;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(e){let t=Date.now()-e*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(i=>i.timestamp>=t)}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}ngOnDestroy(){this.windSectorSub?.unsubscribe(),this.windSectorSub=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racesteer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:20,consts:[[3,"compassHeading","tackTrue","polarSpeedRatio","trueWindAngle","trueWindSpeed","targetAngle","optimalWindAngle","targetVMG","VMG","sailSetupEnabled","driftEnabled","driftFlow","driftSet","waypointEnabled","waypointAngle","vmgToWaypoint","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","gradianColor"]],template:function(t,i){if(t&1&&U(0,"svg-racesteer",0),t&2){let a,r,s;T("compassHeading",i.currentHeading())("tackTrue",i.tackTrue())("polarSpeedRatio",i.polarSpeedRatio())("trueWindAngle",i.trueWindAngle())("trueWindSpeed",i.trueWindSpeed())("targetAngle",i.targetAngle())("optimalWindAngle",i.optimalWindAngle())("targetVMG",i.targetVMG())("VMG",i.VMG())("sailSetupEnabled",(a=i.runtime.options())==null?null:a.sailSetupEnable)("driftEnabled",(r=i.runtime.options())==null?null:r.driftEnable)("driftFlow",i.driftFlow())("driftSet",i.driftSet())("waypointEnabled",(s=i.runtime.options())==null?null:s.waypointEnable)("waypointAngle",i.waypointAngle())("vmgToWaypoint",i.vmgToWaypoint()??0)("trueWindMinHistoric",i.trueWindMinHistoric())("trueWindMidHistoric",i.trueWindMidHistoric())("trueWindMaxHistoric",i.trueWindMaxHistoric())("gradianColor",i.gradianColor())}},dependencies:[bd],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg-racesteer[_ngcontent-%COMP%]{width:100%;height:100%}"]})}return n})();var Pp=["canvasMainRef"];function Ip(n,o){if(n&1&&(d(0,"div",8),K(),d(1,"svg",11)(2,"text",12),m(3),u()()()),n&2){let e=I();g(3),ye("Start at: ",e.startAtTime())}}function Op(n,o){if(n&1){let e=ae();d(0,"button",13),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("start"))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"Start"),u()()()(),Ve(),d(5,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-60))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"-1m"),u()()()(),Ve(),d(10,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(60))}),d(11,"mat-icon",5),K(),d(12,"svg",6)(13,"text",14),m(14,"+1m"),u()()()()}}function Rp(n,o){if(n&1){let e=ae();d(0,"button",13),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("sync"))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"Sync"),u()()()(),Ve(),d(5,"button",16),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("reset"))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"Reset"),u()()()()}}function Np(n,o){if(n&1){let e=ae();d(0,"button",17),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-60))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"-1m"),u()()()(),Ve(),d(5,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-1))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"-1s"),u()()()(),Ve(),d(10,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(1))}),d(11,"mat-icon",5),K(),d(12,"svg",6)(13,"text",14),m(14,"+1s"),u()()()(),Ve(),d(15,"button",17),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(60))}),d(16,"mat-icon",5),K(),d(17,"svg",6)(18,"text",14),m(19,"+1m"),u()()()()}}function Vp(n,o){if(n&1){let e=ae();d(0,"input",18),un("ngModelChange",function(i){q(e);let a=I();return mn(a.startAtTimeEdit,i)||(a.startAtTimeEdit=i),z(i)}),B("change",function(){q(e);let i=I();return z(i.setStartTime())}),u()}if(n&2){let e=I();cn("ngModel",e.startAtTimeEdit)}}function Wp(n,o){n&1&&U(0,"div",10)}var vd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);streams=A(_e);signalk=A(Di);dashboard=A(wt);canvas=A(je);destroyRef=A(rt);canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;labelColor=w("");mode=w(1);ttsValue=null;dtsValue=null;valueColor="";valueStateColor="";startAtTime=w("00:00:00");startAtTimeEdit=As("");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.valueStateColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();!e||!e.paths?.ttsPath?.path||W(()=>this.streams.observe("ttsPath",a=>{let r=this.ttsValue;this.ttsValue=a?.data?.value??null,this.updateValueColor(),this.draw(),this.shouldBeep(r,this.ttsValue)&&this.beepForValue(this.ttsValue),e.nextDashboard>=0&&r===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.startTimePath?.path||W(()=>this.streams.observe("startTimePath",a=>{let r=a?.data?.value;if(!r)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let s=new Date(r);this.startAtTimeEdit.set(s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.dtsPath?.path||W(()=>this.streams.observe("dtsPath",a=>{this.dtsValue=a?.data?.value??null}))}),this.signalk.subscribeRequest().pipe(et(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.id()&&e.statusCode===200&&this.beep(600,20)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.draw()}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}toggleMode(){this.mode.update(t=>(t+1)%5);let e=this.ttsValue;this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.mode()===2&&e!==0&&!this.isStartTimerRunning()&&this.mode.set(3),this.draw()}sendStartTimerCommand(e){this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.id()),e==="start"&&this.mode.set(0),e==="reset"&&(this.startAtTime.set("HH:MM:SS"),this.mode.set(1))}adjustStartTime(e){this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.id())}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],a=t[1],r=t.length>=3?t[2]:0,s=new Date(e);s.setHours(i,a,r,0),s<=e&&s.setDate(s.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:s.toISOString()},this.id())}isStartTimerRunning(){return(this.ttsValue??0)>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}shouldBeep(e,t){return t==null||this.startAtTime()==="HH:MM:SS"||!this.runtime.options()?.playBeeps?!1:t===0&&e!==0||t<10&&t>=0||t<60&&t%10===0||t%60===0}beepForValue(e){e===0?this.beep(500,1e3):e<10?this.beep(450,100):e<60&&e%10===0?this.beep(400,150):e%60===0&&this.beep(350,200)}updateValueColor(){let e=this.theme(),t=this.runtime.options();!e||!t||(t.ignoreZones?this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=(this.dtsValue??0)<0?e.zoneAlarm:e.zoneWarn:this.ttsValue<60?this.valueStateColor=e.zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor,this.ttsValue===0?(this.mode.set(2),(this.dtsValue??0)<0&&(this.valueStateColor=e.zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2))}getValueText(){if(this.ttsValue==null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),a=Math.floor(t%60),r=Math.floor(e%60);return`${i}:${a.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),a=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${a.toString().padStart(2,"0")}`}}draw(){if(!this.ctx||!this.canvasElement)return;if(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.runtime.options()?.displayName){let i=this.runtime.options()?.displayName||"TTS";this.titleBitmap=this.canvas.createTitleBitmap(i,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=i}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e=this.getValueText();this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),Math.floor(this.cssWidth*.95),Math.floor(this.cssHeight*.95),"bold",this.valueStateColor)}beep(e=440,t=100){if(!this.runtime.options()?.playBeeps)return;let i=window.AudioContext||window.webkitAudioContext,a=new i,r=a.createOscillator(),s=a.createGain();r.connect(s),s.connect(a.destination),r.type="sine",r.frequency.value=e,s.gain.value=.1,r.start(),r.stop(a.currentTime+t/1e3)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Pp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},decls:15,vars:2,consts:[["canvasMainRef",""],[1,"filler"],[1,"timer-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","change","ngModel"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1),U(1,"canvas",2,0),u(),d(3,"div",3)(4,"button",4),B("click",function(){return q(a),z(i.toggleMode())}),d(5,"mat-icon",5),K(),d(6,"svg",6)(7,"text",7),m(8,"\u22EE"),u()()()(),G(9,Ip,4,1,"div",8)(10,Op,15,0)(11,Rp,10,0)(12,Np,20,0)(13,Vp,1,1,"input",9),u(),G(14,Wp,1,0,"div",10)}if(t&2){let a;g(9),F((a=i.mode())===0?9:a===1?10:a===2?11:a===3?12:a===4?13:-1),g(5),F(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[pt,dt,nt,Fn,Xe,lt,Ze,ze],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.timer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.timer-canvas[_ngcontent-%COMP%]{width:100%!important;height:76%!important;display:block}.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 n})();var Lp=["canvasMainRef"];function Gp(n,o){if(n&1&&(d(0,"div",10),K(),d(1,"svg",11)(2,"text",12),m(3),u()()(),Ve(),d(4,"div",13),K(),d(5,"svg",14)(6,"text",15)(7,"tspan",16),m(8,"\u2691"),u(),m(9),d(10,"tspan",17),m(11,"\u2691"),u()()()(),Ve(),d(12,"div",18),K(),d(13,"svg",19)(14,"text",12),m(15),u()()()),n&2){let e=I();g(3),ne(e.portBiasValue()),g(6),ye(" ",e.lineLengthValue()," "),g(6),ne(e.stbBiasValue())}}function Fp(n,o){if(n&1){let e=ae();d(0,"button",20),B("click",function(){q(e);let i=I();return z(i.setLineEnd("port"))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",21),m(4,"Port End"),u()()()(),Ve(),d(5,"button",22),B("click",function(){q(e);let i=I();return z(i.setLineEnd("stb"))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",21),m(9,"Stbd End"),u()()()()}}function Bp(n,o){if(n&1){let e=ae();d(0,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",5,0))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",24),m(4,"+5m"),u()()()(),Ve(),d(5,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",-5,0))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",24),m(9,"-5m"),u()()()(),Ve(),d(10,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",5,0))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",24),m(14,"+5m"),u()()()(),Ve(),d(15,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",-5,0))}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",24),m(19,"-5m"),u()()()(),Ve(),d(20,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",-5,0))}),d(21,"mat-icon",6),K(),d(22,"svg",7)(23,"text",24),m(24,"+5m"),u()()()()}}function Up(n,o){if(n&1){let e=ae();d(0,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",0,i.toRadians(1)))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",24),m(4,"\u21911\xB0"),u()()()(),Ve(),d(5,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",0,i.toRadians(-1)))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",24),m(9,"\u21931\xB0"),u()()()(),Ve(),d(10,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",0,i.toRadians(1)))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",24),m(14,"\u21911\xB0"),u()()()(),Ve(),d(15,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",24),m(19,"\u21931\xB0"),u()()()()}}function qp(n,o){n&1&&U(0,"div",9)}var yd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);canvas=A(je);dashboard=A(wt);signalk=A(Di);destroyRef=A(rt);static DEFAULT_CONFIG={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}}};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;dtsValue=null;lengthValue=null;biasValue=null;labelColor=w("");valueColor="";dtsColor="";maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=w("");lineLengthValue=w("");stbBiasValue=w("");mode=w(0);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();!e||!e.paths?.dtsPath?.path||W(()=>this.streams.observe("dtsPath",i=>{this.dtsValue=i?.data?.value??null,this.updateDtsColor(),this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.lineLengthPath?.path||W(()=>this.streams.observe("lineLengthPath",i=>{this.lengthValue=i?.data?.value??null,this.drawLenBias(),this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.lineBiasPath?.path||W(()=>this.streams.observe("lineBiasPath",i=>{this.biasValue=i?.data?.value??null,this.drawLenBias()}))}),this.signalk.subscribeRequest().pipe(et(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.id()&&e.statusCode===200&&this.beep(600,20)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.draw()}toggleMode(){this.mode.update(e=>(e+1)%4),this.draw()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.id())}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.id())}toRadians(e){return e?e*(Math.PI/180):null}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(!this.titleBitmap||!e||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==e.displayName){let t=e?.displayName||"DTS";this.titleBitmap=this.canvas.createTitleBitmap(t,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.drawDToLine(),this.drawLenBias(),this.drawUnit()}drawDToLine(){let e=this.getValueText();this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}getValueText(){if(this.dtsValue===null)return"--";let e=this.runtime.options();return this.dtsValue.toFixed(e?.numDecimal??0)}drawUnit(){let e=this.runtime.options()?.paths?.dtsPath?.convertUnitTo||"m";this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth-10*this.canvas.scaleFactor),Math.floor(this.cssHeight-7*this.canvas.scaleFactor),Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.dtsColor,"end","alphabetic")}drawLenBias(){let e=this.runtime.options();if(e){if(e.paths.lineLengthPath.path&&this.lengthValue!=null){let t=e.paths.lineLengthPath.convertUnitTo;t==="feet"&&(t="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(e.numDecimal))}${t}\u2015`)}if(e.paths.lineBiasPath.path&&this.biasValue!=null){let t=e.paths.lineBiasPath.convertUnitTo;t==="feet"&&(t="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(e.numDecimal)+t),this.stbBiasValue.set(this.biasValue.toFixed(e.numDecimal)+t)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(e.numDecimal)+t),this.stbBiasValue.set(" +"+this.biasValue.toFixed(e.numDecimal)+t))}}}applyDecorations(e){switch(this.runtime.options()?.paths?.dtsPath?.convertUnitTo){case"percent":case"percentraw":return e+"%";default:return e}}updateDtsColor(){let e=this.theme(),t=this.runtime.options();!e||!t||(t.ignoreZones?this.dtsValue?this.dtsValue<0?this.dtsColor=e.zoneAlarm:this.dtsValue<10?this.dtsColor=e.zoneWarn:this.dtsValue<20?this.dtsColor=e.zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor)}beep(e=440,t=100){if(!this.runtime.options()?.playBeeps)return;let i=window.AudioContext||window.webkitAudioContext,a=new i,r=a.createOscillator(),s=a.createGain();r.connect(s),s.connect(a.destination),r.type="sine",r.frequency.value=e,s.gain.value=.1,r.start(),r.stop(a.currentTime+t/1e3)}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Lp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:15,vars:2,consts:[["canvasMainRef",""],[1,"line-wrapper"],[1,"filler"],[1,"line-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 a=ae();d(0,"div",1)(1,"div",2),U(2,"canvas",3,0),u(),d(4,"div",4)(5,"button",5),B("click",function(){return q(a),z(i.toggleMode())}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",8),m(9,"\u22EE"),u()()()(),G(10,Gp,16,3)(11,Fp,10,0)(12,Bp,25,0)(13,Up,20,0),u(),G(14,qp,1,0,"div",9),u()}if(t&2){let a;g(10),F((a=i.mode())===0?10:a===1?11:a===2?12:a===3?13:-1),g(4),F(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[Xe,lt,Ze,ze],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.line-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.line-canvas[_ngcontent-%COMP%]{position:absolute;width:100%!important;height:76%!important;display:block;top:0;left:0}.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 n})();var zp=["canvasMainRef"];function Hp(n,o){if(n&1){let e=ae();d(0,"button",14),B("click",function(){q(e);let i=I();return z(i.startTimer())}),m(1," Start "),u()}}function jp(n,o){if(n&1){let e=ae();d(0,"button",15),B("click",function(){q(e);let i=I();return z(i.pauseTimer())}),m(1," Pause "),u()}}var Cd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);timers=A(kl);canvas=A(je);static DEFAULT_CONFIG={timerLength:-300,color:"contrast",playBeeps:!0,displayName:"Race",filterSelfPaths:!0,paths:{},enableTimeout:!1,dataTimeout:5,ignoreZones:!0};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=w(!1);timeName="race";warnColor="";textColor="";constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.applyColors(e.color,t),this.draw()})}),R(()=>{let e=this.runtime.options();e&&this.ensureTimer(e.timerLength??-300)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.draw()}ensureTimer(e){this.timers.createTimer(this.timeName,e,1e3).subscribe(i=>{this.dataValue=i,this.timerRunning.set(this.timers.isRunning(this.timeName)),i>0?this.zoneState=ce.Normal:i===0?(this.zoneState=ce.Normal,this.beep(500,2e3)):i>-10?(this.zoneState=ce.Alarm,this.beep(450,100)):i>=-29?this.zoneState=ce.Warn:i===-30?(this.zoneState=ce.Warn,this.beep(400,200)):this.zoneState=ce.Normal,this.zoneState===ce.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.draw()},500):this.zoneState!==ce.Alarm&&this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null,this.flashOn=!1),this.draw()})}startTimer(){this.timers.startTimer(this.timeName),this.timerRunning.set(!0)}resetTimer(){this.timers.deleteTimer(this.timeName),this.timerRunning.set(!1);let e=this.runtime.options();this.ensureTimer(e?.timerLength??-300),this.draw()}pauseTimer(){this.timers.stopTimer(this.timeName),this.timerRunning.set(!1)}roundToMin(){if(this.dataValue==null)return;let t=(this.dataValue<0?-this.dataValue:this.dataValue)%60;this.dataValue>0?this.timers.setTimer(this.timeName,this.dataValue+(t>30?60-t:-t)):this.timers.setTimer(this.timeName,this.dataValue+(t>30?-(60-t):t))}addTime(e){this.dataValue!=null&&this.timers.setTimer(this.timeName,this.dataValue+e)}removeTime(e){this.dataValue!=null&&this.timers.setTimer(this.timeName,this.dataValue-e)}applyColors(e,t){switch(e){case"contrast":this.textColor=t.contrast,this.warnColor=t.zoneAlarm;break;case"blue":this.textColor=t.blue,this.warnColor=t.zoneAlarm;break;case"green":this.textColor=t.green,this.warnColor=t.zoneAlarm;break;case"pink":this.textColor=t.pink,this.warnColor=t.zoneAlarm;break;case"orange":this.textColor=t.orange,this.warnColor=t.zoneAlarm;break;case"purple":this.textColor=t.purple,this.warnColor=t.zoneAlarm;break;case"grey":this.textColor=t.grey,this.warnColor=t.zoneAlarm;break;case"yellow":this.textColor=t.yellow,this.warnColor=t.zoneAlarm;break;default:this.textColor=t.contrast,this.warnColor=t.zoneAlarm;break}}beep(e=440,t=100){if(this.runtime.options()?.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),a=i.createOscillator(),r=i.createGain();a.connect(r),r.connect(i.destination),a.type="sine",a.frequency.value=e,r.gain.value=.1,a.start(),a.stop(i.currentTime+t/1e3)}}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null)}draw(){if(!this.ctx)return;this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight);let e;if(this.dataValue!=null){let t=Math.abs(this.dataValue),i=Math.floor(t/60),a=Math.floor(t%60);e=`${i}:${("0"+a).slice(-2)}`,this.dataValue<0&&(e=`-${e}`)}else e="--";switch(this.currentValueLength!==e.length&&(this.currentValueLength=e.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.ctx,e,this.maxTextWidth,this.maxTextHeight,"bold")),this.zoneState){case ce.Alarm:this.flashOn?this.ctx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.ctx,0,0,this.cssWidth,this.cssHeight,this.warnColor),this.ctx.fillStyle=this.textColor);break;case ce.Warn:this.ctx.fillStyle=this.warnColor;break;default:this.ctx.fillStyle=this.textColor}this.canvas.drawText(this.ctx,e,this.cssWidth/2,this.cssHeight/2,this.maxTextWidth,this.maxTextHeight,"bold",this.ctx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,zp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:35,vars:2,consts:[["canvasMainRef",""],[1,"racetimer-wrapper"],[1,"racetimer-canvas"],[1,"timerBarContainer"],[1,"timer-button-groups","timer-adjusters-group"],["mat-flat-button","",1,"button","other-small-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","11"],["mat-flat-button","",1,"button","main-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 a=ae();d(0,"div",1),U(1,"canvas",2,0),d(3,"div",3)(4,"div",4)(5,"button",5),B("click",function(){return q(a),z(i.removeTime(5))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",8),m(9,"-5s"),u()()()(),Ve(),d(10,"button",5),B("click",function(){return q(a),z(i.removeTime(60))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",8),m(14,"-60s"),u()()()(),Ve(),d(15,"button",9),B("click",function(){return q(a),z(i.resetTimer())}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",8),m(19,"Reset"),u()()()(),Ve(),d(20,"button",5),B("click",function(){return q(a),z(i.addTime(60))}),d(21,"mat-icon",6),K(),d(22,"svg",7)(23,"text",8),m(24,"+60s"),u()()()(),Ve(),d(25,"button",5),B("click",function(){return q(a),z(i.addTime(5))}),d(26,"mat-icon",6),K(),d(27,"svg",7)(28,"text",8),m(29,"+5s"),u()()()()(),Ve(),d(30,"div",10),G(31,Hp,2,0,"button",11),G(32,jp,2,0,"button",12),d(33,"button",13),B("click",function(){return q(a),z(i.roundToMin())}),m(34," Synch "),u()()()()}t&2&&(g(31),F(i.timerRunning()?-1:31),g(),F(i.timerRunning()?32:-1))},dependencies:[Xe,lt,Ze,ze],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.racetimer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.racetimer-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.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:0;height:23%;width:100%;padding:0 10px 10px;display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:flex-end;align-items:stretch;gap:10px}.timer-button-groups[_ngcontent-%COMP%]{min-width:247px;max-width:100%;--mat-button-filled-container-shape: 5px}.timer-adjusters-group[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;gap:10px;height:100%}.timer-countdown-group[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.timer-synch-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-left:5px}.timer-start-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-right:5px}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.button[_ngcontent-%COMP%]{min-width:0px;height:100%;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}.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)}.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}"]})}return n})();var Yp=["canvasMainRef"],Sd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);canvas=A(je);canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;maxTextWidth=0;maxTextHeight=0;middle=0;center=0;fontSizeOffset=0;latPos="";longPos="";labelColor=w("");valueColor="";static DEFAULT_CONFIG={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};constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();if(!e)return;let t=e.paths?.longPath;t?.path&&W(()=>this.streams.observe("longPath",i=>{let a=i?.data?.value;a==null?this.longPos="":t.convertUnitTo==="pdeg"?this.longPos=a.toFixed(6)+"\xB0":this.longPos=String(a),this.calculateFontSizeAndPositions(),this.draw()}))}),R(()=>{let e=this.runtime.options();if(!e)return;let t=e.paths?.latPath;t?.path&&W(()=>this.streams.observe("latPath",i=>{let a=i?.data?.value;a==null?this.latPos="":t.convertUnitTo==="pdeg"?this.latPos=a.toFixed(7)+"\xB0":this.latPos=String(a),this.calculateFontSizeAndPositions(),this.draw()}))})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.calculateFontSizeAndPositions(),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.calculateFontSizeAndPositions(),this.draw()}calculateFontSizeAndPositions(){if(!this.cssWidth||!this.cssHeight)return;this.maxTextHeight=Math.floor(this.cssHeight*.6/2),this.maxTextWidth=Math.floor(this.cssWidth*.85),this.center=this.cssWidth/2,this.middle=this.cssHeight*.57;let e=this.latPos.length>this.longPos.length?this.latPos:this.longPos;if(this.ctx){let t=this.canvas.calculateOptimalFontSize(this.ctx,e,this.maxTextWidth,this.maxTextHeight,"bold");this.fontSizeOffset=Math.floor(t*5e-4)}}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(e){if(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==e.displayName){let t=e.displayName||"Position";this.titleBitmap=this.canvas.createTitleBitmap(t,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.canvas.drawText(this.ctx,this.latPos,this.center,this.middle-this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","bottom"),this.canvas.drawText(this.ctx,this.longPos,this.center,this.middle+this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","top")}}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-position"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Yp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"position-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.position-canvas[_ngcontent-%COMP%]{display:block;width:100%!important;height:100%!important;min-height:1px}"]})}return n})();var Qp=["canvasMainRef"],wd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);canvas=A(je);static DEFAULT_CONFIG={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;disposed=!1;fgColor=w("");bgColor=w("");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.fgColor.set(this.mapColor(e.color,t)),this.bgColor.set(this.mapColor(e.bgColor??"grey",t)),this.draw()})}),R(()=>{let e=this.runtime.options()?.displayName;W(()=>{e!==void 0&&this.draw()})})}mapColor(e,t){switch(e){case"contrast":return t.contrast;case"blue":return t.blue;case"green":return t.green;case"pink":return t.pink;case"orange":return t.orange;case"purple":return t.purple;case"grey":return t.grey;case"yellow":return t.yellow;default:return t.contrast}}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.draw()}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(!e)return;this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),e.noBgColor||this.canvas.drawRectangle(this.ctx,0,0,this.canvasElement.width,this.canvasElement.height,this.bgColor());let t=e.displayName||"";this.canvas.drawText(this.ctx,t,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2+10),this.cssWidth-40,this.cssHeight-40,"bold",this.fgColor())}ngOnDestroy(){this.disposed=!0;try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Qp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"label-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.label-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}"]})}return n})();var $p=["plainIframe"];function Zp(n,o){if(n&1&&H(0,"iframe",1,0),n&2){let e=I();Pi("src",e.widgetUrl(),pa)}}function Xp(n,o){n&1&&(_(0,"div",2)(1,"h2"),m(2,"Empty or bad URL"),k(),_(3,"p"),m(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),k(),_(5,"p"),m(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),k()())}var xd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);_dashboard=A(wt);_sanitizer=A(Za);static DEFAULT_CONFIG={widgetUrl:null,allowInput:!1};iframe=ie.required("plainIframe");widgetUrl=w(null);displayTransparentOverlay=w("block");constructor(){R(()=>{let e=this.runtime.options(),t=this._dashboard.isDashboardStatic();e&&W(()=>{t?this.displayTransparentOverlay.set(e.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}),R(()=>{let e=this.runtime.options()?.widgetUrl;this.widgetUrl.set(this.resolveUrl(e))}),window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){if(this.iframe()){this.iframe().nativeElement.onload=()=>this.injectSwipeScript();try{let e=this.iframe().nativeElement.contentDocument;e&&(e.readyState==="complete"||e.readyState==="interactive")&&this.injectSwipeScript()}catch{}}}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this.iframe()&&(this.iframe().nativeElement.onload=null);try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.id()}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}handleIframeGesture=e=>{if(!e.data)return;let t=e.data?.eventData?.instanceId||e.data?.keyEventData?.instanceId;if(!(!t||t!==this.id())){if(e.data.gesture)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let i=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(i);break}case"swiperight":{let i=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(i);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData){let{key:i,ctrlKey:a,shiftKey:r}=e.data.keyEventData,s=new KeyboardEvent("keydown",{key:i,ctrlKey:a,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(s)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[WidgetIframe] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.id()}`;if(t.getElementById(i))return;let a=go({instanceId:this.id()}),r=t.createElement("script");r.id=i,r.textContent=a,t.body.appendChild(r)}catch(i){console.warn("[WidgetIframe] Failed to inject swipe script into iframe:",i)}}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&te(i.iframe,$p,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:3,consts:[["plainIframe",""],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(G(0,Zp,2,1,"iframe",1)(1,Xp,7,0,"div",2),H(2,"div",3)),t&2&&(F(i.widgetUrl()?0:1),g(2),re("display",i.displayTransparentOverlay()))},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 n})();var Kp=["hWrapper"];function Jp(n){return{Red:n.ColorDef.RED,Green:n.ColorDef.GREEN,Blue:n.ColorDef.BLUE,Orange:n.ColorDef.ORANGE,Yellow:n.ColorDef.YELLOW,Cyan:n.ColorDef.CYAN,Magenta:n.ColorDef.MAGENTA,White:n.ColorDef.WHITE,Gray:n.ColorDef.GRAY,Black:n.ColorDef.BLACK,Raith:n.ColorDef.RAITH,"Green LCD":n.ColorDef.GREEN_LCD,"JUG Green":n.ColorDef.JUG_GREEN}}function eg(n){return{blackMetal:n.FrameDesign.BLACK_METAL,metal:n.FrameDesign.METAL,shinyMetal:n.FrameDesign.SHINY_METAL,brass:n.FrameDesign.BRASS,steel:n.FrameDesign.STEEL,chrome:n.FrameDesign.CHROME,gold:n.FrameDesign.GOLD,anthracite:n.FrameDesign.ANTHRACITE,tiltedGray:n.FrameDesign.TILTED_GRAY,tiltedBlack:n.FrameDesign.TILTED_BLACK,glossyMetal:n.FrameDesign.GLOSSY_METAL}}var _d=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={displayName:"Horizon",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};wrapperRef=ie("hWrapper");resizeObserver=null;currentSize=0;structuralKey="";pendingSize=null;sizeCommitTimer=null;SIZE_STABLE_MS=180;ngZone=A(Ge);gaugeOptions={};gauge=null;latestPitch=0;latestRoll=0;constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugePitchPath?.path||W(()=>this.streams.observe("gaugePitchPath",i=>{let a=i?.data?.value??0;if(this.latestPitch=a,this.gauge){let r=e.gauge?.invertPitch?-a:a;try{this.gauge.setPitchAnimated(r)}catch{}}}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugeRollPath?.path||W(()=>this.streams.observe("gaugeRollPath",i=>{let a=i?.data?.value??0;if(this.latestRoll=a,this.gauge){let r=e.gauge?.invertRoll?-a:a;try{this.gauge.setRollAnimated(r)}catch{}}}))}),R(()=>{let e=this.runtime.options();if(!e)return;let t=`${e.gauge?.noFrameVisible??!1}|${e.gauge?.faceColor??"anthracite"}`;if(t===this.structuralKey){this.applyInversions(e);return}this.structuralKey=t,this.currentSize>=50&&(this.buildOptions(e,this.currentSize),this.rebuildGauge())})}ngAfterViewInit(){let e=this.wrapperRef()?.nativeElement;if(!e)return;let t=()=>{if(this.pendingSize==null||this.pendingSize===this.currentSize||this.pendingSize<50)return;let r=this.pendingSize,s=this.runtime.options();if(!s)return;this.currentSize=r;let h=document.getElementById(this.id()+"-canvas");h&&((h.width!==r||h.height!==r)&&(h.width=r,h.height=r),h.style.width=r+"px",h.style.height=r+"px"),this.buildOptions(s,r),this.rebuildGauge(),this.pendingSize=null},i=()=>{this.sizeCommitTimer&&clearTimeout(this.sizeCommitTimer),this.sizeCommitTimer=window.setTimeout(()=>{t(),this.sizeCommitTimer=null},this.SIZE_STABLE_MS)},a=()=>{let r=e.getBoundingClientRect(),s=Math.round(Math.min(r.width,r.height)),h=this.pendingSize??this.currentSize;if(!s||s<50||h&&Math.abs(h-s)<4)return;if(this.currentSize===0&&this.pendingSize===null){this.pendingSize=s,t();return}this.pendingSize=s;let f=document.getElementById(this.id()+"-canvas");f&&(f.style.width=s+"px",f.style.height=s+"px"),i()};this.ngZone.runOutsideAngular(()=>{this.resizeObserver=new ResizeObserver(()=>a()),this.resizeObserver.observe(e),a()})}buildOptions(e,t){if(typeof steelseries>"u")return;let i=eg(steelseries),a=Jp(steelseries);this.gaugeOptions={pointerColor:a.Red,frameVisible:!(e.gauge?.noFrameVisible??!1),frameDesign:i[e.gauge?.faceColor??"anthracite"],foregroundVisible:!1,size:t}}rebuildGauge(){let e=this.id()+"-canvas";if(this.gauge)try{this.gauge=null}catch{}let t=document.getElementById(e);if(t){this.currentSize&&(t.width!==this.currentSize||t.height!==this.currentSize)&&(t.width=this.currentSize,t.height=this.currentSize);let i=t.getContext("2d");i&&i.clearRect(0,0,t.width,t.height)}try{this.gauge=new steelseries.Horizon(e,this.gaugeOptions);let i=this.runtime.options();i&&this.gauge&&this.applyInversions(i)}catch{}}applyInversions(e){if(this.gauge){try{this.gauge.setPitchAnimated(e.gauge?.invertPitch?-this.latestPitch:this.latestPitch)}catch{}try{this.gauge.setRollAnimated(e.gauge?.invertRoll?-this.latestRoll:this.latestRoll)}catch{}}}ngOnDestroy(){if(this.resizeObserver){try{this.resizeObserver.disconnect()}catch{}this.resizeObserver=null}this.sizeCommitTimer&&(clearTimeout(this.sizeCommitTimer),this.sizeCommitTimer=null);let e=document.getElementById(this.id()+"-canvas");if(e)try{let t=e.getContext("2d");t&&t.clearRect(0,0,e.width,e.height),e.width=0,e.height=0}catch{}this.gauge=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-horizon"]],viewQuery:function(t,i){t&1&&te(i.wrapperRef,Kp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:4,vars:3,consts:[["hWrapper",""],[1,"canvas-wrap"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(_(0,"div",1,0)(2,"canvas",2),m(3," Browser does not support canvas element. "),k()()),t&2&&(re("padding",i.gaugeOptions.frameVisible?"10px":"0px"),g(2),Pi("id",i.id()+"-canvas"))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:static;transform:none}"]})}return n})();var tg=["finePath"],ig=["coarsePath"];function ng(n,o){if(n&1&&(K(),H(0,"line")),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function ag(n,o){if(n&1&&(K(),H(0,"line",20)),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function og(n,o){if(n&1&&(K(),_(0,"text"),m(1),k()),n&2){let e=o.$implicit;Y("x",e.x)("y",e.y),g(),ye("",e.text,"\xB0")}}function rg(n,o){if(n&1&&(K(),H(0,"line")),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function sg(n,o){if(n&1&&(K(),H(0,"line",20)),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function lg(n,o){if(n&1&&(K(),_(0,"text"),m(1),k()),n&2){let e=o.$implicit;Y("x",e.x)("y",e.y),g(),ye("",e.text,"\xB0")}}var Md=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);ngZone=A(Ge);finePathRef=ie("finePath");coarsePathRef=ie("coarsePath");angleDeg=w(0);absAngle=se(()=>{let e=this.angleDeg();return e==null?null:Math.abs(e)});angleSide=se(()=>{let e=this.angleDeg();if(e==null)return"";let t=e>0?"Stbd":e<0?"Port":"Level";return this.runtime.options()?.gauge?.sideLabel?t:""});displayValue=se(()=>{let e=this.absAngle();if(e==null)return"--";let t=this.runtime.options()?.numDecimal??1;return e.toFixed(t)});themeColorValue=w("contrast");ready=w(!1);pointerTransition=se(()=>{let e=this.runtime.options()?.paths?.angle?.sampleTime??1e3;return`transform ${Math.max(100,e*.95)}ms ease-in-out`});fineTicks=w([]);fineInnerTicks=w([]);fineLabels=w([]);coarseTicks=w([]);coarseInnerTicks=w([]);coarseLabels=w([]);finePointerTransform=this.makePointerTransform("fine");coarsePointerTransform=this.makePointerTransform("coarse");displayName=se(()=>this.runtime.options()?.displayName||"Heel");static DEFAULT_CONFIG={displayName:"Heel",filterSelfPaths:!0,paths:{angle:{description:"Heel / Roll / Other Angle",path:"self.navigation.attitude.roll",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"deg",sampleTime:1e3,pathRequired:!0}},gauge:{type:"angle",invertAngle:!1,sideLabel:!0},numInt:2,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5};constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.angle?.path||W(()=>this.streams.observe("angle",i=>{let a=i?.data?.value;if(a==null){this.angleDeg.set(null);return}let r=e.gauge?.invertAngle?-a:a;this.angleDeg.set(r)}))}),R(()=>{let e=this.theme(),t=this.runtime.options();!e||!t||this.themeColorValue.set(Se(t.color||"contrast",e).color)})}ngAfterViewInit(){this.ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{let e=this.finePathRef()?.nativeElement,t=this.coarsePathRef()?.nativeElement;if(e){let i=this.buildScale(e,-5,5,1,.5);this.fineTicks.set(i.ticks),this.fineInnerTicks.set(i.innerTicks),this.fineLabels.set(i.labels)}if(t){let i=this.buildScale(t,-40,40,10,5);this.coarseTicks.set(i.ticks),this.coarseInnerTicks.set(i.innerTicks),this.coarseLabels.set(i.labels)}this.angleDeg()==null&&this.angleDeg.set(0),this.ready.set(!0)})})}makePointerTransform(e){return se(()=>this.computePointerTransform(this.angleDeg(),e))}setColors(e){let t=this.runtime.options();!e||!t||this.themeColorValue.set(Se(t.color||"contrast",e).color)}computePointerTransform(e,t){let i=e??0,a=t==="fine"?this.finePathRef()?.nativeElement:this.coarsePathRef()?.nativeElement;if(!a)return t==="fine"?"translate(200px, 20px) rotate(0deg)":"translate(200px, 10px) rotate(0deg)";let r=t==="fine"?{min:-5,max:5}:{min:-40,max:40},s=Math.max(r.min,Math.min(r.max,i)),h=a.getTotalLength(),b=(s-r.min)/(r.max-r.min)*h,C=a.getPointAtLength(b),M=b<10||b>h-10?5:1,V=a.getPointAtLength(Math.max(0,b-M)),D=a.getPointAtLength(Math.min(h,b+M)),j=D.x-V.x,X=D.y-V.y,Z=Math.atan2(X,j)*180/Math.PI,ee=Math.hypot(j,X)||1,be=-X/ee,Oe=j/ee,Te=-10,Ye=C.x+be*Te,Ee=C.y+Oe*Te;return`translate(${Ye}px, ${Ee}px) rotate(${Z}deg)`}buildScale(e,t,i,a,r){let s=e.getTotalLength(),h=[],f=[],b=[],C=i-t,M=Math.round(C/r),V=Math.round(a/r);for(let D=0;D<=M;D++){let j=t+D*r,X=D/M,Z=D===M?s:X*s,ee=e.getPointAtLength(Z),be=e.getPointAtLength(Math.max(0,Z-1)),Oe=e.getPointAtLength(Math.min(s,Z+1)),Te=Math.atan2(Oe.y-be.y,Oe.x-be.x)*180/Math.PI,Ye=D%V===0||Math.abs(j)<1e-9,Ee=Ye?8:4,We=Ye?6:3,pe=this.pointFromAngle(ee,Te+90,0),He=this.pointFromAngle(ee,Te+90,Ee);h.push({x1:pe.x,y1:pe.y,x2:He.x,y2:He.y,major:Ye});let bt=this.pointFromAngle(ee,Te-90,0),tt=this.pointFromAngle(ee,Te-90,We);if(f.push({x1:bt.x,y1:bt.y,x2:tt.x,y2:tt.y,major:Ye}),Ye){let ot=this.pointFromAngle(ee,Te+90,Ee+8);b.push({x:ot.x,y:ot.y,text:`${Math.abs(j)}`,value:j})}}return{ticks:h,innerTicks:f,labels:b}}pointFromAngle(e,t,i){let a=t*Math.PI/180;return{x:e.x+Math.cos(a)*i,y:e.y+Math.sin(a)*i}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-heel-gauge"]],viewQuery:function(t,i){t&1&&(te(i.finePathRef,tg,5),te(i.coarsePathRef,ig,5)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:54,vars:18,consts:[["finePath",""],["coarsePath",""],[1,"container"],["viewBox","0 0 400 105","preserveAspectRatio","xMidYMid meet",1,"flex-element","scale","fine"],["id","fineTubeGradient","x1","0%","y1","0%","x2","0%","y2","100%"],["offset","0%",1,"tube-highlight-color","opacity1"],["offset","45%",1,"tube-highlight-color","opacity2"],["offset","100%",1,"tube-highlight-color","opacity3"],["id","tubeEffect"],["in","SourceAlpha","stdDeviation","1.5","result","blur"],["in","blur","surfaceScale","4","specularConstant",".6","specularExponent","30","lighting-color","currentColor","result","specular"],["x","200","y","-50","z","150"],["x","200","y","150","z","80"],["in","specular","in2","SourceAlpha","operator","in","result","specular"],["in","SourceGraphic","in2","specular","operator","arithmetic","k1","0","k2","1","k3","0.7","k4","0"],["d","M 60,10 A 2400,2400 0 0,0 340,10 A 10,10 0 0,1 340,30 A 2400,2400 0 0,1 60,30 A 10,10 0 0,1 60,10 Z",1,"tube-background"],["d","M 60,11 A 2400,2400 0 0,0 340,11 A 8,8 0 0,1 340,17 A 2400,2400 0 0,1 60,17 A 8,8 0 0,1 60,11 Z",1,"tube-highlight"],["d","M 60,23 A 2400,2400 0 0,0 340,23 A 8,8 0 0,1 340,26 A 2400,2400 0 0,1 60,26 A 8,8 0 0,1 60,23 Z",1,"tube-highlight-secondary"],["d","M 60,30 A 2400,2400 0 0,0 340,30",1,"scale-line"],[1,"tick-marks"],["opacity","0.6"],[1,"scale-values"],["transform","translate(200 20) rotate(0)",1,"pointer"],["rx","6","ry","9"],["x","200","y","93","text-anchor","middle",1,"brand"],["viewBox","0 0 400 115","preserveAspectRatio","xMidYMid meet",1,"flex-element","scale"],["transform","translate(0,15)"],["x","200","y","22","text-anchor","middle",1,"angle"],["dx","-16",1,"side"],["d","M 40,0 A 400,400 0 0,0 360,0 A 10,10 0 0,1 360,20 A 400,400 0 0,1 40,20 A 10,10 0 0,1 40,0 Z",1,"tube-background"],["d","M 40,1 A 400,400 0 0,0 360,1 A 8,8 0 0,1 360,7 A 400,400 0 0,1 40,7 A 8,8 0 0,1 40,1 Z",1,"tube-highlight"],["d","M 40,13 A 400,400 0 0,0 360,13 A 8,8 0 0,1 360,16 A 400,400 0 0,1 40,16 A 8,8 0 0,1 40,13 Z",1,"tube-highlight-secondary"],["d","M 40,20 A 400,400 0 0,0 360,20",1,"scale-line"],["transform","translate(200 10) rotate(0)",1,"pointer"]],template:function(t,i){t&1&&(_(0,"div",2),K(),_(1,"svg",3)(2,"defs")(3,"linearGradient",4),H(4,"stop",5)(5,"stop",6)(6,"stop",7),k(),_(7,"filter",8),H(8,"feGaussianBlur",9),_(9,"feSpecularLighting",10),H(10,"fePointLight",11)(11,"fePointLight",12),k(),H(12,"feComposite",13)(13,"feComposite",14),k()(),H(14,"path",15)(15,"path",16)(16,"path",17)(17,"path",18,0),_(19,"g",19),ue(20,ng,1,5,":svg:line",null,Me),k(),_(22,"g",19),ue(23,ag,1,5,":svg:line",20,Me),k(),_(25,"g",21),ue(26,og,2,3,":svg:text",null,Me),k(),_(28,"g",22),H(29,"ellipse",23),k(),_(30,"text",24),m(31),k()(),_(32,"svg",25)(33,"g",26)(34,"text",27),m(35),_(36,"tspan",28),m(37),k()(),H(38,"path",29)(39,"path",30)(40,"path",31)(41,"path",32,1),_(43,"g",19),ue(44,rg,1,5,":svg:line",null,Me),k(),_(46,"g",19),ue(47,sg,1,5,":svg:line",20,Me),k(),_(49,"g",21),ue(50,lg,2,3,":svg:text",null,Me),k(),_(52,"g",33),H(53,"ellipse",23),k()()()()),t&2&&(g(20),he(i.fineTicks()),g(3),he(i.fineInnerTicks()),g(3),he(i.fineLabels()),g(2),re("transition",i.ready()?i.pointerTransition():"none")("transform",i.finePointerTransform()),Je("ready",i.ready()),g(),Y("fill",i.themeColorValue()),g(2),ne(i.displayName()),g(3),Y("fill",i.themeColorValue()),g(),ye(" ",i.displayValue(),"\xB0 "),g(2),ne(i.angleSide()),g(7),he(i.coarseTicks()),g(3),he(i.coarseInnerTicks()),g(3),he(i.coarseLabels()),g(2),re("transition",i.ready()?i.pointerTransition():"none")("transform",i.coarsePointerTransform()),Je("ready",i.ready()),g(),Y("fill",i.themeColorValue()))},styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;font-family:Roboto}.container[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:center;height:100%;width:100%;box-sizing:border-box;gap:0px}.brand[_ngcontent-%COMP%]{font-size:25px;font-weight:700;fill:var(--kip-contrast-dim-color)}.angle[_ngcontent-%COMP%]{font-size:50px;font-weight:700}.side[_ngcontent-%COMP%]{font-size:16px}svg.scale[_ngcontent-%COMP%]{width:100%;height:auto}svg.scale[_ngcontent-%COMP%] .tube-background[_ngcontent-%COMP%]{fill:var(--mat-sys-surface-container);filter:url(#tubeEffect)}svg.scale[_ngcontent-%COMP%] .tube-highlight[_ngcontent-%COMP%]{fill:url(#fineTubeGradient);opacity:.15;mix-blend-mode:soft-light;transition:fill .3s ease,opacity .3s ease}svg.scale[_ngcontent-%COMP%] .tube-highlight-secondary[_ngcontent-%COMP%]{fill:url(#fineTubeGradient);opacity:.2;mix-blend-mode:overlay;transition:fill .3s ease,opacity .3s ease}.tube-highlight-color[_ngcontent-%COMP%]{stop-color:var(--kip-contrast-color)}.opacity1[_ngcontent-%COMP%]{stop-opacity:.12}.opacity2[_ngcontent-%COMP%]{stop-opacity:.05}.opacity3[_ngcontent-%COMP%]{stop-opacity:0}svg.scale[_ngcontent-%COMP%] .scale-line[_ngcontent-%COMP%]{stroke:none;fill:none}.tick-marks[_ngcontent-%COMP%]{stroke:var(--kip-contrast-dim-color)}.scale-values[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);text-anchor:middle;dominant-baseline:hanging;font-size:12;font-weight:700}.pointer[_ngcontent-%COMP%] ellipse[_ngcontent-%COMP%]{stroke:#ffffff59;stroke-width:.7;paint-order:stroke fill;filter:drop-shadow(0 0 1px rgba(0,0,0,.55)) drop-shadow(0 1px 1.5px rgba(0,0,0,.55)) drop-shadow(0 -1px 1px rgba(255,255,255,.25));transition:filter .25s,stroke .25s}"]})}return n})();var dg=["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 dr={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},cr={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},kd=(()=>{class n{unitsService=A(at);canvasService=A(je);canvasRef=ie("gaugeCanvas");widgetUUID=v(void 0);subType=v(void 0);barGauge=v(void 0);radialSize=v(void 0);backgroundColor=v(void 0);frameColor=v(void 0);minValue=v(void 0);maxValue=v(void 0);decimals=v(void 0);zones=v(void 0);title=v(void 0);units=v(void 0);value=v(void 0);theme=v(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=[],a=[],r=[...t].sort((s,h)=>s.lower-h.lower);for(let s of r){let h=null,f=null,b;switch(s.state){case ce.Emergency:b=this.theme().zoneEmergency;break;case ce.Alarm:b=this.theme().zoneAlarm;break;case ce.Warn:b=this.theme().zoneWarn;break;case ce.Alert:b=this.theme().zoneAlert;break;case ce.Nominal:b=this.theme().zoneNominal;break;default:b="rgba(0,0,0,0)"}let C=this.units();if(C=="ratio"?(h=s.lower,f=s.upper):(h=this.unitsService.convertToUnit(C,s.lower),f=this.unitsService.convertToUnit(C,s.upper)),!(f<this.minValue()||h>this.maxValue())){if(h=h!==null?h:this.minValue(),f=f!==null?f:this.maxValue(),h=Math.max(h,this.minValue()),f>this.maxValue()){f=this.maxValue(),i.push(steelseries.Section(h,f,b));break}i.push(steelseries.Section(h,f,b))}}this.gaugeOptions.section=i,this.gaugeOptions.area=a,this.gaugeOptions.useSectionColors=!0}dr[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=dr[this.backgroundColor()]),cr[this.frameColor()]&&(this.gaugeOptions.frameDesign=cr[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 a=this.subType();a==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):a==="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.floor(Math.min(e.contentRect.height,e.contentRect.width));this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),a=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=a,t=`linear:${i}x${a}`}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(dr[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(cr[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(){if(this.gauge&&this.gauge.setValue){let t=this.gauge.getValue?this.gauge.getValue():this.value();this.gauge.setValue(t)}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||n)};static \u0275cmp=L({type:n,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,dg,5),t&2&&me()},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:[Yt],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1),B("onResize",function(s){return q(a),z(i.onResized(s))}),d(1,"canvas",2,0),m(3," Browser does not support canvas element. "),u()()}t&2&&(g(),T("id",di(i.widgetUUID())))},dependencies:[Pt,ni],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return n})();var Td=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(ai);static DEFAULT_CONFIG={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};dataValue=w(0);zones=w([]);displayName=se(()=>this.runtime.options()?.displayName||"Gauge Label");constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",i=>{let a=i?.data?.value,r=e.displayScale?.lower??0,s=e.displayScale?.upper??r+100;if(a==null)this.dataValue.set(r);else{let h=Math.min(Math.max(a,r),s);this.dataValue.set(h)}}))}),R(()=>{let e=this.runtime.options();if(!e)return;if(e.ignoreZones){this.zones.set([]);return}if(!e.paths?.gaugePath?.path){this.zones.set([]);return}W(()=>this.metadata.observe("gaugePath")),this.zones.set(this.metadata.zones())})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-steel"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:14,consts:[[1,"wrapper"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){if(t&1&&(d(0,"div",0),U(1,"gauge-steel",1),u()),t&2){let a,r,s,h,f,b,C,M,V;g(),T("widgetUUID",i.id())("subType",(a=i.runtime.options())==null||a.gauge==null?null:a.gauge.subType)("barGauge",(r=i.runtime.options())==null||r.gauge==null?null:r.gauge.digitalMeter)("radialSize",(s=i.runtime.options())==null||s.gauge==null?null:s.gauge.radialSize)("backgroundColor",(h=i.runtime.options())==null||h.gauge==null?null:h.gauge.backgroundColor)("frameColor",(f=i.runtime.options())==null||f.gauge==null?null:f.gauge.faceColor)("minValue",(b=i.runtime.options())==null||b.displayScale==null?null:b.displayScale.lower)("maxValue",(C=i.runtime.options())==null||C.displayScale==null?null:C.displayScale.upper)("decimals",(M=i.runtime.options())==null?null:M.numDecimal)("zones",i.zones())("title",i.displayName())("units",(V=i.runtime.options())==null||V.paths==null||V.paths.gaugePath==null?null:V.paths.gaugePath.convertUnitTo)("value",i.dataValue())("themeColors",i.theme())}},dependencies:[kd],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 n})();var en=Zr(mr(),1),Id=Zr(mr(),1);var cg=["gauge"],mg=n=>n.replace(/(\-\w)/g,o=>o[1].toUpperCase()),ug=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ed=n=>mg(n),Dd=(()=>{class n{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=Ed(t.name);e[i]=en.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=en.DomObserver.parse(i);else{let a=ug(t);this.el.nativeElement.setAttribute(a,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[Ed(i.attributeName)]=en.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||n)(li(Ie),li(Ge))};static \u0275dir=st({type:n,viewQuery:function(t,i){if(t&1&&Qt(cg,7),t&2){let a;Ct(a=St())&&(i.canvas=a.first)}},inputs:{options:"options",value:"value"}})}return n})();var Pd=(()=>{class n extends Dd{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new en.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(li(Ie),li(Ge))};static \u0275cmp=L({type:n,selectors:[["linear-gauge"]],features:[ga],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&U(0,"canvas",null,0)},encapsulation:2})}return n})();var Do=(()=>{class n extends Dd{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new en.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(li(Ie),li(Ge))};static \u0275cmp=L({type:n,selectors:[["radial-gauge"]],features:[ga],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&U(0,"canvas",null,0)},encapsulation:2})}return n})(),ia=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({})}return n})();function Po(n,o,e=!1){let t=[],i=o-n,a=0,r=10;i=Od(o-n,!1),a=Od(i/(r-1),!0);let s=Math.floor(n/a)*a,h=Math.ceil(o/a)*a;t.push(s);let f=i/a;for(let b=0;b<f;b++)if(t[b]<h){let C=(Number(t[b].toFixed(2))*100+Number(a.toFixed(2))*100)/100;t.push(C)}if(t[t.length-1]!==h&&t.push(h),e){let b=[...t].reverse();return{min:s,max:h,majorTicks:b}}return{min:s,max:h,majorTicks:t}}function Od(n,o){let e=Math.floor(Math.log10(n)),t=n/Math.pow(10,e),i=null;return o?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)}var Rd=["radialGauge"],Nd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(ai);unitsService=A(at);static DEFAULT_CONFIG={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",highlightsWidth:5,scaleStart:180,barStartPosition:"left",enableTicks:!0,enableProgressbar:!0,enableNeedle:!0},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1};LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=ie("radialGauge");gauge=ie("radialGauge",{read:Ie});value=w(0);textValue=w("");colorStrokeTicks=w("");adjustedScale=se(()=>{let e=this.runtime.options();return e?e.gauge?.subType==="capacity"?{min:e.displayScale?.lower??0,max:e.displayScale?.upper??100,majorTicks:[]}:Po(e.displayScale?.lower??0,e.displayScale?.upper??100,e.gauge?.barStartPosition==="right"):{min:0,max:100,majorTicks:[]}});highlights=se(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return[];if(e.ignoreZones)return[];if(e.gauge?.subType!=="measuring")return[];let i=this.metadata.zones();if(!i?.length)return[];let a=e.paths?.gaugePath;if(!a)return[];let r=this.adjustedScale(),s=e.gauge?.barStartPosition==="right";return this.state=ce.Normal,ta(i,t,a.convertUnitTo,this.unitsService,r.min,r.max,s)});displayName=se(()=>this.runtime.options()?.displayName);state=ce.Normal;viewReady=w(!1);gaugeOptions={};constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(e.displayScale?.lower??0),this.textValue.set("--");else{let h=e.displayScale?.lower??0,f=e.displayScale?.upper??h+100,b=Math.min(Math.max(r,h),f);this.value.set(b),this.textValue()==="--"&&this.textValue.set("")}let s=a?.state??ce.Normal;if(s!==this.state&&(this.state=s,!e.ignoreZones&&this.ngGauge())){let h={};switch(s){case ce.Alarm:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneAlarm,h.colorValueText=t.zoneAlarm;break;case ce.Warn:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneWarn,h.colorValueText=t.zoneWarn;break;case ce.Alert:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneAlert,h.colorValueText=t.zoneAlert;break;default:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=e.gauge?.subType==="measuring"?Se(e.color,t).color:Se(e.color,t).dim,h.colorValueText=Se(e.color,t).color}try{this.ngGauge()?.update(h)}catch{}}}))}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||W(()=>this.metadata.observe("gaugePath"))}),R(()=>{let e=this.runtime.options(),t=this.highlights();if(e&&this.viewReady())try{if(!t.length)this.ngGauge()?.update({highlights:[]});else{let i=JSON.stringify(t);this.ngGauge()?.update({highlights:i,highlightsWidth:e.gauge?.highlightsWidth})}}catch{}}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.adjustedScale();if(!(!e||!t)&&(this.buildGaugeOptions(e,t,i),this.viewReady()))try{this.ngGauge()?.update(this.gaugeOptions)}catch{}})}buildGaugeOptions(e,t,i){let a=this.gaugeOptions={};a.title=this.displayName(),a.minValue=i.min,a.maxValue=i.max,a.units=e.paths?.gaugePath?.convertUnitTo,a.highlights=[];let r=this.highlights();r.length&&(a.highlights=JSON.stringify(r),a.highlightsWidth=e.gauge?.highlightsWidth),a.fontTitle="Roboto",a.fontTitleWeight="bold",a.fontUnits="Roboto",a.fontUnitsSize=25,a.fontUnitsWeight="normal",a.barStrokeWidth=0,a.barShadow=0,a.colorBarStroke="",a.fontValue="Roboto",a.fontValueWeight="bold",a.valueTextShadow=!1,a.colorValueBoxShadow="",a.fontNumbers="Roboto",a.fontNumbersWeight="bold",a.valueInt=e.numInt??1,a.valueDec=e.numDecimal??2,a.majorTicksInt=a.valueInt,a.majorTicksDec=a.valueDec,a.highlightsWidth=e.gauge?.highlightsWidth,a.animation=!0,a.animateOnInit=!1,a.animatedValue=!1,a.animationRule="linear";let s=e.paths?.gaugePath?.sampleTime??500;a.animationDuration=s-25,a.colorBorderShadow=!1,a.colorBorderOuter=t.cardColor,a.colorBorderOuterEnd="",a.colorBorderMiddle=t.cardColor,a.colorBorderMiddleEnd="",a.colorPlate=a.colorPlateEnd=t.cardColor,a.colorBar=t.background,a.barProgress=e.gauge?.enableProgressbar,a.colorBarProgress=Se(e.color,t).color,a.colorNeedle=Se(e.color,t).color,a.colorNeedleEnd=Se(e.color,t).color,a.needleShadow=!0,a.colorNeedleShadowUp="black",a.colorNeedleShadowDown="black",a.colorNeedleCircleInner=a.colorPlate,a.colorNeedleCircleInnerEnd=a.colorPlate,a.colorNeedleCircleOuter=a.colorPlate,a.colorNeedleCircleOuterEnd=a.colorPlate,a.colorTitle=t.contrastDim,a.colorUnits=t.contrastDim,a.colorValueText=Se(e.color,t).color,this.colorStrokeTicks.set(t.contrastDim),a.colorMinorTicks=t.contrastDim,a.animationTarget=this.ANIMATION_TARGET_NEEDLE,a.useMinPath=!1,e.gauge?.subType==="capacity"?(a.fontTitleSize=40,a.valueBox=!0,a.fontValueSize=60,a.valueBoxWidth=10,a.valueBoxBorderRadius=5,a.valueBoxStroke=0,a.colorValueBoxBackground="",a.colorMajorTicks=a.colorPlate,a.colorNumbers=a.colorMinorTicks="",a.barWidth=20,a.colorBarProgress=Se(e.color,t).dim,a.needle=e.gauge.enableNeedle,a.needleType=this.LINE,a.needleWidth=2,a.needleStart=75,a.needleEnd=95,a.needleCircleSize=1,a.needleCircleInner=!1,a.needleCircleOuter=!1,a.ticksAngle=360,a.startAngle=e.gauge?.scaleStart||180,a.majorTicks=0,a.exactTicks=!0,a.strokeTicks=!1,a.minorTicks=0,a.numbersMargin=0,a.fontNumbersSize=0,a.borders=!0,a.borderOuterWidth=2,a.borderMiddleWidth=1,a.borderInnerWidth=0,a.borderShadowWidth=0):(a.fontTitleSize=24,a.barWidth=15,a.valueBox=!0,a.fontValueSize=60,a.valueBoxWidth=100,a.valueBoxBorderRadius=0,a.valueBoxStroke=0,a.colorValueBoxBackground="",a.needle=e.gauge.enableNeedle,a.needleType=this.LINE,a.needleWidth=2,a.needleStart=0,a.needleEnd=95,a.needleCircleSize=10,a.needleCircleInner=!1,a.needleCircleOuter=!1,a.ticksAngle=270,a.startAngle=45,a.barStartPosition=e.gauge?.barStartPosition||"left",e.gauge.enableTicks?(a.strokeTicks=!0,a.majorTicks=i.majorTicks,a.minorTicks=2,a.exactTicks=!1,a.numbersMargin=3,a.fontNumbersSize=15,a.colorMajorTicks=t.contrastDim,a.colorNumbers=t.contrastDim):(a.strokeTicks=!1,a.majorTicks=0,a.minorTicks=0,a.exactTicks=!0,a.numbersMargin=0,a.fontNumbersSize=0,a.colorMajorTicks=a.colorPlate,a.colorNumbers=a.colorMinorTicks=""),a.borders=!0,a.borderOuterWidth=2,a.borderMiddleWidth=1,a.borderInnerWidth=0,a.borderShadowWidth=0,a.animationTarget=this.ANIMATION_TARGET_NEEDLE,a.useMinPath=!1)}setCanvasSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i={height:t.height,width:t.width};try{this.ngGauge()?.update(i)}catch{}}ngAfterViewInit(){this.viewReady.set(!0),this.setCanvasSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}onResized(e){let t={height:e.contentRect.height,width:e.contentRect.width};try{this.ngGauge()?.update(t)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Rd,5),te(i.gauge,Rd,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:3,consts:[["radialGauge",""],[3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"radial-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue()))},dependencies:[Pt,ni,ia,Do],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%} 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 n})();var Vd=["linearGauge"],Wd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(ai);unitsService=A(at);static DEFAULT_CONFIG={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",highlightsWidth:5,enableTicks:!0,enableNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1};ngGauge=ie("linearGauge");gauge=ie("linearGauge",{read:Ie});textValue=w("--");value=w(0);gaugeOptions={};viewReady=w(!1);currentState=w(ce.Normal);adjustedScale=se(()=>{let e=this.runtime.options();return e?e.gauge?.enableTicks?Po(e.displayScale.lower,e.displayScale.upper):{min:e.displayScale.lower,max:e.displayScale.upper,majorTicks:[]}:{min:0,max:100,majorTicks:[]}});highlights=se(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return[];if(e.ignoreZones)return[];let i=this.metadata.zones();if(!i?.length)return[];let a=e.paths?.gaugePath;return a?ta(i,t,a.convertUnitTo,this.unitsService,this.adjustedScale().min,this.adjustedScale().max):[]});displayName=se(()=>this.runtime.options()?.displayName||"Gauge Label");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(e.displayScale.lower),this.textValue.set("--");else{let s=Math.min(Math.max(r,e.displayScale.lower),e.displayScale.upper);this.value.set(s),this.textValue()==="--"&&this.textValue.set("")}a.state!==this.currentState()&&this.currentState.set(a.state)}))}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||W(()=>this.metadata.observe("gaugePath"))}),R(()=>{let e=this.runtime.options(),t=this.highlights();e&&this.viewReady()&&W(()=>{try{if(!t.length)this.ngGauge()?.update({highlights:[]});else{let i=JSON.stringify(t);this.ngGauge()?.update({highlights:i,highlightsWidth:e.gauge?.highlightsWidth})}}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.adjustedScale();!e||!t||W(()=>{if(this.buildGaugeOptions(e,t,i),this.viewReady())try{this.ngGauge()?.update(this.gaugeOptions),this.applyInitialSize()}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.currentState();!e||!t||e.ignoreZones||this.viewReady()&&W(()=>{let a={},r=e.gauge?.enableNeedle,s=Se(e.color,t);switch(i){case ce.Alarm:r?(a.colorNeedle=t.zoneAlarm,a.colorValueText=t.zoneAlarm):(a.colorBarProgress=t.zoneAlarm,a.colorValueText=t.zoneAlarm);break;case ce.Warn:r?(a.colorNeedle=t.zoneWarn,a.colorValueText=t.zoneWarn):(a.colorBarProgress=t.zoneWarn,a.colorValueText=t.zoneWarn);break;case ce.Alert:r?(a.colorNeedle=t.zoneAlert,a.colorValueText=t.zoneAlert):(a.colorBarProgress=t.zoneAlert,a.colorValueText=t.zoneAlert);break;default:r?(a.colorNeedle=s.color,a.colorValueText=s.color):(a.colorBarProgress=s.color,a.colorValueText=s.color)}try{this.ngGauge()?.update(a)}catch{}})})}buildGaugeOptions(e,t,i){let a=this.gaugeOptions={},r=e.gauge?.subType==="vertical",s=e.gauge?.enableNeedle,h=e.gauge?.enableTicks;a.minValue=i.min,a.maxValue=i.max,a.valueInt=e.numInt??1,a.valueDec=e.numDecimal??2,a.title=this.displayName(),a.fontTitleSize=40,a.fontTitle="Roboto",a.fontTitleWeight="bold",a.barLength=r?80:90,a.barWidth=h?s?0:30:60,a.barProgress=!0,a.barBeginCircle=0,a.barStrokeWidth=0,a.barShadow=0,a.needle=!!s,a.needleType=s?"arrow":"line",a.needleStart=s?r?200:155:-45,a.needleEnd=s?r?175:180:55,a.needleShadow=!0,a.needleSide="both",a.units=e.paths?.gaugePath?.convertUnitTo,a.fontUnits="Roboto",a.fontUnitsWeight="normal",a.borders=!1,a.borderOuterWidth=0,a.borderMiddleWidth=0,a.borderInnerWidth=0,a.borderShadowWidth=0,a.borderRadius=0,a.valueBox=!0,a.valueBoxWidth=35,a.valueBoxStroke=0,a.valueBoxBorderRadius=10,a.colorValueBoxRect="",a.colorValueBoxRectEnd="",a.colorValueBoxShadow="",a.fontValueSize=50,a.fontValue="Roboto",a.fontValueWeight="bold",a.valueTextShadow=!1,a.fontNumbers="Roboto",a.fontNumbersWeight="normal",a.fontUnitsSize=r?40:35,a.colorTitle=Se("contrast",t).dim,a.colorUnits=Se("contrast",t).dim,a.colorValueBoxBackground=t.background;let f=Se(e.color,t);a.colorValueText=f.color,s?(a.colorNeedle=f.color,a.colorNeedleEnd=f.color,a.needleWidth=45,a.colorNeedleShadowUp=f.color,a.colorNeedleShadowDown=f.color):(a.colorBarProgress=f.color,a.colorBarProgressEnd="",a.needleWidth=0),a.colorPlate=t.cardColor,a.colorBar=t.background,a.colorBarEnd="",a.colorBarStroke="0",a.colorMajorTicks=Se("contrast",t).dim,a.colorMinorTicks=Se("contrast",t).dim,a.colorNumbers=Se("contrast",t).dim,a.majorTicks=h?i.majorTicks:[],a.majorTicksInt=e.numInt??1,a.majorTicksDec=e.numDecimal??2,a.strokeTicks=!!h,a.minorTicks=h?2:0,a.ticksWidthMinor=h?6:0,a.numberSide=s?"right":"left",a.fontNumbersSize=h?r?22:30:0,a.numbersMargin=r?s?-7:-3:s?-33:-5,a.ticksWidth=h?s&&r?15:10:0,a.ticksPadding=h?r?s?0:5:s?9:8:0,a.tickSide="left",a.animation=!0,a.animationRule="linear",a.animatedValue=!1,a.animateOnInit=!1,a.animationDuration=(e.paths?.gaugePath?.sampleTime??500)-25,a.highlights=[],a.highlightsWidth=e.gauge?.highlightsWidth;let b=this.highlights();b.length&&(a.highlights=JSON.stringify(b))}ngAfterViewInit(){this.viewReady.set(!0),this.applyInitialSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}applyInitialSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i=.3,a,r;this.runtime.options()?.gauge?.subType==="vertical"?(a=t.height,r=t.height*i):(r=t.width,a=t.width*i);let f={height:a,width:r};try{this.ngGauge()?.update(f)}catch{}}onResized(e){let t=this.runtime.options();if(!t)return;let i=.3,a=t.gauge?.subType==="vertical",r={};a?(r.height=e.contentRect.height,r.width=r.height*i,r.width>e.contentRect.width&&(r.width=e.contentRect.width,r.height=r.width/i)):(r.width=e.contentRect.width,r.height=r.width*i,r.height>e.contentRect.height&&(r.height=e.contentRect.height,r.width=r.height/i)),r.height=(r.height??0)-10;try{this.ngGauge()?.update(r)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Vd,5),te(i.gauge,Vd,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:3,consts:[["linearGauge",""],[1,"linearGauge",3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"linear-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue()))},dependencies:[Pt,ni,ia,Pd],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:block} 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 n})();var Ld=["compassGauge"];function Gd(n){let o=n.match(/(\d+(\.\d+)?|\.\d+)/g);if(!o||o.length<3)throw new Error("Invalid RGBA format");let[e,t,i,a=1]=o.map(Number),r=a===1?"":Math.round(a*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+r}function hg(n){return n<0&&(n=360+n),n}var Fd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={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:"deg",sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5};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=w("--");value=w(0);ngGauge=ie("compassGauge");gauge=ie("compassGauge",{read:Ie});viewReady=w(!1);gaugeOptions={};colorStrokeTicks="";currentState=w(ce.Normal);lastAppliedState=null;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater","self.environment.wind.angleTrueWaterDamped","self.performance.beatAngle","self.performance.gybeAngle","self.performance.targetAngle","self.performance.optimumWindAngle"];displayName=se(()=>this.runtime.options()?.displayName);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return;let i=e.paths?.gaugePath;i?.path&&W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(0),this.textValue.set("--");else{this.negToPortPaths.includes(i.path)&&(r=hg(r));let h=Math.min(Math.max(r,0),360);this.value.set(h),this.textValue.set(h.toFixed(0))}let s=a?.state??ce.Normal;s!==this.currentState()&&this.currentState.set(s)}))}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{if(this.buildGaugeOptions(e,t),this.viewReady())try{this.ngGauge()?.update(this.gaugeOptions)}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.currentState();!e||!t||this.viewReady()&&i!==this.lastAppliedState&&W(()=>{let a={};switch(i){case ce.Emergency:a.colorValueText=t.zoneEmergency;break;case ce.Alarm:a.colorValueText=t.zoneAlarm;break;case ce.Warn:a.colorValueText=t.zoneWarn;break;case ce.Alert:a.colorValueText=t.zoneAlert;break;default:a.colorValueText=t.contrast;break}try{this.ngGauge()?.update(a)}catch{}this.lastAppliedState=i})})}buildGaugeOptions(e,t){let i=this.gaugeOptions={};i.title=this.displayName(),i.minValue=0,i.maxValue=360,i.units=e.paths?.gaugePath?.convertUnitTo||"",i.valueDec=e.numDecimal??0,i.valueInt=e.numInt??1,i.barProgress=!1,i.barWidth=0,i.valueBox=!!e.gauge?.showValueBox,i.fontValueSize=60,i.valueBoxWidth=30,i.valueBoxBorderRadius=10,i.valueBoxStroke=0,i.ticksAngle=360,i.startAngle=180,i.exactTicks=!1,i.strokeTicks="",i.majorTicks=e.gauge?.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],i.majorTicksDec=0,i.majorTicksInt=1,i.numbersMargin=5,i.fontNumbersSize=25,i.minorTicks=e.gauge?.compassUseNumbers?3:2,i.needle=!0,i.needleType=this.LINE,i.needleStart=this.NEEDLE_START,i.needleEnd=this.NEEDLE_END,i.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,i.needleWidth=4,i.needleShadow=!1,i.needleCircleInner=!1,i.needleCircleOuter=!1,i.borders=!0,i.borderOuterWidth=0,i.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,i.borderInnerWidth=this.BORDER_INNER_WIDTH,i.borderShadowWidth=0,i.highlights=[],i.highlightsWidth=0,i.fontTitle="Roboto",i.fontTitleWeight="normal",i.fontTitleSize=25,i.fontUnits="Roboto",i.fontUnitsSize=25,i.fontUnitsWeight="normal",i.barStrokeWidth=0,i.barShadow=0,i.fontValue="Roboto",i.fontValueWeight="bold",i.valueTextShadow=!1,i.colorValueBoxShadow="",i.fontNumbers="Roboto",i.fontNumbersWeight="bold",e.gauge?.subType==="marineCompass"?(i.animationTarget=this.ANIMATION_TARGET_PLATE,i.useMinPath=!0):(i.animationTarget=this.ANIMATION_TARGET_NEEDLE,i.useMinPath=!0),i.animation=!0,i.animateOnInit=!0,i.animatedValue=!0,i.animationRule="linear",i.animationDuration=(e.paths?.gaugePath?.sampleTime??500)-50;let a=Se(e.color,t),r=Gd(a.dim),s=Gd(Se("contrast",t).dim);i.colorBarProgress=a.color,i.colorBorderMiddle=r,i.colorBorderMiddleEnd=r,i.colorNeedle=a.color,i.colorNeedleEnd=a.color,i.colorTitle=s,i.colorUnits=s,i.colorValueText=a.color,i.colorMinorTicks=s,i.colorNumbers=e.gauge?.compassUseNumbers?[t.port,s,s,r,s,s,r,s,s,r,s,s,t.port]:[t.port,r,r,r,r,r,r,r,t.port],i.colorMajorTicks=e.gauge?.compassUseNumbers?[t.port,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.port]:[t.port,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.port],i.colorPlate=i.colorPlateEnd=i.colorBorderInner=i.colorBorderInnerEnd=t.cardColor,i.colorBar=t.background,i.colorBarStroke="",i.colorValueBoxBackground=t.background,i.colorNeedleShadowUp="",i.colorNeedleShadowDown="",i.colorNeedleCircleInner=i.colorPlate,i.colorNeedleCircleInnerEnd=i.colorPlate,i.colorNeedleCircleOuter=i.colorPlate,i.colorNeedleCircleOuterEnd=i.colorPlate}setCanvasSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i={height:t.height,width:t.width};try{this.ngGauge()?.update(i)}catch{}}ngAfterViewInit(){this.viewReady.set(!0),this.setCanvasSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}onResized(e){let t={height:e.contentRect.height,width:e.contentRect.width};try{this.ngGauge()?.update(t)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Ld,5),te(i.gauge,Ld,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:4,consts:[["compassGauge",""],[3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"radial-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue())("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[Pt,ni,ia,Do],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%} 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 n})();var pg=["canvasMainRef"],Bd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={displayName:"Time Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Date / Time",path:null,source:null,pathType:"Date",isPathConfigurable:!0,sampleTime:1e3}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:!1,dataTimeout:5};canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=A(je);cssWidth=0;cssHeight=0;dataValue=w(null);_timeZoneGTM="";isDestroyed=!1;labelColor=w(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;displayName=se(()=>this.runtime.options()?.displayName);dateFormat=se(()=>this.runtime.options()?.dateFormat);dateTimezone=se(()=>this.runtime.options()?.dateTimezone);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.applyColors(),e.paths?.gaugePath?.path&&(this._timeZoneGTM=this.getGMTOffset(this.dateTimezone()),this.streams.observe("gaugePath",a=>{this.dataValue.set(a?.data?.value??null),this.drawWidget()}))})}),R(()=>{let e=this.theme(),t=this.runtime.options();!e||!t||W(()=>{this.applyColors(),this.drawWidget()})})}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.85),this.maxTextHeight=Math.floor(this.cssHeight*.7),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.floor(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.floor(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.canvasElement.width*.85),this.maxTextHeight=Math.floor(this.canvasElement.height*.7),this.applyColors(),this.drawWidget())}getGMTOffset(e){try{if(e==="System Timezone -")return"";let a=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(r=>r.type==="timeZoneName");return a?a.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}applyColors(){let e=this.runtime.options(),t=this.theme();!e||!t||(this.labelColor.set(Se(e.color,t).dim),this.valueColor=Se(e.color,t).color)}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==`${this.displayName()}-${this.runtime.options().color}`)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.displayName(),this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=`${this.displayName()}-${this.runtime.options().color}`),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e,t=this.dataValue();if(!t||isNaN(Date.parse(t)))e="--";else try{e=vs(t,this.dateFormat(),"en-US",this._timeZoneGTM)}catch(i){e=i,console.log("[Date Time Widget]: "+i)}this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,pg,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"date-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},dependencies:[Pt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.date-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;min-height:1px;display:block}"]})}return n})();var Ud={modes:{point(n,o){return Io(n,o,{intersect:!0})},nearest(n,o,e){return bg(n,o,e)},x(n,o,e){return Io(n,o,{intersect:e.intersect,axis:"x"})},y(n,o,e){return Io(n,o,{intersect:e.intersect,axis:"y"})}}};function Cr(n,o,e){return(Ud.modes[e.mode]||Ud.modes.nearest)(n,o,e)}function gg(n,o,e){return e!=="x"&&e!=="y"?n.inRange(o.x,o.y,"x",!0)||n.inRange(o.x,o.y,"y",!0):n.inRange(o.x,o.y,e,!0)}function fg(n,o,e){return e==="x"?{x:n.x,y:o.y}:e==="y"?{x:o.x,y:n.y}:o}function Io(n,o,e){return n.filter(t=>e.intersect?t.inRange(o.x,o.y):gg(t,o,e.axis))}function bg(n,o,e){let t=Number.POSITIVE_INFINITY;return Io(n,o,e).reduce((i,a)=>{let r=a.getCenterPoint(),s=fg(o,r,e.axis),h=ya(o,s);return h<t?(i=[a],t=h):h===t&&i.push(a),i},[]).sort((i,a)=>i._index-a._index).slice(0,1)}function Cn(n,o,e){let t=Math.cos(e),i=Math.sin(e),a=o.x,r=o.y;return{x:a+t*(n.x-a)-i*(n.y-r),y:r+i*(n.x-a)+t*(n.y-r)}}var Ag=(n,o)=>o>n||n.length>o.length&&n.slice(0,o.length)===o,bn=.001,Ro=(n,o,e)=>Math.min(e,Math.max(o,n)),lc=(n,o)=>n.value>=n.start-o&&n.value<=n.end+o;function vg(n,o,e){for(let t of Object.keys(n))n[t]=Ro(n[t],o,e);return n}function yg(n,o,e,t){return!n||!o||e<=0?!1:Math.pow(n.x-o.x,2)+Math.pow(n.y-o.y,2)<=Math.pow(e+t,2)}function dc(n,{x:o,y:e,x2:t,y2:i},a,{borderWidth:r,hitTolerance:s}){let h=(r+s)/2,f=n.x>=o-h-bn&&n.x<=t+h+bn,b=n.y>=e-h-bn&&n.y<=i+h+bn;return a==="x"?f:(a==="y"||f)&&b}function cc(n,{rect:o,center:e},t,{rotation:i,borderWidth:a,hitTolerance:r}){let s=Cn(n,e,hi(-i));return dc(s,o,t,{borderWidth:a,hitTolerance:r})}function Sn(n,o){let{centerX:e,centerY:t}=n.getProps(["centerX","centerY"],o);return{x:e,y:t}}function Cg(n,o,e,t=!0){let i=e.split("."),a=0;for(let r of o.split(".")){let s=i[a++];if(parseInt(r,10)<parseInt(s,10))break;if(Ag(s,r)){if(t)throw new Error(`${n} v${e} is not supported. v${o} or newer is required.`);return!1}}return!0}var mc=n=>typeof n=="string"&&n.endsWith("%"),uc=n=>parseFloat(n)/100,hc=n=>Ro(uc(n),0,1),_a=(n,o)=>({x:n,y:o,x2:n,y2:o,width:0,height:0}),Sg={box:n=>_a(n.centerX,n.centerY),doughnutLabel:n=>_a(n.centerX,n.centerY),ellipse:n=>({centerX:n.centerX,centerY:n.centerX,radius:0,width:0,height:0}),label:n=>_a(n.centerX,n.centerY),line:n=>_a(n.x,n.y),point:n=>({centerX:n.centerX,centerY:n.centerY,radius:0,width:0,height:0}),polygon:n=>_a(n.centerX,n.centerY)};function Sr(n,o){return o==="start"?0:o==="end"?n:mc(o)?hc(o)*n:n/2}function an(n,o,e=!0){return typeof o=="number"?o:mc(o)?(e?hc(o):uc(o))*n:n}function wg(n,o){let{x:e,width:t}=n,i=o.textAlign;return i==="center"?e+t/2:i==="end"||i==="right"?e+t:e}function pc(n,o,{borderWidth:e,position:t,xAdjust:i,yAdjust:a},r){let s=Xi(r),h=o.width+(s?r.width:0)+e,f=o.height+(s?r.height:0)+e,b=wr(t),C=qd(n.x,h,i,b.x),M=qd(n.y,f,a,b.y);return{x:C,y:M,x2:C+h,y2:M+f,width:h,height:f,centerX:C+h/2,centerY:M+f/2}}function wr(n,o="center"){return Xi(n)?{x:pn(n.x,o),y:pn(n.y,o)}:(n=pn(n,o),{x:n,y:n})}var gc=(n,o)=>n&&n.autoFit&&o<1;function fc(n,o){let e=n.font,t=Zi(e)?e:[e];return gc(n,o)?t.map(function(i){let a=Ca(i);return a.size=Math.floor(i.size*o),a.lineHeight=i.lineHeight,Ca(a)}):t.map(i=>Ca(i))}function bc(n){return n&&(ui(n.xValue)||ui(n.yValue))}function qd(n,o,e=0,t){return n-Sr(o,t)+e}function sa(n,o,e){let t=e.init;if(t){if(t===!0)return vc(o,e)}else return;return xg(n,o,e)}function Ac(n,o,e){let t=!1;return o.forEach(i=>{Ki(n[i])?(t=!0,e[i]=n[i]):ui(e[i])&&delete e[i]}),t}function vc(n,o){let e=o.type||"line";return Sg[e](n)}function xg(n,o,e){let t=va(e.init,[{chart:n,properties:o,options:e}]);if(t===!0)return vc(o,e);if(Xi(t))return t}var hr=new Map,_g=n=>isNaN(n)||n<=0,Mg=n=>n.reduce(function(o,e){return o+=e.string,o},"");function No(n){if(n&&typeof n=="object"){let o=n.toString();return o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]"}}function Vo(n,{x:o,y:e},t){t&&(n.translate(o,e),n.rotate(hi(t)),n.translate(-o,-e))}function Ii(n,o){if(o&&o.borderWidth)return n.lineCap=o.borderCapStyle||"butt",n.setLineDash(o.borderDash),n.lineDashOffset=o.borderDashOffset,n.lineJoin=o.borderJoinStyle||"miter",n.lineWidth=o.borderWidth,n.strokeStyle=o.borderColor,!0}function la(n,o){n.shadowColor=o.backgroundShadowColor,n.shadowBlur=o.shadowBlur,n.shadowOffsetX=o.shadowOffsetX,n.shadowOffsetY=o.shadowOffsetY}function Wo(n,o){let e=o.content;if(No(e))return{width:an(e.width,o.width),height:an(e.height,o.height)};let t=fc(o),i=o.textStrokeWidth,a=Zi(e)?e:[e],r=a.join()+Mg(t)+i+(n._measureText?"-spriting":"");return hr.has(r)||hr.set(r,Dg(n,a,t,i)),hr.get(r)}function yc(n,o,e){let{x:t,y:i,width:a,height:r}=o;n.save(),la(n,e);let s=Ii(n,e);n.fillStyle=e.backgroundColor,n.beginPath(),tr(n,{x:t,y:i,w:a,h:r,radius:vg(ir(e.borderRadius),0,Math.min(a,r)/2)}),n.closePath(),n.fill(),s&&(n.shadowColor=e.borderShadowColor,n.stroke()),n.restore()}function Cc(n,o,e,t){let i=e.content;if(No(i)){n.save(),n.globalAlpha=Og(e.opacity,i.style.opacity),n.drawImage(i,o.x,o.y,o.width,o.height),n.restore();return}let a=Zi(i)?i:[i],r=fc(e,t),s=e.color,h=Zi(s)?s:[s],f=wg(o,e),b=o.y+e.textStrokeWidth/2;n.save(),n.textBaseline="middle",n.textAlign=e.textAlign,kg(n,e)&&Pg(n,{x:f,y:b},a,r),Ig(n,{x:f,y:b},a,{fonts:r,colors:h}),n.restore()}function kg(n,o){if(o.textStrokeWidth>0)return n.lineJoin="round",n.miterLimit=2,n.lineWidth=o.textStrokeWidth,n.strokeStyle=o.textStrokeColor,!0}function Tg(n,o,e,t){let{radius:i,options:a}=o,r=a.pointStyle,s=a.rotation,h=(s||0)*lo;if(No(r)){n.save(),n.translate(e,t),n.rotate(h),n.drawImage(r,-r.width/2,-r.height/2,r.width,r.height),n.restore();return}_g(i)||Eg(n,{x:e,y:t,radius:i,rotation:s,style:r,rad:h})}function Eg(n,{x:o,y:e,radius:t,rotation:i,style:a,rad:r}){let s,h,f,b;switch(n.beginPath(),a){default:n.arc(o,e,t,0,so),n.closePath();break;case"triangle":n.moveTo(o+Math.sin(r)*t,e-Math.cos(r)*t),r+=co,n.lineTo(o+Math.sin(r)*t,e-Math.cos(r)*t),r+=co,n.lineTo(o+Math.sin(r)*t,e-Math.cos(r)*t),n.closePath();break;case"rectRounded":b=t*.516,f=t-b,s=Math.cos(r+gn)*f,h=Math.sin(r+gn)*f,n.arc(o-s,e-h,b,r-qt,r-Hn),n.arc(o+h,e-s,b,r-Hn,r),n.arc(o+s,e+h,b,r,r+Hn),n.arc(o-h,e+s,b,r+Hn,r+qt),n.closePath();break;case"rect":if(!i){f=Math.SQRT1_2*t,n.rect(o-f,e-f,2*f,2*f);break}r+=gn;case"rectRot":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+h,e-s),n.lineTo(o+s,e+h),n.lineTo(o-h,e+s),n.closePath();break;case"crossRot":r+=gn;case"cross":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s);break;case"star":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s),r+=gn,s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s);break;case"line":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h);break;case"dash":n.moveTo(o,e),n.lineTo(o+Math.cos(r)*t,e+Math.sin(r)*t);break}n.fill()}function Dg(n,o,e,t){n.save();let i=o.length,a=0,r=t;for(let s=0;s<i;s++){let h=e[Math.min(s,e.length-1)];n.font=h.string;let f=o[s];a=Math.max(a,n.measureText(f).width+t),r+=h.lineHeight}return n.restore(),{width:a,height:r}}function Pg(n,{x:o,y:e},t,i){n.beginPath();let a=0;t.forEach(function(r,s){let h=i[Math.min(s,i.length-1)],f=h.lineHeight;n.font=h.string,n.strokeText(r,o,e+f/2+a),a+=f}),n.stroke()}function Ig(n,{x:o,y:e},t,{fonts:i,colors:a}){let r=0;t.forEach(function(s,h){let f=a[Math.min(h,a.length-1)],b=i[Math.min(h,i.length-1)],C=b.lineHeight;n.beginPath(),n.font=b.string,n.fillStyle=f,n.fillText(s,o,e+C/2+r),r+=C,n.fill()})}function Og(n,o){let e=mo(n)?n:o;return mo(e)?Ro(e,0,1):1}var Sc=["left","bottom","top","right"];function Rg(n,o){let{pointX:e,pointY:t,options:i}=o,a=i.callout,r=a&&a.display&&Gg(o,a);if(!r||Bg(o,a,r))return;if(n.save(),n.beginPath(),!Ii(n,a))return n.restore();let{separatorStart:h,separatorEnd:f}=Ng(o,r),{sideStart:b,sideEnd:C}=Wg(o,r,h);(a.margin>0||i.borderWidth===0)&&(n.moveTo(h.x,h.y),n.lineTo(f.x,f.y)),n.moveTo(b.x,b.y),n.lineTo(C.x,C.y);let M=Cn({x:e,y:t},o.getCenterPoint(),hi(-o.rotation));n.lineTo(M.x,M.y),n.stroke(),n.restore()}function Ng(n,o){let{x:e,y:t,x2:i,y2:a}=n,r=Vg(n,o),s,h;return o==="left"||o==="right"?(s={x:e+r,y:t},h={x:s.x,y:a}):(s={x:e,y:t+r},h={x:i,y:s.y}),{separatorStart:s,separatorEnd:h}}function Vg(n,o){let{width:e,height:t,options:i}=n,a=i.callout.margin+i.borderWidth/2;return o==="right"?e+a:o==="bottom"?t+a:-a}function Wg(n,o,e){let{y:t,width:i,height:a,options:r}=n,s=r.callout.start,h=Lg(o,r.callout),f,b;return o==="left"||o==="right"?(f={x:e.x,y:t+an(a,s)},b={x:f.x+h,y:f.y}):(f={x:e.x+an(i,s),y:e.y},b={x:f.x,y:f.y+h}),{sideStart:f,sideEnd:b}}function Lg(n,o){let e=o.side;return n==="left"||n==="top"?-e:e}function Gg(n,o){let e=o.position;return Sc.includes(e)?e:Fg(n,o)}function Fg(n,o){let{x:e,y:t,x2:i,y2:a,width:r,height:s,pointX:h,pointY:f,centerX:b,centerY:C,rotation:M}=n,V={x:b,y:C},D=o.start,j=an(r,D),X=an(s,D),Z=[e,e+j,e+j,i],ee=[t+X,a,t,a],be=[];for(let Oe=0;Oe<4;Oe++){let Te=Cn({x:Z[Oe],y:ee[Oe]},V,hi(M));be.push({position:Sc[Oe],distance:ya(Te,{x:h,y:f})})}return be.sort((Oe,Te)=>Oe.distance-Te.distance)[0].position}function Bg(n,o,e){let{pointX:t,pointY:i}=n,a=o.margin,r=t,s=i;return e==="left"?r+=a:e==="right"?r-=a:e==="top"?s+=a:e==="bottom"&&(s-=a),n.inRange(r,s)}var zd={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 na(n,o,e){return o=typeof o=="number"?o:n.parse(o),ro(o)?n.getPixelForValue(o):e}function An(n,o,e){let t=o[e];if(t||e==="scaleID")return t;let i=e.charAt(0),a=Object.values(n).filter(r=>r.axis&&r.axis===i);return a.length?a[0].id:i}function wc(n,o){if(n){let e=n.options.reverse,t=na(n,o.min,e?o.end:o.start),i=na(n,o.max,e?o.start:o.end);return{start:t,end:i}}}function xc(n,o){let{chartArea:e,scales:t}=n,i=t[An(t,o,"xScaleID")],a=t[An(t,o,"yScaleID")],r=e.width/2,s=e.height/2;return i&&(r=na(i,o.xValue,i.left+i.width/2)),a&&(s=na(a,o.yValue,a.top+a.height/2)),{x:r,y:s}}function xr(n,o){let e=n.scales,t=e[An(e,o,"xScaleID")],i=e[An(e,o,"yScaleID")];if(!t&&!i)return{};let{left:a,right:r}=t||n.chartArea,{top:s,bottom:h}=i||n.chartArea,f=Hd(t,{min:o.xMin,max:o.xMax,start:a,end:r});a=f.start,r=f.end;let b=Hd(i,{min:o.yMin,max:o.yMax,start:h,end:s});return s=b.start,h=b.end,{x:a,y:s,x2:r,y2:h,width:r-a,height:h-s,centerX:a+(r-a)/2,centerY:s+(h-s)/2}}function _c(n,o){if(!bc(o)){let e=xr(n,o),t=o.radius;(!t||isNaN(t))&&(t=Math.min(e.width,e.height)/2,o.radius=t);let i=t*2,a=e.centerX+o.xAdjust,r=e.centerY+o.yAdjust;return{x:a-t,y:r-t,x2:a+t,y2:r+t,centerX:a,centerY:r,width:i,height:i,radius:t}}return qg(n,o)}function Ug(n,o){let{scales:e,chartArea:t}=n,i=e[o.scaleID],a={x:t.left,y:t.top,x2:t.right,y2:t.bottom};return i?zg(i,a,o):Hg(e,a,o),a}function Mc(n,o){let e=xr(n,o);return e.initProperties=sa(n,e,o),e.elements=[{type:"label",optionScope:"label",properties:Qg(n,e,o),initProperties:e.initProperties}],e}function qg(n,o){let e=xc(n,o),t=o.radius*2;return{x:e.x-o.radius+o.xAdjust,y:e.y-o.radius+o.yAdjust,x2:e.x+o.radius+o.xAdjust,y2:e.y+o.radius+o.yAdjust,centerX:e.x+o.xAdjust,centerY:e.y+o.yAdjust,radius:o.radius,width:t,height:t}}function Hd(n,o){let e=wc(n,o)||o;return{start:Math.min(e.start,e.end),end:Math.max(e.start,e.end)}}function zg(n,o,e){let t=na(n,e.value,NaN),i=na(n,e.endValue,t);n.isHorizontal()?(o.x=t,o.x2=i):(o.y=t,o.y2=i)}function Hg(n,o,e){for(let t of Object.keys(zd)){let i=n[An(n,e,t)];if(i){let{min:a,max:r,start:s,end:h,startProp:f,endProp:b}=zd[t],C=wc(i,{min:e[a],max:e[r],start:i[s],end:i[h]});o[f]=C.start,o[b]=C.end}}}function jg({properties:n,options:o},e,t,i){let{x:a,x2:r,width:s}=n;return kc({start:a,end:r,size:s,borderWidth:o.borderWidth},{position:t.x,padding:{start:i.left,end:i.right},adjust:o.label.xAdjust,size:e.width})}function Yg({properties:n,options:o},e,t,i){let{y:a,y2:r,height:s}=n;return kc({start:a,end:r,size:s,borderWidth:o.borderWidth},{position:t.y,padding:{start:i.top,end:i.bottom},adjust:o.label.yAdjust,size:e.height})}function kc(n,o){let{start:e,end:t,borderWidth:i}=n,{position:a,padding:{start:r,end:s},adjust:h}=o,f=t-i-e-r-s-o.size;return e+i/2+h+Sr(f,a)}function Qg(n,o,e){let t=e.label;t.backgroundColor="transparent",t.callout.display=!1;let i=wr(t.position),a=jn(t.padding),r=Wo(n.ctx,t),s=jg({properties:o,options:e},r,i,a),h=Yg({properties:o,options:e},r,i,a),f=r.width+a.width,b=r.height+a.height;return{x:s,y:h,x2:s+f,y2:h+b,width:f,height:b,centerX:s+f/2,centerY:h+b/2,rotation:t.rotation}}var pr=["enter","leave"],_r=pr.concat("click");function $g(n,o,e){o.listened=Ac(e,_r,o.listeners),o.moveListened=!1,pr.forEach(t=>{Ki(e[t])&&(o.moveListened=!0)}),(!o.listened||!o.moveListened)&&o.annotations.forEach(t=>{!o.listened&&Ki(t.click)&&(o.listened=!0),o.moveListened||pr.forEach(i=>{Ki(t[i])&&(o.listened=!0,o.moveListened=!0)})})}function Zg(n,o,e){if(n.listened)switch(o.type){case"mousemove":case"mouseout":return Xg(n,o,e);case"click":return Kg(n,o,e)}}function Xg(n,o,e){if(!n.moveListened)return;let t;o.type==="mousemove"?t=Cr(n.visibleElements,o,e.interaction):t=[];let i=n.hovered;n.hovered=t;let a={state:n,event:o},r=jd(a,"leave",i,t);return jd(a,"enter",t,i)||r}function jd({state:n,event:o},e,t,i){let a;for(let r of t)i.indexOf(r)<0&&(a=Tc(r.options[e]||n.listeners[e],r,o)||a);return a}function Kg(n,o,e){let t=n.listeners,i=Cr(n.visibleElements,o,e.interaction),a;for(let r of i)a=Tc(r.options.click||t.click,r,o)||a;return a}function Tc(n,o,e){return va(n,[o.$context,e])===!0}var Oo=["afterDraw","beforeDraw"];function Jg(n,o,e){let t=o.visibleElements;o.hooked=Ac(e,Oo,o.hooks),o.hooked||t.forEach(i=>{o.hooked||Oo.forEach(a=>{Ki(i.options[a])&&(o.hooked=!0)})})}function Yd(n,o,e){if(n.hooked){let t=o.options[e]||n.hooks[e];return va(t,[o.$context])}}function ef(n,o,e){let t=rf(n.scales,o,e),i=Qd(o,t,"min","suggestedMin");i=Qd(o,t,"max","suggestedMax")||i,i&&Ki(o.handleTickRangeOptions)&&o.handleTickRangeOptions()}function tf(n,o){for(let e of n)af(e,o)}function Qd(n,o,e,t){if(ro(o[e])&&!nf(n.options,e,t)){let i=n[e]!==o[e];return n[e]=o[e],i}}function nf(n,o,e){return ui(n[o])||ui(n[e])}function af(n,o){for(let e of["scaleID","xScaleID","yScaleID"]){let t=An(o,n,e);t&&!o[t]&&of(n,e)&&console.warn(`No scale found with id '${t}' for annotation '${n.id}'`)}}function of(n,o){if(o==="scaleID")return!0;let e=o.charAt(0);for(let t of["Min","Max","Value"])if(ui(n[e+t]))return!0;return!1}function rf(n,o,e){let t=o.axis,i=o.id,a=t+"ScaleID",r={min:pn(o.min,Number.NEGATIVE_INFINITY),max:pn(o.max,Number.POSITIVE_INFINITY)};for(let s of e)s.scaleID===i?$d(s,o,["value","endValue"],r):An(n,s,a)===i&&$d(s,o,[t+"Min",t+"Max",t+"Value"],r);return r}function $d(n,o,e,t){for(let i of e){let a=n[i];if(ui(a)){let r=o.parse(a);t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}}}var on=class extends Ji{inRange(o,e,t,i){let{x:a,y:r}=Cn({x:o,y:e},this.getCenterPoint(i),hi(-this.options.rotation));return dc({x:a,y:r},this.getProps(["x","y","x2","y2"],i),t,this.options)}getCenterPoint(o){return Sn(this,o)}draw(o){o.save(),Vo(o,this.getCenterPoint(),this.options.rotation),yc(o,this,this.options),o.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(o,e){return Mc(o,e)}};on.id="boxAnnotation";on.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};on.defaultRoutes={borderColor:"color",backgroundColor:"color"};on.descriptors={label:{_fallback:!0}};var aa=class extends Ji{inRange(o,e,t,i){return cc({x:o,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(o){return Sn(this,o)}draw(o){let e=this.options;!e.display||!e.content||(uf(o,this),o.save(),Vo(o,this.getCenterPoint(),this.rotation),Cc(o,this,e,this._fitRatio),o.restore())}resolveElementProperties(o,e){let t=sf(o,e);if(!t)return{};let{controllerMeta:i,point:a,radius:r}=df(o,e,t),s=Wo(o.ctx,e),h=cf(s,r);gc(e,h)&&(s={width:s.width*h,height:s.height*h});let{position:f,xAdjust:b,yAdjust:C}=e,M=pc(a,s,{borderWidth:0,position:f,xAdjust:b,yAdjust:C});return Ke(Ue(Ue({initProperties:sa(o,M,e)},M),i),{rotation:e.rotation,_fitRatio:h})}};aa.id="doughnutLabelAnnotation";aa.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};aa.defaultRoutes={};function sf(n,o){return n.getSortedVisibleDatasetMetas().reduce(function(e,t){let i=t.controller;return i instanceof _l&&lf(n,o,t.data)&&(!e||i.innerRadius<e.controller.innerRadius)&&i.options.circumference>=90?t:e},void 0)}function lf(n,o,e){if(!o.autoHide)return!0;for(let t=0;t<e.length;t++)if(!e[t].hidden&&n.getDataVisibility(t))return!0}function df({chartArea:n},o,e){let{left:t,top:i,right:a,bottom:r}=n,{innerRadius:s,offsetX:h,offsetY:f}=e.controller,b=(t+a)/2+h,C=(i+r)/2+f,M={left:Math.max(b-s,t),right:Math.min(b+s,a),top:Math.max(C-s,i),bottom:Math.min(C+s,r)},V={x:(M.left+M.right)/2,y:(M.top+M.bottom)/2},D=o.spacing+o.borderWidth/2,j=s-D,X=V.y>C,Z=X?i+D:r-D,ee=mf(Z,b,C,j);return{controllerMeta:Ue({_centerX:b,_centerY:C,_radius:j,_counterclockwise:X},ee),point:V,radius:Math.min(s,Math.min(M.right-M.left,M.bottom-M.top)/2)}}function cf({width:n,height:o},e){let t=Math.sqrt(Math.pow(n,2)+Math.pow(o,2));return e*2/t}function mf(n,o,e,t){let i=Math.pow(e-n,2),a=Math.pow(t,2),r=o*-2,s=Math.pow(o,2)+i-a,h=Math.pow(r,2)-4*s;if(h<=0)return{_startAngle:0,_endAngle:so};let f=(-r-Math.sqrt(h))/2,b=(-r+Math.sqrt(h))/2;return{_startAngle:uo({x:o,y:e},{x:f,y:n}).angle,_endAngle:uo({x:o,y:e},{x:b,y:n}).angle}}function uf(n,o){let{_centerX:e,_centerY:t,_radius:i,_startAngle:a,_endAngle:r,_counterclockwise:s,options:h}=o;n.save();let f=Ii(n,h);n.fillStyle=h.backgroundColor,n.beginPath(),n.arc(e,t,i,a,r,s),n.closePath(),n.fill(),f&&n.stroke(),n.restore()}var vn=class extends Ji{inRange(o,e,t,i){return cc({x:o,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(o){return Sn(this,o)}draw(o){let e=this.options,t=!ui(this._visible)||this._visible;!e.display||!e.content||!t||(o.save(),Vo(o,this.getCenterPoint(),this.rotation),Rg(o,this),yc(o,this,e),Cc(o,hf(this),e),o.restore())}resolveElementProperties(o,e){let t;if(bc(e))t=xc(o,e);else{let{centerX:s,centerY:h}=xr(o,e);t={x:s,y:h}}let i=jn(e.padding),a=Wo(o.ctx,e),r=pc(t,a,e,i);return Ke(Ue({initProperties:sa(o,r,e),pointX:t.x,pointY:t.y},r),{rotation:e.rotation})}};vn.id="labelAnnotation";vn.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};vn.defaultRoutes={borderColor:"color"};function hf({x:n,y:o,width:e,height:t,options:i}){let a=i.borderWidth/2,r=jn(i.padding);return{x:n+r.left+a,y:o+r.top+a,width:e-r.left-r.right-i.borderWidth,height:t-r.top-r.bottom-i.borderWidth}}var Mr=(n,o,e)=>({x:n.x+e*(o.x-n.x),y:n.y+e*(o.y-n.y)}),gr=(n,o,e)=>Mr(o,e,Math.abs((n-o.y)/(e.y-o.y))).x,Zd=(n,o,e)=>Mr(o,e,Math.abs((n-o.x)/(e.x-o.x))).y,ka=n=>n*n,pf=(n,o,{x:e,y:t,x2:i,y2:a},r)=>r==="y"?{start:Math.min(t,a),end:Math.max(t,a),value:o}:{start:Math.min(e,i),end:Math.max(e,i),value:n},Xd=(n,o,e,t)=>(1-t)*(1-t)*n+2*(1-t)*t*o+t*t*e,fr=(n,o,e,t)=>({x:Xd(n.x,o.x,e.x,t),y:Xd(n.y,o.y,e.y,t)}),Kd=(n,o,e,t)=>2*(1-t)*(o-n)+2*t*(e-o),Jd=(n,o,e,t)=>-Math.atan2(Kd(n.x,o.x,e.x,t),Kd(n.y,o.y,e.y,t))+.5*qt,Lo=(()=>{class n extends Ji{inRange(e,t,i,a){let r=(this.options.borderWidth+this.options.hitTolerance)/2;if(i!=="x"&&i!=="y"){let s={mouseX:e,mouseY:t},{path:h,ctx:f}=this;if(h){Ii(f,this.options),f.lineWidth+=this.options.hitTolerance;let{chart:C}=this.$context,M=e*C.currentDevicePixelRatio,V=t*C.currentDevicePixelRatio,D=f.isPointInStroke(h,M,V)||br(this,s,a);return f.restore(),D}let b=ka(r);return Af(this,s,b,a)||br(this,s,a)}return gf(this,{mouseX:e,mouseY:t},i,{hitSize:r,useFinalPosition:a})}getCenterPoint(e){return Sn(this,e)}draw(e){let{x:t,y:i,x2:a,y2:r,cp:s,options:h}=this;if(e.save(),!Ii(e,h))return e.restore();la(e,h);let f=Math.sqrt(Math.pow(a-t,2)+Math.pow(r-i,2));if(h.curve&&s)return Mf(e,this,s,f),e.restore();let{startOpts:b,endOpts:C,startAdjust:M,endAdjust:V}=Ec(this),D=Math.atan2(r-i,a-t);e.translate(t,i),e.rotate(D),e.beginPath(),e.moveTo(0+M,0),e.lineTo(f-V,0),e.shadowColor=h.borderShadowColor,e.stroke(),Ar(e,0,M,b),Ar(e,f,-V,C),e.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(e,t){let i=Ug(e,t),{x:a,y:r,x2:s,y2:h}=i,f=ff(i,e.chartArea),b=f?bf({x:a,y:r},{x:s,y:h},e.chartArea):{x:a,y:r,x2:s,y2:h,width:Math.abs(s-a),height:Math.abs(h-r)};if(b.centerX=(s+a)/2,b.centerY=(h+r)/2,b.initProperties=sa(e,b,t),t.curve){let M={x:b.x,y:b.y},V={x:b.x2,y:b.y2};b.cp=_f(b,t,ya(M,V))}let C=vf(e,b,t.label);return C._visible=f,b.elements=[{type:"label",optionScope:"label",properties:C,initProperties:b.initProperties}],b}}return n.id="lineAnnotation",n})(),ec={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};Lo.defaults={adjustScaleRange:!0,arrowHeads:{display:!1,end:Object.assign({},ec),fill:!1,length:12,start:Object.assign({},ec),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({},vn.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};Lo.descriptors={arrowHeads:{start:{_fallback:!0},end:{_fallback:!0},_fallback:!0}};Lo.defaultRoutes={borderColor:"color"};function gf(n,{mouseX:o,mouseY:e},t,{hitSize:i,useFinalPosition:a}){let r=pf(o,e,n.getProps(["x","y","x2","y2"],a),t);return lc(r,i)||br(n,{mouseX:o,mouseY:e},a,t)}function ff({x:n,y:o,x2:e,y2:t},{top:i,right:a,bottom:r,left:s}){return!(n<s&&e<s||n>a&&e>a||o<i&&t<i||o>r&&t>r)}function tc({x:n,y:o},e,{top:t,right:i,bottom:a,left:r}){return n<r&&(o=Zd(r,{x:n,y:o},e),n=r),n>i&&(o=Zd(i,{x:n,y:o},e),n=i),o<t&&(n=gr(t,{x:n,y:o},e),o=t),o>a&&(n=gr(a,{x:n,y:o},e),o=a),{x:n,y:o}}function bf(n,o,e){let{x:t,y:i}=tc(n,o,e),{x:a,y:r}=tc(o,n,e);return{x:t,y:i,x2:a,y2:r,width:Math.abs(a-t),height:Math.abs(r-i)}}function Af(n,{mouseX:o,mouseY:e},t=bn,i){let{x:a,y:r,x2:s,y2:h}=n.getProps(["x","y","x2","y2"],i),f=s-a,b=h-r,C=ka(f)+ka(b),M=C===0?-1:((o-a)*f+(e-r)*b)/C,V,D;return M<0?(V=a,D=r):M>1?(V=s,D=h):(V=a+M*f,D=r+M*b),ka(o-V)+ka(e-D)<=t}function br(n,{mouseX:o,mouseY:e},t,i){let a=n.label;return a.options.display&&a.inRange(o,e,i,t)}function vf(n,o,e){let t=e.borderWidth,i=jn(e.padding),a=Wo(n.ctx,e),r=a.width+i.width+t,s=a.height+i.height+t;return Cf(o,e,{width:r,height:s,padding:i},n.chartArea)}function yf(n){let{x:o,y:e,x2:t,y2:i}=n,a=Math.atan2(i-e,t-o);return a>qt/2?a-qt:a<qt/-2?a+qt:a}function Cf(n,o,e,t){let{width:i,height:a,padding:r}=e,{xAdjust:s,yAdjust:h}=o,f={x:n.x,y:n.y},b={x:n.x2,y:n.y2},C=o.rotation==="auto"?yf(n):hi(o.rotation),M=Sf(i,a,C),V=wf(n,o,{labelSize:M,padding:r},t),D=n.cp?fr(f,n.cp,b,V):Mr(f,b,V),j={size:M.w,min:t.left,max:t.right,padding:r.left},X={size:M.h,min:t.top,max:t.bottom,padding:r.top},Z=nc(D.x,j)+s,ee=nc(D.y,X)+h;return{x:Z-i/2,y:ee-a/2,x2:Z+i/2,y2:ee+a/2,centerX:Z,centerY:ee,pointX:D.x,pointY:D.y,width:i,height:a,rotation:Ko(C)}}function Sf(n,o,e){let t=Math.cos(e),i=Math.sin(e);return{w:Math.abs(n*t)+Math.abs(o*i),h:Math.abs(n*i)+Math.abs(o*t)}}function wf(n,o,e,t){let i,a=xf(n,t);return o.position==="start"?i=ic({w:n.x2-n.x,h:n.y2-n.y},e,o,a):o.position==="end"?i=1-ic({w:n.x-n.x2,h:n.y-n.y2},e,o,a):i=Sr(1,o.position),i}function ic(n,o,e,t){let{labelSize:i,padding:a}=o,r=n.w*t.dx,s=n.h*t.dy,h=r>0&&(i.w/2+a.left-t.x)/r,f=s>0&&(i.h/2+a.top-t.y)/s;return Ro(Math.max(h,f),0,.25)}function xf(n,o){let{x:e,x2:t,y:i,y2:a}=n,r=Math.min(i,a)-o.top,s=Math.min(e,t)-o.left,h=o.bottom-Math.max(i,a),f=o.right-Math.max(e,t);return{x:Math.min(s,f),y:Math.min(r,h),dx:s<=f?1:-1,dy:r<=h?1:-1}}function nc(n,o){let{size:e,min:t,max:i,padding:a}=o,r=e/2;return e>i-t?(i+t)/2:(t>=n-a-r&&(n=t+a+r),i<=n+a+r&&(n=i-a-r),n)}function Ec(n){let o=n.options,e=o.arrowHeads&&o.arrowHeads.start,t=o.arrowHeads&&o.arrowHeads.end;return{startOpts:e,endOpts:t,startAdjust:ac(n,e),endAdjust:ac(n,t)}}function ac(n,o){if(!o||!o.display)return 0;let{length:e,width:t}=o,i=n.options.borderWidth/2,a={x:e,y:t+i};return Math.abs(gr(0,a,{x:0,y:i}))}function Ar(n,o,e,t){if(!t||!t.display)return;let{length:i,width:a,fill:r,backgroundColor:s,borderColor:h}=t,f=Math.abs(o-i)+e;n.beginPath(),la(n,t),Ii(n,t),n.moveTo(f,-a),n.lineTo(o+e,0),n.lineTo(f,a),r===!0?(n.fillStyle=s||h,n.closePath(),n.fill(),n.shadowColor="transparent"):n.shadowColor=t.borderShadowColor,n.stroke()}function _f(n,o,e){let{x:t,y:i,x2:a,y2:r,centerX:s,centerY:h}=n,f=Math.atan2(r-i,a-t),b=wr(o.controlPoint,0),C={x:s+an(e,b.x,!1),y:h+an(e,b.y,!1)};return Cn(C,{x:s,y:h},f)}function oc(n,{x:o,y:e},{angle:t,adjust:i},a){!a||!a.display||(n.save(),n.translate(o,e),n.rotate(t),Ar(n,0,-i,a),n.restore())}function Mf(n,o,e,t){let{x:i,y:a,x2:r,y2:s,options:h}=o,{startOpts:f,endOpts:b,startAdjust:C,endAdjust:M}=Ec(o),V={x:i,y:a},D={x:r,y:s},j=Jd(V,e,D,0),X=Jd(V,e,D,1)-qt,Z=fr(V,e,D,C/t),ee=fr(V,e,D,1-M/t),be=new Path2D;n.beginPath(),be.moveTo(Z.x,Z.y),be.quadraticCurveTo(e.x,e.y,ee.x,ee.y),n.shadowColor=h.borderShadowColor,n.stroke(be),o.path=be,o.ctx=n,oc(n,Z,{angle:j,adjust:C},f),oc(n,ee,{angle:X,adjust:M},b)}var yn=class extends Ji{inRange(o,e,t,i){let a=this.options.rotation,r=(this.options.borderWidth+this.options.hitTolerance)/2;if(t!=="x"&&t!=="y")return kf({x:o,y:e},this.getProps(["width","height","centerX","centerY"],i),a,r);let{x:s,y:h,x2:f,y2:b}=this.getProps(["x","y","x2","y2"],i),C=t==="y"?{start:h,end:b}:{start:s,end:f},M=Cn({x:o,y:e},this.getCenterPoint(i),hi(-a));return M[t]>=C.start-r-bn&&M[t]<=C.end+r+bn}getCenterPoint(o){return Sn(this,o)}draw(o){let{width:e,height:t,centerX:i,centerY:a,options:r}=this;o.save(),Vo(o,this.getCenterPoint(),r.rotation),la(o,this.options),o.beginPath(),o.fillStyle=r.backgroundColor;let s=Ii(o,r);o.ellipse(i,a,t/2,e/2,qt/2,0,2*qt),o.fill(),s&&(o.shadowColor=r.borderShadowColor,o.stroke()),o.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(o,e){return Mc(o,e)}};yn.id="ellipseAnnotation";yn.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,label:Object.assign({},on.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};yn.defaultRoutes={borderColor:"color",backgroundColor:"color"};yn.descriptors={label:{_fallback:!0}};function kf(n,o,e,t){let{width:i,height:a,centerX:r,centerY:s}=o,h=i/2,f=a/2;if(h<=0||f<=0)return!1;let b=hi(e||0),C=Math.cos(b),M=Math.sin(b),V=Math.pow(C*(n.x-r)+M*(n.y-s),2),D=Math.pow(M*(n.x-r)-C*(n.y-s),2);return V/Math.pow(h+t,2)+D/Math.pow(f+t,2)<=1.0001}var oa=class extends Ji{inRange(o,e,t,i){let{x:a,y:r,x2:s,y2:h,width:f}=this.getProps(["x","y","x2","y2","width"],i),b=(this.options.borderWidth+this.options.hitTolerance)/2;return t!=="x"&&t!=="y"?yg({x:o,y:e},this.getCenterPoint(i),f/2,b):lc(t==="y"?{start:r,end:h,value:e}:{start:a,end:s,value:o},b)}getCenterPoint(o){return Sn(this,o)}draw(o){let e=this.options,t=e.borderWidth;if(e.radius<.1)return;o.save(),o.fillStyle=e.backgroundColor,la(o,e);let i=Ii(o,e);Tg(o,this,this.centerX,this.centerY),i&&!No(e.pointStyle)&&(o.shadowColor=e.borderShadowColor,o.stroke()),o.restore(),e.borderWidth=t}resolveElementProperties(o,e){let t=_c(o,e);return t.initProperties=sa(o,t,e),t}};oa.id="pointAnnotation";oa.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};oa.defaultRoutes={borderColor:"color",backgroundColor:"color"};var ra=class extends Ji{inRange(o,e,t,i){if(t!=="x"&&t!=="y")return this.options.radius>=.1&&this.elements.length>1&&Ef(this.elements,o,e,i);let a=Cn({x:o,y:e},this.getCenterPoint(i),hi(-this.options.rotation)),r=this.elements.map(f=>t==="y"?f.bY:f.bX),s=Math.min(...r),h=Math.max(...r);return a[t]>=s&&a[t]<=h}getCenterPoint(o){return Sn(this,o)}draw(o){let{elements:e,options:t}=this;o.save(),o.beginPath(),o.fillStyle=t.backgroundColor,la(o,t);let i=Ii(o,t),a=!0;for(let r of e)a?(o.moveTo(r.x,r.y),a=!1):o.lineTo(r.x,r.y);o.closePath(),o.fill(),i&&(o.shadowColor=t.borderShadowColor,o.stroke()),o.restore()}resolveElementProperties(o,e){let t=_c(o,e),{sides:i,rotation:a}=e,r=[],s=2*qt/i,h=a*lo;for(let f=0;f<i;f++,h+=s){let b=Tf(t,e,h);b.initProperties=sa(o,t,e),r.push(b)}return t.elements=r,t}};ra.id="polygonAnnotation";ra.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};ra.defaultRoutes={borderColor:"color",backgroundColor:"color"};function Tf({centerX:n,centerY:o},{radius:e,borderWidth:t,hitTolerance:i},a){let r=(t+i)/2,s=Math.sin(a),h=Math.cos(a),f={x:n+s*e,y:o-h*e};return{type:"point",optionScope:"point",properties:{x:f.x,y:f.y,centerX:f.x,centerY:f.y,bX:n+s*(e+r),bY:o-h*(e+r)}}}function Ef(n,o,e,t){let i=!1,a=n[n.length-1].getProps(["bX","bY"],t);for(let r of n){let s=r.getProps(["bX","bY"],t);s.bY>e!=a.bY>e&&o<(a.bX-s.bX)*(e-s.bY)/(a.bY-s.bY)+s.bX&&(i=!i),a=s}return i}var nn={box:on,doughnutLabel:aa,ellipse:yn,label:vn,line:Lo,point:oa,polygon:ra};Object.keys(nn).forEach(n=>{wl.describe(`elements.${nn[n].id}`,{_fallback:"plugins.annotation.common"})});var Df={update:Object.assign},Pf=_r.concat(Oo),rc=(n,o)=>Xi(o)?yr(n,o):n,vr=n=>n==="color"||n==="font";function kr(n="line"){return nn[n]?n:(console.warn(`Unknown annotation type: '${n}', defaulting to 'line'`),"line")}function If(n,o,e,t){let i=Rf(n,e.animations,t),a=o.annotations,r=Wf(o.elements,a);for(let s=0;s<a.length;s++){let h=a[s],f=Dc(r,s,h.type),b=h.setContext(Vf(n,f,r,h)),C=f.resolveElementProperties(n,b);C.skip=Of(C),"elements"in C&&(Nf(f,C.elements,b,i),delete C.elements),ui(f.x)||Object.assign(f,C),Object.assign(f,C.initProperties),C.options=Pc(b),i.update(f,C)}}function Of(n){return isNaN(n.x)||isNaN(n.y)}function Rf(n,o,e){return e==="reset"||e==="none"||e==="resize"?Df:new xl(n,o)}function Nf(n,o,e,t){let i=n.elements||(n.elements=[]);i.length=o.length;for(let a=0;a<o.length;a++){let r=o[a],s=r.properties,h=Dc(i,a,r.type,r.initProperties),f=e[r.optionScope].override(r);s.options=Pc(f),t.update(h,s)}}function Dc(n,o,e,t){let i=nn[kr(e)],a=n[o];return(!a||!(a instanceof i))&&(a=n[o]=new i,Object.assign(a,t)),a}function Pc(n){let o=nn[kr(n.type)],e={};e.id=n.id,e.type=n.type,e.drawTime=n.drawTime,Object.assign(e,yr(n,o.defaults),yr(n,o.defaultRoutes));for(let t of Pf)e[t]=n[t];return e}function yr(n,o){let e={};for(let t of Object.keys(o)){let i=o[t],a=n[t];vr(t)&&Zi(a)?e[t]=a.map(r=>rc(r,i)):e[t]=rc(a,i)}return e}function Vf(n,o,e,t){return o.$context||(o.$context=Object.assign(Object.create(n.getContext()),{element:o,get elements(){return e.filter(i=>i&&i.options)},id:t.id,type:"annotation"}))}function Wf(n,o){let e=o.length,t=n.length;if(t<e){let i=e-t;n.splice(t,0,...new Array(i))}else t>e&&n.splice(e,t-e);return n}var Lf="3.1.0",tn=new Map,sc=n=>n.type!=="doughnutLabel",Gf=_r.concat(Oo),Ic={id:"annotation",version:Lf,beforeRegister(){Cg("chart.js","4.0",Et.version)},afterRegister(){Et.register(nn)},afterUnregister(){Et.unregister(nn)},beforeInit(n){tn.set(n,{annotations:[],elements:[],visibleElements:[],listeners:{},listened:!1,moveListened:!1,hooks:{},hooked:!1,hovered:[]})},beforeUpdate(n,o,e){let t=tn.get(n),i=t.annotations=[],a=e.annotations;Xi(a)?Object.keys(a).forEach(r=>{let s=a[r];Xi(s)&&(s.id=r,i.push(s))}):Zi(a)&&i.push(...a),tf(i.filter(sc),n.scales)},afterDataLimits(n,o){let e=tn.get(n);ef(n,o.scale,e.annotations.filter(sc).filter(t=>t.display&&t.adjustScaleRange))},afterUpdate(n,o,e){let t=tn.get(n);$g(n,t,e),If(n,t,e,o.mode),t.visibleElements=t.elements.filter(i=>!i.skip&&i.options.display),Jg(n,t,e)},beforeDatasetsDraw(n,o,e){Ma(n,"beforeDatasetsDraw",e.clip)},afterDatasetsDraw(n,o,e){Ma(n,"afterDatasetsDraw",e.clip)},beforeDatasetDraw(n,o,e){Ma(n,o.index,e.clip)},beforeDraw(n,o,e){Ma(n,"beforeDraw",e.clip)},afterDraw(n,o,e){Ma(n,"afterDraw",e.clip)},beforeEvent(n,o,e){let t=tn.get(n);Zg(t,o.event,e)&&(o.changed=!0)},afterDestroy(n){tn.delete(n)},getAnnotations(n){let o=tn.get(n);return o?o.elements:[]},_getAnnotationElementsAtEventForMode(n,o,e){return Cr(n,o,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:n=>!Gf.includes(n)&&n!=="init",annotations:{_allKeys:!1,_fallback:(n,o)=>`elements.${nn[kr(o.type)].id}`},interaction:{_fallback:!0},common:{label:{_indexable:vr,_fallback:!0},_indexable:vr}},additionalOptionScopes:[""]};function Ma(n,o,e){let{ctx:t,chartArea:i}=n,a=tn.get(n);e&&Jo(t,i);let r=Ff(a.visibleElements,o).sort((s,h)=>s.element.options.z-h.element.options.z);for(let s of r)Bf(t,i,a,s);e&&er(t)}function Ff(n,o){let e=[];for(let t of n)if(t.options.drawTime===o&&e.push({element:t,main:!0}),t.elements&&t.elements.length)for(let i of t.elements)i.options.display&&i.options.drawTime===o&&e.push({element:i});return e}function Bf(n,o,e,t){let i=t.element;t.main?(Yd(e,i,"beforeDraw"),i.draw(n,o),Yd(e,i,"afterDraw")):i.draw(n,o)}var Uf=["widgetDataChart"];Et.register(Ic,Kn,Xn,Yn,$n,Qn,Zn,ho,po);var Oc=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);dsService=A(Ei);ngZone=A(Ge);canvasService=A(je);unitsService=A(at);widgetDataChart=ie("widgetDataChart",{read:Ie});static DEFAULT_CONFIG={displayName:"Chart Label",color:"contrast",filterSelfPaths:!0,datachartPath:null,datachartSource:null,convertUnitTo:null,timeScale:"minute",period:10,numDecimal:1,inverseYAxis:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!0,showTimeScale:!1,startScaleAtZero:!1,verticalChart:!1,showYScale:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null};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;currentDatasetUUID=null;lastVerticalChart=null;pathSignature=se(()=>{let e=this.runtime.options();if(e.datachartPath)return[e.datachartPath,e.convertUnitTo,e.datachartSource,e.timeScale,e.period].join("|")});previousPathSignature=void 0;constructor(){R(()=>{let e=this.pathSignature();e!==this.previousPathSignature&&W(()=>{this.previousPathSignature=e,this.rebuildForDataset(this.runtime.options())})}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=this.lastVerticalChart!==null&&this.lastVerticalChart!==e.verticalChart;this.pathSignature()||i?(this.lastVerticalChart=e.verticalChart,this.rebuildForDataset(e)):this.chart&&(this.ensureAverageDatasetPresence(),this.updateAnnotationVisibility(),this.applyDynamicTrackAverageStyling(),this.setChartOptions(e),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")))})})}ngAfterViewInit(){this.rebuildForDataset(this.runtime.options())}rebuildForDataset(e){!e.datachartPath||(this.dsServiceSub?.unsubscribe(),this.lineChartData.datasets=[],this.dsService.list().find(i=>i.uuid===this.id())?.label!==this.pathSignature()&&(this.dsService.remove(this.id()),this.dsService.create(e.datachartPath,e.datachartSource,e.timeScale,e.period,this.pathSignature(),!0,!1,this.id())),!this.widgetDataChart())||(this.datasetConfig=this.dsService.getDatasetConfig(this.id()),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.id()),this.datasetConfig&&(this.createDatasets(e),this.setChartOptions(e),this.chart?.destroy(),this.chart=new Et(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming(),this.ngZone.runOutsideAngular(()=>this.chart?.update())))}setChartOptions(e){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=e.verticalChart?"y":"x",e.verticalChart?this.lineChartOptions.scales={y:{type:"time",display:e.showTimeScale,position:e.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:e.showYScale,position:e.verticalChart?"top":"bottom",suggestedMin:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMin,suggestedMax:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMax,min:e.enableMinMaxScaleLimit?e.yScaleMin:null,max:e.enableMinMaxScaleLimit?e.yScaleMax:null,beginAtZero:e.startScaleAtZero,reverse:e.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:e.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:e.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:e.showYScale,position:"right",suggestedMin:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMin,suggestedMax:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMax,min:e.enableMinMaxScaleLimit?e.yScaleMin:null,max:e.enableMinMaxScaleLimit?e.yScaleMax:null,beginAtZero:e.startScaleAtZero,reverse:e.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:e.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:e.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${e.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:e.verticalChart?"x":"y",display:e.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:e.verticalChart?"x":"y",display:e.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:e.verticalChart?"x":"y",display:e.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(e){let t,i;e.inverseYAxis&&e.trackAgainstAverage?(t="start",i=!1):e.inverseYAxis&&!e.trackAgainstAverage?(t=!1,i="start"):!e.inverseYAxis&&e.trackAgainstAverage?(t=!0,i=!1):(t=!1,i=!0),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:e.trackAgainstAverage?1:0,parsing:!1,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?0:3,fill:t}),e.showAverageData&&this.lineChartData.datasets.push({label:"Average",data:[],order:e.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?3:0,fill:i}),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)})}ensureAverageDatasetPresence(){let e=this.runtime.options();if(!e||!this.chart)return;let t=this.lineChartData.datasets.some(i=>i.label==="Average");if(e.showAverageData&&!t){if(this.lineChartData.datasets.findIndex(a=>a.label==="Value")>=0){let a=e.inverseYAxis?e.trackAgainstAverage?!1:"start":!e.trackAgainstAverage;this.lineChartData.datasets.push({label:"Average",data:[],order:e.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?3:0,fill:a})}}else!e.showAverageData&&t&&(this.lineChartData.datasets=this.lineChartData.datasets.filter(i=>i.label!=="Average"))}applyDynamicTrackAverageStyling(){let e=this.runtime.options();if(!e)return;let t=this.lineChartData.datasets.find(s=>s.label==="Value"),i=this.lineChartData.datasets.find(s=>s.label==="Average"),a,r;e.inverseYAxis&&e.trackAgainstAverage?(a="start",r=!1):e.inverseYAxis&&!e.trackAgainstAverage?(a=!1,r="start"):!e.inverseYAxis&&e.trackAgainstAverage?(a=!0,r=!1):(a=!1,r=!0),t&&(t.order=e.trackAgainstAverage?1:0,t.borderWidth=e.trackAgainstAverage?0:3,t.fill=a),i&&(i.order=e.trackAgainstAverage?0:1,i.borderWidth=e.trackAgainstAverage?3:0,i.fill=r)}updateAnnotationVisibility(){let e=this.runtime.options();if(!e||!this.chart)return;let t=this.chart.options.plugins.annotation?.annotations;t&&(t.minimumLine&&(t.minimumLine.display=e.showDatasetMinimumValueLine),t.maximumLine&&(t.maximumLine.display=e.showDatasetMaximumValueLine),t.averageLine&&(t.averageLine.display=e.showDatasetAverageValueLine))}getThemeColors(){let e=this.runtime.options()?.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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,t=this.runtime.options()?.convertUnitTo;switch(t){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=t;break}return e}startStreaming(){let e=this.runtime.options();if(!e?.datachartPath)return;this.dsServiceSub?.unsubscribe();let t=this.dsService.getDatasetBatchThenLiveObservable(this.id());this.dsServiceSub=t?.subscribe(i=>{if(this.chart){if(Array.isArray(i)){let a=this.transformDatasetRows(i,0);if(this.chart.data.datasets[0].data.push(...a),e.showAverageData&&this.lineChartData.datasets[1]){let r=this.transformDatasetRows(i,e.datasetAverageArray);this.chart.data.datasets[1].data.push(...r)}}else{let a=this.transformDatasetRows([i],0)[0];if(this.chart.data.datasets[0].data.push(a),this.chart.data.datasets[0].data.length>(this.dataSourceInfo?.maxDataPoints??0)&&this.chart.data.datasets[0].data.shift(),e.showAverageData&&this.lineChartData.datasets[1]){let V=this.transformDatasetRows([i],e.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(V),this.chart.data.datasets[1].data.length>(this.dataSourceInfo?.maxDataPoints??0)&&this.chart.data.datasets[1].data.shift()}let r=e.trackAgainstAverage?i.data.sma??i.data.value:i.data.value,s=this.unitsService.convertToUnit(e.convertUnitTo,r);this.chart.options.plugins.title.text=`${s.toFixed(e.numDecimal)} ${this.getUnitsLabel()}`;let h=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastAverage),f=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastMinimum),b=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastMaximum),M=this.chart.options.plugins.annotation?.annotations;M&&(M.averageLine?.value!==h&&(M.averageLine.value=h,M.averageLine.label.content=`${h.toFixed(e.numDecimal)}`),M.minimumLine?.value!==f&&(M.minimumLine.value=f,M.minimumLine.label.content=`${f.toFixed(e.numDecimal)}`),M.maximumLine?.value!==b&&(M.maximumLine.value=b,M.maximumLine.label.content=`${b.toFixed(e.numDecimal)}`))}this.ngZone.runOutsideAngular(()=>this.chart?.update("none"))}})}transformDatasetRows(e,t){let i=this.runtime.options(),a=h=>this.unitsService.convertToUnit(i.convertUnitTo,h),r=i.verticalChart,s=i.datasetAverageArray;return e.map(h=>{if(r){if(t===0)return{x:a(h.data.value),y:h.timestamp};{let f={sma:h.data.sma,ema:h.data.ema,dema:h.data.doubleEma,avg:h.data.lastAverage};return{x:a(f[s]),y:h.timestamp}}}else{if(t===0)return{x:h.timestamp,y:a(h.data.value)};{let f={sma:h.data.sma,ema:h.data.ema,dema:h.data.doubleEma,avg:h.data.lastAverage};return{x:h.timestamp,y:a(f[s])}}}})}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-data-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,Uf,5,Ie),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}"]})}return n})();var Rc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-boolean-light"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:26,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","bold","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","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","2.5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["filter","url(#glow)","id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","bold","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"],["filter","url(#glow)","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&&(K(),_(0,"svg",0)(1,"defs",1)(2,"linearGradient",2),H(3,"stop",3)(4,"stop",4),k(),H(5,"linearGradient",5),k(),_(6,"g",6),H(7,"rect",7),_(8,"svg",8)(9,"text",9),m(10),k()(),_(11,"g",10),H(12,"circle",11),k()(),_(13,"g",12),H(14,"rect",13),_(15,"svg",8)(16,"defs")(17,"filter",14),H(18,"feGaussianBlur",15),_(19,"feMerge"),H(20,"feMergeNode",16)(21,"feMergeNode",17),k()()(),_(22,"text",18),m(23),k()(),_(24,"g",19),H(25,"circle",20),k()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(9),Y("fill",i.labelColor),g(),ye(" ",i.data().ctrlLabel," "),g(12),Y("fill",i.valueColor),g(),ye("",i.data().ctrlLabel," "),g(2),Y("fill",i.valueColor))},encapsulation:2})}return n})();var Nc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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=Ut(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||n)};static \u0275cmp=L({type:n,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","bold","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","bold","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&&(K(),_(0,"svg",0),H(1,"defs",1),_(2,"g",2),fa("pointerup",function(){return i.handleClickUp()})("pointerleave",function(){return i.handleClickUp()})("pointerdown",function(r){return i.handleClickDown(r)})("pointermove",function(r){return i.handlePointerMove(r)}),_(3,"g",3),H(4,"rect",4)(5,"rect",5),_(6,"svg",6)(7,"text",7),m(8),k()()(),_(9,"g",8),H(10,"rect",9)(11,"rect",10),_(12,"svg",6)(13,"text",11),m(14),k()()()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(7),Y("fill",i.labelColorDisabled),g(),ye(" ",i.data().ctrlLabel," "),g(3),Y("fill",i.valueColor),g(2),Y("fill",i.labelColorEnabled),g(),ye(" ",i.data().ctrlLabel," "))},encapsulation:2})}return n})();var Vc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-boolean-switch"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:24,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","bold","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","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","2.5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["filter","url(#glow)","id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","bold","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"],["filter","url(#glow)","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&&(K(),_(0,"svg",0),H(1,"defs",1),_(2,"g",2),fa("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!0)}),H(3,"rect",3),_(4,"svg",4)(5,"text",5),m(6),k()(),_(7,"g",6),H(8,"rect",7)(9,"circle",8),k()(),_(10,"g",9),fa("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!1)}),H(11,"rect",10),_(12,"svg",4)(13,"defs")(14,"filter",11),H(15,"feGaussianBlur",12),_(16,"feMerge"),H(17,"feMergeNode",13)(18,"feMergeNode",14),k()()(),_(19,"text",15),m(20),k()(),_(21,"g",16),H(22,"rect",17)(23,"circle",18),k()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(5),Y("fill",i.labelColor),g(),ye(" ",i.data().ctrlLabel," "),g(13),Y("fill",i.valueColor),g(),ye("",i.data().ctrlLabel," "),g(2),Y("fill",i.valueColor))},encapsulation:2})}return n})();function qf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-switch",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function zf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-button",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function Hf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-light",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function jf(n,o){if(n&1&&(Dn(0),G(1,qf,1,3,"app-svg-boolean-switch",4)(2,zf,1,3,"app-svg-boolean-button",4)(3,Hf,1,3,"app-svg-boolean-light",4),Pn()),n&2){let e,t=o.$implicit;g(),F((e=t.type)==="1"?1:e==="2"?2:e==="3"?3:-1)}}function Yf(n,o){n&1&&U(0,"div",3)}var Wc=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={displayName:"Switch Panel Label",filterSelfPaths:!0,paths:[],enableTimeout:!1,dataTimeout:5,color:"contrast",putEnable:!0,putMomentary:!1,multiChildCtrls:[]};runtime=A(de,{optional:!0});streams=A(_e,{optional:!0});dashboard=A(wt);signalkRequestsService=A(Di);appService=A(Lt);switchControls=w([]);labelColor=w(void 0);nbCtrl=null;ctrlDimensions={width:0,height:0};skRequestSub=new Ni;constructor(){R(()=>{let e=this.theme(),t=this.runtime?.options();!e||!t||W(()=>{this.labelColor.set(Se(t.color,e).dim)})}),R(()=>{let e=this.runtime?.options();if(!e)return;let t=(e.multiChildCtrls||[]).map(i=>Ke(Ue({},i),{isNumeric:i.isNumeric??!1}));this.nbCtrl=t.length,W(()=>{this.switchControls.set(t),this.streams&&t.forEach(i=>{let a=e.paths?.find(r=>r.pathID===i.pathID);a?.path&&this.streams.observe(a.pathID,r=>{let s=r?.data?.value;i.isNumeric?[0,1,null].includes(s)&&(i.value=!!s):i.value=s})})}),this.subscribeSKRequest()})}onResized(e){let t=this.nbCtrl||1,i=e.contentRect.height/t,a=35*e.contentRect.width/180,r=a<i?a:i;this.ctrlDimensions={width:e.contentRect.width,height:r}}subscribeSKRequest(){this.skRequestSub?.unsubscribe(),this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.id()){let i=`Toggle Widget ${this.runtime?.options()?.displayName||"Switch Panel"}: `;e.statusCode!=200&&(e.message?i+=e.message:i+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(i,0))}})}toggle(e){let t=this.runtime?.options();if(!t?.putEnable)return;let i=t.paths;if(!i)return;let a=i.findIndex(s=>s.pathID===e.pathID);if(a<0)return;let r=i[a].path;r&&(e.isNumeric?this.signalkRequestsService.putRequest(r,e.value?1:0,this.id()):this.signalkRequestsService.putRequest(r,e.value,this.id()))}ngOnDestroy(){this.skRequestSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-boolean-switch"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:6,vars:3,consts:[["widgetContainer",""],[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 a=ae();U(0,"widget-title",1),d(1,"div",2,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),ue(3,jf,4,1,"ng-container",null,Me),u(),G(5,Yf,1,0,"div",3)}if(t&2){let a;T("text",i.runtime==null||(a=i.runtime.options())==null?null:a.displayName)("color",i.labelColor()),g(3),he(i.switchControls()),g(2),F(i.dashboard.isDashboardStatic()?-1:5)}},dependencies:[Pt,ni,Vc,Nc,Rc,To],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 n})();var Lc="mat-badge-content",Qf=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,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)}
|
|
47
|
-
`],encapsulation:2,changeDetection:0})}return n})(),H2=(()=>{class n{_ngZone=A(Ge);_elementRef=A(Ie);_ariaDescriber=A(Vs);_renderer=A(kn);_animationsDisabled=Zt();_idGenerator=A(yi);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=A(Os);_document=A(hs);constructor(){let e=A(Vn);e.load(Qf),e.load(Ps)}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(Lc),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 > .${Lc}`);for(let t of Array.from(e))t!==this._badgeElement&&t.remove()}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","matBadge",""]],hostAttrs:[1,"mat-badge"],hostVars:20,hostBindings:function(t,i){t&2&&Je("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",qe],disabled:[2,"matBadgeDisabled","disabled",qe],position:[0,"matBadgePosition","position"],content:[0,"matBadge","content"],description:[0,"matBadgeDescription","description"],size:[0,"matBadgeSize","size"],hidden:[2,"matBadgeHidden","hidden",qe]}})}return n})(),Gc=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Rs,Ot,Ot]})}return n})();var $f=["rotatingDial"],Zf=["awaIndicator"],Xf=["rudderStarboardRect"],Kf=["rudderPortRect"],Fc=(()=>{class n{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");rudderStarboardRect=ie.required("rudderStarboardRect");rudderPortRect=ie.required("rudderPortRect");apMode=v("off-line");targetPilotHeadingTrue=v.required();autopilotTarget=v.required();courseXte=v.required();compassHeading=v.required();headingDirectionTrue=v.required();appWindAngle=v.required();rudderAngle=v.required();compassAngle=w(0);awaAngle=w(0);prevCompassAngle=0;prevAwaAngle=0;lastRudderSigned=Number.NaN;oldRudderPrtAngle=0;newRudderPrtAngle=0;oldRudderStbAngle=0;newRudderStbAngle=0;apModeValue=w("");apModeValueAnnotation=w("");apModeValueDirection=w("");lockedMode=se(()=>{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==="true wind"?"Wind True Hold":e==="standby"?"Standby":"Off-line"});lockedHdg=se(()=>{let e=this.autopilotTarget();return Number.isFinite(e)?this.roundDeg(e):null});lockedHdgAnnotation=se(()=>{let e=this.apMode();if(["route","auto","gps","nav"].includes(e))return this.targetPilotHeadingTrue()?"True":"Mag";if(["wind","true wind"].includes(e)){let t=this.lockedHdg()??null;return t===null?"":t>0?"Stbd":"Port"}return""});hdgDirectionTrue=se(()=>this.headingDirectionTrue()?"T":"M");animationFrames=new WeakMap;ANIMATION_DURATION=1e3;DEG_TO_PX=16.66666667;ROT_CENTER=[500,560.061];ngZone=A(Ge);roundDeg(e){return Math.round(e)}constructor(){R(()=>{let e=this.compassHeading();if(!Number.isFinite(e))return;let t=this.roundDeg(e);W(()=>{let i=this.prevCompassAngle;if(i===t)return;this.prevCompassAngle=t,this.compassAngle.set(t);let a=this.rotatingDial()?.nativeElement;a&&Dt(a,-i,-t,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),R(()=>{let e=this.appWindAngle();if(!Number.isFinite(e))return;let i=(this.roundDeg(e)+360)%360;W(()=>{let a=this.prevAwaAngle;if(a===i)return;this.prevAwaAngle=i,this.awaAngle.set(i);let r=this.awaIndicator()?.nativeElement;r&&Dt(r,a,i,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),R(()=>{let e=this.rudderAngle();Number.isFinite(e)&&W(()=>{this.updateRudderAngle(-e)})}),R(()=>{let e=this.apMode(),t=this.appWindAngle(),i=Number.isFinite(t)?this.roundDeg(t):0,a=this.courseXte();W(()=>{switch(e){case"auto":case"route":{let r,s,h;a<0?h=" Port":a>0?h=" Stbd":h="",a=Math.abs(a),a>185?(r=(a/1852).toFixed(1),s=" nm"):(r=a.toFixed(0),s=" m"),this.apModeValueAnnotation.set(s),this.apModeValue.set(r),this.apModeValueDirection.set(h);break}case"standby":this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break;case"wind":this.apModeValueAnnotation.set(i?i>0?"S":"P":""),this.apModeValue.set(Math.abs(i)+"\xB0"),this.apModeValueDirection.set("");break;default:this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break}})})}updateRudderAngle(e){if(!Number.isFinite(e))return;let t=this.roundDeg(e);if(this.lastRudderSigned===t)return;this.lastRudderSigned=t;let a=Math.min(Math.abs(t),30)*this.DEG_TO_PX;t<=0?(xa(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,a,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),xa(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderStbAngle=a,this.oldRudderPrtAngle=0):(xa(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,a,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),xa(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderPrtAngle=a,this.oldRudderStbAngle=0)}ngOnDestroy(){let e=[this.rotatingDial(),this.awaIndicator(),this.rudderPortRect(),this.rudderStarboardRect()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let a=this.animationFrames.get(i);a&&cancelAnimationFrame(a),this.animationFrames.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-autopilot"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,$f,5),te(i.awaIndicator,Zf,5),te(i.rudderStarboardRect,Xf,5),te(i.rudderPortRect,Kf,5)),t&2&&me(4)},inputs:{apMode:[1,"apMode"],targetPilotHeadingTrue:[1,"targetPilotHeadingTrue"],autopilotTarget:[1,"autopilotTarget"],courseXte:[1,"courseXte"],compassHeading:[1,"compassHeading"],headingDirectionTrue:[1,"headingDirectionTrue"],appWindAngle:[1,"appWindAngle"],rudderAngle:[1,"rudderAngle"]},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&&(K(),_(0,"svg",4)(1,"g",5)(2,"g",6),H(3,"path",7)(4,"path",8)(5,"path",9),k(),_(6,"g",10,0)(8,"g",11),H(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),_(46,"text",49)(47,"tspan",50),m(48,"330"),k()(),_(49,"text",51)(50,"tspan",52),m(51,"300"),k()(),_(52,"text",53)(53,"tspan",54),m(54,"W"),k()(),_(55,"text",55)(56,"tspan",56),m(57,"240"),k()(),_(58,"text",57)(59,"tspan",58),m(60,"210"),k()(),_(61,"text",59)(62,"tspan",60),m(63,"S"),k()(),_(64,"text",61)(65,"tspan",62),m(66,"150"),k()(),_(67,"text",63)(68,"tspan",64),m(69,"120"),k()(),_(70,"text",65)(71,"tspan",66),m(72,"E"),k()(),_(73,"text",67)(74,"tspan",68),m(75,"60"),k()(),_(76,"text",69)(77,"tspan",70),m(78,"30"),k()(),_(79,"text",71)(80,"tspan",72),m(81,"N"),k()()()(),H(82,"path",73),k(),_(83,"g",74)(84,"text",75),m(85),k(),_(86,"text",76),m(87),_(88,"tspan",77),m(89),k()(),_(90,"text",78),m(91),k(),_(92,"text",79),m(93,"HDG"),k(),_(94,"text",80),m(95),_(96,"tspan",77),m(97),k()()(),_(98,"g",81)(99,"text",82),m(100),_(101,"tspan",83),m(102,"\xB0"),k()(),_(103,"text",84),m(104),k(),_(105,"text",85),m(106),k()(),_(107,"g",86)(108,"g",87,1),H(110,"path",88),_(111,"text",89)(112,"tspan",90),m(113,"A"),k()()()(),_(114,"g",91),H(115,"rect",92,2)(117,"rect",93,3)(119,"rect",94)(120,"rect",95)(121,"rect",96)(122,"rect",97),k()()),t&2&&(g(84),Ft(i.apMode()=="wind"?"awa-text-dim":"contrast-text-dim"),Y("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),g(),ye(" ",i.apMode()==="route"?"XTE":"AWA"),g(),Ft(i.apMode()=="wind"?"awa-text":"contrast-text"),Y("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),g(),ne(i.apModeValue()??"--"),g(2),ne(i.apModeValueAnnotation()),g(),Y("display",i.apMode()=="route"?"inline":"none"),g(),ne(i.apModeValueDirection()),g(4),ye("",i.compassAngle()??"--","\xB0"),g(2),ne(i.hdgDirectionTrue()),g(3),ne(i.lockedHdg()??"--"),g(4),ne(i.lockedHdgAnnotation()),g(2),ne(i.lockedMode()),g(2),Y("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)}"],changeDetection:0})}return n})();var Jf=["childOutlet"],Bc=(()=>{class n{widgetProperties;outlet;_streams=A(_e,{optional:!0});_meta=A(ai,{optional:!0});_runtime=A(de,{optional:!0});_widgetService=A(Go);_app=A(Lt);theme=Qa(this._app.cssThemeColorRoles$,{requireSync:!0});childRef;compType;constructor(){R(()=>{let e=this.theme();this.childRef&&this.childRef.setInput("theme",e)})}ngOnInit(){let e=this.widgetProperties.type;if(!e)return;this.compType=this._widgetService.getComponentType(e),this._runtime?.initialize?.(void 0,this.widgetProperties.config);let t=this._runtime?.options();t&&(this.widgetProperties.config=t),this._streams?.applyStreamsConfigDiff?.(t),this._meta?.applyMetaConfigDiff?.(t),this.outlet&&this.compType&&(this.childRef=this.outlet.createComponent(this.compType),this.childRef.setInput("id",this.widgetProperties.uuid),this.childRef.setInput("type",this.widgetProperties.type),this.childRef.setInput("theme",this.theme()))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-embedded"]],viewQuery:function(t,i){if(t&1&&Qt(Jf,7,Ga),t&2){let a;Ct(a=St())&&(i.outlet=a.first)}},inputs:{widgetProperties:"widgetProperties"},features:[gs([_e,ai,de])],decls:3,vars:0,consts:[["childOutlet",""],["appearance","raised",1,"widget-container","kip-widget-card-colors",2,"border","1px dashed transparent"]],template:function(t,i){t&1&&(d(0,"mat-card",1),Ba(1,null,0),u())},dependencies:[ao,Al],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 n})();function e0(n,o){if(n&1){let e=ae();d(0,"button",17),B("click",function(){q(e);let i=I();return z(i.toggleDodge())}),d(1,"mat-icon",18),K(),d(2,"svg",34)(3,"text",40),m(4,"Dodge"),u(),U(5,"path",41)(6,"path",42),d(7,"text",43),m(8,"!"),u()()()()}if(n&2){let e=I();Je("ap-btn-active",e.dodgeModeActive()),T("disabled",e.apBtnDisabled()),g(5),re("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor"),g(),re("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor")}}function t0(n,o){if(n&1){let e=ae();K(),d(0,"g",48),B("click",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))})("keyup.enter",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))})("keyup.space",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))}),U(1,"rect",49),d(2,"text",50),m(3),u()()}if(n&2){let e=o.$implicit,t=o.$index,i=I(2);Y("aria-label",e.label),g(),Ft(e.isCancel?"svg-menu-item-cancel":e.current?"svg-menu-item-current":e.disabled?"svg-menu-item-disabled":"svg-menu-item"),Y("y",t*i.itemHeight)("height",i.itemHeight),g(),Ft(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"),Y("y",(t+.65)*i.itemHeight),g(),Ui(" ",e.current?"\u2713 ":"","",e.label," ")}}function i0(n,o){if(n&1){let e=ae();d(0,"div",44),B("click",function(){q(e);let i=I();return z(i.toggleMenu())})("keyup.enter",function(){q(e);let i=I();return z(i.toggleMenu())})("keyup.space",function(){q(e);let i=I();return z(i.toggleMenu())}),K(),d(1,"svg",45),B("click",function(i){return q(e),z(i.stopPropagation())})("keyup.enter",function(i){return q(e),z(i.stopPropagation())})("keyup.space",function(i){return q(e),z(i.stopPropagation())}),U(2,"rect",46),Dn(3),ue(4,t0,4,10,":svg:g",47,Me),Pn(),u()()}if(n&2){let e=I();g(),Y("viewBox","0 0 240 "+e.menuItems().length*e.itemHeight),g(),Y("height",e.menuItems().length*e.itemHeight),g(2),he(e.menuItems())}}function n0(n,o){n&1&&U(0,"div",39)}var oi={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"},Oi={BASE:n=>`${oi.V2_AUTOPILOTS}/${n}`,ENGAGE:n=>`${oi.V2_AUTOPILOTS}/${n}/engage`,DISENGAGE:n=>`${oi.V2_AUTOPILOTS}/${n}/disengage`,STATE:n=>`${oi.V2_AUTOPILOTS}/${n}/state`,MODE:n=>`${oi.V2_AUTOPILOTS}/${n}/mode`,TARGET_HEADING:n=>`${oi.V2_AUTOPILOTS}/${n}/target`,TACK:n=>`${oi.V2_AUTOPILOTS}/${n}/tack`,GYBE:n=>`${oi.V2_AUTOPILOTS}/${n}/gybe`,DODGE:n=>`${oi.V2_AUTOPILOTS}/${n}/dodge`,ADJUST_HEADING:n=>`${oi.V2_AUTOPILOTS}/${n}/target/adjust`},Tr={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"}},Er={COUNTDOWN_SECONDS:5,ERROR_DISPLAY_DURATION:6e3,MESSAGE_DISPLAY_DURATION:5e3},Uc=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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},autopilotV2Target:{description:"Autopilot API v2 Target",path:"self.steering.autopilot.target",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",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};runtime=A(de);streams=A(_e,{optional:!0});_requests=A(Di);http=A(Ya);dashboard=A(wt);_destroyRef=A(rt);apiEndpoints;apState=w(null);apEngaged=w(null);apMode=w(null);dodgeModeActive=w(!1);autopilotTargetHeading=w(null);autopilotTargetWindHeading=w(null);heading=w(null);crossTrackError=w(null);windAngleApparent=w(null);rudder=w(null);autopilotTarget=bs(()=>{let e=this.autopilotTargetHeading(),t=this.autopilotTargetWindHeading();return this.apMode()==="wind"?t??null:e??null});currentRequests=new Set;apGrid=se(()=>this.apMode()?"grid":"none");apEngageBtnDisabled=se(()=>{let e=this.apState(),t=this.apEngaged(),i=this.runtime.options().autopilot.apiVersion;return i?i==="v1"?!!["standby","off-line"].includes(e):i!=="v2":!0});apBtnDisabled=se(()=>{let e=this.apEngaged();return this.runtime.options().autopilot.apiVersion==="v1"?this.apMode()==="standby":!e});adjustHdgBtnVisibility=se(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});tackBtnVisibility=se(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});routeBtnVisibility=se(()=>{let e=this.apMode();return e==="route"||e==="nav"});countdownOverlayVisibility=w("hidden");countdownOverlayText=w("");msgOverlayVisibility=w("hidden");msgOverlayText=w("");errorOverlayVisibility=w("hidden");errorOverlayText=w("");handleCountDownCounterTimeout=null;handleConfirmActionTimeout=null;handleDisplayErrorTimeout=null;handleMessageTimeout=null;isPersistentError=!1;countDownValue=-1;actionToBeConfirmed="";menuItems=se(()=>{let e=this.apMode(),t=this.runtime.options().autopilot.apiVersion,i=this.runtime.options().autopilot.pluginId,a=[];return W(()=>{if(t==="v2"){if(i=="pypilot-autopilot-provider"){let r=[{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}];a=this.parseMenuItems(r,e)}}else if(t==="v1"){let r=[{label:"Auto",action:"auto"},{label:"Wind",action:"wind"},{label:"Route",action:"route"},{label:"Close",action:"cancel",isCancel:!0}];a=this.parseMenuItems(r,e)}}),a});menuOpen=w(!1);itemHeight=60;padding=20;embedWidgetColor="contrast";nextWptProperties=w({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:Nn});ttwProperties=w({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:Nn});etaProperties=w({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:Nn});dtwProperties=w({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:Nn});xteProperties=w({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:Nn});constructor(){R(()=>{this.runtime?.options()&&W(()=>{this.cancelAllHttpRequests(),this.isPersistentError=!1,this.errorOverlayVisibility.set("hidden"),this.errorOverlayText.set(""),this.apEngaged.set(null),this.startWidget()})})}ngOnInit(){this.startWidget()}startWidget(){let e={statusCode:500,statusCodeDescription:"Autopilot widget not configured",requestId:"",state:""},t=this.runtime.options().autopilot.apiVersion,i=this.runtime.options().autopilot.instanceId,a=this.runtime.options().autopilot.pluginId,r=s=>{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(!t){r("Not configured with autopilot API version, skipping initialization");return}if(t==="v2"){if(!i){r("No autopilot instance ID configured for V2 API, skipping initialization");return}if(!a){r("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}r(`Unknown autopilot API version: ${t}`)}setV2Endpoint(e){return{engage:Oi.ENGAGE(e),disengage:Oi.DISENGAGE(e),mode:Oi.MODE(e),state:Oi.STATE(e),target:Oi.TARGET_HEADING(e),tack:Oi.TACK(e),gybe:Oi.GYBE(e),dodge:Oi.DODGE(e),adjustHeading:Oi.ADJUST_HEADING(e)}}isV2CommandSupported(e){return this.runtime.options().autopilot.modes.includes(e)}startV2Subscriptions(){this.streams.observe("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.streams.observe("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.streams.observe("autopilotEngaged",e=>{e.data?.value!=null?this.apEngaged.set(e.data.value):(this.apEngaged.set(!1),console.warn("[Autopilot Widget] Autopilot engaged is null or not available"))}),this.streams.observe("autopilotV2Target",e=>{e.data?.value?this.autopilotTarget.set(e.data.value):(this.autopilotTarget.set(null),console.warn("[Autopilot Widget] Autopilot V2 target is null or not available"))}),this.startDataSubscription()}startV1Subscriptions(){this.runtime.options().paths.autopilotMode.path=oi.V1_MODE_PATH,this.streams.observe("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.streams.observe("autopilotTargetHeading",e=>this.autopilotTargetHeading.set(e.data.value!=null?e.data.value:0)),this.streams.observe("autopilotTargetWindHeading",e=>this.autopilotTargetWindHeading.set(e.data.value!=null?e.data.value:0)),this.startDataSubscription(),this.subscribePutResponse(),this.apState.set(null)}startDataSubscription(){this.streams.observe("courseXte",e=>this.crossTrackError.set(e.data.value!=null?e.data.value:0)),this.streams.observe("rudderAngle",e=>{e.data.value===null?this.rudder.set(null):this.rudder.set(this.runtime.options().autopilot.invertRudder?-e.data.value:e.data.value)}),this.runtime.options().autopilot.headingDirectionTrue?this.streams.observe("headingTrue",e=>this.heading.set(e.data.value!=null?e.data.value:0)):this.streams.observe("headingMag",e=>this.heading.set(e.data.value!=null?e.data.value:0)),this.streams.observe("windAngleApparent",e=>this.windAngleApparent.set(e.data.value!=null?e.data.value:0))}subscribePutResponse(){this._requests.subscribeRequest().pipe(et(this._destroyRef)).subscribe(e=>{e.widgetUUID==this.id()&&this.commandReceived(e)})}makeHttpRequest(e){let t=e.pipe(et(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ra(()=>this.currentRequests.delete(t)))}cancelAllHttpRequests(){this.currentRequests.clear()}buildAndSendCommand(e){let t=Tr[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,Tr.advanceWaypoint);return}this.routeCommand(e,t)}routeCommand(e,t){let i=this.runtime.options().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.id()}))}sendV1Command(e){this._requests.putRequest(e.path,e.value,this.id()),console.log(`AP Action:
|
|
48
|
-
`+JSON.stringify(e))}sendV2Command(e,t){return it(this,null,function*(){let i=this.apiEndpoints;if(!i){console.error("V2 endpoints not available");return}let a=this.dodgeModeActive(),r;switch(e){case"+1":r={path:a?i.dodge:i.adjustHeading,value:{value:1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"+10":r={path:a?i.dodge:i.adjustHeading,value:{value:10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-1":r={path:a?i.dodge:i.adjustHeading,value:{value:-1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-10":r={path:a?i.dodge:i.adjustHeading,value:{value:-10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"advanceWaypoint":r={path:`${
|
|
49
|
-
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"],[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&&(d(0,"div",0)(1,"div",1)(2,"button",2),B("click",function(){return i.toggleMenu()}),d(3,"mat-icon",3),K(),d(4,"svg",4)(5,"text",5),m(6),At(7,"titlecase"),u()()()(),Ve(),d(8,"button",6),B("click",function(){return i.buildAndSendCommand("standby")}),d(9,"mat-icon",3),K(),d(10,"svg",4)(11,"text",7),m(12,"Disengage"),u()()()()(),Ve(),d(13,"div",8),U(14,"app-svg-autopilot",9),d(15,"div",10),K(),d(16,"svg",11),U(17,"text",12)(18,"text",13),u()(),Ve(),d(19,"div",14)(20,"span",15),m(21,"warning"),u(),K(),d(22,"svg",11),U(23,"text",16),u()()(),Ve(),d(24,"div")(25,"button",17),B("click",function(){return i.buildAndSendCommand("-1")}),d(26,"mat-icon",18),K(),d(27,"svg",19)(28,"text",20),m(29,"-1\xB0"),u(),U(30,"path",21),u()()()(),Ve(),d(31,"div")(32,"button",17),B("click",function(){return i.buildAndSendCommand("+1")}),d(33,"mat-icon",18),K(),d(34,"svg",19)(35,"text",22),m(36,"+1\xB0"),u(),U(37,"path",23),u()()()(),Ve(),d(38,"div")(39,"button",17),B("click",function(){return i.buildAndSendCommand("-10")}),d(40,"mat-icon",18),K(),d(41,"svg",19)(42,"text",20),m(43,"-10\xB0"),u(),U(44,"path",24)(45,"path",25),u()()()(),Ve(),d(46,"div")(47,"button",17),B("click",function(){return i.buildAndSendCommand("+10")}),d(48,"mat-icon",18),K(),d(49,"svg",19)(50,"text",22),m(51,"+10\xB0"),u(),U(52,"path",26)(53,"path",27),u()()()(),Ve(),d(54,"div")(55,"button",17),B("click",function(){return i.buildAndSendCommand("tackToPort")}),d(56,"mat-icon",18),K(),d(57,"svg",19)(58,"text",20),m(59,"Tack"),u(),d(60,"g",28),U(61,"path",29)(62,"path",30)(63,"circle",31),u()()()()(),Ve(),d(64,"div")(65,"button",17),B("click",function(){return i.buildAndSendCommand("tackToStarboard")}),d(66,"mat-icon",18),K(),d(67,"svg",19)(68,"text",20),m(69,"Tack"),u(),U(70,"path",29)(71,"path",30)(72,"circle",31),u()()()(),Ve(),d(73,"div"),U(74,"widget-embedded",32),u(),d(75,"div"),U(76,"widget-embedded",32),u(),d(77,"div"),U(78,"widget-embedded",32),u(),d(79,"div"),U(80,"widget-embedded",32),u(),d(81,"div"),G(82,e0,9,11,"button",33),u(),d(83,"div")(84,"button",17),B("click",function(){return i.buildAndSendCommand("route")}),d(85,"mat-icon",18),K(),d(86,"svg",34)(87,"text",35),m(88,"Adv Wpt"),u(),U(89,"path",36)(90,"path",37),u()()()()(),G(91,i0,6,2,"div",38),G(92,n0,1,0,"div",39)),t&2&&(re("display",i.apGrid()),g(2),T("disabled",i.apState()==="off-line"||i.apMode()==="off-line"),g(4),ye("Mode ",Bt(7,62,i.apMode())," \xA0\u22EE"),g(2),Ft(i.apEngaged()?"ap-btn ap-btn-ctrlbar ap-btn-engage":"ap-btn ap-btn-ctrlbar ap-btn-disengage"),T("disabled",i.apEngageBtnDisabled()),g(6),T("apMode",i.apMode())("targetPilotHeadingTrue",i.runtime.options().autopilot.courseDirectionTrue)("autopilotTarget",i.autopilotTarget())("courseXte",i.crossTrackError())("compassHeading",i.heading())("headingDirectionTrue",i.runtime.options().autopilot.headingDirectionTrue)("appWindAngle",i.windAngleApparent())("rudderAngle",i.rudder()),g(),re("visibility",i.countdownOverlayVisibility()),g(2),T("innerHTML",i.countdownOverlayText(),La),g(),re("visibility",i.countDownValue>=0?"visible":"hidden"),T("innerHTML",i.countDownValue+1,La),g(),re("visibility",i.errorOverlayVisibility()),g(4),T("innerHTML",i.errorOverlayText(),La),g(),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(6),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(6),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(7),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(7),re("display",i.tackBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(9),re("display",i.tackBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(8),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.nextWptProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.etaProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.dtwProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.xteProperties()),g(),re("display",i.routeBtnVisibility()?"block":"none"),g(),F(i.runtime.options().autopilot.apiVersion==="v2"?82:-1),g(),re("display",i.routeBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()||i.dodgeModeActive()),g(7),F(i.menuOpen()?91:-1),g(),F(i.dashboard.isDashboardStatic()?-1:92))},dependencies:[Fc,Xe,lt,Ze,ze,Gc,Bc,Ha],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 n})();var a0=["Core","Gauge","Component","Racing"];var Go=(()=>{class n{_plugins=A(oo);_widgetCategories=[...a0];_componentTypeCache=new Map;_componentTypeMap={WidgetNumericComponent:id,WidgetTextComponent:nd,WidgetWindTrendsChartComponent:ad,WidgetWindComponent:cd,WidgetTutorialComponent:md,WidgetSliderComponent:hd,WidgetSimpleLinearComponent:gd,WidgetRacesteerComponent:Ad,WidgetRacerTimerComponent:vd,WidgetRacerLineComponent:yd,WidgetRaceTimerComponent:Cd,WidgetPositionComponent:Sd,WidgetLabelComponent:wd,WidgetIframeComponent:xd,WidgetHorizonComponent:_d,WidgetHeelGaugeComponent:Md,WidgetSteelGaugeComponent:Td,WidgetGaugeNgRadialComponent:Nd,WidgetGaugeNgLinearComponent:Wd,WidgetGaugeNgCompassComponent:Fd,WidgetFreeboardskComponent:El,WidgetDatetimeComponent:Bd,WidgetDataChartComponent:Oc,WidgetBooleanSwitchComponent:Wc,WidgetAutopilotComponent:Uc};_widgetDefinition=[{name:"Numeric",description:"Displays numeric data in a clear and concise format, with options to show minimum and/or maximum recorded values. Includes an optional background minichart for quick visual trend insights.",icon:"numericWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-numeric",componentClassName:"WidgetNumericComponent"},{name:"Text",description:"Displays text data with a customizable color formatting option.",icon:"textWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-text",componentClassName:"WidgetTextComponent"},{name:"Date & Time",description:"Displays date and time data with fully custom formatting options and timezone correction.",icon:"datetimeWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-datetime",componentClassName:"WidgetDatetimeComponent"},{name:"Position",description:"Displays latitude and longitude for location tracking and navigation.",icon:"positionWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-position",componentClassName:"WidgetPositionComponent"},{name:"Static Label",description:"A static text widget that allows you to add customizable labels to your dashboard, helping to organize and clarify your layout effectively.",icon:"labelWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-label",componentClassName:"WidgetLabelComponent"},{name:"Switch Panel",description:"A Digital Switching panel group with multiple controls including toggle switches, indicator lights, and press buttons to send Signal K paths values and other operations.",icon:"switchpanelWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-boolean-switch",componentClassName:"WidgetBooleanSwitchComponent"},{name:"Slider",description:"A Digital Switching range slider that allows users to adjust values, such as controlling lighting intensity or audio volume from 0% to 100%.",icon:"sliderWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-slider",componentClassName:"WidgetSliderComponent"},{name:"Compact Linear",description:"A simple horizontal linear gauge with a large value label offering a clean, compact modern look.",icon:"simpleLinearGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-simple-linear",componentClassName:"WidgetSimpleLinearComponent"},{name:"Linear",description:"A horizontal or vertical linear gauge that supports zone highlighting.",icon:"linearGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-linear",componentClassName:"WidgetGaugeNgLinearComponent"},{name:"Radial",description:"A radial gauge with configurable capacity and measurement dials plus zone highlighting.",icon:"radialGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-radial",componentClassName:"WidgetGaugeNgRadialComponent"},{name:"Compass",description:"A faceplate or card-style rotating compass gauge with multiple cardinal point indicator options.",icon:"compassGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-compass",componentClassName:"WidgetGaugeNgCompassComponent"},{name:"Level Gauge",description:"Dual-scale heel angle indicator combining a high\u2011precision \xB15\xB0 fine level with a wide \xB140\xB0 coarse arc for fast trim tuning and broader heel / sea\u2011state monitoring.",icon:"level",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-heel-gauge",componentClassName:"WidgetHeelGaugeComponent"},{name:"Pitch & Roll",description:"Horizon-style attitude indicator showing live pitch and roll degrees with smooth animation\u2014ideal for monitoring trim, heel, and sea-state response.",icon:"pitchRollGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-horizon",componentClassName:"WidgetHorizonComponent"},{name:"Classic Steel",description:"A traditional steel looking linear & radial gauges replica that supports range sizes and zones highlights.",icon:"steelGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-steel",componentClassName:"WidgetSteelGaugeComponent"},{name:"Windsteer",description:"A wind steering display that combines wind, wind sectors, heading, course over ground and next waypoint information.",icon:"windsteeringWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-wind-steer",componentClassName:"WidgetWindComponent"},{name:"Freeboard-SK",description:"Adds the Freeboard-SK chart plotter as a widget with automatic sign-in to your dashboard.",icon:"freeboardWidget",minWidth:6,minHeight:8,defaultWidth:6,defaultHeight:14,category:"Component",requiredPlugins:["freeboard-sk","tracks","resources-provider","course-provider"],selector:"widget-freeboardsk",componentClassName:"WidgetFreeboardskComponent"},{name:"Autopilot Head",description:"Provides typical autopilot controls for Signal K v1 & v2 Autopilot API devices. Requires a compatible hardware-specific Autopilot plugin for full functionality.",icon:"autopilotWidget",minWidth:4,minHeight:14,defaultWidth:4,defaultHeight:14,category:"Component",requiredPlugins:[],optionalPlugins:["autopilot","pypilot-autopilot-provider"],selector:"widget-autopilot",componentClassName:"WidgetAutopilotComponent"},{name:"Realtime Data Chart",description:"Visualizes data on a real-time chart with multiple preconfigured series including actuals, SMA and period overall averages and Min/Max. Requires the KIP Dataset to be configured.",icon:"datachartWidget",minWidth:2,minHeight:4,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-data-chart",componentClassName:"WidgetDataChartComponent"},{name:"Embed Webpage Viewer",description:"Embeds external web-based applications\u2014such as Grafana graphs or other Signal K apps\u2014into your dashboard for seamless integration. Interaction is disabled by default but can be enabled.",icon:"embedWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-iframe",componentClassName:"WidgetIframeComponent"},{name:"Tutorial",description:"An instructional widget that guides new users through basic navigation, gestures, and dashboard editing steps.",icon:"helpWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-tutorial",componentClassName:"WidgetTutorialComponent"},{name:"Racesteer (BETA)",description:"A dynamic race steering display that fuses polar performance data with live conditions to guide optimal steering, tacking, and gybing angles for maximum speed. Instantly compare performance against competition polars for smarter tactical decisions.",icon:"racesteeringWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Racing",requiredPlugins:["signalk-polar-performance-plugin"],selector:"widget-racesteer",componentClassName:"WidgetRacesteerComponent"},{name:"Racer - Start Line Insight",description:"Gain a tactical advantage for racing starts: set and adjust the port and starboard ends of the start line, see your distance to the line, the favored end, and how much the line is favored or unfavored. Includes visual integration with Freeboard SK for interactive line adjustment and display.",icon:"racerlineWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:4,requiredPlugins:["signalk-racer"],category:"Racing",selector:"widget-racer-line",componentClassName:"WidgetRacerLineComponent"},{name:"Racer - Start Timer",description:"An advanced racing countdown timer that indicates OCS (On Course Side) status. Set the start line, choose or adjust the duration, or specify the exact start time. Automatically switches to the target dashboard at the start unless over early.",icon:"racertimerWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:4,requiredPlugins:["signalk-racer"],category:"Racing",selector:"widget-racer-timer",componentClassName:"WidgetRacerTimerComponent"},{name:"Wind Trends",description:"Real-time True Wind trends with dual top axes for direction (\xB0) and speed (knots). Displays live values and SMA over the current period\u2019s average.",icon:"windtrendsWidget",minWidth:10,minHeight:8,defaultWidth:10,defaultHeight:8,category:"Racing",requiredPlugins:[],selector:"widget-windtrends-chart",componentClassName:"WidgetWindTrendsChartComponent"}];get kipWidgets(){return this._widgetDefinition}get categories(){return this._widgetCategories}getComponentType(e){let t=this._componentTypeCache.get(e);if(t)return t;let i=this._widgetDefinition.find(r=>r.selector===e);if(!i)return;let a=this._componentTypeMap[i.componentClassName];if(a)return this._componentTypeCache.set(e,a),a}getKipWidgetsWithStatus(){return it(this,null,function*(){let e={},t=Array.from(new Set(this._widgetDefinition.flatMap(i=>[...i.requiredPlugins||[],...i.optionalPlugins||[]])));return yield Promise.all(t.map(i=>it(this,null,function*(){e[i]=yield this._plugins.isEnabled(i)}))),this._widgetDefinition.map(i=>{let a=i.requiredPlugins||[],r=i.optionalPlugins||[],s=a.map(C=>({name:C,enabled:e[C],required:!0})),h=r.map(C=>({name:C,enabled:e[C],required:!1})),f=[...s,...h],b=s.every(C=>C.enabled);return b&&r.length>0&&(b=h.some(C=>C.enabled)),Ke(Ue({},i),{isDependencyValid:b,pluginsStatus:f})})})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function o0(n,o){n&1&&(d(0,"span"),m(1,", "),u())}function r0(n,o){if(n&1&&(d(0,"span",8),m(1),d(2,"span",9),m(3),u()(),G(4,o0,2,0,"span")),n&2){let e=o.$implicit,t=o.$index,i=o.$count,a=I(2);T("ngClass",a.pluginDependencyValid()?e.required?"":e.enabled?"dependency-optional-present-met":"dependency-optional-missing-met":e.enabled?e.required?"dependency-required-ok":"dependency-optional-ok":e.required?"dependency-required-error":"dependency-optional-error"),Y("title",e.required?"Required":"Optional"),g(),Ui(" ",e.enabled?"\u2714":"\u2716"," ",e.name," "),g(2),ne(e.required?"":"(optional)"),g(),F(t!==i-1?4:-1)}}function s0(n,o){if(n&1&&(d(0,"div",7)(1,"span"),m(2,"Plugins:"),u(),ue(3,r0,5,6,null,null,Me),u()),n&2){let e=I();Rn(e.pluginsStatus().length>0?"margin-bottom: 8px;margin-top: 4px;":""),g(),Ft(e.pluginDependencyValid()?"":"dependency-error"),g(2),he(e.pluginsStatus())}}var qc=(()=>{class n{svgIcon=v.required();iconSize=v.required();name=v.required();description=v.required();pluginsStatus=v.required();pluginDependencyValid=v.required();onKeydown(e){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.target.click())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-list-card"]],hostBindings:function(t,i){t&1&&B("keydown",function(r){return i.onKeydown(r)})},inputs:{svgIcon:[1,"svgIcon"],iconSize:[1,"iconSize"],name:[1,"name"],description:[1,"description"],pluginsStatus:[1,"pluginsStatus"],pluginDependencyValid:[1,"pluginDependencyValid"]},decls:9,vars:11,consts:[["role","button","tabindex","0",1,"item-container"],[1,"item-icon"],["aria-hidden","false",3,"svgIcon"],[1,"item-label"],[1,"title","no-text-select"],[1,"dependency","no-text-select",3,"style"],[1,"description","no-text-select"],[1,"dependency","no-text-select"],[3,"ngClass"],[1,"plugin-type-label"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),U(2,"mat-icon",2),u(),d(3,"div",3)(4,"p",4),m(5),u(),G(6,s0,5,4,"div",5),d(7,"span",6),m(8),u()()()),t&2&&(Y("aria-disabled",i.pluginDependencyValid()?null:"true"),g(2),re("width",i.iconSize(),"px")("height",i.iconSize(),"px"),T("svgIcon",i.svgIcon()),g(2),Rn(i.pluginsStatus().length>0?"margin-bottom:0px; margin-top: 4px":""),g(),ne(i.name()),g(),F(i.pluginsStatus().length>0?6:-1),g(2),ne(i.description()))},dependencies:[ja,ys,Ze,ze],styles:["[_nghost-%COMP%]{display:block;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;padding:0}.item-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;width:100%;height:100%;margin:0;padding:15px;border:solid 1px var(--mat-sys-outline);cursor:pointer}.item-container[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-inverse-on-surface)}.item-container[_ngcontent-%COMP%]:focus-visible{background-color:var(--mat-sys-surface-bright);outline:-webkit-focus-ring-color auto 0px}.item-icon[_ngcontent-%COMP%]{width:48px}.item-label[_ngcontent-%COMP%]{width:calc(100% - 48px);text-align:left;padding-left:15px}.title[_ngcontent-%COMP%]{font-size:var(--mat-sys-label-medium-line-height)}.description[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dependency[_ngcontent-%COMP%]{color:var(--mat-sys-outline);text-align:start;font-style:italic;font-size:var(--mat-sys-label-large-size)}.dependency-error[_ngcontent-%COMP%]{color:var(--kip-port-color);font-weight:700}.dependency-required-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color);font-weight:700}.dependency-required-error[_ngcontent-%COMP%]{color:var(--kip-port-color);font-weight:700;text-decoration:underline}.dependency-optional-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color)}.dependency-optional-error[_ngcontent-%COMP%]{color:var(--kip-port-color)}.dependency-optional-missing-met[_ngcontent-%COMP%]{color:var(--mat-sys-outline);text-decoration:line-through}.dependency-optional-present-met[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.plugin-type-label[_ngcontent-%COMP%]{font-size:.8em;margin-left:2px;opacity:.7}.dependency-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color)}.no-text-select[_ngcontent-%COMP%]{-webkit-user-select:none;user-select:none}"]})}return n})();var l0=(n,o)=>o.selector;function d0(n,o){if(n&1&&(d(0,"mat-button-toggle",1),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function c0(n,o){if(n&1){let e=ae();d(0,"widget-list-card",3),B("click",function(){let i=q(e).$implicit,a=I();return z(a.onSelectWidget(i))}),u()}if(n&2){let e=o.$implicit;Je("dependency-missing",!e.isDependencyValid),T("svgIcon",e.icon)("iconSize",48)("name",e.name)("description",e.description)("pluginDependencyValid",e.isDependencyValid)("pluginsStatus",e.pluginsStatus)}}var zc=(()=>{class n{_dialogRef=A(Si);_widgets=A(Go);_widgetsList=[];filteredWidgetsList=w([]);_widgetCategory=w("Core");isDependencyValid=w(!0);ngOnInit(){this.loadWidgets()}loadWidgets(){return it(this,null,function*(){this._widgetsList=yield this._widgets.getKipWidgetsWithStatus(),this.filteredWidgetsList.set(this._widgetsList.filter(e=>e.category===this._widgetCategory()))})}onCategoryChange(e){this.filteredWidgetsList.set(this._widgetsList.filter(t=>t.category===e.value)),this._widgetCategory.set(e.value)}onSelectWidget(e){if(!e.isDependencyValid)return;let{name:t,description:i,icon:a,minWidth:r,minHeight:s,defaultWidth:h,defaultHeight:f,category:b,requiredPlugins:C,optionalPlugins:M,selector:V,componentClassName:D}=e,j=Ke(Ue({name:t,description:i,icon:a,minWidth:r,minHeight:s,defaultWidth:h,defaultHeight:f,category:b,requiredPlugins:C},M?{optionalPlugins:M}:{}),{selector:V,componentClassName:D});this._dialogRef.close(j)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widgets-list"]],decls:7,vars:1,consts:[["name","widgetCategories","aria-label","Widget categories",1,"list-filter",3,"change","value"],[3,"value"],[3,"dependency-missing","svgIcon","iconSize","name","description","pluginDependencyValid","pluginsStatus"],[3,"click","svgIcon","iconSize","name","description","pluginDependencyValid","pluginsStatus"]],template:function(t,i){t&1&&(d(0,"div")(1,"mat-button-toggle-group",0),B("change",function(r){return i.onCategoryChange(r)}),ue(2,d0,2,2,"mat-button-toggle",1,Me),u(),d(4,"div"),ue(5,c0,1,8,"widget-list-card",2,l0),u()()),t&2&&(g(),T("value",i._widgetCategory()),g(),he(i._widgets.categories),g(3),he(i.filteredWidgetsList()))},dependencies:[td,lr,_o,qc],styles:[".list-filter[_ngcontent-%COMP%]{margin-bottom:20px}.dependency-missing[_ngcontent-%COMP%]{pointer-events:none;opacity:.8;background-color:var(--mat-sys-neutral10)}"]})}return n})();var Hc=(()=>{class n{dialogRef=A(Si);upgradeSvc=A(Dl);upgrade(){this.upgradeSvc.runUpgrade(void 0)}startFresh(){this.upgradeSvc.startFresh(),this.dialogRef.close()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["upgrade-config"]],decls:193,vars:0,consts:[[1,"warning"],[1,"nav-table"],[2,"font-size","x-large"],["href","https://discord.gg/AMDYT2DQga","target","_blank"],[1,"button-group"],["mat-flat-button","",3,"click"],["mat-flat-button","",2,"margin-left","20px",3,"click"]],template:function(t,i){t&1&&(d(0,"h2"),m(1,"All New Touch, Mouse, and Keyboard Navigation"),u(),d(2,"p",0)(3,"strong"),m(4,"Heads up:"),u(),m(5," The new version introduces a completely redesigned fullscreen interface with no navigation bar. Please review the input modes table below to get an understanding of the new ways to operate KIP before upgrading. After the upgrade, give yourself time to get comfortable with the changes."),u(),d(6,"table",1)(7,"thead")(8,"tr")(9,"th"),m(10,"Actions"),u(),d(11,"th"),m(12,"Touch"),u(),d(13,"th"),m(14,"Mouse"),u(),d(15,"th"),m(16,"Keyboard Shortcuts"),u()()(),d(17,"tbody")(18,"tr")(19,"td"),m(20,"Open Actions menu"),u(),d(21,"td"),m(22,"Swipe left"),u(),d(23,"td"),m(24,"Click, drag left, and release"),u(),d(25,"td")(26,"kbd"),m(27,"Shift"),u(),m(28," + "),d(29,"kbd"),m(30,"Ctrl"),u(),m(31," + "),d(32,"kbd",2),m(33,"\u2190"),u(),m(34," (Left Arrow)"),u()(),d(35,"tr")(36,"td"),m(37,"Open Notification menu"),u(),d(38,"td"),m(39,"Swipe right"),u(),d(40,"td"),m(41,"Click, drag right, and release"),u(),d(42,"td")(43,"kbd"),m(44,"Shift"),u(),m(45," + "),d(46,"kbd"),m(47,"Ctrl"),u(),m(48," + "),d(49,"kbd",2),m(50,"\u2192"),u(),m(51," (Right Arrow)"),u()(),d(52,"tr")(53,"td"),m(54,"Cycle through dashboards"),u(),d(55,"td"),m(56,"Swipe up/down"),u(),d(57,"td"),m(58,"Click, drag up/down, and release"),u(),d(59,"td")(60,"kbd"),m(61,"Shift"),u(),m(62," + "),d(63,"kbd"),m(64,"Ctrl"),u(),m(65," + "),d(66,"kbd",2),m(67,"\u2191"),u(),m(68,"/"),d(69,"kbd",2),m(70,"\u2193"),u(),m(71," (Up/Down Arrow)"),u()(),d(72,"tr")(73,"td"),m(74,"Toggle Fullscreen"),u(),d(75,"td"),m(76,"N/A"),u(),d(77,"td"),m(78,"N/A"),u(),d(79,"td")(80,"kbd"),m(81,"Shift"),u(),m(82," + "),d(83,"kbd"),m(84,"Ctrl"),u(),m(85," + "),d(86,"kbd"),m(87,"F"),u()()(),d(88,"tr")(89,"td"),m(90,"Toggle Night mode"),u(),d(91,"td"),m(92,"N/A"),u(),d(93,"td"),m(94,"N/A"),u(),d(95,"td")(96,"kbd"),m(97,"Shift"),u(),m(98," + "),d(99,"kbd"),m(100,"Ctrl"),u(),m(101," + "),d(102,"kbd"),m(103,"N"),u()()(),d(104,"tr")(105,"td"),m(106,"Toggle dashboard edit mode"),u(),d(107,"td"),m(108,"N/A"),u(),d(109,"td"),m(110,"N/A"),u(),d(111,"td")(112,"kbd"),m(113,"Shift"),u(),m(114," + "),d(115,"kbd"),m(116,"Ctrl"),u(),m(117," + "),d(118,"kbd"),m(119,"E"),u()()()()(),d(120,"i"),m(121,"Note that the words Touch and Tap are synonymous with mouse click."),u(),U(122,"br")(123,"br"),d(124,"h2"),m(125,"Migration Limitations"),u(),d(126,"p")(127,"span",0),m(128,"Important:"),u(),m(129," The new widget layout engine is "),d(130,"strong"),m(131,"completely different"),u(),m(132," from the previous version. When you upgrade, your configuration will be migrated, but "),d(133,"strong"),m(134,"the way dashboards and widgets are arranged will change significantly"),u(),m(135,`.
|
|
41
|
+
`+JSON.stringify(e))}subscribeRequest(){return this.requestStatus$.asObservable()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Dl=(()=>{class n{_storage=A(Ms);_settings=A(Zt);upgrading=w(!1);error=w(null);messages=w([]);legacyFileVersion=9;legacyConfigVersion=10;targetConfigVersion=12;static widgetTypeToSelectorMap={WidgetNumeric:"widget-numeric",WidgetTextGeneric:"widget-text",WidgetDateGeneric:"widget-datetime",WidgetBooleanSwitch:"widget-boolean-switch",WidgetBlank:"widget-blank",WidgetStateComponent:"widget-button",WidgetSimpleLinearComponent:"widget-simple-linear",WidgetGaugeNgLinearComponent:"widget-gauge-ng-linear",WidgetGaugeNgRadialComponent:"widget-gauge-ng-radial",WidgetGaugeNgCompassComponent:"widget-gauge-ng-compass",WidgetGaugeComponent:"widget-gauge-steel",WidgetWindComponent:"widget-wind-steer",WidgetFreeboardskComponent:"widget-freeboardsk",WidgetAutopilotComponent:"widget-autopilot",WidgetDataChart:"widget-data-chart",WidgetRaceTimerComponent:"widget-racetimer",WidgetIframeComponent:"widget-iframe",WidgetTutorial:"widget-tutorial"};runUpgrade(e){return it(this,null,function*(){if(this.error.set(null),this.upgrading.set(!0),this.messages.set([]),e===void 0)try{let t=yield this._storage.listConfigs(this.legacyFileVersion);for(let i of t){let a=yield this.transformConfig(i);if(a)try{yield this._storage.setConfig(a.scope,a.name,a.newConfiguration),yield this._storage.setConfig(a.scope,a.name,a.oldConfiguration,this.legacyFileVersion),this.pushMsg(`[Upgrade] Configuration ${a.scope}/${a.name} upgraded to version ${this.targetConfigVersion}. Old configuration patched to version 0.`)}catch(r){this.pushError(`[Upgrade] Error saving configuration for ${i.name}: ${r.message}`)}}setTimeout(()=>this._settings.reloadApp(),1500)}catch(t){this.pushError("Error fetching configuration data: "+t.message)}else if(e===11&&this._settings.useSharedConfig)try{let t=yield this._storage.listConfigs(11);for(let i of t)try{let a=yield this._storage.getConfig(i.scope,i.name,11),r=qt(a);this.pushMsg(`[Upgrade] Saving configuration backup to file ${i.scope}/${i.name}...`),yield this._storage.setConfig(i.scope,i.name,r,11.99),this.pushMsg(`[Upgrade] ${i.scope}/${i.name} -> v${this.targetConfigVersion}.`);let s=this.upgradeConfig(a);if(!s)continue;this.pushMsg("[Upgrade] Saving upgraded configurations..."),yield this._storage.setConfig(i.scope,i.name,s)}catch(a){this.pushError(`[Upgrade] Error upgrading ${i.scope}/${i.name}: ${a.message}`)}this.pushMsg("[Upgrade] Reloading app to finalize upgrade..."),setTimeout(()=>this._settings.reloadApp(),1500)}catch(t){this.pushError("Error fetching configuration data. Aborting upgrade. Details: "+t.message)}else if(e===11&&!this._settings.useSharedConfig){let t={app:null,dashboards:null,theme:null};t.app=this._settings.getAppConfig(),t.dashboards=this._settings.getDashboardConfig(),t.theme=this._settings.getThemeConfig(),t.app.configVersion=this.targetConfigVersion,this.addSplitShellConfigKeys(t.app);let i=this.extractAppDatasets(t.app);this.upgradeDashboardWidgets(t.dashboards),this.migrateDatasetsToDataCharts(i,t.dashboards),this.migrateUseNeedleToEnableNeedle(t.dashboards),localStorage.setItem("appConfig",JSON.stringify(t.app)),localStorage.setItem("dashboardsConfig",JSON.stringify(t.dashboards)),localStorage.setItem("themeConfig",JSON.stringify(t.theme)),setTimeout(()=>this._settings.reloadApp(),1500),this.upgrading.set(!1)}else{let t={app:null,widget:null,layout:null,theme:null};t.app=this._settings.loadConfigFromLocalStorage("appConfig"),t.widget=this._settings.loadConfigFromLocalStorage("widgetConfig"),t.layout=this._settings.loadConfigFromLocalStorage("layoutConfig"),t.theme=this._settings.loadConfigFromLocalStorage("themeConfig");let i=this.transformApp(t.app),a=this.extractAppDatasets(i),r=this.transformTheme(t.theme),s=t.layout?.rootSplits||[],h=t.layout?.splitSets||[],f=t.widget?.widgets||[],b=s.map((C,M)=>{let N=this.extractWidgetsFromSplitSets(h,f,C);return{id:C,name:`Dashboard ${M+1}`,configuration:N}});this.migrateDatasetsToDataCharts(a,b),this.migrateUseNeedleToEnableNeedle(b),localStorage.setItem("appConfig",JSON.stringify(i)),localStorage.setItem("dashboardsConfig",JSON.stringify(b)),localStorage.setItem("themeConfig",JSON.stringify(r)),setTimeout(()=>this._settings.reloadApp(),1500),this.upgrading.set(!1)}})}startFresh(){if(this.error.set(null),this.upgrading.set(!0),this._storage.initConfig===null)this._storage.listConfigs(this.legacyFileVersion).then(e=>it(this,null,function*(){for(let t of e){let i=yield this._storage.getConfig(t.scope,t.name,this.legacyFileVersion);if(i.app.configVersion=0,t.scope==="global")try{setTimeout(()=>{this._storage.patchGlobal(t.name,t.scope,i,"replace",this.legacyFileVersion),this.pushMsg(`[Retired] Configuration ${t.scope}/${t.name} patched to version 0.`)},750)}catch{this.pushError(`[Upgrade] Error saving configuration for ${t.name}.`)}else try{yield this._storage.setConfig(t.scope,t.name,i,this.legacyFileVersion),this.pushMsg(`[Retired] Configuration ${t.scope}/${t.name} patched to version 0.`)}catch{this.pushError(`[Upgrade] Error saving configuration for ${t.name}.`)}}})).catch(e=>this.pushError("Error fetching configuration data: "+e.message)).finally(()=>{this.upgrading.set(!1),this._settings.resetSettings()});else{let e={app:null,dashboards:null,theme:null};e.app=this._settings.loadConfigFromLocalStorage("appConfig"),e.theme=this._settings.loadConfigFromLocalStorage("themeConfig"),e.app.configVersion=this.targetConfigVersion,e.app.nightModeBrightness=.27,e.theme.themeName="",localStorage.setItem("appConfig",JSON.stringify(e.app)),localStorage.setItem("themeConfig",JSON.stringify(e.theme)),localStorage.removeItem("widgetConfig"),localStorage.removeItem("layoutConfig"),this.upgrading.set(!1)}}transformConfig(e){return it(this,null,function*(){let t=yield this._storage.getConfig(e.scope,e.name,this.legacyFileVersion);if(t.app.configVersion!==this.legacyConfigVersion)return this.pushError(`[Upgrade Service] ${e.scope}/${e.name} is not an upgradable version ${this.legacyConfigVersion} config. Skipping.`),null;let i=this.transformApp(t.app),a=this.extractAppDatasets(i),r=this.transformTheme(t.theme),s=t.layout?.rootSplits||[],h=t.layout?.splitSets||[],f=t.widget?.widgets||[],b=s.map((M,N)=>{let D=this.extractWidgetsFromSplitSets(h,f,M);return{id:M,name:`Dashboard ${N+1}`,configuration:D}});this.migrateDatasetsToDataCharts(a,b),this.migrateUseNeedleToEnableNeedle(b);let C=qt(t);return C.app.configVersion=0,{scope:e.scope,name:e.name,newConfiguration:{app:i,theme:r,dashboards:b},oldConfiguration:C}})}extractAppDatasets(e){if(!e||!Array.isArray(e.dataSets))return[];let t=0,i=[],a=[];e.dataSets.forEach((r,s)=>{(r.editable===!0||r.editable===void 0)&&(a.push({period:r.period,datachartPath:r.path,datachartSource:r.pathSource,timeScale:r.timeScaleFormat,datasetUUID:r.uuid}),i.push(s),t++)});for(let r=i.length-1;r>=0;r--)e.dataSets.splice(i[r],1);return t&&this.pushMsg(`[Upgrade] Retired ${t} Dataset(s).`),a}migrateDatasetsToDataCharts(e,t){!Array.isArray(e)||e.length===0||Array.isArray(t)&&t.forEach(i=>{let a=0;i&&Array.isArray(i.configuration)&&(i.configuration.forEach(r=>{if(r&&typeof r=="object"&&r.input?.widgetProperties?.config){let s=e.find(h=>h.datasetUUID===r.input?.widgetProperties?.config.datasetUUID);s&&(Object.entries(s).forEach(([h,f])=>{h!=="datasetUUID"&&(r.input.widgetProperties.config[h]=f)}),delete r.input.widgetProperties.config?.datasetUUID,delete r.input.widgetProperties.config?.timeScaleFormat,a++)}}),a&&this.pushMsg(`[Upgrade] Migrated ${a} Realtime Data Chart widget(s).`))})}transformWidget(e,t){if(e.color==="white"&&(e.color="contrast"),e.textColor){switch(e.textColor){case"text":e.color="contrast";break;case"primary":e.color="blue";break;case"accent":e.color="yellow";break;case"warn":e.color="purple";break;case"nobar":t==="WidgetGaugeNgLinearComponent"&&(e.color="blue",e.gauge=e.gauge||{},e.gauge.useNeedle=!1);break;default:e.color=e.textColor}delete e.textColor}return e}transformApp(e){if(!e)return null;let t=qt(e);return t.configVersion=this.targetConfigVersion,t.nightModeBrightness=.27,t.splitShellEnabled=!1,t.splitShellSide="left",t.splitShellWidth=.2,t.splitShellSwipeDisabled=!1,t}transformTheme(e){return e?{themeName:""}:null}upgradeConfig(e){try{if(e.app.configVersion!==11)return this.pushError(`[Upgrade Service] Config version ${e.app.configVersion} upgrade is not supported. Skipping...`),null;this.addSplitShellConfigKeys(e.app);let t=this.extractAppDatasets(e.app);this.migrateDatasetsToDataCharts(t,e.dashboards),this.migrateUseNeedleToEnableNeedle(e.dashboards);let i=0,a=0;if(Array.isArray(e.dashboards)){for(let r of e.dashboards)if(r&&Array.isArray(r.configuration)){for(let s of r.configuration)if(s&&typeof s=="object"){s.selector!=="widget-host2"&&(s.selector="widget-host2",i++);let h=f=>{let b=s[f],C=typeof b=="string"?Number(b):b;Number.isFinite(C)&&C!==0&&(s[f]=C*2,a++)};if(h("w"),h("h"),h("x"),h("y"),s.w===void 0||s.w===null){let f=s.minW,b=f||2;s.w=b,a++}if(s.h===void 0||s.h===null){let f=s.minH,b=f||2;s.h=b,a++}}}}return i&&this.pushMsg(`[Upgrade] Updated ${i} widget selector(s) to 'widget-host2'.`),a&&this.pushMsg(`[Upgrade] Doubled widget grid metrics for ${a} non-zero (w/h/x/y) entries.`),e.app.configVersion=12,{app:e.app,theme:e.theme,dashboards:e.dashboards}}catch(t){return this.pushError(`[Upgrade Service] Error upgrading ${e.app.configVersion}: ${t.message}`),null}}migrateUseNeedleToEnableNeedle(e){if(!Array.isArray(e))return;let t=0;for(let i of e)if(!(!i||!Array.isArray(i.configuration)))for(let a of i.configuration){let h=a.input?.widgetProperties?.config?.gauge;!h||typeof h!="object"||Object.prototype.hasOwnProperty.call(h,"useNeedle")&&(h.enableNeedle===void 0?h.enableNeedle=!!h.useNeedle:h.enableNeedle=!!h.enableNeedle,delete h.useNeedle,t++)}t&&this.pushMsg(`[Upgrade] Renamed gauge.useNeedle -> gauge.enableNeedle on ${t} widget(s).`)}addSplitShellConfigKeys(e){e&&(e.splitShellEnabled===void 0&&(e.splitShellEnabled=!1),e.splitShellSide===void 0&&(e.splitShellSide="left"),e.splitShellWidth===void 0&&(e.splitShellWidth=.2),e.splitShellSwipeDisabled===void 0&&(e.splitShellSwipeDisabled=!1))}upgradeDashboardWidgets(e){let t=0,i=0;if(Array.isArray(e)){for(let a of e)if(!(!a||!Array.isArray(a.configuration)))for(let r of a.configuration){if(!r||typeof r!="object")continue;r.selector!=="widget-host2"&&(r.selector="widget-host2",t++);let s=h=>{let f=r[h],b=typeof f=="string"?Number(f):f;Number.isFinite(b)&&b!==0&&(r[h]=b*2,i++)};if(s("w"),s("h"),s("x"),s("y"),r.w===void 0||r.w===null){let h=r.minW,f=typeof h=="string"?Number(h):h,b=Number.isFinite(f)&&f>0?f:2;r.w=b*2,i++}if(r.h===void 0||r.h===null){let h=r.minH,f=typeof h=="string"?Number(h):h,b=Number.isFinite(f)&&f>0?f:2;r.h=b*2,i++}}}t&&this.pushMsg(`[Upgrade] Updated ${t} localStorage widget selector(s) to 'widget-host2'.`),i&&this.pushMsg(`[Upgrade] Doubled grid metrics for ${i} non-zero (w/h/x/y) entries.`)}extractWidgetsFromSplitSets(e,t,i){let a=new Map(t.map(j=>[j.uuid,j])),r=[],s=[],h=0,f=0,b=24,C=24,M=3,N=3,D=j=>{let X=e.find(Z=>Z.uuid===j);if(!X){s.push(`Missing splitSet with UUID: ${j}`);return}X.splitAreas.forEach(Z=>{if(Z.type==="widget"){let ee=a.get(Z.uuid);if(ee){if(ee.type==="WidgetBlank")return;if(f+N>C){s.push(`No space left for widget: ${ee.uuid}`);return}let be=n.widgetTypeToSelectorMap[ee.type]||"widget-unknown",Oe=this.transformWidget(ee.config,ee.type);r.push({id:ee.uuid,selector:"widget-host2",input:{widgetProperties:{type:be,uuid:ee.uuid,config:Oe}},x:h,y:f,w:M,h:N}),h+=M,h>=b&&(h=0,f+=N)}else s.push(`Missing widget with UUID: ${Z.uuid}`)}else Z.type==="splitSet"&&D(Z.uuid)})};return D(i),s.length&&this.pushMsg("Transformation Issues: "+s.join("; ")),r}pushMsg(e){this.messages.update(t=>[...t,e])}pushError(e){this.error.set(e),this.pushMsg(e)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function Tm(n,o){n&1&&Ba(0)}var Pl=(()=>{class n{data=A(wi);static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-frame"]],decls:8,vars:3,consts:[[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"dialog-content-padding"],[4,"ngComponentOutlet"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"h6",1),m(2),u(),d(3,"button",2)(4,"mat-icon"),m(5,"close"),u()()(),d(6,"mat-dialog-content",3),Bi(7,Tm,1,0,"ng-container",4),u()),t&2&&(g(2),ne(i.data.title),g(),T("mat-dialog-close",!1),g(4),T("ngComponentOutlet",i.data.componentType))},dependencies:[ze,Kt,xi,_i,Mi,Ke,xt,Cs],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return n})();function Em(n,o){if(n&1&&(d(0,"button",4),m(1),u()),n&2){let e=I();T("mat-dialog-close",!0),g(),ne(e.data.confirmBtnText)}}var Il=(()=>{class n{data=A(wi);static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-confirmation"]],decls:12,vars:6,consts:[[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"h5",1),m(2),u(),d(3,"button",2)(4,"mat-icon"),m(5,"close"),u()()(),d(6,"mat-dialog-content"),m(7),u(),d(8,"mat-dialog-actions",3)(9,"button",4),m(10),u(),G(11,Em,2,2,"button",4),u()),t&2&&(g(2),ne(i.data.title),g(),T("mat-dialog-close",!1),g(4),ye(" ",i.data.message,`
|
|
42
|
+
`),g(2),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?11:-1))},dependencies:[ze,Kt,xi,_i,zi,Mi,Ke,lt,xt],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return n})();function Dm(n,o){if(n&1&&(d(0,"button",9),m(1),u()),n&2){let e=I(),t=It(1);T("disabled",!t.valid),g(),ne(e.data.confirmBtnText)}}var Ol=(()=>{class n{dialogRef=A(Si);data=A(wi);saveName(){this.dialogRef.close(this.data)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-name"]],decls:19,vars:6,consts:[["name","ngForm"],["name","name",3,"ngSubmit"],[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"field-margin"],["matInput","","type","text","id","name","placeholder","Name","name","name","required","","cdkFocusInitial","",3,"ngModelChange","ngModel"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"],["mat-flat-button","","type","submit",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();d(0,"form",1,0),B("ngSubmit",function(){return q(a),z(i.saveName())}),d(2,"div",2)(3,"h5",3),m(4),u(),d(5,"button",4)(6,"mat-icon"),m(7,"close"),u()()(),d(8,"mat-dialog-content")(9,"mat-form-field",5)(10,"mat-label"),m(11,"Name"),u(),d(12,"input",6),un("ngModelChange",function(s){return q(a),mn(i.data.name,s)||(i.data.name=s),z(s)}),u(),d(13,"mat-error"),m(14," A name is required "),u()()(),d(15,"mat-dialog-actions",7)(16,"button",8),m(17),u(),G(18,Dm,2,2,"button",9),u()()}t&2&&(g(4),ne(i.data.title),g(),T("mat-dialog-close",!1),g(7),cn("ngModel",i.data.name),g(4),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?18:-1))},dependencies:[Kt,xi,_i,zi,Mi,Xe,ze,ei,ut,mt,Yi,ti,ft,Ke,lt,xt,pt,Bn,dt,nt,Mt,ct,Fn,no],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}.field-margin[_ngcontent-%COMP%]{margin-left:15px;margin-bottom:15px}"]})}return n})();function Pm(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",ci(e.value)),g(),ne(e.label)}}function Im(n,o){if(n&1){let e=ae();d(0,"button",21),B("click",function(){q(e);let i=I();return z(i.moveCtrlUp())}),d(1,"mat-icon"),m(2,"arrow_drop_up"),u()()}}function Om(n,o){if(n&1){let e=ae();d(0,"button",22),B("click",function(){q(e);let i=I();return z(i.moveCtrlDown())}),d(1,"mat-icon"),m(2,"arrow_drop_down"),u()()}}var Rl=(()=>{class n{app=A(Lt);ctrlFormGroup=v.required();controlIndex=v(void 0);arrayLength=v(void 0);deleteCtrl=$e();moveUp=$e();moveDown=$e();colors=[];ngOnInit(){this.colors=this.app.configurableThemeColors}deleteControl(){let e={ctrlIndex:this.controlIndex(),pathID:this.ctrlFormGroup().get("pathID").value};this.deleteCtrl.emit(e)}moveCtrlUp(){this.moveUp.emit(this.controlIndex())}moveCtrlDown(){this.moveDown.emit(this.controlIndex())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["boolean-control-config"]],inputs:{ctrlFormGroup:[1,"ctrlFormGroup"],controlIndex:[1,"controlIndex"],arrayLength:[1,"arrayLength"]},outputs:{deleteCtrl:"deleteCtrl",moveUp:"moveUp",moveDown:"moveDown"},decls:36,vars:3,consts:[[1,"ctrl-grid","rounded-card","rounded-card-color",3,"formGroup"],[1,"controls","flex-container"],[1,"flex-label"],[1,"full-width"],["matInput","","type","string","placeholder","Enter a display label...","formControlName","ctrlLabel"],[1,"flex-settings"],[1,"settings"],["placeholder","Select Type...","formControlName","type","name","type","required",""],["value","1"],["value","2"],["value","3"],["placeholder","Select Color...","formControlName","color","name","color","required",""],[3,"value"],[1,"flex-full-width"],["formControlName","isNumeric"],[1,"actions"],[1,"flex-actions"],[1,"btn-grid"],["mat-icon-button","","type","button","aria-label","Move control up in the list",1,"up"],["mat-icon-button","","type","button","aria-label","Move control down in the list",1,"down"],["mat-icon-button","","type","button","aria-label","Delete control",1,"delete",3,"click"],["mat-icon-button","","type","button","aria-label","Move control up in the list",1,"up",3,"click"],["mat-icon-button","","type","button","aria-label","Move control down in the list",1,"down",3,"click"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1)(2,"div",2)(3,"mat-form-field",3)(4,"mat-label"),m(5,"Label"),u(),U(6,"input",4),u()(),d(7,"div",5)(8,"mat-form-field",6)(9,"mat-label"),m(10,"Type"),u(),d(11,"mat-select",7)(12,"mat-option",8),m(13,"Toggle"),u(),d(14,"mat-option",9),m(15,"Push"),u(),d(16,"mat-option",10),m(17,"Indicator"),u()()()(),d(18,"div",5)(19,"mat-form-field",6)(20,"mat-label"),m(21,"Color"),u(),d(22,"mat-select",11),ue(23,Pm,2,3,"mat-option",12,Me),u()()(),d(25,"div",13)(26,"mat-checkbox",14),m(27," Use numeric path "),u()()(),d(28,"div",15)(29,"div",16)(30,"div",17),G(31,Im,3,0,"button",18),G(32,Om,3,0,"button",19),d(33,"button",20),B("click",function(){return i.deleteControl()}),d(34,"mat-icon"),m(35,"delete"),u()()()()()()),t&2&&(T("formGroup",i.ctrlFormGroup()),g(23),he(i.colors),g(8),F(i.controlIndex()!==0?31:-1),g(),F(i.controlIndex()!==i.arrayLength()-1?32:-1))},dependencies:[pt,dt,nt,Mt,ct,gt,kt,Hi,ut,mt,ft,ii,Tt,xt,ni,Gt,Xe,ze],styles:['.ctrl-grid[_ngcontent-%COMP%]{display:grid;width:auto;height:auto;margin:0 0 10px;grid-template-columns:[col-start] calc(100% - 90px) [col1-end] 80px [col2-end];grid-template-areas:"controls actions";row-gap:0px;column-gap:10px;justify-items:center;align-items:center;justify-content:center;align-content:center;padding-top:20px}.controls[_ngcontent-%COMP%]{grid-area:controls;width:100%}.actions[_ngcontent-%COMP%]{grid-area:actions}.btn-grid[_ngcontent-%COMP%]{display:grid;width:80px;height:80px;margin:0;grid-template-columns:[col-start] 50% [col1-end] 50% [col2-end];grid-template-rows:[row-start] 50% [row1-end] 50% [row2-end];grid-template-areas:"up delete" "down delete";row-gap:0px;column-gap:0px;justify-items:center;align-items:center;justify-content:center;align-content:center}.up[_ngcontent-%COMP%]{grid-area:up}.down[_ngcontent-%COMP%]{grid-area:down}.delete[_ngcontent-%COMP%]{grid-area:delete}.flex-label[_ngcontent-%COMP%]{flex-grow:2;flex-shrink:2}.flex-settings[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.settings[_ngcontent-%COMP%]{min-width:100px}.flex-actions[_ngcontent-%COMP%]{flex-grow:0;flex-shrink:0}.flex-full-width[_ngcontent-%COMP%]{width:100%}']})}return n})();function Rm(n,o){if(n&1){let e=ae();d(0,"boolean-control-config",4),B("moveUp",function(i){q(e);let a=I();return z(a.moveUp(i))})("moveDown",function(i){q(e);let a=I();return z(a.moveDown(i))})("deleteCtrl",function(i){q(e);let a=I();return z(a.deletePath(i))}),u()}if(n&2){let e=o.$implicit,t=o.$index,i=I();T("ctrlFormGroup",i.getFormGroup(e))("controlIndex",t)("arrayLength",i.arrayLength)}}var Nl=(()=>{class n{fb=A(qn);multiCtrlArray=v.required();addPath=$e();updatePath=$e();delPath=$e();multiFormGroup=null;arrayLength=0;multiCtrlArraySubscription=null;ngOnInit(){this.arrayLength=this.multiCtrlArray().length,this.multiFormGroup=new el({multiCtrlArray:this.multiCtrlArray()}),this.multiCtrlArraySubscription=this.multiCtrlArray().valueChanges.pipe(Li(350)).subscribe(e=>{this.updatePath.emit(e)})}addCtrlGroup(){let e=qi.create();this.multiCtrlArray().push(this.fb.group({ctrlLabel:[null,_t.required],type:["1",_t.required],pathID:[e],color:["contrast"],isNumeric:[!1],value:[null]})),this.arrayLength=this.multiCtrlArray().length;let t={path:{description:null,path:null,pathID:e,source:"default",pathType:"boolean",supportsPut:!0,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,convertUnitTo:null,sampleTime:500},ctrlType:1};this.addPath.emit(t)}moveUp(e){let t=this.multiCtrlArray().at(e);this.multiCtrlArray().removeAt(e,{emitEvent:!1}),this.multiCtrlArray().insert(e-1,t,{emitEvent:!1})}moveDown(e){let t=this.multiCtrlArray().at(e);this.multiCtrlArray().removeAt(e,{emitEvent:!1}),this.multiCtrlArray().insert(e+1,t,{emitEvent:!1})}deletePath(e){this.delPath.emit(e),this.arrayLength=this.multiCtrlArray().length}getFormGroup(e){return e}ngOnDestroy(){this.multiCtrlArraySubscription?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["boolean-multicontrol-options"]],inputs:{multiCtrlArray:[1,"multiCtrlArray"]},outputs:{addPath:"addPath",updatePath:"updatePath",delPath:"delPath"},decls:7,vars:1,consts:[[3,"formGroup"],["formArrayName","multiCtrlArray"],[1,"full-width",3,"ctrlFormGroup","controlIndex","arrayLength"],["type","button","mat-mini-fab","","color","primary","aria-label","Add control down in the list",1,"add-btn",3,"click"],[1,"full-width",3,"moveUp","moveDown","deleteCtrl","ctrlFormGroup","controlIndex","arrayLength"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),ue(2,Rm,1,3,"boolean-control-config",2,En),d(4,"button",3),B("click",function(){return i.addCtrlGroup()}),d(5,"mat-icon"),m(6,"add"),u()()()()),t&2&&(T("formGroup",i.multiFormGroup),g(2),he(i.multiCtrlArray().controls))},dependencies:[pt,Mt,gt,kt,al,Rl,Ke,Ls,Xe,ze],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;padding-top:15px;padding-bottom:15px}.add-btn[_ngcontent-%COMP%]{margin-left:calc(50% - 20px)}"]})}return n})();var Nm=["input"],Vm=["formField"],Wm=["*"],vo=class{source;value;constructor(o,e){this.source=o,this.value=e}},Lm={provide:Gn,useExisting:Mn(()=>ar),multi:!0},Vl=new Yt("MatRadioGroup"),Gm=new Yt("mat-radio-default-options",{providedIn:"root",factory:Fm});function Fm(){return{color:"accent",disabledInteractive:!1}}var ar=(()=>{class n{_changeDetector=A(Ut);_value=null;_name=A(yi).getId("mat-radio-group-");_selected=null;_isInitialized=!1;_labelPosition="after";_disabled=!1;_required=!1;_buttonChanges;_controlValueAccessorChangeFn=()=>{};onTouched=()=>{};change=new yt;_radios;color;get name(){return this._name}set name(e){this._name=e,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition=e==="before"?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(e){this._selected=e,this.value=e?e.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markRadiosForCheck()}get required(){return this._required}set required(e){this._required=e,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markRadiosForCheck()}_disabledInteractive=!1;constructor(){}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(e=>e===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(e=>{e.name=this.name,e._markForCheck()})}_updateSelectedRadioFromValue(){let e=this._selected!==null&&this._selected.value===this._value;this._radios&&!e&&(this._selected=null,this._radios.forEach(t=>{t.checked=this.value===t.value,t.checked&&(this._selected=t)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new vo(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(e=>e._markForCheck())}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetector.markForCheck()}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["mat-radio-group"]],contentQueries:function(t,i,a){if(t&1&&dn(a,yo,5),t&2){let r;Ct(r=St())&&(i._radios=r)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[2,"disabled","disabled",qe],required:[2,"required","required",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matRadioGroup"],features:[hn([Lm,{provide:Vl,useExisting:n}])]})}return n})(),yo=(()=>{class n{_elementRef=A(Ie);_changeDetector=A(Ut);_focusMonitor=A(Xa);_radioDispatcher=A(gl);_defaultOptions=A(Gm,{optional:!0});_ngZone=A(We);_renderer=A(kn);_uniqueId=A(yi).getId("mat-radio-");_cleanupClick;id=this._uniqueId;name;ariaLabel;ariaLabelledby;ariaDescribedby;disableRipple=!1;tabIndex=0;get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=e,e&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!e&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),e&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this.radioGroup!==null&&(this.checked||(this.checked=this.radioGroup.value===e),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(e){this._labelPosition=e}_labelPosition;get disabled(){return this._disabled||this.radioGroup!==null&&this.radioGroup.disabled}set disabled(e){this._setDisabled(e)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(e){e!==this._required&&this._changeDetector.markForCheck(),this._required=e}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||"accent"}set color(e){this._color=e}_color;get disabledInteractive(){return this._disabledInteractive||this.radioGroup!==null&&this.radioGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new yt;radioGroup;get inputId(){return`${this.id||this._uniqueId}-input`}_checked=!1;_disabled;_required;_value=null;_removeUniqueSelectionListener=()=>{};_previousTabIndex;_inputElement;_rippleTrigger;_noopAnimations=Xt();_injector=A(Fi);constructor(){A(Vn).load(to);let e=A(Vl,{optional:!0}),t=A(new qa("tabindex"),{optional:!0});this.radioGroup=e,this._disabledInteractive=this._defaultOptions?.disabledInteractive??!1,t&&(this.tabIndex=$o(t,0))}focus(e,t){t?this._focusMonitor.focusVia(this._inputElement,t,e):this._inputElement.nativeElement.focus(e)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((e,t)=>{e!==this.id&&t===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{!e&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._cleanupClick=this._renderer.listen(this._inputElement.nativeElement,"click",this._onInputClick)})}ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new vo(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(e){if(e.stopPropagation(),!this.checked&&!this.disabled){let t=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),t&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(e){this._onInputInteraction(e),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(e){this._disabled!==e&&(this._disabled=e,this._changeDetector.markForCheck())}_onInputClick=e=>{this.disabled&&this.disabledInteractive&&e.preventDefault()};_updateTabIndex(){let e=this.radioGroup,t;if(!e||!e.selected||this.disabled?t=this.tabIndex:t=e.selected===this?this.tabIndex:-1,t!==this._previousTabIndex){let i=this._inputElement?.nativeElement;i&&(i.setAttribute("tabindex",t+""),this._previousTabIndex=t,Tn(()=>{queueMicrotask(()=>{e&&e.selected&&e.selected!==this&&document.activeElement===i&&(e.selected?._inputElement.nativeElement.focus(),document.activeElement===i&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-radio-button"]],viewQuery:function(t,i){if(t&1&&($t(Nm,5),$t(Vm,7,Ie)),t&2){let a;Ct(a=St())&&(i._inputElement=a.first),Ct(a=St())&&(i._rippleTrigger=a.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:19,hostBindings:function(t,i){t&1&&B("focus",function(){return i._inputElement.nativeElement.focus()}),t&2&&(Y("id",i.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),Je("mat-primary",i.color==="primary")("mat-accent",i.color==="accent")("mat-warn",i.color==="warn")("mat-mdc-radio-checked",i.checked)("mat-mdc-radio-disabled",i.disabled)("mat-mdc-radio-disabled-interactive",i.disabledInteractive)("_mat-animation-noopable",i._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],disableRipple:[2,"disableRipple","disableRipple",qe],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$o(e)],checked:[2,"checked","checked",qe],value:"value",labelPosition:"labelPosition",disabled:[2,"disabled","disabled",qe],required:[2,"required","required",qe],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matRadioButton"],ngContentSelectors:Wm,decls:13,vars:17,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],[1,"mat-mdc-radio-touch-target",3,"click"],["type","radio","aria-invalid","false",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],[1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","",1,"mat-radio-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(t,i){if(t&1){let a=ae();In(),d(0,"div",2,0)(2,"div",3)(3,"div",4),B("click",function(s){return q(a),z(i._onTouchTargetClick(s))}),u(),d(4,"input",5,1),B("change",function(s){return q(a),z(i._onInputInteraction(s))}),u(),d(6,"div",6),U(7,"div",7)(8,"div",8),u(),d(9,"div",9),U(10,"div",10),u()(),d(11,"label",11),On(12),u()()}t&2&&(T("labelPosition",i.labelPosition),g(2),Je("mdc-radio--disabled",i.disabled),g(2),T("id",i.inputId)("checked",i.checked)("disabled",i.disabled&&!i.disabledInteractive)("required",i.required),Y("name",i.name)("value",i.value)("aria-label",i.ariaLabel)("aria-labelledby",i.ariaLabelledby)("aria-describedby",i.ariaDescribedby)("aria-disabled",i.disabled&&i.disabledInteractive?"true":null),g(5),T("matRippleTrigger",i._rippleTrigger.nativeElement)("matRippleDisabled",i._isRippleDisabled())("matRippleCentered",!0),g(2),T("for",i.inputId))},dependencies:[eo,bl],styles:[`.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:not([disabled])~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-hover-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:hover>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-hover-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-pressed-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio:active>.mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-pressed-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px);top:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2);left:calc(-1*(var(--mat-radio-state-layer-size, 40px) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0);border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),background-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}@media(forced-colors: active){.mat-mdc-radio-button .mdc-radio__inner-circle{background-color:CanvasText !important}}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mat-radio-state-layer-size, 40px);height:var(--mat-radio-state-layer-size, 40px)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-selected-focus-icon-color, var(--mat-sys-primary, currentColor))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-unselected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background>.mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background>.mdc-radio__inner-circle{background-color:var(--mat-radio-disabled-selected-icon-color, var(--mat-sys-on-surface, currentColor));opacity:var(--mat-radio-disabled-selected-icon-opacity, 0.38)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-sys-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple>.mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio>.mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background>.mdc-radio__outer-circle{border-color:var(--mat-radio-unselected-focus-icon-color, var(--mat-sys-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-focus-indicator::before{content:""}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display, block)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}
|
|
43
|
+
`],encapsulation:2,changeDetection:0})}return n})(),Wl=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Ot,io,yo,Ot]})}return n})();function Um(n,o){if(n&1&&(d(0,"mat-option",8),m(1),u()),n&2){let e=o.$implicit;T("value",ci(e.value)),g(),ne(e.label)}}var Ll=(()=>{class n{app=A(Lt);displayName=v.required();showLabel=v.required();convertUnitTo=v.required();datasetUUID=v.required();datasetAverageArray=v.required();showAverageData=v.required();trackAgainstAverage=v.required();showDatasetMinimumValueLine=v.required();showDatasetMaximumValueLine=v.required();showDatasetAverageValueLine=v.required();showDatasetAngleAverageValueLine=v.required();verticalChart=v.required();inverseYAxis=v.required();showTimeScale=v.required();showYScale=v.required();startScaleAtZero=v.required();yScaleSuggestedMin=v.required();yScaleSuggestedMax=v.required();enableMinMaxScaleLimit=v.required();yScaleMin=v.required();yScaleMax=v.required();numDecimal=v.required();color=v.required();colors=[];ngOnInit(){this.colors=this.app.configurableThemeColors,this.showAverageData()&&!this.showAverageData()?.value&&this.trackAgainstAverage().disable(),this.enableMinMaxScaleLimit()&&this.setValueScaleOptionsControls(this.enableMinMaxScaleLimit().value)}setValueScaleOptionsControls(e){e?(this.yScaleMin()?.enable(),this.yScaleMax()?.enable(),this.yScaleSuggestedMin()?.disable(),this.yScaleSuggestedMax()?.disable()):(this.yScaleMin()?.disable(),this.yScaleMax()?.disable(),this.yScaleSuggestedMin()?.enable(),this.yScaleSuggestedMax()?.enable())}setScaleControls(e){this.setValueScaleOptionsControls(e.value)}enableTrackAgainstMovingAverage(e){e.checked?this.trackAgainstAverage().enable():(this.trackAgainstAverage().setValue(e.checked),this.trackAgainstAverage().disable())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["config-display-chart-options"]],inputs:{displayName:[1,"displayName"],showLabel:[1,"showLabel"],convertUnitTo:[1,"convertUnitTo"],datasetUUID:[1,"datasetUUID"],datasetAverageArray:[1,"datasetAverageArray"],showAverageData:[1,"showAverageData"],trackAgainstAverage:[1,"trackAgainstAverage"],showDatasetMinimumValueLine:[1,"showDatasetMinimumValueLine"],showDatasetMaximumValueLine:[1,"showDatasetMaximumValueLine"],showDatasetAverageValueLine:[1,"showDatasetAverageValueLine"],showDatasetAngleAverageValueLine:[1,"showDatasetAngleAverageValueLine"],verticalChart:[1,"verticalChart"],inverseYAxis:[1,"inverseYAxis"],showTimeScale:[1,"showTimeScale"],showYScale:[1,"showYScale"],startScaleAtZero:[1,"startScaleAtZero"],yScaleSuggestedMin:[1,"yScaleSuggestedMin"],yScaleSuggestedMax:[1,"yScaleSuggestedMax"],enableMinMaxScaleLimit:[1,"enableMinMaxScaleLimit"],yScaleMin:[1,"yScaleMin"],yScaleMax:[1,"yScaleMax"],numDecimal:[1,"numDecimal"],color:[1,"color"]},decls:84,vars:20,consts:[["minLine",""],[1,"tab-content"],[1,"chart-flex-container"],[1,"chart-panel-group"],[1,"full-width"],["matInput","","placeholder","Enter a label to display","name","displayName",3,"formControl"],["name","showLabel",1,"full-width",3,"formControl"],["placeholder","Select Color...","name","color","required","",3,"formControl"],[3,"value"],[1,"flex-item-rounded-card","rounded-card-color"],[2,"margin-left","10px"],["matInput","","type","number","min","0","max","5","placeholder","Enter or select number...","name","numDecimal","required","",3,"formControl"],["name","showAverageData",1,"full-width",2,"margin-top","10px",3,"change","formControl"],["name","trackAgainstAverage",1,"full-width",2,"margin-left","25px",3,"formControl"],["name","verticalChart",3,"formControl"],[1,"no-margin"],[1,"mat-caption"],["aria-label","Select an option","name","enableMinMaxScaleLimit",1,"chart-option-radio-group",3,"formControl"],[1,"chart-option-radio-button",3,"change","value"],[1,"chart-option-radio-button-config"],[1,"chart-option-radio-button-config-form-field"],["matInput","","type","number","name","yScaleSuggestedMin",3,"formControl"],["matInput","","type","number","name","yScaleSuggestedMax",3,"formControl"],[1,"chart-option-radio-button-config-item"],["matInput","","type","number","name","yScaleMin","required","",3,"formControl"],["matInput","","type","number","name","yScaleMax","required","",3,"formControl"],["name","showYScale",1,"full-width",3,"formControl"],["name","inverseYAxis",3,"formControl"],["name","showTimeScale",1,"full-width",3,"formControl"],["name","showDatasetMaximumValueLine",1,"full-width",3,"formControl"],["name","showDatasetAverageValueLine",1,"full-width",3,"formControl"],["name","showDatasetMinimumValueLine",1,"full-width",3,"formControl"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1)(1,"div",2)(2,"div",3)(3,"mat-form-field",4)(4,"mat-label"),m(5,"Widget Label"),u(),U(6,"input",5),u()(),d(7,"div",3)(8,"mat-checkbox",6),m(9," Show Label "),u()()(),d(10,"div",2)(11,"mat-form-field",4)(12,"mat-label"),m(13,"Color"),u(),d(14,"mat-select",7),ue(15,Um,2,3,"mat-option",8,Me),u()()(),d(17,"div",2)(18,"div",9)(19,"div")(20,"p"),m(21,"Series"),u(),d(22,"mat-form-field",10)(23,"mat-label"),m(24,"Value Decimal Places"),u(),U(25,"input",11),u(),d(26,"mat-checkbox",12),B("change",function(s){return q(a),z(i.enableTrackAgainstMovingAverage(s))}),m(27," Display Moving Average "),u(),d(28,"mat-checkbox",13),m(29," Track Against Moving Average "),u()(),d(30,"mat-checkbox",14),m(31," Vertical Data Graph "),u()(),d(32,"div",9)(33,"div")(34,"p",15),m(35,"Data Scale"),u(),d(36,"span",16),m(37,"(Default node is automatic scale)"),u(),d(38,"mat-radio-group",17)(39,"mat-radio-button",18),B("change",function(s){return q(a),z(i.setScaleControls(s))}),m(40,"Auto Scale"),u(),d(41,"div",19)(42,"mat-form-field",20)(43,"mat-label"),m(44,"Suggested Min"),u(),U(45,"input",21),u(),d(46,"mat-form-field",20)(47,"mat-label"),m(48,"Suggested Max"),u(),U(49,"input",22),u()(),d(50,"mat-radio-button",18),B("change",function(s){return q(a),z(i.setScaleControls(s))}),m(51," Fixed Scale "),u(),d(52,"div",19)(53,"div",23)(54,"mat-form-field",20)(55,"mat-label"),m(56,"Min"),u(),U(57,"input",24),u()(),d(58,"div",23)(59,"mat-form-field",20)(60,"mat-label"),m(61,"Max"),u(),U(62,"input",25),u()()()(),d(63,"mat-checkbox",26),m(64," Show Scale Ticks "),u(),d(65,"mat-checkbox",27),m(66," Inverse Scale "),u()()(),d(67,"div",9)(68,"div")(69,"p",15),m(70,"Time Scale"),u(),d(71,"mat-checkbox",28),m(72," Show Scale Ticks "),u()()(),d(73,"div",9)(74,"div")(75,"p",15),m(76,"Dataset"),u(),d(77,"mat-checkbox",29),m(78," Show Maximum Line "),u(),d(79,"mat-checkbox",30),m(80," Show Average Line "),u(),d(81,"mat-checkbox",31,0),m(83," Show Minimum Line "),u()()()()()}t&2&&(g(6),T("formControl",i.displayName()),g(2),T("formControl",i.showLabel()),g(6),T("formControl",i.color()),g(),he(i.colors),g(10),T("formControl",i.numDecimal()),g(),T("formControl",i.showAverageData()),g(2),T("formControl",i.trackAgainstAverage()),g(2),T("formControl",i.verticalChart()),g(8),T("formControl",i.enableMinMaxScaleLimit()),g(),T("value",!1),g(6),T("formControl",i.yScaleSuggestedMin()),g(4),T("formControl",i.yScaleSuggestedMax()),g(),T("value",!0),g(7),T("formControl",i.yScaleMin()),g(5),T("formControl",i.yScaleMax()),g(),T("formControl",i.showYScale()),g(2),T("formControl",i.inverseYAxis()),g(6),T("formControl",i.showTimeScale()),g(6),T("formControl",i.showDatasetMaximumValueLine()),g(2),T("formControl",i.showDatasetAverageValueLine()),g(2),T("formControl",i.showDatasetMinimumValueLine()))},dependencies:[ao,ei,ut,mt,ni,Gt,$i,ii,Tt,Aa,ti,ft,Wl,ar,yo,gt,dt,ki,nt,ct,ji,Un,Ti],styles:[".chart-flex-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;margin:15px 0;gap:15px;align-items:stretch}.chart-panel-group[_ngcontent-%COMP%]{min-width:250px;flex-grow:1}.no-margin[_ngcontent-%COMP%]{margin:0}.chart-option-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:0;align-items:flex-start}.chart-option-radio-button[_ngcontent-%COMP%]{margin:0}.chart-option-radio-button-config[_ngcontent-%COMP%]{margin-left:35px;display:flex;flex-direction:row;flex-wrap:wrap;gap:10px;align-items:flex-start}.chart-option-radio-button-config-item[_ngcontent-%COMP%]{flex-grow:0;flex-shrink:1;min-width:50px}.chart-option-radio-button-config-form-field[_ngcontent-%COMP%]{display:block;max-width:118px}"]})}return n})();var zm=["panel"],Hm=["*"];function jm(n,o){if(n&1&&(_(0,"div",1,0),On(2),k()),n&2){let e=o.id,t=I();Ft(t._classList),Je("mat-mdc-autocomplete-visible",t.showPanel)("mat-mdc-autocomplete-hidden",!t.showPanel)("mat-autocomplete-panel-animations-enabled",!t._animationsDisabled)("mat-primary",t._color==="primary")("mat-accent",t._color==="accent")("mat-warn",t._color==="warn"),Pi("id",t.id),Y("aria-label",t.ariaLabel||null)("aria-labelledby",t._getPanelAriaLabelledby(e))}}var rr=class{source;option;constructor(o,e){this.source=o,this.option=e}},Bl=new Yt("mat-autocomplete-default-options",{providedIn:"root",factory:Ym});function Ym(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1,hasBackdrop:!1}}var Jn=(()=>{class n{_changeDetectorRef=A(Ut);_elementRef=A(Ie);_defaults=A(Bl);_animationsDisabled=Xt();_activeOptionChanges=Ni.EMPTY;_keyManager;showPanel=!1;get isOpen(){return this._isOpen&&this.showPanel}_isOpen=!1;_latestOpeningTrigger;_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}_color;template;panel;options;optionGroups;ariaLabel;ariaLabelledby;displayWith=null;autoActiveFirstOption;autoSelectActiveOption;requireSelection;panelWidth;disableRipple;optionSelected=new yt;opened=new yt;closed=new yt;optionActivated=new yt;set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}_classList;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_hideSingleSelectionIndicator;_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}id=A(yi).getId("mat-autocomplete-");inertGroups;constructor(){let e=A(Ds);this.inertGroups=e?.SAFARI||!1,this.autoActiveFirstOption=!!this._defaults.autoActiveFirstOption,this.autoSelectActiveOption=!!this._defaults.autoSelectActiveOption,this.requireSelection=!!this._defaults.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new Ns(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options?.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){let t=new rr(this,e);this.optionSelected.emit(t)}_getPanelAriaLabelledby(e){if(this.ariaLabel)return null;let t=e?e+" ":"";return this.ariaLabelledby?t+this.ariaLabelledby:e}_skipPredicate(){return!1}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-autocomplete"]],contentQueries:function(t,i,a){if(t&1&&(dn(a,Tt,5),dn(a,ml,5)),t&2){let r;Ct(r=St())&&(i.options=r),Ct(r=St())&&(i.optionGroups=r)}},viewQuery:function(t,i){if(t&1&&($t(ps,7),$t(zm,5)),t&2){let a;Ct(a=St())&&(i.template=a.first),Ct(a=St())&&(i.panel=a.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[2,"autoActiveFirstOption","autoActiveFirstOption",qe],autoSelectActiveOption:[2,"autoSelectActiveOption","autoSelectActiveOption",qe],requireSelection:[2,"requireSelection","requireSelection",qe],panelWidth:"panelWidth",disableRipple:[2,"disableRipple","disableRipple",qe],classList:[0,"class","classList"],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",qe]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],features:[hn([{provide:cl,useExisting:n}])],ngContentSelectors:Hm,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(t,i){t&1&&(In(),fs(0,jm,3,17,"ng-template"))},styles:[`div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:relative;border-radius:var(--mat-autocomplete-container-shape, var(--mat-sys-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));background-color:var(--mat-autocomplete-background-color, var(--mat-sys-surface-container))}@media(forced-colors: active){div.mat-mdc-autocomplete-panel{outline:solid 1px}}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}@keyframes _mat-autocomplete-enter{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:none}}.mat-autocomplete-panel-animations-enabled{animation:_mat-autocomplete-enter 120ms cubic-bezier(0, 0, 0.2, 1)}mat-autocomplete{display:none}
|
|
44
|
+
`],encapsulation:2,changeDetection:0})}return n})();var Qm={provide:Gn,useExisting:Mn(()=>fn),multi:!0};var Ul=new Yt("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{let n=A(Fi);return()=>Xo(n)}});function $m(n){let o=A(Fi);return()=>Xo(o)}var Zm={provide:Ul,deps:[],useFactory:$m},fn=(()=>{class n{_environmentInjector=A(us);_element=A(Ie);_injector=A(Fi);_viewContainerRef=A(Ga);_zone=A(We);_changeDetectorRef=A(Ut);_dir=A(Ja,{optional:!0});_formField=A(rl,{optional:!0,host:!0});_viewportRuler=A(Us);_scrollStrategy=A(Ul);_renderer=A(kn);_animationsDisabled=Xt();_defaults=A(Bl,{optional:!0});_overlayRef;_portal;_componentDestroyed=!1;_initialized=new Nt;_keydownSubscription;_outsideClickSubscription;_cleanupWindowBlur;_previousValue;_valueOnAttach;_valueOnLastKeydown;_positionStrategy;_manuallyFloatingLabel=!1;_closingActionsSubscription;_viewportSubscription=Ni.EMPTY;_breakpointObserver=A(Wn);_handsetLandscapeSubscription=Ni.EMPTY;_canOpenOnNextFocus=!0;_valueBeforeAutoSelection;_pendingAutoselectedOption;_closeKeyEventStream=new Nt;_overlayPanelClass=Is(this._defaults?.overlayPanelClass||[]);_windowBlurHandler=()=>{this._canOpenOnNextFocus=this.panelOpen||!this._hasFocus()};_onChange=()=>{};_onTouched=()=>{};autocomplete;position="auto";connectedTo;autocompleteAttribute="off";autocompleteDisabled;constructor(){}_aboveClass="mat-mdc-autocomplete-panel-above";ngAfterViewInit(){this._initialized.next(),this._initialized.complete(),this._cleanupWindowBlur=this._renderer.listen("window","blur",this._windowBlurHandler)}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){this._cleanupWindowBlur?.(),this._handsetLandscapeSubscription.unsubscribe(),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}_overlayAttached=!1;openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&Ka(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Vi(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(Wi(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(Wi(()=>this._overlayAttached)):Yo()).pipe(vi(e=>e instanceof ul?e:null))}optionSelections=is(()=>{let e=this.autocomplete?this.autocomplete.options:null;return e?e.changes.pipe(_n(e),Na(()=>Vi(...e.map(t=>t.onSelectionChange)))):this._initialized.pipe(Na(()=>this.optionSelections))});get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return new jo(e=>{let t=a=>{let r=Es(a),s=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,h=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;this._overlayAttached&&r!==this._element.nativeElement&&!this._hasFocus()&&(!s||!s.contains(r))&&(!h||!h.contains(r))&&this._overlayRef&&!this._overlayRef.overlayElement.contains(r)&&e.next(a)},i=[this._renderer.listen("document","click",t),this._renderer.listen("document","auxclick",t),this._renderer.listen("document","touchend",t)];return()=>{i.forEach(a=>a())}})}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){let t=e,i=t.keyCode,a=Ln(t);if(i===27&&!a&&t.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&i===13&&this.panelOpen&&!a)this.activeOption._selectViaInteraction(),this._resetActiveItem(),t.preventDefault();else if(this.autocomplete){let r=this.autocomplete._keyManager.activeItem,s=i===38||i===40;i===9||s&&!a&&this.panelOpen?this.autocomplete._keyManager.onKeydown(t):s&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(s||this.autocomplete._keyManager.activeItem!==r)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let t=e.target,i=t.value;if(t.type==="number"&&(i=i==""?null:parseFloat(i)),this._previousValue!==i){if(this._previousValue=i,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(i),!i)this._clearPreviousSelectedOption(null,!1);else if(this.panelOpen&&!this.autocomplete.requireSelection){let a=this.autocomplete.options?.find(r=>r.selected);if(a){let r=this._getDisplayValue(a.value);i!==r&&a.deselect(!1)}}if(this._canOpen()&&this._hasFocus()){let a=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(a)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_hasFocus(){return Ts()===this._element.nativeElement}_floatLabel(e=!1){this._formField&&this._formField.floatLabel==="auto"&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){let e=new jo(i=>{Tn(()=>{i.next()},{injector:this._environmentInjector})}),t=this.autocomplete.options?.changes.pipe(Wa(()=>this._positionStrategy.reapplyLastPosition()),os(0))??Yo();return Vi(e,t).pipe(Na(()=>this._zone.run(()=>{let i=this.panelOpen;return this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),i!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit()),this.panelClosingActions})),Gi(1)).subscribe(i=>this._setValueAndClose(i))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){let t=this.autocomplete;return t&&t.displayWith?t.displayWith(e):e}_assignOptionValue(e){let t=this._getDisplayValue(e);e==null&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(t??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){let t=this.autocomplete,i=e?e.source:this._pendingAutoselectedOption;i?(this._clearPreviousSelectedOption(i),this._assignOptionValue(i.value),this._onChange(i.value),t._emitSelectEvent(i),this._element.nativeElement.focus()):t.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,t){this.autocomplete?.options?.forEach(i=>{i!==e&&i.selected&&i.deselect(t)})}_openPanelInternal(e=this._element.nativeElement.value){if(this._attachOverlay(e),this._floatLabel(),this._trackedModal){let t=this.autocomplete.id;Zo(this._trackedModal,"aria-owns",t)}}_attachOverlay(e){this.autocomplete;let t=this._overlayRef;t?(this._positionStrategy.setOrigin(this._getConnectedElement()),t.updateSize({width:this._getPanelWidth()})):(this._portal=new Gs(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),t=Qs(this._injector,this._getOverlayConfig()),this._overlayRef=t,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&t&&t.updateSize({width:this._getPanelWidth()})}),this._handsetLandscapeSubscription=this._breakpointObserver.observe(mi.HandsetLandscape).subscribe(a=>{a.matches?this._positionStrategy.withFlexibleDimensions(!0).withGrowAfterOpen(!0).withViewportMargin(8):this._positionStrategy.withFlexibleDimensions(!1).withGrowAfterOpen(!1).withViewportMargin(0)})),t&&!t.hasAttached()&&(t.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());let i=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&i!==this.panelOpen&&this._emitOpened()}_handlePanelKeydown=e=>{(e.keyCode===27&&!Ln(e)||e.keyCode===38&&Ln(e,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),e.stopPropagation(),e.preventDefault())};_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){let e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=null}_getOverlayConfig(){return new Hs({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,hasBackdrop:this._defaults?.hasBackdrop,backdropClass:this._defaults?.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:this._overlayPanelClass,disableAnimations:this._animationsDisabled})}_getOverlayPosition(){let e=js(this._injector,this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){let t=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],i=this._aboveClass,a=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:i},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:i}],r;this.position==="above"?r=a:this.position==="below"?r=t:r=[...t,...a],e.withPositions(r)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){let e=this.autocomplete;if(e.autoActiveFirstOption){let t=-1;for(let i=0;i<e.options.length;i++)if(!e.options.get(i).disabled){t=i;break}e._keyManager.setActiveItem(t)}else e._keyManager.setActiveItem(-1)}_canOpen(){let e=this._element.nativeElement;return!e.readOnly&&!e.disabled&&!this.autocompleteDisabled}_scrollToOption(e){let t=this.autocomplete,i=hl(e,t.options,t.optionGroups);if(e===0&&i===1)t._setScrollTop(0);else if(t.panel){let a=t.options.toArray()[e];if(a){let r=a._getHostElement(),s=pl(r.offsetTop,r.offsetHeight,t._getScrollTop(),t.panel.nativeElement.offsetHeight);t._setScrollTop(s)}}}_trackedModal=null;_applyModalPanelOwnership(){let e=this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;let t=this.autocomplete.id;this._trackedModal&&Ka(this._trackedModal,"aria-owns",t),Zo(e,"aria-owns",t),this._trackedModal=e}_clearFromModal(){if(this._trackedModal){let e=this.autocomplete.id;Ka(this._trackedModal,"aria-owns",e),this._trackedModal=null}}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(t,i){t&1&&B("focusin",function(){return i._handleFocus()})("blur",function(){return i._onTouched()})("input",function(r){return i._handleInput(r)})("keydown",function(r){return i._handleKeydown(r)})("click",function(){return i._handleClick()}),t&2&&Y("autocomplete",i.autocompleteAttribute)("role",i.autocompleteDisabled?null:"combobox")("aria-autocomplete",i.autocompleteDisabled?null:"list")("aria-activedescendant",i.panelOpen&&i.activeOption?i.activeOption.id:null)("aria-expanded",i.autocompleteDisabled?null:i.panelOpen.toString())("aria-controls",i.autocompleteDisabled||!i.panelOpen||i.autocomplete==null?null:i.autocomplete.id)("aria-haspopup",i.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[0,"matAutocomplete","autocomplete"],position:[0,"matAutocompletePosition","position"],connectedTo:[0,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[0,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[2,"matAutocompleteDisabled","autocompleteDisabled",qe]},exportAs:["matAutocompleteTrigger"],features:[hn([Qm]),Qt]})}return n})(),wo=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({providers:[Zm],imports:[$s,Aa,Ot,qs,Aa,Ot]})}return n})();var Xm=(n,o)=>o.path;function Km(n,o){if(n&1){let e=ae();d(0,"button",21),B("click",function(){q(e);let i=I();return z(i.clearPathInputField())}),d(1,"mat-icon"),m(2,"close"),u()()}}function Jm(n,o){n&1&&(d(0,"mat-error"),m(1," Path is required. Please enter a valid Signal K path. "),u())}function eu(n,o){n&1&&(d(0,"mat-error"),m(1," Path not recognized. Please enter a path from the server's published list. "),u())}function tu(n,o){if(n&1&&(d(0,"span"),m(1),u(),U(2,"br"),d(3,"small",22),m(4),u()),n&2){let e=I().$implicit;g(),ne(e.path),g(3),ne(e.meta.description)}}function iu(n,o){if(n&1&&m(0),n&2){let e=I().$implicit;ye(" ",e.path," ")}}function nu(n,o){if(n&1&&(d(0,"mat-option",8),G(1,tu,5,2)(2,iu,1,1),u()),n&2){let e=o.$implicit;T("value",e.path),g(),F(e.meta!==void 0?1:2)}}function au(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function ou(n,o){if(n&1&&(d(0,"mat-option",12),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function ru(n,o){if(n&1&&(d(0,"mat-optgroup",14),ue(1,ou,2,2,"mat-option",12,Me),u()),n&2){let e=o.$implicit;T("label",e.group),g(),he(e.units)}}function su(n){return o=>{let e=o.parent?.value?.pathRequired!==!1,t=o.value;return e?t===null||t===""?{requireMatch:!0}:n().some(r=>r.path===t)?null:{requireMatch:!0}:t===null||t===""||n().some(r=>r.path===t)?null:{requireMatch:!0}}}var zl=(()=>{class n{convertUnitTo=v.required();filterSelfPaths=v.required();datachartPath=v.required();datachartSource=v.required();timeScale=v.required();period=v.required();data=A(Ci);units=A(at);_destroyRef=A(rt);numericPaths=w([]);filteredNumericPaths=w([]);unitList=w({});pathSources=w([]);ngOnInit(){if(this.numericPaths.set(this.data.getPathsAndMetaByType("number",!1,this.filterSelfPaths().value).sort()),this.filteredNumericPaths.set(this.numericPaths()),this.datachartPath().valueChanges.pipe(Li(300),et(this._destroyRef)).subscribe(e=>{let t=(e||"").toLowerCase().trim();t?this.filteredNumericPaths.set(this.numericPaths().filter(i=>i.path.toLowerCase().includes(t))):this.filteredNumericPaths.set(this.numericPaths())}),this.datachartPath().setValidators([su(()=>this.getPaths())]),this.datachartPath()?.value){let e=this.data.getPathObject(this.datachartPath().value);this.setPathSources(e),this.unitList.set(this.units.getConversionsForPath(this.datachartPath().value))}this.setInitFormState()}setInitFormState(e=!1){this.datachartSource().value&&!e?this.datachartSource().enable():(this.datachartSource().reset(),this.datachartSource().disable()),this.convertUnitTo().value!==""&&!e?this.convertUnitTo().enable():(this.convertUnitTo().reset(),this.convertUnitTo().disable()),this.timeScale().value?this.timeScale().enable():this.timeScale().disable(),this.period().value?this.period().enable():this.period().disable()}getPaths(){return this.data.getPathsAndMetaByType("number",!1,this.filterSelfPaths().value).sort()}clearPathInputField(){this.datachartPath().setValue(""),this.setInitFormState(!0)}changePath(e){let t=this.data.getPathObject(e.option.value);if(t===null){this.pathSources.set([]),this.datachartSource().reset(),this.datachartSource().disable(),this.convertUnitTo().reset(),this.convertUnitTo().disable(),this.setPathUnits();return}this.setPathSources(t),this.setPathUnits(t.path)}setPathSources(e){Object.keys(e.sources).length==1?(this.pathSources.set(["default"]),this.datachartSource().setValue("default"),this.datachartSource().enable()):Object.keys(e.sources).length>1&&(this.pathSources.set(Object.keys(e.sources).sort()),this.datachartSource().reset(),this.datachartSource().enable())}setPathUnits(e){e?(this.unitList.set(this.units.getConversionsForPath(e)),this.convertUnitTo().reset(),this.convertUnitTo()?.enable()):(this.unitList.set(this.units.getConversionsForPath("")),this.convertUnitTo().reset(),this.convertUnitTo()?.disable())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["config-dataset-chart-options"]],inputs:{convertUnitTo:[1,"convertUnitTo"],filterSelfPaths:[1,"filterSelfPaths"],datachartPath:[1,"datachartPath"],datachartSource:[1,"datachartSource"],timeScale:[1,"timeScale"],period:[1,"period"]},decls:59,vars:9,consts:[["pathInput",""],["pathAutoComplete","matAutocomplete"],[1,"display-content","tab-content"],[1,"flex-container",2,"margin-top","10px"],[1,"full-width"],["type","text","matInput","","placeholder","Type to use autocomplete or select from list","required","",3,"formControl","matAutocomplete"],["mat-icon-button","","matIconSuffix","","aria-label","Clear"],[3,"optionSelected"],[2,"min-height","48px","line-height","1.15","height","auto","padding","8px 16px","white-space","normal",3,"value"],[3,"formControl"],[1,"flex-field-50"],["placeholder","Select data source","name","sourceControl","required","",3,"formControl"],[3,"value"],["placeholder","Select unit...","name","convertUnitTo","required","",3,"formControl"],[3,"label"],[2,"margin-top","10px"],["placeholder","Select dataset time scale","name","timeScaleFormat","required","",3,"formControl"],["value","hour"],["value","minute"],["value","second"],["matInput","","type","number","min","1","max","60","step","1","placeholder","Enter or select number...","required","",3,"formControl"],["mat-icon-button","","matIconSuffix","","aria-label","Clear",3,"click"],[1,"pathMetaDescription"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",2)(1,"div",3)(2,"mat-form-field",4)(3,"mat-label"),m(4," Signal K Path "),u(),U(5,"input",5,0),G(7,Km,3,0,"button",6),G(8,Jm,2,0,"mat-error")(9,eu,2,0,"mat-error"),d(10,"mat-autocomplete",7,1),B("optionSelected",function(s){return q(a),z(i.changePath(s))}),ue(12,nu,3,2,"mat-option",8,Xm),u()()(),d(14,"div",3)(15,"mat-checkbox",9),m(16," Restrict to own vessel "),u()(),d(17,"div",3)(18,"div",10)(19,"mat-form-field",4)(20,"mat-label"),m(21,"Source"),u(),d(22,"mat-select",11),ue(23,au,2,2,"mat-option",12,En),u()()(),d(25,"div",10)(26,"mat-form-field",4)(27,"mat-label"),m(28,"Display Format"),u(),d(29,"mat-select",13),ue(30,ru,3,1,"mat-optgroup",14,Me),u()()()(),U(32,"br"),d(33,"p",15),m(34," The time scale defines the data sampling rate and overall Dataset level of precision. Select a Time Scale that is targeted to your intended usage. Shorter Time Scales have higher system resources costs, for both the data capture and widget rendering process. "),u(),d(35,"div",3)(36,"div",10)(37,"mat-form-field",4)(38,"mat-label"),m(39,"Time Scale"),u(),d(40,"mat-select",16)(41,"mat-option",17),m(42,"Hours"),u(),d(43,"mat-option",18),m(44,"Minutes"),u(),d(45,"mat-option",19),m(46,"Seconds"),u()()()(),d(47,"div",10)(48,"mat-form-field",4)(49,"mat-label"),m(50,"Duration"),u(),U(51,"input",20),u()()(),d(52,"ul")(53,"li"),m(54,"Hours: per minute sampling rate. Intended for long sampling periods when slow refresh rate is acceptable and system resource usage should be minimized. A Grafana Embed Webpage Viewer widget is a better alternative to this Time Scale. "),u(),d(55,"li"),m(56,"Minutes: per second sampling rate. Meant for trends observations such wind speed, depth, solar power, voltage, etc. "),u(),d(57,"li"),m(58,"Secondes: 200ms sampling rate. Intended for use cases where user may act upon realtime information such as when racing. "),u()()()}if(t&2){let a=It(6),r=It(11);g(5),T("formControl",i.datachartPath())("matAutocomplete",r),g(2),F(a.value?7:-1),g(),F(a.validity.valueMissing?8:i.datachartPath().errors?9:-1),g(4),he(i.filteredNumericPaths()),g(3),T("formControl",i.filterSelfPaths()),g(7),T("formControl",i.datachartSource()),g(),he(i.pathSources()),g(6),T("formControl",i.convertUnitTo()),g(),he(i.unitList().conversions),g(10),T("formControl",i.timeScale()),g(11),T("formControl",i.period())}},dependencies:[Xe,ze,wo,Jn,Tt,zn,fn,ni,Gt,ei,ut,mt,Yi,Qi,$i,ii,ti,ft,Ke,xt,gt,dt,ki,nt,ct,ji,Un,Ti],styles:[".display-content[_ngcontent-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:10px}"]})}return n})();var Hl=(()=>{class n{transform(e){return Object.keys(e)}static \u0275fac=function(t){return new(t||n)};static \u0275pipe=Fa({name:"objectKeys",type:n,pure:!0})}return n})();var lu=(n,o)=>o.path;function du(n,o){n&1&&U(0,"i",22)}function cu(n,o){n&1&&U(0,"i",23)}function mu(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),Ui("",e.properties.quantity,": ",e.properties.display)}}function uu(n,o){if(n&1){let e=ae();d(0,"div",5)(1,"mat-form-field",21)(2,"mat-label"),G(3,du,1,0,"i",22)(4,cu,1,0,"i",23),m(5," Filter"),u(),d(6,"mat-select",24,2),B("selectionChange",function(){q(e),I();let i=It(11),a=I();return z(a.pathFormGroup().controls.path.setValue(i.value))}),d(8,"mat-option"),m(9,"All"),u(),ue(10,mu,2,3,"mat-option",16,Me),u()()()}if(n&2){let e=It(7),t=I(2);g(3),F(e.value?4:3),g(3),T("formControl",t.pathSkUnitsFilterControl),g(4),he(t.pathSkUnitsFiltersList)}}function hu(n,o){n&1&&(d(0,"span",8),m(1,"(optional)"),u())}function pu(n,o){n&1&&(d(0,"mat-hint"),m(1,"Leave blank to disable this path."),u())}function gu(n,o){if(n&1){let e=ae();d(0,"button",25),B("click",function(){q(e);let i=I(2);return z(i.pathFormGroup().controls.path.setValue(""))}),d(1,"mat-icon"),m(2,"close"),u()()}}function fu(n,o){n&1&&(d(0,"mat-error"),m(1," Path is required. Please enter a valid Signal K path. "),u())}function bu(n,o){n&1&&(d(0,"mat-error"),m(1," Path not recognized. Please enter a path from the server's published list. "),u())}function Au(n,o){if(n&1&&(d(0,"span"),m(1),u(),U(2,"br"),d(3,"small",26),m(4),u()),n&2){let e=I().$implicit;g(),ne(e.path),g(3),ne(e.meta.description)}}function vu(n,o){if(n&1&&m(0),n&2){let e=I().$implicit;ye(" ",e.path," ")}}function yu(n,o){if(n&1&&(d(0,"mat-option",11),G(1,Au,5,2)(2,vu,1,1),u()),n&2){let e=o.$implicit;T("value",e.path),g(),F(e.meta!==void 0?1:2)}}function Cu(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function Su(n,o){if(n&1&&(d(0,"mat-option",16),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function wu(n,o){if(n&1&&(d(0,"mat-optgroup",28),ue(1,Su,2,2,"mat-option",16,Me),u()),n&2){let e=o.$implicit;T("label",e.group),g(),he(e.units)}}function xu(n,o){if(n&1&&(d(0,"mat-form-field",20)(1,"mat-label"),m(2,"Display Format"),u(),d(3,"mat-select",27),ue(4,wu,3,1,"mat-optgroup",28,Me),u()()),n&2){let e=I(2);g(4),he(e.unitList.conversions)}}function _u(n,o){if(n&1&&(d(0,"div",3)(1,"div",4)(2,"span"),m(3),u()(),G(4,uu,12,2,"div",5),d(5,"div",6)(6,"mat-form-field",7)(7,"mat-label"),m(8," Signal K Path "),G(9,hu,2,0,"span",8),u(),U(10,"input",9,0),G(12,pu,2,0,"mat-hint"),G(13,gu,3,0,"button",10),G(14,fu,2,0,"mat-error")(15,bu,2,0,"mat-error"),d(16,"mat-autocomplete",null,1),ue(18,yu,3,2,"mat-option",11,lu),At(20,"async"),u()()(),d(21,"div",12)(22,"div",13)(23,"mat-form-field",14)(24,"mat-label"),m(25,"Data Source"),u(),d(26,"mat-select",15),ue(27,Cu,2,2,"mat-option",16,Me),u()()(),d(29,"div",17)(30,"mat-form-field",14)(31,"mat-label"),m(32,"Sample Time"),u(),U(33,"input",18),u()(),d(34,"div",19),G(35,xu,6,0,"mat-form-field",20),u()()()),n&2){let e,t=It(17),i=I();T("formGroup",i.pathFormGroup()),g(2),re("color",i.pathFormGroup().enabled?"":"rgba(255,255,255,0.5)"),g(),ne(i.pathFormGroup().value.description),g(),F(i.pathFormGroup().value.pathType==="number"&&i.showPathSkUnitsFilter?4:-1),g(5),F(i.pathFormGroup().value.pathRequired===!1?9:-1),g(),T("matAutocomplete",t),g(2),F(i.pathFormGroup().value.pathRequired===!1?12:-1),g(),F(i.pathFormGroup().value.path?13:-1),g(),F((e=i.pathFormGroup().controls.path.errors)!=null&&e.required?14:(e=i.pathFormGroup().controls.path.errors)!=null&&e.requireMatch?15:-1),g(4),he(Bt(20,11,i.filteredPaths)),g(9),he(i.availableSources),g(8),F(i.pathFormGroup().value.pathType==="number"&&i.pathFormGroup().value.showConvertUnitTo===void 0||i.pathFormGroup().value.pathType==="number"&&i.pathFormGroup().value.showConvertUnitTo===!0?35:-1)}}function Mu(n){return o=>{let e=o.parent?.value?.pathRequired!==!1,t=o.value;return e?t===null||t===""?{requireMatch:!0}:n().some(r=>r.path===t)?null:{requireMatch:!0}:t===null||t===""||n().some(r=>r.path===t)?null:{requireMatch:!0}}}var jl=(()=>{class n{_data=A(Ci);_units=A(at);_connection=A(xs);_destroyRef=A(rt);pathFormGroup=v.required();multiCTRLArray=v.required();filterSelfPaths=v.required();availablePaths;filteredPaths=new Ia(null);availableSources;unitList={base:"",conversions:[]};showPathSkUnitsFilter=!1;pathSkUnitsFilterControl=new il(null);pathSkUnitsFiltersList;unitlessUnit={unit:"unitless",properties:{display:"(null)",quantity:"Unitless",quantityDisplay:"(null)",description:""}};ngOnInit(){let e=this.pathFormGroup();e.controls.path.disabled||(this.pathSkUnitsFiltersList=this._units.skBaseUnits.sort((t,i)=>t.properties.quantity>i.properties.quantity?1:-1),this.pathSkUnitsFiltersList.unshift(this.unitlessUnit),e.value.pathSkUnitsFilter&&this.pathSkUnitsFilterControl.setValue(this.pathSkUnitsFiltersList.find(t=>t.unit===this.pathFormGroup().value.pathSkUnitsFilter),{onlySelf:!0}),e.value.showPathSkUnitsFilter&&(this.showPathSkUnitsFilter=e.value.showPathSkUnitsFilter),e.controls.path.setValidators([Mu(()=>this.getPaths())]),e.controls.path.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),e.controls.pathRequired&&e.controls.pathRequired.valueChanges.pipe(et(this._destroyRef)).subscribe(()=>{this.pathFormGroup().controls.path.updateValueAndValidity()}),e.controls.path.valid?this.enableFormFields(!1):this.disablePathFields(),e.controls.sampleTime||(e.addControl("sampleTime",new Jt("500",_t.required)),e.controls.sampleTime.updateValueAndValidity({onlySelf:!0,emitEvent:!1})),e.controls.path.valueChanges.pipe(ns(t=>t===""?ha(0):ha(350)),_n(""),vi(t=>this.filterPaths(t||""))).pipe(et(this._destroyRef)).subscribe(()=>{let t=this.pathFormGroup();t.controls.path.pristine||(t.controls.path.valid?(this.enableFormFields(!0),this.updatePathMetaBoundDisplayName(t.controls.path.value),this.updatePathMetaBoundDisplayScale(t.controls.path.value)):this.disablePathFields())}),e.controls.pathType.valueChanges.pipe(et(this._destroyRef)).subscribe(()=>{let t=this.pathFormGroup();t.value.showPathSkUnitsFilter?this.pathSkUnitsFilterControl.setValue(this.unitlessUnit):this.pathSkUnitsFilterControl.setValue(null),t.controls.path.updateValueAndValidity()}))}ngOnChanges(e){e.filterSelfPaths&&!e.filterSelfPaths.firstChange&&this.pathFormGroup().controls.path.updateValueAndValidity()}getPaths(){let e=this.pathFormGroup().controls.pathType.value,t=this.filterSelfPaths(),i=!1,a=this.pathFormGroup();if(a.value.supportsPut){let r=!1;this.multiCTRLArray().length>0&&(r=this.multiCTRLArray().some(s=>s.pathID===this.pathFormGroup().value.pathID&&s.type==="3")),r?i=!1:i=_s(this._connection.skServerVersion,"2.12.0",">=")?a.value.supportsPut:!1}return this._data.getPathsAndMetaByType(e,i,t).sort()}filterPaths(e){let t=e.toLowerCase(),i=this.getPaths();if(this.pathSkUnitsFilterControl.value){let a=this.pathSkUnitsFilterControl.value.unit;i=i.filter(r=>{let s=!!r.meta&&!!r.meta.units,h=a==="unitless";return s&&r.meta.units===a||!s&&h})}i=i.filter(a=>a.path.toLowerCase().includes(t)),this.filteredPaths.next(i)}enableFormFields(e){let t=this._data.getPathObject(this.pathFormGroup().controls.path.value);if(t!=null){this.pathFormGroup().controls.sampleTime.enable({onlySelf:!1});let i=this.pathFormGroup();i.controls.pathType.value=="number"&&(this.unitList=this._units.getConversionsForPath(i.controls.path.value),e&&i.controls.convertUnitTo.setValue(this.unitList.base,{onlySelf:!0}),i.controls.convertUnitTo.enable({onlySelf:!1})),Object.keys(t.sources).length==1?(this.availableSources=["default"],e?i.controls.source.value!="default"&&i.controls.source.setValue("default",{onlySelf:!0}):i.controls.source.value!="default"&&i.controls.source.setValue("",{onlySelf:!0})):Object.keys(t.sources).length>1&&(this.availableSources=Object.keys(t.sources),i.controls.source.value=="default"&&i.controls.source.reset()),i.controls.source.enable({onlySelf:!1})}else this.disablePathFields()}disablePathFields(){this.pathFormGroup().controls.source.reset("",{onlySelf:!0}),this.pathFormGroup().controls.source.disable({onlySelf:!1}),this.pathFormGroup().controls.sampleTime.disable({onlySelf:!1});let e=this.pathFormGroup();e.controls.pathType.value=="number"&&(e.controls.convertUnitTo.reset("",{onlySelf:!0}),e.controls.convertUnitTo.disable({onlySelf:!1}))}updatePathMetaBoundDisplayName(e){let t=this.pathFormGroup();if(!Object.prototype.hasOwnProperty.call(t.parent.parent.value,"displayName"))return;let i=this._data.getPathMeta(e);i?.displayName&&t.parent.parent.controls.displayName.setValue(i.displayName)}updatePathMetaBoundDisplayScale(e){let t=this.pathFormGroup();if(!Object.prototype.hasOwnProperty.call(t.parent.parent.value,"displayScale"))return;let i=this._data.getPathMeta(e);if(i?.displayScale){let a=t.parent.parent.get("displayScale"),r=t.controls.convertUnitTo.value;i.displayScale.lower!==null&&i.displayScale.lower!==void 0&&a.controls.lower.setValue(this._units.convertToUnit(r,i.displayScale.lower)),i.displayScale.upper!==null&&i.displayScale.upper!==void 0&&a.controls.upper.setValue(this._units.convertToUnit(r,i.displayScale.upper)),i.displayScale.type!==null&&i.displayScale.type!==void 0&&a.controls.type.setValue(i.displayScale.type),i.displayScale.power!==null&&i.displayScale.power!==void 0&&a.controls.power.setValue(i.displayScale.power)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["path-control-config"]],inputs:{pathFormGroup:[1,"pathFormGroup"],multiCTRLArray:[1,"multiCTRLArray"],filterSelfPaths:[1,"filterSelfPaths"]},features:[Qt],decls:1,vars:1,consts:[["pathInput",""],["pathAutoComplete","matAutocomplete"],["pathUnitsFilter",""],[1,"flex-container","rounded-card","rounded-card-color",3,"formGroup"],[1,"flex-field-100"],[1,"flex-field-fixed"],[1,"flex-field-to-100"],["floatLabel","auto","appearance","fill",1,"pathField"],[1,"optional-label"],["type","text","matInput","","placeholder","Type to use autocomplete or select from list","formControlName","path",3,"matAutocomplete"],["mat-icon-button","","matIconSuffix","","aria-label","Clear"],[2,"min-height","48px","line-height","1.15","height","auto","padding","8px 16px","white-space","normal",3,"value"],[1,"pathProperties"],[1,"sourceField"],["appearance","outline","floatLabel","always",1,"fields"],["placeholder","Select source","formControlName","source","required",""],[3,"value"],[1,"sampleTimeField"],["matInput","","type","number","placeholder","Sample time in milliseconds","formControlName","sampleTime","required",""],[1,"unitField"],[1,"fields"],["floatLabel","auto","appearance","fill",1,"filter-path"],[1,"fa-solid","fa-filter"],[1,"fa-solid","fa-filter-circle-xmark"],["panelWidth","",3,"selectionChange","formControl"],["mat-icon-button","","matIconSuffix","","aria-label","Clear",3,"click"],[1,"pathMetaDescription"],["placeholder","Select unit","formControlName","convertUnitTo","required",""],[3,"label"]],template:function(t,i){t&1&&G(0,_u,36,13,"div",3),t&2&&F(i.pathFormGroup().value.isPathConfigurable?0:-1)},dependencies:[pt,dt,ki,nt,Mt,ct,gt,Ti,kt,Hi,ut,mt,ft,wo,Jn,Tt,zn,fn,xt,Qi,Yi,ii,Xe,ze,ol,za],styles:[".pathGroup[_ngcontent-%COMP%]{width:100%}.pathGroupFields[_ngcontent-%COMP%]{display:block;width:calc(100% - 5px)}.pathField[_ngcontent-%COMP%]{width:100%}.pathProperties[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center;align-content:flex-start;gap:10px}.fields[_ngcontent-%COMP%]{width:100%}.sourceField[_ngcontent-%COMP%]{flex:3 1}.sampleTimeField[_ngcontent-%COMP%]{flex:1 3}.unitField[_ngcontent-%COMP%]{flex:3 1}"]})}return n})();function ku(n,o){if(n&1&&U(0,"path-control-config",6),n&2){let e=o.$implicit,t=I(2);T("pathFormGroup",e)("filterSelfPaths",t.filterSelfPaths().value)("multiCTRLArray",t.multiCTRLArray)}}function Tu(n,o){if(n&1&&ue(0,ku,1,3,"path-control-config",6,Me),n&2){let e=I();he(e.pathsFormGroup.controls)}}function Eu(n,o){if(n&1&&U(0,"path-control-config",6),n&2){let e=o.$implicit,t=I(2);T("pathFormGroup",t.pathsFormGroup.get(e))("filterSelfPaths",t.filterSelfPaths().value)("multiCTRLArray",t.multiCTRLArray)}}function Du(n,o){if(n&1&&(ue(0,Eu,1,3,"path-control-config",6,Me),At(2,"objectKeys")),n&2){let e=I();he(Bt(2,0,e.pathsFormGroup.controls))}}var Yl=(()=>{class n{rootFormGroup=A(kt);fb=A(qn);formGroupName=v.required();isArray=v.required();enableTimeout=v.required();dataTimeout=v.required();filterSelfPaths=v.required();addPathEvent=v(void 0);delPathEvent=v(void 0);updatePathEvent=v(void 0);pathsFormGroup;multiCTRLArray=[];ngOnInit(){this.isArray()?(this.pathsFormGroup=this.rootFormGroup.control.get(this.formGroupName()),this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value):this.pathsFormGroup=this.rootFormGroup.control.get(this.formGroupName())}addPath(e){this.pathsFormGroup.push(this.fb.group({description:[e.path.description],path:[e.path.path,_t.required],pathID:[e.path.pathID],source:[e.path.source,_t.required],pathType:[e.path.pathType],isPathConfigurable:[e.path.isPathConfigurable],showPathSkUnitsFilter:[e.path.showPathSkUnitsFilter],pathSkUnitsFilter:[e.path.pathSkUnitsFilter],convertUnitTo:[e.path.convertUnitTo],sampleTime:[e.path.sampleTime],supportsPut:[e.path.supportsPut]})),this.pathsFormGroup.updateValueAndValidity(),this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value}delPath(){this.multiCTRLArray=this.rootFormGroup.control.get("multiChildCtrls").value}updatePath(e){this.multiCTRLArray=e}ngOnChanges(e){e.addPathEvent&&!e.addPathEvent.firstChange&&this.addPath(e.addPathEvent.currentValue),e.delPathEvent&&!e.delPathEvent.firstChange&&this.delPath(),e.updatePathEvent&&!e.updatePathEvent.firstChange&&this.updatePath(e.updatePathEvent.currentValue)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["paths-options"]],inputs:{formGroupName:[1,"formGroupName"],isArray:[1,"isArray"],enableTimeout:[1,"enableTimeout"],dataTimeout:[1,"dataTimeout"],filterSelfPaths:[1,"filterSelfPaths"],addPathEvent:[1,"addPathEvent"],delPathEvent:[1,"delPathEvent"],updatePathEvent:[1,"updatePathEvent"]},features:[Qt],decls:14,vars:5,consts:[[1,"widget-options-grid"],["name","enableTimeout",3,"formControl"],["type","number","matNativeControl","","placeholder","Time in seconds...","name","dataTimeout","min","2","required","",3,"formControl"],["matTextSuffix",""],[3,"formGroup"],["name","filterSelfPaths",3,"formControl"],[2,"display","block",3,"pathFormGroup","filterSelfPaths","multiCTRLArray"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"mat-checkbox",1),m(2," Enable Widget Data TTL "),u(),d(3,"mat-form-field")(4,"mat-label"),m(5,"TTL Timeout For Paths"),u(),U(6,"input",2),d(7,"span",3),m(8,"Seconds"),u()()(),Dn(9,4),G(10,Tu,2,0)(11,Du,3,2),Pn(),d(12,"mat-checkbox",5),m(13,` Restrict to own vessel
|
|
45
|
+
`),u()),t&2&&(g(),T("formControl",i.enableTimeout()),g(5),T("formControl",i.dataTimeout()),g(3),T("formGroup",i.pathsFormGroup),g(),F(i.isArray()?10:11),g(2),T("formControl",i.filterSelfPaths()))},dependencies:[Gt,pt,dt,ki,nt,Mt,ct,ji,gt,Ti,kt,ut,mt,ft,Qi,jl,Hl],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:5px}"]})}return n})();function Pu(n,o){if(n&1){let e=ae();d(0,"button",7),B("click",function(){q(e);let i=I();return z(i.dateTimezone().setValue(""))}),U(1,"span",8),u()}}function Iu(n,o){if(n&1&&(d(0,"mat-option",6),m(1),u()),n&2){let e=o.$implicit;T("value",e.label),g(),Ui(" ",e.offset," - ",e.label," ")}}function Ou(n){return o=>n.some(t=>t.label===o.value)?null:{requireMatch:!0}}var Ru=()=>{let n=Intl.supportedValuesOf("timeZone"),o=new Date;return n.map(e=>({offset:new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"shortOffset"}).formatToParts(o).find(r=>r.type==="timeZoneName")?.value||"",label:e}))},Ql=(()=>{class n{_destroyRef=A(rt);dateFormat=v(void 0);dateTimezone=v(void 0);tz=[];filteredTZ;filteredTZSubscription=null;constructor(){}ngOnInit(){typeof Intl.supportedValuesOf<"u"?this.tz=Ru().sort((e,t)=>this.compareOffsets(e.offset,t.offset)):(console.log("[Widget Options] Feature not supported. Using static Time Zone list"),this.tz=[{offset:"GMT",label:"Africa/Abidjan"},{offset:"GMT",label:"Africa/Accra"},{offset:"GMT+3",label:"Africa/Addis_Ababa"},{offset:"GMT+1",label:"Africa/Algiers"},{offset:"GMT+3",label:"Africa/Asmera"},{offset:"GMT",label:"Africa/Bamako"},{offset:"GMT+1",label:"Africa/Bangui"},{offset:"GMT",label:"Africa/Banjul"},{offset:"GMT",label:"Africa/Bissau"},{offset:"GMT+2",label:"Africa/Blantyre"},{offset:"GMT+1",label:"Africa/Brazzaville"},{offset:"GMT+2",label:"Africa/Bujumbura"},{offset:"GMT+2",label:"Africa/Cairo"},{offset:"GMT",label:"Africa/Casablanca"},{offset:"GMT+2",label:"Africa/Ceuta"},{offset:"GMT",label:"Africa/Conakry"},{offset:"GMT",label:"Africa/Dakar"},{offset:"GMT+3",label:"Africa/Dar_es_Salaam"},{offset:"GMT+3",label:"Africa/Djibouti"},{offset:"GMT+1",label:"Africa/Douala"},{offset:"GMT",label:"Africa/El_Aaiun"},{offset:"GMT",label:"Africa/Freetown"},{offset:"GMT+2",label:"Africa/Gaborone"},{offset:"GMT+2",label:"Africa/Harare"},{offset:"GMT+2",label:"Africa/Johannesburg"},{offset:"GMT+2",label:"Africa/Juba"},{offset:"GMT+3",label:"Africa/Kampala"},{offset:"GMT+2",label:"Africa/Khartoum"},{offset:"GMT+2",label:"Africa/Kigali"},{offset:"GMT+1",label:"Africa/Kinshasa"},{offset:"GMT+1",label:"Africa/Lagos"},{offset:"GMT+1",label:"Africa/Libreville"},{offset:"GMT",label:"Africa/Lome"},{offset:"GMT+1",label:"Africa/Luanda"},{offset:"GMT+2",label:"Africa/Lubumbashi"},{offset:"GMT+2",label:"Africa/Lusaka"},{offset:"GMT+1",label:"Africa/Malabo"},{offset:"GMT+2",label:"Africa/Maputo"},{offset:"GMT+2",label:"Africa/Maseru"},{offset:"GMT+2",label:"Africa/Mbabane"},{offset:"GMT+3",label:"Africa/Mogadishu"},{offset:"GMT",label:"Africa/Monrovia"},{offset:"GMT+3",label:"Africa/Nairobi"},{offset:"GMT+1",label:"Africa/Ndjamena"},{offset:"GMT+1",label:"Africa/Niamey"},{offset:"GMT",label:"Africa/Nouakchott"},{offset:"GMT",label:"Africa/Ouagadougou"},{offset:"GMT+1",label:"Africa/Porto-Novo"},{offset:"GMT",label:"Africa/Sao_Tome"},{offset:"GMT+2",label:"Africa/Tripoli"},{offset:"GMT+1",label:"Africa/Tunis"},{offset:"GMT+2",label:"Africa/Windhoek"},{offset:"GMT-9",label:"America/Adak"},{offset:"GMT-8",label:"America/Anchorage"},{offset:"GMT-4",label:"America/Anguilla"},{offset:"GMT-4",label:"America/Antigua"},{offset:"GMT-3",label:"America/Araguaina"},{offset:"GMT-3",label:"America/Argentina/La_Rioja"},{offset:"GMT-3",label:"America/Argentina/Rio_Gallegos"},{offset:"GMT-3",label:"America/Argentina/Salta"},{offset:"GMT-3",label:"America/Argentina/San_Juan"},{offset:"GMT-3",label:"America/Argentina/San_Luis"},{offset:"GMT-3",label:"America/Argentina/Tucuman"},{offset:"GMT-3",label:"America/Argentina/Ushuaia"},{offset:"GMT-4",label:"America/Aruba"},{offset:"GMT-3",label:"America/Asuncion"},{offset:"GMT-3",label:"America/Bahia"},{offset:"GMT-6",label:"America/Bahia_Banderas"},{offset:"GMT-4",label:"America/Barbados"},{offset:"GMT-3",label:"America/Belem"},{offset:"GMT-6",label:"America/Belize"},{offset:"GMT-4",label:"America/Blanc-Sablon"},{offset:"GMT-4",label:"America/Boa_Vista"},{offset:"GMT-5",label:"America/Bogota"},{offset:"GMT-6",label:"America/Boise"},{offset:"GMT-3",label:"America/Buenos_Aires"},{offset:"GMT-6",label:"America/Cambridge_Bay"},{offset:"GMT-4",label:"America/Campo_Grande"},{offset:"GMT-5",label:"America/Cancun"},{offset:"GMT-4",label:"America/Caracas"},{offset:"GMT-3",label:"America/Catamarca"},{offset:"GMT-3",label:"America/Cayenne"},{offset:"GMT-5",label:"America/Cayman"},{offset:"GMT-5",label:"America/Chicago"},{offset:"GMT-6",label:"America/Chihuahua"},{offset:"GMT-6",label:"America/Ciudad_Juarez"},{offset:"GMT-5",label:"America/Coral_Harbour"},{offset:"GMT-3",label:"America/Cordoba"},{offset:"GMT-6",label:"America/Costa_Rica"},{offset:"GMT-7",label:"America/Creston"},{offset:"GMT-4",label:"America/Cuiaba"},{offset:"GMT-4",label:"America/Curacao"},{offset:"GMT",label:"America/Danmarkshavn"},{offset:"GMT-7",label:"America/Dawson"},{offset:"GMT-7",label:"America/Dawson_Creek"},{offset:"GMT-6",label:"America/Denver"},{offset:"GMT-4",label:"America/Detroit"},{offset:"GMT-4",label:"America/Dominica"},{offset:"GMT-6",label:"America/Edmonton"},{offset:"GMT-5",label:"America/Eirunepe"},{offset:"GMT-6",label:"America/El_Salvador"},{offset:"GMT-7",label:"America/Fort_Nelson"},{offset:"GMT-3",label:"America/Fortaleza"},{offset:"GMT-3",label:"America/Glace_Bay"},{offset:"GMT-1",label:"America/Godthab"},{offset:"GMT-3",label:"America/Goose_Bay"},{offset:"GMT-4",label:"America/Grand_Turk"},{offset:"GMT-4",label:"America/Grenada"},{offset:"GMT-4",label:"America/Guadeloupe"},{offset:"GMT-6",label:"America/Guatemala"},{offset:"GMT-5",label:"America/Guayaquil"},{offset:"GMT-4",label:"America/Guyana"},{offset:"GMT-3",label:"America/Halifax"},{offset:"GMT-4",label:"America/Havana"},{offset:"GMT-7",label:"America/Hermosillo"},{offset:"GMT-5",label:"America/Indiana/Knox"},{offset:"GMT-4",label:"America/Indiana/Marengo"},{offset:"GMT-4",label:"America/Indiana/Petersburg"},{offset:"GMT-5",label:"America/Indiana/Tell_City"},{offset:"GMT-4",label:"America/Indiana/Vevay"},{offset:"GMT-4",label:"America/Indiana/Vincennes"},{offset:"GMT-4",label:"America/Indiana/Winamac"},{offset:"GMT-4",label:"America/Indianapolis"},{offset:"GMT-6",label:"America/Inuvik"},{offset:"GMT-4",label:"America/Iqaluit"},{offset:"GMT-5",label:"America/Jamaica"},{offset:"GMT-3",label:"America/Jujuy"},{offset:"GMT-8",label:"America/Juneau"},{offset:"GMT-4",label:"America/Kentucky/Monticello"},{offset:"GMT-4",label:"America/Kralendijk"},{offset:"GMT-4",label:"America/La_Paz"},{offset:"GMT-5",label:"America/Lima"},{offset:"GMT-7",label:"America/Los_Angeles"},{offset:"GMT-4",label:"America/Louisville"},{offset:"GMT-4",label:"America/Lower_Princes"},{offset:"GMT-3",label:"America/Maceio"},{offset:"GMT-6",label:"America/Managua"},{offset:"GMT-4",label:"America/Manaus"},{offset:"GMT-4",label:"America/Marigot"},{offset:"GMT-4",label:"America/Martinique"},{offset:"GMT-5",label:"America/Matamoros"},{offset:"GMT-7",label:"America/Mazatlan"},{offset:"GMT-3",label:"America/Mendoza"},{offset:"GMT-5",label:"America/Menominee"},{offset:"GMT-6",label:"America/Merida"},{offset:"GMT-8",label:"America/Metlakatla"},{offset:"GMT-6",label:"America/Mexico_City"},{offset:"GMT-2",label:"America/Miquelon"},{offset:"GMT-3",label:"America/Moncton"},{offset:"GMT-6",label:"America/Monterrey"},{offset:"GMT-3",label:"America/Montevideo"},{offset:"GMT-4",label:"America/Montserrat"},{offset:"GMT-4",label:"America/Nassau"},{offset:"GMT-4",label:"America/New_York"},{offset:"GMT-8",label:"America/Nome"},{offset:"GMT-2",label:"America/Noronha"},{offset:"GMT-5",label:"America/North_Dakota/Beulah"},{offset:"GMT-5",label:"America/North_Dakota/Center"},{offset:"GMT-5",label:"America/North_Dakota/New_Salem"},{offset:"GMT-5",label:"America/Ojinaga"},{offset:"GMT-5",label:"America/Panama"},{offset:"GMT-3",label:"America/Paramaribo"},{offset:"GMT-7",label:"America/Phoenix"},{offset:"GMT-4",label:"America/Port-au-Prince"},{offset:"GMT-4",label:"America/Port_of_Spain"},{offset:"GMT-4",label:"America/Porto_Velho"},{offset:"GMT-4",label:"America/Puerto_Rico"},{offset:"GMT-3",label:"America/Punta_Arenas"},{offset:"GMT-5",label:"America/Rankin_Inlet"},{offset:"GMT-3",label:"America/Recife"},{offset:"GMT-6",label:"America/Regina"},{offset:"GMT-5",label:"America/Resolute"},{offset:"GMT-5",label:"America/Rio_Branco"},{offset:"GMT-3",label:"America/Santarem"},{offset:"GMT-3",label:"America/Santiago"},{offset:"GMT-4",label:"America/Santo_Domingo"},{offset:"GMT-3",label:"America/Sao_Paulo"},{offset:"GMT-1",label:"America/Scoresbysund"},{offset:"GMT-8",label:"America/Sitka"},{offset:"GMT-4",label:"America/St_Barthelemy"},{offset:"GMT-2:30",label:"America/St_Johns"},{offset:"GMT-4",label:"America/St_Kitts"},{offset:"GMT-4",label:"America/St_Lucia"},{offset:"GMT-4",label:"America/St_Thomas"},{offset:"GMT-4",label:"America/St_Vincent"},{offset:"GMT-6",label:"America/Swift_Current"},{offset:"GMT-6",label:"America/Tegucigalpa"},{offset:"GMT-3",label:"America/Thule"},{offset:"GMT-7",label:"America/Tijuana"},{offset:"GMT-4",label:"America/Toronto"},{offset:"GMT-4",label:"America/Tortola"},{offset:"GMT-7",label:"America/Vancouver"},{offset:"GMT-7",label:"America/Whitehorse"},{offset:"GMT-5",label:"America/Winnipeg"},{offset:"GMT-8",label:"America/Yakutat"},{offset:"GMT+8",label:"Antarctica/Casey"},{offset:"GMT+7",label:"Antarctica/Davis"},{offset:"GMT+10",label:"Antarctica/DumontDUrville"},{offset:"GMT+11",label:"Antarctica/Macquarie"},{offset:"GMT+5",label:"Antarctica/Mawson"},{offset:"GMT+13",label:"Antarctica/McMurdo"},{offset:"GMT-3",label:"Antarctica/Palmer"},{offset:"GMT-3",label:"Antarctica/Rothera"},{offset:"GMT+3",label:"Antarctica/Syowa"},{offset:"GMT+2",label:"Antarctica/Troll"},{offset:"GMT+5",label:"Antarctica/Vostok"},{offset:"GMT+2",label:"Arctic/Longyearbyen"},{offset:"GMT+3",label:"Asia/Aden"},{offset:"GMT+5",label:"Asia/Almaty"},{offset:"GMT+3",label:"Asia/Amman"},{offset:"GMT+12",label:"Asia/Anadyr"},{offset:"GMT+5",label:"Asia/Aqtau"},{offset:"GMT+5",label:"Asia/Aqtobe"},{offset:"GMT+5",label:"Asia/Ashgabat"},{offset:"GMT+5",label:"Asia/Atyrau"},{offset:"GMT+3",label:"Asia/Baghdad"},{offset:"GMT+3",label:"Asia/Bahrain"},{offset:"GMT+4",label:"Asia/Baku"},{offset:"GMT+7",label:"Asia/Bangkok"},{offset:"GMT+7",label:"Asia/Barnaul"},{offset:"GMT+3",label:"Asia/Beirut"},{offset:"GMT+6",label:"Asia/Bishkek"},{offset:"GMT+8",label:"Asia/Brunei"},{offset:"GMT+5:30",label:"Asia/Calcutta"},{offset:"GMT+9",label:"Asia/Chita"},{offset:"GMT+5:30",label:"Asia/Colombo"},{offset:"GMT+3",label:"Asia/Damascus"},{offset:"GMT+6",label:"Asia/Dhaka"},{offset:"GMT+9",label:"Asia/Dili"},{offset:"GMT+4",label:"Asia/Dubai"},{offset:"GMT+5",label:"Asia/Dushanbe"},{offset:"GMT+3",label:"Asia/Famagusta"},{offset:"GMT+2",label:"Asia/Gaza"},{offset:"GMT+2",label:"Asia/Hebron"},{offset:"GMT+8",label:"Asia/Hong_Kong"},{offset:"GMT+7",label:"Asia/Hovd"},{offset:"GMT+8",label:"Asia/Irkutsk"},{offset:"GMT+7",label:"Asia/Jakarta"},{offset:"GMT+9",label:"Asia/Jayapura"},{offset:"GMT+3",label:"Asia/Jerusalem"},{offset:"GMT+4:30",label:"Asia/Kabul"},{offset:"GMT+12",label:"Asia/Kamchatka"},{offset:"GMT+5",label:"Asia/Karachi"},{offset:"GMT+5:45",label:"Asia/Katmandu"},{offset:"GMT+9",label:"Asia/Khandyga"},{offset:"GMT+7",label:"Asia/Krasnoyarsk"},{offset:"GMT+8",label:"Asia/Kuala_Lumpur"},{offset:"GMT+8",label:"Asia/Kuching"},{offset:"GMT+3",label:"Asia/Kuwait"},{offset:"GMT+8",label:"Asia/Macau"},{offset:"GMT+11",label:"Asia/Magadan"},{offset:"GMT+8",label:"Asia/Makassar"},{offset:"GMT+8",label:"Asia/Manila"},{offset:"GMT+4",label:"Asia/Muscat"},{offset:"GMT+3",label:"Asia/Nicosia"},{offset:"GMT+7",label:"Asia/Novokuznetsk"},{offset:"GMT+7",label:"Asia/Novosibirsk"},{offset:"GMT+6",label:"Asia/Omsk"},{offset:"GMT+5",label:"Asia/Oral"},{offset:"GMT+7",label:"Asia/Phnom_Penh"},{offset:"GMT+7",label:"Asia/Pontianak"},{offset:"GMT+9",label:"Asia/Pyongyang"},{offset:"GMT+3",label:"Asia/Qatar"},{offset:"GMT+5",label:"Asia/Qostanay"},{offset:"GMT+5",label:"Asia/Qyzylorda"},{offset:"GMT+6:30",label:"Asia/Rangoon"},{offset:"GMT+3",label:"Asia/Riyadh"},{offset:"GMT+7",label:"Asia/Saigon"},{offset:"GMT+11",label:"Asia/Sakhalin"},{offset:"GMT+5",label:"Asia/Samarkand"},{offset:"GMT+9",label:"Asia/Seoul"},{offset:"GMT+8",label:"Asia/Shanghai"},{offset:"GMT+8",label:"Asia/Singapore"},{offset:"GMT+11",label:"Asia/Srednekolymsk"},{offset:"GMT+8",label:"Asia/Taipei"},{offset:"GMT+5",label:"Asia/Tashkent"},{offset:"GMT+4",label:"Asia/Tbilisi"},{offset:"GMT+3:30",label:"Asia/Tehran"},{offset:"GMT+6",label:"Asia/Thimphu"},{offset:"GMT+9",label:"Asia/Tokyo"},{offset:"GMT+7",label:"Asia/Tomsk"},{offset:"GMT+8",label:"Asia/Ulaanbaatar"},{offset:"GMT+6",label:"Asia/Urumqi"},{offset:"GMT+10",label:"Asia/Ust-Nera"},{offset:"GMT+7",label:"Asia/Vientiane"},{offset:"GMT+10",label:"Asia/Vladivostok"},{offset:"GMT+9",label:"Asia/Yakutsk"},{offset:"GMT+5",label:"Asia/Yekaterinburg"},{offset:"GMT+4",label:"Asia/Yerevan"},{offset:"GMT",label:"Atlantic/Azores"},{offset:"GMT-3",label:"Atlantic/Bermuda"},{offset:"GMT+1",label:"Atlantic/Canary"},{offset:"GMT-1",label:"Atlantic/Cape_Verde"},{offset:"GMT+1",label:"Atlantic/Faeroe"},{offset:"GMT+1",label:"Atlantic/Madeira"},{offset:"GMT",label:"Atlantic/Reykjavik"},{offset:"GMT-2",label:"Atlantic/South_Georgia"},{offset:"GMT",label:"Atlantic/St_Helena"},{offset:"GMT-3",label:"Atlantic/Stanley"},{offset:"GMT+10:30",label:"Australia/Adelaide"},{offset:"GMT+10",label:"Australia/Brisbane"},{offset:"GMT+10:30",label:"Australia/Broken_Hill"},{offset:"GMT+9:30",label:"Australia/Darwin"},{offset:"GMT+8:45",label:"Australia/Eucla"},{offset:"GMT+11",label:"Australia/Hobart"},{offset:"GMT+10",label:"Australia/Lindeman"},{offset:"GMT+11",label:"Australia/Lord_Howe"},{offset:"GMT+11",label:"Australia/Melbourne"},{offset:"GMT+8",label:"Australia/Perth"},{offset:"GMT+11",label:"Australia/Sydney"},{offset:"GMT+2",label:"Europe/Amsterdam"},{offset:"GMT+2",label:"Europe/Andorra"},{offset:"GMT+4",label:"Europe/Astrakhan"},{offset:"GMT+3",label:"Europe/Athens"},{offset:"GMT+2",label:"Europe/Belgrade"},{offset:"GMT+2",label:"Europe/Berlin"},{offset:"GMT+2",label:"Europe/Bratislava"},{offset:"GMT+2",label:"Europe/Brussels"},{offset:"GMT+3",label:"Europe/Bucharest"},{offset:"GMT+2",label:"Europe/Budapest"},{offset:"GMT+2",label:"Europe/Busingen"},{offset:"GMT+3",label:"Europe/Chisinau"},{offset:"GMT+2",label:"Europe/Copenhagen"},{offset:"GMT+1",label:"Europe/Dublin"},{offset:"GMT+2",label:"Europe/Gibraltar"},{offset:"GMT+1",label:"Europe/Guernsey"},{offset:"GMT+3",label:"Europe/Helsinki"},{offset:"GMT+1",label:"Europe/Isle_of_Man"},{offset:"GMT+3",label:"Europe/Istanbul"},{offset:"GMT+1",label:"Europe/Jersey"},{offset:"GMT+2",label:"Europe/Kaliningrad"},{offset:"GMT+3",label:"Europe/Kiev"},{offset:"GMT+3",label:"Europe/Kirov"},{offset:"GMT+1",label:"Europe/Lisbon"},{offset:"GMT+2",label:"Europe/Ljubljana"},{offset:"GMT+1",label:"Europe/London"},{offset:"GMT+2",label:"Europe/Luxembourg"},{offset:"GMT+2",label:"Europe/Madrid"},{offset:"GMT+2",label:"Europe/Malta"},{offset:"GMT+3",label:"Europe/Mariehamn"},{offset:"GMT+3",label:"Europe/Minsk"},{offset:"GMT+2",label:"Europe/Monaco"},{offset:"GMT+3",label:"Europe/Moscow"},{offset:"GMT+2",label:"Europe/Oslo"},{offset:"GMT+2",label:"Europe/Paris"},{offset:"GMT+2",label:"Europe/Podgorica"},{offset:"GMT+2",label:"Europe/Prague"},{offset:"GMT+3",label:"Europe/Riga"},{offset:"GMT+2",label:"Europe/Rome"},{offset:"GMT+4",label:"Europe/Samara"},{offset:"GMT+2",label:"Europe/San_Marino"},{offset:"GMT+2",label:"Europe/Sarajevo"},{offset:"GMT+4",label:"Europe/Saratov"},{offset:"GMT+3",label:"Europe/Simferopol"},{offset:"GMT+2",label:"Europe/Skopje"},{offset:"GMT+3",label:"Europe/Sofia"},{offset:"GMT+2",label:"Europe/Stockholm"},{offset:"GMT+3",label:"Europe/Tallinn"},{offset:"GMT+2",label:"Europe/Tirane"},{offset:"GMT+4",label:"Europe/Ulyanovsk"},{offset:"GMT+2",label:"Europe/Vaduz"},{offset:"GMT+2",label:"Europe/Vatican"},{offset:"GMT+2",label:"Europe/Vienna"},{offset:"GMT+3",label:"Europe/Vilnius"},{offset:"GMT+3",label:"Europe/Volgograd"},{offset:"GMT+2",label:"Europe/Warsaw"},{offset:"GMT+2",label:"Europe/Zagreb"},{offset:"GMT+2",label:"Europe/Zurich"},{offset:"GMT+3",label:"Indian/Antananarivo"},{offset:"GMT+6",label:"Indian/Chagos"},{offset:"GMT+7",label:"Indian/Christmas"},{offset:"GMT+6:30",label:"Indian/Cocos"},{offset:"GMT+3",label:"Indian/Comoro"},{offset:"GMT+5",label:"Indian/Kerguelen"},{offset:"GMT+4",label:"Indian/Mahe"},{offset:"GMT+5",label:"Indian/Maldives"},{offset:"GMT+4",label:"Indian/Mauritius"},{offset:"GMT+3",label:"Indian/Mayotte"},{offset:"GMT+4",label:"Indian/Reunion"},{offset:"GMT+13",label:"Pacific/Apia"},{offset:"GMT+13",label:"Pacific/Auckland"},{offset:"GMT+11",label:"Pacific/Bougainville"},{offset:"GMT+13:45",label:"Pacific/Chatham"},{offset:"GMT-5",label:"Pacific/Easter"},{offset:"GMT+11",label:"Pacific/Efate"},{offset:"GMT+13",label:"Pacific/Enderbury"},{offset:"GMT+13",label:"Pacific/Fakaofo"},{offset:"GMT+12",label:"Pacific/Fiji"},{offset:"GMT+12",label:"Pacific/Funafuti"},{offset:"GMT-6",label:"Pacific/Galapagos"},{offset:"GMT-9",label:"Pacific/Gambier"},{offset:"GMT+11",label:"Pacific/Guadalcanal"},{offset:"GMT+10",label:"Pacific/Guam"},{offset:"GMT-10",label:"Pacific/Honolulu"},{offset:"GMT+14",label:"Pacific/Kiritimati"},{offset:"GMT+11",label:"Pacific/Kosrae"},{offset:"GMT+12",label:"Pacific/Kwajalein"},{offset:"GMT+12",label:"Pacific/Majuro"},{offset:"GMT-9:30",label:"Pacific/Marquesas"},{offset:"GMT-11",label:"Pacific/Midway"},{offset:"GMT+12",label:"Pacific/Nauru"},{offset:"GMT-11",label:"Pacific/Niue"},{offset:"GMT+12",label:"Pacific/Norfolk"},{offset:"GMT+11",label:"Pacific/Noumea"},{offset:"GMT-11",label:"Pacific/Pago_Pago"},{offset:"GMT+9",label:"Pacific/Palau"},{offset:"GMT-8",label:"Pacific/Pitcairn"},{offset:"GMT+11",label:"Pacific/Ponape"},{offset:"GMT+10",label:"Pacific/Port_Moresby"},{offset:"GMT-10",label:"Pacific/Rarotonga"},{offset:"GMT+10",label:"Pacific/Saipan"},{offset:"GMT-10",label:"Pacific/Tahiti"},{offset:"GMT+12",label:"Pacific/Tarawa"},{offset:"GMT+13",label:"Pacific/Tongatapu"},{offset:"GMT+10",label:"Pacific/Truk"},{offset:"GMT+12",label:"Pacific/Wake"},{offset:"GMT+12",label:"Pacific/Wallis"}].sort((e,t)=>this.compareOffsets(e.offset,t.offset))),this.tz.unshift({offset:"",label:"System Timezone -"}),this.dateTimezone().setValidators([_t.required,Ou(this.tz)]),this.filteredTZ=this.dateTimezone().valueChanges.pipe(Li(500),_n(""),vi(e=>this.filterTZ(e||""))),this.filteredTZSubscription=this.filteredTZ.pipe(et(this._destroyRef)).subscribe()}filterTZ(e){let t=e.toLowerCase();return this.tz.filter(i=>i.label.toLowerCase().includes(t))}compareOffsets(e,t){let i=a=>{let r=a.match(/([+-]?)(\d+)(?::(\d+))?/);if(!r)return 0;let s=r[1]==="-"?-1:1,h=parseInt(r[2],10),f=r[3]?parseInt(r[3],10):0;return s*(h*60+f)};return i(e)-i(t)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["display-datetime-options"]],inputs:{dateFormat:[1,"dateFormat"],dateTimezone:[1,"dateTimezone"]},decls:15,vars:6,consts:[["timeZoneAutoComplete","matAutocomplete"],[1,"widget-options-grid"],[1,"options-grid-span2"],["matInput","","placeholder","dd/MM/yyyy HH:mm:ss","name","dateFormat","required","",3,"formControl"],["type","text","matInput","","placeholder","Type to use autocomplete","name","dateTimezone","required","",3,"formControl","matAutocomplete"],["mat-icon-button","","matSuffix","","aria-label","Clear"],[3,"value"],["mat-icon-button","","matSuffix","","aria-label","Clear",3,"click"],[1,"fa-solid","fa-close"]],template:function(t,i){if(t&1&&(d(0,"div",1)(1,"mat-form-field",2)(2,"mat-label"),m(3,"Date & Time Format"),u(),U(4,"input",3),u(),d(5,"mat-form-field",2)(6,"mat-label"),m(7,"Adjust Value to Time Zone"),u(),U(8,"input",4),G(9,Pu,2,0,"button",5),d(10,"mat-autocomplete",null,0),ue(12,Iu,2,3,"mat-option",6,En),At(14,"async"),u()()()),t&2){let a=It(11);g(4),T("formControl",i.dateFormat()),g(4),T("formControl",i.dateTimezone())("matAutocomplete",a),g(),F(i.dateTimezone().value?9:-1),g(3),he(Bt(14,4,i.filteredTZ))}},dependencies:[ut,mt,ft,pt,dt,nt,ct,gt,Ti,fn,xt,Qi,Jn,Tt,za],encapsulation:2})}return n})();function Nu(n,o){if(n&1&&(d(0,"mat-option",6),m(1),At(2,"titlecase"),u()),n&2){let e=o.$implicit;T("value",ci(e)),g(),ne(Bt(2,3,e))}}var sr={V1_PLUGIN:"autopilot",V2_BASE:"/signalk/v2/api",V2_AUTOPILOTS:"/signalk/v2/api/vessels/self/autopilots",V2_DEFAULT_AUTOPILOT_ID:"/signalk/v2/api/vessels/self/autopilots/_providers/_default"},$l={options:{modes:[],states:[]},state:null,mode:"off-line",target:null,engaged:!1},Zl=(()=>{class n{formGroupName=v.required();_plugins=A(oo);_destroyRef=A(rt);http=A(Ya);rootFormGroup=A(kt);autopilotFormGroup;apiVersion=w(null);availableAutopilots=w({});autopilotPlugin=w(null);discoveryInProgress=w(!1);apiDetectionError=w(null);apInstances=se(()=>{let e=this.availableAutopilots();return e?Object.keys(e):[]});modes=w(null);pluginId=w(null);currentRequests=new Set;constructor(){R(()=>{this.autopilotFormGroup.get("apiVersion")?.setValue(this.apiVersion(),{emitEvent:!1})})}ngOnInit(){this.autopilotFormGroup=this.rootFormGroup.control.get(this.formGroupName()),this.modes.set(this.autopilotFormGroup.value.modes||null),this.detectAutopilotApi()}detectAutopilotApi(){return it(this,null,function*(){this.discoveryInProgress.set(!0),console.log("[Autopilot Options] Starting API detection...");try{if(yield this.checkV2Api())if(this.apiVersion.set("v2"),this.autopilotFormGroup.get("apiVersion")?.setValue("v2",{emitEvent:!1}),this.availableAutopilots()&&Object.keys(this.availableAutopilots()).length>0){this.pluginId.set(Object.values(this.availableAutopilots())[0]?.provider??null),this.autopilotFormGroup.get("pluginId")?.setValue(this.pluginId(),{emitEvent:!1}),this.discoveryInProgress.set(!1);return}else console.warn("[Autopilot Options] No V2 autopilot provider found")}catch(e){console.error("[Autopilot Options] Error checking V2 API, checking V1...",e)}try{if(yield this._plugins.isEnabled(sr.V1_PLUGIN)){this.apiVersion.set("v1"),this.autopilotFormGroup.get("apiVersion")?.setValue("v1",{emitEvent:!1}),this.availableAutopilots.set({"Default Autopilot":{provider:"Signal K Autopilot",isDefault:!0}}),this.pluginId.set("Signal K Autopilot"),this.autopilotFormGroup.get("pluginId")?.setValue("Signal K Autopilot",{emitEvent:!1}),console.log("[Autopilot Options] V1 API Signal K Autopilot plugin detected"),this.discoveryInProgress.set(!1);return}console.log("[Autopilot Options] V1 API plugin (signalk-autopilot) not found")}catch(e){console.error("[Autopilot Options] V1 plugin detection failed:",e)}console.warn("[Autopilot Options] No Autopilot detected"),this.discoveryInProgress.set(!1)})}checkV2Api(){return it(this,null,function*(){try{let e=yield Qo(this.makeHttpRequest(this.http.get(sr.V2_AUTOPILOTS,{observe:"response",responseType:"json"})));return e&&e.body&&Object.keys(e.body).length>0?(this.availableAutopilots.set(e.body),console.log("[Autopilot Options] Discovered V2 API autopilot providers:",JSON.stringify(e.body))):(this.availableAutopilots.set({}),console.warn("[Autopilot Options] No V2 autopilot provider plugin found.")),e?.status===200}catch(e){if(e&&typeof e=="object"&&"status"in e){let t=e;t.status===404?console.log("[Autopilot Options] V2 API endpoint not found (404)"):t.status>=500?console.warn("[Autopilot Options] V2 API server error:",t.status,t.statusText):console.log("[Autopilot Options] V2 API call to discover Autopilot Providers failed:",t.status,t.statusText)}else console.log("[Autopilot Options] V2 API network error:",e);return!1}})}discoverV2AutopilotOptions(e){return it(this,null,function*(){let t;try{try{this.discoveryInProgress.set(!0),t=yield Qo(this.makeHttpRequest(this.http.get(`${sr.V2_AUTOPILOTS}/${e}`))),console.log("[Autopilot Options] V2 Autopilot Options response:",JSON.stringify(t))}catch{t=$l,console.log(`[Autopilot Options] Default AP discovery endpoint error for instance '${e}'`)}return this.discoveryInProgress.set(!1),t}catch(i){return console.error("[Autopilot Options] Failed to discover V2 endpoints:",i),console.log(`[Autopilot Options] Using fallback V2 endpoints for instance '${e}'`),$l}})}onAutopilotInstanceIdChange(e){let t=e.value;if(e.value===""){this.modes.set(""),this.autopilotFormGroup.get("modes")?.setValue("",{emitEvent:!1});return}console.log("[Autopilot Options] Selected Autopilot Instance ID:",t),this.apiVersion()==="v2"?this.discoverV2AutopilotOptions(t).then(i=>{let a=i.options.modes||[];this.modes.set(a.join(", ")),this.autopilotFormGroup.get("modes")?.setValue(a,{emitEvent:!1}),console.log("[Autopilot Options] Autopilot plugin supported modes :",a.join(", "))}).catch(i=>{console.error("[Autopilot Options] Error requesting autopilot modes:",i),this.autopilotFormGroup.get("modes")?.setValue([],{emitEvent:!1})}):this.apiVersion()==="v1"&&(this.modes.set("standby, auto, wind, route"),this.autopilotFormGroup.get("modes")?.setValue("standby, auto, wind, route",{emitEvent:!1}),console.log("[Autopilot Options] Autopilot mode set to Raymarine v1 API modes: standby, auto, wind, route"))}makeHttpRequest(e){let t=e.pipe(et(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ra(()=>this.currentRequests.delete(t)))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["select-autopilot"]],inputs:{formGroupName:[1,"formGroupName"]},decls:30,vars:4,consts:[[1,"display-content","tab-content"],[1,"autopilot-options",3,"formGroup"],[1,"flex-item-rounded-card","rounded-card-color",2,"margin-block","10px"],[2,"margin-block-start","0px"],["placeholder","Select autopilot...","formControlName","instanceId","name","instanceId","required","",3,"selectionChange"],["value",""],[3,"value"],[1,"flex-item-rounded-card","rounded-card-color",2,"margin-block","10px","margin-left","10px","margin-right","10px"],["name","headingDirectionTrue","formControlName","headingDirectionTrue"],["name","invertRudder","formControlName","invertRudder"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),m(4,"Signal K Service Discovery"),u(),d(5,"ul")(6,"li")(7,"b"),m(8,"API Version:"),u(),m(9),u(),d(10,"li")(11,"b"),m(12,"Plugin:"),u(),m(13),u()()(),d(14,"mat-form-field")(15,"mat-label"),m(16,"Target Autopilot"),u(),d(17,"mat-select",4),B("selectionChange",function(r){return i.onAutopilotInstanceIdChange(r)}),d(18,"mat-option",5),m(19,"No autopilot"),u(),ue(20,Nu,3,5,"mat-option",6,Me),u()(),d(22,"div",7)(23,"b"),m(24,"Supported modes:"),u(),m(25),u(),d(26,"mat-checkbox",8),m(27," Display True Heading "),u(),d(28,"mat-checkbox",9),m(29," Invert Rudder Angle Indicator "),u()()()),t&2&&(g(),T("formGroup",i.autopilotFormGroup),g(8),ye(" ",i.apiVersion()),g(4),ye(" ",i.pluginId()),g(7),he(i.apInstances()),g(5),ye(" ",i.modes()," "))},dependencies:[gt,nt,Mt,ct,kt,Hi,ei,ut,mt,ni,Gt,$i,ii,Tt,ti,Ha],styles:[".autopilot-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}"]})}return n})();var Xl=()=>["measuring","capacity"],Vu=()=>["marineCompass","baseplateCompass"],Wu=()=>["measuring"];function Lu(n,o){if(n&1&&U(0,"config-display-chart-options",5),n&2){let e=I();T("displayName",e.displayNameToControl)("datasetUUID",e.datasetUUIDToControl)("convertUnitTo",e.convertUnitToControl)("showAverageData",e.showAverageDataToControl)("trackAgainstAverage",e.trackAgainstAverageToControl)("datasetAverageArray",e.datasetAverageArrayToControl)("showDatasetMinimumValueLine",e.showDatasetMinimumValueLineToControl)("showDatasetMaximumValueLine",e.showDatasetMaximumValueLineToControl)("showDatasetAverageValueLine",e.showDatasetAverageValueLineToControl)("showDatasetAngleAverageValueLine",e.showDatasetAngleAverageValueLineToControl)("startScaleAtZero",e.startScaleAtZeroToControl)("showLabel",e.showLabelToControl)("showTimeScale",e.showTimeScaleToControl)("showYScale",e.showYScaleToControl)("yScaleSuggestedMin",e.yScaleSuggestedMinToControl)("yScaleSuggestedMax",e.yScaleSuggestedMaxToControl)("enableMinMaxScaleLimit",e.enableMinMaxScaleLimitToControl)("yScaleMin",e.yScaleMinToControl)("yScaleMax",e.yScaleMaxToControl)("numDecimal",e.numDecimalToControl)("verticalChart",e.verticalChartToControl)("inverseYAxis",e.inverseYAxisToControl)("color",e.colorToControl)}}function Gu(n,o){n&1&&U(0,"select-autopilot",6)}function Fu(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"URL"),u(),U(3,"input",39),u())}function Bu(n,o){n&1&&(d(0,"mat-checkbox",17),m(1," Allow pointer events on embedded content. WARNING: this may prevent swipe gestures over the Embed widget or keyboard events, while the focus is in the embed, from triggering normal KIP interactions. "),u())}function Uu(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Widget Label"),u(),U(3,"input",40),u())}function qu(n,o){n&1&&(d(0,"mat-form-field",41)(1,"mat-label"),m(2,"Scale Start"),u(),U(3,"input",42),u(),d(4,"mat-form-field",41)(5,"mat-label"),m(6,"Scale End"),u(),U(7,"input",43),u())}function zu(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Integer Places"),u(),U(3,"input",44),u())}function Hu(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Decimal Places"),u(),U(3,"input",45),u()),n&2){let e=I(2);Ft(e.widgetConfig.showMiniChart!==void 0?"options-grid-span2":"")}}function ju(n,o){n&1&&(d(0,"mat-checkbox",19),m(1," Show Min recorded value "),u())}function Yu(n,o){n&1&&(d(0,"mat-checkbox",20),m(1," Show Max recorded value "),u())}function Qu(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Next Dashboard after start"),u(),U(3,"input",46),u()),n&2){let e=I(2);Je("options-grid-span2",!e.widgetConfig.numInt)}}function $u(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",e.measure),g(),ye(" ",e.description," ")}}function Zu(n,o){if(n&1&&(d(0,"mat-optgroup",48),ue(1,$u,2,2,"mat-option",49,Me),u()),n&2){let e=I().$implicit;T("label",e.group),g(),he(e.units)}}function Xu(n,o){if(n&1&&G(0,Zu,3,1,"mat-optgroup",48),n&2){let e=o.$implicit,t=I(3);F(!t.widgetConfig.convertUnitToGroup||t.widgetConfig.convertUnitToGroup===""||t.widgetConfig.convertUnitToGroup===e.group?0:-1)}}function Ku(n,o){if(n&1&&(d(0,"mat-form-field",22)(1,"mat-label"),m(2,"Display Units"),u(),d(3,"mat-select",47),ue(4,Xu,1,1,null,null,Me),u()()),n&2){let e=I(2);g(4),he(e.unitList.conversions)}}function Ju(n,o){n&1&&(d(0,"mat-checkbox",23),m(1," Enable beeps on count down "),u())}function eh(n,o){if(n&1&&U(0,"display-datetime-options",24),n&2){let e=I(2);T("dateFormat",e.dateFormatToControl)("dateTimezone",e.dateTimezoneToControl)}}function th(n,o){n&1&&(d(0,"mat-checkbox",25),m(1," Close-hauled Lines "),u())}function ih(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Vessel Close-hauled Angle"),u(),U(3,"input",50),u())}function nh(n,o){n&1&&(d(0,"mat-checkbox",26),m(1," Wind Sectors "),u())}function ah(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Sector Duration"),u(),U(3,"input",51),u())}function oh(n,o){n&1&&(d(0,"mat-checkbox",27),m(1," Apparent Wind Speed Value "),u())}function rh(n,o){n&1&&(d(0,"mat-checkbox",28),m(1," True Wind Speed Value "),u())}function sh(n,o){n&1&&(d(0,"mat-checkbox",29),m(1," Course Over Ground "),u())}function lh(n,o){n&1&&(d(0,"mat-checkbox",30),m(1," True Wind Angle Indicator "),u())}function dh(n,o){n&1&&(d(0,"mat-checkbox",31),m(1," Next Waypoint "),u())}function ch(n,o){n&1&&(d(0,"mat-checkbox",32),m(1," Drift "),u())}function mh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Minimum Value"),u(),U(3,"input",52),u())}function uh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Maximum Value"),u(),U(3,"input",53),u())}function hh(n,o){n&1&&(d(0,"mat-checkbox",33),m(1," Ignore Zones configuration "),u())}function ph(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",55),m(2," Show Heeling Side Label "),u()(),d(3,"div",54)(4,"mat-checkbox",56),m(5," Reverse Angle "),u()())}function gh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",59),m(2," Show Progress Bar "),u()(),d(3,"div",34)(4,"mat-checkbox",60),m(5," Show Ticks "),u()())}function fh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",60),m(2," Show Ticks "),u()())}function bh(n,o){if(n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Highlights Width"),u(),U(3,"input",57),u(),d(4,"div",54)(5,"mat-checkbox",58),m(6," Show Needle Indicator "),u()(),G(7,gh,6,0)(8,fh,3,0,"div",54)),n&2){let e=I(2);g(7),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"?7:8)}}function Ah(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Rotation Element"),u(),d(3,"mat-select",61)(4,"mat-option",62),m(5,"Dial (Marine Compass)"),u(),d(6,"mat-option",63),m(7,"Needle (Base plate compass)"),u()()(),d(8,"div",54)(9,"mat-checkbox",64),m(10," Show value box "),u()(),d(11,"div",54)(12,"mat-checkbox",65),m(13," Show cardinal degrees "),u()())}function vh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Progress Bar Start Position"),u(),d(3,"mat-select",68)(4,"mat-option",69),m(5,"Left"),u(),d(6,"mat-option",70),m(7,"Middle"),u(),d(8,"mat-option",71),m(9,"Right"),u()()())}function yh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Progress Bar Start Angle"),u(),U(3,"input",72),u())}function Ch(n,o){if(n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Gauge Type"),u(),d(3,"mat-select",61)(4,"mat-option",66),m(5,"Measuring"),u(),d(6,"mat-option",67),m(7,"Capacity"),u()()(),G(8,vh,10,0,"mat-form-field",54),G(9,yh,4,0,"mat-form-field",54)),n&2){let e=I(3);g(8),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"&&ba(2,Wu).includes(e.formMaster.value.gauge.subType)?8:-1),g(),F(e.formMaster.value.gauge.subType==="capacity"?9:-1)}}function Sh(n,o){if(n&1&&G(0,Ah,14,0)(1,Ch,10,3),n&2){let e=I(2);F(ba(1,Vu).indexOf(e.formMaster.value.gauge.subType)>-1?0:ba(2,Xl).indexOf(e.formMaster.value.gauge.subType)>-1?1:-1)}}function wh(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Orientation"),u(),d(3,"mat-select",73)(4,"mat-option",74),m(5,"Vertical"),u(),d(6,"mat-option",75),m(7,"Horizontal"),u()()())}function xh(n,o){n&1&&(d(0,"mat-form-field",34)(1,"mat-label"),m(2,"Unit Label"),u(),d(3,"mat-select",76)(4,"mat-option",77),m(5,"Full Label"),u(),d(6,"mat-option",78),m(7,"First Letter Only"),u()()())}function _h(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",ci(e.value)),g(),ne(e.label)}}function Mh(n,o){if(n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Color"),u(),d(3,"mat-select",79),ue(4,_h,2,3,"mat-option",49,Me),u()()),n&2){let e=I(2);g(4),he(e.colors)}}function kh(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Scale Span"),u(),d(3,"mat-select",80)(4,"mat-option",81),m(5,"1 Minute"),u(),d(6,"mat-option",82),m(7,"5 Minutes"),u(),d(8,"mat-option",83),m(9,"30 Minutes"),u()()())}function Th(n,o){n&1&&(d(0,"mat-checkbox",35),m(1," Show Background Graph "),d(2,"i"),m(3,"(Too many graphs may affect performance)"),u()())}function Eh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Suggested Scale Start"),u(),U(3,"input",84),u())}function Dh(n,o){n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Suggested Scale End"),u(),U(3,"input",85),u())}function Ph(n,o){n&1&&(d(0,"mat-checkbox",36),m(1," Inverse Scale Axis "),u())}function Ih(n,o){n&1&&(d(0,"mat-checkbox",37),m(1," Vertical Data Graph "),u())}function Oh(n,o){n&1&&(d(0,"mat-checkbox",38),m(1," Disable background color "),u())}function Rh(n,o){if(n&1&&(d(0,"mat-option",49),m(1),u()),n&2){let e=o.$implicit;T("value",ci(e.value)),g(),ne(e.label)}}function Nh(n,o){if(n&1&&(d(0,"mat-form-field")(1,"mat-label"),m(2,"Background Color"),u(),d(3,"mat-select",86),ue(4,Rh,2,3,"mat-option",49,Me),u()()),n&2){let e=I(2);g(4),he(e.colors)}}function Vh(n,o){n&1&&(d(0,"mat-form-field",54)(1,"mat-label"),m(2,"Background Style"),u(),d(3,"mat-select",99)(4,"mat-option",100),m(5,"Dark Gray"),u(),d(6,"mat-option",101),m(7,"Satin Gray"),u(),d(8,"mat-option",102),m(9,"Light Gray"),u(),d(10,"mat-option",103),m(11,"White"),u(),d(12,"mat-option",104),m(13,"Black"),u(),d(14,"mat-option",105),m(15,"Beige"),u(),d(16,"mat-option",106),m(17,"Brown"),u(),d(18,"mat-option",107),m(19,"Red"),u(),d(20,"mat-option",108),m(21,"Green"),u(),d(22,"mat-option",109),m(23,"Blue"),u(),d(24,"mat-option",95),m(25,"Anthracite"),u(),d(26,"mat-option",110),m(27,"Mud"),u(),d(28,"mat-option",111),m(29,"Punched Sheet"),u(),d(30,"mat-option",112),m(31,"Carbon"),u(),d(32,"mat-option",113),m(33,"Stainless"),u(),d(34,"mat-option",114),m(35,"Brushed Metal"),u(),d(36,"mat-option",115),m(37,"Brushed Stainless"),u(),d(38,"mat-option",116),m(39,"Turned"),u()()())}function Wh(n,o){n&1&&(d(0,"div",54)(1,"mat-checkbox",117),m(2," Reverse Pitch Axis "),u()(),d(3,"div",54)(4,"mat-checkbox",118),m(5," Reverse Roll Axis "),u()(),d(6,"div",54)(7,"mat-checkbox",119),m(8," Show Frame "),u()())}function Lh(n,o){if(n&1&&(G(0,Vh,40,0,"mat-form-field",54),G(1,Wh,9,0),d(2,"mat-form-field",54)(3,"mat-label"),m(4,"Frame Style"),u(),d(5,"mat-select",87)(6,"mat-option",88),m(7,"Black Metal"),u(),d(8,"mat-option",89),m(9,"Metal"),u(),d(10,"mat-option",90),m(11,"Shiny Metal"),u(),d(12,"mat-option",91),m(13,"Brass"),u(),d(14,"mat-option",92),m(15,"Steel"),u(),d(16,"mat-option",93),m(17,"Chrome"),u(),d(18,"mat-option",94),m(19,"Gold"),u(),d(20,"mat-option",95),m(21,"Anthracite"),u(),d(22,"mat-option",96),m(23,"Tilted Gray"),u(),d(24,"mat-option",97),m(25,"Tilted Black"),u(),d(26,"mat-option",98),m(27,"Glossy Metal"),u()()()),n&2){let e=I(2);F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)!=="horizon"?0:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="horizon"?1:-1)}}function Gh(n,o){if(n&1&&(d(0,"div",7)(1,"div",15),G(2,Fu,4,0,"mat-form-field",16),G(3,Bu,2,0,"mat-checkbox",17),G(4,Uu,4,0,"mat-form-field",16),G(5,qu,8,0),G(6,zu,4,0,"mat-form-field"),G(7,Hu,4,2,"mat-form-field",18),G(8,ju,2,0,"mat-checkbox",19),G(9,Yu,2,0,"mat-checkbox",20),G(10,Qu,4,2,"mat-form-field",21),G(11,Ku,6,0,"mat-form-field",22),G(12,Ju,2,0,"mat-checkbox",23),G(13,eh,1,2,"display-datetime-options",24),G(14,th,2,0,"mat-checkbox",25),G(15,ih,4,0,"mat-form-field"),G(16,nh,2,0,"mat-checkbox",26),G(17,ah,4,0,"mat-form-field"),G(18,oh,2,0,"mat-checkbox",27),G(19,rh,2,0,"mat-checkbox",28),G(20,sh,2,0,"mat-checkbox",29),G(21,lh,2,0,"mat-checkbox",30),G(22,dh,2,0,"mat-checkbox",31),G(23,ch,2,0,"mat-checkbox",32),G(24,mh,4,0,"mat-form-field"),G(25,uh,4,0,"mat-form-field"),G(26,hh,2,0,"mat-checkbox",33),G(27,ph,6,0),G(28,bh,9,1),G(29,Sh,2,3),G(30,wh,8,0,"mat-form-field",34),G(31,xh,8,0,"mat-form-field",34),G(32,Mh,6,0,"mat-form-field",16),G(33,kh,10,0,"mat-form-field",16),G(34,Th,4,0,"mat-checkbox",35),G(35,Eh,4,0,"mat-form-field"),G(36,Dh,4,0,"mat-form-field"),G(37,Ph,2,0,"mat-checkbox",36),G(38,Ih,2,0,"mat-checkbox",37),G(39,Oh,2,0,"mat-checkbox",38),G(40,Nh,6,0,"mat-form-field"),G(41,Lh,28,2),u()()),n&2){let e=I();g(2),F((e.widgetConfig==null?null:e.widgetConfig.widgetUrl)!==void 0?2:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.allowInput)!==void 0?3:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.displayName)!==void 0?4:-1),g(),F(e.formMaster.get("displayScale")?5:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.numInt)!==void 0?6:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.numDecimal)!==void 0?7:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMin)!==void 0?8:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMax)!==void 0?9:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.nextDashboard)!==void 0?10:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.convertUnitTo)!==void 0?11:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.playBeeps)!==void 0?12:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.dateFormat)!==void 0?13:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.laylineEnable)!==void 0?14:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.laylineEnable)!==void 0?15:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.windSectorEnable)!==void 0?16:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.windSectorEnable)!==void 0?17:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.awsEnable)!==void 0?18:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.twsEnable)!==void 0?19:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.courseOverGroundEnable)!==void 0?20:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.twaEnable)!==void 0?21:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.waypointEnable)!==void 0?22:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.driftEnable)!==void 0?23:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.minValue)!==void 0&&!e.formMaster.get("displayScale")?24:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.maxValue)!==void 0&&!e.formMaster.get("displayScale")?25:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.ignoreZones)!==void 0?26:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="angle"?27:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"&&ba(40,Xl).includes(e.formMaster.value.gauge.subType)||(e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngLinear"?28:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngRadial"?29:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="ngLinear"?30:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="simpleLinear"?31:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.color)!==void 0?32:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.timeScale)!==void 0?33:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.showMiniChart)!==void 0?34:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.yScaleMin)!==void 0?35:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.yScaleMax)!==void 0?36:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.inverseYAxis)!==void 0?37:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.verticalChart)!==void 0?38:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.noBgColor)!==void 0?39:-1),g(),F((e.widgetConfig==null?null:e.widgetConfig.bgColor)!==void 0?40:-1),g(),F((e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="steel"||(e.widgetConfig==null||e.widgetConfig.gauge==null?null:e.widgetConfig.gauge.type)==="horizon"?41:-1)}}function Fh(n,o){if(n&1&&(U(0,"span",123),m(1,"\xA0Controls ")),n&2){let e=I(2);Rn(e.formMaster.controls.multiChildCtrls.valid?"display: none":"display: block")}}function Bh(n,o){if(n&1){let e=ae();d(0,"mat-tab",8)(1,"div",120)(2,"div"),Bi(3,Fh,2,2,"ng-template",121),u(),d(4,"boolean-multicontrol-options",122),B("addPath",function(i){q(e);let a=I();return z(a.addPathGroup(i))})("updatePath",function(i){q(e);let a=I();return z(a.updatePath(i))})("delPath",function(i){q(e);let a=I();return z(a.deletePath(i))}),u()()()}if(n&2){let e=I();g(4),T("multiCtrlArray",e.multiChildCtrlsToControl)}}function Uh(n,o){if(n&1&&(d(0,"span",125),m(1," error "),u(),m(2," \xA0Paths ")),n&2){let e=I(2);Rn(e.formMaster.controls.paths.valid||e.formMaster.controls.paths.disabled?"display: none":"display: block")}}function qh(n,o){if(n&1&&(d(0,"mat-tab",9)(1,"div",120)(2,"div"),Bi(3,Uh,3,2,"ng-template",121),u(),U(4,"paths-options",124),u()()),n&2){let e=I();g(4),T("isArray",e.isPathArray)("enableTimeout",e.enableTimeoutToControl)("dataTimeout",e.dataTimeoutToControl)("filterSelfPaths",e.filterSelfPathsToControl)("addPathEvent",e.addPathEvent)("delPathEvent",e.delPathEvent)("updatePathEvent",e.updatePathEvent)}}function zh(n,o){n&1&&(d(0,"p")(1,"mat-checkbox",128),m(2," Digital display "),u()())}function Hh(n,o){n&1&&(d(0,"mat-form-field",16)(1,"mat-label"),m(2,"Dial Size"),u(),d(3,"mat-select",129)(4,"mat-option",130),m(5,"1/4"),u(),d(6,"mat-option",131),m(7,"1/2"),u(),d(8,"mat-option",132),m(9,"3/4"),u(),d(10,"mat-option",77),m(11,"Full"),u()()())}function jh(n,o){if(n&1&&(d(0,"mat-tab",10)(1,"div",7)(2,"mat-form-field",16)(3,"mat-label"),m(4,"Gauge Type"),u(),d(5,"mat-select",73)(6,"mat-option",126),m(7,"Linear"),u(),d(8,"mat-option",127),m(9,"Radial"),u()()(),G(10,zh,3,0,"p"),G(11,Hh,12,0,"mat-form-field",16),u()()),n&2){let e=I();g(10),F(e.formMaster.value.gauge.subType==="linear"?10:-1),g(),F(e.formMaster.value.gauge.subType==="radial"?11:-1)}}function Yh(n,o){n&1&&(d(0,"p")(1,"mat-checkbox",135),m(2," Value to send on button push (checked = on, unchecked = off) "),u()())}function Qh(n,o){if(n&1&&(d(0,"mat-tab",11)(1,"div",120)(2,"p")(3,"mat-checkbox",133),m(4," Enable Put Requests "),u()(),d(5,"p")(6,"mat-checkbox",134),m(7," Momentary mode (instead of switching between on/off) "),u()(),G(8,Yh,3,0,"p"),u()()),n&2){let e=I();g(8),F(e.formMaster.controls.putMomentary.value?8:-1)}}function $h(n,o){n&1&&U(0,"span",123)}function Zh(n,o){if(n&1&&(G(0,$h,1,0,"span",123),m(1," Dataset ")),n&2){let e=I(2);F(e.formMaster.controls.datachartPath.valid?-1:0)}}function Xh(n,o){if(n&1&&(d(0,"mat-tab",12),Bi(1,Zh,2,1,"ng-template",121),U(2,"config-dataset-chart-options",136),u()),n&2){let e=I();g(2),T("filterSelfPaths",e.filterSelfPathsToControl)("datachartPath",e.datachartPathControl)("datachartSource",e.datachartSourceControl)("convertUnitTo",e.convertUnitToControl)("timeScale",e.timeScaleControl)("period",e.periodControl)}}var Kl=(()=>{class n{static KEY_MULTI_CHILD_CTRLS="multiChildCtrls";static KEY_DISPLAY_SCALE="displayScale";static KEY_GAUGE="gauge";static KEY_AUTOPILOT="autopilot";static KEY_PATHS="paths";static KEY_CONVERT_UNIT_TO="convertUnitTo";dialogRef=A(Si);fb=A(qn);DatasetService=A(Ei);units=A(at);app=A(Lt);widgetConfig=A(wi);titleDialog="Widget Options";formMaster;availableDataSets;unitList={};isPathArray=!1;addPathEvent;delPathEvent;updatePathEvent;colors=[];ngOnInit(){if(!this.widgetConfig){console.error("Widget configuration data is missing. Closing dialog."),this.dialogRef.close();return}this.availableDataSets=this.DatasetService.list().sort((e,t)=>{let i=e.label||"",a=t.label||"";return i.localeCompare(a,void 0,{sensitivity:"base"})}),this.unitList=this.units.getConversionsForPath(""),this.formMaster=this.generateFormGroups(this.widgetConfig),this.colors=this.app.configurableThemeColors}isPlainObject(e){return Object.prototype.toString.call(e)==="[object Object]"}generateFormGroups(e,t){let i=this.fb.group({});return Object.keys(e).forEach(a=>{let r=e[a];if(r!==null&&(Array.isArray(r)||this.isPlainObject(r))){if(a===n.KEY_MULTI_CHILD_CTRLS){i.addControl(a,this.fb.array([]));let s=i.get(a);r.forEach(h=>{s.push(this.generateCtrlArray(h))})}else if(a===n.KEY_DISPLAY_SCALE)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_GAUGE)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_AUTOPILOT)i.addControl(a,this.generateFormGroups(r,a));else if(a===n.KEY_PATHS){let s=r;if(this.widgetConfig.multiChildCtrls!==void 0){this.isPathArray=!0,i.addControl(a,this.fb.array([]));let h=i.get(a);Object.keys(s).forEach(f=>{let b=s[f];if(b){let C=this.generatePathArray(f,b);b.isPathConfigurable===!1&&C.disable(),h.push(C)}})}else{let h=this.fb.group({});Object.keys(s).forEach(f=>{let b=s[f];if(b){let C=this.generateFormGroups(b,f);b.isPathConfigurable===!1&&C.disable(),h.addControl(f,C)}}),i.addControl(a,h)}}t===n.KEY_PATHS&&i.addControl(a,this.generateFormGroups(r,a))}else if(t===n.KEY_CONVERT_UNIT_TO){let s=e[a];(s&&s.pathType=="number"||"datasetUUID"in this.widgetConfig)&&i.addControl(a,new Jt(r))}else switch(a){case"path":i.addControl(a,new Jt(r));break;case"datasetUUID":i.addControl(a,new Jt(r,_t.required));break;case"dataTimeout":i.addControl(a,new Jt(r,_t.required));break;default:i.addControl(a,new Jt(r));break}}),i}generatePathArray(e,t){let i=new tl({});return Object.keys(t).forEach(a=>{i.addControl(a,this.generatePathFields(a,t[a]))}),i}generatePathFields(e,t){let i=null;switch(e){case"path":i=new Jt(t);break;case"source":i=new Jt(t,_t.required);break;case"sampleTime":i=new Jt(t,_t.required);break;default:i=new Jt(t);break}return i}generateCtrlArray(e){let t=this.fb.group(e);return t.get("ctrlLabel").addValidators(_t.required),t}addPathGroup(e){this.addPathEvent=e}updatePath(e){e.forEach(t=>{this.formMaster.get("paths").controls.forEach(a=>{a.get("pathID").value==t.pathID&&(a.controls.description.setValue(t.ctrlLabel),a.controls.pathType.setValue(t.isNumeric?"number":"boolean"),this.updatePathEvent=e)})})}deletePath(e){let t=this.formMaster.get("paths"),i=0;t.controls.forEach(r=>{r.get("pathID").value==e.pathID?t.removeAt(i):i++}),this.formMaster.get("multiChildCtrls").removeAt(e.ctrlIndex),this.delPathEvent=e.pathID,this.formMaster.updateValueAndValidity()}get datachartPathControl(){return this.formMaster.get("datachartPath")}get datachartSourceControl(){return this.formMaster.get("datachartSource")}get convertUnitToControl(){return this.formMaster.get("convertUnitTo")}get timeScaleControl(){return this.formMaster.get("timeScale")}get periodControl(){return this.formMaster.get("period")}get datasetUUIDToControl(){return this.formMaster.get("datasetUUID")}get filterSelfPathsToControl(){return this.formMaster.get("filterSelfPaths")}get dataTimeoutToControl(){return this.formMaster.get("dataTimeout")}get enableTimeoutToControl(){return this.formMaster.get("enableTimeout")}get dateTimezoneToControl(){return this.formMaster.get("dateTimezone")}get yScaleSuggestedMaxToControl(){return this.formMaster.get("yScaleSuggestedMax")}get enableMinMaxScaleLimitToControl(){return this.formMaster.get("enableMinMaxScaleLimit")}get showDatasetMinimumValueLineToControl(){return this.formMaster.get("showDatasetMinimumValueLine")}get showDatasetMaximumValueLineToControl(){return this.formMaster.get("showDatasetMaximumValueLine")}get showDatasetAverageValueLineToControl(){return this.formMaster.get("showDatasetAverageValueLine")}get showDatasetAngleAverageValueLineToControl(){return this.formMaster.get("showDatasetAngleAverageValueLine")}get startScaleAtZeroToControl(){return this.formMaster.get("startScaleAtZero")}get showLabelToControl(){return this.formMaster.get("showLabel")}get showTimeScaleToControl(){return this.formMaster.get("showTimeScale")}get showYScaleToControl(){return this.formMaster.get("showYScale")}get yScaleSuggestedMinToControl(){return this.formMaster.get("yScaleSuggestedMin")}get yScaleMinToControl(){return this.formMaster.get("yScaleMin")}get yScaleMaxToControl(){return this.formMaster.get("yScaleMax")}get datasetAverageArrayToControl(){return this.formMaster.get("datasetAverageArray")}get trackAgainstAverageToControl(){return this.formMaster.get("trackAgainstAverage")}get showAverageDataToControl(){return this.formMaster.get("showAverageData")}get displayNameToControl(){return this.formMaster.get("displayName")}get numDecimalToControl(){return this.formMaster.get("numDecimal")}get verticalChartToControl(){return this.formMaster.get("verticalChart")}get inverseYAxisToControl(){return this.formMaster.get("inverseYAxis")}get colorToControl(){return this.formMaster.get("color")}get dateFormatToControl(){return this.formMaster.get("dateFormat")}get multiChildCtrlsToControl(){return this.formMaster.get("multiChildCtrls")}submitConfig(){this.dialogRef.close(this.formMaster.getRawValue())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["modal-widget-config"]],decls:20,vars:9,consts:[[3,"ngSubmit","formGroup"],["mat-dialog-title",""],[1,"widget-config-dialog-content"],[1,"tab-group-content"],["label","Display"],[1,"tab-content",3,"displayName","datasetUUID","convertUnitTo","showAverageData","trackAgainstAverage","datasetAverageArray","showDatasetMinimumValueLine","showDatasetMaximumValueLine","showDatasetAverageValueLine","showDatasetAngleAverageValueLine","startScaleAtZero","showLabel","showTimeScale","showYScale","yScaleSuggestedMin","yScaleSuggestedMax","enableMinMaxScaleLimit","yScaleMin","yScaleMax","numDecimal","verticalChart","inverseYAxis","color"],["formGroupName","autopilot",1,"tab-content"],[1,"display-content","tab-content"],["label","Controls"],["label","Paths"],["label","Settings","formGroupName","gauge"],["label","Put Request"],["label","Dataset"],["type","button","mat-dialog-close","","mat-flat-button",""],["mat-flat-button","","type","submit",3,"disabled"],[1,"widget-options-grid"],[1,"options-grid-span2"],["name","allowInput","formControlName","allowInput",1,"options-grid-span2"],[3,"class"],["name","showMin","formControlName","showMin"],["name","showMax","formControlName","showMax"],[3,"options-grid-span2"],[1,"fields"],["name","playBeeps","formControlName","playBeeps"],[1,"options-grid-span2",3,"dateFormat","dateTimezone"],["name","laylineEnable","formControlName","laylineEnable",1,"fields"],["name","windSectorEnable","formControlName","windSectorEnable"],["name","awsEnable","formControlName","awsEnable"],["name","twsEnable","formControlName","twsEnable"],["name","courseOverGroundEnable","formControlName","courseOverGroundEnable"],["name","twaEnable","formControlName","twaEnable"],["name","waypointEnable","formControlName","waypointEnable"],["name","driftEnable","formControlName","driftEnable"],["name","ignoreZones","formControlName","ignoreZones"],["formGroupName","gauge",1,"options-grid-span2"],["name","showMiniChart","formControlName","showMiniChart",1,"options-grid-span2"],["name","inverseYAxis","formControlName","inverseYAxis"],["name","verticalChart","formControlName","verticalChart"],["name","noBgColor","formControlName","noBgColor"],["type","url","matInput","","placeholder","Enter URL to page/resource","name","widgetUrl","formControlName","widgetUrl"],["matInput","","placeholder","Enter a label to display","name","displayName","formControlName","displayName"],["formGroupName","displayScale","appearance","outline"],["matNativeControl","","type","number","name","lower","formControlName","lower","placeholder","Enter number..."],["matInput","","type","number","name","upper","formControlName","upper","placeholder","Enter number..."],["type","number","min","1","max","5","matInput","","placeholder","Enter or select number...","name","numInt","formControlName","numInt","required",""],["type","number","min","0","max","5","matInput","","placeholder","Enter or select number...","name","numDecimal","formControlName","numDecimal","required",""],["type","number","min","0","max","99","matInput","","placeholder","Enter or select number...","name","nextDashboard","formControlName","nextDashboard"],["placeholder","Select unit","formControlName","convertUnitTo","required",""],[3,"label"],[3,"value"],["type","number","min","10","max","90","matInput","","placeholder","Select angle...","name","laylineAngle","formControlName","laylineAngle"],["type","number","min","1","max","90","matInput","","placeholder","Select or enter duration...","name","windSectorWindowSeconds","formControlName","windSectorWindowSeconds"],["matInput","","type","number","name","minValue","formControlName","minValue","placeholder","Enter or select number..."],["matInput","","type","number","name","maxValue","formControlName","maxValue","placeholder","Enter or select number..."],["formGroupName","gauge"],["name","sideLabel","formControlName","sideLabel"],["name","invertAngle","formControlName","invertAngle"],["type","number","min","0","max","25","matInput","","placeholder","Enter or select number...","name","highlightsWidth","formControlName","highlightsWidth","required",""],["name","enableNeedle","formControlName","enableNeedle"],["name","enableProgressbar","formControlName","enableProgressbar"],["name","enableTicks","formControlName","enableTicks"],["placeholder","Select Gauge Type...","formControlName","subType","name","subType"],["value","marineCompass"],["value","baseplateCompass"],["name","showValueBox","formControlName","showValueBox"],["name","compassUseNumbers","formControlName","compassUseNumbers"],["value","measuring"],["value","capacity"],["placeholder","Select start position...","formControlName","barStartPosition","name","barStartPosition"],["value","left"],["value","middle"],["value","right"],["type","number","min","1","max","360","matInput","","placeholder","Enter or select number...","name","scaleStart","formControlName","scaleStart","required",""],["placeholder","Select type...","formControlName","subType","name","subType"],["value","vertical"],["value","horizontal"],["placeholder","Select label format","formControlName","unitLabelFormat","name","unitLabelFormat"],["value","full"],["value","abr"],["placeholder","Select Color...","formControlName","color","name","color","required",""],["placeholder","Select span duration...","formControlName","timeScale","name","timeScale","required",""],["value","Last Minute"],["value","Last 5 Minutes"],["value","Last 30 Minutes"],["type","number","matInput","","placeholder","Enter or select number...","name","yScaleMin","formControlName","yScaleMin","required",""],["type","number","matInput","","placeholder","Enter or select number...","name","yScaleMax","formControlName","yScaleMax","required",""],["placeholder","Select Color...","formControlName","bgColor","name","bgColor","required",""],["placeholder","Select style...","formControlName","faceColor","name","faceColor"],["value","blackMetal"],["value","metal"],["value","shinyMetal"],["value","brass"],["value","steel"],["value","chrome"],["value","gold"],["value","anthracite"],["value","tiltedGray"],["value","tiltedBlack"],["value","glossyMetal"],["placeholder","Select style...","formControlName","backgroundColor","name","backgroundColor"],["value","darkGray"],["value","satinGray"],["value","lightGray"],["value","white"],["value","black"],["value","beige"],["value","brown"],["value","red"],["value","green"],["value","blue"],["value","mud"],["value","punchedSheet"],["value","carbon"],["value","stainless"],["value","brushedMetal"],["value","brushedStainless"],["value","turned"],["name","invertPitch","formControlName","invertPitch"],["name","invertRoll","formControlName","invertRoll"],["name","noFrameVisible","formControlName","noFrameVisible"],[1,"tab-content"],["mat-tab-label",""],[3,"addPath","updatePath","delPath","multiCtrlArray"],[1,"warning","fa","fa-exclamation-circle"],["formGroupName","paths",3,"isArray","enableTimeout","dataTimeout","filterSelfPaths","addPathEvent","delPathEvent","updatePathEvent"],[1,"warning","material-icons"],["value","linear"],["value","radial"],["formControlName","digitalMeter","name","digitalMeter"],["placeholder","Select size...","formControlName","radialSize","name","radialSize"],["value","quarter"],["value","half"],["value","three-quarter"],["formControlName","putEnable","name","putEnable"],["formControlName","putMomentary","name","putMomentary"],["formControlName","putMomentaryValue","name","putMomentaryValue"],[3,"filterSelfPaths","datachartPath","datachartSource","convertUnitTo","timeScale","period"]],template:function(t,i){t&1&&(d(0,"form",0),B("ngSubmit",function(){return i.submitConfig()}),d(1,"h6",1),m(2),u(),d(3,"mat-dialog-content",2)(4,"mat-tab-group",3)(5,"mat-tab",4),G(6,Lu,1,23,"config-display-chart-options",5)(7,Gu,1,0,"select-autopilot",6)(8,Gh,42,41,"div",7),u(),G(9,Bh,5,1,"mat-tab",8),G(10,qh,5,7,"mat-tab",9),G(11,jh,12,2,"mat-tab",10),G(12,Qh,9,1,"mat-tab",11),G(13,Xh,3,6,"mat-tab",12),u()(),U(14,"mat-divider"),d(15,"mat-dialog-actions")(16,"button",13),m(17,"Cancel"),u(),d(18,"button",14),m(19," Save "),u()()()),t&2&&(T("formGroup",i.formMaster),g(2),ne(i.titleDialog),g(4),F((i.widgetConfig==null?null:i.widgetConfig.datachartPath)!==void 0?6:i.widgetConfig!=null&&i.widgetConfig.autopilot?7:8),g(3),F((i.widgetConfig==null?null:i.widgetConfig.multiChildCtrls)!==void 0?9:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.paths)!==void 0?10:-1),g(),F((i.widgetConfig==null||i.widgetConfig.gauge==null?null:i.widgetConfig.gauge.type)==="steel"?11:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.putEnable)!==void 0&&(i.widgetConfig==null?null:i.widgetConfig.multiChildCtrls)===void 0?12:-1),g(),F((i.widgetConfig==null?null:i.widgetConfig.datachartPath)!==void 0?13:-1),g(5),T("disabled",!i.formMaster.valid))},dependencies:[pt,Bn,dt,ki,nt,Mt,ct,ji,Un,gt,kt,Hi,nl,Kt,xi,_i,zi,Mi,ei,ut,mt,ti,ft,Sl,vl,yl,Cl,ni,Gt,$i,ii,Tt,zn,ll,sl,Ke,lt,Ql,Ll,zl,Nl,Yl,Zl],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%}.widget-config-dialog-content[_ngcontent-%COMP%]{height:100%}.display-content[_ngcontent-%COMP%]{display:block;height:100%;width:100%;padding-top:15px;padding-bottom:10px}.warning[_ngcontent-%COMP%]{color:var(--mat-sys-error-container)}.tab-group-content[_ngcontent-%COMP%]{overflow:hidden;width:100%}"]})}return n})();var Kh=["button"],Jh=["*"];function ep(n,o){if(n&1&&(d(0,"div",2),U(1,"mat-pseudo-checkbox",6),u()),n&2){let e=I();g(),T("disabled",e.disabled)}}var Jl=new Yt("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS",{providedIn:"root",factory:tp});function tp(){return{hideSingleSelectionIndicator:!1,hideMultipleSelectionIndicator:!1,disabledInteractive:!1}}var ed=new Yt("MatButtonToggleGroup"),ip={provide:Gn,useExisting:Mn(()=>lr),multi:!0},xo=class{source;value;constructor(o,e){this.source=o,this.value=e}},lr=(()=>{class n{_changeDetector=A(Ut);_dir=A(Ja,{optional:!0});_multiple=!1;_disabled=!1;_disabledInteractive=!1;_selectionModel;_rawValue;_controlValueAccessorChangeFn=()=>{};_onTouched=()=>{};_buttonToggles;appearance;get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}_name=A(yi).getId("mat-button-toggle-group-");vertical;get value(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(t=>t.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}valueChange=new yt;get selected(){let e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=e,this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markButtonsForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e,this._markButtonsForCheck()}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}change=new yt;get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._markButtonsForCheck()}_hideSingleSelectionIndicator;get hideMultipleSelectionIndicator(){return this._hideMultipleSelectionIndicator}set hideMultipleSelectionIndicator(e){this._hideMultipleSelectionIndicator=e,this._markButtonsForCheck()}_hideMultipleSelectionIndicator;constructor(){let e=A(Jl,{optional:!0});this.appearance=e&&e.appearance?e.appearance:"standard",this.hideSingleSelectionIndicator=e?.hideSingleSelectionIndicator??!1,this.hideMultipleSelectionIndicator=e?.hideMultipleSelectionIndicator??!1}ngOnInit(){this._selectionModel=new fl(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked)),this.multiple||this._initializeTabIndex()}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_keydown(e){if(this.multiple||this.disabled)return;let i=e.target.id,a=this._buttonToggles.toArray().findIndex(s=>s.buttonId===i),r=null;switch(e.keyCode){case 32:case 13:r=this._buttonToggles.get(a)||null;break;case 38:r=this._getNextButton(a,-1);break;case 37:r=this._getNextButton(a,this.dir==="ltr"?-1:1);break;case 40:r=this._getNextButton(a,1);break;case 39:r=this._getNextButton(a,this.dir==="ltr"?1:-1);break;default:return}r&&(e.preventDefault(),r._onButtonClick(),r.focus())}_emitChangeEvent(e){let t=new xo(e,this.value);this._rawValue=t.value,this._controlValueAccessorChangeFn(t.value),this.change.emit(t)}_syncButtonToggle(e,t,i=!1,a=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?t?this._selectionModel.select(e):this._selectionModel.deselect(e):a=!0,a?Promise.resolve().then(()=>this._updateModelValue(e,i)):this._updateModelValue(e,i)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return typeof this._rawValue>"u"?!1:this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(t=>e.value!=null&&t===e.value):e.value===this._rawValue}_initializeTabIndex(){if(this._buttonToggles.forEach(e=>{e.tabIndex=-1}),this.selected)this.selected.tabIndex=0;else for(let e=0;e<this._buttonToggles.length;e++){let t=this._buttonToggles.get(e);if(!t.disabled){t.tabIndex=0;break}}}_getNextButton(e,t){let i=this._buttonToggles;for(let a=1;a<=i.length;a++){let r=(e+t*a+i.length)%i.length,s=i.get(r);if(s&&!s.disabled)return s}return null}_setSelectionByValue(e){if(this._rawValue=e,!this._buttonToggles)return;let t=this._buttonToggles.toArray();if(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(i=>this._selectValue(i,t))):(this._clearSelection(),this._selectValue(e,t)),!this.multiple&&t.every(i=>i.tabIndex===-1)){for(let i of t)if(!i.disabled){i.tabIndex=0;break}}}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>{e.checked=!1,this.multiple||(e.tabIndex=-1)})}_selectValue(e,t){for(let i of t)if(i.value===e){i.checked=!0,this._selectionModel.select(i),this.multiple||(i.tabIndex=0);break}}_updateModelValue(e,t){t&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){this._buttonToggles?.forEach(e=>e._markForCheck())}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["mat-button-toggle-group"]],contentQueries:function(t,i,a){if(t&1&&dn(a,_o,5),t&2){let r;Ct(r=St())&&(i._buttonToggles=r)}},hostAttrs:[1,"mat-button-toggle-group"],hostVars:6,hostBindings:function(t,i){t&1&&B("keydown",function(r){return i._keydown(r)}),t&2&&(Y("role",i.multiple?"group":"radiogroup")("aria-disabled",i.disabled),Je("mat-button-toggle-vertical",i.vertical)("mat-button-toggle-group-appearance-standard",i.appearance==="standard"))},inputs:{appearance:"appearance",name:"name",vertical:[2,"vertical","vertical",qe],value:"value",multiple:[2,"multiple","multiple",qe],disabled:[2,"disabled","disabled",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",qe],hideMultipleSelectionIndicator:[2,"hideMultipleSelectionIndicator","hideMultipleSelectionIndicator",qe]},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[hn([ip,{provide:ed,useExisting:n}])]})}return n})(),_o=(()=>{class n{_changeDetectorRef=A(Ut);_elementRef=A(Ie);_focusMonitor=A(Xa);_idGenerator=A(yi);_animationDisabled=Xt();_checked=!1;ariaLabel;ariaLabelledby=null;_buttonElement;buttonToggleGroup;get buttonId(){return`${this.id}-button`}id;name;value;get tabIndex(){return this._tabIndex()}set tabIndex(e){this._tabIndex.set(e)}_tabIndex;disableRipple;get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}_appearance;get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=e}_disabled=!1;get disabledInteractive(){return this._disabledInteractive||this.buttonToggleGroup!==null&&this.buttonToggleGroup.disabledInteractive}set disabledInteractive(e){this._disabledInteractive=e}_disabledInteractive;change=new yt;constructor(){A(Vn).load(to);let e=A(ed,{optional:!0}),t=A(new qa("tabindex"),{optional:!0})||"",i=A(Jl,{optional:!0});this._tabIndex=w(parseInt(t)||0),this.buttonToggleGroup=e,this.appearance=i&&i.appearance?i.appearance:"standard",this.disabledInteractive=i?.disabledInteractive??!1}ngOnInit(){let e=this.buttonToggleGroup;this.id=this.id||this._idGenerator.getId("mat-button-toggle-"),e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._animationDisabled||this._elementRef.nativeElement.classList.add("mat-button-toggle-animations-enabled"),this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){let e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){if(this.disabled)return;let e=this.isSingleSelector()?!0:!this._checked;if(e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.isSingleSelector()){let t=this.buttonToggleGroup._buttonToggles.find(i=>i.tabIndex===0);t&&(t.tabIndex=-1),this.tabIndex=0}this.change.emit(new xo(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this.isSingleSelector()?this.buttonToggleGroup.name:this.name||null}isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-button-toggle"]],viewQuery:function(t,i){if(t&1&&$t(Kh,5),t&2){let a;Ct(a=St())&&(i._buttonElement=a.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:14,hostBindings:function(t,i){t&1&&B("focus",function(){return i.focus()}),t&2&&(Y("aria-label",null)("aria-labelledby",null)("id",i.id)("name",null),Je("mat-button-toggle-standalone",!i.buttonToggleGroup)("mat-button-toggle-checked",i.checked)("mat-button-toggle-disabled",i.disabled)("mat-button-toggle-disabled-interactive",i.disabledInteractive)("mat-button-toggle-appearance-standard",i.appearance==="standard"))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",disableRipple:[2,"disableRipple","disableRipple",qe],appearance:"appearance",checked:[2,"checked","checked",qe],disabled:[2,"disabled","disabled",qe],disabledInteractive:[2,"disabledInteractive","disabledInteractive",qe]},outputs:{change:"change"},exportAs:["matButtonToggle"],ngContentSelectors:Jh,decls:7,vars:13,consts:[["button",""],["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"click","id","disabled"],[1,"mat-button-toggle-checkbox-wrapper"],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"],["state","checked","aria-hidden","true","appearance","minimal",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();In(),d(0,"button",1,0),B("click",function(){return q(a),z(i._onButtonClick())}),G(2,ep,2,1,"div",2),d(3,"span",3),On(4),u()(),U(5,"span",4)(6,"span",5)}if(t&2){let a=It(1);T("id",i.buttonId)("disabled",i.disabled&&!i.disabledInteractive||null),Y("role",i.isSingleSelector()?"radio":"button")("tabindex",i.disabled&&!i.disabledInteractive?-1:i.tabIndex)("aria-pressed",i.isSingleSelector()?null:i.checked)("aria-checked",i.isSingleSelector()?i.checked:null)("name",i._getButtonName())("aria-label",i.ariaLabel)("aria-labelledby",i.ariaLabelledby)("aria-disabled",i.disabled&&i.disabledInteractive?"true":null),g(2),F(i.buttonToggleGroup&&(!i.buttonToggleGroup.multiple&&!i.buttonToggleGroup.hideSingleSelectionIndicator||i.buttonToggleGroup.multiple&&!i.buttonToggleGroup.hideMultipleSelectionIndicator)?2:-1),g(4),T("matRippleTrigger",a)("matRippleDisabled",i.disableRipple||i.disabled)}},dependencies:[eo,dl],styles:[`.mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mat-button-toggle-legacy-shape);transform:translateZ(0)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}@media(forced-colors: active){.mat-button-toggle-standalone,.mat-button-toggle-group{outline:solid 1px}}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard .mat-pseudo-checkbox,.mat-button-toggle-group-appearance-standard .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container))}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}@media(forced-colors: active){.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{outline:0}}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-button-toggle-legacy-text-color);font-family:var(--mat-button-toggle-legacy-label-text-font);font-size:var(--mat-button-toggle-legacy-label-text-size);line-height:var(--mat-button-toggle-legacy-label-text-line-height);font-weight:var(--mat-button-toggle-legacy-label-text-weight);letter-spacing:var(--mat-button-toggle-legacy-label-text-tracking);--mat-pseudo-checkbox-minimal-selected-checkmark-color: var(--mat-button-toggle-legacy-selected-state-text-color)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-legacy-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checkbox-wrapper{display:inline-block;justify-content:flex-start;align-items:center;width:0;height:18px;line-height:18px;overflow:hidden;box-sizing:border-box;position:absolute;top:50%;left:16px;transform:translate3d(0, -50%, 0)}[dir=rtl] .mat-button-toggle-checkbox-wrapper{left:auto;right:16px}.mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:12px}[dir=rtl] .mat-button-toggle-appearance-standard .mat-button-toggle-checkbox-wrapper{left:auto;right:12px}.mat-button-toggle-checked .mat-button-toggle-checkbox-wrapper{width:18px}.mat-button-toggle-animations-enabled .mat-button-toggle-checkbox-wrapper{transition:width 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-checkbox-wrapper{transition:none}.mat-button-toggle-checked{color:var(--mat-button-toggle-legacy-selected-state-text-color);background-color:var(--mat-button-toggle-legacy-selected-state-background-color)}.mat-button-toggle-disabled{pointer-events:none;color:var(--mat-button-toggle-legacy-disabled-state-text-color);background-color:var(--mat-button-toggle-legacy-disabled-state-background-color);--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-legacy-disabled-state-text-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-button-toggle-legacy-disabled-selected-state-background-color)}.mat-button-toggle-disabled-interactive{pointer-events:auto}.mat-button-toggle-appearance-standard{color:var(--mat-button-toggle-text-color, var(--mat-sys-on-surface));background-color:var(--mat-button-toggle-background-color, transparent);font-family:var(--mat-button-toggle-label-text-font, var(--mat-sys-label-large-font));font-size:var(--mat-button-toggle-label-text-size, var(--mat-sys-label-large-size));line-height:var(--mat-button-toggle-label-text-line-height, var(--mat-sys-label-large-line-height));font-weight:var(--mat-button-toggle-label-text-weight, var(--mat-sys-label-large-weight));letter-spacing:var(--mat-button-toggle-label-text-tracking, var(--mat-sys-label-large-tracking))}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-button-toggle-divider-color, var(--mat-sys-outline))}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-button-toggle-selected-state-text-color, var(--mat-sys-on-secondary-container));background-color:var(--mat-button-toggle-selected-state-background-color, var(--mat-sys-secondary-container))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-button-toggle-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-state-background-color, transparent)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled .mat-pseudo-checkbox{--mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-button-toggle-disabled-selected-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));background-color:var(--mat-button-toggle-disabled-selected-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent))}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-button-toggle-state-layer-color, var(--mat-sys-on-surface))}.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-button-toggle-appearance-standard.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-button-toggle-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}@media(hover: none){.mat-button-toggle-appearance-standard:hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-button-toggle-legacy-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-button-toggle-height, 40px)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-button-toggle-legacy-state-layer-color)}@media(forced-colors: active){.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-animations-enabled .mat-button-toggle-button{transition:padding 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-button-toggle-vertical .mat-button-toggle-button{transition:none}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}.mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:30px}[dir=rtl] .mat-button-toggle-checked .mat-button-toggle-button:has(.mat-button-toggle-checkbox-wrapper){padding-left:0;padding-right:30px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{--mat-focus-indicator-border-radius: var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard:not(.mat-button-toggle-vertical) .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:last-of-type .mat-button-toggle-button::before{border-bottom-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-bottom-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle:first-of-type .mat-button-toggle-button::before{border-top-right-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large));border-top-left-radius:var(--mat-button-toggle-shape, var(--mat-sys-corner-extra-large))}
|
|
46
|
+
`],encapsulation:2,changeDetection:0})}return n})(),td=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Ot,io,_o,Ot]})}return n})();var ap=["widgetDataChart"];Et.register(Kn,Xn,Yn,$n,Qn,Zn,Ml);var Mo=(()=>{class n{theme=v.required();color=null;dataPath=null;dataSource=null;convertUnitTo=null;numDecimal=null;yScaleMin=null;yScaleMax=null;inverseYAxis=!1;verticalChart=null;datasetUUID=null;unitsService=A(at);dsService=A(Ei);ngZone=A(We);canvasService=A(je);widgetDataChart=ie("widgetDataChart",{read:Ie});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(){R(()=>{this.theme()&&W(()=>{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 Et(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 a=this.transformDatasetRows(t,this.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...a)}}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 a=this.transformDatasetRows([t],this.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(a),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),a=this.verticalChart,r=this.config.datasetAverageArray;return e.map(s=>{if(a){if(t===0)return{x:i(s.data.value),y:s.timestamp};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:i(h[r]),y:s.timestamp}}}else{if(t===0)return{x:s.timestamp,y:i(s.data.value)};{let h={sma:s.data.sma,ema:s.data.ema,dema:s.data.doubleEma,avg:s.data.lastAverage};return{x:s.timestamp,y:i(h[r])}}}})}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||n)};static \u0275cmp=L({type:n,selectors:[["minichart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,ap,5,Ie),t&2&&me()},inputs:{theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:calc(90% - 10px);position:absolute;bottom:0;border-radius:12px;overflow:hidden}"]})}return n})();var _e=(()=>{class n{_streamsConfig=w(void 0);dataService=A(Ci);unitsService=A(at);destroyRef=A(rt);streams;registrations=[];subscriptions=new Map;reset$=new Nt;rootSignature;buildObserver(e,t){return{next:i=>t(i),error:i=>console.error("[Widget] Observer got an error: "+i),complete:()=>{}}}computePathSignature(e){return[this.normalizePath(e.path)??"",e.pathType,e.sampleTime,e.convertUnitTo,e.source||""].join("|")}normalizePath(e){if(typeof e!="string")return;let t=e.trim();return t.length?t:void 0}computeRootSignature(e){return e?`timeout:${e.enableTimeout?"1":"0"}:${e.dataTimeout??""}`:"none"}ensureStreamsMap(){this.streams||(this.streams=new Map)}buildAndSubscribe(e,t,i,a){let r=this.normalizePath(a.path);if(!r){let pe=this.subscriptions.get(e);pe&&pe.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e);return}this.ensureStreamsMap(),this.streams.has(e)||this.streams.set(e,this.dataService.subscribePath(r,a.source||"default"));let s=this.streams.get(e),h=!!i.enableTimeout,f=(i.dataTimeout??5)*1e3,b=5e3,C=`[Widget] ${i.displayName} - ${f/1e3} second data update timeout reached for `,M=`[Widget] ${i.displayName} - Retrying in ${b/1e3} seconds`,N=a.pathType,D=a.convertUnitTo,j=Number(a.sampleTime);(!Number.isFinite(j)||j<=0)&&(j=1e3);let X=pe=>D?this.unitsService.convertToUnit(D,pe):pe,Z=s;N==="number"&&(Z=Z.pipe(vi(pe=>({data:{value:X(pe.data.value),timestamp:pe.data.timestamp},state:pe.state}))));let ee=Z.pipe(Gi(1)),be=Z.pipe(ls(j));Z=Vi(ee,be),h&&(Z=Z.pipe(es({each:f,with:()=>Jr(()=>{console.log(C+r),this.dataService.timeoutPathObservable(r,N)})}),ss(pe=>pe.pipe(Wa(()=>console.log(M)),as(()=>ha(b))))));let Oe=this.buildObserver(e,t),Te=Z.pipe(Va(this.reset$),et(this.destroyRef)).subscribe(Oe),Ye=Ze(Be({},a),{path:r}),Ee=this.computePathSignature(Ye),Le=this.subscriptions.get(e);Le&&Le.sub.unsubscribe(),this.subscriptions.set(e,{sub:Te,signature:Ee})}setStreamsConfig(e){this._streamsConfig.set(e)}applyStreamsConfigDiff(e){let t=this._streamsConfig(),i=this.rootSignature,a=this.computeRootSignature(e);if(this._streamsConfig.set(e),this.rootSignature=a,!t||!t.paths||!Object.keys(t.paths).length)return;if(!e||!e.paths){this.subscriptions.forEach(b=>b.sub.unsubscribe()),this.subscriptions.clear(),this.streams=void 0,this.registrations=[];return}let r=Object.keys(t.paths),s=Object.keys(e.paths),h=r.filter(b=>!s.includes(b));for(let b of h){let C=this.subscriptions.get(b);C&&C.sub.unsubscribe(),this.subscriptions.delete(b),this.streams?.delete(b),this.registrations=this.registrations.filter(M=>M.pathName!==b)}let f=i!==a;for(let b of s){let C=e.paths[b],M=this.normalizePath(C?.path);if(!M){let X=this.subscriptions.get(b);X&&X.sub.unsubscribe(),this.subscriptions.delete(b),this.streams?.delete(b);continue}let N=Ze(Be({},C),{path:M}),D=this.computePathSignature(N),j=this.subscriptions.get(b);if(!j||j.signature!==D||f){let X=this.registrations.filter(Z=>Z.pathName===b);if(!X.length)this.ensureStreamsMap(),this.streams.set(b,this.dataService.subscribePath(M,C.source||"default")),j&&(j.sub.unsubscribe(),this.subscriptions.delete(b));else{let Z=X[0];this.buildAndSubscribe(b,Z.next,e,N)}}}}observe(e,t){this.registrations=this.registrations.filter(b=>b.pathName!==e),this.registrations.push({pathName:e,next:t});let i=this._streamsConfig();if(!i||!i.paths?.[e]){let b=this.subscriptions.get(e);b&&(b.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e));return}let a=i.paths[e],r=this.normalizePath(a?.path);if(!r){let b=this.subscriptions.get(e);b&&(b.sub.unsubscribe(),this.subscriptions.delete(e),this.streams?.delete(e)),this.registrations=this.registrations.filter(C=>C.pathName!==e);return}let s=Ze(Be({},a),{path:r}),h=this.computePathSignature(s),f=this.subscriptions.get(e);f&&f.signature===h||this.buildAndSubscribe(e,t,i,s)}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-streams",""]],exportAs:["widgetStreams"]})}return n})();function Se(n,o){return{contrast:{color:o.contrast,dim:o.contrastDim,dimmer:o.contrastDimmer},blue:{color:o.blue,dim:o.blueDim,dimmer:o.blueDimmer},green:{color:o.green,dim:o.greenDim,dimmer:o.greenDimmer},pink:{color:o.pink,dim:o.pinkDim,dimmer:o.pinkDimmer},orange:{color:o.orange,dim:o.orangeDim,dimmer:o.orangeDimmer},purple:{color:o.purple,dim:o.purpleDim,dimmer:o.purpleDimmer},yellow:{color:o.yellow,dim:o.yellowDim,dimmer:o.yellowDimmer},grey:{color:o.grey,dim:o.greyDim,dimmer:o.greyDimmer}}[n]}var rp=["canvasMainRef"];function sp(n,o){if(n&1&&U(0,"minichart",1),n&2){let e=I();T("theme",e.theme())}}var id=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);canvas=A(je);dataset=A(Ei);miniChart=ie(Mo);canvasMainRef=ie.required("canvasMainRef");showMiniChart=w(!1);labelColor=w(void 0);canvasElement;canvasCtx;cssWidth=0;cssHeight=0;backgroundBitmap=null;backgroundBitmapText=null;dataValue=null;maxValue=null;minValue=null;lastDrawnValue=void 0;lastDrawnMin=void 0;lastDrawnMax=void 0;valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;maxMinMaxTextWidth=0;maxMinMaxTextHeight=0;streamRegistered=!1;isDestroyed=!1;onNumericValue=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.runtime?.options().ignoreZones)switch(e.state){case ce.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case ce.Warn:this.valueStateColor=this.theme().zoneWarn;break;case ce.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.drawWidget()};constructor(){this.showMiniChart.set(this.runtime.options().showMiniChart),R(()=>{let e=this.theme();W(()=>{e&&(this.setColors(),this.drawWidget())})}),R(()=>{this.runtime?.options()&&W(()=>{this.isDestroyed||!this.canvasCtx||(this.manageDatasetAndChart(),this.setColors(),this.startWidget(),this.drawWidget())})}),R(()=>{let e=this.showMiniChart(),t=this.miniChart();e&&t&&(this.setMiniChart(),this.miniChart().startChart())})}ngOnInit(){this.setColors(),this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.calculateMaxMinTextDimensions(),this.drawWidget()}})}ngAfterViewInit(){this.isDestroyed||(this.startWidget(),this.manageDatasetAndChart())}calculateMaxMinTextDimensions(){this.maxValueTextWidth=Math.floor(this.cssWidth*.85),this.maxValueTextHeight=Math.floor(this.cssHeight*.7),this.maxMinMaxTextWidth=Math.floor(this.cssWidth*.57),this.maxMinMaxTextHeight=Math.floor(this.cssHeight*.1)}startWidget(){this.minValue=null,this.maxValue=null,this.dataValue=null,this.streamRegistered||(this.runtime?.options()?.paths?.numericPath?.path?(this.stream?.observe("numericPath",this.onNumericValue),this.streamRegistered=!0):this.drawValue())}manageDatasetAndChart(){let e=this.runtime.options(),t=e.paths.numericPath,i=!!e.showMiniChart;if(this.showMiniChart.set(i),!i){this.dataset.removeIfExists(this.id(),!1);return}if(!t||!t.path)return;let a=t.source??"default",r=this.dataset.getDatasetConfig(this.id());r?(r.path!==t.path||r.pathSource!==a)&&this.dataset.edit(Ze(Be({},r),{path:t.path,pathSource:a}),!1):this.dataset.create(t.path,a,"minute",.2,`simple-chart-${this.id()}`,!1,!1,this.id())}setMiniChart(){let e=this.runtime.options(),t=e.paths.numericPath;this.miniChart().dataPath=t?.path??null,this.miniChart().dataSource=t?.source??"default",this.miniChart().color=e.color,this.miniChart().convertUnitTo=t?.convertUnitTo,this.miniChart().numDecimal=e.numDecimal,this.miniChart().yScaleMin=e.yScaleMin,this.miniChart().yScaleMax=e.yScaleMax,this.miniChart().inverseYAxis=e.inverseYAxis,this.miniChart().verticalChart=e.verticalChart,this.miniChart().datasetUUID=this.id()}setColors(){let e=this.runtime.options();e&&(this.labelColor.set(Se(e.color,this.theme()).dim),this.valueStateColor=this.valueColor=Se(e.color,this.theme()).color,this.backgroundBitmap=null,this.backgroundBitmapText=null)}drawWidget(){if(!this.canvasCtx)return;let e=this.runtime.options();if(!e)return;let t=e.paths.numericPath.convertUnitTo,i=10*this.canvas.scaleFactor,a=5*this.canvas.scaleFactor,r=e.displayName+"|"+t;(!this.backgroundBitmap||this.backgroundBitmap.width!==this.canvasElement.width||this.backgroundBitmap.height!==this.canvasElement.height||this.backgroundBitmapText!==r)&&(this.backgroundBitmap=this.canvas.renderStaticToBitmap(this.canvasCtx,this.cssWidth,this.cssHeight,s=>{this.canvas.drawTitleInternal(s,e.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight,.1),["unitless","percent","ratio","latitudeSec","latitudeMin","longitudeSec","longitudeMin"].includes(t)||this.canvas.drawText(s,t,this.cssWidth-i,this.cssHeight-a,Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.valueColor,"end","bottom")}),this.backgroundBitmapText=r),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.backgroundBitmap&&this.backgroundBitmap.width>0&&this.backgroundBitmap.height>0&&this.canvasCtx.drawImage(this.backgroundBitmap,0,0,this.cssWidth,this.cssHeight),this.drawValue(),(e.showMax||e.showMin)&&(this.drawMinMax(),this.lastDrawnMin=this.minValue,this.lastDrawnMax=this.maxValue)}drawValue(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor),this.lastDrawnValue=this.dataValue}getValueText(){if(this.dataValue===null)return"--";let e=this.runtime.options().paths.numericPath.convertUnitTo;return["latitudeSec","latitudeMin","longitudeSec","longitudeMin","D HH:MM:SS"].includes(e)?this.dataValue.toString():this.applyDecorations(this.dataValue.toFixed(this.runtime.options().numDecimal))}drawMinMax(){let e=this.runtime.options();if(!e.showMin&&!e.showMax)return;let t="";e.showMin&&(t=this.minValue!=null?` Min: ${this.applyDecorations(this.minValue.toFixed(e.numDecimal))}`:" Min: --"),e.showMax&&(t+=this.maxValue!=null?` Max: ${this.applyDecorations(this.maxValue.toFixed(e.numDecimal))}`:" Max: --"),t=t.trim();let i=10*this.canvas.scaleFactor,a=5*this.canvas.scaleFactor;this.canvas.drawText(this.canvasCtx,t,i,Math.floor(this.cssHeight-a),this.maxMinMaxTextWidth,this.maxMinMaxTextHeight,"normal",this.valueColor,"start","bottom")}applyDecorations(e){switch(this.runtime.options().paths.numericPath.convertUnitTo){case"percent":case"percentraw":e+="%";break}return e}ngOnDestroy(){this.isDestroyed=!0,this.dataset.removeIfExists(this.id(),!1);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-numeric"]],viewQuery:function(t,i){t&1&&(te(i.miniChart,Mo,5),te(i.canvasMainRef,rp,5)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:1,consts:[["canvasMainRef",""],[3,"theme"],[1,"numeric-canvas"]],template:function(t,i){t&1&&(G(0,sp,1,1,"minichart",1),U(1,"canvas",2,0)),t&2&&F(i.showMiniChart()?0:-1)},dependencies:[Mo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.numeric-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.numeric-canvas[_ngcontent-%COMP%]{position:relative;width:100%!important;height:100%!important;display:block}"]})}return n})();var lp=["canvasMainRef"],nd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);canvas=A(je);canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;cssWidth=0;cssHeight=0;dataValue=null;labelColor=w(void 0);valueColor=void 0;isDestroyed=!1;streamRegistered=!1;constructor(){R(()=>{let e=this.theme();W(()=>{this.runtime?.options()&&e&&(this.setColors(),this.drawWidget())})}),R(()=>{this.runtime?.options()&&(this.isDestroyed||!this.canvasCtx||W(()=>{this.setColors(),this.startWidget(),this.drawWidget()}))})}ngOnInit(){this.setColors()}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),!this.isDestroyed&&this.startWidget()}startWidget(){this.dataValue=null,this.streamRegistered||(this.runtime?.options()?.paths?.stringPath?.path?(this.stream.observe("stringPath",t=>{this.dataValue=t.data.value,this.drawWidget()}),this.streamRegistered=!0):this.drawWidget())}setColors(){let e=this.runtime?.options();e&&(this.labelColor.set(Se(e.color,this.theme()).dim),this.valueColor=Se(e.color,this.theme()).color)}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=Math.floor(this.cssHeight*.1),t=this.runtime.options(),i=t.displayName+"|"+this.labelColor();(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==i)&&(this.titleBitmap=this.canvas.createTitleBitmap(t.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t.displayName+"|"+this.labelColor()),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let a=this.dataValue===null?"--":this.dataValue,r=this.canvas.EDGE_BUFFER||10,s=Math.max(0,this.cssHeight-e-2*r),h=Math.max(0,Math.floor(this.cssWidth-2*r)),f=Math.max(0,Math.floor(s)),b=Math.floor(this.cssWidth/2),C=Math.floor(e+r+s/2);this.canvas.drawText(this.canvasCtx,a,b,C,h,f,"bold",this.valueColor,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-text"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,lp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"text-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.text-canvas[_ngcontent-%COMP%]{display:block;width:100%!important;height:100%!important;min-height:1px}"]})}return n})();var dp=["widgetDataChart"];Et.register(Kn,Xn,Yn,$n,Qn,Zn,ho,po);var ad=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de,{optional:!0});static DEFAULT_CONFIG={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"};ngZone=A(We);_dataset=A(Ei);canvasService=A(je);unitsService=A(at);responsive=A(Wn);isPhonePortrait;widgetDataChart=ie("widgetDataChart",{read:Ie});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;TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE=11;CENTER_LABEL_FONT_SIZE=22;CENTER_LABEL_PHONE_PORTRAIT_FONT_SIZE=13;SPEED_VALUE_FONT_SIZE=62;SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE=32;TOP_VALUE_Y_OFFSET=62;TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET=44;TOP_UNIT_Y_OFFSET=51;TOP_UNIT_PHONE_PORTRAIT_Y_OFFSET=38;UNIT_FONT_SIZE=28;UNIT_PHONE_PORTRAIT_FONT_SIZE=14;UNIT_PADDING=8;UNIT_PHONE_PORTRAIT_PADDING=3;gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,a=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=a.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,a=this.theme(),r=this.getThemeColors(),s=Et.defaults.font,h=e.scales,f=e.options?.scales,b=e.data?.datasets?.[0]?.data,C=e.data?.datasets?.[5]?.data,M=(b?.length??0)>=2&&(C?.length??0)>=2,N=(Ee,Le)=>{let pe=h?.[Ee],He=f;if(!pe)return;let bt=pe,tt=He?.[Ee]?.min??bt.min,ot=He?.[Ee]?.max??bt.max;if(typeof tt!="number"||typeof ot!="number"||!isFinite(tt)||!isFinite(ot))return;let vt=(tt+ot)/2,rn=pe.getPixelForValue(vt);t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(rn,i.top),t.lineTo(rn,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=a.contrastDim,t.font=this.isPhonePortrait().matches?`bold ${this.CENTER_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.CENTER_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="top";let Ta=this.axisTopLabelY(pe);t.fillText(Le(vt),rn,Ta),t.restore()};N("x",Ee=>`${((Ee%360+360)%360).toFixed(0)}\xB0`),N("xSpeed",Ee=>`${Ee.toFixed(1)}`);let D=h?.xSpeed;if(D){let Ee=f,Le=D,pe=Ee?.xSpeed?.max??Le.max;if(typeof pe=="number"&&isFinite(pe)){let He=D.getPixelForValue(pe);t.save(),t.fillStyle=this.resolveTickColor(e,D,pe),t.font=this.isPhonePortrait().matches?`normal ${this.TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="right",t.textBaseline="top";let bt=this.axisTopLabelY(D),tt=this.xStepSpeed??1,ot=Math.max(0,Math.min(3,Math.ceil(-Math.log10(tt))));t.fillText(`${pe.toFixed(ot)}`,He-this.EDGE_SPEED_LABEL_OFFSET,bt),t.restore(),t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let vt=Math.round(He)+.5;t.moveTo(vt,i.bottom),t.lineTo(vt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let j=h?.x;if(j){let Ee=f,Le=j,pe=Ee?.x?.min??Le.min;if(typeof pe=="number"&&isFinite(pe)){let He=j.getPixelForValue(pe);t.save(),t.fillStyle=this.resolveTickColor(e,j,pe),t.font=this.isPhonePortrait().matches?`normal ${this.TICK_LABEL_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.textBaseline="top";let bt=this.axisTopLabelY(j),tt=this.normalizeAngle(pe);t.fillText(`${tt.toFixed(0)}\xB0`,He+this.EDGE_DIR_LABEL_OFFSET,bt),t.restore()}}let X=e.data?.datasets,Z=X?.[5]?.data,ee=Z?.length?Z.length-1:-1,be=ee>=0?Z[ee]?.x:void 0;if(typeof be=="number"&&isFinite(be)){t.save(),t.fillStyle=r.chartValue,t.font=this.isPhonePortrait().matches?`bold ${this.SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle";let Ee=`${be.toFixed(1)}`,Le=i.left+i.width/4,pe=i.top-(this.isPhonePortrait().matches?this.TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET:this.TOP_VALUE_Y_OFFSET);t.fillText(Ee,Le,pe);let He=t.measureText(Ee),bt=Le+He.width/2+(this.isPhonePortrait().matches?this.UNIT_PHONE_PORTRAIT_PADDING:this.UNIT_PADDING),tt=i.top-(this.isPhonePortrait().matches?this.TOP_UNIT_PHONE_PORTRAIT_Y_OFFSET:this.TOP_UNIT_Y_OFFSET);t.font=this.isPhonePortrait().matches?`bold ${this.UNIT_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.UNIT_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.fillText("kts",bt,tt),t.restore()}let Oe=X?.[0]?.data,Te=Oe?.length?Oe.length-1:-1,Ye=Te>=0?Oe[Te]?.x:void 0;if(typeof Ye=="number"&&isFinite(Ye)){let Ee=this.normalizeAngle(Ye);t.save(),t.fillStyle=r.chartValue,t.font=this.isPhonePortrait().matches?`bold ${this.SPEED_VALUE_PHONE_PORTRAIT_FONT_SIZE}px ${s.family}`:`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${Ee.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-(this.isPhonePortrait().matches?this.TOP_VALUE_PHONE_PORTRAIT_Y_OFFSET:this.TOP_VALUE_Y_OFFSET)),t.restore()}if(!M){let Ee=Math.min(i.width*.7,420),Le=90,pe=i.left+(i.width-Ee)/2,He=i.top+(i.height-Le)/2;t.save(),t.globalAlpha=.82,t.fillStyle=a.background,t.fillRect(pe,He,Ee,Le),t.restore(),t.save(),t.strokeStyle=a.contrastDim,t.lineWidth=2,t.strokeRect(pe,He,Ee,Le),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+Ee/2,He+Le/2),t.restore()}}};constructor(){this.isPhonePortrait=Qa(this.responsive.observe(mi.HandsetPortrait)),R(()=>{let e=this.theme(),t=this.runtime?.options();!e||!t||W(()=>{this.datasetConfig&&this.chart&&(this.setChartOptions(),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")))})}),R(()=>{let e=this.runtime?.options();if(!e)return;!this.datasetConfig||this.datasetConfig.timeScaleFormat!==e.timeScale?(this.removeServiceDatasets(),this.createServiceDataset(),this.startWidget()):this.chart&&this.setChartOptions()})}startWidget(){this.widgetDataChart()&&(this.datasetConfig=this._dataset.getDatasetConfig(`${this.id()}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.id()}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>this.chart?.update("none")):(this.chart=new Et(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()))}removeServiceDatasets(){[`${this.id()}-twd`,`${this.id()}-tws`].forEach(t=>{this._dataset.list().some(i=>i.uuid===t)&&this._dataset.remove(t)})}createServiceDataset(){let e=this.runtime?.options();if(!e||e.timeScale==="")return;let t="self.environment.wind.directionTrue",i="self.environment.wind.speedTrue",a="default";this._dataset.list().filter(r=>r.uuid===`${this.id()}-twd`).length===0&&this._dataset.create(t,a,e.timeScale,30,`windtrends-${this.id()}`,!0,!1,`${this.id()}-twd`),this._dataset.list().filter(r=>r.uuid===`${this.id()}-tws`).length===0&&this._dataset.create(i,a,e.timeScale,30,`speedtrends-${this.id()}`,!0,!1,`${this.id()}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,a=0,r=20,s=(r-a)/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:this.isPhonePortrait().matches?{size:12}:{size:16},callback:h=>{let f=Number(h),b=this.datasetConfig?.timeScaleFormat,C=this.getWindowMs(b);return b==="Last 5 Minutes"?`${Math.round(f/6e4)}'`:C>=10*6e4?`${Math.round(f/6e4)}'`:`${Math.round(f/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:h=>{let f=this.xCenter??Number.NaN;if(this.nearlyEqual(h,f))return"";let C=this.chart?.options?.scales?.x?.min;return typeof C=="number"&&this.nearlyEqual(h,C)?"":`${((h%360+360)%360).toFixed(0)}\xB0`},font:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenter??Number.NaN,C=this.nearlyEqual(f,b);return this.isPhonePortrait().matches?{size:11,weight:C?"bold":"normal"}:{size:20,weight:C?"bold":"normal"}},color:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenter??Number.NaN;return this.nearlyEqual(f,b)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let f=h.tick?.value??Number.NaN,b=h.scale,C=this.chart?.options?.scales,M=b,N=C?.x?.min??M.min;return this.nearlyEqual(f,N)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:a,max:r,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:s,minRotation:0,maxRotation:0,callback:h=>{let f=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(h,f))return"";let C=this.chart?.options?.scales?.xSpeed?.max;if(typeof C=="number"&&this.nearlyEqual(h,C))return"";let M=this.xStepSpeed??Number.NaN,N=Number.isFinite(M)?M:1,D=Math.max(0,Math.min(3,Math.ceil(-Math.log10(N))));return`${h.toFixed(D)}`},font:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenterSpeed??Number.NaN,C=this.nearlyEqual(f,b);return this.isPhonePortrait().matches?{size:11,weight:C?"bold":"normal"}:{size:20,weight:C?"bold":"normal"}},color:h=>{let f=h.tick?.value??Number.NaN,b=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(f,b)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let f=h.tick?.value??Number.NaN,b=h.scale,C=this.chart?.options?.scales,M=b,N=C?.xSpeed?.max??M.max;return this.nearlyEqual(f,N)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",text:"TWD ",color:this.getThemeColors().chartLabel,padding:this.isPhonePortrait().matches?{top:3,bottom:0}:{top:3,bottom:0},font:this.isPhonePortrait().matches?{size:16,weight:"normal"}:{size:35,weight:"normal"}},subtitle:{display:!0,align:"start",text:" TWS",color:this.getThemeColors().chartLabel,padding:this.isPhonePortrait().matches?{top:-18,bottom:12}:{top:-41,bottom:12},font:this.isPhonePortrait().matches?{size:16}:{size:35}},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(a+r)/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.id()}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.id()}-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 a=0;a<=4;a++)this.chart.data.datasets[a].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("none")})}),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 a=5;a<=9;a++)this.chart.data.datasets[a].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("none")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let a of e){if(a==null){t.push(null);continue}if(i==null){t.push(a),i=a;continue}let r=a-i;r>180&&(r-=360),r<-180&&(r+=360),t.push(t[t.length-1]+r),i=a}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,a){let r=e.map(h=>{let f=this.getRowValue(h,t);return f==null?null:this.unitsService.convertToUnit(i,f)}),s=a?this.unwrapAngles(r):r;return e.map((h,f)=>({x:s[f],y:h.timestamp,ts:h.timestamp}))}pushRowsGeneric(e,t,i,a){["value","sma","avg","min","max"].forEach((s,h)=>{this.chart.data.datasets[t+h].data.push(...this.transformRows(e,s,i,a))})}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)),a=e/Math.pow(10,i);return(t.find(s=>a<=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,a=!!e?.length,r=!!t?.length,s=!!i?.length,h=a?e[e.length-1].x:r?t[t.length-1].x:s?i[i.length-1].x:void 0;if(typeof h=="number"&&isFinite(h)){let M=this.chart.data.datasets[3]?.data,N=this.chart.data.datasets[4]?.data,D=M?.length?M[M.length-1].x:void 0,j=N?.length?N[N.length-1].x:void 0,X=typeof D=="number"&&isFinite(D)?this.angularDiff(h,D):Number.NaN,Z=typeof j=="number"&&isFinite(j)?this.angularDiff(h,j):Number.NaN,ee=Number.isFinite(X)||Number.isFinite(Z)?Math.max(Number.isFinite(X)?X:0,Number.isFinite(Z)?Z:0):Number.NaN;if(!Number.isFinite(ee)){let pe=a?e:r?t:i,He=Math.min(30,pe?.length??0);if(He>1){let tt=pe.slice(pe.length-He).map(ot=>ot.x).filter(ot=>typeof ot=="number"&&isFinite(ot));tt.length&&(ee=tt.reduce((ot,vt)=>Math.max(ot,this.angularDiff(h,vt)),0))}}ee=Math.max(ee||0,15);let Oe=2*ee/4,Te=this.niceStepFromMantissas(Oe,[1,1.5,2,2.5,5,7.5,10]),Ye=h-2*Te,Ee=h+2*Te;this.chart.options.scales.x.min=Ye,this.chart.options.scales.x.max=Ee;let Le=this.chart.options.scales;Le.x.ticks=Ze(Be({},Le.x.ticks??{}),{stepSize:Te}),this.xCenter=h,this.xStep=Te}let f=this.chart.data.datasets[7]?.data;if(f&&f.length){let M=f.length-1,N=f[M]?.x??0,D=this.chart.data.datasets[8].data[M]?.x??N,j=this.chart.data.datasets[9].data[M]?.x??N,X=Math.abs(N-D),Z=Math.abs(j-N),ee=Math.max(X,Z);ee=Math.max(ee,.5);let Oe=2*ee/4,Te=this.niceStepFromMantissas(Oe,[1,2,2.5,5,10]),Ye=N-2*Te,Ee=N+2*Te,Le=this.chart.options.scales;Le.xSpeed.min=Ye,Le.xSpeed.max=Ee,Le.xSpeed.ticks=Ze(Be({},Le.xSpeed.ticks??{}),{stepSize:Te}),this.xCenterSpeed=N,this.xStepSpeed=Te}let b=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let M=Date.now();this.chart.data.datasets.forEach(Z=>{Z.data.forEach(ee=>{let be=ee.ts??ee.y;ee.y=Math.max(0,Math.min(b,M-be))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=b;let N;switch(this.datasetConfig?.timeScaleFormat){case"Last Minute":N=15e3;break;case"Last 5 Minutes":N=6e4;break;case"Last 30 Minutes":N=5*6e4;break;default:N=b/5;break}let j=this.chart.options.scales,X=Be({},j.y.ticks??{});delete X.count,X.stepSize=N,j.y.ticks=X}}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 a=t.chartArea;if(!a)return null;let r=t.scales?.[i];if(!r)return null;let s=t.options?.scales,h=r,f=s?.[i]?.min??h.min,b=s?.[i]?.max??h.max;if(typeof f!="number"||typeof b!="number"||!isFinite(f)||!isFinite(b))return null;let C=(f+b)/2,M=r.getPixelForValue(C),N=Math.max(0,Math.min(1,(M-a.left)/a.width)),D=e.createLinearGradient(a.left,0,a.right,0);return D.addColorStop(0,this.theme().port),D.addColorStop(N,this.theme().port),D.addColorStop(N,this.theme().starboard),D.addColorStop(1,this.theme().starboard),D}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.runtime?.options()?.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}nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let a=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*a}resolveTickColor(e,t,i){let r=t.options.ticks?.color;return typeof r=="function"?r({chart:e,scale:t,tick:{value:i}})??Et.defaults.color:typeof r=="string"?r:Et.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}ngOnDestroy(){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||n)};static \u0275cmp=L({type:n,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,dp,5,Ie),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}"]})}return n})();function Dt(n,o,e,t=1e3,i,a,r=[500,500],s){if(a){let D=a.get(n);D&&cancelAnimationFrame(D)}o=(()=>{let D=n.getAttribute("transform");if(D){let j=/rotate\((-?\d+(\.\d+)?)/.exec(D);if(j)return parseFloat(j[1])}return o})();let f=D=>(D+360)%360;o=f(o),e=f(e);let b=e-o;b>180&&(b-=360),b<-180&&(b+=360);let C=D=>D<.5?4*D*D*D:1-Math.pow(-2*D+2,3)/2,M=D=>s?s.runOutsideAngular(D):D(),N=D=>s?s.run(D):D();M(()=>{let D=performance.now(),j=Z=>{let ee=Z-D,be=Math.min(ee/t,1),Oe=C(be),Te=o+b*Oe;if(n.setAttribute("transform",`rotate(${Te} ${r[0]} ${r[1]})`),be<1){let Ye=requestAnimationFrame(j);a&&a.set(n,Ye)}else n.setAttribute("transform",`rotate(${e} ${r[0]} ${r[1]})`),i&&N(i),a&&a.delete(n)},X=requestAnimationFrame(j);a&&a.set(n,X)})}function xa(n,o,e,t=500,i,a,r){if(a){let f=a.get(n);f&&cancelAnimationFrame(f)}let s=f=>r?r.runOutsideAngular(f):f(),h=f=>r?r.run(f):f();s(()=>{let f=performance.now(),b=e-o,C=D=>D<.5?4*D*D*D:1-Math.pow(-2*D+2,3)/2,M=D=>{let j=D-f,X=Math.min(j/t,1),Z=C(X),ee=o+b*Z;if(n.setAttribute("width",ee.toString()),X<1){let be=requestAnimationFrame(M);a&&a.set(n,be)}else n.setAttribute("width",e.toString()),i&&h(i),a&&a.delete(n)},N=requestAnimationFrame(M);a&&a.set(n,N)})}var od=n=>n<.5?4*n*n*n:1-Math.pow(-2*n+2,3)/2,ko=n=>(n%360+360)%360,cp=(n,o)=>{let e=ko(o)-ko(n);return e>180&&(e-=360),e<=-180&&(e+=360),e};function rd(n,o,e,t,i,a){let r=f=>a?a.runOutsideAngular(f):f(),s=f=>a?a.run(f):f(),h=0;return r(()=>{let f=performance.now(),b=cp(n,o),C=ko(n),M=N=>{let D=Math.min((N-f)/e,1),j=od(D),X=C+b*j;t(ko(X)),D<1?h=requestAnimationFrame(M):i&&s(i)};h=requestAnimationFrame(M)}),h}var mp=(n,o,e)=>({min:n.min+(o.min-n.min)*e,mid:n.mid+(o.mid-n.mid)*e,max:n.max+(o.max-n.max)*e});function sd(n,o,e,t,i,a){let r=f=>a?a.runOutsideAngular(f):f(),s=f=>a?a.run(f):f(),h=0;return r(()=>{let f=performance.now(),b=C=>{let M=Math.min((C-f)/e,1),N=od(M);t(mp(n,o,N)),M<1?h=requestAnimationFrame(b):i&&s(i)};h=requestAnimationFrame(b)}),h}var up=["rotatingDial"],hp=["awaIndicator"],pp=["twaIndicator"],gp=["wptIndicator"],fp=["setIndicator"],bp=["cogIndicator"],ld=([n,o],[e,t],[i,a])=>(Math.atan2(a-t,i-e)-Math.atan2(o-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,dd=(()=>{class n{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");cogIndicator=ie.required("cogIndicator");compassHeading=v.required();courseOverGroundAngle=v(void 0);courseOverGroundEnabled=v.required();trueWindAngle=v.required();twsEnabled=v.required();twaEnabled=v.required();trueWindSpeed=v.required();trueWindSpeedUnit=v.required();appWindAngle=v.required();awsEnabled=v.required();appWindSpeed=v.required();appWindSpeedUnit=v.required();laylineAngle=v(void 0);closeHauledLineEnabled=v.required();sailSetupEnabled=v.required();windSectorEnabled=v.required();driftEnabled=v.required();driftSet=v(void 0);driftFlow=v(void 0);waypointAngle=v(void 0);waypointEnabled=v.required();trueWindMinHistoric=v(void 0);trueWindMidHistoric=v(void 0);trueWindMaxHistoric=v(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=w(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath=w("M 500,500 500,500");closeHauledLineStbdPath=w("M 500,500 500,500");portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=w("");stbdWindSectorPath=w("");animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=A(We);constructor(){R(()=>{let e=this.waypointEnabled();W(()=>{this.waypointActive.set(e)})}),R(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(Dt(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))})}),R(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&Dt(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.waypointAngle();W(()=>{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&&Dt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&Dt(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),R(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&Dt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&W(()=>this.updateCloseHauledLines())}),R(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&W(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&Dt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),R(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),W(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath.set("none"),this.stbdWindSectorPath.set("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,a=Number(this.laylineAngle())||0,r=this.addHeading(t,this.addHeading(i,a*-1));this.animateLayline(this.portLaylinePrev,r,!0,e),this.portLaylinePrev=r;let s=this.addHeading(t,this.addHeading(i,a));this.animateLayline(this.stbdLaylinePrev,s,!1,e),this.stbdLaylinePrev=s}animateLayline(e,t,i,a=!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(!a){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=rd(e,t,this.ANIMATION_DURATION,s=>this.drawLayline(s,i),()=>{i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},this.ngZone);i?this.portLaylineAnimId=r:this.stbdLaylineAnimId=r}drawLayline(e,t){let i=e*Math.PI/180,a=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath.set(`M ${this.CENTER},${this.CENTER} L ${a},${r}`):this.closeHauledLineStbdPath.set(`M ${this.CENTER},${this.CENTER} L ${a},${r}`)}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.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(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.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(this.computeSectorPath(i,!1))):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath.set(this.computeSectorPath(t,!0)),this.stbdWindSectorPath.set(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.set(s):this.stbdWindSectorPath.set(s),i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=sd(e,t,this.ANIMATION_DURATION,s=>{let h=this.computeSectorPath(s,i);i?this.portWindSectorPath.set(h):this.stbdWindSectorPath.set(h)},()=>{i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},this.ngZone);i?this.portSectorAnimId=r:this.stbdSectorAnimId=r}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 a=this.animationFrameIds.get(i);a&&cancelAnimationFrame(a),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let a=(Number(this.laylineAngle())||0)*(t?-1:1),r=Number(this.compass.newValue)||0,s=this.addHeading(r,this.addHeading(e.min,a)),h=this.addHeading(r,this.addHeading(e.mid,a)),f=this.addHeading(r,this.addHeading(e.max,a)),b=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(h*Math.PI/180)+this.CENTER,N=this.RADIUS*Math.cos(h*Math.PI/180)*-1+this.CENTER,D=this.RADIUS*Math.sin(f*Math.PI/180)+this.CENTER,j=this.RADIUS*Math.cos(f*Math.PI/180)*-1+this.CENTER,X=Math.abs(ld([b,C],[M,N],[D,j]))>Math.PI/2?0:1,Z=ld([D,j],[b,C],[M,N])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${b},${C} A ${this.RADIUS},${this.RADIUS} 0 ${X} ${Z} ${D},${j} z`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,up,5),te(i.awaIndicator,hp,5),te(i.twaIndicator,pp,5),te(i.wptIndicator,gp,5),te(i.setIndicator,fp,5),te(i.cogIndicator,bp,5)),t&2&&me(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"],["cx","500","cy","500","r","404",1,"rotating-dial-Backplate"],[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&&(K(),_(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),H(3,"stop",9)(4,"stop",10),k(),_(5,"linearGradient",11),H(6,"stop",9)(7,"stop",10),k(),_(8,"linearGradient",12),H(9,"stop",13)(10,"stop",14),k(),_(11,"linearGradient",15),H(12,"stop",16),k(),_(13,"clipPath",17),H(14,"ellipse",18),k(),H(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),k(),_(18,"g",22)(19,"g",23),H(20,"path",24)(21,"path",25),k()(),_(22,"g",26)(23,"g",27),H(24,"path",28)(25,"path",29)(26,"path",30),k(),_(27,"g",null,0)(29,"g",31),H(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,"circle",68),_(67,"text",69)(68,"tspan",70),m(69,"330"),k()(),_(70,"text",71)(71,"tspan",72),m(72,"300"),k()(),_(73,"text",73)(74,"tspan",74),m(75,"W"),k()(),_(76,"text",75)(77,"tspan",76),m(78,"240"),k()(),_(79,"text",77)(80,"tspan",78),m(81,"210"),k()(),_(82,"text",79)(83,"tspan",80),m(84,"S"),k()(),_(85,"text",81)(86,"tspan",82),m(87,"150"),k()(),_(88,"text",83)(89,"tspan",84),m(90,"120"),k()(),_(91,"text",85)(92,"tspan",86),m(93,"E"),k()(),_(94,"text",87)(95,"tspan",88),m(96,"60"),k()(),_(97,"text",89)(98,"tspan",90),m(99,"30"),k()(),_(100,"text",91)(101,"tspan",92),m(102,"N"),k()()(),_(103,"g",93),H(104,"path",94)(105,"path",95),k(),_(106,"g",96),H(107,"path",97)(108,"path",98),k(),_(109,"g",null,1),H(111,"path",99)(112,"ellipse",100),k(),_(113,"g",null,2),H(115,"path",101),k()()(),_(116,"g",102)(117,"g",103)(118,"text",104),m(119),k(),_(120,"text",105),m(121),At(122,"number"),k(),_(123,"text",106),m(124,"TWS"),k()(),_(125,"g",107)(126,"text",108),m(127),k(),_(128,"text",109),m(129),At(130,"number"),k(),_(131,"text",110),m(132,"AWS"),k()()(),_(133,"g",111)(134,"text",112),m(135),At(136,"number"),k()(),_(137,"g",113)(138,"g",null,3),H(140,"path",114),k(),_(141,"g",null,4),H(143,"path",115),_(144,"text",116),m(145,"A"),k()(),_(146,"g",null,5),H(148,"path",117),_(149,"text",118),m(150,"T"),k()()(),_(151,"g",119),H(152,"rect",120),_(153,"text",121)(154,"tspan"),m(155),_(156,"tspan"),m(157,"\xB0"),k()()()()()),t&2&&(g(103),re("display",i.closeHauledLineEnabled()?"inline":"none"),g(),re("display",i.appWindAngle()!=null?"inline":"none"),Y("d",i.closeHauledLineStbdPath()),g(),re("display",i.appWindAngle()!=null?"inline":"none"),Y("d",i.closeHauledLinePortPath()),g(),re("display",i.windSectorEnabled()?"inline":"none"),g(),re("display",i.portWindSectorPath()!="none"?"inline":"none"),Y("d",i.portWindSectorPath()),g(),re("display",i.stbdWindSectorPath()!="none"?"inline":"none"),Y("d",i.stbdWindSectorPath()),g(),Y("display",i.waypointActive()?"inline":"none"),g(4),re("display",i.driftEnabled()?"inline":"none"),g(4),re("display",i.twsEnabled()?"inline":"none"),g(2),ne(i.trueWindSpeedUnit()),g(2),ne(Ua(122,34,i.trueWindSpeed(),"1.1-1")??"--"),g(4),re("display",i.awsEnabled()?"inline":"none"),g(2),ne(i.appWindSpeedUnit()),g(2),ne(Ua(130,37,i.appWindSpeed(),"1.1-1")??"--"),g(4),re("display",i.driftEnabled()?"inline":"none"),g(2),ne(Ua(136,40,i.driftFlow(),"1.1-1")??"--"),g(3),Y("display",i.courseOverGroundEnabled()?"inline":"none"),g(8),re("display",i.twaEnabled()?"inline":"none"),g(9),ne(i.headingValue))},dependencies:[Ss],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%]{stroke:var(--mat-sys-background);fill:none;stroke-width:95}.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 n})();var cd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);stream=A(_e);zones=A(We);cdr=A(Ut);hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=w(0);courseOverGroundAngle=w(0);appWindAngle=w(0);appWindSpeed=w(0);appWindSpeedUnit=w("");trueWindAngle=w(0);trueWindSpeed=w(0);trueWindSpeedUnit=w("");driftFlow=w(0);driftSet=w(0);waypointAngle=w(0);historicalWindDirection=[];trueWindMinHistoric=w(void 0);trueWindMidHistoric=w(void 0);trueWindMaxHistoric=w(void 0);windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;constructor(){R(()=>{let e=this.runtime.options();e&&W(()=>{this.appWindSpeedUnit.set(e.paths.appWindSpeed.convertUnitTo),this.trueWindSpeedUnit.set(e.paths.trueWindSpeed.convertUnitTo),this.registerStreams(),this.stopWindSectors(),this.startWindSectors()})})}onHeadingUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading(),t)>=this.DEG_EPSILON)&&(this.currentHeading.set(t),this.hasHeading=!0,this.scheduleMarkForCheck())};onCOGUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle(),t)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle.set(t),this.hasCOG=!0,this.scheduleMarkForCheck())};onDriftUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasDrift||Math.abs(this.driftFlow()-t)>=this.SPEED_EPSILON)&&(this.driftFlow.set(t),this.hasDrift=!0,this.scheduleMarkForCheck())};onSetUpdate=e=>{e.data.value==null&&(e.data.value=0);let t=this.normalizeAngle(e.data.value);(!this.hasSet||this.angleDelta(this.driftSet(),t)>=this.DEG_EPSILON)&&(this.driftSet.set(t),this.hasSet=!0,this.scheduleMarkForCheck())};onWaypointUpdate=e=>{let t=e.data.value,i=this.normalizeAngle(t);(!this.hasWPT||this.angleDelta(this.waypointAngle(),i)>=this.DEG_EPSILON)&&(this.waypointAngle.set(i),this.hasWPT=!0,this.scheduleMarkForCheck())};onAppWindAngle=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value,i=this.normalizeAngle(t);(!this.hasAWA||this.angleDelta(this.appWindAngle(),i)>=this.DEG_EPSILON)&&(this.appWindAngle.set(i),this.hasAWA=!0,this.runtime.options()?.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(t)),this.scheduleMarkForCheck())};onAppWindSpeed=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed()-t)>=this.SPEED_EPSILON)&&(this.appWindSpeed.set(t),this.hasAWS=!0,this.scheduleMarkForCheck())};onTrueWindSpeed=e=>{e.data.value==null&&(e.data.value=0);let t=e.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed()-t)>=this.SPEED_EPSILON)&&(this.trueWindSpeed.set(t),this.hasTWS=!0,this.scheduleMarkForCheck())};onTrueWindAngle=e=>{e.data.value==null&&(e.data.value=0);let i=this.runtime.options()?.paths.trueWindAngle.path||"",a=i.includes("angleTrueWater")||i.includes("angleTrueGround")?this.addHeading(this.currentHeading(),e.data.value):e.data.value,r=this.normalizeAngle(a);(!this.hasTWA||this.angleDelta(this.trueWindAngle(),r)>=this.DEG_EPSILON)&&(this.trueWindAngle.set(r),this.hasTWA=!0,this.scheduleMarkForCheck())};registerStreams(){this.runtime.options()&&this.zones.runOutsideAngular(()=>{this.stream.observe("headingPath",this.onHeadingUpdate),this.stream.observe("courseOverGround",this.onCOGUpdate),this.stream.observe("drift",this.onDriftUpdate),this.stream.observe("set",this.onSetUpdate),this.stream.observe("nextWaypointBearing",this.onWaypointUpdate),this.stream.observe("appWindAngle",this.onAppWindAngle),this.stream.observe("appWindSpeed",this.onAppWindSpeed),this.stream.observe("trueWindSpeed",this.onTrueWindSpeed),this.stream.observe("trueWindAngle",this.onTrueWindAngle)})}ngOnDestroy(){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.runtime.options()?.windSectorEnable){this.trueWindMinHistoric.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={},this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xn(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),a=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:a});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:a,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:a,u:i})}historicalCleanup(){if(!this.runtime.options()?.windSectorEnable)return;let e=Date.now()-this.runtime.options().windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let b=this.windSamples.shift();if(!b)break;this.windMinDeque.length&&this.windMinDeque[0].i===b.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===b.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.set(void 0),this.trueWindMidHistoric.set(void 0),this.trueWindMaxHistoric.set(void 0),this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,a=(t+i)/2,r=this.normalizeAngle(t),s=this.normalizeAngle(a),h=this.normalizeAngle(i);(this.lastSector.min===void 0||this.angleDelta(this.lastSector.min,r)>=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,h)>=this.DEG_EPSILON)&&(this.trueWindMinHistoric.set(r),this.trueWindMidHistoric.set(s),this.trueWindMaxHistoric.set(h),this.lastSector={min:r,mid:s,max:h},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,a=(e-i+540)%360-180,r=t+a;return this.lastUnwrapped=r,r}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-wind-steer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:24,consts:[[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){if(t&1&&U(0,"svg-windsteer",0),t&2){let a,r,s,h,f,b,C,M,N,D;T("compassHeading",i.currentHeading())("courseOverGroundAngle",i.courseOverGroundAngle())("courseOverGroundEnabled",(a=i.runtime.options())==null?null:a.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle())("twsEnabled",(r=i.runtime.options())==null?null:r.twsEnable)("twaEnabled",(s=i.runtime.options())==null?null:s.twaEnable)("trueWindSpeed",i.trueWindSpeed())("trueWindSpeedUnit",i.trueWindSpeedUnit())("appWindAngle",i.appWindAngle())("awsEnabled",(h=i.runtime.options())==null?null:h.awsEnable)("appWindSpeed",i.appWindSpeed())("appWindSpeedUnit",i.appWindSpeedUnit())("laylineAngle",(f=i.runtime.options())==null?null:f.laylineAngle)("closeHauledLineEnabled",(b=i.runtime.options())==null?null:b.laylineEnable)("windSectorEnabled",(C=i.runtime.options())==null?null:C.windSectorEnable)("driftEnabled",(M=i.runtime.options())==null?null:M.driftEnable)("driftFlow",i.driftFlow())("driftSet",i.driftSet())("waypointAngle",i.waypointAngle())("waypointEnabled",(N=i.runtime.options())==null?null:N.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric())("trueWindMidHistoric",i.trueWindMidHistoric())("trueWindMaxHistoric",i.trueWindMaxHistoric())("sailSetupEnabled",((D=i.runtime.options())==null?null:D.sailSetupEnable)??!1)}},dependencies:[dd],encapsulation:2,changeDetection:0})}return n})();function Ap(n,o){if(n&1){let e=ae();d(0,"h3"),m(1,"Getting Started"),u(),d(2,"p"),m(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application. Access the "),d(4,"a",1),m(5,"KIP Help"),u(),m(6," to learn more."),u(),d(7,"table",2)(8,"thead")(9,"tr")(10,"th"),m(11,"Actions"),u(),d(12,"th"),m(13,"Touch"),u(),d(14,"th"),m(15,"Mouse"),u(),d(16,"th"),m(17,"Keyboard Shortcuts"),u()()(),d(18,"tbody")(19,"tr")(20,"td"),m(21,"Open Actions menu"),u(),d(22,"td"),m(23,"Swipe left"),u(),d(24,"td"),m(25,"Click, drag left, and release"),u(),d(26,"td")(27,"kbd"),m(28,"Shift"),u(),m(29," + "),d(30,"kbd"),m(31,"Ctrl"),u(),m(32," + "),d(33,"kbd",3),m(34,"\u2190"),u(),m(35," (Left Arrow)"),u()(),d(36,"tr")(37,"td"),m(38,"Open Notification menu"),u(),d(39,"td"),m(40,"Swipe right"),u(),d(41,"td"),m(42,"Click, drag right, and release"),u(),d(43,"td")(44,"kbd"),m(45,"Shift"),u(),m(46," + "),d(47,"kbd"),m(48,"Ctrl"),u(),m(49," + "),d(50,"kbd",3),m(51,"\u2192"),u(),m(52," (Right Arrow)"),u()(),d(53,"tr")(54,"td"),m(55,"Cycle through dashboards"),u(),d(56,"td"),m(57,"Swipe up/down"),u(),d(58,"td"),m(59,"Click, drag up/down, and release"),u(),d(60,"td")(61,"kbd"),m(62,"Shift"),u(),m(63," + "),d(64,"kbd"),m(65,"Ctrl"),u(),m(66," + "),d(67,"kbd",3),m(68,"\u2191"),u(),m(69,"/"),d(70,"kbd",3),m(71,"\u2193"),u(),m(72," (Up/Down Arrow)"),u()(),d(73,"tr")(74,"td"),m(75,"Toggle Fullscreen"),u(),d(76,"td"),m(77,"N/A"),u(),d(78,"td"),m(79,"N/A"),u(),d(80,"td")(81,"kbd"),m(82,"Shift"),u(),m(83," + "),d(84,"kbd"),m(85,"Ctrl"),u(),m(86," + "),d(87,"kbd"),m(88,"F"),u()()(),d(89,"tr")(90,"td"),m(91,"Toggle Night mode"),u(),d(92,"td"),m(93,"N/A"),u(),d(94,"td"),m(95,"N/A"),u(),d(96,"td")(97,"kbd"),m(98,"Shift"),u(),m(99," + "),d(100,"kbd"),m(101,"Ctrl"),u(),m(102," + "),d(103,"kbd"),m(104,"N"),u()()(),d(105,"tr")(106,"td"),m(107,"Toggle dashboard edit mode"),u(),d(108,"td"),m(109,"N/A"),u(),d(110,"td"),m(111,"N/A"),u(),d(112,"td")(113,"kbd"),m(114,"Shift"),u(),m(115," + "),d(116,"kbd"),m(117,"Ctrl"),u(),m(118," + "),d(119,"kbd"),m(120,"E"),u()()()()(),d(121,"i"),m(122,"Note that the words Touch and Tap are synonymous with mouse Click."),u(),U(123,"br")(124,"br"),d(125,"h3"),m(126,"Login to Signal K"),u(),d(127,"p"),m(128," The first step is to configure Signal K server authentication ("),d(129,"i"),m(130,"a pre-existing Signal K server username and password is required"),u(),m(131,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select the top right "),d(132,"strong"),m(133,"Settings button"),u(),m(134,", then the top left "),d(135,"strong"),m(136,"Options button"),u(),m(137,". Toggle "),d(138,"strong"),m(139,"Login to server"),u(),m(140," and enter your Signal K credentials. "),u(),d(141,"ul")(142,"li")(143,"strong"),m(144,"Why login?"),u(),m(145," 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. "),u(),d(146,"li"),m(147," 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. "),u(),d(148,"li"),m(149," After entering your credentials, select "),d(150,"strong"),m(151,"Login"),u(),m(152," or "),d(153,"strong"),m(154,"Connect"),u(),m(155,". If successful, your connection status will update and live data will appear in KIP. "),u(),d(156,"li"),m(157," 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. "),u()(),d(158,"h3"),m(159,"Option 1: Load Demonstration Dashboards"),u(),d(160,"p"),m(161," Try the sample dashboards using data from your server: "),U(162,"br"),d(163,"button",4),B("click",function(){q(e);let i=I();return z(i.loadDemoConfig())}),m(164,"Load Demo"),u()(),d(165,"h3"),m(166,"Option 2: Create Your Own Layout"),u(),d(167,"p"),m(168,' The text you are reading is actually a widget that fills the dashboard. The screen is split in halves at the middle. This mode is called Chartplotter mode. It can later be turned off in Settings / Options / Display. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. Note that you can add and manage dashboards using the Settings button from the Actions menu. '),u(),d(169,"p")(170,"strong"),m(171,"Try editing the Dashboard now to receive further instructions!"),u()()}}function vp(n,o){n&1&&(d(0,"h2"),m(1,"Changing Layouts"),u(),m(2," Follow these simple steps to learn how to change your dashboard layout: "),d(3,"ol")(4,"li"),m(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."),u(),d(6,"li"),m(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),u(),d(8,"li"),m(9,"Choose a widget from the selection panel to add it to the dashboard."),u()(),d(10,"h3"),m(11,"Possible widget operations"),u(),d(12,"ul")(13,"li")(14,"strong"),m(15,"Touch and drag"),u(),m(16," to move widgets"),u(),d(17,"li")(18,"strong"),m(19,"Drag corners and sides"),u(),m(20," to resize widgets"),u(),d(21,"li")(22,"strong"),m(23,"Double Tap"),u(),m(24," on a widget to configure it"),u(),d(25,"li")(26,"strong"),m(27,"Press and Hold"),u(),m(28," on a widget to delete or duplicate widgets"),u()(),d(29,"h2"),m(30,"Exiting dashboard edit mode"),u(),d(31,"p"),m(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),u(),d(33,"h2"),m(34,"Adding more dashboards"),u(),d(35,"p"),m(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),u())}var md=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={filterSelfPaths:!0};dashboard=A(wt);settings=A(Zt);loadDemoConfig(){this.settings.loadDemoConfig()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-tutorial"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:1,consts:[[1,"tutorial-container"],["routerLink","/help"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(d(0,"div",0),G(1,Ap,172,0)(2,vp,37,0),u()),t&2&&(g(),F(i.dashboard.isDashboardStatic()?1:2))},dependencies:[lt,ks],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}"],changeDetection:0})}return n})();var ud=(()=>{let o=class o{constructor(t){this.ngZone=t,this.count=0,this.elementMap=new Map,this.observer=null}ngOnDestroy(){this.observer&&this.clearObserver()}observe(t,i,a){this.observer||(this.observer=new ResizeObserver(r=>{for(let s of r){let h=this.elementMap.get(s.target);h&&this.ngZone.run(()=>{h(s)})}})),a==="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}};o.\u0275fac=function(i){return new(i||o)(ms(We))},o.\u0275prov=ht({token:o,factory:o.\u0275fac});let n=o;return n})(),ai=(()=>{let o=class o{constructor(t,i,a){this.elementRef=t,this.ngxResizeObserverService=i,this.ngZone=a,this.resizeBoxModel="",this.onResize=new yt,this.observing=!1,Tn(()=>{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)}};o.\u0275fac=function(i){return new(i||o)(di(Ie),di(ud),di(We))},o.\u0275dir=st({type:o,selectors:[["","onResize",""]],inputs:{resizeBoxModel:"resizeBoxModel"},outputs:{onResize:"onResize"},features:[Qt]});let n=o;return n})(),Pt=(()=>{let o=class o{};o.\u0275fac=function(i){return new(i||o)},o.\u0275mod=Wt({type:o}),o.\u0275inj=Vt({providers:[ud]});let n=o;return n})();var yp=["canvas"],To=(()=>{class n{text=v.required();color=v.required();canvasRef=ie.required("canvas");canvas=A(je);canvasElement;canvasCtx;isReady=!1;cssWidth=0;cssHeight=0;constructor(){}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.drawTitle()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.isReady=!0,this.drawTitle()}ngOnChanges(e){(e.text||e.color)&&this.drawTitle()}drawTitle(){this.isReady&&this.canvas.drawTitle(this.canvasCtx,this.text(),this.color(),"normal",this.cssWidth,this.cssHeight)}ngOnDestroy(){try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}this.canvasCtx=null,this.canvasElement=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-title"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,yp,5),t&2&&me()},inputs:{text:[1,"text"],color:[1,"color"]},features:[Qt],decls:3,vars:0,consts:[["canvas",""],[1,"title-wrapper"],[1,"title-canvas"]],template:function(t,i){t&1&&(_(0,"div",1),H(1,"canvas",2,0),k())},dependencies:[Pt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;z-index:10}.title-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.title-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}"]})}return n})();var Cp=["svgSlider"];function Sp(n,o){n&1&&U(0,"div",10)}var hd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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"};runtime=A(de);streams=A(_e);svgElement=ie.required("svgSlider");dashboard=A(wt);signalkRequestsService=A(Di);appService=A(Lt);labelColor=w(void 0);barColor=w(void 0);skRequestSub=new Ni;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=null;valueChange$=new Nt;constructor(){R(()=>{let e=this.theme(),t=this.runtime.options();!t||!e||W(()=>{this.ensureColorMap(),this.getColors(t.color)})}),R(()=>{let e=this.runtime.options(),t=e?.paths?.gaugePath?.path;!e||!t||W(()=>{this.calculateLineBounds(),this.streams.observe("gaugePath",i=>{if(!i||!i.data){this.handlePosition=this.mapValueToPosition(e.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(i.data.value))})})})}ngOnInit(){let e=this.runtime.options();e&&this.getColors(e.color),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest(),this.valueChange$.pipe(vi(t=>{let i=this.runtime.options();return i?this.isWithinMargin(t,i.displayScale.lower,i)?i.displayScale.lower:this.isWithinMargin(t,i.displayScale.upper,i)?i.displayScale.upper:parseFloat(t.toFixed(2)):t}),Li(200),rs()).subscribe(t=>{this.sendValue(t)})}mapValueToPosition(e){let t=this.runtime.options();if(!t)return e;let i=t.displayScale.upper-t.displayScale.lower,a=this.LINE_WIDTH;return(e-t.displayScale.lower)/i*a+this.LINE_START}mapPositionToValue(e){let t=this.runtime.options();if(!t)return e;let i=t.displayScale.upper-t.displayScale.lower,a=this.LINE_WIDTH;return(e-this.LINE_START)/a*i+t.displayScale.lower}isWithinMargin(e,t,i){let a=(i.displayScale.upper-i.displayScale.lower)*.01;return Math.abs(e-t)<=a}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.id()){let i=`Toggle Widget ${this.runtime.options()?.displayName}: `;e.statusCode!=200&&(e.message?i+=e.message:i+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(i,0))}})}sendValue(e){let t=this.runtime.options()?.paths?.gaugePath?.path;this.signalkRequestsService.putRequest(t,e,this.id())}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);let a=this.runtime.options();a&&this.handlePosition<=this.LINE_START?this.pathValue=a.displayScale.lower:a&&this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=a.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){if(this.ensureColorMap(),!this.colorMap)return;let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ensureColorMap(){let e=this.theme();e&&(this.colorMap=new Map([["contrast",{label:e.contrastDim,bar:e.contrast}],["blue",{label:e.blueDim,bar:e.blue}],["green",{label:e.greenDim,bar:e.green}],["pink",{label:e.pinkDim,bar:e.pink}],["orange",{label:e.orangeDim,bar:e.orange}],["purple",{label:e.purpleDim,bar:e.purple}],["grey",{label:e.greyDim,bar:e.grey}],["yellow",{label:e.yellowDim,bar:e.yellow}]]))}ngOnDestroy(){this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&te(i.svgElement,Cp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:11,vars:7,consts:[["svgSlider",""],[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 a=ae();U(0,"widget-title",1),d(1,"div",2),B("onResize",function(){return q(a),z(i.onResized())}),K(),d(2,"svg",3),U(3,"rect",4)(4,"rect",5),d(5,"g",6),U(6,"circle",7)(7,"circle",8),u(),d(8,"rect",9,0),B("pointerdown",function(s){return q(a),z(i.onPointerDown(s))})("pointerup",function(){return q(a),z(i.onPointerUp())})("pointermove",function(s){return q(a),z(i.onPointerMove(s))})("pointerleave",function(){return q(a),z(i.onPointerLeave())}),u()(),G(10,Sp,1,0,"div",10),u()}if(t&2){let a;T("text",i.runtime==null||(a=i.runtime.options())==null?null:a.displayName)("color",i.labelColor()),g(4),Y("width",i.lineWidth)("fill",i.barColor()),g(2),Y("cx",i.handlePosition),g(),Y("cx",i.handlePosition),g(3),F(i.dashboard.isDashboardStatic()?-1:10)}},dependencies:[Pt,ai,To],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 n})();var wp=["gaugeBarAnimate"];function xp(n,o){if(n&1&&(K(),H(0,"rect",14)),n&2){let e=o.$implicit,t=I();Y("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var pd=(()=>{class n{gaugeBarAnimate=ie("gaugeBarAnimate");displayName=v.required();displayNameColor=v.required();dataValue=v.required();dataValueLabel=v.required();unitLabel=v.required();barColor=v.required();barColorGradient=v.required();barColorBackground=v.required();gaugeMinValue=v.required();gaugeMaxValue=v.required();highlights=v.required();scaleSliceValue=se(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=w(null);oldGaugeValue=w(null);scheduleRafId=null;constructor(){R(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),W(()=>{this.oldGaugeValue.set(this.newGaugeValue()!==null?this.newGaugeValue():e),this.newGaugeValue.set(this.dataValue()!==null?(t-e)*this.scaleSliceValue():e),this.gaugeBarAnimate()?.nativeElement&&(this.scheduleRafId!==null&&cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=requestAnimationFrame(()=>{let i=this.gaugeBarAnimate();i?.nativeElement&&i.nativeElement.beginElement(),this.scheduleRafId=null}))})})}ngOnDestroy(){this.scheduleRafId!==null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&te(i.gaugeBarAnimate,wp,5),t&2&&me()},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&&(K(),_(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),H(3,"stop",4)(4,"stop",5),k(),H(5,"linearGradient",6),k(),_(6,"g",7),H(7,"rect",8),_(8,"defs")(9,"g",9),H(10,"rect",10)(11,"rect",11),k()(),_(12,"use",12),H(13,"animateTransform",13,0),k(),ue(15,xp,1,3,":svg:rect",14,Me),k(),_(17,"g",15)(18,"text",16)(19,"tspan",17),m(20),k()(),_(21,"text",18)(22,"tspan",19),m(23),k(),_(24,"tspan",20),m(25),k()()()()),t&2&&(g(3),Y("stop-color",i.barColorGradient()),g(),Y("stop-color",i.barColorGradient()),g(3),Y("fill",i.barColorBackground()),g(5),re("fill",i.barColor()),g(),Y("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),g(2),he(i.highlights()),g(4),Y("fill",i.displayNameColor()),g(),ye(" ",i.displayName()),g(3),ne(i.dataValueLabel()),g(2),ne(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 n})();var oi=(()=>{class n{zones=w([]);metaConfig=v();metaWidget=v();_metaConfig=w(void 0);dataService=A(Ci);destroyRef=A(rt);runtime=A(de,{optional:!0});reset$=new Nt;lastKey;currentSub;pathSignature;observe(e){let t=this.runtime?.options()??this._metaConfig()??this.metaConfig();if(!t?.paths||Object.keys(t.paths).length===0)return;let i=e||Object.keys(t.paths)[0];this.lastKey=i;let a=t.paths[i]?.path;if(!a)return;let r=a;this.pathSignature!==r&&this.subscribePathMeta(a,r)}subscribePathMeta(e,t){this.currentSub&&(this.currentSub.unsubscribe(),this.currentSub=void 0),this.pathSignature=t;let i=this.dataService.getPathMetaObservable(e).pipe(Va(this.reset$),et(this.destroyRef)).subscribe(a=>{a?a.zones?this.zones.set([...a.zones]):this.zones.set([]):this.zones.set([])});this.currentSub=i}setMetaConfig(e){this._metaConfig.set(e)}applyMetaConfigDiff(e){if(this._metaConfig.set(e),!e?.paths||Object.keys(e.paths).length===0){this.reset();return}let t=this.lastKey&&e.paths[this.lastKey]?this.lastKey:Object.keys(e.paths)[0],i=e.paths[t]?.path,a=i??"";if(!i){this.reset();return}this.pathSignature!==a&&this.subscribePathMeta(i,a)}reset(){this.reset$.next(),this.reset$.complete(),this.reset$=new Nt,this.currentSub&&(this.currentSub.unsubscribe(),this.currentSub=void 0),this.pathSignature=void 0,this.zones.set([])}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","widget-metadata",""]],inputs:{metaConfig:[1,"metaConfig"],metaWidget:[1,"metaWidget"]},exportAs:["widgetMetadata"]})}return n})();function ta(n,o,e,t,i,a,r=!1){let s=[],h=[...n].sort((f,b)=>f.lower-b.lower);for(let f of h){let b=null,C=null,M;switch(f.state){case ce.Emergency:M=o.zoneEmergency;break;case ce.Alarm:M=o.zoneAlarm;break;case ce.Warn:M=o.zoneWarn;break;case ce.Alert:M=o.zoneAlert;break;case ce.Nominal:M=o.zoneNominal;break;default:M="rgba(0,0,0,0)"}if(b=t.convertToUnit(e,f.lower),C=t.convertToUnit(e,f.upper),!(C<i||b>a)){if(b=b!==null?b:i,C=C!==null?C:a,b=Math.max(b,i),C>a){C=a,s.push({from:b,to:C,color:M});break}s.push({from:b,to:C,color:M})}}return r&&(s=s.map(f=>({from:a-f.to,to:a-f.from,color:f.color}))),s}var gd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);streams=A(_e);metadata=A(oi,{optional:!0});unitsService=A(at);unitsLabel=w("");dataLabelValue=w("0");dataValue=w(null);barColor=w("");barColorGradient=w("");barColorBackground=w("");highlights=se(()=>{let e=this.metadata.zones(),t=this.runtime.options(),i=this.theme();if(!t||!i)return[];if(t.ignoreZones||!this.metadata)return[];if(!e?.length)return[];let a=t.paths.gaugePath.convertUnitTo,r=t.displayScale.lower,s=t.displayScale.upper;return ta(e,i,a,this.unitsService,r,s)});lastState=null;constructor(){R(()=>{let e=this.runtime.options(),t=e?.paths?.gaugePath?.path;!e||!t||W(()=>{this.streams.observe("gaugePath",a=>{let r=this.theme();if(!e||!r)return;let s=a?.data?.value;if(s==null)this.dataValue.set(e.displayScale.lower),this.dataLabelValue.set("--");else{let h=Math.min(Math.max(s,e.displayScale.lower),e.displayScale.upper);this.dataValue.set(h),this.dataLabelValue.set(h.toFixed(e.numDecimal))}if(!e.ignoreZones){let h=a?.state;if(h&&h!==this.lastState)switch(this.lastState=h,h){case ce.Alarm:this.barColor.set(r.zoneAlarm);break;case ce.Warn:this.barColor.set(r.zoneWarn);break;case ce.Alert:this.barColor.set(r.zoneAlert);break;case ce.Nominal:this.barColor.set(r.zoneNominal);break;default:this.barColor.set(Se(e.color,r).color);break}}});let i=e.paths.gaugePath.convertUnitTo;this.unitsLabel.set(e.gauge.unitLabelFormat==="abr"?i?.substring(0,1):i)})}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.barColorBackground.set(t.background);let i=Se(e.color,t);e.ignoreZones?this.barColor.set(i.color):this.lastState||this.barColor.set(i.color),this.barColorGradient.set(i.dimmer||i.dim||i.color)})}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||!this.metadata||W(()=>this.metadata.observe("gaugePath"))})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-simple-linear"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:11,consts:[[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){if(t&1&&U(0,"svg-simple-linear-gauge",0),t&2){let a,r=i.runtime.options();T("displayName",r.displayName)("displayNameColor",(a=i.theme())==null?null:a.contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",r.displayScale.upper)("gaugeMinValue",r.displayScale.lower)("highlights",i.highlights())}},dependencies:[pd],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return n})();var Mp=["rotatingDial"],kp=["twaIndicator"],Tp=["wptIndicator"],Ep=["setIndicator"],Dp=["tackIndicator"],fd=([n,o],[e,t],[i,a])=>(Math.atan2(a-t,i-e)-Math.atan2(o-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,bd=(()=>{class n{rotatingDial=ie.required("rotatingDial");twaIndicator=ie.required("twaIndicator");wptIndicator=ie.required("wptIndicator");setIndicator=ie.required("setIndicator");tackIndicator=ie.required("tackIndicator");compassHeading=v.required();tackTrue=v.required();polarSpeedRatio=v.required();trueWindAngle=v.required();trueWindSpeed=v.required();targetAngle=v.required();optimalWindAngle=v.required();targetVMG=v.required();VMG=v.required();sailSetupEnabled=v.required();driftEnabled=v.required();driftSet=v(void 0);driftFlow=v(void 0);waypointEnabled=v.required();waypointAngle=v(void 0);vmgToWaypoint=v(void 0);trueWindMinHistoric=v(void 0);trueWindMidHistoric=v(void 0);trueWindMaxHistoric=v(void 0);gradianColor=v.required();compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};tack={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue=w("--");windSectorsInitialized=!1;trueWindHeading=0;trueWindSpeedDisplay=se(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});windAnglePerformanceRatioColor=se(()=>{let e=this.optimalWindAngle(),t=this.targetAngle(),i=this.gradianColor().start,a=this.gradianColor().stop;if(e==null||t==null)return i;let r=1-Math.abs(e-t)/180;return this.interpolateColor(i,a,r)});targetVMGOffset=se(()=>{let e=this.VMG(),t=this.targetVMG();return e==null||t==null?"--":(e-t).toFixed(1)});targetVMGOffsetRatioColor=se(()=>{let e=this.VMG(),t=this.targetVMG(),i=this.gradianColor().start,a=this.gradianColor().stop;if(e==null||t==null)return i;let r=e/t;return this.interpolateColor(i,a,r)});waypointActive=w(!1);flow=se(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;CENTER_X=600;CENTER_Y=620;RADIUS=540;ANIMATION_DURATION=1e3;laylinePortPath=w(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);laylineStbdPath=w(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=w("");stbdWindSectorPath=w("");speedLineTipY=w(620);speedTipPoints=w("600,570 580,600 620,600");speedRatioColor=w("");speedLinePrevRatio=0;speedLinePrevTipY=600;speedLineAnimId=null;animationFrameIds=new WeakMap;ngZone=A(We);constructor(){R(()=>{let e=this.waypointEnabled();W(()=>{this.waypointActive.set(e)})}),R(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&W(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue.set(e.toString()),this.rotatingDial()?.nativeElement&&(Dt(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateLaylines(),this.updateWindSectors())})}),R(()=>{let e=parseFloat(this.tackTrue().toFixed(0));e!=null&&W(()=>{this.tack.oldValue=this.tack.newValue,this.tack.newValue=e-this.compass.newValue,this.tackIndicator()?.nativeElement&&Dt(this.tackIndicator().nativeElement,this.tack.oldValue,this.tack.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620])})}),R(()=>{let e=this.waypointAngle();W(()=>{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&&Dt(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620])})}),R(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&W(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(Dt(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateLaylines())})}),R(()=>{let e=this.polarSpeedRatio(),t=Math.max(0,Math.min(1,e)),i=620,r=i-166,s=i-r*t;this.animateSpeedLine(this.speedLinePrevTipY,s),this.speedLinePrevTipY=s,this.speedLinePrevRatio=t}),R(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&W(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&Dt(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone)})})}updateLaylines(){let e=this.addHeading(Number(this.twa.newValue),this.targetAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.twa.newValue),this.targetAngle());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 a=this.ANIMATION_DURATION,r=performance.now(),s=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,h=b=>{let C=b-r,M=Math.min(C/a,1),N=s(M),D=t-e;D>180&&(D-=360),D<-180&&(D+=360);let X=(e+D*N+360)%360*Math.PI/180,Z=Math.floor(this.RADIUS*Math.sin(X)+this.CENTER_X),ee=Math.floor(this.RADIUS*Math.cos(X)*-1+this.CENTER_Y);if(i?this.laylinePortPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${Z},${ee}`):this.laylineStbdPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${Z},${ee}`),M<1){let be=requestAnimationFrame(h);i?this.portLaylineAnimId=be:this.stbdLaylineAnimId=be}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},f=requestAnimationFrame(h);i?this.portLaylineAnimId=f:this.stbdLaylineAnimId=f}updateWindSectors(){if(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 a=this.ANIMATION_DURATION,r=performance.now(),s=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,h=b=>{let C=b-r,M=Math.min(C/a,1),N=s(M),D=(vt,rn)=>vt+(rn-vt)*N,j=D(e.min,t.min),X=D(e.mid,t.mid),Z=D(e.max,t.max),ee=this.addHeading(this.addHeading(j,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),be=this.addHeading(this.addHeading(X,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),Oe=this.addHeading(this.addHeading(Z,Number(this.compass.newValue)*-1),this.targetAngle()*(i?-1:1)),Te=this.RADIUS*Math.sin(ee*Math.PI/180)+this.CENTER_X,Ye=this.RADIUS*Math.cos(ee*Math.PI/180)*-1+this.CENTER_Y,Ee=this.RADIUS*Math.sin(be*Math.PI/180)+this.CENTER_X,Le=this.RADIUS*Math.cos(be*Math.PI/180)*-1+this.CENTER_Y,pe=this.RADIUS*Math.sin(Oe*Math.PI/180)+this.CENTER_X,He=this.RADIUS*Math.cos(Oe*Math.PI/180)*-1+this.CENTER_Y,bt=Math.abs(fd([Te,Ye],[Ee,Le],[pe,He]))>Math.PI/2?0:1,tt=fd([pe,He],[Te,Ye],[Ee,Le])>0?0:1,ot=`M ${this.CENTER_X},${this.CENTER_Y} L ${Te},${Ye} A ${this.RADIUS},${this.RADIUS} 0 ${bt} ${tt} ${pe},${He} z`;if(i?this.portWindSectorPath.set(ot):this.stbdWindSectorPath.set(ot),M<1){let vt=requestAnimationFrame(h);i?this.portSectorAnimId=vt:this.stbdSectorAnimId=vt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},f=requestAnimationFrame(h);i?this.portSectorAnimId=f:this.stbdSectorAnimId=f}animateSpeedLine(e,t){this.speedLineAnimId&&(cancelAnimationFrame(this.speedLineAnimId),this.speedLineAnimId=null);let i=1e3,a=performance.now(),r=this.speedLinePrevRatio,s=(600-t)/454,h=b=>b<.5?4*b*b*b:1-Math.pow(-2*b+2,3)/2,f=b=>{let C=b-a,M=Math.min(C/i,1),N=h(M),D=(Oe,Te)=>Oe+(Te-Oe)*N,j=D(e,t),X=D(r,s);this.speedLineTipY.set(j);let Z=30,ee=20,be=j-Z;this.speedTipPoints.set(`600,${be} ${600-ee},${j} ${600+ee},${j}`),this.speedRatioColor.set(this.interpolateColor(this.gradianColor().start,this.gradianColor().stop,X)),M<1?this.speedLineAnimId=requestAnimationFrame(f):this.speedLineAnimId=null};requestAnimationFrame(f)}interpolateColor(e,t,i){i=Math.max(0,Math.min(1,i));function a(j){j=j.replace("#",""),j.length===3&&(j=j.split("").map(Z=>Z+Z).join(""));let X=parseInt(j,16);return[X>>16&255,X>>8&255,X&255]}let[r,s,h]=a(e),[f,b,C]=a(t),M=Math.round(r+(f-r)*i),N=Math.round(s+(b-s)*i),D=Math.round(h+(C-h)*i);return`rgb(${M},${N},${D})`}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.twaIndicator(),this.wptIndicator(),this.setIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let a=this.animationFrameIds.get(i);a&&cancelAnimationFrame(a),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,Mp,5),te(i.twaIndicator,kp,5),te(i.wptIndicator,Tp,5),te(i.setIndicator,Ep,5),te(i.tackIndicator,Dp,5)),t&2&&me(5)},inputs:{compassHeading:[1,"compassHeading"],tackTrue:[1,"tackTrue"],polarSpeedRatio:[1,"polarSpeedRatio"],trueWindAngle:[1,"trueWindAngle"],trueWindSpeed:[1,"trueWindSpeed"],targetAngle:[1,"targetAngle"],optimalWindAngle:[1,"optimalWindAngle"],targetVMG:[1,"targetVMG"],VMG:[1,"VMG"],sailSetupEnabled:[1,"sailSetupEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointEnabled:[1,"waypointEnabled"],waypointAngle:[1,"waypointAngle"],vmgToWaypoint:[1,"vmgToWaypoint"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"],gradianColor:[1,"gradianColor"]},decls:173,vars:36,consts:[["rotatingDial",""],["tackIndicator",""],["twaIndicator",""],["wptIndicator",""],["setIndicator",""],["viewBox","0 0 1200 1200"],["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"],["id","linearGradient14",0,"xlink","href","#linearGradient13","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1211.2051,-79.73465)"],["id","linearGradient17",0,"xlink","href","#linearGradient16","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","linearGradient19",0,"xlink","href","#linearGradient18","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground","transform","translate(100,100)",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","dialBackground","cx","600","cy","620","r","516",1,"fixed-dial-background",2,"display","inline","stroke-width","46"],["id","barsAndText","transform","scale(1.1) translate(45,64)",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"],[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","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.4","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.4","stroke","none"],["id","LayerLayline"],["id","PortLayline",1,"portLayline"],["id","StbdLayline",1,"stbdLayline"],["id","layerCounter"],["id","tackCounter"],[0,"xml","space","preserve","x","1062","y","80",1,"tack-label"],["x","936","y","95","width","252","height","100","rx","20",1,"tack-box"],[0,"xml","space","preserve","x","1072","y","175","id","text42",1,"tack-value"],[2,"font-weight","normal"],[2,"font-weight","normal","font-size","30px"],["id","windVmgCounter"],[0,"xml","space","preserve","x","600","y","780",1,"tack-label"],[0,"xml","space","preserve","x","610","y","850",1,"wind-vmg-value"],[0,"xml","space","preserve","x","610","y","890",1,"wind-vmg-offset"],["id","waypointCounter"],[0,"xml","space","preserve","x","1062","y","1030",1,"tack-label"],["x","936","y","1045","width","252","height","140","rx","20",1,"waypoint-box"],[0,"xml","space","preserve","x","1060","y","1100",1,"waypoint-value"],[1,"tack-label"],[0,"xml","space","preserve","x","1060","y","1165",1,"waypoint-value"],["id","layerIndicators",2,"display","inline"],["d","m 606.20767,217.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 576.25472,75.811298 593.47058,58.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 576.25472,89.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 218.26408 h -12.77766 z",1,"tack-angle"],["d","m 451.77021,5.469207 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,230.15629 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,21.357036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,296.91787,121.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","600","y","210","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"],["cx","600","cy","225","rx","23","ry","23",1,"next-waypoint"],["id","layerDirectionSpeed"],["id","directionLine","x1","600","y1","620","x2","600","y2","110",1,"direction-line"],["id","speedLine","x1","600","y1","620","x2","600",1,"speed-line"],["id","speedTip",1,"speed-line"],["id","layerDrift","transform","translate(0, 20)"],["id","setArrow","d","m 663.93337,580.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",1,"drift-arrow",2,"fill","url(#linearGradient14)"],["id","text11",0,"xml","space","preserve","x","599.78842","y","623.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","layerHeading"],["id","rect1","width","290","height","117","x","455","y","10","rx","20",1,"heading-box",2,"stroke-width","5","stroke-opacity","0.5"],["x","615","y","110",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","120px","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&&(K(),_(0,"svg",5)(1,"defs",6)(2,"linearGradient",7),H(3,"stop",8)(4,"stop",9),k(),_(5,"linearGradient",10),H(6,"stop",8)(7,"stop",9),k(),_(8,"linearGradient",11),H(9,"stop",12)(10,"stop",13),k(),_(11,"linearGradient",14),H(12,"stop",15),k(),_(13,"clipPath",16),H(14,"ellipse",17),k(),H(15,"linearGradient",18)(16,"linearGradient",19)(17,"linearGradient",20),k(),_(18,"g",21)(19,"g",22),H(20,"path",23)(21,"path",24),k()(),_(22,"g",25)(23,"g",26),H(24,"circle",27),k(),_(25,"g",null,0)(27,"g",28),H(28,"path",29)(29,"path",30)(30,"path",31)(31,"path",32)(32,"path",33)(33,"path",34)(34,"path",35)(35,"path",36)(36,"path",37)(37,"path",38)(38,"path",39)(39,"path",40)(40,"path",41)(41,"path",42)(42,"path",43)(43,"path",44)(44,"path",45)(45,"path",46)(46,"path",47)(47,"path",48)(48,"path",49)(49,"path",50)(50,"path",51)(51,"path",52)(52,"path",53)(53,"path",54)(54,"path",55)(55,"path",56)(56,"path",57)(57,"path",58)(58,"path",59)(59,"path",60)(60,"path",61)(61,"path",62)(62,"path",63)(63,"path",64),_(64,"text",65)(65,"tspan",66),m(66,"330"),k()(),_(67,"text",67)(68,"tspan",68),m(69,"300"),k()(),_(70,"text",69)(71,"tspan",70),m(72,"W"),k()(),_(73,"text",71)(74,"tspan",72),m(75,"240"),k()(),_(76,"text",73)(77,"tspan",74),m(78,"210"),k()(),_(79,"text",75)(80,"tspan",76),m(81,"S"),k()(),_(82,"text",77)(83,"tspan",78),m(84,"150"),k()(),_(85,"text",79)(86,"tspan",80),m(87,"120"),k()(),_(88,"text",81)(89,"tspan",82),m(90,"E"),k()(),_(91,"text",83)(92,"tspan",84),m(93,"60"),k()(),_(94,"text",85)(95,"tspan",86),m(96,"30"),k()(),_(97,"text",87)(98,"tspan",88),m(99,"N"),k()()()()(),_(100,"g",89),H(101,"path",90)(102,"path",91),k(),_(103,"g",92),H(104,"path",93)(105,"path",94),k(),_(106,"g",95)(107,"g",96)(108,"text",97),m(109,"Tack/Gybe"),k(),H(110,"rect",98),_(111,"text",99),m(112),_(113,"tspan",100),m(114,"\xB0"),_(115,"tspan",101),m(116,"T"),k()()()(),_(117,"g",102)(118,"text",103),m(119,"Wind VMG"),k(),_(120,"text",104),m(121),_(122,"tspan",101),m(123," kts"),k()(),_(124,"text",105),m(125),_(126,"tspan",101),m(127," kts"),k()()(),_(128,"g",106)(129,"text",107),m(130,"Waypoint"),k(),H(131,"rect",108),_(132,"text",109)(133,"tspan",110),m(134,"VMG: "),k(),m(135),_(136,"tspan",101),m(137," kts"),k()(),_(138,"text",111)(139,"tspan",110),m(140,"HDG: "),k(),m(141),_(142,"tspan",100),m(143,"\xB0"),_(144,"tspan",101),m(145,"T"),k()()()()(),_(146,"g",112)(147,"g",null,1),H(149,"path",113),k(),_(150,"g",null,2),H(152,"path",114),_(153,"text",115),m(154,"T"),k()(),_(155,"g",null,3),H(157,"ellipse",116),k()(),_(158,"g",117),H(159,"line",118)(160,"line",119)(161,"polygon",120),k(),_(162,"g",121),H(163,"path",122,4),_(165,"text",123),m(166),k()(),_(167,"g",124),H(168,"rect",125),_(169,"text",126),m(170),_(171,"tspan",100),m(172,"\xB0"),k()()()()),t&2&&(g(101),re("display",i.portWindSectorPath()!="none"?"inline":"none"),Y("d",i.portWindSectorPath()),g(),re("display",i.stbdWindSectorPath()!="none"?"inline":"none"),Y("d",i.stbdWindSectorPath()),g(2),re("display",i.trueWindAngle()!=null?"inline":"none"),Y("d",i.laylinePortPath()),g(),re("display",i.trueWindAngle()!=null?"inline":"none"),Y("d",i.laylineStbdPath()),g(7),ne(i.tackTrue()),g(8),re("fill",i.targetVMGOffsetRatioColor()),g(),ne(i.targetVMG()),g(3),re("fill",i.targetVMGOffsetRatioColor()),g(),ne(i.targetVMGOffset()),g(10),ne(i.vmgToWaypoint()),g(6),ne(i.waypointAngle()),g(11),re("fill",i.windAnglePerformanceRatioColor()),g(3),Y("display",i.waypointActive()?"inline":"none"),g(5),re("stroke",i.speedRatioColor()),Y("y2",i.speedLineTipY()),g(),re("fill",i.speedRatioColor())("stroke",i.speedRatioColor()),Y("points",i.speedTipPoints()),g(),re("display",i.driftEnabled()?"inline":"none"),g(4),ne(i.flow()),g(4),ye(" ",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:none;stroke: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-box[_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)}.tack-box[_ngcontent-%COMP%]{stroke:var(--kip-yellow-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.tack-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.tack-label[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.waypoint-box[_ngcontent-%COMP%]{stroke:var(--kip-orange-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.waypoint-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:50px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-offset[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-blue-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.tack-angle[_ngcontent-%COMP%]{fill:var(--kip-yellow-color);stroke-width:15;stroke-linecap:square}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-orange-color);stroke-width:20;fill:none}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.portLayline[_ngcontent-%COMP%]{stroke:var(--kip-port-color);stroke-width:5}.stbdLayline[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color);stroke-width:5}.direction-line[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color);stroke-width:5}.speed-line[_ngcontent-%COMP%]{stroke:var(--kip-blue-color);stroke-width:10;fill:var(--kip-blue-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);stroke:var(--kip-widget-card-background-color);stroke-width:3}"]})}return n})();var Ad=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},tackTrue:{description:"True Tack",path:"self.performance.tackTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},polarSpeedRatio:{description:"Polar Speed Ratio",path:"self.performance.polarSpeedRatio",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"ratio",sampleTime:500},targetAngle:{description:"Target Angle",path:"self.performance.targetAngle",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"deg",sampleTime:500},optimalWindAngle:{description:"Optimal Wind Angle",path:"self.performance.optimumWindAngle",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"deg",sampleTime:500},targetVMG:{description:"Target Velocity Made Good",path:"self.performance.targetVelocityMadeGood",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},VMG:{description:"Velocity Made Good",path:"self.performance.velocityMadeGood",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,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,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!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,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},vmgToWaypoint:{description:"Velocity Made Good to Waypoint",path:"self.performance.velocityMadeGoodToWaypoint",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,convertUnitTo:"knots",sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!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};runtime=A(de);streams=A(_e);currentHeading=w(0);courseOverGroundAngle=w(0);appWindAngle=w(0);appWindSpeed=w(0);appWindSpeedUnit=w("knots");trueWindAngle=w(0);trueWindSpeed=w(0);trueWindSpeedUnit=w("knots");driftFlow=w(0);driftSet=w(0);waypointAngle=w(0);vmgToWaypoint=w(null);tackTrue=w(0);polarSpeedRatio=w(0);targetAngle=w(0);optimalWindAngle=w(0);targetVMG=w(0);VMG=w(0);gradianColor=w({start:"#3298ff",stop:"#15af00"});trueWindMinHistoric=w(0);trueWindMidHistoric=w(0);trueWindMaxHistoric=w(0);windSectorSub=null;historicalWindDirection=[];constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.headingPath?.path||W(()=>this.streams.observe("headingPath",a=>{let r=a?.data?.value;this.currentHeading.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.courseOverGroundEnable||!e.paths?.courseOverGround?.path||W(()=>this.streams.observe("courseOverGround",a=>{let r=a?.data?.value;this.courseOverGroundAngle.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.driftEnable||!e.paths?.drift?.path||W(()=>this.streams.observe("drift",a=>{let r=a?.data?.value;this.driftFlow.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.driftEnable||!e.paths?.set?.path||W(()=>this.streams.observe("set",a=>{let r=a?.data?.value,s=r??0;this.driftSet.set(this.addHeading(-this.currentHeading(),s))}))}),R(()=>{let e=this.runtime.options();!e||!e.waypointEnable||!e.paths?.nextWaypointBearing?.path||W(()=>this.streams.observe("nextWaypointBearing",a=>{let r=a?.data?.value;if(r==null){this.waypointAngle.set(0);return}let s=r<0?360+r:r,h=this.addHeading(-this.currentHeading(),s);this.waypointAngle.set(Math.round(h))}))}),R(()=>{let e=this.runtime.options();!e||!e.awsEnable||!e.paths?.appWindAngle?.path||W(()=>this.streams.observe("appWindAngle",a=>{let r=a?.data?.value,s=r??0;if(s=s<0?360+s:s,this.appWindAngle.set(s),e.windSectorEnable){let h=this.currentHeading(),f=this.addHeading(h,r??0);this.addHistoricalWindDirection(f,e.windSectorWindowSeconds)}}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.tackTrue?.path||W(()=>this.streams.observe("tackTrue",a=>{let r=a?.data?.value;this.tackTrue.set(r==null?0:Math.round(r))}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.polarSpeedRatio?.path||W(()=>this.streams.observe("polarSpeedRatio",a=>{let r=a?.data?.value;this.polarSpeedRatio.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.targetAngle?.path||W(()=>this.streams.observe("targetAngle",a=>{let r=a?.data?.value,s=r==null?0:r<0?360+r:r;this.targetAngle.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.optimalWindAngle?.path||W(()=>this.streams.observe("optimalWindAngle",a=>{let r=a?.data?.value;this.optimalWindAngle.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.targetVMG?.path||W(()=>this.streams.observe("targetVMG",a=>{let r=a?.data?.value,s=r==null?0:Math.round(r*10)/10;this.targetVMG.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.VMG?.path||W(()=>this.streams.observe("VMG",a=>{let r=a?.data?.value,s=r==null?0:Math.round(r*10)/10;this.VMG.set(s)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.vmgToWaypoint?.path||W(()=>this.streams.observe("vmgToWaypoint",a=>{let r=a?.data?.value,s=r==null?null:Math.round(r*10)/10;this.vmgToWaypoint.set(s)}))}),R(()=>{let e=this.theme();if(!e)return;let t=e?.blue??"#3298ff",i=e?.green??"#15af00";W(()=>this.gradianColor.set({start:t,stop:i}))}),R(()=>{let e=this.runtime.options();!e||!e.awsEnable||!e.paths?.appWindSpeed?.path||W(()=>this.streams.observe("appWindSpeed",a=>{let r=a?.data?.value;this.appWindSpeed.set(r??0)}))}),R(()=>{let e=this.runtime.options();!e||!e.twsEnable||!e.paths?.trueWindSpeed?.path||W(()=>this.streams.observe("trueWindSpeed",a=>{let r=a?.data?.value;this.trueWindSpeed.set(r??0)}))}),R(()=>{let e=this.runtime.options();if(!e||!e.twsEnable)return;let i=e.paths?.trueWindAngle?.path;i&&W(()=>this.streams.observe("trueWindAngle",a=>{let r=a?.data?.value,s=r??0;if(i.includes("angleTrueWater")||i.includes("angleTrueGround")){let h=this.currentHeading();s=this.addHeading(h,s)}else s=s<0?360+s:s;this.trueWindAngle.set(s)}))}),R(()=>{let e=this.runtime.options();e&&(e.windSectorEnable?this.windSectorSub||W(()=>this.windSectorSub=xn(500).subscribe(()=>this.historicalCleanup(e.windSectorWindowSeconds))):(this.windSectorSub?.unsubscribe(),this.windSectorSub=null))})}sectorArc=se(()=>{let e=this.trueWindMinHistoric(),t=this.trueWindMidHistoric(),i=this.trueWindMaxHistoric();return{min:e,mid:t,max:i}});addHistoricalWindDirection(e,t){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let i=this.arcForAngles(this.historicalWindDirection.map(a=>a.windDirection));this.trueWindMinHistoric.set(i.min),this.trueWindMaxHistoric.set(i.max),this.trueWindMidHistoric.set(i.mid),this.historicalCleanup(t)}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,a)=>{let r=a;for(;r<i.min-180;)r+=360;for(;r>i.max+180;)r-=360;return i.min=Math.min(i.min,r),i.max=Math.max(i.max,r),i.mid=(i.max-i.min)/2+i.min,i},{min:e[0],max:e[0],mid:e[0]})}historicalCleanup(e){let t=Date.now()-e*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(i=>i.timestamp>=t)}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}ngOnDestroy(){this.windSectorSub?.unsubscribe(),this.windSectorSub=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racesteer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:20,consts:[[3,"compassHeading","tackTrue","polarSpeedRatio","trueWindAngle","trueWindSpeed","targetAngle","optimalWindAngle","targetVMG","VMG","sailSetupEnabled","driftEnabled","driftFlow","driftSet","waypointEnabled","waypointAngle","vmgToWaypoint","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","gradianColor"]],template:function(t,i){if(t&1&&U(0,"svg-racesteer",0),t&2){let a,r,s;T("compassHeading",i.currentHeading())("tackTrue",i.tackTrue())("polarSpeedRatio",i.polarSpeedRatio())("trueWindAngle",i.trueWindAngle())("trueWindSpeed",i.trueWindSpeed())("targetAngle",i.targetAngle())("optimalWindAngle",i.optimalWindAngle())("targetVMG",i.targetVMG())("VMG",i.VMG())("sailSetupEnabled",(a=i.runtime.options())==null?null:a.sailSetupEnable)("driftEnabled",(r=i.runtime.options())==null?null:r.driftEnable)("driftFlow",i.driftFlow())("driftSet",i.driftSet())("waypointEnabled",(s=i.runtime.options())==null?null:s.waypointEnable)("waypointAngle",i.waypointAngle())("vmgToWaypoint",i.vmgToWaypoint()??0)("trueWindMinHistoric",i.trueWindMinHistoric())("trueWindMidHistoric",i.trueWindMidHistoric())("trueWindMaxHistoric",i.trueWindMaxHistoric())("gradianColor",i.gradianColor())}},dependencies:[bd],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg-racesteer[_ngcontent-%COMP%]{width:100%;height:100%}"]})}return n})();var Pp=["canvasMainRef"];function Ip(n,o){if(n&1&&(d(0,"div",8),K(),d(1,"svg",11)(2,"text",12),m(3),u()()()),n&2){let e=I();g(3),ye("Start at: ",e.startAtTime())}}function Op(n,o){if(n&1){let e=ae();d(0,"button",13),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("start"))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"Start"),u()()()(),Ve(),d(5,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-60))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"-1m"),u()()()(),Ve(),d(10,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(60))}),d(11,"mat-icon",5),K(),d(12,"svg",6)(13,"text",14),m(14,"+1m"),u()()()()}}function Rp(n,o){if(n&1){let e=ae();d(0,"button",13),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("sync"))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"Sync"),u()()()(),Ve(),d(5,"button",16),B("click",function(){q(e);let i=I();return z(i.sendStartTimerCommand("reset"))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"Reset"),u()()()()}}function Np(n,o){if(n&1){let e=ae();d(0,"button",17),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-60))}),d(1,"mat-icon",5),K(),d(2,"svg",6)(3,"text",14),m(4,"-1m"),u()()()(),Ve(),d(5,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(-1))}),d(6,"mat-icon",5),K(),d(7,"svg",6)(8,"text",14),m(9,"-1s"),u()()()(),Ve(),d(10,"button",15),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(1))}),d(11,"mat-icon",5),K(),d(12,"svg",6)(13,"text",14),m(14,"+1s"),u()()()(),Ve(),d(15,"button",17),B("click",function(){q(e);let i=I();return z(i.adjustStartTime(60))}),d(16,"mat-icon",5),K(),d(17,"svg",6)(18,"text",14),m(19,"+1m"),u()()()()}}function Vp(n,o){if(n&1){let e=ae();d(0,"input",18),un("ngModelChange",function(i){q(e);let a=I();return mn(a.startAtTimeEdit,i)||(a.startAtTimeEdit=i),z(i)}),B("change",function(){q(e);let i=I();return z(i.setStartTime())}),u()}if(n&2){let e=I();cn("ngModel",e.startAtTimeEdit)}}function Wp(n,o){n&1&&U(0,"div",10)}var vd=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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};runtime=A(de);streams=A(_e);signalk=A(Di);dashboard=A(wt);canvas=A(je);destroyRef=A(rt);canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;labelColor=w("");mode=w(1);ttsValue=null;dtsValue=null;valueColor="";valueStateColor="";startAtTime=w("00:00:00");startAtTimeEdit=As("");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.valueStateColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();!e||!e.paths?.ttsPath?.path||W(()=>this.streams.observe("ttsPath",a=>{let r=this.ttsValue;this.ttsValue=a?.data?.value??null,this.updateValueColor(),this.draw(),this.shouldBeep(r,this.ttsValue)&&this.beepForValue(this.ttsValue),e.nextDashboard>=0&&r===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.startTimePath?.path||W(()=>this.streams.observe("startTimePath",a=>{let r=a?.data?.value;if(!r)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let s=new Date(r);this.startAtTimeEdit.set(s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.dtsPath?.path||W(()=>this.streams.observe("dtsPath",a=>{this.dtsValue=a?.data?.value??null}))}),this.signalk.subscribeRequest().pipe(et(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.id()&&e.statusCode===200&&this.beep(600,20)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.draw()}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}toggleMode(){this.mode.update(t=>(t+1)%5);let e=this.ttsValue;this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.mode()===2&&e!==0&&!this.isStartTimerRunning()&&this.mode.set(3),this.draw()}sendStartTimerCommand(e){this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.id()),e==="start"&&this.mode.set(0),e==="reset"&&(this.startAtTime.set("HH:MM:SS"),this.mode.set(1))}adjustStartTime(e){this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.id())}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],a=t[1],r=t.length>=3?t[2]:0,s=new Date(e);s.setHours(i,a,r,0),s<=e&&s.setDate(s.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:s.toISOString()},this.id())}isStartTimerRunning(){return(this.ttsValue??0)>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}shouldBeep(e,t){return t==null||this.startAtTime()==="HH:MM:SS"||!this.runtime.options()?.playBeeps?!1:t===0&&e!==0||t<10&&t>=0||t<60&&t%10===0||t%60===0}beepForValue(e){e===0?this.beep(500,1e3):e<10?this.beep(450,100):e<60&&e%10===0?this.beep(400,150):e%60===0&&this.beep(350,200)}updateValueColor(){let e=this.theme(),t=this.runtime.options();!e||!t||(t.ignoreZones?this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=(this.dtsValue??0)<0?e.zoneAlarm:e.zoneWarn:this.ttsValue<60?this.valueStateColor=e.zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor,this.ttsValue===0?(this.mode.set(2),(this.dtsValue??0)<0&&(this.valueStateColor=e.zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2))}getValueText(){if(this.ttsValue==null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),a=Math.floor(t%60),r=Math.floor(e%60);return`${i}:${a.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),a=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${a.toString().padStart(2,"0")}`}}draw(){if(!this.ctx||!this.canvasElement)return;if(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.runtime.options()?.displayName){let i=this.runtime.options()?.displayName||"TTS";this.titleBitmap=this.canvas.createTitleBitmap(i,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=i}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e=this.getValueText();this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),Math.floor(this.cssWidth*.95),Math.floor(this.cssHeight*.95),"bold",this.valueStateColor)}beep(e=440,t=100){if(!this.runtime.options()?.playBeeps)return;let i=window.AudioContext||window.webkitAudioContext,a=new i,r=a.createOscillator(),s=a.createGain();r.connect(s),s.connect(a.destination),r.type="sine",r.frequency.value=e,s.gain.value=.1,r.start(),r.stop(a.currentTime+t/1e3)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Pp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},decls:15,vars:2,consts:[["canvasMainRef",""],[1,"filler"],[1,"timer-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","change","ngModel"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1),U(1,"canvas",2,0),u(),d(3,"div",3)(4,"button",4),B("click",function(){return q(a),z(i.toggleMode())}),d(5,"mat-icon",5),K(),d(6,"svg",6)(7,"text",7),m(8,"\u22EE"),u()()()(),G(9,Ip,4,1,"div",8)(10,Op,15,0)(11,Rp,10,0)(12,Np,20,0)(13,Vp,1,1,"input",9),u(),G(14,Wp,1,0,"div",10)}if(t&2){let a;g(9),F((a=i.mode())===0?9:a===1?10:a===2?11:a===3?12:a===4?13:-1),g(5),F(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[pt,dt,nt,Fn,Ke,lt,Xe,ze],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.timer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.timer-canvas[_ngcontent-%COMP%]{width:100%!important;height:76%!important;display:block}.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 n})();var Lp=["canvasMainRef"];function Gp(n,o){if(n&1&&(d(0,"div",10),K(),d(1,"svg",11)(2,"text",12),m(3),u()()(),Ve(),d(4,"div",13),K(),d(5,"svg",14)(6,"text",15)(7,"tspan",16),m(8,"\u2691"),u(),m(9),d(10,"tspan",17),m(11,"\u2691"),u()()()(),Ve(),d(12,"div",18),K(),d(13,"svg",19)(14,"text",12),m(15),u()()()),n&2){let e=I();g(3),ne(e.portBiasValue()),g(6),ye(" ",e.lineLengthValue()," "),g(6),ne(e.stbBiasValue())}}function Fp(n,o){if(n&1){let e=ae();d(0,"button",20),B("click",function(){q(e);let i=I();return z(i.setLineEnd("port"))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",21),m(4,"Port End"),u()()()(),Ve(),d(5,"button",22),B("click",function(){q(e);let i=I();return z(i.setLineEnd("stb"))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",21),m(9,"Stbd End"),u()()()()}}function Bp(n,o){if(n&1){let e=ae();d(0,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",5,0))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",24),m(4,"+5m"),u()()()(),Ve(),d(5,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",-5,0))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",24),m(9,"-5m"),u()()()(),Ve(),d(10,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",5,0))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",24),m(14,"+5m"),u()()()(),Ve(),d(15,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",-5,0))}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",24),m(19,"-5m"),u()()()(),Ve(),d(20,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",-5,0))}),d(21,"mat-icon",6),K(),d(22,"svg",7)(23,"text",24),m(24,"+5m"),u()()()()}}function Up(n,o){if(n&1){let e=ae();d(0,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",0,i.toRadians(1)))}),d(1,"mat-icon",6),K(),d(2,"svg",7)(3,"text",24),m(4,"\u21911\xB0"),u()()()(),Ve(),d(5,"button",23),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("port",0,i.toRadians(-1)))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",24),m(9,"\u21931\xB0"),u()()()(),Ve(),d(10,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",0,i.toRadians(1)))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",24),m(14,"\u21911\xB0"),u()()()(),Ve(),d(15,"button",25),B("click",function(){q(e);let i=I();return z(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",24),m(19,"\u21931\xB0"),u()()()()}}function qp(n,o){n&1&&U(0,"div",9)}var yd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);canvas=A(je);dashboard=A(wt);signalk=A(Di);destroyRef=A(rt);static DEFAULT_CONFIG={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}}};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;dtsValue=null;lengthValue=null;biasValue=null;labelColor=w("");valueColor="";dtsColor="";maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=w("");lineLengthValue=w("");stbBiasValue=w("");mode=w(0);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();!e||!e.paths?.dtsPath?.path||W(()=>this.streams.observe("dtsPath",i=>{this.dtsValue=i?.data?.value??null,this.updateDtsColor(),this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.lineLengthPath?.path||W(()=>this.streams.observe("lineLengthPath",i=>{this.lengthValue=i?.data?.value??null,this.drawLenBias(),this.draw()}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.lineBiasPath?.path||W(()=>this.streams.observe("lineBiasPath",i=>{this.biasValue=i?.data?.value??null,this.drawLenBias()}))}),this.signalk.subscribeRequest().pipe(et(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.id()&&e.statusCode===200&&this.beep(600,20)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.draw()}toggleMode(){this.mode.update(e=>(e+1)%4),this.draw()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.id())}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.id())}toRadians(e){return e?e*(Math.PI/180):null}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(!this.titleBitmap||!e||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==e.displayName){let t=e?.displayName||"DTS";this.titleBitmap=this.canvas.createTitleBitmap(t,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.drawDToLine(),this.drawLenBias(),this.drawUnit()}drawDToLine(){let e=this.getValueText();this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}getValueText(){if(this.dtsValue===null)return"--";let e=this.runtime.options();return this.dtsValue.toFixed(e?.numDecimal??0)}drawUnit(){let e=this.runtime.options()?.paths?.dtsPath?.convertUnitTo||"m";this.canvas.drawText(this.ctx,e,Math.floor(this.cssWidth-10*this.canvas.scaleFactor),Math.floor(this.cssHeight-7*this.canvas.scaleFactor),Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.dtsColor,"end","alphabetic")}drawLenBias(){let e=this.runtime.options();if(e){if(e.paths.lineLengthPath.path&&this.lengthValue!=null){let t=e.paths.lineLengthPath.convertUnitTo;t==="feet"&&(t="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(e.numDecimal))}${t}\u2015`)}if(e.paths.lineBiasPath.path&&this.biasValue!=null){let t=e.paths.lineBiasPath.convertUnitTo;t==="feet"&&(t="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(e.numDecimal)+t),this.stbBiasValue.set(this.biasValue.toFixed(e.numDecimal)+t)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(e.numDecimal)+t),this.stbBiasValue.set(" +"+this.biasValue.toFixed(e.numDecimal)+t))}}}applyDecorations(e){switch(this.runtime.options()?.paths?.dtsPath?.convertUnitTo){case"percent":case"percentraw":return e+"%";default:return e}}updateDtsColor(){let e=this.theme(),t=this.runtime.options();!e||!t||(t.ignoreZones?this.dtsValue?this.dtsValue<0?this.dtsColor=e.zoneAlarm:this.dtsValue<10?this.dtsColor=e.zoneWarn:this.dtsValue<20?this.dtsColor=e.zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor)}beep(e=440,t=100){if(!this.runtime.options()?.playBeeps)return;let i=window.AudioContext||window.webkitAudioContext,a=new i,r=a.createOscillator(),s=a.createGain();r.connect(s),s.connect(a.destination),r.type="sine",r.frequency.value=e,s.gain.value=.1,r.start(),r.stop(a.currentTime+t/1e3)}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Lp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:15,vars:2,consts:[["canvasMainRef",""],[1,"line-wrapper"],[1,"filler"],[1,"line-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 a=ae();d(0,"div",1)(1,"div",2),U(2,"canvas",3,0),u(),d(4,"div",4)(5,"button",5),B("click",function(){return q(a),z(i.toggleMode())}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",8),m(9,"\u22EE"),u()()()(),G(10,Gp,16,3)(11,Fp,10,0)(12,Bp,25,0)(13,Up,20,0),u(),G(14,qp,1,0,"div",9),u()}if(t&2){let a;g(10),F((a=i.mode())===0?10:a===1?11:a===2?12:a===3?13:-1),g(4),F(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[Ke,lt,Xe,ze],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.line-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.line-canvas[_ngcontent-%COMP%]{position:absolute;width:100%!important;height:76%!important;display:block;top:0;left:0}.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 n})();var zp=["canvasMainRef"];function Hp(n,o){if(n&1){let e=ae();d(0,"button",14),B("click",function(){q(e);let i=I();return z(i.startTimer())}),m(1," Start "),u()}}function jp(n,o){if(n&1){let e=ae();d(0,"button",15),B("click",function(){q(e);let i=I();return z(i.pauseTimer())}),m(1," Pause "),u()}}var Cd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);timers=A(kl);canvas=A(je);static DEFAULT_CONFIG={timerLength:-300,color:"contrast",playBeeps:!0,displayName:"Race",filterSelfPaths:!0,paths:{},enableTimeout:!1,dataTimeout:5,ignoreZones:!0};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=w(!1);timeName="race";warnColor="";textColor="";constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.applyColors(e.color,t),this.draw()})}),R(()=>{let e=this.runtime.options();e&&this.ensureTimer(e.timerLength??-300)})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.cssWidth*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.draw()}ensureTimer(e){this.timers.createTimer(this.timeName,e,1e3).subscribe(i=>{this.dataValue=i,this.timerRunning.set(this.timers.isRunning(this.timeName)),i>0?this.zoneState=ce.Normal:i===0?(this.zoneState=ce.Normal,this.beep(500,2e3)):i>-10?(this.zoneState=ce.Alarm,this.beep(450,100)):i>=-29?this.zoneState=ce.Warn:i===-30?(this.zoneState=ce.Warn,this.beep(400,200)):this.zoneState=ce.Normal,this.zoneState===ce.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.draw()},500):this.zoneState!==ce.Alarm&&this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null,this.flashOn=!1),this.draw()})}startTimer(){this.timers.startTimer(this.timeName),this.timerRunning.set(!0)}resetTimer(){this.timers.deleteTimer(this.timeName),this.timerRunning.set(!1);let e=this.runtime.options();this.ensureTimer(e?.timerLength??-300),this.draw()}pauseTimer(){this.timers.stopTimer(this.timeName),this.timerRunning.set(!1)}roundToMin(){if(this.dataValue==null)return;let t=(this.dataValue<0?-this.dataValue:this.dataValue)%60;this.dataValue>0?this.timers.setTimer(this.timeName,this.dataValue+(t>30?60-t:-t)):this.timers.setTimer(this.timeName,this.dataValue+(t>30?-(60-t):t))}addTime(e){this.dataValue!=null&&this.timers.setTimer(this.timeName,this.dataValue+e)}removeTime(e){this.dataValue!=null&&this.timers.setTimer(this.timeName,this.dataValue-e)}applyColors(e,t){switch(e){case"contrast":this.textColor=t.contrast,this.warnColor=t.zoneAlarm;break;case"blue":this.textColor=t.blue,this.warnColor=t.zoneAlarm;break;case"green":this.textColor=t.green,this.warnColor=t.zoneAlarm;break;case"pink":this.textColor=t.pink,this.warnColor=t.zoneAlarm;break;case"orange":this.textColor=t.orange,this.warnColor=t.zoneAlarm;break;case"purple":this.textColor=t.purple,this.warnColor=t.zoneAlarm;break;case"grey":this.textColor=t.grey,this.warnColor=t.zoneAlarm;break;case"yellow":this.textColor=t.yellow,this.warnColor=t.zoneAlarm;break;default:this.textColor=t.contrast,this.warnColor=t.zoneAlarm;break}}beep(e=440,t=100){if(this.runtime.options()?.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),a=i.createOscillator(),r=i.createGain();a.connect(r),r.connect(i.destination),a.type="sine",a.frequency.value=e,r.gain.value=.1,a.start(),a.stop(i.currentTime+t/1e3)}}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null)}draw(){if(!this.ctx)return;this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight);let e;if(this.dataValue!=null){let t=Math.abs(this.dataValue),i=Math.floor(t/60),a=Math.floor(t%60);e=`${i}:${("0"+a).slice(-2)}`,this.dataValue<0&&(e=`-${e}`)}else e="--";switch(this.currentValueLength!==e.length&&(this.currentValueLength=e.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.ctx,e,this.maxTextWidth,this.maxTextHeight,"bold")),this.zoneState){case ce.Alarm:this.flashOn?this.ctx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.ctx,0,0,this.cssWidth,this.cssHeight,this.warnColor),this.ctx.fillStyle=this.textColor);break;case ce.Warn:this.ctx.fillStyle=this.warnColor;break;default:this.ctx.fillStyle=this.textColor}this.canvas.drawText(this.ctx,e,this.cssWidth/2,this.cssHeight/2,this.maxTextWidth,this.maxTextHeight,"bold",this.ctx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,zp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:35,vars:2,consts:[["canvasMainRef",""],[1,"racetimer-wrapper"],[1,"racetimer-canvas"],[1,"timerBarContainer"],[1,"timer-button-groups","timer-adjusters-group"],["mat-flat-button","",1,"button","other-small-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","11"],["mat-flat-button","",1,"button","main-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 a=ae();d(0,"div",1),U(1,"canvas",2,0),d(3,"div",3)(4,"div",4)(5,"button",5),B("click",function(){return q(a),z(i.removeTime(5))}),d(6,"mat-icon",6),K(),d(7,"svg",7)(8,"text",8),m(9,"-5s"),u()()()(),Ve(),d(10,"button",5),B("click",function(){return q(a),z(i.removeTime(60))}),d(11,"mat-icon",6),K(),d(12,"svg",7)(13,"text",8),m(14,"-60s"),u()()()(),Ve(),d(15,"button",9),B("click",function(){return q(a),z(i.resetTimer())}),d(16,"mat-icon",6),K(),d(17,"svg",7)(18,"text",8),m(19,"Reset"),u()()()(),Ve(),d(20,"button",5),B("click",function(){return q(a),z(i.addTime(60))}),d(21,"mat-icon",6),K(),d(22,"svg",7)(23,"text",8),m(24,"+60s"),u()()()(),Ve(),d(25,"button",5),B("click",function(){return q(a),z(i.addTime(5))}),d(26,"mat-icon",6),K(),d(27,"svg",7)(28,"text",8),m(29,"+5s"),u()()()()(),Ve(),d(30,"div",10),G(31,Hp,2,0,"button",11),G(32,jp,2,0,"button",12),d(33,"button",13),B("click",function(){return q(a),z(i.roundToMin())}),m(34," Synch "),u()()()()}t&2&&(g(31),F(i.timerRunning()?-1:31),g(),F(i.timerRunning()?32:-1))},dependencies:[Ke,lt,Xe,ze],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.racetimer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.racetimer-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.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:0;height:23%;width:100%;padding:0 10px 10px;display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:flex-end;align-items:stretch;gap:10px}.timer-button-groups[_ngcontent-%COMP%]{min-width:247px;max-width:100%;--mat-button-filled-container-shape: 5px}.timer-adjusters-group[_ngcontent-%COMP%]{flex:1 1 auto;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;gap:10px;height:100%}.timer-countdown-group[_ngcontent-%COMP%]{flex-grow:1;flex-shrink:1}.timer-synch-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-left:5px}.timer-start-button[_ngcontent-%COMP%]{width:calc(50% - 5px);margin-right:5px}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.button[_ngcontent-%COMP%]{min-width:0px;height:100%;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}.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)}.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}"]})}return n})();var Yp=["canvasMainRef"],Sd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);canvas=A(je);canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;maxTextWidth=0;maxTextHeight=0;middle=0;center=0;fontSizeOffset=0;latPos="";longPos="";labelColor=w("");valueColor="";static DEFAULT_CONFIG={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};constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=Se(e.color,t);this.labelColor.set(i.dim),this.valueColor=i.color,this.draw()})}),R(()=>{let e=this.runtime.options();if(!e)return;let t=e.paths?.longPath;t?.path&&W(()=>this.streams.observe("longPath",i=>{let a=i?.data?.value;a==null?this.longPos="":t.convertUnitTo==="pdeg"?this.longPos=a.toFixed(6)+"\xB0":this.longPos=String(a),this.calculateFontSizeAndPositions(),this.draw()}))}),R(()=>{let e=this.runtime.options();if(!e)return;let t=e.paths?.latPath;t?.path&&W(()=>this.streams.observe("latPath",i=>{let a=i?.data?.value;a==null?this.latPos="":t.convertUnitTo==="pdeg"?this.latPos=a.toFixed(7)+"\xB0":this.latPos=String(a),this.calculateFontSizeAndPositions(),this.draw()}))})}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.calculateFontSizeAndPositions(),this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.calculateFontSizeAndPositions(),this.draw()}calculateFontSizeAndPositions(){if(!this.cssWidth||!this.cssHeight)return;this.maxTextHeight=Math.floor(this.cssHeight*.6/2),this.maxTextWidth=Math.floor(this.cssWidth*.85),this.center=this.cssWidth/2,this.middle=this.cssHeight*.57;let e=this.latPos.length>this.longPos.length?this.latPos:this.longPos;if(this.ctx){let t=this.canvas.calculateOptimalFontSize(this.ctx,e,this.maxTextWidth,this.maxTextHeight,"bold");this.fontSizeOffset=Math.floor(t*5e-4)}}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(e){if(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==e.displayName){let t=e.displayName||"Position";this.titleBitmap=this.canvas.createTitleBitmap(t,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=t}this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.canvas.drawText(this.ctx,this.latPos,this.center,this.middle-this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","bottom"),this.canvas.drawText(this.ctx,this.longPos,this.center,this.middle+this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","top")}}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-position"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Yp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"position-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.position-canvas[_ngcontent-%COMP%]{display:block;width:100%!important;height:100%!important;min-height:1px}"]})}return n})();var Qp=["canvasMainRef"],wd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);canvas=A(je);static DEFAULT_CONFIG={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0};canvasRef=ie.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;disposed=!1;fgColor=w("");bgColor=w("");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.fgColor.set(this.mapColor(e.color,t)),this.bgColor.set(this.mapColor(e.bgColor??"grey",t)),this.draw()})}),R(()=>{let e=this.runtime.options()?.displayName;W(()=>{e!==void 0&&this.draw()})})}mapColor(e,t){switch(e){case"contrast":return t.contrast;case"blue":return t.blue;case"green":return t.green;case"pink":return t.pink;case"orange":return t.orange;case"purple":return t.purple;case"grey":return t.grey;case"yellow":return t.yellow;default:return t.contrast}}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.draw()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.draw()}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options();if(!e)return;this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),e.noBgColor||this.canvas.drawRectangle(this.ctx,0,0,this.canvasElement.width,this.canvasElement.height,this.bgColor());let t=e.displayName||"";this.canvas.drawText(this.ctx,t,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2+10),this.cssWidth-40,this.cssHeight-40,"bold",this.fgColor())}ngOnDestroy(){this.disposed=!0;try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,Qp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"label-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.label-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block;border-radius:var(--mat-card-elevated-container-shape, var(--mat-sys-corner-medium))}"]})}return n})();var $p=["plainIframe"];function Zp(n,o){if(n&1&&H(0,"iframe",1,0),n&2){let e=I();Pi("src",e.widgetUrl(),pa)}}function Xp(n,o){n&1&&(_(0,"div",2)(1,"h2"),m(2,"Empty or bad URL"),k(),_(3,"p"),m(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),k(),_(5,"p"),m(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),k()())}var xd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);_dashboard=A(wt);_sanitizer=A(Za);static DEFAULT_CONFIG={widgetUrl:null,allowInput:!1};iframe=ie.required("plainIframe");widgetUrl=w(null);displayTransparentOverlay=w("block");constructor(){R(()=>{let e=this.runtime.options(),t=this._dashboard.isDashboardStatic();e&&W(()=>{t?this.displayTransparentOverlay.set(e.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}),R(()=>{let e=this.runtime.options()?.widgetUrl;this.widgetUrl.set(this.resolveUrl(e))}),window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){if(this.iframe()){this.iframe().nativeElement.onload=()=>this.injectSwipeScript();try{let e=this.iframe().nativeElement.contentDocument;e&&(e.readyState==="complete"||e.readyState==="interactive")&&this.injectSwipeScript()}catch{}}}ngOnDestroy(){window.removeEventListener("message",this.handleIframeGesture),this.iframe()&&(this.iframe().nativeElement.onload=null);try{let e=this.iframe()?.nativeElement.contentDocument;if(e){let t=`kip-gesture-inject-${this.id()}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}handleIframeGesture=e=>{if(!e.data)return;let t=e.data?.eventData?.instanceId||e.data?.keyEventData?.instanceId;if(!(!t||t!==this.id())){if(e.data.gesture)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let i=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(i);break}case"swiperight":{let i=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(i);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData){let{key:i,ctrlKey:a,shiftKey:r}=e.data.keyEventData,s=new KeyboardEvent("keydown",{key:i,ctrlKey:a,shiftKey:r,bubbles:!0,cancelable:!0});document.dispatchEvent(s)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[WidgetIframe] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.id()}`;if(t.getElementById(i))return;let a=go({instanceId:this.id()}),r=t.createElement("script");r.id=i,r.textContent=a,t.body.appendChild(r)}catch(i){console.warn("[WidgetIframe] Failed to inject swipe script into iframe:",i)}}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&te(i.iframe,$p,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:3,vars:3,consts:[["plainIframe",""],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(G(0,Zp,2,1,"iframe",1)(1,Xp,7,0,"div",2),H(2,"div",3)),t&2&&(F(i.widgetUrl()?0:1),g(2),re("display",i.displayTransparentOverlay()))},styles:["[_nghost-%COMP%]{overflow:hidden}.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 n})();var Kp=["hWrapper"];function Jp(n){return{Red:n.ColorDef.RED,Green:n.ColorDef.GREEN,Blue:n.ColorDef.BLUE,Orange:n.ColorDef.ORANGE,Yellow:n.ColorDef.YELLOW,Cyan:n.ColorDef.CYAN,Magenta:n.ColorDef.MAGENTA,White:n.ColorDef.WHITE,Gray:n.ColorDef.GRAY,Black:n.ColorDef.BLACK,Raith:n.ColorDef.RAITH,"Green LCD":n.ColorDef.GREEN_LCD,"JUG Green":n.ColorDef.JUG_GREEN}}function eg(n){return{blackMetal:n.FrameDesign.BLACK_METAL,metal:n.FrameDesign.METAL,shinyMetal:n.FrameDesign.SHINY_METAL,brass:n.FrameDesign.BRASS,steel:n.FrameDesign.STEEL,chrome:n.FrameDesign.CHROME,gold:n.FrameDesign.GOLD,anthracite:n.FrameDesign.ANTHRACITE,tiltedGray:n.FrameDesign.TILTED_GRAY,tiltedBlack:n.FrameDesign.TILTED_BLACK,glossyMetal:n.FrameDesign.GLOSSY_METAL}}var _d=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={displayName:"Horizon",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};wrapperRef=ie("hWrapper");resizeObserver=null;currentSize=0;structuralKey="";pendingSize=null;sizeCommitTimer=null;SIZE_STABLE_MS=180;ngZone=A(We);gaugeOptions={};gauge=null;latestPitch=0;latestRoll=0;constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugePitchPath?.path||W(()=>this.streams.observe("gaugePitchPath",i=>{let a=i?.data?.value??0;if(this.latestPitch=a,this.gauge){let r=e.gauge?.invertPitch?-a:a;try{this.gauge.setPitchAnimated(r)}catch{}}}))}),R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugeRollPath?.path||W(()=>this.streams.observe("gaugeRollPath",i=>{let a=i?.data?.value??0;if(this.latestRoll=a,this.gauge){let r=e.gauge?.invertRoll?-a:a;try{this.gauge.setRollAnimated(r)}catch{}}}))}),R(()=>{let e=this.runtime.options();if(!e)return;let t=`${e.gauge?.noFrameVisible??!1}|${e.gauge?.faceColor??"anthracite"}`;if(t===this.structuralKey){this.applyInversions(e);return}this.structuralKey=t,this.currentSize>=50&&(this.buildOptions(e,this.currentSize),this.rebuildGauge())})}ngAfterViewInit(){let e=this.wrapperRef()?.nativeElement;if(!e)return;let t=()=>{if(this.pendingSize==null||this.pendingSize===this.currentSize||this.pendingSize<50)return;let r=this.pendingSize,s=this.runtime.options();if(!s)return;this.currentSize=r;let h=document.getElementById(this.id()+"-canvas");h&&((h.width!==r||h.height!==r)&&(h.width=r,h.height=r),h.style.width=r+"px",h.style.height=r+"px"),this.buildOptions(s,r),this.rebuildGauge(),this.pendingSize=null},i=()=>{this.sizeCommitTimer&&clearTimeout(this.sizeCommitTimer),this.sizeCommitTimer=window.setTimeout(()=>{t(),this.sizeCommitTimer=null},this.SIZE_STABLE_MS)},a=()=>{let r=e.getBoundingClientRect(),s=Math.round(Math.min(r.width,r.height)),h=this.pendingSize??this.currentSize;if(!s||s<50||h&&Math.abs(h-s)<4)return;if(this.currentSize===0&&this.pendingSize===null){this.pendingSize=s,t();return}this.pendingSize=s;let f=document.getElementById(this.id()+"-canvas");f&&(f.style.width=s+"px",f.style.height=s+"px"),i()};this.ngZone.runOutsideAngular(()=>{this.resizeObserver=new ResizeObserver(()=>a()),this.resizeObserver.observe(e),a()})}buildOptions(e,t){if(typeof steelseries>"u")return;let i=eg(steelseries),a=Jp(steelseries);this.gaugeOptions={pointerColor:a.Red,frameVisible:!(e.gauge?.noFrameVisible??!1),frameDesign:i[e.gauge?.faceColor??"anthracite"],foregroundVisible:!1,size:t}}rebuildGauge(){let e=this.id()+"-canvas";if(this.gauge)try{this.gauge=null}catch{}let t=document.getElementById(e);if(t){this.currentSize&&(t.width!==this.currentSize||t.height!==this.currentSize)&&(t.width=this.currentSize,t.height=this.currentSize);let i=t.getContext("2d");i&&i.clearRect(0,0,t.width,t.height)}try{this.gauge=new steelseries.Horizon(e,this.gaugeOptions);let i=this.runtime.options();i&&this.gauge&&this.applyInversions(i)}catch{}}applyInversions(e){if(this.gauge){try{this.gauge.setPitchAnimated(e.gauge?.invertPitch?-this.latestPitch:this.latestPitch)}catch{}try{this.gauge.setRollAnimated(e.gauge?.invertRoll?-this.latestRoll:this.latestRoll)}catch{}}}ngOnDestroy(){if(this.resizeObserver){try{this.resizeObserver.disconnect()}catch{}this.resizeObserver=null}this.sizeCommitTimer&&(clearTimeout(this.sizeCommitTimer),this.sizeCommitTimer=null);let e=document.getElementById(this.id()+"-canvas");if(e)try{let t=e.getContext("2d");t&&t.clearRect(0,0,e.width,e.height),e.width=0,e.height=0}catch{}this.gauge=null}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-horizon"]],viewQuery:function(t,i){t&1&&te(i.wrapperRef,Kp,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:4,vars:3,consts:[["hWrapper",""],[1,"canvas-wrap"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(_(0,"div",1,0)(2,"canvas",2),m(3," Browser does not support canvas element. "),k()()),t&2&&(re("padding",i.gaugeOptions.frameVisible?"10px":"0px"),g(2),Pi("id",i.id()+"-canvas"))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:static;transform:none}"]})}return n})();var tg=["finePath"],ig=["coarsePath"];function ng(n,o){if(n&1&&(K(),H(0,"line")),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function ag(n,o){if(n&1&&(K(),H(0,"line",20)),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function og(n,o){if(n&1&&(K(),_(0,"text"),m(1),k()),n&2){let e=o.$implicit;Y("x",e.x)("y",e.y),g(),ye("",e.text,"\xB0")}}function rg(n,o){if(n&1&&(K(),H(0,"line")),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function sg(n,o){if(n&1&&(K(),H(0,"line",20)),n&2){let e=o.$implicit;Y("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function lg(n,o){if(n&1&&(K(),_(0,"text"),m(1),k()),n&2){let e=o.$implicit;Y("x",e.x)("y",e.y),g(),ye("",e.text,"\xB0")}}var Md=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);ngZone=A(We);finePathRef=ie("finePath");coarsePathRef=ie("coarsePath");angleDeg=w(0);absAngle=se(()=>{let e=this.angleDeg();return e==null?null:Math.abs(e)});angleSide=se(()=>{let e=this.angleDeg();if(e==null)return"";let t=e>0?"Stbd":e<0?"Port":"Level";return this.runtime.options()?.gauge?.sideLabel?t:""});displayValue=se(()=>{let e=this.absAngle();if(e==null)return"--";let t=this.runtime.options()?.numDecimal??1;return e.toFixed(t)});themeColorValue=w("contrast");ready=w(!1);pointerTransition=se(()=>{let e=this.runtime.options()?.paths?.angle?.sampleTime??1e3;return`transform ${Math.max(100,e*.95)}ms ease-in-out`});fineTicks=w([]);fineInnerTicks=w([]);fineLabels=w([]);coarseTicks=w([]);coarseInnerTicks=w([]);coarseLabels=w([]);finePointerTransform=this.makePointerTransform("fine");coarsePointerTransform=this.makePointerTransform("coarse");displayName=se(()=>this.runtime.options()?.displayName||"Heel");static DEFAULT_CONFIG={displayName:"Heel",filterSelfPaths:!0,paths:{angle:{description:"Heel / Roll / Other Angle",path:"self.navigation.attitude.roll",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"deg",sampleTime:1e3,pathRequired:!0}},gauge:{type:"angle",invertAngle:!1,sideLabel:!0},numInt:2,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5};constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.angle?.path||W(()=>this.streams.observe("angle",i=>{let a=i?.data?.value;if(a==null){this.angleDeg.set(null);return}let r=e.gauge?.invertAngle?-a:a;this.angleDeg.set(r)}))}),R(()=>{let e=this.theme(),t=this.runtime.options();!e||!t||this.themeColorValue.set(Se(t.color||"contrast",e).color)})}ngAfterViewInit(){this.ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{let e=this.finePathRef()?.nativeElement,t=this.coarsePathRef()?.nativeElement;if(e){let i=this.buildScale(e,-5,5,1,.5);this.fineTicks.set(i.ticks),this.fineInnerTicks.set(i.innerTicks),this.fineLabels.set(i.labels)}if(t){let i=this.buildScale(t,-40,40,10,5);this.coarseTicks.set(i.ticks),this.coarseInnerTicks.set(i.innerTicks),this.coarseLabels.set(i.labels)}this.angleDeg()==null&&this.angleDeg.set(0),this.ready.set(!0)})})}makePointerTransform(e){return se(()=>this.computePointerTransform(this.angleDeg(),e))}setColors(e){let t=this.runtime.options();!e||!t||this.themeColorValue.set(Se(t.color||"contrast",e).color)}computePointerTransform(e,t){let i=e??0,a=t==="fine"?this.finePathRef()?.nativeElement:this.coarsePathRef()?.nativeElement;if(!a)return t==="fine"?"translate(200px, 20px) rotate(0deg)":"translate(200px, 10px) rotate(0deg)";let r=t==="fine"?{min:-5,max:5}:{min:-40,max:40},s=Math.max(r.min,Math.min(r.max,i)),h=a.getTotalLength(),b=(s-r.min)/(r.max-r.min)*h,C=a.getPointAtLength(b),M=b<10||b>h-10?5:1,N=a.getPointAtLength(Math.max(0,b-M)),D=a.getPointAtLength(Math.min(h,b+M)),j=D.x-N.x,X=D.y-N.y,Z=Math.atan2(X,j)*180/Math.PI,ee=Math.hypot(j,X)||1,be=-X/ee,Oe=j/ee,Te=-10,Ye=C.x+be*Te,Ee=C.y+Oe*Te;return`translate(${Ye}px, ${Ee}px) rotate(${Z}deg)`}buildScale(e,t,i,a,r){let s=e.getTotalLength(),h=[],f=[],b=[],C=i-t,M=Math.round(C/r),N=Math.round(a/r);for(let D=0;D<=M;D++){let j=t+D*r,X=D/M,Z=D===M?s:X*s,ee=e.getPointAtLength(Z),be=e.getPointAtLength(Math.max(0,Z-1)),Oe=e.getPointAtLength(Math.min(s,Z+1)),Te=Math.atan2(Oe.y-be.y,Oe.x-be.x)*180/Math.PI,Ye=D%N===0||Math.abs(j)<1e-9,Ee=Ye?8:4,Le=Ye?6:3,pe=this.pointFromAngle(ee,Te+90,0),He=this.pointFromAngle(ee,Te+90,Ee);h.push({x1:pe.x,y1:pe.y,x2:He.x,y2:He.y,major:Ye});let bt=this.pointFromAngle(ee,Te-90,0),tt=this.pointFromAngle(ee,Te-90,Le);if(f.push({x1:bt.x,y1:bt.y,x2:tt.x,y2:tt.y,major:Ye}),Ye){let ot=this.pointFromAngle(ee,Te+90,Ee+8);b.push({x:ot.x,y:ot.y,text:`${Math.abs(j)}`,value:j})}}return{ticks:h,innerTicks:f,labels:b}}pointFromAngle(e,t,i){let a=t*Math.PI/180;return{x:e.x+Math.cos(a)*i,y:e.y+Math.sin(a)*i}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-heel-gauge"]],viewQuery:function(t,i){t&1&&(te(i.finePathRef,tg,5),te(i.coarsePathRef,ig,5)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:54,vars:18,consts:[["finePath",""],["coarsePath",""],[1,"container"],["viewBox","0 0 400 105","preserveAspectRatio","xMidYMid meet",1,"flex-element","scale","fine"],["id","fineTubeGradient","x1","0%","y1","0%","x2","0%","y2","100%"],["offset","0%",1,"tube-highlight-color","opacity1"],["offset","45%",1,"tube-highlight-color","opacity2"],["offset","100%",1,"tube-highlight-color","opacity3"],["id","tubeEffect"],["in","SourceAlpha","stdDeviation","1.5","result","blur"],["in","blur","surfaceScale","4","specularConstant",".6","specularExponent","30","lighting-color","currentColor","result","specular"],["x","200","y","-50","z","150"],["x","200","y","150","z","80"],["in","specular","in2","SourceAlpha","operator","in","result","specular"],["in","SourceGraphic","in2","specular","operator","arithmetic","k1","0","k2","1","k3","0.7","k4","0"],["d","M 60,10 A 2400,2400 0 0,0 340,10 A 10,10 0 0,1 340,30 A 2400,2400 0 0,1 60,30 A 10,10 0 0,1 60,10 Z",1,"tube-background"],["d","M 60,11 A 2400,2400 0 0,0 340,11 A 8,8 0 0,1 340,17 A 2400,2400 0 0,1 60,17 A 8,8 0 0,1 60,11 Z",1,"tube-highlight"],["d","M 60,23 A 2400,2400 0 0,0 340,23 A 8,8 0 0,1 340,26 A 2400,2400 0 0,1 60,26 A 8,8 0 0,1 60,23 Z",1,"tube-highlight-secondary"],["d","M 60,30 A 2400,2400 0 0,0 340,30",1,"scale-line"],[1,"tick-marks"],["opacity","0.6"],[1,"scale-values"],["transform","translate(200 20) rotate(0)",1,"pointer"],["rx","6","ry","9"],["x","200","y","93","text-anchor","middle",1,"brand"],["viewBox","0 0 400 115","preserveAspectRatio","xMidYMid meet",1,"flex-element","scale"],["transform","translate(0,15)"],["x","200","y","22","text-anchor","middle",1,"angle"],["dx","-16",1,"side"],["d","M 40,0 A 400,400 0 0,0 360,0 A 10,10 0 0,1 360,20 A 400,400 0 0,1 40,20 A 10,10 0 0,1 40,0 Z",1,"tube-background"],["d","M 40,1 A 400,400 0 0,0 360,1 A 8,8 0 0,1 360,7 A 400,400 0 0,1 40,7 A 8,8 0 0,1 40,1 Z",1,"tube-highlight"],["d","M 40,13 A 400,400 0 0,0 360,13 A 8,8 0 0,1 360,16 A 400,400 0 0,1 40,16 A 8,8 0 0,1 40,13 Z",1,"tube-highlight-secondary"],["d","M 40,20 A 400,400 0 0,0 360,20",1,"scale-line"],["transform","translate(200 10) rotate(0)",1,"pointer"]],template:function(t,i){t&1&&(_(0,"div",2),K(),_(1,"svg",3)(2,"defs")(3,"linearGradient",4),H(4,"stop",5)(5,"stop",6)(6,"stop",7),k(),_(7,"filter",8),H(8,"feGaussianBlur",9),_(9,"feSpecularLighting",10),H(10,"fePointLight",11)(11,"fePointLight",12),k(),H(12,"feComposite",13)(13,"feComposite",14),k()(),H(14,"path",15)(15,"path",16)(16,"path",17)(17,"path",18,0),_(19,"g",19),ue(20,ng,1,5,":svg:line",null,Me),k(),_(22,"g",19),ue(23,ag,1,5,":svg:line",20,Me),k(),_(25,"g",21),ue(26,og,2,3,":svg:text",null,Me),k(),_(28,"g",22),H(29,"ellipse",23),k(),_(30,"text",24),m(31),k()(),_(32,"svg",25)(33,"g",26)(34,"text",27),m(35),_(36,"tspan",28),m(37),k()(),H(38,"path",29)(39,"path",30)(40,"path",31)(41,"path",32,1),_(43,"g",19),ue(44,rg,1,5,":svg:line",null,Me),k(),_(46,"g",19),ue(47,sg,1,5,":svg:line",20,Me),k(),_(49,"g",21),ue(50,lg,2,3,":svg:text",null,Me),k(),_(52,"g",33),H(53,"ellipse",23),k()()()()),t&2&&(g(20),he(i.fineTicks()),g(3),he(i.fineInnerTicks()),g(3),he(i.fineLabels()),g(2),re("transition",i.ready()?i.pointerTransition():"none")("transform",i.finePointerTransform()),Je("ready",i.ready()),g(),Y("fill",i.themeColorValue()),g(2),ne(i.displayName()),g(3),Y("fill",i.themeColorValue()),g(),ye(" ",i.displayValue(),"\xB0 "),g(2),ne(i.angleSide()),g(7),he(i.coarseTicks()),g(3),he(i.coarseInnerTicks()),g(3),he(i.coarseLabels()),g(2),re("transition",i.ready()?i.pointerTransition():"none")("transform",i.coarsePointerTransform()),Je("ready",i.ready()),g(),Y("fill",i.themeColorValue()))},styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;font-family:Roboto}.container[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:center;height:100%;width:100%;box-sizing:border-box;gap:0px}.brand[_ngcontent-%COMP%]{font-size:25px;font-weight:700;fill:var(--kip-contrast-dim-color)}.angle[_ngcontent-%COMP%]{font-size:50px;font-weight:700}.side[_ngcontent-%COMP%]{font-size:16px}svg.scale[_ngcontent-%COMP%]{width:100%;height:auto}svg.scale[_ngcontent-%COMP%] .tube-background[_ngcontent-%COMP%]{fill:var(--mat-sys-surface-container);filter:url(#tubeEffect)}svg.scale[_ngcontent-%COMP%] .tube-highlight[_ngcontent-%COMP%]{fill:url(#fineTubeGradient);opacity:.15;mix-blend-mode:soft-light;transition:fill .3s ease,opacity .3s ease}svg.scale[_ngcontent-%COMP%] .tube-highlight-secondary[_ngcontent-%COMP%]{fill:url(#fineTubeGradient);opacity:.2;mix-blend-mode:overlay;transition:fill .3s ease,opacity .3s ease}.tube-highlight-color[_ngcontent-%COMP%]{stop-color:var(--kip-contrast-color)}.opacity1[_ngcontent-%COMP%]{stop-opacity:.12}.opacity2[_ngcontent-%COMP%]{stop-opacity:.05}.opacity3[_ngcontent-%COMP%]{stop-opacity:0}svg.scale[_ngcontent-%COMP%] .scale-line[_ngcontent-%COMP%]{stroke:none;fill:none}.tick-marks[_ngcontent-%COMP%]{stroke:var(--kip-contrast-dim-color)}.scale-values[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);text-anchor:middle;dominant-baseline:hanging;font-size:12;font-weight:700}.pointer[_ngcontent-%COMP%] ellipse[_ngcontent-%COMP%]{stroke:#ffffff59;stroke-width:.7;paint-order:stroke fill;filter:drop-shadow(0 0 1px rgba(0,0,0,.55)) drop-shadow(0 1px 1.5px rgba(0,0,0,.55)) drop-shadow(0 -1px 1px rgba(255,255,255,.25));transition:filter .25s,stroke .25s}"]})}return n})();var dg=["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 dr={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},cr={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},kd=(()=>{class n{unitsService=A(at);canvasService=A(je);canvasRef=ie("gaugeCanvas");widgetUUID=v(void 0);subType=v(void 0);barGauge=v(void 0);radialSize=v(void 0);backgroundColor=v(void 0);frameColor=v(void 0);minValue=v(void 0);maxValue=v(void 0);decimals=v(void 0);zones=v(void 0);title=v(void 0);units=v(void 0);value=v(void 0);theme=v(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=[],a=[],r=[...t].sort((s,h)=>s.lower-h.lower);for(let s of r){let h=null,f=null,b;switch(s.state){case ce.Emergency:b=this.theme().zoneEmergency;break;case ce.Alarm:b=this.theme().zoneAlarm;break;case ce.Warn:b=this.theme().zoneWarn;break;case ce.Alert:b=this.theme().zoneAlert;break;case ce.Nominal:b=this.theme().zoneNominal;break;default:b="rgba(0,0,0,0)"}let C=this.units();if(C=="ratio"?(h=s.lower,f=s.upper):(h=this.unitsService.convertToUnit(C,s.lower),f=this.unitsService.convertToUnit(C,s.upper)),!(f<this.minValue()||h>this.maxValue())){if(h=h!==null?h:this.minValue(),f=f!==null?f:this.maxValue(),h=Math.max(h,this.minValue()),f>this.maxValue()){f=this.maxValue(),i.push(steelseries.Section(h,f,b));break}i.push(steelseries.Section(h,f,b))}}this.gaugeOptions.section=i,this.gaugeOptions.area=a,this.gaugeOptions.useSectionColors=!0}dr[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=dr[this.backgroundColor()]),cr[this.frameColor()]&&(this.gaugeOptions.frameDesign=cr[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 a=this.subType();a==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):a==="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.floor(Math.min(e.contentRect.height,e.contentRect.width));this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),a=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=a,t=`linear:${i}x${a}`}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(dr[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(cr[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(){if(this.gauge&&this.gauge.setValue){let t=this.gauge.getValue?this.gauge.getValue():this.value();this.gauge.setValue(t)}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||n)};static \u0275cmp=L({type:n,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&te(i.canvasRef,dg,5),t&2&&me()},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:[Qt],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let a=ae();d(0,"div",1),B("onResize",function(s){return q(a),z(i.onResized(s))}),d(1,"canvas",2,0),m(3," Browser does not support canvas element. "),u()()}t&2&&(g(),T("id",ci(i.widgetUUID())))},dependencies:[Pt,ai],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return n})();var Td=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(oi);static DEFAULT_CONFIG={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};dataValue=w(0);zones=w([]);displayName=se(()=>this.runtime.options()?.displayName||"Gauge Label");constructor(){R(()=>{let e=this.runtime.options();!e||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",i=>{let a=i?.data?.value,r=e.displayScale?.lower??0,s=e.displayScale?.upper??r+100;if(a==null)this.dataValue.set(r);else{let h=Math.min(Math.max(a,r),s);this.dataValue.set(h)}}))}),R(()=>{let e=this.runtime.options();if(!e)return;if(e.ignoreZones){this.zones.set([]);return}if(!e.paths?.gaugePath?.path){this.zones.set([]);return}W(()=>this.metadata.observe("gaugePath")),this.zones.set(this.metadata.zones())})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-steel"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:14,consts:[[1,"wrapper"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){if(t&1&&(d(0,"div",0),U(1,"gauge-steel",1),u()),t&2){let a,r,s,h,f,b,C,M,N;g(),T("widgetUUID",i.id())("subType",(a=i.runtime.options())==null||a.gauge==null?null:a.gauge.subType)("barGauge",(r=i.runtime.options())==null||r.gauge==null?null:r.gauge.digitalMeter)("radialSize",(s=i.runtime.options())==null||s.gauge==null?null:s.gauge.radialSize)("backgroundColor",(h=i.runtime.options())==null||h.gauge==null?null:h.gauge.backgroundColor)("frameColor",(f=i.runtime.options())==null||f.gauge==null?null:f.gauge.faceColor)("minValue",(b=i.runtime.options())==null||b.displayScale==null?null:b.displayScale.lower)("maxValue",(C=i.runtime.options())==null||C.displayScale==null?null:C.displayScale.upper)("decimals",(M=i.runtime.options())==null?null:M.numDecimal)("zones",i.zones())("title",i.displayName())("units",(N=i.runtime.options())==null||N.paths==null||N.paths.gaugePath==null?null:N.paths.gaugePath.convertUnitTo)("value",i.dataValue())("themeColors",i.theme())}},dependencies:[kd],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 n})();var en=Zr(mr(),1),Id=Zr(mr(),1);var cg=["gauge"],mg=n=>n.replace(/(\-\w)/g,o=>o[1].toUpperCase()),ug=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ed=n=>mg(n),Dd=(()=>{class n{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=Ed(t.name);e[i]=en.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=en.DomObserver.parse(i);else{let a=ug(t);this.el.nativeElement.setAttribute(a,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[Ed(i.attributeName)]=en.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||n)(di(Ie),di(We))};static \u0275dir=st({type:n,viewQuery:function(t,i){if(t&1&&$t(cg,7),t&2){let a;Ct(a=St())&&(i.canvas=a.first)}},inputs:{options:"options",value:"value"}})}return n})();var Pd=(()=>{class n extends Dd{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new en.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(di(Ie),di(We))};static \u0275cmp=L({type:n,selectors:[["linear-gauge"]],features:[ga],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&U(0,"canvas",null,0)},encapsulation:2})}return n})();var Do=(()=>{class n extends Dd{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new en.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(di(Ie),di(We))};static \u0275cmp=L({type:n,selectors:[["radial-gauge"]],features:[ga],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&U(0,"canvas",null,0)},encapsulation:2})}return n})(),ia=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({})}return n})();function Po(n,o,e=!1){let t=[],i=o-n,a=0,r=10;i=Od(o-n,!1),a=Od(i/(r-1),!0);let s=Math.floor(n/a)*a,h=Math.ceil(o/a)*a;t.push(s);let f=i/a;for(let b=0;b<f;b++)if(t[b]<h){let C=(Number(t[b].toFixed(2))*100+Number(a.toFixed(2))*100)/100;t.push(C)}if(t[t.length-1]!==h&&t.push(h),e){let b=[...t].reverse();return{min:s,max:h,majorTicks:b}}return{min:s,max:h,majorTicks:t}}function Od(n,o){let e=Math.floor(Math.log10(n)),t=n/Math.pow(10,e),i=null;return o?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)}var Rd=["radialGauge"],Nd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(oi);unitsService=A(at);static DEFAULT_CONFIG={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",highlightsWidth:5,scaleStart:180,barStartPosition:"left",enableTicks:!0,enableProgressbar:!0,enableNeedle:!0},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1};LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=ie("radialGauge");gauge=ie("radialGauge",{read:Ie});value=w(0);textValue=w("");colorStrokeTicks=w("");adjustedScale=se(()=>{let e=this.runtime.options();return e?e.gauge?.subType==="capacity"?{min:e.displayScale?.lower??0,max:e.displayScale?.upper??100,majorTicks:[]}:Po(e.displayScale?.lower??0,e.displayScale?.upper??100,e.gauge?.barStartPosition==="right"):{min:0,max:100,majorTicks:[]}});highlights=se(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return[];if(e.ignoreZones)return[];if(e.gauge?.subType!=="measuring")return[];let i=this.metadata.zones();if(!i?.length)return[];let a=e.paths?.gaugePath;if(!a)return[];let r=this.adjustedScale(),s=e.gauge?.barStartPosition==="right";return this.state=ce.Normal,ta(i,t,a.convertUnitTo,this.unitsService,r.min,r.max,s)});displayName=se(()=>this.runtime.options()?.displayName);state=ce.Normal;viewReady=w(!1);gaugeOptions={};constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(e.displayScale?.lower??0),this.textValue.set("--");else{let h=e.displayScale?.lower??0,f=e.displayScale?.upper??h+100,b=Math.min(Math.max(r,h),f);this.value.set(b),this.textValue()==="--"&&this.textValue.set("")}let s=a?.state??ce.Normal;if(s!==this.state&&(this.state=s,!e.ignoreZones&&this.ngGauge())){let h={};switch(s){case ce.Alarm:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneAlarm,h.colorValueText=t.zoneAlarm;break;case ce.Warn:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneWarn,h.colorValueText=t.zoneWarn;break;case ce.Alert:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=t.zoneAlert,h.colorValueText=t.zoneAlert;break;default:h.colorBorderMiddle=t.cardColor,h.colorBarProgress=e.gauge?.subType==="measuring"?Se(e.color,t).color:Se(e.color,t).dim,h.colorValueText=Se(e.color,t).color}try{this.ngGauge()?.update(h)}catch{}}}))}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||W(()=>this.metadata.observe("gaugePath"))}),R(()=>{let e=this.runtime.options(),t=this.highlights();if(e&&this.viewReady())try{if(!t.length)this.ngGauge()?.update({highlights:[]});else{let i=JSON.stringify(t);this.ngGauge()?.update({highlights:i,highlightsWidth:e.gauge?.highlightsWidth})}}catch{}}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.adjustedScale();if(!(!e||!t)&&(this.buildGaugeOptions(e,t,i),this.viewReady()))try{this.ngGauge()?.update(this.gaugeOptions)}catch{}})}buildGaugeOptions(e,t,i){let a=this.gaugeOptions={};a.title=this.displayName(),a.minValue=i.min,a.maxValue=i.max,a.units=e.paths?.gaugePath?.convertUnitTo,a.highlights=[];let r=this.highlights();r.length&&(a.highlights=JSON.stringify(r),a.highlightsWidth=e.gauge?.highlightsWidth),a.fontTitle="Roboto",a.fontTitleWeight="bold",a.fontUnits="Roboto",a.fontUnitsSize=25,a.fontUnitsWeight="normal",a.barStrokeWidth=0,a.barShadow=0,a.colorBarStroke="",a.fontValue="Roboto",a.fontValueWeight="bold",a.valueTextShadow=!1,a.colorValueBoxShadow="",a.fontNumbers="Roboto",a.fontNumbersWeight="bold",a.valueInt=e.numInt??1,a.valueDec=e.numDecimal??2,a.majorTicksInt=a.valueInt,a.majorTicksDec=a.valueDec,a.highlightsWidth=e.gauge?.highlightsWidth,a.animation=!0,a.animateOnInit=!1,a.animatedValue=!1,a.animationRule="linear";let s=e.paths?.gaugePath?.sampleTime??500;a.animationDuration=s-25,a.colorBorderShadow=!1,a.colorBorderOuter=t.cardColor,a.colorBorderOuterEnd="",a.colorBorderMiddle=t.cardColor,a.colorBorderMiddleEnd="",a.colorPlate=a.colorPlateEnd=t.cardColor,a.colorBar=t.background,a.barProgress=e.gauge?.enableProgressbar,a.colorBarProgress=Se(e.color,t).color,a.colorNeedle=Se(e.color,t).color,a.colorNeedleEnd=Se(e.color,t).color,a.needleShadow=!0,a.colorNeedleShadowUp="black",a.colorNeedleShadowDown="black",a.colorNeedleCircleInner=a.colorPlate,a.colorNeedleCircleInnerEnd=a.colorPlate,a.colorNeedleCircleOuter=a.colorPlate,a.colorNeedleCircleOuterEnd=a.colorPlate,a.colorTitle=t.contrastDim,a.colorUnits=t.contrastDim,a.colorValueText=Se(e.color,t).color,this.colorStrokeTicks.set(t.contrastDim),a.colorMinorTicks=t.contrastDim,a.animationTarget=this.ANIMATION_TARGET_NEEDLE,a.useMinPath=!1,e.gauge?.subType==="capacity"?(a.fontTitleSize=40,a.valueBox=!0,a.fontValueSize=60,a.valueBoxWidth=10,a.valueBoxBorderRadius=5,a.valueBoxStroke=0,a.colorValueBoxBackground="",a.colorMajorTicks=a.colorPlate,a.colorNumbers=a.colorMinorTicks="",a.barWidth=20,a.colorBarProgress=Se(e.color,t).dim,a.needle=e.gauge.enableNeedle,a.needleType=this.LINE,a.needleWidth=2,a.needleStart=75,a.needleEnd=95,a.needleCircleSize=1,a.needleCircleInner=!1,a.needleCircleOuter=!1,a.ticksAngle=360,a.startAngle=e.gauge?.scaleStart||180,a.majorTicks=0,a.exactTicks=!0,a.strokeTicks=!1,a.minorTicks=0,a.numbersMargin=0,a.fontNumbersSize=0,a.borders=!0,a.borderOuterWidth=2,a.borderMiddleWidth=1,a.borderInnerWidth=0,a.borderShadowWidth=0):(a.fontTitleSize=24,a.barWidth=15,a.valueBox=!0,a.fontValueSize=60,a.valueBoxWidth=100,a.valueBoxBorderRadius=0,a.valueBoxStroke=0,a.colorValueBoxBackground="",a.needle=e.gauge.enableNeedle,a.needleType=this.LINE,a.needleWidth=2,a.needleStart=0,a.needleEnd=95,a.needleCircleSize=10,a.needleCircleInner=!1,a.needleCircleOuter=!1,a.ticksAngle=270,a.startAngle=45,a.barStartPosition=e.gauge?.barStartPosition||"left",e.gauge.enableTicks?(a.strokeTicks=!0,a.majorTicks=i.majorTicks,a.minorTicks=2,a.exactTicks=!1,a.numbersMargin=3,a.fontNumbersSize=15,a.colorMajorTicks=t.contrastDim,a.colorNumbers=t.contrastDim):(a.strokeTicks=!1,a.majorTicks=0,a.minorTicks=0,a.exactTicks=!0,a.numbersMargin=0,a.fontNumbersSize=0,a.colorMajorTicks=a.colorPlate,a.colorNumbers=a.colorMinorTicks=""),a.borders=!0,a.borderOuterWidth=2,a.borderMiddleWidth=1,a.borderInnerWidth=0,a.borderShadowWidth=0,a.animationTarget=this.ANIMATION_TARGET_NEEDLE,a.useMinPath=!1)}setCanvasSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i={height:t.height,width:t.width};try{this.ngGauge()?.update(i)}catch{}}ngAfterViewInit(){this.viewReady.set(!0),this.setCanvasSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}onResized(e){let t={height:e.contentRect.height,width:e.contentRect.width};try{this.ngGauge()?.update(t)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Rd,5),te(i.gauge,Rd,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:3,consts:[["radialGauge",""],[3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"radial-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue()))},dependencies:[Pt,ai,ia,Do],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%} 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 n})();var Vd=["linearGauge"],Wd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);metadata=A(oi);unitsService=A(at);static DEFAULT_CONFIG={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",highlightsWidth:5,enableTicks:!0,enableNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1};ngGauge=ie("linearGauge");gauge=ie("linearGauge",{read:Ie});textValue=w("--");value=w(0);gaugeOptions={};viewReady=w(!1);currentState=w(ce.Normal);adjustedScale=se(()=>{let e=this.runtime.options();return e?e.gauge?.enableTicks?Po(e.displayScale.lower,e.displayScale.upper):{min:e.displayScale.lower,max:e.displayScale.upper,majorTicks:[]}:{min:0,max:100,majorTicks:[]}});highlights=se(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return[];if(e.ignoreZones)return[];let i=this.metadata.zones();if(!i?.length)return[];let a=e.paths?.gaugePath;return a?ta(i,t,a.convertUnitTo,this.unitsService,this.adjustedScale().min,this.adjustedScale().max):[]});displayName=se(()=>this.runtime.options()?.displayName||"Gauge Label");constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||!e.paths?.gaugePath?.path||W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(e.displayScale.lower),this.textValue.set("--");else{let s=Math.min(Math.max(r,e.displayScale.lower),e.displayScale.upper);this.value.set(s),this.textValue()==="--"&&this.textValue.set("")}a.state!==this.currentState()&&this.currentState.set(a.state)}))}),R(()=>{let e=this.runtime.options();!e||e.ignoreZones||W(()=>this.metadata.observe("gaugePath"))}),R(()=>{let e=this.runtime.options(),t=this.highlights();e&&this.viewReady()&&W(()=>{try{if(!t.length)this.ngGauge()?.update({highlights:[]});else{let i=JSON.stringify(t);this.ngGauge()?.update({highlights:i,highlightsWidth:e.gauge?.highlightsWidth})}}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.adjustedScale();!e||!t||W(()=>{if(this.buildGaugeOptions(e,t,i),this.viewReady())try{this.ngGauge()?.update(this.gaugeOptions),this.applyInitialSize()}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.currentState();!e||!t||e.ignoreZones||this.viewReady()&&W(()=>{let a={},r=e.gauge?.enableNeedle,s=Se(e.color,t);switch(i){case ce.Alarm:r?(a.colorNeedle=t.zoneAlarm,a.colorValueText=t.zoneAlarm):(a.colorBarProgress=t.zoneAlarm,a.colorValueText=t.zoneAlarm);break;case ce.Warn:r?(a.colorNeedle=t.zoneWarn,a.colorValueText=t.zoneWarn):(a.colorBarProgress=t.zoneWarn,a.colorValueText=t.zoneWarn);break;case ce.Alert:r?(a.colorNeedle=t.zoneAlert,a.colorValueText=t.zoneAlert):(a.colorBarProgress=t.zoneAlert,a.colorValueText=t.zoneAlert);break;default:r?(a.colorNeedle=s.color,a.colorValueText=s.color):(a.colorBarProgress=s.color,a.colorValueText=s.color)}try{this.ngGauge()?.update(a)}catch{}})})}buildGaugeOptions(e,t,i){let a=this.gaugeOptions={},r=e.gauge?.subType==="vertical",s=e.gauge?.enableNeedle,h=e.gauge?.enableTicks;a.minValue=i.min,a.maxValue=i.max,a.valueInt=e.numInt??1,a.valueDec=e.numDecimal??2,a.title=this.displayName(),a.fontTitleSize=40,a.fontTitle="Roboto",a.fontTitleWeight="bold",a.barLength=r?80:90,a.barWidth=h?s?0:30:60,a.barProgress=!0,a.barBeginCircle=0,a.barStrokeWidth=0,a.barShadow=0,a.needle=!!s,a.needleType=s?"arrow":"line",a.needleStart=s?r?200:155:-45,a.needleEnd=s?r?175:180:55,a.needleShadow=!0,a.needleSide="both",a.units=e.paths?.gaugePath?.convertUnitTo,a.fontUnits="Roboto",a.fontUnitsWeight="normal",a.borders=!1,a.borderOuterWidth=0,a.borderMiddleWidth=0,a.borderInnerWidth=0,a.borderShadowWidth=0,a.borderRadius=0,a.valueBox=!0,a.valueBoxWidth=35,a.valueBoxStroke=0,a.valueBoxBorderRadius=10,a.colorValueBoxRect="",a.colorValueBoxRectEnd="",a.colorValueBoxShadow="",a.fontValueSize=50,a.fontValue="Roboto",a.fontValueWeight="bold",a.valueTextShadow=!1,a.fontNumbers="Roboto",a.fontNumbersWeight="normal",a.fontUnitsSize=r?40:35,a.colorTitle=Se("contrast",t).dim,a.colorUnits=Se("contrast",t).dim,a.colorValueBoxBackground=t.background;let f=Se(e.color,t);a.colorValueText=f.color,s?(a.colorNeedle=f.color,a.colorNeedleEnd=f.color,a.needleWidth=45,a.colorNeedleShadowUp=f.color,a.colorNeedleShadowDown=f.color):(a.colorBarProgress=f.color,a.colorBarProgressEnd="",a.needleWidth=0),a.colorPlate=t.cardColor,a.colorBar=t.background,a.colorBarEnd="",a.colorBarStroke="0",a.colorMajorTicks=Se("contrast",t).dim,a.colorMinorTicks=Se("contrast",t).dim,a.colorNumbers=Se("contrast",t).dim,a.majorTicks=h?i.majorTicks:[],a.majorTicksInt=e.numInt??1,a.majorTicksDec=e.numDecimal??2,a.strokeTicks=!!h,a.minorTicks=h?2:0,a.ticksWidthMinor=h?6:0,a.numberSide=s?"right":"left",a.fontNumbersSize=h?r?22:30:0,a.numbersMargin=r?s?-7:-3:s?-33:-5,a.ticksWidth=h?s&&r?15:10:0,a.ticksPadding=h?r?s?0:5:s?9:8:0,a.tickSide="left",a.animation=!0,a.animationRule="linear",a.animatedValue=!1,a.animateOnInit=!1,a.animationDuration=(e.paths?.gaugePath?.sampleTime??500)-25,a.highlights=[],a.highlightsWidth=e.gauge?.highlightsWidth;let b=this.highlights();b.length&&(a.highlights=JSON.stringify(b))}ngAfterViewInit(){this.viewReady.set(!0),this.applyInitialSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}applyInitialSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i=.3,a,r;this.runtime.options()?.gauge?.subType==="vertical"?(a=t.height,r=t.height*i):(r=t.width,a=t.width*i);let f={height:a,width:r};try{this.ngGauge()?.update(f)}catch{}}onResized(e){let t=this.runtime.options();if(!t)return;let i=.3,a=t.gauge?.subType==="vertical",r={};a?(r.height=e.contentRect.height,r.width=r.height*i,r.width>e.contentRect.width&&(r.width=e.contentRect.width,r.height=r.width/i)):(r.width=e.contentRect.width,r.height=r.width*i,r.height>e.contentRect.height&&(r.height=e.contentRect.height,r.width=r.height/i)),r.height=(r.height??0)-10;try{this.ngGauge()?.update(r)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Vd,5),te(i.gauge,Vd,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:3,consts:[["linearGauge",""],[1,"linearGauge",3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"linear-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue()))},dependencies:[Pt,ai,ia,Pd],styles:["[_nghost-%COMP%]{width:100%;height:100%;display:block} 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 n})();var Ld=["compassGauge"];function Gd(n){let o=n.match(/(\d+(\.\d+)?|\.\d+)/g);if(!o||o.length<3)throw new Error("Invalid RGBA format");let[e,t,i,a=1]=o.map(Number),r=a===1?"":Math.round(a*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+r}function hg(n){return n<0&&(n=360+n),n}var Fd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={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:"deg",sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5};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=w("--");value=w(0);ngGauge=ie("compassGauge");gauge=ie("compassGauge",{read:Ie});viewReady=w(!1);gaugeOptions={};colorStrokeTicks="";currentState=w(ce.Normal);lastAppliedState=null;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater","self.environment.wind.angleTrueWaterDamped","self.performance.beatAngle","self.performance.gybeAngle","self.performance.targetAngle","self.performance.optimumWindAngle"];displayName=se(()=>this.runtime.options()?.displayName);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();if(!e||!t)return;let i=e.paths?.gaugePath;i?.path&&W(()=>this.streams.observe("gaugePath",a=>{let r=a?.data?.value??null;if(r==null)this.value.set(0),this.textValue.set("--");else{this.negToPortPaths.includes(i.path)&&(r=hg(r));let h=Math.min(Math.max(r,0),360);this.value.set(h),this.textValue.set(h.toFixed(0))}let s=a?.state??ce.Normal;s!==this.currentState()&&this.currentState.set(s)}))}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{if(this.buildGaugeOptions(e,t),this.viewReady())try{this.ngGauge()?.update(this.gaugeOptions)}catch{}})}),R(()=>{let e=this.runtime.options(),t=this.theme(),i=this.currentState();!e||!t||this.viewReady()&&i!==this.lastAppliedState&&W(()=>{let a={};switch(i){case ce.Emergency:a.colorValueText=t.zoneEmergency;break;case ce.Alarm:a.colorValueText=t.zoneAlarm;break;case ce.Warn:a.colorValueText=t.zoneWarn;break;case ce.Alert:a.colorValueText=t.zoneAlert;break;default:a.colorValueText=t.contrast;break}try{this.ngGauge()?.update(a)}catch{}this.lastAppliedState=i})})}buildGaugeOptions(e,t){let i=this.gaugeOptions={};i.title=this.displayName(),i.minValue=0,i.maxValue=360,i.units=e.paths?.gaugePath?.convertUnitTo||"",i.valueDec=e.numDecimal??0,i.valueInt=e.numInt??1,i.barProgress=!1,i.barWidth=0,i.valueBox=!!e.gauge?.showValueBox,i.fontValueSize=60,i.valueBoxWidth=30,i.valueBoxBorderRadius=10,i.valueBoxStroke=0,i.ticksAngle=360,i.startAngle=180,i.exactTicks=!1,i.strokeTicks="",i.majorTicks=e.gauge?.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],i.majorTicksDec=0,i.majorTicksInt=1,i.numbersMargin=5,i.fontNumbersSize=25,i.minorTicks=e.gauge?.compassUseNumbers?3:2,i.needle=!0,i.needleType=this.LINE,i.needleStart=this.NEEDLE_START,i.needleEnd=this.NEEDLE_END,i.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,i.needleWidth=4,i.needleShadow=!1,i.needleCircleInner=!1,i.needleCircleOuter=!1,i.borders=!0,i.borderOuterWidth=0,i.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,i.borderInnerWidth=this.BORDER_INNER_WIDTH,i.borderShadowWidth=0,i.highlights=[],i.highlightsWidth=0,i.fontTitle="Roboto",i.fontTitleWeight="normal",i.fontTitleSize=25,i.fontUnits="Roboto",i.fontUnitsSize=25,i.fontUnitsWeight="normal",i.barStrokeWidth=0,i.barShadow=0,i.fontValue="Roboto",i.fontValueWeight="bold",i.valueTextShadow=!1,i.colorValueBoxShadow="",i.fontNumbers="Roboto",i.fontNumbersWeight="bold",e.gauge?.subType==="marineCompass"?(i.animationTarget=this.ANIMATION_TARGET_PLATE,i.useMinPath=!0):(i.animationTarget=this.ANIMATION_TARGET_NEEDLE,i.useMinPath=!0),i.animation=!0,i.animateOnInit=!0,i.animatedValue=!0,i.animationRule="linear",i.animationDuration=(e.paths?.gaugePath?.sampleTime??500)-50;let a=Se(e.color,t),r=Gd(a.dim),s=Gd(Se("contrast",t).dim);i.colorBarProgress=a.color,i.colorBorderMiddle=r,i.colorBorderMiddleEnd=r,i.colorNeedle=a.color,i.colorNeedleEnd=a.color,i.colorTitle=s,i.colorUnits=s,i.colorValueText=a.color,i.colorMinorTicks=s,i.colorNumbers=e.gauge?.compassUseNumbers?[t.port,s,s,r,s,s,r,s,s,r,s,s,t.port]:[t.port,r,r,r,r,r,r,r,t.port],i.colorMajorTicks=e.gauge?.compassUseNumbers?[t.port,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.port]:[t.port,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.contrast,t.port],i.colorPlate=i.colorPlateEnd=i.colorBorderInner=i.colorBorderInnerEnd=t.cardColor,i.colorBar=t.background,i.colorBarStroke="",i.colorValueBoxBackground=t.background,i.colorNeedleShadowUp="",i.colorNeedleShadowDown="",i.colorNeedleCircleInner=i.colorPlate,i.colorNeedleCircleInnerEnd=i.colorPlate,i.colorNeedleCircleOuter=i.colorPlate,i.colorNeedleCircleOuterEnd=i.colorPlate}setCanvasSize(){let e=this.gauge()?.nativeElement;if(!e)return;let t=e.getBoundingClientRect(),i={height:t.height,width:t.width};try{this.ngGauge()?.update(i)}catch{}}ngAfterViewInit(){this.viewReady.set(!0),this.setCanvasSize();try{this.ngGauge()?.update(this.gaugeOptions)}catch{}}onResized(e){let t={height:e.contentRect.height,width:e.contentRect.width};try{this.ngGauge()?.update(t)}catch{}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&(te(i.ngGauge,Ld,5),te(i.gauge,Ld,5,Ie)),t&2&&me(2)},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:4,consts:[["compassGauge",""],[3,"onResize","options","value"]],template:function(t,i){if(t&1){let a=ae();d(0,"radial-gauge",1,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),u()}t&2&&(T("options",i.gaugeOptions)("value",i.value()),Y("value-text",i.textValue())("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[Pt,ai,ia,Do],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%} 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 n})();var pg=["canvasMainRef"],Bd=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);streams=A(_e);static DEFAULT_CONFIG={displayName:"Time Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Date / Time",path:null,source:null,pathType:"Date",isPathConfigurable:!0,sampleTime:1e3}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:!1,dataTimeout:5};canvasMainRef=ie.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=A(je);cssWidth=0;cssHeight=0;dataValue=w(null);_timeZoneGTM="";isDestroyed=!1;labelColor=w(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;displayName=se(()=>this.runtime.options()?.displayName);dateFormat=se(()=>this.runtime.options()?.dateFormat);dateTimezone=se(()=>this.runtime.options()?.dateTimezone);constructor(){R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{this.applyColors(),e.paths?.gaugePath?.path&&(this._timeZoneGTM=this.getGMTOffset(this.dateTimezone()),this.streams.observe("gaugePath",a=>{this.dataValue.set(a?.data?.value??null),this.drawWidget()}))})}),R(()=>{let e=this.theme(),t=this.runtime.options();!e||!t||W(()=>{this.applyColors(),this.drawWidget()})})}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:!0,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.85),this.maxTextHeight=Math.floor(this.cssHeight*.7),this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.floor(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.floor(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.canvasElement.width*.85),this.maxTextHeight=Math.floor(this.canvasElement.height*.7),this.applyColors(),this.drawWidget())}getGMTOffset(e){try{if(e==="System Timezone -")return"";let a=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(r=>r.type==="timeZoneName");return a?a.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}applyColors(){let e=this.runtime.options(),t=this.theme();!e||!t||(this.labelColor.set(Se(e.color,t).dim),this.valueColor=Se(e.color,t).color)}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==`${this.displayName()}-${this.runtime.options().color}`)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.displayName(),this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=`${this.displayName()}-${this.runtime.options().color}`),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let e,t=this.dataValue();if(!t||isNaN(Date.parse(t)))e="--";else try{e=vs(t,this.dateFormat(),"en-US",this._timeZoneGTM)}catch(i){e=i,console.log("[Date Time Widget]: "+i)}this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&te(i.canvasMainRef,pg,5),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"date-canvas"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},dependencies:[Pt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.date-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;min-height:1px;display:block}"]})}return n})();var Ud={modes:{point(n,o){return Io(n,o,{intersect:!0})},nearest(n,o,e){return bg(n,o,e)},x(n,o,e){return Io(n,o,{intersect:e.intersect,axis:"x"})},y(n,o,e){return Io(n,o,{intersect:e.intersect,axis:"y"})}}};function Cr(n,o,e){return(Ud.modes[e.mode]||Ud.modes.nearest)(n,o,e)}function gg(n,o,e){return e!=="x"&&e!=="y"?n.inRange(o.x,o.y,"x",!0)||n.inRange(o.x,o.y,"y",!0):n.inRange(o.x,o.y,e,!0)}function fg(n,o,e){return e==="x"?{x:n.x,y:o.y}:e==="y"?{x:o.x,y:n.y}:o}function Io(n,o,e){return n.filter(t=>e.intersect?t.inRange(o.x,o.y):gg(t,o,e.axis))}function bg(n,o,e){let t=Number.POSITIVE_INFINITY;return Io(n,o,e).reduce((i,a)=>{let r=a.getCenterPoint(),s=fg(o,r,e.axis),h=ya(o,s);return h<t?(i=[a],t=h):h===t&&i.push(a),i},[]).sort((i,a)=>i._index-a._index).slice(0,1)}function Cn(n,o,e){let t=Math.cos(e),i=Math.sin(e),a=o.x,r=o.y;return{x:a+t*(n.x-a)-i*(n.y-r),y:r+i*(n.x-a)+t*(n.y-r)}}var Ag=(n,o)=>o>n||n.length>o.length&&n.slice(0,o.length)===o,bn=.001,Ro=(n,o,e)=>Math.min(e,Math.max(o,n)),lc=(n,o)=>n.value>=n.start-o&&n.value<=n.end+o;function vg(n,o,e){for(let t of Object.keys(n))n[t]=Ro(n[t],o,e);return n}function yg(n,o,e,t){return!n||!o||e<=0?!1:Math.pow(n.x-o.x,2)+Math.pow(n.y-o.y,2)<=Math.pow(e+t,2)}function dc(n,{x:o,y:e,x2:t,y2:i},a,{borderWidth:r,hitTolerance:s}){let h=(r+s)/2,f=n.x>=o-h-bn&&n.x<=t+h+bn,b=n.y>=e-h-bn&&n.y<=i+h+bn;return a==="x"?f:(a==="y"||f)&&b}function cc(n,{rect:o,center:e},t,{rotation:i,borderWidth:a,hitTolerance:r}){let s=Cn(n,e,hi(-i));return dc(s,o,t,{borderWidth:a,hitTolerance:r})}function Sn(n,o){let{centerX:e,centerY:t}=n.getProps(["centerX","centerY"],o);return{x:e,y:t}}function Cg(n,o,e,t=!0){let i=e.split("."),a=0;for(let r of o.split(".")){let s=i[a++];if(parseInt(r,10)<parseInt(s,10))break;if(Ag(s,r)){if(t)throw new Error(`${n} v${e} is not supported. v${o} or newer is required.`);return!1}}return!0}var mc=n=>typeof n=="string"&&n.endsWith("%"),uc=n=>parseFloat(n)/100,hc=n=>Ro(uc(n),0,1),_a=(n,o)=>({x:n,y:o,x2:n,y2:o,width:0,height:0}),Sg={box:n=>_a(n.centerX,n.centerY),doughnutLabel:n=>_a(n.centerX,n.centerY),ellipse:n=>({centerX:n.centerX,centerY:n.centerX,radius:0,width:0,height:0}),label:n=>_a(n.centerX,n.centerY),line:n=>_a(n.x,n.y),point:n=>({centerX:n.centerX,centerY:n.centerY,radius:0,width:0,height:0}),polygon:n=>_a(n.centerX,n.centerY)};function Sr(n,o){return o==="start"?0:o==="end"?n:mc(o)?hc(o)*n:n/2}function an(n,o,e=!0){return typeof o=="number"?o:mc(o)?(e?hc(o):uc(o))*n:n}function wg(n,o){let{x:e,width:t}=n,i=o.textAlign;return i==="center"?e+t/2:i==="end"||i==="right"?e+t:e}function pc(n,o,{borderWidth:e,position:t,xAdjust:i,yAdjust:a},r){let s=Xi(r),h=o.width+(s?r.width:0)+e,f=o.height+(s?r.height:0)+e,b=wr(t),C=qd(n.x,h,i,b.x),M=qd(n.y,f,a,b.y);return{x:C,y:M,x2:C+h,y2:M+f,width:h,height:f,centerX:C+h/2,centerY:M+f/2}}function wr(n,o="center"){return Xi(n)?{x:pn(n.x,o),y:pn(n.y,o)}:(n=pn(n,o),{x:n,y:n})}var gc=(n,o)=>n&&n.autoFit&&o<1;function fc(n,o){let e=n.font,t=Zi(e)?e:[e];return gc(n,o)?t.map(function(i){let a=Ca(i);return a.size=Math.floor(i.size*o),a.lineHeight=i.lineHeight,Ca(a)}):t.map(i=>Ca(i))}function bc(n){return n&&(ui(n.xValue)||ui(n.yValue))}function qd(n,o,e=0,t){return n-Sr(o,t)+e}function sa(n,o,e){let t=e.init;if(t){if(t===!0)return vc(o,e)}else return;return xg(n,o,e)}function Ac(n,o,e){let t=!1;return o.forEach(i=>{Ki(n[i])?(t=!0,e[i]=n[i]):ui(e[i])&&delete e[i]}),t}function vc(n,o){let e=o.type||"line";return Sg[e](n)}function xg(n,o,e){let t=va(e.init,[{chart:n,properties:o,options:e}]);if(t===!0)return vc(o,e);if(Xi(t))return t}var hr=new Map,_g=n=>isNaN(n)||n<=0,Mg=n=>n.reduce(function(o,e){return o+=e.string,o},"");function No(n){if(n&&typeof n=="object"){let o=n.toString();return o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]"}}function Vo(n,{x:o,y:e},t){t&&(n.translate(o,e),n.rotate(hi(t)),n.translate(-o,-e))}function Ii(n,o){if(o&&o.borderWidth)return n.lineCap=o.borderCapStyle||"butt",n.setLineDash(o.borderDash),n.lineDashOffset=o.borderDashOffset,n.lineJoin=o.borderJoinStyle||"miter",n.lineWidth=o.borderWidth,n.strokeStyle=o.borderColor,!0}function la(n,o){n.shadowColor=o.backgroundShadowColor,n.shadowBlur=o.shadowBlur,n.shadowOffsetX=o.shadowOffsetX,n.shadowOffsetY=o.shadowOffsetY}function Wo(n,o){let e=o.content;if(No(e))return{width:an(e.width,o.width),height:an(e.height,o.height)};let t=fc(o),i=o.textStrokeWidth,a=Zi(e)?e:[e],r=a.join()+Mg(t)+i+(n._measureText?"-spriting":"");return hr.has(r)||hr.set(r,Dg(n,a,t,i)),hr.get(r)}function yc(n,o,e){let{x:t,y:i,width:a,height:r}=o;n.save(),la(n,e);let s=Ii(n,e);n.fillStyle=e.backgroundColor,n.beginPath(),tr(n,{x:t,y:i,w:a,h:r,radius:vg(ir(e.borderRadius),0,Math.min(a,r)/2)}),n.closePath(),n.fill(),s&&(n.shadowColor=e.borderShadowColor,n.stroke()),n.restore()}function Cc(n,o,e,t){let i=e.content;if(No(i)){n.save(),n.globalAlpha=Og(e.opacity,i.style.opacity),n.drawImage(i,o.x,o.y,o.width,o.height),n.restore();return}let a=Zi(i)?i:[i],r=fc(e,t),s=e.color,h=Zi(s)?s:[s],f=wg(o,e),b=o.y+e.textStrokeWidth/2;n.save(),n.textBaseline="middle",n.textAlign=e.textAlign,kg(n,e)&&Pg(n,{x:f,y:b},a,r),Ig(n,{x:f,y:b},a,{fonts:r,colors:h}),n.restore()}function kg(n,o){if(o.textStrokeWidth>0)return n.lineJoin="round",n.miterLimit=2,n.lineWidth=o.textStrokeWidth,n.strokeStyle=o.textStrokeColor,!0}function Tg(n,o,e,t){let{radius:i,options:a}=o,r=a.pointStyle,s=a.rotation,h=(s||0)*lo;if(No(r)){n.save(),n.translate(e,t),n.rotate(h),n.drawImage(r,-r.width/2,-r.height/2,r.width,r.height),n.restore();return}_g(i)||Eg(n,{x:e,y:t,radius:i,rotation:s,style:r,rad:h})}function Eg(n,{x:o,y:e,radius:t,rotation:i,style:a,rad:r}){let s,h,f,b;switch(n.beginPath(),a){default:n.arc(o,e,t,0,so),n.closePath();break;case"triangle":n.moveTo(o+Math.sin(r)*t,e-Math.cos(r)*t),r+=co,n.lineTo(o+Math.sin(r)*t,e-Math.cos(r)*t),r+=co,n.lineTo(o+Math.sin(r)*t,e-Math.cos(r)*t),n.closePath();break;case"rectRounded":b=t*.516,f=t-b,s=Math.cos(r+gn)*f,h=Math.sin(r+gn)*f,n.arc(o-s,e-h,b,r-zt,r-Hn),n.arc(o+h,e-s,b,r-Hn,r),n.arc(o+s,e+h,b,r,r+Hn),n.arc(o-h,e+s,b,r+Hn,r+zt),n.closePath();break;case"rect":if(!i){f=Math.SQRT1_2*t,n.rect(o-f,e-f,2*f,2*f);break}r+=gn;case"rectRot":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+h,e-s),n.lineTo(o+s,e+h),n.lineTo(o-h,e+s),n.closePath();break;case"crossRot":r+=gn;case"cross":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s);break;case"star":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s),r+=gn,s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h),n.moveTo(o+h,e-s),n.lineTo(o-h,e+s);break;case"line":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(o-s,e-h),n.lineTo(o+s,e+h);break;case"dash":n.moveTo(o,e),n.lineTo(o+Math.cos(r)*t,e+Math.sin(r)*t);break}n.fill()}function Dg(n,o,e,t){n.save();let i=o.length,a=0,r=t;for(let s=0;s<i;s++){let h=e[Math.min(s,e.length-1)];n.font=h.string;let f=o[s];a=Math.max(a,n.measureText(f).width+t),r+=h.lineHeight}return n.restore(),{width:a,height:r}}function Pg(n,{x:o,y:e},t,i){n.beginPath();let a=0;t.forEach(function(r,s){let h=i[Math.min(s,i.length-1)],f=h.lineHeight;n.font=h.string,n.strokeText(r,o,e+f/2+a),a+=f}),n.stroke()}function Ig(n,{x:o,y:e},t,{fonts:i,colors:a}){let r=0;t.forEach(function(s,h){let f=a[Math.min(h,a.length-1)],b=i[Math.min(h,i.length-1)],C=b.lineHeight;n.beginPath(),n.font=b.string,n.fillStyle=f,n.fillText(s,o,e+C/2+r),r+=C,n.fill()})}function Og(n,o){let e=mo(n)?n:o;return mo(e)?Ro(e,0,1):1}var Sc=["left","bottom","top","right"];function Rg(n,o){let{pointX:e,pointY:t,options:i}=o,a=i.callout,r=a&&a.display&&Gg(o,a);if(!r||Bg(o,a,r))return;if(n.save(),n.beginPath(),!Ii(n,a))return n.restore();let{separatorStart:h,separatorEnd:f}=Ng(o,r),{sideStart:b,sideEnd:C}=Wg(o,r,h);(a.margin>0||i.borderWidth===0)&&(n.moveTo(h.x,h.y),n.lineTo(f.x,f.y)),n.moveTo(b.x,b.y),n.lineTo(C.x,C.y);let M=Cn({x:e,y:t},o.getCenterPoint(),hi(-o.rotation));n.lineTo(M.x,M.y),n.stroke(),n.restore()}function Ng(n,o){let{x:e,y:t,x2:i,y2:a}=n,r=Vg(n,o),s,h;return o==="left"||o==="right"?(s={x:e+r,y:t},h={x:s.x,y:a}):(s={x:e,y:t+r},h={x:i,y:s.y}),{separatorStart:s,separatorEnd:h}}function Vg(n,o){let{width:e,height:t,options:i}=n,a=i.callout.margin+i.borderWidth/2;return o==="right"?e+a:o==="bottom"?t+a:-a}function Wg(n,o,e){let{y:t,width:i,height:a,options:r}=n,s=r.callout.start,h=Lg(o,r.callout),f,b;return o==="left"||o==="right"?(f={x:e.x,y:t+an(a,s)},b={x:f.x+h,y:f.y}):(f={x:e.x+an(i,s),y:e.y},b={x:f.x,y:f.y+h}),{sideStart:f,sideEnd:b}}function Lg(n,o){let e=o.side;return n==="left"||n==="top"?-e:e}function Gg(n,o){let e=o.position;return Sc.includes(e)?e:Fg(n,o)}function Fg(n,o){let{x:e,y:t,x2:i,y2:a,width:r,height:s,pointX:h,pointY:f,centerX:b,centerY:C,rotation:M}=n,N={x:b,y:C},D=o.start,j=an(r,D),X=an(s,D),Z=[e,e+j,e+j,i],ee=[t+X,a,t,a],be=[];for(let Oe=0;Oe<4;Oe++){let Te=Cn({x:Z[Oe],y:ee[Oe]},N,hi(M));be.push({position:Sc[Oe],distance:ya(Te,{x:h,y:f})})}return be.sort((Oe,Te)=>Oe.distance-Te.distance)[0].position}function Bg(n,o,e){let{pointX:t,pointY:i}=n,a=o.margin,r=t,s=i;return e==="left"?r+=a:e==="right"?r-=a:e==="top"?s+=a:e==="bottom"&&(s-=a),n.inRange(r,s)}var zd={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 na(n,o,e){return o=typeof o=="number"?o:n.parse(o),ro(o)?n.getPixelForValue(o):e}function An(n,o,e){let t=o[e];if(t||e==="scaleID")return t;let i=e.charAt(0),a=Object.values(n).filter(r=>r.axis&&r.axis===i);return a.length?a[0].id:i}function wc(n,o){if(n){let e=n.options.reverse,t=na(n,o.min,e?o.end:o.start),i=na(n,o.max,e?o.start:o.end);return{start:t,end:i}}}function xc(n,o){let{chartArea:e,scales:t}=n,i=t[An(t,o,"xScaleID")],a=t[An(t,o,"yScaleID")],r=e.width/2,s=e.height/2;return i&&(r=na(i,o.xValue,i.left+i.width/2)),a&&(s=na(a,o.yValue,a.top+a.height/2)),{x:r,y:s}}function xr(n,o){let e=n.scales,t=e[An(e,o,"xScaleID")],i=e[An(e,o,"yScaleID")];if(!t&&!i)return{};let{left:a,right:r}=t||n.chartArea,{top:s,bottom:h}=i||n.chartArea,f=Hd(t,{min:o.xMin,max:o.xMax,start:a,end:r});a=f.start,r=f.end;let b=Hd(i,{min:o.yMin,max:o.yMax,start:h,end:s});return s=b.start,h=b.end,{x:a,y:s,x2:r,y2:h,width:r-a,height:h-s,centerX:a+(r-a)/2,centerY:s+(h-s)/2}}function _c(n,o){if(!bc(o)){let e=xr(n,o),t=o.radius;(!t||isNaN(t))&&(t=Math.min(e.width,e.height)/2,o.radius=t);let i=t*2,a=e.centerX+o.xAdjust,r=e.centerY+o.yAdjust;return{x:a-t,y:r-t,x2:a+t,y2:r+t,centerX:a,centerY:r,width:i,height:i,radius:t}}return qg(n,o)}function Ug(n,o){let{scales:e,chartArea:t}=n,i=e[o.scaleID],a={x:t.left,y:t.top,x2:t.right,y2:t.bottom};return i?zg(i,a,o):Hg(e,a,o),a}function Mc(n,o){let e=xr(n,o);return e.initProperties=sa(n,e,o),e.elements=[{type:"label",optionScope:"label",properties:Qg(n,e,o),initProperties:e.initProperties}],e}function qg(n,o){let e=xc(n,o),t=o.radius*2;return{x:e.x-o.radius+o.xAdjust,y:e.y-o.radius+o.yAdjust,x2:e.x+o.radius+o.xAdjust,y2:e.y+o.radius+o.yAdjust,centerX:e.x+o.xAdjust,centerY:e.y+o.yAdjust,radius:o.radius,width:t,height:t}}function Hd(n,o){let e=wc(n,o)||o;return{start:Math.min(e.start,e.end),end:Math.max(e.start,e.end)}}function zg(n,o,e){let t=na(n,e.value,NaN),i=na(n,e.endValue,t);n.isHorizontal()?(o.x=t,o.x2=i):(o.y=t,o.y2=i)}function Hg(n,o,e){for(let t of Object.keys(zd)){let i=n[An(n,e,t)];if(i){let{min:a,max:r,start:s,end:h,startProp:f,endProp:b}=zd[t],C=wc(i,{min:e[a],max:e[r],start:i[s],end:i[h]});o[f]=C.start,o[b]=C.end}}}function jg({properties:n,options:o},e,t,i){let{x:a,x2:r,width:s}=n;return kc({start:a,end:r,size:s,borderWidth:o.borderWidth},{position:t.x,padding:{start:i.left,end:i.right},adjust:o.label.xAdjust,size:e.width})}function Yg({properties:n,options:o},e,t,i){let{y:a,y2:r,height:s}=n;return kc({start:a,end:r,size:s,borderWidth:o.borderWidth},{position:t.y,padding:{start:i.top,end:i.bottom},adjust:o.label.yAdjust,size:e.height})}function kc(n,o){let{start:e,end:t,borderWidth:i}=n,{position:a,padding:{start:r,end:s},adjust:h}=o,f=t-i-e-r-s-o.size;return e+i/2+h+Sr(f,a)}function Qg(n,o,e){let t=e.label;t.backgroundColor="transparent",t.callout.display=!1;let i=wr(t.position),a=jn(t.padding),r=Wo(n.ctx,t),s=jg({properties:o,options:e},r,i,a),h=Yg({properties:o,options:e},r,i,a),f=r.width+a.width,b=r.height+a.height;return{x:s,y:h,x2:s+f,y2:h+b,width:f,height:b,centerX:s+f/2,centerY:h+b/2,rotation:t.rotation}}var pr=["enter","leave"],_r=pr.concat("click");function $g(n,o,e){o.listened=Ac(e,_r,o.listeners),o.moveListened=!1,pr.forEach(t=>{Ki(e[t])&&(o.moveListened=!0)}),(!o.listened||!o.moveListened)&&o.annotations.forEach(t=>{!o.listened&&Ki(t.click)&&(o.listened=!0),o.moveListened||pr.forEach(i=>{Ki(t[i])&&(o.listened=!0,o.moveListened=!0)})})}function Zg(n,o,e){if(n.listened)switch(o.type){case"mousemove":case"mouseout":return Xg(n,o,e);case"click":return Kg(n,o,e)}}function Xg(n,o,e){if(!n.moveListened)return;let t;o.type==="mousemove"?t=Cr(n.visibleElements,o,e.interaction):t=[];let i=n.hovered;n.hovered=t;let a={state:n,event:o},r=jd(a,"leave",i,t);return jd(a,"enter",t,i)||r}function jd({state:n,event:o},e,t,i){let a;for(let r of t)i.indexOf(r)<0&&(a=Tc(r.options[e]||n.listeners[e],r,o)||a);return a}function Kg(n,o,e){let t=n.listeners,i=Cr(n.visibleElements,o,e.interaction),a;for(let r of i)a=Tc(r.options.click||t.click,r,o)||a;return a}function Tc(n,o,e){return va(n,[o.$context,e])===!0}var Oo=["afterDraw","beforeDraw"];function Jg(n,o,e){let t=o.visibleElements;o.hooked=Ac(e,Oo,o.hooks),o.hooked||t.forEach(i=>{o.hooked||Oo.forEach(a=>{Ki(i.options[a])&&(o.hooked=!0)})})}function Yd(n,o,e){if(n.hooked){let t=o.options[e]||n.hooks[e];return va(t,[o.$context])}}function ef(n,o,e){let t=rf(n.scales,o,e),i=Qd(o,t,"min","suggestedMin");i=Qd(o,t,"max","suggestedMax")||i,i&&Ki(o.handleTickRangeOptions)&&o.handleTickRangeOptions()}function tf(n,o){for(let e of n)af(e,o)}function Qd(n,o,e,t){if(ro(o[e])&&!nf(n.options,e,t)){let i=n[e]!==o[e];return n[e]=o[e],i}}function nf(n,o,e){return ui(n[o])||ui(n[e])}function af(n,o){for(let e of["scaleID","xScaleID","yScaleID"]){let t=An(o,n,e);t&&!o[t]&&of(n,e)&&console.warn(`No scale found with id '${t}' for annotation '${n.id}'`)}}function of(n,o){if(o==="scaleID")return!0;let e=o.charAt(0);for(let t of["Min","Max","Value"])if(ui(n[e+t]))return!0;return!1}function rf(n,o,e){let t=o.axis,i=o.id,a=t+"ScaleID",r={min:pn(o.min,Number.NEGATIVE_INFINITY),max:pn(o.max,Number.POSITIVE_INFINITY)};for(let s of e)s.scaleID===i?$d(s,o,["value","endValue"],r):An(n,s,a)===i&&$d(s,o,[t+"Min",t+"Max",t+"Value"],r);return r}function $d(n,o,e,t){for(let i of e){let a=n[i];if(ui(a)){let r=o.parse(a);t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}}}var on=class extends Ji{inRange(o,e,t,i){let{x:a,y:r}=Cn({x:o,y:e},this.getCenterPoint(i),hi(-this.options.rotation));return dc({x:a,y:r},this.getProps(["x","y","x2","y2"],i),t,this.options)}getCenterPoint(o){return Sn(this,o)}draw(o){o.save(),Vo(o,this.getCenterPoint(),this.options.rotation),yc(o,this,this.options),o.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(o,e){return Mc(o,e)}};on.id="boxAnnotation";on.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};on.defaultRoutes={borderColor:"color",backgroundColor:"color"};on.descriptors={label:{_fallback:!0}};var aa=class extends Ji{inRange(o,e,t,i){return cc({x:o,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(o){return Sn(this,o)}draw(o){let e=this.options;!e.display||!e.content||(uf(o,this),o.save(),Vo(o,this.getCenterPoint(),this.rotation),Cc(o,this,e,this._fitRatio),o.restore())}resolveElementProperties(o,e){let t=sf(o,e);if(!t)return{};let{controllerMeta:i,point:a,radius:r}=df(o,e,t),s=Wo(o.ctx,e),h=cf(s,r);gc(e,h)&&(s={width:s.width*h,height:s.height*h});let{position:f,xAdjust:b,yAdjust:C}=e,M=pc(a,s,{borderWidth:0,position:f,xAdjust:b,yAdjust:C});return Ze(Be(Be({initProperties:sa(o,M,e)},M),i),{rotation:e.rotation,_fitRatio:h})}};aa.id="doughnutLabelAnnotation";aa.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};aa.defaultRoutes={};function sf(n,o){return n.getSortedVisibleDatasetMetas().reduce(function(e,t){let i=t.controller;return i instanceof _l&&lf(n,o,t.data)&&(!e||i.innerRadius<e.controller.innerRadius)&&i.options.circumference>=90?t:e},void 0)}function lf(n,o,e){if(!o.autoHide)return!0;for(let t=0;t<e.length;t++)if(!e[t].hidden&&n.getDataVisibility(t))return!0}function df({chartArea:n},o,e){let{left:t,top:i,right:a,bottom:r}=n,{innerRadius:s,offsetX:h,offsetY:f}=e.controller,b=(t+a)/2+h,C=(i+r)/2+f,M={left:Math.max(b-s,t),right:Math.min(b+s,a),top:Math.max(C-s,i),bottom:Math.min(C+s,r)},N={x:(M.left+M.right)/2,y:(M.top+M.bottom)/2},D=o.spacing+o.borderWidth/2,j=s-D,X=N.y>C,Z=X?i+D:r-D,ee=mf(Z,b,C,j);return{controllerMeta:Be({_centerX:b,_centerY:C,_radius:j,_counterclockwise:X},ee),point:N,radius:Math.min(s,Math.min(M.right-M.left,M.bottom-M.top)/2)}}function cf({width:n,height:o},e){let t=Math.sqrt(Math.pow(n,2)+Math.pow(o,2));return e*2/t}function mf(n,o,e,t){let i=Math.pow(e-n,2),a=Math.pow(t,2),r=o*-2,s=Math.pow(o,2)+i-a,h=Math.pow(r,2)-4*s;if(h<=0)return{_startAngle:0,_endAngle:so};let f=(-r-Math.sqrt(h))/2,b=(-r+Math.sqrt(h))/2;return{_startAngle:uo({x:o,y:e},{x:f,y:n}).angle,_endAngle:uo({x:o,y:e},{x:b,y:n}).angle}}function uf(n,o){let{_centerX:e,_centerY:t,_radius:i,_startAngle:a,_endAngle:r,_counterclockwise:s,options:h}=o;n.save();let f=Ii(n,h);n.fillStyle=h.backgroundColor,n.beginPath(),n.arc(e,t,i,a,r,s),n.closePath(),n.fill(),f&&n.stroke(),n.restore()}var vn=class extends Ji{inRange(o,e,t,i){return cc({x:o,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(o){return Sn(this,o)}draw(o){let e=this.options,t=!ui(this._visible)||this._visible;!e.display||!e.content||!t||(o.save(),Vo(o,this.getCenterPoint(),this.rotation),Rg(o,this),yc(o,this,e),Cc(o,hf(this),e),o.restore())}resolveElementProperties(o,e){let t;if(bc(e))t=xc(o,e);else{let{centerX:s,centerY:h}=xr(o,e);t={x:s,y:h}}let i=jn(e.padding),a=Wo(o.ctx,e),r=pc(t,a,e,i);return Ze(Be({initProperties:sa(o,r,e),pointX:t.x,pointY:t.y},r),{rotation:e.rotation})}};vn.id="labelAnnotation";vn.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};vn.defaultRoutes={borderColor:"color"};function hf({x:n,y:o,width:e,height:t,options:i}){let a=i.borderWidth/2,r=jn(i.padding);return{x:n+r.left+a,y:o+r.top+a,width:e-r.left-r.right-i.borderWidth,height:t-r.top-r.bottom-i.borderWidth}}var Mr=(n,o,e)=>({x:n.x+e*(o.x-n.x),y:n.y+e*(o.y-n.y)}),gr=(n,o,e)=>Mr(o,e,Math.abs((n-o.y)/(e.y-o.y))).x,Zd=(n,o,e)=>Mr(o,e,Math.abs((n-o.x)/(e.x-o.x))).y,ka=n=>n*n,pf=(n,o,{x:e,y:t,x2:i,y2:a},r)=>r==="y"?{start:Math.min(t,a),end:Math.max(t,a),value:o}:{start:Math.min(e,i),end:Math.max(e,i),value:n},Xd=(n,o,e,t)=>(1-t)*(1-t)*n+2*(1-t)*t*o+t*t*e,fr=(n,o,e,t)=>({x:Xd(n.x,o.x,e.x,t),y:Xd(n.y,o.y,e.y,t)}),Kd=(n,o,e,t)=>2*(1-t)*(o-n)+2*t*(e-o),Jd=(n,o,e,t)=>-Math.atan2(Kd(n.x,o.x,e.x,t),Kd(n.y,o.y,e.y,t))+.5*zt,Lo=(()=>{class n extends Ji{inRange(e,t,i,a){let r=(this.options.borderWidth+this.options.hitTolerance)/2;if(i!=="x"&&i!=="y"){let s={mouseX:e,mouseY:t},{path:h,ctx:f}=this;if(h){Ii(f,this.options),f.lineWidth+=this.options.hitTolerance;let{chart:C}=this.$context,M=e*C.currentDevicePixelRatio,N=t*C.currentDevicePixelRatio,D=f.isPointInStroke(h,M,N)||br(this,s,a);return f.restore(),D}let b=ka(r);return Af(this,s,b,a)||br(this,s,a)}return gf(this,{mouseX:e,mouseY:t},i,{hitSize:r,useFinalPosition:a})}getCenterPoint(e){return Sn(this,e)}draw(e){let{x:t,y:i,x2:a,y2:r,cp:s,options:h}=this;if(e.save(),!Ii(e,h))return e.restore();la(e,h);let f=Math.sqrt(Math.pow(a-t,2)+Math.pow(r-i,2));if(h.curve&&s)return Mf(e,this,s,f),e.restore();let{startOpts:b,endOpts:C,startAdjust:M,endAdjust:N}=Ec(this),D=Math.atan2(r-i,a-t);e.translate(t,i),e.rotate(D),e.beginPath(),e.moveTo(0+M,0),e.lineTo(f-N,0),e.shadowColor=h.borderShadowColor,e.stroke(),Ar(e,0,M,b),Ar(e,f,-N,C),e.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(e,t){let i=Ug(e,t),{x:a,y:r,x2:s,y2:h}=i,f=ff(i,e.chartArea),b=f?bf({x:a,y:r},{x:s,y:h},e.chartArea):{x:a,y:r,x2:s,y2:h,width:Math.abs(s-a),height:Math.abs(h-r)};if(b.centerX=(s+a)/2,b.centerY=(h+r)/2,b.initProperties=sa(e,b,t),t.curve){let M={x:b.x,y:b.y},N={x:b.x2,y:b.y2};b.cp=_f(b,t,ya(M,N))}let C=vf(e,b,t.label);return C._visible=f,b.elements=[{type:"label",optionScope:"label",properties:C,initProperties:b.initProperties}],b}}return n.id="lineAnnotation",n})(),ec={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};Lo.defaults={adjustScaleRange:!0,arrowHeads:{display:!1,end:Object.assign({},ec),fill:!1,length:12,start:Object.assign({},ec),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({},vn.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};Lo.descriptors={arrowHeads:{start:{_fallback:!0},end:{_fallback:!0},_fallback:!0}};Lo.defaultRoutes={borderColor:"color"};function gf(n,{mouseX:o,mouseY:e},t,{hitSize:i,useFinalPosition:a}){let r=pf(o,e,n.getProps(["x","y","x2","y2"],a),t);return lc(r,i)||br(n,{mouseX:o,mouseY:e},a,t)}function ff({x:n,y:o,x2:e,y2:t},{top:i,right:a,bottom:r,left:s}){return!(n<s&&e<s||n>a&&e>a||o<i&&t<i||o>r&&t>r)}function tc({x:n,y:o},e,{top:t,right:i,bottom:a,left:r}){return n<r&&(o=Zd(r,{x:n,y:o},e),n=r),n>i&&(o=Zd(i,{x:n,y:o},e),n=i),o<t&&(n=gr(t,{x:n,y:o},e),o=t),o>a&&(n=gr(a,{x:n,y:o},e),o=a),{x:n,y:o}}function bf(n,o,e){let{x:t,y:i}=tc(n,o,e),{x:a,y:r}=tc(o,n,e);return{x:t,y:i,x2:a,y2:r,width:Math.abs(a-t),height:Math.abs(r-i)}}function Af(n,{mouseX:o,mouseY:e},t=bn,i){let{x:a,y:r,x2:s,y2:h}=n.getProps(["x","y","x2","y2"],i),f=s-a,b=h-r,C=ka(f)+ka(b),M=C===0?-1:((o-a)*f+(e-r)*b)/C,N,D;return M<0?(N=a,D=r):M>1?(N=s,D=h):(N=a+M*f,D=r+M*b),ka(o-N)+ka(e-D)<=t}function br(n,{mouseX:o,mouseY:e},t,i){let a=n.label;return a.options.display&&a.inRange(o,e,i,t)}function vf(n,o,e){let t=e.borderWidth,i=jn(e.padding),a=Wo(n.ctx,e),r=a.width+i.width+t,s=a.height+i.height+t;return Cf(o,e,{width:r,height:s,padding:i},n.chartArea)}function yf(n){let{x:o,y:e,x2:t,y2:i}=n,a=Math.atan2(i-e,t-o);return a>zt/2?a-zt:a<zt/-2?a+zt:a}function Cf(n,o,e,t){let{width:i,height:a,padding:r}=e,{xAdjust:s,yAdjust:h}=o,f={x:n.x,y:n.y},b={x:n.x2,y:n.y2},C=o.rotation==="auto"?yf(n):hi(o.rotation),M=Sf(i,a,C),N=wf(n,o,{labelSize:M,padding:r},t),D=n.cp?fr(f,n.cp,b,N):Mr(f,b,N),j={size:M.w,min:t.left,max:t.right,padding:r.left},X={size:M.h,min:t.top,max:t.bottom,padding:r.top},Z=nc(D.x,j)+s,ee=nc(D.y,X)+h;return{x:Z-i/2,y:ee-a/2,x2:Z+i/2,y2:ee+a/2,centerX:Z,centerY:ee,pointX:D.x,pointY:D.y,width:i,height:a,rotation:Ko(C)}}function Sf(n,o,e){let t=Math.cos(e),i=Math.sin(e);return{w:Math.abs(n*t)+Math.abs(o*i),h:Math.abs(n*i)+Math.abs(o*t)}}function wf(n,o,e,t){let i,a=xf(n,t);return o.position==="start"?i=ic({w:n.x2-n.x,h:n.y2-n.y},e,o,a):o.position==="end"?i=1-ic({w:n.x-n.x2,h:n.y-n.y2},e,o,a):i=Sr(1,o.position),i}function ic(n,o,e,t){let{labelSize:i,padding:a}=o,r=n.w*t.dx,s=n.h*t.dy,h=r>0&&(i.w/2+a.left-t.x)/r,f=s>0&&(i.h/2+a.top-t.y)/s;return Ro(Math.max(h,f),0,.25)}function xf(n,o){let{x:e,x2:t,y:i,y2:a}=n,r=Math.min(i,a)-o.top,s=Math.min(e,t)-o.left,h=o.bottom-Math.max(i,a),f=o.right-Math.max(e,t);return{x:Math.min(s,f),y:Math.min(r,h),dx:s<=f?1:-1,dy:r<=h?1:-1}}function nc(n,o){let{size:e,min:t,max:i,padding:a}=o,r=e/2;return e>i-t?(i+t)/2:(t>=n-a-r&&(n=t+a+r),i<=n+a+r&&(n=i-a-r),n)}function Ec(n){let o=n.options,e=o.arrowHeads&&o.arrowHeads.start,t=o.arrowHeads&&o.arrowHeads.end;return{startOpts:e,endOpts:t,startAdjust:ac(n,e),endAdjust:ac(n,t)}}function ac(n,o){if(!o||!o.display)return 0;let{length:e,width:t}=o,i=n.options.borderWidth/2,a={x:e,y:t+i};return Math.abs(gr(0,a,{x:0,y:i}))}function Ar(n,o,e,t){if(!t||!t.display)return;let{length:i,width:a,fill:r,backgroundColor:s,borderColor:h}=t,f=Math.abs(o-i)+e;n.beginPath(),la(n,t),Ii(n,t),n.moveTo(f,-a),n.lineTo(o+e,0),n.lineTo(f,a),r===!0?(n.fillStyle=s||h,n.closePath(),n.fill(),n.shadowColor="transparent"):n.shadowColor=t.borderShadowColor,n.stroke()}function _f(n,o,e){let{x:t,y:i,x2:a,y2:r,centerX:s,centerY:h}=n,f=Math.atan2(r-i,a-t),b=wr(o.controlPoint,0),C={x:s+an(e,b.x,!1),y:h+an(e,b.y,!1)};return Cn(C,{x:s,y:h},f)}function oc(n,{x:o,y:e},{angle:t,adjust:i},a){!a||!a.display||(n.save(),n.translate(o,e),n.rotate(t),Ar(n,0,-i,a),n.restore())}function Mf(n,o,e,t){let{x:i,y:a,x2:r,y2:s,options:h}=o,{startOpts:f,endOpts:b,startAdjust:C,endAdjust:M}=Ec(o),N={x:i,y:a},D={x:r,y:s},j=Jd(N,e,D,0),X=Jd(N,e,D,1)-zt,Z=fr(N,e,D,C/t),ee=fr(N,e,D,1-M/t),be=new Path2D;n.beginPath(),be.moveTo(Z.x,Z.y),be.quadraticCurveTo(e.x,e.y,ee.x,ee.y),n.shadowColor=h.borderShadowColor,n.stroke(be),o.path=be,o.ctx=n,oc(n,Z,{angle:j,adjust:C},f),oc(n,ee,{angle:X,adjust:M},b)}var yn=class extends Ji{inRange(o,e,t,i){let a=this.options.rotation,r=(this.options.borderWidth+this.options.hitTolerance)/2;if(t!=="x"&&t!=="y")return kf({x:o,y:e},this.getProps(["width","height","centerX","centerY"],i),a,r);let{x:s,y:h,x2:f,y2:b}=this.getProps(["x","y","x2","y2"],i),C=t==="y"?{start:h,end:b}:{start:s,end:f},M=Cn({x:o,y:e},this.getCenterPoint(i),hi(-a));return M[t]>=C.start-r-bn&&M[t]<=C.end+r+bn}getCenterPoint(o){return Sn(this,o)}draw(o){let{width:e,height:t,centerX:i,centerY:a,options:r}=this;o.save(),Vo(o,this.getCenterPoint(),r.rotation),la(o,this.options),o.beginPath(),o.fillStyle=r.backgroundColor;let s=Ii(o,r);o.ellipse(i,a,t/2,e/2,zt/2,0,2*zt),o.fill(),s&&(o.shadowColor=r.borderShadowColor,o.stroke()),o.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(o,e){return Mc(o,e)}};yn.id="ellipseAnnotation";yn.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,label:Object.assign({},on.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};yn.defaultRoutes={borderColor:"color",backgroundColor:"color"};yn.descriptors={label:{_fallback:!0}};function kf(n,o,e,t){let{width:i,height:a,centerX:r,centerY:s}=o,h=i/2,f=a/2;if(h<=0||f<=0)return!1;let b=hi(e||0),C=Math.cos(b),M=Math.sin(b),N=Math.pow(C*(n.x-r)+M*(n.y-s),2),D=Math.pow(M*(n.x-r)-C*(n.y-s),2);return N/Math.pow(h+t,2)+D/Math.pow(f+t,2)<=1.0001}var oa=class extends Ji{inRange(o,e,t,i){let{x:a,y:r,x2:s,y2:h,width:f}=this.getProps(["x","y","x2","y2","width"],i),b=(this.options.borderWidth+this.options.hitTolerance)/2;return t!=="x"&&t!=="y"?yg({x:o,y:e},this.getCenterPoint(i),f/2,b):lc(t==="y"?{start:r,end:h,value:e}:{start:a,end:s,value:o},b)}getCenterPoint(o){return Sn(this,o)}draw(o){let e=this.options,t=e.borderWidth;if(e.radius<.1)return;o.save(),o.fillStyle=e.backgroundColor,la(o,e);let i=Ii(o,e);Tg(o,this,this.centerX,this.centerY),i&&!No(e.pointStyle)&&(o.shadowColor=e.borderShadowColor,o.stroke()),o.restore(),e.borderWidth=t}resolveElementProperties(o,e){let t=_c(o,e);return t.initProperties=sa(o,t,e),t}};oa.id="pointAnnotation";oa.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};oa.defaultRoutes={borderColor:"color",backgroundColor:"color"};var ra=class extends Ji{inRange(o,e,t,i){if(t!=="x"&&t!=="y")return this.options.radius>=.1&&this.elements.length>1&&Ef(this.elements,o,e,i);let a=Cn({x:o,y:e},this.getCenterPoint(i),hi(-this.options.rotation)),r=this.elements.map(f=>t==="y"?f.bY:f.bX),s=Math.min(...r),h=Math.max(...r);return a[t]>=s&&a[t]<=h}getCenterPoint(o){return Sn(this,o)}draw(o){let{elements:e,options:t}=this;o.save(),o.beginPath(),o.fillStyle=t.backgroundColor,la(o,t);let i=Ii(o,t),a=!0;for(let r of e)a?(o.moveTo(r.x,r.y),a=!1):o.lineTo(r.x,r.y);o.closePath(),o.fill(),i&&(o.shadowColor=t.borderShadowColor,o.stroke()),o.restore()}resolveElementProperties(o,e){let t=_c(o,e),{sides:i,rotation:a}=e,r=[],s=2*zt/i,h=a*lo;for(let f=0;f<i;f++,h+=s){let b=Tf(t,e,h);b.initProperties=sa(o,t,e),r.push(b)}return t.elements=r,t}};ra.id="polygonAnnotation";ra.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};ra.defaultRoutes={borderColor:"color",backgroundColor:"color"};function Tf({centerX:n,centerY:o},{radius:e,borderWidth:t,hitTolerance:i},a){let r=(t+i)/2,s=Math.sin(a),h=Math.cos(a),f={x:n+s*e,y:o-h*e};return{type:"point",optionScope:"point",properties:{x:f.x,y:f.y,centerX:f.x,centerY:f.y,bX:n+s*(e+r),bY:o-h*(e+r)}}}function Ef(n,o,e,t){let i=!1,a=n[n.length-1].getProps(["bX","bY"],t);for(let r of n){let s=r.getProps(["bX","bY"],t);s.bY>e!=a.bY>e&&o<(a.bX-s.bX)*(e-s.bY)/(a.bY-s.bY)+s.bX&&(i=!i),a=s}return i}var nn={box:on,doughnutLabel:aa,ellipse:yn,label:vn,line:Lo,point:oa,polygon:ra};Object.keys(nn).forEach(n=>{wl.describe(`elements.${nn[n].id}`,{_fallback:"plugins.annotation.common"})});var Df={update:Object.assign},Pf=_r.concat(Oo),rc=(n,o)=>Xi(o)?yr(n,o):n,vr=n=>n==="color"||n==="font";function kr(n="line"){return nn[n]?n:(console.warn(`Unknown annotation type: '${n}', defaulting to 'line'`),"line")}function If(n,o,e,t){let i=Rf(n,e.animations,t),a=o.annotations,r=Wf(o.elements,a);for(let s=0;s<a.length;s++){let h=a[s],f=Dc(r,s,h.type),b=h.setContext(Vf(n,f,r,h)),C=f.resolveElementProperties(n,b);C.skip=Of(C),"elements"in C&&(Nf(f,C.elements,b,i),delete C.elements),ui(f.x)||Object.assign(f,C),Object.assign(f,C.initProperties),C.options=Pc(b),i.update(f,C)}}function Of(n){return isNaN(n.x)||isNaN(n.y)}function Rf(n,o,e){return e==="reset"||e==="none"||e==="resize"?Df:new xl(n,o)}function Nf(n,o,e,t){let i=n.elements||(n.elements=[]);i.length=o.length;for(let a=0;a<o.length;a++){let r=o[a],s=r.properties,h=Dc(i,a,r.type,r.initProperties),f=e[r.optionScope].override(r);s.options=Pc(f),t.update(h,s)}}function Dc(n,o,e,t){let i=nn[kr(e)],a=n[o];return(!a||!(a instanceof i))&&(a=n[o]=new i,Object.assign(a,t)),a}function Pc(n){let o=nn[kr(n.type)],e={};e.id=n.id,e.type=n.type,e.drawTime=n.drawTime,Object.assign(e,yr(n,o.defaults),yr(n,o.defaultRoutes));for(let t of Pf)e[t]=n[t];return e}function yr(n,o){let e={};for(let t of Object.keys(o)){let i=o[t],a=n[t];vr(t)&&Zi(a)?e[t]=a.map(r=>rc(r,i)):e[t]=rc(a,i)}return e}function Vf(n,o,e,t){return o.$context||(o.$context=Object.assign(Object.create(n.getContext()),{element:o,get elements(){return e.filter(i=>i&&i.options)},id:t.id,type:"annotation"}))}function Wf(n,o){let e=o.length,t=n.length;if(t<e){let i=e-t;n.splice(t,0,...new Array(i))}else t>e&&n.splice(e,t-e);return n}var Lf="3.1.0",tn=new Map,sc=n=>n.type!=="doughnutLabel",Gf=_r.concat(Oo),Ic={id:"annotation",version:Lf,beforeRegister(){Cg("chart.js","4.0",Et.version)},afterRegister(){Et.register(nn)},afterUnregister(){Et.unregister(nn)},beforeInit(n){tn.set(n,{annotations:[],elements:[],visibleElements:[],listeners:{},listened:!1,moveListened:!1,hooks:{},hooked:!1,hovered:[]})},beforeUpdate(n,o,e){let t=tn.get(n),i=t.annotations=[],a=e.annotations;Xi(a)?Object.keys(a).forEach(r=>{let s=a[r];Xi(s)&&(s.id=r,i.push(s))}):Zi(a)&&i.push(...a),tf(i.filter(sc),n.scales)},afterDataLimits(n,o){let e=tn.get(n);ef(n,o.scale,e.annotations.filter(sc).filter(t=>t.display&&t.adjustScaleRange))},afterUpdate(n,o,e){let t=tn.get(n);$g(n,t,e),If(n,t,e,o.mode),t.visibleElements=t.elements.filter(i=>!i.skip&&i.options.display),Jg(n,t,e)},beforeDatasetsDraw(n,o,e){Ma(n,"beforeDatasetsDraw",e.clip)},afterDatasetsDraw(n,o,e){Ma(n,"afterDatasetsDraw",e.clip)},beforeDatasetDraw(n,o,e){Ma(n,o.index,e.clip)},beforeDraw(n,o,e){Ma(n,"beforeDraw",e.clip)},afterDraw(n,o,e){Ma(n,"afterDraw",e.clip)},beforeEvent(n,o,e){let t=tn.get(n);Zg(t,o.event,e)&&(o.changed=!0)},afterDestroy(n){tn.delete(n)},getAnnotations(n){let o=tn.get(n);return o?o.elements:[]},_getAnnotationElementsAtEventForMode(n,o,e){return Cr(n,o,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:n=>!Gf.includes(n)&&n!=="init",annotations:{_allKeys:!1,_fallback:(n,o)=>`elements.${nn[kr(o.type)].id}`},interaction:{_fallback:!0},common:{label:{_indexable:vr,_fallback:!0},_indexable:vr}},additionalOptionScopes:[""]};function Ma(n,o,e){let{ctx:t,chartArea:i}=n,a=tn.get(n);e&&Jo(t,i);let r=Ff(a.visibleElements,o).sort((s,h)=>s.element.options.z-h.element.options.z);for(let s of r)Bf(t,i,a,s);e&&er(t)}function Ff(n,o){let e=[];for(let t of n)if(t.options.drawTime===o&&e.push({element:t,main:!0}),t.elements&&t.elements.length)for(let i of t.elements)i.options.display&&i.options.drawTime===o&&e.push({element:i});return e}function Bf(n,o,e,t){let i=t.element;t.main?(Yd(e,i,"beforeDraw"),i.draw(n,o),Yd(e,i,"afterDraw")):i.draw(n,o)}var Uf=["widgetDataChart"];Et.register(Ic,Kn,Xn,Yn,$n,Qn,Zn,ho,po);var Oc=(()=>{class n{id=v.required();type=v.required();theme=v.required();runtime=A(de);dsService=A(Ei);ngZone=A(We);canvasService=A(je);unitsService=A(at);widgetDataChart=ie("widgetDataChart",{read:Ie});static DEFAULT_CONFIG={displayName:"Chart Label",color:"contrast",filterSelfPaths:!0,datachartPath:null,datachartSource:null,convertUnitTo:null,timeScale:"minute",period:10,numDecimal:1,inverseYAxis:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!0,showTimeScale:!1,startScaleAtZero:!1,verticalChart:!1,showYScale:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null};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;currentDatasetUUID=null;lastVerticalChart=null;pathSignature=se(()=>{let e=this.runtime.options();if(e.datachartPath)return[e.datachartPath,e.convertUnitTo,e.datachartSource,e.timeScale,e.period].join("|")});previousPathSignature=void 0;constructor(){R(()=>{let e=this.pathSignature();e!==this.previousPathSignature&&W(()=>{this.previousPathSignature=e,this.rebuildForDataset(this.runtime.options())})}),R(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||W(()=>{let i=this.lastVerticalChart!==null&&this.lastVerticalChart!==e.verticalChart;this.pathSignature()||i?(this.lastVerticalChart=e.verticalChart,this.rebuildForDataset(e)):this.chart&&(this.ensureAverageDatasetPresence(),this.updateAnnotationVisibility(),this.applyDynamicTrackAverageStyling(),this.setChartOptions(e),this.setDatasetsColors(),this.ngZone.runOutsideAngular(()=>this.chart?.update("none")))})})}ngAfterViewInit(){this.rebuildForDataset(this.runtime.options())}rebuildForDataset(e){!e.datachartPath||(this.dsServiceSub?.unsubscribe(),this.lineChartData.datasets=[],this.dsService.list().find(i=>i.uuid===this.id())?.label!==this.pathSignature()&&(this.dsService.remove(this.id()),this.dsService.create(e.datachartPath,e.datachartSource,e.timeScale,e.period,this.pathSignature(),!0,!1,this.id())),!this.widgetDataChart())||(this.datasetConfig=this.dsService.getDatasetConfig(this.id()),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.id()),this.datasetConfig&&(this.createDatasets(e),this.setChartOptions(e),this.chart?.destroy(),this.chart=new Et(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming(),this.ngZone.runOutsideAngular(()=>this.chart?.update())))}setChartOptions(e){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=e.verticalChart?"y":"x",e.verticalChart?this.lineChartOptions.scales={y:{type:"time",display:e.showTimeScale,position:e.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:e.showYScale,position:e.verticalChart?"top":"bottom",suggestedMin:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMin,suggestedMax:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMax,min:e.enableMinMaxScaleLimit?e.yScaleMin:null,max:e.enableMinMaxScaleLimit?e.yScaleMax:null,beginAtZero:e.startScaleAtZero,reverse:e.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:e.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:e.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:e.showYScale,position:"right",suggestedMin:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMin,suggestedMax:e.enableMinMaxScaleLimit?null:e.yScaleSuggestedMax,min:e.enableMinMaxScaleLimit?e.yScaleMin:null,max:e.enableMinMaxScaleLimit?e.yScaleMax:null,beginAtZero:e.startScaleAtZero,reverse:e.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:e.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:e.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${e.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:e.verticalChart?"x":"y",display:e.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:e.verticalChart?"x":"y",display:e.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:e.verticalChart?"x":"y",display:e.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(e){let t,i;e.inverseYAxis&&e.trackAgainstAverage?(t="start",i=!1):e.inverseYAxis&&!e.trackAgainstAverage?(t=!1,i="start"):!e.inverseYAxis&&e.trackAgainstAverage?(t=!0,i=!1):(t=!1,i=!0),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:e.trackAgainstAverage?1:0,parsing:!1,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?0:3,fill:t}),e.showAverageData&&this.lineChartData.datasets.push({label:"Average",data:[],order:e.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?3:0,fill:i}),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)})}ensureAverageDatasetPresence(){let e=this.runtime.options();if(!e||!this.chart)return;let t=this.lineChartData.datasets.some(i=>i.label==="Average");if(e.showAverageData&&!t){if(this.lineChartData.datasets.findIndex(a=>a.label==="Value")>=0){let a=e.inverseYAxis?e.trackAgainstAverage?!1:"start":!e.trackAgainstAverage;this.lineChartData.datasets.push({label:"Average",data:[],order:e.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:e.trackAgainstAverage?3:0,fill:a})}}else!e.showAverageData&&t&&(this.lineChartData.datasets=this.lineChartData.datasets.filter(i=>i.label!=="Average"))}applyDynamicTrackAverageStyling(){let e=this.runtime.options();if(!e)return;let t=this.lineChartData.datasets.find(s=>s.label==="Value"),i=this.lineChartData.datasets.find(s=>s.label==="Average"),a,r;e.inverseYAxis&&e.trackAgainstAverage?(a="start",r=!1):e.inverseYAxis&&!e.trackAgainstAverage?(a=!1,r="start"):!e.inverseYAxis&&e.trackAgainstAverage?(a=!0,r=!1):(a=!1,r=!0),t&&(t.order=e.trackAgainstAverage?1:0,t.borderWidth=e.trackAgainstAverage?0:3,t.fill=a),i&&(i.order=e.trackAgainstAverage?0:1,i.borderWidth=e.trackAgainstAverage?3:0,i.fill=r)}updateAnnotationVisibility(){let e=this.runtime.options();if(!e||!this.chart)return;let t=this.chart.options.plugins.annotation?.annotations;t&&(t.minimumLine&&(t.minimumLine.display=e.showDatasetMinimumValueLine),t.maximumLine&&(t.maximumLine.display=e.showDatasetMaximumValueLine),t.averageLine&&(t.averageLine.display=e.showDatasetAverageValueLine))}getThemeColors(){let e=this.runtime.options()?.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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.runtime.options()?.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,t=this.runtime.options()?.convertUnitTo;switch(t){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=t;break}return e}startStreaming(){let e=this.runtime.options();if(!e?.datachartPath)return;this.dsServiceSub?.unsubscribe();let t=this.dsService.getDatasetBatchThenLiveObservable(this.id());this.dsServiceSub=t?.subscribe(i=>{if(this.chart){if(Array.isArray(i)){let a=this.transformDatasetRows(i,0);if(this.chart.data.datasets[0].data.push(...a),e.showAverageData&&this.lineChartData.datasets[1]){let r=this.transformDatasetRows(i,e.datasetAverageArray);this.chart.data.datasets[1].data.push(...r)}}else{let a=this.transformDatasetRows([i],0)[0];if(this.chart.data.datasets[0].data.push(a),this.chart.data.datasets[0].data.length>(this.dataSourceInfo?.maxDataPoints??0)&&this.chart.data.datasets[0].data.shift(),e.showAverageData&&this.lineChartData.datasets[1]){let N=this.transformDatasetRows([i],e.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(N),this.chart.data.datasets[1].data.length>(this.dataSourceInfo?.maxDataPoints??0)&&this.chart.data.datasets[1].data.shift()}let r=e.trackAgainstAverage?i.data.sma??i.data.value:i.data.value,s=this.unitsService.convertToUnit(e.convertUnitTo,r);this.chart.options.plugins.title.text=`${s.toFixed(e.numDecimal)} ${this.getUnitsLabel()}`;let h=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastAverage),f=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastMinimum),b=this.unitsService.convertToUnit(e.convertUnitTo,i.data.lastMaximum),M=this.chart.options.plugins.annotation?.annotations;M&&(M.averageLine?.value!==h&&(M.averageLine.value=h,M.averageLine.label.content=`${h.toFixed(e.numDecimal)}`),M.minimumLine?.value!==f&&(M.minimumLine.value=f,M.minimumLine.label.content=`${f.toFixed(e.numDecimal)}`),M.maximumLine?.value!==b&&(M.maximumLine.value=b,M.maximumLine.label.content=`${b.toFixed(e.numDecimal)}`))}this.ngZone.runOutsideAngular(()=>this.chart?.update("none"))}})}transformDatasetRows(e,t){let i=this.runtime.options(),a=h=>this.unitsService.convertToUnit(i.convertUnitTo,h),r=i.verticalChart,s=i.datasetAverageArray;return e.map(h=>{if(r){if(t===0)return{x:a(h.data.value),y:h.timestamp};{let f={sma:h.data.sma,ema:h.data.ema,dema:h.data.doubleEma,avg:h.data.lastAverage};return{x:a(f[s]),y:h.timestamp}}}else{if(t===0)return{x:h.timestamp,y:a(h.data.value)};{let f={sma:h.data.sma,ema:h.data.ema,dema:h.data.doubleEma,avg:h.data.lastAverage};return{x:h.timestamp,y:a(f[s])}}}})}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||n)};static \u0275cmp=L({type:n,selectors:[["widget-data-chart"]],viewQuery:function(t,i){t&1&&te(i.widgetDataChart,Uf,5,Ie),t&2&&me()},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&H(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}"]})}return n})();var Rc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-boolean-light"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:26,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","bold","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","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","2.5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["filter","url(#glow)","id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","bold","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"],["filter","url(#glow)","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&&(K(),_(0,"svg",0)(1,"defs",1)(2,"linearGradient",2),H(3,"stop",3)(4,"stop",4),k(),H(5,"linearGradient",5),k(),_(6,"g",6),H(7,"rect",7),_(8,"svg",8)(9,"text",9),m(10),k()(),_(11,"g",10),H(12,"circle",11),k()(),_(13,"g",12),H(14,"rect",13),_(15,"svg",8)(16,"defs")(17,"filter",14),H(18,"feGaussianBlur",15),_(19,"feMerge"),H(20,"feMergeNode",16)(21,"feMergeNode",17),k()()(),_(22,"text",18),m(23),k()(),_(24,"g",19),H(25,"circle",20),k()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(9),Y("fill",i.labelColor),g(),ye(" ",i.data().ctrlLabel," "),g(12),Y("fill",i.valueColor),g(),ye("",i.data().ctrlLabel," "),g(2),Y("fill",i.valueColor))},encapsulation:2})}return n})();var Nc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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=qt(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||n)};static \u0275cmp=L({type:n,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","bold","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","bold","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&&(K(),_(0,"svg",0),H(1,"defs",1),_(2,"g",2),fa("pointerup",function(){return i.handleClickUp()})("pointerleave",function(){return i.handleClickUp()})("pointerdown",function(r){return i.handleClickDown(r)})("pointermove",function(r){return i.handlePointerMove(r)}),_(3,"g",3),H(4,"rect",4)(5,"rect",5),_(6,"svg",6)(7,"text",7),m(8),k()()(),_(9,"g",8),H(10,"rect",9)(11,"rect",10),_(12,"svg",6)(13,"text",11),m(14),k()()()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(7),Y("fill",i.labelColorDisabled),g(),ye(" ",i.data().ctrlLabel," "),g(3),Y("fill",i.valueColor),g(2),Y("fill",i.labelColorEnabled),g(),ye(" ",i.data().ctrlLabel," "))},encapsulation:2})}return n})();var Vc=(()=>{class n{data=v(null,{alias:"controlData"});theme=v(null);dimensions=v.required();toggleClick=$e();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||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-boolean-switch"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:24,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","bold","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","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","2.5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["filter","url(#glow)","id","text1","x","47.083984","y","22.636719",2,"font-style","normal","font-variant","normal","font-weight","bold","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"],["filter","url(#glow)","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&&(K(),_(0,"svg",0),H(1,"defs",1),_(2,"g",2),fa("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!0)}),H(3,"rect",3),_(4,"svg",4)(5,"text",5),m(6),k()(),_(7,"g",6),H(8,"rect",7)(9,"circle",8),k()(),_(10,"g",9),fa("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!1)}),H(11,"rect",10),_(12,"svg",4)(13,"defs")(14,"filter",11),H(15,"feGaussianBlur",12),_(16,"feMerge"),H(17,"feMergeNode",13)(18,"feMergeNode",14),k()()(),_(19,"text",15),m(20),k()(),_(21,"g",16),H(22,"rect",17)(23,"circle",18),k()()()),t&2&&(Y("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),g(5),Y("fill",i.labelColor),g(),ye(" ",i.data().ctrlLabel," "),g(13),Y("fill",i.valueColor),g(),ye("",i.data().ctrlLabel," "),g(2),Y("fill",i.valueColor))},encapsulation:2})}return n})();function qf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-switch",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function zf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-button",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function Hf(n,o){if(n&1){let e=ae();d(0,"app-svg-boolean-light",5),B("toggleClick",function(i){q(e);let a=I(2);return z(a.toggle(i))}),u()}if(n&2){let e=I().$implicit,t=I();T("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function jf(n,o){if(n&1&&(Dn(0),G(1,qf,1,3,"app-svg-boolean-switch",4)(2,zf,1,3,"app-svg-boolean-button",4)(3,Hf,1,3,"app-svg-boolean-light",4),Pn()),n&2){let e,t=o.$implicit;g(),F((e=t.type)==="1"?1:e==="2"?2:e==="3"?3:-1)}}function Yf(n,o){n&1&&U(0,"div",3)}var Wc=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={displayName:"Switch Panel Label",filterSelfPaths:!0,paths:[],enableTimeout:!1,dataTimeout:5,color:"contrast",putEnable:!0,putMomentary:!1,multiChildCtrls:[]};cdr=A(Ut);ngZone=A(We);runtime=A(de,{optional:!0});streams=A(_e,{optional:!0});dashboard=A(wt);signalkRequestsService=A(Di);appService=A(Lt);switchControls=w([]);labelColor=w(void 0);nbCtrl=null;ctrlDimensions={width:0,height:0};skRequestSub=new Ni;constructor(){R(()=>{let e=this.theme(),t=this.runtime?.options();!e||!t||W(()=>{this.labelColor.set(Se(t.color,e).dim)})}),R(()=>{let e=this.runtime?.options();if(!e)return;let t=(e.multiChildCtrls||[]).map(i=>Ze(Be({},i),{isNumeric:i.isNumeric??!1}));this.nbCtrl=t.length,W(()=>{this.switchControls.set(t),this.streams&&t.forEach(i=>{let a=e.paths;if(!a?.length)return;let r=a.findIndex(h=>h.pathID===i.pathID);r<0||!a[r]?.path||this.streams.observe(String(r),h=>{let f=h?.data?.value,b=i.isNumeric?[0,1,null].includes(f)?!!f:i.value:f;this.ngZone.run(()=>{this.switchControls.update(C=>{let M=C.findIndex(D=>D.pathID===i.pathID);if(M===-1)return C;let N=Ze(Be({},C[M]),{value:b});return[...C.slice(0,M),N,...C.slice(M+1)]}),this.cdr.markForCheck()})})})}),this.subscribeSKRequest()})}onResized(e){let t=this.nbCtrl||1,i=e.contentRect.height/t,a=35*e.contentRect.width/180,r=a<i?a:i;this.ctrlDimensions={width:e.contentRect.width,height:r}}subscribeSKRequest(){this.skRequestSub?.unsubscribe(),this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.id()){let i=`Toggle Widget ${this.runtime?.options()?.displayName||"Switch Panel"}: `;e.statusCode!=200&&(e.message?i+=e.message:i+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(i,0))}})}toggle(e){let t=this.runtime?.options();if(!t?.putEnable)return;let i=t.paths;if(!i)return;let a=i.findIndex(s=>s.pathID===e.pathID);if(a<0)return;let r=i[a].path;r&&(e.isNumeric?this.signalkRequestsService.putRequest(r,e.value?1:0,this.id()):this.signalkRequestsService.putRequest(r,e.value,this.id()))}ngOnDestroy(){this.skRequestSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-boolean-switch"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:6,vars:3,consts:[["widgetContainer",""],[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 a=ae();U(0,"widget-title",1),d(1,"div",2,0),B("onResize",function(s){return q(a),z(i.onResized(s))}),ue(3,jf,4,1,"ng-container",null,Me),u(),G(5,Yf,1,0,"div",3)}if(t&2){let a;T("text",i.runtime==null||(a=i.runtime.options())==null?null:a.displayName)("color",i.labelColor()),g(3),he(i.switchControls()),g(2),F(i.dashboard.isDashboardStatic()?-1:5)}},dependencies:[Pt,ai,Vc,Nc,Rc,To],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 n})();var Lc="mat-badge-content",Qf=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,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)}
|
|
47
|
+
`],encapsulation:2,changeDetection:0})}return n})(),H2=(()=>{class n{_ngZone=A(We);_elementRef=A(Ie);_ariaDescriber=A(Vs);_renderer=A(kn);_animationsDisabled=Xt();_idGenerator=A(yi);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=A(Os);_document=A(hs);constructor(){let e=A(Vn);e.load(Qf),e.load(Ps)}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(Lc),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 > .${Lc}`);for(let t of Array.from(e))t!==this._badgeElement&&t.remove()}static \u0275fac=function(t){return new(t||n)};static \u0275dir=st({type:n,selectors:[["","matBadge",""]],hostAttrs:[1,"mat-badge"],hostVars:20,hostBindings:function(t,i){t&2&&Je("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",qe],disabled:[2,"matBadgeDisabled","disabled",qe],position:[0,"matBadgePosition","position"],content:[0,"matBadge","content"],description:[0,"matBadgeDescription","description"],size:[0,"matBadgeSize","size"],hidden:[2,"matBadgeHidden","hidden",qe]}})}return n})(),Gc=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({imports:[Rs,Ot,Ot]})}return n})();var $f=["rotatingDial"],Zf=["awaIndicator"],Xf=["rudderStarboardRect"],Kf=["rudderPortRect"],Fc=(()=>{class n{rotatingDial=ie.required("rotatingDial");awaIndicator=ie.required("awaIndicator");rudderStarboardRect=ie.required("rudderStarboardRect");rudderPortRect=ie.required("rudderPortRect");apMode=v("off-line");targetPilotHeadingTrue=v.required();autopilotTarget=v.required();courseXte=v.required();compassHeading=v.required();headingDirectionTrue=v.required();appWindAngle=v.required();rudderAngle=v.required();compassAngle=w(0);awaAngle=w(0);prevCompassAngle=0;prevAwaAngle=0;lastRudderSigned=Number.NaN;oldRudderPrtAngle=0;newRudderPrtAngle=0;oldRudderStbAngle=0;newRudderStbAngle=0;apModeValue=w("");apModeValueAnnotation=w("");apModeValueDirection=w("");lockedMode=se(()=>{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==="true wind"?"Wind True Hold":e==="standby"?"Standby":"Off-line"});lockedHdg=se(()=>{let e=this.autopilotTarget();return Number.isFinite(e)?this.roundDeg(e):null});lockedHdgAnnotation=se(()=>{let e=this.apMode();if(["route","auto","gps","nav"].includes(e))return this.targetPilotHeadingTrue()?"True":"Mag";if(["wind","true wind"].includes(e)){let t=this.lockedHdg()??null;return t===null?"":t>0?"Stbd":"Port"}return""});hdgDirectionTrue=se(()=>this.headingDirectionTrue()?"T":"M");animationFrames=new WeakMap;ANIMATION_DURATION=1e3;DEG_TO_PX=16.66666667;ROT_CENTER=[500,560.061];ngZone=A(We);roundDeg(e){return Math.round(e)}constructor(){R(()=>{let e=this.compassHeading();if(!Number.isFinite(e))return;let t=this.roundDeg(e);W(()=>{let i=this.prevCompassAngle;if(i===t)return;this.prevCompassAngle=t,this.compassAngle.set(t);let a=this.rotatingDial()?.nativeElement;a&&Dt(a,-i,-t,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),R(()=>{let e=this.appWindAngle();if(!Number.isFinite(e))return;let i=(this.roundDeg(e)+360)%360;W(()=>{let a=this.prevAwaAngle;if(a===i)return;this.prevAwaAngle=i,this.awaAngle.set(i);let r=this.awaIndicator()?.nativeElement;r&&Dt(r,a,i,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),R(()=>{let e=this.rudderAngle();Number.isFinite(e)&&W(()=>{this.updateRudderAngle(-e)})}),R(()=>{let e=this.apMode(),t=this.appWindAngle(),i=Number.isFinite(t)?this.roundDeg(t):0,a=this.courseXte();W(()=>{switch(e){case"auto":case"route":{let r,s,h;a<0?h=" Port":a>0?h=" Stbd":h="",a=Math.abs(a),a>185?(r=(a/1852).toFixed(1),s=" nm"):(r=a.toFixed(0),s=" m"),this.apModeValueAnnotation.set(s),this.apModeValue.set(r),this.apModeValueDirection.set(h);break}case"standby":this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break;case"wind":this.apModeValueAnnotation.set(i?i>0?"S":"P":""),this.apModeValue.set(Math.abs(i)+"\xB0"),this.apModeValueDirection.set("");break;default:this.apModeValueAnnotation.set(""),this.apModeValue.set(""),this.apModeValueDirection.set("");break}})})}updateRudderAngle(e){if(!Number.isFinite(e))return;let t=this.roundDeg(e);if(this.lastRudderSigned===t)return;this.lastRudderSigned=t;let a=Math.min(Math.abs(t),30)*this.DEG_TO_PX;t<=0?(xa(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,a,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),xa(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderStbAngle=a,this.oldRudderPrtAngle=0):(xa(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,a,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),xa(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderPrtAngle=a,this.oldRudderStbAngle=0)}ngOnDestroy(){let e=[this.rotatingDial(),this.awaIndicator(),this.rudderPortRect(),this.rudderStarboardRect()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let a=this.animationFrames.get(i);a&&cancelAnimationFrame(a),this.animationFrames.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["app-svg-autopilot"]],viewQuery:function(t,i){t&1&&(te(i.rotatingDial,$f,5),te(i.awaIndicator,Zf,5),te(i.rudderStarboardRect,Xf,5),te(i.rudderPortRect,Kf,5)),t&2&&me(4)},inputs:{apMode:[1,"apMode"],targetPilotHeadingTrue:[1,"targetPilotHeadingTrue"],autopilotTarget:[1,"autopilotTarget"],courseXte:[1,"courseXte"],compassHeading:[1,"compassHeading"],headingDirectionTrue:[1,"headingDirectionTrue"],appWindAngle:[1,"appWindAngle"],rudderAngle:[1,"rudderAngle"]},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&&(K(),_(0,"svg",4)(1,"g",5)(2,"g",6),H(3,"path",7)(4,"path",8)(5,"path",9),k(),_(6,"g",10,0)(8,"g",11),H(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),_(46,"text",49)(47,"tspan",50),m(48,"330"),k()(),_(49,"text",51)(50,"tspan",52),m(51,"300"),k()(),_(52,"text",53)(53,"tspan",54),m(54,"W"),k()(),_(55,"text",55)(56,"tspan",56),m(57,"240"),k()(),_(58,"text",57)(59,"tspan",58),m(60,"210"),k()(),_(61,"text",59)(62,"tspan",60),m(63,"S"),k()(),_(64,"text",61)(65,"tspan",62),m(66,"150"),k()(),_(67,"text",63)(68,"tspan",64),m(69,"120"),k()(),_(70,"text",65)(71,"tspan",66),m(72,"E"),k()(),_(73,"text",67)(74,"tspan",68),m(75,"60"),k()(),_(76,"text",69)(77,"tspan",70),m(78,"30"),k()(),_(79,"text",71)(80,"tspan",72),m(81,"N"),k()()()(),H(82,"path",73),k(),_(83,"g",74)(84,"text",75),m(85),k(),_(86,"text",76),m(87),_(88,"tspan",77),m(89),k()(),_(90,"text",78),m(91),k(),_(92,"text",79),m(93,"HDG"),k(),_(94,"text",80),m(95),_(96,"tspan",77),m(97),k()()(),_(98,"g",81)(99,"text",82),m(100),_(101,"tspan",83),m(102,"\xB0"),k()(),_(103,"text",84),m(104),k(),_(105,"text",85),m(106),k()(),_(107,"g",86)(108,"g",87,1),H(110,"path",88),_(111,"text",89)(112,"tspan",90),m(113,"A"),k()()()(),_(114,"g",91),H(115,"rect",92,2)(117,"rect",93,3)(119,"rect",94)(120,"rect",95)(121,"rect",96)(122,"rect",97),k()()),t&2&&(g(84),Ft(i.apMode()=="wind"?"awa-text-dim":"contrast-text-dim"),Y("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),g(),ye(" ",i.apMode()==="route"?"XTE":"AWA"),g(),Ft(i.apMode()=="wind"?"awa-text":"contrast-text"),Y("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),g(),ne(i.apModeValue()??"--"),g(2),ne(i.apModeValueAnnotation()),g(),Y("display",i.apMode()=="route"?"inline":"none"),g(),ne(i.apModeValueDirection()),g(4),ye("",i.compassAngle()??"--","\xB0"),g(2),ne(i.hdgDirectionTrue()),g(3),ne(i.lockedHdg()??"--"),g(4),ne(i.lockedHdgAnnotation()),g(2),ne(i.lockedMode()),g(2),Y("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)}"],changeDetection:0})}return n})();var Jf=["childOutlet"],Bc=(()=>{class n{widgetProperties;outlet;_streams=A(_e,{optional:!0});_meta=A(oi,{optional:!0});_runtime=A(de,{optional:!0});_widgetService=A(Go);_app=A(Lt);theme=Qa(this._app.cssThemeColorRoles$,{requireSync:!0});childRef;compType;constructor(){R(()=>{let e=this.theme();this.childRef&&this.childRef.setInput("theme",e)})}ngOnInit(){let e=this.widgetProperties.type;if(!e)return;this.compType=this._widgetService.getComponentType(e),this._runtime?.initialize?.(void 0,this.widgetProperties.config);let t=this._runtime?.options();t&&(this.widgetProperties.config=t),this._streams?.applyStreamsConfigDiff?.(t),this._meta?.applyMetaConfigDiff?.(t),this.outlet&&this.compType&&(this.childRef=this.outlet.createComponent(this.compType),this.childRef.setInput("id",this.widgetProperties.uuid),this.childRef.setInput("type",this.widgetProperties.type),this.childRef.setInput("theme",this.theme()))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-embedded"]],viewQuery:function(t,i){if(t&1&&$t(Jf,7,Ga),t&2){let a;Ct(a=St())&&(i.outlet=a.first)}},inputs:{widgetProperties:"widgetProperties"},features:[gs([_e,oi,de])],decls:3,vars:0,consts:[["childOutlet",""],["appearance","raised",1,"widget-container","kip-widget-card-colors",2,"border","1px dashed transparent"]],template:function(t,i){t&1&&(d(0,"mat-card",1),Ba(1,null,0),u())},dependencies:[ao,Al],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 n})();function e0(n,o){if(n&1){let e=ae();d(0,"button",17),B("click",function(){q(e);let i=I();return z(i.toggleDodge())}),d(1,"mat-icon",18),K(),d(2,"svg",34)(3,"text",40),m(4,"Dodge"),u(),U(5,"path",41)(6,"path",42),d(7,"text",43),m(8,"!"),u()()()()}if(n&2){let e=I();Je("ap-btn-active",e.dodgeModeActive()),T("disabled",e.apBtnDisabled()),g(5),re("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor"),g(),re("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor")}}function t0(n,o){if(n&1){let e=ae();K(),d(0,"g",48),B("click",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))})("keyup.enter",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))})("keyup.space",function(){let i=q(e).$implicit,a=I(2);return z(!i.disabled&&a.onMenuItemClick(i.action))}),U(1,"rect",49),d(2,"text",50),m(3),u()()}if(n&2){let e=o.$implicit,t=o.$index,i=I(2);Y("aria-label",e.label),g(),Ft(e.isCancel?"svg-menu-item-cancel":e.current?"svg-menu-item-current":e.disabled?"svg-menu-item-disabled":"svg-menu-item"),Y("y",t*i.itemHeight)("height",i.itemHeight),g(),Ft(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"),Y("y",(t+.65)*i.itemHeight),g(),Ui(" ",e.current?"\u2713 ":"","",e.label," ")}}function i0(n,o){if(n&1){let e=ae();d(0,"div",44),B("click",function(){q(e);let i=I();return z(i.toggleMenu())})("keyup.enter",function(){q(e);let i=I();return z(i.toggleMenu())})("keyup.space",function(){q(e);let i=I();return z(i.toggleMenu())}),K(),d(1,"svg",45),B("click",function(i){return q(e),z(i.stopPropagation())})("keyup.enter",function(i){return q(e),z(i.stopPropagation())})("keyup.space",function(i){return q(e),z(i.stopPropagation())}),U(2,"rect",46),Dn(3),ue(4,t0,4,10,":svg:g",47,Me),Pn(),u()()}if(n&2){let e=I();g(),Y("viewBox","0 0 240 "+e.menuItems().length*e.itemHeight),g(),Y("height",e.menuItems().length*e.itemHeight),g(2),he(e.menuItems())}}function n0(n,o){n&1&&U(0,"div",39)}var ri={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"},Oi={BASE:n=>`${ri.V2_AUTOPILOTS}/${n}`,ENGAGE:n=>`${ri.V2_AUTOPILOTS}/${n}/engage`,DISENGAGE:n=>`${ri.V2_AUTOPILOTS}/${n}/disengage`,STATE:n=>`${ri.V2_AUTOPILOTS}/${n}/state`,MODE:n=>`${ri.V2_AUTOPILOTS}/${n}/mode`,TARGET_HEADING:n=>`${ri.V2_AUTOPILOTS}/${n}/target`,TACK:n=>`${ri.V2_AUTOPILOTS}/${n}/tack`,GYBE:n=>`${ri.V2_AUTOPILOTS}/${n}/gybe`,DODGE:n=>`${ri.V2_AUTOPILOTS}/${n}/dodge`,ADJUST_HEADING:n=>`${ri.V2_AUTOPILOTS}/${n}/target/adjust`},Tr={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"}},Er={COUNTDOWN_SECONDS:5,ERROR_DISPLAY_DURATION:6e3,MESSAGE_DISPLAY_DURATION:5e3},Uc=(()=>{class n{id=v.required();type=v.required();theme=v.required();static DEFAULT_CONFIG={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},autopilotV2Target:{description:"Autopilot API v2 Target",path:"self.steering.autopilot.target",source:"default",pathType:"number",convertUnitTo:"deg",isPathConfigurable:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",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};runtime=A(de);streams=A(_e,{optional:!0});_requests=A(Di);http=A(Ya);dashboard=A(wt);_destroyRef=A(rt);apiEndpoints;apState=w(null);apEngaged=w(null);apMode=w(null);dodgeModeActive=w(!1);autopilotTargetHeading=w(null);autopilotTargetWindHeading=w(null);heading=w(null);crossTrackError=w(null);windAngleApparent=w(null);rudder=w(null);autopilotTarget=bs(()=>{let e=this.autopilotTargetHeading(),t=this.autopilotTargetWindHeading();return this.apMode()==="wind"?t??null:e??null});currentRequests=new Set;apGrid=se(()=>this.apMode()?"grid":"none");apEngageBtnDisabled=se(()=>{let e=this.apState(),t=this.apEngaged(),i=this.runtime.options().autopilot.apiVersion;return i?i==="v1"?!!["standby","off-line"].includes(e):i!=="v2":!0});apBtnDisabled=se(()=>{let e=this.apEngaged();return this.runtime.options().autopilot.apiVersion==="v1"?this.apMode()==="standby":!e});adjustHdgBtnVisibility=se(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});tackBtnVisibility=se(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});routeBtnVisibility=se(()=>{let e=this.apMode();return e==="route"||e==="nav"});countdownOverlayVisibility=w("hidden");countdownOverlayText=w("");msgOverlayVisibility=w("hidden");msgOverlayText=w("");errorOverlayVisibility=w("hidden");errorOverlayText=w("");handleCountDownCounterTimeout=null;handleConfirmActionTimeout=null;handleDisplayErrorTimeout=null;handleMessageTimeout=null;isPersistentError=!1;countDownValue=-1;actionToBeConfirmed="";menuItems=se(()=>{let e=this.apMode(),t=this.runtime.options().autopilot.apiVersion,i=this.runtime.options().autopilot.pluginId,a=[];return W(()=>{if(t==="v2"){if(i=="pypilot-autopilot-provider"){let r=[{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}];a=this.parseMenuItems(r,e)}}else if(t==="v1"){let r=[{label:"Auto",action:"auto"},{label:"Wind",action:"wind"},{label:"Route",action:"route"},{label:"Close",action:"cancel",isCancel:!0}];a=this.parseMenuItems(r,e)}}),a});menuOpen=w(!1);itemHeight=60;padding=20;embedWidgetColor="contrast";nextWptProperties=w({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:Nn});ttwProperties=w({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:Nn});etaProperties=w({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:Nn});dtwProperties=w({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:Nn});xteProperties=w({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:Nn});constructor(){R(()=>{this.runtime?.options()&&W(()=>{this.cancelAllHttpRequests(),this.isPersistentError=!1,this.errorOverlayVisibility.set("hidden"),this.errorOverlayText.set(""),this.apEngaged.set(null),this.startWidget()})})}ngOnInit(){this.startWidget()}startWidget(){let e={statusCode:500,statusCodeDescription:"Autopilot widget not configured",requestId:"",state:""},t=this.runtime.options().autopilot.apiVersion,i=this.runtime.options().autopilot.instanceId,a=this.runtime.options().autopilot.pluginId,r=s=>{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(!t){r("Not configured with autopilot API version, skipping initialization");return}if(t==="v2"){if(!i){r("No autopilot instance ID configured for V2 API, skipping initialization");return}if(!a){r("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}r(`Unknown autopilot API version: ${t}`)}setV2Endpoint(e){return{engage:Oi.ENGAGE(e),disengage:Oi.DISENGAGE(e),mode:Oi.MODE(e),state:Oi.STATE(e),target:Oi.TARGET_HEADING(e),tack:Oi.TACK(e),gybe:Oi.GYBE(e),dodge:Oi.DODGE(e),adjustHeading:Oi.ADJUST_HEADING(e)}}isV2CommandSupported(e){return this.runtime.options().autopilot.modes.includes(e)}startV2Subscriptions(){this.streams.observe("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.streams.observe("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.streams.observe("autopilotEngaged",e=>{e.data?.value!=null?this.apEngaged.set(e.data.value):(this.apEngaged.set(!1),console.warn("[Autopilot Widget] Autopilot engaged is null or not available"))}),this.streams.observe("autopilotV2Target",e=>{e.data?.value?this.autopilotTarget.set(e.data.value):(this.autopilotTarget.set(null),console.warn("[Autopilot Widget] Autopilot V2 target is null or not available"))}),this.startDataSubscription()}startV1Subscriptions(){this.runtime.options().paths.autopilotMode.path=ri.V1_MODE_PATH,this.streams.observe("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.streams.observe("autopilotTargetHeading",e=>this.autopilotTargetHeading.set(e.data.value!=null?e.data.value:0)),this.streams.observe("autopilotTargetWindHeading",e=>this.autopilotTargetWindHeading.set(e.data.value!=null?e.data.value:0)),this.startDataSubscription(),this.subscribePutResponse(),this.apState.set(null)}startDataSubscription(){this.streams.observe("courseXte",e=>this.crossTrackError.set(e.data.value!=null?e.data.value:0)),this.streams.observe("rudderAngle",e=>{e.data.value===null?this.rudder.set(null):this.rudder.set(this.runtime.options().autopilot.invertRudder?-e.data.value:e.data.value)}),this.runtime.options().autopilot.headingDirectionTrue?this.streams.observe("headingTrue",e=>this.heading.set(e.data.value!=null?e.data.value:0)):this.streams.observe("headingMag",e=>this.heading.set(e.data.value!=null?e.data.value:0)),this.streams.observe("windAngleApparent",e=>this.windAngleApparent.set(e.data.value!=null?e.data.value:0))}subscribePutResponse(){this._requests.subscribeRequest().pipe(et(this._destroyRef)).subscribe(e=>{e.widgetUUID==this.id()&&this.commandReceived(e)})}makeHttpRequest(e){let t=e.pipe(et(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ra(()=>this.currentRequests.delete(t)))}cancelAllHttpRequests(){this.currentRequests.clear()}buildAndSendCommand(e){let t=Tr[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,Tr.advanceWaypoint);return}this.routeCommand(e,t)}routeCommand(e,t){let i=this.runtime.options().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.id()}))}sendV1Command(e){this._requests.putRequest(e.path,e.value,this.id()),console.log(`AP Action:
|
|
48
|
+
`+JSON.stringify(e))}sendV2Command(e,t){return it(this,null,function*(){let i=this.apiEndpoints;if(!i){console.error("V2 endpoints not available");return}let a=this.dodgeModeActive(),r;switch(e){case"+1":r={path:a?i.dodge:i.adjustHeading,value:{value:1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"+10":r={path:a?i.dodge:i.adjustHeading,value:{value:10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-1":r={path:a?i.dodge:i.adjustHeading,value:{value:-1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-10":r={path:a?i.dodge:i.adjustHeading,value:{value:-10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"advanceWaypoint":r={path:`${ri.V2_COURSE}/activeRoute/nextPoint`},this.executeRestRequest("PUT",r);break;case"tack":r={path:`${i.tack}/${t.value}`},this.executeRestRequest("POST",r);break;case"gybe":r={path:`${i.gybe}/${t}`},this.executeRestRequest("POST",r);break;case"dodge":r={path:i.dodge},this.dodgeModeActive()?this.executeRestRequest("DELETE",r).then(s=>{s.statusCode!==200&&this.dodgeModeActive.set(!1)}):this.executeRestRequest("POST",r).then(s=>{s.statusCode!==200&&this.dodgeModeActive.set(!0)});break;case"target_heading":r={path:i.target,value:t},this.executeRestRequest("PUT",r);break;case"standby":{let s={path:`${this.apEngaged()?i.disengage:i.engage}`};this.executeRestRequest("POST",s)}break;case"auto":case"compass":case"gps":case"wind":case"true wind":case"route":case"nav":yield this.setModeAndEnable(e,i);break;default:console.error("Unknown V2 command:",e),this.displayApError({statusCode:400,statusCodeDescription:"Unknown Command",message:`V2 command '${e}' is not supported`,widgetUUID:this.id()})}})}executeRestRequest(e,t){return it(this,null,function*(){try{let i;switch(e){case"POST":i=yield Oa(this.makeHttpRequest(this.http.post(t.path,void 0)));break;case"PUT":i=yield Oa(this.makeHttpRequest(this.http.put(t.path,t.value==null?void 0:t.value)));break;case"DELETE":i=yield Oa(this.makeHttpRequest(this.http.delete(t.path)));break;default:console.error("[Autopilot Widget] Unsupported REST method:",e)}return i&&i.statusCode===200?i:(console.warn("[Autopilot Widget] V2 Command completed with non-success status:",JSON.stringify(i)),i||{statusCode:0,message:"Unavailable",state:"not provided"})}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.id()}),{statusCode:0,message:i instanceof Error?i.message:"REST operation failed",state:null}}})}setModeAndEnable(e,t){return it(this,null,function*(){try{let i=yield this.executeRestRequest("PUT",{path:t.mode,value:{value:e}});if(i.statusCode!==200){console.error(`[Autopilot Widget] Failed to set mode '${e}':`,i);return}let a=yield this.executeRestRequest("PUT",{path:t.state,value:{value:"enabled"}});a.statusCode!==200&&console.error(`[Autopilot Widget] Failed to engage after mode '${e}':`,a)}catch(i){console.error("[Autopilot Widget] setModeAndEngage unexpected error:",i)}})}performTackOrGybe(e,t){if(this.runtime.options().autopilot.apiVersion==="v2")this.sendV2Command(e,{value:t});else{if(e!=="tack")return;let i=Tr[t==="port"?"tackToPort":"tackToStarboard"];this._requests.putRequest(i.path,i.value,this.id())}}setAbsoluteTarget(e){this.runtime.options().autopilot.apiVersion==="v2"?this.sendV2Command("target_heading",{value:e,units:"deg"}):console.error("[Autopilot Widget] Absolute target only available in V2 API")}toggleDodge(){this.runtime.options().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.id()}))}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=Er.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=""},Er.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(""))},Er.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.runtime.options().autopilot.apiVersion;return e.map(r=>{if(r.isCancel)return Ze(Be({},r),{current:!1,disabled:!1});let s=!1;if(i==="v1")switch(t){case"standby":s=r.action==="auto"||r.action==="wind";break;case"auto":s=r.action==="wind"||r.action==="route";break;case"wind":s=r.action==="auto";break;case"route":s=r.action==="auto";break;default:s=!1}else i==="v2"&&(s=this.runtime.options().autopilot.modes.includes(r.action));return Ze(Be({},r),{current:r.action===t,disabled:!s})})}ngOnDestroy(){this.cancelAllHttpRequests(),clearTimeout(this.handleCountDownCounterTimeout),clearTimeout(this.handleConfirmActionTimeout),clearTimeout(this.handleDisplayErrorTimeout),clearTimeout(this.handleMessageTimeout)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-autopilot"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:93,vars:64,consts:[[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","targetPilotHeadingTrue","autopilotTarget","courseXte","compassHeading","headingDirectionTrue","appWindAngle","rudderAngle"],[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
|
|
49
|
+
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"],[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&&(d(0,"div",0)(1,"div",1)(2,"button",2),B("click",function(){return i.toggleMenu()}),d(3,"mat-icon",3),K(),d(4,"svg",4)(5,"text",5),m(6),At(7,"titlecase"),u()()()(),Ve(),d(8,"button",6),B("click",function(){return i.buildAndSendCommand("standby")}),d(9,"mat-icon",3),K(),d(10,"svg",4)(11,"text",7),m(12,"Disengage"),u()()()()(),Ve(),d(13,"div",8),U(14,"app-svg-autopilot",9),d(15,"div",10),K(),d(16,"svg",11),U(17,"text",12)(18,"text",13),u()(),Ve(),d(19,"div",14)(20,"span",15),m(21,"warning"),u(),K(),d(22,"svg",11),U(23,"text",16),u()()(),Ve(),d(24,"div")(25,"button",17),B("click",function(){return i.buildAndSendCommand("-1")}),d(26,"mat-icon",18),K(),d(27,"svg",19)(28,"text",20),m(29,"-1\xB0"),u(),U(30,"path",21),u()()()(),Ve(),d(31,"div")(32,"button",17),B("click",function(){return i.buildAndSendCommand("+1")}),d(33,"mat-icon",18),K(),d(34,"svg",19)(35,"text",22),m(36,"+1\xB0"),u(),U(37,"path",23),u()()()(),Ve(),d(38,"div")(39,"button",17),B("click",function(){return i.buildAndSendCommand("-10")}),d(40,"mat-icon",18),K(),d(41,"svg",19)(42,"text",20),m(43,"-10\xB0"),u(),U(44,"path",24)(45,"path",25),u()()()(),Ve(),d(46,"div")(47,"button",17),B("click",function(){return i.buildAndSendCommand("+10")}),d(48,"mat-icon",18),K(),d(49,"svg",19)(50,"text",22),m(51,"+10\xB0"),u(),U(52,"path",26)(53,"path",27),u()()()(),Ve(),d(54,"div")(55,"button",17),B("click",function(){return i.buildAndSendCommand("tackToPort")}),d(56,"mat-icon",18),K(),d(57,"svg",19)(58,"text",20),m(59,"Tack"),u(),d(60,"g",28),U(61,"path",29)(62,"path",30)(63,"circle",31),u()()()()(),Ve(),d(64,"div")(65,"button",17),B("click",function(){return i.buildAndSendCommand("tackToStarboard")}),d(66,"mat-icon",18),K(),d(67,"svg",19)(68,"text",20),m(69,"Tack"),u(),U(70,"path",29)(71,"path",30)(72,"circle",31),u()()()(),Ve(),d(73,"div"),U(74,"widget-embedded",32),u(),d(75,"div"),U(76,"widget-embedded",32),u(),d(77,"div"),U(78,"widget-embedded",32),u(),d(79,"div"),U(80,"widget-embedded",32),u(),d(81,"div"),G(82,e0,9,11,"button",33),u(),d(83,"div")(84,"button",17),B("click",function(){return i.buildAndSendCommand("route")}),d(85,"mat-icon",18),K(),d(86,"svg",34)(87,"text",35),m(88,"Adv Wpt"),u(),U(89,"path",36)(90,"path",37),u()()()()(),G(91,i0,6,2,"div",38),G(92,n0,1,0,"div",39)),t&2&&(re("display",i.apGrid()),g(2),T("disabled",i.apState()==="off-line"||i.apMode()==="off-line"),g(4),ye("Mode ",Bt(7,62,i.apMode())," \xA0\u22EE"),g(2),Ft(i.apEngaged()?"ap-btn ap-btn-ctrlbar ap-btn-engage":"ap-btn ap-btn-ctrlbar ap-btn-disengage"),T("disabled",i.apEngageBtnDisabled()),g(6),T("apMode",i.apMode())("targetPilotHeadingTrue",i.runtime.options().autopilot.courseDirectionTrue)("autopilotTarget",i.autopilotTarget())("courseXte",i.crossTrackError())("compassHeading",i.heading())("headingDirectionTrue",i.runtime.options().autopilot.headingDirectionTrue)("appWindAngle",i.windAngleApparent())("rudderAngle",i.rudder()),g(),re("visibility",i.countdownOverlayVisibility()),g(2),T("innerHTML",i.countdownOverlayText(),La),g(),re("visibility",i.countDownValue>=0?"visible":"hidden"),T("innerHTML",i.countDownValue+1,La),g(),re("visibility",i.errorOverlayVisibility()),g(4),T("innerHTML",i.errorOverlayText(),La),g(),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(6),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(6),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(7),re("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(7),re("display",i.tackBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(9),re("display",i.tackBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()),g(8),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.nextWptProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.etaProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.dtwProperties()),g(),re("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),g(),T("widgetProperties",i.xteProperties()),g(),re("display",i.routeBtnVisibility()?"block":"none"),g(),F(i.runtime.options().autopilot.apiVersion==="v2"?82:-1),g(),re("display",i.routeBtnVisibility()?"block":"none"),g(),T("disabled",i.apBtnDisabled()||i.dodgeModeActive()),g(7),F(i.menuOpen()?91:-1),g(),F(i.dashboard.isDashboardStatic()?-1:92))},dependencies:[Fc,Ke,lt,Xe,ze,Gc,Bc,Ha],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 n})();var a0=["Core","Gauge","Component","Racing"];var Go=(()=>{class n{_plugins=A(oo);_widgetCategories=[...a0];_componentTypeCache=new Map;_componentTypeMap={WidgetNumericComponent:id,WidgetTextComponent:nd,WidgetWindTrendsChartComponent:ad,WidgetWindComponent:cd,WidgetTutorialComponent:md,WidgetSliderComponent:hd,WidgetSimpleLinearComponent:gd,WidgetRacesteerComponent:Ad,WidgetRacerTimerComponent:vd,WidgetRacerLineComponent:yd,WidgetRaceTimerComponent:Cd,WidgetPositionComponent:Sd,WidgetLabelComponent:wd,WidgetIframeComponent:xd,WidgetHorizonComponent:_d,WidgetHeelGaugeComponent:Md,WidgetSteelGaugeComponent:Td,WidgetGaugeNgRadialComponent:Nd,WidgetGaugeNgLinearComponent:Wd,WidgetGaugeNgCompassComponent:Fd,WidgetFreeboardskComponent:El,WidgetDatetimeComponent:Bd,WidgetDataChartComponent:Oc,WidgetBooleanSwitchComponent:Wc,WidgetAutopilotComponent:Uc};_widgetDefinition=[{name:"Numeric",description:"Displays numeric data in a clear and concise format, with options to show minimum and/or maximum recorded values. Includes an optional background minichart for quick visual trend insights.",icon:"numericWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-numeric",componentClassName:"WidgetNumericComponent"},{name:"Text",description:"Displays text data with a customizable color formatting option.",icon:"textWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-text",componentClassName:"WidgetTextComponent"},{name:"Date & Time",description:"Displays date and time data with fully custom formatting options and timezone correction.",icon:"datetimeWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-datetime",componentClassName:"WidgetDatetimeComponent"},{name:"Position",description:"Displays latitude and longitude for location tracking and navigation.",icon:"positionWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-position",componentClassName:"WidgetPositionComponent"},{name:"Static Label",description:"A static text widget that allows you to add customizable labels to your dashboard, helping to organize and clarify your layout effectively.",icon:"labelWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-label",componentClassName:"WidgetLabelComponent"},{name:"Switch Panel",description:"A Digital Switching panel group with multiple controls including toggle switches, indicator lights, and press buttons to send Signal K paths values and other operations.",icon:"switchpanelWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-boolean-switch",componentClassName:"WidgetBooleanSwitchComponent"},{name:"Slider",description:"A Digital Switching range slider that allows users to adjust values, such as controlling lighting intensity or audio volume from 0% to 100%.",icon:"sliderWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Core",requiredPlugins:[],selector:"widget-slider",componentClassName:"WidgetSliderComponent"},{name:"Compact Linear",description:"A simple horizontal linear gauge with a large value label offering a clean, compact modern look.",icon:"simpleLinearGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-simple-linear",componentClassName:"WidgetSimpleLinearComponent"},{name:"Linear",description:"A horizontal or vertical linear gauge that supports zone highlighting.",icon:"linearGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-linear",componentClassName:"WidgetGaugeNgLinearComponent"},{name:"Radial",description:"A radial gauge with configurable capacity and measurement dials plus zone highlighting.",icon:"radialGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-radial",componentClassName:"WidgetGaugeNgRadialComponent"},{name:"Compass",description:"A faceplate or card-style rotating compass gauge with multiple cardinal point indicator options.",icon:"compassGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-ng-compass",componentClassName:"WidgetGaugeNgCompassComponent"},{name:"Level Gauge",description:"Dual-scale heel angle indicator combining a high\u2011precision \xB15\xB0 fine level with a wide \xB140\xB0 coarse arc for fast trim tuning and broader heel / sea\u2011state monitoring.",icon:"level",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-heel-gauge",componentClassName:"WidgetHeelGaugeComponent"},{name:"Pitch & Roll",description:"Horizon-style attitude indicator showing live pitch and roll degrees with smooth animation\u2014ideal for monitoring trim, heel, and sea-state response.",icon:"pitchRollGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-horizon",componentClassName:"WidgetHorizonComponent"},{name:"Classic Steel",description:"A traditional steel looking linear & radial gauges replica that supports range sizes and zones highlights.",icon:"steelGauge",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Gauge",requiredPlugins:[],selector:"widget-gauge-steel",componentClassName:"WidgetSteelGaugeComponent"},{name:"Windsteer",description:"A wind steering display that combines wind, wind sectors, heading, course over ground and next waypoint information.",icon:"windsteeringWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-wind-steer",componentClassName:"WidgetWindComponent"},{name:"Freeboard-SK",description:"Adds the Freeboard-SK chart plotter as a widget with automatic sign-in to your dashboard.",icon:"freeboardWidget",minWidth:6,minHeight:8,defaultWidth:6,defaultHeight:14,category:"Component",requiredPlugins:["freeboard-sk","tracks","resources-provider","course-provider"],selector:"widget-freeboardsk",componentClassName:"WidgetFreeboardskComponent"},{name:"Autopilot Head",description:"Provides typical autopilot controls for Signal K v1 & v2 Autopilot API devices. Requires a compatible hardware-specific Autopilot plugin for full functionality.",icon:"autopilotWidget",minWidth:4,minHeight:14,defaultWidth:4,defaultHeight:14,category:"Component",requiredPlugins:[],optionalPlugins:["autopilot","pypilot-autopilot-provider"],selector:"widget-autopilot",componentClassName:"WidgetAutopilotComponent"},{name:"Realtime Data Chart",description:"Visualizes data on a real-time chart with multiple preconfigured series including actuals, SMA and period overall averages and Min/Max. Requires the KIP Dataset to be configured.",icon:"datachartWidget",minWidth:2,minHeight:4,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-data-chart",componentClassName:"WidgetDataChartComponent"},{name:"Embed Webpage Viewer",description:"Embeds external web-based applications\u2014such as Grafana graphs or other Signal K apps\u2014into your dashboard for seamless integration. Interaction is disabled by default but can be enabled.",icon:"embedWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-iframe",componentClassName:"WidgetIframeComponent"},{name:"Tutorial",description:"An instructional widget that guides new users through basic navigation, gestures, and dashboard editing steps.",icon:"helpWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:6,category:"Component",requiredPlugins:[],selector:"widget-tutorial",componentClassName:"WidgetTutorialComponent"},{name:"Racesteer (BETA)",description:"A dynamic race steering display that fuses polar performance data with live conditions to guide optimal steering, tacking, and gybing angles for maximum speed. Instantly compare performance against competition polars for smarter tactical decisions.",icon:"racesteeringWidget",minWidth:1,minHeight:1,defaultWidth:4,defaultHeight:6,category:"Racing",requiredPlugins:["signalk-polar-performance-plugin"],selector:"widget-racesteer",componentClassName:"WidgetRacesteerComponent"},{name:"Racer - Start Line Insight",description:"Gain a tactical advantage for racing starts: set and adjust the port and starboard ends of the start line, see your distance to the line, the favored end, and how much the line is favored or unfavored. Includes visual integration with Freeboard SK for interactive line adjustment and display.",icon:"racerlineWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:4,requiredPlugins:["signalk-racer"],category:"Racing",selector:"widget-racer-line",componentClassName:"WidgetRacerLineComponent"},{name:"Racer - Start Timer",description:"An advanced racing countdown timer that indicates OCS (On Course Side) status. Set the start line, choose or adjust the duration, or specify the exact start time. Automatically switches to the target dashboard at the start unless over early.",icon:"racertimerWidget",minWidth:4,minHeight:4,defaultWidth:4,defaultHeight:4,requiredPlugins:["signalk-racer"],category:"Racing",selector:"widget-racer-timer",componentClassName:"WidgetRacerTimerComponent"},{name:"Wind Trends",description:"Real-time True Wind trends with dual top axes for direction (\xB0) and speed (knots). Displays live values and SMA over the current period\u2019s average.",icon:"windtrendsWidget",minWidth:10,minHeight:8,defaultWidth:10,defaultHeight:8,category:"Racing",requiredPlugins:[],selector:"widget-windtrends-chart",componentClassName:"WidgetWindTrendsChartComponent"}];get kipWidgets(){return this._widgetDefinition}get categories(){return this._widgetCategories}getComponentType(e){let t=this._componentTypeCache.get(e);if(t)return t;let i=this._widgetDefinition.find(r=>r.selector===e);if(!i)return;let a=this._componentTypeMap[i.componentClassName];if(a)return this._componentTypeCache.set(e,a),a}getKipWidgetsWithStatus(){return it(this,null,function*(){let e={},t=Array.from(new Set(this._widgetDefinition.flatMap(i=>[...i.requiredPlugins||[],...i.optionalPlugins||[]])));return yield Promise.all(t.map(i=>it(this,null,function*(){e[i]=yield this._plugins.isEnabled(i)}))),this._widgetDefinition.map(i=>{let a=i.requiredPlugins||[],r=i.optionalPlugins||[],s=a.map(C=>({name:C,enabled:e[C],required:!0})),h=r.map(C=>({name:C,enabled:e[C],required:!1})),f=[...s,...h],b=s.every(C=>C.enabled);return b&&r.length>0&&(b=h.some(C=>C.enabled)),Ze(Be({},i),{isDependencyValid:b,pluginsStatus:f})})})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function o0(n,o){n&1&&(d(0,"span"),m(1,", "),u())}function r0(n,o){if(n&1&&(d(0,"span",8),m(1),d(2,"span",9),m(3),u()(),G(4,o0,2,0,"span")),n&2){let e=o.$implicit,t=o.$index,i=o.$count,a=I(2);T("ngClass",a.pluginDependencyValid()?e.required?"":e.enabled?"dependency-optional-present-met":"dependency-optional-missing-met":e.enabled?e.required?"dependency-required-ok":"dependency-optional-ok":e.required?"dependency-required-error":"dependency-optional-error"),Y("title",e.required?"Required":"Optional"),g(),Ui(" ",e.enabled?"\u2714":"\u2716"," ",e.name," "),g(2),ne(e.required?"":"(optional)"),g(),F(t!==i-1?4:-1)}}function s0(n,o){if(n&1&&(d(0,"div",7)(1,"span"),m(2,"Plugins:"),u(),ue(3,r0,5,6,null,null,Me),u()),n&2){let e=I();Rn(e.pluginsStatus().length>0?"margin-bottom: 8px;margin-top: 4px;":""),g(),Ft(e.pluginDependencyValid()?"":"dependency-error"),g(2),he(e.pluginsStatus())}}var qc=(()=>{class n{svgIcon=v.required();iconSize=v.required();name=v.required();description=v.required();pluginsStatus=v.required();pluginDependencyValid=v.required();onKeydown(e){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),e.target.click())}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widget-list-card"]],hostBindings:function(t,i){t&1&&B("keydown",function(r){return i.onKeydown(r)})},inputs:{svgIcon:[1,"svgIcon"],iconSize:[1,"iconSize"],name:[1,"name"],description:[1,"description"],pluginsStatus:[1,"pluginsStatus"],pluginDependencyValid:[1,"pluginDependencyValid"]},decls:9,vars:11,consts:[["role","button","tabindex","0",1,"item-container"],[1,"item-icon"],["aria-hidden","false",3,"svgIcon"],[1,"item-label"],[1,"title","no-text-select"],[1,"dependency","no-text-select",3,"style"],[1,"description","no-text-select"],[1,"dependency","no-text-select"],[3,"ngClass"],[1,"plugin-type-label"]],template:function(t,i){t&1&&(d(0,"div",0)(1,"div",1),U(2,"mat-icon",2),u(),d(3,"div",3)(4,"p",4),m(5),u(),G(6,s0,5,4,"div",5),d(7,"span",6),m(8),u()()()),t&2&&(Y("aria-disabled",i.pluginDependencyValid()?null:"true"),g(2),re("width",i.iconSize(),"px")("height",i.iconSize(),"px"),T("svgIcon",i.svgIcon()),g(2),Rn(i.pluginsStatus().length>0?"margin-bottom:0px; margin-top: 4px":""),g(),ne(i.name()),g(),F(i.pluginsStatus().length>0?6:-1),g(2),ne(i.description()))},dependencies:[ja,ys,Xe,ze],styles:["[_nghost-%COMP%]{display:block;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;padding:0}.item-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;width:100%;height:100%;margin:0;padding:15px;border:solid 1px var(--mat-sys-outline);cursor:pointer}.item-container[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-inverse-on-surface)}.item-container[_ngcontent-%COMP%]:focus-visible{background-color:var(--mat-sys-surface-bright);outline:-webkit-focus-ring-color auto 0px}.item-icon[_ngcontent-%COMP%]{width:48px}.item-label[_ngcontent-%COMP%]{width:calc(100% - 48px);text-align:left;padding-left:15px}.title[_ngcontent-%COMP%]{font-size:var(--mat-sys-label-medium-line-height)}.description[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.dependency[_ngcontent-%COMP%]{color:var(--mat-sys-outline);text-align:start;font-style:italic;font-size:var(--mat-sys-label-large-size)}.dependency-error[_ngcontent-%COMP%]{color:var(--kip-port-color);font-weight:700}.dependency-required-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color);font-weight:700}.dependency-required-error[_ngcontent-%COMP%]{color:var(--kip-port-color);font-weight:700;text-decoration:underline}.dependency-optional-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color)}.dependency-optional-error[_ngcontent-%COMP%]{color:var(--kip-port-color)}.dependency-optional-missing-met[_ngcontent-%COMP%]{color:var(--mat-sys-outline);text-decoration:line-through}.dependency-optional-present-met[_ngcontent-%COMP%]{color:var(--mat-sys-outline)}.plugin-type-label[_ngcontent-%COMP%]{font-size:.8em;margin-left:2px;opacity:.7}.dependency-ok[_ngcontent-%COMP%]{color:var(--kip-starboard-color)}.no-text-select[_ngcontent-%COMP%]{-webkit-user-select:none;user-select:none}"]})}return n})();var l0=(n,o)=>o.selector;function d0(n,o){if(n&1&&(d(0,"mat-button-toggle",1),m(1),u()),n&2){let e=o.$implicit;T("value",e),g(),ye(" ",e," ")}}function c0(n,o){if(n&1){let e=ae();d(0,"widget-list-card",3),B("click",function(){let i=q(e).$implicit,a=I();return z(a.onSelectWidget(i))}),u()}if(n&2){let e=o.$implicit;Je("dependency-missing",!e.isDependencyValid),T("svgIcon",e.icon)("iconSize",48)("name",e.name)("description",e.description)("pluginDependencyValid",e.isDependencyValid)("pluginsStatus",e.pluginsStatus)}}var zc=(()=>{class n{_dialogRef=A(Si);_widgets=A(Go);_widgetsList=[];filteredWidgetsList=w([]);_widgetCategory=w("Core");isDependencyValid=w(!0);ngOnInit(){this.loadWidgets()}loadWidgets(){return it(this,null,function*(){this._widgetsList=yield this._widgets.getKipWidgetsWithStatus(),this.filteredWidgetsList.set(this._widgetsList.filter(e=>e.category===this._widgetCategory()))})}onCategoryChange(e){this.filteredWidgetsList.set(this._widgetsList.filter(t=>t.category===e.value)),this._widgetCategory.set(e.value)}onSelectWidget(e){if(!e.isDependencyValid)return;let{name:t,description:i,icon:a,minWidth:r,minHeight:s,defaultWidth:h,defaultHeight:f,category:b,requiredPlugins:C,optionalPlugins:M,selector:N,componentClassName:D}=e,j=Ze(Be({name:t,description:i,icon:a,minWidth:r,minHeight:s,defaultWidth:h,defaultHeight:f,category:b,requiredPlugins:C},M?{optionalPlugins:M}:{}),{selector:N,componentClassName:D});this._dialogRef.close(j)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["widgets-list"]],decls:7,vars:1,consts:[["name","widgetCategories","aria-label","Widget categories",1,"list-filter",3,"change","value"],[3,"value"],[3,"dependency-missing","svgIcon","iconSize","name","description","pluginDependencyValid","pluginsStatus"],[3,"click","svgIcon","iconSize","name","description","pluginDependencyValid","pluginsStatus"]],template:function(t,i){t&1&&(d(0,"div")(1,"mat-button-toggle-group",0),B("change",function(r){return i.onCategoryChange(r)}),ue(2,d0,2,2,"mat-button-toggle",1,Me),u(),d(4,"div"),ue(5,c0,1,8,"widget-list-card",2,l0),u()()),t&2&&(g(),T("value",i._widgetCategory()),g(),he(i._widgets.categories),g(3),he(i.filteredWidgetsList()))},dependencies:[td,lr,_o,qc],styles:[".list-filter[_ngcontent-%COMP%]{margin-bottom:20px}.dependency-missing[_ngcontent-%COMP%]{pointer-events:none;opacity:.8;background-color:var(--mat-sys-neutral10)}"]})}return n})();var Hc=(()=>{class n{dialogRef=A(Si);upgradeSvc=A(Dl);upgrade(){this.upgradeSvc.runUpgrade(void 0)}startFresh(){this.upgradeSvc.startFresh(),this.dialogRef.close()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["upgrade-config"]],decls:193,vars:0,consts:[[1,"warning"],[1,"nav-table"],[2,"font-size","x-large"],["href","https://discord.gg/AMDYT2DQga","target","_blank"],[1,"button-group"],["mat-flat-button","",3,"click"],["mat-flat-button","",2,"margin-left","20px",3,"click"]],template:function(t,i){t&1&&(d(0,"h2"),m(1,"All New Touch, Mouse, and Keyboard Navigation"),u(),d(2,"p",0)(3,"strong"),m(4,"Heads up:"),u(),m(5," The new version introduces a completely redesigned fullscreen interface with no navigation bar. Please review the input modes table below to get an understanding of the new ways to operate KIP before upgrading. After the upgrade, give yourself time to get comfortable with the changes."),u(),d(6,"table",1)(7,"thead")(8,"tr")(9,"th"),m(10,"Actions"),u(),d(11,"th"),m(12,"Touch"),u(),d(13,"th"),m(14,"Mouse"),u(),d(15,"th"),m(16,"Keyboard Shortcuts"),u()()(),d(17,"tbody")(18,"tr")(19,"td"),m(20,"Open Actions menu"),u(),d(21,"td"),m(22,"Swipe left"),u(),d(23,"td"),m(24,"Click, drag left, and release"),u(),d(25,"td")(26,"kbd"),m(27,"Shift"),u(),m(28," + "),d(29,"kbd"),m(30,"Ctrl"),u(),m(31," + "),d(32,"kbd",2),m(33,"\u2190"),u(),m(34," (Left Arrow)"),u()(),d(35,"tr")(36,"td"),m(37,"Open Notification menu"),u(),d(38,"td"),m(39,"Swipe right"),u(),d(40,"td"),m(41,"Click, drag right, and release"),u(),d(42,"td")(43,"kbd"),m(44,"Shift"),u(),m(45," + "),d(46,"kbd"),m(47,"Ctrl"),u(),m(48," + "),d(49,"kbd",2),m(50,"\u2192"),u(),m(51," (Right Arrow)"),u()(),d(52,"tr")(53,"td"),m(54,"Cycle through dashboards"),u(),d(55,"td"),m(56,"Swipe up/down"),u(),d(57,"td"),m(58,"Click, drag up/down, and release"),u(),d(59,"td")(60,"kbd"),m(61,"Shift"),u(),m(62," + "),d(63,"kbd"),m(64,"Ctrl"),u(),m(65," + "),d(66,"kbd",2),m(67,"\u2191"),u(),m(68,"/"),d(69,"kbd",2),m(70,"\u2193"),u(),m(71," (Up/Down Arrow)"),u()(),d(72,"tr")(73,"td"),m(74,"Toggle Fullscreen"),u(),d(75,"td"),m(76,"N/A"),u(),d(77,"td"),m(78,"N/A"),u(),d(79,"td")(80,"kbd"),m(81,"Shift"),u(),m(82," + "),d(83,"kbd"),m(84,"Ctrl"),u(),m(85," + "),d(86,"kbd"),m(87,"F"),u()()(),d(88,"tr")(89,"td"),m(90,"Toggle Night mode"),u(),d(91,"td"),m(92,"N/A"),u(),d(93,"td"),m(94,"N/A"),u(),d(95,"td")(96,"kbd"),m(97,"Shift"),u(),m(98," + "),d(99,"kbd"),m(100,"Ctrl"),u(),m(101," + "),d(102,"kbd"),m(103,"N"),u()()(),d(104,"tr")(105,"td"),m(106,"Toggle dashboard edit mode"),u(),d(107,"td"),m(108,"N/A"),u(),d(109,"td"),m(110,"N/A"),u(),d(111,"td")(112,"kbd"),m(113,"Shift"),u(),m(114," + "),d(115,"kbd"),m(116,"Ctrl"),u(),m(117," + "),d(118,"kbd"),m(119,"E"),u()()()()(),d(120,"i"),m(121,"Note that the words Touch and Tap are synonymous with mouse click."),u(),U(122,"br")(123,"br"),d(124,"h2"),m(125,"Migration Limitations"),u(),d(126,"p")(127,"span",0),m(128,"Important:"),u(),m(129," The new widget layout engine is "),d(130,"strong"),m(131,"completely different"),u(),m(132," from the previous version. When you upgrade, your configuration will be migrated, but "),d(133,"strong"),m(134,"the way dashboards and widgets are arranged will change significantly"),u(),m(135,`.
|
|
50
50
|
`),u(),d(136,"ul")(137,"li"),m(138,"All KIP configuration settings will be migrated."),u(),d(139,"li"),m(140,"Each v2 Page layout will become a v3 Dashboard."),u(),d(141,"li"),m(142,"All widgets and their settings will appear in their new dashboards."),u(),d(143,"li")(144,"span",0)(145,"strong"),m(146,"Note:"),u(),m(147," Widget positions, order, and sizes "),d(148,"strong"),m(149,"WILL BE LOST"),u(),m(150,". After upgrading, dashboards will contain small widgets that you must reposition and resize manually."),u()()(),d(151,"p"),m(152,"To upgrade your configuration, follow these steps:"),u(),d(153,"ol")(154,"li"),m(155," As a safety measure, if you are using Signal K authentication, manually back up your configuration. Make a copy of the "),d(156,"code"),m(157,"9.0.0.json"),u(),m(158," files found on the Signal K server in the following folders: "),d(159,"ul")(160,"li")(161,"code"),m(162,"~/.signalk/applicationData/users/(username)/kip/"),u()(),d(163,"li")(164,"code"),m(165,"~/.signalk/applicationData/global/kip/"),u()()()(),d(166,"li"),m(167,"Click the "),d(168,"strong"),m(169,"Upgrade"),u(),m(170," button below."),u(),d(171,"li"),m(172,"Once the upgrade is complete, KIP will restart and display the migrated dashboards."),u(),d(173,"li"),m(174,"Reposition and resize your widgets as needed."),u(),d(175,"li"),m(176,"Once satisfied, delete the "),d(177,"code"),m(178,"9.0.0.json"),u(),m(179," configuration files located in the previously mentioned folders. They are not needed any more."),u()(),d(180,"p"),m(181," For tips and guidance, consult KIP\u2019s in-app "),d(182,"strong"),m(183,"Help"),u(),m(184," section. Most common questions are answered there. If you need support, join the "),d(185,"a",3),m(186,"Signal K #kip Discord channel"),u(),m(187,`.
|
|
51
|
-
`),u(),d(188,"div",4)(189,"button",5),B("click",function(){return i.upgrade()}),m(190,"Upgrade"),u(),d(191,"button",6),B("click",function(){return i.startFresh()}),m(192,"Start Fresh"),u()())},dependencies:[Xt,Xe,lt],styles:[".button-group[_ngcontent-%COMP%]{display:flex;justify-content:center}.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 n})();var m0=(n,o)=>o.id;function u0(n,o){if(n&1){let e=ae();d(0,"div",2),B("click",function(){let i=q(e).$implicit,a=I();return z(a.selectIcon(i.id))})("keydown.enter",function(){let i=q(e).$implicit,a=I();return z(a.selectIcon(i.id))})("keydown.space",function(i){let a=q(e).$implicit;return I().selectIcon(a.id),z(i.preventDefault())}),d(1,"div",3),U(2,"mat-icon",4),u()()}if(n&2){let e=o.$implicit,t=I();Je("selected",t.selected()===e.id),Y("aria-label","Select "+e.id+" icon"),g(2),re("width",64,"px")("height",64,"px"),T("svgIcon",e.id)}}var jc=(()=>{class n{iconFile=v("assets/svg/icons.svg");currentIcon=v("");selectedIcon=$e();icons=w([]);selected=w("");constructor(){this.loadIcons(),R(()=>{let e=this.currentIcon();W(()=>{e&&this.selected()!==e&&this.selected.set(e)})})}loadIcons(){return it(this,null,function*(){try{let t=yield(yield fetch(this.iconFile())).text(),r=new DOMParser().parseFromString(t,"image/svg+xml").querySelector("defs");if(!r)return;let s=r.querySelectorAll("svg"),h=[];s.forEach(b=>{let C=b.getAttribute("id");C&&C.startsWith("dashboard-")&&h.push({id:C})}),this.icons.set(h);let f=this.currentIcon();f&&this.selected.set(f)}catch(e){console.error("Error loading icons:",e)}})}selectIcon(e){this.selected.set(e),this.selectedIcon.emit(e)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["select-icon"]],inputs:{iconFile:[1,"iconFile"],currentIcon:[1,"currentIcon"]},outputs:{selectedIcon:"selectedIcon"},decls:3,vars:0,consts:[[1,"icon-grid"],["tabindex","0",1,"icon-item",3,"selected"],["tabindex","0",1,"icon-item",3,"click","keydown.enter","keydown.space"],[1,"icon-container"],["aria-hidden","false",3,"svgIcon"]],template:function(t,i){t&1&&(d(0,"div",0),ue(1,u0,3,8,"div",1,m0),u()),t&2&&(g(),he(i.icons()))},dependencies:[ja,Ze,ze],styles:[".icon-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:16px;padding:16px;max-height:400px;overflow-y:auto}.icon-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:8px;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:border-color .2s ease;background-color:var(--mat-sys-surface-container-low)}.icon-item[_ngcontent-%COMP%]:hover{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px}.icon-item.selected[_ngcontent-%COMP%]{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px;background-color:var(--mat-sys-primary-container)}.icon-item[_ngcontent-%COMP%]:focus{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px}.icon-container[_ngcontent-%COMP%]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;overflow:hidden}.icon-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:100%;height:100%;fill:currentColor}"]})}return n})();function h0(n,o){if(n&1&&(d(0,"button",15),m(1),u()),n&2){let e=I(),t=It(1);T("disabled",!t.valid),g(),ne(e.data.confirmBtnText)}}var Yc=(()=>{class n{dialogRef=A(Si);data=A(wi);_settings=A($t);isSplitShellEnabled=w(!0);constructor(){this.data.icon||(this.data.icon="dashboard-dashboard"),this.isSplitShellEnabled.set(this._settings.getSplitShellEnabled())}save(){this.dialogRef.close(this.data)}onIconSelected(e){this.data.icon=e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-dashboard-page-editor"]],decls:27,vars:10,consts:[["name","ngForm"],["name","name",3,"ngSubmit"],[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"field-wrapper","field-margin"],[1,"field-flex"],["matInput","","type","text","id","name","placeholder","Name","name","name","required","","cdkFocusInitial","",3,"ngModelChange","ngModel"],["placeholder","collapseSplitShell","name","collapseSplitShell",1,"field-flex",3,"ngModelChange","ngModel","disabled"],[1,"field-margin","icon-section"],[2,"font-size","1.2em"],[1,"icon-selector"],[3,"selectedIcon","iconFile","currentIcon"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"],["mat-flat-button","","type","submit",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();d(0,"form",1,0),B("ngSubmit",function(){return q(a),z(i.save())}),d(2,"div",2)(3,"h5",3),m(4),u(),d(5,"button",4)(6,"mat-icon"),m(7,"close"),u()()(),d(8,"mat-dialog-content")(9,"div",5)(10,"mat-form-field",6)(11,"mat-label"),m(12,"Display Name"),u(),d(13,"input",7),un("ngModelChange",function(s){return q(a),mn(i.data.name,s)||(i.data.name=s),z(s)}),u(),d(14,"mat-error"),m(15," A name is required "),u()(),d(16,"mat-checkbox",8),un("ngModelChange",function(s){return q(a),mn(i.data.collapseSplitShell,s)||(i.data.collapseSplitShell=s),z(s)}),m(17," Auto-collapse Freeboard-SK panel when displaying this dashboard. "),u()(),d(18,"div",9)(19,"span",10),m(20,"Icon Gallery"),u(),d(21,"div",11)(22,"select-icon",12),B("selectedIcon",function(s){return q(a),z(i.onIconSelected(s))}),u()()()(),d(23,"mat-dialog-actions",13)(24,"button",14),m(25),u(),G(26,h0,2,2,"button",15),u()()}t&2&&(g(4),ne(i.data.title),g(),T("mat-dialog-close",!1),g(8),cn("ngModel",i.data.name),g(3),cn("ngModel",i.data.collapseSplitShell),T("disabled",!i.isSplitShellEnabled()),g(6),T("iconFile","assets/svg/icons.svg")("currentIcon",i.data.icon),g(2),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?26:-1))},dependencies:[Xt,xi,_i,zi,Mi,Ze,ze,Jt,ut,mt,Yi,ei,ft,Xe,lt,xt,pt,Bn,dt,nt,Mt,ct,Fn,no,jc,ii,Gt],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}.field-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:center}.field-margin[_ngcontent-%COMP%]{margin-left:15px;margin-bottom:15px}.field-flex[_ngcontent-%COMP%]{flex:auto}.icon-selector[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline);border-radius:4px}.icon-section[_ngcontent-%COMP%] .mat-label[_ngcontent-%COMP%]{display:block;margin-bottom:8px;color:var(--mat-sys-on-surface);font-size:14px;font-weight:400}"]})}return n})();var JT=(()=>{class n{dialog=A(Js);openFrameDialog(e,t){switch(e.component){case"select-widget":e.componentType=zc;break;case"upgrade-config":e.componentType=Hc;break}return this.dialog.open(Pl,{data:e,height:t?"calc(100% - 30px)":"",width:t?"calc(100% - 30px)":"",maxWidth:t?"100%":"",maxHeight:t?"100%":""}).afterClosed()}openConfirmationDialog(e){return this.dialog.open(Il,{data:e,minWidth:"35vw",minHeight:"25vh"}).afterClosed()}openNameDialog(e){return this.dialog.open(Ol,{data:e,minWidth:"20vw",minHeight:"20vh",disableClose:!1})}openDashboardPageEditorDialog(e){return this.dialog.open(Yc,{data:e,minWidth:"60vw",maxWidth:"90vw",maxHeight:"95vh",disableClose:!1})}openWidgetOptions(e){return this.dialog.open(Kl,{data:e.config,minWidth:"50vw",maxWidth:"90vw"})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Qc=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],Ri=(()=>{if(typeof document>"u")return!1;let n=Qc[0],o={};for(let e of Qc)if(e?.[1]in document){for(let[i,a]of e.entries())o[n[i]]=a;return o}return!1})(),$c={change:Ri.fullscreenchange,error:Ri.fullscreenerror},zt={request(n=document.documentElement,o){return new Promise((e,t)=>{let i=()=>{zt.off("change",i),e()};zt.on("change",i);let a=n[Ri.requestFullscreen](o);a instanceof Promise&&a.then(i).catch(t)})},exit(){return new Promise((n,o)=>{if(!zt.isFullscreen){n();return}let e=()=>{zt.off("change",e),n()};zt.on("change",e);let t=document[Ri.exitFullscreen]();t instanceof Promise&&t.then(e).catch(o)})},toggle(n,o){return zt.isFullscreen?zt.exit():zt.request(n,o)},onchange(n){zt.on("change",n)},onerror(n){zt.on("error",n)},on(n,o){let e=$c[n];e&&document.addEventListener(e,o,!1)},off(n,o){let e=$c[n];e&&document.removeEventListener(e,o,!1)},raw:Ri};Object.defineProperties(zt,{isFullscreen:{get:()=>!!document[Ri.fullscreenElement]},element:{enumerable:!0,get:()=>document[Ri.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>!!document[Ri.fullscreenEnabled]}});Ri||(zt={isEnabled:!1});var bi=zt;var p0="data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",g0="data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw",Dr=class{constructor(){this.enabled=!1}enable(){throw new Error("NoSleep using SSR/no-op mode; do not call enable.")}disable(){throw new Error("NoSleep using SSR/no-op mode; do not call disable.")}},Pr=class{constructor(){this.enabled=!1;let o=()=>this.wakeLock&&document.visibilityState==="visible"&&this.enable();document.addEventListener("visibilitychange",o),document.addEventListener("fullscreenchange",o)}enable(){return it(this,null,function*(){try{this.wakeLock=yield navigator.wakeLock.request("screen"),this.enabled=!0,console.debug("Wake Lock active."),this.wakeLock.addEventListener("release",()=>{console.debug("Wake Lock released.")})}catch(o){this.enabled=!1,o instanceof Error&&console.error(`${o.name}, ${o.message}`)}})}disable(){var o;(o=this.wakeLock)==null||o.release(),this.wakeLock=void 0,this.enabled=!1}},Ir=class{constructor(){var o;this.enabled=!1,this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",p0),this._addSourceToVideo(this.noSleepVideo,"mp4",g0),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),(o=document.querySelector("body"))==null||o.append(this.noSleepVideo),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})})}_addSourceToVideo(o,e,t){let i=document.createElement("source");i.src=t,i.type=`video/${e}`,o.appendChild(i)}enable(){return it(this,null,function*(){let o=this.noSleepVideo.play();try{let e=yield o;return this.enabled=!0,e}catch(e){this.enabled=!1,e instanceof Error&&console.error(`${e.name}, ${e.message}`)}})}disable(){this.noSleepVideo.pause(),this.enabled=!1}},Zc=typeof navigator>"u"?Dr:"wakeLock"in navigator&&!navigator.standalone?Pr:Ir;var lE=(()=>{class n{isDragging=w(!1);fullscreenStatus=w(!1);fullscreenSupported=w(!0);noSleepStatus=w(!1);noSleepSupported=w(!0);noSleep=null;initialTouchX=null;initialTouchY=null;hotkeyListeners=new Map;boundPreventGestures=null;fullscreenChangeHandler=()=>{if(this.fullscreenStatus.set(bi.isFullscreen),!bi.isFullscreen&&this.noSleep&&this.noSleepStatus()){try{this.noSleep.disable()}catch{}this.noSleepStatus.set(!1)}};constructor(){window.__KIP_TEST__?(this.fullscreenSupported.set(!1),this.noSleepSupported.set(!1)):(bi.isEnabled?bi.on("change",this.fullscreenChangeHandler):(this.fullscreenSupported.set(!1),console.log("[UI Event Service] Fullscreen mode is not supported by device/browser.")),this.checkNoSleepSupport(),this.checkPwaMode()&&this.noSleepSupported()&&!this.noSleepStatus()&&this.toggleNoSleep())}checkNoSleepSupport(){try{if(this.noSleep||(this.noSleep=new Zc),!this.noSleep||typeof this.noSleep.enable!="function"||typeof this.noSleep.disable!="function")throw new Error("[UI Event Service] NoSleep methods not available")}catch(e){this.noSleepSupported.set(!1),console.warn(`[UI Event Service] NoSleep is not supported by this device/browser. Error: ${e}`),this.noSleep=null}}checkPwaMode(){let e=window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone!==void 0;return console.log("[UI Event Service] PWA mode:",e),e}toggleNoSleep(){if(this.noSleepSupported()){if(this.noSleepStatus())try{this.noSleep?.disable()}catch{}else{this.noSleep||this.checkNoSleepSupport();try{this.noSleep?.enable()}catch(e){console.warn("[UI Event Service] Failed to enable NoSleep:",e)}}this.noSleepStatus.set(!this.noSleepStatus()),console.log("[UI Event Service] NoSleep active:",this.noSleepStatus())}}toggleFullScreen(){if(bi.isEnabled){if(this.fullscreenStatus()){if(bi.isFullscreen&&bi.exit(),this.noSleepStatus()){try{this.noSleep?.disable()}catch{}this.noSleepStatus.set(!1)}}else if(bi.request(),!this.noSleepStatus()){this.noSleep||this.checkNoSleepSupport();try{this.noSleep?.enable(),this.noSleepStatus.set(!0)}catch{}}this.fullscreenStatus.set(!this.fullscreenStatus())}else this.fullscreenSupported.set(!1),console.log("[UI Event Service] Fullscreen mode is not supported by this browser.")}addGestureListeners(e,t){this.boundPreventGestures||(this.boundPreventGestures=this.preventBrowserHistorySwipeGestures.bind(this)),document.addEventListener("openLeftSidenav",e),document.addEventListener("openRightSidenav",t),document.addEventListener("touchstart",this.boundPreventGestures,{passive:!1}),document.addEventListener("touchmove",this.boundPreventGestures,{passive:!1}),document.addEventListener("touchend",this.boundPreventGestures),document.addEventListener("touchcancel",this.boundPreventGestures)}removeGestureListeners(e,t){document.removeEventListener("openLeftSidenav",e),document.removeEventListener("openRightSidenav",t),this.boundPreventGestures&&(document.removeEventListener("touchstart",this.boundPreventGestures),document.removeEventListener("touchmove",this.boundPreventGestures),document.removeEventListener("touchend",this.boundPreventGestures),document.removeEventListener("touchcancel",this.boundPreventGestures))}preventBrowserHistorySwipeGestures(e){if(e instanceof TouchEvent&&e.touches.length===1){let t=e.touches[0],i=30;if(e.type==="touchstart")this.initialTouchX=t.clientX,this.initialTouchY=t.clientY;else if(e.type==="touchmove"&&this.initialTouchX!==null&&this.initialTouchY!==null){let a=Math.abs(t.clientX-this.initialTouchX),r=Math.abs(t.clientY-this.initialTouchY);a>10&&a>r&&(this.initialTouchX<i||this.initialTouchX>window.innerWidth-i)&&e.preventDefault(),r>10&&this.initialTouchY<50&&e.preventDefault()}else(e.type==="touchend"||e.type==="touchcancel")&&(this.initialTouchX=null,this.initialTouchY=null)}}addHotkeyListener(e,t){let i=a=>{if(a instanceof KeyboardEvent){let r=a.key.toLowerCase();if(t&&(t.keys&&!t.keys.includes(r)||t.ctrlKey!==void 0&&a.ctrlKey!==t.ctrlKey||t.shiftKey!==void 0&&a.shiftKey!==t.shiftKey))return;e(r,a)}else console.warn("[uiEvent Service] Non-keyboard event detected in addHotkeyListener:",a)};this.hotkeyListeners.set(e,i),document.addEventListener("keydown",i)}removeHotkeyListener(e){let t=this.hotkeyListeners.get(e);t&&(document.removeEventListener("keydown",t),this.hotkeyListeners.delete(e))}ngOnDestroy(){if(bi.isEnabled)try{bi.off("change",this.fullscreenChangeHandler)}catch{}if(this.noSleep&&this.noSleepStatus())try{this.noSleep.disable()}catch{}this.noSleep=null,this.boundPreventGestures&&(document.removeEventListener("touchstart",this.boundPreventGestures),document.removeEventListener("touchmove",this.boundPreventGestures),document.removeEventListener("touchend",this.boundPreventGestures),document.removeEventListener("touchcancel",this.boundPreventGestures),this.boundPreventGestures=null);for(let[,e]of this.hotkeyListeners.entries())document.removeEventListener("keydown",e);this.hotkeyListeners.clear()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function f0(n,o){}var Xc="_mat-bottom-sheet-enter",Kc="_mat-bottom-sheet-exit",b0=(()=>{class n extends Zs{_breakpointSubscription;_animationsDisabled=Zt();_animationState="void";_animationStateChanged=new yt;_destroyed;constructor(){super();let e=A(Wn);this._breakpointSubscription=e.observe([mi.Medium,mi.Large,mi.XLarge]).subscribe(()=>{let t=this._elementRef.nativeElement.classList;t.toggle("mat-bottom-sheet-container-medium",e.isMatched(mi.Medium)),t.toggle("mat-bottom-sheet-container-large",e.isMatched(mi.Large)),t.toggle("mat-bottom-sheet-container-xlarge",e.isMatched(mi.XLarge))})}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._animationsDisabled&&this._simulateAnimation(Xc))}exit(){this._destroyed||(this._elementRef.nativeElement.setAttribute("mat-exit",""),this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._animationsDisabled&&this._simulateAnimation(Kc))}ngOnDestroy(){super.ngOnDestroy(),this._breakpointSubscription.unsubscribe(),this._destroyed=!0}_simulateAnimation(e){this._ngZone.run(()=>{this._handleAnimationEvent(!0,e),setTimeout(()=>this._handleAnimationEvent(!1,e))})}_trapFocus(){super._trapFocus({preventScroll:!0})}_handleAnimationEvent(e,t){let i=t===Xc;(i||t===Kc)&&this._animationStateChanged.emit({toState:i?"visible":"hidden",phase:e?"start":"done"})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-bottom-sheet-container"]],hostAttrs:["tabindex","-1",1,"mat-bottom-sheet-container"],hostVars:9,hostBindings:function(t,i){t&1&&B("animationstart",function(r){return i._handleAnimationEvent(!0,r.animationName)})("animationend",function(r){return i._handleAnimationEvent(!1,r.animationName)})("animationcancel",function(r){return i._handleAnimationEvent(!1,r.animationName)}),t&2&&(Y("role",i._config.role)("aria-modal",i._config.ariaModal)("aria-label",i._config.ariaLabel),Je("mat-bottom-sheet-container-animations-enabled",!i._animationsDisabled)("mat-bottom-sheet-container-enter",i._animationState==="visible")("mat-bottom-sheet-container-exit",i._animationState==="hidden"))},features:[ga],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(t,i){t&1&&Bi(0,f0,0,0,"ng-template",0)},dependencies:[Fs],styles:[`@keyframes _mat-bottom-sheet-enter{from{transform:translateY(100%)}to{transform:none}}@keyframes _mat-bottom-sheet-exit{from{transform:none}to{transform:translateY(100%)}}.mat-bottom-sheet-container{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto;position:relative;background:var(--mat-bottom-sheet-container-background-color, var(--mat-sys-surface-container-low));color:var(--mat-bottom-sheet-container-text-color, var(--mat-sys-on-surface));font-family:var(--mat-bottom-sheet-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-bottom-sheet-container-text-size, var(--mat-sys-body-large-size));line-height:var(--mat-bottom-sheet-container-text-line-height, var(--mat-sys-body-large-line-height));font-weight:var(--mat-bottom-sheet-container-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-bottom-sheet-container-text-tracking, var(--mat-sys-body-large-tracking))}@media(forced-colors: active){.mat-bottom-sheet-container{outline:1px solid}}.mat-bottom-sheet-container-animations-enabled{transform:translateY(100%)}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-enter{animation:_mat-bottom-sheet-enter 195ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-exit{animation:_mat-bottom-sheet-exit 375ms cubic-bezier(0.4, 0, 1, 1) backwards}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:var(--mat-bottom-sheet-container-shape, 28px);border-top-right-radius:var(--mat-bottom-sheet-container-shape, 28px)}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}
|
|
52
|
-
`],encapsulation:2})}return n})(),A0=new
|
|
51
|
+
`),u(),d(188,"div",4)(189,"button",5),B("click",function(){return i.upgrade()}),m(190,"Upgrade"),u(),d(191,"button",6),B("click",function(){return i.startFresh()}),m(192,"Start Fresh"),u()())},dependencies:[Kt,Ke,lt],styles:[".button-group[_ngcontent-%COMP%]{display:flex;justify-content:center}.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 n})();var m0=(n,o)=>o.id;function u0(n,o){if(n&1){let e=ae();d(0,"div",2),B("click",function(){let i=q(e).$implicit,a=I();return z(a.selectIcon(i.id))})("keydown.enter",function(){let i=q(e).$implicit,a=I();return z(a.selectIcon(i.id))})("keydown.space",function(i){let a=q(e).$implicit;return I().selectIcon(a.id),z(i.preventDefault())}),d(1,"div",3),U(2,"mat-icon",4),u()()}if(n&2){let e=o.$implicit,t=I();Je("selected",t.selected()===e.id),Y("aria-label","Select "+e.id+" icon"),g(2),re("width",64,"px")("height",64,"px"),T("svgIcon",e.id)}}var jc=(()=>{class n{iconFile=v("assets/svg/icons.svg");currentIcon=v("");selectedIcon=$e();icons=w([]);selected=w("");constructor(){this.loadIcons(),R(()=>{let e=this.currentIcon();W(()=>{e&&this.selected()!==e&&this.selected.set(e)})})}loadIcons(){return it(this,null,function*(){try{let t=yield(yield fetch(this.iconFile())).text(),r=new DOMParser().parseFromString(t,"image/svg+xml").querySelector("defs");if(!r)return;let s=r.querySelectorAll("svg"),h=[];s.forEach(b=>{let C=b.getAttribute("id");C&&C.startsWith("dashboard-")&&h.push({id:C})}),this.icons.set(h);let f=this.currentIcon();f&&this.selected.set(f)}catch(e){console.error("Error loading icons:",e)}})}selectIcon(e){this.selected.set(e),this.selectedIcon.emit(e)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["select-icon"]],inputs:{iconFile:[1,"iconFile"],currentIcon:[1,"currentIcon"]},outputs:{selectedIcon:"selectedIcon"},decls:3,vars:0,consts:[[1,"icon-grid"],["tabindex","0",1,"icon-item",3,"selected"],["tabindex","0",1,"icon-item",3,"click","keydown.enter","keydown.space"],[1,"icon-container"],["aria-hidden","false",3,"svgIcon"]],template:function(t,i){t&1&&(d(0,"div",0),ue(1,u0,3,8,"div",1,m0),u()),t&2&&(g(),he(i.icons()))},dependencies:[ja,Xe,ze],styles:[".icon-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:16px;padding:16px;max-height:400px;overflow-y:auto}.icon-item[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:8px;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:border-color .2s ease;background-color:var(--mat-sys-surface-container-low)}.icon-item[_ngcontent-%COMP%]:hover{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px}.icon-item.selected[_ngcontent-%COMP%]{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px;background-color:var(--mat-sys-primary-container)}.icon-item[_ngcontent-%COMP%]:focus{outline:2px solid var(--mat-sys-on-primary-container);outline-offset:2px}.icon-container[_ngcontent-%COMP%]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;overflow:hidden}.icon-container[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:100%;height:100%;fill:currentColor}"]})}return n})();function h0(n,o){if(n&1&&(d(0,"button",15),m(1),u()),n&2){let e=I(),t=It(1);T("disabled",!t.valid),g(),ne(e.data.confirmBtnText)}}var Yc=(()=>{class n{dialogRef=A(Si);data=A(wi);_settings=A(Zt);isSplitShellEnabled=w(!0);constructor(){this.data.icon||(this.data.icon="dashboard-dashboard"),this.isSplitShellEnabled.set(this._settings.getSplitShellEnabled())}save(){this.dialogRef.close(this.data)}onIconSelected(e){this.data.icon=e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["dialog-dashboard-page-editor"]],decls:27,vars:10,consts:[["name","ngForm"],["name","name",3,"ngSubmit"],[1,"dialogue-header"],["mat-dialog-title",""],["mat-icon-button","",1,"dialog-close-icon",3,"mat-dialog-close"],[1,"field-wrapper","field-margin"],[1,"field-flex"],["matInput","","type","text","id","name","placeholder","Name","name","name","required","","cdkFocusInitial","",3,"ngModelChange","ngModel"],["placeholder","collapseSplitShell","name","collapseSplitShell",1,"field-flex",3,"ngModelChange","ngModel","disabled"],[1,"field-margin","icon-section"],[2,"font-size","1.2em"],[1,"icon-selector"],[3,"selectedIcon","iconFile","currentIcon"],["align","end"],["mat-flat-button","",3,"mat-dialog-close"],["mat-flat-button","","type","submit",3,"disabled"]],template:function(t,i){if(t&1){let a=ae();d(0,"form",1,0),B("ngSubmit",function(){return q(a),z(i.save())}),d(2,"div",2)(3,"h5",3),m(4),u(),d(5,"button",4)(6,"mat-icon"),m(7,"close"),u()()(),d(8,"mat-dialog-content")(9,"div",5)(10,"mat-form-field",6)(11,"mat-label"),m(12,"Display Name"),u(),d(13,"input",7),un("ngModelChange",function(s){return q(a),mn(i.data.name,s)||(i.data.name=s),z(s)}),u(),d(14,"mat-error"),m(15," A name is required "),u()(),d(16,"mat-checkbox",8),un("ngModelChange",function(s){return q(a),mn(i.data.collapseSplitShell,s)||(i.data.collapseSplitShell=s),z(s)}),m(17," Auto-collapse Freeboard-SK panel when displaying this dashboard. "),u()(),d(18,"div",9)(19,"span",10),m(20,"Icon Gallery"),u(),d(21,"div",11)(22,"select-icon",12),B("selectedIcon",function(s){return q(a),z(i.onIconSelected(s))}),u()()()(),d(23,"mat-dialog-actions",13)(24,"button",14),m(25),u(),G(26,h0,2,2,"button",15),u()()}t&2&&(g(4),ne(i.data.title),g(),T("mat-dialog-close",!1),g(8),cn("ngModel",i.data.name),g(3),cn("ngModel",i.data.collapseSplitShell),T("disabled",!i.isSplitShellEnabled()),g(6),T("iconFile","assets/svg/icons.svg")("currentIcon",i.data.icon),g(2),T("mat-dialog-close",!1),g(),ne(i.data.cancelBtnText),g(),F(i.data.confirmBtnText?26:-1))},dependencies:[Kt,xi,_i,zi,Mi,Xe,ze,ei,ut,mt,Yi,ti,ft,Ke,lt,xt,pt,Bn,dt,nt,Mt,ct,Fn,no,jc,ni,Gt],styles:[".dialogue-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline}.dialog-close-icon[_ngcontent-%COMP%]{margin-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}.field-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:center}.field-margin[_ngcontent-%COMP%]{margin-left:15px;margin-bottom:15px}.field-flex[_ngcontent-%COMP%]{flex:auto}.icon-selector[_ngcontent-%COMP%]{border:1px solid var(--mat-sys-outline);border-radius:4px}.icon-section[_ngcontent-%COMP%] .mat-label[_ngcontent-%COMP%]{display:block;margin-bottom:8px;color:var(--mat-sys-on-surface);font-size:14px;font-weight:400}"]})}return n})();var JT=(()=>{class n{dialog=A(Js);openFrameDialog(e,t){switch(e.component){case"select-widget":e.componentType=zc;break;case"upgrade-config":e.componentType=Hc;break}return this.dialog.open(Pl,{data:e,height:t?"calc(100% - 30px)":"",width:t?"calc(100% - 30px)":"",maxWidth:t?"100%":"",maxHeight:t?"100%":""}).afterClosed()}openConfirmationDialog(e){return this.dialog.open(Il,{data:e,minWidth:"35vw",minHeight:"25vh"}).afterClosed()}openNameDialog(e){return this.dialog.open(Ol,{data:e,minWidth:"20vw",minHeight:"20vh",disableClose:!1})}openDashboardPageEditorDialog(e){return this.dialog.open(Yc,{data:e,minWidth:"60vw",maxWidth:"90vw",maxHeight:"95vh",disableClose:!1})}openWidgetOptions(e){return this.dialog.open(Kl,{data:e.config,minWidth:"50vw",maxWidth:"90vw"})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var Qc=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],Ri=(()=>{if(typeof document>"u")return!1;let n=Qc[0],o={};for(let e of Qc)if(e?.[1]in document){for(let[i,a]of e.entries())o[n[i]]=a;return o}return!1})(),$c={change:Ri.fullscreenchange,error:Ri.fullscreenerror},Ht={request(n=document.documentElement,o){return new Promise((e,t)=>{let i=()=>{Ht.off("change",i),e()};Ht.on("change",i);let a=n[Ri.requestFullscreen](o);a instanceof Promise&&a.then(i).catch(t)})},exit(){return new Promise((n,o)=>{if(!Ht.isFullscreen){n();return}let e=()=>{Ht.off("change",e),n()};Ht.on("change",e);let t=document[Ri.exitFullscreen]();t instanceof Promise&&t.then(e).catch(o)})},toggle(n,o){return Ht.isFullscreen?Ht.exit():Ht.request(n,o)},onchange(n){Ht.on("change",n)},onerror(n){Ht.on("error",n)},on(n,o){let e=$c[n];e&&document.addEventListener(e,o,!1)},off(n,o){let e=$c[n];e&&document.removeEventListener(e,o,!1)},raw:Ri};Object.defineProperties(Ht,{isFullscreen:{get:()=>!!document[Ri.fullscreenElement]},element:{enumerable:!0,get:()=>document[Ri.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>!!document[Ri.fullscreenEnabled]}});Ri||(Ht={isEnabled:!1});var bi=Ht;var p0="data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",g0="data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw",Dr=class{constructor(){this.enabled=!1}enable(){throw new Error("NoSleep using SSR/no-op mode; do not call enable.")}disable(){throw new Error("NoSleep using SSR/no-op mode; do not call disable.")}},Pr=class{constructor(){this.enabled=!1;let o=()=>this.wakeLock&&document.visibilityState==="visible"&&this.enable();document.addEventListener("visibilitychange",o),document.addEventListener("fullscreenchange",o)}enable(){return it(this,null,function*(){try{this.wakeLock=yield navigator.wakeLock.request("screen"),this.enabled=!0,console.debug("Wake Lock active."),this.wakeLock.addEventListener("release",()=>{console.debug("Wake Lock released.")})}catch(o){this.enabled=!1,o instanceof Error&&console.error(`${o.name}, ${o.message}`)}})}disable(){var o;(o=this.wakeLock)==null||o.release(),this.wakeLock=void 0,this.enabled=!1}},Ir=class{constructor(){var o;this.enabled=!1,this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",p0),this._addSourceToVideo(this.noSleepVideo,"mp4",g0),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),(o=document.querySelector("body"))==null||o.append(this.noSleepVideo),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})})}_addSourceToVideo(o,e,t){let i=document.createElement("source");i.src=t,i.type=`video/${e}`,o.appendChild(i)}enable(){return it(this,null,function*(){let o=this.noSleepVideo.play();try{let e=yield o;return this.enabled=!0,e}catch(e){this.enabled=!1,e instanceof Error&&console.error(`${e.name}, ${e.message}`)}})}disable(){this.noSleepVideo.pause(),this.enabled=!1}},Zc=typeof navigator>"u"?Dr:"wakeLock"in navigator&&!navigator.standalone?Pr:Ir;var lE=(()=>{class n{isDragging=w(!1);fullscreenStatus=w(!1);fullscreenSupported=w(!0);noSleepStatus=w(!1);noSleepSupported=w(!0);noSleep=null;initialTouchX=null;initialTouchY=null;hotkeyListeners=new Map;boundPreventGestures=null;fullscreenChangeHandler=()=>{if(this.fullscreenStatus.set(bi.isFullscreen),!bi.isFullscreen&&this.noSleep&&this.noSleepStatus()){try{this.noSleep.disable()}catch{}this.noSleepStatus.set(!1)}};constructor(){window.__KIP_TEST__?(this.fullscreenSupported.set(!1),this.noSleepSupported.set(!1)):(bi.isEnabled?bi.on("change",this.fullscreenChangeHandler):(this.fullscreenSupported.set(!1),console.log("[UI Event Service] Fullscreen mode is not supported by device/browser.")),this.checkNoSleepSupport(),this.checkPwaMode()&&this.noSleepSupported()&&!this.noSleepStatus()&&this.toggleNoSleep())}checkNoSleepSupport(){try{if(this.noSleep||(this.noSleep=new Zc),!this.noSleep||typeof this.noSleep.enable!="function"||typeof this.noSleep.disable!="function")throw new Error("[UI Event Service] NoSleep methods not available")}catch(e){this.noSleepSupported.set(!1),console.warn(`[UI Event Service] NoSleep is not supported by this device/browser. Error: ${e}`),this.noSleep=null}}checkPwaMode(){let e=window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone!==void 0;return console.log("[UI Event Service] PWA mode:",e),e}toggleNoSleep(){if(this.noSleepSupported()){if(this.noSleepStatus())try{this.noSleep?.disable()}catch{}else{this.noSleep||this.checkNoSleepSupport();try{this.noSleep?.enable()}catch(e){console.warn("[UI Event Service] Failed to enable NoSleep:",e)}}this.noSleepStatus.set(!this.noSleepStatus()),console.log("[UI Event Service] NoSleep active:",this.noSleepStatus())}}toggleFullScreen(){if(bi.isEnabled){if(this.fullscreenStatus()){if(bi.isFullscreen&&bi.exit(),this.noSleepStatus()){try{this.noSleep?.disable()}catch{}this.noSleepStatus.set(!1)}}else if(bi.request(),!this.noSleepStatus()){this.noSleep||this.checkNoSleepSupport();try{this.noSleep?.enable(),this.noSleepStatus.set(!0)}catch{}}this.fullscreenStatus.set(!this.fullscreenStatus())}else this.fullscreenSupported.set(!1),console.log("[UI Event Service] Fullscreen mode is not supported by this browser.")}addGestureListeners(e,t){this.boundPreventGestures||(this.boundPreventGestures=this.preventBrowserHistorySwipeGestures.bind(this)),document.addEventListener("openLeftSidenav",e),document.addEventListener("openRightSidenav",t),document.addEventListener("touchstart",this.boundPreventGestures,{passive:!1}),document.addEventListener("touchmove",this.boundPreventGestures,{passive:!1}),document.addEventListener("touchend",this.boundPreventGestures),document.addEventListener("touchcancel",this.boundPreventGestures)}removeGestureListeners(e,t){document.removeEventListener("openLeftSidenav",e),document.removeEventListener("openRightSidenav",t),this.boundPreventGestures&&(document.removeEventListener("touchstart",this.boundPreventGestures),document.removeEventListener("touchmove",this.boundPreventGestures),document.removeEventListener("touchend",this.boundPreventGestures),document.removeEventListener("touchcancel",this.boundPreventGestures))}preventBrowserHistorySwipeGestures(e){if(e instanceof TouchEvent&&e.touches.length===1){let t=e.touches[0],i=30;if(e.type==="touchstart")this.initialTouchX=t.clientX,this.initialTouchY=t.clientY;else if(e.type==="touchmove"&&this.initialTouchX!==null&&this.initialTouchY!==null){let a=Math.abs(t.clientX-this.initialTouchX),r=Math.abs(t.clientY-this.initialTouchY);a>10&&a>r&&(this.initialTouchX<i||this.initialTouchX>window.innerWidth-i)&&e.preventDefault(),r>10&&this.initialTouchY<50&&e.preventDefault()}else(e.type==="touchend"||e.type==="touchcancel")&&(this.initialTouchX=null,this.initialTouchY=null)}}addHotkeyListener(e,t){let i=a=>{if(a instanceof KeyboardEvent){let r=a.key.toLowerCase();if(t&&(t.keys&&!t.keys.includes(r)||t.ctrlKey!==void 0&&a.ctrlKey!==t.ctrlKey||t.shiftKey!==void 0&&a.shiftKey!==t.shiftKey))return;e(r,a)}else console.warn("[uiEvent Service] Non-keyboard event detected in addHotkeyListener:",a)};this.hotkeyListeners.set(e,i),document.addEventListener("keydown",i)}removeHotkeyListener(e){let t=this.hotkeyListeners.get(e);t&&(document.removeEventListener("keydown",t),this.hotkeyListeners.delete(e))}ngOnDestroy(){if(bi.isEnabled)try{bi.off("change",this.fullscreenChangeHandler)}catch{}if(this.noSleep&&this.noSleepStatus())try{this.noSleep.disable()}catch{}this.noSleep=null,this.boundPreventGestures&&(document.removeEventListener("touchstart",this.boundPreventGestures),document.removeEventListener("touchmove",this.boundPreventGestures),document.removeEventListener("touchend",this.boundPreventGestures),document.removeEventListener("touchcancel",this.boundPreventGestures),this.boundPreventGestures=null);for(let[,e]of this.hotkeyListeners.entries())document.removeEventListener("keydown",e);this.hotkeyListeners.clear()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();function f0(n,o){}var Xc="_mat-bottom-sheet-enter",Kc="_mat-bottom-sheet-exit",b0=(()=>{class n extends Zs{_breakpointSubscription;_animationsDisabled=Xt();_animationState="void";_animationStateChanged=new yt;_destroyed;constructor(){super();let e=A(Wn);this._breakpointSubscription=e.observe([mi.Medium,mi.Large,mi.XLarge]).subscribe(()=>{let t=this._elementRef.nativeElement.classList;t.toggle("mat-bottom-sheet-container-medium",e.isMatched(mi.Medium)),t.toggle("mat-bottom-sheet-container-large",e.isMatched(mi.Large)),t.toggle("mat-bottom-sheet-container-xlarge",e.isMatched(mi.XLarge))})}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._animationsDisabled&&this._simulateAnimation(Xc))}exit(){this._destroyed||(this._elementRef.nativeElement.setAttribute("mat-exit",""),this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._animationsDisabled&&this._simulateAnimation(Kc))}ngOnDestroy(){super.ngOnDestroy(),this._breakpointSubscription.unsubscribe(),this._destroyed=!0}_simulateAnimation(e){this._ngZone.run(()=>{this._handleAnimationEvent(!0,e),setTimeout(()=>this._handleAnimationEvent(!1,e))})}_trapFocus(){super._trapFocus({preventScroll:!0})}_handleAnimationEvent(e,t){let i=t===Xc;(i||t===Kc)&&this._animationStateChanged.emit({toState:i?"visible":"hidden",phase:e?"start":"done"})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=L({type:n,selectors:[["mat-bottom-sheet-container"]],hostAttrs:["tabindex","-1",1,"mat-bottom-sheet-container"],hostVars:9,hostBindings:function(t,i){t&1&&B("animationstart",function(r){return i._handleAnimationEvent(!0,r.animationName)})("animationend",function(r){return i._handleAnimationEvent(!1,r.animationName)})("animationcancel",function(r){return i._handleAnimationEvent(!1,r.animationName)}),t&2&&(Y("role",i._config.role)("aria-modal",i._config.ariaModal)("aria-label",i._config.ariaLabel),Je("mat-bottom-sheet-container-animations-enabled",!i._animationsDisabled)("mat-bottom-sheet-container-enter",i._animationState==="visible")("mat-bottom-sheet-container-exit",i._animationState==="hidden"))},features:[ga],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(t,i){t&1&&Bi(0,f0,0,0,"ng-template",0)},dependencies:[Fs],styles:[`@keyframes _mat-bottom-sheet-enter{from{transform:translateY(100%)}to{transform:none}}@keyframes _mat-bottom-sheet-exit{from{transform:none}to{transform:translateY(100%)}}.mat-bottom-sheet-container{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto;position:relative;background:var(--mat-bottom-sheet-container-background-color, var(--mat-sys-surface-container-low));color:var(--mat-bottom-sheet-container-text-color, var(--mat-sys-on-surface));font-family:var(--mat-bottom-sheet-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-bottom-sheet-container-text-size, var(--mat-sys-body-large-size));line-height:var(--mat-bottom-sheet-container-text-line-height, var(--mat-sys-body-large-line-height));font-weight:var(--mat-bottom-sheet-container-text-weight, var(--mat-sys-body-large-weight));letter-spacing:var(--mat-bottom-sheet-container-text-tracking, var(--mat-sys-body-large-tracking))}@media(forced-colors: active){.mat-bottom-sheet-container{outline:1px solid}}.mat-bottom-sheet-container-animations-enabled{transform:translateY(100%)}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-enter{animation:_mat-bottom-sheet-enter 195ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-bottom-sheet-container-animations-enabled.mat-bottom-sheet-container-exit{animation:_mat-bottom-sheet-exit 375ms cubic-bezier(0.4, 0, 1, 1) backwards}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:var(--mat-bottom-sheet-container-shape, 28px);border-top-right-radius:var(--mat-bottom-sheet-container-shape, 28px)}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}
|
|
52
|
+
`],encapsulation:2})}return n})(),A0=new Yt("MatBottomSheetData"),Or=class{viewContainerRef;panelClass;direction;data=null;hasBackdrop=!0;backdropClass;disableClose=!1;ariaLabel=null;ariaModal=!1;closeOnNavigation=!0;autoFocus="first-tabbable";restoreFocus=!0;scrollStrategy;height="";minHeight;maxHeight},Fo=class{_ref;get instance(){return this._ref.componentInstance}get componentRef(){return this._ref.componentRef}containerInstance;disableClose;_afterOpened=new Nt;_result;_closeFallbackTimeout;constructor(o,e,t){this._ref=o,this.containerInstance=t,this.disableClose=e.disableClose,t._animationStateChanged.pipe(Wi(i=>i.phase==="done"&&i.toState==="visible"),Gi(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),t._animationStateChanged.pipe(Wi(i=>i.phase==="done"&&i.toState==="hidden"),Gi(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._ref.close(this._result)}),o.overlayRef.detachments().subscribe(()=>{this._ref.close(this._result)}),Vi(this.backdropClick(),this.keydownEvents().pipe(Wi(i=>i.keyCode===27))).subscribe(i=>{!this.disableClose&&(i.type!=="keydown"||!Ln(i))&&(i.preventDefault(),this.dismiss())})}dismiss(o){this.containerInstance&&(this.containerInstance._animationStateChanged.pipe(Wi(e=>e.phase==="start"),Gi(1)).subscribe(()=>{this._closeFallbackTimeout=setTimeout(()=>this._ref.close(this._result),500),this._ref.overlayRef.detachBackdrop()}),this._result=o,this.containerInstance.exit(),this.containerInstance=null)}afterDismissed(){return this._ref.closed}afterOpened(){return this._afterOpened}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}},v0=new Yt("mat-bottom-sheet-default-options"),y0=(()=>{class n{_injector=A(Fi);_parentBottomSheet=A(n,{optional:!0,skipSelf:!0});_animationsDisabled=Xt();_defaultOptions=A(v0,{optional:!0});_bottomSheetRefAtThisLevel=null;_dialog=A(Xs);get _openedBottomSheetRef(){let e=this._parentBottomSheet;return e?e._openedBottomSheetRef:this._bottomSheetRefAtThisLevel}set _openedBottomSheetRef(e){this._parentBottomSheet?this._parentBottomSheet._openedBottomSheetRef=e:this._bottomSheetRefAtThisLevel=e}constructor(){}open(e,t){let i=Be(Be({},this._defaultOptions||new Or),t),a;return this._dialog.open(e,Ze(Be({},i),{disableClose:!0,closeOnOverlayDetachments:!1,maxWidth:"100%",container:b0,scrollStrategy:i.scrollStrategy||zs(this._injector),positionStrategy:Ys(this._injector).centerHorizontally().bottom("0"),disableAnimations:this._animationsDisabled,templateContext:()=>({bottomSheetRef:a}),providers:(r,s,h)=>(a=new Fo(r,i,h),[{provide:Fo,useValue:a},{provide:A0,useValue:i.data}])})),a.afterDismissed().subscribe(()=>{this._openedBottomSheetRef===a&&(this._openedBottomSheetRef=null)}),this._openedBottomSheetRef?(this._openedBottomSheetRef.afterDismissed().subscribe(()=>a.containerInstance?.enter()),this._openedBottomSheetRef.dismiss()):a.containerInstance.enter(),this._openedBottomSheetRef=a,a}dismiss(e){this._openedBottomSheetRef&&this._openedBottomSheetRef.dismiss(e)}ngOnDestroy(){this._bottomSheetRefAtThisLevel&&this._bottomSheetRefAtThisLevel.dismiss()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=ht({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),_E=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Wt({type:n});static \u0275inj=Vt({providers:[y0],imports:[Ks,Ot,Bs,Ot]})}return n})();export{fo as a,Ei as b,de as c,_e as d,Di as e,oi as f,kl as g,El as h,H2 as i,Gc as j,Go as k,Dl as l,JT as m,lE as n,A0 as o,Fo as p,y0 as q,_E as r};
|