@mxtommy/kip 3.11.0 → 3.12.0

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +16 -2
  2. package/README.md +6 -6
  3. package/package.json +1 -1
  4. package/public/3rdpartylicenses.txt +61 -61
  5. package/public/assets/help-docs/community.md +78 -0
  6. package/public/assets/help-docs/configuration.md +1 -1
  7. package/public/assets/help-docs/contact-us.md +58 -8
  8. package/public/assets/help-docs/dashboards.md +117 -42
  9. package/public/assets/help-docs/datainspector.md +1 -1
  10. package/public/assets/help-docs/datasets.md +1 -1
  11. package/public/assets/help-docs/embedwidget.md +1 -1
  12. package/public/assets/help-docs/grafana.md +1 -1
  13. package/public/assets/help-docs/influxdb.md +1 -1
  14. package/public/assets/help-docs/kiosk.md +17 -1
  15. package/public/assets/help-docs/menu.json +4 -3
  16. package/public/assets/help-docs/putcontrols.md +5 -5
  17. package/public/assets/help-docs/welcome.md +46 -23
  18. package/public/assets/help-docs/zones.md +1 -1
  19. package/public/assets/svg/icons.svg +18 -18
  20. package/public/{chunk-K4BST2XF.js → chunk-3LKIOGV7.js} +1 -1
  21. package/public/{chunk-FPMCI7XZ.js → chunk-65TR3CWM.js} +1 -1
  22. package/public/{chunk-G4B4D3XR.js → chunk-6MRJ4C55.js} +1 -1
  23. package/public/{chunk-KPOCVRYH.js → chunk-7S37JBY2.js} +1 -1
  24. package/public/chunk-A5CYPNMD.js +2 -0
  25. package/public/chunk-BSAAN2EI.js +2 -0
  26. package/public/{chunk-2MAVQD65.js → chunk-CDPHRRZR.js} +1 -1
  27. package/public/{chunk-P4K222SI.js → chunk-D4DROTBC.js} +7 -7
  28. package/public/{chunk-PYBIMDD3.js → chunk-D4MWDRNW.js} +1 -1
  29. package/public/chunk-EPTIEPMQ.js +4 -0
  30. package/public/chunk-F5X5MWHG.js +0 -0
  31. package/public/{chunk-XE352AKG.js → chunk-I454VRMK.js} +1 -1
  32. package/public/chunk-IQG4DDQX.js +1 -0
  33. package/public/{chunk-VZ77T3BF.js → chunk-K5OOC3CF.js} +3 -3
  34. package/public/{chunk-IZAPOSYM.js → chunk-NOLKBYOV.js} +1 -1
  35. package/public/chunk-QOXZFV6P.js +47 -0
  36. package/public/{chunk-GMZROOAF.js → chunk-RMLGKVWE.js} +1 -1
  37. package/public/chunk-T6TC7KWG.js +1 -0
  38. package/public/{chunk-6NRGS3BZ.js → chunk-UHKP2PC3.js} +1 -1
  39. package/public/{chunk-I6UWIF55.js → chunk-UTCRLFYC.js} +1 -1
  40. package/public/{chunk-XFU5YJJP.js → chunk-VEJNBHWJ.js} +1 -1
  41. package/public/{chunk-F4VOQO2M.js → chunk-XLJT6YPP.js} +1 -1
  42. package/public/chunk-YCW2UBVQ.js +1 -0
  43. package/public/{chunk-ANRGX57I.js → chunk-YPUCOH35.js} +12 -12
  44. package/public/chunk-YVLZ2UAQ.js +2 -0
  45. package/public/{chunk-5MLB3PYZ.js → chunk-Z5MCM3TT.js} +10 -10
  46. package/public/{chunk-EJ4JM3HG.js → chunk-ZEV6YXHP.js} +1 -1
  47. package/public/{chunk-TIXQ3FAF.js → chunk-ZPCYFQPB.js} +1 -1
  48. package/public/index.html +1 -1
  49. package/public/main-7TSLA2U5.js +5 -0
  50. package/public/chunk-66OJ5PZF.js +0 -2
  51. package/public/chunk-GIZH6HIB.js +0 -2
  52. package/public/chunk-N3HCHSSE.js +0 -2
  53. package/public/chunk-S4OKR5KN.js +0 -1
  54. package/public/chunk-TARCFDF4.js +0 -4
  55. package/public/main-KP322K7A.js +0 -51
@@ -0,0 +1,47 @@
1
+ import{a as Pn,b as In,c as vr,d as br,e as yr,f as wr,g as Cr}from"./chunk-D4DROTBC.js";import{A as Er,B as Dr,C as Ei,D as qt,E as at,F as Di,G as Mi,H as Pi,I as Fn,J as Un,K as Mr,L as Ai,M as Wi,a as Ue,b as Ft,c as Ut,d as Nn,e as ai,f as an,g as _t,h as Gt,i as ft,j as Ln,k as Vn,l as _i,m as oi,n as zn,o as Bn,p as Tt,q as Ma,r as Hn,s as on,t as Tr,u as Pa,v as Aa,w as Wa,x as Oa,y as Ti,z as rn}from"./chunk-K5OOC3CF.js";import{f as Mt}from"./chunk-65TR3CWM.js";import{a as pr,b as fr,d as xr,e as kr,g as Sr,h as _r}from"./chunk-EPTIEPMQ.js";import{c as Ht}from"./chunk-UTCRLFYC.js";import{a as et,b as Dt}from"./chunk-YCW2UBVQ.js";import{a as zt,b as Si,c as K,e as rr,f as sr,g as lr}from"./chunk-VEJNBHWJ.js";import{K as gr,a as ni,h as Wn,j as ki,l as cr,q as ur,x as mr}from"./chunk-A5CYPNMD.js";import{Ab as wi,Ba as kn,Bb as Ci,Bc as Xo,C as Ca,Ca as Ki,D as xn,Da as Ro,Db as $,Ea as _a,Eb as ce,Ec as Qo,Ed as or,Fa as w,Gb as se,Gc as Zo,Hb as ti,Hd as Da,Ia as Io,Ib as Ho,Id as bt,J as Mo,Ja as ct,Jb as ii,Jd as yt,Kb as p,Kc as Ko,La as Ta,Lb as Re,M as xa,Mb as Qe,Nb as Fo,O as Po,Oa as V,P as Ao,Pa as Lt,Pb as le,Pc as pt,Pd as dr,Qa as bi,Qb as de,Qc as An,R as ka,Ra as No,Rb as he,S as fi,Sa as ne,Sb as Uo,Tb as Go,Ua as Lo,Ub as qo,Uc as On,Va as Vo,Vb as Vt,Wa as ot,Wc as Jo,Xa as $e,Ya as zo,Yc as Rn,Z as Sa,Zd as wt,_d as hr,a as Q,ab as X,ac as At,ae as Bt,b as je,bb as Ne,bc as nn,ca as Rt,cb as Le,cc as Tn,d as jl,da as It,db as gt,dc as Ea,e as Do,ec as He,f as vn,fa as Wo,fb as rt,fc as Ze,g as bn,ga as W,gb as st,gc as Z,hb as L,hc as jo,ib as g,j as yn,ja as O,jb as b,ka as R,kb as z,kc as xi,l as wn,la as q,lb as T,lc as N,ma as We,mb as P,mc as Y,nb as G,oa as Oo,ob as Sn,oc as En,od as er,pa as Nt,pb as _n,pc as Dn,pd as tr,r as ya,ra as H,rb as ee,rc as Mn,t as Cn,tb as I,ua as vi,ub as Ji,ud as ir,v as wa,vb as j,vc as $o,w as Zi,wa as Be,wb as en,xb as yi,xd as nr,yb as Bo,yc as Yo,yd as ar,zb as tn}from"./chunk-YPUCOH35.js";var ro=jl((h1,ha)=>{(function(n){"use strict";function a(d){if(Array.isArray(d)){for(var l=0,c=Array(d.length);l<d.length;l++)c[l]=d[l];return c}return Array.from(d)}function e(d,l){if(!d)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!l||typeof l!="object"&&typeof l!="function"?d:l}function t(d,l){if(typeof l!="function"&&l!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof l);d.prototype=Object.create(l&&l.prototype,{constructor:{value:d,enumerable:!1,writable:!0,configurable:!0}}),l&&(Object.setPrototypeOf?Object.setPrototypeOf(d,l):d.__proto__=l)}function i(d,l){if(!(d instanceof l))throw new TypeError("Cannot call a class as a function")}function o(d,l){if(l||(l=typeof window>"u"?global:window),l[d]!==void 0)return l[d];if(fn===null){var c=window.getComputedStyle(document.documentElement,"");fn=(Array.prototype.slice.call(c).join("").match(/-(moz|webkit|ms)-/)||c.OLink===""&&["","o"]||["",""])[1]}if(fn==="")return null;var f=d.charAt(0).toUpperCase()+d.substr(1),y=l[fn+f];return y!==void 0?y:null}function r(d,l,c,f,y,C,E){if(typeof f!="function")throw new TypeError("Invalid animation rule:",f);var M=d-c,D=M/y,A=0;D>1&&(D=1),D!==1&&(A=f(D),isFinite(A)&&!isNaN(A)&&(D=A)),l&&l(D),M<y?E.frame=ko(function(F){return r(F,l,c,f,y,C,E)}):(C&&C(),E.inProgress=!1)}function s(){Array.prototype.constructor.apply(this,arguments)}function h(d){if(!(d instanceof DOMException&&d.result===2152923147))throw d}function m(d,l){return l.replace(Ul,function(c,f){var y=d[f];return y!==void 0?y:c})}function u(d){return d.majorTicks instanceof Array||(d.majorTicks=d.majorTicks?[d.majorTicks]:[]),d.majorTicks.length||(d.majorTicks.push(J.formatMajorTickNumber(d.minValue,d)),d.majorTicks.push(J.formatMajorTickNumber(d.maxValue,d))),[d.tickSide!=="right",d.tickSide!=="left"]}function v(d,l,c,f,y,C){d.beginPath(),d.moveTo(l+C,c),d.lineTo(l+f-C,c),d.quadraticCurveTo(l+f,c,l+f,c+C),d.lineTo(l+f,c+y-C),d.quadraticCurveTo(l+f,c+y,l+f-C,c+y),d.lineTo(l+C,c+y),d.quadraticCurveTo(l,c+y,l,c+y-C),d.lineTo(l,c+C),d.quadraticCurveTo(l,c,l+C,c),d.closePath()}function x(d,l){var c=l.valueDec,f=l.valueInt,y=0,C=void 0,E=void 0,M=void 0;if(d=parseFloat(d),M=d<0,d=Math.abs(d),c>0){for(E=d.toFixed(c).toString().split("."),C=f-E[0].length;y<C;++y)E[0]="0"+E[0];E=(M?"-":"")+E[0]+"."+E[1]}else{for(E=Math.round(d).toString(),C=f-E.length;y<C;++y)E="0"+E;E=(M?"-":"")+E}return E}function S(d,l){var c=void 0,f=!1;return c=l.majorTicksDec===0?Math.round(d).toString():d.toFixed(l.majorTicksDec),l.majorTicksInt>1?(f=~c.indexOf("."),~c.indexOf("-")?"-"+[l.majorTicksInt+l.majorTicksDec+2+(f?1:0)-c.length].join("0")+c.replace("-",""):[l.majorTicksInt+l.majorTicksDec+1+(f?1:0)-c.length].join("0")+c):c}function _(d){return d*Math.PI/180}function B(d,l){return{x:-d*Math.sin(l),y:d*Math.cos(l)}}function re(d,l,c,f){var y=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],C=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,E=d.createLinearGradient(y?0:C,y?C:0,y?0:f,y?f:0);return E.addColorStop(0,l),E.addColorStop(1,c),E}function ge(d,l){l.needleShadow&&(d.shadowOffsetX=2,d.shadowOffsetY=2,d.shadowBlur=10,d.shadowColor=l.colorNeedleShadowDown)}function ae(d,l,c){return d["font"+l+"Style"]+" "+d["font"+l+"Weight"]+" "+d["font"+l+"Size"]*c+"px "+d["font"+l]}function Se(d){d.shadowOffsetX=null,d.shadowOffsetY=null,d.shadowBlur=null,d.shadowColor="",d.strokeStyle=null,d.lineWidth=0,d.save()}function Fe(d,l,c,f){l.valueTextShadow&&(d.shadowOffsetX=c,d.shadowOffsetY=c,d.shadowBlur=f,d.shadowColor=l.colorValueTextShadow)}function _e(d,l,c,f,y,C){if(l.valueBox){Se(d);var E=l.valueDec?1+l.valueDec:0,M="9".repeat(Math.max.apply(null,[String(parseInt(c)).length+E].concat(l.majorTicks.map(function(De){return String(parseInt(De,10)).length+E})))),D=l.valueText||x(c,l),A=C/200,F=C/100,U=.4*F,oe=1.2*F;d.font=ae(l,"Value",A),Fe(d,l,U,oe);var pe=d.measureText(l.valueText?D:"-"+x(Number(M),l)).width;Se(d);var ye=parseFloat(l.fontValueSize)*A+U+oe,Oe=F*parseFloat(l.valueBoxStroke),be=2*C-2*Oe,Pe=pe+10*F,Ae=1.1*ye+U+oe,Ie=F*l.valueBoxBorderRadius,ke=(parseFloat(l.valueBoxWidth)||0)/100*be;ke>Pe&&(Pe=ke),Pe>be&&(Pe=be);var Ee=f-Pe/2,xe=y-Ae/2,fe=y-5.75*F;if(d.beginPath(),Ie?v(d,Ee,xe,Pe,Ae,Ie):d.rect(Ee,xe,Pe,Ae),Oe){var we=d.createRadialGradient(f,fe,10*F,f,fe,20*F);we.addColorStop(0,l.colorValueBoxRect),we.addColorStop(1,l.colorValueBoxRectEnd),d.strokeStyle=we,d.lineWidth=Oe,d.stroke()}l.colorValueBoxShadow&&(d.shadowBlur=1.2*F,d.shadowColor=l.colorValueBoxShadow),l.colorValueBoxBackground&&(d.fillStyle=l.colorValueBoxBackground,d.fill()),d.closePath(),d.restore(),Fe(d,l,U,oe),d.fillStyle=l.colorValueText,d.textAlign="center",d.textBaseline="alphabetic",d.fillText(D,Ee+Pe/2,y+Ae/2-ye/3),d.restore()}}function qe(d){var l=d.value,c=d.minValue,f=d.maxValue,y=.01*(f-c);return{normal:l<c?c:l>f?f:l,indented:l<c?c-y:l>f?f+y:l}}function Me(d,l,c,f,y){c.beginPath(),c.arc(0,0,St(d),0,2*Xi,!0),c.lineWidth=l,c.strokeStyle=y?J.linearGradient(c,f,y,d):f,c.stroke(),c.closePath()}function Ve(d,l){var c=kt.pixelRatio;return d.maxRadius||(d.maxRadius=d.max-l.borderShadowWidth-l.borderOuterWidth*c-l.borderMiddleWidth*c-l.borderInnerWidth*c+(l.borderOuterWidth?.5:0)+(l.borderMiddleWidth?.5:0)+(l.borderInnerWidth?.5:0)),d.maxRadius}function Te(d,l){function c(U,oe,pe,ye,Oe,be){return oe&&(!be&&l.borderShadowWidth&&(pe.save(),pe.shadowBlur=l.borderShadowWidth,pe.shadowColor=l.colorBorderShadow),Me(U,oe*f,pe,ye,Oe),!be&&l.borderShadowWidth&&(be=!0,pe.restore())),be}var f=kt.pixelRatio,y=l.borderShadowWidth*f,C=d.max-y-l.borderOuterWidth*f/2,E=C-l.borderOuterWidth*f/2-l.borderMiddleWidth*f/2+.5,M=E-l.borderMiddleWidth*f/2-l.borderInnerWidth*f/2+.5,D=Ve(d,l),A=void 0,F=!1;d.save(),F=c(C,l.borderOuterWidth,d,l.colorBorderOuter,l.colorBorderOuterEnd,F),F=c(E,l.borderMiddleWidth,d,l.colorBorderMiddle,l.colorBorderMiddleEnd,F),F=c(M,l.borderInnerWidth,d,l.colorBorderInner,l.colorBorderInnerEnd,F),!F&&l.borderShadowWidth&&(d.shadowBlur=l.borderShadowWidth,d.shadowColor=l.colorBorderShadow),d.beginPath(),d.arc(0,0,St(D),0,2*Xi,!0),l.colorPlateEnd?(A=d.createRadialGradient(0,0,D/2,0,0,D),A.addColorStop(0,l.colorPlate),A.addColorStop(1,l.colorPlateEnd)):A=l.colorPlate,d.fillStyle=A,d.fill(),d.closePath(),d.restore()}function Ye(d,l){if(l.highlights!=="false"&&l.highlights.length&&l.highlightsWidth!==0){var c=d.max*(parseFloat(l.highlightsWidth)||0)/100,f=St(Ke(d,l)-c/2),y=l.highlights.length,C=(l.maxValue-l.minValue)/l.ticksAngle;d.save();for(var E=0;E<y;E++){var M=l.highlights[E];d.lineWidth=c,d.lineCap=l.highlightsLineCap,d.strokeStyle=M.color,d.beginPath(),d.rotate(ba),d.arc(0,0,f,J.radians(l.startAngle+(M.from-l.minValue)/C),J.radians(l.startAngle+(M.to-l.minValue)/C),!1),d.stroke(),d.closePath(),d.restore(),d.save()}d.restore()}}function tt(d,l){var c=Ke(d,l),f=void 0,y=void 0,C=void 0,E=0,M=Math.abs(l.minorTicks)||0,D=l.ticksAngle/(l.maxValue-l.minValue);l.exactTicks?(y=l.maxValue-l.minValue,f=M?y/M:0,E=(Et.mod(l.majorTicks[0],M)||0)*D):f=M*(l.majorTicks.length-1),d.lineWidth=kt.pixelRatio,d.strokeStyle=l.colorMinorTicks||l.colorStrokeTicks,d.save();for(var A=0;A<f;++A)(C=l.startAngle+E+A*(l.ticksAngle/f))<=l.ticksAngle+l.startAngle&&(d.rotate(J.radians(C)),d.beginPath(),d.moveTo(0,c),d.lineTo(0,c-.075*d.max),Kt(d));d.restore()}function Ke(d,l){var c=d.max/100;return Ve(d,l)-5*c-(l.barWidth?2*(parseFloat(l.barStrokeWidth)||0)+((parseFloat(l.barWidth)||0)+5)*c:0)}function Je(d,l){J.prepareTicks(l);var c=St(Ke(d,l)),f=void 0,y=l.majorTicks.length,C=kt.pixelRatio;d.lineWidth=2*C,f=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(y).fill(l.colorStrokeTicks||l.colorMajorTicks);for(var E=0;E<y;++E)d.save(),d.strokeStyle=f[E],d.rotate(J.radians(nt(l,l.exactTicks?l.majorTicks[E]:E,y))),d.beginPath(),d.moveTo(0,c),d.lineTo(0,c-.15*d.max),d.stroke(),d.closePath(),d.restore();l.strokeTicks&&(d.save(),d.strokeStyle=l.colorStrokeTicks||f[0],d.rotate(ba),d.beginPath(),d.arc(0,0,c,J.radians(l.startAngle),J.radians(l.startAngle+l.ticksAngle),!1),d.stroke(),d.closePath(),d.restore())}function nt(d,l,c){if(d.exactTicks){var f=d.ticksAngle/(d.maxValue-d.minValue);return d.startAngle+f*(l-d.minValue)}return d.startAngle+l*(d.ticksAngle/(c-1))}function Kt(d){d.stroke(),d.restore(),d.closePath(),d.save()}function mn(d,l){var c=Ke(d,l)-.15*d.max,f={},y=0,C=l.majorTicks.length,E=l.animationTarget!=="needle",M=l.colorNumbers instanceof Array?l.colorNumbers:new Array(C).fill(l.colorNumbers),D=E?-(l.value-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle:0;for(E&&(d.save(),d.rotate(-J.radians(D))),d.font=J.font(l,"Numbers",d.max/200),d.lineWidth=0,d.textAlign="center",d.textBaseline="middle";y<C;++y){var A=D+nt(l,l.exactTicks?l.majorTicks[y]:y,C),F=d.measureText(l.majorTicks[y]).width,U=l.fontNumbersSize,oe=Math.sqrt(F*F+U*U)/2,pe=J.radialPoint(c-oe-l.numbersMargin/100*d.max,J.radians(A));A===360&&(A=0),f[A]||(f[A]=!0,d.fillStyle=M[y],d.fillText(l.majorTicks[y],pe.x,pe.y))}E&&d.restore()}function uo(d,l){l.title&&(d.save(),d.font=J.font(l,"Title",d.max/200),d.fillStyle=l.colorTitle,d.textAlign="center",d.fillText(l.title,0,-d.max/4.25,.8*d.max),d.restore())}function mo(d,l){l.units&&(d.save(),d.font=J.font(l,"Units",d.max/200),d.fillStyle=l.colorUnits,d.textAlign="center",d.fillText(J.formatContext(l,l.units),0,d.max/3.25,.8*d.max),d.restore())}function go(d,l){if(l.needle){var c=l.animationTarget!=="needle",f=l.ticksAngle<360?J.normalizedValue(l).indented:l.value,y=c?l.startAngle:l.startAngle+(f-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle;l.barStartPosition==="right"&&(y=l.startAngle+l.ticksAngle-(f-l.minValue)/(l.maxValue-l.minValue)*l.ticksAngle);var C=Ve(d,l),E=St(C/100*l.needleCircleSize),M=St(C/100*l.needleCircleSize*.75),D=St(C/100*l.needleEnd),A=St(l.needleStart?C/100*l.needleStart:0),F=C/100*l.needleWidth,U=C/100*l.needleWidth/2,oe=kt.pixelRatio;d.save(),J.drawNeedleShadow(d,l),d.rotate(J.radians(y)),d.fillStyle=J.linearGradient(d,l.colorNeedle,l.colorNeedleEnd,D-A),l.needleType==="arrow"?(d.beginPath(),d.moveTo(-U,-A),d.lineTo(-F,0),d.lineTo(-1*oe,D),d.lineTo(oe,D),d.lineTo(F,0),d.lineTo(U,-A),d.closePath(),d.fill(),d.beginPath(),d.lineTo(-.5*oe,D),d.lineTo(-1*oe,D),d.lineTo(-F,0),d.lineTo(-U,-A),d.lineTo(U/2*oe-2*oe,-A),d.closePath(),d.fillStyle=l.colorNeedleShadowUp,d.fill()):(d.beginPath(),d.moveTo(-U,D),d.lineTo(-U,A),d.lineTo(U,A),d.lineTo(U,D),d.closePath(),d.fill()),d.restore(),l.needleCircleSize&&(d.save(),J.drawNeedleShadow(d,l),l.needleCircleOuter&&(d.beginPath(),d.arc(0,0,E,0,2*Xi,!0),d.fillStyle=J.linearGradient(d,l.colorNeedleCircleOuter,l.colorNeedleCircleOuterEnd,E),d.fill(),d.closePath()),l.needleCircleInner&&(d.beginPath(),d.arc(0,0,M,0,2*Xi,!0),d.fillStyle=J.linearGradient(d,l.colorNeedleCircleInner,l.colorNeedleCircleInnerEnd,M),d.fill(),d.closePath()),d.restore())}}function po(d,l,c){J.drawValueBox(d,l,c,0,d.max-.33*d.max,d.max)}function Sl(d){var l=d.startAngle,c=d.startAngle+d.ticksAngle,f=l,y=l+(J.normalizedValue(d).normal-d.minValue)/(d.maxValue-d.minValue)*d.ticksAngle;if(d.barStartPosition==="middle"){var C=.5*(d.minValue+d.maxValue);d.value<C?(f=180-(C-J.normalizedValue(d).normal)/(d.maxValue-d.minValue)*d.ticksAngle,y=180):(f=180,y=180+(J.normalizedValue(d).normal-C)/(d.maxValue-d.minValue)*d.ticksAngle)}else d.barStartPosition==="right"&&(f=c-y+l,y=c);return{startAngle:f,endAngle:y}}function fo(d,l){var c=d.max/100,f=Ve(d,l)-5*c,y=parseFloat(l.barStrokeWidth+"")||0,C=(parseFloat(l.barWidth+"")||0)*c,E=f-2*y-C,M=(f-E)/2,D=E+M,A=y/D,F=l.startAngle,U=l.startAngle+l.ticksAngle;if(d.save(),d.rotate(ba),y&&(d.beginPath(),d.arc(0,0,D,J.radians(F)-A,J.radians(U)+A,!1),d.strokeStyle=l.colorBarStroke,d.lineWidth=2*M,d.stroke(),d.closePath()),C&&(d.beginPath(),d.arc(0,0,D,J.radians(F),J.radians(U),!1),d.strokeStyle=l.colorBar,d.lineWidth=C,d.stroke(),d.closePath(),l.barShadow&&(d.save(),d.beginPath(),d.arc(0,0,f,J.radians(F),J.radians(U),!1),d.clip(),d.beginPath(),d.strokeStyle=l.colorBar,d.lineWidth=1,d.shadowBlur=l.barShadow,d.shadowColor=l.colorBarShadow,d.shadowOffsetX=0,d.shadowOffsetY=0,d.arc(0,0,f,J.radians(l.startAngle),J.radians(l.startAngle+l.ticksAngle),!1),d.stroke(),d.closePath(),d.restore()),l.barProgress)){var oe=Sl(l),pe=oe.startAngle,ye=oe.endAngle;d.beginPath(),d.arc(0,0,D,J.radians(pe),J.radians(ye),!1),d.strokeStyle=l.colorBarProgress,d.lineWidth=C,d.stroke(),d.closePath()}d.restore()}function vo(d){return d.options.animatedValue?d.options.value:d.value}function _l(d,l,c,f,y,C,E,M){d.beginPath(),d.fillStyle=M?J.linearGradient(d,E,M,y>C?y:C,C>y,y>C?c:f):E,l>0?J.roundRect(d,c,f,y,C,l):d.rect(c,f,y,C),d.fill(),d.closePath()}function Tl(d,l,c,f,y,C,E,M,D){d.beginPath(),d.lineWidth=l,d.strokeStyle=D?J.linearGradient(d,M,D,E,!0,y):M,c>0?J.roundRect(d,f,y,C,E,c):d.rect(f,y,C,E),d.stroke(),d.closePath()}function El(d,l,c,f,y,C){function E(De,ze,Xe,ht){return De&&(!ht&&l.borderShadowWidth&&(d.save(),d.shadowBlur=l.borderShadowWidth,d.shadowColor=l.colorBorderShadow),Tl(d,De*M,D,c+De*M/2-fe,f+De*M/2-fe,A,pe,ze,Xe),fe+=.5*M,!ht&&l.borderShadowWidth&&(ht=!0,d.restore())),ht}var M=kt.pixelRatio,D=l.borderRadius*M,A=y-l.borderShadowWidth-l.borderOuterWidth*M,F=A-l.borderOuterWidth*M-l.borderMiddleWidth*M,U=F-l.borderMiddleWidth*M-l.borderInnerWidth*M,oe=U-l.borderInnerWidth*M,pe=C-l.borderShadowWidth-l.borderOuterWidth*M,ye=pe-l.borderOuterWidth*M-l.borderMiddleWidth*M,Oe=ye-l.borderMiddleWidth*M-l.borderInnerWidth*M,be=Oe-l.borderInnerWidth*M,Pe=c-(F-A)/2,Ae=Pe-(U-F)/2,Ie=Ae-(oe-U)/2,ke=f-(ye-pe)/2,Ee=ke-(Oe-ye)/2,xe=Ee-(be-Oe)/2,fe=0,we=!1;return d.save(),we=E(l.borderOuterWidth,l.colorBorderOuter,l.colorBorderOuterEnd,we),we=E(l.borderMiddleWidth,l.colorBorderMiddle,l.colorBorderMiddleEnd,we),we=E(l.borderInnerWidth,l.colorBorderInner,l.colorBorderInnerEnd,we),!we&&l.borderShadowWidth&&(d.shadowBlur=l.borderShadowWidth,d.shadowColor=l.colorBorderShadow),_l(d,D,Ie,xe,oe+2*fe,be+2*fe,l.colorPlate,l.colorPlateEnd),d.restore(),[Ie,xe,oe,be]}function Dl(d,l,c,f,y,C){var E=kt.pixelRatio,M=C>=y,D=M?.85*y:C,A=M?C:y;c=M?Ce(c+(y-D)/2):c;var F=!!l.title,U=!!l.units,oe=!!l.valueBox,pe=void 0,ye=void 0,Oe=void 0;M?(ye=Ce(.05*A),pe=Ce(.075*A),Oe=Ce(.11*A),F&&(A-=pe,f+=pe),U&&(A-=ye),oe&&(A-=Oe)):(ye=pe=Ce(.15*D),F&&(D-=pe,f+=pe),U&&(D-=ye));var be=2*l.barStrokeWidth,Pe=l.barBeginCircle?Ce(D*l.barBeginCircle/200-be/2):0,Ae=Ce(D*l.barWidth/100-be),Ie=Ce(A*l.barLength/100-be),ke=Ce((A-Ie)/2),Ee=Ce(c+(M?D/2:ke+Pe)),xe=Ce(f+(M?A-ke-Pe+be/2:D/2)),fe=!M||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*D,we=M||l.hasLeft&&l.hasRight?0:(l.hasRight?-1:1)*l.ticksWidth/100*D;return d.barDimensions={isVertical:M,width:D,length:A,barWidth:Ae,barLength:Ie,strokeWidth:be,barMargin:ke,radius:Pe,pixelRatio:E,barOffset:null,titleMargin:F?pe:0,unitsMargin:U?ye:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:c+fe,Y:f+we,x0:Ee+fe,y0:xe+we,baseX:c,baseY:f,ticksPadding:l.ticksPadding/100},d.barDimensions}function bo(d,l,c,f,y,C,E){var M=Dl(d,l,f,y,C,E),D=M.isVertical,A=M.width,F=M.barWidth,U=M.barLength,oe=M.strokeWidth,pe=M.barMargin,ye=M.radius,Oe=M.x0,be=M.y0,Pe=M.X,Ae=M.Y,Ie=U;d.save(),d.beginPath();var ke=null;if(l.barBeginCircle){var Ee=J.radians(D?270:0),xe=Math.asin(F/2/ye),fe=Math.cos(xe),we=Math.sin(xe),De=Oe+(D?ye*we:ye*fe-oe/2),ze=D?be-ye*fe:be+ye*we,Xe=St(D?ze-be:De-Oe);ke=Ce(Xe+ye);var ht=D?Ce(Oe-ye*we):De,vt=D?ze:Ce(be-ye*we);c==="progress"&&(U=ke+(U-ke)*(J.normalizedValue(l).normal-l.minValue)/(l.maxValue-l.minValue));var Qi=Ce(De+U-ke+oe/2),ei=Ce(ze-U+ke-oe/2);d.arc(Oe,be,ye,Ee+xe,Ee-xe),D?(d.moveTo(De,vt),d.lineTo(De,ei),d.lineTo(ht,ei),d.lineTo(ht,vt)):(d.moveTo(De,vt),d.lineTo(Qi,vt),d.lineTo(Qi,ze),d.lineTo(De,ze))}else{var To=Ce(D?Pe+(A-F)/2:Pe+pe),Eo=Ce(D?Ae+U+pe:Ae+(A-F)/2);c==="progress"&&(U*=(l.value-l.minValue)/(l.maxValue-l.minValue)),D?d.rect(To,Eo,F,-U):d.rect(To,Eo,U,F)}c!=="progress"&&l.barStrokeWidth&&(d.lineWidth=oe,d.strokeStyle=l.colorBarStroke,d.stroke()),c!=="progress"&&l.colorBar?(d.fillStyle=l.colorBarEnd?J.linearGradient(d,l.colorBar,l.colorBarEnd,U,D,D?Ae:Pe):l.colorBar,d.fill()):c==="progress"&&l.colorBarProgress&&(d.fillStyle=l.colorBarProgressEnd?J.linearGradient(d,l.colorBarProgress,l.colorBarProgressEnd,Ie,D,D?Ae:Pe):l.colorBarProgress,d.fill()),d.closePath(),d.restore(),l.barBeginCircle&&(d.barDimensions.radius+=oe),d.barDimensions.barOffset=ke,d.barDimensions.barWidth+=oe,d.barDimensions.barLength+=oe}function Ml(d,l,c,f,y,C){bo(d,l,"",c,f,y,C)}function yo(d,l){return l.needleSide!==d||l.tickSide!==d||l.numberSide!==d}function Pl(d,l,c,f,y,C){l.barProgress&&bo(d,l,"progress",c,f,y,C)}function Al(d,l){var c=d.barDimensions,f=c.isVertical,y=c.width,C=c.length,E=c.barWidth,M=c.barOffset,D=c.barMargin,A=c.X,F=c.Y,U=c.ticksLength,oe=c.ticksPadding,pe=y*(parseFloat(l.highlightsWidth)||0)/100;if(l.highlights&&pe){var ye=l.tickSide!=="right",Oe=l.tickSide!=="left",be=0,Pe=l.highlights.length,Ae=(y-E)/2,Ie=l.maxValue-l.minValue,ke=Ce(f?A+Ae:A+D+M),Ee=pe,xe=f?F+C-D-M:F+Ae,fe=Ce((l.ticksWidth/100+oe)*y)+(pe-l.ticksWidth/100*y),we=Ce(E+oe*y);for(d.save();be<Pe;be++){var De=l.highlights[be],ze=U*St(l.minValue-De.from)/Ie,Xe=U*St((De.to-De.from)/Ie);d.beginPath(),d.fillStyle=De.color,f?(ye&&d.rect(ke-fe,xe-ze,Ee,-Xe),Oe&&d.rect(ke+we,xe-ze,Ee,-Xe)):(ye&&d.rect(ke+ze,xe-fe,Xe,Ee),Oe&&d.rect(ke+ze,xe+we,Xe,Ee)),d.fill(),d.closePath()}d.restore()}}function gn(d,l,c,f,y){d.beginPath(),d.moveTo(l,c),d.lineTo(f,y),d.stroke(),d.closePath()}function wo(d,l,c,f,y,C,E,M,D){var A=d.barDimensions,F=A.isVertical,U=A.length,oe=A.barWidth,pe=A.barOffset,ye=A.barMargin,Oe=A.pixelRatio,be=A.width,Pe=A.X,Ae=A.Y,Ie=A.ticksLength,ke=A.ticksPadding,Ee=(be-oe)/2,xe=void 0,fe=void 0,we=0,De=c.length,ze=void 0,Xe=D*be,ht=Ee-ke*be,vt=Ee+oe+Xe+ke*be,Qi=l instanceof Array?l:new Array(c.length).fill(l);d.save(),d.lineWidth=M*Oe;for(var ei=Ie/(y-f);we<De;we++)ze=c[we],d.strokeStyle=Qi[we],F?(fe=Ae+U-ye-pe+(f-ze)*ei,C&&(xe=Pe+ht,gn(d,xe,fe,Ce(xe-Xe),fe)),E&&(xe=Pe+vt,gn(d,xe,fe,Ce(xe-Xe),fe))):(xe=Pe+ye+pe-(f-ze)*ei,C&&(fe=Ae+ht,gn(d,xe,fe,xe,Ce(fe-Xe))),E&&(fe=Ae+vt,gn(d,xe,Ce(fe),xe,fe-Xe)));d.restore()}function Wl(d,l){var c=J.prepareTicks(l),f=xo(c,2),y=f[0],C=f[1],E=2,M=(l.maxValue-l.minValue)/(l.majorTicks.length-1),D=l.colorMajorTicks instanceof Array?l.colorMajorTicks:new Array(l.majorTicks.length).fill(l.colorStrokeTicks||l.colorMajorTicks);if(wo(d,D,l.exactTicks?l.majorTicks:l.majorTicks.map(function(Xe,ht){return l.minValue+M*ht}),l.minValue,l.maxValue,y,C,E,l.ticksWidth/100),l.strokeTicks){var A=d.barDimensions,F=A.isVertical,U=A.length,oe=A.width,pe=A.barWidth,ye=A.barMargin,Oe=A.barOffset,be=A.X,Pe=A.Y,Ae=A.ticksLength,Ie=A.pixelRatio,ke=A.ticksPadding,Ee=(oe-pe)/2+pe+ke*oe,xe=(oe-pe)/2-ke*oe,fe=void 0,we=void 0,De=void 0,ze=void 0;d.strokeStyle=l.colorStrokeTicks||D[0],E*=Ie,F?(we=Pe+U-ye-Oe+E/2,ze=we-Ae-E,y&&(De=fe=Ce(be+xe),pn(d,fe,we,De,ze)),C&&(De=fe=Ce(be+Ee),pn(d,fe,we,De,ze))):(fe=be+ye+Oe-E/2,De=fe+Ae+E,y&&(ze=we=Ce(Pe+xe),pn(d,fe,we,De,ze)),C&&(ze=we=Ce(Pe+Ee),pn(d,fe,we,De,ze)))}}function pn(d,l,c,f,y){d.beginPath(),d.moveTo(l,c),d.lineTo(f,y),d.stroke(),d.closePath()}function Ol(d,l){var c=J.prepareTicks(l),f=xo(c,2),y=f[0],C=f[1],E=[],M=l.minValue,D=Math.abs(l.minorTicks)||0,A=D?(l.maxValue-l.minValue)/(D*(l.majorTicks.length-1)):0;if(D)if(l.exactTicks)for(var F=Et.mod(l.majorTicks[0],D)||0;M<l.maxValue;M+=D)F+M<l.maxValue&&E.push(F+M);else for(;M<l.maxValue;M+=A)E.push(M);wo(d,l.colorMinorTicks||l.colorStrokeTicks,E,l.minValue,l.maxValue,y,C,1,l.ticksWidthMinor/100)}function Rl(d,l){var c=d.barDimensions,f=c.isVertical,y=c.length,C=c.width,E=c.barWidth,M=c.barMargin,D=c.barOffset,A=c.X,F=c.Y,U=c.ticksLength,oe=c.ticksPadding,pe=l.maxValue-l.minValue,ye=pe/(l.majorTicks.length-1),Oe=l.exactTicks?l.majorTicks:l.majorTicks.map(function(Qi,ei){return l.minValue+ye*ei}),be=Oe.length,Pe=l.numberSide!=="right",Ae=l.numberSide!=="left",Ie=l.fontNumbersSize*C/200,ke=0,Ee=(l.ticksWidth/100+2*oe)*C,xe=(C-E)/2-Ee,fe=(C-E)/2+E+Ee,we=void 0,De=void 0,ze=void 0,Xe=void 0,ht=l.colorNumbers instanceof Array?l.colorNumbers:new Array(be).fill(l.colorNumbers),vt=l.numbersMargin/100*C;for(d.font=J.font(l,"Numbers",C/200),d.lineWidth=0,d.textAlign="center";ke<be;ke++)d.fillStyle=ht[ke],Xe=l.majorTicks[ke],ze=l.exactTicks?U*((Oe[ke]-l.minValue)/pe):ke*U/(be-1),f?(De=F+y-M-D-ze+Ie/3,Pe&&(d.textAlign="right",d.fillText(Xe,A+xe-vt,De)),Ae&&(d.textAlign="left",d.fillText(Xe,A+fe+vt,De))):(d.measureText(Xe).width,we=A+M+D+ze,Pe&&d.fillText(Xe,we,F+xe-vt),Ae&&d.fillText(Xe,we,F+fe+Ie+vt))}function Il(d,l){if(l.title){var c=d.barDimensions,f=c.isVertical,y=c.width,C=c.length,E=c.baseX,M=c.baseY,D=c.titleMargin,A=l.fontTitleSize*y/200,F=Ce(E+(f?y:C)/2),U=Ce(M+D/2-(f?A:A/2)-.025*(f?C:y));d.save(),d.textAlign="center",d.fillStyle=l.colorTitle,d.font=J.font(l,"Title",y/200),d.lineWidth=0,d.fillText(l.title,F,U,f?y:C),d.restore()}}function Nl(d,l){if(l.units){var c=d.barDimensions,f=c.isVertical,y=c.width,C=c.length,E=c.baseX,M=c.baseY,D=c.unitsMargin,A=l.fontUnitsSize*y/200,F=Ce(E+(f?y:C)/2),U=Ce(M+(f?C:y)+D/2-A/2);d.save(),d.textAlign="center",d.fillStyle=l.colorUnits,d.font=J.font(l,"Units",y/200),d.lineWidth=0,d.fillText(J.formatContext(l,l.units),F,U,f?y:C),d.restore()}}function Ll(d,l){if(l.needle){var c=d.barDimensions,f=c.isVertical,y=c.width,C=c.length,E=c.barWidth,M=c.barOffset,D=c.barMargin,A=c.ticksLength,F=c.X,U=c.Y,oe=c.ticksPadding,pe=l.needleSide!=="right",ye=l.needleSide!=="left",Oe=A*(J.normalizedValue(l).indented-l.minValue)/(l.maxValue-l.minValue),be=(l.ticksWidth/100+oe)*y,Pe=E/2+be,Ae=Pe*(l.needleEnd/100),Ie=void 0,ke=void 0,Ee=void 0,xe=void 0,fe=l.needleType.toLowerCase()==="arrow"?zl:Vl,we=(y-E)/2,De=Pe*(l.needleStart/100),ze=we-be-De,Xe=we+E+be+De;d.save(),J.drawNeedleShadow(d,l),f?(Ee=Ce(U+C-D-M-Oe),pe&&(Ie=Ce(F+ze),ke=Ie+Ae,fe(d,l,Ie,Ee,ke,Ee,Ae)),ye&&(Ie=Ce(F+Xe),ke=Ie-Ae,fe(d,l,Ie,Ee,ke,Ee,Ae,!0))):(Ie=Ce(F+D+M+Oe),pe&&(Ee=Ce(U+ze),xe=Ee+Ae,fe(d,l,Ie,Ee,Ie,xe,Ae)),ye&&(Ee=Ce(U+Xe),xe=Ee-Ae,fe(d,l,Ie,Ee,Ie,xe,Ae,!0))),d.restore()}}function Co(d,l,c,f){return l.colorNeedleEnd?J.linearGradient(d,f?l.colorNeedleEnd:l.colorNeedle,f?l.colorNeedle:l.colorNeedleEnd,c,!d.barDimensions.isVertical):l.colorNeedle}function Vl(d,l,c,f,y,C,E,M){d.lineWidth=l.needleWidth,d.strokeStyle=Co(d,l,E,M),d.beginPath(),d.moveTo(c,f),d.lineTo(y,C),d.stroke(),d.closePath()}function zl(d,l,c,f,y,C,E,M){var D=Ce(.4*E),A=E-D,F=c===y,U=l.needleWidth/2;d.fillStyle=Co(d,l,E,M),d.beginPath(),F?(f>C&&(A*=-1),d.moveTo(c-U,f),d.lineTo(c+U,f),d.lineTo(c+U,f+A),d.lineTo(c,C),d.lineTo(c-U,f+A),d.lineTo(c-U,f)):(c>y&&(A*=-1),d.moveTo(c,f-U),d.lineTo(c,f+U),d.lineTo(c+A,f+U),d.lineTo(y,f),d.lineTo(c+A,f-U),d.lineTo(c,f-U)),d.fill(),d.closePath()}function Bl(d,l,c,f,y,C,E){var M=(parseFloat(l.fontValueSize)||0)*C/200,D=(.11*E-M)/2;d.barDimensions.isVertical&&J.drawValueBox(d,l,c,f+C/2,y+E-M-D,C)}var xo=(function(){function d(l,c){var f=[],y=!0,C=!1,E=void 0;try{for(var M,D=l[Symbol.iterator]();!(y=(M=D.next()).done)&&(f.push(M.value),!c||f.length!==c);y=!0);}catch(A){C=!0,E=A}finally{try{!y&&D.return&&D.return()}finally{if(C)throw E}}return f}return function(l,c){if(Array.isArray(l))return l;if(Symbol.iterator in Object(l))return d(l,c);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),ga=function d(l,c,f){l===null&&(l=Function.prototype);var y=Object.getOwnPropertyDescriptor(l,c);if(y===void 0){var C=Object.getPrototypeOf(l);return C===null?void 0:d(C,c,f)}if("value"in y)return y.value;var E=y.get;if(E!==void 0)return E.call(f)},Hl=function d(l,c,f,y){var C=Object.getOwnPropertyDescriptor(l,c);if(C===void 0){var E=Object.getPrototypeOf(l);E!==null&&d(E,c,f,y)}else if("value"in C&&C.writable)C.value=f;else{var M=C.set;M!==void 0&&M.call(y,f)}return f},Jt=(function(){function d(l,c){for(var f=0;f<c.length;f++){var y=c[f];y.enumerable=y.enumerable||!1,y.configurable=!0,"value"in y&&(y.writable=!0),Object.defineProperty(l,y.key,y)}}return function(l,c,f){return c&&d(l.prototype,c),f&&d(l,f),l}})(),fn=null,Fl=(function(){function d(){i(this,d),this._events={},this.addListener=this.on,this.removeListener=this.off}return Jt(d,[{key:"emit",value:function(l){if(this._events[l]){for(var c=0,f=this._events[l].length,y=arguments.length,C=Array(y>1?y-1:0),E=1;E<y;E++)C[E-1]=arguments[E];for(;c<f;c++)this._events[l][c]&&this._events[l][c].apply(this,C)}}},{key:"once",value:function(l){for(var c=arguments.length,f=Array(c>1?c-1:0),y=1;y<c;y++)f[y-1]=arguments[y];for(var C=0,E=f.length,M=this;C<E;C++)(function(){var D=f[C],A=function F(){M.off(l,F),D.apply(M,arguments)};f[C]=A})();this.on.apply(this,[l].concat(f))}},{key:"on",value:function(l){this._events[l]||(this._events[l]=[]);for(var c=0,f=arguments.length<=1?0:arguments.length-1;c<f;c++)this._events[l].push(arguments.length<=c+1?void 0:arguments[c+1])}},{key:"off",value:function(l){if(this._events[l])for(var c=0,f=arguments.length<=1?0:arguments.length-1;c<f;c++)for(var y=arguments.length<=c+1?void 0:arguments[c+1],C=void 0;~(C=this._events[l].indexOf(y));)this._events[l].splice(C,1)}},{key:"removeAllListeners",value:function(l){delete this._events[l]}},{key:"listeners",get:function(){return this._events}}]),d})(),ko=o("requestAnimationFrame")||function(d){return setTimeout(function(){return d(new Date().getTime())},1e3/60)},$i={linear:function(d){return d},quad:function(d){return Math.pow(d,2)},dequad:function(d){return 1-$i.quad(1-d)},quint:function(d){return Math.pow(d,5)},dequint:function(d){return 1-Math.pow(1-d,5)},cycle:function(d){return 1-Math.sin(Math.acos(d))},decycle:function(d){return Math.sin(Math.acos(1-d))},bounce:function(d){return 1-$i.debounce(1-d)},debounce:function(d){for(var l=0,c=1;;l+=c,c/=2)if(d>=(7-4*l)/11)return-Math.pow((11-6*l-11*d)/4,2)+Math.pow(c,2)},elastic:function(d){return 1-$i.delastic(1-d)},delastic:function(d){return Math.pow(2,10*(d-1))*Math.cos(20*Math.PI*1.5/3*d)}},pa=(function(){function d(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(i(this,d),this.duration=c,this.rule=l,this.draw=f,this.end=y,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",f);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",y)}return Jt(d,[{key:"animate",value:function(l,c){var f=this;this.frame&&this.cancel();var y=window.performance&&window.performance.now?window.performance.now():o("animationStartTime")||Date.now();l=l||this.draw,c=c||this.end,this.draw=l,this.end=c,this.frame=ko(function(C){return r(C,l,y,$i[f.rule]||f.rule,f.duration,c,f)})}},{key:"cancel",value:function(){this.frame&&((o("cancelAnimationFrame")||function(l){})(this.frame),this.frame=null)}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null}}]),d})();pa.rules=$i;var pi=(function(){function d(l,c,f){i(this,d),this.options=l,this.element=c.toLowerCase(),this.type=d.toDashed(f),this.Type=n[f],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||d.domReady(this.traverse.bind(this))}return Jt(d,[{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),c=0,f=l.length;c<f;c++)this.process(l[c]);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 c=0,f=l.length;c<f;c++){var y=l[c];if(y.type==="attributes"&&y.attributeName==="data-type"&&this.isValidNode(y.target)&&y.oldValue!==this.type)setTimeout(this.process.bind(this,y.target));else if(y.addedNodes&&y.addedNodes.length)for(var C=0,E=y.addedNodes.length;C<E;C++)setTimeout(this.process.bind(this,y.addedNodes[C]))}}},{key:"process",value:function(l){var c=this;if(!this.isValidNode(l))return null;var f=void 0,y=JSON.parse(JSON.stringify(this.options)),C=null;for(f in y)if(y.hasOwnProperty(f)){var E=d.toAttributeName(f),M=d.parse(l.getAttribute(E));M!=null&&(y[f]=M)}return y.renderTo=l,C=new this.Type(y),C.draw&&C.draw(),this.isObservable&&(C.observer=new MutationObserver(function(D){D.forEach(function(A){if(A.type==="attributes"){var F=A.attributeName.toLowerCase(),U=l.getAttribute(F).toLowerCase();if(F==="data-type"&&U&&U!==c.type)C.observer.disconnect(),delete C.observer,C.destroy&&C.destroy();else if(F.substr(0,5)==="data-"){var oe=F.substr(5).split("-").map(function(ye,Oe){return Oe?ye.charAt(0).toUpperCase()+ye.substr(1):ye}).join(""),pe={};pe[oe]=d.parse(l.getAttribute(A.attributeName)),oe==="value"?C&&(C.value=pe[oe]):C.update&&C.update(pe)}}})}),C.observer.observe(l,{attributes:!0})),C}}],[{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 c=l.split(/(?=[A-Z])/),f=1,y=c.length,C=c[0].toLowerCase();f<y;f++)C+="-"+c[f].toLowerCase();return C}},{key:"toCamelCase",value:function(l){for(var c=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],f=l.split(/-/),y=0,C=f.length,E="";y<C;y++)E+=y||c?f[y][0].toUpperCase()+f[y].substr(1).toLowerCase():f[y].toLowerCase();return E}},{key:"toAttributeName",value:function(l){return"data-"+d.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)}}]),d})(),kt=(function(){function d(l,c,f){i(this,d),d.collection.push(this),this.width=c||0,this.height=f||0,this.element=l,this.init()}return Jt(d,[{key:"init",value:function(){var l=d.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=d.collection.indexOf(this);~l&&d.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=d.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,c=d.collection.length;l<c;l++)d.collection[l].redraw()}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),d})();kt.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(kt.redraw);var fa={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(d){if(typeof d=="string")for(var l=0,c=this.length;l<c;l++){var f=this[l].options.renderTo.tagName?this[l].options.renderTo:document.getElementById(this[l].options.renderTo||"");if(f.getAttribute("id")===d)return this[l]}else if(typeof d=="number")return this[d];return null};var va="2.2.1",Ce=Math.round,St=Math.abs,Yi=new s;Yi.version=va;var Et=(function(d){function l(c){i(this,l);var f=e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this)),y=f.constructor.name;if(y==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(Yi.push(f),c.listeners&&Object.keys(c.listeners).forEach(function(E){(c.listeners[E]instanceof Array?c.listeners[E]:[c.listeners[E]]).forEach(function(M){f.on(E,M)})}),f.version=va,f.type=n[y]||l,f.initialized=!1,c.minValue=parseFloat(c.minValue),c.maxValue=parseFloat(c.maxValue),c.value=parseFloat(c.value)||0,c.borders||(c.borderInnerWidth=c.borderMiddleWidth=c.borderOuterWidth=0),!c.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var C=c.renderTo.tagName?c.renderTo:document.getElementById(c.renderTo);if(!(C instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return c.width=parseFloat(c.width)||0,c.height=parseFloat(c.height)||0,c.width&&c.height||(c.width||(c.width=C.parentNode?C.parentNode.offsetWidth:C.offsetWidth),c.height||(c.height=C.parentNode?C.parentNode.offsetHeight:C.offsetHeight)),f.options=c||{},f.options.animateOnInit&&(f._value=f.options.value,f.options.value=f.options.minValue),f.canvas=new kt(C,c.width,c.height),f.canvas.onRedraw=f.draw.bind(f),f.animation=new pa(c.animationRule,c.animationDuration),f}return t(l,d),Jt(l,[{key:"update",value:function(c){return Object.assign(this.options,this.type.configure(c||{})),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 c=Yi.indexOf(this);~c&&Yi.splice(c,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(c){var f=this;c=l.ensureValue(c,this.options.minValue);var y=this.options.value;if(c!==y)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===c))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=c),this.emit("animationStart"),this.animation.animate(function(C){var E=y+(c-y)*C;f.options.animatedValue&&f.emit("value",E,f.value),f.options.value=E,f.draw(),f.emit("animate",C,f.options.value)},function(){f._value!==void 0&&(f.emit("value",f._value,f.value),f.options.value=f._value,delete f._value),f.draw(),f.emit("animationEnd"),f.animation.frame=null})}else this.emit("value",c,this.value),this.options.value=c,this.draw()},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(c){return c}},{key:"initialize",value:function(c,f){return new pi(f,"canvas",c)}},{key:"fromElement",value:function(c){var f=pi.toCamelCase(c.getAttribute("data-type")),y=c.attributes,C=0,E=y.length,M={};if(f){for(/Gauge$/.test(f)||(f+="Gauge");C<E;C++)M[pi.toCamelCase(y[C].name.replace(/^data-/,""),!1)]=pi.parse(y[C].value);new pi(M,c.tagName,f).process(c)}}},{key:"ensureValue",value:function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return c=parseFloat(c),!isNaN(c)&&isFinite(c)||(c=parseFloat(f)||0),c}},{key:"mod",value:function(c,f){return(c%f+f)%f}},{key:"version",get:function(){return va}}]),l})(Fl);n!==void 0&&(n.BaseGauge=Et,n.gauges=(window.document||{}).gauges=Yi);var Ul=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,J={roundRect:v,padValue:x,formatMajorTickNumber:S,radians:_,radialPoint:B,linearGradient:re,drawNeedleShadow:ge,drawValueBox:_e,verifyError:h,prepareTicks:u,font:ae,normalizedValue:qe,formatContext:m},Xi=Math.PI,ba=Xi/2,So=Object.assign({},fa,{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"}),Gl=(function(d){function l(c){return i(this,l),c=Object.assign({},So,c||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(c)))}return t(l,d),Jt(l,[{key:"draw",value:function(){try{var c=this.canvas,f=[-c.drawX,-c.drawY,c.drawWidth,c.drawHeight],y=f[0],C=f[1],E=f[2],M=f[3],D=this.options;if(D.animationTarget==="needle"){if(!c.elementClone.initialized){var A=c.contextClone;A.clearRect(y,C,E,M),this.emit("beforePlate"),Te(A,D),this.emit("beforeHighlights"),Ye(A,D),this.emit("beforeMinorTicks"),tt(A,D),this.emit("beforeMajorTicks"),Je(A,D),this.emit("beforeNumbers"),mn(A,D),this.emit("beforeTitle"),uo(A,D),this.emit("beforeUnits"),mo(A,D),c.elementClone.initialized=!0}this.canvas.commit(),c.context.clearRect(y,C,E,M),c.context.drawImage(c.elementClone,y,C,E,M),this.emit("beforeProgressBar"),fo(c.context,D),this.emit("beforeValueBox"),po(c.context,D,vo(this)),this.emit("beforeNeedle"),go(c.context,D)}else{var F=-J.radians((D.value-D.minValue)/(D.maxValue-D.minValue)*D.ticksAngle);if(c.context.clearRect(y,C,E,M),this.emit("beforePlate"),Te(c.context,D),c.context.rotate(F),this.emit("beforeHighlights"),Ye(c.context,D),this.emit("beforeMinorTicks"),tt(c.context,D),this.emit("beforeMajorTicks"),Je(c.context,D),this.emit("beforeNumbers"),mn(c.context,D),this.emit("beforeProgressBar"),fo(c.context,D),c.context.rotate(-F),!c.elementClone.initialized){var U=c.contextClone;U.clearRect(y,C,E,M),this.emit("beforeTitle"),uo(U,D),this.emit("beforeUnits"),mo(U,D),this.emit("beforeNeedle"),go(U,D),c.elementClone.initialized=!0}c.context.drawImage(c.elementClone,y,C,E,M)}this.emit("beforeValueBox"),po(c.context,D,vo(this)),ga(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(oe){J.verifyError(oe)}return this}},{key:"value",set:function(c){c=Et.ensureValue(c,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=c,c=this.options.value+((c-this.options.value)%360+540)%360-180),Hl(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",c,this)},get:function(){return ga(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"value",this)}}],[{key:"configure",value:function(c){return c.barWidth>50&&(c.barWidth=50),isNaN(c.startAngle)&&(c.startAngle=45),isNaN(c.ticksAngle)&&(c.ticksAngle=270),c.ticksAngle>360&&(c.ticksAngle=360),c.ticksAngle<0&&(c.ticksAngle=0),c.startAngle<0&&(c.startAngle=0),c.startAngle>360&&(c.startAngle=360),c}}]),l})(Et);n!==void 0&&(n.RadialGauge=Gl),Et.initialize("RadialGauge",So);var _o=Object.assign({},fa,{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}),ql=(function(d){function l(c){return i(this,l),c=Object.assign({},_o,c||{}),e(this,(l.__proto__||Object.getPrototypeOf(l)).call(this,l.configure(c)))}return t(l,d),Jt(l,[{key:"draw",value:function(){try{var c=this.canvas,f=[-c.drawX,-c.drawY,c.drawWidth,c.drawHeight],y=f[0],C=f[1],E=f[2],M=f[3],D=this.options;if(!c.elementClone.initialized){var A=c.contextClone;A.clearRect(y,C,E,M),this.emit("beforePlate"),this.drawBox=El(A,D,y,C,E,M),this.emit("beforeBar"),Ml.apply(void 0,[A,D].concat(a(this.drawBox))),c.contextClone.barDimensions=A.barDimensions,this.emit("beforeHighlights"),Al(A,D),this.emit("beforeMinorTicks"),Ol(A,D),this.emit("beforeMajorTicks"),Wl(A,D),this.emit("beforeNumbers"),Rl(A,D),this.emit("beforeTitle"),Il(A,D),this.emit("beforeUnits"),Nl(A,D),c.elementClone.initialized=!0}this.canvas.commit(),c.context.clearRect(y,C,E,M),c.context.drawImage(c.elementClone,y,C,E,M),this.emit("beforeProgressBar"),Pl.apply(void 0,[c.context,D].concat(a(this.drawBox))),this.emit("beforeNeedle"),Ll(c.context,D),this.emit("beforeValueBox"),Bl.apply(void 0,[c.context,D,D.animatedValue?this.options.value:this.value].concat(a(this.drawBox))),ga(l.prototype.__proto__||Object.getPrototypeOf(l.prototype),"draw",this).call(this)}catch(F){J.verifyError(F)}return this}}],[{key:"configure",value:function(c){return c.barStrokeWidth>=c.barWidth&&(c.barStrokeWidth=Ce(c.barWidth/2)),c.hasLeft=yo("right",c),c.hasRight=yo("left",c),c.value>c.maxValue&&(c.value=c.maxValue),c.value<c.minValue&&(c.value=c.minValue),Et.configure(c)}}]),l})(Et);n!==void 0&&(n.LinearGauge=ql),Et.initialize("LinearGauge",_o),typeof ha<"u"&&Object.assign(n,{Collection:s,GenericOptions:fa,Animation:pa,BaseGauge:Et,drawings:J,SmartCanvas:kt,DomObserver:pi,vendorize:o})})(typeof ha<"u"?ha.exports:window)});function Pr(n,a,e,t,i){let o=(...r)=>(console.warn("gridstack.js: Function `"+e+"` is deprecated in "+i+" and has been replaced with `"+t+"`. It will be **removed** in a future release"),a.apply(n,r));return o.prototype=a.prototype,o}var k=class n{static getElements(a,e=document){if(typeof a=="string"){let t="getElementById"in e?e:void 0;if(t&&!isNaN(+a[0])){let o=t.getElementById(a);return o?[o]:[]}let i=e.querySelectorAll(a);return!i.length&&a[0]!=="."&&a[0]!=="#"&&(i=e.querySelectorAll("."+a),i.length||(i=e.querySelectorAll("#"+a))),Array.from(i)}return[a]}static getElement(a,e=document){if(typeof a=="string"){let t="getElementById"in e?e:void 0;if(!a.length)return null;if(t&&a[0]==="#")return t.getElementById(a.substring(1));if(a[0]==="#"||a[0]==="."||a[0]==="[")return e.querySelector(a);if(t&&!isNaN(+a[0]))return t.getElementById(a);let i=e.querySelector(a);return t&&!i&&(i=t.getElementById(a)),i||(i=e.querySelector("."+a)),i}return a}static lazyLoad(a){return a.lazyLoad||a.grid?.opts?.lazyLoad&&a.lazyLoad!==!1}static createDiv(a,e){let t=document.createElement("div");return a.forEach(i=>{i&&t.classList.add(i)}),e?.appendChild(t),t}static shouldSizeToContent(a,e=!1){return a?.grid&&(e?a.sizeToContent===!0||a.grid.opts.sizeToContent===!0&&a.sizeToContent===void 0:!!a.sizeToContent||a.grid.opts.sizeToContent&&a.sizeToContent!==!1)}static isIntercepted(a,e){return!(a.y>=e.y+e.h||a.y+a.h<=e.y||a.x+a.w<=e.x||a.x>=e.x+e.w)}static isTouching(a,e){return n.isIntercepted(a,{x:e.x-.5,y:e.y-.5,w:e.w+1,h:e.h+1})}static areaIntercept(a,e){let t=a.x>e.x?a.x:e.x,i=a.x+a.w<e.x+e.w?a.x+a.w:e.x+e.w;if(i<=t)return 0;let o=a.y>e.y?a.y:e.y,r=a.y+a.h<e.y+e.h?a.y+a.h:e.y+e.h;return r<=o?0:(i-t)*(r-o)}static area(a){return a.w*a.h}static sort(a,e=1){return a.sort((i,o)=>{let r=e*((i.y??1e4)-(o.y??1e4));return r===0?e*((i.x??1e4)-(o.x??1e4)):r})}static find(a,e){return e?a.find(t=>t.id===e):void 0}static createStylesheet(a,e,t){let i=document.createElement("style"),o=t?.nonce;return o&&(i.nonce=o),i.setAttribute("type","text/css"),i.setAttribute("gs-style-id",a),i.styleSheet?i.styleSheet.cssText="":i.appendChild(document.createTextNode("")),e?e.insertBefore(i,e.firstChild):(e=document.getElementsByTagName("head")[0],e.appendChild(i)),i}static removeStylesheet(a,e){let i=(e||document).querySelector("STYLE[gs-style-id="+a+"]");i&&i.parentNode&&i.remove()}static addCSSRule(a,e,t){a.textContent+=`${e} { ${t} } `}static toBool(a){return typeof a=="boolean"?a:typeof a=="string"?(a=a.toLowerCase(),!(a===""||a==="no"||a==="false"||a==="0")):!!a}static toNumber(a){return a===null||a.length===0?void 0:Number(a)}static parseHeight(a){let e,t="px";if(typeof a=="string")if(a==="auto"||a==="")e=0;else{let i=a.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!i)throw new Error(`Invalid height val = ${a}`);t=i[2]||"px",e=parseFloat(i[1])}else e=a;return{h:e,unit:t}}static defaults(a,...e){return e.forEach(t=>{for(let i in t){if(!t.hasOwnProperty(i))return;a[i]===null||a[i]===void 0?a[i]=t[i]:typeof t[i]=="object"&&typeof a[i]=="object"&&this.defaults(a[i],t[i])}}),a}static same(a,e){if(typeof a!="object")return a==e;if(typeof a!=typeof e||Object.keys(a).length!==Object.keys(e).length)return!1;for(let t in a)if(a[t]!==e[t])return!1;return!0}static copyPos(a,e,t=!1){return e.x!==void 0&&(a.x=e.x),e.y!==void 0&&(a.y=e.y),e.w!==void 0&&(a.w=e.w),e.h!==void 0&&(a.h=e.h),t&&(e.minW&&(a.minW=e.minW),e.minH&&(a.minH=e.minH),e.maxW&&(a.maxW=e.maxW),e.maxH&&(a.maxH=e.maxH)),a}static samePos(a,e){return a&&e&&a.x===e.x&&a.y===e.y&&(a.w||1)===(e.w||1)&&(a.h||1)===(e.h||1)}static sanitizeMinMax(a){a.minW||delete a.minW,a.minH||delete a.minH,a.maxW||delete a.maxW,a.maxH||delete a.maxH}static removeInternalAndSame(a,e){if(!(typeof a!="object"||typeof e!="object"))for(let t in a){let i=a[t],o=e[t];t[0]==="_"||i===o?delete a[t]:i&&typeof i=="object"&&o!==void 0&&(n.removeInternalAndSame(i,o),Object.keys(i).length||delete a[t])}}static removeInternalForSave(a,e=!0){for(let t in a)(t[0]==="_"||a[t]===null||a[t]===void 0)&&delete a[t];delete a.grid,e&&delete a.el,a.autoPosition||delete a.autoPosition,a.noResize||delete a.noResize,a.noMove||delete a.noMove,a.locked||delete a.locked,(a.w===1||a.w===a.minW)&&delete a.w,(a.h===1||a.h===a.minH)&&delete a.h}static throttle(a,e){let t=!1;return(...i)=>{t||(t=!0,setTimeout(()=>{a(...i),t=!1},e))}}static removePositioningStyles(a){let e=a.style;e.position&&e.removeProperty("position"),e.left&&e.removeProperty("left"),e.top&&e.removeProperty("top"),e.width&&e.removeProperty("width"),e.height&&e.removeProperty("height")}static getScrollElement(a){if(!a)return document.scrollingElement||document.documentElement;let e=getComputedStyle(a);return/(auto|scroll)/.test(e.overflow+e.overflowY)?a:this.getScrollElement(a.parentElement)}static updateScrollPosition(a,e,t){let i=a.getBoundingClientRect(),o=window.innerHeight||document.documentElement.clientHeight;if(i.top<0||i.bottom>o){let r=i.bottom-o,s=i.top,h=this.getScrollElement(a);if(h!==null){let m=h.scrollTop;i.top<0&&t<0?a.offsetHeight>o?h.scrollTop+=t:h.scrollTop+=Math.abs(s)>Math.abs(t)?t:s:t>0&&(a.offsetHeight>o?h.scrollTop+=t:h.scrollTop+=r>t?t:r),e.top+=h.scrollTop-m}}}static updateScrollResize(a,e,t){let i=this.getScrollElement(e),o=i.clientHeight,r=i===this.getScrollElement()?0:i.getBoundingClientRect().top,s=a.clientY-r,h=s<t,m=s>o-t;h?i.scrollBy({behavior:"smooth",top:s-t}):m&&i.scrollBy({behavior:"smooth",top:t-(o-s)})}static clone(a){return a==null||typeof a!="object"?a:a instanceof Array?[...a]:Q({},a)}static cloneDeep(a){let e=["parentGrid","el","grid","subGrid","engine"],t=n.clone(a);for(let i in t)t.hasOwnProperty(i)&&typeof t[i]=="object"&&i.substring(0,2)!=="__"&&!e.find(o=>o===i)&&(t[i]=n.cloneDeep(a[i]));return t}static cloneNode(a){let e=a.cloneNode(!0);return e.removeAttribute("id"),e}static appendTo(a,e){let t;typeof e=="string"?t=n.getElement(e):t=e,t&&t.appendChild(a)}static addElStyles(a,e){if(e instanceof Object)for(let t in e)e.hasOwnProperty(t)&&(Array.isArray(e[t])?e[t].forEach(i=>{a.style[t]=i}):a.style[t]=e[t])}static initEvent(a,e){let t={type:e.type},i={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:e.target?e.target:a.target};return["altKey","ctrlKey","metaKey","shiftKey"].forEach(o=>t[o]=a[o]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(o=>t[o]=a[o]),Q(Q({},t),i)}static simulateMouseEvent(a,e,t){let i=a,o=new MouseEvent(e,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:a.screenX,screenY:a.screenY,clientX:a.clientX,clientY:a.clientY,ctrlKey:i.ctrlKey??!1,altKey:i.altKey??!1,shiftKey:i.shiftKey??!1,metaKey:i.metaKey??!1,button:0,relatedTarget:a.target});(t||a.target).dispatchEvent(o)}static getValuesFromTransformedElement(a){let e=document.createElement("div");n.addElStyles(e,{opacity:"0",position:"fixed",top:"0px",left:"0px",width:"1px",height:"1px",zIndex:"-999999"}),a.appendChild(e);let t=e.getBoundingClientRect();return a.removeChild(e),e.remove(),{xScale:1/t.width,yScale:1/t.height,xOffset:t.left,yOffset:t.top}}static swap(a,e,t){if(!a)return;let i=a[e];a[e]=a[t],a[t]=i}static canBeRotated(a){return!(!a||a.w===a.h||a.locked||a.noResize||a.grid?.opts.disableResize||a.minW&&a.minW===a.maxW||a.minH&&a.minH===a.maxH)}};var Gn=(()=>{class n{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow,this._float=e.float,this.nodes=e.nodes||[],this.onChange=e.onChange}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(e,t=e,i,o={}){if(this.sortNodes(-1),i=i||this.collide(e,t),!i)return!1;if(e._moving&&!o.nested&&!this.float&&this.swap(e,i))return!0;let r=t;!this._loading&&this._useEntireRowArea(e,t)&&(r={x:0,w:this.column,y:t.y,h:t.h},i=this.collide(e,r,o.skip));let s=!1,h={nested:!0,pack:!1},m=0;for(;i=i||this.collide(e,r,o.skip);){if(m++>this.nodes.length*2)throw new Error("Infinite collide check");let u;if(i.locked||this._loading||e._moving&&!e._skipDown&&t.y>e.y&&!this.float&&(!this.collide(i,je(Q({},i),{y:e.y}),e)||!this.collide(i,je(Q({},i),{y:t.y-i.h}),e))){e._skipDown=e._skipDown||t.y>e.y;let v=Q(je(Q({},t),{y:i.y+i.h}),h);u=this._loading&&k.samePos(e,v)?!0:this.moveNode(e,v),(i.locked||this._loading)&&u?k.copyPos(t,e):!i.locked&&u&&o.pack&&(this._packNodes(),t.y=i.y+i.h,k.copyPos(e,t)),s=s||u}else u=this.moveNode(i,Q(je(Q({},i),{y:t.y+t.h,skip:e}),h));if(!u)return s;i=void 0}return s}collide(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.find(s=>s._id!==o&&s._id!==r&&k.isIntercepted(s,t))}collideAll(e,t=e,i){let o=e._id,r=i?._id;return this.nodes.filter(s=>s._id!==o&&s._id!==r&&k.isIntercepted(s,t))}directionCollideCoverage(e,t,i){if(!t.rect||!e._rect)return;let o=e._rect,r=Q({},t.rect);r.y>o.y?(r.h+=r.y-o.y,r.y=o.y):r.h+=o.y-r.y,r.x>o.x?(r.w+=r.x-o.x,r.x=o.x):r.w+=o.x-r.x;let s,h=.5;for(let m of i){if(m.locked||!m._rect)break;let u=m._rect,v=Number.MAX_VALUE,x=Number.MAX_VALUE;o.y<u.y?v=(r.y+r.h-u.y)/u.h:o.y+o.h>u.y+u.h&&(v=(u.y+u.h-r.y)/u.h),o.x<u.x?x=(r.x+r.w-u.x)/u.w:o.x+o.w>u.x+u.w&&(x=(u.x+u.w-r.x)/u.w);let S=Math.min(x,v);S>h&&(h=S,s=m)}return t.collide=s,s}cacheRects(e,t,i,o,r,s){return this.nodes.forEach(h=>h._rect={y:h.y*t+i,x:h.x*e+s,w:h.w*e-s-o,h:h.h*t-i-r}),this}swap(e,t){if(!t||t.locked||!e||e.locked)return!1;function i(){let r=t.x,s=t.y;return t.x=e.x,t.y=e.y,e.h!=t.h?(e.x=r,e.y=t.y+t.h):e.w!=t.w?(e.x=t.x+t.w,e.y=s):(e.x=r,e.y=s),e._dirty=t._dirty=!0,!0}let o;if(e.w===t.w&&e.h===t.h&&(e.x===t.x||e.y===t.y)&&(o=k.isTouching(e,t)))return i();if(o!==!1){if(e.w===t.w&&e.x===t.x&&(o||(o=k.isTouching(e,t)))){if(t.y<e.y){let r=e;e=t,t=r}return i()}if(o!==!1){if(e.h===t.h&&e.y===t.y&&(o||(o=k.isTouching(e,t)))){if(t.x<e.x){let r=e;e=t,t=r}return i()}return!1}}}isAreaEmpty(e,t,i,o){let r={x:e||0,y:t||0,w:i||1,h:o||1};return!this.collide(r)}compact(e="compact",t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();let i=this.batchMode;i||this.batchUpdate();let o=this._inColumnResize;o||(this._inColumnResize=!0);let r=this.nodes;return this.nodes=[],r.forEach((s,h,m)=>{let u;s.locked||(s.autoPosition=!0,e==="list"&&h&&(u=m[h-1])),this.addNode(s,!1,u)}),o||delete this._inColumnResize,i||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(e=1){return this.nodes=k.sort(this.nodes,e),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){let i=t===0?0:e.y-1;if(!(t===0||!this.collide(e,{x:e.x,y:i,w:e.w,h:e.h})))break;e._dirty=e.y!==i,e.y=i}}),this)}prepareNode(e,t){e._id=e._id??n._idSeq++;let i=e.id;if(i){let r=1;for(;this.nodes.find(s=>s.id===e.id&&s!==e);)e.id=i+"_"+r++}(e.x===void 0||e.y===void 0||e.x===null||e.y===null)&&(e.autoPosition=!0);let o={x:0,y:0,w:1,h:1};return k.defaults(e,o),e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,k.sanitizeMinMax(e),typeof e.x=="string"&&(e.x=Number(e.x)),typeof e.y=="string"&&(e.y=Number(e.y)),typeof e.w=="string"&&(e.w=Number(e.w)),typeof e.h=="string"&&(e.h=Number(e.h)),isNaN(e.x)&&(e.x=o.x,e.autoPosition=!0),isNaN(e.y)&&(e.y=o.y,e.autoPosition=!0),isNaN(e.w)&&(e.w=o.w),isNaN(e.h)&&(e.h=o.h),this.nodeBoundFix(e,t),e}nodeBoundFix(e,t){let i=e._orig||k.copyPos({},e);if(e.maxW&&(e.w=Math.min(e.w||1,e.maxW)),e.maxH&&(e.h=Math.min(e.h||1,e.maxH)),e.minW&&(e.w=Math.max(e.w||1,e.minW)),e.minH&&(e.h=Math.max(e.h||1,e.minH)),(e.x||0)+(e.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&e._id&&this.findCacheLayout(e,this.defaultColumn)===-1){let r=Q({},e);r.autoPosition||r.x===void 0?(delete r.x,delete r.y):r.x=Math.min(this.defaultColumn-1,r.x),r.w=Math.min(this.defaultColumn,r.w||1),this.cacheOneLayout(r,this.defaultColumn)}return e.w>this.column?e.w=this.column:e.w<1&&(e.w=1),this.maxRow&&e.h>this.maxRow?e.h=this.maxRow:e.h<1&&(e.h=1),e.x<0&&(e.x=0),e.y<0&&(e.y=0),e.x+e.w>this.column&&(t?e.w=this.column-e.x:e.x=this.column-e.w),this.maxRow&&e.y+e.h>this.maxRow&&(t?e.h=this.maxRow-e.y:e.y=this.maxRow-e.h),k.samePos(e,i)||(e._dirty=!0),this}getDirtyNodes(e){return e?this.nodes.filter(t=>t._dirty&&!k.samePos(t,t._orig)):this.nodes.filter(t=>t._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;let t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this)}saveInitial(){return this.nodes.forEach(e=>{e._orig=k.copyPos({},e),delete e._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(e=>{!e._orig||k.samePos(e,e._orig)||(k.copyPos(e,e._orig),e._dirty=!0)}),this._notify(),this}findEmptyPosition(e,t=this.nodes,i=this.column,o){let r=o?o.y*i+(o.x+o.w):0,s=!1;for(let h=r;!s;++h){let m=h%i,u=Math.floor(h/i);if(m+e.w>i)continue;let v={x:m,y:u,w:e.w,h:e.h};t.find(x=>k.isIntercepted(v,x))||((e.x!==m||e.y!==u)&&(e._dirty=!0),e.x=m,e.y=u,delete e.autoPosition,s=!0)}return s}addNode(e,t=!1,i){let o=this.nodes.find(s=>s._id===e._id);if(o)return o;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let r;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,i)&&(delete e.autoPosition,r=!0),this.nodes.push(e),t&&this.addedNodes.push(e),r||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,i=!1){return this.nodes.find(o=>o._id===e._id)?(i&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(o=>o._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(o=>o._removeDOM=!0);let i=this.nodes;return this.removedNodes=t?i:[],this.nodes=[],this._notify(i)}moveNodeCheck(e,t){if(!this.changedPosConstrain(e,t))return!1;if(t.pack=!0,!this.maxRow)return this.moveNode(e,t);let i,o=new n({column:this.column,float:this.float,nodes:this.nodes.map(s=>s._id===e._id?(i=Q({},s),i):Q({},s))});if(!i)return!1;let r=o.moveNode(i,t)&&o.getRow()<=Math.max(this.getRow(),this.maxRow);if(!r&&!t.resizing&&t.collide){let s=t.collide.el.gridstackNode;if(this.swap(e,s))return this._notify(),!0}return r?(o.nodes.filter(s=>s._dirty).forEach(s=>{let h=this.nodes.find(m=>m._id===s._id);h&&(k.copyPos(h,s),h._dirty=!0)}),this._notify(),!0):!1}willItFit(e){if(delete e._willFitPos,!this.maxRow)return!0;let t=new n({column:this.column,float:this.float,nodes:this.nodes.map(o=>Q({},o))}),i=Q({},e);return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,t.addNode(i),t.getRow()<=this.maxRow?(e._willFitPos=k.copyPos({},i),!0):!1}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y?!0:(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(e,t){if(!e||!t)return!1;let i;t.pack===void 0&&!this.batchMode&&(i=t.pack=!0),typeof t.x!="number"&&(t.x=e.x),typeof t.y!="number"&&(t.y=e.y),typeof t.w!="number"&&(t.w=e.w),typeof t.h!="number"&&(t.h=e.h);let o=e.w!==t.w||e.h!==t.h,r=k.copyPos({},e,!0);if(k.copyPos(r,t),this.nodeBoundFix(r,o),k.copyPos(t,r),!t.forceCollide&&k.samePos(e,t))return!1;let s=k.copyPos({},e),h=this.collideAll(e,r,t.skip),m=!0;if(h.length){let u=e._moving&&!t.nested,v=u?this.directionCollideCoverage(e,t,h):h[0];if(u&&v&&e.grid?.opts?.subGridDynamic&&!e.grid._isTemp){let x=k.areaIntercept(t.rect,v._rect),S=k.area(t.rect),_=k.area(v._rect);x/(S<_?S:_)>.8&&(v.grid.makeSubGrid(v.el,void 0,e),v=void 0)}v?m=!this._fixCollisions(e,r,v,t):(m=!1,i&&delete t.pack)}return m&&!k.samePos(e,r)&&(e._dirty=!0,k.copyPos(e,r)),t.pack&&this._packNodes()._notify(),!k.samePos(e,s)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let e=this.nodes.find(t=>t._updating);return e&&(delete e._updating,delete e._skipDown),this}save(e=!0,t){let i=this._layouts?.length,o=i&&this.column!==i-1?this._layouts[i-1]:null,r=[];return this.sortNodes(),this.nodes.forEach(s=>{let h=o?.find(u=>u._id===s._id),m=Q(Q({},s),h||{});k.removeInternalForSave(m,!e),t&&t(s,m),r.push(m)}),r}layoutsNodesChange(e){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((t,i)=>{if(!t||i===this.column)return this;if(i<this.column)this._layouts[i]=void 0;else{let o=i/this.column;e.forEach(r=>{if(!r._orig)return;let s=t.find(h=>h._id===r._id);s&&(s.y>=0&&r.y!==r._orig.y&&(s.y+=r.y-r._orig.y),r.x!==r._orig.x&&(s.x=Math.round(r.x*o)),r.w!==r._orig.w&&(s.w=Math.round(r.w*o)))})}}),this)}columnChanged(e,t,i="moveScale"){if(!this.nodes.length||!t||e===t)return this;let o=i==="compact"||i==="list";o&&this.sortNodes(1),t<e&&this.cacheLayout(this.nodes,e),this.batchUpdate();let r=[],s=o?this.nodes:k.sort(this.nodes,-1);if(t>e&&this._layouts){let h=this._layouts[t]||[],m=this._layouts.length-1;!h.length&&e!==m&&this._layouts[m]?.length&&(e=m,this._layouts[m].forEach(u=>{let v=s.find(x=>x._id===u._id);v&&(!o&&!u.autoPosition&&(v.x=u.x??v.x,v.y=u.y??v.y),v.w=u.w??v.w,(u.x==null||u.y===void 0)&&(v.autoPosition=!0))})),h.forEach(u=>{let v=s.findIndex(x=>x._id===u._id);if(v!==-1){let x=s[v];if(o){x.w=u.w;return}(u.autoPosition||isNaN(u.x)||isNaN(u.y))&&this.findEmptyPosition(u,r),u.autoPosition||(x.x=u.x??x.x,x.y=u.y??x.y,x.w=u.w??x.w,r.push(x)),s.splice(v,1)}})}if(o)this.compact(i,!1);else{if(s.length)if(typeof i=="function")i(t,e,r,s);else{let h=o||i==="none"?1:t/e,m=i==="move"||i==="moveScale",u=i==="scale"||i==="moveScale";s.forEach(v=>{v.x=t===1?0:m?Math.round(v.x*h):Math.min(v.x,t-1),v.w=t===1||e===1?1:u?Math.round(v.w*h)||1:Math.min(v.w,t),r.push(v)}),s=[]}r=k.sort(r,-1),this._inColumnResize=!0,this.nodes=[],r.forEach(h=>{this.addNode(h,!1),delete h._orig})}return this.nodes.forEach(h=>delete h._orig),this.batchUpdate(!1,!o),delete this._inColumnResize,this}cacheLayout(e,t,i=!1){let o=[];return e.forEach((r,s)=>{if(r._id===void 0){let h=r.id?this.nodes.find(m=>m.id===r.id):void 0;r._id=h?._id??n._idSeq++}o[s]={x:r.x,y:r.y,w:r.w,_id:r._id}}),this._layouts=i?[]:this._layouts||[],this._layouts[t]=o,this}cacheOneLayout(e,t){e._id=e._id??n._idSeq++;let i={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete i.x,delete i.y,e.autoPosition&&(i.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[t]=this._layouts[t]||[];let o=this.findCacheLayout(e,t);return o===-1?this._layouts[t].push(i):this._layouts[t][o]=i,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(i=>i._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){let i=this.findCacheLayout(e,t);i!==-1&&this._layouts[t].splice(i,1)}}cleanupNode(e){for(let t in e)t[0]==="_"&&t!=="_id"&&delete e[t];return this}}return n._idSeq=0,n})();var ut={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:"grid-stack-item",decline:"grid-stack-non-removable"},resizable:{handles:"se"},rtl:"auto"};var te=class{};var lt=typeof window<"u"&&typeof document<"u"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),Ct=class{};function qn(n,a){n.touches.length>1||(n.cancelable&&n.preventDefault(),k.simulateMouseEvent(n.changedTouches[0],a))}function Ar(n,a){n.cancelable&&n.preventDefault(),k.simulateMouseEvent(n,a)}function Oi(n){Ct.touchHandled||(Ct.touchHandled=!0,qn(n,"mousedown"))}function Ri(n){Ct.touchHandled&&qn(n,"mousemove")}function Ii(n){if(!Ct.touchHandled)return;Ct.pointerLeaveTimeout&&(window.clearTimeout(Ct.pointerLeaveTimeout),delete Ct.pointerLeaveTimeout);let a=!!te.dragElement;qn(n,"mouseup"),a||qn(n,"click"),Ct.touchHandled=!1}function Ni(n){n.pointerType!=="mouse"&&n.target.releasePointerCapture(n.pointerId)}function Ra(n){te.dragElement&&n.pointerType!=="mouse"&&Ar(n,"mouseenter")}function Ia(n){te.dragElement&&n.pointerType!=="mouse"&&(Ct.pointerLeaveTimeout=window.setTimeout(()=>{delete Ct.pointerLeaveTimeout,Ar(n,"mouseleave")},10))}var Wr=(()=>{class n{constructor(e,t,i){this.host=e,this.dir=t,this.option=i,this.moving=!1,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){let e=this.el=document.createElement("div");return e.classList.add("ui-resizable-handle"),e.classList.add(`${n.prefix}${this.dir}`),e.style.zIndex="100",e.style.userSelect="none",this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),lt&&(this.el.addEventListener("touchstart",Oi),this.el.addEventListener("pointerdown",Ni)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),lt&&(this.el.removeEventListener("touchstart",Oi),this.el.removeEventListener("pointerdown",Ni)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),lt&&(this.el.addEventListener("touchmove",Ri),this.el.addEventListener("touchend",Ii)),e.stopPropagation(),e.preventDefault()}_mouseMove(e){let t=this.mouseDownEvent;this.moving?this._triggerEvent("move",e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",e),document.addEventListener("keydown",this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent("stop",e),document.removeEventListener("keydown",this._keyEvent)),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),lt&&(this.el.removeEventListener("touchmove",Ri),this.el.removeEventListener("touchend",Ii)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key==="Escape"&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){return this.option[e]&&this.option[e](t),this}}return n.prefix="ui-resizable-",n})();var jt=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(a,e){this._eventRegister[a]=e}off(a){delete this._eventRegister[a]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(a,e){if(!this.disabled&&this._eventRegister&&this._eventRegister[a])return this._eventRegister[a](e)}};var Or=(()=>{class n extends jt{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{let o=this.el.parentElement.getBoundingClientRect(),r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},s=this.temporalRect||r;return{position:{left:(s.left-o.left)*this.rectScale.x,top:(s.top-o.top)*this.rectScale.y},size:{width:s.width*this.rectScale.x,height:s.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){let t=e.handles&&e.handles!==this.option.handles,i=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.keys(e).forEach(o=>this.option[o]=e[o]),t&&(this._removeHandlers(),this._setupHandlers()),i&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),te.overResizeElement===this&&delete te.overResizeElement),this}_mouseOver(e){te.overResizeElement||te.dragElement||(te.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(e){te.overResizeElement===this&&(delete te.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){return this.handlers=this.option.handles.split(",").map(e=>e.trim()).map(e=>new Wr(this.el,e,{start:t=>{this._resizeStart(t)},stop:t=>{this._resizeStop(t)},move:t=>{this._resizing(t,e)}})),this}_resizeStart(e){this.sizeToContent=k.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=k.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=e,this._setupHelper(),this._applyChange();let t=k.initEvent(e,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(t,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",t),this}_resizing(e,t){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(e,t),this._applyChange();let i=k.initEvent(e,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(i,this._ui()),this.triggerEvent("resize",i),this}_resizeStop(e){let t=k.initEvent(e,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(t),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",t),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=n._originStyleProp.map(i=>this.el.style[i]),this.parentOriginStylePosition=this.el.parentElement.style.position;let e=this.el.parentElement,t=k.getValuesFromTransformedElement(e);return this.rectScale={x:t.xScale,y:t.yScale},getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return n._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){let i=this.startEvent,o={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},r=e.clientX-i.clientX,s=this.sizeToContent?0:e.clientY-i.clientY,h,m;t.indexOf("e")>-1?o.width+=r:t.indexOf("w")>-1&&(o.width-=r,o.left+=r,h=!0),t.indexOf("s")>-1?o.height+=s:t.indexOf("n")>-1&&(o.height-=s,o.top+=s,m=!0);let u=this._constrainSize(o.width,o.height,h,m);return Math.round(o.width)!==Math.round(u.width)&&(t.indexOf("w")>-1&&(o.left+=o.width-u.width),o.width=u.width),Math.round(o.height)!==Math.round(u.height)&&(t.indexOf("n")>-1&&(o.top+=o.height-u.height),o.height=u.height),o}_constrainSize(e,t,i,o){let r=this.option,s=(i?r.maxWidthMoveLeft:r.maxWidth)||Number.MAX_SAFE_INTEGER,h=r.minWidth/this.rectScale.x||e,m=(o?r.maxHeightMoveUp:r.maxHeight)||Number.MAX_SAFE_INTEGER,u=r.minHeight/this.rectScale.y||t,v=Math.min(s,Math.max(h,e)),x=Math.min(m,Math.max(u,t));return{width:v,height:x}}_applyChange(){let e={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let t=this.el.parentElement,{left:i,top:o}=t.getBoundingClientRect();e={left:i,top:o,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(t=>{let i=this.temporalRect[t],o=t==="width"||t==="left"?this.rectScale.x:t==="height"||t==="top"?this.rectScale.y:1;this.el.style[t]=(i-e[t])*o+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}}return n._originStyleProp=["width","height","position","left","top","opacity","zIndex"],n})();var $l='input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle',Rr=(()=>{class n extends jt{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0};let i=t?.handle?.substring(1),o=e.gridstackNode;this.dragEls=!i||e.classList.contains(i)?[e]:o?.subGrid?[e.querySelector(t.handle)||e]:Array.from(e.querySelectorAll(t.handle)),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener("mousedown",this._mouseDown),lt&&(e.addEventListener("touchstart",Oi),e.addEventListener("pointerdown",Ni))}),this.el.classList.remove("ui-draggable-disabled"))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.dragEls.forEach(t=>{t.removeEventListener("mousedown",this._mouseDown),lt&&(t.removeEventListener("touchstart",Oi),t.removeEventListener("pointerdown",Ni))}),e||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(e){return Object.keys(e).forEach(t=>this.option[t]=e[t]),this}_mouseDown(e){if(!te.mouseHandled)return e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest($l)||this.option.cancel&&e.target.closest(this.option.cancel)||(this.mouseDownEvent=e,delete this.dragging,delete te.dragElement,delete te.dropElement,document.addEventListener("mousemove",this._mouseMove,{capture:!0,passive:!0}),document.addEventListener("mouseup",this._mouseUp,!0),lt&&(e.currentTarget.addEventListener("touchmove",Ri),e.currentTarget.addEventListener("touchend",Ii)),e.preventDefault(),document.activeElement&&document.activeElement.blur(),te.mouseHandled=!0),!0}_callDrag(e){if(!this.dragging)return;let t=k.initEvent(e,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(t,this.ui()),this.triggerEvent("drag",t)}_mouseMove(e){let t=this.mouseDownEvent;if(this.lastDrag=e,this.dragging)if(this._dragFollow(e),te.pauseDrag){let i=Number.isInteger(te.pauseDrag)?te.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(e),i)}else this._callDrag(e);else if(Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>3){this.dragging=!0,te.dragElement=this;let i=this.el.gridstackNode?.grid;i?te.dropElement=i.el.ddElement.ddDroppable:delete te.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=k.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(e,this.el,this.helperContainment),this._setupHelperStyle(e);let o=k.initEvent(e,{target:this.el,type:"dragstart"});this.option.start&&this.option.start(o,this.ui()),this.triggerEvent("dragstart",o),document.addEventListener("keydown",this._keyEvent)}return!0}_mouseUp(e){if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),lt&&e.currentTarget&&(e.currentTarget.removeEventListener("touchmove",Ri,!0),e.currentTarget.removeEventListener("touchend",Ii,!0)),this.dragging){delete this.dragging,delete this.el.gridstackNode?._origRotate,document.removeEventListener("keydown",this._keyEvent),te.dropElement?.el===this.el.parentElement&&delete te.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();let t=k.initEvent(e,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(t),this.triggerEvent("dragstop",t),te.dropElement&&te.dropElement.drop(e)}delete this.helper,delete this.mouseDownEvent,delete te.dragElement,delete te.dropElement,delete te.mouseHandled,e.preventDefault()}_keyEvent(e){let t=this.el.gridstackNode,i=t?.grid||te.dropElement?.el?.gridstack;if(e.key==="Escape")t&&t._origRotate&&(t._orig=t._origRotate,delete t._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(t&&i&&(e.key==="r"||e.key==="R")){if(!k.canBeRotated(t))return;t._origRotate=t._origRotate||Q({},t._orig),delete t._moving,i.setAnimation(!1).rotate(t.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetLeft}).setAnimation(),t._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,t.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+"px",this.helper.style.height=this.dragOffset.height+"px",k.swap(t._orig,"w","h"),delete t._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let e=this.el;return typeof this.option.helper=="function"?e=this.option.helper(this.el):this.option.helper==="clone"&&(e=k.cloneNode(this.el)),e.parentElement||k.appendTo(e,this.option.appendTo==="parent"?this.el.parentElement:this.option.appendTo),this.dragElementOriginStyle=n.originStyleProp.map(t=>this.el.style[t]),e}_setupHelperStyle(e){this.helper.classList.add("ui-draggable-dragging");let t=this.helper.style;return t.pointerEvents="none",t.width=this.dragOffset.width+"px",t.height=this.dragOffset.height+"px",t.willChange="left, top",t.position="fixed",this._dragFollow(e),t.transition="none",setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove("ui-draggable-dragging"),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){let t=this.helper,i=this.dragElementOriginStyle.transition||null;t.style.transition=this.dragElementOriginStyle.transition="none",n.originStyleProp.forEach(o=>t.style[o]=this.dragElementOriginStyle[o]||null),setTimeout(()=>t.style.transition=i,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){let t={left:0,top:0},i=this.helper.style,o=this.dragOffset;i.left=(e.clientX+o.offsetLeft-t.left)*this.dragTransform.xScale+"px",i.top=(e.clientY+o.offsetTop-t.top)*this.dragTransform.yScale+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(e,t,i){let o=0,r=0;i&&(o=this.dragTransform.xOffset,r=this.dragTransform.yOffset);let s=t.getBoundingClientRect();return{left:s.left,top:s.top,offsetLeft:-e.clientX+s.left-o,offsetTop:-e.clientY+s.top-r,width:s.width*this.dragTransform.xScale,height:s.height*this.dragTransform.yScale}}ui(){let t=this.el.parentElement.getBoundingClientRect(),i=this.helper.getBoundingClientRect();return{position:{top:(i.top-t.top)*this.dragTransform.yScale,left:(i.left-t.left)*this.dragTransform.xScale}}}}return n.originStyleProp=["width","height","transform","transform-origin","transition","pointerEvents","position","left","top","minWidth","willChange"],n})();var jn=class extends jt{constructor(a,e={}){super(),this.el=a,this.option=e,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(a,e){super.on(a,e)}off(a){super.off(a)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),lt&&(this.el.addEventListener("pointerenter",Ra),this.el.addEventListener("pointerleave",Ia)))}disable(a=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),a||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),lt&&(this.el.removeEventListener("pointerenter",Ra),this.el.removeEventListener("pointerleave",Ia)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(a){return Object.keys(a).forEach(e=>this.option[e]=a[e]),this._setupAccept(),this}_mouseEnter(a){if(!te.dragElement||!this._canDrop(te.dragElement.el))return;a.preventDefault(),a.stopPropagation(),te.dropElement&&te.dropElement!==this&&te.dropElement._mouseLeave(a,!0),te.dropElement=this;let e=k.initEvent(a,{target:this.el,type:"dropover"});this.option.over&&this.option.over(e,this._ui(te.dragElement)),this.triggerEvent("dropover",e),this.el.classList.add("ui-droppable-over")}_mouseLeave(a,e=!1){if(!te.dragElement||te.dropElement!==this)return;a.preventDefault(),a.stopPropagation();let t=k.initEvent(a,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(t,this._ui(te.dragElement)),this.triggerEvent("dropout",t),te.dropElement===this&&(delete te.dropElement,!e)){let i,o=this.el.parentElement;for(;!i&&o;)i=o.ddElement?.ddDroppable,o=o.parentElement;i&&i._mouseEnter(a)}}drop(a){a.preventDefault();let e=k.initEvent(a,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(e,this._ui(te.dragElement)),this.triggerEvent("drop",e)}_canDrop(a){return a&&(!this.accept||this.accept(a))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=a=>a.classList.contains(this.option.accept)||a.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(a){return Q({draggable:a.el},a.ui())}};var $n=class n{static init(a){return a.ddElement||(a.ddElement=new n(a)),a.ddElement}constructor(a){this.el=a}on(a,e){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(a)>-1?this.ddDraggable.on(a,e):this.ddDroppable&&["drop","dropover","dropout"].indexOf(a)>-1?this.ddDroppable.on(a,e):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(a)>-1&&this.ddResizable.on(a,e),this}off(a){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(a)>-1?this.ddDraggable.off(a):this.ddDroppable&&["drop","dropover","dropout"].indexOf(a)>-1?this.ddDroppable.off(a):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(a)>-1&&this.ddResizable.off(a),this}setupDraggable(a){return this.ddDraggable?this.ddDraggable.updateOption(a):this.ddDraggable=new Rr(this.el,a),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(a){return this.ddResizable?this.ddResizable.updateOption(a):this.ddResizable=new Or(this.el,a),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(a){return this.ddDroppable?this.ddDroppable.updateOption(a):this.ddDroppable=new jn(this.el,a),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};var Yn=class{resizable(a,e,t,i){return this._getDDElements(a,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddResizable&&o.ddResizable[e]();else if(e==="destroy")o.ddResizable&&o.cleanResizable();else if(e==="option")o.setupResizable({[t]:i});else{let s=o.el.gridstackNode.grid,h=o.el.getAttribute("gs-resize-handles")||s.opts.resizable.handles||"e,s,se";h==="all"&&(h="n,e,s,w,se,sw,ne,nw");let m=!s.opts.alwaysShowResizeHandle;o.setupResizable(je(Q({},s.opts.resizable),{handles:h,autoHide:m,start:e.start,stop:e.stop,resize:e.resize}))}}),this}draggable(a,e,t,i){return this._getDDElements(a,e).forEach(o=>{if(e==="disable"||e==="enable")o.ddDraggable&&o.ddDraggable[e]();else if(e==="destroy")o.ddDraggable&&o.cleanDraggable();else if(e==="option")o.setupDraggable({[t]:i});else{let r=o.el.gridstackNode.grid;o.setupDraggable(je(Q({},r.opts.draggable),{start:e.start,stop:e.stop,drag:e.drag}))}}),this}dragIn(a,e){return this._getDDElements(a).forEach(t=>t.setupDraggable(e)),this}droppable(a,e,t,i){return typeof e.accept=="function"&&!e._accept&&(e._accept=e.accept,e.accept=o=>e._accept(o)),this._getDDElements(a,e).forEach(o=>{e==="disable"||e==="enable"?o.ddDroppable&&o.ddDroppable[e]():e==="destroy"?o.ddDroppable&&o.cleanDroppable():e==="option"?o.setupDroppable({[t]:i}):o.setupDroppable(e)}),this}isDroppable(a){return!!(a?.ddElement?.ddDroppable&&!a.ddElement.ddDroppable.disabled)}isDraggable(a){return!!(a?.ddElement?.ddDraggable&&!a.ddElement.ddDraggable.disabled)}isResizable(a){return!!(a?.ddElement?.ddResizable&&!a.ddElement.ddResizable.disabled)}on(a,e,t){return this._getDDElements(a).forEach(i=>i.on(e,o=>{t(o,te.dragElement?te.dragElement.el:o.target,te.dragElement?te.dragElement.helper:null)})),this}off(a,e){return this._getDDElements(a).forEach(t=>t.off(e)),this}_getDDElements(a,e){let t=a.gridstack||e!=="destroy"&&e!=="disable",i=k.getElements(a);return i.length?i.map(r=>r.ddElement||(t?$n.init(r):null)).filter(r=>r):[]}};var dt=new Yn,Li=(()=>{class n{static init(e={},t=".grid-stack"){if(typeof document>"u")return null;let i=n.getGridElement(t);return i?(i.gridstack||(i.gridstack=new n(i,k.cloneDeep(e))),i.gridstack):(console.error(typeof t=="string"?'GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
2
+ Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:"GridStack.init() no grid element was passed."),null)}static initAll(e={},t=".grid-stack"){let i=[];return typeof document>"u"||(n.getGridElements(t).forEach(o=>{o.gridstack||(o.gridstack=new n(o,k.cloneDeep(e))),i.push(o.gridstack)}),i.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+t+`" - element missing or wrong selector ?
3
+ Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`)),i}static addGrid(e,t={}){if(!e)return null;let i=e;if(i.gridstack){let s=i.gridstack;return t&&(s.opts=Q(Q({},s.opts),t)),t.children!==void 0&&s.load(t.children),s}return(!e.classList.contains("grid-stack")||n.addRemoveCB)&&(n.addRemoveCB?i=n.addRemoveCB(e,t,!0,!0):i=k.createDiv(["grid-stack",t.class],e)),n.init(t,i)}static registerEngine(e){n.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=k.createDiv([this.opts.placeholderClass,ut.itemClass,this.opts.itemClass]);let e=k.createDiv(["placeholder-content"],this._placeholder);this.opts.placeholderText&&(e.textContent=this.opts.placeholderText)}return this._placeholder}constructor(e,t={}){this.el=e,this.opts=t,this.animationDelay=310,this._gsEventHandler={},this._extraDragRow=0,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},e.gridstack=this,this.opts=t=t||{},e.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),t.row&&(t.minRow=t.maxRow=t.row,delete t.row);let i=k.toNumber(e.getAttribute("gs-row"));t.column==="auto"&&delete t.column,t.alwaysShowResizeHandle!==void 0&&(t._alwaysShowResizeHandle=t.alwaysShowResizeHandle);let o=t.columnOpts?.breakpoints,r=t;if(r.oneColumnModeDomSort&&(delete r.oneColumnModeDomSort,console.log("warning: Gridstack oneColumnModeDomSort no longer supported. Use GridStackOptions.columnOpts instead.")),r.oneColumnSize||r.disableOneColumnMode===!1){let x=r.oneColumnSize||768;delete r.oneColumnSize,delete r.disableOneColumnMode,t.columnOpts=t.columnOpts||{},o=t.columnOpts.breakpoints=t.columnOpts.breakpoints||[];let S=o.find(_=>_.c===1);S?S.w=x:(S={c:1,w:x},o.push(S,{c:12,w:x+1}))}let s=t.columnOpts;s&&(!s.columnWidth&&!s.breakpoints?.length?(delete t.columnOpts,o=void 0):s.columnMax=s.columnMax||12),o?.length>1&&o.sort((x,S)=>(S.w||0)-(x.w||0));let h=je(Q({},k.cloneDeep(ut)),{column:k.toNumber(e.getAttribute("gs-column"))||ut.column,minRow:i||k.toNumber(e.getAttribute("gs-min-row"))||ut.minRow,maxRow:i||k.toNumber(e.getAttribute("gs-max-row"))||ut.maxRow,staticGrid:k.toBool(e.getAttribute("gs-static"))||ut.staticGrid,sizeToContent:k.toBool(e.getAttribute("gs-size-to-content"))||void 0,draggable:{handle:(t.handleClass?"."+t.handleClass:t.handle?t.handle:"")||ut.draggable.handle},removableOptions:{accept:t.itemClass||ut.removableOptions.accept,decline:ut.removableOptions.decline}});e.getAttribute("gs-animate")&&(h.animate=k.toBool(e.getAttribute("gs-animate"))),t=k.defaults(t,h),this._initMargin(),this.checkDynamicColumn(),this.el.classList.add("gs-"+t.column),t.rtl==="auto"&&(t.rtl=e.style.direction==="rtl"),t.rtl&&this.el.classList.add("grid-stack-rtl");let u=this.el.closest("."+ut.itemClass)?.gridstackNode;u&&(u.subGrid=this,this.parentGridNode=u,this.el.classList.add("grid-stack-nested"),u.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=t.cellHeight==="auto",this._isAutoCellHeight||t.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof t.cellHeight=="number"&&t.cellHeightUnit&&t.cellHeightUnit!==ut.cellHeightUnit&&(t.cellHeight=t.cellHeight+t.cellHeightUnit,delete t.cellHeightUnit),this.cellHeight(t.cellHeight,!1)),t.alwaysShowResizeHandle==="mobile"&&(t.alwaysShowResizeHandle=lt),this._styleSheetClass="gs-id-"+Gn._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();let v=t.engineClass||n.engineClass||Gn;if(this.engine=new v({column:this.getColumn(),float:t.float,maxRow:t.maxRow,onChange:x=>{let S=0;this.engine.nodes.forEach(_=>{S=Math.max(S,_.y+_.h)}),x.forEach(_=>{let B=_.el;B&&(_._removeDOM?(B&&B.remove(),delete _._removeDOM):this._writePosAttr(B,_))}),this._updateStyles(!1,S)}}),this._updateStyles(!1,0),t.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(x=>this._prepareElement(x)),delete this.engine._loading,this.batchUpdate(!1)),t.children){let x=t.children;delete t.children,x.length&&this.load(x)}this.setAnimation(),t.subGridDynamic&&!te.pauseDrag&&(te.pauseDrag=!0),t.draggable?.pause!==void 0&&(te.pauseDrag=t.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateResizeEvent()}addWidget(e){if(typeof e=="string"){console.error("V11: GridStack.addWidget() does not support string anymore. see #2736");return}if(e.ELEMENT_NODE)return console.error("V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()"),this.makeWidget(e);let t,i=e;if(i.grid=this,i?.el?t=i.el:n.addRemoveCB?t=n.addRemoveCB(this.el,e,!0,!1):t=this.createWidgetDivs(i),!t)return;if(i=t.gridstackNode,i&&t.parentElement===this.el&&this.engine.nodes.find(r=>r._id===i._id))return t;let o=this._readAttr(t);return k.defaults(e,o),this.engine.prepareNode(e),this.el.appendChild(t),this.makeWidget(t,e),t}createWidgetDivs(e){let t=k.createDiv(["grid-stack-item",this.opts.itemClass]),i=k.createDiv(["grid-stack-item-content"],t);return k.lazyLoad(e)?e.visibleObservable||(e.visibleObservable=new IntersectionObserver(([o])=>{o.isIntersecting&&(e.visibleObservable?.disconnect(),delete e.visibleObservable,n.renderCB(i,e),e.grid?.prepareDragDrop(e.el))}),window.setTimeout(()=>e.visibleObservable?.observe(t))):n.renderCB(i,e),t}makeSubGrid(e,t,i,o=!0){let r=e.gridstackNode;if(r||(r=this.makeWidget(e).gridstackNode),r.subGrid?.el)return r.subGrid;let s,h=this;for(;h&&!s;)s=h.opts?.subGridOpts,h=h.parentGridNode?.grid;t=k.cloneDeep(Q(Q(je(Q({},this.opts),{id:void 0,children:void 0,column:"auto",columnOpts:void 0,layout:"list",subGridOpts:void 0}),s||{}),t||r.subGridOpts||{})),r.subGridOpts=t;let m;t.column==="auto"&&(m=!0,t.column=Math.max(r.w||1,i?.w||1),delete t.columnOpts);let u=r.el.querySelector(".grid-stack-item-content"),v,x;if(o&&(this._removeDD(r.el),x=je(Q({},r),{x:0,y:0}),k.removeInternalForSave(x),delete x.subGridOpts,r.content&&(x.content=r.content,delete r.content),n.addRemoveCB?v=n.addRemoveCB(this.el,x,!0,!1):(v=k.createDiv(["grid-stack-item"]),v.appendChild(u),u=k.createDiv(["grid-stack-item-content"],r.el)),this.prepareDragDrop(r.el)),i){let _=m?t.column:r.w,B=r.h+i.h,re=r.el.style;re.transition="none",this.update(r.el,{w:_,h:B}),setTimeout(()=>re.transition=null)}let S=r.subGrid=n.addGrid(u,t);return i?._moving&&(S._isTemp=!0),m&&(S._autoColumn=!0),o&&S.makeWidget(v,x),i&&(i._moving?window.setTimeout(()=>k.simulateMouseEvent(i._event,"mouseenter",S.el),0):S.makeWidget(r.el,r)),this.resizeToContentCheck(!1,r),S}removeAsSubGrid(e){let t=this.parentGridNode?.grid;t&&(t.batchUpdate(),t.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(i=>{i.x+=this.parentGridNode.x,i.y+=this.parentGridNode.y,t.makeWidget(i.el,i)}),t.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,e&&window.setTimeout(()=>k.simulateMouseEvent(e._event,"mouseenter",t.el),0))}save(e=!0,t=!1,i=n.saveCB){let o=this.engine.save(e,i);if(o.forEach(r=>{if(e&&r.el&&!r.subGrid&&!i){let s=r.el.querySelector(".grid-stack-item-content");r.content=s?.innerHTML,r.content||delete r.content}else if(!e&&!i&&delete r.content,r.subGrid?.el){let s=r.subGrid.save(e,t,i);r.subGridOpts=t?s:{children:s},delete r.subGrid}delete r.el}),t){let r=k.cloneDeep(this.opts);r.marginBottom===r.marginTop&&r.marginRight===r.marginLeft&&r.marginTop===r.marginRight&&(r.margin=r.marginTop,delete r.marginTop,delete r.marginRight,delete r.marginBottom,delete r.marginLeft),r.rtl===(this.el.style.direction==="rtl")&&(r.rtl="auto"),this._isAutoCellHeight&&(r.cellHeight="auto"),this._autoColumn&&(r.column="auto");let s=r._alwaysShowResizeHandle;return delete r._alwaysShowResizeHandle,s!==void 0?r.alwaysShowResizeHandle=s:delete r.alwaysShowResizeHandle,k.removeInternalAndSame(r,ut),r.children=o,r}return o}load(e,t=n.addRemoveCB||!0){e=k.cloneDeep(e);let i=this.getColumn();e.forEach(u=>{u.w=u.w||1,u.h=u.h||1}),e=k.sort(e),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let o=0;e.forEach(u=>{o=Math.max(o,(u.x||0)+u.w)}),o>this.engine.defaultColumn&&(this.engine.defaultColumn=o),o>i&&this.engine.cacheLayout(e,o,!0);let r=n.addRemoveCB;typeof t=="function"&&(n.addRemoveCB=t);let s=[];this.batchUpdate();let h=!this.engine.nodes.length;h&&this.setAnimation(!1),!h&&t&&[...this.engine.nodes].forEach(v=>{if(!v.id)return;k.find(e,v.id)||(n.addRemoveCB&&n.addRemoveCB(this.el,v,!1,!1),s.push(v),this.removeWidget(v.el,!0,!1))}),this.engine._loading=!0;let m=[];return this.engine.nodes=this.engine.nodes.filter(u=>k.find(e,u.id)?(m.push(u),!1):!0),e.forEach(u=>{let v=k.find(m,u.id);if(v){if(k.shouldSizeToContent(v)&&(u.h=v.h),this.engine.nodeBoundFix(u),(u.autoPosition||u.x===void 0||u.y===void 0)&&(u.w=u.w||v.w,u.h=u.h||v.h,this.engine.findEmptyPosition(u)),this.engine.nodes.push(v),k.samePos(v,u)&&this.engine.nodes.length>1&&(this.moveNode(v,je(Q({},u),{forceCollide:!0})),k.copyPos(u,v)),this.update(v.el,u),u.subGridOpts?.children){let x=v.el.querySelector(".grid-stack");x&&x.gridstack&&x.gridstack.load(u.subGridOpts.children)}}else t&&this.addWidget(u)}),delete this.engine._loading,this.engine.removedNodes=s,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,r?n.addRemoveCB=r:delete n.addRemoveCB,h&&this.opts?.animate&&this.setAnimation(this.opts.animate,!0),this}batchUpdate(e=!0){return this.engine.batchUpdate(e),e||(this._updateContainerHeight(),this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(e=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!e||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;if(this.opts.cellHeightUnit==="rem")return this.opts.cellHeight*parseFloat(getComputedStyle(document.documentElement).fontSize);if(this.opts.cellHeightUnit==="em")return this.opts.cellHeight*parseFloat(getComputedStyle(this.el).fontSize);if(this.opts.cellHeightUnit==="cm")return this.opts.cellHeight*(96/2.54);if(this.opts.cellHeightUnit==="mm")return this.opts.cellHeight*(96/2.54)/10;let t=this.el.querySelector("."+this.opts.itemClass);if(t){let o=k.toNumber(t.getAttribute("gs-h"))||1;return Math.round(t.offsetHeight/o)}let i=parseInt(this.el.getAttribute("gs-current-row"));return i?Math.round(this.el.getBoundingClientRect().height/i):this.opts.cellHeight}cellHeight(e,t=!0){if(t&&e!==void 0&&this._isAutoCellHeight!==(e==="auto")&&(this._isAutoCellHeight=e==="auto",this._updateResizeEvent()),(e==="initial"||e==="auto")&&(e=void 0),e===void 0){let o=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;e=this.cellWidth()+o}let i=k.parseHeight(e);return this.opts.cellHeightUnit===i.unit&&this.opts.cellHeight===i.h?this:(this.opts.cellHeightUnit=i.unit,this.opts.cellHeight=i.h,this.resizeToContentCheck(),t&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(e=!1){return e&&this.opts.columnOpts?.breakpointForWindow?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){let e=this.opts.columnOpts;if(!e||!e.columnWidth&&!e.breakpoints?.length)return!1;let t=this.getColumn(),i=t,o=this._widthOrContainer(!0);if(e.columnWidth)i=Math.min(Math.round(o/e.columnWidth)||1,e.columnMax);else{i=e.columnMax;let r=0;for(;r<e.breakpoints.length&&o<=e.breakpoints[r].w;)i=e.breakpoints[r++].c||t}if(i!==t){let r=e.breakpoints?.find(s=>s.c===i);return this.column(i,r?.layout||e.layout),!0}return!1}compact(e="compact",t=!0){return this.engine.compact(e,t),this._triggerChangeEvent(),this}column(e,t="moveScale"){if(!e||e<1||this.opts.column===e)return this;let i=this.getColumn();return this.opts.column=e,this.engine?(this.engine.column=e,this.el.classList.remove("gs-"+i),this.el.classList.add("gs-"+e),this.engine.columnChanged(i,e,t),this._isAutoCellHeight&&this.cellHeight(),this.resizeToContentCheck(!0),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this):this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(e=>e.matches("."+this.opts.itemClass)&&!e.matches("."+this.opts.placeholderClass))}isIgnoreChangeCB(){return this._ignoreLayoutsNodeChange}destroy(e=!0){if(this.el)return this.offAll(),this._updateResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),e?this.el.parentNode.removeChild(this.el):(this.removeAll(e),this.el.classList.remove(this._styleSheetClass),this.el.removeAttribute("gs-current-row")),this._removeStylesheet(),delete this.parentGridNode?.subGrid,delete this.parentGridNode,delete this.opts,delete this._placeholder?.gridstackNode,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(e){return this.opts.float!==e&&(this.opts.float=this.engine.float=e,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(e,t=!1){let i=this.el.getBoundingClientRect(),o;t?o={top:i.top+document.documentElement.scrollTop,left:i.left}:o={top:this.el.offsetTop,left:this.el.offsetLeft};let r=e.left-o.left,s=e.top-o.top,h=i.width/this.getColumn(),m=i.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(r/h),y:Math.floor(s/m)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(e,t,i,o){return this.engine.isAreaEmpty(e,t,i,o)}makeWidget(e,t){let i=n.getElement(e);if(!i)return;i.parentElement||this.el.appendChild(i),this._prepareElement(i,!0,t);let o=i.gridstackNode;this._updateContainerHeight(),o.subGridOpts&&this.makeSubGrid(i,o.subGridOpts,void 0,!1);let r;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(r=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),r&&delete this._ignoreLayoutsNodeChange,i}on(e,t){return e.indexOf(" ")!==-1?(e.split(" ").forEach(o=>this.on(o,t)),this):(e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable"?(e==="enable"||e==="disable"?this._gsEventHandler[e]=o=>t(o):this._gsEventHandler[e]=o=>{o.detail&&t(o,o.detail)},this.el.addEventListener(e,this._gsEventHandler[e])):e==="drag"||e==="dragstart"||e==="dragstop"||e==="resizestart"||e==="resize"||e==="resizestop"||e==="dropped"||e==="resizecontent"?this._gsEventHandler[e]=t:console.error("GridStack.on("+e+") event not supported"),this)}off(e){return e.indexOf(" ")!==-1?(e.split(" ").forEach(i=>this.off(i)),this):((e==="change"||e==="added"||e==="removed"||e==="enable"||e==="disable")&&this._gsEventHandler[e]&&this.el.removeEventListener(e,this._gsEventHandler[e]),delete this._gsEventHandler[e],this)}offAll(){return Object.keys(this._gsEventHandler).forEach(e=>this.off(e)),this}removeWidget(e,t=!0,i=!0){return e?(n.getElements(e).forEach(o=>{if(o.parentElement&&o.parentElement!==this.el)return;let r=o.gridstackNode;r||(r=this.engine.nodes.find(s=>o===s.el)),r&&(t&&n.addRemoveCB&&n.addRemoveCB(this.el,r,!1,!1),delete o.gridstackNode,this._removeDD(o),this.engine.removeNode(r,t,i),t&&o.parentElement&&o.remove())}),i&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this):(console.error("Error: GridStack.removeWidget(undefined) called"),this)}removeAll(e=!0,t=!0){return this.engine.nodes.forEach(i=>{e&&n.addRemoveCB&&n.addRemoveCB(this.el,i,!1,!1),delete i.el.gridstackNode,this.opts.staticGrid||this._removeDD(i.el)}),this.engine.removeAll(e,t),t&&this._triggerRemoveEvent(),this}setAnimation(e=this.opts.animate,t){return t?setTimeout(()=>{this.opts&&this.setAnimation(e)}):e?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}hasAnimationCSS(){return this.el.classList.contains("grid-stack-animate")}setStatic(e,t=!0,i=!0){return!!this.opts.staticGrid===e?this:(e?this.opts.staticGrid=!0:delete this.opts.staticGrid,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(o=>{this.prepareDragDrop(o.el),o.subGrid&&i&&o.subGrid.setStatic(e,t,i)}),t&&this._setStaticClass(),this)}updateOptions(e){let t=this.opts;return e.acceptWidgets!==void 0&&this._setupAcceptWidget(),e.animate!==void 0&&this.setAnimation(),e.cellHeight&&(this.cellHeight(e.cellHeight,!0),delete e.cellHeight),e.class&&e.class!==t.class&&(t.class&&this.el.classList.remove(t.class),this.el.classList.add(e.class)),typeof e.column=="number"&&!e.columnOpts&&(this.column(e.column),delete e.column),e.margin!==void 0&&this.margin(e.margin),e.staticGrid!==void 0&&this.setStatic(e.staticGrid),e.disableDrag!==void 0&&!e.staticGrid&&this.enableMove(!e.disableDrag),e.disableResize!==void 0&&!e.staticGrid&&this.enableResize(!e.disableResize),e.float!==void 0&&this.float(e.float),e.row!==void 0&&(t.minRow=t.maxRow=e.row),e.children?.length&&(this.load(e.children),delete e.children),this.opts=Q(Q({},this.opts),e),this}update(e,t){return n.getElements(e).forEach(i=>{let o=i?.gridstackNode;if(!o)return;let r=Q(Q({},k.copyPos({},o)),k.cloneDeep(t));this.engine.nodeBoundFix(r),delete r.autoPosition;let s=["x","y","w","h"],h;if(s.some(v=>r[v]!==void 0&&r[v]!==o[v])&&(h={},s.forEach(v=>{h[v]=r[v]!==void 0?r[v]:o[v],delete r[v]})),!h&&(r.minW||r.minH||r.maxW||r.maxH)&&(h={}),r.content!==void 0){let v=i.querySelector(".grid-stack-item-content");v&&v.textContent!==r.content&&(o.content=r.content,n.renderCB(v,r),o.subGrid?.el&&(v.appendChild(o.subGrid.el),o.subGrid.opts.styleInHead||o.subGrid._updateStyles(!0))),delete r.content}let m=!1,u=!1;for(let v in r)v[0]!=="_"&&o[v]!==r[v]&&(o[v]=r[v],m=!0,u=u||!this.opts.staticGrid&&(v==="noResize"||v==="noMove"||v==="locked"));if(k.sanitizeMinMax(o),h){let v=h.w!==void 0&&h.w!==o.w;this.moveNode(o,h),v&&o.subGrid?o.subGrid.onResize(this.hasAnimationCSS()?o.w:void 0):this.resizeToContentCheck(v,o),delete o._orig}(h||m)&&this._writeAttr(i,o),u&&this.prepareDragDrop(o.el)}),this}moveNode(e,t){let i=e._updating;i||this.engine.cleanNodes().beginUpdate(e),this.engine.moveNode(e,t),this._updateContainerHeight(),i||(this._triggerChangeEvent(),this.engine.endUpdate())}resizeToContent(e){if(!e||(e.classList.remove("size-to-content-max"),!e.clientHeight))return;let t=e.gridstackNode;if(!t)return;let i=t.grid;if(!i||e.parentElement!==i.el)return;let o=i.getCellHeight(!0);if(!o)return;let r=t.h?t.h*o:e.clientHeight,s;if(t.resizeToContentParent&&(s=e.querySelector(t.resizeToContentParent)),s||(s=e.querySelector(n.resizeToContentParent)),!s)return;let h=e.clientHeight-s.clientHeight,m=t.h?t.h*o-h:s.clientHeight,u;if(t.subGrid){u=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);let S=t.subGrid.el.getBoundingClientRect(),_=t.subGrid.el.parentElement.getBoundingClientRect();u+=S.top-_.top}else{if(t.subGridOpts?.children?.length)return;{let S=s.firstElementChild;if(!S){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${n.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}u=S.getBoundingClientRect().height||m}}if(m===u)return;r+=u-m;let v=Math.ceil(r/o),x=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;x&&v>x&&(v=x,e.classList.add("size-to-content-max")),t.minH&&v<t.minH?v=t.minH:t.maxH&&v>t.maxH&&(v=t.maxH),v!==t.h&&(i._ignoreLayoutsNodeChange=!0,i.moveNode(t,{h:v}),delete i._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){n.resizeToContentCB?n.resizeToContentCB(e):this.resizeToContent(e)}rotate(e,t){return n.getElements(e).forEach(i=>{let o=i.gridstackNode;if(!k.canBeRotated(o))return;let r={w:o.h,h:o.w,minH:o.minW,minW:o.minH,maxH:o.maxW,maxW:o.maxH};if(t){let h=t.left>0?Math.floor(t.left/this.cellWidth()):0,m=t.top>0?Math.floor(t.top/this.opts.cellHeight):0;r.x=o.x+h-(o.h-(m+1)),r.y=o.y+m-h}Object.keys(r).forEach(h=>{r[h]===void 0&&delete r[h]});let s=o._orig;this.update(i,r),o._orig=s}),this}margin(e){if(!(typeof e=="string"&&e.split(" ").length>1)){let i=k.parseHeight(e);if(this.opts.marginUnit===i.unit&&this.opts.margin===i.h)return}return this.opts.margin=e,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(e){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");let t=arguments,i=0,o={x:t[i++],y:t[i++],w:t[i++],h:t[i++],autoPosition:t[i++]};return this.willItFit(o)}return this.engine.willItFit(e)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let e=this.engine.getDirtyNodes(!0);return e&&e.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(e),this._triggerEvent("change",e)),this.engine.saveInitial(),this}_triggerAddEvent(){if(this.engine.batchMode)return this;if(this.engine.addedNodes?.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(t=>{delete t._dirty});let e=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent("added",e)}return this}_triggerRemoveEvent(){if(this.engine.batchMode)return this;if(this.engine.removedNodes?.length){let e=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent("removed",e)}return this}_triggerEvent(e,t){let i=t?new CustomEvent(e,{bubbles:!1,detail:t}):new Event(e);return this.el.dispatchEvent(i),this}_removeStylesheet(){if(this._styles){let e=this.opts.styleInHead?void 0:this.el.parentNode;k.removeStylesheet(this._styleSheetClass,e),delete this._styles}return this}_updateStyles(e=!1,t){if(e&&this._removeStylesheet(),t===void 0&&(t=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;let i=this.opts.cellHeight,o=this.opts.cellHeightUnit,r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){let s=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=k.createStylesheet(this._styleSheetClass,s,{nonce:this.opts.nonce}),!this._styles)return this;this._styles._max=0,k.addCSSRule(this._styles,r,`height: ${i}${o}`);let h=this.opts.marginTop+this.opts.marginUnit,m=this.opts.marginBottom+this.opts.marginUnit,u=this.opts.marginRight+this.opts.marginUnit,v=this.opts.marginLeft+this.opts.marginUnit,x=`${r} > .grid-stack-item-content`,S=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;k.addCSSRule(this._styles,x,`top: ${h}; right: ${u}; bottom: ${m}; left: ${v};`),k.addCSSRule(this._styles,S,`top: ${h}; right: ${u}; bottom: ${m}; left: ${v};`),k.addCSSRule(this._styles,`${r} > .ui-resizable-n`,`top: ${h};`),k.addCSSRule(this._styles,`${r} > .ui-resizable-s`,`bottom: ${m}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-ne`,`right: ${u}; top: ${h}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-e`,`right: ${u}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-se`,`right: ${u}; bottom: ${m}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-nw`,`left: ${v}; top: ${h}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-w`,`left: ${v}`),k.addCSSRule(this._styles,`${r} > .ui-resizable-sw`,`left: ${v}; bottom: ${m}`)}if(t=t||this._styles._max,t>this._styles._max){let s=h=>i*h+o;for(let h=this._styles._max+1;h<=t;h++)k.addCSSRule(this._styles,`${r}[gs-y="${h}"]`,`top: ${s(h)}`),k.addCSSRule(this._styles,`${r}[gs-h="${h+1}"]`,`height: ${s(h+1)}`);this._styles._max=t}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let e=this.parentGridNode,t=this.getRow()+this._extraDragRow,i=this.opts.cellHeight,o=this.opts.cellHeightUnit;if(!i)return this;if(!e){let r=k.parseHeight(getComputedStyle(this.el).minHeight);if(r.h>0&&r.unit===o){let s=Math.floor(r.h/i);t<s&&(t=s)}}return this.el.setAttribute("gs-current-row",String(t)),this.el.style.removeProperty("min-height"),this.el.style.removeProperty("height"),t&&(this.el.style[e?"minHeight":"height"]=t*i+o),e&&!e.grid.engine.batchMode&&k.shouldSizeToContent(e)&&e.grid.resizeToContentCBCheck(e.el),this}_prepareElement(e,t=!1,i){i=i||this._readAttr(e),e.gridstackNode=i,i.el=e,i.grid=this,i=this.engine.addNode(i,t),this._writeAttr(e,i),e.classList.add(ut.itemClass,this.opts.itemClass);let o=k.shouldSizeToContent(i);return o?e.classList.add("size-to-content"):e.classList.remove("size-to-content"),o&&this.resizeToContentCheck(!1,i),k.lazyLoad(i)||this.prepareDragDrop(i.el),this}_writePosAttr(e,t){return t.x!==void 0&&t.x!==null&&e.setAttribute("gs-x",String(t.x)),t.y!==void 0&&t.y!==null&&e.setAttribute("gs-y",String(t.y)),t.w>1?e.setAttribute("gs-w",String(t.w)):e.removeAttribute("gs-w"),t.h>1?e.setAttribute("gs-h",String(t.h)):e.removeAttribute("gs-h"),this}_writeAttr(e,t){if(!t)return this;this._writePosAttr(e,t);let i={noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id",sizeToContent:"gs-size-to-content"};for(let o in i)t[o]?e.setAttribute(i[o],String(t[o])):e.removeAttribute(i[o]);return this}_readAttr(e,t=!0){let i={};i.x=k.toNumber(e.getAttribute("gs-x")),i.y=k.toNumber(e.getAttribute("gs-y")),i.w=k.toNumber(e.getAttribute("gs-w")),i.h=k.toNumber(e.getAttribute("gs-h")),i.autoPosition=k.toBool(e.getAttribute("gs-auto-position")),i.noResize=k.toBool(e.getAttribute("gs-no-resize")),i.noMove=k.toBool(e.getAttribute("gs-no-move")),i.locked=k.toBool(e.getAttribute("gs-locked"));let o=e.getAttribute("gs-size-to-content");o&&(o==="true"||o==="false"?i.sizeToContent=k.toBool(o):i.sizeToContent=parseInt(o,10)),i.id=e.getAttribute("gs-id"),i.maxW=k.toNumber(e.getAttribute("gs-max-w")),i.minW=k.toNumber(e.getAttribute("gs-min-w")),i.maxH=k.toNumber(e.getAttribute("gs-max-h")),i.minH=k.toNumber(e.getAttribute("gs-min-h")),t&&(i.w===1&&e.removeAttribute("gs-w"),i.h===1&&e.removeAttribute("gs-h"),i.maxW&&e.removeAttribute("gs-max-w"),i.minW&&e.removeAttribute("gs-min-w"),i.maxH&&e.removeAttribute("gs-max-h"),i.minH&&e.removeAttribute("gs-min-h"));for(let r in i){if(!i.hasOwnProperty(r))return;!i[r]&&i[r]!==0&&r!=="gs-size-to-content"&&delete i[r]}return i}_setStaticClass(){let e=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...e),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...e),this.el.removeAttribute("gs-static")),this}onResize(e=this.el?.clientWidth){if(!e||this.prevWidth===e)return;this.prevWidth=e,this.batchUpdate();let t=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||"list"),t=!0):t=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(i=>{i.subGrid&&i.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(t),delete this._skipInitialResize,this.batchUpdate(!1),this}resizeToContentCheck(e=!1,t=void 0){if(this.engine){if(e&&this.hasAnimationCSS())return setTimeout(()=>this.resizeToContentCheck(!1,t),this.animationDelay);if(t)k.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el);else if(this.engine.nodes.some(i=>k.shouldSizeToContent(i))){let i=[...this.engine.nodes];this.batchUpdate(),i.forEach(o=>{k.shouldSizeToContent(o)&&this.resizeToContentCBCheck(o.el)}),this.batchUpdate(!1)}this._gsEventHandler.resizecontent&&this._gsEventHandler.resizecontent(null,t?[t]:this.engine.nodes)}}_updateResizeEvent(e=!1){let t=!this.parentGridNode&&(this._isAutoCellHeight||this.opts.sizeToContent||this.opts.columnOpts||this.engine.nodes.find(i=>i.sizeToContent));return!e&&t&&!this.resizeObserver?(this._sizeThrottle=k.throttle(()=>this.onResize(),this.opts.cellHeightThrottle),this.resizeObserver=new ResizeObserver(()=>this._sizeThrottle()),this.resizeObserver.observe(this.el),this._skipInitialResize=!0):(e||!t)&&this.resizeObserver&&(this.resizeObserver.disconnect(),delete this.resizeObserver,delete this._sizeThrottle),this}static getElement(e=".grid-stack-item"){return k.getElement(e)}static getElements(e=".grid-stack-item"){return k.getElements(e)}static getGridElement(e){return n.getElement(e)}static getGridElements(e){return k.getElements(e)}_initMargin(){let e,t=0,i=[];return typeof this.opts.margin=="string"&&(i=this.opts.margin.split(" ")),i.length===2?(this.opts.marginTop=this.opts.marginBottom=i[0],this.opts.marginLeft=this.opts.marginRight=i[1]):i.length===4?(this.opts.marginTop=i[0],this.opts.marginRight=i[1],this.opts.marginBottom=i[2],this.opts.marginLeft=i[3]):(e=k.parseHeight(this.opts.margin),this.opts.marginUnit=e.unit,t=this.opts.margin=e.h),this.opts.marginTop===void 0?this.opts.marginTop=t:(e=k.parseHeight(this.opts.marginTop),this.opts.marginTop=e.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=t:(e=k.parseHeight(this.opts.marginBottom),this.opts.marginBottom=e.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=t:(e=k.parseHeight(this.opts.marginRight),this.opts.marginRight=e.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=t:(e=k.parseHeight(this.opts.marginLeft),this.opts.marginLeft=e.h,delete this.opts.margin),this.opts.marginUnit=e.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return dt}static setupDragIn(e,t,i,o=document){t?.pause!==void 0&&(te.pauseDrag=t.pause),t=Q({appendTo:"body",helper:"clone"},t||{}),(typeof e=="string"?k.getElements(e,o):e).forEach((s,h)=>{dt.isDraggable(s)||dt.dragIn(s,t),i?.[h]&&(s.gridstackNode=i[h])})}movable(e,t){return this.opts.staticGrid?this:(n.getElements(e).forEach(i=>{let o=i.gridstackNode;o&&(t?delete o.noMove:o.noMove=!0,this.prepareDragDrop(o.el))}),this)}resizable(e,t){return this.opts.staticGrid?this:(n.getElements(e).forEach(i=>{let o=i.gridstackNode;o&&(t?delete o.noResize:o.noResize=!0,this.prepareDragDrop(o.el))}),this)}disable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!1,e),this.enableResize(!1,e),this._triggerEvent("disable"),this}enable(e=!0){if(!this.opts.staticGrid)return this.enableMove(!0,e),this.enableResize(!0,e),this._triggerEvent("enable"),this}enableMove(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableDrag:this.opts.disableDrag=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableMove(e,t)}),this)}enableResize(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableResize:this.opts.disableResize=!0,this.engine.nodes.forEach(i=>{this.prepareDragDrop(i.el),i.subGrid&&t&&i.subGrid.enableResize(e,t)}),this)}cancelDrag(){let e=this._placeholder?.gridstackNode;e&&(e._isExternal?(e._isAboutToRemove=!0,this.engine.removeNode(e)):e._isAboutToRemove&&n._itemRemoving(e.el,!1),this.engine.restoreInitial())}_removeDD(e){return dt.draggable(e,"destroy").resizable(e,"destroy"),e.gridstackNode&&delete e.gridstackNode._initDD,delete e.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return dt.droppable(this.el,"destroy"),this;let e,t,i=(o,r,s)=>{s=s||r;let h=s.gridstackNode;if(!h)return;if(!h.grid?.el){s.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;let S=s.getBoundingClientRect();s.style.left=S.x+(this.dragTransform.xScale-1)*(o.clientX-S.x)/this.dragTransform.xScale+"px",s.style.top=S.y+(this.dragTransform.yScale-1)*(o.clientY-S.y)/this.dragTransform.yScale+"px",s.style.transformOrigin="0px 0px"}let{top:m,left:u}=s.getBoundingClientRect(),v=this.el.getBoundingClientRect();u-=v.left,m-=v.top;let x={position:{top:m*this.dragTransform.xScale,left:u*this.dragTransform.yScale}};if(h._temporaryRemoved){if(h.x=Math.max(0,Math.round(u/t)),h.y=Math.max(0,Math.round(m/e)),delete h.autoPosition,this.engine.nodeBoundFix(h),!this.engine.willItFit(h)){if(h.autoPosition=!0,!this.engine.willItFit(h)){dt.off(r,"drag");return}h._willFitPos&&(k.copyPos(h,h._willFitPos),delete h._willFitPos)}this._onStartMoving(s,o,x,h,t,e)}else this._dragOrResize(s,o,x,h,t,e)};return dt.droppable(this.el,{accept:o=>{let r=o.gridstackNode||this._readAttr(o,!1);if(r?.grid===this)return!0;if(!this.opts.acceptWidgets)return!1;let s=!0;if(typeof this.opts.acceptWidgets=="function")s=this.opts.acceptWidgets(o);else{let h=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;s=o.matches(h)}if(s&&r&&this.opts.maxRow){let h={w:r.w,h:r.h,minW:r.minW,minH:r.minH};s=this.engine.willItFit(h)}return s}}).on(this.el,"dropover",(o,r,s)=>{let h=s?.gridstackNode||r.gridstackNode;if(h?.grid===this&&!h._temporaryRemoved)return!1;if(h?._sidebarOrig&&(h.w=h._sidebarOrig.w,h.h=h._sidebarOrig.h),h?.grid&&h.grid!==this&&!h._temporaryRemoved&&h.grid._leave(r,s),s=s||r,t=this.cellWidth(),e=this.getCellHeight(!0),!h){let v=s.getAttribute("data-gs-widget")||s.getAttribute("gridstacknode");if(v){try{h=JSON.parse(v)}catch{console.error("Gridstack dropover: Bad JSON format: ",v)}s.removeAttribute("data-gs-widget"),s.removeAttribute("gridstacknode")}h||(h=this._readAttr(s)),h._sidebarOrig={w:h.w,h:h.h}}h.grid||(h.el||(h=Q({},h)),h._isExternal=!0,s.gridstackNode=h);let m=h.w||Math.round(s.offsetWidth/t)||1,u=h.h||Math.round(s.offsetHeight/e)||1;return h.grid&&h.grid!==this?(r._gridstackNodeOrig||(r._gridstackNodeOrig=h),r.gridstackNode=h=je(Q({},h),{w:m,h:u,grid:this}),delete h.x,delete h.y,this.engine.cleanupNode(h).nodeBoundFix(h),h._initDD=h._isExternal=h._temporaryRemoved=!0):(h.w=m,h.h=u,h._temporaryRemoved=!0),n._itemRemoving(h.el,!1),dt.on(r,"drag",i),i(o,r,s),!1}).on(this.el,"dropout",(o,r,s)=>{let h=s?.gridstackNode||r.gridstackNode;return h&&(!h.grid||h.grid===this)&&(this._leave(r,s),this._isTemp&&this.removeAsSubGrid(h)),!1}).on(this.el,"drop",(o,r,s)=>{let h=s?.gridstackNode||r.gridstackNode;if(h?.grid===this&&!h._isExternal)return!1;let m=!!this.placeholder.parentElement,u=r!==s;this.placeholder.remove(),delete this.placeholder.gridstackNode;let v=m&&this.opts.animate;v&&this.setAnimation(!1);let x=r._gridstackNodeOrig;if(delete r._gridstackNodeOrig,m&&x?.grid&&x.grid!==this){let _=x.grid;_.engine.removeNodeFromLayoutCache(x),_.engine.removedNodes.push(x),_._triggerRemoveEvent()._triggerChangeEvent(),_.parentGridNode&&!_.engine.nodes.length&&_.opts.subGridDynamic&&_.removeAsSubGrid()}if(!h||(m&&(this.engine.cleanupNode(h),h.grid=this),delete h.grid?._isTemp,dt.off(r,"drag"),s!==r?(s.remove(),r=s):r.remove(),this._removeDD(r),!m))return!1;let S=h.subGrid?.el?.gridstack;return k.copyPos(h,this._readAttr(this.placeholder)),k.removePositioningStyles(r),u&&(h.content||h.subGridOpts||n.addRemoveCB)?(delete h.el,r=this.addWidget(h)):(this._prepareElement(r,!0,h),this.el.appendChild(r),this.resizeToContentCheck(!1,h),S&&(S.parentGridNode=h,S.opts.styleInHead||S._updateStyles(!0)),this._updateContainerHeight()),this.engine.addedNodes.push(h),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped(je(Q({},o),{type:"dropped"}),x&&x.grid?x:void 0,h),v&&this.setAnimation(this.opts.animate,!0),!1}),this}static _itemRemoving(e,t){if(!e)return;let i=e?e.gridstackNode:void 0;!i?.grid||e.classList.contains(i.grid.opts.removableOptions.decline)||(t?i._isAboutToRemove=!0:delete i._isAboutToRemove,t?e.classList.add("grid-stack-item-removing"):e.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(typeof this.opts.removable!="string")return this;let e=document.querySelector(this.opts.removable);return e?(!this.opts.staticGrid&&!dt.isDroppable(e)&&dt.droppable(e,this.opts.removableOptions).on(e,"dropover",(t,i)=>n._itemRemoving(i,!0)).on(e,"dropout",(t,i)=>n._itemRemoving(i,!1)),this):this}prepareDragDrop(e,t=!1){let i=e?.gridstackNode;if(!i)return;let o=i.noMove||this.opts.disableDrag,r=i.noResize||this.opts.disableResize,s=this.opts.staticGrid||o&&r;if((t||s)&&(i._initDD&&(this._removeDD(e),delete i._initDD),s&&e.classList.add("ui-draggable-disabled","ui-resizable-disabled"),!t))return this;if(!i._initDD){let h,m,u=(S,_)=>{this._gsEventHandler[S.type]&&this._gsEventHandler[S.type](S,S.target),h=this.cellWidth(),m=this.getCellHeight(!0),this._onStartMoving(e,S,_,i,h,m)},v=(S,_)=>{this._dragOrResize(e,S,_,i,h,m)},x=S=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete i._moving,delete i._event,delete i._lastTried;let _=i.w!==i._orig.w,B=S.target;if(!(!B.gridstackNode||B.gridstackNode.grid!==this)){if(i.el=B,i._isAboutToRemove){let re=e.gridstackNode.grid;re._gsEventHandler[S.type]&&re._gsEventHandler[S.type](S,B),re.engine.nodes.push(i),re.removeWidget(e,!0,!0)}else k.removePositioningStyles(B),i._temporaryRemoved?(k.copyPos(i,i._orig),this._writePosAttr(B,i),this.engine.addNode(i)):this._writePosAttr(B,i),this._gsEventHandler[S.type]&&this._gsEventHandler[S.type](S,B);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),S.type==="resizestop"&&(Number.isInteger(i.sizeToContent)&&(i.sizeToContent=i.h),this.resizeToContentCheck(_,i))}};dt.draggable(e,{start:u,stop:x,drag:v}).resizable(e,{start:u,stop:x,resize:v}),i._initDD=!0}return dt.draggable(e,o?"disable":"enable").resizable(e,r?"disable":"enable"),this}_onStartMoving(e,t,i,o,r,s){if(this.engine.cleanNodes().beginUpdate(o),this._writePosAttr(this.placeholder,o),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=o,o.grid?.el)this.dragTransform=k.getValuesFromTransformedElement(e);else if(this.placeholder&&this.placeholder.closest(".grid-stack")){let h=this.placeholder.closest(".grid-stack");this.dragTransform=k.getValuesFromTransformedElement(h)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(o.el=this.placeholder,o._lastUiPosition=i.position,o._prevYPix=i.position.top,o._moving=t.type==="dragstart",delete o._lastTried,t.type==="dropover"&&o._temporaryRemoved&&(this.engine.addNode(o),o._moving=!0),this.engine.cacheRects(r,s,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),t.type==="resizestart"){let h=this.getColumn()-o.x,m=(this.opts.maxRow||Number.MAX_SAFE_INTEGER)-o.y;dt.resizable(e,"option","minWidth",r*Math.min(o.minW||1,h)).resizable(e,"option","minHeight",s*Math.min(o.minH||1,m)).resizable(e,"option","maxWidth",r*Math.min(o.maxW||Number.MAX_SAFE_INTEGER,h)).resizable(e,"option","maxWidthMoveLeft",r*Math.min(o.maxW||Number.MAX_SAFE_INTEGER,o.x+o.w)).resizable(e,"option","maxHeight",s*Math.min(o.maxH||Number.MAX_SAFE_INTEGER,m)).resizable(e,"option","maxHeightMoveUp",s*Math.min(o.maxH||Number.MAX_SAFE_INTEGER,o.y+o.h))}}_dragOrResize(e,t,i,o,r,s){let h=Q({},o._orig),m,u=this.opts.marginLeft,v=this.opts.marginRight,x=this.opts.marginTop,S=this.opts.marginBottom,_=Math.round(s*.1),B=Math.round(r*.1);if(u=Math.min(u,B),v=Math.min(v,B),x=Math.min(x,_),S=Math.min(S,_),t.type==="drag"){if(o._temporaryRemoved)return;let ge=i.position.top-o._prevYPix;o._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&k.updateScrollPosition(e,i.position,ge);let ae=i.position.left+(i.position.left>o._lastUiPosition.left?-v:u),Se=i.position.top+(i.position.top>o._lastUiPosition.top?-S:x);h.x=Math.round(ae/r),h.y=Math.round(Se/s);let Fe=this._extraDragRow;if(this.engine.collide(o,h)){let _e=this.getRow(),qe=Math.max(0,h.y+o.h-_e);this.opts.maxRow&&_e+qe>this.opts.maxRow&&(qe=Math.max(0,this.opts.maxRow-_e)),this._extraDragRow=qe}else this._extraDragRow=0;if(this._extraDragRow!==Fe&&this._updateContainerHeight(),o.x===h.x&&o.y===h.y)return}else if(t.type==="resize"){if(h.x<0||(k.updateScrollResize(t,e,s),h.w=Math.round((i.size.width-u)/r),h.h=Math.round((i.size.height-x)/s),o.w===h.w&&o.h===h.h)||o._lastTried&&o._lastTried.w===h.w&&o._lastTried.h===h.h)return;let ge=i.position.left+u,ae=i.position.top+x;h.x=Math.round(ge/r),h.y=Math.round(ae/s),m=!0}o._event=t,o._lastTried=h;let re={x:i.position.left+u,y:i.position.top+x,w:(i.size?i.size.width:o.w*r)-u-v,h:(i.size?i.size.height:o.h*s)-x-S};if(this.engine.moveNodeCheck(o,je(Q({},h),{cellWidth:r,cellHeight:s,rect:re,resizing:m}))){o._lastUiPosition=i.position,this.engine.cacheRects(r,s,x,v,S,u),delete o._skipDown,m&&o.subGrid&&o.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();let ge=t.target;o._sidebarOrig||this._writePosAttr(ge,o),this._gsEventHandler[t.type]&&this._gsEventHandler[t.type](t,ge)}}_leave(e,t){t=t||e;let i=t.gridstackNode;if(!i||(t.style.transform=t.style.transformOrigin=null,dt.off(e,"drag"),i._temporaryRemoved))return;i._temporaryRemoved=!0,this.engine.removeNode(i),i.el=i._isExternal&&t?t:e;let o=i._sidebarOrig;i._isExternal&&this.engine.cleanupNode(i),i._sidebarOrig=o,this.opts.removable===!0&&n._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):i._isExternal&&this.engine.restoreInitial()}commit(){return Pr(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}}return n.renderCB=(a,e)=>{a&&e?.content&&(a.textContent=e.content)},n.resizeToContentParent=".grid-stack-item-content",n.Utils=k,n.Engine=Gn,n.GDRev="11.5.1",n})();var Ir=["container"],Yl=["*"];function Xl(n,a){}var Ql=["*",[["","empty-content",""]]],Zl=["*","[empty-content]"];function Kl(n,a){n&1&&yi(0,1,["*ngIf","isEmpty"])}function Jl(n,a){}var Nr=(()=>{class n{serialize(){}deserialize(e){this.widgetItem=e,e&&e.input&&Object.assign(this,e.input)}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275prov=Rt({token:n,factory:n.\u0275fac}),n})(),Na=(()=>{class n{constructor(e){this.elementRef=e,this.el._gridItemComp=this}set options(e){let t=this.el.gridstackNode?.grid;t?t.update(this.el,e):this._options=je(Q({},e),{el:this.el})}get options(){return this.el.gridstackNode||this._options||{el:this.el}}get el(){return this.elementRef.nativeElement}clearOptions(){delete this._options}ngOnDestroy(){this.clearOptions(),delete this.childWidget,delete this.el._gridItemComp,delete this.container,delete this.ref}}return n.\u0275fac=function(e){return new(e||n)(ct(Be))},n.\u0275cmp=V({type:n,selectors:[["gridstack-item"]],viewQuery:function(e,t){if(e&1&&tn(Ir,7,Ta),e&2){let i;wi(i=Ci())&&(t.container=i.first)}},inputs:{options:"options"},ngContentSelectors:Yl,decls:5,vars:1,consts:[["container",""],[1,"grid-stack-item-content"]],template:function(e,t){e&1&&(en(),T(0,"div",1),Vo(1,Xl,0,0,"ng-template",null,0,Ea),yi(3),p(4),P()),e&2&&(w(4),Qe(" ",t.options.content," "))},styles:["[_nghost-%COMP%]{display:block}"]}),n})(),ri=(()=>{class n{constructor(e){this.elementRef=e,this.addedCB=new ot,this.changeCB=new ot,this.disableCB=new ot,this.dragCB=new ot,this.dragStartCB=new ot,this.dragStopCB=new ot,this.droppedCB=new ot,this.enableCB=new ot,this.removedCB=new ot,this.resizeCB=new ot,this.resizeStartCB=new ot,this.resizeStopCB=new ot,Li.addRemoveCB||(Li.addRemoveCB=ed),Li.saveCB||(Li.saveCB=td),this.el._gridComp=this}set options(e){this._grid?this._grid.updateOptions(e):this._options=e}get options(){return this._grid?.opts||this._options||{}}get el(){return this.elementRef.nativeElement}get grid(){return this._grid}static addComponentToSelectorType(e){e.forEach(t=>n.selectorToType[n.getSelector(t)]=t)}static getSelector(e){return $o(e).selector}ngOnInit(){this.loaded=!!this.options?.children?.length,this._grid=Li.init(this._options,this.el),delete this._options,this.checkEmpty()}ngAfterContentInit(){this._sub=this.gridstackItems?.changes.subscribe(()=>this.updateAll()),this.loaded||this.updateAll(),this.hookEvents(this.grid)}ngOnDestroy(){this.unhookEvents(this._grid),this._sub?.unsubscribe(),this._grid?.destroy(),delete this._grid,delete this.el._gridComp,delete this.container,delete this.ref}updateAll(){if(!this.grid)return;let e=[];this.gridstackItems?.forEach(t=>{e.push(t.options),t.clearOptions()}),this.grid.load(e)}checkEmpty(){this.grid&&(this.isEmpty=!this.grid.engine.nodes.length)}hookEvents(e){e&&e.on("added",(t,i)=>{this.checkEmpty(),this.addedCB.emit({event:t,nodes:i})}).on("change",(t,i)=>this.changeCB.emit({event:t,nodes:i})).on("disable",t=>this.disableCB.emit({event:t})).on("drag",(t,i)=>this.dragCB.emit({event:t,el:i})).on("dragstart",(t,i)=>this.dragStartCB.emit({event:t,el:i})).on("dragstop",(t,i)=>this.dragStopCB.emit({event:t,el:i})).on("dropped",(t,i,o)=>this.droppedCB.emit({event:t,previousNode:i,newNode:o})).on("enable",t=>this.enableCB.emit({event:t})).on("removed",(t,i)=>{this.checkEmpty(),this.removedCB.emit({event:t,nodes:i})}).on("resize",(t,i)=>this.resizeCB.emit({event:t,el:i})).on("resizestart",(t,i)=>this.resizeStartCB.emit({event:t,el:i})).on("resizestop",(t,i)=>this.resizeStopCB.emit({event:t,el:i}))}unhookEvents(e){e&&e.off("added change disable drag dragstart dragstop dropped enable removed resize resizestart resizestop")}}return n.selectorToType={},n.\u0275fac=function(e){return new(e||n)(ct(Be))},n.\u0275cmp=V({type:n,selectors:[["gridstack"]],contentQueries:function(e,t,i){if(e&1&&Bo(i,Na,4),e&2){let o;wi(o=Ci())&&(t.gridstackItems=o)}},viewQuery:function(e,t){if(e&1&&tn(Ir,7,Ta),e&2){let i;wi(i=Ci())&&(t.container=i.first)}},inputs:{options:"options",isEmpty:"isEmpty"},outputs:{addedCB:"addedCB",changeCB:"changeCB",disableCB:"disableCB",dragCB:"dragCB",dragStartCB:"dragStartCB",dragStopCB:"dragStopCB",droppedCB:"droppedCB",enableCB:"enableCB",removedCB:"removedCB",resizeCB:"resizeCB",resizeStartCB:"resizeStartCB",resizeStopCB:"resizeStopCB"},ngContentSelectors:Zl,decls:4,vars:1,consts:[["container",""],[4,"ngIf"]],template:function(e,t){e&1&&(en(Ql),Lo(0,Kl,1,0,"ng-content",1)(1,Jl,0,0,"ng-template",null,0,Ea),yi(3)),e&2&&L("ngIf",t.isEmpty)},dependencies:[Xo],styles:["[_nghost-%COMP%]{display:block}"]}),n})();function ed(n,a,e,t){if(e){if(!n)return;if(t){let i=n.parentElement?._gridItemComp;if(!i)return;let r=(i.childWidget?.container||i.container)?.createComponent(ri),s=r?.instance;return s?(s.ref=r,s.options=a,s.el):void 0}else{let o=n._gridComp?.container?.createComponent(Na),r=o?.instance;if(!r)return;r.ref=o;let s=a.selector,h=s?ri.selectorToType[s]:void 0;if(h){let m=()=>{let v=r.container?.createComponent(h)?.instance;v&&typeof v.serialize=="function"&&typeof v.deserialize=="function"&&(r.childWidget=v,v.deserialize(a))};a.lazyLoad||a.grid?.opts?.lazyLoad&&a.lazyLoad!==!1?a.visibleObservable||(a.visibleObservable=new IntersectionObserver(([v])=>{v.isIntersecting&&(a.visibleObservable?.disconnect(),delete a.visibleObservable,m())}),window.setTimeout(()=>a.visibleObservable?.observe(r.el))):m()}return r.el}}else if(t){let i=a.el?._gridComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}else{let i=a.el?._gridItemComp;i?.ref?i.ref.destroy():i?.ngOnDestroy()}}function td(n,a){let e=n.el?._gridItemComp;if(e){let i=e.childWidget?.serialize();i&&(a.input=i);return}let t=n.el?._gridComp}var Lr=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=Lt({type:n}),n.\u0275inj=It({imports:[Na,ri]}),n})();var ue=(()=>{class n extends Nr{widgetProperties;zones$=new wn([]);DataService=W(lr);unitsService=W(Ht);app=W(Dt);theme=An(this.app.cssThemeColorRoles$,{requireSync:!0});defaultConfig=void 0;dataStream=void 0;dataSubscriptions=void 0;metaSubscriptions=void 0;constructor(){super()}serialize(){return{widgetProperties:this.widgetProperties}}observeMetaStream(){if(this.widgetProperties&&this.widgetProperties.config.paths&&Object.keys(this.widgetProperties.config.paths).length>0){let e=Object.keys(this.widgetProperties.config.paths)[0],t=this.widgetProperties.config.paths[e].path;this.metaSubscriptions=this.DataService.getPathMetaObservable(t).subscribe(i=>{i?i.zones?this.zones$.next(i.zones):this.zones$.next([]):this.zones$.next([])})}}unsubscribeMetaStream(){this.metaSubscriptions?.unsubscribe(),this.metaSubscriptions=void 0}validateConfig(){this.widgetProperties.config=Si(sr(this.defaultConfig,this.widgetProperties.config))}createDataObservable(){if(this.widgetProperties!==void 0){if(Object.keys(this.widgetProperties.config.paths).length==0){this.dataStream=void 0;return}else this.dataStream=[];Object.keys(this.widgetProperties.config.paths).forEach(e=>{typeof this.widgetProperties.config.paths[e].path!="string"||this.widgetProperties.config.paths[e].path==""||this.widgetProperties.config.paths[e].path==null||this.dataStream.push({pathName:e,observable:this.DataService.subscribePath(this.widgetProperties.config.paths[e].path,this.widgetProperties.config.paths[e].source)})})}}observeDataStream(e,t){(this.dataStream===void 0||this.dataStream.length==0)&&this.createDataObservable();let i=this.widgetProperties.config.paths[e].pathType,o=this.widgetProperties.config.paths[e].path,r=this.widgetProperties.config.paths[e].convertUnitTo,s=this.widgetProperties.config.paths[e].sampleTime,h=this.widgetProperties.config.dataTimeout*1e3,m=5e3,u=`[Widget] ${this.widgetProperties.config.displayName} - ${h/1e3} second data update timeout reached for `,v=`[Widget] ${this.widgetProperties.config.displayName} - Retrying in ${m/1e3} secondes`,x=this.buildObserver(e,t),S=this.dataStream.find(B=>B.pathName===e);if(S===void 0)return;let _;i=="number"?this.widgetProperties.config.enableTimeout?_=S.observable.pipe(Zi(B=>({data:{value:this.unitsService.convertToUnit(r,B.data.value),timestamp:B.data.timestamp},state:B.state})),fi(s),wa({each:h,with:()=>ya(()=>{console.log(u+o),this.DataService.timeoutPathObservable(o,i)})}),ka(B=>B.pipe(Sa(()=>console.log(v)),xa(()=>Ca(m))))):_=S.observable.pipe(Zi(B=>({data:{value:this.unitsService.convertToUnit(r,B.data.value),timestamp:B.data.timestamp},state:B.state})),fi(s)):i=="string"||i=="Date"?this.widgetProperties.config.enableTimeout?_=S.observable.pipe(fi(s),wa({each:h,with:()=>ya(()=>{console.log(u+o),this.DataService.timeoutPathObservable(o,i)})}),ka(B=>B.pipe(Sa(()=>console.log(v)),xa(()=>Ca(m))))):_=S.observable.pipe(fi(s)):_=S.observable.pipe(fi(s)),this.dataSubscriptions===void 0?this.dataSubscriptions=_.subscribe(x):this.dataSubscriptions.add(_.subscribe(x))}unsubscribeDataStream(){this.dataSubscriptions?.unsubscribe(),this.dataSubscriptions=void 0,this.dataStream=void 0}buildObserver(e,t){return{next:o=>t(o),error:o=>console.error("[Widget] Observer got an error: "+o),complete:()=>console.log("[Widget] Observer got a complete notification: "+e)}}formatWidgetNumberValue(e){return typeof e!="number"||e==null?"":(e=Math.min(Math.max(e,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),e.toFixed(this.widgetProperties.config.numDecimal))}destroyDataStreams(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zones$.complete()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["ng-component"]],inputs:{widgetProperties:"widgetProperties"},features:[ne],decls:0,vars:0,template:function(t,i){},encapsulation:2})}return n})();function nd(n,a){if(n&1){let e=ee();g(0,"button",0),I("click",function(){O(e);let i=j();return R(i.clickAction("cancel"))}),g(1,"mat-icon",1),p(2,"close"),b(),g(3,"span"),p(4,"Close"),b()()}}var Vr=(()=>{class n{_bottomSheetRef=W(yr);data=W(br);showCancel=!!(this.data&&this.data.showCancel);clickAction(e){this._bottomSheetRef.dismiss(e)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-host-bottom-sheet"]],decls:12,vars:1,consts:[["mat-list-item","",3,"click"],["matListItemIcon",""],["mat-list-item",""]],template:function(t,i){t&1&&(g(0,"mat-action-list")(1,"button",0),I("click",function(){return i.clickAction("duplicate")}),g(2,"mat-icon",1),p(3,"content_copy"),b(),g(4,"span"),p(5,"Duplicate"),b()(),g(6,"button",0),I("click",function(){return i.clickAction("delete")}),g(7,"mat-icon",1),p(8,"delete_forever"),b(),g(9,"span"),p(10,"Delete"),b()(),Ne(11,nd,5,0,"button",2),b()),t&2&&(w(11),Le(i.showCancel?11:-1))},dependencies:[_r,kr,Sr,xr,yt,bt],encapsulation:2})}return n})();var ad=["*"],me=(()=>{class n{config=En.required();id=N.required();_dialog=W(In);_dashboard=W(et);_bottomSheet=W(wr);constructor(){}openWidgetOptions(e){if(e.stopPropagation(),!this._dashboard.isDashboardStatic()){if(!this.config())return;this._dialog.openWidgetOptions({title:"Widget Options",config:this.config(),confirmBtnText:"Save",cancelBtnText:"Cancel"}).afterClosed().subscribe(t=>{t&&this.config.set(t)})}}openBottomSheet(e){if(e.stopPropagation(),!this._dashboard.isDashboardStatic()){let t=typeof navigator<"u"&&/Linux/.test(navigator.platform)&&/Firefox/.test(navigator.userAgent);this._bottomSheet.open(Vr,t?{disableClose:!0,data:{showCancel:!0}}:{}).afterDismissed().subscribe(o=>{switch(o){case"delete":this._dashboard.deleteWidget(this.id());break;case"duplicate":this._dashboard.duplicateWidget(this.id());break;default:break}})}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-host"]],inputs:{config:[1,"config"],id:[1,"id"]},outputs:{config:"configChange"},ngContentSelectors:ad,decls:2,vars:2,consts:[["kipGestures","","appearance","raised",1,"widget-container","kip-widget-card-colors",3,"doubletap","press"]],template:function(t,i){t&1&&(en(),g(0,"mat-card",0),I("doubletap",function(r){return i.openWidgetOptions(r)})("press",function(r){return i.openBottomSheet(r)}),yi(1),b()),t&2&&se("border",i._dashboard.isDashboardStatic()?"":"1px dashed var(--mat-sys-outline)")},dependencies:[fr,pr,Cr,Pn],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})();var zr=(()=>{class n{sanitizer=W(On);transform(e){return this.sanitizer.bypassSecurityTrustResourceUrl(e)}static \u0275fac=function(t){return new(t||n)};static \u0275pipe=No({name:"safe",type:n,pure:!0})}return n})();var od={minDist:230,maxDur:550,minVelocity:1.5,axisDominance:1.8,deadzoneMs:160,purityRatio:.8,lockThreshold:28,directionLockAngle:25,reversalPrimaryThreshold:34};function Xn(n){let a=Q(Q({},od),n);return`(() => {
4
+ if (window.__kipSwipeInit) return; window.__kipSwipeInit = true;
5
+ const instanceId='${a.instanceId}';
6
+ let pointerId=null; let startX=0; let startY=0; let startT=0; let peakPrimary=0; let peakCross=0; let cancelled=false;
7
+ let lockedAxis=null; let lockedPrimarySign=0; let reversed=false;
8
+ const minDist=${a.minDist};
9
+ const maxDur=${a.maxDur};
10
+ const minVelocity=${a.minVelocity};
11
+ const axisDominance=${a.axisDominance};
12
+ const deadzoneMs=${a.deadzoneMs};
13
+ const purityRatio=${a.purityRatio};
14
+ const lockThreshold=${a.lockThreshold};
15
+ const directionLockAngle=${a.directionLockAngle};
16
+ const reversalPrimaryThreshold=${a.reversalPrimaryThreshold};
17
+ function reset(){pointerId=null; cancelled=false; lockedAxis=null; lockedPrimarySign=0; reversed=false;}
18
+ function onDown(e){ if(pointerId!==null) return; pointerId=e.pointerId; startX=e.clientX; startY=e.clientY; startT=performance.now(); peakPrimary=0; peakCross=0; cancelled=false; lockedAxis=null; lockedPrimarySign=0; reversed=false; }
19
+ function track(e){ if(e.pointerId!==pointerId||cancelled) return; const dx=e.clientX-startX; const dy=e.clientY-startY; const adx=Math.abs(dx); const ady=Math.abs(dy); const primary=adx>ady?adx:ady; const cross=adx>ady?ady:adx; peakPrimary=Math.max(peakPrimary,primary); peakCross=Math.max(peakCross,cross);
20
+ if(!lockedAxis && primary>=lockThreshold){ lockedAxis = adx>ady?'x':'y'; lockedPrimarySign = lockedAxis==='x' ? (Math.sign(dx)||1) : (Math.sign(dy)||1); }
21
+ if(lockedAxis){
22
+ const angleRad = Math.atan2(lockedAxis==='x'?ady:adx, lockedAxis==='x'?adx:ady); // angle from primary axis
23
+ const angleDeg = angleRad * 180 / Math.PI;
24
+ if(angleDeg > directionLockAngle){ cancelled=true; return; }
25
+ if(lockedAxis==='x' && Math.sign(dx) && Math.sign(dx)!==lockedPrimarySign && Math.abs(dx) > reversalPrimaryThreshold){ reversed=true; cancelled=true; return; }
26
+ if(lockedAxis==='y' && Math.sign(dy) && Math.sign(dy)!==lockedPrimarySign && Math.abs(dy) > reversalPrimaryThreshold){ reversed=true; cancelled=true; return; }
27
+ }
28
+ if (!cancelled && peakCross>42 && peakCross*axisDominance>peakPrimary) { cancelled=true; }
29
+ }
30
+ function onUp(e){ if(e.pointerId!==pointerId) return; const endT=performance.now(); const dt=endT-startT; const dx=e.clientX-startX; const dy=e.clientY-startY; const adx=Math.abs(dx); const ady=Math.abs(dy); const dist=Math.hypot(dx,dy); const velocity=dist/dt; const primary=adx>ady?adx:ady; const cross=adx>ady?ady:adx; const purity= primary? (primary/dist):0; if(!cancelled && !reversed && dt>=deadzoneMs && dt<=maxDur && dist>=minDist && velocity>=minVelocity && purity>=purityRatio && primary/Math.max(cross,1)>=axisDominance){ if(adx>ady){ window.parent.postMessage({gesture: dx>0?'swiperight':'swipeleft', eventData:{dx,dy,duration:dt,velocity,instanceId}}, '*'); } else { window.parent.postMessage({gesture: dy>0?'swipedown':'swipeup', eventData:{dx,dy,duration:dt,velocity,instanceId}}, '*'); } } reset(); }
31
+ function onCancel(e){ if(e.pointerId===pointerId) reset(); }
32
+ document.addEventListener('pointerdown', onDown, {passive:true});
33
+ document.addEventListener('pointermove', track, {passive:true});
34
+ document.addEventListener('pointerup', onUp, {passive:true});
35
+ document.addEventListener('pointercancel', onCancel, {passive:true});
36
+ document.addEventListener('keydown', (event) => {
37
+ if (event.ctrlKey && event.shiftKey && ['ArrowLeft','ArrowRight','ArrowUp','ArrowDown','E','F','N'].includes(event.key)) {
38
+ window.parent.postMessage({ type:'keydown', keyEventData:{ key:event.key, ctrlKey:event.ctrlKey, shiftKey:event.shiftKey, instanceId }}, '*');
39
+ }
40
+ });
41
+ })();`}var rd=["freeboardSkIframe"];function sd(n,a){if(n&1&&(z(0,"iframe",1,0),At(2,"safe")),n&2){let e=j();L("src",nn(2,1,e.widgetUrl),Ki)}}function ld(n,a){n&1&&z(0,"div",5)}function dd(n,a){if(n&1){let e=ee();g(0,"widget-host",3),he("configChange",function(i){O(e);let o=j();return de(o.widgetProperties.config,i)||(o.widgetProperties.config=i),R(i)}),I("configChange",function(){O(e);let i=j();return R(i.updateConfig())}),z(1,"iframe",4,0),At(3,"safe"),Ne(4,ld,1,0,"div",5),b()}if(n&2){let e=j();le("config",e.widgetProperties.config),L("id",e.widgetProperties.uuid),w(),L("src",nn(3,4,e.widgetUrl),Ki),w(3),Le(e.dashboard.isDashboardStatic()?-1:4)}}var Br=(()=>{class n extends ue{appSettings=W(ki);auth=W(Wn);_dashboard=W(et);iframe=Y.required("freeboardSkIframe");widgetUrl=null;disableWidgetShell=N(!1);_authTokenSubscription=null;dashboard=W(et);constructor(){super()}ngOnInit(){let e=null;this._authTokenSubscription=this.auth.authToken$.subscribe(t=>{e=t?.token}),this.widgetUrl=e?`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/?token=${e}`:`${this.appSettings.signalkUrl.url}/@signalk/freeboard-sk/`,window.addEventListener("message",this.handleIframeGesture)}ngAfterViewInit(){this.iframe&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}updateConfig(){}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard();break;case"swipedown":this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};injectSwipeScript(){let e=this.iframe().nativeElement.contentWindow,t=this.iframe().nativeElement.contentDocument;if(!t||!e){console.error("[FSK Widget] Iframe contentDocument or contentWindow is undefined. Possible cross-origin issue or iframe not fully loaded.");return}try{let i=`kip-gesture-inject-${this.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=Xn({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,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.destroyDataStreams(),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.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-freeboardsk"]],viewQuery:function(t,i){t&1&&$(i.iframe,rd,5),t&2&&ce()},inputs:{disableWidgetShell:[1,"disableWidgetShell"]},features:[ne],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"],[2,"overflow","clip",3,"config","id"],[2,"overflow","clip",3,"configChange","config","id"],["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&&Ne(0,sd,3,3,"iframe",1)(1,dd,5,6,"widget-host",2),t&2&&Le(i.disableWidgetShell()?0:1)},dependencies:[me,zr],styles:[".widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent}"]})}return n})();var Hr=(()=>{class n{kipTimers={};constructor(){}createTimer(e,t,i){return e in this.kipTimers?this.kipTimers[e].currentValue.asObservable():(this.kipTimers[e]={currentValue:new wn(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=Rt({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var si=(function(n){return n[n.State=0]="State",n[n.Transition=1]="Transition",n[n.Sequence=2]="Sequence",n[n.Group=3]="Group",n[n.Animate=4]="Animate",n[n.Keyframes=5]="Keyframes",n[n.Style=6]="Style",n[n.Trigger=7]="Trigger",n[n.Reference=8]="Reference",n[n.AnimateChild=9]="AnimateChild",n[n.AnimateRef=10]="AnimateRef",n[n.Query=11]="Query",n[n.Stagger=12]="Stagger",n})(si||{}),hd="*";function za(n,a){return{type:si.Trigger,name:n,definitions:a,options:{}}}function Qn(n,a=null){return{type:si.Animate,styles:a,timings:n}}function pg(n,a=null){return{type:si.Sequence,steps:n,options:a}}function Vi(n){return{type:si.Style,styles:n,offset:null}}function Ba(n,a,e=null){return{type:si.Transition,expr:n,animation:a,options:e}}var La=class{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(a=0,e=0){this.totalTime=a+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(a=>a()),this._onDoneFns=[])}onStart(a){this._originalOnStartFns.push(a),this._onStartFns.push(a)}onDone(a){this._originalOnDoneFns.push(a),this._onDoneFns.push(a)}onDestroy(a){this._onDestroyFns.push(a)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(a=>a()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(a=>a()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(a){this._position=this.totalTime?a*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(a){let e=a=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},Va=class{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(a){this.players=a;let e=0,t=0,i=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(r=>{r.onDone(()=>{++e==o&&this._onFinish()}),r.onDestroy(()=>{++t==o&&this._onDestroy()}),r.onStart(()=>{++i==o&&this._onStart()})}),this.totalTime=this.players.reduce((r,s)=>Math.max(r,s.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(a=>a()),this._onDoneFns=[])}init(){this.players.forEach(a=>a.init())}onStart(a){this._onStartFns.push(a)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(a=>a()),this._onStartFns=[])}onDone(a){this._onDoneFns.push(a)}onDestroy(a){this._onDestroyFns.push(a)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(a=>a.play())}pause(){this.players.forEach(a=>a.pause())}restart(){this.players.forEach(a=>a.restart())}finish(){this._onFinish(),this.players.forEach(a=>a.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(a=>a.destroy()),this._onDestroyFns.forEach(a=>a()),this._onDestroyFns=[])}reset(){this.players.forEach(a=>a.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(a){let e=a*this.totalTime;this.players.forEach(t=>{let i=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(i)})}getPosition(){let a=this.players.reduce((e,t)=>e===null||t.totalTime>e.totalTime?t:e,null);return a!=null?a.getPosition():0}beforeDestroy(){this.players.forEach(a=>{a.beforeDestroy&&a.beforeDestroy()})}triggerCallback(a){let e=a=="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},cd="!";var ud=(n,a)=>a.id;function md(n,a){if(n&1&&G(0,"div",4),n&2){let e=a.$index;j();let t=qo(0);se("background-color",t===e?"var(--mat-sys-on-surface)":"var(--mat-sys-inverse-on-surface)")}}var Fr=(()=>{class n{activePage=N();dashboards=N();static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["dashboard-scroller"]],inputs:{activePage:[1,"activePage"],dashboards:[1,"dashboards"]},decls:7,vars:4,consts:[[1,"page-scroll-title","page-scroll-container"],[1,"page-label"],[1,"page-scroll-page-number","page-scroll-container"],[1,"page-marker",3,"background-color"],[1,"page-marker"]],template:function(t,i){if(t&1&&(Uo(0),T(1,"div",0)(2,"span",1),p(3),P()(),T(4,"div",2),rt(5,md,1,2,"div",3,ud),P()),t&2){let o=i.dashboards(),r=Go(i.activePage());w(),L("@fadeInOut",r),w(2),Re(o[r].name),w(),L("@fadeInOut",r),w(),st(o)}},styles:["[_nghost-%COMP%]{pointer-events:none}.page-scroll-title[_ngcontent-%COMP%]{position:absolute;top:50%;right:54px;transform:translateY(-50%);z-index:100;cursor:default;text-align:center;padding:10px;color:var(--mat-sys-inverse-surface)}.page-scroll-page-number[_ngcontent-%COMP%]{position:absolute;top:50%;right:15px;transform:translateY(-50%);z-index:100;cursor:default;display:grid;padding:0}.page-scroll-container[_ngcontent-%COMP%]{opacity:0;background-color:var(--mat-sys-tertiary-fixed-dim);border-radius:10px;border:1px solid var(--mat-sys-inverse-surface)}.page-label[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface);text-shadow:1px 1px 0 var(--mat-sys-outline),-1px 1px 0 var(--mat-sys-outline),-1px -1px 0 var(--mat-sys-outline),1px -1px 0 var(--mat-sys-outline);font-size:x-large}.page-marker[_ngcontent-%COMP%]{height:20px;width:20px;margin:4px;border-radius:50%;border:1px solid var(--mat-sys-outline)}"],data:{animation:[za("fadeInOut",[Ba(":increment, :decrement",[Vi({opacity:0}),Qn(100,Vi({opacity:1})),Vi({opacity:1}),Qn("250ms 1000ms",Vi({opacity:0}))])])]}})}return n})();var Ur=(()=>{let a=class a{constructor(t){this.ngZone=t,this.count=0,this.elementMap=new Map,this.observer=null}ngOnDestroy(){this.observer&&this.clearObserver()}observe(t,i,o){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)})}})),o==="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}};a.\u0275fac=function(i){return new(i||a)(Wo($e))},a.\u0275prov=Rt({token:a,factory:a.\u0275fac});let n=a;return n})(),mt=(()=>{let a=class a{constructor(t,i,o){this.elementRef=t,this.ngxResizeObserverService=i,this.ngZone=o,this.resizeBoxModel="",this.onResize=new ot,this.observing=!1,zo(()=>{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)}};a.\u0275fac=function(i){return new(i||a)(ct(Be),ct(Ur),ct($e))},a.\u0275dir=bi({type:a,selectors:[["","onResize",""]],inputs:{resizeBoxModel:"resizeBoxModel"},outputs:{onResize:"onResize"},features:[vi]});let n=a;return n})(),Ge=(()=>{let a=class a{};a.\u0275fac=function(i){return new(i||a)},a.\u0275mod=Lt({type:a}),a.\u0275inj=It({providers:[Ur]});let n=a;return n})();function ie(n,a){return{contrast:{color:a.contrast,dim:a.contrastDim,dimmer:a.contrastDimmer},blue:{color:a.blue,dim:a.blueDim,dimmer:a.blueDimmer},green:{color:a.green,dim:a.greenDim,dimmer:a.greenDimmer},pink:{color:a.pink,dim:a.pinkDim,dimmer:a.pinkDimmer},orange:{color:a.orange,dim:a.orangeDim,dimmer:a.orangeDimmer},purple:{color:a.purple,dim:a.purpleDim,dimmer:a.purpleDimmer},yellow:{color:a.yellow,dim:a.yellowDim,dimmer:a.yellowDimmer},grey:{color:a.grey,dim:a.greyDim,dimmer:a.greyDimmer}}[n]}var gd=["canvasMainRef"],Gr=(()=>{class n extends ue{canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=W(Ue);cssWidth=0;cssHeight=0;dataValue=null;labelColor=H(void 0);valueColor=void 0;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{stringPath:{description:"String Data",path:null,source:null,pathType:"string",isPathConfigurable:!0,sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5},Z(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig()}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.unsubscribeDataStream(),this.setColors(),this.observeDataStream("stringPath",e=>{this.dataValue=e.data.value,this.drawWidget()})}setColors(){this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=Math.floor(this.cssHeight*.1);(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),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 t=this.dataValue===null?"--":this.dataValue,i=this.canvas.EDGE_BUFFER||10,o=Math.max(0,this.cssHeight-e-2*i),r=Math.max(0,Math.floor(this.cssWidth-2*i)),s=Math.max(0,Math.floor(o)),h=Math.floor(this.cssWidth/2),m=Math.floor(e+i+o/2);this.canvas.drawText(this.canvasCtx,t,h,m,r,s,"bold",this.valueColor,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-text"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,gd,5),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"text-wrapper",3,"configChange","config","id"],[1,"text-canvas"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me,Ge],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.text-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.text-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}"]})}return n})();var pd=["widgetDataChart"];at.register(Wi,Ai,Ei,Mi,Di,Pi,Mr);var Zn=(()=>{class n{theme=N.required();color=null;dataPath=null;dataSource=null;convertUnitTo=null;numDecimal=null;yScaleMin=null;yScaleMax=null;inverseYAxis=!1;verticalChart=null;datasetUUID=null;unitsService=W(Ht);dsService=W(Mt);ngZone=W($e);canvasService=W(Ue);widgetDataChart=Y("widgetDataChart",{read:Be});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(){Z(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}startChart(){this.datasetUUID&&(this.datasetConfig=this.dsService.getDatasetConfig(this.datasetUUID),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.datasetUUID),this.datasetConfig&&(this.setChartOptions(),this.createDatasets(),this.chart?this.chart.update():this.chart=new at(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 o=this.transformDatasetRows(t,this.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...o)}}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 o=this.transformDatasetRows([t],this.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(o),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),o=this.verticalChart,r=this.config.datasetAverageArray;return e.map(s=>{if(o){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=V({type:n,selectors:[["minichart"]],viewQuery:function(t,i){t&1&&$(i.widgetDataChart,pd,5,Be),t&2&&ce()},inputs:{theme:[1,"theme"]},decls:2,vars:0,consts:[["widgetDataChart",""],[2,"z-index","inherit"]],template:function(t,i){t&1&&G(0,"canvas",1,0)},styles:["[_nghost-%COMP%]{display:block;width:100%;height:calc(90% - 10px);position:absolute;bottom:0;border-radius:17px;overflow:hidden}"]})}return n})();var fd=["canvasMainRef"];function vd(n,a){if(n&1&&z(0,"minichart",2),n&2){let e=j();L("theme",e.theme())}}var Kn=(()=>{class n extends ue{miniChart=Y(Zn);canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;backgroundBitmap=null;backgroundBitmapText=null;showMiniChart=H(!1);canvas=W(Ue);_dataset=W(Mt);dataValue=null;maxValue=null;minValue=null;labelColor=H(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;maxMinMaxTextWidth=0;maxMinMaxTextHeight=0;flashInterval=null;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{numericPath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,convertUnitTo:"unitless",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},showMax:!1,showMin:!1,numDecimal:1,showMiniChart:!1,yScaleMin:0,yScaleMax:10,inverseYAxis:!1,verticalChart:!1,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},Z(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig(),this.showMiniChart.set(this.widgetProperties.config.showMiniChart)}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.calculateMaxMinTextDimensions(),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.calculateMaxMinTextDimensions(),!this.isDestroyed&&(this.manageDatasetAndChart(),this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget())}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.showMiniChart()&&this.miniChart()&&this.miniChart().startChart(),this.unsubscribeDataStream(),this.minValue=null,this.maxValue=null,this.dataValue=null,this.setColors(),this.observeDataStream("numericPath",e=>{if(this.dataValue=e.data.value,this.minValue===null||this.dataValue<this.minValue?this.minValue=this.dataValue:(this.maxValue===null||this.dataValue>this.maxValue)&&(this.maxValue=this.dataValue),!this.widgetProperties.config.ignoreZones)switch(e.state){case K.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case K.Warn:this.valueStateColor=this.theme().zoneWarn;break;case K.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.drawWidget()})}updateConfig(e){this.widgetProperties.config=e,this.manageDatasetAndChart(),setTimeout(()=>{this.showMiniChart()&&this.miniChart()&&this.setMiniChart(),this.startWidget(),this.drawWidget()})}manageDatasetAndChart(){let e=this.widgetProperties.config.paths.numericPath;!e||!e.path||!e.source||(this.widgetProperties.config.showMiniChart?this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).length===0&&this._dataset.create(e.path,e.source,"minute",.2,`simple-chart-${this.widgetProperties.uuid}`,!0,!1,this.widgetProperties.uuid):this._dataset.list().filter(t=>t.uuid===this.widgetProperties.uuid).forEach(t=>this._dataset.remove(t.uuid)),this.showMiniChart.set(this.widgetProperties.config.showMiniChart))}setMiniChart(){this.miniChart().dataPath=this.widgetProperties.config.paths.numericPath.path,this.miniChart().dataSource=this.widgetProperties.config.paths.numericPath.source,this.miniChart().color=this.widgetProperties.config.color,this.miniChart().convertUnitTo=this.widgetProperties.config.paths.numericPath.convertUnitTo,this.miniChart().numDecimal=this.widgetProperties.config.numDecimal,this.miniChart().yScaleMin=this.widgetProperties.config.yScaleMin,this.miniChart().yScaleMax=this.widgetProperties.config.yScaleMax,this.miniChart().inverseYAxis=this.widgetProperties.config.inverseYAxis,this.miniChart().verticalChart=this.widgetProperties.config.verticalChart,this.miniChart().datasetUUID=this.widgetProperties.uuid}setColors(){this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueStateColor=this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null),this._dataset.removeIfExists(this.widgetProperties?.uuid,!0);try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}drawWidget(){if(!this.canvasCtx)return;let e=this.widgetProperties.config.paths.numericPath.convertUnitTo,t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor;(!this.backgroundBitmap||this.backgroundBitmap.width!==this.canvasElement.width||this.backgroundBitmap.height!==this.canvasElement.height||this.backgroundBitmapText!==this.widgetProperties.config.displayName+"|"+e)&&(this.backgroundBitmap=this.canvas.renderStaticToBitmap(this.canvasCtx,this.cssWidth,this.cssHeight,o=>{this.canvas.drawTitleInternal(o,this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight,.1),["unitless","percent","ratio","latitudeSec","latitudeMin","longitudeSec","longitudeMin"].includes(e)||this.canvas.drawText(o,e,this.cssWidth-t,this.cssHeight-i,Math.floor(this.cssWidth*.25),Math.floor(this.cssHeight*.15),"bold",this.valueColor,"end","bottom")}),this.backgroundBitmapText=this.widgetProperties.config.displayName+"|"+e),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(),(this.widgetProperties.config.showMax||this.widgetProperties.config.showMin)&&this.drawMinMax()}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)}getValueText(){if(this.dataValue===null)return"--";let e=this.widgetProperties.config.paths.numericPath.convertUnitTo;return["latitudeSec","latitudeMin","longitudeSec","longitudeMin","D HH:MM:SS"].includes(e)?this.dataValue.toString():this.applyDecorations(this.dataValue.toFixed(this.widgetProperties.config.numDecimal))}drawMinMax(){if(!this.widgetProperties.config.showMin&&!this.widgetProperties.config.showMax)return;let e="";this.widgetProperties.config.showMin&&(e=this.minValue!=null?` Min: ${this.applyDecorations(this.minValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Min: --"),this.widgetProperties.config.showMax&&(e+=this.maxValue!=null?` Max: ${this.applyDecorations(this.maxValue.toFixed(this.widgetProperties.config.numDecimal))}`:" Max: --"),e=e.trim();let t=10*this.canvas.scaleFactor,i=5*this.canvas.scaleFactor,o=this.cssHeight;this.canvas.drawText(this.canvasCtx,e,t,Math.floor(o-i),this.maxMinMaxTextWidth,this.maxMinMaxTextHeight,"normal",this.valueColor,"start","bottom")}applyDecorations(e){switch(this.widgetProperties.config.paths.numericPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-numeric"]],viewQuery:function(t,i){t&1&&($(i.miniChart,Zn,5),$(i.canvasMainRef,fd,5)),t&2&&ce(2)},features:[ne],decls:4,vars:3,consts:[["canvasMainRef",""],[1,"numeric-wrapper",3,"configChange","config","id"],[3,"theme"],[1,"numeric-canvas"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),Ne(1,vd,1,1,"minichart",2),z(2,"canvas",3,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),Le(i.showMiniChart()?1:-1))},dependencies:[me,Ge,Zn],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 bd=["canvasMainRef"],Jn=(()=>{class n extends ue{canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;titleBitmap=null;titleBitmapText=null;canvas=W(Ue);cssWidth=0;cssHeight=0;dataValue=null;_timeZoneGTM="";isDestroyed=!1;labelColor=H(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Time Label",filterSelfPaths:!0,paths:{gaugePath:{description:"String Data",path:null,source:null,pathType:"Date",isPathConfigurable:!0,sampleTime:500}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:!1,dataTimeout:5},Z(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig()}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.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.canvasElement.width*.85),this.maxTextHeight=Math.floor(this.canvasElement.height*.7),this.startWidget())}startWidget(){this._timeZoneGTM=this.getGMTOffset(this.widgetProperties.config.dateTimezone),this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("gaugePath",e=>{this.dataValue=e.data.value,this.drawWidget()})}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}getGMTOffset(e){try{if(e==="System Timezone -")return"";let o=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(r=>r.type==="timeZoneName");return o?o.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}setColors(){this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color}drawWidget(){if(!this.canvasCtx)return;(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),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;if(isNaN(Date.parse(this.dataValue)))e="--";else try{e=Yo(this.dataValue,this.widgetProperties.config.dateFormat,"en-US",this._timeZoneGTM)}catch(t){e=t,console.log("[Date Time Widget]: "+t)}this.canvas.drawText(this.canvasCtx,e,Math.floor(this.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=V({type:n,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,bd,5),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"date-wrapper",3,"configChange","config","id"],[1,"date-canvas"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me,Ge],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.date-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.date-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}"]})}return n})();var Ha={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."},Pt=(()=>{class n{signalKDeltaService=W(rr);appSettingsService=W(ki);appService=W(Dt);auth=W(Wn);requestStatus$=new yn;requests=[];constructor(){this.signalKDeltaService.subscribeRequestUpdates().pipe(pt()).subscribe(e=>{this.updateRequest(e)})}requestDeviceAccessToken(){let e=ni.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=ni.create(),o={requestId:i,login:{username:e,password:t}};console.log("[Request Service] Requesting User Login"),this.signalKDeltaService.publishDelta(o);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 o=ni.create(),r=e.replace(/^(self\.)/,""),h={context:"vessels.self",requestId:o,put:{path:r,value:t}};this.signalKDeltaService.publishDelta(h);let m={requestId:o,state:null,statusCode:null,widgetUUID:i};return this.requests.push(m),o}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=Ha[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+" - "+Ha[this.requests[t].statusCode]+" - "+this.requests[t].message),console.error("[Request Service] Unknown Request Status Code received: "+this.requests[t].statusCode+" - "+Ha[this.requests[t].statusCode]+" - "+this.requests[t].message);try{this.requestStatus$.next(this.requests[t]),this.requests.splice(t,1)}catch(o){this.requestStatus$.error(o),console.error("[Request Service] "+o),this.requests=[]}}else this.appService.sendSnackbarNotification(`ERROR: A request message that contains an unknown Request ID was received. Request Delta:
42
+ `+JSON.stringify(e)),console.error(`[Request Service] A Request message that contains an unknown Request ID was received. from delta:
43
+ `+JSON.stringify(e))}subscribeRequest(){return this.requestStatus$.asObservable()}static \u0275fac=function(t){return new(t||n)};static \u0275prov=Rt({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();var qr=(()=>{class n{data=N(null,{alias:"controlData"});theme=N(null);dimensions=N.required();toggleClick=xi();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=V({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&&(q(),T(0,"svg",0)(1,"defs",1)(2,"linearGradient",2),G(3,"stop",3)(4,"stop",4),P(),G(5,"linearGradient",5),P(),T(6,"g",6),G(7,"rect",7),T(8,"svg",8)(9,"text",9),p(10),P()(),T(11,"g",10),G(12,"circle",11),P()(),T(13,"g",12),G(14,"rect",13),T(15,"svg",8)(16,"defs")(17,"filter",14),G(18,"feGaussianBlur",15),T(19,"feMerge"),G(20,"feMergeNode",16)(21,"feMergeNode",17),P()()(),T(22,"text",18),p(23),P()(),T(24,"g",19),G(25,"circle",20),P()()()),t&2&&(X("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),w(9),X("fill",i.labelColor),w(),Qe(" ",i.data().ctrlLabel," "),w(12),X("fill",i.valueColor),w(),Qe("",i.data().ctrlLabel," "),w(2),X("fill",i.valueColor))},encapsulation:2})}return n})();var jr=(()=>{class n{data=N(null,{alias:"controlData"});theme=N(null);dimensions=N.required();toggleClick=xi();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=Si(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=V({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&&(q(),T(0,"svg",0),G(1,"defs",1),T(2,"g",2),Ji("pointerup",function(){return i.handleClickUp()})("pointerleave",function(){return i.handleClickUp()})("pointerdown",function(r){return i.handleClickDown(r)})("pointermove",function(r){return i.handlePointerMove(r)}),T(3,"g",3),G(4,"rect",4)(5,"rect",5),T(6,"svg",6)(7,"text",7),p(8),P()()(),T(9,"g",8),G(10,"rect",9)(11,"rect",10),T(12,"svg",6)(13,"text",11),p(14),P()()()()()),t&2&&(X("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),w(7),X("fill",i.labelColorDisabled),w(),Qe(" ",i.data().ctrlLabel," "),w(3),X("fill",i.valueColor),w(2),X("fill",i.labelColorEnabled),w(),Qe(" ",i.data().ctrlLabel," "))},encapsulation:2})}return n})();var $r=(()=>{class n{data=N(null,{alias:"controlData"});theme=N(null);dimensions=N.required();toggleClick=xi();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=V({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&&(q(),T(0,"svg",0),G(1,"defs",1),T(2,"g",2),Ji("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!0)}),G(3,"rect",3),T(4,"svg",4)(5,"text",5),p(6),P()(),T(7,"g",6),G(8,"rect",7)(9,"circle",8),P()(),T(10,"g",9),Ji("pointerdown",function(r){return i.onPointerDown(r)})("pointermove",function(r){return i.onPointerMove(r)})("pointerup",function(r){return i.onPointerUp(r,!1)}),G(11,"rect",10),T(12,"svg",4)(13,"defs")(14,"filter",11),G(15,"feGaussianBlur",12),T(16,"feMerge"),G(17,"feMergeNode",13)(18,"feMergeNode",14),P()()(),T(19,"text",15),p(20),P()(),T(21,"g",16),G(22,"rect",17)(23,"circle",18),P()()()),t&2&&(X("height",i.dimensions().height)("width",i.dimensions().width)("viewBox",i.viewBox),w(5),X("fill",i.labelColor),w(),Qe(" ",i.data().ctrlLabel," "),w(13),X("fill",i.valueColor),w(),Qe("",i.data().ctrlLabel," "),w(2),X("fill",i.valueColor))},encapsulation:2})}return n})();var yd=["canvas"],ea=(()=>{class n{text=N.required();color=N.required();canvasRef=Y.required("canvas");canvas=W(Ue);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=V({type:n,selectors:[["widget-title"]],viewQuery:function(t,i){t&1&&$(i.canvasRef,yd,5),t&2&&ce()},inputs:{text:[1,"text"],color:[1,"color"]},features:[vi],decls:3,vars:0,consts:[["canvas",""],[1,"title-wrapper"],[1,"title-canvas"]],template:function(t,i){t&1&&(T(0,"div",1),G(1,"canvas",2,0),P())},dependencies:[Ge],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})();function wd(n,a){if(n&1){let e=ee();g(0,"app-svg-boolean-switch",6),I("toggleClick",function(i){O(e);let o=j(2);return R(o.toggle(i))}),b()}if(n&2){let e=j().$implicit,t=j();L("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function Cd(n,a){if(n&1){let e=ee();g(0,"app-svg-boolean-button",6),I("toggleClick",function(i){O(e);let o=j(2);return R(o.toggle(i))}),b()}if(n&2){let e=j().$implicit,t=j();L("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function xd(n,a){if(n&1){let e=ee();g(0,"app-svg-boolean-light",6),I("toggleClick",function(i){O(e);let o=j(2);return R(o.toggle(i))}),b()}if(n&2){let e=j().$implicit,t=j();L("controlData",e)("theme",t.theme())("dimensions",t.ctrlDimensions)}}function kd(n,a){if(n&1&&(Sn(0),Ne(1,wd,1,3,"app-svg-boolean-switch",5)(2,Cd,1,3,"app-svg-boolean-button",5)(3,xd,1,3,"app-svg-boolean-light",5),_n()),n&2){let e,t=a.$implicit;w(),Le((e=t.type)==="1"?1:e==="2"?2:e==="3"?3:-1)}}function Sd(n,a){n&1&&z(0,"div",4)}var Yr=(()=>{class n extends ue{dashboard=W(et);signalkRequestsService=W(Pt);appService=W(Dt);switchControls=H([]);skRequestSub=new bn;labelColor=H(void 0);nbCtrl=null;ctrlDimensions={width:0,height:0};constructor(){super(),this.defaultConfig={displayName:"Switch Panel Label",filterSelfPaths:!0,paths:[],enableTimeout:!1,dataTimeout:5,color:"contrast",putEnable:!0,putMomentary:!1,multiChildCtrls:[]},Z(()=>{this.theme()&&this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim)})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.startWidget()}startWidget(){this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.nbCtrl=this.widgetProperties.config.multiChildCtrls.length,this.switchControls.set([]),this.widgetProperties.config.multiChildCtrls.forEach(e=>{e.isNumeric||(e.isNumeric=!1),this.switchControls().push(Q({},e))}),this.unsubscribeDataStream();for(let e in this.switchControls())if(Object.prototype.hasOwnProperty.call(this.switchControls(),e)){let t=this.switchControls()[e];this.observeDataStream(e,i=>{t.isNumeric?[0,1,null].includes(i.data.value)&&(t.value=!!i.data.value):t.value=i.data.value})}this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}onResized(e){let t=e.contentRect.height/this.nbCtrl,i=35*e.contentRect.width/180,o=i<t?i:t;this.ctrlDimensions={width:e.contentRect.width,height:o}}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}toggle(e){let i=this.widgetProperties.config.paths.findIndex(o=>o.pathID==e.pathID);e.isNumeric?this.signalkRequestsService.putRequest(this.widgetProperties.config.paths[i].path,e.value?1:0,this.widgetProperties.uuid):this.signalkRequestsService.putRequest(this.widgetProperties.config.paths[i].path,e.value,this.widgetProperties.uuid)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-boolean-switch"]],features:[ne],decls:7,vars:5,consts:[["widgetContainer",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],[1,"widgetOverlay"],[1,"svg-widget",3,"controlData","theme","dimensions"],[1,"svg-widget",3,"toggleClick","controlData","theme","dimensions"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"widget-title",2),g(2,"div",3,0),I("onResize",function(s){return O(o),R(i.onResized(s))}),rt(4,kd,4,1,"ng-container",null,gt),b(),Ne(6,Sd,1,0,"div",4),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("text",i.widgetProperties.config.displayName)("color",i.labelColor()),w(3),st(i.switchControls()),w(2),Le(i.dashboard.isDashboardStatic()?-1:6))},dependencies:[me,Ge,mt,$r,jr,qr,ea],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 Xr="mat-badge-content",_d=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({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)}
44
+ `],encapsulation:2,changeDetection:0})}return n})(),wf=(()=>{class n{_ngZone=W($e);_elementRef=W(Be);_ariaDescriber=W(or);_renderer=W(Io);_animationsDisabled=dr();_idGenerator=W(ar);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=W(ir);_document=W(Oo);constructor(){let e=W(er);e.load(_d),e.load(tr)}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(Xr),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 > .${Xr}`);for(let t of Array.from(e))t!==this._badgeElement&&t.remove()}static \u0275fac=function(t){return new(t||n)};static \u0275dir=bi({type:n,selectors:[["","matBadge",""]],hostAttrs:[1,"mat-badge"],hostVars:20,hostBindings:function(t,i){t&2&&ti("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",Mn],disabled:[2,"matBadgeDisabled","disabled",Mn],position:[0,"matBadgePosition","position"],content:[0,"matBadge","content"],description:[0,"matBadgeDescription","description"],size:[0,"matBadgeSize","size"],hidden:[2,"matBadgeHidden","hidden",Mn]}})}return n})(),Qr=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Lt({type:n});static \u0275inj=It({imports:[nr,Da,Da]})}return n})();function it(n,a,e,t=1e3,i,o,r=[500,500],s){if(o){let _=o.get(n);_&&cancelAnimationFrame(_)}a=(()=>{let _=n.getAttribute("transform");if(_){let B=/rotate\((-?\d+(\.\d+)?)/.exec(_);if(B)return parseFloat(B[1])}return a})();let m=_=>(_+360)%360;a=m(a),e=m(e);let u=e-a;u>180&&(u-=360),u<-180&&(u+=360);let v=_=>_<.5?4*_*_*_:1-Math.pow(-2*_+2,3)/2,x=_=>s?s.runOutsideAngular(_):_(),S=_=>s?s.run(_):_();x(()=>{let _=performance.now(),B=ge=>{let ae=ge-_,Se=Math.min(ae/t,1),Fe=v(Se),_e=a+u*Fe;if(n.setAttribute("transform",`rotate(${_e} ${r[0]} ${r[1]})`),Se<1){let qe=requestAnimationFrame(B);o&&o.set(n,qe)}else n.setAttribute("transform",`rotate(${e} ${r[0]} ${r[1]})`),i&&S(i),o&&o.delete(n)},re=requestAnimationFrame(B);o&&o.set(n,re)})}function ln(n,a,e,t=500,i,o,r){if(o){let m=o.get(n);m&&cancelAnimationFrame(m)}let s=m=>r?r.runOutsideAngular(m):m(),h=m=>r?r.run(m):m();s(()=>{let m=performance.now(),u=e-a,v=_=>_<.5?4*_*_*_:1-Math.pow(-2*_+2,3)/2,x=_=>{let B=_-m,re=Math.min(B/t,1),ge=v(re),ae=a+u*ge;if(n.setAttribute("width",ae.toString()),re<1){let Se=requestAnimationFrame(x);o&&o.set(n,Se)}else n.setAttribute("width",e.toString()),i&&h(i),o&&o.delete(n)},S=requestAnimationFrame(x);o&&o.set(n,S)})}var Zr=n=>n<.5?4*n*n*n:1-Math.pow(-2*n+2,3)/2,ta=n=>(n%360+360)%360,Td=(n,a)=>{let e=ta(a)-ta(n);return e>180&&(e-=360),e<=-180&&(e+=360),e};function Kr(n,a,e,t,i,o){let r=m=>o?o.runOutsideAngular(m):m(),s=m=>o?o.run(m):m(),h=0;return r(()=>{let m=performance.now(),u=Td(n,a),v=ta(n),x=S=>{let _=Math.min((S-m)/e,1),B=Zr(_),re=v+u*B;t(ta(re)),_<1?h=requestAnimationFrame(x):i&&s(i)};h=requestAnimationFrame(x)}),h}var Ed=(n,a,e)=>({min:n.min+(a.min-n.min)*e,mid:n.mid+(a.mid-n.mid)*e,max:n.max+(a.max-n.max)*e});function Jr(n,a,e,t,i,o){let r=m=>o?o.runOutsideAngular(m):m(),s=m=>o?o.run(m):m(),h=0;return r(()=>{let m=performance.now(),u=v=>{let x=Math.min((v-m)/e,1),S=Zr(x);t(Ed(n,a,S)),x<1?h=requestAnimationFrame(u):i&&s(i)};h=requestAnimationFrame(u)}),h}var Dd=["rotatingDial"],Md=["awaIndicator"],Pd=["rudderStarboardRect"],Ad=["rudderPortRect"],es=(()=>{class n{rotatingDial=Y.required("rotatingDial");awaIndicator=Y.required("awaIndicator");rudderStarboardRect=Y.required("rudderStarboardRect");rudderPortRect=Y.required("rudderPortRect");apMode=N("off-line");targetPilotHeadingTrue=N.required();autopilotTarget=N.required();courseXte=N.required();compassHeading=N.required();headingDirectionTrue=N.required();appWindAngle=N.required();rudderAngle=N.required();compassAngle=H(0);awaAngle=H(0);prevCompassAngle=0;prevAwaAngle=0;lastRudderSigned=Number.NaN;oldRudderPrtAngle=0;newRudderPrtAngle=0;oldRudderStbAngle=0;newRudderStbAngle=0;apModeValue=H("");apModeValueAnnotation=H("");apModeValueDirection=H("");lockedMode=Ze(()=>{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=Ze(()=>{let e=this.autopilotTarget();return Number.isFinite(e)?this.roundDeg(e):null});lockedHdgAnnotation=Ze(()=>{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=Ze(()=>this.headingDirectionTrue()?"T":"M");animationFrames=new WeakMap;ANIMATION_DURATION=1e3;DEG_TO_PX=16.66666667;ROT_CENTER=[500,560.061];ngZone=W($e);roundDeg(e){return Math.round(e)}constructor(){Z(()=>{let e=this.compassHeading();if(!Number.isFinite(e))return;let t=this.roundDeg(e);He(()=>{let i=this.prevCompassAngle;if(i===t)return;this.prevCompassAngle=t,this.compassAngle.set(t);let o=this.rotatingDial()?.nativeElement;o&&it(o,-i,-t,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),Z(()=>{let e=this.appWindAngle();if(!Number.isFinite(e))return;let i=(this.roundDeg(e)+360)%360;He(()=>{let o=this.prevAwaAngle;if(o===i)return;this.prevAwaAngle=i,this.awaAngle.set(i);let r=this.awaIndicator()?.nativeElement;r&&it(r,o,i,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ROT_CENTER,this.ngZone)})}),Z(()=>{let e=this.rudderAngle();Number.isFinite(e)&&He(()=>{this.updateRudderAngle(-e)})}),Z(()=>{let e=this.apMode(),t=this.appWindAngle(),i=Number.isFinite(t)?this.roundDeg(t):0,o=this.courseXte();He(()=>{switch(e){case"auto":case"route":{let r,s,h;o<0?h=" Port":o>0?h=" Stbd":h="",o=Math.abs(o),o>185?(r=(o/1852).toFixed(1),s=" nm"):(r=o.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 o=Math.min(Math.abs(t),30)*this.DEG_TO_PX;t<=0?(ln(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,o,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),ln(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderStbAngle=o,this.oldRudderPrtAngle=0):(ln(this.rudderPortRect().nativeElement,this.oldRudderPrtAngle,o,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),ln(this.rudderStarboardRect().nativeElement,this.oldRudderStbAngle,0,this.ANIMATION_DURATION,void 0,this.animationFrames,this.ngZone),this.oldRudderPrtAngle=o,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 o=this.animationFrames.get(i);o&&cancelAnimationFrame(o),this.animationFrames.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["app-svg-autopilot"]],viewQuery:function(t,i){t&1&&($(i.rotatingDial,Dd,5),$(i.awaIndicator,Md,5),$(i.rudderStarboardRect,Pd,5),$(i.rudderPortRect,Ad,5)),t&2&&ce(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&&(q(),T(0,"svg",4)(1,"g",5)(2,"g",6),G(3,"path",7)(4,"path",8)(5,"path",9),P(),T(6,"g",10,0)(8,"g",11),G(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),T(46,"text",49)(47,"tspan",50),p(48,"330"),P()(),T(49,"text",51)(50,"tspan",52),p(51,"300"),P()(),T(52,"text",53)(53,"tspan",54),p(54,"W"),P()(),T(55,"text",55)(56,"tspan",56),p(57,"240"),P()(),T(58,"text",57)(59,"tspan",58),p(60,"210"),P()(),T(61,"text",59)(62,"tspan",60),p(63,"S"),P()(),T(64,"text",61)(65,"tspan",62),p(66,"150"),P()(),T(67,"text",63)(68,"tspan",64),p(69,"120"),P()(),T(70,"text",65)(71,"tspan",66),p(72,"E"),P()(),T(73,"text",67)(74,"tspan",68),p(75,"60"),P()(),T(76,"text",69)(77,"tspan",70),p(78,"30"),P()(),T(79,"text",71)(80,"tspan",72),p(81,"N"),P()()()(),G(82,"path",73),P(),T(83,"g",74)(84,"text",75),p(85),P(),T(86,"text",76),p(87),T(88,"tspan",77),p(89),P()(),T(90,"text",78),p(91),P(),T(92,"text",79),p(93,"HDG"),P(),T(94,"text",80),p(95),T(96,"tspan",77),p(97),P()()(),T(98,"g",81)(99,"text",82),p(100),T(101,"tspan",83),p(102,"\xB0"),P()(),T(103,"text",84),p(104),P(),T(105,"text",85),p(106),P()(),T(107,"g",86)(108,"g",87,1),G(110,"path",88),T(111,"text",89)(112,"tspan",90),p(113,"A"),P()()()(),T(114,"g",91),G(115,"rect",92,2)(117,"rect",93,3)(119,"rect",94)(120,"rect",95)(121,"rect",96)(122,"rect",97),P()()),t&2&&(w(84),ii(i.apMode()=="wind"?"awa-text-dim":"contrast-text-dim"),X("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),w(),Qe(" ",i.apMode()==="route"?"XTE":"AWA"),w(),ii(i.apMode()=="wind"?"awa-text":"contrast-text"),X("display",i.apMode()=="wind"||i.apMode()=="route"?"inline":"none"),w(),Re(i.apModeValue()??"--"),w(2),Re(i.apModeValueAnnotation()),w(),X("display",i.apMode()=="route"?"inline":"none"),w(),Re(i.apModeValueDirection()),w(4),Qe("",i.compassAngle()??"--","\xB0"),w(2),Re(i.hdgDirectionTrue()),w(3),Re(i.lockedHdg()??"--"),w(4),Re(i.lockedHdgAnnotation()),w(2),Re(i.lockedMode()),w(2),X("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 Wd=["canvasMainRef"],ia=(()=>{class n extends ue{canvas=W(Ue);canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;latPos="";longPos="";labelColor=H(void 0);valueColor=void 0;maxTextWidth=0;maxTextHeight=0;middle=0;center=0;fontSizeOffset=0;isDestroyed=!1;constructor(){super(),this.defaultConfig={displayName:"Position",filterSelfPaths:!0,paths:{longPath:{description:"Longitude",path:"self.navigation.position.longitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"longitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500},latPath:{description:"Latitude",path:"self.navigation.position.latitude",source:"default",pathType:"number",isPathConfigurable:!0,convertUnitTo:"latitudeMin",showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5},Z(()=>{this.theme()&&(this.setColors(),this.drawWidget())})}ngOnInit(){this.validateConfig()}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.calculateFontSizeAndPositions(),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),!this.isDestroyed&&this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.setColors(),this.observeDataStream("longPath",e=>{e.data.value===null?this.longPos="":this.widgetProperties.config.paths.longPath.convertUnitTo==="pdeg"?this.longPos=e.data.value.toFixed(6)+"\xB0":this.longPos=e.data.value.toString(),this.drawWidget()}),this.observeDataStream("latPath",e=>{e.data.value===null?this.latPos="":this.widgetProperties.config.paths.latPath.convertUnitTo==="pdeg"?this.latPos=e.data.value.toFixed(7)+"\xB0":this.latPos=e.data.value.toString(),this.drawWidget()})}ngOnDestroy(){this.isDestroyed=!0,this.unsubscribeDataStream();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}setColors(){this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color}calculateFontSizeAndPositions(){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,t=this.canvas.calculateOptimalFontSize(this.canvasCtx,e,this.maxTextWidth,this.maxTextHeight,"bold");this.fontSizeOffset=Math.floor(t*5e-4)}drawWidget(){this.canvasCtx&&((!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),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),this.canvas.drawText(this.canvasCtx,this.latPos,this.center,this.middle-this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","bottom"),this.canvas.drawText(this.canvasCtx,this.longPos,this.center,this.middle+this.fontSizeOffset,this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor,"center","top"))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-position"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,Wd,5),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"position-wrapper",3,"configChange","config","id"],[1,"position-canvas"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me,Ge],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.position-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.position-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}"]})}return n})();function Od(n,a){if(n&1){let e=ee();g(0,"button",18),I("click",function(){O(e);let i=j();return R(i.toggleDodge())}),g(1,"mat-icon",19),q(),g(2,"svg",36)(3,"text",42),p(4,"Dodge"),b(),z(5,"path",43)(6,"path",44),g(7,"text",45),p(8,"!"),b()()()()}if(n&2){let e=j();ti("ap-btn-active",e.dodgeModeActive()),L("disabled",e.apBtnDisabled()),w(5),se("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor"),w(),se("fill",e.dodgeModeActive()?"currentColor":"none")("stroke","currentColor")}}function Rd(n,a){if(n&1){let e=ee();q(),g(0,"g",50),I("click",function(){let i=O(e).$implicit,o=j(2);return R(!i.disabled&&o.onMenuItemClick(i.action))})("keyup.enter",function(){let i=O(e).$implicit,o=j(2);return R(!i.disabled&&o.onMenuItemClick(i.action))})("keyup.space",function(){let i=O(e).$implicit,o=j(2);return R(!i.disabled&&o.onMenuItemClick(i.action))}),z(1,"rect",51),g(2,"text",52),p(3),b()()}if(n&2){let e=a.$implicit,t=a.$index,i=j(2);X("aria-label",e.label),w(),ii(e.isCancel?"svg-menu-item-cancel":e.current?"svg-menu-item-current":e.disabled?"svg-menu-item-disabled":"svg-menu-item"),X("y",t*i.itemHeight)("height",i.itemHeight),w(),ii(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"),X("y",(t+.65)*i.itemHeight),w(),Fo(" ",e.current?"\u2713 ":"","",e.label," ")}}function Id(n,a){if(n&1){let e=ee();g(0,"div",46),I("click",function(){O(e);let i=j();return R(i.toggleMenu())})("keyup.enter",function(){O(e);let i=j();return R(i.toggleMenu())})("keyup.space",function(){O(e);let i=j();return R(i.toggleMenu())}),q(),g(1,"svg",47),I("click",function(i){return O(e),R(i.stopPropagation())})("keyup.enter",function(i){return O(e),R(i.stopPropagation())})("keyup.space",function(i){return O(e),R(i.stopPropagation())}),z(2,"rect",48),Sn(3),rt(4,Rd,4,10,":svg:g",49,gt),_n(),b()()}if(n&2){let e=j();w(),X("viewBox","0 0 240 "+e.menuItems().length*e.itemHeight),w(),X("height",e.menuItems().length*e.itemHeight),w(2),st(e.menuItems())}}function Nd(n,a){n&1&&z(0,"div",41)}var xt={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"},Wt={BASE:n=>`${xt.V2_AUTOPILOTS}/${n}`,ENGAGE:n=>`${xt.V2_AUTOPILOTS}/${n}/engage`,DISENGAGE:n=>`${xt.V2_AUTOPILOTS}/${n}/disengage`,STATE:n=>`${xt.V2_AUTOPILOTS}/${n}/state`,MODE:n=>`${xt.V2_AUTOPILOTS}/${n}/mode`,TARGET_HEADING:n=>`${xt.V2_AUTOPILOTS}/${n}/target`,TACK:n=>`${xt.V2_AUTOPILOTS}/${n}/tack`,GYBE:n=>`${xt.V2_AUTOPILOTS}/${n}/gybe`,DODGE:n=>`${xt.V2_AUTOPILOTS}/${n}/dodge`,ADJUST_HEADING:n=>`${xt.V2_AUTOPILOTS}/${n}/target/adjust`},Fa={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"}},Ua={COUNTDOWN_SECONDS:5,ERROR_DISPLAY_DURATION:6e3,MESSAGE_DISPLAY_DURATION:5e3},ts=(()=>{class n extends ue{_requests=W(Pt);http=W(Ko);dashboard=W(et);_destroyRef=W(Nt);apiEndpoints;apState=H(null);apEngaged=H(null);apMode=H(null);dodgeModeActive=H(!1);autopilotTargetHeading=H(null);autopilotTargetWindHeading=H(null);heading=H(null);crossTrackError=H(null);windAngleApparent=H(null);rudder=H(null);autopilotTarget=jo(()=>{let e=this.autopilotTargetHeading(),t=this.autopilotTargetWindHeading();return this.apMode()==="wind"?t??null:e??null});currentRequests=new Set;apGrid=Ze(()=>this.apMode()?"grid":"none");apEngageBtnDisabled=Ze(()=>{let e=this.apState(),t=this.apEngaged(),i=this.widgetProperties.config.autopilot.apiVersion;return i?i==="v1"?!!["standby","off-line"].includes(e):i!=="v2":!0});apBtnDisabled=Ze(()=>{let e=this.apEngaged();return this.widgetProperties.config.autopilot.apiVersion==="v1"?this.apMode()==="standby":!e});adjustHdgBtnVisibility=Ze(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});tackBtnVisibility=Ze(()=>{let e=this.apMode();return!!["auto","compass","gps","wind","true wind","standby"].includes(e)});routeBtnVisibility=Ze(()=>{let e=this.apMode();return e==="route"||e==="nav"});countdownOverlayVisibility=H("hidden");countdownOverlayText=H("");msgOverlayVisibility=H("hidden");msgOverlayText=H("");errorOverlayVisibility=H("hidden");errorOverlayText=H("");handleCountDownCounterTimeout=null;handleConfirmActionTimeout=null;handleDisplayErrorTimeout=null;handleMessageTimeout=null;isPersistentError=!1;countDownValue=-1;actionToBeConfirmed="";menuItems=Ze(()=>{let e=this.apMode(),t=this.widgetProperties.config.autopilot.apiVersion,i=this.widgetProperties.config.autopilot.pluginId,o=[];return He(()=>{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}];o=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}];o=this.parseMenuItems(r,e)}}),o});menuOpen=H(!1);itemHeight=60;padding=20;embedWidgetColor="contrast";nextWptProperties=H({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:zt});ttwProperties=H({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:zt});etaProperties=H({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:zt});dtwProperties=H({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:zt});xteProperties=H({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:zt});constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{autopilotState:{description:"Autopilot State",path:"self.steering.autopilot.state",source:"default",pathType:"string",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},autopilotMode:{description:"Autopilot Mode",path:"self.steering.autopilot.mode",source:"default",pathType:"string",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},autopilotEngaged:{description:"Autopilot Engaged",path:"self.steering.autopilot.engaged",source:"default",pathType:"boolean",isPathConfigurable:!1,showPathSkUnitsFilter:!1,convertUnitTo:"",sampleTime:500},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}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){let e={statusCode:500,statusCodeDescription:"Autopilot widget not configured",requestId:"",state:""},t=this.widgetProperties.config.autopilot.apiVersion,i=this.widgetProperties.config.autopilot.instanceId,o=this.widgetProperties.config.autopilot.pluginId,r=s=>{this.unsubscribeDataStream(),console.error(`[Autopilot Widget] ${s}`),this.displayApError(e),this.isPersistentError=!0,this.apMode.set("off-line"),this.apState.set("off-line"),this.apEngaged.set(!1)};if(this.unsubscribeDataStream(),!t){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(!o){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:Wt.ENGAGE(e),disengage:Wt.DISENGAGE(e),mode:Wt.MODE(e),state:Wt.STATE(e),target:Wt.TARGET_HEADING(e),tack:Wt.TACK(e),gybe:Wt.GYBE(e),dodge:Wt.DODGE(e),adjustHeading:Wt.ADJUST_HEADING(e)}}isV2CommandSupported(e){return this.widgetProperties.config.autopilot.modes.includes(e)}updateConfig(e){this.widgetProperties.config=e,this.cancelAllHttpRequests(),this.isPersistentError=!1,this.errorOverlayVisibility.set("hidden"),this.errorOverlayText.set(""),this.apEngaged.set(null),this.startWidget()}startV2Subscriptions(){this.observeDataStream("autopilotState",e=>{e.data?.value?this.apState.set(e.data.value):(this.apState.set("off-line"),console.warn("[Autopilot Widget] Autopilot state is null or not available"))}),this.observeDataStream("autopilotMode",e=>{e.data?.value?this.apMode.set(e.data.value):(this.apMode.set("off-line"),console.warn("[Autopilot Widget] Autopilot mode is null or not available"))}),this.observeDataStream("autopilotEngaged",e=>{e.data?.value!=null?this.apEngaged.set(e.data.value):(this.apEngaged.set(!1),console.warn("[Autopilot Widget] Autopilot engaged is null or not available"))}),this.observeDataStream("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.widgetProperties.config.paths.autopilotMode.path=xt.V1_MODE_PATH,this.observeDataStream("autopilotMode",e=>{e.data?.value?this.apMode.set(e.data.value):(this.apMode.set("off-line"),console.warn("[Autopilot Widget] Autopilot V1 mode state is null or not available"))}),this.observeDataStream("autopilotTargetHeading",e=>this.autopilotTargetHeading.set(e.data.value!=null?e.data.value:0)),this.observeDataStream("autopilotTargetWindHeading",e=>this.autopilotTargetWindHeading.set(e.data.value!=null?e.data.value:0)),this.startDataSubscription(),this.subscribePutResponse(),this.apState.set(null)}startDataSubscription(){this.observeDataStream("courseXte",e=>this.crossTrackError.set(e.data.value!=null?e.data.value:0)),this.observeDataStream("rudderAngle",e=>{e.data.value===null?this.rudder.set(null):this.rudder.set(this.widgetProperties.config.autopilot.invertRudder?-e.data.value:e.data.value)}),this.widgetProperties.config.autopilot.headingDirectionTrue?this.observeDataStream("headingTrue",e=>this.heading.set(e.data.value!=null?e.data.value:0)):this.observeDataStream("headingMag",e=>this.heading.set(e.data.value!=null?e.data.value:0)),this.observeDataStream("windAngleApparent",e=>this.windAngleApparent.set(e.data.value!=null?e.data.value:0))}subscribePutResponse(){this._requests.subscribeRequest().pipe(pt(this._destroyRef)).subscribe(e=>{e.widgetUUID==this.widgetProperties.uuid&&this.commandReceived(e)})}makeHttpRequest(e){let t=e.pipe(pt(this._destroyRef));return this.currentRequests.add(t),t.pipe(Ao(()=>this.currentRequests.delete(t)))}cancelAllHttpRequests(){this.currentRequests.clear()}buildAndSendCommand(e){let t=Fa[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,Fa.advanceWaypoint);return}this.routeCommand(e,t)}routeCommand(e,t){let i=this.widgetProperties.config.autopilot.apiVersion;i==="v2"?(e==="route"&&this.apMode()==="nav"&&(e="advanceWaypoint"),this.sendV2Command(e)):i==="v1"&&!t.path.startsWith("v2:")?this.sendV1Command(t):(console.error("[Autopilot Widget] Unsupported basic command:",t.path),this.displayApError({statusCode:400,statusCodeDescription:"Unsupported Command",message:`Command path '${t.path}' is not supported in the current API version`,widgetUUID:this.widgetProperties.uuid}))}sendV1Command(e){this._requests.putRequest(e.path,e.value,this.widgetProperties.uuid),console.log(`AP Action:
45
+ `+JSON.stringify(e))}sendV2Command(e,t){return vn(this,null,function*(){let i=this.apiEndpoints;if(!i){console.error("V2 endpoints not available");return}let o=this.dodgeModeActive(),r;switch(e){case"+1":r={path:o?i.dodge:i.adjustHeading,value:{value:1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"+10":r={path:o?i.dodge:i.adjustHeading,value:{value:10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-1":r={path:o?i.dodge:i.adjustHeading,value:{value:-1,units:"deg"}},this.executeRestRequest("PUT",r);break;case"-10":r={path:o?i.dodge:i.adjustHeading,value:{value:-10,units:"deg"}},this.executeRestRequest("PUT",r);break;case"advanceWaypoint":r={path:`${xt.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.widgetProperties.uuid})}})}executeRestRequest(e,t){return vn(this,null,function*(){try{let i;switch(e){case"POST":i=yield Cn(this.makeHttpRequest(this.http.post(t.path,void 0)));break;case"PUT":i=yield Cn(this.makeHttpRequest(this.http.put(t.path,t.value==null?void 0:t.value)));break;case"DELETE":i=yield Cn(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.widgetProperties.uuid}),{statusCode:0,message:i instanceof Error?i.message:"REST operation failed",state:null}}})}setModeAndEnable(e,t){return vn(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 o=yield this.executeRestRequest("PUT",{path:t.state,value:{value:"enabled"}});o.statusCode!==200&&console.error(`[Autopilot Widget] Failed to engage after mode '${e}':`,o)}catch(i){console.error("[Autopilot Widget] setModeAndEngage unexpected error:",i)}})}performTackOrGybe(e,t){if(this.widgetProperties.config.autopilot.apiVersion==="v2")this.sendV2Command(e,{value:t});else{if(e!=="tack")return;let i=Fa[t==="port"?"tackToPort":"tackToStarboard"];this._requests.putRequest(i.path,i.value,this.widgetProperties.uuid)}}setAbsoluteTarget(e){this.widgetProperties.config.autopilot.apiVersion==="v2"?this.sendV2Command("target_heading",{value:e,units:"deg"}):console.error("[Autopilot Widget] Absolute target only available in V2 API")}toggleDodge(){this.widgetProperties.config.autopilot.apiVersion==="v2"?this.sendV2Command("dodge"):(console.warn("[Autopilot Widget] Dodge mode only available in V2 API"),this.displayApError({statusCode:400,statusCodeDescription:"V2 API Required",message:"Dodge mode only available in V2 API",widgetUUID:this.widgetProperties.uuid}))}commandReceived(e){e.statusCode!=200&&this.displayApError(e)}confirmAdvanceWaypoint(e){this.startConfirmCmd(e,"Repeat key [Adv Wpt] to confirm")}confirmTack(e){let t="";if(e==="tackToPort")t="Port",this.actionToBeConfirmed=e;else if(e==="tackToStarboard")t="Starboard",this.actionToBeConfirmed=e;else{this.actionToBeConfirmed="";return}let i=`Repeat [Tack ${t}] key to confirm`;this.startConfirmCmd(e,i)}startConfirmCmd(e,t){this.countDownValue=Ua.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=""},Ua.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(""))},Ua.ERROR_DISPLAY_DURATION)}toggleMenu(){this.menuOpen.set(!this.menuOpen())}onMenuItemClick(e){if(e==="cancel"){this.toggleMenu();return}this.buildAndSendCommand(e),this.menuOpen.set(!1)}parseMenuItems(e,t){let i=this.widgetProperties.config.autopilot.apiVersion;return e.map(r=>{if(r.isCancel)return je(Q({},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.widgetProperties.config.autopilot.modes.includes(r.action));return je(Q({},r),{current:r.action===t,disabled:!s})})}ngOnDestroy(){this.cancelAllHttpRequests(),clearTimeout(this.handleCountDownCounterTimeout),clearTimeout(this.handleConfirmActionTimeout),clearTimeout(this.handleDisplayErrorTimeout),clearTimeout(this.handleMessageTimeout),this.destroyDataStreams()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-autopilot"]],features:[ne],decls:94,vars:66,consts:[[1,"widget-host",3,"configChange","config","id"],[1,"autopilot-grid-container"],[1,"ap-modes"],["mat-flat-button","",1,"ap-btn","ap-btn-ctrlbar",3,"click","disabled"],[1,"svg-icon-ctrlbar"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-element","svg-modes"],[0,"xml","space","preserve","x","50","y","10.7"],["mat-flat-button","",3,"click","disabled"],[0,"xml","space","preserve","x","50.090435","y","10.743966"],[1,"ap-screen"],[3,"apMode","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
46
+ A 36 38 0 0 0 24,33`,2,"stroke-width","8.45947","stroke-linecap","square","stroke-linejoin","miter","stroke-miterlimit","0"],["fill","currentColor","cx","14.5","cy","45.25","r","12"],["fill","none","stroke","currentColor","d",`M 76,31
47
+ A 36 38 0 0 0 24,33`,2,"stroke-width","8.45947","stroke-linecap","square","stroke-linejoin","miter","stroke-miterlimit","0"],[1,"embed-widget",3,"widgetProperties"],["mat-flat-button","",1,"ap-btn",3,"disabled","ap-btn-active"],["viewBox","0 0 100 100","preserveAspectRatio","xMidYMid meet",1,"svg-element","svg-route"],["fill","currentColor","stroke","currentColor",0,"xml","space","preserve","x","49.961578","y","86.799866"],["fill","currentColor","d","M 12.090795,4 V 63.58544 L 71.676235,33.792718 Z",2,"stroke","none"],["fill","currentColor","stroke","currentColor","d","M 75.95674,4 V 63.58544",2,"fill","none","stroke-width","9.90493","stroke-linecap","butt","stroke-linejoin","miter","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],["tabindex","0","role","button","aria-label","Close menu",1,"svg-menu-overlay"],[1,"widgetOverlay"],[0,"xml","space","preserve","x","49.961578","y","86.799866"],["d","M 4.6584699,36.552789 29.229283,58.159051 M 4.6584699,36.451699 29.229283,14.845436",2,"stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],["d","M 95.34153,36.552789 70.770717,58.159051 M 95.34153,36.451699 70.770717,14.845436",2,"stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xml","space","preserve","x","50.167503","y","61.058273",2,"font-size","68.6095px"],["tabindex","0","role","button","aria-label","Close menu",1,"svg-menu-overlay",3,"click","keyup.enter","keyup.space"],["tabindex","0","role","presentation","aria-label","Menu",1,"svg-menu",3,"click","keyup.enter","keyup.space"],["x","0","y","0","width","240",1,"svg-menu-box"],["tabindex","0","role","button",2,"cursor","pointer"],["tabindex","0","role","button",2,"cursor","pointer",3,"click","keyup.enter","keyup.space"],["x","0","width","240"],["x","120"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),g(1,"div",1)(2,"div",2)(3,"button",3),I("click",function(){return i.toggleMenu()}),g(4,"mat-icon",4),q(),g(5,"svg",5)(6,"text",6),p(7),At(8,"titlecase"),b()()()(),We(),g(9,"button",7),I("click",function(){return i.buildAndSendCommand("standby")}),g(10,"mat-icon",4),q(),g(11,"svg",5)(12,"text",8),p(13,"Disengage"),b()()()()(),We(),g(14,"div",9),z(15,"app-svg-autopilot",10),g(16,"div",11),q(),g(17,"svg",12),z(18,"text",13)(19,"text",14),b()(),We(),g(20,"div",15)(21,"span",16),p(22,"warning"),b(),q(),g(23,"svg",12),z(24,"text",17),b()()(),We(),g(25,"div")(26,"button",18),I("click",function(){return i.buildAndSendCommand("-1")}),g(27,"mat-icon",19),q(),g(28,"svg",20)(29,"text",21),p(30,"-1\xB0"),b(),z(31,"path",22),b()()()(),We(),g(32,"div")(33,"button",18),I("click",function(){return i.buildAndSendCommand("+1")}),g(34,"mat-icon",19),q(),g(35,"svg",20)(36,"text",23),p(37,"+1\xB0"),b(),z(38,"path",24),b()()()(),We(),g(39,"div")(40,"button",18),I("click",function(){return i.buildAndSendCommand("-10")}),g(41,"mat-icon",19),q(),g(42,"svg",20)(43,"text",21),p(44,"-10\xB0"),b(),z(45,"path",25)(46,"path",26),b()()()(),We(),g(47,"div")(48,"button",18),I("click",function(){return i.buildAndSendCommand("+10")}),g(49,"mat-icon",19),q(),g(50,"svg",20)(51,"text",23),p(52,"+10\xB0"),b(),z(53,"path",27)(54,"path",28),b()()()(),We(),g(55,"div")(56,"button",18),I("click",function(){return i.buildAndSendCommand("tackToPort")}),g(57,"mat-icon",19),q(),g(58,"svg",20)(59,"text",21),p(60,"Tack"),b(),g(61,"g",29),z(62,"path",30)(63,"path",31)(64,"circle",32),b()()()()(),We(),g(65,"div")(66,"button",18),I("click",function(){return i.buildAndSendCommand("tackToStarboard")}),g(67,"mat-icon",19),q(),g(68,"svg",20)(69,"text",21),p(70,"Tack"),b(),z(71,"path",30)(72,"path",33)(73,"circle",32),b()()()(),We(),g(74,"div"),z(75,"widget-position",34),b(),g(76,"div"),z(77,"widget-datetime",34),b(),g(78,"div"),z(79,"widget-numeric",34),b(),g(80,"div"),z(81,"widget-numeric",34),b(),g(82,"div"),Ne(83,Od,9,11,"button",35),b(),g(84,"div")(85,"button",18),I("click",function(){return i.buildAndSendCommand("route")}),g(86,"mat-icon",19),q(),g(87,"svg",36)(88,"text",37),p(89,"Adv Wpt"),b(),z(90,"path",38)(91,"path",39),b()()()()(),Ne(92,Id,6,2,"div",40),Ne(93,Nd,1,0,"div",41),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),se("display",i.apGrid()),w(2),L("disabled",i.apState()==="off-line"||i.apMode()==="off-line"),w(4),Qe("Mode ",nn(8,64,i.apMode())," \xA0\u22EE"),w(2),ii(i.apEngaged()?"ap-btn ap-btn-ctrlbar ap-btn-engage":"ap-btn ap-btn-ctrlbar ap-btn-disengage"),L("disabled",i.apEngageBtnDisabled()),w(6),L("apMode",i.apMode())("targetPilotHeadingTrue",i.widgetProperties.config.autopilot.courseDirectionTrue)("autopilotTarget",i.autopilotTarget())("courseXte",i.crossTrackError())("compassHeading",i.heading())("headingDirectionTrue",i.widgetProperties.config.autopilot.headingDirectionTrue)("appWindAngle",i.windAngleApparent())("rudderAngle",i.rudder()),w(),se("visibility",i.countdownOverlayVisibility()),w(2),L("innerHTML",i.countdownOverlayText(),kn),w(),se("visibility",i.countDownValue>=0?"visible":"hidden"),L("innerHTML",i.countDownValue+1,kn),w(),se("visibility",i.errorOverlayVisibility()),w(4),L("innerHTML",i.errorOverlayText(),kn),w(),se("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(6),se("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(6),se("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(7),se("display",i.adjustHdgBtnVisibility()||i.apMode()==="nav"&&i.dodgeModeActive()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(7),se("display",i.tackBtnVisibility()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(9),se("display",i.tackBtnVisibility()?"block":"none"),w(),L("disabled",i.apBtnDisabled()),w(8),se("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),w(),L("widgetProperties",i.nextWptProperties()),w(),se("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),w(),L("widgetProperties",i.etaProperties()),w(),se("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),w(),L("widgetProperties",i.dtwProperties()),w(),se("display",i.routeBtnVisibility()&&!i.dodgeModeActive()?"block":"none"),w(),L("widgetProperties",i.ttwProperties()),w(),se("display",i.routeBtnVisibility()?"block":"none"),w(),Le(i.widgetProperties.config.autopilot.apiVersion==="v2"?83:-1),w(),se("display",i.routeBtnVisibility()?"block":"none"),w(),L("disabled",i.apBtnDisabled()||i.dodgeModeActive()),w(7),Le(i.menuOpen()?92:-1),w(),Le(i.dashboard.isDashboardStatic()?-1:93))},dependencies:[me,es,Bt,wt,yt,bt,Qr,ia,Kn,Jn,Qo],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 is={modes:{point(n,a){return na(n,a,{intersect:!0})},nearest(n,a,e){return zd(n,a,e)},x(n,a,e){return na(n,a,{intersect:e.intersect,axis:"x"})},y(n,a,e){return na(n,a,{intersect:e.intersect,axis:"y"})}}};function Ja(n,a,e){return(is.modes[e.mode]||is.modes.nearest)(n,a,e)}function Ld(n,a,e){return e!=="x"&&e!=="y"?n.inRange(a.x,a.y,"x",!0)||n.inRange(a.x,a.y,"y",!0):n.inRange(a.x,a.y,e,!0)}function Vd(n,a,e){return e==="x"?{x:n.x,y:a.y}:e==="y"?{x:a.x,y:n.y}:a}function na(n,a,e){return n.filter(t=>e.intersect?t.inRange(a.x,a.y):Ld(t,a,e.axis))}function zd(n,a,e){let t=Number.POSITIVE_INFINITY;return na(n,a,e).reduce((i,o)=>{let r=o.getCenterPoint(),s=Vd(a,r,e.axis),h=on(a,s);return h<t?(i=[o],t=h):h===t&&i.push(o),i},[]).sort((i,o)=>i._index-o._index).slice(0,1)}function mi(n,a,e){let t=Math.cos(e),i=Math.sin(e),o=a.x,r=a.y;return{x:o+t*(n.x-o)-i*(n.y-r),y:r+i*(n.x-o)+t*(n.y-r)}}var Bd=(n,a)=>a>n||n.length>a.length&&n.slice(0,a.length)===a,di=.001,oa=(n,a,e)=>Math.min(e,Math.max(a,n)),xs=(n,a)=>n.value>=n.start-a&&n.value<=n.end+a;function Hd(n,a,e){for(let t of Object.keys(n))n[t]=oa(n[t],a,e);return n}function Fd(n,a,e,t){return!n||!a||e<=0?!1:Math.pow(n.x-a.x,2)+Math.pow(n.y-a.y,2)<=Math.pow(e+t,2)}function ks(n,{x:a,y:e,x2:t,y2:i},o,{borderWidth:r,hitTolerance:s}){let h=(r+s)/2,m=n.x>=a-h-di&&n.x<=t+h+di,u=n.y>=e-h-di&&n.y<=i+h+di;return o==="x"?m:(o==="y"||m)&&u}function Ss(n,{rect:a,center:e},t,{rotation:i,borderWidth:o,hitTolerance:r}){let s=mi(n,e,Tt(-i));return ks(s,a,t,{borderWidth:o,hitTolerance:r})}function gi(n,a){let{centerX:e,centerY:t}=n.getProps(["centerX","centerY"],a);return{x:e,y:t}}function Ud(n,a,e,t=!0){let i=e.split("."),o=0;for(let r of a.split(".")){let s=i[o++];if(parseInt(r,10)<parseInt(s,10))break;if(Bd(s,r)){if(t)throw new Error(`${n} v${e} is not supported. v${a} or newer is required.`);return!1}}return!0}var _s=n=>typeof n=="string"&&n.endsWith("%"),Ts=n=>parseFloat(n)/100,Es=n=>oa(Ts(n),0,1),dn=(n,a)=>({x:n,y:a,x2:n,y2:a,width:0,height:0}),Gd={box:n=>dn(n.centerX,n.centerY),doughnutLabel:n=>dn(n.centerX,n.centerY),ellipse:n=>({centerX:n.centerX,centerY:n.centerX,radius:0,width:0,height:0}),label:n=>dn(n.centerX,n.centerY),line:n=>dn(n.x,n.y),point:n=>({centerX:n.centerX,centerY:n.centerY,radius:0,width:0,height:0}),polygon:n=>dn(n.centerX,n.centerY)};function eo(n,a){return a==="start"?0:a==="end"?n:_s(a)?Es(a)*n:n/2}function Xt(n,a,e=!0){return typeof a=="number"?a:_s(a)?(e?Es(a):Ts(a))*n:n}function qd(n,a){let{x:e,width:t}=n,i=a.textAlign;return i==="center"?e+t/2:i==="end"||i==="right"?e+t:e}function Ds(n,a,{borderWidth:e,position:t,xAdjust:i,yAdjust:o},r){let s=Ut(r),h=a.width+(s?r.width:0)+e,m=a.height+(s?r.height:0)+e,u=to(t),v=ns(n.x,h,i,u.x),x=ns(n.y,m,o,u.y);return{x:v,y:x,x2:v+h,y2:x+m,width:h,height:m,centerX:v+h/2,centerY:x+m/2}}function to(n,a="center"){return Ut(n)?{x:ai(n.x,a),y:ai(n.y,a)}:(n=ai(n,a),{x:n,y:n})}var Ms=(n,a)=>n&&n.autoFit&&a<1;function Ps(n,a){let e=n.font,t=Ft(e)?e:[e];return Ms(n,a)?t.map(function(i){let o=rn(i);return o.size=Math.floor(i.size*a),o.lineHeight=i.lineHeight,rn(o)}):t.map(i=>rn(i))}function As(n){return n&&(_t(n.xValue)||_t(n.yValue))}function ns(n,a,e=0,t){return n-eo(a,t)+e}function Ui(n,a,e){let t=e.init;if(t){if(t===!0)return Os(a,e)}else return;return jd(n,a,e)}function Ws(n,a,e){let t=!1;return a.forEach(i=>{Gt(n[i])?(t=!0,e[i]=n[i]):_t(e[i])&&delete e[i]}),t}function Os(n,a){let e=a.type||"line";return Gd[e](n)}function jd(n,a,e){let t=an(e.init,[{chart:n,properties:a,options:e}]);if(t===!0)return Os(a,e);if(Ut(t))return t}var qa=new Map,$d=n=>isNaN(n)||n<=0,Yd=n=>n.reduce(function(a,e){return a+=e.string,a},"");function ra(n){if(n&&typeof n=="object"){let a=n.toString();return a==="[object HTMLImageElement]"||a==="[object HTMLCanvasElement]"}}function sa(n,{x:a,y:e},t){t&&(n.translate(a,e),n.rotate(Tt(t)),n.translate(-a,-e))}function Ot(n,a){if(a&&a.borderWidth)return n.lineCap=a.borderCapStyle||"butt",n.setLineDash(a.borderDash),n.lineDashOffset=a.borderDashOffset,n.lineJoin=a.borderJoinStyle||"miter",n.lineWidth=a.borderWidth,n.strokeStyle=a.borderColor,!0}function Gi(n,a){n.shadowColor=a.backgroundShadowColor,n.shadowBlur=a.shadowBlur,n.shadowOffsetX=a.shadowOffsetX,n.shadowOffsetY=a.shadowOffsetY}function la(n,a){let e=a.content;if(ra(e))return{width:Xt(e.width,a.width),height:Xt(e.height,a.height)};let t=Ps(a),i=a.textStrokeWidth,o=Ft(e)?e:[e],r=o.join()+Yd(t)+i+(n._measureText?"-spriting":"");return qa.has(r)||qa.set(r,Kd(n,o,t,i)),qa.get(r)}function Rs(n,a,e){let{x:t,y:i,width:o,height:r}=a;n.save(),Gi(n,e);let s=Ot(n,e);n.fillStyle=e.backgroundColor,n.beginPath(),Wa(n,{x:t,y:i,w:o,h:r,radius:Hd(Oa(e.borderRadius),0,Math.min(o,r)/2)}),n.closePath(),n.fill(),s&&(n.shadowColor=e.borderShadowColor,n.stroke()),n.restore()}function Is(n,a,e,t){let i=e.content;if(ra(i)){n.save(),n.globalAlpha=th(e.opacity,i.style.opacity),n.drawImage(i,a.x,a.y,a.width,a.height),n.restore();return}let o=Ft(i)?i:[i],r=Ps(e,t),s=e.color,h=Ft(s)?s:[s],m=qd(a,e),u=a.y+e.textStrokeWidth/2;n.save(),n.textBaseline="middle",n.textAlign=e.textAlign,Xd(n,e)&&Jd(n,{x:m,y:u},o,r),eh(n,{x:m,y:u},o,{fonts:r,colors:h}),n.restore()}function Xd(n,a){if(a.textStrokeWidth>0)return n.lineJoin="round",n.miterLimit=2,n.lineWidth=a.textStrokeWidth,n.strokeStyle=a.textStrokeColor,!0}function Qd(n,a,e,t){let{radius:i,options:o}=a,r=o.pointStyle,s=o.rotation,h=(s||0)*Vn;if(ra(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}$d(i)||Zd(n,{x:e,y:t,radius:i,rotation:s,style:r,rad:h})}function Zd(n,{x:a,y:e,radius:t,rotation:i,style:o,rad:r}){let s,h,m,u;switch(n.beginPath(),o){default:n.arc(a,e,t,0,Ln),n.closePath();break;case"triangle":n.moveTo(a+Math.sin(r)*t,e-Math.cos(r)*t),r+=zn,n.lineTo(a+Math.sin(r)*t,e-Math.cos(r)*t),r+=zn,n.lineTo(a+Math.sin(r)*t,e-Math.cos(r)*t),n.closePath();break;case"rectRounded":u=t*.516,m=t-u,s=Math.cos(r+oi)*m,h=Math.sin(r+oi)*m,n.arc(a-s,e-h,u,r-ft,r-_i),n.arc(a+h,e-s,u,r-_i,r),n.arc(a+s,e+h,u,r,r+_i),n.arc(a-h,e+s,u,r+_i,r+ft),n.closePath();break;case"rect":if(!i){m=Math.SQRT1_2*t,n.rect(a-m,e-m,2*m,2*m);break}r+=oi;case"rectRot":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(a-s,e-h),n.lineTo(a+h,e-s),n.lineTo(a+s,e+h),n.lineTo(a-h,e+s),n.closePath();break;case"crossRot":r+=oi;case"cross":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(a-s,e-h),n.lineTo(a+s,e+h),n.moveTo(a+h,e-s),n.lineTo(a-h,e+s);break;case"star":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(a-s,e-h),n.lineTo(a+s,e+h),n.moveTo(a+h,e-s),n.lineTo(a-h,e+s),r+=oi,s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(a-s,e-h),n.lineTo(a+s,e+h),n.moveTo(a+h,e-s),n.lineTo(a-h,e+s);break;case"line":s=Math.cos(r)*t,h=Math.sin(r)*t,n.moveTo(a-s,e-h),n.lineTo(a+s,e+h);break;case"dash":n.moveTo(a,e),n.lineTo(a+Math.cos(r)*t,e+Math.sin(r)*t);break}n.fill()}function Kd(n,a,e,t){n.save();let i=a.length,o=0,r=t;for(let s=0;s<i;s++){let h=e[Math.min(s,e.length-1)];n.font=h.string;let m=a[s];o=Math.max(o,n.measureText(m).width+t),r+=h.lineHeight}return n.restore(),{width:o,height:r}}function Jd(n,{x:a,y:e},t,i){n.beginPath();let o=0;t.forEach(function(r,s){let h=i[Math.min(s,i.length-1)],m=h.lineHeight;n.font=h.string,n.strokeText(r,a,e+m/2+o),o+=m}),n.stroke()}function eh(n,{x:a,y:e},t,{fonts:i,colors:o}){let r=0;t.forEach(function(s,h){let m=o[Math.min(h,o.length-1)],u=i[Math.min(h,i.length-1)],v=u.lineHeight;n.beginPath(),n.font=u.string,n.fillStyle=m,n.fillText(s,a,e+v/2+r),r+=v,n.fill()})}function th(n,a){let e=Bn(n)?n:a;return Bn(e)?oa(e,0,1):1}var Ns=["left","bottom","top","right"];function ih(n,a){let{pointX:e,pointY:t,options:i}=a,o=i.callout,r=o&&o.display&&sh(a,o);if(!r||dh(a,o,r))return;if(n.save(),n.beginPath(),!Ot(n,o))return n.restore();let{separatorStart:h,separatorEnd:m}=nh(a,r),{sideStart:u,sideEnd:v}=oh(a,r,h);(o.margin>0||i.borderWidth===0)&&(n.moveTo(h.x,h.y),n.lineTo(m.x,m.y)),n.moveTo(u.x,u.y),n.lineTo(v.x,v.y);let x=mi({x:e,y:t},a.getCenterPoint(),Tt(-a.rotation));n.lineTo(x.x,x.y),n.stroke(),n.restore()}function nh(n,a){let{x:e,y:t,x2:i,y2:o}=n,r=ah(n,a),s,h;return a==="left"||a==="right"?(s={x:e+r,y:t},h={x:s.x,y:o}):(s={x:e,y:t+r},h={x:i,y:s.y}),{separatorStart:s,separatorEnd:h}}function ah(n,a){let{width:e,height:t,options:i}=n,o=i.callout.margin+i.borderWidth/2;return a==="right"?e+o:a==="bottom"?t+o:-o}function oh(n,a,e){let{y:t,width:i,height:o,options:r}=n,s=r.callout.start,h=rh(a,r.callout),m,u;return a==="left"||a==="right"?(m={x:e.x,y:t+Xt(o,s)},u={x:m.x+h,y:m.y}):(m={x:e.x+Xt(i,s),y:e.y},u={x:m.x,y:m.y+h}),{sideStart:m,sideEnd:u}}function rh(n,a){let e=a.side;return n==="left"||n==="top"?-e:e}function sh(n,a){let e=a.position;return Ns.includes(e)?e:lh(n,a)}function lh(n,a){let{x:e,y:t,x2:i,y2:o,width:r,height:s,pointX:h,pointY:m,centerX:u,centerY:v,rotation:x}=n,S={x:u,y:v},_=a.start,B=Xt(r,_),re=Xt(s,_),ge=[e,e+B,e+B,i],ae=[t+re,o,t,o],Se=[];for(let Fe=0;Fe<4;Fe++){let _e=mi({x:ge[Fe],y:ae[Fe]},S,Tt(x));Se.push({position:Ns[Fe],distance:on(_e,{x:h,y:m})})}return Se.sort((Fe,_e)=>Fe.distance-_e.distance)[0].position}function dh(n,a,e){let{pointX:t,pointY:i}=n,o=a.margin,r=t,s=i;return e==="left"?r+=o:e==="right"?r-=o:e==="top"?s+=o:e==="bottom"&&(s-=o),n.inRange(r,s)}var as={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 zi(n,a,e){return a=typeof a=="number"?a:n.parse(a),Nn(a)?n.getPixelForValue(a):e}function hi(n,a,e){let t=a[e];if(t||e==="scaleID")return t;let i=e.charAt(0),o=Object.values(n).filter(r=>r.axis&&r.axis===i);return o.length?o[0].id:i}function Ls(n,a){if(n){let e=n.options.reverse,t=zi(n,a.min,e?a.end:a.start),i=zi(n,a.max,e?a.start:a.end);return{start:t,end:i}}}function Vs(n,a){let{chartArea:e,scales:t}=n,i=t[hi(t,a,"xScaleID")],o=t[hi(t,a,"yScaleID")],r=e.width/2,s=e.height/2;return i&&(r=zi(i,a.xValue,i.left+i.width/2)),o&&(s=zi(o,a.yValue,o.top+o.height/2)),{x:r,y:s}}function io(n,a){let e=n.scales,t=e[hi(e,a,"xScaleID")],i=e[hi(e,a,"yScaleID")];if(!t&&!i)return{};let{left:o,right:r}=t||n.chartArea,{top:s,bottom:h}=i||n.chartArea,m=os(t,{min:a.xMin,max:a.xMax,start:o,end:r});o=m.start,r=m.end;let u=os(i,{min:a.yMin,max:a.yMax,start:h,end:s});return s=u.start,h=u.end,{x:o,y:s,x2:r,y2:h,width:r-o,height:h-s,centerX:o+(r-o)/2,centerY:s+(h-s)/2}}function zs(n,a){if(!As(a)){let e=io(n,a),t=a.radius;(!t||isNaN(t))&&(t=Math.min(e.width,e.height)/2,a.radius=t);let i=t*2,o=e.centerX+a.xAdjust,r=e.centerY+a.yAdjust;return{x:o-t,y:r-t,x2:o+t,y2:r+t,centerX:o,centerY:r,width:i,height:i,radius:t}}return ch(n,a)}function hh(n,a){let{scales:e,chartArea:t}=n,i=e[a.scaleID],o={x:t.left,y:t.top,x2:t.right,y2:t.bottom};return i?uh(i,o,a):mh(e,o,a),o}function Bs(n,a){let e=io(n,a);return e.initProperties=Ui(n,e,a),e.elements=[{type:"label",optionScope:"label",properties:fh(n,e,a),initProperties:e.initProperties}],e}function ch(n,a){let e=Vs(n,a),t=a.radius*2;return{x:e.x-a.radius+a.xAdjust,y:e.y-a.radius+a.yAdjust,x2:e.x+a.radius+a.xAdjust,y2:e.y+a.radius+a.yAdjust,centerX:e.x+a.xAdjust,centerY:e.y+a.yAdjust,radius:a.radius,width:t,height:t}}function os(n,a){let e=Ls(n,a)||a;return{start:Math.min(e.start,e.end),end:Math.max(e.start,e.end)}}function uh(n,a,e){let t=zi(n,e.value,NaN),i=zi(n,e.endValue,t);n.isHorizontal()?(a.x=t,a.x2=i):(a.y=t,a.y2=i)}function mh(n,a,e){for(let t of Object.keys(as)){let i=n[hi(n,e,t)];if(i){let{min:o,max:r,start:s,end:h,startProp:m,endProp:u}=as[t],v=Ls(i,{min:e[o],max:e[r],start:i[s],end:i[h]});a[m]=v.start,a[u]=v.end}}}function gh({properties:n,options:a},e,t,i){let{x:o,x2:r,width:s}=n;return Hs({start:o,end:r,size:s,borderWidth:a.borderWidth},{position:t.x,padding:{start:i.left,end:i.right},adjust:a.label.xAdjust,size:e.width})}function ph({properties:n,options:a},e,t,i){let{y:o,y2:r,height:s}=n;return Hs({start:o,end:r,size:s,borderWidth:a.borderWidth},{position:t.y,padding:{start:i.top,end:i.bottom},adjust:a.label.yAdjust,size:e.height})}function Hs(n,a){let{start:e,end:t,borderWidth:i}=n,{position:o,padding:{start:r,end:s},adjust:h}=a,m=t-i-e-r-s-a.size;return e+i/2+h+eo(m,o)}function fh(n,a,e){let t=e.label;t.backgroundColor="transparent",t.callout.display=!1;let i=to(t.position),o=Ti(t.padding),r=la(n.ctx,t),s=gh({properties:a,options:e},r,i,o),h=ph({properties:a,options:e},r,i,o),m=r.width+o.width,u=r.height+o.height;return{x:s,y:h,x2:s+m,y2:h+u,width:m,height:u,centerX:s+m/2,centerY:h+u/2,rotation:t.rotation}}var ja=["enter","leave"],no=ja.concat("click");function vh(n,a,e){a.listened=Ws(e,no,a.listeners),a.moveListened=!1,ja.forEach(t=>{Gt(e[t])&&(a.moveListened=!0)}),(!a.listened||!a.moveListened)&&a.annotations.forEach(t=>{!a.listened&&Gt(t.click)&&(a.listened=!0),a.moveListened||ja.forEach(i=>{Gt(t[i])&&(a.listened=!0,a.moveListened=!0)})})}function bh(n,a,e){if(n.listened)switch(a.type){case"mousemove":case"mouseout":return yh(n,a,e);case"click":return wh(n,a,e)}}function yh(n,a,e){if(!n.moveListened)return;let t;a.type==="mousemove"?t=Ja(n.visibleElements,a,e.interaction):t=[];let i=n.hovered;n.hovered=t;let o={state:n,event:a},r=rs(o,"leave",i,t);return rs(o,"enter",t,i)||r}function rs({state:n,event:a},e,t,i){let o;for(let r of t)i.indexOf(r)<0&&(o=Fs(r.options[e]||n.listeners[e],r,a)||o);return o}function wh(n,a,e){let t=n.listeners,i=Ja(n.visibleElements,a,e.interaction),o;for(let r of i)o=Fs(r.options.click||t.click,r,a)||o;return o}function Fs(n,a,e){return an(n,[a.$context,e])===!0}var aa=["afterDraw","beforeDraw"];function Ch(n,a,e){let t=a.visibleElements;a.hooked=Ws(e,aa,a.hooks),a.hooked||t.forEach(i=>{a.hooked||aa.forEach(o=>{Gt(i.options[o])&&(a.hooked=!0)})})}function ss(n,a,e){if(n.hooked){let t=a.options[e]||n.hooks[e];return an(t,[a.$context])}}function xh(n,a,e){let t=Eh(n.scales,a,e),i=ls(a,t,"min","suggestedMin");i=ls(a,t,"max","suggestedMax")||i,i&&Gt(a.handleTickRangeOptions)&&a.handleTickRangeOptions()}function kh(n,a){for(let e of n)_h(e,a)}function ls(n,a,e,t){if(Nn(a[e])&&!Sh(n.options,e,t)){let i=n[e]!==a[e];return n[e]=a[e],i}}function Sh(n,a,e){return _t(n[a])||_t(n[e])}function _h(n,a){for(let e of["scaleID","xScaleID","yScaleID"]){let t=hi(a,n,e);t&&!a[t]&&Th(n,e)&&console.warn(`No scale found with id '${t}' for annotation '${n.id}'`)}}function Th(n,a){if(a==="scaleID")return!0;let e=a.charAt(0);for(let t of["Min","Max","Value"])if(_t(n[e+t]))return!0;return!1}function Eh(n,a,e){let t=a.axis,i=a.id,o=t+"ScaleID",r={min:ai(a.min,Number.NEGATIVE_INFINITY),max:ai(a.max,Number.POSITIVE_INFINITY)};for(let s of e)s.scaleID===i?ds(s,a,["value","endValue"],r):hi(n,s,o)===i&&ds(s,a,[t+"Min",t+"Max",t+"Value"],r);return r}function ds(n,a,e,t){for(let i of e){let o=n[i];if(_t(o)){let r=a.parse(o);t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}}}var Qt=class extends qt{inRange(a,e,t,i){let{x:o,y:r}=mi({x:a,y:e},this.getCenterPoint(i),Tt(-this.options.rotation));return ks({x:o,y:r},this.getProps(["x","y","x2","y2"],i),t,this.options)}getCenterPoint(a){return gi(this,a)}draw(a){a.save(),sa(a,this.getCenterPoint(),this.options.rotation),Rs(a,this,this.options),a.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(a,e){return Bs(a,e)}};Qt.id="boxAnnotation";Qt.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};Qt.defaultRoutes={borderColor:"color",backgroundColor:"color"};Qt.descriptors={label:{_fallback:!0}};var Bi=class extends qt{inRange(a,e,t,i){return Ss({x:a,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(a){return gi(this,a)}draw(a){let e=this.options;!e.display||!e.content||(Oh(a,this),a.save(),sa(a,this.getCenterPoint(),this.rotation),Is(a,this,e,this._fitRatio),a.restore())}resolveElementProperties(a,e){let t=Dh(a,e);if(!t)return{};let{controllerMeta:i,point:o,radius:r}=Ph(a,e,t),s=la(a.ctx,e),h=Ah(s,r);Ms(e,h)&&(s={width:s.width*h,height:s.height*h});let{position:m,xAdjust:u,yAdjust:v}=e,x=Ds(o,s,{borderWidth:0,position:m,xAdjust:u,yAdjust:v});return je(Q(Q({initProperties:Ui(a,x,e)},x),i),{rotation:e.rotation,_fitRatio:h})}};Bi.id="doughnutLabelAnnotation";Bi.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};Bi.defaultRoutes={};function Dh(n,a){return n.getSortedVisibleDatasetMetas().reduce(function(e,t){let i=t.controller;return i instanceof Dr&&Mh(n,a,t.data)&&(!e||i.innerRadius<e.controller.innerRadius)&&i.options.circumference>=90?t:e},void 0)}function Mh(n,a,e){if(!a.autoHide)return!0;for(let t=0;t<e.length;t++)if(!e[t].hidden&&n.getDataVisibility(t))return!0}function Ph({chartArea:n},a,e){let{left:t,top:i,right:o,bottom:r}=n,{innerRadius:s,offsetX:h,offsetY:m}=e.controller,u=(t+o)/2+h,v=(i+r)/2+m,x={left:Math.max(u-s,t),right:Math.min(u+s,o),top:Math.max(v-s,i),bottom:Math.min(v+s,r)},S={x:(x.left+x.right)/2,y:(x.top+x.bottom)/2},_=a.spacing+a.borderWidth/2,B=s-_,re=S.y>v,ge=re?i+_:r-_,ae=Wh(ge,u,v,B);return{controllerMeta:Q({_centerX:u,_centerY:v,_radius:B,_counterclockwise:re},ae),point:S,radius:Math.min(s,Math.min(x.right-x.left,x.bottom-x.top)/2)}}function Ah({width:n,height:a},e){let t=Math.sqrt(Math.pow(n,2)+Math.pow(a,2));return e*2/t}function Wh(n,a,e,t){let i=Math.pow(e-n,2),o=Math.pow(t,2),r=a*-2,s=Math.pow(a,2)+i-o,h=Math.pow(r,2)-4*s;if(h<=0)return{_startAngle:0,_endAngle:Ln};let m=(-r-Math.sqrt(h))/2,u=(-r+Math.sqrt(h))/2;return{_startAngle:Hn({x:a,y:e},{x:m,y:n}).angle,_endAngle:Hn({x:a,y:e},{x:u,y:n}).angle}}function Oh(n,a){let{_centerX:e,_centerY:t,_radius:i,_startAngle:o,_endAngle:r,_counterclockwise:s,options:h}=a;n.save();let m=Ot(n,h);n.fillStyle=h.backgroundColor,n.beginPath(),n.arc(e,t,i,o,r,s),n.closePath(),n.fill(),m&&n.stroke(),n.restore()}var ci=class extends qt{inRange(a,e,t,i){return Ss({x:a,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(a){return gi(this,a)}draw(a){let e=this.options,t=!_t(this._visible)||this._visible;!e.display||!e.content||!t||(a.save(),sa(a,this.getCenterPoint(),this.rotation),ih(a,this),Rs(a,this,e),Is(a,Rh(this),e),a.restore())}resolveElementProperties(a,e){let t;if(As(e))t=Vs(a,e);else{let{centerX:s,centerY:h}=io(a,e);t={x:s,y:h}}let i=Ti(e.padding),o=la(a.ctx,e),r=Ds(t,o,e,i);return je(Q({initProperties:Ui(a,r,e),pointX:t.x,pointY:t.y},r),{rotation:e.rotation})}};ci.id="labelAnnotation";ci.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};ci.defaultRoutes={borderColor:"color"};function Rh({x:n,y:a,width:e,height:t,options:i}){let o=i.borderWidth/2,r=Ti(i.padding);return{x:n+r.left+o,y:a+r.top+o,width:e-r.left-r.right-i.borderWidth,height:t-r.top-r.bottom-i.borderWidth}}var ao=(n,a,e)=>({x:n.x+e*(a.x-n.x),y:n.y+e*(a.y-n.y)}),$a=(n,a,e)=>ao(a,e,Math.abs((n-a.y)/(e.y-a.y))).x,hs=(n,a,e)=>ao(a,e,Math.abs((n-a.x)/(e.x-a.x))).y,cn=n=>n*n,Ih=(n,a,{x:e,y:t,x2:i,y2:o},r)=>r==="y"?{start:Math.min(t,o),end:Math.max(t,o),value:a}:{start:Math.min(e,i),end:Math.max(e,i),value:n},cs=(n,a,e,t)=>(1-t)*(1-t)*n+2*(1-t)*t*a+t*t*e,Ya=(n,a,e,t)=>({x:cs(n.x,a.x,e.x,t),y:cs(n.y,a.y,e.y,t)}),us=(n,a,e,t)=>2*(1-t)*(a-n)+2*t*(e-a),ms=(n,a,e,t)=>-Math.atan2(us(n.x,a.x,e.x,t),us(n.y,a.y,e.y,t))+.5*ft,da=(()=>{class n extends qt{inRange(e,t,i,o){let r=(this.options.borderWidth+this.options.hitTolerance)/2;if(i!=="x"&&i!=="y"){let s={mouseX:e,mouseY:t},{path:h,ctx:m}=this;if(h){Ot(m,this.options),m.lineWidth+=this.options.hitTolerance;let{chart:v}=this.$context,x=e*v.currentDevicePixelRatio,S=t*v.currentDevicePixelRatio,_=m.isPointInStroke(h,x,S)||Xa(this,s,o);return m.restore(),_}let u=cn(r);return zh(this,s,u,o)||Xa(this,s,o)}return Nh(this,{mouseX:e,mouseY:t},i,{hitSize:r,useFinalPosition:o})}getCenterPoint(e){return gi(this,e)}draw(e){let{x:t,y:i,x2:o,y2:r,cp:s,options:h}=this;if(e.save(),!Ot(e,h))return e.restore();Gi(e,h);let m=Math.sqrt(Math.pow(o-t,2)+Math.pow(r-i,2));if(h.curve&&s)return $h(e,this,s,m),e.restore();let{startOpts:u,endOpts:v,startAdjust:x,endAdjust:S}=Us(this),_=Math.atan2(r-i,o-t);e.translate(t,i),e.rotate(_),e.beginPath(),e.moveTo(0+x,0),e.lineTo(m-S,0),e.shadowColor=h.borderShadowColor,e.stroke(),Qa(e,0,x,u),Qa(e,m,-S,v),e.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(e,t){let i=hh(e,t),{x:o,y:r,x2:s,y2:h}=i,m=Lh(i,e.chartArea),u=m?Vh({x:o,y:r},{x:s,y:h},e.chartArea):{x:o,y:r,x2:s,y2:h,width:Math.abs(s-o),height:Math.abs(h-r)};if(u.centerX=(s+o)/2,u.centerY=(h+r)/2,u.initProperties=Ui(e,u,t),t.curve){let x={x:u.x,y:u.y},S={x:u.x2,y:u.y2};u.cp=jh(u,t,on(x,S))}let v=Bh(e,u,t.label);return v._visible=m,u.elements=[{type:"label",optionScope:"label",properties:v,initProperties:u.initProperties}],u}}return n.id="lineAnnotation",n})(),gs={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};da.defaults={adjustScaleRange:!0,arrowHeads:{display:!1,end:Object.assign({},gs),fill:!1,length:12,start:Object.assign({},gs),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({},ci.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};da.descriptors={arrowHeads:{start:{_fallback:!0},end:{_fallback:!0},_fallback:!0}};da.defaultRoutes={borderColor:"color"};function Nh(n,{mouseX:a,mouseY:e},t,{hitSize:i,useFinalPosition:o}){let r=Ih(a,e,n.getProps(["x","y","x2","y2"],o),t);return xs(r,i)||Xa(n,{mouseX:a,mouseY:e},o,t)}function Lh({x:n,y:a,x2:e,y2:t},{top:i,right:o,bottom:r,left:s}){return!(n<s&&e<s||n>o&&e>o||a<i&&t<i||a>r&&t>r)}function ps({x:n,y:a},e,{top:t,right:i,bottom:o,left:r}){return n<r&&(a=hs(r,{x:n,y:a},e),n=r),n>i&&(a=hs(i,{x:n,y:a},e),n=i),a<t&&(n=$a(t,{x:n,y:a},e),a=t),a>o&&(n=$a(o,{x:n,y:a},e),a=o),{x:n,y:a}}function Vh(n,a,e){let{x:t,y:i}=ps(n,a,e),{x:o,y:r}=ps(a,n,e);return{x:t,y:i,x2:o,y2:r,width:Math.abs(o-t),height:Math.abs(r-i)}}function zh(n,{mouseX:a,mouseY:e},t=di,i){let{x:o,y:r,x2:s,y2:h}=n.getProps(["x","y","x2","y2"],i),m=s-o,u=h-r,v=cn(m)+cn(u),x=v===0?-1:((a-o)*m+(e-r)*u)/v,S,_;return x<0?(S=o,_=r):x>1?(S=s,_=h):(S=o+x*m,_=r+x*u),cn(a-S)+cn(e-_)<=t}function Xa(n,{mouseX:a,mouseY:e},t,i){let o=n.label;return o.options.display&&o.inRange(a,e,i,t)}function Bh(n,a,e){let t=e.borderWidth,i=Ti(e.padding),o=la(n.ctx,e),r=o.width+i.width+t,s=o.height+i.height+t;return Fh(a,e,{width:r,height:s,padding:i},n.chartArea)}function Hh(n){let{x:a,y:e,x2:t,y2:i}=n,o=Math.atan2(i-e,t-a);return o>ft/2?o-ft:o<ft/-2?o+ft:o}function Fh(n,a,e,t){let{width:i,height:o,padding:r}=e,{xAdjust:s,yAdjust:h}=a,m={x:n.x,y:n.y},u={x:n.x2,y:n.y2},v=a.rotation==="auto"?Hh(n):Tt(a.rotation),x=Uh(i,o,v),S=Gh(n,a,{labelSize:x,padding:r},t),_=n.cp?Ya(m,n.cp,u,S):ao(m,u,S),B={size:x.w,min:t.left,max:t.right,padding:r.left},re={size:x.h,min:t.top,max:t.bottom,padding:r.top},ge=vs(_.x,B)+s,ae=vs(_.y,re)+h;return{x:ge-i/2,y:ae-o/2,x2:ge+i/2,y2:ae+o/2,centerX:ge,centerY:ae,pointX:_.x,pointY:_.y,width:i,height:o,rotation:Ma(v)}}function Uh(n,a,e){let t=Math.cos(e),i=Math.sin(e);return{w:Math.abs(n*t)+Math.abs(a*i),h:Math.abs(n*i)+Math.abs(a*t)}}function Gh(n,a,e,t){let i,o=qh(n,t);return a.position==="start"?i=fs({w:n.x2-n.x,h:n.y2-n.y},e,a,o):a.position==="end"?i=1-fs({w:n.x-n.x2,h:n.y-n.y2},e,a,o):i=eo(1,a.position),i}function fs(n,a,e,t){let{labelSize:i,padding:o}=a,r=n.w*t.dx,s=n.h*t.dy,h=r>0&&(i.w/2+o.left-t.x)/r,m=s>0&&(i.h/2+o.top-t.y)/s;return oa(Math.max(h,m),0,.25)}function qh(n,a){let{x:e,x2:t,y:i,y2:o}=n,r=Math.min(i,o)-a.top,s=Math.min(e,t)-a.left,h=a.bottom-Math.max(i,o),m=a.right-Math.max(e,t);return{x:Math.min(s,m),y:Math.min(r,h),dx:s<=m?1:-1,dy:r<=h?1:-1}}function vs(n,a){let{size:e,min:t,max:i,padding:o}=a,r=e/2;return e>i-t?(i+t)/2:(t>=n-o-r&&(n=t+o+r),i<=n+o+r&&(n=i-o-r),n)}function Us(n){let a=n.options,e=a.arrowHeads&&a.arrowHeads.start,t=a.arrowHeads&&a.arrowHeads.end;return{startOpts:e,endOpts:t,startAdjust:bs(n,e),endAdjust:bs(n,t)}}function bs(n,a){if(!a||!a.display)return 0;let{length:e,width:t}=a,i=n.options.borderWidth/2,o={x:e,y:t+i};return Math.abs($a(0,o,{x:0,y:i}))}function Qa(n,a,e,t){if(!t||!t.display)return;let{length:i,width:o,fill:r,backgroundColor:s,borderColor:h}=t,m=Math.abs(a-i)+e;n.beginPath(),Gi(n,t),Ot(n,t),n.moveTo(m,-o),n.lineTo(a+e,0),n.lineTo(m,o),r===!0?(n.fillStyle=s||h,n.closePath(),n.fill(),n.shadowColor="transparent"):n.shadowColor=t.borderShadowColor,n.stroke()}function jh(n,a,e){let{x:t,y:i,x2:o,y2:r,centerX:s,centerY:h}=n,m=Math.atan2(r-i,o-t),u=to(a.controlPoint,0),v={x:s+Xt(e,u.x,!1),y:h+Xt(e,u.y,!1)};return mi(v,{x:s,y:h},m)}function ys(n,{x:a,y:e},{angle:t,adjust:i},o){!o||!o.display||(n.save(),n.translate(a,e),n.rotate(t),Qa(n,0,-i,o),n.restore())}function $h(n,a,e,t){let{x:i,y:o,x2:r,y2:s,options:h}=a,{startOpts:m,endOpts:u,startAdjust:v,endAdjust:x}=Us(a),S={x:i,y:o},_={x:r,y:s},B=ms(S,e,_,0),re=ms(S,e,_,1)-ft,ge=Ya(S,e,_,v/t),ae=Ya(S,e,_,1-x/t),Se=new Path2D;n.beginPath(),Se.moveTo(ge.x,ge.y),Se.quadraticCurveTo(e.x,e.y,ae.x,ae.y),n.shadowColor=h.borderShadowColor,n.stroke(Se),a.path=Se,a.ctx=n,ys(n,ge,{angle:B,adjust:v},m),ys(n,ae,{angle:re,adjust:x},u)}var ui=class extends qt{inRange(a,e,t,i){let o=this.options.rotation,r=(this.options.borderWidth+this.options.hitTolerance)/2;if(t!=="x"&&t!=="y")return Yh({x:a,y:e},this.getProps(["width","height","centerX","centerY"],i),o,r);let{x:s,y:h,x2:m,y2:u}=this.getProps(["x","y","x2","y2"],i),v=t==="y"?{start:h,end:u}:{start:s,end:m},x=mi({x:a,y:e},this.getCenterPoint(i),Tt(-o));return x[t]>=v.start-r-di&&x[t]<=v.end+r+di}getCenterPoint(a){return gi(this,a)}draw(a){let{width:e,height:t,centerX:i,centerY:o,options:r}=this;a.save(),sa(a,this.getCenterPoint(),r.rotation),Gi(a,this.options),a.beginPath(),a.fillStyle=r.backgroundColor;let s=Ot(a,r);a.ellipse(i,o,t/2,e/2,ft/2,0,2*ft),a.fill(),s&&(a.shadowColor=r.borderShadowColor,a.stroke()),a.restore()}get label(){return this.elements&&this.elements[0]}resolveElementProperties(a,e){return Bs(a,e)}};ui.id="ellipseAnnotation";ui.defaults={adjustScaleRange:!0,backgroundShadowColor:"transparent",borderDash:[],borderDashOffset:0,borderShadowColor:"transparent",borderWidth:1,display:!0,hitTolerance:0,init:void 0,label:Object.assign({},Qt.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};ui.defaultRoutes={borderColor:"color",backgroundColor:"color"};ui.descriptors={label:{_fallback:!0}};function Yh(n,a,e,t){let{width:i,height:o,centerX:r,centerY:s}=a,h=i/2,m=o/2;if(h<=0||m<=0)return!1;let u=Tt(e||0),v=Math.cos(u),x=Math.sin(u),S=Math.pow(v*(n.x-r)+x*(n.y-s),2),_=Math.pow(x*(n.x-r)-v*(n.y-s),2);return S/Math.pow(h+t,2)+_/Math.pow(m+t,2)<=1.0001}var Hi=class extends qt{inRange(a,e,t,i){let{x:o,y:r,x2:s,y2:h,width:m}=this.getProps(["x","y","x2","y2","width"],i),u=(this.options.borderWidth+this.options.hitTolerance)/2;return t!=="x"&&t!=="y"?Fd({x:a,y:e},this.getCenterPoint(i),m/2,u):xs(t==="y"?{start:r,end:h,value:e}:{start:o,end:s,value:a},u)}getCenterPoint(a){return gi(this,a)}draw(a){let e=this.options,t=e.borderWidth;if(e.radius<.1)return;a.save(),a.fillStyle=e.backgroundColor,Gi(a,e);let i=Ot(a,e);Qd(a,this,this.centerX,this.centerY),i&&!ra(e.pointStyle)&&(a.shadowColor=e.borderShadowColor,a.stroke()),a.restore(),e.borderWidth=t}resolveElementProperties(a,e){let t=zs(a,e);return t.initProperties=Ui(a,t,e),t}};Hi.id="pointAnnotation";Hi.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};Hi.defaultRoutes={borderColor:"color",backgroundColor:"color"};var Fi=class extends qt{inRange(a,e,t,i){if(t!=="x"&&t!=="y")return this.options.radius>=.1&&this.elements.length>1&&Qh(this.elements,a,e,i);let o=mi({x:a,y:e},this.getCenterPoint(i),Tt(-this.options.rotation)),r=this.elements.map(m=>t==="y"?m.bY:m.bX),s=Math.min(...r),h=Math.max(...r);return o[t]>=s&&o[t]<=h}getCenterPoint(a){return gi(this,a)}draw(a){let{elements:e,options:t}=this;a.save(),a.beginPath(),a.fillStyle=t.backgroundColor,Gi(a,t);let i=Ot(a,t),o=!0;for(let r of e)o?(a.moveTo(r.x,r.y),o=!1):a.lineTo(r.x,r.y);a.closePath(),a.fill(),i&&(a.shadowColor=t.borderShadowColor,a.stroke()),a.restore()}resolveElementProperties(a,e){let t=zs(a,e),{sides:i,rotation:o}=e,r=[],s=2*ft/i,h=o*Vn;for(let m=0;m<i;m++,h+=s){let u=Xh(t,e,h);u.initProperties=Ui(a,t,e),r.push(u)}return t.elements=r,t}};Fi.id="polygonAnnotation";Fi.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};Fi.defaultRoutes={borderColor:"color",backgroundColor:"color"};function Xh({centerX:n,centerY:a},{radius:e,borderWidth:t,hitTolerance:i},o){let r=(t+i)/2,s=Math.sin(o),h=Math.cos(o),m={x:n+s*e,y:a-h*e};return{type:"point",optionScope:"point",properties:{x:m.x,y:m.y,centerX:m.x,centerY:m.y,bX:n+s*(e+r),bY:a-h*(e+r)}}}function Qh(n,a,e,t){let i=!1,o=n[n.length-1].getProps(["bX","bY"],t);for(let r of n){let s=r.getProps(["bX","bY"],t);s.bY>e!=o.bY>e&&a<(o.bX-s.bX)*(e-s.bY)/(o.bY-s.bY)+s.bX&&(i=!i),o=s}return i}var Yt={box:Qt,doughnutLabel:Bi,ellipse:ui,label:ci,line:da,point:Hi,polygon:Fi};Object.keys(Yt).forEach(n=>{Tr.describe(`elements.${Yt[n].id}`,{_fallback:"plugins.annotation.common"})});var Zh={update:Object.assign},Kh=no.concat(aa),ws=(n,a)=>Ut(a)?Ka(n,a):n,Za=n=>n==="color"||n==="font";function oo(n="line"){return Yt[n]?n:(console.warn(`Unknown annotation type: '${n}', defaulting to 'line'`),"line")}function Jh(n,a,e,t){let i=tc(n,e.animations,t),o=a.annotations,r=ac(a.elements,o);for(let s=0;s<o.length;s++){let h=o[s],m=Gs(r,s,h.type),u=h.setContext(nc(n,m,r,h)),v=m.resolveElementProperties(n,u);v.skip=ec(v),"elements"in v&&(ic(m,v.elements,u,i),delete v.elements),_t(m.x)||Object.assign(m,v),Object.assign(m,v.initProperties),v.options=qs(u),i.update(m,v)}}function ec(n){return isNaN(n.x)||isNaN(n.y)}function tc(n,a,e){return e==="reset"||e==="none"||e==="resize"?Zh:new Er(n,a)}function ic(n,a,e,t){let i=n.elements||(n.elements=[]);i.length=a.length;for(let o=0;o<a.length;o++){let r=a[o],s=r.properties,h=Gs(i,o,r.type,r.initProperties),m=e[r.optionScope].override(r);s.options=qs(m),t.update(h,s)}}function Gs(n,a,e,t){let i=Yt[oo(e)],o=n[a];return(!o||!(o instanceof i))&&(o=n[a]=new i,Object.assign(o,t)),o}function qs(n){let a=Yt[oo(n.type)],e={};e.id=n.id,e.type=n.type,e.drawTime=n.drawTime,Object.assign(e,Ka(n,a.defaults),Ka(n,a.defaultRoutes));for(let t of Kh)e[t]=n[t];return e}function Ka(n,a){let e={};for(let t of Object.keys(a)){let i=a[t],o=n[t];Za(t)&&Ft(o)?e[t]=o.map(r=>ws(r,i)):e[t]=ws(o,i)}return e}function nc(n,a,e,t){return a.$context||(a.$context=Object.assign(Object.create(n.getContext()),{element:a,get elements(){return e.filter(i=>i&&i.options)},id:t.id,type:"annotation"}))}function ac(n,a){let e=a.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 oc="3.1.0",$t=new Map,Cs=n=>n.type!=="doughnutLabel",rc=no.concat(aa),js={id:"annotation",version:oc,beforeRegister(){Ud("chart.js","4.0",at.version)},afterRegister(){at.register(Yt)},afterUnregister(){at.unregister(Yt)},beforeInit(n){$t.set(n,{annotations:[],elements:[],visibleElements:[],listeners:{},listened:!1,moveListened:!1,hooks:{},hooked:!1,hovered:[]})},beforeUpdate(n,a,e){let t=$t.get(n),i=t.annotations=[],o=e.annotations;Ut(o)?Object.keys(o).forEach(r=>{let s=o[r];Ut(s)&&(s.id=r,i.push(s))}):Ft(o)&&i.push(...o),kh(i.filter(Cs),n.scales)},afterDataLimits(n,a){let e=$t.get(n);xh(n,a.scale,e.annotations.filter(Cs).filter(t=>t.display&&t.adjustScaleRange))},afterUpdate(n,a,e){let t=$t.get(n);vh(n,t,e),Jh(n,t,e,a.mode),t.visibleElements=t.elements.filter(i=>!i.skip&&i.options.display),Ch(n,t,e)},beforeDatasetsDraw(n,a,e){hn(n,"beforeDatasetsDraw",e.clip)},afterDatasetsDraw(n,a,e){hn(n,"afterDatasetsDraw",e.clip)},beforeDatasetDraw(n,a,e){hn(n,a.index,e.clip)},beforeDraw(n,a,e){hn(n,"beforeDraw",e.clip)},afterDraw(n,a,e){hn(n,"afterDraw",e.clip)},beforeEvent(n,a,e){let t=$t.get(n);bh(t,a.event,e)&&(a.changed=!0)},afterDestroy(n){$t.delete(n)},getAnnotations(n){let a=$t.get(n);return a?a.elements:[]},_getAnnotationElementsAtEventForMode(n,a,e){return Ja(n,a,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=>!rc.includes(n)&&n!=="init",annotations:{_allKeys:!1,_fallback:(n,a)=>`elements.${Yt[oo(a.type)].id}`},interaction:{_fallback:!0},common:{label:{_indexable:Za,_fallback:!0},_indexable:Za}},additionalOptionScopes:[""]};function hn(n,a,e){let{ctx:t,chartArea:i}=n,o=$t.get(n);e&&Pa(t,i);let r=sc(o.visibleElements,a).sort((s,h)=>s.element.options.z-h.element.options.z);for(let s of r)lc(t,i,o,s);e&&Aa(t)}function sc(n,a){let e=[];for(let t of n)if(t.options.drawTime===a&&e.push({element:t,main:!0}),t.elements&&t.elements.length)for(let i of t.elements)i.options.display&&i.options.drawTime===a&&e.push({element:i});return e}function lc(n,a,e,t){let i=t.element;t.main?(ss(e,i,"beforeDraw"),i.draw(n,a),ss(e,i,"afterDraw")):i.draw(n,a)}var dc=["widgetDataChart"];at.register(js,Wi,Ai,Ei,Mi,Di,Pi,Fn,Un);var $s=(()=>{class n extends ue{dsService=W(Mt);ngZone=W($e);canvasService=W(Ue);widgetDataChart=Y("widgetDataChart",{read:Be});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.4}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;dsServiceSub=null;datasetConfig=null;dataSourceInfo=null;constructor(){super(),this.defaultConfig={displayName:"Chart Label",filterSelfPaths:!0,convertUnitTo:"unitless",datasetUUID:null,inverseYAxis:!1,datasetAverageArray:"sma",showAverageData:!0,trackAgainstAverage:!1,showDatasetMinimumValueLine:!1,showDatasetMaximumValueLine:!1,showDatasetAverageValueLine:!0,showDatasetAngleAverageValueLine:!1,showLabel:!1,showTimeScale:!1,startScaleAtZero:!1,verticalChart:!1,showYScale:!1,yScaleSuggestedMin:null,yScaleSuggestedMax:null,enableMinMaxScaleLimit:!1,yScaleMin:null,yScaleMax:null,numDecimal:1,color:"contrast"},Z(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this.dsService.getDatasetConfig(this.widgetProperties.config.datasetUUID),this.dataSourceInfo=this.dsService.getDataSourceInfo(this.widgetProperties.config.datasetUUID),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.chart.update():this.chart=new at(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions}),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis=this.widgetProperties.config.verticalChart?"y":"x",this.widgetProperties.config.verticalChart?this.lineChartOptions.scales={y:{type:"time",display:this.widgetProperties.config.showTimeScale,position:this.widgetProperties.config.verticalChart?"right":"left",suggestedMin:"",suggestedMax:"",title:{display:!0,text:`Last ${this.datasetConfig.period} ${this.datasetConfig.timeScaleFormat}`,align:"center"},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}},x:{type:"linear",display:this.widgetProperties.config.showYScale,position:this.widgetProperties.config.verticalChart?"top":"bottom",suggestedMin:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMin,suggestedMax:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMax,min:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMin:null,max:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMax:null,beginAtZero:this.widgetProperties.config.startScaleAtZero,reverse:this.widgetProperties.config.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.widgetProperties.config.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}}:this.lineChartOptions.scales={x:{type:"time",display:this.widgetProperties.config.showTimeScale,title:{display:!0,text:`Last ${this.datasetConfig.period} ${this.datasetConfig.timeScaleFormat}`,align:"center"},time:{unit:this.datasetConfig.timeScaleFormat,minUnit:"second",round:"second",displayFormats:{hour:"k:mm''",minute:"mm''",second:'ss"',millisecond:"SSS"}},ticks:{autoSkip:!1,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}},y:{display:this.widgetProperties.config.showYScale,position:"right",suggestedMin:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMin,suggestedMax:this.widgetProperties.config.enableMinMaxScaleLimit?null:this.widgetProperties.config.yScaleSuggestedMax,min:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMin:null,max:this.widgetProperties.config.enableMinMaxScaleLimit?this.widgetProperties.config.yScaleMax:null,beginAtZero:this.widgetProperties.config.startScaleAtZero,reverse:this.widgetProperties.config.inverseYAxis,title:{display:!1,text:"Value Axis",align:"center"},ticks:{maxTicksLimit:8,precision:this.widgetProperties.config.numDecimal,color:this.getThemeColors().averageChartLine,major:{enabled:!0}},grid:{display:!0,color:this.theme().contrastDimmer}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"",font:{size:32},color:this.getThemeColors().chartValue},subtitle:{display:this.widgetProperties.config.showLabel,align:"start",padding:{top:-35,bottom:20},text:` ${this.widgetProperties.config.displayName}`,font:{size:22},color:this.getThemeColors().chartLabel},annotation:{annotations:{minimumLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetMinimumValueLine,value:null,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",yAdjust:12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},maximumLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetMaximumValueLine,value:null,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",yAdjust:-12,padding:4,color:this.getThemeColors().averageChartLine,backgroundColor:"rgba(63,63,63,0.0)"}},averageLine:{type:"line",scaleID:this.widgetProperties.config.verticalChart?"x":"y",display:this.widgetProperties.config.showDatasetAverageValueLine,value:null,borderDash:[6,6],borderColor:this.getThemeColors().averageChartLine,drawTime:"afterDatasetsDraw",label:{display:!0,position:"start",padding:4,color:this.getThemeColors().chartValue,backgroundColor:"rgba(63,63,63,0.7)"}}}},legend:{display:!1}}}createDatasets(){let e,t;this.widgetProperties.config.inverseYAxis&&this.widgetProperties.config.trackAgainstAverage?(e="start",t=!1):this.widgetProperties.config.inverseYAxis&&!this.widgetProperties.config.trackAgainstAverage?(e=!1,t="start"):!this.widgetProperties.config.inverseYAxis&&this.widgetProperties.config.trackAgainstAverage?(e=!0,t=!1):(e=!1,t=!0),this.lineChartData.datasets=[],this.lineChartData.datasets.push({label:"Value",data:[],order:this.widgetProperties.config.trackAgainstAverage?1:0,parsing:!1,tension:0,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:this.widgetProperties.config.trackAgainstAverage?0:3,fill:e}),this.lineChartData.datasets.push({label:"Average",data:[],order:this.widgetProperties.config.trackAgainstAverage?0:1,parsing:!1,tension:.4,pointRadius:0,pointHoverRadius:0,pointHitRadius:0,borderWidth:this.widgetProperties.config.trackAgainstAverage?3:0,fill:t}),this.setDatasetsColors()}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"?(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill):e.label==="Average"&&(e.borderColor=this.getThemeColors().averageLine,e.backgroundColor=this.getThemeColors().averageFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().contrastDimmer,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=t.averageLine):(t.valueLine=this.theme().contrast,t.valueFill=this.theme().contrast,t.averageLine=this.theme().contrastDimmer,t.averageFill=this.theme().contrastDimmer,t.chartValue=this.theme().contrast),t.averageChartLine=this.theme().contrastDim,t.chartLabel=this.theme().contrastDim;break;case"blue":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().blueDimmer,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=t.averageLine):(t.valueLine=this.theme().blue,t.valueFill=this.theme().blue,t.averageLine=this.theme().blueDimmer,t.averageFill=this.theme().blueDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().contrastDim;break;case"green":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().greenDimmer,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=t.averageLine):(t.valueLine=this.theme().green,t.valueFill=this.theme().green,t.averageLine=this.theme().greenDimmer,t.averageFill=this.theme().greenDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().contrastDim;break;case"pink":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().pinkDimmer,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=t.averageLine):(t.valueLine=this.theme().pink,t.valueFill=this.theme().pink,t.averageLine=this.theme().pinkDimmer,t.averageFill=this.theme().pinkDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().contrastDim;break;case"orange":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().orangeDimmer,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=t.averageLine):(t.valueLine=this.theme().orange,t.valueFill=this.theme().orange,t.averageLine=this.theme().orangeDimmer,t.averageFill=this.theme().orangeDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().contrastDim;break;case"purple":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().purpleDimmer,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=t.averageLine):(t.valueLine=this.theme().purple,t.valueFill=this.theme().purple,t.averageLine=this.theme().purpleDimmer,t.averageFill=this.theme().purpleDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().contrastDim;break;case"grey":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().greyDimmer,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=t.averageLine):(t.valueLine=this.theme().grey,t.valueFill=this.theme().grey,t.averageLine=this.theme().greyDimmer,t.averageFill=this.theme().greyDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().contrastDim;break;case"yellow":this.widgetProperties.config.trackAgainstAverage?(t.valueLine=this.theme().yellowDimmer,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=t.averageLine):(t.valueLine=this.theme().yellow,t.valueFill=this.theme().yellow,t.averageLine=this.theme().yellowDimmer,t.averageFill=this.theme().yellowDimmer,t.chartValue=t.valueFill),t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().contrastDim;break}return t}getUnitsLabel(){let e=null;switch(this.widgetProperties.config.convertUnitTo){case"percent":case"percentraw":e="%";break;case"latitudeMin":e="latitude in minutes";break;case"latitudeSec":e="latitude in secondes";break;case"longitudeMin":e="longitude in minutes";break;case"longitudeSec":e="longitude in secondes";break;default:e=this.widgetProperties.config.convertUnitTo;break}return e}startStreaming(){this.dsServiceSub?.unsubscribe();let e=this.dsService.getDatasetBatchThenLiveObservable(this.widgetProperties.config.datasetUUID);this.dsServiceSub=e?.subscribe(t=>{if(Array.isArray(t)){let i=this.transformDatasetRows(t,0);if(this.chart.data.datasets[0].data.push(...i),this.widgetProperties.config.showAverageData){let o=this.transformDatasetRows(t,this.widgetProperties.config.datasetAverageArray);this.chart.data.datasets[1].data.push(...o)}}else{let i=this.transformDatasetRows([t],0)[0];if(this.chart.data.datasets[0].data.push(i),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[0].data.shift(),this.widgetProperties.config.showAverageData){let m=this.transformDatasetRows([t],this.widgetProperties.config.datasetAverageArray)[0];this.chart.data.datasets[1].data.push(m),this.chart.data.datasets[1].data.length>this.dataSourceInfo.maxDataPoints&&this.chart.data.datasets[1].data.shift()}let o=this.widgetProperties.config.trackAgainstAverage?t.data.sma:t.data.value;this.chart.options.plugins.title.text=`${this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,o).toFixed(this.widgetProperties.config.numDecimal)} ${this.getUnitsLabel()} `;let r=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastAverage),s=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastMinimum),h=this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,t.data.lastMaximum);this.chart.options.plugins.annotation.annotations.averageLine.value!=r&&(this.chart.options.plugins.annotation.annotations.averageLine.value=r,this.chart.options.plugins.annotation.annotations.averageLine.label.content=`${r.toFixed(this.widgetProperties.config.numDecimal)}`),this.chart.options.plugins.annotation.annotations.minimumLine.value!=s&&(this.chart.options.plugins.annotation.annotations.minimumLine.value=s,this.chart.options.plugins.annotation.annotations.minimumLine.label.content=`${s.toFixed(this.widgetProperties.config.numDecimal)}`),this.chart.options.plugins.annotation.annotations.maximumLine.value!=h&&(this.chart.options.plugins.annotation.annotations.maximumLine.value=h,this.chart.options.plugins.annotation.annotations.maximumLine.label.content=`${h.toFixed(this.widgetProperties.config.numDecimal)}`)}this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}transformDatasetRows(e,t){let i=s=>this.unitsService.convertToUnit(this.widgetProperties.config.convertUnitTo,s),o=this.widgetProperties.config.verticalChart,r=this.widgetProperties.config.datasetAverageArray;return e.map(s=>{if(o){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.destroyDataStreams(),this.dsServiceSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-data-chart"]],viewQuery:function(t,i){t&1&&$(i.widgetDataChart,dc,5,Be),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me],encapsulation:2})}return n})();var Zt=Do(ro(),1),Qs=Do(ro(),1);var hc=["gauge"],cc=n=>n.replace(/(\-\w)/g,a=>a[1].toUpperCase()),uc=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ys=n=>cc(n),Xs=(()=>{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=Ys(t.name);e[i]=Zt.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=Zt.DomObserver.parse(i);else{let o=uc(t);this.el.nativeElement.setAttribute(o,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[Ys(i.attributeName)]=Zt.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)(ct(Be),ct($e))};static \u0275dir=bi({type:n,viewQuery:function(t,i){if(t&1&&tn(hc,7),t&2){let o;wi(o=Ci())&&(i.canvas=o.first)}},inputs:{options:"options",value:"value"}})}return n})();var un=(()=>{class n extends Xs{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Zt.LinearGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(ct(Be),ct($e))};static \u0275cmp=V({type:n,selectors:[["linear-gauge"]],features:[ne],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&z(0,"canvas",null,0)},encapsulation:2})}return n})();var ca=(()=>{class n extends Xs{constructor(e,t){super(e,t)}ngOnInit(){this.gauge=new Zt.RadialGauge(this.options).draw()}static \u0275fac=function(t){return new(t||n)(ct(Be),ct($e))};static \u0275cmp=V({type:n,selectors:[["radial-gauge"]],features:[ne],decls:2,vars:0,consts:[["gauge",""]],template:function(t,i){t&1&&z(0,"canvas",null,0)},encapsulation:2})}return n})(),qi=(()=>{class n{static \u0275fac=function(t){return new(t||n)};static \u0275mod=Lt({type:n});static \u0275inj=It({})}return n})();var Zs=["compassGauge"];function lo(n){let a=n.match(/(\d+(\.\d+)?|\.\d+)/g);if(!a||a.length<3)throw new Error("Invalid RGBA format");let[e,t,i,o=1]=a.map(Number),r=o===1?"":Math.round(o*255).toString(16).padStart(2,"0").toUpperCase();return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1).toUpperCase()+r}function mc(n){return n<0&&(n=360+n),n}var Ks=(()=>{class n extends ue{DEG="deg";LINE="line";NEEDLE_START=40;NEEDLE_END=100;NEEDLE_CIRCLE_SIZE=15;BORDER_MIDDLE_WIDTH=2;BORDER_INNER_WIDTH=2;ANIMATION_TARGET_PLATE="plate";ANIMATION_TARGET_NEEDLE="needle";textValue="--";value=0;ngGauge=Y("compassGauge");gauge=Y("compassGauge",{read:Be});initCompleted=!1;gaugeOptions={};colorStrokeTicks="";unitName=null;state=K.Normal;negToPortPaths=["self.environment.wind.angleApparent","self.environment.wind.angleTrueGround","self.environment.wind.angleTrueWater"];constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:this.DEG,sampleTime:500}},gauge:{type:"ngRadial",subType:"baseplateCompass",enableTicks:!0,compassUseNumbers:!1,showValueBox:!1},enableTimeout:!1,color:"contrast",dataTimeout:5},Z(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data||e.data.value===null)e={data:{value:0,timestamp:new Date},state:K.Normal},this.value=0,this.textValue="--";else{let t=this.negToPortPaths.includes(this.widgetProperties.config.paths.gaugePath.path)?mc(e.data.value):e.data.value;this.value=Math.min(Math.max(t,0),360),this.textValue=this.value.toFixed(0)}if(e.state==null&&(e.state=K.Normal),this.state!==e.state){this.state=e.state;let t={};switch(e.state){case K.Emergency:t.colorValueText=this.theme().zoneEmergency;break;case K.Alarm:t.colorValueText=this.theme().zoneAlarm;break;case K.Warn:t.colorValueText=this.theme().zoneWarn;break;case K.Alert:t.colorValueText=this.theme().zoneAlert;break;default:t.colorValueText=this.theme().contrast}this.ngGauge().update(t)}})}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.minValue=0,this.gaugeOptions.maxValue=360,this.gaugeOptions.valueDec=0,this.gaugeOptions.valueInt=1,this.gaugeOptions.units="",this.gaugeOptions.barProgress=!1,this.gaugeOptions.barWidth=0,this.gaugeOptions.valueBox=this.widgetProperties.config.gauge.showValueBox,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=26,this.gaugeOptions.valueBoxBorderRadius=10,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=180,this.gaugeOptions.exactTicks=!1,this.gaugeOptions.strokeTicks="",this.gaugeOptions.majorTicks=this.widgetProperties.config.gauge.compassUseNumbers?["N","30","60","E","120","150","S","210","240","W","300","330","N"]:["N","NE","E","SE","S","SW","W","NW","N"],this.gaugeOptions.majorTicksDec=0,this.gaugeOptions.majorTicksInt=1,this.gaugeOptions.numbersMargin=5,this.gaugeOptions.fontNumbersSize=25,this.gaugeOptions.minorTicks=this.widgetProperties.config.gauge.compassUseNumbers?3:2,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleStart=this.NEEDLE_START,this.gaugeOptions.needleEnd=this.NEEDLE_END,this.gaugeOptions.needleCircleSize=this.NEEDLE_CIRCLE_SIZE,this.gaugeOptions.needleWidth=4,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=0,this.gaugeOptions.borderMiddleWidth=this.BORDER_MIDDLE_WIDTH,this.gaugeOptions.borderInnerWidth=this.BORDER_INNER_WIDTH,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="normal",this.gaugeOptions.fontTitleSize=25,this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.highlightsWidth=0,this.widgetProperties.config.gauge.subType==="marineCompass"?(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_PLATE,this.gaugeOptions.useMinPath=!0):this.widgetProperties.config.gauge.subType==="baseplateCompass"&&(this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!0),this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!0,this.gaugeOptions.animatedValue=!0,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-50,this.setGaugeOptions(ie(this.widgetProperties.config.color,this.theme()).color,lo(ie(this.widgetProperties.config.color,this.theme()).dim),lo(ie(this.widgetProperties.config.color,this.theme()).dimmer))}setGaugeOptions(e,t,i){let o=lo(ie("contrast",this.theme()).dim);this.gaugeOptions.colorBarProgress=e,this.gaugeOptions.colorBorderMiddle=t,this.gaugeOptions.colorBorderMiddleEnd=t,this.gaugeOptions.colorNeedle=e,this.gaugeOptions.colorNeedleEnd=e,this.gaugeOptions.colorTitle=o,this.gaugeOptions.colorUnits=o,this.gaugeOptions.colorValueText=e,this.gaugeOptions.colorMinorTicks=o,this.gaugeOptions.colorNumbers=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,o,o,t,o,o,t,o,o,t,o,o,this.theme().port]:[this.theme().port,t,t,t,t,t,t,t,this.theme().port],this.gaugeOptions.colorMajorTicks=this.widgetProperties.config.gauge.compassUseNumbers?[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port]:[this.theme().port,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().contrast,this.theme().port],this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.gaugeOptions.colorBorderInner=this.gaugeOptions.colorBorderInnerEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.colorValueBoxBackground=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-gauge-ng-compass"]],viewQuery:function(t,i){t&1&&($(i.ngGauge,Zs,5),$(i.gauge,Zs,5,Be)),t&2&&ce(2)},features:[ne],decls:3,vars:8,consts:[["compassGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(1,"radial-gauge",2,0),I("onResize",function(s){return O(o),R(i.onResized(s))}),b()()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("id",Vt(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),X("value-text",i.textValue)("color-stroke-ticks",i.colorStrokeTicks))},dependencies:[me,Ge,mt,qi,ca],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:10px}"]})}return n})();function ua(n,a,e=!1){let t=[],i=a-n,o=0,r=10;i=Js(a-n,!1),o=Js(i/(r-1),!0);let s=Math.floor(n/o)*o,h=Math.ceil(a/o)*o;t.push(s);let m=i/o;for(let u=0;u<m;u++)if(t[u]<h){let v=(Number(t[u].toFixed(2))*100+Number(o.toFixed(2))*100)/100;t.push(v)}if(t[t.length-1]!==h&&t.push(h),e){let u=[...t].reverse();return{min:s,max:h,majorTicks:u}}return{min:s,max:h,majorTicks:t}}function Js(n,a){let e=Math.floor(Math.log10(n)),t=n/Math.pow(10,e),i=null;return a?1.5>t?i=1:3>t?i=2:7>t?i=5:i=10:1>=t?i=1:2>=t?i=2:5>=t?i=5:i=10,i*Math.pow(10,e)}function ji(n,a,e,t,i,o,r=!1){let s=[],h=[...n].sort((m,u)=>m.lower-u.lower);for(let m of h){let u=null,v=null,x;switch(m.state){case K.Emergency:x=a.zoneEmergency;break;case K.Alarm:x=a.zoneAlarm;break;case K.Warn:x=a.zoneWarn;break;case K.Alert:x=a.zoneAlert;break;case K.Nominal:x=a.zoneNominal;break;default:x="rgba(0,0,0,0)"}if(u=t.convertToUnit(e,m.lower),v=t.convertToUnit(e,m.upper),!(v<i||u>o)){if(u=u!==null?u:i,v=v!==null?v:o,u=Math.max(u,i),v>o){v=o,s.push({from:u,to:v,color:x});break}s.push({from:u,to:v,color:x})}}return r&&(s=s.map(m=>({from:o-m.to,to:o-m.from,color:m.color}))),s}var el=["linearGauge"],tl=(()=>{class n extends ue{ngGauge=Y("linearGauge",{read:un});gauge=Y("linearGauge",{read:Be});initCompleted=!1;textValue="";value=0;gaugeOptions={};isGaugeVertical=!0;adjustedScale;metaSub;state=K.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngLinear",subType:"vertical",enableTicks:!1,highlightsWidth:5,useNeedle:!1},numInt:1,numDecimal:0,color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!1},Z(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:K.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=K.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case K.Emergency:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency):(i.colorBarProgress=this.theme().zoneEmergency,i.colorValueText=this.theme().zoneEmergency);break;case K.Alarm:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm):(i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm);break;case K.Warn:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn):(i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn);break;case K.Alert:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert):(i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert);break;default:this.widgetProperties.config.gauge.useNeedle?(i.colorNeedle=ie(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=ie(this.widgetProperties.config.color,this.theme()).color):(i.colorBarProgress=ie(this.widgetProperties.config.color,this.theme()).color,i.colorValueText=ie(this.widgetProperties.config.color,this.theme()).color)}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0){let i=ji(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(i,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};this.widgetProperties.config.gauge.subType==="vertical"?(t.height=e.contentRect.height,t.width=t.height*.3,t.width>e.contentRect.width&&(t.width=e.contentRect.width,t.height=t.width/.3)):(t.width=e.contentRect.width,t.height=t.width*.3,t.height>e.contentRect.height&&(t.height=e.contentRect.height,t.width=t.height/.3)),t.height-=10,this.ngGauge().update(t)}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}setGaugeConfig(){let e=this.widgetProperties.config.gauge.subType==="vertical",t=this.widgetProperties.config.gauge.useNeedle,i=this.widgetProperties.config.gauge.enableTicks;this.adjustedScale={min:this.widgetProperties.config.displayScale.lower,max:this.widgetProperties.config.displayScale.upper,majorTicks:[]};let o=this.gauge().nativeElement.getBoundingClientRect(),r=null,s=null;this.widgetProperties.config.gauge.subType==="vertical"?(r=o.height,s=o.height*.3):(r=o.width*.3,s=o.width),i&&(this.adjustedScale=ua(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper));let h={height:r,width:s,minValue:this.adjustedScale.min,maxValue:this.adjustedScale.max,valueInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,valueDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,title:this.widgetProperties.config.displayName,fontTitleSize:40,fontTitle:"Roboto",fontTitleWeight:"bold",barLength:e?80:90,barWidth:i?t?0:30:60,barProgress:!0,barBeginCircle:0,barStrokeWidth:0,barShadow:0,needle:t,needleType:this.widgetProperties.config.gauge.useNeedle?"arrow":"line",needleShadow:!0,needleSide:"both",needleStart:this.widgetProperties.config.gauge.useNeedle?e?200:155:-45,needleEnd:this.widgetProperties.config.gauge.useNeedle?e?175:180:55,colorNeedleEnd:ie(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowUp:ie(this.widgetProperties.config.color,this.theme()).color,colorNeedleShadowDown:ie(this.widgetProperties.config.color,this.theme()).color,units:this.widgetProperties.config.paths.gaugePath.convertUnitTo,fontUnits:"Roboto",fontUnitsWeight:"normal",borders:!1,borderOuterWidth:0,colorBorderOuter:"red",colorBorderOuterEnd:"red",borderMiddleWidth:0,colorBorderMiddle:"#63afdf",colorBorderMiddleEnd:"#63afdf",borderInnerWidth:0,colorBorderInner:"red",colorBorderInnerEnd:"#121212",borderShadowWidth:0,borderRadius:0,colorBarEnd:"",colorBarStroke:"0",valueBoxStroke:0,colorValueBoxRect:"",colorValueBoxRectEnd:"",colorValueBoxBackground:this.theme().background,fontValueSize:50,fontValue:"Roboto",fontValueWeight:"bold",valueTextShadow:!1,colorValueBoxShadow:"",fontNumbers:"Roboto",fontNumbersWeight:"normal",fontUnitsSize:this.isGaugeVertical?40:35,colorTitle:ie("contrast",this.theme()).dim,colorUnits:ie("contrast",this.theme()).dim,colorValueText:ie(this.widgetProperties.config.color,this.theme()).color,colorPlate:this.theme().cardColor,colorBar:this.theme().background,colorMajorTicks:ie("contrast",this.theme()).dim,colorMinorTicks:ie("contrast",this.theme()).dim,colorNumbers:ie("contrast",this.theme()).dim,majorTicks:i?this.adjustedScale.majorTicks:[],majorTicksInt:this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,majorTicksDec:this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,numberSide:t?"right":"left",fontNumbersSize:i?e?22:30:0,numbersMargin:e?t?-7:-3:t?-33:-5,tickSide:"left",ticksWidth:i?t&&e?15:10:0,ticksPadding:i?e?t?0:5:t?9:8:0,strokeTicks:i,minorTicks:i?2:0,ticksWidthMinor:i?6:0,valueBox:!0,valueBoxWidth:35,valueBoxBorderRadius:10,highlights:[],highlightsWidth:this.widgetProperties.config.gauge.highlightsWidth,animation:!0,animationRule:"linear",animatedValue:!1,animateOnInit:!1,animationDuration:this.widgetProperties.config.paths.gaugePath.sampleTime-25};Object.assign(this.gaugeOptions,h),this.setThemePaletteColor()}setThemePaletteColor(){let e="",t="";switch(this.widgetProperties.config.color){case"contrast":e=this.theme().contrast,t=this.theme().contrastDim;break;case"blue":e=this.theme().blue,t=this.theme().blueDim;break;case"green":e=this.theme().green,t=this.theme().greenDim;break;case"pink":e=this.theme().pink,t=this.theme().pinkDim;break;case"orange":e=this.theme().orange,t=this.theme().orangeDim;break;case"purple":e=this.theme().purple,t=this.theme().purpleDim;break;case"grey":e=this.theme().grey,t=this.theme().greyDim;break;case"yellow":e=this.theme().yellow,t=this.theme().yellowDim;break;default:e=this.theme().contrast,t=this.theme().contrastDim;break}Object.assign(this.gaugeOptions,{colorBarProgress:this.widgetProperties.config.gauge.useNeedle?"":e,colorBarProgressEnd:"",colorNeedle:this.widgetProperties.config.gauge.useNeedle?e:t,needleWidth:this.widgetProperties.config.gauge.useNeedle?45:0})}ngOnDestroy(){this.destroyDataStreams(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-gauge-ng-linear"]],viewQuery:function(t,i){t&1&&($(i.ngGauge,el,5,un),$(i.gauge,el,5,Be)),t&2&&ce(2)},features:[ne],decls:4,vars:7,consts:[["host",""],["linearGauge",""],[3,"configChange","config","id"],[1,"linearGauge",3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",2,0),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(2,"linear-gauge",3,1),I("onResize",function(s){return O(o),R(i.onResized(s))}),b()()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(2),L("id",Vt(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),X("value-text",i.textValue))},dependencies:[me,Ge,mt,qi,un],styles:["linear-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} linear-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:5px}"]})}return n})();var il=["radialGauge"],nl=(()=>{class n extends ue{LINE="line";ANIMATION_TARGET_NEEDLE="needle";ngGauge=Y("radialGauge");gauge=Y("radialGauge",{read:Be});initCompleted=!1;textValue="";value=null;adjustedScale;gaugeOptions={};colorStrokeTicks="";unitName=null;metaSub;state=K.Normal;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{lower:0,upper:100,type:"linear"},gauge:{type:"ngRadial",subType:"measuring",enableTicks:!0,compassUseNumbers:!1,highlightsWidth:5,scaleStart:180,barStartPosition:"left"},numInt:1,numDecimal:0,enableTimeout:!1,color:"contrast",dataTimeout:5,ignoreZones:!1},Z(()=>{if(this.theme()){if(!this.initCompleted)return;this.startWidget()}})}ngOnInit(){this.validateConfig()}startWidget(){this.setGaugeConfig(),this.ngGauge().update(this.gaugeOptions),this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",t=>{if(!t||!t.data||t.data.value===null?(t={data:{value:0,timestamp:new Date},state:K.Normal},this.textValue="--"):this.textValue==="--"&&(this.textValue=""),this.value=Math.min(Math.max(t.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper),t.state==null&&(t.state=K.Normal),this.state!==t.state){this.state=t.state;let i={};if(!this.widgetProperties.config.ignoreZones)switch(t.state){case K.Alarm:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlarm,i.colorValueText=this.theme().zoneAlarm;break;case K.Warn:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneWarn,i.colorValueText=this.theme().zoneWarn;break;case K.Alert:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.theme().zoneAlert,i.colorValueText=this.theme().zoneAlert;break;default:i.colorBorderMiddle=this.theme().cardColor,i.colorBarProgress=this.widgetProperties.config.gauge.subType=="measuring"?ie(this.widgetProperties.config.color,this.theme()).color:ie(this.widgetProperties.config.color,this.theme()).dim,i.colorValueText=ie(this.widgetProperties.config.color,this.theme()).color}this.ngGauge().update(i)}});let e={};e.highlights=[],this.widgetProperties.config.ignoreZones?this.ngGauge().update(e):(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(t=>{if(t&&t.length>0&&this.widgetProperties.config.gauge.subType=="measuring"){let i=this.widgetProperties.config.gauge.barStartPosition==="right",o=ji(t,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.unitsService,this.adjustedScale.min,this.adjustedScale.max,i);e.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,e.highlights=JSON.stringify(o,null,1)}else e.highlights=[];this.ngGauge().update(e)}))}updateConfig(e){this.widgetProperties.config=e,this.setCanvasHight(),this.startWidget()}setCanvasHight(){let e=this.gauge().nativeElement.getBoundingClientRect(),t={};t.height=e.height,t.width=e.width,this.ngGauge().update(t)}ngAfterViewInit(){this.setCanvasHight(),this.startWidget(),this.initCompleted=!0}onResized(e){let t={};t.height=e.contentRect.height,t.width=e.contentRect.width,this.ngGauge().update(t)}setGaugeConfig(){switch(this.gaugeOptions.title=this.widgetProperties.config.displayName?this.widgetProperties.config.displayName:"",this.gaugeOptions.highlights=[],this.gaugeOptions.fontTitle="Roboto",this.gaugeOptions.fontTitleWeight="bold",this.gaugeOptions.fontUnits="Roboto",this.gaugeOptions.fontUnitsSize=25,this.gaugeOptions.fontUnitsWeight="normal",this.gaugeOptions.barStrokeWidth=0,this.gaugeOptions.barShadow=0,this.gaugeOptions.colorBarStroke="",this.gaugeOptions.fontValue="Roboto",this.gaugeOptions.fontValueWeight="bold",this.gaugeOptions.valueTextShadow=!1,this.gaugeOptions.colorValueBoxShadow="",this.gaugeOptions.fontNumbers="Roboto",this.gaugeOptions.fontNumbersWeight="bold",this.gaugeOptions.valueInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.valueDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.majorTicksInt=this.widgetProperties.config.numInt!==void 0&&this.widgetProperties.config.numInt!==null?this.widgetProperties.config.numInt:1,this.gaugeOptions.majorTicksDec=this.widgetProperties.config.numDecimal!==void 0&&this.widgetProperties.config.numDecimal!==null?this.widgetProperties.config.numDecimal:2,this.gaugeOptions.highlightsWidth=this.widgetProperties.config.gauge.highlightsWidth,this.gaugeOptions.animation=!0,this.gaugeOptions.animateOnInit=!1,this.gaugeOptions.animatedValue=!1,this.gaugeOptions.animationRule="linear",this.gaugeOptions.animationDuration=this.widgetProperties.config.paths.gaugePath.sampleTime-25,this.gaugeOptions.colorBorderShadow=!1,this.gaugeOptions.colorBorderOuter=this.theme().cardColor,this.gaugeOptions.colorBorderOuterEnd="",this.gaugeOptions.colorBorderMiddle=this.theme().cardColor,this.gaugeOptions.colorBorderMiddleEnd="",this.gaugeOptions.colorBarProgress=ie(this.widgetProperties.config.color,this.theme()).color,this.gaugeOptions.colorNeedle=ie(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorNeedleEnd=ie(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.colorTitle=this.theme().contrastDim,this.gaugeOptions.colorUnits=this.theme().contrastDim,this.gaugeOptions.colorValueText=ie(this.widgetProperties.config.color,this.theme()).color,this.colorStrokeTicks=this.theme().contrastDim,this.gaugeOptions.colorMinorTicks=this.theme().contrastDim,this.gaugeOptions.colorNumbers=this.theme().contrastDim,this.gaugeOptions.colorMajorTicks=this.theme().contrastDim,this.gaugeOptions.colorPlate=this.gaugeOptions.colorPlateEnd=this.theme().cardColor,this.gaugeOptions.colorBar=this.theme().background,this.gaugeOptions.colorNeedleShadowUp="",this.gaugeOptions.colorNeedleShadowDown="black",this.gaugeOptions.colorNeedleCircleInner=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleInnerEnd=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuter=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNeedleCircleOuterEnd=this.gaugeOptions.colorPlate,this.widgetProperties.config.gauge.subType){case"capacity":this.configureCapacityGauge();break;case"measuring":this.configureMeasuringGauge();break;default:}}configureCapacityGauge(){this.gaugeOptions.minValue=this.widgetProperties.config.displayScale.lower,this.gaugeOptions.maxValue=this.widgetProperties.config.displayScale.upper,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=40,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=20,this.gaugeOptions.colorBarProgress=ie(this.widgetProperties.config.color,this.theme()).dim,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=10,this.gaugeOptions.valueBoxBorderRadius=5,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.colorValueBoxRect="",this.gaugeOptions.colorValueBoxRectEnd="",this.gaugeOptions.ticksAngle=360,this.gaugeOptions.startAngle=this.widgetProperties.config.gauge.scaleStart||180,this.gaugeOptions.majorTicks=0,this.gaugeOptions.exactTicks=!0,this.gaugeOptions.strokeTicks=!1,this.gaugeOptions.minorTicks=0,this.gaugeOptions.numbersMargin=0,this.gaugeOptions.fontNumbersSize=0,this.gaugeOptions.colorMajorTicks=this.gaugeOptions.colorPlate,this.gaugeOptions.colorNumbers=this.gaugeOptions.colorMinorTicks="",this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=75,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=1,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}configureMeasuringGauge(){this.adjustedScale=ua(this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper,this.widgetProperties.config.gauge.barStartPosition==="right"),this.gaugeOptions.minValue=this.adjustedScale.min,this.gaugeOptions.maxValue=this.adjustedScale.max,this.gaugeOptions.units=this.widgetProperties.config.paths.gaugePath.convertUnitTo,this.gaugeOptions.fontTitleSize=24,this.gaugeOptions.barProgress=!0,this.gaugeOptions.barWidth=15,this.gaugeOptions.valueBox=!0,this.gaugeOptions.fontValueSize=60,this.gaugeOptions.valueBoxWidth=100,this.gaugeOptions.valueBoxBorderRadius=0,this.gaugeOptions.valueBoxStroke=0,this.gaugeOptions.colorValueBoxBackground="",this.gaugeOptions.exactTicks=!1,this.gaugeOptions.majorTicks=this.adjustedScale.majorTicks,this.gaugeOptions.minorTicks=2,this.gaugeOptions.ticksAngle=270,this.gaugeOptions.startAngle=45,this.gaugeOptions.barStartPosition=this.widgetProperties.config.gauge.barStartPosition||"left",this.gaugeOptions.strokeTicks=!0,this.gaugeOptions.numbersMargin=3,this.gaugeOptions.fontNumbersSize=15,this.gaugeOptions.needle=!0,this.gaugeOptions.needleType=this.LINE,this.gaugeOptions.needleWidth=2,this.gaugeOptions.needleShadow=!1,this.gaugeOptions.needleStart=0,this.gaugeOptions.needleEnd=95,this.gaugeOptions.needleCircleSize=10,this.gaugeOptions.needleCircleInner=!1,this.gaugeOptions.needleCircleOuter=!1,this.gaugeOptions.borders=!0,this.gaugeOptions.borderOuterWidth=2,this.gaugeOptions.borderMiddleWidth=1,this.gaugeOptions.borderInnerWidth=0,this.gaugeOptions.borderShadowWidth=0,this.gaugeOptions.animationTarget=this.ANIMATION_TARGET_NEEDLE,this.gaugeOptions.useMinPath=!1}ngOnDestroy(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-gauge-ng-radial"]],viewQuery:function(t,i){t&1&&($(i.ngGauge,il,5),$(i.gauge,il,5,Be)),t&2&&ce(2)},features:[ne],decls:3,vars:7,consts:[["radialGauge",""],[3,"configChange","config","id"],[3,"onResize","id","options","value"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(1,"radial-gauge",2,0),I("onResize",function(s){return O(o),R(i.onResized(s))}),b()()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("id",Vt(i.widgetProperties.uuid))("options",i.gaugeOptions)("value",i.value),X("value-text",i.textValue))},dependencies:[me,Ge,mt,qi,ca],styles:["radial-gauge{display:block;position:relative;width:100%;height:100%;overflow:clip} radial-gauge>canvas{display:block;position:absolute;height:100%;width:100%;left:50%;top:50%;transform:translate(-50%,-50%);padding:0}"]})}return n})();var gc=["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 ho={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},co={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},al=(()=>{class n{unitsService=W(Ht);canvasService=W(Ue);canvasRef=Y("gaugeCanvas");widgetUUID=N(void 0);subType=N(void 0);barGauge=N(void 0);radialSize=N(void 0);backgroundColor=N(void 0);frameColor=N(void 0);minValue=N(void 0);maxValue=N(void 0);decimals=N(void 0);zones=N(void 0);title=N(void 0);units=N(void 0);value=N(void 0);theme=N(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=[],o=[],r=[...t].sort((s,h)=>s.lower-h.lower);for(let s of r){let h=null,m=null,u;switch(s.state){case K.Emergency:u=this.theme().zoneEmergency;break;case K.Alarm:u=this.theme().zoneAlarm;break;case K.Warn:u=this.theme().zoneWarn;break;case K.Alert:u=this.theme().zoneAlert;break;case K.Nominal:u=this.theme().zoneNominal;break;default:u="rgba(0,0,0,0)"}let v=this.units();if(v=="ratio"?(h=s.lower,m=s.upper):(h=this.unitsService.convertToUnit(v,s.lower),m=this.unitsService.convertToUnit(v,s.upper)),!(m<this.minValue()||h>this.maxValue())){if(h=h!==null?h:this.minValue(),m=m!==null?m:this.maxValue(),h=Math.max(h,this.minValue()),m>this.maxValue()){m=this.maxValue(),i.push(steelseries.Section(h,m,u));break}i.push(steelseries.Section(h,m,u))}}this.gaugeOptions.section=i,this.gaugeOptions.area=o,this.gaugeOptions.useSectionColors=!0}ho[this.backgroundColor()]&&(this.gaugeOptions.backgroundColor=ho[this.backgroundColor()]),co[this.frameColor()]&&(this.gaugeOptions.frameDesign=co[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 o=this.subType();o==="radial"?this.gauge=new steelseries.Radial(t,this.gaugeOptions):o==="linear"&&(this.barGauge()?this.gauge=new steelseries.LinearBargraph(t,this.gaugeOptions):this.gauge=new steelseries.Linear(t,this.gaugeOptions))}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t;if(this.subType()==="radial"){let i=Math.min(e.contentRect.height,e.contentRect.width);this.gaugeOptions.size=i,t="radial:"+i}else{let i=Math.floor(e.contentRect.width),o=Math.floor(e.contentRect.height);this.gaugeOptions.width=i,this.gaugeOptions.height=o,t=`linear:${i}x${o}`}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(ho[e.backgroundColor.currentValue]),e.frameColor&&this.gauge.setFrameDesign(co[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=V({type:n,selectors:[["gauge-steel"]],viewQuery:function(t,i){t&1&&$(i.canvasRef,gc,5),t&2&&ce()},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:[vi],decls:4,vars:2,consts:[["gaugeCanvas",""],[1,"wrapper",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){if(t&1){let o=ee();g(0,"div",1),I("onResize",function(s){return O(o),R(i.onResized(s))}),g(1,"canvas",2,0),p(3," Browser does not support canvas element. "),b()()}t&2&&(w(),L("id",Vt(i.widgetUUID())))},dependencies:[Ge,mt],styles:[".sgWrapper[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center}"]})}return n})();var ol=(()=>{class n extends ue{dataValue=0;zones=[];metaSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:null,convertUnitTo:"unitless",sampleTime:500}},displayScale:{type:"linear",lower:0,upper:100},gauge:{type:"steel",subType:"radial",backgroundColor:"carbon",faceColor:"anthracite",radialSize:"full",rotateFace:!1,digitalMeter:!1},numDecimal:2,enableTimeout:!1,dataTimeout:5,ignoreZones:!1}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe(),this.observeDataStream("gaugePath",e=>{(!e||!e.data)&&(e={data:{value:0,timestamp:new Date},state:"normal"}),this.dataValue=Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)}),this.widgetProperties.config.ignoreZones?this.zones=[]:(this.observeMetaStream(),this.metaSub=this.zones$.subscribe(e=>{e?e.length>0?this.zones=e:this.zones=[]:this.zones=[]}))}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.metaSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-gauge-steel"]],features:[ne],decls:2,vars:16,consts:[[3,"configChange","config","id"],[3,"widgetUUID","subType","barGauge","radialSize","backgroundColor","frameColor","minValue","maxValue","decimals","zones","title","units","value","themeColors"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),z(1,"gauge-steel",1),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("widgetUUID",i.widgetProperties.uuid)("subType",i.widgetProperties.config.gauge.subType)("barGauge",i.widgetProperties.config.gauge.digitalMeter)("radialSize",i.widgetProperties.config.gauge.radialSize)("backgroundColor",i.widgetProperties.config.gauge.backgroundColor)("frameColor",i.widgetProperties.config.gauge.faceColor)("minValue",i.widgetProperties.config.displayScale.lower)("maxValue",i.widgetProperties.config.displayScale.upper)("decimals",i.widgetProperties.config.numDecimal)("zones",i.zones)("title",i.widgetProperties.config.displayName)("units",i.widgetProperties.config.paths.gaugePath.convertUnitTo)("value",i.dataValue)("themeColors",i.theme()))},dependencies:[me,al],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 pc=["plainIframe"];function fc(n,a){if(n&1&&z(0,"iframe",2,0),n&2){let e=j();L("src",e.widgetUrl,Ki)}}function vc(n,a){n&1&&(g(0,"div",3)(1,"h2"),p(2,"Empty or bad URL"),b(),g(3,"p"),p(4," IMPORTANT: cross-domain security rules (CORS) apply to this widget. "),b(),g(5,"p"),p(6,"Typically, you can load Grafana graphs, Signal K apps or other related tools. "),b()())}var rl=(()=>{class n extends ue{_sanitizer=W(On);_dashboard=W(et);iframe=Y.required("plainIframe");widgetUrl=null;displayTransparentOverlay=H("block");constructor(){super(),this.defaultConfig={widgetUrl:null,allowInput:!1},Z(()=>{this._dashboard.isDashboardStatic()?this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"):this.displayTransparentOverlay.set("block")})}ngOnInit(){this.validateConfig(),window.addEventListener("message",this.handleIframeGesture),this.displayTransparentOverlay.set(this.widgetProperties.config.allowInput?"none":"block"),this.widgetUrl=this.resolveUrl(this.widgetProperties.config.widgetUrl)}ngAfterViewInit(){this.iframe()&&(this.iframe().nativeElement.onload=()=>this.injectSwipeScript())}startWidget(){}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.widgetProperties.uuid}`,i=e.getElementById(t);i&&i.parentNode&&i.parentNode.removeChild(i)}}catch{}try{this.destroyDataStreams()}catch{}}handleIframeGesture=e=>{if(e.data){if(e.data.gesture&&e.data.eventData.instanceId===this.widgetProperties.uuid)switch(e.data.gesture){case"swipeup":this._dashboard.navigateToPreviousDashboard();break;case"swipedown":this._dashboard.navigateToNextDashboard();break;case"swipeleft":{let t=new Event("openLeftSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}case"swiperight":{let t=new Event("openRightSidenav",{bubbles:!0,cancelable:!0});window.document.dispatchEvent(t);break}default:break}if(e.data.type==="keydown"&&e.data.keyEventData.instanceId===this.widgetProperties.uuid){let{key:t,ctrlKey:i,shiftKey:o}=e.data.keyEventData,r=new KeyboardEvent("keydown",{key:t,ctrlKey:i,shiftKey:o,bubbles:!0,cancelable:!0});document.dispatchEvent(r)}}};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.widgetProperties.uuid}`;if(t.getElementById(i))return;let o=Xn({instanceId:this.widgetProperties.uuid}),r=t.createElement("script");r.id=i,r.textContent=o,t.body.appendChild(r)}catch(i){console.warn("[WidgetIframe] Failed to inject swipe script into iframe:",i)}}updateConfig(e){this.widgetUrl=this.resolveUrl(e.widgetUrl)}isValidProtocol(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch(t){return console.warn(`[Embed Widget] Invalid Url: ${e}, Error: ${t}`),!1}}resolveUrl(e){if(!e)return null;try{let t=new URL(e,window.location.origin);return this.isValidProtocol(t.href)?this._sanitizer.bypassSecurityTrustResourceUrl(t.href):null}catch(t){return console.warn(`[Embed Widget] Can't resolve Url: ${e}, Error: ${t}`),null}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-iframe"]],viewQuery:function(t,i){t&1&&$(i.iframe,pc,5),t&2&&ce()},features:[ne],decls:4,vars:5,consts:[["plainIframe",""],[2,"overflow","hidden",3,"configChange","config","id"],["width","100%","height","100%","frameborder","0",1,"widgetIframe",3,"src"],[2,"padding","15px"],[1,"widgetOverlay"]],template:function(t,i){t&1&&(g(0,"widget-host",1),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),Ne(1,fc,2,1,"iframe",2)(2,vc,7,0,"div",3),z(3,"div",4),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),Le(i.widgetUrl?1:2),w(2),se("display",i.displayTransparentOverlay()))},dependencies:[me],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 bc=["canvasMainRef"];function yc(n,a){if(n&1){let e=ee();g(0,"button",14),I("click",function(){O(e);let i=j();return R(i.startTimer())}),p(1," Start "),b()}}function wc(n,a){if(n&1){let e=ee();g(0,"button",15),I("click",function(){O(e);let i=j();return R(i.pauseTimer())}),p(1," Pause "),b()}}var sl=(()=>{class n extends ue{canvas=W(Ue);canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;maxTextWidth=0;maxTextHeight=0;TimersService=W(Hr);dataValue=null;zoneState=null;currentValueLength=0;valueFontSize=1;flashOn=!1;flashInterval=null;timerRunning=!1;timeName="race";warnColor=null;warmContrast=null;textColor=null;timerSub=null;constructor(){super(),this.defaultConfig={timerLength:-300,color:"contrast",playBeeps:!0},Z(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig(),this.subscribeTimer()}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*.95),this.maxTextHeight=Math.floor(this.cssHeight),this.drawWidget()}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.startWidget()}startWidget(){this.getColors(this.widgetProperties.config.color)}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}subscribeTimer(){this.timerRunning=this.TimersService.isRunning(this.timeName),this.timerSub=this.TimersService.createTimer(this.timeName,this.widgetProperties.config.timerLength,1e3).subscribe(e=>{this.dataValue=e,e>0?this.zoneState=K.Normal:e===0?this.beep(500,2e3):e>-10?(this.zoneState=K.Alarm,this.beep(450,100)):e>=-29?this.zoneState=K.Warn:e===-30?(this.zoneState=K.Warn,this.beep(400,200)):this.zoneState=K.Normal,this.zoneState==K.Alarm&&!this.flashInterval?this.flashInterval=setInterval(()=>{this.flashOn=!this.flashOn,this.drawWidget()},500):this.zoneState!=K.Alarm&&(clearInterval(this.flashInterval),this.flashInterval=null),this.drawWidget()})}startTimer(){this.TimersService.startTimer(this.timeName),this.timerRunning=!0}resetTimer(){this.unsubscribeTimer(),this.TimersService.deleteTimer(this.timeName),this.timerRunning=!1,this.subscribeTimer()}pauseTimer(){this.TimersService.stopTimer(this.timeName),this.timerRunning=!1}roundToMin(){let e=this.dataValue;this.dataValue<0&&(e=e*-1);let t=e%60;this.dataValue>0?t>30?this.TimersService.setTimer(this.timeName,this.dataValue+(60-t)):this.TimersService.setTimer(this.timeName,this.dataValue-t):t>30?this.TimersService.setTimer(this.timeName,this.dataValue-(60-t)):this.TimersService.setTimer(this.timeName,this.dataValue+t)}addTime(e){this.TimersService.setTimer(this.timeName,this.dataValue+e)}removeTime(e){this.TimersService.setTimer(this.timeName,this.dataValue-e)}getColors(e){switch(e){case"contrast":this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"blue":this.textColor=this.theme().blue,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"green":this.textColor=this.theme().green,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"pink":this.textColor=this.theme().pink,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"orange":this.textColor=this.theme().orange,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"purple":this.textColor=this.theme().purple,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"grey":this.textColor=this.theme().grey,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;case"yellow":this.textColor=this.theme().yellow,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break;default:this.textColor=this.theme().contrast,this.warnColor=this.theme().zoneAlarm,this.warmContrast=this.theme().zoneAlarm;break}}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}unsubscribeTimer(){this.timerSub?.unsubscribe()}ngOnDestroy(){this.timerSub?.unsubscribe();try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}clearInterval(this.flashInterval),this.flashInterval=null,this.destroyDataStreams()}drawWidget(){if(!this.canvasCtx)return;this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight);let e;if(this.dataValue!=null){let t=Math.abs(this.dataValue),i=Math.floor(t/60),o=Math.floor(t%60);e=`${i}:${("0"+o).slice(-2)}`,this.dataValue<0&&(e=`-${e}`)}else e="--";switch(this.currentValueLength!==e.length&&(this.currentValueLength=e.length,this.valueFontSize=this.canvas.calculateOptimalFontSize(this.canvasCtx,e,this.maxTextWidth,this.maxTextHeight,"bold")),this.zoneState){case K.Alarm:this.flashOn?this.canvasCtx.fillStyle=this.textColor:(this.canvas.drawRectangle(this.canvasCtx,0,0,this.cssWidth,this.cssHeight,this.warnColor),this.canvasCtx.fillStyle=this.textColor);break;case K.Warn:this.canvasCtx.fillStyle=this.warnColor;break;default:this.canvasCtx.fillStyle=this.textColor}this.canvas.drawText(this.canvasCtx,e,this.cssWidth/2,this.cssHeight/2,this.maxTextWidth,this.maxTextHeight,"bold",this.canvasCtx.fillStyle,"center","middle")}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-racetimer"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,bc,5),t&2&&ce()},features:[ne],decls:35,vars:4,consts:[["canvasMainRef",""],[1,"racetimer-wrapper",3,"configChange","config","id"],[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 o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),g(3,"div",3)(4,"div",4)(5,"button",5),I("click",function(){return O(o),R(i.removeTime(5))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",8),p(9,"-5s"),b()()()(),We(),g(10,"button",5),I("click",function(){return O(o),R(i.removeTime(60))}),g(11,"mat-icon",6),q(),g(12,"svg",7)(13,"text",8),p(14,"-60s"),b()()()(),We(),g(15,"button",9),I("click",function(){return O(o),R(i.resetTimer())}),g(16,"mat-icon",6),q(),g(17,"svg",7)(18,"text",8),p(19,"Reset"),b()()()(),We(),g(20,"button",5),I("click",function(){return O(o),R(i.addTime(60))}),g(21,"mat-icon",6),q(),g(22,"svg",7)(23,"text",8),p(24,"+60s"),b()()()(),We(),g(25,"button",5),I("click",function(){return O(o),R(i.addTime(5))}),g(26,"mat-icon",6),q(),g(27,"svg",7)(28,"text",8),p(29,"+5s"),b()()()()(),We(),g(30,"div",10),Ne(31,yc,2,0,"button",11),Ne(32,wc,2,0,"button",12),g(33,"button",13),I("click",function(){return O(o),R(i.roundToMin())}),p(34," Synch "),b()()()()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(31),Le(i.timerRunning?-1:31),w(),Le(i.timerRunning?32:-1))},dependencies:[me,wt,yt,bt],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 Cc=["canvasMainRef"];function xc(n,a){if(n&1&&(g(0,"div",10),q(),g(1,"svg",11)(2,"text",12),p(3),b()()(),We(),g(4,"div",13),q(),g(5,"svg",14)(6,"text",15)(7,"tspan",16),p(8,"\u2691"),b(),p(9),g(10,"tspan",17),p(11,"\u2691"),b()()()(),We(),g(12,"div",18),q(),g(13,"svg",19)(14,"text",12),p(15),b()()()),n&2){let e=j();w(3),Re(e.portBiasValue()),w(6),Re(e.lineLengthValue()),w(6),Re(e.stbBiasValue())}}function kc(n,a){if(n&1){let e=ee();g(0,"button",20),I("click",function(){O(e);let i=j();return R(i.setLineEnd("port"))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",21),p(4,"Port End"),b()()()(),We(),g(5,"button",22),I("click",function(){O(e);let i=j();return R(i.setLineEnd("stb"))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",21),p(9,"Stbd End"),b()()()()}}function Sc(n,a){if(n&1){let e=ee();g(0,"button",23),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("port",5,0))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",24),p(4,"+5m"),b()()()(),We(),g(5,"button",23),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("port",-5,0))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",24),p(9,"-5m"),b()()()(),We(),g(10,"button",25),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("stb",5,0))}),g(11,"mat-icon",6),q(),g(12,"svg",7)(13,"text",24),p(14,"-5m"),b()()()(),We(),g(15,"button",25),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("stb",-5,0))}),g(16,"mat-icon",6),q(),g(17,"svg",7)(18,"text",24),p(19,"+5m"),b()()()()}}function _c(n,a){if(n&1){let e=ee();g(0,"button",23),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("port",0,i.toRadians(1)))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",24),p(4,"\u21911\xB0"),b()()()(),We(),g(5,"button",23),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("port",0,i.toRadians(-1)))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",24),p(9,"\u21931\xB0"),b()()()(),We(),g(10,"button",25),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("stb",0,i.toRadians(1)))}),g(11,"mat-icon",6),q(),g(12,"svg",7)(13,"text",24),p(14,"\u21911\xB0"),b()()()(),We(),g(15,"button",25),I("click",function(){O(e);let i=j();return R(i.adjustLineEnd("stb",0,i.toRadians(-1)))}),g(16,"mat-icon",6),q(),g(17,"svg",7)(18,"text",24),p(19,"\u21931\xB0"),b()()()()}}function Tc(n,a){n&1&&z(0,"div",9)}var ll=(()=>{class n extends ue{signalk=W(Pt);dashboard=W(et);canvas=W(Ue);canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;dtsValue=null;lengthValue=null;biasValue=null;labelColor=H(void 0);valueColor=void 0;dtsColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;portBiasValue=H("");lineLengthValue=H("");stbBiasValue=H("");infoFontSize="1em";initCompleted=!1;isDestroyed=!1;mode=0;destroyRef=W(Nt);constructor(){super(),this.defaultConfig={displayName:"DTS",filterSelfPaths:!0,playBeeps:!0,convertUnitTo:"m",convertUnitToGroup:"Length",numDecimal:0,ignoreZones:!0,color:"contrast",enableTimeout:!1,dataTimeout:5,paths:{dtsPath:{description:"Distance to Start Line",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:500},lineLengthPath:{description:"Length of the start line",path:"self.navigation.racing.startLineLength",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3},lineBiasPath:{description:"Bias of the start line to starboard end",path:"self.navigation.racing.stbLineBias",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!0,pathSkUnitsFilter:"m",sampleTime:1e3}}},Z(()=>{if(this.theme()){if(!this.initCompleted)return;He(()=>{this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})}})}ngOnInit(){this.validateConfig(),this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color}ngAfterViewInit(){this.initCompleted=!0,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.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(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.startWidget())}startWidget(){this.widgetProperties.config.paths.dtsPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineLengthPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.widgetProperties.config.paths.lineBiasPath.convertUnitTo=this.widgetProperties.config.convertUnitTo||"m",this.unsubscribeDataStream(),this.dtsValue=null,this.lengthValue=null,this.biasValue=null,this.drawUnit(),this.observeDataStream("dtsPath",e=>{if(this.dtsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.dtsValue?this.dtsValue<0?this.dtsColor=this.theme().zoneAlarm:this.dtsValue<10?this.dtsColor=this.theme().zoneWarn:this.dtsValue<20?this.dtsColor=this.theme().zoneAlert:this.dtsColor=this.valueColor:this.dtsColor=this.valueColor;else switch(e.state){case K.Alarm:this.dtsColor=this.theme().zoneAlarm;break;case K.Warn:this.dtsColor=this.theme().zoneWarn;break;case K.Alert:this.dtsColor=this.theme().zoneAlert;break;default:this.dtsColor=this.valueColor;break}this.drawWidget()}),this.observeDataStream("lineLengthPath",e=>{this.lengthValue=e.data.value,this.drawWidget()}),this.observeDataStream("lineBiasPath",e=>{this.biasValue=e.data.value,this.drawLenBias()}),this.signalk.subscribeRequest().pipe(pt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}drawWidget(){this.canvasCtx&&((!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==this.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),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),this.drawDToLine(),this.drawLenBias(),this.drawUnit())}drawDToLine(){let e=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.dtsColor)}getValueText(){return this.dtsValue===null?"--":this.dtsValue.toFixed(this.widgetProperties.config.numDecimal)}drawUnit(){let e=this.widgetProperties.config.paths.dtsPath.convertUnitTo;this.canvas.drawText(this.canvasCtx,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(){if(this.widgetProperties.config.paths.lineLengthPath.path!==""&&this.lengthValue){let e=this.widgetProperties.config.paths.lineLengthPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.lineLengthValue.set(`\u2015${this.applyDecorations(this.lengthValue.toFixed(this.widgetProperties.config.numDecimal))}${e}\u2015`)}if(this.widgetProperties.config.paths.lineBiasPath.path!==""&&this.biasValue){let e=this.widgetProperties.config.paths.lineBiasPath.convertUnitTo;e==="feet"&&(e="\u2032"),this.biasValue<0?(this.portBiasValue.set("+"+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e)):(this.portBiasValue.set(" "+(-this.biasValue).toFixed(this.widgetProperties.config.numDecimal)+e),this.stbBiasValue.set(" +"+this.biasValue.toFixed(this.widgetProperties.config.numDecimal)+e))}}applyDecorations(e){switch(this.widgetProperties.config.paths.dtsPath.convertUnitTo){case"percent":case"percentraw":e+="%";break;default:break}return e}toggleMode(){this.mode=(this.mode+1)%4,this.drawWidget()}setLineEnd(e){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,position:"bow"},this.widgetProperties.uuid)}adjustLineEnd(e,t,i){return this.signalk.putRequest("navigation.racing.setStartLine",{end:e,delta:t,rotate:i||null},this.widgetProperties.uuid)}toRadians(e){return e?e*(Math.PI/180):null}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.canvas.releaseCanvas(this.canvasElement,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-racer-line"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,Cc,5),t&2&&ce()},features:[ne],decls:15,vars:4,consts:[["canvasMainRef",""],[1,"line-wrapper",3,"configChange","config","id"],[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 o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(1,"div",2),z(2,"canvas",3,0),b(),g(4,"div",4)(5,"button",5),I("click",function(){return O(o),R(i.toggleMode())}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",8),p(9,"\u22EE"),b()()()(),Ne(10,xc,16,3)(11,kc,10,0)(12,Sc,20,0)(13,_c,20,0),b(),Ne(14,Tc,1,0,"div",9),b()}if(t&2){let o;le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(10),Le((o=i.mode)===0?10:o===1?11:o===2?12:o===3?13:-1),w(4),Le(i.dashboard.isDashboardStatic()?-1:14)}},dependencies:[me,Ge,Bt,wt,yt,bt],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 Ec=["canvasMainRef"];function Dc(n,a){if(n&1&&(g(0,"div",9),q(),g(1,"svg",12)(2,"text",13),p(3),b()()()),n&2){let e=j();w(3),Qe("Start at: ",e.startAtTime())}}function Mc(n,a){if(n&1){let e=ee();g(0,"button",14),I("click",function(){O(e);let i=j();return R(i.sendStartTimerCommand("start"))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",15),p(4,"Start"),b()()()(),We(),g(5,"button",16),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(-60))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",15),p(9,"-1m"),b()()()(),We(),g(10,"button",16),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(60))}),g(11,"mat-icon",6),q(),g(12,"svg",7)(13,"text",15),p(14,"+1m"),b()()()()}}function Pc(n,a){if(n&1){let e=ee();g(0,"button",14),I("click",function(){O(e);let i=j();return R(i.sendStartTimerCommand("sync"))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",15),p(4,"Sync"),b()()()(),We(),g(5,"button",17),I("click",function(){O(e);let i=j();return R(i.sendStartTimerCommand("reset"))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",15),p(9,"Reset"),b()()()()}}function Ac(n,a){if(n&1){let e=ee();g(0,"button",18),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(-60))}),g(1,"mat-icon",6),q(),g(2,"svg",7)(3,"text",15),p(4,"-1m"),b()()()(),We(),g(5,"button",16),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(-1))}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",15),p(9,"-1s"),b()()()(),We(),g(10,"button",16),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(1))}),g(11,"mat-icon",6),q(),g(12,"svg",7)(13,"text",15),p(14,"+1s"),b()()()(),We(),g(15,"button",18),I("click",function(){O(e);let i=j();return R(i.adjustStartTime(60))}),g(16,"mat-icon",6),q(),g(17,"svg",7)(18,"text",15),p(19,"+1m"),b()()()()}}function Wc(n,a){if(n&1){let e=ee();g(0,"input",19),he("ngModelChange",function(i){O(e);let o=j();return de(o.startAtTimeEdit,i)||(o.startAtTimeEdit=i),R(i)}),I("change",function(){O(e);let i=j();return R(i.setStartTime())}),b()}if(n&2){let e=j();le("ngModel",e.startAtTimeEdit)}}function Oc(n,a){n&1&&z(0,"div",11)}var dl=(()=>{class n extends ue{signalk=W(Pt);router=W(Rn);dashboard=W(et);canvas=W(Ue);canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;ttsValue=null;dtsValue=null;labelColor=H(void 0);valueColor=void 0;valueStateColor=void 0;maxValueTextWidth=0;maxValueTextHeight=0;flashInterval=null;isDestroyed=!1;mode=H(1);destroyRef=W(Nt);startAtTime=H("00:00:00");startAtTimeEdit=En("");constructor(){super(),this.defaultConfig={displayName:"TTS",nextDashboard:0,playBeeps:!0,filterSelfPaths:!0,paths:{ttsPath:{description:"Time to the Start in seconds",path:"self.navigation.racing.timeToStart",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"s",showConvertUnitTo:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"s",sampleTime:500},startTimePath:{description:"Time of the start",path:"self.navigation.racing.startTime",source:"default",pathType:"Date",pathRequired:!1,isPathConfigurable:!1,sampleTime:500},dtsPath:{description:"Distance to Start Line path, used to determine OCS",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!1,convertUnitTo:"m",showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m",sampleTime:500}},color:"contrast",enableTimeout:!1,dataTimeout:5,ignoreZones:!0},Z(()=>{this.theme()&&He(()=>{this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color,this.drawWidget()})})}ngOnInit(){this.validateConfig()}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.maxValueTextWidth=Math.floor(this.cssWidth*.95),this.maxValueTextHeight=Math.floor(this.cssHeight*.95),this.drawWidget()}}),!this.isDestroyed&&(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.startWidget(),this.drawWidget())}beep(e=440,t=100){if(this.widgetProperties.config.playBeeps){let i=new(window.AudioContext||window.webkitAudioContext),o=i.createOscillator(),r=i.createGain();o.connect(r),r.connect(i.destination),o.type="sine",o.frequency.value=e,r.gain.value=.1,o.start(),o.stop(i.currentTime+t/1e3)}}startWidget(){this.unsubscribeDataStream(),this.ttsValue=null,this.dtsValue=null,this.labelColor.set(ie(this.widgetProperties.config.color,this.theme()).dim),this.valueColor=ie(this.widgetProperties.config.color,this.theme()).color,this.observeDataStream("ttsPath",e=>{let t=this.ttsValue;if(this.ttsValue=e.data.value,this.widgetProperties.config.ignoreZones)this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=this.dtsValue<0?this.theme().zoneAlarm:this.theme().zoneWarn:this.ttsValue<60?this.valueStateColor=this.theme().zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor;else switch(e.state){case K.Alarm:this.valueStateColor=this.theme().zoneAlarm;break;case K.Warn:this.valueStateColor=this.theme().zoneWarn;break;case K.Alert:this.valueStateColor=this.theme().zoneAlert;break;default:this.valueStateColor=this.valueColor;break}this.ttsValue===0?(this.mode.set(2),this.dtsValue<0&&(this.valueStateColor=this.theme().zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.drawWidget(),this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"&&t!==0&&(this.ttsValue===0?this.beep(500,1e3):this.ttsValue<10?this.beep(450,100):this.ttsValue<60&&this.ttsValue%10===0?this.beep(400,150):this.ttsValue%60===0&&this.beep(350,200)),this.widgetProperties.config.nextDashboard>=0&&t===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0)&&this.router.navigate(["/dashboard",this.widgetProperties.config.nextDashboard])}),this.observeDataStream("startTimePath",e=>{if(!e.data.value)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else{let t=new Date(e.data.value);this.startAtTimeEdit.set(t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit())}this.drawWidget()}),this.observeDataStream("dtsPath",e=>{this.dtsValue=e.data.value}),this.signalk.subscribeRequest().pipe(pt(this.destroyRef)).subscribe(e=>{e.widgetUUID===this.widgetProperties.uuid&&(e.statusCode===200?this.beep(600,20):this.app.sendSnackbarNotification(`Please check the Signalk-racer plugin installation/configuration. Error: ${e.message}`,0,!1))})}isStartTimerRunning(){return this.ttsValue>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}updateConfig(e){this.widgetProperties.config=e,this.startWidget(),this.drawWidget()}ngOnDestroy(){this.isDestroyed=!0,this.destroyDataStreams(),this.flashInterval&&(clearInterval(this.flashInterval),this.flashInterval=null);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.widgetProperties.config.displayName)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.widgetProperties.config.displayName,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=this.widgetProperties.config.displayName),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=this.getValueText();this.canvas.drawText(this.canvasCtx,e,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.3),this.maxValueTextWidth,this.maxValueTextHeight,"bold",this.valueStateColor)}getValueText(){if(this.ttsValue===null)return"--";let e=this.ttsValue,t=Math.floor(e/60);if(t>=60){let i=Math.floor(t/60),o=Math.floor(t%60),r=Math.floor(e%60);return`${i.toString()}:${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}else{let i=Math.floor(t%60),o=Math.floor(e%60);return`${i.toString().padStart(1,"0")}:${o.toString().padStart(2,"0")}`}}toggleMode(){switch(this.mode.update(e=>(e+1)%5),this.mode()){case 1:this.isStartTimerRunning()&&this.mode.set(2);break;case 2:this.ttsValue!==0&&!this.isStartTimerRunning()&&this.mode.set(3);break;default:}this.drawWidget()}sendStartTimerCommand(e){let t=this.signalk.putRequest("navigation.racing.setStartTime",{command:e},this.widgetProperties.uuid);switch(e){case"start":this.mode.set(0);break;case"reset":this.startAtTime.set("HH:MM:SS"),this.mode.set(1);break;default:}return t}adjustStartTime(e){return this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:e},this.widgetProperties.uuid)}setStartTime(){let e=new Date,t=this.startAtTimeEdit().split(":").map(Number),i=t[0],o=t[1],r=t.length>=3?t[2]:0,s=new Date(e);s.setHours(i,o,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.widgetProperties.uuid)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-racer-timer"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,Ec,5),t&2&&ce()},inputs:{startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},features:[ne],decls:16,vars:4,consts:[["canvasMainRef",""],[1,"timer-wrapper",3,"configChange","config","id"],[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 o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(1,"div",2),z(2,"canvas",3,0),b(),g(4,"div",4)(5,"button",5),I("click",function(){return O(o),R(i.toggleMode())}),g(6,"mat-icon",6),q(),g(7,"svg",7)(8,"text",8),p(9,"\u22EE"),b()()()(),Ne(10,Dc,4,1,"div",9)(11,Mc,15,0)(12,Pc,10,0)(13,Ac,20,0)(14,Wc,1,1,"input",10),b(),Ne(15,Oc,1,0,"div",11),b()}if(t&2){let o;le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(10),Le((o=i.mode())===0?10:o===1?11:o===2?12:o===3?13:o===4?14:-1),w(5),Le(i.dashboard.isDashboardStatic()?-1:15)}},dependencies:[me,Ge,Bt,wt,yt,bt,gr,cr,ur,mr],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 Rc=["gaugeBarAnimate"];function Ic(n,a){if(n&1&&(q(),G(0,"rect",14)),n&2){let e=a.$implicit,t=j();X("fill",e.color)("x",5+(e.from-t.gaugeMinValue())*t.scaleSliceValue())("width",(e.to-e.from)*t.scaleSliceValue())}}var hl=(()=>{class n{gaugeBarAnimate=Y("gaugeBarAnimate");displayName=N.required();displayNameColor=N.required();dataValue=N.required();dataValueLabel=N.required();unitLabel=N.required();barColor=N.required();barColorGradient=N.required();barColorBackground=N.required();gaugeMinValue=N.required();gaugeMaxValue=N.required();highlights=N.required();scaleSliceValue=Ze(()=>{let e=this.gaugeMaxValue()-this.gaugeMinValue();return e!==0?195/e:0});newGaugeValue=H(null);oldGaugeValue=H(null);scheduleRafId=null;constructor(){Z(()=>{let e=this.gaugeMinValue(),t=this.dataValue();t===null&&(t=e),He(()=>{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=V({type:n,selectors:[["svg-simple-linear-gauge"]],viewQuery:function(t,i){t&1&&$(i.gaugeBarAnimate,Rc,5),t&2&&ce()},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&&(q(),T(0,"svg",1)(1,"defs",2)(2,"linearGradient",3),G(3,"stop",4)(4,"stop",5),P(),G(5,"linearGradient",6),P(),T(6,"g",7),G(7,"rect",8),T(8,"defs")(9,"g",9),G(10,"rect",10)(11,"rect",11),P()(),T(12,"use",12),G(13,"animateTransform",13,0),P(),rt(15,Ic,1,3,":svg:rect",14,gt),P(),T(17,"g",15)(18,"text",16)(19,"tspan",17),p(20),P()(),T(21,"text",18)(22,"tspan",19),p(23),P(),T(24,"tspan",20),p(25),P()()()()),t&2&&(w(3),X("stop-color",i.barColorGradient()),w(),X("stop-color",i.barColorGradient()),w(3),X("fill",i.barColorBackground()),w(5),se("fill",i.barColor()),w(),X("from",i.oldGaugeValue()+" 1")("to",i.newGaugeValue()+" 1"),w(2),st(i.highlights()),w(4),X("fill",i.displayNameColor()),w(),Qe(" ",i.displayName()),w(3),Re(i.dataValueLabel()),w(2),Re(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 cl=(()=>{class n extends ue{_units=W(Ht);unitsLabel=H("");dataLabelValue=H("0");dataValue=H(null);barColor=H("");barColorGradient=H("");barColorBackground=H("");highlights=H([],{equal:zt});zonesSub;constructor(){super(),this.defaultConfig={displayName:"Gauge Label",filterSelfPaths:!0,paths:{gaugePath:{description:"Numeric Data",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!0,pathSkUnitsFilter:"V",convertUnitTo:"V",sampleTime:500}},displayScale:{lower:0,upper:15,type:"linear"},gauge:{type:"simpleLinear",unitLabelFormat:"full"},numInt:1,numDecimal:2,ignoreZones:!1,color:"contrast",enableTimeout:!1,dataTimeout:5},Z(()=>{this.theme()&&(this.updateGaugeSettings(),this.startWidget())})}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe(),this.widgetProperties.config.gauge.unitLabelFormat=="abr"?this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo.substr(0,1)):this.unitsLabel.set(this.widgetProperties.config.paths.gaugePath.convertUnitTo),this.observeDataStream("gaugePath",e=>{if(e.data.value==null?(this.dataValue.set(this.widgetProperties.config.displayScale.lower),this.dataLabelValue.set("--")):(this.dataValue.set(Math.min(Math.max(e.data.value,this.widgetProperties.config.displayScale.lower),this.widgetProperties.config.displayScale.upper)),this.dataLabelValue.set(this.dataValue().toFixed(this.widgetProperties.config.numDecimal))),!this.widgetProperties.config.ignoreZones)switch(e.state){case K.Alarm:this.barColor.set(this.theme().zoneAlarm);break;case K.Warn:this.barColor.set(this.theme().zoneWarn);break;case K.Alert:this.barColor.set(this.theme().zoneAlert);break;case K.Nominal:this.barColor.set(this.theme().zoneNominal);break;default:this.barColor.set(ie(this.widgetProperties.config.color,this.theme()).color)}}),this.widgetProperties.config.ignoreZones?this.highlights.set([]):(this.observeMetaStream(),this.zonesSub=this.zones$.subscribe(e=>{e&&e.length>0?this.highlights.set(ji(e,this.theme(),this.widgetProperties.config.paths.gaugePath.convertUnitTo,this._units,this.widgetProperties.config.displayScale.lower,this.widgetProperties.config.displayScale.upper)):this.highlights.set([])}))}updateConfig(e){this.widgetProperties.config=e,this.updateGaugeSettings(),this.startWidget()}updateGaugeSettings(){switch(this.barColorBackground.set(this.theme().background),this.widgetProperties.config.color){case"contrast":this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer);break;case"blue":this.barColor.set(this.theme().blue),this.barColorGradient.set(this.theme().blueDimmer);break;case"green":this.barColor.set(this.theme().green),this.barColorGradient.set(this.theme().greenDimmer);break;case"pink":this.barColor.set(this.theme().pink),this.barColorGradient.set(this.theme().pinkDimmer);break;case"orange":this.barColor.set(this.theme().orange),this.barColorGradient.set(this.theme().orangeDimmer);break;case"purple":this.barColor.set(this.theme().purple),this.barColorGradient.set(this.theme().purpleDimmer);break;case"grey":this.barColor.set(this.theme().grey),this.barColorGradient.set(this.theme().greyDimmer);break;case"yellow":this.barColor.set(this.theme().yellow),this.barColorGradient.set(this.theme().yellowDimmer);break;default:this.barColor.set(this.theme().contrast),this.barColorGradient.set(this.theme().contrastDimmer)}}ngOnDestroy(){this.destroyDataStreams(),this.unsubscribeMetaStream(),this.zonesSub?.unsubscribe()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-simple-linear"]],features:[ne],decls:2,vars:13,consts:[[3,"configChange","config","id"],[1,"simpleLinearGaugeContainer",3,"displayName","displayNameColor","unitLabel","dataValue","dataValueLabel","barColor","barColorGradient","barColorBackground","gaugeMaxValue","gaugeMinValue","highlights"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),z(1,"svg-simple-linear-gauge",1),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("displayName",i.widgetProperties.config.displayName)("displayNameColor",i.theme().contrastDim)("unitLabel",i.unitsLabel())("dataValue",i.dataValue())("dataValueLabel",i.dataLabelValue())("barColor",i.barColor())("barColorGradient",i.barColorGradient())("barColorBackground",i.barColorBackground())("gaugeMaxValue",i.widgetProperties.config.displayScale.upper)("gaugeMinValue",i.widgetProperties.config.displayScale.lower)("highlights",i.highlights()))},dependencies:[me,hl],styles:[".simpleLinearGaugeContainer[_ngcontent-%COMP%]{display:block;position:relative;height:100%;width:100%;padding:0}"]})}return n})();function Nc(n,a){if(n&1){let e=ee();g(0,"h3"),p(1,"Getting Started"),b(),g(2,"p"),p(3,"Welcome to KIP! Here are some basic gestures to help you navigate the application:"),b(),g(4,"table",2)(5,"thead")(6,"tr")(7,"th"),p(8,"Actions"),b(),g(9,"th"),p(10,"Touch"),b(),g(11,"th"),p(12,"Mouse"),b(),g(13,"th"),p(14,"Keyboard Shortcuts"),b()()(),g(15,"tbody")(16,"tr")(17,"td"),p(18,"Open Actions menu"),b(),g(19,"td"),p(20,"Swipe left"),b(),g(21,"td"),p(22,"Click, drag left, and release"),b(),g(23,"td")(24,"kbd"),p(25,"Shift"),b(),p(26," + "),g(27,"kbd"),p(28,"Ctrl"),b(),p(29," + "),g(30,"kbd",3),p(31,"\u2190"),b(),p(32," (Left Arrow)"),b()(),g(33,"tr")(34,"td"),p(35,"Open Notification menu"),b(),g(36,"td"),p(37,"Swipe right"),b(),g(38,"td"),p(39,"Click, drag right, and release"),b(),g(40,"td")(41,"kbd"),p(42,"Shift"),b(),p(43," + "),g(44,"kbd"),p(45,"Ctrl"),b(),p(46," + "),g(47,"kbd",3),p(48,"\u2192"),b(),p(49," (Right Arrow)"),b()(),g(50,"tr")(51,"td"),p(52,"Cycle through dashboards"),b(),g(53,"td"),p(54,"Swipe up/down"),b(),g(55,"td"),p(56,"Click, drag up/down, and release"),b(),g(57,"td")(58,"kbd"),p(59,"Shift"),b(),p(60," + "),g(61,"kbd"),p(62,"Ctrl"),b(),p(63," + "),g(64,"kbd",3),p(65,"\u2191"),b(),p(66,"/"),g(67,"kbd",3),p(68,"\u2193"),b(),p(69," (Up/Down Arrow)"),b()(),g(70,"tr")(71,"td"),p(72,"Toggle Fullscreen"),b(),g(73,"td"),p(74,"N/A"),b(),g(75,"td"),p(76,"N/A"),b(),g(77,"td")(78,"kbd"),p(79,"Shift"),b(),p(80," + "),g(81,"kbd"),p(82,"Ctrl"),b(),p(83," + "),g(84,"kbd"),p(85,"F"),b()()(),g(86,"tr")(87,"td"),p(88,"Toggle Night mode"),b(),g(89,"td"),p(90,"N/A"),b(),g(91,"td"),p(92,"N/A"),b(),g(93,"td")(94,"kbd"),p(95,"Shift"),b(),p(96," + "),g(97,"kbd"),p(98,"Ctrl"),b(),p(99," + "),g(100,"kbd"),p(101,"N"),b()()(),g(102,"tr")(103,"td"),p(104,"Toggle dashboard edit mode"),b(),g(105,"td"),p(106,"N/A"),b(),g(107,"td"),p(108,"N/A"),b(),g(109,"td")(110,"kbd"),p(111,"Shift"),b(),p(112," + "),g(113,"kbd"),p(114,"Ctrl"),b(),p(115," + "),g(116,"kbd"),p(117,"E"),b()()()()(),g(118,"i"),p(119,"Note that the words Touch and Tap are synonymous with mouse click."),b(),z(120,"br")(121,"br"),g(122,"h3"),p(123,"Log in to Signal K"),b(),g(124,"p"),p(125," The first step is to configure Signal K server authentication ("),g(126,"i"),p(127,"a pre-existing Signal K server username and password is required"),b(),p(128,"). Use the table above to find the gesture, mouse or keyboard shortcut to open the Actions menu, then select "),g(129,"strong"),p(130,"Settings"),b(),p(131,". Toggle "),g(132,"strong"),p(133,"Login to server"),b(),p(134," and enter your Signal K credentials. "),b(),g(135,"ul")(136,"li")(137,"strong"),p(138,"Why log in?"),b(),p(139," Logging in allows KIP to do two things: 1) to send commands to Signal K and 2) to save its configuration on the server so it can be shared between multiple devices. It is the recommended method to use KIP. "),b(),g(140,"li"),p(141," If you don\u2019t have a Signal K account, ask your Signal K administrator, access the Signal K Admin Settings / Users page and create a user or check your server\u2019s documentation for setup instructions. "),b(),g(142,"li"),p(143," After entering your credentials, select "),g(144,"strong"),p(145,"Login"),b(),p(146," or "),g(147,"strong"),p(148,"Connect"),b(),p(149,". If successful, your connection status will update and live data will appear in KIP. "),b(),g(150,"li"),p(151," If you see an error, double-check your username and password, and make sure your device is on the same network as your Signal K server. "),b()(),g(152,"h3"),p(153,"Option 1: Load Demonstration Dashboards"),b(),g(154,"p"),p(155," Try the sample dashboards using data from your server: "),z(156,"br"),g(157,"button",4),I("click",function(){O(e);let i=j();return R(i.loadDemoConfig())}),p(158,"Load Demo"),b()(),g(159,"h3"),p(160,"Option 2: Create Your Own Layout"),b(),g(161,"p"),p(162,' The text you are reading is actually a full screen widget in a dashboard. Dashboards are "Locked" by default to prevent accidental modifications. To edit a dashboard, swipe left and hit the bottom unlock menu button. You can later add and manage dashboards using the Dashboards page from the Actions menu. '),b(),g(163,"p")(164,"strong"),p(165,"Try editing the Dashboard now to receive further instructions!"),b()()}}function Lc(n,a){n&1&&(g(0,"h2"),p(1,"Changing Layouts"),b(),p(2," Follow these simple steps to learn how to change your dashboard layout: "),g(3,"ol")(4,"li"),p(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."),b(),g(6,"li"),p(7,"Touch & Hold or Click & Hold in an empty area to open the Add Widget selection panel."),b(),g(8,"li"),p(9,"Choose a widget from the selection panel to add it to the dashboard."),b()(),g(10,"h3"),p(11,"Possible widget operations"),b(),g(12,"ul")(13,"li")(14,"strong"),p(15,"Touch and drag"),b(),p(16," to move widgets"),b(),g(17,"li")(18,"strong"),p(19,"Drag corners and sides"),b(),p(20," to resize widgets"),b(),g(21,"li")(22,"strong"),p(23,"Double Tap"),b(),p(24," on a widget to configure it"),b(),g(25,"li")(26,"strong"),p(27,"Press and Hold"),b(),p(28," on a widget to delete or duplicate widgets"),b()(),g(29,"h2"),p(30,"Exiting dashboard edit mode"),b(),g(31,"p"),p(32,"Use the Save or Cancel buttons in the lower right corner to either persist your changes or revert changes."),b(),g(33,"h2"),p(34,"Adding more dashboards"),b(),g(35,"p"),p(36,"Swipe left and hit the Dashboards button. From this page you can add, rename, order, delete, and duplicate entire dashboards."),b())}var ul=(()=>{class n extends ue{dashboard=W(et);settings=W(ki);constructor(){super()}loadDemoConfig(){this.settings.loadDemoConfig()}startWidget(){}updateConfig(){}ngOnDestroy(){this.destroyDataStreams()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-tutorial"]],features:[ne],decls:4,vars:3,consts:[[3,"configChange","config","id"],[1,"tutorial-container"],[1,"nav-table"],[2,"font-size","x-large"],["mat-raised-button","",2,"margin-left","15px",3,"click"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(){return i.updateConfig()}),g(1,"div",1),Ne(2,Nc,166,0)(3,Lc,37,0),b()()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(2),Le(i.dashboard.isDashboardStatic()?2:3))},dependencies:[me,wt],styles:[".tutorial-container[_ngcontent-%COMP%]{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow:none}.tutorial-container[_ngcontent-%COMP%]{padding:0 15px}.nav-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;margin-bottom:2em}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .nav-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border:1px solid #bbb;padding:.5em 1em;text-align:center}.nav-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background:#ddd;color:#222;font-weight:700}.nav-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:nth-child(2n){background:#242424}.warning[_ngcontent-%COMP%]{color:#b71c1c}.button-group[_ngcontent-%COMP%]{margin-top:2em;display:flex;gap:20px}"]})}return n})();var Vc=["rotatingDial"],zc=["awaIndicator"],Bc=["twaIndicator"],Hc=["wptIndicator"],Fc=["setIndicator"],Uc=["cogIndicator"],ml=([n,a],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(a-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,gl=(()=>{class n{rotatingDial=Y.required("rotatingDial");awaIndicator=Y.required("awaIndicator");twaIndicator=Y.required("twaIndicator");wptIndicator=Y.required("wptIndicator");setIndicator=Y.required("setIndicator");cogIndicator=Y.required("cogIndicator");compassHeading=N.required();courseOverGroundAngle=N(void 0);courseOverGroundEnabled=N.required();trueWindAngle=N.required();twsEnabled=N.required();twaEnabled=N.required();trueWindSpeed=N.required();trueWindSpeedUnit=N.required();appWindAngle=N.required();awsEnabled=N.required();appWindSpeed=N.required();appWindSpeedUnit=N.required();laylineAngle=N(void 0);closeHauledLineEnabled=N.required();sailSetupEnabled=N.required();windSectorEnabled=N.required();driftEnabled=N.required();driftSet=N(void 0);driftFlow=N(void 0);waypointAngle=N(void 0);waypointEnabled=N.required();trueWindMinHistoric=N(void 0);trueWindMidHistoric=N(void 0);trueWindMaxHistoric=N(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=H(!1);portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;CENTER=500;RADIUS=350;ANIMATION_DURATION=900;EPS_ANGLE=1;ngZone=W($e);constructor(){Z(()=>{let e=this.waypointEnabled();He(()=>{this.waypointActive.set(e)})}),Z(()=>{let e=this.compassHeading(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&He(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=t,this.headingValue=t.toString(),this.rotatingDial()?.nativeElement&&(it(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))})}),Z(()=>{let e=this.courseOverGroundAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&He(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=t-this.compass.newValue,this.cogIndicator()?.nativeElement&&it(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=this.waypointAngle();He(()=>{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&&it(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=this.appWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&He(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=t,this.awaIndicator()?.nativeElement&&it(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines()})}),Z(()=>{let e=this.trueWindAngle(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&He(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=t,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&it(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{this.laylineAngle(),this.closeHauledLineEnabled()&&He(()=>this.updateCloseHauledLines())}),Z(()=>{let e=this.driftSet(),t=Number.isFinite(e)?Math.round(e):null;t!=null&&He(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=t,this.setIndicator()?.nativeElement&&it(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=this.windSectorEnabled();this.trueWindMinHistoric(),this.trueWindMidHistoric(),this.trueWindMaxHistoric(),this.laylineAngle(),He(()=>{if(!e){this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null,this.portWindSectorPath="none",this.stbdWindSectorPath="none";return}this.updateWindSectors(!0)})})}updateCloseHauledLines(e=!0){if(!this.closeHauledLineEnabled())return;let t=Number(this.compass.newValue)||0,i=Number(this.awa.newValue)||0,o=Number(this.laylineAngle())||0,r=this.addHeading(t,this.addHeading(i,o*-1));this.animateLayline(this.portLaylinePrev,r,!0,e),this.portLaylinePrev=r;let s=this.addHeading(t,this.addHeading(i,o));this.animateLayline(this.stbdLaylinePrev,s,!1,e),this.stbdLaylinePrev=s}animateLayline(e,t,i,o=!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(!o){this.drawLayline(t,i),i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;return}let r=Kr(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,o=Math.floor(this.RADIUS*Math.sin(i)+this.CENTER),r=Math.floor(this.RADIUS*Math.cos(i)*-1+this.CENTER);t?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${o},${r}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${o},${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=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i;return}e?this.angleDelta(this.portSectorPrev.min,t.min)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(this.portSectorPrev.max,t.max)<this.EPS_ANGLE?(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)):(this.animateWindSector(this.portSectorPrev,t,!0),this.animateWindSector(this.stbdSectorPrev,i,!1)):(this.portWindSectorPath=this.computeSectorPath(t,!0),this.stbdWindSectorPath=this.computeSectorPath(i,!1)),this.portSectorPrev=t,this.stbdSectorPrev=i}animateWindSector(e,t,i){if(i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.angleDelta(e.min,t.min)<this.EPS_ANGLE&&this.angleDelta(e.mid,t.mid)<this.EPS_ANGLE&&this.angleDelta(e.max,t.max)<this.EPS_ANGLE){let s=this.computeSectorPath(t,i);i?this.portWindSectorPath=s:this.stbdWindSectorPath=s,i?this.portSectorAnimId=null:this.stbdSectorAnimId=null;return}let r=Jr(e,t,this.ANIMATION_DURATION,s=>{let h=this.computeSectorPath(s,i);i?this.portWindSectorPath=h:this.stbdWindSectorPath=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 o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}angleDelta(e,t){let i=(t-e+540)%360-180;return Math.abs(i)}computeSectorPath(e,t){let o=(Number(this.laylineAngle())||0)*(t?-1:1),r=Number(this.compass.newValue)||0,s=this.addHeading(r,this.addHeading(e.min,o)),h=this.addHeading(r,this.addHeading(e.mid,o)),m=this.addHeading(r,this.addHeading(e.max,o)),u=this.RADIUS*Math.sin(s*Math.PI/180)+this.CENTER,v=this.RADIUS*Math.cos(s*Math.PI/180)*-1+this.CENTER,x=this.RADIUS*Math.sin(h*Math.PI/180)+this.CENTER,S=this.RADIUS*Math.cos(h*Math.PI/180)*-1+this.CENTER,_=this.RADIUS*Math.sin(m*Math.PI/180)+this.CENTER,B=this.RADIUS*Math.cos(m*Math.PI/180)*-1+this.CENTER,re=Math.abs(ml([u,v],[x,S],[_,B]))>Math.PI/2?0:1,ge=ml([_,B],[u,v],[x,S])>0?0:1;return`M ${this.CENTER},${this.CENTER} L ${u},${v} A ${this.RADIUS},${this.RADIUS} 0 ${re} ${ge} ${_},${B} z`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["svg-windsteer"]],viewQuery:function(t,i){t&1&&($(i.rotatingDial,Vc,5),$(i.awaIndicator,zc,5),$(i.twaIndicator,Bc,5),$(i.wptIndicator,Hc,5),$(i.setIndicator,Fc,5),$(i.cogIndicator,Uc,5)),t&2&&ce(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],twaEnabled:[1,"twaEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:158,vars:43,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(q(),T(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),G(3,"stop",9)(4,"stop",10),P(),T(5,"linearGradient",11),G(6,"stop",9)(7,"stop",10),P(),T(8,"linearGradient",12),G(9,"stop",13)(10,"stop",14),P(),T(11,"linearGradient",15),G(12,"stop",16),P(),T(13,"clipPath",17),G(14,"ellipse",18),P(),G(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),P(),T(18,"g",22)(19,"g",23),G(20,"path",24)(21,"path",25),P()(),T(22,"g",26)(23,"g",27),G(24,"path",28)(25,"path",29)(26,"path",30),P(),T(27,"g",null,0)(29,"g",31),G(30,"path",32)(31,"path",33)(32,"path",34)(33,"path",35)(34,"path",36)(35,"path",37)(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68),T(67,"text",69)(68,"tspan",70),p(69,"330"),P()(),T(70,"text",71)(71,"tspan",72),p(72,"300"),P()(),T(73,"text",73)(74,"tspan",74),p(75,"W"),P()(),T(76,"text",75)(77,"tspan",76),p(78,"240"),P()(),T(79,"text",77)(80,"tspan",78),p(81,"210"),P()(),T(82,"text",79)(83,"tspan",80),p(84,"S"),P()(),T(85,"text",81)(86,"tspan",82),p(87,"150"),P()(),T(88,"text",83)(89,"tspan",84),p(90,"120"),P()(),T(91,"text",85)(92,"tspan",86),p(93,"E"),P()(),T(94,"text",87)(95,"tspan",88),p(96,"60"),P()(),T(97,"text",89)(98,"tspan",90),p(99,"30"),P()(),T(100,"text",91)(101,"tspan",92),p(102,"N"),P()()(),T(103,"g",93),G(104,"path",94)(105,"path",95),P(),T(106,"g",96),G(107,"path",97)(108,"path",98),P(),T(109,"g",null,1),G(111,"path",99)(112,"ellipse",100),P(),T(113,"g",null,2),G(115,"path",101),P()()(),T(116,"g",102)(117,"g",103)(118,"text",104),p(119),P(),T(120,"text",105),p(121),At(122,"number"),P(),T(123,"text",106),p(124,"TWS"),P()(),T(125,"g",107)(126,"text",108),p(127),P(),T(128,"text",109),p(129),At(130,"number"),P(),T(131,"text",110),p(132,"AWS"),P()()(),T(133,"g",111)(134,"text",112),p(135),At(136,"number"),P()(),T(137,"g",113)(138,"g",null,3),G(140,"path",114),P(),T(141,"g",null,4),G(143,"path",115),T(144,"text",116),p(145,"A"),P()(),T(146,"g",null,5),G(148,"path",117),T(149,"text",118),p(150,"T"),P()()(),T(151,"g",119),G(152,"rect",120),T(153,"text",121)(154,"tspan"),p(155),T(156,"tspan"),p(157,"\xB0"),P()()()()()),t&2&&(w(103),se("display",i.closeHauledLineEnabled()?"inline":"none"),w(),se("display",i.appWindAngle()!=null?"inline":"none"),X("d",i.closeHauledLineStbdPath),w(),se("display",i.appWindAngle()!=null?"inline":"none"),X("d",i.closeHauledLinePortPath),w(),se("display",i.windSectorEnabled()?"inline":"none"),w(),se("display",i.portWindSectorPath!="none"?"inline":"none"),X("d",i.portWindSectorPath),w(),se("display",i.stbdWindSectorPath!="none"?"inline":"none"),X("d",i.stbdWindSectorPath),w(),X("display",i.waypointActive()?"inline":"none"),w(4),se("display",i.driftEnabled()?"inline":"none"),w(4),se("display",i.twsEnabled()?"inline":"none"),w(2),Re(i.trueWindSpeedUnit()),w(2),Re(Tn(122,34,i.trueWindSpeed(),"1.1-1")??"--"),w(4),se("display",i.awsEnabled()?"inline":"none"),w(2),Re(i.appWindSpeedUnit()),w(2),Re(Tn(130,37,i.appWindSpeed(),"1.1-1")??"--"),w(4),se("display",i.driftEnabled()?"inline":"none"),w(2),Re(Tn(136,40,i.driftFlow(),"1.1-1")??"--"),w(3),X("display",i.courseOverGroundEnabled()?"inline":"none"),w(8),se("display",i.twaEnabled()?"inline":"none"),w(9),Re(i.headingValue))},dependencies:[Zo],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"],changeDetection:0})}return n})();var pl=(()=>{class n extends ue{zones=W($e);cdr=W(Dn);markScheduled=!1;scheduleRafId=null;DEG_EPSILON=1;SPEED_EPSILON=.1;hasHeading=!1;hasCOG=!1;hasAWA=!1;hasAWS=!1;hasTWA=!1;hasTWS=!1;hasSet=!1;hasDrift=!1;hasWPT=!1;currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;windSamples=[];windMinDeque=[];windMaxDeque=[];windSampleIndex=0;lastUnwrapped=null;lastSector={};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:1e3},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!1,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:1e3},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:1e3}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,twaEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors();let e=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,t=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo;this.appWindSpeedUnit!==e&&(this.appWindSpeedUnit=e),this.trueWindSpeedUnit!==t&&(this.trueWindSpeedUnit=t),this.zones.runOutsideAngular(()=>{this.observeDataStream("headingPath",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasHeading||this.angleDelta(this.currentHeading,o)>=this.DEG_EPSILON)&&(this.currentHeading=o,this.hasHeading=!0,this.scheduleMarkForCheck())}),this.observeDataStream("courseOverGround",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasCOG||this.angleDelta(this.courseOverGroundAngle,o)>=this.DEG_EPSILON)&&(this.courseOverGroundAngle=o,this.hasCOG=!0,this.scheduleMarkForCheck())}),this.observeDataStream("drift",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasDrift||Math.abs(this.driftFlow-o)>=this.SPEED_EPSILON)&&(this.driftFlow=o,this.hasDrift=!0,this.scheduleMarkForCheck())}),this.observeDataStream("set",i=>{i.data.value==null&&(i.data.value=0);let o=this.normalizeAngle(i.data.value);(!this.hasSet||this.angleDelta(this.driftSet,o)>=this.DEG_EPSILON)&&(this.driftSet=o,this.hasSet=!0,this.scheduleMarkForCheck())}),this.observeDataStream("nextWaypointBearing",i=>{let o=i.data.value,r=this.normalizeAngle(o);(!this.hasWPT||this.angleDelta(this.waypointAngle,r)>=this.DEG_EPSILON)&&(this.waypointAngle=r,this.hasWPT=!0,this.scheduleMarkForCheck())}),this.observeDataStream("appWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value,r=this.normalizeAngle(o);(!this.hasAWA||this.angleDelta(this.appWindAngle,r)>=this.DEG_EPSILON)&&(this.appWindAngle=r,this.hasAWA=!0,this.widgetProperties.config.windSectorEnable&&this.addHistoricalWindDirection(this.normalizeAngle(o)),this.scheduleMarkForCheck())}),this.observeDataStream("appWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasAWS||Math.abs(this.appWindSpeed-o)>=this.SPEED_EPSILON)&&(this.appWindSpeed=o,this.hasAWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindSpeed",i=>{i.data.value==null&&(i.data.value=0);let o=i.data.value;(!this.hasTWS||Math.abs(this.trueWindSpeed-o)>=this.SPEED_EPSILON)&&(this.trueWindSpeed=o,this.hasTWS=!0,this.scheduleMarkForCheck())}),this.observeDataStream("trueWindAngle",i=>{i.data.value==null&&(i.data.value=0);let o=this.widgetProperties.config.paths.trueWindAngle.path,r=o.includes("angleTrueWater")||o.includes("angleTrueGround")?this.addHeading(this.currentHeading,i.data.value):i.data.value,s=this.normalizeAngle(r);(!this.hasTWA||this.angleDelta(this.trueWindAngle,s)>=this.DEG_EPSILON)&&(this.trueWindAngle=s,this.hasTWA=!0,this.scheduleMarkForCheck())})}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors(),this.scheduleRafId!=null&&(cancelAnimationFrame(this.scheduleRafId),this.scheduleRafId=null)}startWindSectors(){if(this.windSamples=[],this.windMinDeque=[],this.windMaxDeque=[],this.windSampleIndex=0,this.lastUnwrapped=null,this.lastSector={},!this.widgetProperties.config.windSectorEnable){this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.scheduleMarkForCheck();return}this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xn(1e3).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){let t=Date.now(),i=this.unwrapAngle(e),o=this.windSampleIndex++;for(this.windSamples.push({t,u:i,i:o});this.windMinDeque.length&&this.windMinDeque[this.windMinDeque.length-1].u>=i;)this.windMinDeque.pop();for(this.windMinDeque.push({i:o,u:i});this.windMaxDeque.length&&this.windMaxDeque[this.windMaxDeque.length-1].u<=i;)this.windMaxDeque.pop();this.windMaxDeque.push({i:o,u:i})}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;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(){if(!this.widgetProperties.config.windSectorEnable)return;let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;for(;this.windSamples.length&&this.windSamples[0].t<e;){let u=this.windSamples.shift();if(!u)break;this.windMinDeque.length&&this.windMinDeque[0].i===u.i&&this.windMinDeque.shift(),this.windMaxDeque.length&&this.windMaxDeque[0].i===u.i&&this.windMaxDeque.shift()}if(!this.windSamples.length||!this.windMinDeque.length||!this.windMaxDeque.length){(this.trueWindMinHistoric!==void 0||this.trueWindMidHistoric!==void 0||this.trueWindMaxHistoric!==void 0)&&(this.trueWindMinHistoric=void 0,this.trueWindMidHistoric=void 0,this.trueWindMaxHistoric=void 0,this.lastSector={},this.scheduleMarkForCheck());return}let t=this.windMinDeque[0].u,i=this.windMaxDeque[0].u,o=(t+i)/2,r=this.normalizeAngle(t),s=this.normalizeAngle(o),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=r,this.trueWindMidHistoric=s,this.trueWindMaxHistoric=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,o=(e-i+540)%360-180,r=t+o;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=V({type:n,selectors:[["widget-wind-steer"]],features:[ne],decls:2,vars:26,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","twaEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),z(1,"svg-windsteer",1),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("twaEnabled",i.widgetProperties.config.twaEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[gl,me],encapsulation:2,changeDetection:0})}return n})();var Gc=["canvasMainRef"],fl=(()=>{class n extends ue{canvasMainRef=Y.required("canvasMainRef");canvasElement;canvasCtx;canvas=W(Ue);cssWidth=0;cssHeight=0;isDestroyed=!1;maxTextWidth=0;maxTextHeight=0;constructor(){super(),this.defaultConfig={displayName:"Static Label",color:"green",bgColor:"grey",noColor:!1,noBgColor:!0},Z(()=>{this.theme()&&(this.getColors(this.widgetProperties.config.color),this.drawWidget())})}ngOnInit(){this.validateConfig()}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=this.cssWidth-40,this.maxTextHeight=this.cssHeight-40,this.drawWidget()}}),!this.isDestroyed&&(this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=this.canvasElement.width-40,this.maxTextHeight=this.canvasElement.height-40,this.startWidget())}ngOnDestroy(){this.isDestroyed=!0;try{this.canvas.unregisterCanvas(this.canvasElement)}catch{}}startWidget(){}updateConfig(e){e.displayName?this.widgetProperties.config.displayName=e.displayName:this.widgetProperties.config.displayName="",this.drawWidget()}getColors(e){switch(e){case"contrast":return this.theme().contrast;case"blue":return this.theme().blue;case"green":return this.theme().green;case"pink":return this.theme().pink;case"orange":return this.theme().orange;case"purple":return this.theme().purple;case"grey":return this.theme().grey;case"yellow":return this.theme().yellow;default:return this.theme().contrast}}drawWidget(){this.canvasCtx&&(this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.widgetProperties.config.noBgColor||this.canvas.drawRectangle(this.canvasCtx,0,0,this.canvasElement.width,this.canvasElement.height,this.getColors(this.widgetProperties.config.bgColor)),this.canvas.drawText(this.canvasCtx,this.widgetProperties.config.displayName,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2+10),this.maxTextWidth,this.maxTextHeight,"bold",this.getColors(this.widgetProperties.config.color)))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-label"]],viewQuery:function(t,i){t&1&&$(i.canvasMainRef,Gc,5),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["canvasMainRef",""],[1,"label-wrapper",3,"configChange","config","id"],[1,"label-canvas"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.label-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.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 qc=["svgSlider"];function jc(n,a){n&1&&z(0,"div",11)}var vl=(()=>{class n extends ue{svgElement=Y.required("svgSlider");dashboard=W(et);signalkRequestsService=W(Pt);appService=W(Dt);labelColor=H(void 0);barColor=H(void 0);skRequestSub=new bn;lineStartPx;lineWidthPx;lineEndPx;resizeTimeout;debounceTimeout;handlePosition=20;pathValue=0;lineStart=this.handlePosition;isDragStarted=!1;lineWidth="0px";VIEWBOX_WIDTH=200;LINE_START=20;LINE_WIDTH=160;colorMap=new Map([["contrast",{label:this.theme().contrastDim,bar:this.theme().contrast}],["blue",{label:this.theme().blueDim,bar:this.theme().blue}],["green",{label:this.theme().greenDim,bar:this.theme().green}],["pink",{label:this.theme().pinkDim,bar:this.theme().pink}],["orange",{label:this.theme().orangeDim,bar:this.theme().orange}],["purple",{label:this.theme().purpleDim,bar:this.theme().purple}],["grey",{label:this.theme().greyDim,bar:this.theme().grey}],["yellow",{label:this.theme().yellowDim,bar:this.theme().yellow}]]);valueChange$=new yn;constructor(){super(),this.defaultConfig={displayName:"Slider Label",filterSelfPaths:!0,paths:{gaugePath:{description:"PUT Supported Numeric Path. IMPORTANT: Format must be set to (base)",path:null,source:null,pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:null,showConvertUnitTo:!1,convertUnitTo:null,supportsPut:!0,sampleTime:500}},displayScale:{lower:0,upper:1,type:"linear"},enableTimeout:!1,dataTimeout:5,color:"contrast"},Z(()=>{this.theme()&&this.getColors(this.widgetProperties.config.color)})}ngOnInit(){this.validateConfig(),this.valueChange$.pipe(Zi(e=>this.isWithinMargin(e,this.widgetProperties.config.displayScale.lower)?this.widgetProperties.config.displayScale.lower:this.isWithinMargin(e,this.widgetProperties.config.displayScale.upper)?this.widgetProperties.config.displayScale.upper:parseFloat(e.toFixed(2))),Mo(200),Po()).subscribe(e=>{this.sendValue(e)})}ngAfterViewInit(){this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.observeDataStream("gaugePath",e=>{if(!e||!e.data){this.handlePosition=this.mapValueToPosition(this.widgetProperties.config.displayScale.lower);return}this.updateHandlePosition(this.mapValueToPosition(e.data.value))}),this.skRequestSub?.unsubscribe(),this.subscribeSKRequest()}mapValueToPosition(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.widgetProperties.config.displayScale.lower)/t*i+this.LINE_START}mapPositionToValue(e){let t=this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower,i=this.LINE_WIDTH;return(e-this.LINE_START)/i*t+this.widgetProperties.config.displayScale.lower}isWithinMargin(e,t){let i=(this.widgetProperties.config.displayScale.upper-this.widgetProperties.config.displayScale.lower)*.01;return Math.abs(e-t)<=i}subscribeSKRequest(){this.skRequestSub=this.signalkRequestsService.subscribeRequest().subscribe(e=>{if(e.widgetUUID==this.widgetProperties.uuid){let t=`Toggle Widget ${this.widgetProperties.config.displayName}: `;e.statusCode!=200&&(e.message?t+=e.message:t+=e.statusCode+" - "+e.statusCodeDescription,this.appService.sendSnackbarNotification(t,0))}})}sendValue(e){let t=this.widgetProperties.config.paths.gaugePath.path;this.signalkRequestsService.putRequest(t,e,this.widgetProperties.uuid)}updateConfig(e){this.widgetProperties.config=e,this.getColors(this.widgetProperties.config.color),this.calculateLineBounds(),this.startWidget()}onResized(){clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.calculateLineBounds()},200)}calculateLineBounds(){if(!this.svgElement()?.nativeElement){console.warn("[Slider Widget] SVG element is not initialized yet.");return}let e=this.svgElement().nativeElement.getBoundingClientRect(),t=this.LINE_START/this.VIEWBOX_WIDTH*e.width,i=this.LINE_WIDTH/this.VIEWBOX_WIDTH*e.width;this.lineStartPx=t,this.lineWidthPx=i,this.lineEndPx=this.lineStartPx+this.lineWidthPx}updateHandlePosition(e){this.handlePosition=e,this.lineWidth=`${e-this.lineStart}px`}getPointerX(e){return e.clientX-this.svgElement().nativeElement.getBoundingClientRect().left}onPointerDown(e){this.isDragStarted=!0,this.onPointerMove(e),e.stopPropagation(),e.preventDefault()}onPointerMove(e){if(this.isDragStarted){let t=this.getPointerX(e);if(t>=this.lineStartPx&&t<=this.lineEndPx){let i=(t-this.lineStartPx)/this.lineWidthPx*this.LINE_WIDTH+this.LINE_START;this.updateHandlePosition(i),this.handlePosition<=this.LINE_START?this.pathValue=this.widgetProperties.config.displayScale.lower:this.handlePosition>=this.LINE_START+this.LINE_WIDTH?this.pathValue=this.widgetProperties.config.displayScale.upper:this.pathValue=this.mapPositionToValue(this.handlePosition),this.valueChange$.next(this.pathValue)}}}onPointerUp(){this.isDragStarted=!1,this.valueChange$.next(this.pathValue)}onPointerLeave(){this.isDragStarted&&(this.isDragStarted=!1,this.valueChange$.next(this.pathValue))}getColors(e){let t=this.colorMap.get(e)||this.colorMap.get("contrast");this.labelColor.set(t.label),this.barColor.set(t.bar)}ngOnDestroy(){this.destroyDataStreams(),this.skRequestSub?.unsubscribe(),this.valueChange$.complete(),clearTimeout(this.debounceTimeout),clearTimeout(this.resizeTimeout)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&$(i.svgElement,qc,5),t&2&&ce()},features:[ne],decls:12,vars:9,consts:[["svgSlider",""],[3,"configChange","config","id"],[3,"text","color"],[1,"widgets-container",3,"onResize"],["width","100%","height","100%","viewBox","0 40 200 40"],["width","160","height","8","rx","4.5","id","rect3","x","20","y","56",1,"slider-bg-bar",2,"display","inline","stroke-width","1.57144"],["height","8","rx","4.5","id","rect3","x","20","y","56",2,"display","inline","stroke-width","1.57144"],["id","g22"],["cy","60","fill","#ffffff","id","circle3","r","19.549999",2,"display","inline","fill","#4d4d4d","fill-opacity","1","stroke","#8c8c8c","stroke-width","0.9","stroke-dasharray","none","stroke-opacity","1"],["cy","60","fill","#ffffff","id","circle3-3","r","17.950001",2,"display","inline","fill","#ffffff","fill-opacity","1","stroke","#e6e6e6","stroke-width","1.8","stroke-dasharray","none","stroke-opacity","0.97"],["cursor","pointer","width","200","height","40","x","0","y","40",2,"display","inline","fill","rgba(0, 0, 0, 0)","stroke","none","stroke-width","0.3","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0",3,"pointerdown","pointerup","pointermove","pointerleave"],[1,"widgetOverlay"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"widget-title",2),g(2,"div",3),I("onResize",function(){return O(o),R(i.onResized())}),q(),g(3,"svg",4),z(4,"rect",5)(5,"rect",6),g(6,"g",7),z(7,"circle",8)(8,"circle",9),b(),g(9,"rect",10,0),I("pointerdown",function(s){return O(o),R(i.onPointerDown(s))})("pointerup",function(){return O(o),R(i.onPointerUp())})("pointermove",function(s){return O(o),R(i.onPointerMove(s))})("pointerleave",function(){return O(o),R(i.onPointerLeave())}),b()()(),Ne(11,jc,1,0,"div",11),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("text",i.widgetProperties.config.displayName)("color",i.labelColor()),w(4),X("width",i.lineWidth)("fill",i.barColor()),w(2),X("cx",i.handlePosition),w(),X("cx",i.handlePosition),w(3),Le(i.dashboard.isDashboardStatic()?-1:11))},dependencies:[me,Ge,mt,ea],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 $c=["rotatingDial"],Yc=["awaIndicator"],Xc=["twaIndicator"],Qc=["wptIndicator"],Zc=["setIndicator"],Kc=["cogIndicator"],bl=([n,a],[e,t],[i,o])=>(Math.atan2(o-t,i-e)-Math.atan2(a-t,n-e)+3*Math.PI)%(2*Math.PI)-Math.PI,yl=(()=>{class n{rotatingDial=Y.required("rotatingDial");awaIndicator=Y.required("awaIndicator");twaIndicator=Y.required("twaIndicator");wptIndicator=Y.required("wptIndicator");setIndicator=Y.required("setIndicator");cogIndicator=Y.required("cogIndicator");compassHeading=N.required();courseOverGroundAngle=N(void 0);courseOverGroundEnabled=N.required();trueWindAngle=N.required();twsEnabled=N.required();trueWindSpeed=N.required();trueWindSpeedUnit=N.required();appWindAngle=N.required();awsEnabled=N.required();appWindSpeed=N.required();appWindSpeedUnit=N.required();laylineAngle=N(void 0);closeHauledLineEnabled=N.required();sailSetupEnabled=N.required();windSectorEnabled=N.required();driftEnabled=N.required();driftSet=N(void 0);driftFlow=N(void 0);waypointAngle=N(void 0);waypointEnabled=N.required();trueWindMinHistoric=N(void 0);trueWindMidHistoric=N(void 0);trueWindMaxHistoric=N(void 0);compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};awa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};cog={oldValue:0,newValue:0};set={oldValue:0,newValue:0};headingValue="--";appWindSpeedDisplay=Ze(()=>{let e=this.appWindSpeed();return e==null?"--":e.toFixed(1)});trueWindSpeedDisplay=Ze(()=>{let e=this.trueWindSpeed();return e==null?"--":e.toFixed(1)});trueWindHeading=0;waypointActive=H(!1);flow=Ze(()=>{let e=this.driftFlow();return e==null?"--":e.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;closeHauledLinePortPath="M 500,500 500,500";closeHauledLineStbdPath="M 500,500 500,500";portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath="";stbdWindSectorPath="";animationFrameIds=new WeakMap;ngZone=W($e);CENTER=500;RADIUS=350;ANIMATION_DURATION=1e3;constructor(){Z(()=>{let e=this.waypointEnabled();He(()=>{this.waypointActive.set(e)})}),Z(()=>{let e=parseFloat(this.compassHeading().toFixed(0));e!==null&&He(()=>{this.compass.oldValue=this.compass.newValue,this.compass.newValue=e,this.headingValue=e.toString(),this.rotatingDial()?.nativeElement&&(it(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines(),this.updateWindSectors())})}),Z(()=>{let e=parseFloat(this.courseOverGroundAngle().toFixed(0));e!=null&&He(()=>{this.cog.oldValue=this.cog.newValue,this.cog.newValue=e-this.compass.newValue,this.cogIndicator()?.nativeElement&&it(this.cogIndicator().nativeElement,this.cog.oldValue,this.cog.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=this.waypointAngle();He(()=>{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&&it(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=parseFloat(this.appWindAngle().toFixed(0));e!=null&&He(()=>{this.awa.oldValue=this.awa.newValue,this.awa.newValue=e,this.awaIndicator()?.nativeElement&&it(this.awaIndicator().nativeElement,this.awa.oldValue,this.awa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})}),Z(()=>{let e=parseFloat(this.trueWindAngle().toFixed(0));e!=null&&He(()=>{this.twa.oldValue=this.twa.newValue,this.trueWindHeading=e,this.twa.newValue=this.addHeading(this.trueWindHeading,this.compass.newValue*-1),this.twaIndicator()?.nativeElement&&(it(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone),this.updateCloseHauledLines())})}),Z(()=>{let e=parseFloat(this.driftSet().toFixed(0));e!=null&&He(()=>{this.set.oldValue=this.set.newValue,this.set.newValue=e,this.setIndicator()?.nativeElement&&it(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,void 0,this.ngZone)})})}updateCloseHauledLines(){if(!this.closeHauledLineEnabled())return;let e=this.addHeading(Number(this.awa.newValue),this.laylineAngle()*-1);this.animateLayline(this.portLaylinePrev,e,!0),this.portLaylinePrev=e;let t=this.addHeading(Number(this.awa.newValue),this.laylineAngle());this.animateLayline(this.stbdLaylinePrev,t,!1),this.stbdLaylinePrev=t}animateLayline(e,t,i){i&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!i&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),s=u=>u<.5?4*u*u*u:1-Math.pow(-2*u+2,3)/2,h=u=>{let v=u-r,x=Math.min(v/o,1),S=s(x),_=t-e;_>180&&(_-=360),_<-180&&(_+=360);let re=(e+_*S+360)%360*Math.PI/180,ge=Math.floor(this.RADIUS*Math.sin(re)+this.CENTER),ae=Math.floor(this.RADIUS*Math.cos(re)*-1+this.CENTER);if(i?this.closeHauledLinePortPath=`M ${this.CENTER},${this.CENTER} L ${ge},${ae}`:this.closeHauledLineStbdPath=`M ${this.CENTER},${this.CENTER} L ${ge},${ae}`,x<1){let Se=requestAnimationFrame(h);i?this.portLaylineAnimId=Se:this.stbdLaylineAnimId=Se}else i?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null},m=requestAnimationFrame(h);i?this.portLaylineAnimId=m:this.stbdLaylineAnimId=m}windSectorsInitialized=!1;updateWindSectors(){if(!this.windSectorEnabled()||this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let e={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.portSectorPrev=e,this.stbdSectorPrev=t,this.windSectorsInitialized=!0,this.animateWindSector(e,e,!0),this.animateWindSector(t,t,!1);return}this.animateWindSector(this.portSectorPrev,e,!0),this.animateWindSector(this.stbdSectorPrev,t,!1),this.portSectorPrev=e,this.stbdSectorPrev=t}animateWindSector(e,t,i){i&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!i&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId);let o=this.ANIMATION_DURATION,r=performance.now(),s=u=>u<.5?4*u*u*u:1-Math.pow(-2*u+2,3)/2,h=u=>{let v=u-r,x=Math.min(v/o,1),S=s(x),_=(nt,Kt)=>nt+(Kt-nt)*S,B=_(e.min,t.min),re=_(e.mid,t.mid),ge=_(e.max,t.max),ae=this.addHeading(this.addHeading(B,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Se=this.addHeading(this.addHeading(re,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),Fe=this.addHeading(this.addHeading(ge,Number(this.compass.newValue)*-1),this.laylineAngle()*(i?-1:1)),_e=this.RADIUS*Math.sin(ae*Math.PI/180)+this.CENTER,qe=this.RADIUS*Math.cos(ae*Math.PI/180)*-1+this.CENTER,Me=this.RADIUS*Math.sin(Se*Math.PI/180)+this.CENTER,Ve=this.RADIUS*Math.cos(Se*Math.PI/180)*-1+this.CENTER,Te=this.RADIUS*Math.sin(Fe*Math.PI/180)+this.CENTER,Ye=this.RADIUS*Math.cos(Fe*Math.PI/180)*-1+this.CENTER,tt=Math.abs(bl([_e,qe],[Me,Ve],[Te,Ye]))>Math.PI/2?0:1,Ke=bl([Te,Ye],[_e,qe],[Me,Ve])>0?0:1,Je=`M ${this.CENTER},${this.CENTER} L ${_e},${qe} A ${this.RADIUS},${this.RADIUS} 0 ${tt} ${Ke} ${Te},${Ye} z`;if(i?this.portWindSectorPath=Je:this.stbdWindSectorPath=Je,x<1){let nt=requestAnimationFrame(h);i?this.portSectorAnimId=nt:this.stbdSectorAnimId=nt}else i?this.portSectorAnimId=null:this.stbdSectorAnimId=null},m=requestAnimationFrame(h);i?this.portSectorAnimId=m:this.stbdSectorAnimId=m}addHeading(e=0,t=0){let i=e+t;for(;i>359;)i=i-359;for(;i<0;)i=i+359;return i}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let e=[this.rotatingDial(),this.awaIndicator(),this.twaIndicator(),this.wptIndicator(),this.setIndicator(),this.cogIndicator()];for(let t of e){let i=t?.nativeElement;if(!i)continue;let o=this.animationFrameIds.get(i);o&&cancelAnimationFrame(o),this.animationFrameIds.delete(i)}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["svg-racesteer"]],viewQuery:function(t,i){t&1&&($(i.rotatingDial,$c,5),$(i.awaIndicator,Yc,5),$(i.twaIndicator,Xc,5),$(i.wptIndicator,Qc,5),$(i.setIndicator,Zc,5),$(i.cogIndicator,Kc,5)),t&2&&ce(6)},inputs:{compassHeading:[1,"compassHeading"],courseOverGroundAngle:[1,"courseOverGroundAngle"],courseOverGroundEnabled:[1,"courseOverGroundEnabled"],trueWindAngle:[1,"trueWindAngle"],twsEnabled:[1,"twsEnabled"],trueWindSpeed:[1,"trueWindSpeed"],trueWindSpeedUnit:[1,"trueWindSpeedUnit"],appWindAngle:[1,"appWindAngle"],awsEnabled:[1,"awsEnabled"],appWindSpeed:[1,"appWindSpeed"],appWindSpeedUnit:[1,"appWindSpeedUnit"],laylineAngle:[1,"laylineAngle"],closeHauledLineEnabled:[1,"closeHauledLineEnabled"],sailSetupEnabled:[1,"sailSetupEnabled"],windSectorEnabled:[1,"windSectorEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointAngle:[1,"waypointAngle"],waypointEnabled:[1,"waypointEnabled"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"]},decls:156,vars:32,consts:[["rotatingDial",""],["wptIndicator",""],["setIndicator",""],["cogIndicator",""],["awaIndicator",""],["twaIndicator",""],["viewBox","0 0 1000 1000"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[0,"xlink","href","#linearGradient13","id","linearGradient14","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1111.2051,-179.73465)"],[0,"xlink","href","#linearGradient16","id","linearGradient17","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],[0,"xlink","href","#linearGradient18","id","linearGradient19","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","LayerLayline"],["id","PortLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","StbdLayline",1,"laylines",2,"fill","none","stroke-width","5","stroke-dasharray","40, 20","stroke-dashoffset","0","stroke-opacity","0.6"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.5","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.5","stroke","none"],["id","layerCompass"],["id","fixedDial"],["id","portStarboardBackground","d","M 499.99997,10.520805 A 489.47916,489.47916 0 0 0 10.520805,499.99997 489.47916,489.47916 0 0 0 499.99997,989.47913 489.47916,489.47916 0 0 0 989.47913,499.99997 489.47916,489.47916 0 0 0 499.99997,10.520805 Z m 0,132.291665 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"fixed-dial-background",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","port","d","M 93.283801,265.18231 A 469.63541,469.63541 0 0 1 339.37522,58.687079",1,"port",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","starboard","d","M 660.62476,58.687069 A 469.63541,469.63541 0 0 1 906.71619,265.18228",1,"starboard",2,"display","inline","fill","none","stroke-width","39.6875","stroke-linecap","butt","stroke-linejoin","round","stroke-miterlimit","0"],["id","barsAndText",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","rotatingDialBackplate","d","M 499.99997,50.208304 A 449.79166,449.79166 0 0 0 50.208304,499.99997 449.79166,449.79166 0 0 0 499.99997,949.79163 449.79166,449.79166 0 0 0 949.79163,499.99997 449.79166,449.79166 0 0 0 499.99997,50.208304 Z m 0,92.604166 a 357.1875,357.1875 0 0 1 357.18749,357.1875 357.1875,357.1875 0 0 1 -357.18749,357.18749 357.1875,357.1875 0 0 1 -357.1875,-357.18749 357.1875,357.1875 0 0 1 357.1875,-357.1875 z",1,"rotating-dial-Backplate",2,"display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["clip-path","url(#clipPath16)","d","m 416.36313,-1521.3937 c 371.15015,24.6522 731.95257,192.9774 983.98757,467.456 227.2972,244.24389 363.1732,572.3808 369.4045,906.42978 15.9331,499.10271 -269.2071,986.17861 -700.5178,1232.88522 -485.08308,290.4843 -1134.555606,269.7346 -1599.2788,-52.7169 -404.5062,-269.24461 -653.2224,-759.35388 -614.1746,-1245.84043 30.2148,-487.61814 344.18931,-937.89997 780.52695,-1152.15867 176.96718,-89.2092 371.8823084,-142.3103 569.54914,-156.0363","transform","matrix(0.28310615,0,0,0.32000828,411.88452,661.64815)",1,"next-waypoint-bar",2,"display","inline","fill","none","stroke-width","30","stroke-miterlimit","0"],["id","path6341","cx","500","cy","175.00002","rx","17.361122","ry","17.361118",1,"next-waypoint",2,"display","inline","fill","none","stroke-width","15.2778","stroke-dasharray","none"],["id","setArrow","d","m 563.93337,480.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",2,"fill","url(#linearGradient14)","stroke","none","stroke-width","1.18648"],["id","layerCounter"],["id","twsCounter"],[0,"xml","space","preserve","x","904.27722","y","150.88913","id","text43",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","903.84814","y","114.73512","id","text42",1,"true-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","905.25897","y","52.894646","id","text41",1,"true-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","awsCounter"],[0,"xml","space","preserve","x","94.554222","y","150.88913","id","text39",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","94.580925","y","114.63747","id","text40",1,"app-wind",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],[0,"xml","space","preserve","x","95.967644","y","52.894646","id","text39-7",1,"app-wind-label",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","34.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","14.5521","stroke-miterlimit","0"],["id","layerCurrent"],["id","text11",0,"xml","space","preserve","x","499.78842","y","523.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerIndicators",2,"display","inline"],["d","m 506.20767,172.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 476.25472,30.811298 493.47058,13.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 476.25472,44.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 173.26408 h -12.77766 z",1,"course-over-ground",2,"stroke-width","14.7329","stroke-linecap","square"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.7935953,0,0,0.92686935,101.84848,11.000842)",1,"app-wind",2,"display","inline","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110",1,"card-color",2,"font-weight","bold","font-size","70px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["d","m 451.77021,55.078207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,279.76529 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,70.966036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,196.91787,21.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","500","y","110","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["id","layerHeading",2,"display","inline"],["id","rect1","width","256.47919","height","108.5428","x","371.76041","y","10.805443","rx","23.757372",1,"heading-background",2,"stroke-width","4.43107","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","0.509946"],["x","511.29395","y","102.86786",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","106.667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"]],template:function(t,i){t&1&&(q(),T(0,"svg",6)(1,"defs",7)(2,"linearGradient",8),G(3,"stop",9)(4,"stop",10),P(),T(5,"linearGradient",11),G(6,"stop",9)(7,"stop",10),P(),T(8,"linearGradient",12),G(9,"stop",13)(10,"stop",14),P(),T(11,"linearGradient",15),G(12,"stop",16),P(),T(13,"clipPath",17),G(14,"ellipse",18),P(),G(15,"linearGradient",19)(16,"linearGradient",20)(17,"linearGradient",21),P(),T(18,"g",22)(19,"g",23),G(20,"path",24)(21,"path",25),P()(),T(22,"g",26),G(23,"path",27)(24,"path",28),P(),T(25,"g",29),G(26,"path",30)(27,"path",31),P(),T(28,"g",32)(29,"g",33),G(30,"path",34)(31,"path",35)(32,"path",36),P(),T(33,"g",null,0)(35,"g",37),G(36,"path",38)(37,"path",39)(38,"path",40)(39,"path",41)(40,"path",42)(41,"path",43)(42,"path",44)(43,"path",45)(44,"path",46)(45,"path",47)(46,"path",48)(47,"path",49)(48,"path",50)(49,"path",51)(50,"path",52)(51,"path",53)(52,"path",54)(53,"path",55)(54,"path",56)(55,"path",57)(56,"path",58)(57,"path",59)(58,"path",60)(59,"path",61)(60,"path",62)(61,"path",63)(62,"path",64)(63,"path",65)(64,"path",66)(65,"path",67)(66,"path",68)(67,"path",69)(68,"path",70)(69,"path",71)(70,"path",72)(71,"path",73)(72,"path",74),T(73,"text",75)(74,"tspan",76),p(75,"330"),P()(),T(76,"text",77)(77,"tspan",78),p(78,"300"),P()(),T(79,"text",79)(80,"tspan",80),p(81,"W"),P()(),T(82,"text",81)(83,"tspan",82),p(84,"240"),P()(),T(85,"text",83)(86,"tspan",84),p(87,"210"),P()(),T(88,"text",85)(89,"tspan",86),p(90,"S"),P()(),T(91,"text",87)(92,"tspan",88),p(93,"150"),P()(),T(94,"text",89)(95,"tspan",90),p(96,"120"),P()(),T(97,"text",91)(98,"tspan",92),p(99,"E"),P()(),T(100,"text",93)(101,"tspan",94),p(102,"60"),P()(),T(103,"text",95)(104,"tspan",96),p(105,"30"),P()(),T(106,"text",97)(107,"tspan",98),p(108,"N"),P()()(),T(109,"g",null,1),G(111,"path",99)(112,"ellipse",100),P(),T(113,"g",null,2),G(115,"path",101),P()()(),T(116,"g",102)(117,"g",103)(118,"text",104),p(119),P(),T(120,"text",105),p(121),P(),T(122,"text",106),p(123,"TWS"),P()(),T(124,"g",107)(125,"text",108),p(126),P(),T(127,"text",109),p(128),P(),T(129,"text",110),p(130,"AWS"),P()()(),T(131,"g",111)(132,"text",112),p(133),P()(),T(134,"g",113)(135,"g",null,3),G(137,"path",114),P(),T(138,"g",null,4),G(140,"path",115),T(141,"text",116),p(142,"A"),P()(),T(143,"g",null,5),G(145,"path",117),T(146,"text",118),p(147,"T"),P(),p(148,` attributeName="transform" type="rotate" [attr.from]="trueWind.oldDegreeIndicator+' 500 500'" [attr.to]="trueWind.newDegreeIndicator+' 500 500'" begin="indefinite" dur="0.5s" keySplines="0.25 0.1 0.25 1" keyTimes="0;1" calcMode="spline" additive="replace" fill="freeze" /> `),P()(),T(149,"g",119),G(150,"rect",120),T(151,"text",121)(152,"tspan"),p(153),T(154,"tspan"),p(155,"\xB0"),P()()()()()),t&2&&(w(22),se("display",i.closeHauledLineEnabled()?"inline":"none"),w(),se("display",i.trueWindAngle()!=null?"inline":"none"),X("d",i.closeHauledLineStbdPath),w(),se("display",i.trueWindAngle()!=null?"inline":"none"),X("d",i.closeHauledLinePortPath),w(),se("display",i.windSectorEnabled()?"inline":"none"),w(),se("display",i.portWindSectorPath!="none"?"inline":"none"),X("d",i.portWindSectorPath),w(),se("display",i.portWindSectorPath!="none"?"inline":"none"),X("d",i.stbdWindSectorPath),w(82),X("display",i.waypointActive()?"inline":"none"),w(4),se("display",i.driftEnabled()?"inline":"none"),w(4),se("display",i.twsEnabled()?"inline":"none"),w(2),Re(i.trueWindSpeedUnit()),w(2),Re(i.trueWindSpeedDisplay()),w(3),se("display",i.awsEnabled()?"inline":"none"),w(2),Re(i.appWindSpeedUnit()),w(2),Re(i.appWindSpeedDisplay()),w(3),se("display",i.driftEnabled()?"inline":"none"),w(2),Re(i.flow()),w(2),X("display",i.courseOverGroundEnabled()?"inline":"none"),w(18),Re(i.headingValue))},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-background[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-yellow-color)}.true-wind-label[_ngcontent-%COMP%]{fill:var(--kip-yellow-dim-color)}.app-wind[_ngcontent-%COMP%]{fill:var(--kip-orange-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.course-over-ground[_ngcontent-%COMP%]{fill:var(--kip-pink-color)}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-green-color)}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.laylines[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color)}"]})}return n})();var wl=(()=>{class n extends ue{zones=W($e);currentHeading=0;courseOverGroundAngle=0;appWindAngle=0;appWindSpeed=0;appWindSpeedUnit="";trueWindAngle=0;trueWindSpeed=0;trueWindSpeedUnit="";driftFlow=0;driftSet=0;waypointAngle=0;historicalWindDirection=[];trueWindMinHistoric;trueWindMidHistoric;trueWindMaxHistoric;windSectorObservableSub=null;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",showConvertUnitTo:!1,convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.courseGreatCircle.nextPoint.bearingTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",showConvertUnitTo:!1,sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:!0,pathRequired:!1,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500}},windSectorEnable:!0,windSectorWindowSeconds:5,laylineEnable:!0,laylineAngle:40,waypointEnable:!0,courseOverGroundEnable:!0,driftEnable:!0,awsEnable:!0,twsEnable:!0,sailSetupEnable:!1,enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.stopWindSectors(),this.appWindSpeedUnit=this.widgetProperties.config.paths.trueWindSpeed.convertUnitTo,this.trueWindSpeedUnit=this.widgetProperties.config.paths.appWindSpeed.convertUnitTo,this.observeDataStream("headingPath",e=>{e.data.value==null&&(e.data.value=0),this.currentHeading=e.data.value}),this.observeDataStream("courseOverGround",e=>{e.data.value==null&&(e.data.value=0),this.courseOverGroundAngle=e.data.value}),this.observeDataStream("drift",e=>{e.data.value==null&&(e.data.value=0),this.driftFlow=e.data.value}),this.observeDataStream("set",e=>{e.data.value==null&&(e.data.value=0),this.driftSet=e.data.value}),this.observeDataStream("nextWaypointBearing",e=>{e.data.value<0?this.waypointAngle=360+e.data.value:this.waypointAngle=e.data.value}),this.observeDataStream("appWindAngle",e=>{if(e.data.value==null&&(e.data.value=0),e.data.value<0?this.appWindAngle=360+e.data.value:this.appWindAngle=e.data.value,this.widgetProperties.config.windSectorEnable){let t=this.addHeading(this.currentHeading,e.data.value);this.addHistoricalWindDirection(t)}}),this.observeDataStream("appWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.appWindSpeed=e.data.value}),this.observeDataStream("trueWindSpeed",e=>{e.data.value==null&&(e.data.value=0),this.trueWindSpeed=e.data.value}),this.observeDataStream("trueWindAngle",e=>{e.data.value==null&&(e.data.value=0);let t=this.widgetProperties.config.paths.trueWindAngle.path;t.includes("angleTrueWater")||t.includes("angleTrueGround")?this.trueWindAngle=this.addHeading(this.currentHeading,e.data.value):this.trueWindAngle=e.data.value}),this.startWindSectors()}updateConfig(e){this.widgetProperties.config=e,this.startWidget()}ngOnDestroy(){this.destroyDataStreams(),this.stopWindSectors()}startWindSectors(){this.zones.runOutsideAngular(()=>{this.windSectorObservableSub=xn(500).subscribe(()=>{this.historicalCleanup()})})}addHistoricalWindDirection(e){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:e});let t=this.arcForAngles(this.historicalWindDirection.map(i=>i.windDirection));this.trueWindMinHistoric=t.min,this.trueWindMaxHistoric=t.max,this.trueWindMidHistoric=t.mid}arcForAngles(e){return!e||e.length===0?{min:0,max:0,mid:0}:e.slice(1).reduce((i,o)=>{let r=o;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(){let e=Date.now()-this.widgetProperties.config.windSectorWindowSeconds*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(t=>t.timestamp>=e)}stopWindSectors(){this.windSectorObservableSub?.unsubscribe()}addHeading(e,t){let i=(e+t)%360;return i<0&&(i+=360),i}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-racesteer"]],features:[ne],decls:2,vars:25,consts:[[3,"configChange","config","id"],[3,"compassHeading","courseOverGroundAngle","courseOverGroundEnabled","trueWindAngle","twsEnabled","trueWindSpeed","trueWindSpeedUnit","appWindAngle","awsEnabled","appWindSpeed","appWindSpeedUnit","laylineAngle","closeHauledLineEnabled","windSectorEnabled","driftEnabled","driftFlow","driftSet","waypointAngle","waypointEnabled","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","sailSetupEnabled"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),z(1,"svg-racesteer",1),b()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),L("compassHeading",i.currentHeading)("courseOverGroundAngle",i.courseOverGroundAngle)("courseOverGroundEnabled",i.widgetProperties.config.courseOverGroundEnable)("trueWindAngle",i.trueWindAngle)("twsEnabled",i.widgetProperties.config.twsEnable)("trueWindSpeed",i.trueWindSpeed)("trueWindSpeedUnit",i.trueWindSpeedUnit)("appWindAngle",i.appWindAngle)("awsEnabled",i.widgetProperties.config.awsEnable)("appWindSpeed",i.appWindSpeed)("appWindSpeedUnit",i.appWindSpeedUnit)("laylineAngle",i.widgetProperties.config.laylineAngle)("closeHauledLineEnabled",i.widgetProperties.config.laylineEnable)("windSectorEnabled",i.widgetProperties.config.windSectorEnable)("driftEnabled",i.widgetProperties.config.driftEnable)("driftFlow",i.driftFlow)("driftSet",i.driftSet)("waypointAngle",i.waypointAngle)("waypointEnabled",i.widgetProperties.config.waypointEnable)("trueWindMinHistoric",i.trueWindMinHistoric)("trueWindMidHistoric",i.trueWindMidHistoric)("trueWindMaxHistoric",i.trueWindMaxHistoric)("sailSetupEnabled",i.defaultConfig.sailSetupEnable))},dependencies:[yl,me],encapsulation:2})}return n})();var Jc=["widgetDataChart"];at.register(Wi,Ai,Ei,Mi,Di,Pi,Fn,Un);var Cl=(()=>{class n extends ue{ngZone=W($e);_dataset=W(Mt);canvasService=W(Ue);widgetDataChart=Y("widgetDataChart",{read:Be});lineChartData={datasets:[]};lineChartOptions={parsing:!1,datasets:{line:{pointRadius:0,pointHoverRadius:0,tension:.3}},animations:{tension:{easing:"easeInOutCubic"}}};lineChartType="line";chart;_dsDirectionSub=null;_dsSpeedSub=null;datasetConfig=null;dataSourceInfo=null;xCenter=null;xStep=null;xCenterSpeed=null;xStepSpeed=null;CENTER_LINE_WIDTH=4;GRID_LINE_WIDTH=1;EDGE_EXTEND_UP_PX=42;EDGE_SPEED_LABEL_OFFSET=5;EDGE_DIR_LABEL_OFFSET=5;TICK_LABEL_FONT_SIZE=20;CENTER_LABEL_FONT_SIZE=22;SPEED_VALUE_FONT_SIZE=62;TOP_VALUE_Y_OFFSET=62;TOP_UNIT_Y_OFFSET=51;UNIT_FONT_SIZE=28;UNIT_PADDING=8;nearlyEqual(e,t,i=1e-6){if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let o=Math.max(1,Math.max(Math.abs(e),Math.abs(t)));return Math.abs(e-t)<=i*o}resolveTickColor(e,t,i){let r=t.options.ticks?.color;return typeof r=="function"?r({chart:e,scale:t,tick:{value:i}})??at.defaults.color:typeof r=="string"?r:at.defaults.color}axisTopLabelY(e){return e.options?.position==="top"?e.top+4:e.bottom+2}gridBackgroundPlugin={id:"xSpeedGridBackground",beforeDraw:e=>{let t=e.chartArea;if(!t)return;let i=e.ctx,o=this.theme();i.save(),i.globalCompositeOperation="destination-over",i.fillStyle=o.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,o=this.theme(),r=this.getThemeColors(),s=at.defaults.font,h=e.scales,m=e.options?.scales,u=e.data?.datasets?.[0]?.data,v=e.data?.datasets?.[5]?.data,x=(u?.length??0)>=2&&(v?.length??0)>=2,S=(Me,Ve)=>{let Te=h?.[Me],Ye=m;if(!Te)return;let tt=Te,Ke=Ye?.[Me]?.min??tt.min,Je=Ye?.[Me]?.max??tt.max;if(typeof Ke!="number"||typeof Je!="number"||!isFinite(Ke)||!isFinite(Je))return;let nt=(Ke+Je)/2,Kt=Te.getPixelForValue(nt);t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.CENTER_LINE_WIDTH,t.beginPath(),t.moveTo(Kt,i.top),t.lineTo(Kt,i.bottom),t.stroke(),t.restore(),t.save(),t.fillStyle=o.contrastDim,t.font=`bold ${this.CENTER_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="top";let mn=this.axisTopLabelY(Te);t.fillText(Ve(nt),Kt,mn),t.restore()};S("x",Me=>`${((Me%360+360)%360).toFixed(0)}\xB0`),S("xSpeed",Me=>`${Me.toFixed(1)}`);let _=h?.xSpeed;if(_){let Me=m,Ve=_,Te=Me?.xSpeed?.max??Ve.max;if(typeof Te=="number"&&isFinite(Te)){let Ye=_.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,_,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="right",t.textBaseline="top";let tt=this.axisTopLabelY(_),Ke=this.xStepSpeed??1,Je=Math.max(0,Math.min(3,Math.ceil(-Math.log10(Ke))));t.fillText(`${Te.toFixed(Je)}`,Ye-this.EDGE_SPEED_LABEL_OFFSET,tt),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=this.GRID_LINE_WIDTH,t.beginPath();let nt=Math.round(Ye)+.5;t.moveTo(nt,i.bottom),t.lineTo(nt,i.top-this.EDGE_EXTEND_UP_PX),t.stroke(),t.restore()}}let B=h?.x;if(B){let Me=m,Ve=B,Te=Me?.x?.min??Ve.min;if(typeof Te=="number"&&isFinite(Te)){let Ye=B.getPixelForValue(Te);t.save(),t.fillStyle=this.resolveTickColor(e,B,Te),t.font=`normal ${this.TICK_LABEL_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.textBaseline="top";let tt=this.axisTopLabelY(B),Ke=this.normalizeAngle(Te);t.fillText(`${Ke.toFixed(0)}\xB0`,Ye+this.EDGE_DIR_LABEL_OFFSET,tt),t.restore()}}let re=e.data?.datasets,ge=re?.[5]?.data,ae=ge?.length?ge.length-1:-1,Se=ae>=0?ge[ae]?.x:void 0;if(typeof Se=="number"&&isFinite(Se)){t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle";let Me=`${Se.toFixed(1)}`,Ve=i.left+i.width/4,Te=i.top-this.TOP_VALUE_Y_OFFSET;t.fillText(Me,Ve,Te);let Ye=t.measureText(Me),tt=Ve+Ye.width/2+this.UNIT_PADDING,Ke=i.top-this.TOP_UNIT_Y_OFFSET;t.font=`bold ${this.UNIT_FONT_SIZE}px ${s.family}`,t.textAlign="left",t.fillText("kts",tt,Ke),t.restore()}let Fe=re?.[0]?.data,_e=Fe?.length?Fe.length-1:-1,qe=_e>=0?Fe[_e]?.x:void 0;if(typeof qe=="number"&&isFinite(qe)){let Me=this.normalizeAngle(qe);t.save(),t.fillStyle=r.chartValue,t.font=`bold ${this.SPEED_VALUE_FONT_SIZE}px ${s.family}`,t.textAlign="center",t.textBaseline="middle",t.fillText(`${Me.toFixed(0)}\xB0`,i.left+3*i.width/4,i.top-this.TOP_VALUE_Y_OFFSET),t.restore()}if(!x){let Me=Math.min(i.width*.7,420),Ve=90,Te=i.left+(i.width-Me)/2,Ye=i.top+(i.height-Ve)/2;t.save(),t.globalAlpha=.82,t.fillStyle=o.background,t.fillRect(Te,Ye,Me,Ve),t.restore(),t.save(),t.strokeStyle=o.contrastDim,t.lineWidth=2,t.strokeRect(Te,Ye,Me,Ve),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...",Te+Me/2,Ye+Ve/2),t.restore()}}};constructor(){super(),this.defaultConfig={filterSelfPaths:!0,color:"contrast",timeScale:"Last 30 Minutes"},Z(()=>{this.theme()&&this.datasetConfig&&(this.setChartOptions(),this.setDatasetsColors())})}ngOnInit(){this.validateConfig(),this.createServiceDataset()}ngAfterViewInit(){this.startWidget()}startWidget(){this.datasetConfig=this._dataset.getDatasetConfig(`${this.widgetProperties.uuid}-twd`),this.dataSourceInfo=this._dataset.getDataSourceInfo(`${this.widgetProperties.uuid}-twd`),this.datasetConfig&&(this.createDatasets(),this.setChartOptions(),this.chart?this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")}):(this.chart=new at(this.widgetDataChart().nativeElement.getContext("2d"),{type:this.lineChartType,data:this.lineChartData,options:this.lineChartOptions,plugins:[this.gridBackgroundPlugin,this.centerTickPlugin]}),this.ngZone.runOutsideAngular(()=>{this.chart?.update()})),this.startStreaming())}updateConfig(e){this.widgetProperties.config=e,this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-twd`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(t=>t.uuid===`${this.widgetProperties.uuid}-tws`).length>0&&this._dataset.remove(`${this.widgetProperties.uuid}-tws`),this.createServiceDataset(),this.startWidget()}createServiceDataset(){if(this.widgetProperties.config.timeScale==="")return;let e="self.environment.wind.directionTrue",t="self.environment.wind.speedTrue",i="default";this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-twd`).length===0&&this._dataset.create(e,i,this.widgetProperties.config.timeScale,30,`windtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-twd`),this._dataset.list().filter(o=>o.uuid===`${this.widgetProperties.uuid}-tws`).length===0&&this._dataset.create(t,i,this.widgetProperties.config.timeScale,30,`speedtrends-${this.widgetProperties.uuid}`,!0,!1,`${this.widgetProperties.uuid}-tws`)}setChartOptions(){this.lineChartOptions.maintainAspectRatio=!1,this.lineChartOptions.animation=!1,this.lineChartOptions.indexAxis="y";let e=0,t=360,i=(t-e)/4,o=0,r=20,s=(r-o)/4;this.lineChartOptions.scales={y:{type:"linear",display:!0,position:"right",reverse:!0,title:{display:!0,text:`${this.datasetConfig.timeScaleFormat}`,align:"center"},ticks:{count:6,autoSkip:!1,includeBounds:!0,align:"inner",major:{enabled:!0},font:{size:16},callback:h=>{let m=Number(h),u=this.datasetConfig?.timeScaleFormat,v=this.getWindowMs(u);return u==="Last 5 Minutes"?`${Math.round(m/6e4)}'`:v>=10*6e4?`${Math.round(m/6e4)}'`:`${Math.round(m/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 m=this.xCenter??Number.NaN;if(this.nearlyEqual(h,m))return"";let v=this.chart?.options?.scales?.x?.min;return typeof v=="number"&&this.nearlyEqual(h,v)?"":`${((h%360+360)%360).toFixed(0)}\xB0`},font:h=>{let m=h.tick?.value??Number.NaN,u=this.xCenter??Number.NaN;return{size:20,weight:this.nearlyEqual(m,u)?"bold":"normal"}},color:h=>{let m=h.tick?.value??Number.NaN,u=this.xCenter??Number.NaN;return this.nearlyEqual(m,u)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let m=h.tick?.value??Number.NaN,u=h.scale,v=this.chart?.options?.scales,x=u,S=v?.x?.min??x.min;return this.nearlyEqual(m,S)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}},xSpeed:{type:"linear",position:"top",stack:"trends",beginAtZero:!1,bounds:"ticks",min:o,max:r,title:{display:!1},ticks:{count:5,align:"inner",autoSkip:!1,includeBounds:!0,stepSize:s,minRotation:0,maxRotation:0,callback:h=>{let m=this.xCenterSpeed??Number.NaN;if(this.nearlyEqual(h,m))return"";let v=this.chart?.options?.scales?.xSpeed?.max;if(typeof v=="number"&&this.nearlyEqual(h,v))return"";let x=this.xStepSpeed??Number.NaN,S=Number.isFinite(x)?x:1,_=Math.max(0,Math.min(3,Math.ceil(-Math.log10(S))));return`${h.toFixed(_)}`},font:h=>{let m=h.tick?.value??Number.NaN,u=this.xCenterSpeed??Number.NaN;return{size:20,weight:this.nearlyEqual(m,u)?"bold":"normal"}},color:h=>{let m=h.tick?.value??Number.NaN,u=this.xCenterSpeed??Number.NaN;return this.nearlyEqual(m,u)?this.theme().contrast:void 0}},grid:{display:!0,color:h=>{let m=h.tick?.value??Number.NaN,u=h.scale,v=this.chart?.options?.scales,x=u,S=v?.xSpeed?.max??x.max;return this.nearlyEqual(m,S)?"rgba(0,0,0,0)":this.theme().contrastDimmer},lineWidth:1}}},this.lineChartOptions.plugins={title:{display:!0,align:"end",padding:{top:3,bottom:0},text:"TWD ",font:{size:35,weight:"normal"},color:this.getThemeColors().chartLabel},subtitle:{display:!0,align:"start",padding:{top:-41,bottom:12},text:" TWS",font:{size:35},color:this.getThemeColors().chartLabel},annotation:{},legend:{display:!1}},this.xCenter=(e+t)/2,this.xStep=i,this.xCenterSpeed=(o+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.widgetProperties.uuid}-twd`),t=this._dataset.getDatasetBatchThenLiveObservable(`${this.widgetProperties.uuid}-tws`);this._dsDirectionSub=e?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToDatasets(i);else if(this.pushRowsToDatasets([i]),this.chart.data.datasets[0].data.length>this.dataSourceInfo.maxDataPoints)for(let o=0;o<=4;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})}),this._dsSpeedSub=t?.subscribe(i=>{if(Array.isArray(i))this.pushRowsToSpeedDatasets(i);else if(this.pushRowsToSpeedDatasets([i]),this.chart.data.datasets[5].data.length>this.dataSourceInfo.maxDataPoints)for(let o=5;o<=9;o++)this.chart.data.datasets[o].data.shift();this.updateChartAfterDataChange(),this.ngZone.runOutsideAngular(()=>{this.chart?.update("quiet")})})}unwrapAngles(e){if(e.length===0)return[];let t=[],i=null;for(let o of e){if(o==null){t.push(null);continue}if(i==null){t.push(o),i=o;continue}let r=o-i;r>180&&(r-=360),r<-180&&(r+=360),t.push(t[t.length-1]+r),i=o}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,o){let r=e.map(h=>{let m=this.getRowValue(h,t);return m==null?null:this.unitsService.convertToUnit(i,m)}),s=o?this.unwrapAngles(r):r;return e.map((h,m)=>({x:s[m],y:h.timestamp,ts:h.timestamp}))}pushRowsGeneric(e,t,i,o){["value","sma","avg","min","max"].forEach((s,h)=>{this.chart.data.datasets[t+h].data.push(...this.transformRows(e,s,i,o))})}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)),o=e/Math.pow(10,i);return(t.find(s=>o<=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,o=!!e?.length,r=!!t?.length,s=!!i?.length,h=o?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 x=this.chart.data.datasets[3]?.data,S=this.chart.data.datasets[4]?.data,_=x?.length?x[x.length-1].x:void 0,B=S?.length?S[S.length-1].x:void 0,re=typeof _=="number"&&isFinite(_)?this.angularDiff(h,_):Number.NaN,ge=typeof B=="number"&&isFinite(B)?this.angularDiff(h,B):Number.NaN,ae=Number.isFinite(re)||Number.isFinite(ge)?Math.max(Number.isFinite(re)?re:0,Number.isFinite(ge)?ge:0):Number.NaN;if(!Number.isFinite(ae)){let Te=o?e:r?t:i,Ye=Math.min(30,Te?.length??0);if(Ye>1){let Ke=Te.slice(Te.length-Ye).map(Je=>Je.x).filter(Je=>typeof Je=="number"&&isFinite(Je));Ke.length&&(ae=Ke.reduce((Je,nt)=>Math.max(Je,this.angularDiff(h,nt)),0))}}ae=Math.max(ae||0,15);let Fe=2*ae/4,_e=this.niceStepFromMantissas(Fe,[1,1.5,2,2.5,5,7.5,10]),qe=h-2*_e,Me=h+2*_e;this.chart.options.scales.x.min=qe,this.chart.options.scales.x.max=Me;let Ve=this.chart.options.scales;Ve.x.ticks=je(Q({},Ve.x.ticks??{}),{stepSize:_e}),this.xCenter=h,this.xStep=_e}let m=this.chart.data.datasets[7]?.data;if(m&&m.length){let x=m.length-1,S=m[x]?.x??0,_=this.chart.data.datasets[8].data[x]?.x??S,B=this.chart.data.datasets[9].data[x]?.x??S,re=Math.abs(S-_),ge=Math.abs(B-S),ae=Math.max(re,ge);ae=Math.max(ae,.5);let Fe=2*ae/4,_e=this.niceStepFromMantissas(Fe,[1,2,2.5,5,10]),qe=S-2*_e,Me=S+2*_e,Ve=this.chart.options.scales;Ve.xSpeed.min=qe,Ve.xSpeed.max=Me,Ve.xSpeed.ticks=je(Q({},Ve.xSpeed.ticks??{}),{stepSize:_e}),this.xCenterSpeed=S,this.xStepSpeed=_e}let u=this.getWindowMs(this.datasetConfig?.timeScaleFormat);if(this.chart.data.datasets[0].data.length>0){let x=Date.now();this.chart.data.datasets.forEach(ge=>{ge.data.forEach(ae=>{let Se=ae.ts??ae.y;ae.y=Math.max(0,Math.min(u,x-Se))})}),this.chart.options.scales.y.min=0,this.chart.options.scales.y.max=u;let S;switch(this.datasetConfig?.timeScaleFormat){case"Last Minute":S=15e3;break;case"Last 5 Minutes":S=6e4;break;case"Last 30 Minutes":S=5*6e4;break;default:S=u/5;break}let B=this.chart.options.scales,re=Q({},B.y.ticks??{});delete re.count,re.stepSize=S,B.y.ticks=re}}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 o=t.chartArea;if(!o)return null;let r=t.scales?.[i];if(!r)return null;let s=t.options?.scales,h=r,m=s?.[i]?.min??h.min,u=s?.[i]?.max??h.max;if(typeof m!="number"||typeof u!="number"||!isFinite(m)||!isFinite(u))return null;let v=(m+u)/2,x=r.getPixelForValue(v),S=Math.max(0,Math.min(1,(x-o.left)/o.width)),_=e.createLinearGradient(o.left,0,o.right,0);return _.addColorStop(0,this.theme().port),_.addColorStop(S,this.theme().port),_.addColorStop(S,this.theme().starboard),_.addColorStop(1,this.theme().starboard),_}setDatasetsColors(){this.lineChartData.datasets.forEach(e=>{e.label==="Value"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill),e.label==="Value Speed"&&(e.borderColor=this.getThemeColors().valueLine,e.backgroundColor=this.getThemeColors().valueFill)})}getThemeColors(){let e=this.widgetProperties.config.color,t={valueLine:null,valueFill:null,averageLine:null,averageFill:null,averageChartLine:null,chartLabel:null,chartValue:null};switch(e){case"contrast":t.valueLine=this.theme().contrastDim,t.valueFill=this.theme().contrastDimmer,t.averageLine=this.theme().contrast,t.averageFill=this.theme().contrast,t.chartValue=this.theme().contrast,t.averageChartLine=this.theme().contrast,t.chartLabel=this.theme().contrastDim;break;case"blue":t.valueLine=this.theme().blueDim,t.valueFill=this.theme().blueDimmer,t.averageLine=this.theme().blue,t.averageFill=this.theme().blue,t.chartValue=this.theme().blue,t.averageChartLine=this.theme().blueDim,t.chartLabel=this.theme().blueDim;break;case"green":t.valueLine=this.theme().greenDim,t.valueFill=this.theme().greenDimmer,t.averageLine=this.theme().green,t.averageFill=this.theme().green,t.chartValue=this.theme().green,t.averageChartLine=this.theme().greenDim,t.chartLabel=this.theme().greenDim;break;case"pink":t.valueLine=this.theme().pinkDim,t.valueFill=this.theme().pinkDimmer,t.averageLine=this.theme().pink,t.averageFill=this.theme().pink,t.chartValue=this.theme().pink,t.averageChartLine=this.theme().pinkDim,t.chartLabel=this.theme().pinkDim;break;case"orange":t.valueLine=this.theme().orangeDim,t.valueFill=this.theme().orangeDimmer,t.averageLine=this.theme().orange,t.averageFill=this.theme().orange,t.chartValue=this.theme().orange,t.averageChartLine=this.theme().orangeDim,t.chartLabel=this.theme().orangeDim;break;case"purple":t.valueLine=this.theme().purpleDim,t.valueFill=this.theme().purpleDimmer,t.averageLine=this.theme().purple,t.averageFill=this.theme().purple,t.chartValue=this.theme().purple,t.averageChartLine=this.theme().purpleDim,t.chartLabel=this.theme().purpleDim;break;case"grey":t.valueLine=this.theme().greyDim,t.valueFill=this.theme().greyDimmer,t.averageLine=this.theme().grey,t.averageFill=this.theme().grey,t.chartValue=this.theme().grey,t.averageChartLine=this.theme().greyDim,t.chartLabel=this.theme().greyDim;break;case"yellow":t.valueLine=this.theme().yellowDim,t.valueFill=this.theme().yellowDimmer,t.averageLine=this.theme().yellow,t.averageFill=this.theme().yellow,t.chartValue=this.theme().yellow,t.averageChartLine=this.theme().yellowDim,t.chartLabel=this.theme().yellowDim;break}return t}ngOnDestroy(){this.destroyDataStreams(),this._dsDirectionSub?.unsubscribe(),this._dsSpeedSub?.unsubscribe(),this.chart?.destroy();let e=this.widgetDataChart?.()?.nativeElement;this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-windtrends-chart"]],viewQuery:function(t,i){t&1&&$(i.widgetDataChart,Jc,5,Be),t&2&&ce()},features:[ne],decls:3,vars:2,consts:[["widgetDataChart",""],[3,"configChange","config","id"],[2,"z-index","inherit"]],template:function(t,i){if(t&1){let o=ee();g(0,"widget-host",1),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),z(1,"canvas",2,0),b()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid))},dependencies:[me],encapsulation:2})}return n})();typeof steelseries>"u"&&(globalThis.steelseries={});var ma=globalThis.steelseries;ma.ColorDef=ma.ColorDef||{RED:"red",GREEN:"green",BLUE:"blue",ORANGE:"orange",YELLOW:"yellow",CYAN:"cyan",MAGENTA:"magenta",WHITE:"white",GRAY:"gray",BLACK:"black",RAITH:"raith",GREEN_LCD:"greenLcd",JUG_GREEN:"jugGreen"};ma.FrameDesign=ma.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 eu={Red:steelseries.ColorDef.RED,Green:steelseries.ColorDef.GREEN,Blue:steelseries.ColorDef.BLUE,Orange:steelseries.ColorDef.ORANGE,Yellow:steelseries.ColorDef.YELLOW,Cyan:steelseries.ColorDef.CYAN,Magenta:steelseries.ColorDef.MAGENTA,White:steelseries.ColorDef.WHITE,Gray:steelseries.ColorDef.GRAY,Black:steelseries.ColorDef.BLACK,Raith:steelseries.ColorDef.RAITH,"Green LCD":steelseries.ColorDef.GREEN_LCD,"JUG Green":steelseries.ColorDef.JUG_GREEN},tu={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},xl=(()=>{class n extends ue{cdr=W(Dn);canvasService=W(Ue);gaugeOptions={};gauge=null;streamsInitialized=!1;lastSizeSignature="";resizeTimer=null;pendingStructuralRebuild=!1;constructor(){super(),this.defaultConfig={filterSelfPaths:!0,paths:{gaugePitchPath:{description:"Attitude Pitch Data",path:"self.navigation.attitude.pitch",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3},gaugeRollPath:{description:"Attitude Roll Data",path:"self.navigation.attitude.roll",source:"default",pathType:"number",pathRequired:!1,isPathConfigurable:!0,showPathSkUnitsFilter:!1,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:1e3}},gauge:{type:"horizon",noFrameVisible:!1,faceColor:"anthracite",invertPitch:!1,invertRoll:!1},enableTimeout:!1,dataTimeout:5}}ngOnInit(){this.validateConfig()}ngAfterContentInit(){this.cdr.detectChanges(),this.startWidget();let t=document.getElementById(this.widgetProperties.uuid+"-canvas")?.parentElement;if(t){let i=t.getBoundingClientRect();this.onResized({contentRect:{width:i.width,height:i.height}})}}startWidget(e=!1){this.buildOptions();let t=this.widgetProperties.uuid+"-canvas";t&&(this.gauge&&!e&&!this.pendingStructuralRebuild||(this.pendingStructuralRebuild=!1,this.gauge=new steelseries.Horizon(t,this.gaugeOptions)),this.streamsInitialized||(this.observeDataStream("gaugePitchPath",i=>{let o=i.data.value??0;this.gauge.setPitchAnimated(this.widgetProperties.config.gauge.invertPitch?-o:o)}),this.observeDataStream("gaugeRollPath",i=>{let o=i.data.value??0;this.gauge.setRollAnimated(this.widgetProperties.config.gauge.invertRoll?-o:o)}),this.streamsInitialized=!0))}updateConfig(e){this.widgetProperties.config=e,this.pendingStructuralRebuild=!0,this.startWidget(!0)}buildOptions(){this.gaugeOptions.pointerColor=eu.Red,this.gaugeOptions.frameVisible=this.widgetProperties.config.gauge.noFrameVisible??!1,this.gaugeOptions.frameDesign=tu[this.widgetProperties.config.gauge.faceColor??"anthracite"],this.gaugeOptions.foregroundVisible=!1}onResized(e){if(e.contentRect.height<50||e.contentRect.width<50)return;let t=Math.min(e.contentRect.height,e.contentRect.width),i="horizon:"+t;i!==this.lastSizeSignature&&(this.lastSizeSignature=i,this.gaugeOptions.size=t,this.resizeTimer&&window.clearTimeout(this.resizeTimer),this.resizeTimer=window.setTimeout(()=>{this.startWidget(!0),this.resizeTimer=null},120))}ngOnDestroy(){this.destroyDataStreams(),this.gauge&&(this.gauge=null);let e=document.getElementById(this.widgetProperties.uuid+"-canvas");this.canvasService.releaseCanvas(e,{clear:!0,removeFromDom:!0})}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-horizon"]],features:[ne],decls:4,vars:5,consts:[[3,"configChange","config","id"],[1,"canvas-wrap",3,"onResize"],[2,"z-index","inherit",3,"id"]],template:function(t,i){t&1&&(g(0,"widget-host",0),he("configChange",function(r){return de(i.widgetProperties.config,r)||(i.widgetProperties.config=r),r}),I("configChange",function(r){return i.updateConfig(r)}),g(1,"div",1),I("onResize",function(r){return i.onResized(r)}),g(2,"canvas",2),p(3," Browser does not support canvas element. "),b()()()),t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(),Ho(i.gaugeOptions.frameVisible===!0?"padding: 10px;":""),w(),L("id",i.widgetProperties.uuid+"-canvas"))},dependencies:[me,Ge,mt],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}.canvas-wrap[_ngcontent-%COMP%]{position:relative;display:block;width:100%;height:100%;padding:0}.canvas-wrap[_ngcontent-%COMP%] > canvas[_ngcontent-%COMP%]{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}"]})}return n})();var iu=["finePath"],nu=["coarsePath"];function au(n,a){if(n&1&&(q(),z(0,"line")),n&2){let e=a.$implicit;X("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function ou(n,a){if(n&1&&(q(),z(0,"line",21)),n&2){let e=a.$implicit;X("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function ru(n,a){if(n&1&&(q(),g(0,"text"),p(1),b()),n&2){let e=a.$implicit;X("x",e.x)("y",e.y),w(),Qe("",e.text,"\xB0")}}function su(n,a){if(n&1&&(q(),z(0,"line")),n&2){let e=a.$implicit;X("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.5:1)}}function lu(n,a){if(n&1&&(q(),z(0,"line",21)),n&2){let e=a.$implicit;X("x1",e.x1)("y1",e.y1)("x2",e.x2)("y2",e.y2)("stroke-width",e.major?1.2:.8)}}function du(n,a){if(n&1&&(q(),g(0,"text"),p(1),b()),n&2){let e=a.$implicit;X("x",e.x)("y",e.y),w(),Qe("",e.text,"\xB0")}}var kl=(()=>{class n extends ue{ngZone=W($e);finePathRef=Y("finePath");coarsePathRef=Y("coarsePath");angleDeg=H(0);absAngle=Ze(()=>{let e=this.angleDeg();return e==null?null:Math.abs(e)});angleSide=Ze(()=>{let e=this.angleDeg();if(e==null)return"";let t=e>0?"Stbd":e<0?"Port":"Level";return this.widgetProperties?.config?.gauge.sideLabel?t:""});displayValue=Ze(()=>{let e=this.absAngle();if(e==null)return"--";let t=this.widgetProperties?.config?.numDecimal??1;return e.toFixed(t)});themeColorValue=H("contrast");ready=H(!1);pointerTransition=Ze(()=>{let e=this.widgetProperties?.config?.paths?.angle?.sampleTime??1e3;return`transform ${Math.max(100,e*.95)}ms ease-in-out`});fineTicks=H([]);fineInnerTicks=H([]);fineLabels=H([]);coarseTicks=H([]);coarseInnerTicks=H([]);coarseLabels=H([]);makePointerTransform(e){return Ze(()=>this.computePointerTransform(this.angleDeg(),e))}finePointerTransform=this.makePointerTransform("fine");coarsePointerTransform=this.makePointerTransform("coarse");constructor(){super(),this.defaultConfig={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},Z(()=>{let e=this.theme();this.setColors(e)})}ngOnInit(){this.validateConfig(),this.startWidget()}startWidget(){this.unsubscribeDataStream(),this.unsubscribeMetaStream(),this.observeDataStream("angle",e=>{if(!e||!e.data){this.angleDeg.set(null);return}let t=this.widgetProperties.config.gauge.invertAngle?-e.data.value:e.data.value;this.angleDeg.set(t)})}setColors(e){this.themeColorValue.set(ie(this.widgetProperties.config.color,e).color)}updateConfig(e){this.widgetProperties.config=e,this.setColors(this.theme()),this.startWidget()}computePointerTransform(e,t){let i=e??0,o=t==="fine"?this.finePathRef()?.nativeElement:this.coarsePathRef()?.nativeElement;if(!o)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=o.getTotalLength(),u=(s-r.min)/(r.max-r.min)*h,v=o.getPointAtLength(u),x=u<10||u>h-10?5:1,S=o.getPointAtLength(Math.max(0,u-x)),_=o.getPointAtLength(Math.min(h,u+x)),B=_.x-S.x,re=_.y-S.y,ge=Math.atan2(re,B)*180/Math.PI,ae=Math.hypot(B,re)||1,Se=-re/ae,Fe=B/ae,_e=-10,qe=v.x+Se*_e,Me=v.y+Fe*_e;return`translate(${qe}px, ${Me}px) rotate(${ge}deg)`}buildScale(e,t,i,o,r){let s=e.getTotalLength(),h=[],m=[],u=[],v=i-t,x=Math.round(v/r),S=Math.round(o/r);for(let _=0;_<=x;_++){let B=t+_*r,re=_/x,ge=_===x?s:re*s,ae=e.getPointAtLength(ge),Se=e.getPointAtLength(Math.max(0,ge-1)),Fe=e.getPointAtLength(Math.min(s,ge+1)),_e=Math.atan2(Fe.y-Se.y,Fe.x-Se.x)*180/Math.PI,qe=_%S===0||Math.abs(B)<1e-9,Me=qe?8:4,Ve=qe?6:3,Te=this.pointFromAngle(ae,_e+90,0),Ye=this.pointFromAngle(ae,_e+90,Me);h.push({x1:Te.x,y1:Te.y,x2:Ye.x,y2:Ye.y,major:qe});let tt=this.pointFromAngle(ae,_e-90,0),Ke=this.pointFromAngle(ae,_e-90,Ve);if(m.push({x1:tt.x,y1:tt.y,x2:Ke.x,y2:Ke.y,major:qe}),qe){let Je=this.pointFromAngle(ae,_e+90,Me+8);u.push({x:Je.x,y:Je.y,text:`${Math.abs(B)}`,value:B})}}return{ticks:h,innerTicks:m,labels:u}}pointFromAngle(e,t,i){let o=t*Math.PI/180;return{x:e.x+Math.cos(o)*i,y:e.y+Math.sin(o)*i}}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)})})}ngOnDestroy(){this.unsubscribeDataStream(),this.unsubscribeMetaStream()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["widget-heel-gauge"]],viewQuery:function(t,i){t&1&&($(i.finePathRef,iu,5),$(i.coarsePathRef,nu,5)),t&2&&ce(2)},features:[ne],decls:55,vars:20,consts:[["finePath",""],["coarsePath",""],[3,"configChange","config","id"],[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){if(t&1){let o=ee();g(0,"widget-host",2),he("configChange",function(s){return O(o),de(i.widgetProperties.config,s)||(i.widgetProperties.config=s),R(s)}),I("configChange",function(s){return O(o),R(i.updateConfig(s))}),g(1,"div",3),q(),g(2,"svg",4)(3,"defs")(4,"linearGradient",5),z(5,"stop",6)(6,"stop",7)(7,"stop",8),b(),g(8,"filter",9),z(9,"feGaussianBlur",10),g(10,"feSpecularLighting",11),z(11,"fePointLight",12)(12,"fePointLight",13),b(),z(13,"feComposite",14)(14,"feComposite",15),b()(),z(15,"path",16)(16,"path",17)(17,"path",18)(18,"path",19,0),g(20,"g",20),rt(21,au,1,5,":svg:line",null,gt),b(),g(23,"g",20),rt(24,ou,1,5,":svg:line",21,gt),b(),g(26,"g",22),rt(27,ru,2,3,":svg:text",null,gt),b(),g(29,"g",23),z(30,"ellipse",24),b(),g(31,"text",25),p(32),b()(),g(33,"svg",26)(34,"g",27)(35,"text",28),p(36),g(37,"tspan",29),p(38),b()(),z(39,"path",30)(40,"path",31)(41,"path",32)(42,"path",33,1),g(44,"g",20),rt(45,su,1,5,":svg:line",null,gt),b(),g(47,"g",20),rt(48,lu,1,5,":svg:line",21,gt),b(),g(50,"g",22),rt(51,du,2,3,":svg:text",null,gt),b(),g(53,"g",34),z(54,"ellipse",24),b()()()()()}t&2&&(le("config",i.widgetProperties.config),L("id",i.widgetProperties.uuid),w(21),st(i.fineTicks()),w(3),st(i.fineInnerTicks()),w(3),st(i.fineLabels()),w(2),se("transition",i.ready()?i.pointerTransition():"none")("transform",i.finePointerTransform()),ti("ready",i.ready()),w(),X("fill",i.themeColorValue()),w(2),Qe(" ",i.widgetProperties.config.displayName," "),w(3),X("fill",i.themeColorValue()),w(),Qe(" ",i.displayValue(),"\xB0 "),w(2),Re(i.angleSide()),w(7),st(i.coarseTicks()),w(3),st(i.coarseInnerTicks()),w(3),st(i.coarseLabels()),w(2),se("transition",i.ready()?i.pointerTransition():"none")("transform",i.coarsePointerTransform()),ti("ready",i.ready()),w(),X("fill",i.themeColorValue()))},dependencies:[me],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 hu=["grid"];function cu(n,a){n&1&&(g(0,"p",9)(1,"strong"),p(2,"Long press/click and hold anywhere"),b(),p(3," to add widgets"),b(),g(4,"mat-icon",10),p(5,"touch_app"),b())}function uu(n,a){if(n&1){let e=ee();g(0,"p",9),p(1,"This empty dashboard is ready to be customized."),b(),g(2,"button",11),I("click",function(){O(e);let i=j();return R(i.editDashboard())}),g(3,"mat-icon"),p(4,"lock_open"),b(),p(5," Unlock and Customize "),b()}}function mu(n,a){if(n&1){let e=ee();g(0,"div",7)(1,"button",12),I("click",function(){O(e);let i=j();return R(i.saveLayoutChanges())}),g(2,"mat-icon"),p(3,"done"),b()(),g(4,"button",13),I("click",function(){O(e);let i=j();return R(i.cancelLayoutChanges())}),g(5,"mat-icon"),p(6,"close"),b()()()}}function gu(n,a){if(n&1&&z(0,"dashboard-scroller",8),n&2){let e=j();L("activePage",e.dashboard.activeDashboard())("dashboards",e.dashboard.dashboards())}}var yC=(()=>{class n{activatedRoute=W(Jo);_app=W(Dt);_dialog=W(In);dashboard=W(et);_destroyRef=W(Nt);_uiEvent=W(vr);_dataset=W(Mt);_router=W(Rn);_hostEl=W(Be);isDashboardStatic=An(this.dashboard.isDashboardStatic$,{initialValue:!0});_gridstack=Y.required("grid");_previousIsStaticState=!0;_suppressDrag=!1;gridOptions=H({margin:4,minRow:12,maxRow:12,float:!0,acceptWidgets:!1,resizable:{handles:"all"}});_boundHandleKeyDown=this.handleKeyDown.bind(this);_resizeObserver;_pendingResizeRaf=null;_lastContainerHeight=0;_lastCellHeight=0;_hasLoadedInitialDashboard=!1;constructor(){ri.addComponentToSelectorType([Kn,Gr,Jn,Yr,cl,tl,nl,Ks,ol,Br,ts,$s,ll,dl,sl,rl,ul,pl,wl,ia,fl,vl,Cl,xl,kl])}ngAfterViewInit(){this.resizeGridColumns(),this.setupResizeObserver(),this._uiEvent.addHotkeyListener(this._boundHandleKeyDown,{ctrlKey:!0,keys:["arrowdown","arrowup"]});try{let e=this._gridstack().grid;e&&typeof e.on=="function"&&(e.on("dragstart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("dragstop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}),e.on("resizestart",()=>{this._uiEvent.isDragging.set(!0)}),e.on("resizestop",()=>{setTimeout(()=>this._uiEvent.isDragging.set(!1),0)}))}catch{}this.dashboard.isDashboardStatic$.pipe(pt(this._destroyRef)).subscribe(e=>{e?(this._gridstack().grid.setStatic(e),e!==this._previousIsStaticState&&(this.saveDashboard(),this._previousIsStaticState=e)):(this._gridstack().grid.setStatic(e),this._previousIsStaticState=e)}),this.dashboard.widgetAction$.pipe(pt(this._destroyRef)).subscribe(e=>{e&&this._gridstack().grid.getGridItems().forEach(t=>{if(t.gridstackNode.id===e.id)switch(e.operation){case"delete":this.deleteWidget(t);break;case"duplicate":this.duplicateWidget(t);break;default:break}})}),this.activatedRoute.params.pipe(pt(this._destroyRef)).subscribe(e=>{let t=e.id,i=Number(t);if(!(t!==void 0&&t!==""&&!isNaN(i))||i<0||i>=this.dashboard.dashboards().length)return;let r=this.dashboard.activeDashboard();(!this._hasLoadedInitialDashboard||i!==r)&&(i!==r&&this.dashboard.setActiveDashboard(i),this.loadDashboard(i),this._hasLoadedInitialDashboard=!0)})}setupResizeObserver(){if(this._resizeObserver)return;let e=this._hostEl.nativeElement;try{this._resizeObserver=new ResizeObserver(()=>{this._pendingResizeRaf===null&&(this._pendingResizeRaf=requestAnimationFrame(()=>{this._pendingResizeRaf=null,this.resizeGridColumns()}))}),this._resizeObserver.observe(e)}catch{}}handleKeyDown(e,t){e==="arrowdown"?this.previousDashboard(t):e==="arrowup"&&this.nextDashboard(t)}resizeGridColumns(){try{let t=this._gridstack().grid;if(!t)return;let i=t,o=this._hostEl.nativeElement.clientHeight||window.innerHeight;if(o===this._lastContainerHeight&&this._lastCellHeight>0)return;let r=i.getRow?i.getRow():0;if(r>0&&i.cellHeight){let s=Number(r)||0,h=s>0?o/s:1;if(h=Math.max(1,Math.round(h*100)/100),this._lastCellHeight===h&&this._lastContainerHeight===o)return;i.cellHeight(h),i.batchUpdate&&i.commit&&(i.batchUpdate(),i.commit()),this._lastContainerHeight=o,this._lastCellHeight=h}}catch{}}loadDashboard(e){let t=this.dashboard.dashboards()[e],i=this._gridstack();if(!i?.grid){queueMicrotask(()=>this.loadDashboard(e));return}i.grid.batchUpdate(),i.grid.load(t.configuration),i.grid.commit()}saveDashboard(){let e=this._gridstack().grid.save(!1,!1)||null;this.dashboard.updateConfiguration(this.dashboard.activeDashboard(),e)}saveLayoutChanges(){this.dashboard.setStaticDashboard(!0),this.dashboard.notifyLayoutEditSaved()}cancelLayoutChanges(){this.loadDashboard(this.dashboard.activeDashboard()),this.dashboard.setStaticDashboard(!0),this.dashboard.notifyLayoutEditCanceled()}addNewWidget(e){if(!this.dashboard.isDashboardStatic()&&e.detail!==void 0){let t=e.detail||{},i=t.center?.x??t.x??0,o=t.center?.y??t.y??0,r=this._gridstack().grid.getCellFromPixel({left:i,top:o});this._gridstack().grid.isAreaEmpty(r.x,r.y,1,1)&&(this._gridstack().grid.willItFit({x:r.x,y:r.y,w:2,h:3})?this._dialog.openFrameDialog({title:"Add Widget",component:"select-widget"},!0).subscribe(h=>{if(!h||typeof h!="object")return;let m=ni.create(),u=h,v={x:r.x,y:r.y,w:u.defaultWidth,h:u.defaultHeight,minW:u.minWidth,minH:u.minHeight,id:m,selector:u.selector,input:{widgetProperties:{type:u.selector,uuid:m}}};this._gridstack().grid.addWidget(v)}):this._app.sendSnackbarNotification("Error Adding Widget: Not enough space at the selected location. Please reorganize the dashboard to free up space or choose a larger empty area.",0))}}cancelPointerSequence(){if(!this._suppressDrag){this._suppressDrag=!0;try{this._gridstack().grid.setStatic(!0)}catch{}["pointerup","mouseup","touchend"].forEach(e=>{document.dispatchEvent(new Event(e,{bubbles:!0}))})}}onPointerRelease(){if(this._suppressDrag&&(this._suppressDrag=!1,!this.dashboard.isDashboardStatic()))try{this._gridstack().grid.setStatic(!1)}catch{}}duplicateWidget(e){let t=ni.create(),i=e.gridstackNode,o={w:i.w,h:i.h,id:t,selector:i.selector,input:{widgetProperties:{type:i.input.widgetProperties.type,uuid:t,config:Si(i.input.widgetProperties.config)}}},r=this._gridstack();r.grid.willItFit(o)?r.grid.addWidget(o):(o.h=2,o.w=2,r.grid.willItFit(o)?r.grid.addWidget(o):this._app.sendSnackbarNotification("Duplication failed: Insufficient space on the dashboard. Please reorganize to free up space.",0))}deleteWidget(e){let t=e.gridstackNode;switch(this._gridstack().grid.removeWidget(e),t.selector){case"widget-numeric-chart":case"widget-windtrends-chart":{(this._dataset.list()?.filter(r=>r.uuid===t.id||r.uuid?.startsWith(`${t.id}-`))||[]).forEach(r=>this._dataset.remove(r.uuid));break}}}nextDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToNextDashboard()}previousDashboard(e){e.preventDefault(),this.dashboard.isDashboardStatic()&&this.dashboard.navigateToPreviousDashboard()}editDashboard(){this.dashboard.toggleStaticDashboard()}navigateToHelp(){this._router.navigate(["/help"])}ngOnDestroy(){let e=this._gridstack();if(e?.grid&&e.grid.destroy(!0),this._resizeObserver){try{this._resizeObserver.disconnect()}catch{}this._resizeObserver=void 0}this._pendingResizeRaf!==null&&(cancelAnimationFrame(this._pendingResizeRaf),this._pendingResizeRaf=null),this._uiEvent.removeHotkeyListener(this._boundHandleKeyDown)}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=V({type:n,selectors:[["dashboard"]],viewQuery:function(t,i){t&1&&$(i._gridstack,hu,5),t&2&&ce()},hostBindings:function(t,i){t&1&&I("mouseup",function(){return i.onPointerRelease()},_a)("touchend",function(){return i.onPointerRelease()},_a)},decls:16,vars:3,consts:[["grid",""],["kipGestures","",3,"swipeup","swipedown","press","resize","options"],["empty-content","",1,"dashboard-empty-state-container"],[1,"dashboard-empty-state-action"],[1,"empty-state-icon"],[1,"empty-state-help"],["mat-button","",1,"empty-state-help-button",3,"click"],[1,"edit-layout-close-icon"],[3,"activePage","dashboards"],[1,"empty-state-text"],[1,"touch-icon"],["mat-flat-button","",1,"empty-state-button",3,"click"],["mat-fab","",1,"layout-action-btn",2,"margin-right","10px",3,"click"],["mat-fab","",1,"layout-action-btn",3,"click"]],template:function(t,i){if(t&1){let o=ee();g(0,"gridstack",1,0),I("swipeup",function(s){return O(o),R(i.previousDashboard(s))})("swipedown",function(s){return O(o),R(i.nextDashboard(s))})("press",function(s){return O(o),R(i.addNewWidget(s))})("resize",function(){return O(o),R(i.resizeGridColumns())},Ro),g(2,"div",2)(3,"div",3)(4,"mat-icon",4),p(5,"dashboard"),b(),Ne(6,cu,6,0)(7,uu,6,0),b(),g(8,"div")(9,"div",5)(10,"button",6),I("click",function(){return O(o),R(i.navigateToHelp())}),g(11,"mat-icon"),p(12,"help"),b(),p(13," Get Help "),b()()()()(),Ne(14,mu,7,0,"div",7)(15,gu,1,2,"dashboard-scroller",8)}t&2&&(L("options",i.gridOptions()),w(6),Le(i.dashboard.isDashboardStatic()?7:6),w(8),Le(i.dashboard.isDashboardStatic()?15:14))},dependencies:[Lr,ri,Fr,yt,bt,Bt,wt,hr,Pn],styles:["[_nghost-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;height:100%;width:100%;overflow:hidden}.grid-stack[_ngcontent-%COMP%]{width:100%;height:100%;box-sizing:border-box;position:relative}.edit-layout-close-icon[_ngcontent-%COMP%]{position:absolute;bottom:20px;right:20px;cursor:pointer;z-index:100}.layout-action-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary);background-color:var(--mat-sys-primary)}.dashboard-empty-state-container[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:center;justify-content:space-around;padding:1.5rem;text-align:center;box-sizing:border-box;overflow:hidden;pointer-events:auto}@media (orientation: landscape) and (max-height: 420px){.dashboard-empty-state-container[_ngcontent-%COMP%]{padding:.75rem}.empty-state-icon[_ngcontent-%COMP%]{font-size:3.25rem;width:3.25rem;height:3.25rem}}.dashboard-empty-state-action[_ngcontent-%COMP%]{max-width:500px;color:var(--mat-sys-outline-variant)}.dashboard-empty-state-action[_ngcontent-%COMP%] .touch-icon[_ngcontent-%COMP%]{font-size:2rem;width:2rem;height:2rem;color:var(--mat-sys-outline-variant);margin-top:.5rem;animation:_ngcontent-%COMP%_bounce 2s infinite}.empty-state-icon[_ngcontent-%COMP%]{font-size:4rem;width:4rem;height:4rem;color:var(--mat-sys-outline-variant);margin-bottom:1rem}.empty-state-button[_ngcontent-%COMP%]{--mat-button-filled-label-text-color: var(--kip-widget-card-background-color);--mat-button-filled-container-color: var(--mat-sys-outline-variant);--mat-button-filled-hover-state-layer-opacity: .7;--mat-button-filled-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-help-button[_ngcontent-%COMP%]{--mat-button-text-label-text-color: var(--mat-sys-outline-variant);--mat-button-text-hover-state-layer-opacity: .7;--mat-button-text-state-layer-color: var(--mat-sys-primary-fixed-dim)}.empty-state-text[_ngcontent-%COMP%]{color:var(--mat-sys-outline-variant);font-style:italic}@keyframes _ngcontent-%COMP%_bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}"]})}return n})();export{si as a,hd as b,pg as c,Vi as d,La as e,Va as f,cd as g,Pt as h,wf as i,Qr as j,Br as k,Hr as l,yC as m};