@mxtommy/kip 4.8.4 → 4.8.5

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 (64) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/package.json +1 -1
  3. package/plugin/history-series.service.js +637 -0
  4. package/plugin/index.js +1322 -0
  5. package/plugin/kip-series-contract.js +31 -0
  6. package/plugin/openApi.json +855 -0
  7. package/plugin/sqlite-history-storage.service.js +1124 -0
  8. package/public/assets/help-docs/ais-radar.md +261 -0
  9. package/public/assets/help-docs/dashboards.md +1 -1
  10. package/public/assets/help-docs/menu.json +17 -2
  11. package/public/{chunk-Co2wVrD6.js → chunk-0ijGpqkR.js} +1 -1
  12. package/public/{chunk-JhFkJS7i.js → chunk-6MiGh2Ts.js} +1 -1
  13. package/public/{chunk-DIl1k00y.js → chunk-7QXXQf2h.js} +1 -1
  14. package/public/{chunk-CYYBxjrc.js → chunk-B4Wxwb2y.js} +1 -1
  15. package/public/{chunk-q9NoPvcx.js → chunk-BAVmyVwG.js} +1 -1
  16. package/public/{chunk-BfiyH3nV.js → chunk-BOlUTHo6.js} +1 -1
  17. package/public/{chunk-x7L6DXVK.js → chunk-BTv5PhTr.js} +1 -1
  18. package/public/{chunk-BeM64etA.js → chunk-BZG04c3j.js} +1 -1
  19. package/public/{chunk-0z3nIRXw.js → chunk-BaGEtCmz.js} +1 -1
  20. package/public/{chunk-otzyItXL.js → chunk-Bbyk4dOu.js} +1 -1
  21. package/public/{chunk-CCfhzpE8.js → chunk-Be5KcT7R.js} +1 -1
  22. package/public/{chunk-BFpzxIIT.js → chunk-Bp1YVCJL.js} +1 -1
  23. package/public/{chunk-CLs_NL1y.js → chunk-BwYOFdBA.js} +1 -1
  24. package/public/{chunk-D-_-GUVr.js → chunk-Bx77STup.js} +1 -1
  25. package/public/{chunk-COI6IBXH.js → chunk-ByC_hFSP.js} +1 -1
  26. package/public/{chunk-CIGP2YJm.js → chunk-ByFzHU1s.js} +1 -1
  27. package/public/{chunk-CXvWM_vF.js → chunk-BzH86te1.js} +1 -1
  28. package/public/{chunk-CxPx4NZv.js → chunk-C7ax8Sqz.js} +1 -1
  29. package/public/{chunk-CoCQ3DW2.js → chunk-C89yhdsn.js} +1 -1
  30. package/public/{chunk-BTOTKeBo.js → chunk-CJhkckXA.js} +1 -1
  31. package/public/{chunk-BUguZ7cK.js → chunk-CLIWxVhS.js} +1 -1
  32. package/public/{chunk-eQ1pa34Q.js → chunk-CQtqkz1Y.js} +1 -1
  33. package/public/{chunk-BIb-xYiS.js → chunk-CRy9Da7a.js} +1 -1
  34. package/public/{chunk-Do8wqING.js → chunk-CcaPRVAZ.js} +1 -1
  35. package/public/{chunk-BjINKQ03.js → chunk-CdNfAZ0G.js} +1 -1
  36. package/public/{chunk-CLTHuhlN.js → chunk-Cj0AJQ8U.js} +1 -1
  37. package/public/{chunk-B9nVBlGj.js → chunk-CkFpNfxN.js} +1 -1
  38. package/public/{chunk-B09jfNia.js → chunk-Cn9j0-tJ.js} +1 -1
  39. package/public/{chunk-_zRMMvCu.js → chunk-Co8V0LUu.js} +1 -1
  40. package/public/{chunk-ibauGmSP.js → chunk-CteyWXZ_.js} +1 -1
  41. package/public/{chunk-C6b8CVno.js → chunk-CuPmfpgh.js} +1 -1
  42. package/public/{chunk-DmkAKXR1.js → chunk-CwGTKplC.js} +1 -1
  43. package/public/{chunk-DPnbM-aB.js → chunk-CzEDfe2A.js} +1 -1
  44. package/public/{chunk-DUEKoZhd.js → chunk-D1Yncgg5.js} +1 -1
  45. package/public/{chunk-DTN-sa1K.js → chunk-D63LEt5t.js} +1 -1
  46. package/public/{chunk-BpcNrtxJ.js → chunk-DN39qO63.js} +1 -1
  47. package/public/{chunk-szQs8fiq.js → chunk-DNbLx4NZ.js} +1 -1
  48. package/public/{chunk-D1HYfaL_.js → chunk-DRPjASjZ.js} +1 -1
  49. package/public/{chunk-CyVRpGoJ.js → chunk-Dddd8rAh.js} +1 -1
  50. package/public/{chunk-C_OZJltF.js → chunk-DiDkZnhZ.js} +1 -1
  51. package/public/{chunk-CHAFm_nM.js → chunk-DonRL_4T.js} +1 -1
  52. package/public/{chunk-BJ-wyixK.js → chunk-DufX2AHa.js} +1 -1
  53. package/public/{chunk-07zHjmg-.js → chunk-DxS7HN4G.js} +1 -1
  54. package/public/{chunk-BLEZOsfR.js → chunk-Fy40z1B2.js} +1 -1
  55. package/public/{chunk-OeQDZKFO.js → chunk-MO2v041V.js} +1 -1
  56. package/public/{chunk-BuvyF0y5.js → chunk-MakCt36b.js} +1 -1
  57. package/public/{chunk-BZx964-p.js → chunk-TdI_E-cf.js} +1 -1
  58. package/public/{chunk-B0D54iJs.js → chunk-TneLdWrI.js} +1 -1
  59. package/public/{chunk-BN7A4g6c.js → chunk-YZWhRxa9.js} +1 -1
  60. package/public/{chunk-CQMVIDcp.js → chunk-_toW-rHA.js} +1 -1
  61. package/public/{chunk-B0eE4udE.js → chunk-tbyiK3Ur.js} +1 -1
  62. package/public/{chunk-D2953Rfp.js → chunk-urAQA4U_.js} +1 -1
  63. package/public/index.html +1 -1
  64. package/public/{main-YKDNK5VZ.js → main-F7NMHHV4.js} +4 -4
