@mxtommy/kip 4.8.0 → 4.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +19 -17
  3. package/package.json +24 -21
  4. package/plugin/history-series.service.js +3 -0
  5. package/plugin/index.js +1 -1
  6. package/plugin/sqlite-history-storage.service.js +4 -2
  7. package/plugin/src/history-series.service.js +634 -0
  8. package/plugin/src/index.js +1322 -0
  9. package/plugin/src/kip-series-contract.js +31 -0
  10. package/plugin/src/openApi.json +855 -0
  11. package/plugin/src/sqlite-history-storage.service.js +1122 -0
  12. package/public/3rdpartylicenses.txt +569 -727
  13. package/public/assets/help-docs/chartplotter.md +1 -1
  14. package/public/assets/help-docs/history-api.md +69 -71
  15. package/public/assets/help-docs/menu.json +25 -7
  16. package/public/assets/help-docs/time-series.md +81 -0
  17. package/public/assets/help-docs/welcome.md +1 -1
  18. package/public/chunk-7lulvsGI.js +1 -0
  19. package/public/chunk-8hkXyEzG.js +1 -0
  20. package/public/chunk-B15lj2T8.js +1 -0
  21. package/public/chunk-B6AwCAvV.js +1 -0
  22. package/public/chunk-B6XxnPxk.js +1 -0
  23. package/public/chunk-B8gfh4xf.js +1 -0
  24. package/public/chunk-B8zRhoG8.js +1 -0
  25. package/public/chunk-BIYHVfJl.js +1 -0
  26. package/public/chunk-BW4m3O2L.js +1 -0
  27. package/public/chunk-B_PiPxb4.js +1 -0
  28. package/public/chunk-Bb1mO304.js +1 -0
  29. package/public/chunk-BdBWqZzL.js +1 -0
  30. package/public/chunk-BgyxBAyq.js +1 -0
  31. package/public/chunk-Bhah8DNM.js +2 -0
  32. package/public/chunk-Bq-eHuZV.js +1 -0
  33. package/public/chunk-BxV0O2fU.js +2 -0
  34. package/public/chunk-Bz9bswDl.js +1 -0
  35. package/public/chunk-C3CwUYvD.js +2 -0
  36. package/public/chunk-C4FGoLDg.js +1 -0
  37. package/public/chunk-CCiqU2uY.js +1 -0
  38. package/public/chunk-CHKQxw6E.js +1 -0
  39. package/public/chunk-CJIxuzvd.js +1 -0
  40. package/public/chunk-COMZv7NY.js +1 -0
  41. package/public/chunk-CQNVyz8q.js +1 -0
  42. package/public/chunk-CSpA60X7.js +382 -0
  43. package/public/chunk-CU8RPnsi.js +1 -0
  44. package/public/chunk-CaD3zVfK.js +1 -0
  45. package/public/chunk-CcvYOops.js +1 -0
  46. package/public/chunk-CdSWuWKr.js +1 -0
  47. package/public/chunk-CjsnWLUr.js +1 -0
  48. package/public/chunk-CkfPr-c5.js +1 -0
  49. package/public/chunk-CoEM_FqS.js +1 -0
  50. package/public/chunk-Cr34s2uQ.js +1 -0
  51. package/public/chunk-Cu9FE8cB.js +1 -0
  52. package/public/chunk-CyURmwWh.js +1 -0
  53. package/public/chunk-D-xDPCf7.js +1 -0
  54. package/public/chunk-D0MyVrEL.js +14 -0
  55. package/public/chunk-DBA0eRqb.js +1 -0
  56. package/public/chunk-DGOvRnAo.js +1 -0
  57. package/public/chunk-DMhuBqKs.js +1 -0
  58. package/public/chunk-DMoEBcor.js +1 -0
  59. package/public/chunk-DSvdWjO4.js +1 -0
  60. package/public/chunk-DVB9tiW3.js +39 -0
  61. package/public/chunk-D_wrJJxl.js +1 -0
  62. package/public/chunk-DfGLo6Tb.js +1 -0
  63. package/public/chunk-Di5pPpU7.js +1 -0
  64. package/public/chunk-DjavLLpP.js +1 -0
  65. package/public/chunk-Dv77RFHm.js +1 -0
  66. package/public/chunk-H9_eqTYx.js +1 -0
  67. package/public/chunk-NnB8OYZt.js +1015 -0
  68. package/public/chunk-TakPRI3t.js +2 -0
  69. package/public/chunk-h2q_pbbF.js +2 -0
  70. package/public/chunk-o977r5_s.js +1 -0
  71. package/public/chunk-oPq9Nexl.js +1 -0
  72. package/public/chunk-oZiyAw_P.js +3 -0
  73. package/public/chunk-zg7II0hz.js +1 -0
  74. package/public/index.html +4 -4
  75. package/public/main-BNR44HGB.js +7109 -0
  76. package/public/polyfills-5MJXXCNC.js +1 -0
  77. package/public/styles-JZSMCSRO.css +1 -0
  78. package/public/assets/help-docs/widget-historical-series.md +0 -110
  79. package/public/chunk-2TP7C66X.js +0 -5
  80. package/public/chunk-3SJSLBCV.js +0 -6
  81. package/public/chunk-5SMHTIVS.js +0 -50
  82. package/public/chunk-6ISGIPNP.js +0 -1
  83. package/public/chunk-6ZR3M3IQ.js +0 -3
  84. package/public/chunk-ACY7HYMZ.js +0 -4
  85. package/public/chunk-C23GLDFH.js +0 -62
  86. package/public/chunk-CB4E7PPA.js +0 -4
  87. package/public/chunk-DNM5XUIF.js +0 -1
  88. package/public/chunk-GSM7FZE2.js +0 -2
  89. package/public/chunk-HF7V6XFA.js +0 -2
  90. package/public/chunk-HUCDJ6CS.js +0 -10
  91. package/public/chunk-ILQQCGMJ.js +0 -5
  92. package/public/chunk-IXUKD73N.js +0 -5
  93. package/public/chunk-JMZYPL54.js +0 -2
  94. package/public/chunk-KG4C6HZC.js +0 -1
  95. package/public/chunk-LEY6MANN.js +0 -16
  96. package/public/chunk-NS2OV2OW.js +0 -9
  97. package/public/chunk-O5BTKN5D.js +0 -1
  98. package/public/chunk-Q32FSCUX.js +0 -1
  99. package/public/chunk-SHJMXSDM.js +0 -1
  100. package/public/chunk-T4VTC6GW.js +0 -1
  101. package/public/chunk-VFJD3XKT.js +0 -1
  102. package/public/chunk-VFZSH4TC.js +0 -1
  103. package/public/chunk-W6MCE3GH.js +0 -6
  104. package/public/main-UBENKC2D.js +0 -1
  105. package/public/polyfills-BWA36QKG.js +0 -1
  106. package/public/scripts-M6PHZBML.js +0 -14
  107. package/public/styles-DYEO23GZ.css +0 -1