@@ -1 +1 @@
1
- import {c2 as bh,c3 as Qs,cW as Ur,a6 as Lr,ao as ue,J as JD,c9 as Sh,c as $h,ak as nw,b$ as Jh,c0 as Zw,c1 as Yw,cL as vb,cM as yb}from'./main-YKDNK5VZ.js';var me=yb((It,ne)=>{(function(S){"use strict";function Y(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}function b(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !e||typeof e!="object"&&typeof e!="function"?t:e}function T(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}function N(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function D(t,e){if(e||(e=typeof window>"u"?global:window),e[t]!==void 0)return e[t];if(te===null){var i=window.getComputedStyle(document.documentElement,"");te=(Array.prototype.slice.call(i).join("").match(/-(moz|webkit|ms)-/)||i.OLink===""&&["","o"]||["",""])[1];}if(te==="")return null;var r=t.charAt(0).toUpperCase()+t.substr(1),n=e[te+r];return n!==void 0?n:null}function ge(t,e,i,r,n,a,o){if(typeof r!="function")throw new TypeError("Invalid animation rule:",r);var l=t-i,s=l/n,d=0;s>1&&(s=1),s!==1&&(d=r(s),isFinite(d)&&!isNaN(d)&&(s=d)),e&&e(s),l<n?o.frame=Re(function(u){return ge(u,e,i,r,n,a,o)}):(a&&a(),o.inProgress=!1);}function U(){Array.prototype.constructor.apply(this,arguments);}function $e(t){if(!(t instanceof DOMException&&t.result===2152923147))throw t}function Ke(t,e){return e.replace(Pt,function(i,r){var n=t[r];return n!==void 0?n:i})}function et(t){return t.majorTicks instanceof Array||(t.majorTicks=t.majorTicks?[t.majorTicks]:[]),t.majorTicks.length||(t.majorTicks.push(h.formatMajorTickNumber(t.minValue,t)),t.majorTicks.push(h.formatMajorTickNumber(t.maxValue,t))),[t.tickSide!=="right",t.tickSide!=="left"]}function ve(t,e,i,r,n,a){t.beginPath(),t.moveTo(e+a,i),t.lineTo(e+r-a,i),t.quadraticCurveTo(e+r,i,e+r,i+a),t.lineTo(e+r,i+n-a),t.quadraticCurveTo(e+r,i+n,e+r-a,i+n),t.lineTo(e+a,i+n),t.quadraticCurveTo(e,i+n,e,i+n-a),t.lineTo(e,i+a),t.quadraticCurveTo(e,i,e+a,i),t.closePath();}function ae(t,e){var i=e.valueDec,r=e.valueInt,n=0,a=void 0,o=void 0,l=void 0;if(t=parseFloat(t),l=t<0,t=Math.abs(t),i>0){for(o=t.toFixed(i).toString().split("."),a=r-o[0].length;n<a;++n)o[0]="0"+o[0];o=(l?"-":"")+o[0]+"."+o[1];}else {for(o=Math.round(t).toString(),a=r-o.length;n<a;++n)o="0"+o;o=(l?"-":"")+o;}return o}function tt(t,e){var i=void 0,r=!1;return i=e.majorTicksDec===0?Math.round(t).toString():t.toFixed(e.majorTicksDec),e.majorTicksInt>1?(r=~i.indexOf("."),~i.indexOf("-")?"-"+[e.majorTicksInt+e.majorTicksDec+2+(r?1:0)-i.length].join("0")+i.replace("-",""):[e.majorTicksInt+e.majorTicksDec+1+(r?1:0)-i.length].join("0")+i):i}function it(t){return t*Math.PI/180}function rt(t,e){return {x:-t*Math.sin(e),y:t*Math.cos(e)}}function nt(t,e,i,r){var n=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,o=t.createLinearGradient(n?0:a,n?a:0,n?0:r,n?r:0);return o.addColorStop(0,e),o.addColorStop(1,i),o}function at(t,e){e.needleShadow&&(t.shadowOffsetX=2,t.shadowOffsetY=2,t.shadowBlur=10,t.shadowColor=e.colorNeedleShadowDown);}function be(t,e,i){return t["font"+e+"Style"]+" "+t["font"+e+"Weight"]+" "+t["font"+e+"Size"]*i+"px "+t["font"+e]}function pe(t){t.shadowOffsetX=null,t.shadowOffsetY=null,t.shadowBlur=null,t.shadowColor="",t.strokeStyle=null,t.lineWidth=0,t.save();}function we(t,e,i,r){e.valueTextShadow&&(t.shadowOffsetX=i,t.shadowOffsetY=i,t.shadowBlur=r,t.shadowColor=e.colorValueTextShadow);}function ot(t,e,i,r,n,a){if(e.valueBox){pe(t);var o=e.valueDec?1+e.valueDec:0,l="9".repeat(Math.max.apply(null,[String(parseInt(i)).length+o].concat(e.majorTicks.map(function(O){return String(parseInt(O,10)).length+o})))),s=e.valueText||ae(i,e),d=a/200,u=a/100,c=.4*u,f=1.2*u;t.font=be(e,"Value",d),we(t,e,c,f);var m=t.measureText(e.valueText?s:"-"+ae(Number(l),e)).width;pe(t);var p=parseFloat(e.fontValueSize)*d+c+f,P=u*parseFloat(e.valueBoxStroke),v=2*a-2*P,W=m+10*u,A=1.1*p+c+f,M=u*e.valueBoxBorderRadius,x=(parseFloat(e.valueBoxWidth)||0)/100*v;x>W&&(W=x),W>v&&(W=v);var V=r-W/2,y=n-A/2,g=n-5.75*u;if(t.beginPath(),M?ve(t,V,y,W,A,M):t.rect(V,y,W,A),P){var w=t.createRadialGradient(r,g,10*u,r,g,20*u);w.addColorStop(0,e.colorValueBoxRect),w.addColorStop(1,e.colorValueBoxRectEnd),t.strokeStyle=w,t.lineWidth=P,t.stroke();}e.colorValueBoxShadow&&(t.shadowBlur=1.2*u,t.shadowColor=e.colorValueBoxShadow),e.colorValueBoxBackground&&(t.fillStyle=e.colorValueBoxBackground,t.fill()),t.closePath(),t.restore(),we(t,e,c,f),t.fillStyle=e.colorValueText,t.textAlign="center",t.textBaseline="alphabetic",t.fillText(s,V+W/2,n+A/2-p/3),t.restore();}}function st(t){var e=t.value,i=t.minValue,r=t.maxValue,n=.01*(r-i);return {normal:e<i?i:e>r?r:e,indented:e<i?i-n:e>r?r+n:e}}function lt(t,e,i,r,n){i.beginPath(),i.arc(0,0,R(t),0,2*Z,!0),i.lineWidth=e,i.strokeStyle=n?h.linearGradient(i,r,n,t):r,i.stroke(),i.closePath();}function Q(t,e){var i=I.pixelRatio;return t.maxRadius||(t.maxRadius=t.max-e.borderShadowWidth-e.borderOuterWidth*i-e.borderMiddleWidth*i-e.borderInnerWidth*i+(e.borderOuterWidth?.5:0)+(e.borderMiddleWidth?.5:0)+(e.borderInnerWidth?.5:0)),t.maxRadius}function ke(t,e){function i(c,f,m,p,P,v){return f&&(!v&&e.borderShadowWidth&&(m.save(),m.shadowBlur=e.borderShadowWidth,m.shadowColor=e.colorBorderShadow),lt(c,f*r,m,p,P),!v&&e.borderShadowWidth&&(v=!0,m.restore())),v}var r=I.pixelRatio,n=e.borderShadowWidth*r,a=t.max-n-e.borderOuterWidth*r/2,o=a-e.borderOuterWidth*r/2-e.borderMiddleWidth*r/2+.5,l=o-e.borderMiddleWidth*r/2-e.borderInnerWidth*r/2+.5,s=Q(t,e),d=void 0,u=!1;t.save(),u=i(a,e.borderOuterWidth,t,e.colorBorderOuter,e.colorBorderOuterEnd,u),u=i(o,e.borderMiddleWidth,t,e.colorBorderMiddle,e.colorBorderMiddleEnd,u),u=i(l,e.borderInnerWidth,t,e.colorBorderInner,e.colorBorderInnerEnd,u),!u&&e.borderShadowWidth&&(t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),t.beginPath(),t.arc(0,0,R(s),0,2*Z,!0),e.colorPlateEnd?(d=t.createRadialGradient(0,0,s/2,0,0,s),d.addColorStop(0,e.colorPlate),d.addColorStop(1,e.colorPlateEnd)):d=e.colorPlate,t.fillStyle=d,t.fill(),t.closePath(),t.restore();}function ye(t,e){if(e.highlights!=="false"&&e.highlights.length&&e.highlightsWidth!==0){var i=t.max*(parseFloat(e.highlightsWidth)||0)/100,r=R($(t,e)-i/2),n=e.highlights.length,a=(e.maxValue-e.minValue)/e.ticksAngle;t.save();for(var o=0;o<n;o++){var l=e.highlights[o];t.lineWidth=i,t.lineCap=e.highlightsLineCap,t.strokeStyle=l.color,t.beginPath(),t.rotate(ue),t.arc(0,0,r,h.radians(e.startAngle+(l.from-e.minValue)/a),h.radians(e.startAngle+(l.to-e.minValue)/a),!1),t.stroke(),t.closePath(),t.restore(),t.save();}t.restore();}}function xe(t,e){var i=$(t,e),r=void 0,n=void 0,a=void 0,o=0,l=Math.abs(e.minorTicks)||0,s=e.ticksAngle/(e.maxValue-e.minValue);e.exactTicks?(n=e.maxValue-e.minValue,r=l?n/l:0,o=(_.mod(e.majorTicks[0],l)||0)*s):r=l*(e.majorTicks.length-1),t.lineWidth=I.pixelRatio,t.strokeStyle=e.colorMinorTicks||e.colorStrokeTicks,t.save();for(var d=0;d<r;++d)(a=e.startAngle+o+d*(e.ticksAngle/r))<=e.ticksAngle+e.startAngle&&(t.rotate(h.radians(a)),t.beginPath(),t.moveTo(0,i),t.lineTo(0,i-.075*t.max),dt(t));t.restore();}function $(t,e){var i=t.max/100;return Q(t,e)-5*i-(e.barWidth?2*(parseFloat(e.barStrokeWidth)||0)+((parseFloat(e.barWidth)||0)+5)*i:0)}function Te(t,e){h.prepareTicks(e);var i=R($(t,e)),r=void 0,n=e.majorTicks.length,a=I.pixelRatio;t.lineWidth=2*a,r=e.colorMajorTicks instanceof Array?e.colorMajorTicks:new Array(n).fill(e.colorStrokeTicks||e.colorMajorTicks);for(var o=0;o<n;++o)t.save(),t.strokeStyle=r[o],t.rotate(h.radians(Se(e,e.exactTicks?e.majorTicks[o]:o,n))),t.beginPath(),t.moveTo(0,i),t.lineTo(0,i-.15*t.max),t.stroke(),t.closePath(),t.restore();e.strokeTicks&&(t.save(),t.strokeStyle=e.colorStrokeTicks||r[0],t.rotate(ue),t.beginPath(),t.arc(0,0,i,h.radians(e.startAngle),h.radians(e.startAngle+e.ticksAngle),!1),t.stroke(),t.closePath(),t.restore());}function Se(t,e,i){if(t.exactTicks){var r=t.ticksAngle/(t.maxValue-t.minValue);return t.startAngle+r*(e-t.minValue)}return t.startAngle+e*(t.ticksAngle/(i-1))}function dt(t){t.stroke(),t.restore(),t.closePath(),t.save();}function Ve(t,e){var i=$(t,e)-.15*t.max,r={},n=0,a=e.majorTicks.length,o=e.animationTarget!=="needle",l=e.colorNumbers instanceof Array?e.colorNumbers:new Array(a).fill(e.colorNumbers),s=o?-(e.value-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle:0;for(o&&(t.save(),t.rotate(-h.radians(s))),t.font=h.font(e,"Numbers",t.max/200),t.lineWidth=0,t.textAlign="center",t.textBaseline="middle";n<a;++n){var d=s+Se(e,e.exactTicks?e.majorTicks[n]:n,a),u=t.measureText(e.majorTicks[n]).width,c=e.fontNumbersSize,f=Math.sqrt(u*u+c*c)/2,m=h.radialPoint(i-f-e.numbersMargin/100*t.max,h.radians(d));d===360&&(d=0),r[d]||(r[d]=!0,t.fillStyle=l[n],t.fillText(e.majorTicks[n],m.x,m.y));}o&&t.restore();}function Oe(t,e){e.title&&(t.save(),t.font=h.font(e,"Title",t.max/200),t.fillStyle=e.colorTitle,t.textAlign="center",t.fillText(e.title,0,-t.max/4.25,.8*t.max),t.restore());}function We(t,e){e.units&&(t.save(),t.font=h.font(e,"Units",t.max/200),t.fillStyle=e.colorUnits,t.textAlign="center",t.fillText(h.formatContext(e,e.units),0,t.max/3.25,.8*t.max),t.restore());}function Ae(t,e){if(e.needle){var i=e.animationTarget!=="needle",r=e.ticksAngle<360?h.normalizedValue(e).indented:e.value,n=i?e.startAngle:e.startAngle+(r-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle;e.barStartPosition==="right"&&(n=e.startAngle+e.ticksAngle-(r-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle);var a=Q(t,e),o=R(a/100*e.needleCircleSize),l=R(a/100*e.needleCircleSize*.75),s=R(a/100*e.needleEnd),d=R(e.needleStart?a/100*e.needleStart:0),u=a/100*e.needleWidth,c=a/100*e.needleWidth/2,f=I.pixelRatio;t.save(),h.drawNeedleShadow(t,e),t.rotate(h.radians(n)),t.fillStyle=h.linearGradient(t,e.colorNeedle,e.colorNeedleEnd,s-d),e.needleType==="arrow"?(t.beginPath(),t.moveTo(-c,-d),t.lineTo(-u,0),t.lineTo(-1*f,s),t.lineTo(f,s),t.lineTo(u,0),t.lineTo(c,-d),t.closePath(),t.fill(),t.beginPath(),t.lineTo(-.5*f,s),t.lineTo(-1*f,s),t.lineTo(-u,0),t.lineTo(-c,-d),t.lineTo(c/2*f-2*f,-d),t.closePath(),t.fillStyle=e.colorNeedleShadowUp,t.fill()):(t.beginPath(),t.moveTo(-c,s),t.lineTo(-c,d),t.lineTo(c,d),t.lineTo(c,s),t.closePath(),t.fill()),t.restore(),e.needleCircleSize&&(t.save(),h.drawNeedleShadow(t,e),e.needleCircleOuter&&(t.beginPath(),t.arc(0,0,o,0,2*Z,!0),t.fillStyle=h.linearGradient(t,e.colorNeedleCircleOuter,e.colorNeedleCircleOuterEnd,o),t.fill(),t.closePath()),e.needleCircleInner&&(t.beginPath(),t.arc(0,0,l,0,2*Z,!0),t.fillStyle=h.linearGradient(t,e.colorNeedleCircleInner,e.colorNeedleCircleInnerEnd,l),t.fill(),t.closePath()),t.restore());}}function Pe(t,e,i){h.drawValueBox(t,e,i,0,t.max-.33*t.max,t.max);}function ut(t){var e=t.startAngle,i=t.startAngle+t.ticksAngle,r=e,n=e+(h.normalizedValue(t).normal-t.minValue)/(t.maxValue-t.minValue)*t.ticksAngle;if(t.barStartPosition==="middle"){var a=.5*(t.minValue+t.maxValue);t.value<a?(r=180-(a-h.normalizedValue(t).normal)/(t.maxValue-t.minValue)*t.ticksAngle,n=180):(r=180,n=180+(h.normalizedValue(t).normal-a)/(t.maxValue-t.minValue)*t.ticksAngle);}else t.barStartPosition==="right"&&(r=i-n+e,n=i);return {startAngle:r,endAngle:n}}function Me(t,e){var i=t.max/100,r=Q(t,e)-5*i,n=parseFloat(e.barStrokeWidth+"")||0,a=(parseFloat(e.barWidth+"")||0)*i,o=r-2*n-a,l=(r-o)/2,s=o+l,d=n/s,u=e.startAngle,c=e.startAngle+e.ticksAngle;if(t.save(),t.rotate(ue),n&&(t.beginPath(),t.arc(0,0,s,h.radians(u)-d,h.radians(c)+d,!1),t.strokeStyle=e.colorBarStroke,t.lineWidth=2*l,t.stroke(),t.closePath()),a&&(t.beginPath(),t.arc(0,0,s,h.radians(u),h.radians(c),!1),t.strokeStyle=e.colorBar,t.lineWidth=a,t.stroke(),t.closePath(),e.barShadow&&(t.save(),t.beginPath(),t.arc(0,0,r,h.radians(u),h.radians(c),!1),t.clip(),t.beginPath(),t.strokeStyle=e.colorBar,t.lineWidth=1,t.shadowBlur=e.barShadow,t.shadowColor=e.colorBarShadow,t.shadowOffsetX=0,t.shadowOffsetY=0,t.arc(0,0,r,h.radians(e.startAngle),h.radians(e.startAngle+e.ticksAngle),!1),t.stroke(),t.closePath(),t.restore()),e.barProgress)){var f=ut(e),m=f.startAngle,p=f.endAngle;t.beginPath(),t.arc(0,0,s,h.radians(m),h.radians(p),!1),t.strokeStyle=e.colorBarProgress,t.lineWidth=a,t.stroke(),t.closePath();}t.restore();}function Ce(t){return t.options.animatedValue?t.options.value:t.value}function ct(t,e,i,r,n,a,o,l){t.beginPath(),t.fillStyle=l?h.linearGradient(t,o,l,n>a?n:a,a>n,n>a?i:r):o,e>0?h.roundRect(t,i,r,n,a,e):t.rect(i,r,n,a),t.fill(),t.closePath();}function ht(t,e,i,r,n,a,o,l,s){t.beginPath(),t.lineWidth=e,t.strokeStyle=s?h.linearGradient(t,l,s,o,!0,n):l,i>0?h.roundRect(t,r,n,a,o,i):t.rect(r,n,a,o),t.stroke(),t.closePath();}function ft(t,e,i,r,n,a){function o(O,C,B,j){return O&&(!j&&e.borderShadowWidth&&(t.save(),t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),ht(t,O*l,s,i+O*l/2-g,r+O*l/2-g,d,m,C,B),g+=.5*l,!j&&e.borderShadowWidth&&(j=!0,t.restore())),j}var l=I.pixelRatio,s=e.borderRadius*l,d=n-e.borderShadowWidth-e.borderOuterWidth*l,u=d-e.borderOuterWidth*l-e.borderMiddleWidth*l,c=u-e.borderMiddleWidth*l-e.borderInnerWidth*l,f=c-e.borderInnerWidth*l,m=a-e.borderShadowWidth-e.borderOuterWidth*l,p=m-e.borderOuterWidth*l-e.borderMiddleWidth*l,P=p-e.borderMiddleWidth*l-e.borderInnerWidth*l,v=P-e.borderInnerWidth*l,W=i-(u-d)/2,A=W-(c-u)/2,M=A-(f-c)/2,x=r-(p-m)/2,V=x-(P-p)/2,y=V-(v-P)/2,g=0,w=!1;return t.save(),w=o(e.borderOuterWidth,e.colorBorderOuter,e.colorBorderOuterEnd,w),w=o(e.borderMiddleWidth,e.colorBorderMiddle,e.colorBorderMiddleEnd,w),w=o(e.borderInnerWidth,e.colorBorderInner,e.colorBorderInnerEnd,w),!w&&e.borderShadowWidth&&(t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),ct(t,s,M,y,f+2*g,v+2*g,e.colorPlate,e.colorPlateEnd),t.restore(),[M,y,f,v]}function mt(t,e,i,r,n,a){var o=I.pixelRatio,l=a>=n,s=l?.85*n:a,d=l?a:n;i=l?k(i+(n-s)/2):i;var u=!!e.title,c=!!e.units,f=!!e.valueBox,m=void 0,p=void 0,P=void 0;l?(p=k(.05*d),m=k(.075*d),P=k(.11*d),u&&(d-=m,r+=m),c&&(d-=p),f&&(d-=P)):(p=m=k(.15*s),u&&(s-=m,r+=m),c&&(s-=p));var v=2*e.barStrokeWidth,W=e.barBeginCircle?k(s*e.barBeginCircle/200-v/2):0,A=k(s*e.barWidth/100-v),M=k(d*e.barLength/100-v),x=k((d-M)/2),V=k(i+(l?s/2:x+W)),y=k(r+(l?d-x-W+v/2:s/2)),g=!l||e.hasLeft&&e.hasRight?0:(e.hasRight?-1:1)*e.ticksWidth/100*s,w=l||e.hasLeft&&e.hasRight?0:(e.hasRight?-1:1)*e.ticksWidth/100*s;return t.barDimensions={isVertical:l,width:s,length:d,barWidth:A,barLength:M,strokeWidth:v,barMargin:x,radius:W,pixelRatio:o,barOffset:null,titleMargin:u?m:0,unitsMargin:c?p:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:i+g,Y:r+w,x0:V+g,y0:y+w,baseX:i,baseY:r,ticksPadding:e.ticksPadding/100},t.barDimensions}function Be(t,e,i,r,n,a,o){var l=mt(t,e,r,n,a,o),s=l.isVertical,d=l.width,u=l.barWidth,c=l.barLength,f=l.strokeWidth,m=l.barMargin,p=l.radius,P=l.x0,v=l.y0,W=l.X,A=l.Y,M=c;t.save(),t.beginPath();var x=null;if(e.barBeginCircle){var V=h.radians(s?270:0),y=Math.asin(u/2/p),g=Math.cos(y),w=Math.sin(y),O=P+(s?p*w:p*g-f/2),C=s?v-p*g:v+p*w,B=R(s?C-v:O-P);x=k(B+p);var j=s?k(P-p*w):O,E=s?C:k(v-p*w);i==="progress"&&(c=x+(c-x)*(h.normalizedValue(e).normal-e.minValue)/(e.maxValue-e.minValue));var J=k(O+c-x+f/2),z=k(C-c+x-f/2);t.arc(P,v,p,V+y,V-y),s?(t.moveTo(O,E),t.lineTo(O,z),t.lineTo(j,z),t.lineTo(j,E)):(t.moveTo(O,E),t.lineTo(J,E),t.lineTo(J,C),t.lineTo(O,C));}else {var Le=k(s?W+(d-u)/2:W+m),Ge=k(s?A+c+m:A+(d-u)/2);i==="progress"&&(c*=(e.value-e.minValue)/(e.maxValue-e.minValue)),s?t.rect(Le,Ge,u,-c):t.rect(Le,Ge,c,u);}i!=="progress"&&e.barStrokeWidth&&(t.lineWidth=f,t.strokeStyle=e.colorBarStroke,t.stroke()),i!=="progress"&&e.colorBar?(t.fillStyle=e.colorBarEnd?h.linearGradient(t,e.colorBar,e.colorBarEnd,c,s,s?A:W):e.colorBar,t.fill()):i==="progress"&&e.colorBarProgress&&(t.fillStyle=e.colorBarProgressEnd?h.linearGradient(t,e.colorBarProgress,e.colorBarProgressEnd,M,s,s?A:W):e.colorBarProgress,t.fill()),t.closePath(),t.restore(),e.barBeginCircle&&(t.barDimensions.radius+=f),t.barDimensions.barOffset=x,t.barDimensions.barWidth+=f,t.barDimensions.barLength+=f;}function gt(t,e,i,r,n,a){Be(t,e,"",i,r,n,a);}function Ne(t,e){return e.needleSide!==t||e.tickSide!==t||e.numberSide!==t}function vt(t,e,i,r,n,a){e.barProgress&&Be(t,e,"progress",i,r,n,a);}function bt(t,e){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.barWidth,l=i.barOffset,s=i.barMargin,d=i.X,u=i.Y,c=i.ticksLength,f=i.ticksPadding,m=n*(parseFloat(e.highlightsWidth)||0)/100;if(e.highlights&&m){var p=e.tickSide!=="right",P=e.tickSide!=="left",v=0,W=e.highlights.length,A=(n-o)/2,M=e.maxValue-e.minValue,x=k(r?d+A:d+s+l),V=m,y=r?u+a-s-l:u+A,g=k((e.ticksWidth/100+f)*n)+(m-e.ticksWidth/100*n),w=k(o+f*n);for(t.save();v<W;v++){var O=e.highlights[v],C=c*R(e.minValue-O.from)/M,B=c*R((O.to-O.from)/M);t.beginPath(),t.fillStyle=O.color,r?(p&&t.rect(x-g,y-C,V,-B),P&&t.rect(x+w,y-C,V,-B)):(p&&t.rect(x+C,y-g,B,V),P&&t.rect(x+C,y+w,B,V)),t.fill(),t.closePath();}t.restore();}}function K(t,e,i,r,n){t.beginPath(),t.moveTo(e,i),t.lineTo(r,n),t.stroke(),t.closePath();}function je(t,e,i,r,n,a,o,l,s){var d=t.barDimensions,u=d.isVertical,c=d.length,f=d.barWidth,m=d.barOffset,p=d.barMargin,P=d.pixelRatio,v=d.width,W=d.X,A=d.Y,M=d.ticksLength,x=d.ticksPadding,V=(v-f)/2,y=void 0,g=void 0,w=0,O=i.length,C=void 0,B=s*v,j=V-x*v,E=V+f+B+x*v,J=e instanceof Array?e:new Array(i.length).fill(e);t.save(),t.lineWidth=l*P;for(var z=M/(n-r);w<O;w++)C=i[w],t.strokeStyle=J[w],u?(g=A+c-p-m+(r-C)*z,a&&(y=W+j,K(t,y,g,k(y-B),g)),o&&(y=W+E,K(t,y,g,k(y-B),g))):(y=W+p+m-(r-C)*z,a&&(g=A+j,K(t,y,g,y,k(g-B))),o&&(g=A+E,K(t,y,k(g),y,g-B)));t.restore();}function pt(t,e){var i=h.prepareTicks(e),r=Ie(i,2),n=r[0],a=r[1],o=2,l=(e.maxValue-e.minValue)/(e.majorTicks.length-1),s=e.colorMajorTicks instanceof Array?e.colorMajorTicks:new Array(e.majorTicks.length).fill(e.colorStrokeTicks||e.colorMajorTicks);if(je(t,s,e.exactTicks?e.majorTicks:e.majorTicks.map(function(B,j){return e.minValue+l*j}),e.minValue,e.maxValue,n,a,o,e.ticksWidth/100),e.strokeTicks){var d=t.barDimensions,u=d.isVertical,c=d.length,f=d.width,m=d.barWidth,p=d.barMargin,P=d.barOffset,v=d.X,W=d.Y,A=d.ticksLength,M=d.pixelRatio,x=d.ticksPadding,V=(f-m)/2+m+x*f,y=(f-m)/2-x*f,g=void 0,w=void 0,O=void 0,C=void 0;t.strokeStyle=e.colorStrokeTicks||s[0],o*=M,u?(w=W+c-p-P+o/2,C=w-A-o,n&&(O=g=k(v+y),ee(t,g,w,O,C)),a&&(O=g=k(v+V),ee(t,g,w,O,C))):(g=v+p+P-o/2,O=g+A+o,n&&(C=w=k(W+y),ee(t,g,w,O,C)),a&&(C=w=k(W+V),ee(t,g,w,O,C)));}}function ee(t,e,i,r,n){t.beginPath(),t.moveTo(e,i),t.lineTo(r,n),t.stroke(),t.closePath();}function wt(t,e){var i=h.prepareTicks(e),r=Ie(i,2),n=r[0],a=r[1],o=[],l=e.minValue,s=Math.abs(e.minorTicks)||0,d=s?(e.maxValue-e.minValue)/(s*(e.majorTicks.length-1)):0;if(s)if(e.exactTicks)for(var u=_.mod(e.majorTicks[0],s)||0;l<e.maxValue;l+=s)u+l<e.maxValue&&o.push(u+l);else for(;l<e.maxValue;l+=d)o.push(l);je(t,e.colorMinorTicks||e.colorStrokeTicks,o,e.minValue,e.maxValue,n,a,1,e.ticksWidthMinor/100);}function kt(t,e){var i=t.barDimensions,r=i.isVertical,n=i.length,a=i.width,o=i.barWidth,l=i.barMargin,s=i.barOffset,d=i.X,u=i.Y,c=i.ticksLength,f=i.ticksPadding,m=e.maxValue-e.minValue,p=m/(e.majorTicks.length-1),P=e.exactTicks?e.majorTicks:e.majorTicks.map(function(J,z){return e.minValue+p*z}),v=P.length,W=e.numberSide!=="right",A=e.numberSide!=="left",M=e.fontNumbersSize*a/200,x=0,V=(e.ticksWidth/100+2*f)*a,y=(a-o)/2-V,g=(a-o)/2+o+V,w=void 0,O=void 0,C=void 0,B=void 0,j=e.colorNumbers instanceof Array?e.colorNumbers:new Array(v).fill(e.colorNumbers),E=e.numbersMargin/100*a;for(t.font=h.font(e,"Numbers",a/200),t.lineWidth=0,t.textAlign="center";x<v;x++)t.fillStyle=j[x],B=e.majorTicks[x],C=e.exactTicks?c*((P[x]-e.minValue)/m):x*c/(v-1),r?(O=u+n-l-s-C+M/3,W&&(t.textAlign="right",t.fillText(B,d+y-E,O)),A&&(t.textAlign="left",t.fillText(B,d+g+E,O))):(t.measureText(B).width,w=d+l+s+C,W&&t.fillText(B,w,u+y-E),A&&t.fillText(B,w,u+g+M+E));}function yt(t,e){if(e.title){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.baseX,l=i.baseY,s=i.titleMargin,d=e.fontTitleSize*n/200,u=k(o+(r?n:a)/2),c=k(l+s/2-(r?d:d/2)-.025*(r?a:n));t.save(),t.textAlign="center",t.fillStyle=e.colorTitle,t.font=h.font(e,"Title",n/200),t.lineWidth=0,t.fillText(e.title,u,c,r?n:a),t.restore();}}function xt(t,e){if(e.units){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.baseX,l=i.baseY,s=i.unitsMargin,d=e.fontUnitsSize*n/200,u=k(o+(r?n:a)/2),c=k(l+(r?a:n)+s/2-d/2);t.save(),t.textAlign="center",t.fillStyle=e.colorUnits,t.font=h.font(e,"Units",n/200),t.lineWidth=0,t.fillText(h.formatContext(e,e.units),u,c,r?n:a),t.restore();}}function Tt(t,e){if(e.needle){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.barWidth,l=i.barOffset,s=i.barMargin,d=i.ticksLength,u=i.X,c=i.Y,f=i.ticksPadding,m=e.needleSide!=="right",p=e.needleSide!=="left",P=d*(h.normalizedValue(e).indented-e.minValue)/(e.maxValue-e.minValue),v=(e.ticksWidth/100+f)*n,W=o/2+v,A=W*(e.needleEnd/100),M=void 0,x=void 0,V=void 0,y=void 0,g=e.needleType.toLowerCase()==="arrow"?Vt:St,w=(n-o)/2,O=W*(e.needleStart/100),C=w-v-O,B=w+o+v+O;t.save(),h.drawNeedleShadow(t,e),r?(V=k(c+a-s-l-P),m&&(M=k(u+C),x=M+A,g(t,e,M,V,x,V,A)),p&&(M=k(u+B),x=M-A,g(t,e,M,V,x,V,A,!0))):(M=k(u+s+l+P),m&&(V=k(c+C),y=V+A,g(t,e,M,V,M,y,A)),p&&(V=k(c+B),y=V-A,g(t,e,M,V,M,y,A,!0))),t.restore();}}function Ee(t,e,i,r){return e.colorNeedleEnd?h.linearGradient(t,r?e.colorNeedleEnd:e.colorNeedle,r?e.colorNeedle:e.colorNeedleEnd,i,!t.barDimensions.isVertical):e.colorNeedle}function St(t,e,i,r,n,a,o,l){t.lineWidth=e.needleWidth,t.strokeStyle=Ee(t,e,o,l),t.beginPath(),t.moveTo(i,r),t.lineTo(n,a),t.stroke(),t.closePath();}function Vt(t,e,i,r,n,a,o,l){var s=k(.4*o),d=o-s,u=i===n,c=e.needleWidth/2;t.fillStyle=Ee(t,e,o,l),t.beginPath(),u?(r>a&&(d*=-1),t.moveTo(i-c,r),t.lineTo(i+c,r),t.lineTo(i+c,r+d),t.lineTo(i,a),t.lineTo(i-c,r+d),t.lineTo(i-c,r)):(i>n&&(d*=-1),t.moveTo(i,r-c),t.lineTo(i,r+c),t.lineTo(i+d,r+c),t.lineTo(n,r),t.lineTo(i+d,r-c),t.lineTo(i,r-c)),t.fill(),t.closePath();}function Ot(t,e,i,r,n,a,o){var l=(parseFloat(e.fontValueSize)||0)*a/200,s=(.11*o-l)/2;t.barDimensions.isVertical&&h.drawValueBox(t,e,i,r+a/2,n+o-l-s,a);}var Ie=(function(){function t(e,i){var r=[],n=!0,a=!1,o=void 0;try{for(var l,s=e[Symbol.iterator]();!(n=(l=s.next()).done)&&(r.push(l.value),!i||r.length!==i);n=!0);}catch(d){a=!0,o=d;}finally{try{!n&&s.return&&s.return();}finally{if(a)throw o}}return r}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),oe=function t(e,i,r){e===null&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,i);if(n===void 0){var a=Object.getPrototypeOf(e);return a===null?void 0:t(a,i,r)}if("value"in n)return n.value;var o=n.get;if(o!==void 0)return o.call(r)},Wt=function t(e,i,r,n){var a=Object.getOwnPropertyDescriptor(e,i);if(a===void 0){var o=Object.getPrototypeOf(e);o!==null&&t(o,i,r,n);}else if("value"in a&&a.writable)a.value=r;else {var l=a.set;l!==void 0&&l.call(n,r);}return r},G=(function(){function t(e,i){for(var r=0;r<i.length;r++){var n=i[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(e,i,r){return i&&t(e.prototype,i),r&&t(e,r),e}})(),te=null,At=(function(){function t(){N(this,t),this._events={},this.addListener=this.on,this.removeListener=this.off;}return G(t,[{key:"emit",value:function(e){if(this._events[e]){for(var i=0,r=this._events[e].length,n=arguments.length,a=Array(n>1?n-1:0),o=1;o<n;o++)a[o-1]=arguments[o];for(;i<r;i++)this._events[e][i]&&this._events[e][i].apply(this,a);}}},{key:"once",value:function(e){for(var i=arguments.length,r=Array(i>1?i-1:0),n=1;n<i;n++)r[n-1]=arguments[n];for(var a=0,o=r.length,l=this;a<o;a++)(function(){var s=r[a],d=function u(){l.off(e,u),s.apply(l,arguments);};r[a]=d;})();this.on.apply(this,[e].concat(r));}},{key:"on",value:function(e){this._events[e]||(this._events[e]=[]);for(var i=0,r=arguments.length<=1?0:arguments.length-1;i<r;i++)this._events[e].push(arguments.length<=i+1?void 0:arguments[i+1]);}},{key:"off",value:function(e){if(this._events[e])for(var i=0,r=arguments.length<=1?0:arguments.length-1;i<r;i++)for(var n=arguments.length<=i+1?void 0:arguments[i+1],a=void 0;~(a=this._events[e].indexOf(n));)this._events[e].splice(a,1);}},{key:"removeAllListeners",value:function(e){delete this._events[e];}},{key:"listeners",get:function(){return this._events}}]),t})(),Re=D("requestAnimationFrame")||function(t){return setTimeout(function(){return t(new Date().getTime())},1e3/60)},q={linear:function(t){return t},quad:function(t){return Math.pow(t,2)},dequad:function(t){return 1-q.quad(1-t)},quint:function(t){return Math.pow(t,5)},dequint:function(t){return 1-Math.pow(1-t,5)},cycle:function(t){return 1-Math.sin(Math.acos(t))},decycle:function(t){return Math.sin(Math.acos(1-t))},bounce:function(t){return 1-q.debounce(1-t)},debounce:function(t){for(var e=0,i=1;;e+=i,i/=2)if(t>=(7-4*e)/11)return -Math.pow((11-6*e-11*t)/4,2)+Math.pow(i,2)},elastic:function(t){return 1-q.delastic(1-t)},delastic:function(t){return Math.pow(2,10*(t-1))*Math.cos(20*Math.PI*1.5/3*t)}},se=(function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(N(this,t),this.duration=i,this.rule=e,this.draw=r,this.end=n,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",r);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",n)}return G(t,[{key:"animate",value:function(e,i){var r=this;this.frame&&this.cancel();var n=window.performance&&window.performance.now?window.performance.now():D("animationStartTime")||Date.now();e=e||this.draw,i=i||this.end,this.draw=e,this.end=i,this.frame=Re(function(a){return ge(a,e,n,q[r.rule]||r.rule,r.duration,i,r)});}},{key:"cancel",value:function(){this.frame&&((D("cancelAnimationFrame")||function(e){})(this.frame),this.frame=null);}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null;}}]),t})();se.rules=q;var X=(function(){function t(e,i,r){N(this,t),this.options=e,this.element=i.toLowerCase(),this.type=t.toDashed(r),this.Type=S[r],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||t.domReady(this.traverse.bind(this));}return G(t,[{key:"isValidNode",value:function(e){return !(!e.tagName||e.tagName.toLowerCase()!==this.element||e.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var e=document.getElementsByTagName(this.element),i=0,r=e.length;i<r;i++)this.process(e[i]);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(e){for(var i=0,r=e.length;i<r;i++){var n=e[i];if(n.type==="attributes"&&n.attributeName==="data-type"&&this.isValidNode(n.target)&&n.oldValue!==this.type)setTimeout(this.process.bind(this,n.target));else if(n.addedNodes&&n.addedNodes.length)for(var a=0,o=n.addedNodes.length;a<o;a++)setTimeout(this.process.bind(this,n.addedNodes[a]));}}},{key:"process",value:function(e){var i=this;if(!this.isValidNode(e))return null;var r=void 0,n=JSON.parse(JSON.stringify(this.options)),a=null;for(r in n)if(n.hasOwnProperty(r)){var o=t.toAttributeName(r),l=t.parse(e.getAttribute(o));l!=null&&(n[r]=l);}return n.renderTo=e,a=new this.Type(n),a.draw&&a.draw(),this.isObservable&&(a.observer=new MutationObserver(function(s){s.forEach(function(d){if(d.type==="attributes"){var u=d.attributeName.toLowerCase(),c=e.getAttribute(u).toLowerCase();if(u==="data-type"&&c&&c!==i.type)a.observer.disconnect(),delete a.observer,a.destroy&&a.destroy();else if(u.substr(0,5)==="data-"){var f=u.substr(5).split("-").map(function(p,P){return P?p.charAt(0).toUpperCase()+p.substr(1):p}).join(""),m={};m[f]=t.parse(e.getAttribute(d.attributeName)),f==="value"?a&&(a.value=m[f]):a.update&&a.update(m);}}});}),a.observer.observe(e,{attributes:!0})),a}}],[{key:"parse",value:function(e){if(e==="true")return !0;if(e==="false")return !1;if(e!=="undefined"){if(e==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(e))return e.split(",");try{return JSON.parse(e)}catch(i){}return e}}},{key:"toDashed",value:function(e){for(var i=e.split(/(?=[A-Z])/),r=1,n=i.length,a=i[0].toLowerCase();r<n;r++)a+="-"+i[r].toLowerCase();return a}},{key:"toCamelCase",value:function(e){for(var i=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],r=e.split(/-/),n=0,a=r.length,o="";n<a;n++)o+=n||i?r[n][0].toUpperCase()+r[n].substr(1).toLowerCase():r[n].toLowerCase();return o}},{key:"toAttributeName",value:function(e){return "data-"+t.toDashed(e)}},{key:"domReady",value:function(e){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return e();window.addEventListener?window.addEventListener("DOMContentLoaded",e,!1):window.attachEvent&&window.attachEvent("onload",e);}}]),t})(),I=(function(){function t(e,i,r){N(this,t),t.collection.push(this),this.width=i||0,this.height=r||0,this.element=e,this.init();}return G(t,[{key:"init",value:function(){var e=t.pixelRatio;this.element.width=this.width*e,this.element.height=this.height*e,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 e=t.collection.indexOf(this);~e&&t.collection.splice(e,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 e=t.pixelRatio;return e!==1&&this.contextClone.scale(e,e),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var e=0,i=t.collection.length;e<i;e++)t.collection[e].redraw();}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),t})();I.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(I.redraw);var le={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};U.prototype=Object.create(Array.prototype),U.prototype.constructor=U,U.prototype.get=function(t){if(typeof t=="string")for(var e=0,i=this.length;e<i;e++){var r=this[e].options.renderTo.tagName?this[e].options.renderTo:document.getElementById(this[e].options.renderTo||"");if(r.getAttribute("id")===t)return this[e]}else if(typeof t=="number")return this[t];return null};var de="2.2.1",k=Math.round,R=Math.abs,H=new U;H.version=de;var _=(function(t){function e(i){N(this,e);var r=b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n=r.constructor.name;if(n==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(H.push(r),i.listeners&&Object.keys(i.listeners).forEach(function(o){(i.listeners[o]instanceof Array?i.listeners[o]:[i.listeners[o]]).forEach(function(l){r.on(o,l);});}),r.version=de,r.type=S[n]||e,r.initialized=!1,i.minValue=parseFloat(i.minValue),i.maxValue=parseFloat(i.maxValue),i.value=parseFloat(i.value)||0,i.borders||(i.borderInnerWidth=i.borderMiddleWidth=i.borderOuterWidth=0),!i.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var a=i.renderTo.tagName?i.renderTo:document.getElementById(i.renderTo);if(!(a instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return i.width=parseFloat(i.width)||0,i.height=parseFloat(i.height)||0,i.width&&i.height||(i.width||(i.width=a.parentNode?a.parentNode.offsetWidth:a.offsetWidth),i.height||(i.height=a.parentNode?a.parentNode.offsetHeight:a.offsetHeight)),r.options=i||{},r.options.animateOnInit&&(r._value=r.options.value,r.options.value=r.options.minValue),r.canvas=new I(a,i.width,i.height),r.canvas.onRedraw=r.draw.bind(r),r.animation=new se(i.animationRule,i.animationDuration),r}return T(e,t),G(e,[{key:"update",value:function(i){return Object.assign(this.options,this.type.configure(i||{})),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 i=H.indexOf(this);~i&&H.splice(i,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(i){var r=this;i=e.ensureValue(i,this.options.minValue);var n=this.options.value;if(i!==n)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===i))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=i),this.emit("animationStart"),this.animation.animate(function(a){var o=n+(i-n)*a;r.options.animatedValue&&r.emit("value",o,r.value),r.options.value=o,r.draw(),r.emit("animate",a,r.options.value);},function(){r._value!==void 0&&(r.emit("value",r._value,r.value),r.options.value=r._value,delete r._value),r.draw(),r.emit("animationEnd"),r.animation.frame=null;});}else this.emit("value",i,this.value),this.options.value=i,this.draw();},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(i){return i}},{key:"initialize",value:function(i,r){return new X(r,"canvas",i)}},{key:"fromElement",value:function(i){var r=X.toCamelCase(i.getAttribute("data-type")),n=i.attributes,a=0,o=n.length,l={};if(r){for(/Gauge$/.test(r)||(r+="Gauge");a<o;a++)l[X.toCamelCase(n[a].name.replace(/^data-/,""),!1)]=X.parse(n[a].value);new X(l,i.tagName,r).process(i);}}},{key:"ensureValue",value:function(i){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return i=parseFloat(i),!isNaN(i)&&isFinite(i)||(i=parseFloat(r)||0),i}},{key:"mod",value:function(i,r){return (i%r+r)%r}},{key:"version",get:function(){return de}}]),e})(At);S!==void 0&&(S.BaseGauge=_,S.gauges=(window.document||{}).gauges=H);var Pt=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,h={roundRect:ve,padValue:ae,formatMajorTickNumber:tt,radians:it,radialPoint:rt,linearGradient:nt,drawNeedleShadow:at,drawValueBox:ot,verifyError:$e,prepareTicks:et,font:be,normalizedValue:st,formatContext:Ke},Z=Math.PI,ue=Z/2,_e=Object.assign({},le,{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"}),Mt=(function(t){function e(i){return N(this,e),i=Object.assign({},_e,i||{}),b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,e.configure(i)))}return T(e,t),G(e,[{key:"draw",value:function(){try{var i=this.canvas,r=[-i.drawX,-i.drawY,i.drawWidth,i.drawHeight],n=r[0],a=r[1],o=r[2],l=r[3],s=this.options;if(s.animationTarget==="needle"){if(!i.elementClone.initialized){var d=i.contextClone;d.clearRect(n,a,o,l),this.emit("beforePlate"),ke(d,s),this.emit("beforeHighlights"),ye(d,s),this.emit("beforeMinorTicks"),xe(d,s),this.emit("beforeMajorTicks"),Te(d,s),this.emit("beforeNumbers"),Ve(d,s),this.emit("beforeTitle"),Oe(d,s),this.emit("beforeUnits"),We(d,s),i.elementClone.initialized=!0;}this.canvas.commit(),i.context.clearRect(n,a,o,l),i.context.drawImage(i.elementClone,n,a,o,l),this.emit("beforeProgressBar"),Me(i.context,s),this.emit("beforeValueBox"),Pe(i.context,s,Ce(this)),this.emit("beforeNeedle"),Ae(i.context,s);}else {var u=-h.radians((s.value-s.minValue)/(s.maxValue-s.minValue)*s.ticksAngle);if(i.context.clearRect(n,a,o,l),this.emit("beforePlate"),ke(i.context,s),i.context.rotate(u),this.emit("beforeHighlights"),ye(i.context,s),this.emit("beforeMinorTicks"),xe(i.context,s),this.emit("beforeMajorTicks"),Te(i.context,s),this.emit("beforeNumbers"),Ve(i.context,s),this.emit("beforeProgressBar"),Me(i.context,s),i.context.rotate(-u),!i.elementClone.initialized){var c=i.contextClone;c.clearRect(n,a,o,l),this.emit("beforeTitle"),Oe(c,s),this.emit("beforeUnits"),We(c,s),this.emit("beforeNeedle"),Ae(c,s),i.elementClone.initialized=!0;}i.context.drawImage(i.elementClone,n,a,o,l);}this.emit("beforeValueBox"),Pe(i.context,s,Ce(this)),oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"draw",this).call(this);}catch(f){h.verifyError(f);}return this}},{key:"value",set:function(i){i=_.ensureValue(i,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=i,i=this.options.value+((i-this.options.value)%360+540)%360-180),Wt(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",i,this);},get:function(){return oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",this)}}],[{key:"configure",value:function(i){return i.barWidth>50&&(i.barWidth=50),isNaN(i.startAngle)&&(i.startAngle=45),isNaN(i.ticksAngle)&&(i.ticksAngle=270),i.ticksAngle>360&&(i.ticksAngle=360),i.ticksAngle<0&&(i.ticksAngle=0),i.startAngle<0&&(i.startAngle=0),i.startAngle>360&&(i.startAngle=360),i}}]),e})(_);S!==void 0&&(S.RadialGauge=Mt),_.initialize("RadialGauge",_e);var De=Object.assign({},le,{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}),Ct=(function(t){function e(i){return N(this,e),i=Object.assign({},De,i||{}),b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,e.configure(i)))}return T(e,t),G(e,[{key:"draw",value:function(){try{var i=this.canvas,r=[-i.drawX,-i.drawY,i.drawWidth,i.drawHeight],n=r[0],a=r[1],o=r[2],l=r[3],s=this.options;if(!i.elementClone.initialized){var d=i.contextClone;d.clearRect(n,a,o,l),this.emit("beforePlate"),this.drawBox=ft(d,s,n,a,o,l),this.emit("beforeBar"),gt.apply(void 0,[d,s].concat(Y(this.drawBox))),i.contextClone.barDimensions=d.barDimensions,this.emit("beforeHighlights"),bt(d,s),this.emit("beforeMinorTicks"),wt(d,s),this.emit("beforeMajorTicks"),pt(d,s),this.emit("beforeNumbers"),kt(d,s),this.emit("beforeTitle"),yt(d,s),this.emit("beforeUnits"),xt(d,s),i.elementClone.initialized=!0;}this.canvas.commit(),i.context.clearRect(n,a,o,l),i.context.drawImage(i.elementClone,n,a,o,l),this.emit("beforeProgressBar"),vt.apply(void 0,[i.context,s].concat(Y(this.drawBox))),this.emit("beforeNeedle"),Tt(i.context,s),this.emit("beforeValueBox"),Ot.apply(void 0,[i.context,s,s.animatedValue?this.options.value:this.value].concat(Y(this.drawBox))),oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"draw",this).call(this);}catch(u){h.verifyError(u);}return this}}],[{key:"configure",value:function(i){return i.barStrokeWidth>=i.barWidth&&(i.barStrokeWidth=k(i.barWidth/2)),i.hasLeft=Ne("right",i),i.hasRight=Ne("left",i),i.value>i.maxValue&&(i.value=i.maxValue),i.value<i.minValue&&(i.value=i.minValue),_.configure(i)}}]),e})(_);S!==void 0&&(S.LinearGauge=Ct),_.initialize("LinearGauge",De),typeof ne<"u"&&Object.assign(S,{Collection:U,GenericOptions:le,Animation:se,BaseGauge:_,drawings:h,SmartCanvas:I,DomObserver:X,vendorize:D});})(typeof ne<"u"?ne.exports:window);});var L=vb(me(),1);vb(me(),1);var Nt=["gauge"],jt=S=>S.replace(/(\-\w)/g,Y=>Y[1].toUpperCase()),Et=S=>S.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ze=S=>jt(S),Je=(()=>{class S{el;zone;canvas;gauge;isInited=false;preInitValue;preInitOptions;domListener;constructor(b,T){this.el=b,this.zone=T;}get options(){let b={};b.renderTo=this.canvas.nativeElement;for(let T of this.el.nativeElement.attributes){let N=Ze(T.name);b[N]=L.DomObserver.parse(T.value);}for(let T in this.preInitOptions)b[T]=this.preInitOptions[T];return this.isInited&&(this.preInitOptions=null),b}set options(b){if(!this.isInited){this.preInitOptions=b;return}this.update(b);}set value(b){if(!this.isInited){this.preInitValue=b;return}this.zone.runOutsideAngular(()=>{this.gauge.value=b;});}update(b){if(b)for(let T in b){let N=b[T].toString();if(T==="value")this.value=L.DomObserver.parse(N);else {let D=Et(T);this.el.nativeElement.setAttribute(D,N);}}}ngOnDestroy(){this.destroy(),this.cleanup();}cleanup(){}destroy(){this.stopListeningForDOMEvents(),this.gauge.destroy();}ngAfterViewInit(){this.initGauge(),this.listenForDOMEvents(),this.isInited=true,this.preInitValue&&(this.value=this.preInitValue);}listenForDOMEvents(){this.domListener=new MutationObserver(b=>{let T={};b.forEach(N=>{N.type==="attributes"&&(T[Ze(N.attributeName)]=L.DomObserver.parse(this.el.nativeElement.getAttribute(N.attributeName)));}),this.basicUpdate(T);}),this.domListener.observe(this.el.nativeElement,{attributes:true});}stopListeningForDOMEvents(){this.domListener&&(this.domListener.disconnect(),this.domListener=null);}initGauge(){let b=this.options;(!b.hasOwnProperty("renderTo")||!b.renderTo)&&(b.renderTo=this.canvas.nativeElement),this.basicUpdate(b);}basicUpdate(b){typeof b.value=="number"&&(this.value=b.value,delete b.value),Object.keys(b).length&&this.gauge.update(b);}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275dir=nw({type:S,viewQuery:function(T,N){if(T&1&&Jh(Nt,7),T&2){let D;Zw(D=Yw())&&(N.canvas=D.first);}},inputs:{options:"options",value:"value"}})}return S})();var Dt=(()=>{class S extends Je{constructor(b,T){super(b,T);}ngOnInit(){this.gauge=new L.LinearGauge(this.options).draw();}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275cmp=JD({type:S,selectors:[["linear-gauge"]],features:[Sh],decls:2,vars:0,consts:[["gauge",""]],template:function(T,N){T&1&&$h(0,"canvas",null,0);},encapsulation:2})}return S})();var Lt=(()=>{class S extends Je{constructor(b,T){super(b,T);}ngOnInit(){this.gauge=new L.RadialGauge(this.options).draw();}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275cmp=JD({type:S,selectors:[["radial-gauge"]],features:[Sh],decls:2,vars:0,consts:[["gauge",""]],template:function(T,N){T&1&&$h(0,"canvas",null,0);},encapsulation:2})}return S})(),Gt=(()=>{class S{static \u0275fac=function(T){return new(T||S)};static \u0275mod=bh({type:S});static \u0275inj=Qs({})}return S})();export{Dt as D,Gt as G,Lt as L};
1
+ import {c2 as bh,c3 as Qs,cW as Ur,a6 as Lr,ao as ue,J as JD,c9 as Sh,c as $h,ak as nw,b$ as Jh,c0 as Zw,c1 as Yw,cL as vb,cM as yb}from'./main-F7NMHHV4.js';var me=yb((It,ne)=>{(function(S){"use strict";function Y(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}function b(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !e||typeof e!="object"&&typeof e!="function"?t:e}function T(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);}function N(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function D(t,e){if(e||(e=typeof window>"u"?global:window),e[t]!==void 0)return e[t];if(te===null){var i=window.getComputedStyle(document.documentElement,"");te=(Array.prototype.slice.call(i).join("").match(/-(moz|webkit|ms)-/)||i.OLink===""&&["","o"]||["",""])[1];}if(te==="")return null;var r=t.charAt(0).toUpperCase()+t.substr(1),n=e[te+r];return n!==void 0?n:null}function ge(t,e,i,r,n,a,o){if(typeof r!="function")throw new TypeError("Invalid animation rule:",r);var l=t-i,s=l/n,d=0;s>1&&(s=1),s!==1&&(d=r(s),isFinite(d)&&!isNaN(d)&&(s=d)),e&&e(s),l<n?o.frame=Re(function(u){return ge(u,e,i,r,n,a,o)}):(a&&a(),o.inProgress=!1);}function U(){Array.prototype.constructor.apply(this,arguments);}function $e(t){if(!(t instanceof DOMException&&t.result===2152923147))throw t}function Ke(t,e){return e.replace(Pt,function(i,r){var n=t[r];return n!==void 0?n:i})}function et(t){return t.majorTicks instanceof Array||(t.majorTicks=t.majorTicks?[t.majorTicks]:[]),t.majorTicks.length||(t.majorTicks.push(h.formatMajorTickNumber(t.minValue,t)),t.majorTicks.push(h.formatMajorTickNumber(t.maxValue,t))),[t.tickSide!=="right",t.tickSide!=="left"]}function ve(t,e,i,r,n,a){t.beginPath(),t.moveTo(e+a,i),t.lineTo(e+r-a,i),t.quadraticCurveTo(e+r,i,e+r,i+a),t.lineTo(e+r,i+n-a),t.quadraticCurveTo(e+r,i+n,e+r-a,i+n),t.lineTo(e+a,i+n),t.quadraticCurveTo(e,i+n,e,i+n-a),t.lineTo(e,i+a),t.quadraticCurveTo(e,i,e+a,i),t.closePath();}function ae(t,e){var i=e.valueDec,r=e.valueInt,n=0,a=void 0,o=void 0,l=void 0;if(t=parseFloat(t),l=t<0,t=Math.abs(t),i>0){for(o=t.toFixed(i).toString().split("."),a=r-o[0].length;n<a;++n)o[0]="0"+o[0];o=(l?"-":"")+o[0]+"."+o[1];}else {for(o=Math.round(t).toString(),a=r-o.length;n<a;++n)o="0"+o;o=(l?"-":"")+o;}return o}function tt(t,e){var i=void 0,r=!1;return i=e.majorTicksDec===0?Math.round(t).toString():t.toFixed(e.majorTicksDec),e.majorTicksInt>1?(r=~i.indexOf("."),~i.indexOf("-")?"-"+[e.majorTicksInt+e.majorTicksDec+2+(r?1:0)-i.length].join("0")+i.replace("-",""):[e.majorTicksInt+e.majorTicksDec+1+(r?1:0)-i.length].join("0")+i):i}function it(t){return t*Math.PI/180}function rt(t,e){return {x:-t*Math.sin(e),y:t*Math.cos(e)}}function nt(t,e,i,r){var n=!(arguments.length>4&&arguments[4]!==void 0)||arguments[4],a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0,o=t.createLinearGradient(n?0:a,n?a:0,n?0:r,n?r:0);return o.addColorStop(0,e),o.addColorStop(1,i),o}function at(t,e){e.needleShadow&&(t.shadowOffsetX=2,t.shadowOffsetY=2,t.shadowBlur=10,t.shadowColor=e.colorNeedleShadowDown);}function be(t,e,i){return t["font"+e+"Style"]+" "+t["font"+e+"Weight"]+" "+t["font"+e+"Size"]*i+"px "+t["font"+e]}function pe(t){t.shadowOffsetX=null,t.shadowOffsetY=null,t.shadowBlur=null,t.shadowColor="",t.strokeStyle=null,t.lineWidth=0,t.save();}function we(t,e,i,r){e.valueTextShadow&&(t.shadowOffsetX=i,t.shadowOffsetY=i,t.shadowBlur=r,t.shadowColor=e.colorValueTextShadow);}function ot(t,e,i,r,n,a){if(e.valueBox){pe(t);var o=e.valueDec?1+e.valueDec:0,l="9".repeat(Math.max.apply(null,[String(parseInt(i)).length+o].concat(e.majorTicks.map(function(O){return String(parseInt(O,10)).length+o})))),s=e.valueText||ae(i,e),d=a/200,u=a/100,c=.4*u,f=1.2*u;t.font=be(e,"Value",d),we(t,e,c,f);var m=t.measureText(e.valueText?s:"-"+ae(Number(l),e)).width;pe(t);var p=parseFloat(e.fontValueSize)*d+c+f,P=u*parseFloat(e.valueBoxStroke),v=2*a-2*P,W=m+10*u,A=1.1*p+c+f,M=u*e.valueBoxBorderRadius,x=(parseFloat(e.valueBoxWidth)||0)/100*v;x>W&&(W=x),W>v&&(W=v);var V=r-W/2,y=n-A/2,g=n-5.75*u;if(t.beginPath(),M?ve(t,V,y,W,A,M):t.rect(V,y,W,A),P){var w=t.createRadialGradient(r,g,10*u,r,g,20*u);w.addColorStop(0,e.colorValueBoxRect),w.addColorStop(1,e.colorValueBoxRectEnd),t.strokeStyle=w,t.lineWidth=P,t.stroke();}e.colorValueBoxShadow&&(t.shadowBlur=1.2*u,t.shadowColor=e.colorValueBoxShadow),e.colorValueBoxBackground&&(t.fillStyle=e.colorValueBoxBackground,t.fill()),t.closePath(),t.restore(),we(t,e,c,f),t.fillStyle=e.colorValueText,t.textAlign="center",t.textBaseline="alphabetic",t.fillText(s,V+W/2,n+A/2-p/3),t.restore();}}function st(t){var e=t.value,i=t.minValue,r=t.maxValue,n=.01*(r-i);return {normal:e<i?i:e>r?r:e,indented:e<i?i-n:e>r?r+n:e}}function lt(t,e,i,r,n){i.beginPath(),i.arc(0,0,R(t),0,2*Z,!0),i.lineWidth=e,i.strokeStyle=n?h.linearGradient(i,r,n,t):r,i.stroke(),i.closePath();}function Q(t,e){var i=I.pixelRatio;return t.maxRadius||(t.maxRadius=t.max-e.borderShadowWidth-e.borderOuterWidth*i-e.borderMiddleWidth*i-e.borderInnerWidth*i+(e.borderOuterWidth?.5:0)+(e.borderMiddleWidth?.5:0)+(e.borderInnerWidth?.5:0)),t.maxRadius}function ke(t,e){function i(c,f,m,p,P,v){return f&&(!v&&e.borderShadowWidth&&(m.save(),m.shadowBlur=e.borderShadowWidth,m.shadowColor=e.colorBorderShadow),lt(c,f*r,m,p,P),!v&&e.borderShadowWidth&&(v=!0,m.restore())),v}var r=I.pixelRatio,n=e.borderShadowWidth*r,a=t.max-n-e.borderOuterWidth*r/2,o=a-e.borderOuterWidth*r/2-e.borderMiddleWidth*r/2+.5,l=o-e.borderMiddleWidth*r/2-e.borderInnerWidth*r/2+.5,s=Q(t,e),d=void 0,u=!1;t.save(),u=i(a,e.borderOuterWidth,t,e.colorBorderOuter,e.colorBorderOuterEnd,u),u=i(o,e.borderMiddleWidth,t,e.colorBorderMiddle,e.colorBorderMiddleEnd,u),u=i(l,e.borderInnerWidth,t,e.colorBorderInner,e.colorBorderInnerEnd,u),!u&&e.borderShadowWidth&&(t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),t.beginPath(),t.arc(0,0,R(s),0,2*Z,!0),e.colorPlateEnd?(d=t.createRadialGradient(0,0,s/2,0,0,s),d.addColorStop(0,e.colorPlate),d.addColorStop(1,e.colorPlateEnd)):d=e.colorPlate,t.fillStyle=d,t.fill(),t.closePath(),t.restore();}function ye(t,e){if(e.highlights!=="false"&&e.highlights.length&&e.highlightsWidth!==0){var i=t.max*(parseFloat(e.highlightsWidth)||0)/100,r=R($(t,e)-i/2),n=e.highlights.length,a=(e.maxValue-e.minValue)/e.ticksAngle;t.save();for(var o=0;o<n;o++){var l=e.highlights[o];t.lineWidth=i,t.lineCap=e.highlightsLineCap,t.strokeStyle=l.color,t.beginPath(),t.rotate(ue),t.arc(0,0,r,h.radians(e.startAngle+(l.from-e.minValue)/a),h.radians(e.startAngle+(l.to-e.minValue)/a),!1),t.stroke(),t.closePath(),t.restore(),t.save();}t.restore();}}function xe(t,e){var i=$(t,e),r=void 0,n=void 0,a=void 0,o=0,l=Math.abs(e.minorTicks)||0,s=e.ticksAngle/(e.maxValue-e.minValue);e.exactTicks?(n=e.maxValue-e.minValue,r=l?n/l:0,o=(_.mod(e.majorTicks[0],l)||0)*s):r=l*(e.majorTicks.length-1),t.lineWidth=I.pixelRatio,t.strokeStyle=e.colorMinorTicks||e.colorStrokeTicks,t.save();for(var d=0;d<r;++d)(a=e.startAngle+o+d*(e.ticksAngle/r))<=e.ticksAngle+e.startAngle&&(t.rotate(h.radians(a)),t.beginPath(),t.moveTo(0,i),t.lineTo(0,i-.075*t.max),dt(t));t.restore();}function $(t,e){var i=t.max/100;return Q(t,e)-5*i-(e.barWidth?2*(parseFloat(e.barStrokeWidth)||0)+((parseFloat(e.barWidth)||0)+5)*i:0)}function Te(t,e){h.prepareTicks(e);var i=R($(t,e)),r=void 0,n=e.majorTicks.length,a=I.pixelRatio;t.lineWidth=2*a,r=e.colorMajorTicks instanceof Array?e.colorMajorTicks:new Array(n).fill(e.colorStrokeTicks||e.colorMajorTicks);for(var o=0;o<n;++o)t.save(),t.strokeStyle=r[o],t.rotate(h.radians(Se(e,e.exactTicks?e.majorTicks[o]:o,n))),t.beginPath(),t.moveTo(0,i),t.lineTo(0,i-.15*t.max),t.stroke(),t.closePath(),t.restore();e.strokeTicks&&(t.save(),t.strokeStyle=e.colorStrokeTicks||r[0],t.rotate(ue),t.beginPath(),t.arc(0,0,i,h.radians(e.startAngle),h.radians(e.startAngle+e.ticksAngle),!1),t.stroke(),t.closePath(),t.restore());}function Se(t,e,i){if(t.exactTicks){var r=t.ticksAngle/(t.maxValue-t.minValue);return t.startAngle+r*(e-t.minValue)}return t.startAngle+e*(t.ticksAngle/(i-1))}function dt(t){t.stroke(),t.restore(),t.closePath(),t.save();}function Ve(t,e){var i=$(t,e)-.15*t.max,r={},n=0,a=e.majorTicks.length,o=e.animationTarget!=="needle",l=e.colorNumbers instanceof Array?e.colorNumbers:new Array(a).fill(e.colorNumbers),s=o?-(e.value-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle:0;for(o&&(t.save(),t.rotate(-h.radians(s))),t.font=h.font(e,"Numbers",t.max/200),t.lineWidth=0,t.textAlign="center",t.textBaseline="middle";n<a;++n){var d=s+Se(e,e.exactTicks?e.majorTicks[n]:n,a),u=t.measureText(e.majorTicks[n]).width,c=e.fontNumbersSize,f=Math.sqrt(u*u+c*c)/2,m=h.radialPoint(i-f-e.numbersMargin/100*t.max,h.radians(d));d===360&&(d=0),r[d]||(r[d]=!0,t.fillStyle=l[n],t.fillText(e.majorTicks[n],m.x,m.y));}o&&t.restore();}function Oe(t,e){e.title&&(t.save(),t.font=h.font(e,"Title",t.max/200),t.fillStyle=e.colorTitle,t.textAlign="center",t.fillText(e.title,0,-t.max/4.25,.8*t.max),t.restore());}function We(t,e){e.units&&(t.save(),t.font=h.font(e,"Units",t.max/200),t.fillStyle=e.colorUnits,t.textAlign="center",t.fillText(h.formatContext(e,e.units),0,t.max/3.25,.8*t.max),t.restore());}function Ae(t,e){if(e.needle){var i=e.animationTarget!=="needle",r=e.ticksAngle<360?h.normalizedValue(e).indented:e.value,n=i?e.startAngle:e.startAngle+(r-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle;e.barStartPosition==="right"&&(n=e.startAngle+e.ticksAngle-(r-e.minValue)/(e.maxValue-e.minValue)*e.ticksAngle);var a=Q(t,e),o=R(a/100*e.needleCircleSize),l=R(a/100*e.needleCircleSize*.75),s=R(a/100*e.needleEnd),d=R(e.needleStart?a/100*e.needleStart:0),u=a/100*e.needleWidth,c=a/100*e.needleWidth/2,f=I.pixelRatio;t.save(),h.drawNeedleShadow(t,e),t.rotate(h.radians(n)),t.fillStyle=h.linearGradient(t,e.colorNeedle,e.colorNeedleEnd,s-d),e.needleType==="arrow"?(t.beginPath(),t.moveTo(-c,-d),t.lineTo(-u,0),t.lineTo(-1*f,s),t.lineTo(f,s),t.lineTo(u,0),t.lineTo(c,-d),t.closePath(),t.fill(),t.beginPath(),t.lineTo(-.5*f,s),t.lineTo(-1*f,s),t.lineTo(-u,0),t.lineTo(-c,-d),t.lineTo(c/2*f-2*f,-d),t.closePath(),t.fillStyle=e.colorNeedleShadowUp,t.fill()):(t.beginPath(),t.moveTo(-c,s),t.lineTo(-c,d),t.lineTo(c,d),t.lineTo(c,s),t.closePath(),t.fill()),t.restore(),e.needleCircleSize&&(t.save(),h.drawNeedleShadow(t,e),e.needleCircleOuter&&(t.beginPath(),t.arc(0,0,o,0,2*Z,!0),t.fillStyle=h.linearGradient(t,e.colorNeedleCircleOuter,e.colorNeedleCircleOuterEnd,o),t.fill(),t.closePath()),e.needleCircleInner&&(t.beginPath(),t.arc(0,0,l,0,2*Z,!0),t.fillStyle=h.linearGradient(t,e.colorNeedleCircleInner,e.colorNeedleCircleInnerEnd,l),t.fill(),t.closePath()),t.restore());}}function Pe(t,e,i){h.drawValueBox(t,e,i,0,t.max-.33*t.max,t.max);}function ut(t){var e=t.startAngle,i=t.startAngle+t.ticksAngle,r=e,n=e+(h.normalizedValue(t).normal-t.minValue)/(t.maxValue-t.minValue)*t.ticksAngle;if(t.barStartPosition==="middle"){var a=.5*(t.minValue+t.maxValue);t.value<a?(r=180-(a-h.normalizedValue(t).normal)/(t.maxValue-t.minValue)*t.ticksAngle,n=180):(r=180,n=180+(h.normalizedValue(t).normal-a)/(t.maxValue-t.minValue)*t.ticksAngle);}else t.barStartPosition==="right"&&(r=i-n+e,n=i);return {startAngle:r,endAngle:n}}function Me(t,e){var i=t.max/100,r=Q(t,e)-5*i,n=parseFloat(e.barStrokeWidth+"")||0,a=(parseFloat(e.barWidth+"")||0)*i,o=r-2*n-a,l=(r-o)/2,s=o+l,d=n/s,u=e.startAngle,c=e.startAngle+e.ticksAngle;if(t.save(),t.rotate(ue),n&&(t.beginPath(),t.arc(0,0,s,h.radians(u)-d,h.radians(c)+d,!1),t.strokeStyle=e.colorBarStroke,t.lineWidth=2*l,t.stroke(),t.closePath()),a&&(t.beginPath(),t.arc(0,0,s,h.radians(u),h.radians(c),!1),t.strokeStyle=e.colorBar,t.lineWidth=a,t.stroke(),t.closePath(),e.barShadow&&(t.save(),t.beginPath(),t.arc(0,0,r,h.radians(u),h.radians(c),!1),t.clip(),t.beginPath(),t.strokeStyle=e.colorBar,t.lineWidth=1,t.shadowBlur=e.barShadow,t.shadowColor=e.colorBarShadow,t.shadowOffsetX=0,t.shadowOffsetY=0,t.arc(0,0,r,h.radians(e.startAngle),h.radians(e.startAngle+e.ticksAngle),!1),t.stroke(),t.closePath(),t.restore()),e.barProgress)){var f=ut(e),m=f.startAngle,p=f.endAngle;t.beginPath(),t.arc(0,0,s,h.radians(m),h.radians(p),!1),t.strokeStyle=e.colorBarProgress,t.lineWidth=a,t.stroke(),t.closePath();}t.restore();}function Ce(t){return t.options.animatedValue?t.options.value:t.value}function ct(t,e,i,r,n,a,o,l){t.beginPath(),t.fillStyle=l?h.linearGradient(t,o,l,n>a?n:a,a>n,n>a?i:r):o,e>0?h.roundRect(t,i,r,n,a,e):t.rect(i,r,n,a),t.fill(),t.closePath();}function ht(t,e,i,r,n,a,o,l,s){t.beginPath(),t.lineWidth=e,t.strokeStyle=s?h.linearGradient(t,l,s,o,!0,n):l,i>0?h.roundRect(t,r,n,a,o,i):t.rect(r,n,a,o),t.stroke(),t.closePath();}function ft(t,e,i,r,n,a){function o(O,C,B,j){return O&&(!j&&e.borderShadowWidth&&(t.save(),t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),ht(t,O*l,s,i+O*l/2-g,r+O*l/2-g,d,m,C,B),g+=.5*l,!j&&e.borderShadowWidth&&(j=!0,t.restore())),j}var l=I.pixelRatio,s=e.borderRadius*l,d=n-e.borderShadowWidth-e.borderOuterWidth*l,u=d-e.borderOuterWidth*l-e.borderMiddleWidth*l,c=u-e.borderMiddleWidth*l-e.borderInnerWidth*l,f=c-e.borderInnerWidth*l,m=a-e.borderShadowWidth-e.borderOuterWidth*l,p=m-e.borderOuterWidth*l-e.borderMiddleWidth*l,P=p-e.borderMiddleWidth*l-e.borderInnerWidth*l,v=P-e.borderInnerWidth*l,W=i-(u-d)/2,A=W-(c-u)/2,M=A-(f-c)/2,x=r-(p-m)/2,V=x-(P-p)/2,y=V-(v-P)/2,g=0,w=!1;return t.save(),w=o(e.borderOuterWidth,e.colorBorderOuter,e.colorBorderOuterEnd,w),w=o(e.borderMiddleWidth,e.colorBorderMiddle,e.colorBorderMiddleEnd,w),w=o(e.borderInnerWidth,e.colorBorderInner,e.colorBorderInnerEnd,w),!w&&e.borderShadowWidth&&(t.shadowBlur=e.borderShadowWidth,t.shadowColor=e.colorBorderShadow),ct(t,s,M,y,f+2*g,v+2*g,e.colorPlate,e.colorPlateEnd),t.restore(),[M,y,f,v]}function mt(t,e,i,r,n,a){var o=I.pixelRatio,l=a>=n,s=l?.85*n:a,d=l?a:n;i=l?k(i+(n-s)/2):i;var u=!!e.title,c=!!e.units,f=!!e.valueBox,m=void 0,p=void 0,P=void 0;l?(p=k(.05*d),m=k(.075*d),P=k(.11*d),u&&(d-=m,r+=m),c&&(d-=p),f&&(d-=P)):(p=m=k(.15*s),u&&(s-=m,r+=m),c&&(s-=p));var v=2*e.barStrokeWidth,W=e.barBeginCircle?k(s*e.barBeginCircle/200-v/2):0,A=k(s*e.barWidth/100-v),M=k(d*e.barLength/100-v),x=k((d-M)/2),V=k(i+(l?s/2:x+W)),y=k(r+(l?d-x-W+v/2:s/2)),g=!l||e.hasLeft&&e.hasRight?0:(e.hasRight?-1:1)*e.ticksWidth/100*s,w=l||e.hasLeft&&e.hasRight?0:(e.hasRight?-1:1)*e.ticksWidth/100*s;return t.barDimensions={isVertical:l,width:s,length:d,barWidth:A,barLength:M,strokeWidth:v,barMargin:x,radius:W,pixelRatio:o,barOffset:null,titleMargin:u?m:0,unitsMargin:c?p:0,get ticksLength(){return this.barLength-this.barOffset-this.strokeWidth},X:i+g,Y:r+w,x0:V+g,y0:y+w,baseX:i,baseY:r,ticksPadding:e.ticksPadding/100},t.barDimensions}function Be(t,e,i,r,n,a,o){var l=mt(t,e,r,n,a,o),s=l.isVertical,d=l.width,u=l.barWidth,c=l.barLength,f=l.strokeWidth,m=l.barMargin,p=l.radius,P=l.x0,v=l.y0,W=l.X,A=l.Y,M=c;t.save(),t.beginPath();var x=null;if(e.barBeginCircle){var V=h.radians(s?270:0),y=Math.asin(u/2/p),g=Math.cos(y),w=Math.sin(y),O=P+(s?p*w:p*g-f/2),C=s?v-p*g:v+p*w,B=R(s?C-v:O-P);x=k(B+p);var j=s?k(P-p*w):O,E=s?C:k(v-p*w);i==="progress"&&(c=x+(c-x)*(h.normalizedValue(e).normal-e.minValue)/(e.maxValue-e.minValue));var J=k(O+c-x+f/2),z=k(C-c+x-f/2);t.arc(P,v,p,V+y,V-y),s?(t.moveTo(O,E),t.lineTo(O,z),t.lineTo(j,z),t.lineTo(j,E)):(t.moveTo(O,E),t.lineTo(J,E),t.lineTo(J,C),t.lineTo(O,C));}else {var Le=k(s?W+(d-u)/2:W+m),Ge=k(s?A+c+m:A+(d-u)/2);i==="progress"&&(c*=(e.value-e.minValue)/(e.maxValue-e.minValue)),s?t.rect(Le,Ge,u,-c):t.rect(Le,Ge,c,u);}i!=="progress"&&e.barStrokeWidth&&(t.lineWidth=f,t.strokeStyle=e.colorBarStroke,t.stroke()),i!=="progress"&&e.colorBar?(t.fillStyle=e.colorBarEnd?h.linearGradient(t,e.colorBar,e.colorBarEnd,c,s,s?A:W):e.colorBar,t.fill()):i==="progress"&&e.colorBarProgress&&(t.fillStyle=e.colorBarProgressEnd?h.linearGradient(t,e.colorBarProgress,e.colorBarProgressEnd,M,s,s?A:W):e.colorBarProgress,t.fill()),t.closePath(),t.restore(),e.barBeginCircle&&(t.barDimensions.radius+=f),t.barDimensions.barOffset=x,t.barDimensions.barWidth+=f,t.barDimensions.barLength+=f;}function gt(t,e,i,r,n,a){Be(t,e,"",i,r,n,a);}function Ne(t,e){return e.needleSide!==t||e.tickSide!==t||e.numberSide!==t}function vt(t,e,i,r,n,a){e.barProgress&&Be(t,e,"progress",i,r,n,a);}function bt(t,e){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.barWidth,l=i.barOffset,s=i.barMargin,d=i.X,u=i.Y,c=i.ticksLength,f=i.ticksPadding,m=n*(parseFloat(e.highlightsWidth)||0)/100;if(e.highlights&&m){var p=e.tickSide!=="right",P=e.tickSide!=="left",v=0,W=e.highlights.length,A=(n-o)/2,M=e.maxValue-e.minValue,x=k(r?d+A:d+s+l),V=m,y=r?u+a-s-l:u+A,g=k((e.ticksWidth/100+f)*n)+(m-e.ticksWidth/100*n),w=k(o+f*n);for(t.save();v<W;v++){var O=e.highlights[v],C=c*R(e.minValue-O.from)/M,B=c*R((O.to-O.from)/M);t.beginPath(),t.fillStyle=O.color,r?(p&&t.rect(x-g,y-C,V,-B),P&&t.rect(x+w,y-C,V,-B)):(p&&t.rect(x+C,y-g,B,V),P&&t.rect(x+C,y+w,B,V)),t.fill(),t.closePath();}t.restore();}}function K(t,e,i,r,n){t.beginPath(),t.moveTo(e,i),t.lineTo(r,n),t.stroke(),t.closePath();}function je(t,e,i,r,n,a,o,l,s){var d=t.barDimensions,u=d.isVertical,c=d.length,f=d.barWidth,m=d.barOffset,p=d.barMargin,P=d.pixelRatio,v=d.width,W=d.X,A=d.Y,M=d.ticksLength,x=d.ticksPadding,V=(v-f)/2,y=void 0,g=void 0,w=0,O=i.length,C=void 0,B=s*v,j=V-x*v,E=V+f+B+x*v,J=e instanceof Array?e:new Array(i.length).fill(e);t.save(),t.lineWidth=l*P;for(var z=M/(n-r);w<O;w++)C=i[w],t.strokeStyle=J[w],u?(g=A+c-p-m+(r-C)*z,a&&(y=W+j,K(t,y,g,k(y-B),g)),o&&(y=W+E,K(t,y,g,k(y-B),g))):(y=W+p+m-(r-C)*z,a&&(g=A+j,K(t,y,g,y,k(g-B))),o&&(g=A+E,K(t,y,k(g),y,g-B)));t.restore();}function pt(t,e){var i=h.prepareTicks(e),r=Ie(i,2),n=r[0],a=r[1],o=2,l=(e.maxValue-e.minValue)/(e.majorTicks.length-1),s=e.colorMajorTicks instanceof Array?e.colorMajorTicks:new Array(e.majorTicks.length).fill(e.colorStrokeTicks||e.colorMajorTicks);if(je(t,s,e.exactTicks?e.majorTicks:e.majorTicks.map(function(B,j){return e.minValue+l*j}),e.minValue,e.maxValue,n,a,o,e.ticksWidth/100),e.strokeTicks){var d=t.barDimensions,u=d.isVertical,c=d.length,f=d.width,m=d.barWidth,p=d.barMargin,P=d.barOffset,v=d.X,W=d.Y,A=d.ticksLength,M=d.pixelRatio,x=d.ticksPadding,V=(f-m)/2+m+x*f,y=(f-m)/2-x*f,g=void 0,w=void 0,O=void 0,C=void 0;t.strokeStyle=e.colorStrokeTicks||s[0],o*=M,u?(w=W+c-p-P+o/2,C=w-A-o,n&&(O=g=k(v+y),ee(t,g,w,O,C)),a&&(O=g=k(v+V),ee(t,g,w,O,C))):(g=v+p+P-o/2,O=g+A+o,n&&(C=w=k(W+y),ee(t,g,w,O,C)),a&&(C=w=k(W+V),ee(t,g,w,O,C)));}}function ee(t,e,i,r,n){t.beginPath(),t.moveTo(e,i),t.lineTo(r,n),t.stroke(),t.closePath();}function wt(t,e){var i=h.prepareTicks(e),r=Ie(i,2),n=r[0],a=r[1],o=[],l=e.minValue,s=Math.abs(e.minorTicks)||0,d=s?(e.maxValue-e.minValue)/(s*(e.majorTicks.length-1)):0;if(s)if(e.exactTicks)for(var u=_.mod(e.majorTicks[0],s)||0;l<e.maxValue;l+=s)u+l<e.maxValue&&o.push(u+l);else for(;l<e.maxValue;l+=d)o.push(l);je(t,e.colorMinorTicks||e.colorStrokeTicks,o,e.minValue,e.maxValue,n,a,1,e.ticksWidthMinor/100);}function kt(t,e){var i=t.barDimensions,r=i.isVertical,n=i.length,a=i.width,o=i.barWidth,l=i.barMargin,s=i.barOffset,d=i.X,u=i.Y,c=i.ticksLength,f=i.ticksPadding,m=e.maxValue-e.minValue,p=m/(e.majorTicks.length-1),P=e.exactTicks?e.majorTicks:e.majorTicks.map(function(J,z){return e.minValue+p*z}),v=P.length,W=e.numberSide!=="right",A=e.numberSide!=="left",M=e.fontNumbersSize*a/200,x=0,V=(e.ticksWidth/100+2*f)*a,y=(a-o)/2-V,g=(a-o)/2+o+V,w=void 0,O=void 0,C=void 0,B=void 0,j=e.colorNumbers instanceof Array?e.colorNumbers:new Array(v).fill(e.colorNumbers),E=e.numbersMargin/100*a;for(t.font=h.font(e,"Numbers",a/200),t.lineWidth=0,t.textAlign="center";x<v;x++)t.fillStyle=j[x],B=e.majorTicks[x],C=e.exactTicks?c*((P[x]-e.minValue)/m):x*c/(v-1),r?(O=u+n-l-s-C+M/3,W&&(t.textAlign="right",t.fillText(B,d+y-E,O)),A&&(t.textAlign="left",t.fillText(B,d+g+E,O))):(t.measureText(B).width,w=d+l+s+C,W&&t.fillText(B,w,u+y-E),A&&t.fillText(B,w,u+g+M+E));}function yt(t,e){if(e.title){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.baseX,l=i.baseY,s=i.titleMargin,d=e.fontTitleSize*n/200,u=k(o+(r?n:a)/2),c=k(l+s/2-(r?d:d/2)-.025*(r?a:n));t.save(),t.textAlign="center",t.fillStyle=e.colorTitle,t.font=h.font(e,"Title",n/200),t.lineWidth=0,t.fillText(e.title,u,c,r?n:a),t.restore();}}function xt(t,e){if(e.units){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.baseX,l=i.baseY,s=i.unitsMargin,d=e.fontUnitsSize*n/200,u=k(o+(r?n:a)/2),c=k(l+(r?a:n)+s/2-d/2);t.save(),t.textAlign="center",t.fillStyle=e.colorUnits,t.font=h.font(e,"Units",n/200),t.lineWidth=0,t.fillText(h.formatContext(e,e.units),u,c,r?n:a),t.restore();}}function Tt(t,e){if(e.needle){var i=t.barDimensions,r=i.isVertical,n=i.width,a=i.length,o=i.barWidth,l=i.barOffset,s=i.barMargin,d=i.ticksLength,u=i.X,c=i.Y,f=i.ticksPadding,m=e.needleSide!=="right",p=e.needleSide!=="left",P=d*(h.normalizedValue(e).indented-e.minValue)/(e.maxValue-e.minValue),v=(e.ticksWidth/100+f)*n,W=o/2+v,A=W*(e.needleEnd/100),M=void 0,x=void 0,V=void 0,y=void 0,g=e.needleType.toLowerCase()==="arrow"?Vt:St,w=(n-o)/2,O=W*(e.needleStart/100),C=w-v-O,B=w+o+v+O;t.save(),h.drawNeedleShadow(t,e),r?(V=k(c+a-s-l-P),m&&(M=k(u+C),x=M+A,g(t,e,M,V,x,V,A)),p&&(M=k(u+B),x=M-A,g(t,e,M,V,x,V,A,!0))):(M=k(u+s+l+P),m&&(V=k(c+C),y=V+A,g(t,e,M,V,M,y,A)),p&&(V=k(c+B),y=V-A,g(t,e,M,V,M,y,A,!0))),t.restore();}}function Ee(t,e,i,r){return e.colorNeedleEnd?h.linearGradient(t,r?e.colorNeedleEnd:e.colorNeedle,r?e.colorNeedle:e.colorNeedleEnd,i,!t.barDimensions.isVertical):e.colorNeedle}function St(t,e,i,r,n,a,o,l){t.lineWidth=e.needleWidth,t.strokeStyle=Ee(t,e,o,l),t.beginPath(),t.moveTo(i,r),t.lineTo(n,a),t.stroke(),t.closePath();}function Vt(t,e,i,r,n,a,o,l){var s=k(.4*o),d=o-s,u=i===n,c=e.needleWidth/2;t.fillStyle=Ee(t,e,o,l),t.beginPath(),u?(r>a&&(d*=-1),t.moveTo(i-c,r),t.lineTo(i+c,r),t.lineTo(i+c,r+d),t.lineTo(i,a),t.lineTo(i-c,r+d),t.lineTo(i-c,r)):(i>n&&(d*=-1),t.moveTo(i,r-c),t.lineTo(i,r+c),t.lineTo(i+d,r+c),t.lineTo(n,r),t.lineTo(i+d,r-c),t.lineTo(i,r-c)),t.fill(),t.closePath();}function Ot(t,e,i,r,n,a,o){var l=(parseFloat(e.fontValueSize)||0)*a/200,s=(.11*o-l)/2;t.barDimensions.isVertical&&h.drawValueBox(t,e,i,r+a/2,n+o-l-s,a);}var Ie=(function(){function t(e,i){var r=[],n=!0,a=!1,o=void 0;try{for(var l,s=e[Symbol.iterator]();!(n=(l=s.next()).done)&&(r.push(l.value),!i||r.length!==i);n=!0);}catch(d){a=!0,o=d;}finally{try{!n&&s.return&&s.return();}finally{if(a)throw o}}return r}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),oe=function t(e,i,r){e===null&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,i);if(n===void 0){var a=Object.getPrototypeOf(e);return a===null?void 0:t(a,i,r)}if("value"in n)return n.value;var o=n.get;if(o!==void 0)return o.call(r)},Wt=function t(e,i,r,n){var a=Object.getOwnPropertyDescriptor(e,i);if(a===void 0){var o=Object.getPrototypeOf(e);o!==null&&t(o,i,r,n);}else if("value"in a&&a.writable)a.value=r;else {var l=a.set;l!==void 0&&l.call(n,r);}return r},G=(function(){function t(e,i){for(var r=0;r<i.length;r++){var n=i[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(e,i,r){return i&&t(e.prototype,i),r&&t(e,r),e}})(),te=null,At=(function(){function t(){N(this,t),this._events={},this.addListener=this.on,this.removeListener=this.off;}return G(t,[{key:"emit",value:function(e){if(this._events[e]){for(var i=0,r=this._events[e].length,n=arguments.length,a=Array(n>1?n-1:0),o=1;o<n;o++)a[o-1]=arguments[o];for(;i<r;i++)this._events[e][i]&&this._events[e][i].apply(this,a);}}},{key:"once",value:function(e){for(var i=arguments.length,r=Array(i>1?i-1:0),n=1;n<i;n++)r[n-1]=arguments[n];for(var a=0,o=r.length,l=this;a<o;a++)(function(){var s=r[a],d=function u(){l.off(e,u),s.apply(l,arguments);};r[a]=d;})();this.on.apply(this,[e].concat(r));}},{key:"on",value:function(e){this._events[e]||(this._events[e]=[]);for(var i=0,r=arguments.length<=1?0:arguments.length-1;i<r;i++)this._events[e].push(arguments.length<=i+1?void 0:arguments[i+1]);}},{key:"off",value:function(e){if(this._events[e])for(var i=0,r=arguments.length<=1?0:arguments.length-1;i<r;i++)for(var n=arguments.length<=i+1?void 0:arguments[i+1],a=void 0;~(a=this._events[e].indexOf(n));)this._events[e].splice(a,1);}},{key:"removeAllListeners",value:function(e){delete this._events[e];}},{key:"listeners",get:function(){return this._events}}]),t})(),Re=D("requestAnimationFrame")||function(t){return setTimeout(function(){return t(new Date().getTime())},1e3/60)},q={linear:function(t){return t},quad:function(t){return Math.pow(t,2)},dequad:function(t){return 1-q.quad(1-t)},quint:function(t){return Math.pow(t,5)},dequint:function(t){return 1-Math.pow(1-t,5)},cycle:function(t){return 1-Math.sin(Math.acos(t))},decycle:function(t){return Math.sin(Math.acos(1-t))},bounce:function(t){return 1-q.debounce(1-t)},debounce:function(t){for(var e=0,i=1;;e+=i,i/=2)if(t>=(7-4*e)/11)return -Math.pow((11-6*e-11*t)/4,2)+Math.pow(i,2)},elastic:function(t){return 1-q.delastic(1-t)},delastic:function(t){return Math.pow(2,10*(t-1))*Math.cos(20*Math.PI*1.5/3*t)}},se=(function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"linear",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:250,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){};if(N(this,t),this.duration=i,this.rule=e,this.draw=r,this.end=n,typeof this.draw!="function")throw new TypeError("Invalid animation draw callback:",r);if(typeof this.end!="function")throw new TypeError("Invalid animation end callback:",n)}return G(t,[{key:"animate",value:function(e,i){var r=this;this.frame&&this.cancel();var n=window.performance&&window.performance.now?window.performance.now():D("animationStartTime")||Date.now();e=e||this.draw,i=i||this.end,this.draw=e,this.end=i,this.frame=Re(function(a){return ge(a,e,n,q[r.rule]||r.rule,r.duration,i,r)});}},{key:"cancel",value:function(){this.frame&&((D("cancelAnimationFrame")||function(e){})(this.frame),this.frame=null);}},{key:"destroy",value:function(){this.cancel(),this.draw=null,this.end=null;}}]),t})();se.rules=q;var X=(function(){function t(e,i,r){N(this,t),this.options=e,this.element=i.toLowerCase(),this.type=t.toDashed(r),this.Type=S[r],this.mutationsObserved=!1,this.isObservable=!!window.MutationObserver,window.GAUGES_NO_AUTO_INIT||t.domReady(this.traverse.bind(this));}return G(t,[{key:"isValidNode",value:function(e){return !(!e.tagName||e.tagName.toLowerCase()!==this.element||e.getAttribute("data-type")!==this.type)}},{key:"traverse",value:function(){for(var e=document.getElementsByTagName(this.element),i=0,r=e.length;i<r;i++)this.process(e[i]);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(e){for(var i=0,r=e.length;i<r;i++){var n=e[i];if(n.type==="attributes"&&n.attributeName==="data-type"&&this.isValidNode(n.target)&&n.oldValue!==this.type)setTimeout(this.process.bind(this,n.target));else if(n.addedNodes&&n.addedNodes.length)for(var a=0,o=n.addedNodes.length;a<o;a++)setTimeout(this.process.bind(this,n.addedNodes[a]));}}},{key:"process",value:function(e){var i=this;if(!this.isValidNode(e))return null;var r=void 0,n=JSON.parse(JSON.stringify(this.options)),a=null;for(r in n)if(n.hasOwnProperty(r)){var o=t.toAttributeName(r),l=t.parse(e.getAttribute(o));l!=null&&(n[r]=l);}return n.renderTo=e,a=new this.Type(n),a.draw&&a.draw(),this.isObservable&&(a.observer=new MutationObserver(function(s){s.forEach(function(d){if(d.type==="attributes"){var u=d.attributeName.toLowerCase(),c=e.getAttribute(u).toLowerCase();if(u==="data-type"&&c&&c!==i.type)a.observer.disconnect(),delete a.observer,a.destroy&&a.destroy();else if(u.substr(0,5)==="data-"){var f=u.substr(5).split("-").map(function(p,P){return P?p.charAt(0).toUpperCase()+p.substr(1):p}).join(""),m={};m[f]=t.parse(e.getAttribute(d.attributeName)),f==="value"?a&&(a.value=m[f]):a.update&&a.update(m);}}});}),a.observer.observe(e,{attributes:!0})),a}}],[{key:"parse",value:function(e){if(e==="true")return !0;if(e==="false")return !1;if(e!=="undefined"){if(e==="null")return null;if(/^[-+#.\w\d\s]+(?:,[-+#.\w\d\s]*)+$/.test(e))return e.split(",");try{return JSON.parse(e)}catch(i){}return e}}},{key:"toDashed",value:function(e){for(var i=e.split(/(?=[A-Z])/),r=1,n=i.length,a=i[0].toLowerCase();r<n;r++)a+="-"+i[r].toLowerCase();return a}},{key:"toCamelCase",value:function(e){for(var i=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1],r=e.split(/-/),n=0,a=r.length,o="";n<a;n++)o+=n||i?r[n][0].toUpperCase()+r[n].substr(1).toLowerCase():r[n].toLowerCase();return o}},{key:"toAttributeName",value:function(e){return "data-"+t.toDashed(e)}},{key:"domReady",value:function(e){if(/comp|inter|loaded/.test((window.document||{}).readyState+""))return e();window.addEventListener?window.addEventListener("DOMContentLoaded",e,!1):window.attachEvent&&window.attachEvent("onload",e);}}]),t})(),I=(function(){function t(e,i,r){N(this,t),t.collection.push(this),this.width=i||0,this.height=r||0,this.element=e,this.init();}return G(t,[{key:"init",value:function(){var e=t.pixelRatio;this.element.width=this.width*e,this.element.height=this.height*e,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 e=t.collection.indexOf(this);~e&&t.collection.splice(e,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 e=t.pixelRatio;return e!==1&&this.contextClone.scale(e,e),this}},{key:"redraw",value:function(){return this.init(),this.onRedraw&&this.onRedraw(),this}}],[{key:"redraw",value:function(){for(var e=0,i=t.collection.length;e<i;e++)t.collection[e].redraw();}},{key:"pixelRatio",get:function(){return window.devicePixelRatio||1}}]),t})();I.collection=[],window.matchMedia&&window.matchMedia("screen and (min-resolution: 2dppx)").addListener(I.redraw);var le={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};U.prototype=Object.create(Array.prototype),U.prototype.constructor=U,U.prototype.get=function(t){if(typeof t=="string")for(var e=0,i=this.length;e<i;e++){var r=this[e].options.renderTo.tagName?this[e].options.renderTo:document.getElementById(this[e].options.renderTo||"");if(r.getAttribute("id")===t)return this[e]}else if(typeof t=="number")return this[t];return null};var de="2.2.1",k=Math.round,R=Math.abs,H=new U;H.version=de;var _=(function(t){function e(i){N(this,e);var r=b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n=r.constructor.name;if(n==="BaseGauge")throw new TypeError("Attempt to instantiate abstract class!");if(H.push(r),i.listeners&&Object.keys(i.listeners).forEach(function(o){(i.listeners[o]instanceof Array?i.listeners[o]:[i.listeners[o]]).forEach(function(l){r.on(o,l);});}),r.version=de,r.type=S[n]||e,r.initialized=!1,i.minValue=parseFloat(i.minValue),i.maxValue=parseFloat(i.maxValue),i.value=parseFloat(i.value)||0,i.borders||(i.borderInnerWidth=i.borderMiddleWidth=i.borderOuterWidth=0),!i.renderTo)throw TypeError("Canvas element was not specified when creating the Gauge object!");var a=i.renderTo.tagName?i.renderTo:document.getElementById(i.renderTo);if(!(a instanceof HTMLCanvasElement))throw TypeError("Given gauge canvas element is invalid!");return i.width=parseFloat(i.width)||0,i.height=parseFloat(i.height)||0,i.width&&i.height||(i.width||(i.width=a.parentNode?a.parentNode.offsetWidth:a.offsetWidth),i.height||(i.height=a.parentNode?a.parentNode.offsetHeight:a.offsetHeight)),r.options=i||{},r.options.animateOnInit&&(r._value=r.options.value,r.options.value=r.options.minValue),r.canvas=new I(a,i.width,i.height),r.canvas.onRedraw=r.draw.bind(r),r.animation=new se(i.animationRule,i.animationDuration),r}return T(e,t),G(e,[{key:"update",value:function(i){return Object.assign(this.options,this.type.configure(i||{})),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 i=H.indexOf(this);~i&&H.splice(i,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(i){var r=this;i=e.ensureValue(i,this.options.minValue);var n=this.options.value;if(i!==n)if(this.options.animation){if(this.animation.frame&&(this.options.value=this._value,this._value===i))return this.animation.cancel(),void delete this._value;this._value===void 0&&(this._value=i),this.emit("animationStart"),this.animation.animate(function(a){var o=n+(i-n)*a;r.options.animatedValue&&r.emit("value",o,r.value),r.options.value=o,r.draw(),r.emit("animate",a,r.options.value);},function(){r._value!==void 0&&(r.emit("value",r._value,r.value),r.options.value=r._value,delete r._value),r.draw(),r.emit("animationEnd"),r.animation.frame=null;});}else this.emit("value",i,this.value),this.options.value=i,this.draw();},get:function(){return this._value===void 0?this.options.value:this._value}}],[{key:"configure",value:function(i){return i}},{key:"initialize",value:function(i,r){return new X(r,"canvas",i)}},{key:"fromElement",value:function(i){var r=X.toCamelCase(i.getAttribute("data-type")),n=i.attributes,a=0,o=n.length,l={};if(r){for(/Gauge$/.test(r)||(r+="Gauge");a<o;a++)l[X.toCamelCase(n[a].name.replace(/^data-/,""),!1)]=X.parse(n[a].value);new X(l,i.tagName,r).process(i);}}},{key:"ensureValue",value:function(i){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return i=parseFloat(i),!isNaN(i)&&isFinite(i)||(i=parseFloat(r)||0),i}},{key:"mod",value:function(i,r){return (i%r+r)%r}},{key:"version",get:function(){return de}}]),e})(At);S!==void 0&&(S.BaseGauge=_,S.gauges=(window.document||{}).gauges=H);var Pt=/{([_a-zA-Z]+[_a-zA-Z0-9]*)}/g,h={roundRect:ve,padValue:ae,formatMajorTickNumber:tt,radians:it,radialPoint:rt,linearGradient:nt,drawNeedleShadow:at,drawValueBox:ot,verifyError:$e,prepareTicks:et,font:be,normalizedValue:st,formatContext:Ke},Z=Math.PI,ue=Z/2,_e=Object.assign({},le,{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"}),Mt=(function(t){function e(i){return N(this,e),i=Object.assign({},_e,i||{}),b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,e.configure(i)))}return T(e,t),G(e,[{key:"draw",value:function(){try{var i=this.canvas,r=[-i.drawX,-i.drawY,i.drawWidth,i.drawHeight],n=r[0],a=r[1],o=r[2],l=r[3],s=this.options;if(s.animationTarget==="needle"){if(!i.elementClone.initialized){var d=i.contextClone;d.clearRect(n,a,o,l),this.emit("beforePlate"),ke(d,s),this.emit("beforeHighlights"),ye(d,s),this.emit("beforeMinorTicks"),xe(d,s),this.emit("beforeMajorTicks"),Te(d,s),this.emit("beforeNumbers"),Ve(d,s),this.emit("beforeTitle"),Oe(d,s),this.emit("beforeUnits"),We(d,s),i.elementClone.initialized=!0;}this.canvas.commit(),i.context.clearRect(n,a,o,l),i.context.drawImage(i.elementClone,n,a,o,l),this.emit("beforeProgressBar"),Me(i.context,s),this.emit("beforeValueBox"),Pe(i.context,s,Ce(this)),this.emit("beforeNeedle"),Ae(i.context,s);}else {var u=-h.radians((s.value-s.minValue)/(s.maxValue-s.minValue)*s.ticksAngle);if(i.context.clearRect(n,a,o,l),this.emit("beforePlate"),ke(i.context,s),i.context.rotate(u),this.emit("beforeHighlights"),ye(i.context,s),this.emit("beforeMinorTicks"),xe(i.context,s),this.emit("beforeMajorTicks"),Te(i.context,s),this.emit("beforeNumbers"),Ve(i.context,s),this.emit("beforeProgressBar"),Me(i.context,s),i.context.rotate(-u),!i.elementClone.initialized){var c=i.contextClone;c.clearRect(n,a,o,l),this.emit("beforeTitle"),Oe(c,s),this.emit("beforeUnits"),We(c,s),this.emit("beforeNeedle"),Ae(c,s),i.elementClone.initialized=!0;}i.context.drawImage(i.elementClone,n,a,o,l);}this.emit("beforeValueBox"),Pe(i.context,s,Ce(this)),oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"draw",this).call(this);}catch(f){h.verifyError(f);}return this}},{key:"value",set:function(i){i=_.ensureValue(i,this.options.minValue),this.options.animation&&this.options.ticksAngle===360&&this.options.useMinPath&&(this._value=i,i=this.options.value+((i-this.options.value)%360+540)%360-180),Wt(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",i,this);},get:function(){return oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"value",this)}}],[{key:"configure",value:function(i){return i.barWidth>50&&(i.barWidth=50),isNaN(i.startAngle)&&(i.startAngle=45),isNaN(i.ticksAngle)&&(i.ticksAngle=270),i.ticksAngle>360&&(i.ticksAngle=360),i.ticksAngle<0&&(i.ticksAngle=0),i.startAngle<0&&(i.startAngle=0),i.startAngle>360&&(i.startAngle=360),i}}]),e})(_);S!==void 0&&(S.RadialGauge=Mt),_.initialize("RadialGauge",_e);var De=Object.assign({},le,{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}),Ct=(function(t){function e(i){return N(this,e),i=Object.assign({},De,i||{}),b(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,e.configure(i)))}return T(e,t),G(e,[{key:"draw",value:function(){try{var i=this.canvas,r=[-i.drawX,-i.drawY,i.drawWidth,i.drawHeight],n=r[0],a=r[1],o=r[2],l=r[3],s=this.options;if(!i.elementClone.initialized){var d=i.contextClone;d.clearRect(n,a,o,l),this.emit("beforePlate"),this.drawBox=ft(d,s,n,a,o,l),this.emit("beforeBar"),gt.apply(void 0,[d,s].concat(Y(this.drawBox))),i.contextClone.barDimensions=d.barDimensions,this.emit("beforeHighlights"),bt(d,s),this.emit("beforeMinorTicks"),wt(d,s),this.emit("beforeMajorTicks"),pt(d,s),this.emit("beforeNumbers"),kt(d,s),this.emit("beforeTitle"),yt(d,s),this.emit("beforeUnits"),xt(d,s),i.elementClone.initialized=!0;}this.canvas.commit(),i.context.clearRect(n,a,o,l),i.context.drawImage(i.elementClone,n,a,o,l),this.emit("beforeProgressBar"),vt.apply(void 0,[i.context,s].concat(Y(this.drawBox))),this.emit("beforeNeedle"),Tt(i.context,s),this.emit("beforeValueBox"),Ot.apply(void 0,[i.context,s,s.animatedValue?this.options.value:this.value].concat(Y(this.drawBox))),oe(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"draw",this).call(this);}catch(u){h.verifyError(u);}return this}}],[{key:"configure",value:function(i){return i.barStrokeWidth>=i.barWidth&&(i.barStrokeWidth=k(i.barWidth/2)),i.hasLeft=Ne("right",i),i.hasRight=Ne("left",i),i.value>i.maxValue&&(i.value=i.maxValue),i.value<i.minValue&&(i.value=i.minValue),_.configure(i)}}]),e})(_);S!==void 0&&(S.LinearGauge=Ct),_.initialize("LinearGauge",De),typeof ne<"u"&&Object.assign(S,{Collection:U,GenericOptions:le,Animation:se,BaseGauge:_,drawings:h,SmartCanvas:I,DomObserver:X,vendorize:D});})(typeof ne<"u"?ne.exports:window);});var L=vb(me(),1);vb(me(),1);var Nt=["gauge"],jt=S=>S.replace(/(\-\w)/g,Y=>Y[1].toUpperCase()),Et=S=>S.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ze=S=>jt(S),Je=(()=>{class S{el;zone;canvas;gauge;isInited=false;preInitValue;preInitOptions;domListener;constructor(b,T){this.el=b,this.zone=T;}get options(){let b={};b.renderTo=this.canvas.nativeElement;for(let T of this.el.nativeElement.attributes){let N=Ze(T.name);b[N]=L.DomObserver.parse(T.value);}for(let T in this.preInitOptions)b[T]=this.preInitOptions[T];return this.isInited&&(this.preInitOptions=null),b}set options(b){if(!this.isInited){this.preInitOptions=b;return}this.update(b);}set value(b){if(!this.isInited){this.preInitValue=b;return}this.zone.runOutsideAngular(()=>{this.gauge.value=b;});}update(b){if(b)for(let T in b){let N=b[T].toString();if(T==="value")this.value=L.DomObserver.parse(N);else {let D=Et(T);this.el.nativeElement.setAttribute(D,N);}}}ngOnDestroy(){this.destroy(),this.cleanup();}cleanup(){}destroy(){this.stopListeningForDOMEvents(),this.gauge.destroy();}ngAfterViewInit(){this.initGauge(),this.listenForDOMEvents(),this.isInited=true,this.preInitValue&&(this.value=this.preInitValue);}listenForDOMEvents(){this.domListener=new MutationObserver(b=>{let T={};b.forEach(N=>{N.type==="attributes"&&(T[Ze(N.attributeName)]=L.DomObserver.parse(this.el.nativeElement.getAttribute(N.attributeName)));}),this.basicUpdate(T);}),this.domListener.observe(this.el.nativeElement,{attributes:true});}stopListeningForDOMEvents(){this.domListener&&(this.domListener.disconnect(),this.domListener=null);}initGauge(){let b=this.options;(!b.hasOwnProperty("renderTo")||!b.renderTo)&&(b.renderTo=this.canvas.nativeElement),this.basicUpdate(b);}basicUpdate(b){typeof b.value=="number"&&(this.value=b.value,delete b.value),Object.keys(b).length&&this.gauge.update(b);}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275dir=nw({type:S,viewQuery:function(T,N){if(T&1&&Jh(Nt,7),T&2){let D;Zw(D=Yw())&&(N.canvas=D.first);}},inputs:{options:"options",value:"value"}})}return S})();var Dt=(()=>{class S extends Je{constructor(b,T){super(b,T);}ngOnInit(){this.gauge=new L.LinearGauge(this.options).draw();}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275cmp=JD({type:S,selectors:[["linear-gauge"]],features:[Sh],decls:2,vars:0,consts:[["gauge",""]],template:function(T,N){T&1&&$h(0,"canvas",null,0);},encapsulation:2})}return S})();var Lt=(()=>{class S extends Je{constructor(b,T){super(b,T);}ngOnInit(){this.gauge=new L.RadialGauge(this.options).draw();}static \u0275fac=function(T){return new(T||S)(Ur(Lr),Ur(ue))};static \u0275cmp=JD({type:S,selectors:[["radial-gauge"]],features:[Sh],decls:2,vars:0,consts:[["gauge",""]],template:function(T,N){T&1&&$h(0,"canvas",null,0);},encapsulation:2})}return S})(),Gt=(()=>{class S{static \u0275fac=function(T){return new(T||S)};static \u0275mod=bh({type:S});static \u0275inj=Qs({})}return S})();export{Dt as D,Gt as G,Lt as L};
@@ -1 +1 @@
1
- import {g as ge$1}from'./chunk-TakPRI3t.js';import {d1 as Hj,w,du as p,C as Ff,ao as ue,bu as ut$1,G as Gi,aR as lt$1,a as G,$ as $j,v as vt$1,D as Dt,dG as rn,F as Fa,dn as ge,dH as ac,cw as z,cv as G$1,dI as cn,dJ as nc,dK as qn,dL as zn,dM as pa,J as JD,O as Op,R as Rp,y as yt$1,b as wt,cG as Ht,cH as R,cI as ee,cJ as Nt,cK as Lt,cR as zt,bg as mt$1,P as Pi,k as Qh,_ as _w,u as ul,T as TT,cn as wd,c as $h,cV as Td,cf as xh,bl as Jw,e as EE,B as Bh,an as Hh,M as Mw,s as sg,f as eg,K as Kw,aS as De,aY as xe,ab as te,aj as zm,a_ as Gp,cO as eu,aI as ms,dN as Q,h as Fw,g as qw,X as xw,Y as Aw,bp as gl,dj as Nw,d as ig,aA as gg,l as ud,m as dd,dO as fp}from'./main-YKDNK5VZ.js';import {u}from'./chunk-CCfhzpE8.js';import {c}from'./chunk-BIb-xYiS.js';var K=false,Je=250,it=600*1e3,st=500,nt=15e3,rt=["atons.urn:mrn:imo:mmsi:*","shore.basestations.urn:mrn:imo:mmsi:*","vessels.urn:mrn:imo:mmsi:*","sar.urn:mrn:imo:mmsi:*"],ot=[{prefix:"atons.urn:mrn:imo:mmsi:",type:"aton"},{prefix:"shore.basestations.urn:mrn:imo:mmsi:",type:"basestation"},{prefix:"vessels.urn:mrn:imo:mmsi:",type:"vessel"},{prefix:"sar.urn:mrn:imo:mmsi:",type:"sar"}],at="self.navigation.*",et=(()=>{class l{data=w(De);destroyRef=w(xe);tracks=new Map;contextIndex=new Map;mmsiIndex=new Map;maxTargets=st;targetTtlMs=it;targetsDirty$=new te;ownShipDirty$=new te;pendingOwnShip={};_targets=vt$1([]);_ownShip=vt$1({});_hasCollisionRiskData=vt$1(false);targets=this._targets.asReadonly();ownShip=this._ownShip.asReadonly();hasCollisionRiskData=this._hasCollisionRiskData.asReadonly();getBearingTrue(e,t){if(typeof e.latitude!="number"||typeof e.longitude!="number"||typeof t.latitude!="number"||typeof t.longitude!="number")return null;let i=e.latitude*Math.PI/180,s=t.latitude*Math.PI/180,r=(t.longitude-e.longitude)*Math.PI/180,o=Math.sin(r)*Math.cos(s),n=Math.cos(i)*Math.sin(s)-Math.sin(i)*Math.cos(s)*Math.cos(r),d=Math.atan2(o,n)*180/Math.PI;return this.wrapDegrees(d)}constructor(){zm(...rt.map(t=>this.data.subscribePathTree(t))).pipe(Gp(this.destroyRef)).subscribe(t=>this.handleAisTreeUpdate(t)),this.data.subscribePathTree(at).pipe(Gp(this.destroyRef)).subscribe(t=>this.handleOwnShipTreeUpdate(t)),this.targetsDirty$.pipe(eu(Je,void 0,{leading:true,trailing:true}),Gp(this.destroyRef)).subscribe(()=>this.flushTargetsSignal()),ms(nt).pipe(Gp(this.destroyRef)).subscribe(()=>this.evictStaleTracks(Date.now())),this.ownShipDirty$.pipe(eu(Je,void 0,{leading:true,trailing:true}),Gp(this.destroyRef)).subscribe(()=>this.flushOwnShip());}handleAisTreeUpdate(e){let t=this.matchAisContext(e.path);t&&(this.applyAisUpdate({context:t.context,type:t.type,path:t.path,value:e.update.data.value,timestampMs:this.toTimestampMs(e.update.data.timestamp)}));}handleOwnShipTreeUpdate(e){if(!e.path.startsWith("self."))return;let t=e.path.slice(5);this.applyOwnShipUpdate(t,e.update.data.value);}matchAisContext(e){for(let t of ot){if(!e.startsWith(t.prefix))continue;let i=e.indexOf(".",t.prefix.length);return i===-1?null:{context:e.slice(0,i),path:e.slice(i+1),type:t.type}}return null}applyOwnShipUpdate(e,t){let i=G$1({},this.pendingOwnShip),s=this.readPositionValue(t);switch(e){case "navigation.position":s&&(i.position=s);break;case "navigation.position.latitude":{let r=this.toNumberOrUndefined(t);if(r===void 0)return;i.position=z(G$1({},i.position??{}),{latitude:r});}break;case "navigation.position.longitude":{let r=this.toNumberOrUndefined(t);if(r===void 0)return;i.position=z(G$1({},i.position??{}),{longitude:r});}break;case "navigation.headingTrue":i.headingTrue=this.toNumberOrUndefined(t);break;case "navigation.courseOverGroundTrue":i.courseOverGroundTrue=this.toNumberOrUndefined(t);break;case "navigation.speedOverGround":i.speedOverGround=this.toNumberOrUndefined(t);break;default:return}this.pendingOwnShip=i,this.ownShipDirty$.next();}flushOwnShip(){this.ownShipChanged(this._ownShip(),this.pendingOwnShip)&&this._ownShip.set(this.pendingOwnShip);}ownShipChanged(e,t){return e.headingTrue!==t.headingTrue||e.courseOverGroundTrue!==t.courseOverGroundTrue||e.speedOverGround!==t.speedOverGround||e.position?.latitude!==t.position?.latitude||e.position?.longitude!==t.position?.longitude}applyAisUpdate(e){let t=this.resolveTrack(e);if(t){switch(t.lastUpdateAt=e.timestampMs,e.path.startsWith("navigation.closestApproach.")&&this.isVesselLike(t)&&!t.closestApproach&&(t.closestApproach={}),e.path){case "mmsi":this.applyMmsi(t,e.value);break;case "name":t.name=this.toStringOrUndefined(e.value);break;case "communication.callsignVhf":this.isVesselLike(t)&&(t.callsign=this.toStringOrUndefined(e.value));break;case "navigation.destination":case "navigation.destination.commonName":this.isVesselLike(t)&&(t.destination=this.toStringOrUndefined(e.value));break;case "navigation.destination.eta":this.isVesselLike(t)&&(t.eta=this.toStringOrUndefined(e.value));break;case "design.beam":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{beam:this.toNumberOrUndefined(e.value)}));break;case "design.length.overall":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{overall:this.toNumberOrUndefined(e.value)})}));break;case "design.length.hull":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{hull:this.toNumberOrUndefined(e.value)})}));break;case "design.length.waterline":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{waterline:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.maximum":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{maximum:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.minimum":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{minimum:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.current":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{current:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.canoe":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{canoe:this.toNumberOrUndefined(e.value)})}));break;case "registrations.imo":this.isVesselLike(t)&&(t.imo=this.toStringOrUndefined(e.value));break;case "navigation.courseOverGroundTrue":this.isVesselLike(t)&&(t.courseOverGroundTrue=this.toNumberOrUndefined(e.value));break;case "navigation.headingTrue":this.isVesselLike(t)&&(t.headingTrue=this.toNumberOrUndefined(e.value));break;case "navigation.rateOfTurn":this.isVesselLike(t)&&(t.rateOfTurn=this.toNumberOrUndefined(e.value));break;case "navigation.specialManeuver":this.isVesselLike(t)&&(t.specialManeuver=this.toStringOrUndefined(e.value));break;case "navigation.speedOverGround":this.isVesselLike(t)&&(t.speedOverGround=this.toNumberOrUndefined(e.value));break;case "navigation.state":this.isVesselLike(t)&&(t.navState=this.toStringOrUndefined(e.value));break;case "sensors.ais.class":t.ais.class=this.normalizeAisClass(e.value);break;case "sensors.ais.status":{let i=this.normalizeAisStatus(e.value);if(!i)break;if(i==="remove"){this.removeTrack(t);return}t.ais.status=i;}break;case "sensors.ais.fromBow":this.isVesselLike(t)&&(t.fromBow=this.toNumberOrUndefined(e.value));break;case "sensors.ais.fromCenter":this.isVesselLike(t)&&(t.fromCenter=this.toNumberOrUndefined(e.value));break;case "navigation.position.latitude":{let i=this.toNumberOrUndefined(e.value);if(i===void 0)break;t.position=z(G$1({},t.position??{}),{latitude:i}),t.lastPositionAt=e.timestampMs;}break;case "navigation.position.longitude":{let i=this.toNumberOrUndefined(e.value);if(i===void 0)break;t.position=z(G$1({},t.position??{}),{longitude:i}),t.lastPositionAt=e.timestampMs;}break;case "navigation.position.altitude":{let i=this.toNumberOrUndefined(e.value);t.position&&(t.position=z(G$1({},t.position),{altitude:i}));}break;case "navigation.position":{let i=this.readPositionValue(e.value);i&&(t.position=i,t.lastPositionAt=e.timestampMs);}break;case "atonType.id":this.isAton(t)&&(t.typeId=this.toNumberOrUndefined(e.value));break;case "atonType.name":this.isAton(t)&&(t.typeName=this.toStringOrUndefined(e.value));break;case "virtual":this.isAton(t)&&(t.virtual=!!e.value);break;case "offPosition":this.isAton(t)&&(t.offPosition=!!e.value);break;case "design.aisShipType.id":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{aisShipType:z(G$1({},t.design?.aisShipType??{}),{id:this.toNumberOrUndefined(e.value)})}));break;case "design.aisShipType.name":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{aisShipType:z(G$1({},t.design?.aisShipType??{}),{name:this.toStringOrUndefined(e.value)})}));break;case "navigation.closestApproach.distance":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.distance=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.timeTo":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.timeTo=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.range":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.range=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.bearing":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.bearing=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.collisionRiskRating":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.collisionRiskRating=this.toNumberOrUndefined(e.value));break}this.updateTargetsSignal();}}resolveTrack(e){let t=this.contextIndex.get(e.context),i=e.timestampMs,s=t?this.tracks.get(t):null;if(s)return s;let r=this.createTrack(e.context,e.type,i,void 0);return this.contextIndex.set(e.context,r.id),r}createTrack(e,t,i,s){let r=this.buildTrackId(s??e),o=this.buildBaseTarget(e,t,i,s,r),n;switch(t){case "vessel":n=z(G$1({},o),{type:"vessel",closestApproach:{}});break;case "sar":n=z(G$1({},o),{type:"sar",closestApproach:{}});break;case "aton":n=z(G$1({},o),{type:"aton"});break;default:n=z(G$1({},o),{type:"basestation"});break}return this.tracks.set(n.id,n),s&&this.addMmsiIndex(s,n.id),this.enforceTargetCap(),this.updateTargetsSignal(),n}buildTrackId(e){if(!this.tracks.has(e))return e;let t=1;for(;this.tracks.has(`${e}-${t}`);)t+=1;return `${e}-${t}`}applyMmsi(e,t){let i=this.toStringOrUndefined(t);if(!i)return;let s=this.getTracksByMmsi(i).filter(r=>r.id!==e.id);s.length&&(this.markConflict(i),K),e.mmsi&&e.mmsi!==i&&this.removeMmsiIndex(e.mmsi,e.id),e.mmsi=i,this.addMmsiIndex(i,e.id);}removeTrack(e){this.tracks.delete(e.id),e.mmsi&&this.removeMmsiIndex(e.mmsi,e.id);for(let[t,i]of this.contextIndex.entries())i===e.id&&this.contextIndex.delete(t);this.updateTargetsSignal();}updateTargetsSignal(){this.targetsDirty$.next();}enforceTargetCap(){for(;this.tracks.size>this.maxTargets;){let e=null;for(let t of this.tracks.values())(!e||t.lastUpdateAt<e.lastUpdateAt)&&(e=t);if(!e)break;this.removeTrack(e);}}evictStaleTracks(e){let t=e-this.targetTtlMs,i=[];for(let s of this.tracks.values())s.lastUpdateAt<t&&i.push(s);for(let s of i)this.removeTrack(s);this.enforceTargetCap();}flushTargetsSignal(){let e=Array.from(this.tracks.values()).filter(i=>!!i.mmsi||!!i.position),t=e.some(i=>{if(!this.isVesselLike(i))return false;let s=i.closestApproach??{};return Object.prototype.hasOwnProperty.call(s,"collisionRiskRating")});this._targets.set(e),this._hasCollisionRiskData.set(t);}getTracksByMmsi(e){let t=this.mmsiIndex.get(e);return t?Array.from(t).map(i=>this.tracks.get(i)).filter(i=>!!i):[]}addMmsiIndex(e,t){this.mmsiIndex.has(e)||this.mmsiIndex.set(e,new Set),this.mmsiIndex.get(e).add(t);}removeMmsiIndex(e,t){let i=this.mmsiIndex.get(e);i&&(i.delete(t),i.size||this.mmsiIndex.delete(e));}markConflict(e){let t=this.getTracksByMmsi(e);for(let i of t)i.conflicted=true;}normalizeAisClass(e){let t=typeof e=="string"?e.toUpperCase():"";if(t==="A")return "A";if(t==="B")return "B"}normalizeAisStatus(e){if(e==null)return;let t=String(e).toLowerCase();if(t==="unconfirmed"||t==="confirmed"||t==="lost"||t==="remove")return t}toTimestampMs(e){if(!e)return Date.now();let t=e instanceof Date?e.getTime():Date.parse(e);return Number.isFinite(t)?t:Date.now()}toNumberOrUndefined(e){let t=Number(e);return Number.isFinite(t)?t:void 0}toStringOrUndefined(e){if(e==null)return;let t=String(e).trim();return t.length?t:void 0}wrapDegrees(e){let t=e%360;return t<0?t+360:t}buildBaseTarget(e,t,i,s,r){return {id:r,context:e,type:t,ais:{class:void 0,status:"unconfirmed"},conflicted:false,mmsi:s,position:void 0,lastUpdateAt:i,lastPositionAt:void 0}}isVesselLike(e){return e.type==="vessel"||e.type==="sar"}isAton(e){return e.type==="aton"}readPositionValue(e){if(!e||typeof e!="object")return;let t=this.toNumberOrUndefined(e.latitude),i=this.toNumberOrUndefined(e.longitude);if(t===void 0||i===void 0)return;let s=this.toNumberOrUndefined(e.altitude);return {latitude:t,longitude:i,altitude:s}}static \u0275fac=function(t){return new(t||l)};static \u0275prov=Q({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var lt=["radarSvg"],ct=["menuAnchor"],dt=["menuTrigger"],ht=(l,I)=>I.id;function ut(l,I){l&1&&(wd(),Pi(0,"svg",7),$h(1,"path",17),Pi(2,"text",18),TT(3,"N"),ul()());}function mt(l,I){l&1&&(wd(),Pi(0,"svg",7),$h(1,"path",19),ul());}function gt(l,I){if(l&1){let e=Fw();Pi(0,"button",20),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("noCollisionRisk"))}),Pi(1,"mat-icon"),TT(2,"security"),ul()();}if(l&2){let e=qw();sg("is-active",e.isFilterEnabled("noCollisionRisk"));}}function pt(l,I){if(l&1){let e=Fw();Pi(0,"button",22),Qh("click",function(){let i=ud(e).$implicit,s=qw(2);return dd(s.onMenuItemSelect(i))}),$h(1,"img",23),Pi(2,"span",24),TT(3),ul()();}if(l&2){let e=I.$implicit;EE(),ig("visibility",e.iconHref?"visible":"hidden"),Hh("src",e.iconHref??null,fp),EE(2),gg(e.label);}}function ft(l,I){if(l&1&&xw(0,pt,4,4,"button",21,ht),l&2){let e=qw();Aw(e.menuItems());}}function St(l,I){if(l&1){let e=Fw();Pi(0,"button",25),TT(1,"Filter Targets"),ul(),Pi(2,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("anchoredMoored"))}),Pi(3,"mat-icon",27),TT(4),ul(),Pi(5,"span"),TT(6,"Anchored/Moored"),ul()(),Pi(7,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allAton"))}),Pi(8,"mat-icon",27),TT(9),ul(),Pi(10,"span"),TT(11,"All AtoN"),ul()(),Pi(12,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allButSar"))}),Pi(13,"mat-icon",27),TT(14),ul(),Pi(15,"span"),TT(16,"All but SAR"),ul()(),Pi(17,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allVessels"))}),Pi(18,"mat-icon",27),TT(19),ul(),Pi(20,"span"),TT(21,"All Vessels"),ul()(),Pi(22,"button",28)(23,"span"),TT(24,"Vessel Type"),ul(),Pi(25,"mat-icon"),TT(26,"chevron_right"),ul()();}if(l&2){let e=qw(),t=Jw(26);EE(4),gl(" ",e.isFilterEnabled("anchoredMoored")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allAton")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allButSar")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allVessels")?"check_box":"check_box_outline_blank"," "),EE(3),Bh("matMenuTriggerFor",t);}}function vt(l,I){if(l&1){let e=Fw();Pi(0,"button",26),Qh("click",function(){let i=ud(e).$implicit,s=qw(2);return dd(s.toggleVesselTypeFilter(i))}),Pi(1,"mat-icon",27),TT(2),ul(),Pi(3,"span"),TT(4),ul()();}if(l&2){let e=I.$implicit,t=qw(2);EE(2),gl(" ",t.isVesselTypeFilterEnabled(e)?"check_box":"check_box_outline_blank"," "),EE(2),gg(t.formatVesselTypeLabel(e));}}function bt(l,I){if(l&1&&xw(0,vt,5,2,"button",29,Nw),l&2){let e=qw();Aw(e.vesselTypeFilters);}}function yt(l,I){l&1&&$h(0,"div",16);}var Qt=(()=>{class l{static TARGET_ICON_SIZE_PX=16;static OWN_SHIP_ICON_SIZE_PX=84;static HIT_RADIUS_PX=28;static ICON_RENDER_DEBOUNCE_MS=50;static ROTATION_SETTLE_DEADBAND_DEG=1;static ROTATION_ONLY_FRAME_MS=33;id=Hj.required();type=Hj.required();theme=Hj.required();runtime=w(p);ais=w(et);dialog=w(Ff);ngZone=w(ue);units=w(ut$1);settings=w(Gi);toast=w(lt$1);dashboard=w(G);static DEFAULT_CONFIG={filterSelfPaths:false,enableTimeout:false,dataTimeout:5,ais:{filters:{anchoredMoored:false,noCollisionRisk:false,allAton:false,allButSar:false,allVessels:false,vesselTypes:[]},viewMode:"course-up",rangeRings:[1,3,6,12,24,48],rangeIndex:"3",showCogVectors:true,cogVectorsMinutes:10,showLostTargets:true,showUnconfirmedTargets:true,showSelf:true},color:"grey"};svgRef=$j.required("radarSvg");menuAnchorRef=$j.required("menuAnchor");menuTrigger=$j.required("menuTrigger");hostSize=vt$1(null);renderState=null;selectedId=vt$1(null);localViewMode=vt$1(null);localRangeIndex=vt$1(null);effectiveViewMode=Dt(()=>this.localViewMode()??this.runtime.options()?.ais?.viewMode??"course-up");effectiveRangeIndex=Dt(()=>{let e=this.resolveRangeIndex(this.runtime.options()?.ais),t=this.runtime.options()?.ais?.rangeRings??[3,6,12,24,48],i=Math.max(0,t.length-1),s=this.localRangeIndex()??e;return Math.min(Math.max(s,0),i)});svg;root;ringsLayer;rotationGroup;vectorsLayer;targetsLayer;selectedLayer;ownShipLayer;viewRotationSmoothed=null;lastRotationAt=null;lastViewRotation=0;hasRenderedOnce=false;renderFrame=null;rotationFrameTimer=null;iconRenderTimer=null;iconCache=new Map;targetCache=new Map;lastOriginKey=null;ringCache=null;ownShipIconHref=null;menuItems=vt$1([]);menuPoint=null;lastRenderTargets=[];lastRenderScale=1;lastRenderSize=null;hitRadiusPx=l.HIT_RADIUS_PX;lastFiltersSignature=null;lastRenderSignature=null;ownShipVectorCache=null;filterState=vt$1({anchoredMoored:false,noCollisionRisk:false,allAton:false,allButSar:false,allVessels:false,vesselTypes:new Set});vesselTypeFilters=rn.filter(e=>e!=="vessel/self"&&e!=="vessel/unknown"&&e!=="vessel/spare");hasActiveFilters=Dt(()=>{let e=this.filterState();return e.anchoredMoored||e.allAton||e.allButSar||e.allVessels||e.vesselTypes.size>0});hasCollisionRiskData=this.ais.hasCollisionRiskData;constructor(){this.warnIfRemoteDataDisabled(),this.loadOwnShipIcon(),Fa(()=>{let e=this.hostSize(),t=this.runtime.options(),i=this.theme(),s=this.ais.targets(),r=this.ais.ownShip();!e||!t||!i||(ge(()=>{this.renderState={size:e,cfg:t,theme:i,targets:s,ownShip:r},this.syncFiltersFromConfig(t);}),this.scheduleRender());}),Fa(()=>{this.localViewMode(),this.localRangeIndex(),this.selectedId(),this.filterState(),ge(()=>{this.scheduleRender();});});}warnIfRemoteDataDisabled(){this.settings.signalKSubscribeAll||this.toast.show('AIS data is disabled in your connection. To see radar targets, go to Settings -> Options -> Connectivity, enable "Subscribe to remote sources messages", then reconnect.',0,false,"warn");}loadOwnShipIcon(){this.ngZone.runOutsideAngular(()=>{ac().then(e=>{this.ownShipIconHref=e,this.scheduleRenderDebounced();});});}ngAfterViewInit(){this.initSvg(),this.scheduleRender();}onResized(e){this.hostSize.set({width:e.width,height:e.height});}initSvg(){this.svg=ge$1(this.svgRef().nativeElement),this.svg.attr("class","ais-radar"),this.root=this.svg.append("g").attr("class","radar-root"),this.ringsLayer=this.root.append("g").attr("class","radar-rings"),this.rotationGroup=this.root.append("g").attr("class","radar-rotation"),this.vectorsLayer=this.rotationGroup.append("g").attr("class","radar-vectors"),this.targetsLayer=this.rotationGroup.append("g").attr("class","radar-targets"),this.selectedLayer=this.rotationGroup.append("g").attr("class","radar-selected"),this.ownShipLayer=this.root.append("g").attr("class","radar-ownship-layer"),this.svg.on("click",()=>{this.selectedId.set(null),this.closeTargetMenu();});}scheduleRender(){this.renderFrame===null&&this.ngZone.runOutsideAngular(()=>{this.renderFrame=requestAnimationFrame(()=>{this.renderFrame=null,this.render();});});}scheduleRenderDebounced(){this.iconRenderTimer===null&&this.ngZone.runOutsideAngular(()=>{this.iconRenderTimer=window.setTimeout(()=>{this.iconRenderTimer=null,this.scheduleRender();},l.ICON_RENDER_DEBOUNCE_MS);});}scheduleRotationOnlyRender(){this.rotationFrameTimer!==null||this.renderFrame!==null||this.ngZone.runOutsideAngular(()=>{this.rotationFrameTimer=window.setTimeout(()=>{this.rotationFrameTimer=null,this.scheduleRender();},l.ROTATION_ONLY_FRAME_MS);});}render(){if(!this.renderState||!this.svg||!this.root||!this.rotationGroup)return;let{size:e,cfg:t,theme:i,targets:s,ownShip:r}=this.renderState,o=Math.max(1,e.width),n=Math.max(1,e.height),d=Math.min(o,n)/2,u=(Math.min(o,n)-35)/Math.min(o,n),b=Math.hypot(o,n)/2/u,c$1=t.ais??{},T=c$1.rangeRings?.length?c$1.rangeRings:[3,6,12,24,48],x=this.effectiveRangeIndex(),a=T[x]??T[0],M=this.resolveRingCountForRange(a),S=this.localViewMode()??c$1.viewMode??"course-up",_=this.toDegreesIfRadians(r.courseOverGroundTrue),C=this.toDegreesIfRadians(r.headingTrue),V=_!==null||C!==null,m=S==="course-up"?_??C??0:0,B=this.viewRotationSmoothed!==null&&Math.abs(this.shortestAngleDelta(this.viewRotationSmoothed,m))<=l.ROTATION_SETTLE_DEADBAND_DEG,$=this.buildFilterStateSignature(this.filterState()),U=r.position?`${r.position.latitude},${r.position.longitude}`:"none",F={sizeKey:`${o}x${n}`,viewMode:S,rangeIndex:x,rangesKey:T.join(","),showSelf:c$1.showSelf??true,showCogVectors:c$1.showCogVectors??true,showLostTargets:c$1.showLostTargets??true,showUnconfirmedTargets:c$1.showUnconfirmedTargets??true,filtersKey:$,selectedId:this.selectedId(),targetsRef:s,ownPosKey:U,themeRef:i,color:t.color},L=!this.lastRenderSignature||!this.signaturesEqual(this.lastRenderSignature,F);if(!L&&B&&this.hasRenderedOnce)return;this.lastRenderSignature=F;let v=S==="course-up"&&V?this.smoothRotation(m):0,te=S==="course-up"?Math.abs(this.shortestAngleDelta(v,m)):0;this.lastViewRotation=v,this.svg.attr("viewBox",`${-o/2} ${-n/2} ${o} ${n}`),this.root.attr("transform",`scale(${u})`),this.rotationGroup.attr("transform",`rotate(${this.wrapDegrees(-v)})`);let me=this.wrapDegrees((_??C??0)-v);if(L){let ie=c(t.color??"contrast",i).dim;this.renderRings(M,a,d,b,v,u,c$1.showSelf??true,me,ie);}if(this.ownShipLayer?.select("g.radar-ownship").attr("transform",`rotate(${me})`),r.position&&this.hasValidPosition(r.position)&&(this.renderOwnShipVector(r,a,d,v,c$1),L)){let ie=b/d*a,W=this.buildTargets(s,r.position,a,ie,d,0,c$1);this.lastRenderTargets=W,this.lastRenderScale=u,this.lastRenderSize=e,this.renderTargetVectors(W,a,d,0,c$1),this.renderTargets(W,u),this.renderSelected(W,u);}this.raiseOwnshipAndVector(),this.hasRenderedOnce=true,te>l.ROTATION_SETTLE_DEADBAND_DEG&&(L?this.scheduleRender():this.scheduleRotationOnlyRender());}signaturesEqual(e,t){return e.sizeKey===t.sizeKey&&e.viewMode===t.viewMode&&e.rangeIndex===t.rangeIndex&&e.rangesKey===t.rangesKey&&e.showSelf===t.showSelf&&e.showCogVectors===t.showCogVectors&&e.showLostTargets===t.showLostTargets&&e.showUnconfirmedTargets===t.showUnconfirmedTargets&&e.filtersKey===t.filtersKey&&e.selectedId===t.selectedId&&e.targetsRef===t.targetsRef&&e.ownPosKey===t.ownPosKey&&e.themeRef===t.themeRef&&e.color===t.color}renderRings(e,t,i,s,r,o,n,d,u){if(!this.ringsLayer)return;let b=`${t.toFixed(3)}|${i.toFixed(3)}|${s.toFixed(3)}|${e}`;if(!this.ringCache||this.ringCache.key!==b){let m=t/Math.max(1,e),B=s/i*t,$=[];for(let v=m;v<=B+1e-6;v+=m)$.push(v);let U=$.map(v=>({value:v,radius:v/t*i})).filter(v=>v.radius<=s+1e-6),F=20,L=U.flatMap(v=>[{key:`${v.value}-top`,value:v.value,x:0,y:-v.radius+F},{key:`${v.value}-bottom`,value:v.value,x:0,y:v.radius-F}]);this.ringCache={key:b,rings:U,labels:L};}let c=this.ringCache;if(!c)return;let T=c.rings,x=this.ringsLayer.selectAll("circle.ring").data(T,m=>m.value.toString());x.enter().append("circle").attr("class","ring").merge(x).attr("r",m=>m.radius).attr("stroke",u),x.exit().remove();let a=c.labels,M=this.ringsLayer.selectAll("text.ring-label").data(a,m=>m.key);M.enter().append("text").attr("class","ring-label").merge(M).attr("x",m=>m.x).attr("y",m=>m.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(m=>`${m.value}`),M.exit().remove();let S=this.ringsLayer.selectAll("circle.radar-center").data(n?[]:[{r:Math.max(3,i*.01)}]);S.enter().append("circle").attr("class","radar-center").merge(S).attr("cx",0).attr("cy",0).attr("r",m=>m.r).attr("fill",u),S.exit().remove();let _=this.ownShipLayer.selectAll("g.radar-ownship").data(n?[{size:this.resolveOwnShipBaseSize(o)}]:[]),C=_.enter().append("g").attr("class","radar-ownship");C.append("image").attr("class","ownship-icon").attr("href",this.ownShipIconHref??null).attr("xlink:href",this.ownShipIconHref??null);let V=C.merge(_);V.attr("transform",`rotate(${d})`),V.select("image.ownship-icon").attr("href",this.ownShipIconHref??null).attr("xlink:href",this.ownShipIconHref??null).attr("display",this.ownShipIconHref?null:"none").attr("width",m=>m.size).attr("height",m=>m.size).attr("x",m=>-m.size/2).attr("y",m=>-m.size/2),_.exit().remove();}toggleViewMode(){let e=this.localViewMode()??this.runtime.options()?.ais?.viewMode??"course-up";this.localViewMode.set(e==="course-up"?"north-up":"course-up");}incrementRange(){this.localRangeIndex.set(Math.max(this.effectiveRangeIndex()-1,0));}decrementRange(){let e=this.runtime.options()?.ais?.rangeRings??[3,6,12,24,48],t=Math.max(0,e.length-1);this.localRangeIndex.set(Math.min(this.effectiveRangeIndex()+1,t));}toggleFilter(e){this.filterState.update(t=>z(G$1({},t),{[e]:!t[e]}));}toggleVesselTypeFilter(e){this.filterState.update(t=>{let i=new Set(t.vesselTypes);return i.has(e)?i.delete(e):i.add(e),z(G$1({},t),{vesselTypes:i})});}isFilterEnabled(e){return this.filterState()[e]}isVesselTypeFilterEnabled(e){return this.filterState().vesselTypes.has(e)}formatVesselTypeLabel(e){let t=e.replace("vessel/","");switch(t){case "pleasurecraft":return "Pleasure Craft";case "highspeed":return "High Speed";case "sar":return "SAR";case "law":return "Law Enforcement";default:return `${t.charAt(0).toUpperCase()}${t.slice(1)}`}}syncFiltersFromConfig(e){let t=e.ais?.filters;if(!t)return;let i=this.buildFilterSignature(t);i!==this.lastFiltersSignature&&(this.lastFiltersSignature=i,this.filterState.set({anchoredMoored:t.anchoredMoored??false,noCollisionRisk:t.noCollisionRisk??false,allAton:t.allAton??false,allButSar:t.allButSar??false,allVessels:t.allVessels??false,vesselTypes:new Set(t.vesselTypes??[])}));}buildFilterSignature(e){let t=[...e?.vesselTypes??[]].sort();return JSON.stringify({anchoredMoored:e?.anchoredMoored??false,noCollisionRisk:e?.noCollisionRisk??false,allAton:e?.allAton??false,allButSar:e?.allButSar??false,allVessels:e?.allVessels??false,vesselTypes:t})}buildFilterStateSignature(e){let t=[...e.vesselTypes].sort();return JSON.stringify({anchoredMoored:e.anchoredMoored,noCollisionRisk:e.noCollisionRisk,allAton:e.allAton,allButSar:e.allButSar,allVessels:e.allVessels,vesselTypes:t})}resolveRingCountForRange(e){return [3].find(i=>this.isNiceStep(e/i))??4}isNiceStep(e){return [.5,1,2,2.5,3,4,5,6,8,10,12,15,20,25].some(i=>Math.abs(e-i)<1e-6)}resolveRangeIndex(e){return e?Number(e.rangeIndex):0}buildTargets(e,t,i,s,r,o,n){let d=n.showLostTargets??true,u=n.showUnconfirmedTargets??true,b=`${t.latitude?.toFixed(6)}|${t.longitude?.toFixed(6)}`;this.lastOriginKey!==b&&(this.targetCache.clear(),this.lastOriginKey=b);let c=new Set;for(let a of e)c.add(a.id);for(let a of this.targetCache.keys())c.has(a)||this.targetCache.delete(a);for(let a of this.iconCache.keys())c.has(a)||this.iconCache.delete(a);let T=[];for(let a of e)a.ais.status==="remove"&&(this.targetCache.delete(a.id),this.iconCache.delete(a.id),this.selectedId()===a.id&&this.selectedId.set(null));let x=e.filter(a=>a.ais.status==="remove"||a.ais.status==="lost"&&!d||a.ais.status==="unconfirmed"&&!u||!a.position||!this.hasValidPosition(a.position)?false:!this.shouldFilterTarget(a));for(let a of x){let M=this.buildTrackSignature(a),S=this.targetCache.get(a.id);if(!S||S.signature!==M){let F=this.distanceNm(t,a.position),L=this.ais.getBearingTrue(t,a.position)??0,v=this.toDegreesIfRadians(this.isVesselLike(a)?a.headingTrue:null),te=this.toDegreesIfRadians(this.isVesselLike(a)?a.courseOverGroundTrue:null);S={signature:M,distanceNm:F,bearing:L,trackHeading:v,trackCog:te},this.targetCache.set(a.id,S);}if(S.distanceNm>s)continue;let{href:_,scale:C}=this.resolveIconCached(a),V=this.wrapDegrees(S.bearing-o),{x:m,y:B}=this.polarToCartesian(V,S.distanceNm,i,r),$=a.type==="aton"||a.type==="basestation"?0:this.wrapDegrees((S.trackHeading??S.trackCog??0)-o),U=this.buildClassName({id:a.id,status:a.ais.status,aisClass:a.ais.class,type:a.type,navState:this.isVesselLike(a)?a.navState:void 0});T.push({id:a.id,raw:a,x:m,y:B,heading:$,status:a.ais.status,aisClass:a.ais.class,type:a.type,iconHref:_,iconScale:C,navState:this.isVesselLike(a)?a.navState:void 0,sog:this.isVesselLike(a)?a.speedOverGround:void 0,cog:S.trackCog??null,className:U});}return T}renderTargetVectors(e,t,i,s,r){if(!this.vectorsLayer)return;let o=r.showCogVectors??true,n=Math.max(6,i*.04),d=(r.cogVectorsMinutes??5)*60,u=n*.8,b=[];for(let c of e)if(this.isVesselLike(c.raw)&&!this.isStationaryNavState(c.raw.navState)&&o&&typeof c.sog=="number"&&typeof c.cog=="number"){let T=this.wrapDegrees(c.cog-s),x=this.offsetPoint(c.x,c.y,T,u),a=c.sog*d/1852,M=Math.max(0,a/t*i-u);if(M<=0)continue;let S=this.offsetPoint(x.x,x.y,T,M),_=this.resolveTargetVectorStroke(c.raw);b.push({id:c.id,x1:x.x,y1:x.y,x2:S.x,y2:S.y,className:c.className,stroke:_});}this.renderVectorLines(this.vectorsLayer,"motion-vector",b);}renderOwnShipVector(e,t,i,s,r){if(!this.ownShipLayer)return;let o=Math.max(6,i*.04),n=(r.cogVectorsMinutes??5)*60,d=o*.8,u=[];if(!(r.showSelf??true)){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let c=this.toDegreesIfRadians(e.courseOverGroundTrue),T=e.speedOverGround;if(c===null||typeof T!="number"){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let x=T*n/1852,a=Math.max(0,x/t*i-d);if(a<=0){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let M=[c.toFixed(6),T.toFixed(6),t.toFixed(6),i.toFixed(6),n,d.toFixed(6)].join("|");if(!this.ownShipVectorCache||this.ownShipVectorCache.key!==M){let C=this.wrapDegrees(c),V=this.offsetPoint(0,0,C,d),m=this.offsetPoint(V.x,V.y,C,a);this.ownShipVectorCache={key:M,tipX:V.x,tipY:V.y,endX:m.x,endY:m.y};}let S=this.rotatePoint(this.ownShipVectorCache.tipX,this.ownShipVectorCache.tipY,-s),_=this.rotatePoint(this.ownShipVectorCache.endX,this.ownShipVectorCache.endY,-s);u.push({id:"ownship",x1:S.x,y1:S.y,x2:_.x,y2:_.y,className:"ownship-vector",stroke:"var(--kip-orange-color)"}),this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);}rotatePoint(e,t,i){let s=i*Math.PI/180,r=Math.cos(s),o=Math.sin(s);return {x:e*r-t*o,y:e*o+t*r}}renderVectorLines(e,t,i){let s=e.selectAll(`line.${t}`).data(i,o=>o.id);s.enter().append("line").attr("class",o=>`${t} ${o.className}`).merge(s).attr("x1",o=>o.x1).attr("y1",o=>o.y1).attr("x2",o=>o.x2).attr("y2",o=>o.y2).style("stroke",o=>o.stroke??"#50505f").style("stroke-width",2).style("opacity",1).style("stroke-dasharray","15, 7"),s.exit().remove();let r=e.selectAll(`circle.${t}-tip`).data(i,o=>o.id);r.enter().append("circle").attr("class",o=>`${t}-tip ${o.className}`).merge(r).attr("cx",o=>o.x2).attr("cy",o=>o.y2).attr("r",2.5).style("fill",o=>o.stroke??"#50505f").style("stroke",o=>o.stroke??"#50505f").style("stroke-width",2).style("opacity",1).style("stroke-dasharray","15, 7"),r.exit().remove();}renderTargets(e,t){if(!this.targetsLayer)return;let i=this.resolveTargetBaseSize(t),s=this.targetsLayer.selectAll("g.target").data(e,n=>n.id),r=s.enter().append("g").on("click",(n,d)=>{n.stopPropagation(),this.handleTargetClick(n,d);});r.append("image").attr("class","target-icon"),r.append("title");let o=r.merge(s);o.attr("transform",n=>`translate(${n.x}, ${n.y}) rotate(${n.heading})`).attr("class",n=>`target ${n.className}`),o.select("image.target-icon").attr("href",n=>n.iconHref??null).attr("xlink:href",n=>n.iconHref??null).attr("display",n=>n.iconHref?null:"none").attr("width",n=>i*n.iconScale).attr("height",n=>i*n.iconScale).attr("x",n=>-(i*n.iconScale)/2).attr("y",n=>-(i*n.iconScale)/2),o.select("title").text(n=>`${n.raw.name??n.raw.mmsi??"AIS Target"}`),s.exit().remove();}renderSelected(e,t){if(!this.selectedLayer)return;let i=e.filter(u=>u.id===this.selectedId()),s=this.resolveTargetBaseSize(t),r=s*1.4,o=Math.min(r,Math.max(4,s*.6)),n=this.buildCornerBoxPath(r,o),d=this.selectedLayer.selectAll("path.selected-ring").data(i,u=>u.id);d.enter().append("path").attr("class","selected-ring").merge(d).attr("transform",u=>`translate(${u.x}, ${u.y})`).attr("d",n),d.exit().remove();}resolveTargetBaseSize(e){let t=Math.max(.2,e);return l.TARGET_ICON_SIZE_PX/t}resolveOwnShipBaseSize(e){let t=Math.max(.2,e);return l.OWN_SHIP_ICON_SIZE_PX/t}raiseOwnshipAndVector(){this.ownShipLayer?.raise();}onMenuItemSelect(e){this.openTargetDialog(e.target,e.iconHref),this.selectedId.set(null),this.closeTargetMenu();}handleTargetClick(e,t){let i=this.resolveMenuItems(e,t);if(i.length<=1){this.openTargetDialog(t.raw,t.iconHref);return}this.menuItems.set(i),this.menuPoint=this.resolveMenuPoint(e),this.positionMenuAnchor(),this.menuTrigger().openMenu();}openTargetDialog(e,t){this.selectedId.set(e.id);let i=this.snapshotAisTrack(e);this.dialog.openAisDetailDialog({title:this.buildTargetTitle(i),iconHref:t??void 0,component:"ais-target",componentType:cn,payload:{target:i}}).subscribe();}snapshotAisTrack(e){return structuredClone(e)}resolveMenuItems(e,t){return this.findTargetsNearEvent(e,t).map(s=>({id:s.id,label:this.buildTargetMenuLabel(s.raw),iconHref:s.iconHref,target:s.raw}))}findTargetsNearEvent(e,t){let i=this.lastRenderTargets.length?this.lastRenderTargets:[t],s=this.eventToRadarPoint(e);if(!s)return [t];let r=this.hitRadiusPx/this.lastRenderScale,o=i.map((n,d)=>{let u=n.x-s.x,b=n.y-s.y,c=Math.hypot(u,b);return {candidate:n,distance:c,index:d}}).filter(n=>n.distance<=r).sort((n,d)=>n.distance-d.distance||n.index-d.index).map(n=>n.candidate);return o.length?o:[t]}eventToRadarPoint(e){if(!this.lastRenderSize)return null;let s=this.svgRef().nativeElement.getBoundingClientRect(),r=e.clientX-s.left,o=e.clientY-s.top,n=(r-s.width/2)/this.lastRenderScale,d=(o-s.height/2)/this.lastRenderScale,u=this.lastViewRotation*Math.PI/180,b=Math.cos(u),c=Math.sin(u);return {x:n*b-d*c,y:n*c+d*b}}resolveMenuPoint(e){let t=this.svgRef().nativeElement.closest(".ais-radar-container");if(!t)return null;let i=t.getBoundingClientRect();return {x:e.clientX-i.left,y:e.clientY-i.top}}positionMenuAnchor(){let e=this.menuAnchorRef().nativeElement;this.menuPoint&&(e.style.left=`${this.menuPoint.x}px`,e.style.top=`${this.menuPoint.y}px`);}closeTargetMenu(){this.resetTargetMenuState(),this.menuTrigger().menuOpen&&this.menuTrigger().closeMenu();}resetTargetMenuState(){this.menuItems.set([]),this.menuPoint=null;}buildTargetMenuLabel(e){return this.isAton(e)&&e.typeName?e.typeName:e.name??e.mmsi??"AIS Target"}buildTargetTitle(e){let t=this.isAton(e)&&e.typeName?e.typeName:e.name??e.type??"AIS Target",i=e.ais.status;return i==="unconfirmed"||i==="lost"||i==="remove"?`${t} - ${i}`:t}resolveIconCached(e){let t=this.buildIconSignature(e),i=this.iconCache.get(e.id);if(i&&i.signature===t)return i.icon;let s=this.resolveIconScale(e.type),r={href:i?.icon.href??null,scale:s};this.iconCache.set(e.id,{signature:t,icon:r});let o=e.ais.status==="remove"?void 0:e.ais.status;return this.ngZone.runOutsideAngular(()=>{nc({mmsi:e.mmsi??"",type:e.type,navState:this.isVesselLike(e)?e.navState:void 0,aisShipTypeId:this.isVesselLike(e)?e.design?.aisShipType?.id:void 0,atonVirtual:this.isAton(e)?e.virtual:void 0,atonTypeId:this.isAton(e)?e.typeId:void 0,status:o,collisionRiskRating:this.isVesselLike(e)?e.closestApproach?.collisionRiskRating:void 0}).then(n=>{let d=this.iconCache.get(e.id);!d||d.signature!==t||(d.icon={href:n,scale:s},this.scheduleRenderDebounced());});}),r}resolveIconScale(e){switch(e){case "aton":return 3.5;case "basestation":return 3;case "sar":return 2.4;case "vessel":return 3;default:return 2.4}}buildIconSignature(e){let t=e.ais.status==="lost"?"unconfirmed":e.ais.status;return [e.mmsi,e.type,this.isVesselLike(e)?e.navState:void 0,this.isVesselLike(e)?e.design?.aisShipType?.id:void 0,this.isAton(e)?e.virtual:void 0,this.isAton(e)?e.typeId:void 0,t,this.isVesselLike(e)?e.closestApproach?.collisionRiskRating:void 0].join("|")}buildClassName(e){let t=[`status-${e.status}`,`type-${e.type}`,e.aisClass?`class-${e.aisClass.toLowerCase()}`:"class-unknown"];if(e.navState){let i=e.navState.toLowerCase();i.includes("moored")&&t.push("state-moored"),i.includes("anchored")&&t.push("state-anchored");}return e.id===this.selectedId()&&t.push("is-selected"),t.join(" ")}resolveTargetVectorStroke(e){if(e.ais.status!=="confirmed")return "#50505f";let t=e.closestApproach?.collisionRiskRating,i=typeof t=="number"?t:Number(t);return Number.isFinite(i)?i<qn?"red":i<zn?"yellow":"#50505f":"#50505f"}shouldFilterTarget(e){let t=this.filterState();if(!t.anchoredMoored&&!t.noCollisionRisk&&!t.allAton&&!t.allButSar&&!t.allVessels&&t.vesselTypes.size===0)return false;if(t.anchoredMoored&&this.isVesselLike(e)&&this.isStationaryNavState(e.navState)||t.noCollisionRisk&&this.isVesselLike(e)&&(e.ais.status!=="confirmed"||this.isStationaryNavState(e.navState)||this.isNoCollisionRisk(e))||t.allAton&&e.type==="aton"||t.allButSar&&e.type!=="sar"||t.allVessels&&this.isVesselLike(e))return true;if(t.vesselTypes.size>0&&this.isVesselLike(e)){let i=this.resolveVesselIconKey(e);if(i&&t.vesselTypes.has(i))return true}return false}isNoCollisionRisk(e){let t=e.closestApproach?.collisionRiskRating;if(!Object.prototype.hasOwnProperty.call(e.closestApproach??{},"collisionRiskRating"))return false;if(t==null)return true;let i=typeof t=="number"?t:Number(t);return Number.isFinite(i)?i>=zn:true}resolveVesselIconKey(e){if(!this.isVesselLike(e))return null;let t=pa({mmsi:e.mmsi??e.id??"",type:e.type,aisShipTypeId:e.design?.aisShipType?.id});return t.startsWith("vessel/")?t:null}polarToCartesian(e,t,i,s){let r=e*Math.PI/180,o=t/i*s;return {x:o*Math.sin(r),y:-o*Math.cos(r)}}hasValidPosition(e){return typeof e?.latitude=="number"&&Number.isFinite(e.latitude)&&typeof e?.longitude=="number"&&Number.isFinite(e.longitude)}offsetPoint(e,t,i,s){let r=i*Math.PI/180;return {x:e+s*Math.sin(r),y:t-s*Math.cos(r)}}wrapDegrees(e){let t=e%360;return t<0?t+360:t}isStationaryNavState(e){if(typeof e=="number"&&Number.isFinite(e))return e===1||e===5;if(typeof e!="string")return false;let t=e.trim().toLowerCase().replace(/\s+/g," ");if(!t.length)return false;let i=Number(t);return Number.isFinite(i)?i===1||i===5:t.includes("moored")||t.includes("anchored")||t.includes("at anchor")}shortestAngleDelta(e,t){return (t-e+540)%360-180}buildTrackSignature(e){let t=e.position??{};return [t.latitude,t.longitude,this.isVesselLike(e)?e.headingTrue:void 0,this.isVesselLike(e)?e.courseOverGroundTrue:void 0].join("|")}isVesselLike(e){return e.type==="vessel"||e.type==="sar"}isAton(e){return e.type==="aton"}buildCornerBoxPath(e,t){let i=e,s=Math.min(Math.max(t,0),i);return [`M ${-i} ${-i} h ${s}`,`M ${-i} ${-i} v ${s}`,`M ${i} ${-i} h ${-s}`,`M ${i} ${-i} v ${s}`,`M ${-i} ${i} h ${s}`,`M ${-i} ${i} v ${-s}`,`M ${i} ${i} h ${-s}`,`M ${i} ${i} v ${-s}`].join(" ")}smoothRotation(e){let t=performance.now();if(this.viewRotationSmoothed===null||this.lastRotationAt===null)return this.viewRotationSmoothed=this.wrapDegrees(e),this.lastRotationAt=t,this.viewRotationSmoothed;let i=Math.min(250,Math.max(0,t-this.lastRotationAt)),s=Math.min(1,i/200),r=this.shortestAngleDelta(this.viewRotationSmoothed,e);return this.viewRotationSmoothed=this.wrapDegrees(this.viewRotationSmoothed+r*s),this.lastRotationAt=t,this.viewRotationSmoothed}toDegreesIfRadians(e){return typeof e!="number"||!Number.isFinite(e)?null:this.units.convertToUnit("deg",e)}distanceNm(e,t){let s=e.latitude*Math.PI/180,r=t.latitude*Math.PI/180,o=(t.latitude-e.latitude)*Math.PI/180,n=(t.longitude-e.longitude)*Math.PI/180,d=Math.sin(o/2),u=Math.sin(n/2),b=d*d+Math.cos(s)*Math.cos(r)*u*u;return 6371e3*(2*Math.atan2(Math.sqrt(b),Math.sqrt(1-b)))/1852}ngOnDestroy(){this.renderFrame&&(cancelAnimationFrame(this.renderFrame),this.renderFrame=null),this.rotationFrameTimer!==null&&(window.clearTimeout(this.rotationFrameTimer),this.rotationFrameTimer=null),this.iconRenderTimer!==null&&(window.clearTimeout(this.iconRenderTimer),this.iconRenderTimer=null);}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=JD({type:l,selectors:[["widget-ais-radar"]],viewQuery:function(t,i){t&1&&eg(i.svgRef,lt,5)(i.menuAnchorRef,ct,5)(i.menuTrigger,dt,5),t&2&&Kw(3);},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:29,vars:9,consts:[["radarSvg",""],["menuAnchor","","menuTrigger","matMenuTrigger"],["targetMenu","matMenu"],["filterMenu","matMenu"],["vesselTypeMenu","matMenu"],["kipResizeObserver","",1,"ais-radar-container",3,"kipResize"],["type","button","matMiniFab","",1,"ais-radar-mode-toggle-button",3,"click","matTooltip"],["viewBox","0 0 40 40","aria-hidden","true",1,"ais-mode-icon"],["type","button","matMiniFab","","matTooltip","Increase range","aria-label","Increase range",1,"ais-radar-range-button","ais-radar-range-plus",3,"click"],["type","button","matMiniFab","","matTooltip","Decrease range","aria-label","Decrease range",1,"ais-radar-range-button","ais-radar-range-minus",3,"click"],["type","button","matMiniFab","","matTooltip","Filter targets","aria-label","Filter targets",1,"ais-radar-range-button","ais-radar-filter-button",3,"matMenuTriggerFor"],["type","button","matMiniFab","","matTooltip","Show only collision risk targets","aria-label","No collision risk filter",1,"ais-radar-range-button","ais-radar-collision-button",3,"is-active"],["role","img","aria-label","AIS radar display",1,"ais-radar"],["type","button","aria-hidden","true","tabindex","-1",1,"ais-radar-menu-anchor",3,"matMenuTriggerFor"],[3,"closed"],["matMenuContent",""],[1,"widgetOverlay"],["stroke","currentColor","d","M10 8 L20 2 L30 8",1,"ais-mode-icon-chev"],["fill","currentColor","x","20","y","31",1,"ais-mode-icon-letter"],["fill","currentColor","d","M20 4 L34 36 L20 28 L6 36 Z",1,"ais-mode-icon-vessel"],["type","button","matMiniFab","","matTooltip","Show only collision risk targets","aria-label","No collision risk filter",1,"ais-radar-range-button","ais-radar-collision-button",3,"click"],["mat-menu-item","","type","button",1,"ais-radar-menu-item"],["mat-menu-item","","type","button",1,"ais-radar-menu-item",3,"click"],["alt","","aria-hidden","true",1,"target-menu-icon"],[1,"target-menu-label"],["mat-menu-item","","disabled","",1,"ais-filter-menu-header"],["mat-menu-item","","type","button",3,"click"],["aria-hidden","true",1,"ais-filter-check"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-menu-item","","type","button"]],template:function(t,i){if(t&1&&(Pi(0,"div",5),Qh("kipResize",function(r){return i.onResized(r)}),Pi(1,"button",6),Qh("click",function(){return i.toggleViewMode()}),_w(2,ut,4,0,":svg:svg",7)(3,mt,2,0,":svg:svg",7),ul(),Pi(4,"button",8),Qh("click",function(){return i.incrementRange()}),Pi(5,"mat-icon"),TT(6,"add"),ul()(),Pi(7,"button",9),Qh("click",function(){return i.decrementRange()}),Pi(8,"mat-icon"),TT(9,"remove"),ul()(),Pi(10,"button",10)(11,"mat-icon"),TT(12,"filter_list"),ul()(),_w(13,gt,3,2,"button",11),wd(),$h(14,"svg",12,0),Td(),$h(16,"button",13,1),ul(),Pi(19,"mat-menu",14,2),Qh("closed",function(){return i.resetTargetMenuState()}),xh(21,ft,2,0,"ng-template",15),ul(),Pi(22,"mat-menu",null,3),xh(24,St,27,5,"ng-template",15),ul(),Pi(25,"mat-menu",null,4),xh(27,bt,2,0,"ng-template",15),ul(),_w(28,yt,1,0,"div",16)),t&2){let s=Jw(20),r=Jw(23);EE(),Bh("matTooltip",i.effectiveViewMode()==="north-up"?"Change to North-Up mode":"Change to Course-Up mode"),Hh("aria-label",i.effectiveViewMode()==="north-up"?"North up mode":"Course up mode"),EE(),Mw(i.effectiveViewMode()==="north-up"?2:3),EE(8),sg("is-active",i.hasActiveFilters()),Bh("matMenuTriggerFor",r),EE(3),Mw(i.hasCollisionRiskData()?13:-1),EE(3),Bh("matMenuTriggerFor",s),EE(12),Mw(i.dashboard.isDashboardStatic()?-1:28);}},dependencies:[u,Op,Rp,yt$1,wt,Ht,R,ee,Nt,Lt,zt,mt$1],encapsulation:2})}return l})();export{Qt as WidgetAisRadarComponent};
1
+ import {g as ge$1}from'./chunk-TakPRI3t.js';import {d1 as Hj,w,du as p,C as Ff,ao as ue,bu as ut$1,G as Gi,aR as lt$1,a as G,$ as $j,v as vt$1,D as Dt,dG as rn,F as Fa,dn as ge,dH as ac,cw as z,cv as G$1,dI as cn,dJ as nc,dK as qn,dL as zn,dM as pa,J as JD,O as Op,R as Rp,y as yt$1,b as wt,cG as Ht,cH as R,cI as ee,cJ as Nt,cK as Lt,cR as zt,bg as mt$1,P as Pi,k as Qh,_ as _w,u as ul,T as TT,cn as wd,c as $h,cV as Td,cf as xh,bl as Jw,e as EE,B as Bh,an as Hh,M as Mw,s as sg,f as eg,K as Kw,aS as De,aY as xe,ab as te,aj as zm,a_ as Gp,cO as eu,aI as ms,dN as Q,h as Fw,g as qw,X as xw,Y as Aw,bp as gl,dj as Nw,d as ig,aA as gg,l as ud,m as dd,dO as fp}from'./main-F7NMHHV4.js';import {u}from'./chunk-Be5KcT7R.js';import {c}from'./chunk-CRy9Da7a.js';var K=false,Je=250,it=600*1e3,st=500,nt=15e3,rt=["atons.urn:mrn:imo:mmsi:*","shore.basestations.urn:mrn:imo:mmsi:*","vessels.urn:mrn:imo:mmsi:*","sar.urn:mrn:imo:mmsi:*"],ot=[{prefix:"atons.urn:mrn:imo:mmsi:",type:"aton"},{prefix:"shore.basestations.urn:mrn:imo:mmsi:",type:"basestation"},{prefix:"vessels.urn:mrn:imo:mmsi:",type:"vessel"},{prefix:"sar.urn:mrn:imo:mmsi:",type:"sar"}],at="self.navigation.*",et=(()=>{class l{data=w(De);destroyRef=w(xe);tracks=new Map;contextIndex=new Map;mmsiIndex=new Map;maxTargets=st;targetTtlMs=it;targetsDirty$=new te;ownShipDirty$=new te;pendingOwnShip={};_targets=vt$1([]);_ownShip=vt$1({});_hasCollisionRiskData=vt$1(false);targets=this._targets.asReadonly();ownShip=this._ownShip.asReadonly();hasCollisionRiskData=this._hasCollisionRiskData.asReadonly();getBearingTrue(e,t){if(typeof e.latitude!="number"||typeof e.longitude!="number"||typeof t.latitude!="number"||typeof t.longitude!="number")return null;let i=e.latitude*Math.PI/180,s=t.latitude*Math.PI/180,r=(t.longitude-e.longitude)*Math.PI/180,o=Math.sin(r)*Math.cos(s),n=Math.cos(i)*Math.sin(s)-Math.sin(i)*Math.cos(s)*Math.cos(r),d=Math.atan2(o,n)*180/Math.PI;return this.wrapDegrees(d)}constructor(){zm(...rt.map(t=>this.data.subscribePathTree(t))).pipe(Gp(this.destroyRef)).subscribe(t=>this.handleAisTreeUpdate(t)),this.data.subscribePathTree(at).pipe(Gp(this.destroyRef)).subscribe(t=>this.handleOwnShipTreeUpdate(t)),this.targetsDirty$.pipe(eu(Je,void 0,{leading:true,trailing:true}),Gp(this.destroyRef)).subscribe(()=>this.flushTargetsSignal()),ms(nt).pipe(Gp(this.destroyRef)).subscribe(()=>this.evictStaleTracks(Date.now())),this.ownShipDirty$.pipe(eu(Je,void 0,{leading:true,trailing:true}),Gp(this.destroyRef)).subscribe(()=>this.flushOwnShip());}handleAisTreeUpdate(e){let t=this.matchAisContext(e.path);t&&(this.applyAisUpdate({context:t.context,type:t.type,path:t.path,value:e.update.data.value,timestampMs:this.toTimestampMs(e.update.data.timestamp)}));}handleOwnShipTreeUpdate(e){if(!e.path.startsWith("self."))return;let t=e.path.slice(5);this.applyOwnShipUpdate(t,e.update.data.value);}matchAisContext(e){for(let t of ot){if(!e.startsWith(t.prefix))continue;let i=e.indexOf(".",t.prefix.length);return i===-1?null:{context:e.slice(0,i),path:e.slice(i+1),type:t.type}}return null}applyOwnShipUpdate(e,t){let i=G$1({},this.pendingOwnShip),s=this.readPositionValue(t);switch(e){case "navigation.position":s&&(i.position=s);break;case "navigation.position.latitude":{let r=this.toNumberOrUndefined(t);if(r===void 0)return;i.position=z(G$1({},i.position??{}),{latitude:r});}break;case "navigation.position.longitude":{let r=this.toNumberOrUndefined(t);if(r===void 0)return;i.position=z(G$1({},i.position??{}),{longitude:r});}break;case "navigation.headingTrue":i.headingTrue=this.toNumberOrUndefined(t);break;case "navigation.courseOverGroundTrue":i.courseOverGroundTrue=this.toNumberOrUndefined(t);break;case "navigation.speedOverGround":i.speedOverGround=this.toNumberOrUndefined(t);break;default:return}this.pendingOwnShip=i,this.ownShipDirty$.next();}flushOwnShip(){this.ownShipChanged(this._ownShip(),this.pendingOwnShip)&&this._ownShip.set(this.pendingOwnShip);}ownShipChanged(e,t){return e.headingTrue!==t.headingTrue||e.courseOverGroundTrue!==t.courseOverGroundTrue||e.speedOverGround!==t.speedOverGround||e.position?.latitude!==t.position?.latitude||e.position?.longitude!==t.position?.longitude}applyAisUpdate(e){let t=this.resolveTrack(e);if(t){switch(t.lastUpdateAt=e.timestampMs,e.path.startsWith("navigation.closestApproach.")&&this.isVesselLike(t)&&!t.closestApproach&&(t.closestApproach={}),e.path){case "mmsi":this.applyMmsi(t,e.value);break;case "name":t.name=this.toStringOrUndefined(e.value);break;case "communication.callsignVhf":this.isVesselLike(t)&&(t.callsign=this.toStringOrUndefined(e.value));break;case "navigation.destination":case "navigation.destination.commonName":this.isVesselLike(t)&&(t.destination=this.toStringOrUndefined(e.value));break;case "navigation.destination.eta":this.isVesselLike(t)&&(t.eta=this.toStringOrUndefined(e.value));break;case "design.beam":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{beam:this.toNumberOrUndefined(e.value)}));break;case "design.length.overall":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{overall:this.toNumberOrUndefined(e.value)})}));break;case "design.length.hull":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{hull:this.toNumberOrUndefined(e.value)})}));break;case "design.length.waterline":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{length:z(G$1({},t.design?.length??{}),{waterline:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.maximum":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{maximum:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.minimum":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{minimum:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.current":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{current:this.toNumberOrUndefined(e.value)})}));break;case "design.draft.canoe":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{draft:z(G$1({},t.design?.draft??{}),{canoe:this.toNumberOrUndefined(e.value)})}));break;case "registrations.imo":this.isVesselLike(t)&&(t.imo=this.toStringOrUndefined(e.value));break;case "navigation.courseOverGroundTrue":this.isVesselLike(t)&&(t.courseOverGroundTrue=this.toNumberOrUndefined(e.value));break;case "navigation.headingTrue":this.isVesselLike(t)&&(t.headingTrue=this.toNumberOrUndefined(e.value));break;case "navigation.rateOfTurn":this.isVesselLike(t)&&(t.rateOfTurn=this.toNumberOrUndefined(e.value));break;case "navigation.specialManeuver":this.isVesselLike(t)&&(t.specialManeuver=this.toStringOrUndefined(e.value));break;case "navigation.speedOverGround":this.isVesselLike(t)&&(t.speedOverGround=this.toNumberOrUndefined(e.value));break;case "navigation.state":this.isVesselLike(t)&&(t.navState=this.toStringOrUndefined(e.value));break;case "sensors.ais.class":t.ais.class=this.normalizeAisClass(e.value);break;case "sensors.ais.status":{let i=this.normalizeAisStatus(e.value);if(!i)break;if(i==="remove"){this.removeTrack(t);return}t.ais.status=i;}break;case "sensors.ais.fromBow":this.isVesselLike(t)&&(t.fromBow=this.toNumberOrUndefined(e.value));break;case "sensors.ais.fromCenter":this.isVesselLike(t)&&(t.fromCenter=this.toNumberOrUndefined(e.value));break;case "navigation.position.latitude":{let i=this.toNumberOrUndefined(e.value);if(i===void 0)break;t.position=z(G$1({},t.position??{}),{latitude:i}),t.lastPositionAt=e.timestampMs;}break;case "navigation.position.longitude":{let i=this.toNumberOrUndefined(e.value);if(i===void 0)break;t.position=z(G$1({},t.position??{}),{longitude:i}),t.lastPositionAt=e.timestampMs;}break;case "navigation.position.altitude":{let i=this.toNumberOrUndefined(e.value);t.position&&(t.position=z(G$1({},t.position),{altitude:i}));}break;case "navigation.position":{let i=this.readPositionValue(e.value);i&&(t.position=i,t.lastPositionAt=e.timestampMs);}break;case "atonType.id":this.isAton(t)&&(t.typeId=this.toNumberOrUndefined(e.value));break;case "atonType.name":this.isAton(t)&&(t.typeName=this.toStringOrUndefined(e.value));break;case "virtual":this.isAton(t)&&(t.virtual=!!e.value);break;case "offPosition":this.isAton(t)&&(t.offPosition=!!e.value);break;case "design.aisShipType.id":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{aisShipType:z(G$1({},t.design?.aisShipType??{}),{id:this.toNumberOrUndefined(e.value)})}));break;case "design.aisShipType.name":this.isVesselLike(t)&&(t.design=z(G$1({},t.design??{}),{aisShipType:z(G$1({},t.design?.aisShipType??{}),{name:this.toStringOrUndefined(e.value)})}));break;case "navigation.closestApproach.distance":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.distance=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.timeTo":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.timeTo=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.range":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.range=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.bearing":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.bearing=this.toNumberOrUndefined(e.value));break;case "navigation.closestApproach.collisionRiskRating":this.isVesselLike(t)&&t.closestApproach&&(t.closestApproach.collisionRiskRating=this.toNumberOrUndefined(e.value));break}this.updateTargetsSignal();}}resolveTrack(e){let t=this.contextIndex.get(e.context),i=e.timestampMs,s=t?this.tracks.get(t):null;if(s)return s;let r=this.createTrack(e.context,e.type,i,void 0);return this.contextIndex.set(e.context,r.id),r}createTrack(e,t,i,s){let r=this.buildTrackId(s??e),o=this.buildBaseTarget(e,t,i,s,r),n;switch(t){case "vessel":n=z(G$1({},o),{type:"vessel",closestApproach:{}});break;case "sar":n=z(G$1({},o),{type:"sar",closestApproach:{}});break;case "aton":n=z(G$1({},o),{type:"aton"});break;default:n=z(G$1({},o),{type:"basestation"});break}return this.tracks.set(n.id,n),s&&this.addMmsiIndex(s,n.id),this.enforceTargetCap(),this.updateTargetsSignal(),n}buildTrackId(e){if(!this.tracks.has(e))return e;let t=1;for(;this.tracks.has(`${e}-${t}`);)t+=1;return `${e}-${t}`}applyMmsi(e,t){let i=this.toStringOrUndefined(t);if(!i)return;let s=this.getTracksByMmsi(i).filter(r=>r.id!==e.id);s.length&&(this.markConflict(i),K),e.mmsi&&e.mmsi!==i&&this.removeMmsiIndex(e.mmsi,e.id),e.mmsi=i,this.addMmsiIndex(i,e.id);}removeTrack(e){this.tracks.delete(e.id),e.mmsi&&this.removeMmsiIndex(e.mmsi,e.id);for(let[t,i]of this.contextIndex.entries())i===e.id&&this.contextIndex.delete(t);this.updateTargetsSignal();}updateTargetsSignal(){this.targetsDirty$.next();}enforceTargetCap(){for(;this.tracks.size>this.maxTargets;){let e=null;for(let t of this.tracks.values())(!e||t.lastUpdateAt<e.lastUpdateAt)&&(e=t);if(!e)break;this.removeTrack(e);}}evictStaleTracks(e){let t=e-this.targetTtlMs,i=[];for(let s of this.tracks.values())s.lastUpdateAt<t&&i.push(s);for(let s of i)this.removeTrack(s);this.enforceTargetCap();}flushTargetsSignal(){let e=Array.from(this.tracks.values()).filter(i=>!!i.mmsi||!!i.position),t=e.some(i=>{if(!this.isVesselLike(i))return false;let s=i.closestApproach??{};return Object.prototype.hasOwnProperty.call(s,"collisionRiskRating")});this._targets.set(e),this._hasCollisionRiskData.set(t);}getTracksByMmsi(e){let t=this.mmsiIndex.get(e);return t?Array.from(t).map(i=>this.tracks.get(i)).filter(i=>!!i):[]}addMmsiIndex(e,t){this.mmsiIndex.has(e)||this.mmsiIndex.set(e,new Set),this.mmsiIndex.get(e).add(t);}removeMmsiIndex(e,t){let i=this.mmsiIndex.get(e);i&&(i.delete(t),i.size||this.mmsiIndex.delete(e));}markConflict(e){let t=this.getTracksByMmsi(e);for(let i of t)i.conflicted=true;}normalizeAisClass(e){let t=typeof e=="string"?e.toUpperCase():"";if(t==="A")return "A";if(t==="B")return "B"}normalizeAisStatus(e){if(e==null)return;let t=String(e).toLowerCase();if(t==="unconfirmed"||t==="confirmed"||t==="lost"||t==="remove")return t}toTimestampMs(e){if(!e)return Date.now();let t=e instanceof Date?e.getTime():Date.parse(e);return Number.isFinite(t)?t:Date.now()}toNumberOrUndefined(e){let t=Number(e);return Number.isFinite(t)?t:void 0}toStringOrUndefined(e){if(e==null)return;let t=String(e).trim();return t.length?t:void 0}wrapDegrees(e){let t=e%360;return t<0?t+360:t}buildBaseTarget(e,t,i,s,r){return {id:r,context:e,type:t,ais:{class:void 0,status:"unconfirmed"},conflicted:false,mmsi:s,position:void 0,lastUpdateAt:i,lastPositionAt:void 0}}isVesselLike(e){return e.type==="vessel"||e.type==="sar"}isAton(e){return e.type==="aton"}readPositionValue(e){if(!e||typeof e!="object")return;let t=this.toNumberOrUndefined(e.latitude),i=this.toNumberOrUndefined(e.longitude);if(t===void 0||i===void 0)return;let s=this.toNumberOrUndefined(e.altitude);return {latitude:t,longitude:i,altitude:s}}static \u0275fac=function(t){return new(t||l)};static \u0275prov=Q({token:l,factory:l.\u0275fac,providedIn:"root"})}return l})();var lt=["radarSvg"],ct=["menuAnchor"],dt=["menuTrigger"],ht=(l,I)=>I.id;function ut(l,I){l&1&&(wd(),Pi(0,"svg",7),$h(1,"path",17),Pi(2,"text",18),TT(3,"N"),ul()());}function mt(l,I){l&1&&(wd(),Pi(0,"svg",7),$h(1,"path",19),ul());}function gt(l,I){if(l&1){let e=Fw();Pi(0,"button",20),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("noCollisionRisk"))}),Pi(1,"mat-icon"),TT(2,"security"),ul()();}if(l&2){let e=qw();sg("is-active",e.isFilterEnabled("noCollisionRisk"));}}function pt(l,I){if(l&1){let e=Fw();Pi(0,"button",22),Qh("click",function(){let i=ud(e).$implicit,s=qw(2);return dd(s.onMenuItemSelect(i))}),$h(1,"img",23),Pi(2,"span",24),TT(3),ul()();}if(l&2){let e=I.$implicit;EE(),ig("visibility",e.iconHref?"visible":"hidden"),Hh("src",e.iconHref??null,fp),EE(2),gg(e.label);}}function ft(l,I){if(l&1&&xw(0,pt,4,4,"button",21,ht),l&2){let e=qw();Aw(e.menuItems());}}function St(l,I){if(l&1){let e=Fw();Pi(0,"button",25),TT(1,"Filter Targets"),ul(),Pi(2,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("anchoredMoored"))}),Pi(3,"mat-icon",27),TT(4),ul(),Pi(5,"span"),TT(6,"Anchored/Moored"),ul()(),Pi(7,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allAton"))}),Pi(8,"mat-icon",27),TT(9),ul(),Pi(10,"span"),TT(11,"All AtoN"),ul()(),Pi(12,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allButSar"))}),Pi(13,"mat-icon",27),TT(14),ul(),Pi(15,"span"),TT(16,"All but SAR"),ul()(),Pi(17,"button",26),Qh("click",function(){ud(e);let i=qw();return dd(i.toggleFilter("allVessels"))}),Pi(18,"mat-icon",27),TT(19),ul(),Pi(20,"span"),TT(21,"All Vessels"),ul()(),Pi(22,"button",28)(23,"span"),TT(24,"Vessel Type"),ul(),Pi(25,"mat-icon"),TT(26,"chevron_right"),ul()();}if(l&2){let e=qw(),t=Jw(26);EE(4),gl(" ",e.isFilterEnabled("anchoredMoored")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allAton")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allButSar")?"check_box":"check_box_outline_blank"," "),EE(5),gl(" ",e.isFilterEnabled("allVessels")?"check_box":"check_box_outline_blank"," "),EE(3),Bh("matMenuTriggerFor",t);}}function vt(l,I){if(l&1){let e=Fw();Pi(0,"button",26),Qh("click",function(){let i=ud(e).$implicit,s=qw(2);return dd(s.toggleVesselTypeFilter(i))}),Pi(1,"mat-icon",27),TT(2),ul(),Pi(3,"span"),TT(4),ul()();}if(l&2){let e=I.$implicit,t=qw(2);EE(2),gl(" ",t.isVesselTypeFilterEnabled(e)?"check_box":"check_box_outline_blank"," "),EE(2),gg(t.formatVesselTypeLabel(e));}}function bt(l,I){if(l&1&&xw(0,vt,5,2,"button",29,Nw),l&2){let e=qw();Aw(e.vesselTypeFilters);}}function yt(l,I){l&1&&$h(0,"div",16);}var Qt=(()=>{class l{static TARGET_ICON_SIZE_PX=16;static OWN_SHIP_ICON_SIZE_PX=84;static HIT_RADIUS_PX=28;static ICON_RENDER_DEBOUNCE_MS=50;static ROTATION_SETTLE_DEADBAND_DEG=1;static ROTATION_ONLY_FRAME_MS=33;id=Hj.required();type=Hj.required();theme=Hj.required();runtime=w(p);ais=w(et);dialog=w(Ff);ngZone=w(ue);units=w(ut$1);settings=w(Gi);toast=w(lt$1);dashboard=w(G);static DEFAULT_CONFIG={filterSelfPaths:false,enableTimeout:false,dataTimeout:5,ais:{filters:{anchoredMoored:false,noCollisionRisk:false,allAton:false,allButSar:false,allVessels:false,vesselTypes:[]},viewMode:"course-up",rangeRings:[1,3,6,12,24,48],rangeIndex:"3",showCogVectors:true,cogVectorsMinutes:10,showLostTargets:true,showUnconfirmedTargets:true,showSelf:true},color:"grey"};svgRef=$j.required("radarSvg");menuAnchorRef=$j.required("menuAnchor");menuTrigger=$j.required("menuTrigger");hostSize=vt$1(null);renderState=null;selectedId=vt$1(null);localViewMode=vt$1(null);localRangeIndex=vt$1(null);effectiveViewMode=Dt(()=>this.localViewMode()??this.runtime.options()?.ais?.viewMode??"course-up");effectiveRangeIndex=Dt(()=>{let e=this.resolveRangeIndex(this.runtime.options()?.ais),t=this.runtime.options()?.ais?.rangeRings??[3,6,12,24,48],i=Math.max(0,t.length-1),s=this.localRangeIndex()??e;return Math.min(Math.max(s,0),i)});svg;root;ringsLayer;rotationGroup;vectorsLayer;targetsLayer;selectedLayer;ownShipLayer;viewRotationSmoothed=null;lastRotationAt=null;lastViewRotation=0;hasRenderedOnce=false;renderFrame=null;rotationFrameTimer=null;iconRenderTimer=null;iconCache=new Map;targetCache=new Map;lastOriginKey=null;ringCache=null;ownShipIconHref=null;menuItems=vt$1([]);menuPoint=null;lastRenderTargets=[];lastRenderScale=1;lastRenderSize=null;hitRadiusPx=l.HIT_RADIUS_PX;lastFiltersSignature=null;lastRenderSignature=null;ownShipVectorCache=null;filterState=vt$1({anchoredMoored:false,noCollisionRisk:false,allAton:false,allButSar:false,allVessels:false,vesselTypes:new Set});vesselTypeFilters=rn.filter(e=>e!=="vessel/self"&&e!=="vessel/unknown"&&e!=="vessel/spare");hasActiveFilters=Dt(()=>{let e=this.filterState();return e.anchoredMoored||e.allAton||e.allButSar||e.allVessels||e.vesselTypes.size>0});hasCollisionRiskData=this.ais.hasCollisionRiskData;constructor(){this.warnIfRemoteDataDisabled(),this.loadOwnShipIcon(),Fa(()=>{let e=this.hostSize(),t=this.runtime.options(),i=this.theme(),s=this.ais.targets(),r=this.ais.ownShip();!e||!t||!i||(ge(()=>{this.renderState={size:e,cfg:t,theme:i,targets:s,ownShip:r},this.syncFiltersFromConfig(t);}),this.scheduleRender());}),Fa(()=>{this.localViewMode(),this.localRangeIndex(),this.selectedId(),this.filterState(),ge(()=>{this.scheduleRender();});});}warnIfRemoteDataDisabled(){this.settings.signalKSubscribeAll||this.toast.show('AIS data is disabled in your connection. To see radar targets, go to Settings -> Options -> Connectivity, enable "Subscribe to remote sources messages", then reconnect.',0,false,"warn");}loadOwnShipIcon(){this.ngZone.runOutsideAngular(()=>{ac().then(e=>{this.ownShipIconHref=e,this.scheduleRenderDebounced();});});}ngAfterViewInit(){this.initSvg(),this.scheduleRender();}onResized(e){this.hostSize.set({width:e.width,height:e.height});}initSvg(){this.svg=ge$1(this.svgRef().nativeElement),this.svg.attr("class","ais-radar"),this.root=this.svg.append("g").attr("class","radar-root"),this.ringsLayer=this.root.append("g").attr("class","radar-rings"),this.rotationGroup=this.root.append("g").attr("class","radar-rotation"),this.vectorsLayer=this.rotationGroup.append("g").attr("class","radar-vectors"),this.targetsLayer=this.rotationGroup.append("g").attr("class","radar-targets"),this.selectedLayer=this.rotationGroup.append("g").attr("class","radar-selected"),this.ownShipLayer=this.root.append("g").attr("class","radar-ownship-layer"),this.svg.on("click",()=>{this.selectedId.set(null),this.closeTargetMenu();});}scheduleRender(){this.renderFrame===null&&this.ngZone.runOutsideAngular(()=>{this.renderFrame=requestAnimationFrame(()=>{this.renderFrame=null,this.render();});});}scheduleRenderDebounced(){this.iconRenderTimer===null&&this.ngZone.runOutsideAngular(()=>{this.iconRenderTimer=window.setTimeout(()=>{this.iconRenderTimer=null,this.scheduleRender();},l.ICON_RENDER_DEBOUNCE_MS);});}scheduleRotationOnlyRender(){this.rotationFrameTimer!==null||this.renderFrame!==null||this.ngZone.runOutsideAngular(()=>{this.rotationFrameTimer=window.setTimeout(()=>{this.rotationFrameTimer=null,this.scheduleRender();},l.ROTATION_ONLY_FRAME_MS);});}render(){if(!this.renderState||!this.svg||!this.root||!this.rotationGroup)return;let{size:e,cfg:t,theme:i,targets:s,ownShip:r}=this.renderState,o=Math.max(1,e.width),n=Math.max(1,e.height),d=Math.min(o,n)/2,u=(Math.min(o,n)-35)/Math.min(o,n),b=Math.hypot(o,n)/2/u,c$1=t.ais??{},T=c$1.rangeRings?.length?c$1.rangeRings:[3,6,12,24,48],x=this.effectiveRangeIndex(),a=T[x]??T[0],M=this.resolveRingCountForRange(a),S=this.localViewMode()??c$1.viewMode??"course-up",_=this.toDegreesIfRadians(r.courseOverGroundTrue),C=this.toDegreesIfRadians(r.headingTrue),V=_!==null||C!==null,m=S==="course-up"?_??C??0:0,B=this.viewRotationSmoothed!==null&&Math.abs(this.shortestAngleDelta(this.viewRotationSmoothed,m))<=l.ROTATION_SETTLE_DEADBAND_DEG,$=this.buildFilterStateSignature(this.filterState()),U=r.position?`${r.position.latitude},${r.position.longitude}`:"none",F={sizeKey:`${o}x${n}`,viewMode:S,rangeIndex:x,rangesKey:T.join(","),showSelf:c$1.showSelf??true,showCogVectors:c$1.showCogVectors??true,showLostTargets:c$1.showLostTargets??true,showUnconfirmedTargets:c$1.showUnconfirmedTargets??true,filtersKey:$,selectedId:this.selectedId(),targetsRef:s,ownPosKey:U,themeRef:i,color:t.color},L=!this.lastRenderSignature||!this.signaturesEqual(this.lastRenderSignature,F);if(!L&&B&&this.hasRenderedOnce)return;this.lastRenderSignature=F;let v=S==="course-up"&&V?this.smoothRotation(m):0,te=S==="course-up"?Math.abs(this.shortestAngleDelta(v,m)):0;this.lastViewRotation=v,this.svg.attr("viewBox",`${-o/2} ${-n/2} ${o} ${n}`),this.root.attr("transform",`scale(${u})`),this.rotationGroup.attr("transform",`rotate(${this.wrapDegrees(-v)})`);let me=this.wrapDegrees((_??C??0)-v);if(L){let ie=c(t.color??"contrast",i).dim;this.renderRings(M,a,d,b,v,u,c$1.showSelf??true,me,ie);}if(this.ownShipLayer?.select("g.radar-ownship").attr("transform",`rotate(${me})`),r.position&&this.hasValidPosition(r.position)&&(this.renderOwnShipVector(r,a,d,v,c$1),L)){let ie=b/d*a,W=this.buildTargets(s,r.position,a,ie,d,0,c$1);this.lastRenderTargets=W,this.lastRenderScale=u,this.lastRenderSize=e,this.renderTargetVectors(W,a,d,0,c$1),this.renderTargets(W,u),this.renderSelected(W,u);}this.raiseOwnshipAndVector(),this.hasRenderedOnce=true,te>l.ROTATION_SETTLE_DEADBAND_DEG&&(L?this.scheduleRender():this.scheduleRotationOnlyRender());}signaturesEqual(e,t){return e.sizeKey===t.sizeKey&&e.viewMode===t.viewMode&&e.rangeIndex===t.rangeIndex&&e.rangesKey===t.rangesKey&&e.showSelf===t.showSelf&&e.showCogVectors===t.showCogVectors&&e.showLostTargets===t.showLostTargets&&e.showUnconfirmedTargets===t.showUnconfirmedTargets&&e.filtersKey===t.filtersKey&&e.selectedId===t.selectedId&&e.targetsRef===t.targetsRef&&e.ownPosKey===t.ownPosKey&&e.themeRef===t.themeRef&&e.color===t.color}renderRings(e,t,i,s,r,o,n,d,u){if(!this.ringsLayer)return;let b=`${t.toFixed(3)}|${i.toFixed(3)}|${s.toFixed(3)}|${e}`;if(!this.ringCache||this.ringCache.key!==b){let m=t/Math.max(1,e),B=s/i*t,$=[];for(let v=m;v<=B+1e-6;v+=m)$.push(v);let U=$.map(v=>({value:v,radius:v/t*i})).filter(v=>v.radius<=s+1e-6),F=20,L=U.flatMap(v=>[{key:`${v.value}-top`,value:v.value,x:0,y:-v.radius+F},{key:`${v.value}-bottom`,value:v.value,x:0,y:v.radius-F}]);this.ringCache={key:b,rings:U,labels:L};}let c=this.ringCache;if(!c)return;let T=c.rings,x=this.ringsLayer.selectAll("circle.ring").data(T,m=>m.value.toString());x.enter().append("circle").attr("class","ring").merge(x).attr("r",m=>m.radius).attr("stroke",u),x.exit().remove();let a=c.labels,M=this.ringsLayer.selectAll("text.ring-label").data(a,m=>m.key);M.enter().append("text").attr("class","ring-label").merge(M).attr("x",m=>m.x).attr("y",m=>m.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(m=>`${m.value}`),M.exit().remove();let S=this.ringsLayer.selectAll("circle.radar-center").data(n?[]:[{r:Math.max(3,i*.01)}]);S.enter().append("circle").attr("class","radar-center").merge(S).attr("cx",0).attr("cy",0).attr("r",m=>m.r).attr("fill",u),S.exit().remove();let _=this.ownShipLayer.selectAll("g.radar-ownship").data(n?[{size:this.resolveOwnShipBaseSize(o)}]:[]),C=_.enter().append("g").attr("class","radar-ownship");C.append("image").attr("class","ownship-icon").attr("href",this.ownShipIconHref??null).attr("xlink:href",this.ownShipIconHref??null);let V=C.merge(_);V.attr("transform",`rotate(${d})`),V.select("image.ownship-icon").attr("href",this.ownShipIconHref??null).attr("xlink:href",this.ownShipIconHref??null).attr("display",this.ownShipIconHref?null:"none").attr("width",m=>m.size).attr("height",m=>m.size).attr("x",m=>-m.size/2).attr("y",m=>-m.size/2),_.exit().remove();}toggleViewMode(){let e=this.localViewMode()??this.runtime.options()?.ais?.viewMode??"course-up";this.localViewMode.set(e==="course-up"?"north-up":"course-up");}incrementRange(){this.localRangeIndex.set(Math.max(this.effectiveRangeIndex()-1,0));}decrementRange(){let e=this.runtime.options()?.ais?.rangeRings??[3,6,12,24,48],t=Math.max(0,e.length-1);this.localRangeIndex.set(Math.min(this.effectiveRangeIndex()+1,t));}toggleFilter(e){this.filterState.update(t=>z(G$1({},t),{[e]:!t[e]}));}toggleVesselTypeFilter(e){this.filterState.update(t=>{let i=new Set(t.vesselTypes);return i.has(e)?i.delete(e):i.add(e),z(G$1({},t),{vesselTypes:i})});}isFilterEnabled(e){return this.filterState()[e]}isVesselTypeFilterEnabled(e){return this.filterState().vesselTypes.has(e)}formatVesselTypeLabel(e){let t=e.replace("vessel/","");switch(t){case "pleasurecraft":return "Pleasure Craft";case "highspeed":return "High Speed";case "sar":return "SAR";case "law":return "Law Enforcement";default:return `${t.charAt(0).toUpperCase()}${t.slice(1)}`}}syncFiltersFromConfig(e){let t=e.ais?.filters;if(!t)return;let i=this.buildFilterSignature(t);i!==this.lastFiltersSignature&&(this.lastFiltersSignature=i,this.filterState.set({anchoredMoored:t.anchoredMoored??false,noCollisionRisk:t.noCollisionRisk??false,allAton:t.allAton??false,allButSar:t.allButSar??false,allVessels:t.allVessels??false,vesselTypes:new Set(t.vesselTypes??[])}));}buildFilterSignature(e){let t=[...e?.vesselTypes??[]].sort();return JSON.stringify({anchoredMoored:e?.anchoredMoored??false,noCollisionRisk:e?.noCollisionRisk??false,allAton:e?.allAton??false,allButSar:e?.allButSar??false,allVessels:e?.allVessels??false,vesselTypes:t})}buildFilterStateSignature(e){let t=[...e.vesselTypes].sort();return JSON.stringify({anchoredMoored:e.anchoredMoored,noCollisionRisk:e.noCollisionRisk,allAton:e.allAton,allButSar:e.allButSar,allVessels:e.allVessels,vesselTypes:t})}resolveRingCountForRange(e){return [3].find(i=>this.isNiceStep(e/i))??4}isNiceStep(e){return [.5,1,2,2.5,3,4,5,6,8,10,12,15,20,25].some(i=>Math.abs(e-i)<1e-6)}resolveRangeIndex(e){return e?Number(e.rangeIndex):0}buildTargets(e,t,i,s,r,o,n){let d=n.showLostTargets??true,u=n.showUnconfirmedTargets??true,b=`${t.latitude?.toFixed(6)}|${t.longitude?.toFixed(6)}`;this.lastOriginKey!==b&&(this.targetCache.clear(),this.lastOriginKey=b);let c=new Set;for(let a of e)c.add(a.id);for(let a of this.targetCache.keys())c.has(a)||this.targetCache.delete(a);for(let a of this.iconCache.keys())c.has(a)||this.iconCache.delete(a);let T=[];for(let a of e)a.ais.status==="remove"&&(this.targetCache.delete(a.id),this.iconCache.delete(a.id),this.selectedId()===a.id&&this.selectedId.set(null));let x=e.filter(a=>a.ais.status==="remove"||a.ais.status==="lost"&&!d||a.ais.status==="unconfirmed"&&!u||!a.position||!this.hasValidPosition(a.position)?false:!this.shouldFilterTarget(a));for(let a of x){let M=this.buildTrackSignature(a),S=this.targetCache.get(a.id);if(!S||S.signature!==M){let F=this.distanceNm(t,a.position),L=this.ais.getBearingTrue(t,a.position)??0,v=this.toDegreesIfRadians(this.isVesselLike(a)?a.headingTrue:null),te=this.toDegreesIfRadians(this.isVesselLike(a)?a.courseOverGroundTrue:null);S={signature:M,distanceNm:F,bearing:L,trackHeading:v,trackCog:te},this.targetCache.set(a.id,S);}if(S.distanceNm>s)continue;let{href:_,scale:C}=this.resolveIconCached(a),V=this.wrapDegrees(S.bearing-o),{x:m,y:B}=this.polarToCartesian(V,S.distanceNm,i,r),$=a.type==="aton"||a.type==="basestation"?0:this.wrapDegrees((S.trackHeading??S.trackCog??0)-o),U=this.buildClassName({id:a.id,status:a.ais.status,aisClass:a.ais.class,type:a.type,navState:this.isVesselLike(a)?a.navState:void 0});T.push({id:a.id,raw:a,x:m,y:B,heading:$,status:a.ais.status,aisClass:a.ais.class,type:a.type,iconHref:_,iconScale:C,navState:this.isVesselLike(a)?a.navState:void 0,sog:this.isVesselLike(a)?a.speedOverGround:void 0,cog:S.trackCog??null,className:U});}return T}renderTargetVectors(e,t,i,s,r){if(!this.vectorsLayer)return;let o=r.showCogVectors??true,n=Math.max(6,i*.04),d=(r.cogVectorsMinutes??5)*60,u=n*.8,b=[];for(let c of e)if(this.isVesselLike(c.raw)&&!this.isStationaryNavState(c.raw.navState)&&o&&typeof c.sog=="number"&&typeof c.cog=="number"){let T=this.wrapDegrees(c.cog-s),x=this.offsetPoint(c.x,c.y,T,u),a=c.sog*d/1852,M=Math.max(0,a/t*i-u);if(M<=0)continue;let S=this.offsetPoint(x.x,x.y,T,M),_=this.resolveTargetVectorStroke(c.raw);b.push({id:c.id,x1:x.x,y1:x.y,x2:S.x,y2:S.y,className:c.className,stroke:_});}this.renderVectorLines(this.vectorsLayer,"motion-vector",b);}renderOwnShipVector(e,t,i,s,r){if(!this.ownShipLayer)return;let o=Math.max(6,i*.04),n=(r.cogVectorsMinutes??5)*60,d=o*.8,u=[];if(!(r.showSelf??true)){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let c=this.toDegreesIfRadians(e.courseOverGroundTrue),T=e.speedOverGround;if(c===null||typeof T!="number"){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let x=T*n/1852,a=Math.max(0,x/t*i-d);if(a<=0){this.ownShipVectorCache=null,this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);return}let M=[c.toFixed(6),T.toFixed(6),t.toFixed(6),i.toFixed(6),n,d.toFixed(6)].join("|");if(!this.ownShipVectorCache||this.ownShipVectorCache.key!==M){let C=this.wrapDegrees(c),V=this.offsetPoint(0,0,C,d),m=this.offsetPoint(V.x,V.y,C,a);this.ownShipVectorCache={key:M,tipX:V.x,tipY:V.y,endX:m.x,endY:m.y};}let S=this.rotatePoint(this.ownShipVectorCache.tipX,this.ownShipVectorCache.tipY,-s),_=this.rotatePoint(this.ownShipVectorCache.endX,this.ownShipVectorCache.endY,-s);u.push({id:"ownship",x1:S.x,y1:S.y,x2:_.x,y2:_.y,className:"ownship-vector",stroke:"var(--kip-orange-color)"}),this.renderVectorLines(this.ownShipLayer,"ownship-vector",u);}rotatePoint(e,t,i){let s=i*Math.PI/180,r=Math.cos(s),o=Math.sin(s);return {x:e*r-t*o,y:e*o+t*r}}renderVectorLines(e,t,i){let s=e.selectAll(`line.${t}`).data(i,o=>o.id);s.enter().append("line").attr("class",o=>`${t} ${o.className}`).merge(s).attr("x1",o=>o.x1).attr("y1",o=>o.y1).attr("x2",o=>o.x2).attr("y2",o=>o.y2).style("stroke",o=>o.stroke??"#50505f").style("stroke-width",2).style("opacity",1).style("stroke-dasharray","15, 7"),s.exit().remove();let r=e.selectAll(`circle.${t}-tip`).data(i,o=>o.id);r.enter().append("circle").attr("class",o=>`${t}-tip ${o.className}`).merge(r).attr("cx",o=>o.x2).attr("cy",o=>o.y2).attr("r",2.5).style("fill",o=>o.stroke??"#50505f").style("stroke",o=>o.stroke??"#50505f").style("stroke-width",2).style("opacity",1).style("stroke-dasharray","15, 7"),r.exit().remove();}renderTargets(e,t){if(!this.targetsLayer)return;let i=this.resolveTargetBaseSize(t),s=this.targetsLayer.selectAll("g.target").data(e,n=>n.id),r=s.enter().append("g").on("click",(n,d)=>{n.stopPropagation(),this.handleTargetClick(n,d);});r.append("image").attr("class","target-icon"),r.append("title");let o=r.merge(s);o.attr("transform",n=>`translate(${n.x}, ${n.y}) rotate(${n.heading})`).attr("class",n=>`target ${n.className}`),o.select("image.target-icon").attr("href",n=>n.iconHref??null).attr("xlink:href",n=>n.iconHref??null).attr("display",n=>n.iconHref?null:"none").attr("width",n=>i*n.iconScale).attr("height",n=>i*n.iconScale).attr("x",n=>-(i*n.iconScale)/2).attr("y",n=>-(i*n.iconScale)/2),o.select("title").text(n=>`${n.raw.name??n.raw.mmsi??"AIS Target"}`),s.exit().remove();}renderSelected(e,t){if(!this.selectedLayer)return;let i=e.filter(u=>u.id===this.selectedId()),s=this.resolveTargetBaseSize(t),r=s*1.4,o=Math.min(r,Math.max(4,s*.6)),n=this.buildCornerBoxPath(r,o),d=this.selectedLayer.selectAll("path.selected-ring").data(i,u=>u.id);d.enter().append("path").attr("class","selected-ring").merge(d).attr("transform",u=>`translate(${u.x}, ${u.y})`).attr("d",n),d.exit().remove();}resolveTargetBaseSize(e){let t=Math.max(.2,e);return l.TARGET_ICON_SIZE_PX/t}resolveOwnShipBaseSize(e){let t=Math.max(.2,e);return l.OWN_SHIP_ICON_SIZE_PX/t}raiseOwnshipAndVector(){this.ownShipLayer?.raise();}onMenuItemSelect(e){this.openTargetDialog(e.target,e.iconHref),this.selectedId.set(null),this.closeTargetMenu();}handleTargetClick(e,t){let i=this.resolveMenuItems(e,t);if(i.length<=1){this.openTargetDialog(t.raw,t.iconHref);return}this.menuItems.set(i),this.menuPoint=this.resolveMenuPoint(e),this.positionMenuAnchor(),this.menuTrigger().openMenu();}openTargetDialog(e,t){this.selectedId.set(e.id);let i=this.snapshotAisTrack(e);this.dialog.openAisDetailDialog({title:this.buildTargetTitle(i),iconHref:t??void 0,component:"ais-target",componentType:cn,payload:{target:i}}).subscribe();}snapshotAisTrack(e){return structuredClone(e)}resolveMenuItems(e,t){return this.findTargetsNearEvent(e,t).map(s=>({id:s.id,label:this.buildTargetMenuLabel(s.raw),iconHref:s.iconHref,target:s.raw}))}findTargetsNearEvent(e,t){let i=this.lastRenderTargets.length?this.lastRenderTargets:[t],s=this.eventToRadarPoint(e);if(!s)return [t];let r=this.hitRadiusPx/this.lastRenderScale,o=i.map((n,d)=>{let u=n.x-s.x,b=n.y-s.y,c=Math.hypot(u,b);return {candidate:n,distance:c,index:d}}).filter(n=>n.distance<=r).sort((n,d)=>n.distance-d.distance||n.index-d.index).map(n=>n.candidate);return o.length?o:[t]}eventToRadarPoint(e){if(!this.lastRenderSize)return null;let s=this.svgRef().nativeElement.getBoundingClientRect(),r=e.clientX-s.left,o=e.clientY-s.top,n=(r-s.width/2)/this.lastRenderScale,d=(o-s.height/2)/this.lastRenderScale,u=this.lastViewRotation*Math.PI/180,b=Math.cos(u),c=Math.sin(u);return {x:n*b-d*c,y:n*c+d*b}}resolveMenuPoint(e){let t=this.svgRef().nativeElement.closest(".ais-radar-container");if(!t)return null;let i=t.getBoundingClientRect();return {x:e.clientX-i.left,y:e.clientY-i.top}}positionMenuAnchor(){let e=this.menuAnchorRef().nativeElement;this.menuPoint&&(e.style.left=`${this.menuPoint.x}px`,e.style.top=`${this.menuPoint.y}px`);}closeTargetMenu(){this.resetTargetMenuState(),this.menuTrigger().menuOpen&&this.menuTrigger().closeMenu();}resetTargetMenuState(){this.menuItems.set([]),this.menuPoint=null;}buildTargetMenuLabel(e){return this.isAton(e)&&e.typeName?e.typeName:e.name??e.mmsi??"AIS Target"}buildTargetTitle(e){let t=this.isAton(e)&&e.typeName?e.typeName:e.name??e.type??"AIS Target",i=e.ais.status;return i==="unconfirmed"||i==="lost"||i==="remove"?`${t} - ${i}`:t}resolveIconCached(e){let t=this.buildIconSignature(e),i=this.iconCache.get(e.id);if(i&&i.signature===t)return i.icon;let s=this.resolveIconScale(e.type),r={href:i?.icon.href??null,scale:s};this.iconCache.set(e.id,{signature:t,icon:r});let o=e.ais.status==="remove"?void 0:e.ais.status;return this.ngZone.runOutsideAngular(()=>{nc({mmsi:e.mmsi??"",type:e.type,navState:this.isVesselLike(e)?e.navState:void 0,aisShipTypeId:this.isVesselLike(e)?e.design?.aisShipType?.id:void 0,atonVirtual:this.isAton(e)?e.virtual:void 0,atonTypeId:this.isAton(e)?e.typeId:void 0,status:o,collisionRiskRating:this.isVesselLike(e)?e.closestApproach?.collisionRiskRating:void 0}).then(n=>{let d=this.iconCache.get(e.id);!d||d.signature!==t||(d.icon={href:n,scale:s},this.scheduleRenderDebounced());});}),r}resolveIconScale(e){switch(e){case "aton":return 3.5;case "basestation":return 3;case "sar":return 2.4;case "vessel":return 3;default:return 2.4}}buildIconSignature(e){let t=e.ais.status==="lost"?"unconfirmed":e.ais.status;return [e.mmsi,e.type,this.isVesselLike(e)?e.navState:void 0,this.isVesselLike(e)?e.design?.aisShipType?.id:void 0,this.isAton(e)?e.virtual:void 0,this.isAton(e)?e.typeId:void 0,t,this.isVesselLike(e)?e.closestApproach?.collisionRiskRating:void 0].join("|")}buildClassName(e){let t=[`status-${e.status}`,`type-${e.type}`,e.aisClass?`class-${e.aisClass.toLowerCase()}`:"class-unknown"];if(e.navState){let i=e.navState.toLowerCase();i.includes("moored")&&t.push("state-moored"),i.includes("anchored")&&t.push("state-anchored");}return e.id===this.selectedId()&&t.push("is-selected"),t.join(" ")}resolveTargetVectorStroke(e){if(e.ais.status!=="confirmed")return "#50505f";let t=e.closestApproach?.collisionRiskRating,i=typeof t=="number"?t:Number(t);return Number.isFinite(i)?i<qn?"red":i<zn?"yellow":"#50505f":"#50505f"}shouldFilterTarget(e){let t=this.filterState();if(!t.anchoredMoored&&!t.noCollisionRisk&&!t.allAton&&!t.allButSar&&!t.allVessels&&t.vesselTypes.size===0)return false;if(t.anchoredMoored&&this.isVesselLike(e)&&this.isStationaryNavState(e.navState)||t.noCollisionRisk&&this.isVesselLike(e)&&(e.ais.status!=="confirmed"||this.isStationaryNavState(e.navState)||this.isNoCollisionRisk(e))||t.allAton&&e.type==="aton"||t.allButSar&&e.type!=="sar"||t.allVessels&&this.isVesselLike(e))return true;if(t.vesselTypes.size>0&&this.isVesselLike(e)){let i=this.resolveVesselIconKey(e);if(i&&t.vesselTypes.has(i))return true}return false}isNoCollisionRisk(e){let t=e.closestApproach?.collisionRiskRating;if(!Object.prototype.hasOwnProperty.call(e.closestApproach??{},"collisionRiskRating"))return false;if(t==null)return true;let i=typeof t=="number"?t:Number(t);return Number.isFinite(i)?i>=zn:true}resolveVesselIconKey(e){if(!this.isVesselLike(e))return null;let t=pa({mmsi:e.mmsi??e.id??"",type:e.type,aisShipTypeId:e.design?.aisShipType?.id});return t.startsWith("vessel/")?t:null}polarToCartesian(e,t,i,s){let r=e*Math.PI/180,o=t/i*s;return {x:o*Math.sin(r),y:-o*Math.cos(r)}}hasValidPosition(e){return typeof e?.latitude=="number"&&Number.isFinite(e.latitude)&&typeof e?.longitude=="number"&&Number.isFinite(e.longitude)}offsetPoint(e,t,i,s){let r=i*Math.PI/180;return {x:e+s*Math.sin(r),y:t-s*Math.cos(r)}}wrapDegrees(e){let t=e%360;return t<0?t+360:t}isStationaryNavState(e){if(typeof e=="number"&&Number.isFinite(e))return e===1||e===5;if(typeof e!="string")return false;let t=e.trim().toLowerCase().replace(/\s+/g," ");if(!t.length)return false;let i=Number(t);return Number.isFinite(i)?i===1||i===5:t.includes("moored")||t.includes("anchored")||t.includes("at anchor")}shortestAngleDelta(e,t){return (t-e+540)%360-180}buildTrackSignature(e){let t=e.position??{};return [t.latitude,t.longitude,this.isVesselLike(e)?e.headingTrue:void 0,this.isVesselLike(e)?e.courseOverGroundTrue:void 0].join("|")}isVesselLike(e){return e.type==="vessel"||e.type==="sar"}isAton(e){return e.type==="aton"}buildCornerBoxPath(e,t){let i=e,s=Math.min(Math.max(t,0),i);return [`M ${-i} ${-i} h ${s}`,`M ${-i} ${-i} v ${s}`,`M ${i} ${-i} h ${-s}`,`M ${i} ${-i} v ${s}`,`M ${-i} ${i} h ${s}`,`M ${-i} ${i} v ${-s}`,`M ${i} ${i} h ${-s}`,`M ${i} ${i} v ${-s}`].join(" ")}smoothRotation(e){let t=performance.now();if(this.viewRotationSmoothed===null||this.lastRotationAt===null)return this.viewRotationSmoothed=this.wrapDegrees(e),this.lastRotationAt=t,this.viewRotationSmoothed;let i=Math.min(250,Math.max(0,t-this.lastRotationAt)),s=Math.min(1,i/200),r=this.shortestAngleDelta(this.viewRotationSmoothed,e);return this.viewRotationSmoothed=this.wrapDegrees(this.viewRotationSmoothed+r*s),this.lastRotationAt=t,this.viewRotationSmoothed}toDegreesIfRadians(e){return typeof e!="number"||!Number.isFinite(e)?null:this.units.convertToUnit("deg",e)}distanceNm(e,t){let s=e.latitude*Math.PI/180,r=t.latitude*Math.PI/180,o=(t.latitude-e.latitude)*Math.PI/180,n=(t.longitude-e.longitude)*Math.PI/180,d=Math.sin(o/2),u=Math.sin(n/2),b=d*d+Math.cos(s)*Math.cos(r)*u*u;return 6371e3*(2*Math.atan2(Math.sqrt(b),Math.sqrt(1-b)))/1852}ngOnDestroy(){this.renderFrame&&(cancelAnimationFrame(this.renderFrame),this.renderFrame=null),this.rotationFrameTimer!==null&&(window.clearTimeout(this.rotationFrameTimer),this.rotationFrameTimer=null),this.iconRenderTimer!==null&&(window.clearTimeout(this.iconRenderTimer),this.iconRenderTimer=null);}static \u0275fac=function(t){return new(t||l)};static \u0275cmp=JD({type:l,selectors:[["widget-ais-radar"]],viewQuery:function(t,i){t&1&&eg(i.svgRef,lt,5)(i.menuAnchorRef,ct,5)(i.menuTrigger,dt,5),t&2&&Kw(3);},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:29,vars:9,consts:[["radarSvg",""],["menuAnchor","","menuTrigger","matMenuTrigger"],["targetMenu","matMenu"],["filterMenu","matMenu"],["vesselTypeMenu","matMenu"],["kipResizeObserver","",1,"ais-radar-container",3,"kipResize"],["type","button","matMiniFab","",1,"ais-radar-mode-toggle-button",3,"click","matTooltip"],["viewBox","0 0 40 40","aria-hidden","true",1,"ais-mode-icon"],["type","button","matMiniFab","","matTooltip","Increase range","aria-label","Increase range",1,"ais-radar-range-button","ais-radar-range-plus",3,"click"],["type","button","matMiniFab","","matTooltip","Decrease range","aria-label","Decrease range",1,"ais-radar-range-button","ais-radar-range-minus",3,"click"],["type","button","matMiniFab","","matTooltip","Filter targets","aria-label","Filter targets",1,"ais-radar-range-button","ais-radar-filter-button",3,"matMenuTriggerFor"],["type","button","matMiniFab","","matTooltip","Show only collision risk targets","aria-label","No collision risk filter",1,"ais-radar-range-button","ais-radar-collision-button",3,"is-active"],["role","img","aria-label","AIS radar display",1,"ais-radar"],["type","button","aria-hidden","true","tabindex","-1",1,"ais-radar-menu-anchor",3,"matMenuTriggerFor"],[3,"closed"],["matMenuContent",""],[1,"widgetOverlay"],["stroke","currentColor","d","M10 8 L20 2 L30 8",1,"ais-mode-icon-chev"],["fill","currentColor","x","20","y","31",1,"ais-mode-icon-letter"],["fill","currentColor","d","M20 4 L34 36 L20 28 L6 36 Z",1,"ais-mode-icon-vessel"],["type","button","matMiniFab","","matTooltip","Show only collision risk targets","aria-label","No collision risk filter",1,"ais-radar-range-button","ais-radar-collision-button",3,"click"],["mat-menu-item","","type","button",1,"ais-radar-menu-item"],["mat-menu-item","","type","button",1,"ais-radar-menu-item",3,"click"],["alt","","aria-hidden","true",1,"target-menu-icon"],[1,"target-menu-label"],["mat-menu-item","","disabled","",1,"ais-filter-menu-header"],["mat-menu-item","","type","button",3,"click"],["aria-hidden","true",1,"ais-filter-check"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-menu-item","","type","button"]],template:function(t,i){if(t&1&&(Pi(0,"div",5),Qh("kipResize",function(r){return i.onResized(r)}),Pi(1,"button",6),Qh("click",function(){return i.toggleViewMode()}),_w(2,ut,4,0,":svg:svg",7)(3,mt,2,0,":svg:svg",7),ul(),Pi(4,"button",8),Qh("click",function(){return i.incrementRange()}),Pi(5,"mat-icon"),TT(6,"add"),ul()(),Pi(7,"button",9),Qh("click",function(){return i.decrementRange()}),Pi(8,"mat-icon"),TT(9,"remove"),ul()(),Pi(10,"button",10)(11,"mat-icon"),TT(12,"filter_list"),ul()(),_w(13,gt,3,2,"button",11),wd(),$h(14,"svg",12,0),Td(),$h(16,"button",13,1),ul(),Pi(19,"mat-menu",14,2),Qh("closed",function(){return i.resetTargetMenuState()}),xh(21,ft,2,0,"ng-template",15),ul(),Pi(22,"mat-menu",null,3),xh(24,St,27,5,"ng-template",15),ul(),Pi(25,"mat-menu",null,4),xh(27,bt,2,0,"ng-template",15),ul(),_w(28,yt,1,0,"div",16)),t&2){let s=Jw(20),r=Jw(23);EE(),Bh("matTooltip",i.effectiveViewMode()==="north-up"?"Change to North-Up mode":"Change to Course-Up mode"),Hh("aria-label",i.effectiveViewMode()==="north-up"?"North up mode":"Course up mode"),EE(),Mw(i.effectiveViewMode()==="north-up"?2:3),EE(8),sg("is-active",i.hasActiveFilters()),Bh("matMenuTriggerFor",r),EE(3),Mw(i.hasCollisionRiskData()?13:-1),EE(3),Bh("matMenuTriggerFor",s),EE(12),Mw(i.dashboard.isDashboardStatic()?-1:28);}},dependencies:[u,Op,Rp,yt$1,wt,Ht,R,ee,Nt,Lt,zt,mt$1],encapsulation:2})}return l})();export{Qt as WidgetAisRadarComponent};
@@ -1 +1 @@
1
- import {d1 as Hj,w,n as G,J as JD,O as Op,o as eu,y as yt,b as wt,P as Pi,c as $h,u as ul,T as TT,k as Qh,e as EE,d as ig,B as Bh,aA as gg}from'./main-YKDNK5VZ.js';var O=(()=>{class a{pageTitle=Hj.required();svgIconId=Hj.required();_router=w(G);backPage(){this._router.navigate(["/settings"]);}closePage(){this._router.navigate(["/dashboard"]);}static \u0275fac=function(n){return new(n||a)};static \u0275cmp=JD({type:a,selectors:[["page-header"]],inputs:{pageTitle:[1,"pageTitle"],svgIconId:[1,"svgIconId"]},decls:11,vars:6,consts:[[1,"page-icon-container"],["aria-hidden","false",3,"svgIcon"],[1,"page-title"],[1,"dialog-close-icon"],["mat-icon-button","",3,"click"]],template:function(n,i){n&1&&(Pi(0,"div",0),$h(1,"mat-icon",1),ul(),Pi(2,"h6",2),TT(3),ul(),Pi(4,"div",3)(5,"button",4),Qh("click",function(){return i.backPage()}),Pi(6,"mat-icon"),TT(7,"arrow_back_ios"),ul()(),Pi(8,"button",4),Qh("click",function(){return i.closePage()}),Pi(9,"mat-icon"),TT(10,"close"),ul()()()),n&2&&(EE(),ig("width",24,"px")("height",24,"px"),Bh("svgIcon",i.svgIconId()),EE(2),gg(i.pageTitle()));},dependencies:[Op,eu,yt,wt],styles:["[_nghost-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-direction:row;flex-wrap:nowrap}.page-icon-container[_ngcontent-%COMP%]{width:100px;height:max-content;padding-left:15px;padding-top:6px}.page-title[_ngcontent-%COMP%]{margin-block-start:0px;margin-block-end:0px;padding:18px 0 13px;color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, .87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, .03125em))}.dialog-close-icon[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:5px;padding-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return a})();export{O};
1
+ import {d1 as Hj,w,n as G,J as JD,O as Op,o as eu,y as yt,b as wt,P as Pi,c as $h,u as ul,T as TT,k as Qh,e as EE,d as ig,B as Bh,aA as gg}from'./main-F7NMHHV4.js';var O=(()=>{class a{pageTitle=Hj.required();svgIconId=Hj.required();_router=w(G);backPage(){this._router.navigate(["/settings"]);}closePage(){this._router.navigate(["/dashboard"]);}static \u0275fac=function(n){return new(n||a)};static \u0275cmp=JD({type:a,selectors:[["page-header"]],inputs:{pageTitle:[1,"pageTitle"],svgIconId:[1,"svgIconId"]},decls:11,vars:6,consts:[[1,"page-icon-container"],["aria-hidden","false",3,"svgIcon"],[1,"page-title"],[1,"dialog-close-icon"],["mat-icon-button","",3,"click"]],template:function(n,i){n&1&&(Pi(0,"div",0),$h(1,"mat-icon",1),ul(),Pi(2,"h6",2),TT(3),ul(),Pi(4,"div",3)(5,"button",4),Qh("click",function(){return i.backPage()}),Pi(6,"mat-icon"),TT(7,"arrow_back_ios"),ul()(),Pi(8,"button",4),Qh("click",function(){return i.closePage()}),Pi(9,"mat-icon"),TT(10,"close"),ul()()()),n&2&&(EE(),ig("width",24,"px")("height",24,"px"),Bh("svgIcon",i.svgIconId()),EE(2),gg(i.pageTitle()));},dependencies:[Op,eu,yt,wt],styles:["[_nghost-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-direction:row;flex-wrap:nowrap}.page-icon-container[_ngcontent-%COMP%]{width:100px;height:max-content;padding-left:15px;padding-top:6px}.page-title[_ngcontent-%COMP%]{margin-block-start:0px;margin-block-end:0px;padding:18px 0 13px;color:var(--mat-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, .87)));font-family:var(--mat-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mat-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mat-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mat-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mat-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, .03125em))}.dialog-close-icon[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:5px;padding-right:15px}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}"]})}return a})();export{O};
@@ -1 +1 @@
1
- import {f}from'./chunk-H9_eqTYx.js';import {d1 as Hj,w,du as p,dv as rt,dD as _,cu as T,a as G,aR as lt,W as Wp,D as Dt,v as vt,cw as z,cv as G$1,F as Fa,dn as ge,J as JD,dC as x,_ as _w,P as Pi,cn as wd,c as $h,u as ul,X as xw,M as Mw,e as EE,an as Hh,Y as Aw,g as qw,B as Bh,h as Fw,k as Qh,l as ud,m as dd,T as TT,d as ig,s as sg,t as pT,cr as mg}from'./main-YKDNK5VZ.js';import {c}from'./chunk-BIb-xYiS.js';var Y=(n,i)=>i.raw.value;function K(n,i){if(n&1&&$h(0,"widget-title",0),n&2){let t=qw();Bh("text",t.displayName())("color",t.accentColor());}}function Q(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.fullRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function X(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.topRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ee(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.bottomRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function te(n,i){if(n&1&&(wd(),$h(0,"rect",18)),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("width",e.menuWidth)("height",e.itemHeight)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ie(n,i){if(n&1){let t=Fw();wd(),Pi(0,"g",15),Qh("pointerdown",function(s){ud(t);let o=qw();return dd(o.onPointerDown(s))})("pointermove",function(s){ud(t);let o=qw();return dd(o.onPointerMove(s))})("pointerup",function(s){let o=ud(t).$implicit,l=qw();return dd(l.onPointerUp(s,o))})("pointercancel",function(s){ud(t);let o=qw();return dd(o.onPointerCancel(s))})("keyup.enter",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))})("keyup.space",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))}),_w(1,Q,1,4,":svg:path",16)(2,X,1,4,":svg:path",16)(3,ee,1,4,":svg:path",16)(4,te,1,5,":svg:rect",17),Pi(5,"text"),TT(6),ul()();}if(n&2){let t=i.$implicit,e=qw();ig("cursor",e.canPut()?"pointer":"not-allowed"),sg("is-selected",e.isSelected(t.raw))("is-off",t.raw.isOn===false),Hh("transform","translate(0 "+t.index*(e.itemHeight+e.itemGap)+")")("tabindex",e.canPut()?0:-1)("aria-label",t.label)("aria-pressed",e.isSelected(t.raw))("aria-disabled",!e.canPut()),EE(),Mw(t.index===0&&t.index===e.optionsCount()-1?1:t.index===0?2:t.index===e.optionsCount()-1?3:4),EE(4),pT(e.isSelected(t.raw)?"svg-menu-item-current-text":t.raw.isOn===false?"svg-menu-item-off-text":"svg-menu-item-text"),Hh("x",e.menuWidth/2)("y",e.itemHeight/2)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",(e.isSelected(t.raw)||t.raw.isOn===false,e.textColor())),EE(),mg(" ",e.isSelected(t.raw)?"\u2713 ":"","",t.label," ");}}function ne(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.fullRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function oe(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.topRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function re(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.bottomRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ae(n,i){if(n&1&&(wd(),$h(0,"rect",18)),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("width",e.menuWidth)("height",e.itemHeight)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function se(n,i){if(n&1){let t=Fw();wd(),Pi(0,"g",15),Qh("pointerdown",function(s){ud(t);let o=qw();return dd(o.onPointerDown(s))})("pointermove",function(s){ud(t);let o=qw();return dd(o.onPointerMove(s))})("pointerup",function(s){let o=ud(t).$implicit,l=qw();return dd(l.onPointerUp(s,o))})("pointercancel",function(s){ud(t);let o=qw();return dd(o.onPointerCancel(s))})("keyup.enter",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))})("keyup.space",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))}),_w(1,ne,1,5,":svg:path",16)(2,oe,1,5,":svg:path",16)(3,re,1,5,":svg:path",16)(4,ae,1,6,":svg:rect",17),Pi(5,"text"),TT(6),ul()();}if(n&2){let t=i.$implicit,e=qw();ig("cursor",e.canPut()?"pointer":"not-allowed"),sg("is-selected",e.isSelected(t.raw))("is-off",t.raw.isOn===false),Hh("transform","translate(0 "+t.index*(e.itemHeight+e.itemGap)+")")("tabindex",e.canPut()?0:-1)("aria-label",t.label)("aria-pressed",e.isSelected(t.raw))("aria-disabled",!e.canPut()),EE(),Mw(t.index===0&&t.index===e.optionsCount()-1?1:t.index===0?2:t.index===e.optionsCount()-1?3:4),EE(4),pT(e.isSelected(t.raw)?"svg-menu-item-current-text":t.raw.isOn===false?"svg-menu-item-off-text":"svg-menu-item-text"),Hh("x",e.menuWidth/2)("y",e.itemHeight/2)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",(e.isSelected(t.raw)||t.raw.isOn===false,e.textColor())),EE(),mg(" ",e.isSelected(t.raw)?"\u2713 ":"","",t.label," ");}}function le(n,i){n&1&&$h(0,"div",14);}var J=class n{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={displayName:"Switch Label",showLabel:true,filterSelfPaths:true,paths:{controlPath:{description:"Multi-state control path",path:null,source:null,pathType:"multiple",supportsPut:true,isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:null,showConvertUnitTo:false,convertUnitTo:void 0,sampleTime:500}},enableTimeout:false,dataTimeout:5,color:"contrast"};runtime=w(p);streams=w(rt);meta=w(_);signalkRequestsService=w(T);dashboard=w(G);toast=w(lt);skRequest=Wp(this.signalkRequestsService.subscribeRequest(),{initialValue:null});cfg=Dt(()=>this.runtime.options()??n.DEFAULT_CONFIG);displayName=Dt(()=>this.cfg().displayName??"Switch Label");showLabel=Dt(()=>this.cfg().showLabel??true);controlPath=Dt(()=>this.getControlPath(this.cfg()));accentColor=vt("");accentDim=vt("");accentDimmer=vt("");textColor=vt("");textDim=vt("");textDimmer=vt("");currentValue=vt(null);sortedOptions=Dt(()=>{let i=this.meta.possibleValues();if(!i.length)return [];let t=i.map(e=>({raw:e,label:e.title||e.abbrev||String(e.value),comparable:this.toComparable(e.value)}));return t.sort((e,s)=>{let o=e.comparable,l=s.comparable;return o.kind==="num"&&l.kind==="num"?o.value-l.value:o.kind==="str"&&l.kind==="str"?o.value.localeCompare(l.value):o.kind==="num"?-1:1}),t.map((e,s)=>z(G$1({},e),{index:s}))});menuWidth=220;itemHeight=50;itemGap=1;svgPadding=Math.max(1,Math.round(this.itemHeight*.2));optionsCount=Dt(()=>this.sortedOptions().length);menuHeight=Dt(()=>{let i=this.sortedOptions().length;return i<=0?0:i*this.itemHeight+(i-1)*this.itemGap});hasOptions=Dt(()=>this.meta.possibleValues().length>0);selectedValue=Dt(()=>this.currentValue());canPut=Dt(()=>this.meta.supportsPut());swipeGuard=f();unselectedOptions=Dt(()=>this.sortedOptions().filter(i=>!this.isSelected(i.raw)));selectedOptions=Dt(()=>this.sortedOptions().filter(i=>this.isSelected(i.raw)));fullRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,true,true));topRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,true,false));bottomRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,false,true));cornerRadius=7;constructor(){Fa(()=>{let i=this.theme(),t=this.cfg().color??"contrast";!i||!t||ge(()=>{this.accentColor.set(c(t,i).color),this.accentDim.set(c(t,i).dim),this.accentDimmer.set(c(t,i).dimmer),t==="contrast"?(this.textColor.set(i.background),this.textDim.set(i.contrastDim),this.textDimmer.set(i.contrastDimmer)):(this.textColor.set(i.contrast),this.textDim.set(c(t,i).dim),this.textDimmer.set(c(t,i).dimmer));});}),Fa(()=>{if(!this.controlPath()){this.currentValue.set(null);return}ge(()=>{this.streams.observe("controlPath",t=>{this.currentValue.set(t?.data?.value??null);}),this.meta.observe("controlPath");});});}select(i){let t=this.getControlPath(this.cfg());t&&this.signalkRequestsService.putRequest(t,i.value,this.id());}selectUi(i){this.select(i.raw);}onPointerDown(i){this.canPut()&&this.swipeGuard.onPointerDown(i);}onPointerMove(i){this.canPut()&&this.swipeGuard.onPointerMove(i);}onPointerUp(i,t){this.canPut()&&this.swipeGuard.onPointerUp(i)&&this.selectUi(t);}onPointerCancel(i){this.swipeGuard.onPointerCancel(i);}getControlPath(i){let t=i?.paths;return !t||Array.isArray(t)?null:t.controlPath?.path??null}isSelected(i){let t=this.selectedValue();return typeof i.value=="number"&&typeof t=="string"?i.value===Number(t):typeof i.value=="string"&&typeof t=="number"?Number(i.value)===t||i.value===String(t):Object.is(i.value,t)}toComparable(i){if(typeof i=="number"&&Number.isFinite(i))return {kind:"num",value:i};if(typeof i=="boolean")return {kind:"num",value:i?1:0};if(typeof i=="string"){let t=i.trim();if(/^-?\d+(\.\d+)?$/.test(t)){let e=Number(t);if(Number.isFinite(e))return {kind:"num",value:e}}return {kind:"str",value:t}}return {kind:"str",value:String(i)}}buildRoundedRectPath(i,t,e,s,o){let l=Math.max(0,i),f=Math.max(0,t),r=Math.max(0,Math.min(e,l/2,f/2));return l===0||f===0?"":r===0?`M0 0H${l}V${f}H0Z`:s&&o?[`M${r} 0`,`H${l-r}`,`A${r} ${r} 0 0 1 ${l} ${r}`,`V${f-r}`,`A${r} ${r} 0 0 1 ${l-r} ${f}`,`H${r}`,`A${r} ${r} 0 0 1 0 ${f-r}`,`V${r}`,`A${r} ${r} 0 0 1 ${r} 0`,"Z"].join(""):s?[`M0 ${r}`,`A${r} ${r} 0 0 1 ${r} 0`,`H${l-r}`,`A${r} ${r} 0 0 1 ${l} ${r}`,`V${f}`,"H0","Z"].join(""):o?["M0 0",`H${l}`,`V${f-r}`,`A${r} ${r} 0 0 1 ${l-r} ${f}`,`H${r}`,`A${r} ${r} 0 0 1 0 ${f-r}`,"V0","Z"].join(""):`M0 0H${l}V${f}H0Z`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=JD({type:n,selectors:[["widget-multi-state-switch"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:23,vars:6,consts:[[3,"text","color"],["role","group",1,"widgets-container"],["preserveAspectRatio","xMidYMid meet","role","presentation",1,"svg-menu"],["id","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["id","focus-inner-ring","x","0","y","0","width","100%","height","100%","color-interpolation-filters","sRGB"],["in","SourceAlpha","operator","erode","radius","2","result","eroded"],["in","SourceAlpha","in2","eroded","operator","out","result","border"],["flood-color","#ffffff","flood-opacity","0.9","result","ringColor"],["in","ringColor","in2","border","operator","in","result","ring"],["in","ring"],["role","button",1,"svg-menu-item-group",3,"is-selected","is-off","cursor"],[1,"widgetOverlay"],["role","button",1,"svg-menu-item-group",3,"pointerdown","pointermove","pointerup","pointercancel","keyup.enter","keyup.space"],[3,"class"],["x","0","y","0",3,"class"],["x","0","y","0"]],template:function(t,e){t&1&&(_w(0,K,1,2,"widget-title",0),Pi(1,"div",1),wd(),Pi(2,"svg",2)(3,"defs")(4,"filter",3),$h(5,"feGaussianBlur",4),Pi(6,"feMerge"),$h(7,"feMergeNode",5)(8,"feMergeNode",6),ul()(),Pi(9,"filter",7),$h(10,"feMorphology",8)(11,"feComposite",9)(12,"feFlood",10)(13,"feComposite",11),Pi(14,"feMerge"),$h(15,"feMergeNode",6)(16,"feMergeNode",12),ul()()(),Pi(17,"g"),xw(18,ie,7,20,":svg:g",13,Y),xw(20,se,7,20,":svg:g",13,Y),ul()()(),_w(22,le,1,0,"div",14)),t&2&&(Mw(e.showLabel()?0:-1),EE(),Hh("aria-label",e.displayName()),EE(),Hh("viewBox","0 0 "+(e.menuWidth+e.svgPadding*2)+" "+((e.menuHeight()||e.itemHeight)+e.svgPadding*2))("aria-label",e.displayName()),EE(15),Hh("transform","translate("+e.svgPadding+" "+e.svgPadding+")"),EE(),Aw(e.unselectedOptions()),EE(2),Aw(e.selectedOptions()),EE(2),Mw(e.dashboard.isDashboardStatic()?-1:22));},dependencies:[x],styles:["[_nghost-%COMP%]{display:block;height:100%}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;padding:2px}.svg-menu[_ngcontent-%COMP%]{width:100%;height:100%;display:block;background:transparent;border-radius:12px;z-index:20;font-family:Roboto;font-size:1.3rem;font-weight:700;text-anchor:middle;text-align:center;alignment-baseline:middle}.svg-menu-item-current[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-background);stroke-width:3px;stroke-dasharray:none;stroke-opacity:1}.svg-menu-item[_ngcontent-%COMP%]{fill:var(--mat-sys-outline);stroke:#000;stroke-width:2px;stroke-dasharray:none;stroke-opacity:.2}.svg-menu-item-off[_ngcontent-%COMP%]{stroke:#000;stroke-width:2;stroke-dasharray:none;stroke-opacity:.2}.svg-menu-item-current-text[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;text-anchor:middle;dominant-baseline:middle;alignment-baseline:middle}.svg-menu-item-text[_ngcontent-%COMP%], .svg-menu-item-off-text[_ngcontent-%COMP%]{font-weight:600;text-anchor:middle;dominant-baseline:middle;alignment-baseline:middle}.svg-menu-item-group[_ngcontent-%COMP%]:focus{outline:none}.svg-menu-item-group[_ngcontent-%COMP%]:focus-visible :is(rect[_ngcontent-%COMP%], path[_ngcontent-%COMP%]){filter:url(#focus-inner-ring)}"]})};export{J as WidgetMultiStateSwitchComponent};
1
+ import {f}from'./chunk-H9_eqTYx.js';import {d1 as Hj,w,du as p,dv as rt,dD as _,cu as T,a as G,aR as lt,W as Wp,D as Dt,v as vt,cw as z,cv as G$1,F as Fa,dn as ge,J as JD,dC as x,_ as _w,P as Pi,cn as wd,c as $h,u as ul,X as xw,M as Mw,e as EE,an as Hh,Y as Aw,g as qw,B as Bh,h as Fw,k as Qh,l as ud,m as dd,T as TT,d as ig,s as sg,t as pT,cr as mg}from'./main-F7NMHHV4.js';import {c}from'./chunk-CRy9Da7a.js';var Y=(n,i)=>i.raw.value;function K(n,i){if(n&1&&$h(0,"widget-title",0),n&2){let t=qw();Bh("text",t.displayName())("color",t.accentColor());}}function Q(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.fullRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function X(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.topRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ee(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.bottomRoundedItemPathD())("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function te(n,i){if(n&1&&(wd(),$h(0,"rect",18)),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("width",e.menuWidth)("height",e.itemHeight)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ie(n,i){if(n&1){let t=Fw();wd(),Pi(0,"g",15),Qh("pointerdown",function(s){ud(t);let o=qw();return dd(o.onPointerDown(s))})("pointermove",function(s){ud(t);let o=qw();return dd(o.onPointerMove(s))})("pointerup",function(s){let o=ud(t).$implicit,l=qw();return dd(l.onPointerUp(s,o))})("pointercancel",function(s){ud(t);let o=qw();return dd(o.onPointerCancel(s))})("keyup.enter",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))})("keyup.space",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))}),_w(1,Q,1,4,":svg:path",16)(2,X,1,4,":svg:path",16)(3,ee,1,4,":svg:path",16)(4,te,1,5,":svg:rect",17),Pi(5,"text"),TT(6),ul()();}if(n&2){let t=i.$implicit,e=qw();ig("cursor",e.canPut()?"pointer":"not-allowed"),sg("is-selected",e.isSelected(t.raw))("is-off",t.raw.isOn===false),Hh("transform","translate(0 "+t.index*(e.itemHeight+e.itemGap)+")")("tabindex",e.canPut()?0:-1)("aria-label",t.label)("aria-pressed",e.isSelected(t.raw))("aria-disabled",!e.canPut()),EE(),Mw(t.index===0&&t.index===e.optionsCount()-1?1:t.index===0?2:t.index===e.optionsCount()-1?3:4),EE(4),pT(e.isSelected(t.raw)?"svg-menu-item-current-text":t.raw.isOn===false?"svg-menu-item-off-text":"svg-menu-item-text"),Hh("x",e.menuWidth/2)("y",e.itemHeight/2)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",(e.isSelected(t.raw)||t.raw.isOn===false,e.textColor())),EE(),mg(" ",e.isSelected(t.raw)?"\u2713 ":"","",t.label," ");}}function ne(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.fullRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function oe(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.topRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function re(n,i){if(n&1&&(wd(),$h(0,"path")),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("d",e.bottomRoundedItemPathD())("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function ae(n,i){if(n&1&&(wd(),$h(0,"rect",18)),n&2){let t=qw().$implicit,e=qw();pT(e.isSelected(t.raw)?"svg-menu-item-current":t.raw.isOn===false?"svg-menu-item-off":"svg-menu-item"),Hh("width",e.menuWidth)("height",e.itemHeight)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",e.isSelected(t.raw)?e.accentColor():(t.raw.isOn===false,e.accentDim()));}}function se(n,i){if(n&1){let t=Fw();wd(),Pi(0,"g",15),Qh("pointerdown",function(s){ud(t);let o=qw();return dd(o.onPointerDown(s))})("pointermove",function(s){ud(t);let o=qw();return dd(o.onPointerMove(s))})("pointerup",function(s){let o=ud(t).$implicit,l=qw();return dd(l.onPointerUp(s,o))})("pointercancel",function(s){ud(t);let o=qw();return dd(o.onPointerCancel(s))})("keyup.enter",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))})("keyup.space",function(){let s=ud(t).$implicit,o=qw();return dd(o.canPut()&&o.selectUi(s))}),_w(1,ne,1,5,":svg:path",16)(2,oe,1,5,":svg:path",16)(3,re,1,5,":svg:path",16)(4,ae,1,6,":svg:rect",17),Pi(5,"text"),TT(6),ul()();}if(n&2){let t=i.$implicit,e=qw();ig("cursor",e.canPut()?"pointer":"not-allowed"),sg("is-selected",e.isSelected(t.raw))("is-off",t.raw.isOn===false),Hh("transform","translate(0 "+t.index*(e.itemHeight+e.itemGap)+")")("tabindex",e.canPut()?0:-1)("aria-label",t.label)("aria-pressed",e.isSelected(t.raw))("aria-disabled",!e.canPut()),EE(),Mw(t.index===0&&t.index===e.optionsCount()-1?1:t.index===0?2:t.index===e.optionsCount()-1?3:4),EE(4),pT(e.isSelected(t.raw)?"svg-menu-item-current-text":t.raw.isOn===false?"svg-menu-item-off-text":"svg-menu-item-text"),Hh("x",e.menuWidth/2)("y",e.itemHeight/2)("filter",e.isSelected(t.raw)?"url(#glow)":null)("fill",(e.isSelected(t.raw)||t.raw.isOn===false,e.textColor())),EE(),mg(" ",e.isSelected(t.raw)?"\u2713 ":"","",t.label," ");}}function le(n,i){n&1&&$h(0,"div",14);}var J=class n{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={displayName:"Switch Label",showLabel:true,filterSelfPaths:true,paths:{controlPath:{description:"Multi-state control path",path:null,source:null,pathType:"multiple",supportsPut:true,isPathConfigurable:true,pathRequired:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:null,showConvertUnitTo:false,convertUnitTo:void 0,sampleTime:500}},enableTimeout:false,dataTimeout:5,color:"contrast"};runtime=w(p);streams=w(rt);meta=w(_);signalkRequestsService=w(T);dashboard=w(G);toast=w(lt);skRequest=Wp(this.signalkRequestsService.subscribeRequest(),{initialValue:null});cfg=Dt(()=>this.runtime.options()??n.DEFAULT_CONFIG);displayName=Dt(()=>this.cfg().displayName??"Switch Label");showLabel=Dt(()=>this.cfg().showLabel??true);controlPath=Dt(()=>this.getControlPath(this.cfg()));accentColor=vt("");accentDim=vt("");accentDimmer=vt("");textColor=vt("");textDim=vt("");textDimmer=vt("");currentValue=vt(null);sortedOptions=Dt(()=>{let i=this.meta.possibleValues();if(!i.length)return [];let t=i.map(e=>({raw:e,label:e.title||e.abbrev||String(e.value),comparable:this.toComparable(e.value)}));return t.sort((e,s)=>{let o=e.comparable,l=s.comparable;return o.kind==="num"&&l.kind==="num"?o.value-l.value:o.kind==="str"&&l.kind==="str"?o.value.localeCompare(l.value):o.kind==="num"?-1:1}),t.map((e,s)=>z(G$1({},e),{index:s}))});menuWidth=220;itemHeight=50;itemGap=1;svgPadding=Math.max(1,Math.round(this.itemHeight*.2));optionsCount=Dt(()=>this.sortedOptions().length);menuHeight=Dt(()=>{let i=this.sortedOptions().length;return i<=0?0:i*this.itemHeight+(i-1)*this.itemGap});hasOptions=Dt(()=>this.meta.possibleValues().length>0);selectedValue=Dt(()=>this.currentValue());canPut=Dt(()=>this.meta.supportsPut());swipeGuard=f();unselectedOptions=Dt(()=>this.sortedOptions().filter(i=>!this.isSelected(i.raw)));selectedOptions=Dt(()=>this.sortedOptions().filter(i=>this.isSelected(i.raw)));fullRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,true,true));topRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,true,false));bottomRoundedItemPathD=Dt(()=>this.buildRoundedRectPath(this.menuWidth,this.itemHeight,this.cornerRadius,false,true));cornerRadius=7;constructor(){Fa(()=>{let i=this.theme(),t=this.cfg().color??"contrast";!i||!t||ge(()=>{this.accentColor.set(c(t,i).color),this.accentDim.set(c(t,i).dim),this.accentDimmer.set(c(t,i).dimmer),t==="contrast"?(this.textColor.set(i.background),this.textDim.set(i.contrastDim),this.textDimmer.set(i.contrastDimmer)):(this.textColor.set(i.contrast),this.textDim.set(c(t,i).dim),this.textDimmer.set(c(t,i).dimmer));});}),Fa(()=>{if(!this.controlPath()){this.currentValue.set(null);return}ge(()=>{this.streams.observe("controlPath",t=>{this.currentValue.set(t?.data?.value??null);}),this.meta.observe("controlPath");});});}select(i){let t=this.getControlPath(this.cfg());t&&this.signalkRequestsService.putRequest(t,i.value,this.id());}selectUi(i){this.select(i.raw);}onPointerDown(i){this.canPut()&&this.swipeGuard.onPointerDown(i);}onPointerMove(i){this.canPut()&&this.swipeGuard.onPointerMove(i);}onPointerUp(i,t){this.canPut()&&this.swipeGuard.onPointerUp(i)&&this.selectUi(t);}onPointerCancel(i){this.swipeGuard.onPointerCancel(i);}getControlPath(i){let t=i?.paths;return !t||Array.isArray(t)?null:t.controlPath?.path??null}isSelected(i){let t=this.selectedValue();return typeof i.value=="number"&&typeof t=="string"?i.value===Number(t):typeof i.value=="string"&&typeof t=="number"?Number(i.value)===t||i.value===String(t):Object.is(i.value,t)}toComparable(i){if(typeof i=="number"&&Number.isFinite(i))return {kind:"num",value:i};if(typeof i=="boolean")return {kind:"num",value:i?1:0};if(typeof i=="string"){let t=i.trim();if(/^-?\d+(\.\d+)?$/.test(t)){let e=Number(t);if(Number.isFinite(e))return {kind:"num",value:e}}return {kind:"str",value:t}}return {kind:"str",value:String(i)}}buildRoundedRectPath(i,t,e,s,o){let l=Math.max(0,i),f=Math.max(0,t),r=Math.max(0,Math.min(e,l/2,f/2));return l===0||f===0?"":r===0?`M0 0H${l}V${f}H0Z`:s&&o?[`M${r} 0`,`H${l-r}`,`A${r} ${r} 0 0 1 ${l} ${r}`,`V${f-r}`,`A${r} ${r} 0 0 1 ${l-r} ${f}`,`H${r}`,`A${r} ${r} 0 0 1 0 ${f-r}`,`V${r}`,`A${r} ${r} 0 0 1 ${r} 0`,"Z"].join(""):s?[`M0 ${r}`,`A${r} ${r} 0 0 1 ${r} 0`,`H${l-r}`,`A${r} ${r} 0 0 1 ${l} ${r}`,`V${f}`,"H0","Z"].join(""):o?["M0 0",`H${l}`,`V${f-r}`,`A${r} ${r} 0 0 1 ${l-r} ${f}`,`H${r}`,`A${r} ${r} 0 0 1 0 ${f-r}`,"V0","Z"].join(""):`M0 0H${l}V${f}H0Z`}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=JD({type:n,selectors:[["widget-multi-state-switch"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:23,vars:6,consts:[[3,"text","color"],["role","group",1,"widgets-container"],["preserveAspectRatio","xMidYMid meet","role","presentation",1,"svg-menu"],["id","glow","x","-50%","y","-50%","width","200%","height","200%"],["stdDeviation","5","result","coloredBlur"],["in","coloredBlur"],["in","SourceGraphic"],["id","focus-inner-ring","x","0","y","0","width","100%","height","100%","color-interpolation-filters","sRGB"],["in","SourceAlpha","operator","erode","radius","2","result","eroded"],["in","SourceAlpha","in2","eroded","operator","out","result","border"],["flood-color","#ffffff","flood-opacity","0.9","result","ringColor"],["in","ringColor","in2","border","operator","in","result","ring"],["in","ring"],["role","button",1,"svg-menu-item-group",3,"is-selected","is-off","cursor"],[1,"widgetOverlay"],["role","button",1,"svg-menu-item-group",3,"pointerdown","pointermove","pointerup","pointercancel","keyup.enter","keyup.space"],[3,"class"],["x","0","y","0",3,"class"],["x","0","y","0"]],template:function(t,e){t&1&&(_w(0,K,1,2,"widget-title",0),Pi(1,"div",1),wd(),Pi(2,"svg",2)(3,"defs")(4,"filter",3),$h(5,"feGaussianBlur",4),Pi(6,"feMerge"),$h(7,"feMergeNode",5)(8,"feMergeNode",6),ul()(),Pi(9,"filter",7),$h(10,"feMorphology",8)(11,"feComposite",9)(12,"feFlood",10)(13,"feComposite",11),Pi(14,"feMerge"),$h(15,"feMergeNode",6)(16,"feMergeNode",12),ul()()(),Pi(17,"g"),xw(18,ie,7,20,":svg:g",13,Y),xw(20,se,7,20,":svg:g",13,Y),ul()()(),_w(22,le,1,0,"div",14)),t&2&&(Mw(e.showLabel()?0:-1),EE(),Hh("aria-label",e.displayName()),EE(),Hh("viewBox","0 0 "+(e.menuWidth+e.svgPadding*2)+" "+((e.menuHeight()||e.itemHeight)+e.svgPadding*2))("aria-label",e.displayName()),EE(15),Hh("transform","translate("+e.svgPadding+" "+e.svgPadding+")"),EE(),Aw(e.unselectedOptions()),EE(2),Aw(e.selectedOptions()),EE(2),Mw(e.dashboard.isDashboardStatic()?-1:22));},dependencies:[x],styles:["[_nghost-%COMP%]{display:block;height:100%}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;padding:2px}.svg-menu[_ngcontent-%COMP%]{width:100%;height:100%;display:block;background:transparent;border-radius:12px;z-index:20;font-family:Roboto;font-size:1.3rem;font-weight:700;text-anchor:middle;text-align:center;alignment-baseline:middle}.svg-menu-item-current[_ngcontent-%COMP%]{stroke:var(--mat-sys-on-background);stroke-width:3px;stroke-dasharray:none;stroke-opacity:1}.svg-menu-item[_ngcontent-%COMP%]{fill:var(--mat-sys-outline);stroke:#000;stroke-width:2px;stroke-dasharray:none;stroke-opacity:.2}.svg-menu-item-off[_ngcontent-%COMP%]{stroke:#000;stroke-width:2;stroke-dasharray:none;stroke-opacity:.2}.svg-menu-item-current-text[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:700;text-anchor:middle;dominant-baseline:middle;alignment-baseline:middle}.svg-menu-item-text[_ngcontent-%COMP%], .svg-menu-item-off-text[_ngcontent-%COMP%]{font-weight:600;text-anchor:middle;dominant-baseline:middle;alignment-baseline:middle}.svg-menu-item-group[_ngcontent-%COMP%]:focus{outline:none}.svg-menu-item-group[_ngcontent-%COMP%]:focus-visible :is(rect[_ngcontent-%COMP%], path[_ngcontent-%COMP%]){filter:url(#focus-inner-ring)}"]})};export{J as WidgetMultiStateSwitchComponent};