@@ -0,0 +1 @@
1
+ import {C,e}from'./chunk-CyURmwWh.js';import {g as ge$2}from'./chunk-TakPRI3t.js';import {e9 as a,d1 as Hj,w,du as p,aS as De,bu as ut,aY as xe,$ as $j,v as vt,D as Dt,F as Fa,dn as ge$1,a_ as Gp,cv as G,cw as z,dx as n$1,J as JD,dC as x,c as $h,cn as wd,_ as _w,B as Bh,e as EE,M as Mw,f as eg,K as Kw,P as Pi,T as TT,u as ul}from'./main-BNR44HGB.js';import {c}from'./chunk-D_wrJJxl.js';var ge=["chargerSvg"];function me(c,e){c&1&&(Pi(0,"div",3)(1,"div",4),TT(2,"No chargers detected"),ul(),Pi(3,"div",5),TT(4,"Check Signal K charger paths or select chargers in widget settings."),ul()());}function fe(c){return c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var le=class c$1{static CHARGER_DESCRIPTOR=a("widget-charger");static SELF_ROOT_PATH=(()=>{let e=c$1.CHARGER_DESCRIPTOR?.selfRootPath;if(!e)throw new Error("[WidgetChargerComponent] Descriptor missing or selfRootPath not set; check widget registration.");return e})();static ROOT_PATTERN=`${c$1.SELF_ROOT_PATH}.*`;static PATH_REGEX=new RegExp(`^${fe(c$1.SELF_ROOT_PATH)}\\.([^.]+)\\.(.+)$`);static VIEWBOX_WIDTH=200;static CARD_HEIGHT=100;static COMPACT_CARD_HEIGHT=100;static CARD_GAP=8;static PATH_BATCH_WINDOW_MS=500;static CHARGER_DISPLAY_BASE_WIDTH=145;static CHARGER_DISPLAY_BASE_HEIGHT=37;static CHARGER_DISPLAY_HORIZONTAL_MARGIN=40;static DEFAULT_CONFIG={color:"contrast",ignoreZones:false,charger:{trackedDevices:[],optionsById:{}}};id=Hj.required();type=Hj.required();theme=Hj.required();renderMode=Hj(null);runtime=w(p);data=w(De);units=w(ut);destroyRef=w(xe);svgRef=$j.required("chargerSvg");svg;layer;pendingPathUpdates=new Map;pathBatchTimerId=null;initialPathPaintDone=false;renderFrameId=null;pendingRenderSnapshot=null;discoveredChargerIds=vt([]);trackedDevices=vt([]);chargersByKey=vt({});visibleChargerKeys=Dt(()=>{let e=this.trackedDevices();if(e.length)return e.map(s=>s.key);let r=this.chargersByKey(),t=new Set(this.discoveredChargerIds()),i=Object.keys(r).filter(s=>{let o=r[s];return !!o&&t.has(o.id)}).sort((s,o)=>s.localeCompare(o)),a=new Map;return i.forEach(s=>{let o=r[s];o&&s!==o.id&&a.set(o.id,true);}),i.filter(s=>{let o=r[s];return o?s!==o.id?true:!a.get(o.id):false})});visibleChargers=Dt(()=>{let e=this.visibleChargerKeys(),r=this.chargersByKey();return e.map(t=>r[t]).filter(t=>!!t)});hasChargers=Dt(()=>this.visibleChargers().length>0);isCompactCardMode=Dt(()=>this.renderMode()==="compact");colorRole=Dt(()=>this.runtime.options()?.color??"contrast");ignoreZones=Dt(()=>this.runtime.options()?.ignoreZones??false);displayLabel=Dt(()=>{let e=this.visibleChargers();return e.length!==1?"Chargers":this.resolveTitleText(e[0])});labelColor=Dt(()=>{let e=this.theme();return e?c(this.colorRole(),e).dim:"var(--kip-contrast-dim-color)"});widgetColors=Dt(()=>{let e=this.theme();return e?c(this.colorRole(),e):null});displayModels=Dt(()=>{let e=this.visibleChargers(),r=new Map;e.forEach(a=>r.set(a.id,(r.get(a.id)??0)+1));let t=new Set([...r.entries()].filter(([,a])=>a>1).map(([a])=>a)),i={};for(let a of e){let s=a.deviceKey??a.id,o=!!a.source&&t.has(a.id),[n,m,p,h]=this.buildMetricRows(a);i[s]={id:a.id,source:a.source??null,deviceKey:a.deviceKey,titleText:this.resolveTitleText(a,o),modeText:this.isCompactCardMode()?"":this.resolveModeText(a),voltageText:n,currentText:m,powerText:p,temperatureText:h};}return i});constructor(){Fa(()=>{let t=this.runtime.options();t&&ge$1(()=>this.applyConfig(t));}),Fa(()=>{let t=this.displayModels(),i=this.visibleChargers(),a=this.widgetColors();!this.svg||!a||this.requestRender({chargers:i,displayModels:t,widgetColors:a});});let e=[this.data.subscribePathTreeWithInitial(c$1.ROOT_PATTERN)],r=false;for(let t of e)if(t.initial.length){r=true;for(let i of t.initial)this.enqueuePathUpdate(i,true);}r&&(this.flushPendingPathUpdates(),this.initialPathPaintDone=true);for(let t of e)t.live$.pipe(Gp(this.destroyRef)).subscribe(i=>{this.enqueuePathUpdate(i);});}ngAfterViewInit(){this.initializeSvg(),this.requestRender();}ngOnDestroy(){this.pathBatchTimerId!==null&&(clearTimeout(this.pathBatchTimerId),this.pathBatchTimerId=null),this.renderFrameId!==null&&(cancelAnimationFrame(this.renderFrameId),this.renderFrameId=null),this.pendingRenderSnapshot=null;}initializeSvg(){this.svg=ge$2(this.svgRef().nativeElement),this.svg.attr("viewBox",`0 0 ${c$1.VIEWBOX_WIDTH} ${c$1.CARD_HEIGHT}`).attr("preserveAspectRatio","xMidYMid meet").attr("role","img").attr("aria-label","Charger View"),this.layer=this.svg.append("g").attr("class","charger-layer");}applyConfig(e){let r=this.normalizeTrackedDevices(e.charger?.trackedDevices);this.trackedDevices.set(r),this.reprojectSnapshotsToDeviceKeys(r);}normalizeTrackedDevices(e){if(!Array.isArray(e))return [];let r=new Map;return e.forEach(t=>{if(!t||typeof t!="object")return;let i=t,a=this.normalizeOptionalString(i.id),s=this.normalizeOptionalString(i.source);if(!a||!s)return;let o=this.normalizeOptionalString(i.key)??`${a}||${s}`;r.set(o,{id:a,source:s,key:o});}),[...r.values()].sort((t,i)=>t.key.localeCompare(i.key))}buildIdToDeviceKeysMap(){let e=new Map;return this.trackedDevices().forEach(r=>{let t=e.get(r.id)??[];t.push(r.key),e.set(r.id,t);}),e}reprojectSnapshotsToDeviceKeys(e){if(!e.length)return;let r=new Map,t=new Map;e.forEach(i=>{let a=r.get(i.id)??[];a.push(i.key),r.set(i.id,a),t.set(i.key,i);}),this.chargersByKey.update(i=>{let a=i,s=false;return r.forEach((o,n)=>{let m=i[n];if(m){for(let p of o){if(i[p])continue;let h=t.get(p);s||(a=G({},i),s=true),a[p]=z(G({},m),{source:h?.source??null,deviceKey:p});}a[n]&&(a[n].deviceKey===void 0||a[n].deviceKey===n)&&(s||(a=G({},i),s=true),delete a[n]);}}),s?a:i});}normalizeOptionalString(e){if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null}enqueuePathUpdate(e,r=false){let t=this.parsePath(e.path);if(!t)return;let i=e.update?.data?.value??null,a=e.update?.state??null,s=this.extractUpdateSource(e),o=`${t.id}::${s??"*"}::${t.key}`;if(this.pendingPathUpdates.set(o,{id:t.id,key:t.key,source:s,value:i,state:a}),!r){if(!this.initialPathPaintDone){this.initialPathPaintDone=true,this.flushPendingPathUpdates();return}this.pathBatchTimerId===null&&(this.pathBatchTimerId=window.setTimeout(()=>{this.pathBatchTimerId=null,this.flushPendingPathUpdates();},c$1.PATH_BATCH_WINDOW_MS));}}parsePath(e){let r=e.match(c$1.PATH_REGEX);return r?{id:r[1],key:r[2]}:null}flushPendingPathUpdates(){if(!this.pendingPathUpdates.size)return;let e=Array.from(this.pendingPathUpdates.values());this.pendingPathUpdates.clear(),new Set(e.map(a=>a.id)).forEach(a=>this.trackDiscoveredCharger(a));let t=this.buildIdToDeviceKeysMap(),i=new Map;this.trackedDevices().forEach(a=>i.set(a.key,a)),this.chargersByKey.update(a=>{let s=a,o=false;for(let n of e){let m=t.get(n.id),p=!!m?.length,h=[];if(p)if(n.source){let y=`${n.id}||${n.source}`;h=m?.includes(y)?[y]:[];}else h=m??[];else h=[n.source?`${n.id}||${n.source}`:n.id];for(let y of h){let b=p?i.get(y):null,f=s[y]??{id:n.id,source:b?.source??n.source??null,deviceKey:p||n.source?y:void 0},d=G({},f);if(!this.applyValue(d,n.key,n.value,n.state))continue;let M=d.rawPower!=null?d.rawPower:d.voltage!=null&&d.current!=null?d.voltage*d.current:null;M!=null?d.power=Number.isFinite(M)?M:null:d.power=null,d.rawPower==null&&(d.powerState=this.resolveMostSevereState(d.voltageState??null,d.currentState??null)),o||(s=G({},s),o=true),s[y]=d;}}return o?s:a});}extractUpdateSource(e){let r=this.normalizeOptionalString(e.source);return r||(this.normalizeOptionalString(e.update?.data?.source)??null)}trackDiscoveredCharger(e){let r=this.discoveredChargerIds();r.includes(e)||this.discoveredChargerIds.set([...r,e].sort((t,i)=>t.localeCompare(i)));}applyValue(e,r,t,i){switch(r){case "name":return this.setValue(e,"name",this.toStringValue(t));case "location":return this.setValue(e,"location",this.toStringValue(t));case "associatedBus":return this.setValue(e,"associatedBus",this.toStringValue(t));case "state":return this.setMetricValue(e,"state","stateState",this.toStringValue(t),i);case "offReason":return this.setMetricValue(e,"offReason","offReasonState",this.toStringValue(t),i);case "error":return this.setMetricValue(e,"error","errorState",this.toStringValue(t),i);case "mode":return this.setMetricValue(e,"mode","modeState",this.toStringValue(t),i);case "modeState":return this.setMetricValue(e,"mode","modeState",this.toStringValue(t),i);case "modeNumber":return this.setMetricValue(e,"modeNumber","modeNumberState",this.toNumber(t,""),i);case "chargingMode":return this.setMetricValue(e,"chargingMode","chargingModeState",this.toStringValue(t),i);case "chargingModeNumber":return this.setMetricValue(e,"chargingModeNumber","chargingModeNumberState",this.toNumber(t,""),i);case "output.voltage":{let a=this.toNumber(t,"V"),s=this.setMetricValue(e,"outputVoltage","outputVoltageState",a,i),o=this.setMetricValue(e,"voltage","voltageState",a,i);return s||o}case "input.voltage":return this.setMetricValue(e,"inputVoltage","inputVoltageState",this.toNumber(t,"V"),i);case "voltage":return this.setMetricValue(e,"voltage","voltageState",this.toNumber(t,"V"),i);case "current":return this.setMetricValue(e,"current","currentState",this.toNumber(t,"A"),i);case "power":return this.setMetricValue(e,"rawPower","powerState",this.toNumber(t,"W"),i);case "temperature":return this.setMetricValue(e,"temperature","temperatureState",this.toNumber(t,this.units.getDefaults().Temperature),i);case "leds.absorption":return this.setMetricValue(e,"ledsAbsorption","ledsAbsorptionState",this.toBoolean(t),i);case "leds.bulk":return this.setMetricValue(e,"ledsBulk","ledsBulkState",this.toBoolean(t),i);case "leds.float":return this.setMetricValue(e,"ledsFloat","ledsFloatState",this.toBoolean(t),i);case "leds.inverter":return this.setMetricValue(e,"ledsInverter","ledsInverterState",this.toBoolean(t),i);case "leds.lowBattery":return this.setMetricValue(e,"ledsLowBattery","ledsLowBatteryState",this.toBoolean(t),i);case "leds.mains":return this.setMetricValue(e,"ledsMains","ledsMainsState",this.toBoolean(t),i);case "leds.overload":return this.setMetricValue(e,"ledsOverload","ledsOverloadState",this.toBoolean(t),i);case "leds.temperature":return this.setMetricValue(e,"ledsTemperature","ledsTemperatureState",this.toBoolean(t),i);default:return false}}setValue(e,r,t){return Object.is(e[r],t)?false:(e[r]=t,true)}setMetricValue(e,r,t,i,a){let s=!Object.is(e[r],i),o=!Object.is(e[t],a);return !s&&!o?false:(e[r]=i,e[t]=a,true)}requestRender(e){let r=this.widgetColors();!this.svg||!r||(this.pendingRenderSnapshot=e??{chargers:this.visibleChargers(),displayModels:this.displayModels(),widgetColors:r},this.renderFrameId===null&&(this.renderFrameId=requestAnimationFrame(()=>{this.renderFrameId=null;let t=this.pendingRenderSnapshot;this.pendingRenderSnapshot=null,t&&this.render(t);})));}render(e$1){if(!this.layer||!this.svg)return;let r=this.isCompactCardMode(),t=r?C:e,i=r?c$1.COMPACT_CARD_HEIGHT:c$1.CARD_HEIGHT,a=c$1.VIEWBOX_WIDTH-c$1.CHARGER_DISPLAY_HORIZONTAL_MARGIN,s=a/c$1.CHARGER_DISPLAY_BASE_WIDTH,o=a,n=(c$1.VIEWBOX_WIDTH-o)/2,m=r?8:t.titleY,p=r?33:60,h=e$1.chargers.map((l,P)=>({key:l.deviceKey??l.id,id:l.id,charger:l,y:P*(i+c$1.CARD_GAP)})),y=h.length?h[h.length-1].y+i:i;this.svg.attr("viewBox",`0 0 ${c$1.VIEWBOX_WIDTH} ${y}`);let b=this.layer.selectAll("g.charger-card").data(h,l=>l.key),f=b.enter().append("g").attr("class","charger-card"),d=f.append("g").attr("class","charger-display-group");d.append("path").attr("class","charger-shape-bulk").attr("d","m 39.280608,10.70371 1.604609,-3.7808024 c 0.06926,-0.1631805 0.314475,-0.553581 0.314475,-0.4368876 v 27.475177 c 0,0.116694 -0.142713,0.210638 -0.319983,0.210638 H 9.2681756 c -0.1772706,0 -0.3711555,-0.105758 -0.319983,-0.210638 l 1.2797184,-2.622833 c 1.150699,-2.358403 3.86281,-5.455024 6.286778,-6.406312 3.251217,-1.275942 7.834296,-2.821704 11.746419,-4.103315 4.312764,-1.412861 9.246151,-5.946636 11.0195,-10.125027 z").attr("transform","matrix(1.1068428,0,0,1.1601894,-8.804611,-6.1382561)").attr("fill","var(--mat-sys-background)").attr("stroke",e$1.widgetColors.color).attr("stroke-width",2).attr("stroke-linejoin","miter").attr("stroke-miterlimit",0).attr("paint-order","markers stroke fill"),d.append("rect").attr("class","charger-shape-absorption").attr("width",19.67485).attr("height",32.383526).attr("x",40.545158).attr("y",1.1331999).attr("rx",.19520389).attr("ry",.24451913).attr("fill","var(--mat-sys-background)").attr("stroke",e$1.widgetColors.color).attr("stroke-width",2).attr("stroke-linecap","butt").attr("stroke-linejoin","miter").attr("stroke-miterlimit",0).attr("paint-order","markers stroke fill"),d.append("path").attr("class","charger-shape-float").attr("d","m 66.03898,6.4101715 4.16646,3.2472635 c 1.876083,1.462185 5.139444,3.529899 7.448846,4.069504 5.055358,1.181215 11.386089,1.251612 11.38595,1.349059 l -0.02667,18.73082 c 0,0.127151 -0.103075,0.230227 -0.230226,0.230227 H 66.03898 c -0.127151,0 -0.230226,-0.103076 -0.230226,-0.230227 V 6.6403978 c 0,-0.1271504 0.103076,-0.2302261 0.230226,-0.2302263 z").attr("transform","matrix(1.1068428,0,0,1.1601894,-8.7228087,-6.1382561)").attr("fill","var(--mat-sys-background)").attr("stroke",e$1.widgetColors.color).attr("stroke-width",2).attr("stroke-linecap","butt").attr("stroke-linejoin","miter").attr("stroke-miterlimit",0).attr("paint-order","markers stroke fill"),d.append("path").attr("class","charger-shape-storage").attr("d","m 93.39395,15.253553 c 2.347866,2.587905 8.59059,4.802212 13.94479,4.852641 11.92289,0.112298 30.60094,0.205911 30.60096,0.259031 l 0.006,13.361558 c 3e-5,0.07786 -0.19912,0.140548 -0.44645,0.140548 h -44.1053 c -0.247332,0 -0.446448,-0.06269 -0.446448,-0.140548 V 15.394101 c 0,-0.07786 0.280259,-0.323728 0.446448,-0.140548 z").attr("transform","matrix(1.1077284,0,0,1.1178939,-8.9068494,-4.6850995)").attr("fill","var(--mat-sys-background)").attr("stroke",e$1.widgetColors.color).attr("stroke-width",2).attr("stroke-linejoin","miter").attr("stroke-miterlimit",0).attr("paint-order","markers stroke fill"),f.append("text").attr("class","charger-title"),f.append("text").attr("class","charger-mode");let E=f.append("text").attr("class","charger-voltage");E.append("tspan").attr("class","voltage-metric-value"),E.append("tspan").attr("class","voltage-metric-unit");let M=f.append("text").attr("class","charger-current");M.append("tspan").attr("class","current-metric-value"),M.append("tspan").attr("class","current-metric-unit");let L=f.append("text").attr("class","charger-power");L.append("tspan").attr("class","power-metric-value"),L.append("tspan").attr("class","power-metric-unit");let z=f.append("text").attr("class","charger-temperature");z.append("tspan").attr("class","temperature-metric-value"),z.append("tspan").attr("class","temperature-metric-unit");let u=f.merge(b);u.attr("transform",l=>`translate(0, ${l.y})`),u.select("g.charger-display-group").attr("transform",`translate(${n}, ${p}) scale(${s})`).each((l,P,ce)=>{let v=this.resolveShapeMode(l.charger),S=this.isShapeMode(v,"power supply"),D=e$1.widgetColors.dim,x="var(--mat-sys-background)",R=this.isShapeMode(v,"sustain")||S?"none":this.isShapeMode(v,"equalization")?"var(--kip-zone-alert-color)":this.isShapeMode(v,"overload")?"var(--kip-zone-alarm-color)":e$1.widgetColors.color,I=ge$2(ce[P]);I.select("path.charger-shape-bulk").attr("fill",this.isShapeMode(v,"bulk")||this.isShapeMode(v,"boost")||S?D:x).attr("stroke",R),I.select("rect.charger-shape-absorption").attr("fill",this.isShapeMode(v,"absorption")||S?D:x).attr("stroke",R),I.select("path.charger-shape-float").attr("fill",this.isShapeMode(v,"float")||S?D:x).attr("stroke",R),I.select("path.charger-shape-storage").attr("fill",this.isShapeMode(v,"storage")||S?D:x).attr("stroke",R);}),e$1.chargers.length>1?u.select("text.charger-title").attr("x",t.titleX).attr("y",m).attr("font-size",t.titleFontSize).attr("fill","var(--kip-contrast-dim-color)").text(l=>e$1.displayModels[l.key]?.titleText??this.resolveTitleText(l.charger)):u.select("text.charger-title").text(""),u.select("text.charger-voltage").attr("x",197).attr("y",25).attr("text-anchor","end").attr("font-size",t.primaryFontSize).attr("font-weight",t.primaryFontWeight).attr("fill","var(--kip-contrast-color)"),u.select("tspan.voltage-metric-value").text(l=>e$1.displayModels[l.key]?.voltageText??""),u.select("tspan.voltage-metric-unit").attr("dx",1).attr("font-size",22).attr("font-weight",500).attr("fill","var(--kip-contrast-color)").text("V"),u.select("text.charger-current").attr("x",197).attr("y",48).attr("text-anchor","end").attr("font-size",t.lineOneFontSize).attr("fill","var(--kip-contrast-color)"),u.select("tspan.current-metric-value").text(l=>e$1.displayModels[l.key]?.currentText??""),u.select("tspan.current-metric-unit").attr("dx",1).attr("font-size",12).attr("fill","var(--kip-contrast-color)").text("A"),u.select("text.charger-power").attr("x",5).attr("y",22).attr("fill","var(--kip-contrast-dim-color)").attr("font-size",10),u.select("tspan.power-metric-value").text(l=>e$1.displayModels[l.key]?.powerText??""),u.select("tspan.power-metric-unit").attr("dx",1).attr("font-size",6).attr("fill","var(--kip-contrast-dim-color)").text("W"),u.select("text.charger-temperature").attr("x",5).attr("y",34).attr("fill","var(--kip-contrast-dim-color)").attr("font-size",10),u.select("tspan.temperature-metric-value").text(l=>e$1.displayModels[l.key]?.temperatureText??""),u.select("tspan.temperature-metric-unit").attr("dx",1).attr("font-size",6).attr("fill","var(--kip-contrast-dim-color)").text(`${this.units.getDefaults().Temperature==="celsius"?"\xB0C":"\xB0F"}`),u.select("text.charger-mode").attr("x",5).attr("y",46).attr("font-size",10).attr("fill","var(--kip-contrast-dim-color)").text(l=>e$1.displayModels[l.key]?.modeText??""),b.exit().remove();}resolveTitleText(e,r=false){let t=e.name||`Charger ${e.id}`;return !r||!e.source?t:`${t} [${e.source}]`}resolveModeText(e){if(e.chargingMode)return `Mode: ${e.chargingMode.charAt(0).toUpperCase()+e.chargingMode.slice(1)}`;if(e.mode)return `Mode: ${e.mode}`;let t=[{active:e.ledsAbsorption,label:"Absorption"},{active:e.ledsBulk,label:"Bulk"},{active:e.ledsFloat,label:"Float"},{active:e.ledsInverter,label:"Inverter"},{active:e.ledsLowBattery,label:"Low Battery"},{active:e.ledsMains,label:"Mains"},{active:e.ledsOverload,label:"Overload"},{active:e.ledsTemperature,label:"Temperature"}].filter(i=>i.active===true).map(i=>i.label);return t.length?`Mode: ${t.join(" / ")}`:"Mode --"}resolveShapeMode(e){return (e.chargingMode??e.mode??"").trim().toLowerCase()}isShapeMode(e,r){return !e||!r?false:e===r||e.includes(r)}buildMetricRows(e){return this.renderMode()==="full"||this.renderMode()===null?[`${this.formatValue(e.voltage,1)}`,`${this.formatValue(e.current,1)}`,`Power: ${this.formatValue(e.power,0)}`,`Temp: ${this.formatTemperature(e.temperature)}`]:[`${this.formatValue(e.voltage,1)}`,`${this.formatValue(e.current,1)}`,`P: ${this.formatValue(e.power,0)}`,`T: ${this.formatTemperature(e.temperature)}`]}formatValue(e,r){return e==null||Number.isNaN(e)?"-":`${e.toFixed(r)}`}formatTemperature(e){return e==null||Number.isNaN(e)?"-":`${e.toFixed(0)}`}toStringValue(e){return typeof e=="string"?e:null}toBoolean(e){if(typeof e=="boolean")return e;if(typeof e=="number"){if(e===1)return true;if(e===0)return false}if(typeof e=="string"){let r=e.trim().toLowerCase();if(r==="true"||r==="1"||r==="on")return true;if(r==="false"||r==="0"||r==="off")return false}return null}resolveMostSevereState(...e){return e.some(r=>r===n$1.Alert)?n$1.Alert:e.some(r=>r===n$1.Alarm)?n$1.Alarm:e.some(r=>r===n$1.Warn)?n$1.Warn:e.some(r=>r===n$1.Normal)?n$1.Normal:null}toNumber(e,r){if(e==null||typeof e=="boolean")return null;let t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;let i=this.units.convertToUnit(r,t);return Number.isFinite(i)?i:t}static \u0275fac=function(r){return new(r||c$1)};static \u0275cmp=JD({type:c$1,selectors:[["widget-charger"]],viewQuery:function(r,t){r&1&&eg(t.svgRef,ge,5),r&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],renderMode:[1,"renderMode"]},decls:4,vars:3,consts:[["chargerSvg",""],[3,"text","color"],["aria-hidden","false",1,"charger-svg"],[1,"charger-empty"],[1,"charger-empty-title"],[1,"charger-empty-sub"]],template:function(r,t){r&1&&($h(0,"widget-title",1),wd(),$h(1,"svg",2,0),_w(3,me,5,0,"div",3)),r&2&&(Bh("text",t.displayLabel())("color",t.labelColor()),EE(3),Mw(t.hasChargers()?-1:3));},dependencies:[x],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;position:relative;overflow:hidden}.charger-svg[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20;padding:0 10px 10px}.charger-empty[_ngcontent-%COMP%]{position:absolute;inset:0;margin:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;color:var(--mat-sys-on-surface);background:color-mix(in srgb,var(--kip-widget-card-background-color) 92%,transparent)}.charger-empty-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600}.charger-empty-sub[_ngcontent-%COMP%]{font-size:14px;opacity:.8}"]})};export{le as WidgetChargerComponent};
@@ -0,0 +1 @@
1
+ import {w,dc as O,dd as $e,J as JD,b2 as Ln,b3 as Gn,b4 as Xe,b5 as Pn,b6 as kn,b7 as ft,b9 as rn,ba as Qt,de as Nt,df as Vt,bb as rt,bc as ae,bd as an,be as It,bt as u,dh as zt,bh as xp,di as jt,h as Fw,P as Pi,k as Qh,T as TT,u as ul,_ as _w,c as $h,bi as Eg,l as ud,bj as ST,m as dd,bk as cD,bl as Jw,e as EE,aA as gg,M as Mw,bm as Ig,B as Bh,bn as FT,bo as lD,g as qw,bp as gl}from'./main-BNR44HGB.js';var X=()=>({standalone:false});function Z(a,$){if(a&1&&(Pi(0,"div",3),$h(1,"i",10),TT(2),ul()),a&2){let p=qw();EE(2),gl(" ",p.data.error," ");}}var me=(()=>{class a{dialogRef=w(O);data=w($e);titleDialog="Sign in to Signal K";saveCredential(){this.data.error=null,this.dialogRef.close(this.data);}static \u0275fac=function(d){return new(d||a)};static \u0275cmp=JD({type:a,selectors:[["app-modal-user-credential"]],decls:26,vars:10,consts:[["login","ngForm"],["name","login",3,"ngSubmit"],["mat-dialog-title",""],[1,"errorMsgBox"],[1,"login-grid"],[1,"userLoginInput"],["type","text","autocomplete","username","id","username","matInput","","placeholder","User ID","name","username","required","",3,"ngModelChange","ngModel","ngModelOptions"],["type","password","autocomplete","current-password","autocapitalize","off","autocorrect","off","spellcheck","false","id","current-password","matInput","","placeholder","Password","name","current-password","required","",3,"ngModelChange","ngModel","ngModelOptions"],["mat-flat-button","","type","button",3,"mat-dialog-close"],["mat-flat-button","","type","submit",3,"disabled"],["aria-hidden","true",1,"fa-solid","fa-times-circle",2,"color","red","padding-right","5px"]],template:function(d,i){if(d&1){let s=Fw();Pi(0,"form",1,0),Qh("ngSubmit",function(){return i.saveCredential()}),Pi(2,"span",2),TT(3),ul(),Pi(4,"mat-dialog-content"),_w(5,Z,3,1,"div",3),$h(6,"br"),Pi(7,"div",4)(8,"mat-form-field",5)(9,"mat-label"),TT(10,"User ID"),ul(),Pi(11,"input",6),Eg("ngModelChange",function(r){return ud(s),ST(i.data.user,r)||(i.data.user=r),dd(r)}),ul(),cD(),Pi(12,"mat-error"),TT(13," You must enter a User ID value "),ul()(),Pi(14,"mat-form-field",5)(15,"mat-label"),TT(16,"Password"),ul(),Pi(17,"input",7),Eg("ngModelChange",function(r){return ud(s),ST(i.data.password,r)||(i.data.password=r),dd(r)}),ul(),cD(),Pi(18,"mat-error"),TT(19," You must enter a password value "),ul()()()(),$h(20,"mat-divider"),Pi(21,"mat-dialog-actions")(22,"button",8),TT(23,"Cancel"),ul(),Pi(24,"button",9),TT(25,"Sign in"),ul()()();}if(d&2){let s=Jw(1);EE(3),gg(i.titleDialog),EE(2),Mw(i.data.error?5:-1),EE(6),Ig("ngModel",i.data.user),Bh("ngModelOptions",FT(8,X)),lD(),EE(6),Ig("ngModel",i.data.password),Bh("ngModelOptions",FT(9,X)),lD(),EE(5),Bh("mat-dialog-close",false),EE(2),Bh("disabled",!s.valid);}},dependencies:[Ln,Gn,Xe,Pn,kn,ft,rn,Qt,Nt,Vt,rt,ae,an,It,u,zt,xp,jt],styles:[".errorMsgBox[_ngcontent-%COMP%]{background-color:#fff8dc;color:#2f4f4f;display:flex;padding:5px;font-family:Arial,Times,serif;font-size:14px}.login-grid[_ngcontent-%COMP%]{display:grid;gap:10px;padding-left:10px;padding-right:10px}.userLoginInput[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return a})();export{me as m};
@@ -0,0 +1 @@
1
+ import {d1 as Hj,w,du as p,dv as rt$1,cu as T,a as G,aZ as R,aY as xe,$ as $j,v as vt,bG as Bj,D as Dt,F as Fa,dn as ge,a_ as Gp,J as JD,b2 as Ln,b4 as Xe,b5 as Pn,b9 as rn,O as Op,bh as xp,y as yt,b as wt,cR as zt,bg as mt$1,bd as an,P as Pi,c as $h,u as ul,k as Qh,cn as wd,T as TT,_ as _w,e as EE,M as Mw,f as eg,K as Kw,g as qw,bp as gl,h as Fw,cV as Td,bi as Eg,bk as cD,bm as Ig,bo as lD,l as ud,m as dd,bj as ST}from'./main-BNR44HGB.js';import {c}from'./chunk-D_wrJJxl.js';var at=["canvasMainRef"];function ot(o,v){if(o&1&&(Pi(0,"div",8),wd(),Pi(1,"svg",11)(2,"text",12),TT(3),ul()()()),o&2){let t=qw();EE(3),gl("@ ",t.startAtTime());}}function st(o,v){if(o&1){let t=Fw();Pi(0,"button",13),Qh("click",function(){ud(t);let i=qw();return dd(i.sendStartTimerCommand("start"))}),Pi(1,"mat-icon",5),wd(),Pi(2,"svg",6)(3,"text",14),TT(4,"Start"),ul()()()(),Td(),Pi(5,"button",15),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(-60))}),Pi(6,"mat-icon",5),wd(),Pi(7,"svg",6)(8,"text",14),TT(9,"-1m"),ul()()()(),Td(),Pi(10,"button",16),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(60))}),Pi(11,"mat-icon",5),wd(),Pi(12,"svg",6)(13,"text",14),TT(14,"+1m"),ul()()()();}}function rt(o,v){if(o&1){let t=Fw();Pi(0,"button",17),Qh("click",function(){ud(t);let i=qw();return dd(i.sendStartTimerCommand("sync"))}),Pi(1,"mat-icon",5),wd(),Pi(2,"svg",18)(3,"text",19),TT(4,"Sync"),ul()()()(),Td(),Pi(5,"button",20),Qh("click",function(){ud(t);let i=qw();return dd(i.sendStartTimerCommand("reset"))}),Pi(6,"mat-icon",5),wd(),Pi(7,"svg",18)(8,"text",19),TT(9,"Reset"),ul()()()();}}function lt(o,v){if(o&1){let t=Fw();Pi(0,"button",21),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(-60))}),Pi(1,"mat-icon",5),wd(),Pi(2,"svg",22)(3,"text",23),TT(4,"-1m"),ul()()()(),Td(),Pi(5,"button",24),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(-1))}),Pi(6,"mat-icon",5),wd(),Pi(7,"svg",22)(8,"text",23),TT(9,"-1s"),ul()()()(),Td(),Pi(10,"button",25),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(1))}),Pi(11,"mat-icon",5),wd(),Pi(12,"svg",22)(13,"text",23),TT(14,"+1s"),ul()()()(),Td(),Pi(15,"button",26),Qh("click",function(){ud(t);let i=qw();return dd(i.adjustStartTime(60))}),Pi(16,"mat-icon",5),wd(),Pi(17,"svg",22)(18,"text",23),TT(19,"+1m"),ul()()()();}}function mt(o,v){if(o&1){let t=Fw();Pi(0,"input",27),Eg("ngModelChange",function(i){ud(t);let a=qw();return ST(a.startAtTimeEdit,i)||(a.startAtTimeEdit=i),dd(i)}),Qh("change",function(){ud(t);let i=qw();return dd(i.setStartTime())}),ul(),cD();}if(o&2){let t=qw();Ig("ngModel",t.startAtTimeEdit),lD();}}function ct(o,v){o&1&&$h(0,"div",10);}var Et=(()=>{class o{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={supportAutomaticHistoricalSeries:false,displayName:"TTS",nextDashboard:0,playBeeps:true,filterSelfPaths:true,paths:{ttsPath:{description:"Time to the Start in seconds",path:"self.navigation.racing.timeToStart",source:"default",pathType:"number",pathRequired:false,isPathConfigurable:false,convertUnitTo:"s",showConvertUnitTo:false,showPathSkUnitsFilter:false,pathSkUnitsFilter:"s",sampleTime:500},startTimePath:{description:"Time of the start",path:"self.navigation.racing.startTime",source:"default",pathType:"Date",pathRequired:false,isPathConfigurable:false,sampleTime:500},dtsPath:{description:"Distance to Start Line path, used to determine OCS",path:"self.navigation.racing.distanceStartline",source:"default",pathType:"number",pathRequired:false,isPathConfigurable:false,convertUnitTo:"m",showPathSkUnitsFilter:false,pathSkUnitsFilter:"m",sampleTime:500}},color:"contrast",enableTimeout:false,dataTimeout:5,ignoreZones:true};runtime=w(p);streams=w(rt$1);signalk=w(T);dashboard=w(G);canvas=w(R);destroyRef=w(xe);canvasRef=$j.required("canvasMainRef");canvasElement=null;ctx=null;cssWidth=0;cssHeight=0;titleBitmap=null;titleBitmapText=null;titleBitmapColor=null;labelColor=vt("");mode=vt(1);ttsValue=null;dtsValue=null;valueColor="";valueStateColor="";startAtTime=vt("00:00:00");startAtTimeEdit=Bj("");normalizedConfig=Dt(()=>this.runtime.options()??o.DEFAULT_CONFIG);constructor(){Fa(()=>{let t=this.normalizedConfig(),e=this.theme();e&&ge(()=>{let i=c(t.color??"contrast",e);this.labelColor.set(i.dim),this.valueColor=i.color,this.valueStateColor=i.color,this.draw();});}),Fa(()=>{let t=this.normalizedConfig();t.paths?.ttsPath?.path&&ge(()=>this.streams.observe("ttsPath",a=>{let s=this.ttsValue;this.ttsValue=a?.data?.value??null,this.updateValueColor(),this.draw(),this.shouldBeep(s,this.ttsValue)&&this.beepForValue(this.ttsValue),(t.nextDashboard??-1)>=0&&s===1&&this.ttsValue===0&&(!this.dtsValue||this.dtsValue>=0);}));}),Fa(()=>{this.normalizedConfig().paths?.startTimePath?.path&&ge(()=>this.streams.observe("startTimePath",a=>{let s=a?.data?.value;if(!s)this.startAtTime.set("HH:MM:SS"),this.startAtTimeEdit.set("HH:MM:SS"),this.mode()===2&&this.mode.set(1);else {let l=new Date(s);this.startAtTimeEdit.set(l.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})),this.startAtTime.set(this.startAtTimeEdit());}this.draw();}));}),Fa(()=>{this.normalizedConfig().paths?.dtsPath?.path&&ge(()=>this.streams.observe("dtsPath",a=>{this.dtsValue=a?.data?.value??null;}));}),this.signalk.subscribeRequest().pipe(Gp(this.destroyRef)).subscribe(t=>{t.widgetUUID===this.id()&&t.statusCode===200&&this.beep(600,20);});}ngAfterViewInit(){this.canvasElement=this.canvasRef().nativeElement,this.ctx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:true,onResize:(t,e)=>{this.cssWidth=t,this.cssHeight=e,this.draw();}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),this.draw();}ngOnDestroy(){try{this.canvasElement&&this.canvas.unregisterCanvas(this.canvasElement);}catch(t){}}toggleMode(){this.mode.update(e=>(e+1)%5);let t=this.ttsValue;this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2),this.mode()===2&&t!==0&&!this.isStartTimerRunning()&&this.mode.set(3),this.draw();}sendStartTimerCommand(t){this.signalk.putRequest("navigation.racing.setStartTime",{command:t},this.id()),t==="start"&&this.mode.set(0),t==="reset"&&(this.startAtTime.set("HH:MM:SS"),this.mode.set(1));}adjustStartTime(t){this.signalk.putRequest("navigation.racing.setStartTime",{command:"adjust",delta:t},this.id());}setStartTime(){let t=new Date,e=this.startAtTimeEdit().split(":").map(Number),i=e[0],a=e[1],s=e.length>=3?e[2]:0,l=new Date(t);l.setHours(i,a,s,0),l<=t&&l.setDate(l.getDate()+1),this.mode.set(0),this.signalk.putRequest("navigation.racing.setStartTime",{command:"set",startTime:l.toISOString()},this.id());}isStartTimerRunning(){return (this.ttsValue??0)>0&&this.startAtTime()!==null&&this.startAtTime()!=="HH:MM:SS"}shouldBeep(t,e){return e==null||this.startAtTime()==="HH:MM:SS"||!this.runtime.options()?.playBeeps?false:e===0&&t!==0||e<10&&e>=0||e<60&&e%10===0?true:e%60===0}beepForValue(t){t===0?this.beep(500,1e3):t<10?this.beep(450,100):t<60&&t%10===0?this.beep(400,150):t%60===0&&this.beep(350,200);}updateValueColor(){let t=this.theme(),e=this.normalizedConfig();t&&(e.ignoreZones?this.ttsValue?this.ttsValue===0?this.valueStateColor=this.valueColor:this.ttsValue<10?this.valueStateColor=(this.dtsValue??0)<0?t.zoneAlarm:t.zoneWarn:this.ttsValue<60?this.valueStateColor=t.zoneAlert:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor:this.valueStateColor=this.valueColor,this.ttsValue===0?(this.mode.set(2),(this.dtsValue??0)<0&&(this.valueStateColor=t.zoneAlarm)):this.mode()===1&&this.isStartTimerRunning()&&this.mode.set(2));}toHHMMSS(t){if(t==null||isNaN(t))return "-:--";let e=t<0;e&&(t=-t);let i=Math.floor(t/3600),a=Math.floor(t%3600/60),s=Math.floor(t%60),l=e?"-":"";return i===0?`${l}${a.toString().padStart(1,"0")}:${s.toString().padStart(2,"0")}`:`${l}${i.toString().padStart(1,"0")}:${a.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`}getValueText(){return this.toHHMMSS(this.ttsValue??0)}draw(){if(!this.ctx||!this.canvasElement)return;let e=this.runtime.options()?.displayName||"TTS",i=this.labelColor();(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==e||this.titleBitmapColor!==i)&&(this.titleBitmap=this.canvas.createTitleBitmap(e,i,"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=e,this.titleBitmapColor=i),this.canvas.clearCanvas(this.ctx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.ctx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight),this.canvas.drawText(this.ctx,this.getValueText(),Math.floor(this.cssWidth*.5),Math.floor(this.cssHeight*.55),Math.floor(this.cssWidth*.95),Math.floor(this.cssHeight*.9),"bold",this.valueStateColor,"center","middle");}beep(t=440,e=100){if(!this.runtime.options()?.playBeeps)return;let i=window.AudioContext||window.webkitAudioContext,a=new i,s=a.createOscillator(),l=a.createGain();s.connect(l),l.connect(a.destination),s.type="sine",s.frequency.value=t,l.gain.value=.1,s.start(),s.stop(a.currentTime+e/1e3);}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=JD({type:o,selectors:[["widget-racer-timer"]],viewQuery:function(e,i){e&1&&eg(i.canvasRef,at,5),e&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"],startAtTimeEdit:[1,"startAtTimeEdit"]},outputs:{startAtTimeEdit:"startAtTimeEditChange"},decls:15,vars:2,consts:[["canvasMainRef",""],[1,"filler"],[1,"timer-canvas"],[1,"buttons-container"],["mat-flat-button","","matTooltip","Select the control mode",1,"button","select-button",3,"click"],[1,"buttons-svg-icon"],["width","100%","height","100%","viewBox","0 0 80 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],["x","40","y","9"],[1,"start-at"],["matInput","","type","time","step","1","matTooltip","Set an absolute start time",1,"set-start-at",3,"ngModel"],[1,"widgetOverlay"],["width","100%","height","100%","viewBox","0 0 80 12","preserveAspectRatio","xMidYMid meet",1,"svg-content","svg-start-at"],["x","40","y","10"],["mat-flat-button","","matTooltip","Start the race timer",1,"button","main-button",3,"click"],["x","40","y","11"],["mat-flat-button","","matTooltip","Remove 1 minute from the timer",1,"button","other-small-button",3,"click"],["mat-flat-button","","matTooltip","Add 1 minute to the timer",1,"button","other-small-button",3,"click"],["mat-flat-button","","matTooltip","Sync the timer to nearest minute",1,"button","main-button",3,"click"],["width","100%","height","100%","viewBox","0 0 100 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],["x","50","y","11"],["mat-flat-button","","matTooltip","Stop and reset the timer",1,"button","other-button",3,"click"],["mat-flat-button","","matTooltip","Reduce the timer by 1 minute",1,"button","main-small-button",3,"click"],["width","100%","height","100%","viewBox","0 0 50 14","preserveAspectRatio","xMidYMid meet",1,"svg-content"],["x","25","y","11"],["mat-flat-button","","matTooltip","Reduce the timer by 1 second",1,"button","other-small-button",3,"click"],["mat-flat-button","","matTooltip","Increase the timer by 1 second",1,"button","other-small-button",3,"click"],["mat-flat-button","","matTooltip","Increase the timer by 1 minute",1,"button","main-small-button",3,"click"],["matInput","","type","time","step","1","matTooltip","Set an absolute start time",1,"set-start-at",3,"ngModelChange","change","ngModel"]],template:function(e,i){if(e&1&&(Pi(0,"div",1),$h(1,"canvas",2,0),ul(),Pi(3,"div",3)(4,"button",4),Qh("click",function(){return i.toggleMode()}),Pi(5,"mat-icon",5),wd(),Pi(6,"svg",6)(7,"text",7),TT(8,"\u22EE"),ul()()()(),_w(9,ot,4,1,"div",8)(10,st,15,0)(11,rt,10,0)(12,lt,20,0)(13,mt,1,1,"input",9),ul(),_w(14,ct,1,0,"div",10)),e&2){let a;EE(9),Mw((a=i.mode())===0?9:a===1?10:a===2?11:a===3?12:a===4?13:-1),EE(5),Mw(i.dashboard.isDashboardStatic()?-1:14);}},dependencies:[Ln,Xe,Pn,rn,Op,xp,yt,wt,zt,mt$1,an],styles:["[_nghost-%COMP%]{overflow:clip;display:block;height:100%;width:100%}.timer-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;min-height:1px}.timer-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;display:block}.filler[_ngcontent-%COMP%]{width:100%;height:76%}.buttons-container[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;justify-content:space-between;column-gap:2%;position:relative;height:24%;width:100%;padding:0 10px 14px;z-index:20;pointer-events:auto;align-items:center}.button[_ngcontent-%COMP%]{min-width:0px;width:100%;border-radius:12px;align-items:center;justify-content:center;cursor:pointer;--mat-button-filled-container-height: 100%;--mat-button-filled-horizontal-padding: 0px;--mat-button-filled-icon-spacing: 0px}.select-button[_ngcontent-%COMP%]{flex:none;width:18%;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.main-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-port-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.other-small-button[_ngcontent-%COMP%]{flex:1 1 auto;--mat-button-filled-container-color: var(--kip-blue-color);--mat-button-filled-label-text-color: var(--kip-contrast-color)}.set-start-at[_ngcontent-%COMP%]{flex:1 1 auto;background-color:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%]{height:100%;width:100%;flex:1 1 auto}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.start-at[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:9px;font-weight:400;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.buttons-svg-icon[_ngcontent-%COMP%]{width:100%;height:100%;margin:0;padding:0}.svg-content[_ngcontent-%COMP%]{width:100%;height:100%;padding:0;margin:0}.svg-content[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{font-family:Roboto;font-size:15px;font-weight:700;text-align:center;text-anchor:middle;font-style:normal;font-variant:normal;font-stretch:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke:none}.svg-start-at[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color)}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return o})();export{Et as WidgetRacerTimerComponent};
@@ -0,0 +1 @@
1
+ import {d1 as Hj,w,du as p,dv as rt,aZ as R,D as Dt,$ as $j,v as vt,F as Fa,dn as ge,J as JD,cp as Uh,f as eg,K as Kw}from'./main-BNR44HGB.js';import {c}from'./chunk-D_wrJJxl.js';var E=["canvasMainRef"],O=(()=>{class s{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={displayName:"Gauge Label",filterSelfPaths:true,paths:{stringPath:{description:"String Data",path:null,source:null,pathType:"string",isPathConfigurable:true,sampleTime:500}},color:"contrast",enableTimeout:false,dataTimeout:5};runtime=w(p);stream=w(rt);canvas=w(R);normalizedConfig=Dt(()=>this.runtime.options()??s.DEFAULT_CONFIG);stringPathConfig=Dt(()=>this.normalizedConfig().paths?.stringPath);canvasMainRef=$j.required("canvasMainRef");canvasElement;canvasCtx=null;titleBitmap=null;titleBitmapText=null;cssWidth=0;cssHeight=0;dataValue=null;labelColor=vt("");valueColor="";isDestroyed=false;streamRegistered=false;constructor(){Fa(()=>{let t=this.theme();ge(()=>{t&&(this.setColors(),this.drawWidget());});}),Fa(()=>{this.normalizedConfig();this.isDestroyed||!this.canvasCtx||ge(()=>{this.setColors(),this.startWidget(),this.drawWidget();});});}ngOnInit(){this.setColors();}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:true,onResize:(t,e)=>{this.cssWidth=t,this.cssHeight=e,this.drawWidget();}}),this.cssHeight=Math.round(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.round(this.canvasElement.getBoundingClientRect().width),!this.isDestroyed&&this.startWidget();}startWidget(){this.dataValue=null,this.streamRegistered||(this.stringPathConfig()?.path?(this.stream.observe("stringPath",e=>{this.dataValue=e.data.value,this.drawWidget();}),this.streamRegistered=true):this.drawWidget());}setColors(){let e=this.normalizedConfig().color??"contrast";this.labelColor.set(c(e,this.theme()).dim),this.valueColor=c(e,this.theme()).color;}ngOnDestroy(){this.isDestroyed=true;try{this.canvas.unregisterCanvas(this.canvasElement);}catch(t){}}drawWidget(){if(!this.canvasCtx)return;let t=Math.floor(this.cssHeight*.1),i=this.normalizedConfig().displayName??"Gauge Label",y=i+"|"+this.labelColor();(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==y)&&(this.titleBitmap=this.canvas.createTitleBitmap(i,this.labelColor(),"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=i+"|"+this.labelColor()),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let b=this.dataValue===null?"--":this.dataValue,h=this.canvas.EDGE_BUFFER||10,d=Math.max(0,this.cssHeight-t-2*h),W=Math.max(0,Math.floor(this.cssWidth-2*h)),w=Math.max(0,Math.floor(d)),D=Math.floor(this.cssWidth/2),B=Math.floor(t+h+d/2);this.canvas.drawText(this.canvasCtx,b,D,B,W,w,"bold",this.valueColor,"center","middle");}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=JD({type:s,selectors:[["widget-text"]],viewQuery:function(e,i){e&1&&eg(i.canvasMainRef,E,5),e&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"text-canvas"]],template:function(e,i){e&1&&Uh(0,"canvas",1,0);},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.text-canvas[_ngcontent-%COMP%]{display:block;width:100%!important;height:100%!important;min-height:1px}"]})}return s})();export{O as WidgetTextComponent};
@@ -0,0 +1 @@
1
+ import {d1 as Hj,w,du as p,dv as rt,$ as $j,aZ as R$1,v as vt,D as Dt,F as Fa,dn as ge,dS as Da,J as JD,cp as Uh,f as eg,K as Kw}from'./main-BNR44HGB.js';import {c}from'./chunk-D_wrJJxl.js';var x=["canvasMainRef"],R=(()=>{class s{id=Hj.required();type=Hj.required();theme=Hj.required();runtime=w(p);streams=w(rt);static DEFAULT_CONFIG={displayName:"Time Label",filterSelfPaths:true,paths:{gaugePath:{description:"Date / Time",path:null,source:null,pathType:"Date",isPathConfigurable:true,sampleTime:1e3}},dateFormat:"dd/MM/yyyy HH:mm:ss",dateTimezone:"Atlantic/Azores",color:"contrast",enableTimeout:false,dataTimeout:5};canvasMainRef=$j.required("canvasMainRef");canvasElement;canvasCtx=null;titleBitmap=null;titleBitmapText=null;titleBitmapColor=null;canvas=w(R$1);cssWidth=0;cssHeight=0;dataValue=vt(null);_timeZoneGTM="";isDestroyed=false;labelColor=vt("");valueColor="";maxTextWidth=0;maxTextHeight=0;displayName=Dt(()=>this.runtime.options()?.displayName??"Time Label");dateFormat=Dt(()=>this.runtime.options()?.dateFormat??"dd/MM/yyyy HH:mm:ss");dateTimezone=Dt(()=>this.runtime.options()?.dateTimezone??"System Timezone -");constructor(){Fa(()=>{let e=this.runtime.options(),t=this.theme();!e||!t||ge(()=>{this.applyColors(),e.paths?.gaugePath?.path&&(this._timeZoneGTM=this.getGMTOffset(this.dateTimezone()),this.streams.observe("gaugePath",a=>{this.dataValue.set(a?.data?.value??null),this.drawWidget();}));});}),Fa(()=>{let e=this.theme(),t=this.runtime.options();!e||!t||ge(()=>{this.applyColors(),this.drawWidget();});});}ngAfterViewInit(){this.canvasElement=this.canvasMainRef().nativeElement,this.canvasCtx=this.canvasElement.getContext("2d"),this.canvas.registerCanvas(this.canvasElement,{autoRelease:true,onResize:(e,t)=>{this.cssWidth=e,this.cssHeight=t,this.maxTextWidth=Math.floor(this.cssWidth*.85),this.maxTextHeight=Math.floor(this.cssHeight*.7),this.drawWidget();}}),!this.isDestroyed&&(this.cssHeight=Math.floor(this.canvasElement.getBoundingClientRect().height),this.cssWidth=Math.floor(this.canvasElement.getBoundingClientRect().width),this.maxTextWidth=Math.floor(this.canvasElement.width*.85),this.maxTextHeight=Math.floor(this.canvasElement.height*.7),this.applyColors(),this.drawWidget());}getGMTOffset(e){try{if(e==="System Timezone -")return "";let a=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"short"}).formatToParts(new Date).find(M=>M.type==="timeZoneName");return a?a.value:"GMT"}catch(t){return console.error(`Error getting GMT offset for timezone "${e}":`,t),"GMT"}}applyColors(){let e=this.runtime.options(),t=this.theme();!e||!t||(this.labelColor.set(c(e.color??"contrast",t).dim),this.valueColor=c(e.color??"contrast",t).color);}ngOnDestroy(){this.isDestroyed=true;try{this.canvas.unregisterCanvas(this.canvasElement);}catch(e){}}drawWidget(){if(!this.canvasCtx)return;let e=this.labelColor();(!this.titleBitmap||this.titleBitmap.width!==this.canvasElement.width||this.titleBitmap.height!==this.canvasElement.height||this.titleBitmapText!==`${this.displayName()}-${this.runtime.options()?.color??"contrast"}`||this.titleBitmapColor!==e)&&(this.titleBitmap=this.canvas.createTitleBitmap(this.displayName(),e,"normal",this.cssWidth,this.cssHeight),this.titleBitmapText=`${this.displayName()}-${this.runtime.options()?.color??"contrast"}`,this.titleBitmapColor=e),this.canvas.clearCanvas(this.canvasCtx,this.cssWidth,this.cssHeight),this.titleBitmap&&this.titleBitmap.width>0&&this.titleBitmap.height>0&&this.canvasCtx.drawImage(this.titleBitmap,0,0,this.cssWidth,this.cssHeight);let t,i=this.dataValue();if(!i||isNaN(Date.parse(i)))t="--";else try{t=Da(i,this.dateFormat(),"en-US",this._timeZoneGTM);}catch(a){t=String(a),console.log("[Date Time Widget]: "+String(a));}this.canvas.drawText(this.canvasCtx,t,Math.floor(this.cssWidth/2),Math.floor(this.cssHeight/2*1.15),this.maxTextWidth,this.maxTextHeight,"bold",this.valueColor);}static \u0275fac=function(t){return new(t||s)};static \u0275cmp=JD({type:s,selectors:[["widget-datetime"]],viewQuery:function(t,i){t&1&&eg(i.canvasMainRef,x,5),t&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:2,vars:0,consts:[["canvasMainRef",""],[1,"date-canvas"]],template:function(t,i){t&1&&Uh(0,"canvas",1,0);},styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%;overflow:hidden}.date-canvas[_ngcontent-%COMP%]{width:100%!important;height:100%!important;min-height:1px;display:block}"]})}return s})();export{R as WidgetDatetimeComponent};
@@ -0,0 +1 @@
1
+ import {v,R,S}from'./chunk-CQNVyz8q.js';import {d1 as Hj,w,du as p,dv as rt$1,v as vt,D as Dt,F as Fa,dn as ge,J as JD,c as $h,B as Bh,$ as $j,ao as ue,dz as es,cn as wd,ci as dl,cp as Uh,cj as fl,T as TT,bD as HT,e as EE,d as ig,an as Hh,bp as gl,dA as UT,aA as gg,f as eg,K as Kw,aI as ms}from'./main-BNR44HGB.js';var it=["rotatingDial"],at=["twaIndicator"],ot=["wptIndicator"],rt=["setIndicator"],st=["tackIndicator"],Q=([y,K],[t,n],[e,a])=>(Math.atan2(a-n,e-t)-Math.atan2(K-n,y-t)+3*Math.PI)%(2*Math.PI)-Math.PI,J=(()=>{class y{rotatingDial=$j.required("rotatingDial");twaIndicator=$j.required("twaIndicator");wptIndicator=$j.required("wptIndicator");setIndicator=$j.required("setIndicator");tackIndicator=$j.required("tackIndicator");compassHeading=Hj.required();tackTrue=Hj.required();polarSpeedRatio=Hj.required();trueWindAngle=Hj.required();trueWindSpeed=Hj.required();targetAngle=Hj.required();optimalWindAngle=Hj.required();targetVMG=Hj.required();VMG=Hj.required();sailSetupEnabled=Hj.required();driftEnabled=Hj.required();driftSet=Hj();driftFlow=Hj();waypointEnabled=Hj.required();waypointAngle=Hj();vmgToWaypoint=Hj();trueWindMinHistoric=Hj();trueWindMidHistoric=Hj();trueWindMaxHistoric=Hj();gradianColor=Hj.required();compass={oldValue:0,newValue:0};twa={oldValue:0,newValue:0};wpt={oldValue:0,newValue:0};tack={oldValue:0,newValue:0};set={oldValue:0,newValue:0};compassInitialized=false;twaInitialized=false;wptInitialized=false;tackInitialized=false;setInitialized=false;laylinesInitialized=false;headingValue=vt("--");windSectorsInitialized=false;trueWindHeading=0;nextTargetDirection=Dt(()=>{let t=this.compassHeading(),n=this.tackTrue();return t==null||n==null?0:this.unsignedAngleDelta(t,n)});trueWindSpeedDisplay=Dt(()=>{let t=this.trueWindSpeed();return t==null?"--":t.toFixed(1)});windAnglePerformanceRatioColor=Dt(()=>{let t=this.optimalWindAngle(),n=this.targetAngle(),e=this.gradianColor().start,a=this.gradianColor().stop;if(t==null||n==null)return e;let i=1-Math.abs(t-n)/180;return this.interpolateColor(e,a,i)});targetVMGOffset=Dt(()=>{let t=this.VMG(),n=this.targetVMG();return t==null||n==null?"--":(t-n).toFixed(1)});targetVMGOffsetRatioColor=Dt(()=>{let t=this.VMG(),n=this.targetVMG(),e=this.gradianColor().start,a=this.gradianColor().stop;if(t==null||n==null)return e;let i=t/n;return this.interpolateColor(e,a,i)});waypointActive=vt(false);flow=Dt(()=>{let t=this.driftFlow();return t==null?"--":t.toFixed(1)});portLaylinePrev=0;stbdLaylinePrev=0;portLaylineAnimId=null;stbdLaylineAnimId=null;CENTER_X=600;CENTER_Y=620;RADIUS=540;ANIMATION_DURATION=1e3;laylinePortPath=vt(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);laylineStbdPath=vt(`M ${this.CENTER_X},${this.CENTER_Y} ${this.CENTER_X},${this.CENTER_Y}`);portSectorPrev={min:0,mid:0,max:0};stbdSectorPrev={min:0,mid:0,max:0};portSectorAnimId=null;stbdSectorAnimId=null;portWindSectorPath=vt("");stbdWindSectorPath=vt("");speedLineTipY=vt(620);speedTipPoints=vt("600,570 580,600 620,600");speedRatioColor=vt("");speedLinePrevRatio=0;speedLinePrevTipY=600;speedLineAnimId=null;speedLineInitialized=false;animationFrameIds=new WeakMap;ngZone=w(ue);setRotationImmediate(t,n){t.setAttribute("transform",`rotate(${n} 600 620)`);}constructor(){Fa(()=>{let t=this.waypointEnabled();ge(()=>{this.waypointActive.set(t);});}),Fa(()=>{let t=this.compassHeading(),n=Number.isFinite(t)?Math.round(t):null;n!=null&&ge(()=>{this.compassInitialized?(this.compass.oldValue=this.compass.newValue,this.compass.newValue=n):(this.compass.oldValue=n,this.compass.newValue=n,this.compassInitialized=true),this.headingValue.set(n.toString()),this.rotatingDial()?.nativeElement&&(this.compass.oldValue===this.compass.newValue?this.setRotationImmediate(this.rotatingDial().nativeElement,-this.compass.newValue):S(this.rotatingDial().nativeElement,-this.compass.oldValue,-this.compass.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateWindSectors());});}),Fa(()=>{let t=this.targetAngle(),n=Number.isFinite(t)?Math.round(t):null;n!=null&&ge(()=>{this.tackInitialized?(this.tack.oldValue=this.tack.newValue,this.tack.newValue=n):(this.tack.oldValue=n,this.tack.newValue=n,this.tackInitialized=true),this.tackIndicator()?.nativeElement&&(this.tack.oldValue===this.tack.newValue?this.setRotationImmediate(this.tackIndicator().nativeElement,this.tack.newValue):S(this.tackIndicator().nativeElement,this.tack.oldValue,this.tack.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620])),this.updateLaylines();});}),Fa(()=>{let t=this.waypointAngle();ge(()=>{if(!t){this.waypointActive.set(false);return}this.waypointEnabled()?this.waypointActive.set(true):this.waypointActive.set(false),this.wptInitialized?(this.wpt.oldValue=this.wpt.newValue,this.wpt.newValue=t):(this.wpt.oldValue=t,this.wpt.newValue=t,this.wptInitialized=true),this.wptIndicator()?.nativeElement&&(this.wpt.oldValue===this.wpt.newValue?this.setRotationImmediate(this.wptIndicator().nativeElement,this.wpt.newValue):S(this.wptIndicator().nativeElement,this.wpt.oldValue,this.wpt.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620]));});}),Fa(()=>{let t=this.trueWindAngle(),n=Number.isFinite(t)?Math.round(t):null,e=this.compassHeading(),a=Number.isFinite(e)?Math.round(e):null;n==null||a==null||ge(()=>{this.trueWindHeading=n;let i=this.addHeading(this.trueWindHeading,a*-1);this.twaInitialized?(this.twa.oldValue=this.twa.newValue,this.twa.newValue=i):(this.twa.oldValue=i,this.twa.newValue=i,this.twaInitialized=true),this.twaIndicator()?.nativeElement&&(this.twa.oldValue===this.twa.newValue?this.setRotationImmediate(this.twaIndicator().nativeElement,this.twa.newValue):S(this.twaIndicator().nativeElement,this.twa.oldValue,this.twa.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone),this.updateLaylines());});}),Fa(()=>{let t=this.polarSpeedRatio(),n=Math.max(0,Math.min(1,t)),e=620,i=e-166,r=e-i*n;if(!this.speedLineInitialized){this.speedLineInitialized=true,this.speedLineTipY.set(r);let f=30,w=20,g=r-f;this.speedTipPoints.set(`600,${g} ${600-w},${r} ${600+w},${r}`),this.speedRatioColor.set(this.interpolateColor(this.gradianColor().start,this.gradianColor().stop,n)),this.speedLinePrevTipY=r,this.speedLinePrevRatio=n;return}this.animateSpeedLine(this.speedLinePrevTipY,r),this.speedLinePrevTipY=r,this.speedLinePrevRatio=n;}),Fa(()=>{let t=this.driftSet(),n=Number.isFinite(t)?Math.round(t):null;n!=null&&ge(()=>{this.setInitialized?(this.set.oldValue=this.set.newValue,this.set.newValue=n):(this.set.oldValue=n,this.set.newValue=n,this.setInitialized=true),this.setIndicator()?.nativeElement&&(this.set.oldValue===this.set.newValue?this.setRotationImmediate(this.setIndicator().nativeElement,this.set.newValue):S(this.setIndicator().nativeElement,this.set.oldValue,this.set.newValue,this.ANIMATION_DURATION,void 0,this.animationFrameIds,[600,620],this.ngZone));});});}updateLaylines(){if(!this.twaInitialized)return;let t=this.targetAngle(),n=Number.isFinite(t)?Math.round(t):null;if(n==null)return;n=n/2;let e=Number(this.twa.newValue),a=e-n,i=e+n;if(!this.laylinesInitialized){this.laylinesInitialized=true,this.setLaylinePath(a,true),this.setLaylinePath(i,false),this.portLaylinePrev=a,this.stbdLaylinePrev=i;return}this.animateLayline(this.portLaylinePrev,a,true),this.portLaylinePrev=a,this.animateLayline(this.stbdLaylinePrev,i,false),this.stbdLaylinePrev=i;}animateLayline(t,n,e){e&&this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),!e&&this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId);let a=()=>{e?this.portLaylineAnimId=null:this.stbdLaylineAnimId=null;},i=v(t,n,this.ANIMATION_DURATION,r=>this.setLaylinePath(r,e),a,this.ngZone);e?this.portLaylineAnimId=i:this.stbdLaylineAnimId=i;}updateWindSectors(){if(this.trueWindMinHistoric()==null||this.trueWindMidHistoric()==null||this.trueWindMaxHistoric()==null)return;let t={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()},n={min:this.trueWindMinHistoric(),mid:this.trueWindMidHistoric(),max:this.trueWindMaxHistoric()};if(!this.windSectorsInitialized){this.portSectorPrev=t,this.stbdSectorPrev=n,this.windSectorsInitialized=true,this.animateWindSector(t,t,true),this.animateWindSector(n,n,false);return}this.animateWindSector(this.portSectorPrev,t,true),this.animateWindSector(this.stbdSectorPrev,n,false),this.portSectorPrev=t,this.stbdSectorPrev=n;}animateWindSector(t,n,e){e&&this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),!e&&this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId);let a=()=>{e?this.portSectorAnimId=null:this.stbdSectorAnimId=null;},i=R(t,n,this.ANIMATION_DURATION,r=>this.setWindSectorPath(r,e),a,this.ngZone);e?this.portSectorAnimId=i:this.stbdSectorAnimId=i;}animateSpeedLine(t,n){this.speedLineAnimId&&(cancelAnimationFrame(this.speedLineAnimId),this.speedLineAnimId=null);let e=1e3,a=performance.now(),i=this.speedLinePrevRatio,r=(600-n)/454,f=g=>g<.5?4*g*g*g:1-Math.pow(-2*g+2,3)/2,w=g=>{let E=g-a,x=Math.min(E/e,1),I=f(x),S=(H,et)=>H+(et-H)*I,v=S(t,n),R=S(i,r);this.speedLineTipY.set(v);let D=30,P=20,tt=v-D;this.speedTipPoints.set(`600,${tt} ${600-P},${v} ${600+P},${v}`),this.speedRatioColor.set(this.interpolateColor(this.gradianColor().start,this.gradianColor().stop,R)),x<1?this.speedLineAnimId=requestAnimationFrame(w):this.speedLineAnimId=null;};requestAnimationFrame(w);}interpolateColor(t,n,e){e=Math.max(0,Math.min(1,e));function a(v){v=v.replace("#",""),v.length===3&&(v=v.split("").map(D=>D+D).join(""));let R=parseInt(v,16);return [R>>16&255,R>>8&255,R&255]}let[i,r,f]=a(t),[w,g,E]=a(n),x=Math.round(i+(w-i)*e),I=Math.round(r+(g-r)*e),S=Math.round(f+(E-f)*e);return `rgb(${x},${I},${S})`}addHeading(t=0,n=0){return ((t+n)%360+360)%360}unsignedAngleDelta(t,n){let e=(t-n+540)%360-180;return Math.abs(e)}normalizeAngle(t){return (t%360+360)%360}setLaylinePath(t,n){let e=this.normalizeAngle(t)*Math.PI/180,a=Math.floor(this.RADIUS*Math.sin(e)+this.CENTER_X),i=Math.floor(this.RADIUS*Math.cos(e)*-1+this.CENTER_Y);n?this.laylinePortPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${a},${i}`):this.laylineStbdPath.set(`M ${this.CENTER_X},${this.CENTER_Y} L ${a},${i}`);}setWindSectorPath(t,n){let e=this.addHeading(this.addHeading(t.min,Number(this.compass.newValue)*-1),this.targetAngle()/2*(n?-1:1)),a=this.addHeading(this.addHeading(t.mid,Number(this.compass.newValue)*-1),this.targetAngle()/2*(n?-1:1)),i=this.addHeading(this.addHeading(t.max,Number(this.compass.newValue)*-1),this.targetAngle()/2*(n?-1:1)),r=this.RADIUS*Math.sin(e*Math.PI/180)+this.CENTER_X,f=this.RADIUS*Math.cos(e*Math.PI/180)*-1+this.CENTER_Y,w=this.RADIUS*Math.sin(a*Math.PI/180)+this.CENTER_X,g=this.RADIUS*Math.cos(a*Math.PI/180)*-1+this.CENTER_Y,E=this.RADIUS*Math.sin(i*Math.PI/180)+this.CENTER_X,x=this.RADIUS*Math.cos(i*Math.PI/180)*-1+this.CENTER_Y,I=Math.abs(Q([r,f],[w,g],[E,x]))>Math.PI/2?0:1,S=Q([E,x],[r,f],[w,g])>0?0:1,v=`M ${this.CENTER_X},${this.CENTER_Y} L ${r},${f} A ${this.RADIUS},${this.RADIUS} 0 ${I} ${S} ${E},${x} z`;n?this.portWindSectorPath.set(v):this.stbdWindSectorPath.set(v);}ngOnDestroy(){this.portLaylineAnimId&&cancelAnimationFrame(this.portLaylineAnimId),this.stbdLaylineAnimId&&cancelAnimationFrame(this.stbdLaylineAnimId),this.portLaylineAnimId=null,this.stbdLaylineAnimId=null,this.portSectorAnimId&&cancelAnimationFrame(this.portSectorAnimId),this.stbdSectorAnimId&&cancelAnimationFrame(this.stbdSectorAnimId),this.portSectorAnimId=null,this.stbdSectorAnimId=null;let t=[this.rotatingDial(),this.twaIndicator(),this.wptIndicator(),this.setIndicator()];for(let n of t){let e=n?.nativeElement;if(!e)continue;let a=this.animationFrameIds.get(e);a&&cancelAnimationFrame(a),this.animationFrameIds.delete(e);}}static \u0275fac=function(n){return new(n||y)};static \u0275cmp=JD({type:y,selectors:[["svg-racesteer"]],viewQuery:function(n,e){n&1&&eg(e.rotatingDial,it,5)(e.twaIndicator,at,5)(e.wptIndicator,ot,5)(e.setIndicator,rt,5)(e.tackIndicator,st,5),n&2&&Kw(5);},inputs:{compassHeading:[1,"compassHeading"],tackTrue:[1,"tackTrue"],polarSpeedRatio:[1,"polarSpeedRatio"],trueWindAngle:[1,"trueWindAngle"],trueWindSpeed:[1,"trueWindSpeed"],targetAngle:[1,"targetAngle"],optimalWindAngle:[1,"optimalWindAngle"],targetVMG:[1,"targetVMG"],VMG:[1,"VMG"],sailSetupEnabled:[1,"sailSetupEnabled"],driftEnabled:[1,"driftEnabled"],driftSet:[1,"driftSet"],driftFlow:[1,"driftFlow"],waypointEnabled:[1,"waypointEnabled"],waypointAngle:[1,"waypointAngle"],vmgToWaypoint:[1,"vmgToWaypoint"],trueWindMinHistoric:[1,"trueWindMinHistoric"],trueWindMidHistoric:[1,"trueWindMidHistoric"],trueWindMaxHistoric:[1,"trueWindMaxHistoric"],gradianColor:[1,"gradianColor"]},decls:174,vars:39,consts:[["rotatingDial",""],["tackIndicator",""],["twaIndicator",""],["wptIndicator",""],["setIndicator",""],["viewBox","0 0 1200 1200"],["id","defs1"],["id","linearGradient18"],["offset","0",1,"boat",2,"stop-opacity","0.71372495"],["offset","1",1,"boat",2,"stop-opacity","0"],["id","linearGradient16"],["id","linearGradient13"],["offset","0.41176471",1,"drift-arrow",2,"stop-opacity","1"],["offset","1",1,"drift-arrow",2,"stop-opacity","0"],["id","swatch4"],["offset","0","id","stop4",2,"stop-color","#000000","stop-opacity","1"],["clipPathUnits","userSpaceOnUse","id","clipPath16"],["id","ellipse16","cx","311.24539","cy","-1516.3778","rx","194.27342","ry","181.83022",2,"display","inline","fill","#9a9300","fill-opacity","1","stroke","none","stroke-width","55","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],["id","linearGradient14",0,"xlink","href","#linearGradient13","x1","453.48047","y1","583.62891","x2","638.11328","y2","583.62891","gradientUnits","userSpaceOnUse","gradientTransform","matrix(0.00723393,1.2388183,-1.0538241,0.00615367,1211.2051,-79.73465)"],["id","linearGradient17",0,"xlink","href","#linearGradient16","x1","-502.04896","y1","439.35551","x2","-316","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","linearGradient19",0,"xlink","href","#linearGradient18","x1","495.83999","y1","439.35551","x2","681.88895","y2","439.35551","gradientUnits","userSpaceOnUse","gradientTransform","translate(0,49.000266)"],["id","layerBackground","transform","translate(100,100)",2,"display","inline"],["id","boat",2,"display","inline"],["id","portSide","d","M 498.75049,208.89453 A 267.09439,554.67401 0 0 1 678.45974,767.81661",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient19)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","starboardSide","d","m -499.13846,208.89453 a 267.09439,554.67401 0 0 1 179.70925,558.92208","transform","scale(-1,1)",2,"fill","none","fill-opacity","1","stroke","url(#linearGradient17)","stroke-width","5.821","stroke-linecap","round","stroke-miterlimit","0","stroke-dasharray","none"],["id","layerCompass"],["id","fixedDial"],["id","dialBackground","cx","600","cy","620","r","516",1,"fixed-dial-background",2,"display","inline","stroke-width","46"],["id","barsAndText","transform","scale(1.1) translate(45,64)",1,"contrast-stroke",2,"display","inline"],["d","m 416.35095,19.837399 2.78142,15.77426","id","path199",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 334.23173,41.658798 5.47834,15.051615","id","path200",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 260.27336,81.806174 12.55151,21.739856","id","path37",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 187.44581,126.00035 10.29591,12.2702","id","path197",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 127.23918,185.95785 12.27019,10.29591","id","path198",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 83.252815,257.66724 21.739865,12.55151","id","path166",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 42.289518,332.39273 15.05162,5.47835","id","path195",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 20.127799,414.42077 15.774251,2.78142","id","path196",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 17.879075,498.47765 H 42.982096","id","path167",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 19.776759,583.71187 15.77426,-2.78142","id","path193",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 41.598167,665.8311 15.051615,-5.47834","id","path194",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 81.668963,739.71246 103.40883,727.16095","id","path168",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 125.93981,812.61701 12.2702,-10.29591","id","path191",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 185.89732,872.82365 10.29591,-12.27019","id","path192",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 257.53004,916.73298 12.55151,-21.73985","id","path169",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 332.33219,957.7732 5.47835,-15.05162","id","path189",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 414.36024,979.93493 2.78142,-15.77425","id","path190",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 498.34046,982.10672 V 957.0037","id","path170",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 583.65133,980.28596 580.86991,964.5117","id","path187",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 665.77057,958.46456 -5.47834,-15.05161","id","path188",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 739.57526,918.31683 727.02375,896.57698","id","path171",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 812.55647,874.12301 802.26056,861.85282","id","path185",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 872.76312,814.16551 860.49293,803.8696","id","path186",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 916.59579,742.45577 894.85593,729.90426","id","path172",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 957.71266,667.73063 -15.05161,-5.47834","id","path183",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 979.8744,585.70259 -15.77425,-2.78142","id","path184",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 981.96954,501.64535 -25.10304,10e-6","id","path173",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 980.22542,416.41149 -15.77425,2.78143","id","path181",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 958.40403,334.29226 -15.05161,5.47834","id","path182",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 918.17964,260.41055 -21.73986,12.55151","id","path174",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 874.06247,187.50636 -12.27018,10.29591","id","path180",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 817.34594,130.05494 -10.40259,12.17987","id","path179",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 742.31857,83.390025 729.76706,105.12988","id","path175",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 667.6701,42.350172 -5.47834,15.051615","id","path178",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","m 585.64206,20.188432 -2.78142,15.77425","id","path176",2,"fill","none","fill-opacity","0","stroke-width","4.18042","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],["d","M 501.50816,18.016286 V 43.119307","id","path177",2,"fill","none","fill-opacity","0","stroke-width","15","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0","stroke-dasharray","none"],[0,"xml","space","preserve","x","181.91386","y","284.25186","id","text3","transform","rotate(-30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan3","x","181.91386","y","284.25186",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-183.53558","y","283.74811","id","text14","transform","rotate(-60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan14","x","-183.53558","y","283.74811",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-499.70761","y","100.95312","id","text15","transform","rotate(-90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan15","x","-499.70761","y","100.95312",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.66119","y","-216.36243","id","text16","transform","rotate(-120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["x","-681.66119","y","-216.36243","id","tspan25",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-681.06616","y","-581.71271","id","text17","transform","rotate(-150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan17","x","-681.06616","y","-581.71271",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-498.3313","y","-897.40875","id","text18","transform","scale(-1)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan18","x","-498.3313","y","-897.40875",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","-184.41313","y","-1080.8452","id","text19","transform","rotate(150)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan19","x","-184.41313","y","-1080.8452",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","181.57225","y","-1080.8853","id","text20","transform","rotate(120)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan20","x","181.57225","y","-1080.8853",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","501.42661","y","-896.93701","id","text21","transform","rotate(90)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan21","x","501.42661","y","-896.93701",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","682.35815","y","-579.63336","id","text22","transform","rotate(60)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan22","x","682.35815","y","-579.63336",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","681.81525","y","-214.27321","id","text23","transform","rotate(30)",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan23","x","681.81525","y","-214.27321",2,"font-style","normal","font-variant","normal","font-weight","normal","font-stretch","normal","font-size","44.0972px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],[0,"xml","space","preserve","x","500.15503","y","101.96342","id","text24",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","display","inline","stroke","none","stroke-width","0.47625","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0"],["id","tspan24","x","500.15503","y","101.96342",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","52.9167px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke-width","0.47625"],["id","LayerWindShift"],["id","portSectorShift",1,"wind-sector-port",2,"fill-opacity","0.4","stroke","none"],["id","StbdSectorShift",1,"wind-sector-stbd",2,"fill-opacity","0.4","stroke","none"],["id","LayerLayline"],["id","PortLayline",1,"portLayline"],["id","StbdLayline",1,"stbdLayline"],["id","layerCounter"],["id","tackCounter"],[0,"xml","space","preserve","x","1062","y","80",1,"tack-label"],["x","936","y","95","width","252","height","100","rx","20",1,"tack-box"],[0,"xml","space","preserve","x","1072","y","175","id","text42",1,"tack-value"],[2,"font-weight","normal"],["id","windVmgCounter"],[0,"xml","space","preserve","x","600","y","780",1,"tack-label"],[0,"xml","space","preserve","x","610","y","850",1,"wind-vmg-value"],[2,"font-weight","normal","font-size","30px"],[0,"xml","space","preserve","x","610","y","890",1,"wind-vmg-offset"],["id","waypointCounter"],[0,"xml","space","preserve","x","1062","y","1030",1,"tack-label"],["x","936","y","1045","width","252","height","140","rx","20",1,"waypoint-box"],[0,"xml","space","preserve","x","1060","y","1100",1,"waypoint-value"],[1,"tack-label"],[0,"xml","space","preserve","x","1060","y","1165",1,"waypoint-value"],["id","layerIndicators",2,"display","inline"],["d","m 606.20767,217.99458 a 6.3888631,8.8250643 0 0 1 -6.38888,8.82508 6.3888631,8.8250643 0 0 1 -6.38888,-8.82508 6.3888631,8.8250643 0 0 1 6.38888,-8.82509 6.3888631,8.8250643 0 0 1 6.38888,8.82509 z M 576.25472,75.811298 593.47058,58.265068 c 3.6173,-3.6867571 9.44162,-3.6867571 13.05892,0 l 17.21586,17.546106 c 3.6173,3.686743 3.6173,9.622786 0,13.309544 l -17.21595,17.54623 c -3.61721,3.686757 -9.44153,3.686757 -13.05893,0 L 576.25472,89.120841 c -3.6174,-3.686743 -3.6174,-9.622924 0,-13.309543 z m 17.20533,-16.510116 h 12.77766 V 218.26408 h -12.77766 z",1,"tack-angle"],["d","m 451.77021,5.469207 42.08541,-33.202814 a 12.555638,12.555638 0.26446337 0 1 15.64423,0.07221 l 42.20046,33.930296 a 15.557694,15.557694 71.53185 0 1 5.32954,15.957795 L 504.17034,230.15629 a 2.5373267,2.5373267 0.02614114 0 1 -4.91879,-0.002 L 446.37431,21.357036 a 15.416336,15.416336 108.75875 0 1 5.3959,-15.887829 z","transform","matrix(0.60410307,0,0,0.70555435,296.91787,121.152867)",1,"true-wind",2,"display","inline","stroke","none","stroke-width","5.8876","stroke-miterlimit","0"],[0,"xml","space","preserve","x","600","y","210","id","text10",1,"card-color",2,"font-weight","bold","font-size","60px","font-family","Roboto","text-align","center","text-anchor","middle","display","inline","stroke","none"],["cx","600","cy","225","rx","23","ry","23",1,"next-waypoint"],["id","layerDirectionSpeed"],["id","directionLine","x1","600","y1","620","x2","600","y2","110",1,"direction-line"],["id","speedLine","x1","600","y1","620","x2","600",1,"speed-line"],["id","speedTip",1,"speed-line"],["id","layerDrift","transform","translate(0, 20)"],["id","setArrow","d","m 663.93337,580.60403 -64.4901,-94.9673 -63.37665,95.71396 58.48691,-30.71299 0.77713,133.08346 c 0.0992,16.99331 2.52916,30.65913 5.44822,30.64209 2.91911,-0.0171 5.18926,-13.71032 5.09001,-30.70362 l -0.77782,-133.20444 z",1,"drift-arrow",2,"fill","url(#linearGradient14)"],["id","text11",0,"xml","space","preserve","x","599.78842","y","623.55145",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-stretch","normal","font-size","66.6667px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none"],["id","layerHeading"],["id","rect1","width","310","height","117","x","445","y","10","rx","20",1,"heading-box",2,"stroke-width","5","stroke-opacity","0.5"],["x","600","y","110",1,"contrast-text",2,"font-style","normal","font-variant","normal","font-weight","bold","font-stretch","normal","font-size","120px","font-family","Roboto","font-variant-ligatures","normal","font-variant-caps","normal","font-variant-numeric","normal","font-variant-east-asian","normal","text-align","center","text-anchor","middle","stroke","none","stroke-width","5","stroke-linejoin","bevel","stroke-miterlimit","0","stroke-dasharray","none","stroke-opacity","1"],[2,"font-weight","normal","font-size","60px"]],template:function(n,e){n&1&&(wd(),dl(0,"svg",5)(1,"defs",6)(2,"linearGradient",7),Uh(3,"stop",8)(4,"stop",9),fl(),dl(5,"linearGradient",10),Uh(6,"stop",8)(7,"stop",9),fl(),dl(8,"linearGradient",11),Uh(9,"stop",12)(10,"stop",13),fl(),dl(11,"linearGradient",14),Uh(12,"stop",15),fl(),dl(13,"clipPath",16),Uh(14,"ellipse",17),fl(),Uh(15,"linearGradient",18)(16,"linearGradient",19)(17,"linearGradient",20),fl(),dl(18,"g",21)(19,"g",22),Uh(20,"path",23)(21,"path",24),fl()(),dl(22,"g",25)(23,"g",26),Uh(24,"circle",27),fl(),dl(25,"g",null,0)(27,"g",28),Uh(28,"path",29)(29,"path",30)(30,"path",31)(31,"path",32)(32,"path",33)(33,"path",34)(34,"path",35)(35,"path",36)(36,"path",37)(37,"path",38)(38,"path",39)(39,"path",40)(40,"path",41)(41,"path",42)(42,"path",43)(43,"path",44)(44,"path",45)(45,"path",46)(46,"path",47)(47,"path",48)(48,"path",49)(49,"path",50)(50,"path",51)(51,"path",52)(52,"path",53)(53,"path",54)(54,"path",55)(55,"path",56)(56,"path",57)(57,"path",58)(58,"path",59)(59,"path",60)(60,"path",61)(61,"path",62)(62,"path",63)(63,"path",64),dl(64,"text",65)(65,"tspan",66),TT(66,"330"),fl()(),dl(67,"text",67)(68,"tspan",68),TT(69,"300"),fl()(),dl(70,"text",69)(71,"tspan",70),TT(72,"W"),fl()(),dl(73,"text",71)(74,"tspan",72),TT(75,"240"),fl()(),dl(76,"text",73)(77,"tspan",74),TT(78,"210"),fl()(),dl(79,"text",75)(80,"tspan",76),TT(81,"S"),fl()(),dl(82,"text",77)(83,"tspan",78),TT(84,"150"),fl()(),dl(85,"text",79)(86,"tspan",80),TT(87,"120"),fl()(),dl(88,"text",81)(89,"tspan",82),TT(90,"E"),fl()(),dl(91,"text",83)(92,"tspan",84),TT(93,"60"),fl()(),dl(94,"text",85)(95,"tspan",86),TT(96,"30"),fl()(),dl(97,"text",87)(98,"tspan",88),TT(99,"N"),fl()()()()(),dl(100,"g",89),Uh(101,"path",90)(102,"path",91),fl(),dl(103,"g",92),Uh(104,"path",93)(105,"path",94),fl(),dl(106,"g",95)(107,"g",96)(108,"text",97),TT(109,"Tack/Gybe"),fl(),Uh(110,"rect",98),dl(111,"text",99),TT(112),HT(113,"number"),dl(114,"tspan",100),TT(115,"\xB0"),fl()()(),dl(116,"g",101)(117,"text",102),TT(118,"Wind VMG"),fl(),dl(119,"text",103),TT(120),dl(121,"tspan",104),TT(122," kts"),fl()(),dl(123,"text",105),TT(124),dl(125,"tspan",104),TT(126," kts"),fl()()(),dl(127,"g",106)(128,"text",107),TT(129,"Waypoint"),fl(),Uh(130,"rect",108),dl(131,"text",109)(132,"tspan",110),TT(133,"VMG: "),fl(),TT(134),dl(135,"tspan",104),TT(136," kts"),fl()(),dl(137,"text",111)(138,"tspan",110),TT(139,"HDG: "),fl(),TT(140),dl(141,"tspan",100),TT(142,"\xB0"),dl(143,"tspan",104),TT(144,"T"),fl()()()()(),dl(145,"g",112)(146,"g",null,1),Uh(148,"path",113),fl(),dl(149,"g",null,2),Uh(151,"path",114),dl(152,"text",115),TT(153,"T"),fl()(),dl(154,"g",null,3),Uh(156,"ellipse",116),fl()(),dl(157,"g",117),Uh(158,"line",118)(159,"line",119)(160,"polygon",120),fl(),dl(161,"g",121),Uh(162,"path",122,4),dl(164,"text",123),TT(165),fl()(),dl(166,"g",124),Uh(167,"rect",125),dl(168,"text",126),TT(169),dl(170,"tspan",100),TT(171,"\xB0"),dl(172,"tspan",127),TT(173,"T"),fl()()()()()),n&2&&(EE(101),ig("display",e.portWindSectorPath()!="none"?"inline":"none"),Hh("d",e.portWindSectorPath()),EE(),ig("display",e.stbdWindSectorPath()!="none"?"inline":"none"),Hh("d",e.stbdWindSectorPath()),EE(2),ig("display",e.trueWindAngle()!=null?"inline":"none"),Hh("d",e.laylinePortPath()),EE(),ig("display",e.trueWindAngle()!=null?"inline":"none"),Hh("d",e.laylineStbdPath()),EE(7),gl("",UT(113,36,e.nextTargetDirection(),"1.0-0")," "),EE(7),ig("fill",e.targetVMGOffsetRatioColor()),EE(),gg(e.targetVMG()),EE(3),ig("fill",e.targetVMGOffsetRatioColor()),EE(),gg(e.targetVMGOffset()),EE(10),gg(e.vmgToWaypoint()),EE(6),gg(e.waypointAngle()),EE(11),ig("fill",e.windAnglePerformanceRatioColor()),EE(3),Hh("display",e.waypointActive()?"inline":"none"),EE(5),ig("stroke",e.speedRatioColor()),Hh("y2",e.speedLineTipY()),EE(),ig("fill",e.speedRatioColor())("stroke",e.speedRatioColor()),Hh("points",e.speedTipPoints()),EE(),ig("display",e.driftEnabled()?"inline":"none"),EE(4),gg(e.flow()),EE(4),gl(" ",e.headingValue()));},dependencies:[es],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg[_ngcontent-%COMP%]{position:absolute;height:100%;width:100%;left:0;top:0}.fixed-dial-background[_ngcontent-%COMP%]{fill:none;stroke:var(--kip-grey-color)}.rotating-dial-Backplate[_ngcontent-%COMP%]{fill:var(--mat-sys-background)}.starboard[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color)}.port[_ngcontent-%COMP%]{stroke:var(--kip-port-color)}.heading-box[_ngcontent-%COMP%]{stroke:var(--kip-grey-color);fill:var(--kip-widget-card-background-color)}.boat[_ngcontent-%COMP%]{stop-color:var(--kip-grey-color)!important}.contrast-text[_ngcontent-%COMP%]{fill:var(--kip-contrast-color)}.contrast-stroke[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color)}.card-color[_ngcontent-%COMP%]{fill:var(--kip-widget-card-background-color)}.tack-box[_ngcontent-%COMP%]{stroke:var(--kip-yellow-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.tack-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.tack-label[_ngcontent-%COMP%]{fill:var(--kip-contrast-dim-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.waypoint-box[_ngcontent-%COMP%]{stroke:var(--kip-orange-dim-color);fill:var(--kip-widget-card-background-color);stroke-width:5}.waypoint-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:50px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-value[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:80px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.wind-vmg-offset[_ngcontent-%COMP%]{fill:var(--kip-contrast-color);font-family:Roboto;font-size:35px;font-style:normal;font-weight:700;text-align:center;text-anchor:middle;stroke:none}.true-wind[_ngcontent-%COMP%]{fill:var(--kip-blue-color)}.app-wind-label[_ngcontent-%COMP%]{fill:var(--kip-orange-dim-color)}.tack-angle[_ngcontent-%COMP%]{fill:var(--kip-yellow-color);stroke-width:15;stroke-linecap:square}.next-waypoint[_ngcontent-%COMP%]{stroke:var(--kip-orange-color);stroke-width:20;fill:none}.next-waypoint-bar[_ngcontent-%COMP%]{stroke:var(--kip-grey-color)}.portLayline[_ngcontent-%COMP%]{stroke:var(--kip-port-color);stroke-width:5}.stbdLayline[_ngcontent-%COMP%]{stroke:var(--kip-starboard-color);stroke-width:5}.direction-line[_ngcontent-%COMP%]{stroke:var(--kip-contrast-color);stroke-width:5}.speed-line[_ngcontent-%COMP%]{stroke:var(--kip-blue-color);stroke-width:10;fill:var(--kip-blue-color)}.wind-sector-port[_ngcontent-%COMP%]{fill:var(--kip-port-color)}.wind-sector-stbd[_ngcontent-%COMP%]{fill:var(--kip-starboard-color)}.drift-arrow[_ngcontent-%COMP%]{stop-color:var(--kip-blue-color);stroke:var(--kip-widget-card-background-color);stroke-width:3}"]})}return y})();var yt=(()=>{class y{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={supportAutomaticHistoricalSeries:false,filterSelfPaths:true,paths:{headingPath:{description:"True Heading",path:"self.navigation.headingTrue",source:"default",pathType:"number",isPathConfigurable:true,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},tackTrue:{description:"True Tack",path:"self.performance.tackTrue",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:true,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},polarSpeedRatio:{description:"Polar Speed Ratio",path:"self.performance.polarSpeedRatio",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"ratio",sampleTime:500},targetAngle:{description:"Target Angle",path:"self.performance.targetAngle",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"deg",sampleTime:500},optimalWindAngle:{description:"Optimal Wind Angle",path:"self.performance.optimumWindAngle",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"deg",sampleTime:500},targetVMG:{description:"Target Velocity Made Good",path:"self.performance.targetVelocityMadeGood",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"knots",sampleTime:500},VMG:{description:"Velocity Made Good",path:"self.performance.velocityMadeGood",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"knots",sampleTime:500},appWindAngle:{description:"Apparent Wind Angle",path:"self.environment.wind.angleApparent",source:"default",pathType:"number",isPathConfigurable:true,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},appWindSpeed:{description:"Apparent Wind Speed",path:"self.environment.wind.speedApparent",source:"default",pathType:"number",isPathConfigurable:true,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},trueWindAngle:{description:"True Wind Angle",path:"self.environment.wind.angleTrueWater",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},trueWindSpeed:{description:"True Wind Speed",path:"self.environment.wind.speedTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500},courseOverGround:{description:"True Course Over Ground",path:"self.navigation.courseOverGroundTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},nextWaypointBearing:{description:"Next Waypoint True Bearing",path:"self.navigation.course.calcValues.bearingTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},vmgToWaypoint:{description:"Velocity Made Good to Waypoint",path:"self.performance.velocityMadeGoodToWaypoint",source:"default",pathType:"number",isPathConfigurable:false,pathRequired:false,convertUnitTo:"knots",sampleTime:500},set:{description:"True Drift Set",path:"self.environment.current.setTrue",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"rad",convertUnitTo:"deg",sampleTime:500},drift:{description:"Drift Speed Impact",path:"self.environment.current.drift",source:"default",pathType:"number",isPathConfigurable:true,pathRequired:false,pathSkUnitsFilter:"m/s",convertUnitTo:"knots",sampleTime:500}},windSectorEnable:true,windSectorWindowSeconds:5,laylineEnable:true,laylineAngle:40,waypointEnable:true,courseOverGroundEnable:true,driftEnable:true,awsEnable:true,twsEnable:true,sailSetupEnable:false,enableTimeout:false,dataTimeout:5};runtime=w(p);streams=w(rt$1);currentHeading=vt(0);courseOverGroundAngle=vt(0);appWindAngle=vt(0);appWindSpeed=vt(0);appWindSpeedUnit=vt("knots");trueWindAngle=vt(0);trueWindSpeed=vt(0);trueWindSpeedUnit=vt("knots");driftFlow=vt(0);driftSet=vt(0);waypointAngle=vt(0);vmgToWaypoint=vt(null);tackTrue=vt(0);polarSpeedRatio=vt(0);targetAngle=vt(0);optimalWindAngle=vt(0);targetVMG=vt(0);VMG=vt(0);gradianColor=vt({start:"#3298ff",stop:"#15af00"});trueWindMinHistoric=vt(0);trueWindMidHistoric=vt(0);trueWindMaxHistoric=vt(0);normalizedConfig=Dt(()=>this.runtime.options()??y.DEFAULT_CONFIG);sailSetupEnabledValue=Dt(()=>this.normalizedConfig().sailSetupEnable??false);driftEnabledValue=Dt(()=>this.normalizedConfig().driftEnable??false);waypointEnabledValue=Dt(()=>this.normalizedConfig().waypointEnable??false);windSectorSub=null;historicalWindDirection=[];constructor(){Fa(()=>{let t=this.normalizedConfig();!t||!t.paths?.headingPath?.path||ge(()=>this.streams.observe("headingPath",a=>{let i=a?.data?.value;this.currentHeading.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.courseOverGroundEnable||!t.paths?.courseOverGround?.path||ge(()=>this.streams.observe("courseOverGround",a=>{let i=a?.data?.value;this.courseOverGroundAngle.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.driftEnable||!t.paths?.drift?.path||ge(()=>this.streams.observe("drift",a=>{let i=a?.data?.value;this.driftFlow.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.driftEnable||!t.paths?.set?.path||ge(()=>this.streams.observe("set",a=>{let i=a?.data?.value,r=i??0;this.driftSet.set(this.addHeading(-this.currentHeading(),r));}));}),Fa(()=>{let t=this.runtime.options();!t||!t.waypointEnable||!t.paths?.nextWaypointBearing?.path||ge(()=>this.streams.observe("nextWaypointBearing",a=>{let i=a?.data?.value;if(i==null){this.waypointAngle.set(0);return}let r=i<0?360+i:i,f=this.addHeading(-this.currentHeading(),r);this.waypointAngle.set(Math.round(f));}));}),Fa(()=>{let t=this.runtime.options();!t||!t.awsEnable||!t.paths?.appWindAngle?.path||ge(()=>this.streams.observe("appWindAngle",a=>{let i=a?.data?.value,r=i??0;if(r=r<0?360+r:r,this.appWindAngle.set(r),t.windSectorEnable){let f=this.currentHeading(),w=this.addHeading(f,i??0);this.addHistoricalWindDirection(w,t.windSectorWindowSeconds??5);}}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.tackTrue?.path||ge(()=>this.streams.observe("tackTrue",a=>{let i=a?.data?.value;this.tackTrue.set(i==null?0:Math.round(i));}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.polarSpeedRatio?.path||ge(()=>this.streams.observe("polarSpeedRatio",a=>{let i=a?.data?.value;this.polarSpeedRatio.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.targetAngle?.path||ge(()=>this.streams.observe("targetAngle",a=>{let i=a?.data?.value;this.targetAngle.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.optimalWindAngle?.path||ge(()=>this.streams.observe("optimalWindAngle",a=>{let i=a?.data?.value;this.optimalWindAngle.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.targetVMG?.path||ge(()=>this.streams.observe("targetVMG",a=>{let i=a?.data?.value,r=i==null?0:Math.round(i*10)/10;this.targetVMG.set(r);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.VMG?.path||ge(()=>this.streams.observe("VMG",a=>{let i=a?.data?.value,r=i==null?0:Math.round(i*10)/10;this.VMG.set(r);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.paths?.vmgToWaypoint?.path||ge(()=>this.streams.observe("vmgToWaypoint",a=>{let i=a?.data?.value,r=i==null?null:Math.round(i*10)/10;this.vmgToWaypoint.set(r);}));}),Fa(()=>{let t=this.theme();if(!t)return;let n=t?.blue??"#3298ff",e=t?.green??"#15af00";ge(()=>this.gradianColor.set({start:n,stop:e}));}),Fa(()=>{let t=this.runtime.options();!t||!t.awsEnable||!t.paths?.appWindSpeed?.path||ge(()=>this.streams.observe("appWindSpeed",a=>{let i=a?.data?.value;this.appWindSpeed.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();!t||!t.twsEnable||!t.paths?.trueWindSpeed?.path||ge(()=>this.streams.observe("trueWindSpeed",a=>{let i=a?.data?.value;this.trueWindSpeed.set(i??0);}));}),Fa(()=>{let t=this.runtime.options();if(!t||!t.twsEnable)return;let e=t.paths?.trueWindAngle?.path;e&&ge(()=>this.streams.observe("trueWindAngle",a=>{let i=a?.data?.value,r=i??0;if(e.includes("angleTrueWater")||e.includes("angleTrueGround")){let f=this.currentHeading();r=this.addHeading(f,r);}else r=r<0?360+r:r;this.trueWindAngle.set(r);}));}),Fa(()=>{let t=this.normalizedConfig();t&&(t.windSectorEnable?this.windSectorSub||ge(()=>this.windSectorSub=ms(500).subscribe(()=>this.historicalCleanup(t.windSectorWindowSeconds??5))):(this.windSectorSub?.unsubscribe(),this.windSectorSub=null));});}sectorArc=Dt(()=>{let t=this.trueWindMinHistoric(),n=this.trueWindMidHistoric(),e=this.trueWindMaxHistoric();return {min:t,mid:n,max:e}});addHistoricalWindDirection(t,n){this.historicalWindDirection.push({timestamp:Date.now(),windDirection:t});let e=this.arcForAngles(this.historicalWindDirection.map(a=>a.windDirection));this.trueWindMinHistoric.set(e.min),this.trueWindMaxHistoric.set(e.max),this.trueWindMidHistoric.set(e.mid),this.historicalCleanup(n);}arcForAngles(t){return !t||t.length===0?{min:0,max:0,mid:0}:t.slice(1).reduce((e,a)=>{let i=a;for(;i<e.min-180;)i+=360;for(;i>e.max+180;)i-=360;return e.min=Math.min(e.min,i),e.max=Math.max(e.max,i),e.mid=(e.max-e.min)/2+e.min,e},{min:t[0],max:t[0],mid:t[0]})}historicalCleanup(t){let n=Date.now()-t*1e3;this.historicalWindDirection=this.historicalWindDirection.filter(e=>e.timestamp>=n);}addHeading(t,n){let e=(t+n)%360;return e<0&&(e+=360),e}ngOnDestroy(){this.windSectorSub?.unsubscribe(),this.windSectorSub=null;}static \u0275fac=function(n){return new(n||y)};static \u0275cmp=JD({type:y,selectors:[["widget-racesteer"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:1,vars:20,consts:[[3,"compassHeading","tackTrue","polarSpeedRatio","trueWindAngle","trueWindSpeed","targetAngle","optimalWindAngle","targetVMG","VMG","sailSetupEnabled","driftEnabled","driftFlow","driftSet","waypointEnabled","waypointAngle","vmgToWaypoint","trueWindMinHistoric","trueWindMidHistoric","trueWindMaxHistoric","gradianColor"]],template:function(n,e){n&1&&$h(0,"svg-racesteer",0),n&2&&Bh("compassHeading",e.currentHeading())("tackTrue",e.tackTrue())("polarSpeedRatio",e.polarSpeedRatio())("trueWindAngle",e.trueWindAngle())("trueWindSpeed",e.trueWindSpeed())("targetAngle",e.targetAngle())("optimalWindAngle",e.optimalWindAngle())("targetVMG",e.targetVMG())("VMG",e.VMG())("sailSetupEnabled",e.sailSetupEnabledValue())("driftEnabled",e.driftEnabledValue())("driftFlow",e.driftFlow())("driftSet",e.driftSet())("waypointEnabled",e.waypointEnabledValue())("waypointAngle",e.waypointAngle())("vmgToWaypoint",e.vmgToWaypoint()??0)("trueWindMinHistoric",e.trueWindMinHistoric())("trueWindMidHistoric",e.trueWindMidHistoric())("trueWindMaxHistoric",e.trueWindMaxHistoric())("gradianColor",e.gradianColor());},dependencies:[J],styles:["[_nghost-%COMP%]{display:block;width:100%;height:100%}svg-racesteer[_ngcontent-%COMP%]{width:100%;height:100%}"]})}return y})();export{yt as WidgetRacesteerComponent};
@@ -0,0 +1 @@
1
+ import {ad as Qe,w,a6 as Lr,ak as nw}from'./main-BNR44HGB.js';var u=(()=>{class t{resizeChange=new Qe;kipResize=new Qe;el=w(Lr);ro=null;constructor(){this.ro=new ResizeObserver(i=>{let e=i[i.length-1],{width:c,height:h}=e.contentRect;this.resizeChange.emit(e),this.kipResize.emit({width:c,height:h,entry:e});}),this.ro.observe(this.el.nativeElement);}ngOnDestroy(){this.ro?.disconnect(),this.ro=null;}static \u0275fac=function(e){return new(e||t)};static \u0275dir=nw({type:t,selectors:[["","kipResizeObserver",""]],outputs:{resizeChange:"resizeChange",kipResize:"kipResize"}})}return t})();export{u};
@@ -0,0 +1,2 @@
1
+ import {w,n as G,cD as V,aY as xe,v as vt,W as Wp,as as ke,cE as Xl,D as Dt,F as Fa,J as JD,cF as Un,O as Op,bh as xp,o as eu,cG as Ht,cH as R,cI as ee,cJ as Nt,cK as Lt,r as f,bt as u,y as yt,b as wt,P as Pi,c as $h,T as TT,u as ul,_ as _w,cf as xh,k as Qh,bl as Jw,e as EE,d as ig,aA as gg,B as Bh,M as Mw,g as qw,X as xw,Y as Aw,h as Fw,l as ud,m as dd,bp as gl,cL as vb,cM as yb}from'./main-BNR44HGB.js';var Ue=yb((ft,ce)=>{var Ye=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var p=(function(r){var f=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,o={},e={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function t(n){return n instanceof a?new a(n.type,t(n.content),n.alias):Array.isArray(n)?n.map(t):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(t){return Object.prototype.toString.call(t).slice(8,-1)},objId:function(t){return t.__id||Object.defineProperty(t,"__id",{value:++i}),t.__id},clone:function t(n,s){s=s||{};var l,u;switch(e.util.type(n)){case "Object":if(u=e.util.objId(n),s[u])return s[u];l={},s[u]=l;for(var m in n)n.hasOwnProperty(m)&&(l[m]=t(n[m],s));return l;case "Array":return u=e.util.objId(n),s[u]?s[u]:(l=[],s[u]=l,n.forEach(function(E,g){l[g]=t(E,s);}),l);default:return n}},getLanguage:function(t){for(;t;){var n=f.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement;}return "none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(f,"gi"),""),t.classList.add("language-"+n);},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(l){var t=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(l.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var s in n)if(n[s].src==t)return n[s]}return null}},isActive:function(t,n,s){for(var l="no-"+n;t;){var u=t.classList;if(u.contains(n))return !0;if(u.contains(l))return !1;t=t.parentElement;}return !!s}},languages:{plain:o,plaintext:o,text:o,txt:o,extend:function(t,n){var s=e.util.clone(e.languages[t]);for(var l in n)s[l]=n[l];return s},insertBefore:function(t,n,s,l){l=l||e.languages;var u=l[t],m={};for(var E in u)if(u.hasOwnProperty(E)){if(E==n)for(var g in s)s.hasOwnProperty(g)&&(m[g]=s[g]);s.hasOwnProperty(E)||(m[E]=u[E]);}var T=l[t];return l[t]=m,e.languages.DFS(e.languages,function(O,z){z===T&&O!=t&&(this[O]=m);}),m},DFS:function t(n,s,l,u){u=u||{};var m=e.util.objId;for(var E in n)if(n.hasOwnProperty(E)){s.call(n,E,n[E],l||E);var g=n[E],T=e.util.type(g);T==="Object"&&!u[m(g)]?(u[m(g)]=!0,t(g,s,null,u)):T==="Array"&&!u[m(g)]&&(u[m(g)]=!0,t(g,s,E,u));}}},plugins:{},highlightAll:function(t,n){e.highlightAllUnder(document,t,n);},highlightAllUnder:function(t,n,s){var l={callback:s,container:t,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};e.hooks.run("before-highlightall",l),l.elements=Array.prototype.slice.apply(l.container.querySelectorAll(l.selector)),e.hooks.run("before-all-elements-highlight",l);for(var u=0,m;m=l.elements[u++];)e.highlightElement(m,n===!0,l.callback);},highlightElement:function(t,n,s){var l=e.util.getLanguage(t),u=e.languages[l];e.util.setLanguage(t,l);var m=t.parentElement;m&&m.nodeName.toLowerCase()==="pre"&&e.util.setLanguage(m,l);var E=t.textContent,g={element:t,language:l,grammar:u,code:E};function T(z){g.highlightedCode=z,e.hooks.run("before-insert",g),g.element.innerHTML=g.highlightedCode,e.hooks.run("after-highlight",g),e.hooks.run("complete",g),s&&s.call(g.element);}if(e.hooks.run("before-sanity-check",g),m=g.element.parentElement,m&&m.nodeName.toLowerCase()==="pre"&&!m.hasAttribute("tabindex")&&m.setAttribute("tabindex","0"),!g.code){e.hooks.run("complete",g),s&&s.call(g.element);return}if(e.hooks.run("before-highlight",g),!g.grammar){T(e.util.encode(g.code));return}if(n&&r.Worker){var O=new Worker(e.filename);O.onmessage=function(z){T(z.data);},O.postMessage(JSON.stringify({language:g.language,code:g.code,immediateClose:!0}));}else T(e.highlight(g.code,g.grammar,g.language));},highlight:function(t,n,s){var l={code:t,grammar:n,language:s};if(e.hooks.run("before-tokenize",l),!l.grammar)throw new Error('The language "'+l.language+'" has no grammar.');return l.tokens=e.tokenize(l.code,l.grammar),e.hooks.run("after-tokenize",l),a.stringify(e.util.encode(l.tokens),l.language)},tokenize:function(t,n){var s=n.rest;if(s){for(var l in s)n[l]=s[l];delete n.rest;}var u=new F;return C(u,u.head,t),S(t,u,n,u.head,0),L(u)},hooks:{all:{},add:function(t,n){var s=e.hooks.all;s[t]=s[t]||[],s[t].push(n);},run:function(t,n){var s=e.hooks.all[t];if(!(!s||!s.length))for(var l=0,u;u=s[l++];)u(n);}},Token:a};r.Prism=e;function a(t,n,s,l){this.type=t,this.content=n,this.alias=s,this.length=(l||"").length|0;}a.stringify=function t(n,s){if(typeof n=="string")return n;if(Array.isArray(n)){var l="";return n.forEach(function(T){l+=t(T,s);}),l}var u={type:n.type,content:t(n.content,s),tag:"span",classes:["token",n.type],attributes:{},language:s},m=n.alias;m&&(Array.isArray(m)?Array.prototype.push.apply(u.classes,m):u.classes.push(m)),e.hooks.run("wrap",u);var E="";for(var g in u.attributes)E+=" "+g+'="'+(u.attributes[g]||"").replace(/"/g,"&quot;")+'"';return "<"+u.tag+' class="'+u.classes.join(" ")+'"'+E+">"+u.content+"</"+u.tag+">"};function h(t,n,s,l){t.lastIndex=n;var u=t.exec(s);if(u&&l&&u[1]){var m=u[1].length;u.index+=m,u[0]=u[0].slice(m);}return u}function S(t,n,s,l,u,m){for(var E in s)if(!(!s.hasOwnProperty(E)||!s[E])){var g=s[E];g=Array.isArray(g)?g:[g];for(var T=0;T<g.length;++T){if(m&&m.cause==E+","+T)return;var O=g[T],z=O.inside,ae=!!O.lookbehind,X=!!O.greedy,de=O.alias;if(X&&!O.pattern.global){var pe=O.pattern.toString().match(/[imsuy]*$/)[0];O.pattern=RegExp(O.pattern.source,pe+"g");}for(var oe=O.pattern||O,$=l.next,N=u;$!==n.tail&&!(m&&N>=m.reach);N+=$.value.length,$=$.next){var U=$.value;if(n.length>t.length)return;if(!(U instanceof a)){var q=1,G;if(X){if(G=h(oe,N,t,ae),!G||G.index>=t.length)break;var _=G.index,A=G.index+G[0].length,c=N;for(c+=$.value.length;_>=c;)$=$.next,c+=$.value.length;if(c-=$.value.length,N=c,$.value instanceof a)continue;for(var d=$;d!==n.tail&&(c<A||typeof d.value=="string");d=d.next)q++,c+=d.value.length;q--,U=t.slice(N,c),G.index-=N;}else if(G=h(oe,0,U,ae),!G)continue;var _=G.index,x=G[0],w=U.slice(0,_),H=U.slice(_+x.length),B=N+U.length;m&&B>m.reach&&(m.reach=B);var K=$.prev;w&&(K=C(n,K,w),N+=w.length),k(n,K,q);var qe=new a(E,z?e.tokenize(x,z):x,de,x);if($=C(n,K,qe),H&&C(n,$,H),q>1){var fe={cause:E+","+T,reach:B};S(t,n,s,$.prev,N,fe),m&&fe.reach>m.reach&&(m.reach=fe.reach);}}}}}}function F(){var t={value:null,prev:null,next:null},n={value:null,prev:t,next:null};t.next=n,this.head=t,this.tail=n,this.length=0;}function C(t,n,s){var l=n.next,u={value:s,prev:n,next:l};return n.next=u,l.prev=u,t.length++,u}function k(t,n,s){for(var l=n.next,u=0;u<s&&l!==t.tail;u++)l=l.next;n.next=l,l.prev=n,t.length-=u;}function L(t){for(var n=[],s=t.head.next;s!==t.tail;)n.push(s.value),s=s.next;return n}if(!r.document)return r.addEventListener&&(e.disableWorkerMessageHandler||r.addEventListener("message",function(t){var n=JSON.parse(t.data),s=n.language,l=n.code,u=n.immediateClose;r.postMessage(e.highlight(l,e.languages[s],s)),u&&r.close();},!1)),e;var y=e.util.currentScript();y&&(e.filename=y.src,y.hasAttribute("data-manual")&&(e.manual=!0));function v(){e.manual||e.highlightAll();}if(!e.manual){var b=document.readyState;b==="loading"||b==="interactive"&&y&&y.defer?document.addEventListener("DOMContentLoaded",v):window.requestAnimationFrame?window.requestAnimationFrame(v):window.setTimeout(v,16);}return e})(Ye);typeof ce<"u"&&ce.exports&&(ce.exports=p);typeof global<"u"&&(global.Prism=p);p.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};p.languages.markup.tag.inside["attr-value"].inside.entity=p.languages.markup.entity;p.languages.markup.doctype.inside["internal-subset"].inside=p.languages.markup;p.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&amp;/,"&"));});Object.defineProperty(p.languages.markup.tag,"addInlined",{value:function(f,i){var o={};o["language-"+i]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:p.languages[i]},o.cdata=/^<!\[CDATA\[|\]\]>$/i;var e={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:o}};e["language-"+i]={pattern:/[\s\S]+/,inside:p.languages[i]};var a={};a[f]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return f}),"i"),lookbehind:!0,greedy:!0,inside:e},p.languages.insertBefore("markup","cdata",a);}});Object.defineProperty(p.languages.markup.tag,"addAttribute",{value:function(r,f){p.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[f,"language-"+f],inside:p.languages[f]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}});}});p.languages.html=p.languages.markup;p.languages.mathml=p.languages.markup;p.languages.svg=p.languages.markup;p.languages.xml=p.languages.extend("markup",{});p.languages.ssml=p.languages.xml;p.languages.atom=p.languages.xml;p.languages.rss=p.languages.xml;(function(r){var f=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+f.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+f.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+f.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+f.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:f,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var i=r.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"));})(p);p.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};p.languages.javascript=p.languages.extend("clike",{"class-name":[p.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});p.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;p.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:p.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:p.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:p.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:p.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:p.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});p.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:p.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});p.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});p.languages.markup&&(p.languages.markup.tag.addInlined("script","javascript"),p.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));p.languages.js=p.languages.javascript;(function(){if(typeof p>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading\u2026",f=function(y,v){return "\u2716 Error "+y+" while fetching file: "+v},i="\u2716 Error: File does not exist or is empty",o={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},e="data-src-status",a="loading",h="loaded",S="failed",F="pre[data-src]:not(["+e+'="'+h+'"]):not(['+e+'="'+a+'"])';function C(y,v,b){var t=new XMLHttpRequest;t.open("GET",y,!0),t.onreadystatechange=function(){t.readyState==4&&(t.status<400&&t.responseText?v(t.responseText):t.status>=400?b(f(t.status,t.statusText)):b(i));},t.send(null);}function k(y){var v=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(y||"");if(v){var b=Number(v[1]),t=v[2],n=v[3];return t?n?[b,Number(n)]:[b,void 0]:[b,b]}}p.hooks.add("before-highlightall",function(y){y.selector+=", "+F;}),p.hooks.add("before-sanity-check",function(y){var v=y.element;if(v.matches(F)){y.code="",v.setAttribute(e,a);var b=v.appendChild(document.createElement("CODE"));b.textContent=r;var t=v.getAttribute("data-src"),n=y.language;if(n==="none"){var s=(/\.(\w+)$/.exec(t)||[,"none"])[1];n=o[s]||s;}p.util.setLanguage(b,n),p.util.setLanguage(v,n);var l=p.plugins.autoloader;l&&l.loadLanguages(n),C(t,function(u){v.setAttribute(e,h);var m=k(v.getAttribute("data-range"));if(m){var E=u.split(/\r\n?|\n/g),g=m[0],T=m[1]==null?E.length:m[1];g<0&&(g+=E.length),g=Math.max(0,Math.min(g-1,E.length)),T<0&&(T+=E.length),T=Math.max(0,Math.min(T,E.length)),u=E.slice(g,T).join(`
2
+ `),v.hasAttribute("data-start")||v.setAttribute("data-start",String(g+1));}b.textContent=u,p.highlightElement(b);},function(u){v.setAttribute(e,S),b.textContent=u;});}}),p.plugins.fileHighlight={highlight:function(v){for(var b=(v||document).querySelectorAll(F),t=0,n;n=b[t++];)p.highlightElement(n);}};var L=!1;p.fileHighlight=function(){L||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),L=!0),p.plugins.fileHighlight.highlight.apply(this,arguments);};})();});var je=yb((re,he)=>{(function(f,i){typeof re=="object"&&typeof he=="object"?he.exports=i():typeof define=="function"&&define.amd?define([],i):typeof re=="object"?re.ClipboardJS=i():f.ClipboardJS=i();})(re,function(){return (function(){var r={686:(function(o,e,a){"use strict";a.d(e,{default:function(){return G}});var h=a(279),S=a.n(h),F=a(370),C=a.n(F),k=a(817),L=a.n(k);function y(A){try{return document.execCommand(A)}catch(c){return !1}}var v=function(c){var d=L()(c);return y("cut"),d},b=v;function t(A){var c=document.documentElement.getAttribute("dir")==="rtl",d=document.createElement("textarea");d.style.fontSize="12pt",d.style.border="0",d.style.padding="0",d.style.margin="0",d.style.position="absolute",d.style[c?"right":"left"]="-9999px";var _=window.pageYOffset||document.documentElement.scrollTop;return d.style.top="".concat(_,"px"),d.setAttribute("readonly",""),d.value=A,d}var n=function(c,d){var _=t(c);d.container.appendChild(_);var x=L()(_);return y("copy"),_.remove(),x},s=function(c){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},_="";return typeof c=="string"?_=n(c,d):c instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(c?.type)?_=n(c.value,d):(_=L()(c),y("copy")),_},l=s;function u(A){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(d){return typeof d}:u=function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},u(A)}var m=function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=c.action,_=d===void 0?"copy":d,x=c.container,w=c.target,H=c.text;if(_!=="copy"&&_!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(w!==void 0)if(w&&u(w)==="object"&&w.nodeType===1){if(_==="copy"&&w.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(_==="cut"&&(w.hasAttribute("readonly")||w.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(H)return l(H,{container:x});if(w)return _==="cut"?b(w):l(w,{container:x})},E=m;function g(A){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?g=function(d){return typeof d}:g=function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},g(A)}function T(A,c){if(!(A instanceof c))throw new TypeError("Cannot call a class as a function")}function O(A,c){for(var d=0;d<c.length;d++){var _=c[d];_.enumerable=_.enumerable||!1,_.configurable=!0,"value"in _&&(_.writable=!0),Object.defineProperty(A,_.key,_);}}function z(A,c,d){return c&&O(A.prototype,c),d&&O(A,d),A}function ae(A,c){if(typeof c!="function"&&c!==null)throw new TypeError("Super expression must either be null or a function");A.prototype=Object.create(c&&c.prototype,{constructor:{value:A,writable:!0,configurable:!0}}),c&&X(A,c);}function X(A,c){return X=Object.setPrototypeOf||function(_,x){return _.__proto__=x,_},X(A,c)}function de(A){var c=$();return function(){var _=N(A),x;if(c){var w=N(this).constructor;x=Reflect.construct(_,arguments,w);}else x=_.apply(this,arguments);return pe(this,x)}}function pe(A,c){return c&&(g(c)==="object"||typeof c=="function")?c:oe(A)}function oe(A){if(A===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return A}function $(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return !1;if(typeof Proxy=="function")return !0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(A){return !1}}function N(A){return N=Object.setPrototypeOf?Object.getPrototypeOf:function(d){return d.__proto__||Object.getPrototypeOf(d)},N(A)}function U(A,c){var d="data-clipboard-".concat(A);if(c.hasAttribute(d))return c.getAttribute(d)}var q=(function(A){ae(d,A);var c=de(d);function d(_,x){var w;return T(this,d),w=c.call(this),w.resolveOptions(x),w.listenClick(_),w}return z(d,[{key:"resolveOptions",value:function(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof x.action=="function"?x.action:this.defaultAction,this.target=typeof x.target=="function"?x.target:this.defaultTarget,this.text=typeof x.text=="function"?x.text:this.defaultText,this.container=g(x.container)==="object"?x.container:document.body;}},{key:"listenClick",value:function(x){var w=this;this.listener=C()(x,"click",function(H){return w.onClick(H)});}},{key:"onClick",value:function(x){var w=x.delegateTarget||x.currentTarget,H=this.action(w)||"copy",B=E({action:H,container:this.container,target:this.target(w),text:this.text(w)});this.emit(B?"success":"error",{action:H,text:B,trigger:w,clearSelection:function(){w&&w.focus(),window.getSelection().removeAllRanges();}});}},{key:"defaultAction",value:function(x){return U("action",x)}},{key:"defaultTarget",value:function(x){var w=U("target",x);if(w)return document.querySelector(w)}},{key:"defaultText",value:function(x){return U("text",x)}},{key:"destroy",value:function(){this.listener.destroy();}}],[{key:"copy",value:function(x){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return l(x,w)}},{key:"cut",value:function(x){return b(x)}},{key:"isSupported",value:function(){var x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],w=typeof x=="string"?[x]:x,H=!!document.queryCommandSupported;return w.forEach(function(B){H=H&&!!document.queryCommandSupported(B);}),H}}]),d})(S()),G=q;}),828:(function(o){var e=9;if(typeof Element<"u"&&!Element.prototype.matches){var a=Element.prototype;a.matches=a.matchesSelector||a.mozMatchesSelector||a.msMatchesSelector||a.oMatchesSelector||a.webkitMatchesSelector;}function h(S,F){for(;S&&S.nodeType!==e;){if(typeof S.matches=="function"&&S.matches(F))return S;S=S.parentNode;}}o.exports=h;}),438:(function(o,e,a){var h=a(828);function S(k,L,y,v,b){var t=C.apply(this,arguments);return k.addEventListener(y,t,b),{destroy:function(){k.removeEventListener(y,t,b);}}}function F(k,L,y,v,b){return typeof k.addEventListener=="function"?S.apply(null,arguments):typeof y=="function"?S.bind(null,document).apply(null,arguments):(typeof k=="string"&&(k=document.querySelectorAll(k)),Array.prototype.map.call(k,function(t){return S(t,L,y,v,b)}))}function C(k,L,y,v){return function(b){b.delegateTarget=h(b.target,L),b.delegateTarget&&v.call(k,b);}}o.exports=F;}),879:(function(o,e){e.node=function(a){return a!==void 0&&a instanceof HTMLElement&&a.nodeType===1},e.nodeList=function(a){var h=Object.prototype.toString.call(a);return a!==void 0&&(h==="[object NodeList]"||h==="[object HTMLCollection]")&&"length"in a&&(a.length===0||e.node(a[0]))},e.string=function(a){return typeof a=="string"||a instanceof String},e.fn=function(a){var h=Object.prototype.toString.call(a);return h==="[object Function]"};}),370:(function(o,e,a){var h=a(879),S=a(438);function F(y,v,b){if(!y&&!v&&!b)throw new Error("Missing required arguments");if(!h.string(v))throw new TypeError("Second argument must be a String");if(!h.fn(b))throw new TypeError("Third argument must be a Function");if(h.node(y))return C(y,v,b);if(h.nodeList(y))return k(y,v,b);if(h.string(y))return L(y,v,b);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function C(y,v,b){return y.addEventListener(v,b),{destroy:function(){y.removeEventListener(v,b);}}}function k(y,v,b){return Array.prototype.forEach.call(y,function(t){t.addEventListener(v,b);}),{destroy:function(){Array.prototype.forEach.call(y,function(t){t.removeEventListener(v,b);});}}}function L(y,v,b){return S(document.body,y,v,b)}o.exports=F;}),817:(function(o){function e(a){var h;if(a.nodeName==="SELECT")a.focus(),h=a.value;else if(a.nodeName==="INPUT"||a.nodeName==="TEXTAREA"){var S=a.hasAttribute("readonly");S||a.setAttribute("readonly",""),a.select(),a.setSelectionRange(0,a.value.length),S||a.removeAttribute("readonly"),h=a.value;}else {a.hasAttribute("contenteditable")&&a.focus();var F=window.getSelection(),C=document.createRange();C.selectNodeContents(a),F.removeAllRanges(),F.addRange(C),h=F.toString();}return h}o.exports=e;}),279:(function(o){function e(){}e.prototype={on:function(a,h,S){var F=this.e||(this.e={});return (F[a]||(F[a]=[])).push({fn:h,ctx:S}),this},once:function(a,h,S){var F=this;function C(){F.off(a,C),h.apply(S,arguments);}return C._=h,this.on(a,C,S)},emit:function(a){var h=[].slice.call(arguments,1),S=((this.e||(this.e={}))[a]||[]).slice(),F=0,C=S.length;for(F;F<C;F++)S[F].fn.apply(S[F].ctx,h);return this},off:function(a,h){var S=this.e||(this.e={}),F=S[a],C=[];if(F&&h)for(var k=0,L=F.length;k<L;k++)F[k].fn!==h&&F[k].fn._!==h&&C.push(F[k]);return C.length?S[a]=C:delete S[a],this}},o.exports=e,o.exports.TinyEmitter=e;})},f={};function i(o){if(f[o])return f[o].exports;var e=f[o]={exports:{}};return r[o](e,e.exports,i),e.exports}return (function(){i.n=function(o){var e=o&&o.__esModule?function(){return o.default}:function(){return o};return i.d(e,{a:e}),e};})(),(function(){i.d=function(o,e){for(var a in e)i.o(e,a)&&!i.o(o,a)&&Object.defineProperty(o,a,{enumerable:!0,get:e[a]});};})(),(function(){i.o=function(o,e){return Object.prototype.hasOwnProperty.call(o,e)};})(),i(686)})().default});});vb(Ue());(function(r){var f="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",i={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:true,alias:"punctuation",inside:null},o={bash:i,environment:{pattern:RegExp("\\$"+f),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:true,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:true},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:true,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:true,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+f),lookbehind:true,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};r.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:true},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:true,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:true},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+f),lookbehind:true,alias:"constant"}},alias:"variable",lookbehind:true},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:true},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:true,greedy:true,inside:o},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:true,greedy:true,inside:{bash:i}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:true,greedy:true,inside:o},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:true,greedy:true},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:true,inside:{entity:o.entity}}],environment:{pattern:RegExp("\\$?"+f),alias:"constant"},variable:o.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:true},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:true},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:true,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:true},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:true}},i.inside=r.languages.bash;for(var e=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=o.variable[1].inside,h=0;h<e.length;h++)a[e[h]]=r.languages.bash[e[h]];r.languages.sh=r.languages.bash,r.languages.shell=r.languages.bash;})(Prism);(function(r){r.languages.typescript=r.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:true,greedy:true,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),r.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete r.languages.typescript.parameter,delete r.languages.typescript["literal-property"];var f=r.languages.extend("typescript",{});delete f["class-name"],r.languages.typescript["class-name"].inside=f,r.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:true,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:f}}}}),r.languages.ts=r.languages.typescript;})(Prism);var Be=vb(je());var Ve=(r,f)=>f.title,Xe=(r,f)=>f.file;function We(r,f){r&1&&TT(0," Loading... ");}function Ze(r,f){r&1&&TT(0," Table of Content ");}function Ke(r,f){r&1&&(Pi(0,"button",12),TT(1,"Error loading menu"),ul());}function Je(r,f){r&1&&(Pi(0,"button",12),TT(1,"No help entries"),ul());}function Qe(r,f){if(r&1){let i=Fw();Pi(0,"button",15),Qh("click",function(){let e=ud(i).$implicit,a=qw(5);return dd(a.selectFile(e.file))}),TT(1),ul();}if(r&2){let i=f.$implicit,o=qw(5);Bh("disabled",o.selectedFile()===i.file),EE(),gl(" ",i.title," ");}}function et(r,f){if(r&1&&(Pi(0,"button",14),TT(1),ul(),xw(2,Qe,2,2,"button",13,Xe)),r&2){let i=qw().$implicit;EE(),gg(i.title),EE(),Aw(i.items);}}function tt(r,f){if(r&1){let i=Fw();Pi(0,"button",15),Qh("click",function(){ud(i);let e=qw().$implicit,a=qw(3);return dd(a.selectFile(e.file))}),TT(1),ul();}if(r&2){let i=qw().$implicit,o=qw(3);Bh("disabled",o.selectedFile()===i.file),EE(),gl(" ",i.title," ");}}function nt(r,f){if(r&1&&_w(0,et,4,1)(1,tt,2,2,"button",13),r&2){let i=f.$implicit,o=qw(3);Mw(o.isGroup(i)?0:1);}}function it(r,f){if(r&1&&xw(0,nt,2,1,null,null,Ve),r&2){let i=qw(2);Aw(i.helpMenuItems());}}function rt(r,f){if(r&1){let i=Fw();Pi(0,"button",15),Qh("click",function(){let e=ud(i).$implicit,a=qw(5);return dd(a.selectFile(e.file))}),TT(1),ul();}if(r&2){let i=f.$implicit,o=qw(5);Bh("disabled",o.selectedFile()===i.file),EE(),gl(" ",i.title," ");}}function at(r,f){if(r&1&&(Pi(0,"button",16),TT(1),ul(),Pi(2,"mat-menu",17,1),xw(4,rt,2,2,"button",13,Xe),ul()),r&2){let i=Jw(3),o=qw().$implicit;Bh("matMenuTriggerFor",i),EE(),gg(o.title),EE(),Bh("overlapTrigger",false),EE(2),Aw(o.items);}}function ot(r,f){if(r&1){let i=Fw();Pi(0,"button",15),Qh("click",function(){ud(i);let e=qw().$implicit,a=qw(3);return dd(a.selectFile(e.file))}),TT(1),ul();}if(r&2){let i=qw().$implicit,o=qw(3);Bh("disabled",o.selectedFile()===i.file),EE(),gl(" ",i.title," ");}}function st(r,f){if(r&1&&_w(0,at,6,3)(1,ot,2,2,"button",13),r&2){let i=f.$implicit,o=qw(3);Mw(o.isGroup(i)?0:1);}}function lt(r,f){if(r&1&&xw(0,st,2,1,null,null,Ve),r&2){let i=qw(2);Aw(i.helpMenuItems());}}function ut(r,f){if(r&1&&_w(0,Ke,2,0,"button",12)(1,Je,2,0,"button",12)(2,it,2,0)(3,lt,2,0),r&2){let i=qw();Mw(i.hasError()?0:!i.isLoading()&&i.helpFiles().length===0?1:i.isMobileMenuMode()?2:3);}}function ct(r,f){r&1&&(Pi(0,"div",11),TT(1,"Unable to load help content."),ul());}function dt(r,f){r&1&&(Pi(0,"div",11),TT(1,"Loading help..."),ul());}function pt(r,f){if(r&1&&(Pi(0,"div",11),$h(1,"markdown",18),ul()),r&2){let i=qw();EE(),Bh("src",`assets/help-docs/${i.selectedFile()}`);}}window.ClipboardJS=Be.default;var $t=(()=>{class r{pageTitle="Help";_router=w(G);_route=w(V);_destroyRef=w(xe);_isMobileMenuMode=vt(this.detectMobileMenuMode());_selectedPageFromRoute=Wp(this._route.paramMap.pipe(ke(i=>i.get("page"))),{initialValue:null});constructor(){let i=this.getMobileMenuMediaQuery();if(i===null)return;this._isMobileMenuMode.set(i.matches);let o=e=>{this._isMobileMenuMode.set(e.matches);};i.addEventListener("change",o),this._destroyRef.onDestroy(()=>{i.removeEventListener("change",o);});}_helpMenuRes=Xl(()=>"assets/help-docs/menu.json");helpMenuItems=Dt(()=>this._helpMenuRes.hasValue()?this.normalizeMenu(this._helpMenuRes.value()??[]):[]);helpFiles=Dt(()=>{let i=this.helpMenuItems();return i.length===0?[]:i.flatMap(o=>this.isGroup(o)?o.items:[o])});selectedFile=vt("");_syncEffect=Fa(()=>{let i=this.helpFiles(),o=this._selectedPageFromRoute();if(i.length===0)return;let e=this.resolveSelectedFile(o,i);this.selectedFile()!==e&&this.selectedFile.set(e);});hasError=Dt(()=>this._helpMenuRes.error()!=null);isLoading=Dt(()=>this._helpMenuRes.isLoading());isMobileMenuMode=Dt(()=>this._isMobileMenuMode());isGroup(i){return "items"in i}selectFile(i){this.selectedFile.set(i),this._router.navigate(["/help",this.toPageSegment(i)]);}backPage(){this._router.navigate(["/settings"]);}closePage(){this._router.navigate(["/dashboard"]);}resolveSelectedFile(i,o){if(i){let e=i.endsWith(".md")?i:`${i}.md`,a=o.find(h=>h.file===e);if(a)return a.file}return o[0].file}toPageSegment(i){return i.endsWith(".md")?i.slice(0,-3):i}normalizeMenu(i){let o=[];return i.forEach(e=>{let a=(e.title??"").trim();if(Array.isArray(e.items)){let h=e.items.filter(this.isValidLeaf).filter(S=>S.file.endsWith(".md")).map(S=>({title:S.title.trim(),file:S.file.trim()}));if(!a||h.length===0)return;o.push({title:a,items:h});return}this.isValidLeaf(e)&&e.file.endsWith(".md")&&o.push({title:e.title.trim(),file:e.file.trim()});}),o}isValidLeaf(i){return typeof i.title=="string"&&i.title.trim().length>0&&typeof i.file=="string"&&i.file.trim().length>0}detectMobileMenuMode(){return this.getMobileMenuMediaQuery()?.matches??false}getMobileMenuMediaQuery(){return typeof window>"u"||typeof window.matchMedia!="function"?null:window.matchMedia("(max-width: 900px), (hover: none) and (pointer: coarse)")}static \u0275fac=function(o){return new(o||r)};static \u0275cmp=JD({type:r,selectors:[["app-help"]],decls:22,vars:9,consts:[["helpMenu","matMenu"],["childMenu","matMenu"],[1,"fullpage-header"],[1,"page-icon"],["svgIcon","help-center","aria-hidden","false"],[1,"page-title"],["mat-flat-button","",3,"matMenuTriggerFor","disabled"],[1,"help-menu-panel"],["matMenuContent",""],[1,"dialog-close-icon"],["mat-icon-button","",3,"click"],[1,"markdown-content"],["mat-menu-item","","disabled",""],["mat-menu-item","",3,"disabled"],["mat-menu-item","","disabled","",1,"help-menu-group-title"],["mat-menu-item","",3,"click","disabled"],["mat-menu-item","",3,"matMenuTriggerFor"],[1,"help-menu-panel",3,"overlapTrigger"],["clipboard","",3,"src"]],template:function(o,e){if(o&1&&(Pi(0,"div",2)(1,"div",3),$h(2,"mat-icon",4),Pi(3,"h6",5),TT(4),ul()(),Pi(5,"button",6),_w(6,We,1,0)(7,Ze,1,0),ul(),Pi(8,"mat-menu",7,0),xh(10,ut,4,1,"ng-template",8),ul(),Pi(11,"div",9)(12,"button",10),Qh("click",function(){return e.backPage()}),Pi(13,"mat-icon"),TT(14,"arrow_back_ios"),ul()(),Pi(15,"button",10),Qh("click",function(){return e.closePage()}),Pi(16,"mat-icon"),TT(17,"close"),ul()()()(),$h(18,"mat-divider"),_w(19,ct,2,0,"div",11)(20,dt,2,0,"div",11)(21,pt,2,1,"div",11)),o&2){let a=Jw(9);EE(2),ig("width",24,"px")("height",24,"px"),EE(2),gg(e.pageTitle),EE(),Bh("matMenuTriggerFor",a)("disabled",e.isLoading()||e.hasError()||e.helpFiles().length===0),EE(),Mw(e.isLoading()?6:7),EE(13),Mw(e.hasError()?19:e.isLoading()&&e.helpFiles().length===0?20:e.selectedFile()?21:-1);}},dependencies:[Un,Op,xp,eu,Ht,R,ee,Nt,Lt,f,u,yt,wt],styles:[".fullpage-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.page-icon[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:center;margin-left:15px}.page-title[_ngcontent-%COMP%]{margin-block-start:0px;margin-block-end:0px;padding:18px 0 13px 5px;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))}.mat-mdc-dialog-content[_ngcontent-%COMP%]{max-height:max-content}.dialog-close-icon[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;gap:5px;padding-right:15px}.help-menu-group-title[_ngcontent-%COMP%]{font-weight:600;opacity:.9} .mat-mdc-menu-panel.help-menu-panel{border:1px solid var(--mat-sys-outline);background:var(--mat-sys-surface-container-high)} .markdown-content{display:block;height:calc(100% - 75px);width:100%;overflow-x:scroll;padding:25px;font-size:1.1rem;line-height:1.7;background:var(--mat-sys-surface-container, #fff);color:var(--mat-sys-on-surface, #222);border-radius:12px;box-shadow:0 2px 8px #00000012;max-width:900px;margin:0 auto} .markdown-content h1, .markdown-content h2, .markdown-content h3, .markdown-content h4{color:var(--mat-sys-primary, #1976d2);margin-top:1.5em;margin-bottom:.5em;font-weight:600} .markdown-content pre{padding:1em;overflow-x:auto} .markdown-content table{border:1px solid var(--mat-sys-on-background);border-collapse:collapse;width:100%;margin:1em 0} .markdown-content table td{border:1px solid var(--mat-sys-on-background);padding:8px;text-align:left} .markdown-content th{color:var(--mat-sys-primary, #1976d2);font-weight:600;padding:.5em 1em;border:2px solid var(--mat-sys-primary, #1976d2);text-align:left} .markdown-content table tr:nth-child(2n){background-color:var(--mat-sys-surface-container-high)} .markdown-content a{color:var(--mat-sys-primary, #1976d2);text-decoration:underline} .markdown-content a:hover{text-decoration:none;color:var(--mat-sys-secondary, #005fa3)} .markdown-content ul, .markdown-content ol{margin-left:2em;margin-bottom:1em} .markdown-content blockquote{border-left:4px solid var(--mat-sys-tertiary);background:var(--mat-sys-on-tertiary-fixed-variant);padding:.5em 1em;color:var(--mat-sys-on-surface-variant, #555);margin:1em 0}"]})}return r})();export{$t as AppHelpComponent};
@@ -0,0 +1 @@
1
+ import {u}from'./chunk-BgyxBAyq.js';import {d1 as Hj,w,du as p,dv as rt,$ as $j,a as G,cu as T,aR as lt,v as vt,D as Dt,cw as z,cv as G$1,ab as te,F as Fa,dn as ge,as as ke,cN as Wl,dB as Gl,J as JD,dC as x,c as $h,P as Pi,k as Qh,cn as wd,u as ul,_ as _w,B as Bh,e as EE,an as Hh,M as Mw,f as eg,K as Kw}from'./main-BNR44HGB.js';var H=["svgSlider"];function q(o,e){o&1&&$h(0,"div",10);}var O=class o{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={supportAutomaticHistoricalSeries:false,displayName:"Slider Label",filterSelfPaths:true,paths:{gaugePath:{description:"PUT Supported Numeric Path. IMPORTANT: Format must be set to (base)",path:null,source:null,pathType:"number",isPathConfigurable:true,showPathSkUnitsFilter:false,pathSkUnitsFilter:null,showConvertUnitTo:false,convertUnitTo:void 0,supportsPut:true,sampleTime:500}},displayScale:{lower:0,upper:1,type:"linear"},enableTimeout:false,dataTimeout:5,color:"contrast"};runtime=w(p);streams=w(rt);svgElement=$j.required("svgSlider");dashboard=w(G);signalkRequestsService=w(T);toast=w(lt);labelColor=vt("");barColor=vt("");lineStartPx=0;lineWidthPx=0;lineEndPx=0;resizeTimeout=null;handlePositionView=vt(20);lineWidthView=Dt(()=>`${Math.max(0,this.handlePositionView()-this.LINE_START)}px`);pathValue=0;lineStart=20;isDragStarted=false;VIEWBOX_WIDTH=200;LINE_START=20;LINE_WIDTH=160;colorMap=null;cfg=Dt(()=>this.runtime.options()??o.DEFAULT_CONFIG);gaugePathConfig=Dt(()=>this.cfg().paths?.gaugePath);displayNameSafe=Dt(()=>this.cfg().displayName??"Slider Label");displayScale=Dt(()=>{let e=this.cfg().displayScale??o.DEFAULT_CONFIG.displayScale;return z(G$1({},e),{lower:e.lower??0,upper:e.upper??1})});valueChange$=new te;constructor(){Fa(()=>{let e=this.theme(),t=this.cfg();!t||!e||ge(()=>{this.ensureColorMap(),this.getColors(t.color??"contrast");});}),Fa(()=>{this.cfg();this.gaugePathConfig()?.path&&ge(()=>{this.calculateLineBounds(),this.streams.observe("gaugePath",i=>{if(!i||!i.data){queueMicrotask(()=>this.updateHandlePosition(this.mapValueToPosition(this.displayScale().lower)));return}queueMicrotask(()=>this.updateHandlePosition(this.mapValueToPosition(i.data.value)));});});});}ngOnInit(){this.getColors(this.cfg().color??"contrast"),this.valueChange$.pipe(ke(e=>{let t=this.displayScale();return this.isWithinMargin(e,t.lower)?t.lower:this.isWithinMargin(e,t.upper)?t.upper:parseFloat(e.toFixed(2))}),Wl(200),Gl()).subscribe(e=>{this.sendValue(e);});}mapValueToPosition(e){let t=this.displayScale(),i=t.upper-t.lower,n=this.LINE_WIDTH;return (e-t.lower)/i*n+this.LINE_START}mapPositionToValue(e){let t=this.displayScale(),i=t.upper-t.lower,n=this.LINE_WIDTH;return (e-this.LINE_START)/n*i+t.lower}isWithinMargin(e,t){let i=this.displayScale(),n=(i.upper-i.lower)*.01;return Math.abs(e-t)<=n}sendValue(e){let t=this.gaugePathConfig()?.path;t&&this.signalkRequestsService.putRequest(t,e,this.id());}onResized(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.calculateLineBounds();},200);}calculateLineBounds(){if(!this.svgElement()?.nativeElement){console.warn("[Slider Widget] SVG element is not initialized yet.");return}let e=this.svgElement().nativeElement.getBoundingClientRect(),t=this.LINE_START/this.VIEWBOX_WIDTH*e.width,i=this.LINE_WIDTH/this.VIEWBOX_WIDTH*e.width;this.lineStartPx=t,this.lineWidthPx=i,this.lineEndPx=this.lineStartPx+this.lineWidthPx;}updateHandlePosition(e){let t=Math.max(this.LINE_START,Math.min(this.LINE_START+this.LINE_WIDTH,e));this.handlePositionView.set(t);}getPointerX(e){return e.clientX-this.svgElement().nativeElement.getBoundingClientRect().left}onPointerDown(e){this.isDragStarted=true,this.onPointerMove(e),e.stopPropagation(),e.preventDefault();}onPointerMove(e){if(this.isDragStarted){let t=this.getPointerX(e);if(t>=this.lineStartPx&&t<=this.lineEndPx){let i=(t-this.lineStartPx)/this.lineWidthPx*this.LINE_WIDTH+this.LINE_START;this.updateHandlePosition(i);let n=this.handlePositionView(),r=this.displayScale();n<=this.LINE_START?this.pathValue=r.lower:n>=this.LINE_START+this.LINE_WIDTH?this.pathValue=r.upper:this.pathValue=this.mapPositionToValue(n),this.valueChange$.next(this.pathValue);}}}onPointerUp(){this.isDragStarted=false,this.valueChange$.next(this.pathValue);}onPointerLeave(){this.isDragStarted&&(this.isDragStarted=false,this.valueChange$.next(this.pathValue));}getColors(e){if(this.ensureColorMap(),!this.colorMap)return;let t=this.colorMap.get(e)||this.colorMap.get("contrast");t&&(this.labelColor.set(t.label),this.barColor.set(t.bar));}ensureColorMap(){let e=this.theme();e&&(this.colorMap=new Map([["contrast",{label:e.contrastDim,bar:e.contrast}],["blue",{label:e.blueDim,bar:e.blue}],["green",{label:e.greenDim,bar:e.green}],["pink",{label:e.pinkDim,bar:e.pink}],["orange",{label:e.orangeDim,bar:e.orange}],["purple",{label:e.purpleDim,bar:e.purple}],["grey",{label:e.greyDim,bar:e.grey}],["yellow",{label:e.yellowDim,bar:e.yellow}]]));}ngOnDestroy(){this.valueChange$.complete(),this.resizeTimeout&&clearTimeout(this.resizeTimeout);}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=JD({type:o,selectors:[["widget-slider"]],viewQuery:function(t,i){t&1&&eg(i.svgElement,H,5),t&2&&Kw();},inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:11,vars:7,consts:[["svgSlider",""],[3,"text","color"],["kipResizeObserver","",1,"widgets-container",3,"resizeChange"],["width","100%","height","100%","viewBox","0 40 200 40"],["width","160","height","8","rx","4.5","id","rect3","x","20","y","56",1,"slider-bg-bar",2,"display","inline","stroke-width","1.57144"],["height","8","rx","4.5","id","rect3","x","20","y","56",2,"display","inline","stroke-width","1.57144"],["id","g22"],["cy","60","fill","#ffffff","id","circle3","r","19.549999",2,"display","inline","fill","#4d4d4d","fill-opacity","1","stroke","#8c8c8c","stroke-width","0.9","stroke-dasharray","none","stroke-opacity","1"],["cy","60","fill","#ffffff","id","circle3-3","r","17.950001",2,"display","inline","fill","#ffffff","fill-opacity","1","stroke","#e6e6e6","stroke-width","1.8","stroke-dasharray","none","stroke-opacity","0.97"],["cursor","pointer","width","200","height","40","x","0","y","40",2,"display","inline","fill","rgba(0, 0, 0, 0)","stroke","none","stroke-width","0.3","stroke-linecap","square","stroke-linejoin","round","stroke-miterlimit","0",3,"pointerdown","pointerup","pointermove","pointerleave"],[1,"widgetOverlay"]],template:function(t,i){t&1&&($h(0,"widget-title",1),Pi(1,"div",2),Qh("resizeChange",function(){return i.onResized()}),wd(),Pi(2,"svg",3),$h(3,"rect",4)(4,"rect",5),Pi(5,"g",6),$h(6,"circle",7)(7,"circle",8),ul(),Pi(8,"rect",9,0),Qh("pointerdown",function(r){return i.onPointerDown(r)})("pointerup",function(){return i.onPointerUp()})("pointermove",function(r){return i.onPointerMove(r)})("pointerleave",function(){return i.onPointerLeave()}),ul()(),_w(10,q,1,0,"div",10),ul()),t&2&&(Bh("text",i.displayNameSafe())("color",i.labelColor()),EE(4),Hh("width",i.lineWidthView())("fill",i.barColor()),EE(2),Hh("cx",i.handlePositionView()),EE(),Hh("cx",i.handlePositionView()),EE(3),Mw(i.dashboard.isDashboardStatic()?-1:10));},dependencies:[u,x],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20;padding:0 20px}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}.slider-bg-bar[_ngcontent-%COMP%]{fill:var(--mat-sys-inverse-on-surface)}"]})};export{O as WidgetSliderComponent};
@@ -0,0 +1,2 @@
1
+ import {f}from'./chunk-H9_eqTYx.js';import {u}from'./chunk-BgyxBAyq.js';import {d1 as Hj,w,du as p,dv as rt,a as G,cu as T,aR as lt$1,aZ as R,v as vt,D as Dt,aH as j,F as Fa,dn as ge$1,cw as z,cv as G$1,J as JD,dC as x,dT as wg,_ as _w,P as Pi,k as Qh,X as xw,cs as Sw,u as ul,dU as NT,e as EE,M as Mw,t as pT,Y as Aw,dV as Vj,cn as wd,ci as dl,dW as Zh,cp as Uh,cj as fl,cV as Td,T as TT,an as Hh,d as ig,bp as gl,bs as dp,c as $h,g as qw,dX as xT,B as Bh,cS as pl,cT as hl,h as Fw,l as ud,m as dd}from'./main-BNR44HGB.js';import {c}from'./chunk-D_wrJJxl.js';function ye(i){return Math.max(i,1)/35}function v(i,u,o){let e=Math.max(u,0),t=ye(o),n=i==="2"?0:48*t,l=i==="2"?12*t:6*t,d=i==="2"?12*t:n,C=Math.max(0,e-d-l);return {labelX:d,labelWidth:C,labelFontSize:14*t,shapeLaneWidth:n,switchTrackX:6*t,switchTrackY:6*t,switchTrackWidth:37.714306*t,switchTrackHeight:22*t,switchTrackRadius:11*t,switchKnobOffX:17.5*t,switchKnobOnX:32.5*t,switchKnobY:17*t,switchKnobRadius:10*t,switchStrokeWidth:1.5*t,lightCenterX:24.5*t,lightCenterY:17.5*t,lightRadius:13.5*t,lightStrokeWidth:3*t,buttonX:6*t,buttonY:5*t,buttonWidth:Math.max(0,e-12*t),buttonHeight:25.025183*t,buttonRadius:3.6672263*t}}function ge(i,u,o,e){if(o.length===0)return 0;let t=Math.max(1,Math.floor(u/o.length)),n=1,l=t,d=1;for(;n<=l;){let C=Math.floor((n+l)/2);if(o.every(w=>{let L=v(w.type,i,C);return e(w.ctrlLabel??"",L.labelFontSize)<=L.labelWidth})){d=C,n=C+1;continue}l=C-1;}return Math.min(d,t)}var fe=(()=>{class i{data=Hj(null,{alias:"controlData"});theme=Hj(null);dimensions=Hj.required();toggleClick=Vj();ctrlState=null;ctrlColor="";oldTheme=null;offColor=null;labelColor=null;valueColor=null;constructor(){}ngDoCheck(){let o=this.data();if(!o)return;o.value!=this.ctrlState&&(this.ctrlState=o.value),o.color!=this.ctrlColor&&(this.ctrlColor=o.color,this.getColors(o.color));let e=this.theme();this.oldTheme!=e&&(this.oldTheme=e,this.getColors(o.color));}toggle(o){let e=this.data();e&&(e.value=o,this.toggleClick.emit(e));}get layout(){let o=this.dimensions();return v("3",o.width,o.height)}get isEnabled(){return !!this.ctrlState}getColors(o){let e=this.theme();if(e)switch(o){case "contrast":this.offColor=e.contrastDimmer,this.labelColor=e.contrastDim,this.valueColor=e.contrast;break;case "blue":this.offColor=e.blueDimmer,this.labelColor=e.blueDim,this.valueColor=e.blue;break;case "green":this.offColor=e.greenDimmer,this.labelColor=e.greenDim,this.valueColor=e.green;break;case "pink":this.offColor=e.pinkDimmer,this.labelColor=e.pinkDim,this.valueColor=e.pink;break;case "orange":this.offColor=e.orangeDimmer,this.labelColor=e.orangeDim,this.valueColor=e.orange;break;case "purple":this.offColor=e.purpleDimmer,this.labelColor=e.purpleDim,this.valueColor=e.purple;break;case "grey":this.offColor=e.greyDimmer,this.labelColor=e.greyDim,this.valueColor=e.grey;break;case "yellow":this.offColor=e.yellowDimmer,this.labelColor=e.yellowDim,this.valueColor=e.yellow;break;default:this.offColor=e.contrastDimmer,this.labelColor=e.contrastDim,this.valueColor=e.contrast;break}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=JD({type:i,selectors:[["app-svg-boolean-light"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:21,vars:33,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg"],["id","defs1"],["id","lightSpecular","cx","36%","cy","32%","r","68%"],["offset","0","stop-color","#ffffff","stop-opacity","0.5"],["offset","0.55","stop-color","#ffffff","stop-opacity","0.16"],["offset","1","stop-color","#ffffff","stop-opacity","0"],["id","lightDepth","cx","68%","cy","70%","r","68%"],["offset","0","stop-color","#000000","stop-opacity","0"],["offset","0.62","stop-color","#000000","stop-opacity","0.05"],["offset","1","stop-color","#000000","stop-opacity","0.22"],["id","lightRim","x1","0","y1","0","x2","1","y2","1"],["offset","0","stop-color","#ffffff","stop-opacity","0.36"],["offset","0.45","stop-color","#ffffff","stop-opacity","0.09"],["offset","1","stop-color","#000000","stop-opacity","0.3"],["y","0"],["xmlns","http://www.w3.org/1999/xhtml",2,"width","100%","height","100%","display","flex","align-items","center","justify-content","flex-start","font-family","Roboto,sans-serif","font-weight","700","line-height","1","white-space","nowrap","overflow","hidden","text-overflow","clip"],[2,"stroke","url(#lightRim)","stroke-opacity","0.4","stroke-dasharray","none"],["fill","url(#lightSpecular)"],["fill","url(#lightDepth)"],["fill","#ffffff"]],template:function(e,t){e&1&&(wd(),dl(0,"svg",0)(1,"defs",1)(2,"radialGradient",2),Uh(3,"stop",3)(4,"stop",4)(5,"stop",5),fl(),dl(6,"radialGradient",6),Uh(7,"stop",7)(8,"stop",8)(9,"stop",9),fl(),dl(10,"linearGradient",10),Uh(11,"stop",11)(12,"stop",12)(13,"stop",13),fl()(),dl(14,"foreignObject",14),Td(),dl(15,"div",15),TT(16),fl()(),wd(),Uh(17,"circle",16)(18,"circle",17)(19,"circle",18)(20,"ellipse",19),fl()),e&2&&(Hh("height",t.dimensions().height)("width",t.dimensions().width)("viewBox","0 0 "+t.dimensions().width+" "+t.dimensions().height),EE(14),Hh("x",t.layout.labelX)("width",t.layout.labelWidth)("height",t.dimensions().height),EE(),ig("color",t.isEnabled?t.valueColor:t.labelColor)("opacity",t.isEnabled?1:.6)("font-size",t.layout.labelFontSize,"px")("text-shadow",t.isEnabled?"0 0 4px currentColor, 0 0 4px currentColor":"none"),EE(),gl(" ",t.data()?.ctrlLabel," "),EE(),Hh("cx",t.layout.lightCenterX)("cy",t.layout.lightCenterY)("r",t.layout.lightRadius)("fill",t.isEnabled?t.valueColor:t.offColor)("stroke-width",t.layout.lightStrokeWidth),EE(),Hh("cx",t.layout.lightCenterX)("cy",t.layout.lightCenterY)("r",t.layout.lightRadius)("opacity",t.isEnabled?.62:.42),EE(),Hh("cx",t.layout.lightCenterX)("cy",t.layout.lightCenterY)("r",t.layout.lightRadius)("opacity",t.isEnabled?.62:.48),EE(),Hh("cx",t.layout.lightCenterX-t.layout.lightRadius*.32)("cy",t.layout.lightCenterY-t.layout.lightRadius*.34)("rx",t.layout.lightRadius*.34)("ry",t.layout.lightRadius*.2)("opacity",t.isEnabled?.2:.12));},encapsulation:2})}return i})();var Ce=(()=>{class i{data=Hj(null,{alias:"controlData"});theme=Hj(null);dimensions=Hj.required();toggleClick=Vj();oldTheme=null;emitIntervalId=null;pressed=false;isSwiping=false;pointerStartX=0;pointerStartY=0;labelColorEnabled=null;labelColorDisabled=null;valueColor=null;ctrlColor="";ngDoCheck(){let o=this.data();if(!o)return;o.color!=this.ctrlColor&&(this.ctrlColor=o.color,this.getColors(o.color));let e=this.theme();this.oldTheme!=e&&(this.oldTheme=e,this.getColors(o.color));}handleClickDown(o){let e=this.data();if(!e)return;this.isSwiping=false,this.pointerStartX=o.clientX,this.pointerStartY=o.clientY,this.clearTimers(),this.pressed=true;let t=dp(e);t.value=this.pressed,this.toggleClick.emit(t),this.emitIntervalId=setInterval(()=>{this.toggleClick.emit(t);},100);}handlePointerMove(o){let e=Math.abs(o.clientX-this.pointerStartX),t=Math.abs(o.clientY-this.pointerStartY);(e>30||t>30)&&(this.isSwiping=true,this.pressed=false,this.clearTimers());}handleClickUp(){this.isSwiping&&(this.isSwiping=false),this.pressed=false,this.clearTimers();}handlePointerCancel(){this.isSwiping=false,this.pressed=false,this.clearTimers();}get layout(){let o=this.dimensions();return v("2",o.width,o.height)}get isPressed(){return this.pressed}getColors(o){let e=this.theme();if(e)switch(o){case "contrast":this.labelColorEnabled="black",this.labelColorDisabled=e.contrastDim,this.valueColor=e.contrast;break;case "blue":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.blueDim,this.valueColor=e.blue;break;case "green":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.greenDim,this.valueColor=e.green;break;case "pink":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.pinkDim,this.valueColor=e.pink;break;case "orange":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.orangeDim,this.valueColor=e.orange;break;case "purple":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.purpleDim,this.valueColor=e.purple;break;case "grey":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.greyDim,this.valueColor=e.grey;break;case "yellow":this.labelColorEnabled=e.contrast,this.labelColorDisabled=e.yellowDim,this.valueColor=e.yellow;break;default:this.labelColorEnabled="black",this.labelColorDisabled=e.contrastDim,this.valueColor=e.contrast;break}}clearTimers(){this.emitIntervalId&&(clearInterval(this.emitIntervalId),this.emitIntervalId=null);}ngOnDestroy(){this.clearTimers();}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=JD({type:i,selectors:[["app-svg-boolean-button"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:6,vars:19,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg",3,"pointerup","pointerleave","pointerdown","pointermove","pointercancel"],["x","0","y","0","pointer-events","all",2,"display","inline","opacity","1","fill","transparent","fill-opacity","1","stroke","none","stroke-width","0"],[2,"display","inline","mix-blend-mode","normal","stroke","black","stroke-width","1.5","stroke-opacity","0.2"],["y","0",2,"pointer-events","none"],["xmlns","http://www.w3.org/1999/xhtml",2,"width","100%","height","100%","display","flex","align-items","center","justify-content","center","font-family","Roboto,sans-serif","font-weight","700","line-height","1","white-space","nowrap","overflow","hidden","text-overflow","clip"]],template:function(e,t){e&1&&(wd(),dl(0,"svg",0),Zh("pointerup",function(){return t.handleClickUp()})("pointerleave",function(){return t.handleClickUp()})("pointerdown",function(l){return t.handleClickDown(l)})("pointermove",function(l){return t.handlePointerMove(l)})("pointercancel",function(){return t.handlePointerCancel()}),Uh(1,"rect",1)(2,"rect",2),dl(3,"foreignObject",3),Td(),dl(4,"div",4),TT(5),fl()()()),e&2&&(Hh("height",t.dimensions().height)("width",t.dimensions().width)("viewBox","0 0 "+t.dimensions().width+" "+t.dimensions().height),EE(),Hh("width",t.dimensions().width)("height",t.dimensions().height),EE(),Hh("x",t.layout.buttonX)("y",t.layout.buttonY)("width",t.layout.buttonWidth)("height",t.layout.buttonHeight)("rx",t.layout.buttonRadius)("fill",t.isPressed?t.valueColor:t.labelColorDisabled),EE(),Hh("x",t.layout.labelX)("width",t.layout.labelWidth)("height",t.dimensions().height),EE(),ig("color",t.isPressed?t.labelColorEnabled:t.labelColorDisabled)("font-size",t.layout.labelFontSize,"px"),EE(),gl(" ",t.data()?.ctrlLabel," "));},encapsulation:2})}return i})();var be=(()=>{class i{data=Hj(null,{alias:"controlData"});theme=Hj(null);dimensions=Hj.required();toggleClick=Vj();ctrlState=null;oldTheme=null;swipeGuard=f();offColor=null;labelColor=null;valueColor=null;ctrlColor="";constructor(){}ngDoCheck(){let o=this.data();if(!o)return;o.value!=this.ctrlState&&(this.ctrlState=o.value),o.color!=this.ctrlColor&&(this.ctrlColor=o.color,this.getColors(o.color));let e=this.theme();this.oldTheme!=e&&(this.oldTheme=e,this.getColors(o.color));}onPointerDown(o){this.swipeGuard.onPointerDown(o);}onPointerMove(o){this.swipeGuard.onPointerMove(o);}onPointerUp(o,e){this.swipeGuard.onPointerUp(o)&&this.toggle(e);}onPointerCancel(o){this.swipeGuard.onPointerCancel(o);}get layout(){let o=this.dimensions();return v("1",o.width,o.height)}get isEnabled(){return !!this.ctrlState}get nextState(){return !this.isEnabled}toggle(o){let e=this.data();e&&(e.value=o,this.toggleClick.emit(e));}getColors(o){let e=this.theme();if(e)switch(o){case "contrast":this.offColor=e.contrastDimmer,this.labelColor=e.contrastDim,this.valueColor=e.contrast;break;case "blue":this.offColor=e.blueDimmer,this.labelColor=e.blueDim,this.valueColor=e.blue;break;case "green":this.offColor=e.greenDimmer,this.labelColor=e.greenDim,this.valueColor=e.green;break;case "pink":this.offColor=e.pinkDimmer,this.labelColor=e.pinkDim,this.valueColor=e.pink;break;case "orange":this.offColor=e.orangeDimmer,this.labelColor=e.orangeDim,this.valueColor=e.orange;break;case "purple":this.offColor=e.purpleDimmer,this.labelColor=e.purpleDim,this.valueColor=e.purple;break;case "grey":this.offColor=e.greyDimmer,this.labelColor=e.greyDim,this.valueColor=e.grey;break;case "yellow":this.offColor=e.yellowDimmer,this.labelColor=e.yellowDim,this.valueColor=e.yellow;break;default:this.offColor=e.contrastDimmer,this.labelColor=e.contrastDim,this.valueColor=e.contrast;break}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=JD({type:i,selectors:[["app-svg-boolean-switch"]],inputs:{data:[1,"controlData","data"],theme:[1,"theme"],dimensions:[1,"dimensions"]},outputs:{toggleClick:"toggleClick"},decls:12,vars:28,consts:[["version","1.1","id","svg9","xmlns","http://www.w3.org/2000/svg",0,"xmlns","svg","http://www.w3.org/2000/svg",3,"pointerdown","pointermove","pointerup","pointercancel"],["id","defs1"],["id","linearGradient32"],["offset","0",2,"stop-color","#000000","stop-opacity","0.88486844"],["offset","1",2,"stop-color","#f7f7f7","stop-opacity","0.17763157"],[0,"xlink","href","#linearGradient32","id","linearGradient33","x1","0","y1","0","x2","1","y2","1"],["x","0","y","0","pointer-events","all",2,"display","inline","opacity","0.001","fill","black","fill-opacity","0.001","stroke","none","stroke-width","0"],["y","0",2,"pointer-events","none"],[2,"width","100%","height","100%","display","flex","align-items","center","justify-content","flex-start","font-family","Roboto,sans-serif","font-weight","700","line-height","1","white-space","nowrap","overflow","hidden","text-overflow","clip"],[2,"stroke-width","1.5","stroke","black","stroke-opacity","0.12"],[2,"stroke","url(#linearGradient33)","stroke-opacity","0.4","stroke-dasharray","none"]],template:function(e,t){e&1&&(wd(),dl(0,"svg",0),Zh("pointerdown",function(l){return t.onPointerDown(l)})("pointermove",function(l){return t.onPointerMove(l)})("pointerup",function(l){return t.onPointerUp(l,t.nextState)})("pointercancel",function(l){return t.onPointerCancel(l)}),dl(1,"defs",1)(2,"linearGradient",2),Uh(3,"stop",3)(4,"stop",4),fl(),Uh(5,"linearGradient",5),fl(),Uh(6,"rect",6),dl(7,"foreignObject",7),Td(),dl(8,"div",8),TT(9),fl()(),wd(),Uh(10,"rect",9)(11,"circle",10),fl()),e&2&&(Hh("height",t.dimensions().height)("width",t.dimensions().width)("viewBox","0 0 "+t.dimensions().width+" "+t.dimensions().height),EE(6),Hh("width",t.dimensions().width)("height",t.dimensions().height),EE(),Hh("x",t.layout.labelX)("width",t.layout.labelWidth)("height",t.dimensions().height),EE(),ig("color",t.isEnabled?t.valueColor:t.labelColor)("opacity",t.isEnabled?1:.6)("font-size",t.layout.labelFontSize,"px")("text-shadow",t.isEnabled?"0 0 4px currentColor, 0 0 4px currentColor":"none"),EE(),gl(" ",t.data()?.ctrlLabel," "),EE(),Hh("x",t.layout.switchTrackX)("y",t.layout.switchTrackY)("width",t.layout.switchTrackWidth)("height",t.layout.switchTrackHeight)("rx",t.layout.switchTrackRadius)("fill",t.isEnabled?t.labelColor:t.offColor),EE(),Hh("cx",t.isEnabled?t.layout.switchKnobOnX:t.layout.switchKnobOffX)("cy",t.layout.switchKnobY)("r",t.layout.switchKnobRadius)("fill",t.isEnabled?t.valueColor:t.offColor)("stroke-width",t.layout.switchStrokeWidth));},encapsulation:2})}return i})();function _e(i,u){if(i&1&&$h(0,"widget-title",1),i&2){let o=qw(),e=xT(0);Bh("text",(e==null?null:e.displayName)??"")("color",o.labelColor());}}function De(i,u){if(i&1){let o=Fw();Pi(0,"app-svg-boolean-switch",5),Qh("toggleClick",function(t){ud(o);let n=qw(2);return dd(n.toggle(t))}),ul();}if(i&2){let o=qw().$implicit,e=qw();Bh("controlData",o)("theme",e.theme())("dimensions",e.ctrlDimensions);}}function Se(i,u){if(i&1){let o=Fw();Pi(0,"app-svg-boolean-button",5),Qh("toggleClick",function(t){ud(o);let n=qw(2);return dd(n.toggle(t))}),ul();}if(i&2){let o=qw().$implicit,e=qw();Bh("controlData",o)("theme",e.theme())("dimensions",e.ctrlDimensions);}}function ke(i,u){if(i&1){let o=Fw();Pi(0,"app-svg-boolean-light",5),Qh("toggleClick",function(t){ud(o);let n=qw(2);return dd(n.toggle(t))}),ul();}if(i&2){let o=qw().$implicit,e=qw();Bh("controlData",o)("theme",e.theme())("dimensions",e.ctrlDimensions);}}function Ee(i,u){if(i&1&&(pl(0),_w(1,De,1,3,"app-svg-boolean-switch",4)(2,Se,1,3,"app-svg-boolean-button",4)(3,ke,1,3,"app-svg-boolean-light",4),hl()),i&2){let o,e=u.$implicit;EE(),Mw((o=e.type)==="1"?1:o==="2"?2:o==="3"?3:-1);}}function Te(i,u){i&1&&$h(0,"div",3);}var lt=(()=>{class i{id=Hj.required();type=Hj.required();theme=Hj.required();static DEFAULT_CONFIG={displayName:"Switch Panel Label",showLabel:true,filterSelfPaths:true,paths:[],enableTimeout:false,dataTimeout:5,color:"contrast",zonesOnlyPaths:false,putEnable:true,putMomentary:false,multiChildCtrls:[]};runtime=w(p,{optional:true});streams=w(rt,{optional:true});dashboard=w(G);signalkRequestsService=w(T);toast=w(lt$1);canvas=w(R);switchControls=vt([]);labelColor=vt("");noTitleClass=Dt(()=>this.runtime?.options()?.showLabel===false?"widgets-container-no-title":"widgets-container");nbCtrl=null;ctrlDimensions={width:0,height:0};hostSize={width:0,height:0};skRequestSub=new j;measureCtx=typeof document<"u"?document.createElement("canvas").getContext("2d"):null;constructor(){Fa(()=>{let o=this.theme(),e=this.runtime?.options();!o||!e||ge$1(()=>{this.labelColor.set(c(e.color??"contrast",o).dim);});}),Fa(()=>{let o=this.runtime?.options();if(!o)return;let e=(o.multiChildCtrls||[]).map(t=>z(G$1({},t),{isNumeric:t.isNumeric??false}));this.nbCtrl=e.length,ge$1(()=>{this.switchControls.set(e),this.updateCtrlDimensions();let t=this.streams;t&&e.forEach(n=>{let l=o.paths;if(!l?.length)return;let d=l.findIndex(R=>R.pathID===n.pathID);d<0||!l[d]?.path||t.observe(String(d),R=>{let w=R?.data?.value,L=n.isNumeric?[0,1,null].includes(w)?!!w:n.value:w;this.switchControls.update(E=>{let N=E.findIndex(we=>we.pathID===n.pathID);if(N===-1)return E;let ve=z(G$1({},E[N]),{value:L});return [...E.slice(0,N),ve,...E.slice(N+1)]});});});});});}onResized(o){this.hostSize={width:o.contentRect.width,height:o.contentRect.height},this.updateCtrlDimensions();}updateCtrlDimensions(){let o=this.hostSize.width,e=this.hostSize.height,t=this.switchControls();if(!o||!e||!t.length){this.ctrlDimensions={width:o,height:0};return}let n=this.measureCtx?ge(o,e,t,(l,d)=>(this.measureCtx.font=`700 ${d}px ${this.canvas.DEFAULT_FONT}`,this.measureCtx.measureText(l).width)):Math.max(1,Math.floor(e/t.length));this.ctrlDimensions={width:o,height:n};}toggle(o){let e=this.runtime?.options();if(!e?.putEnable)return;let t=e.paths;if(!t)return;let n=t.findIndex(d=>d.pathID===o.pathID);if(n<0)return;let l=t[n].path;l&&(o.isNumeric?this.signalkRequestsService.putRequest(l,o.value?1:0,this.id()):this.signalkRequestsService.putRequest(l,o.value,this.id()));}ngOnDestroy(){this.skRequestSub?.unsubscribe();}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=JD({type:i,selectors:[["widget-boolean-switch"]],inputs:{id:[1,"id"],type:[1,"type"],theme:[1,"theme"]},decls:7,vars:5,consts:[["widgetContainer",""],[3,"text","color"],["kipResizeObserver","",3,"resizeChange"],[1,"widgetOverlay"],[1,"svg-widget",3,"controlData","theme","dimensions"],[1,"svg-widget",3,"toggleClick","controlData","theme","dimensions"]],template:function(e,t){if(e&1&&(wg(0),_w(1,_e,1,2,"widget-title",1),Pi(2,"div",2,0),Qh("resizeChange",function(l){return t.onResized(l)}),xw(4,Ee,4,1,"ng-container",null,Sw),ul(),_w(6,Te,1,0,"div",3)),e&2){let n=NT(t.runtime==null?null:t.runtime.options());EE(),Mw(n?.showLabel?1:-1),EE(),pT(t.noTitleClass()),EE(2),Aw(t.switchControls()),EE(2),Mw(t.dashboard.isDashboardStatic()?-1:6);}},dependencies:[u,be,Ce,fe,x],styles:[".widgets-container[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;top:15%;height:85%;width:100%;overflow:hidden;z-index:20}.widgets-container-no-title[_ngcontent-%COMP%]{display:block;position:absolute;left:0;right:0;padding:3px 0 0;height:100%;width:100%;overflow:hidden;z-index:20}.svg-widget[_ngcontent-%COMP%]{display:flex}.widgetOverlay[_ngcontent-%COMP%]{position:absolute;width:100%;height:100%;right:0;bottom:0;color:transparent;z-index:21}"]})}return i})();
2
+ export{lt as WidgetBooleanSwitchComponent};