ocearo-ui 2.1.1 → 2.1.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 (55) hide show
  1. package/404.html +1 -1
  2. package/__next.__PAGE__.txt +3 -3
  3. package/__next._full.txt +3 -3
  4. package/__next._tree.txt +2 -2
  5. package/_next/static/chunks/0-19-ljntm5ig.js +1 -0
  6. package/_next/static/chunks/{096zaxs1gf_3q.js → 0-g-ujyrfgutp.js} +2 -2
  7. package/_next/static/chunks/0c91q-13wh8hk.js +1 -0
  8. package/_next/static/chunks/{2aivnrnff0avu.js → 0fv1wwxeyagln.js} +2 -2
  9. package/_next/static/chunks/0nq1o9-m7bhjg.js +1 -0
  10. package/_next/static/chunks/0o7hu-sypv2u9.js +1 -0
  11. package/_next/static/chunks/{2wayx8t5r5fi9.js → 0ujzg6ofy2r73.js} +1 -1
  12. package/_next/static/chunks/162bfkgcudvew.js +9 -0
  13. package/_next/static/chunks/{1l-jew0-1-3eq.js → 1bvrvkcwf3ge-.js} +2 -2
  14. package/_next/static/chunks/{33u782y6vhw-f.js → 1do-2zwq3ws0f.js} +1 -1
  15. package/_next/static/chunks/{2mzecccvvbjr1.js → 1ho2ekxa9io1_.js} +1 -1
  16. package/_next/static/chunks/1m3-nchdgcxy1.css +3 -0
  17. package/_next/static/chunks/{3qik_nv7zlj4e.js → 1quvj-861o57h.js} +1 -1
  18. package/_next/static/chunks/{0j11dppxb9l0b.js → 1zuex-na8y-w4.js} +1 -1
  19. package/_next/static/chunks/{2r98jty3a4wel.js → 271ys-u920uqd.js} +5 -5
  20. package/_next/static/chunks/2_iau6x7s0vil.js +1131 -0
  21. package/_next/static/chunks/2ab6q6u6uo_bf.js +1 -0
  22. package/_next/static/chunks/2pt-apz8_pa4j.js +1 -0
  23. package/_next/static/chunks/2rnpgrmuyhpkd.js +119 -0
  24. package/_next/static/chunks/3e5jmzthktu9w.js +1 -0
  25. package/_next/static/chunks/3l25j666ze4c1.js +1 -0
  26. package/_next/static/chunks/{2gr1d26f-ymoh.js → 3utjjgdhnlx86.js} +1 -1
  27. package/_next/static/chunks/44f5hh9caupby.js +1 -0
  28. package/_not-found/__next._full.txt +2 -2
  29. package/_not-found/__next._not-found.__PAGE__.txt +2 -2
  30. package/_not-found/__next._tree.txt +2 -2
  31. package/_not-found.html +1 -1
  32. package/_not-found.txt +2 -2
  33. package/index.html +1 -1
  34. package/index.txt +3 -3
  35. package/package.json +1 -1
  36. package/settings/__next._full.txt +2 -2
  37. package/settings/__next._tree.txt +2 -2
  38. package/settings/__next.settings.__PAGE__.txt +2 -2
  39. package/settings.html +1 -1
  40. package/settings.txt +2 -2
  41. package/_next/static/chunks/0b3cus8izqkmg.js +0 -119
  42. package/_next/static/chunks/0zvzu5fnwh4_a.js +0 -9
  43. package/_next/static/chunks/1_g85m2d7jjpo.css +0 -3
  44. package/_next/static/chunks/1arvue9o-atui.js +0 -739
  45. package/_next/static/chunks/1cp1kkarm5gxz.js +0 -1
  46. package/_next/static/chunks/1hz_mzl8l35j8.js +0 -1
  47. package/_next/static/chunks/1k72cpd0x8veh.js +0 -1
  48. package/_next/static/chunks/2fthh9f57zzm2.js +0 -1
  49. package/_next/static/chunks/2v6ebsavxlgyw.js +0 -1
  50. package/_next/static/chunks/3qzb9nvvw-b-k.js +0 -1
  51. package/_next/static/chunks/3td9mnhvcj9cq.js +0 -1
  52. package/_next/static/chunks/432vtxrssprta.js +0 -1
  53. /package/_next/static/{QMD1VkISjzTIQCzLSHPpB → m52l9mE01yTljNwbWjYQ7}/_buildManifest.js +0 -0
  54. /package/_next/static/{QMD1VkISjzTIQCzLSHPpB → m52l9mE01yTljNwbWjYQ7}/_clientMiddlewareManifest.js +0 -0
  55. /package/_next/static/{QMD1VkISjzTIQCzLSHPpB → m52l9mE01yTljNwbWjYQ7}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20705,e=>{"use strict";let t=["north","east","south","west"],r=["port","starboard","preferred_channel_port","preferred_channel_starboard"],n=e=>{let n=Number(e);return n>=9&&n<=12?{kind:"cardinal",beacon:!0,category:t[n-9]}:n>=13&&n<=16?{kind:"lateral",beacon:!0,category:r[n-13]}:17===n?{kind:"isolated_danger",beacon:!0}:18===n?{kind:"safe_water",beacon:!0}:19===n?{kind:"special_purpose",beacon:!0}:n>=20&&n<=23?{kind:"cardinal",beacon:!1,category:t[n-20]}:n>=24&&n<=27?{kind:"lateral",beacon:!1,category:r[n-24]}:28===n?{kind:"isolated_danger",beacon:!1}:29===n?{kind:"safe_water",beacon:!1}:30===n?{kind:"special_purpose",beacon:!1}:4===n?{kind:"special_purpose",beacon:!1,colours:["blue","yellow"],pattern:"vertical",topmark:{shape:"cross",colours:["yellow"]}}:{kind:"station",beacon:!0}},i=e=>{let t=n(e.atonType);return{id:`ais:${e.id}`,lat:e.latitude,lon:e.longitude,name:e.name||"",kind:t.kind,beacon:t.beacon,category:t.category||"",shape:"",colours:t.colours||[],pattern:t.pattern||"",system:"",height:null,topmark:t.topmark||null,light:null,ais:!0,virtual:e.virtual,offPosition:e.offPosition}},a=(e,t)=>Math.hypot((t.lat-e.lat)*111320,(t.lon-e.lon)*111320*Math.cos(e.lat*Math.PI/180));e.s(["atonKind",0,n,"mergeAtons",0,(e,t)=>{if(!t.length)return e;let r=e.map(e=>({...e})),n=[];for(let e of t){if(!Number.isFinite(e.latitude)||!Number.isFinite(e.longitude))continue;let t=i(e),o=!t.virtual&&r.find(e=>!e.ais&&("station"===t.kind||e.kind===t.kind)&&60>=a(e,t));o?(o.ais=!0,o.offPosition=t.offPosition,o.name||(o.name=t.name)):n.push(t)}return[...r,...n]}])},77291,24752,e=>{"use strict";var t=e.i(71645),r=e.i(62588),n=e.i(85709),i=e.i(61969),a=e.i(539);let o=Math.PI/180,s={power:1,sail:2,fishing:3,restricted:4},l=e=>{let t=String(e.navState||"").toLowerCase();if(/not under command|restricted|constrained/.test(t))return"restricted";if(/fishing/.test(t))return"fishing";if(/sailing/.test(t))return"sail";if(/motoring|engine/.test(t))return"power";let r=Number(e.shipType);return 36===r?"sail":30===r?"fishing":33===r?"restricted":"power"},u=(e,t,r)=>(0,a.wrapPi)(Math.atan2(t.x-e.x,t.y-e.y)-r),d=(e,t,r)=>{let n={x:0,y:0},i=u(n,t,e.course),l=u(t,n,t.course),d=Math.sign(l)||1,g=e=>Math.abs(e)>112.5*o;if(g(i)&&t.speed>e.speed)return{ownRole:"stand-on",rule:"13",reason:"overtakenByTarget",targetTurn:0};if(g(l)&&e.speed>t.speed)return{ownRole:"give-way",rule:"13",reason:"overtaking",targetTurn:0};let c=s[e.category]??1,p=s[t.category]??1;if(c!==p)return c<p?{ownRole:"give-way",rule:"18",reason:`giveWayTo_${t.category}`,targetTurn:0}:{ownRole:"stand-on",rule:"18",reason:`standOnFrom_${t.category}`,targetTurn:d};if("sail"===e.category&&Number.isFinite(r)){let n=(0,a.wrapPi)(r-e.course)>=0?"starboard":"port";return n!==((0,a.wrapPi)(r-t.course)>=0?"starboard":"port")?"port"===n?{ownRole:"give-way",rule:"12a-i",reason:"portTack",targetTurn:0}:{ownRole:"stand-on",rule:"12a-i",reason:"targetPortTack",targetTurn:d}:t.x*Math.sin(r)+t.y*Math.cos(r)>0?{ownRole:"stand-on",rule:"12a-ii",reason:"targetWindward",targetTurn:d}:{ownRole:"give-way",rule:"12a-ii",reason:"ownWindward",targetTurn:0}}return Math.abs((0,a.wrapPi)(t.course-e.course-Math.PI))<10*o&&Math.abs(i)<6*o?{ownRole:"both",rule:"14",reason:"headOn",targetTurn:1}:i>0?{ownRole:"give-way",rule:"15",reason:"crossingStarboard",targetTurn:0}:{ownRole:"stand-on",rule:"15",reason:"crossingPort",targetTurn:d}};e.s(["rightOfWay",0,d,"targetCategory",0,l],24752);var g=e.i(83402),c=e.i(67561);let p=[],m=["navigation.speedOverGround","navigation.courseOverGroundTrue"];e.s(["default",0,({always:e=!1}={})=>{let a,o,{targets:s}=(0,r.useAIS)({passive:!0}),{states:u}=(0,c.useOcearoContext)(),h=e||u.ais?s:p,{twd:b,heading:f}=(0,i.default)(),v=(0,n.useSignalKPaths)(m),w=(a=(0,n.useSignalKPrefix)("propulsion."),o=g.default.get("ownVesselCategory"),(0,t.useMemo)(()=>"sail"===o||"power"===o?o:Object.entries(a).some(([e,t])=>e.endsWith(".revolutions")&&Number(t)>.5||e.endsWith(".state")&&"started"===t)?"power":"sail",[a,o])),y=g.default.get("aisLengthScalingFactor")||.7;return(0,t.useMemo)(()=>{let e=v["navigation.courseOverGroundTrue"]??f,t=v["navigation.speedOverGround"]??0,r=[];if(Number.isFinite(e))for(let n of h){if("danger"!==n.risk)continue;let i=n.cog??n.cogMagnetic??n.heading;if(!Number.isFinite(i)||null===n.sceneX)continue;let a=d({course:e,speed:t,category:w},{x:n.sceneX/y,y:-n.sceneZ/y,course:i,speed:n.sog??0,category:l(n)},b);r.push({target:{...n},role:a})}r.sort((e,t)=>(e.target.tcpaSeconds??1/0)-(t.target.tcpaSeconds??1/0));let n={};for(let e of h)"close"===e.risk?n[e.mmsi]="close":"danger"===e.risk&&(n[e.mmsi]="giveWay");for(let e of r)n[e.target.mmsi]="stand-on"===e.role.ownRole?"yields":"giveWay";let i=r.filter(e=>"stand-on"!==e.role.ownRole);return{ownCategory:w,encounters:r,statuses:n,giveWay:i.length>0,giveWayTo:i[0]||null,primary:r[0]||null}},[h,b,f,v,w,y])}],77291)},61969,e=>{"use strict";var t=e.i(71645),r=e.i(85709),n=e.i(539);let i=180/Math.PI,a=["navigation.speedThroughWater","navigation.speedOverGround","navigation.headingTrue","navigation.courseOverGroundTrue","environment.wind.speedTrue","environment.wind.angleTrueWater","environment.wind.directionTrue","performance.polarSpeed","performance.polarSpeedRatio","navigation.courseGreatCircle.nextPoint.bearingTrue"];e.s(["default",0,()=>{let e=(0,r.useSignalKPaths)(a);return(0,t.useMemo)(()=>{let t=e["navigation.speedThroughWater"]??e["navigation.speedOverGround"]??null,r=e["navigation.headingTrue"]??e["navigation.courseOverGroundTrue"]??null,a=e["environment.wind.speedTrue"]??null,o=e["environment.wind.angleTrueWater"]??null,s=e["environment.wind.directionTrue"]??null;null===s&&Number.isFinite(o)&&Number.isFinite(r)&&(s=(0,n.wrapPi)(r+o));let l=e["performance.polarSpeed"]??(Number.isFinite(a)&&Number.isFinite(o)?(0,n.polarSpeedSi)(a,o):null),u=e["performance.polarSpeedRatio"]??null;null===u&&Number.isFinite(t)&&Number.isFinite(l)&&l>.2&&(u=t/l);let d=Number.isFinite(t)&&Number.isFinite(l)?(t-l)*1.943844:null,g=null,c=null,p=!Number.isFinite(o)||Math.abs(o)<Math.PI/2;if(Number.isFinite(a)){let e=p?(0,n.optimalUpwind)(1.943844*a):(0,n.optimalDownwind)(1.943844*a);e&&(g=e.twa/i,Number.isFinite(s)&&Number.isFinite(o)&&(c=(0,n.wrapPi)(s-Math.sign(o||1)*g)))}let m=e["navigation.courseGreatCircle.nextPoint.bearingTrue"],h=null;if(Number.isFinite(m)&&Number.isFinite(s)&&Number.isFinite(a)){let e=(0,n.bestVmcHeading)({twd:s,tws:a,bearing:m}),t=Number.isFinite(r)?(0,n.vmcForHeading)({twd:s,tws:a,bearing:m,heading:r}):null;h=e?{bearing:m,best:e,current:t}:null}return{ratio:u,polarSpeed:l,boatSpeed:t,deltaKn:d,heading:r,twd:s,tws:a,twa:o,targetTwa:g,targetHeading:c,upwind:p,vmc:h}},[e])}])},83646,e=>{"use strict";var t=e.i(67561);e.s(["default",0,()=>(0,t.useOcearoContext)().tokens])},74452,(e,t,r)=>{t.exports={vpp:{angles:[52,60,75,90,110,120,135,150],speeds:[6,8,10,12,14,16,20],52:[4.98,5.86,6.31,6.45,6.51,6.52,6.41],60:[5.25,6.11,6.56,6.73,6.79,6.82,6.79],75:[5.45,6.33,6.77,7.01,7.13,7.2,7.24],90:[5.66,6.55,7,7.25,7.38,7.53,7.7],110:[5.49,6.49,7.04,7.4,7.69,7.97,8.38],120:[5.32,6.36,6.97,7.39,7.77,8.1,8.6],135:[4.81,5.92,6.68,7.15,7.55,7.95,8.85],150:[4.09,5.17,6.04,6.61,6.99,7.31,7.93],beat_angle:[43.6,42,41.2,41.2,41.7,42.1,44.2],beat_vmg:[3.26,3.91,4.24,4.34,4.36,4.34,4.16],run_angle:[144.8,147.8,148.5,149.6,171.8,175.4,177.2],run_vmg:[3.54,4.48,5.23,5.73,6.17,6.67,7.36]}}},539,e=>{"use strict";var t=e.i(74452);let r=180/Math.PI,n=t.default.vpp,i=(e,t,r)=>e+(t-e)*r,a=(e,t)=>{if(t<=e[0])return[0,0];let r=e.length-1;if(t>=e[r])return[r-1,1];let n=0;for(;t>e[n+1];)n++;return[n,(t-e[n])/(e[n+1]-e[n])]},o=n.speeds.map((e,t)=>(e=>{let t=n.beat_angle[e],i=n.run_angle[e],a=n.beat_vmg[e]/Math.cos(t/r),o=n.run_vmg[e]/Math.abs(Math.cos(i/r)),s=[[0,0],[.7*t,.55*a],[t,a]];for(let r of n.angles)r>t&&r<i&&s.push([r,n[String(r)][e]]);return s.push([i,o]),i<180&&s.push([180,n.run_vmg[e]]),s})(t)),s=(e,t)=>{let[r,n]=a(e.map(e=>e[0]),t);return i(e[r][1],e[r+1][1],n)},l=(e,t)=>{if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0)return null;let r=Math.min(180,Math.abs((t+540)%360-180)),l=n.speeds;if(e<l[0])return s(o[0],r)*(e/l[0]);let[u,d]=a(l,e);return i(s(o[u],r),s(o[u+1],r),d)},u=(e,t)=>{let[r,o]=a(n.speeds,t);return i(e[r],e[r+1],o)},d=(e,t)=>{let n=l(1.943844*e,t*r);return null===n?null:n/1.943844},g=e=>{let t=(e+Math.PI)%(2*Math.PI);return t<0&&(t+=2*Math.PI),t-Math.PI};e.s(["bestVmcHeading",0,({twd:e,tws:t,bearing:n})=>{if(![e,t,n].every(Number.isFinite)||t<=0)return null;let i=null;for(let a=-100;a<=100;a++){let o=n+a/r,s=d(t,g(e-o));if(null===s)continue;let l=s*Math.cos(o-n);(!i||l>i.vmc)&&(i={heading:g(o),speed:s,vmc:l})}return i},"optimalDownwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let t=u(n.run_angle,e),i=l(e,t);return{twa:t,speed:i,vmg:-i*Math.cos(t/r)}},"optimalUpwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let t=u(n.beat_angle,e),i=l(e,t);return{twa:t,speed:i,vmg:i*Math.cos(t/r)}},"polarSpeed",0,l,"polarSpeedSi",0,d,"vmcForHeading",0,({twd:e,tws:t,bearing:r,heading:n})=>{if(![e,t,r,n].every(Number.isFinite))return null;let i=d(t,g(e-n));return null===i?null:i*Math.cos(n-r)},"wrapPi",0,g])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,23320,e=>{"use strict";var t=e.i(43476),a=e.i(71645);e.i(85269);var r=e.i(22831),o=e.i(88608),i=e.i(3666);e.s(["default",0,()=>{let{t:e}=(0,r.useTranslation)(),l=(0,a.useSyncExternalStore)(o.subscribeForecast,o.getForecastHour,o.getForecastHour),n=new Date(Date.now()+36e5*l),s=i.WINDY_SCALE.filter(([e])=>e<=25).map(([e,[t,a,r]])=>`rgb(${t},${a},${r}) ${e/25*100}%`).join(", ");return(0,t.jsxs)("div",{className:"hud-halo flex flex-col gap-1 px-3 py-2 rounded-2xl bg-hud-bg/80 backdrop-blur select-none w-[min(30rem,100%)]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"text-caption font-semibold uppercase tracking-widest text-hud-muted shrink-0",children:e("meteo.forecast")}),(0,t.jsx)("input",{type:"range",min:0,max:47,step:1,value:l,onChange:e=>(0,o.setForecastHour)(Number(e.target.value)),"aria-label":e("meteo.forecast"),className:"flex-1 min-w-0 accent-oBlue"}),(0,t.jsx)("span",{className:"text-label font-semibold tabular-nums text-hud-main shrink-0",children:0===l?e("meteo.now"):`+${l} h \xb7 ${n.toLocaleTimeString([],{weekday:"short",hour:"2-digit",minute:"2-digit"})}`})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:"flex-1 h-2 rounded-full",style:{background:`linear-gradient(to right, ${s})`}}),(0,t.jsxs)("span",{className:"text-caption text-hud-muted tabular-nums shrink-0",children:["0 – ",Math.round(48.5961)," kn"]})]})]})}])},79224,function(e){e.n(e.i(23320))},88608,e=>{"use strict";let t=0,a=new Set;e.s(["getForecastHour",0,()=>t,"setForecastHour",0,e=>{t=Math.max(0,e),a.forEach(e=>e(t))},"subscribeForecast",0,e=>(a.add(e),()=>a.delete(e))])},3666,3950,e=>{"use strict";let t="ocearo-offline-v2",a=["ocearo-offline-v1"],r=!1,o=async(e,{kind:o="tile"}={})=>{if(!("u">typeof caches))return fetch(e,{referrerPolicy:"strict-origin-when-cross-origin"});r||(r=!0,a.forEach(e=>caches.delete(e).catch(()=>{})));let i=await caches.open(t);if("tile"===o){let t=await i.match(e);if(t)return t}try{let t=await fetch(e,{mode:"cors",referrerPolicy:"strict-origin-when-cross-origin"});return t.ok&&await i.put(e,t.clone()),t}catch(a){let t=await i.match(e);if(t)return t;throw a}},i=async e=>{let t=await o(e,{kind:"tile"});if(!t.ok)throw Error(`${t.status} ${e}`);return createImageBitmap(await t.blob())},l=(e,t,a,r)=>{let o=2**r,i=(e,t)=>({x:Math.floor((t+180)/360*o),y:Math.floor((1-Math.log(Math.tan(e*Math.PI/180)+1/Math.cos(e*Math.PI/180))/Math.PI)/2*o)}),l=a/111320,n=a/(111320*Math.cos(e*Math.PI/180)),s=i(e+l,t-n),c=i(e-l,t+n),h=[];for(let e=s.x;e<=c.x;e++)for(let t=s.y;t<=c.y;t++)h.push({z:r,x:e,y:t});return h},n=async({lat:e,lon:t,radiusM:a,layers:r,urls:i=[],onProgress:n})=>{let s=[];for(let{template:o,zooms:i}of r)for(let r of i)for(let i of l(e,t,a,r))s.push(o.replace("{z}",i.z).replace("{x}",i.x).replace("{y}",i.y));s.push(...i);let c=0,h=0,u=[...s],f=async()=>{for(;u.length;){let e=u.shift();try{!(await o(e,{kind:e.includes("forecast")?"forecast":"tile"})).ok&&h++}catch{h++}c++,n?.(c,s.length,h)}};return await Promise.all(Array.from({length:4},f)),{done:c,failed:h,total:s.length}},s=async()=>{if(navigator.storage?.estimate){let{usage:e}=await navigator.storage.estimate();return e}return null},c=async(e,a)=>{if(!("u">typeof caches))return!1;let r=await caches.open(t);return await r.put(e,a),!0},h=async e=>{if(!("u">typeof caches))return null;let a=await caches.open(t);return await a.match(e)||null};e.s(["cachedFetch",0,o,"cachedImage",0,i,"clearOfflineCache",0,()=>"u">typeof caches?caches.delete(t):Promise.resolve(!1),"offlineCacheSize",0,s,"prefetchArea",0,n,"readCached",0,h,"storeCached",0,c],3950);let u={key:null,at:0,field:null},f=(e,t,a,r)=>({lat:e+(r/8*2-1)*4e4/6371e3*180/Math.PI,lon:t+(a/8*2-1)*4e4/(6371e3*Math.cos(e*Math.PI/180))*180/Math.PI}),d=(e,t)=>{let a=[],r=[];for(let o=0;o<9;o++)for(let i=0;i<9;i++){let l=f(e,t,i,o);a.push(l.lat.toFixed(4)),r.push(l.lon.toFixed(4))}return`https://api.open-meteo.com/v1/forecast?latitude=${a.join(",")}&longitude=${r.join(",")}&hourly=wind_speed_10m,wind_direction_10m&wind_speed_unit=ms&forecast_hours=48&timezone=GMT`},m=async(e,t)=>{let a=`${e.toFixed(1)},${t.toFixed(1)}`;if(u.field&&u.key===a&&Date.now()-u.at<18e5)return u.field;let r=d(e,t),i=await o(r,{kind:"forecast"});if(!i.ok)throw Error(`Open-Meteo ${i.status}`);let l=await i.json(),n=Array.isArray(l)?l:[l],s=n[0]?.hourly?.time||[],c=s.length,h=[],f=[];for(let e=0;e<c;e++){let t=new Float32Array(81),a=new Float32Array(81);n.forEach((r,o)=>{let i=r.hourly.wind_speed_10m[e]??0,l=(r.hourly.wind_direction_10m[e]??0)*Math.PI/180;t[o]=-i*Math.sin(l),a[o]=-i*Math.cos(l)}),h.push(t),f.push(a)}let m={origin:{lat:e,lon:t},start:Date.parse(`${s[0]}Z`),hours:c,u:h,v:f,source:"open-meteo"};return u={key:a,at:Date.now(),field:m},m},p=[[0,[98,113,183]],[1,[57,97,159]],[3,[74,148,169]],[5,[77,141,123]],[7,[83,165,83]],[9,[53,159,53]],[11,[167,157,81]],[13,[159,127,58]],[15,[161,108,92]],[17,[129,58,78]],[19,[175,80,136]],[21,[117,74,147]],[24,[109,97,163]],[27,[68,105,141]],[29,[92,144,152]],[36,[125,68,165]]];e.s(["HALF_EXTENT_M",0,4e4,"WINDY_SCALE",0,p,"fetchWindField",0,m,"sampleWind",0,(e,t,a,r=0)=>{let o=Math.min(9-1.001,Math.max(0,(t/4e4+1)/2*8)),i=Math.min(9-1.001,Math.max(0,(a/4e4+1)/2*8)),l=Math.floor(o),n=Math.floor(i),s=o-l,c=i-n,h=Math.min(e.hours-1,Math.max(0,Math.floor(r))),u=Math.min(e.hours-1,h+1),f=Math.min(1,Math.max(0,r-h)),d=(e,t)=>{let a=e[t],r=9*n+l;return(a[r]*(1-s)+a[r+1]*s)*(1-c)+(a[r+9]*(1-s)+a[r+9+1]*s)*c};return{u:d(e.u,h)*(1-f)+d(e.u,u)*f,v:d(e.v,h)*(1-f)+d(e.v,u)*f}},"uniformField",0,(e,t,a,r)=>{let o=new Float32Array(81).fill(-a*Math.sin(r)),i=new Float32Array(81).fill(-a*Math.cos(r));return{origin:{lat:e,lon:t},start:Date.now(),hours:1,u:[o],v:[i],source:"boat"}},"windColor",0,e=>{if(e<=p[0][0])return p[0][1];for(let t=1;t<p.length;t++)if(e<=p[t][0]){let[a,r]=p[t-1],[o,i]=p[t],l=(e-a)/(o-a);return r.map((e,t)=>e+(i[t]-e)*l)}return p[p.length-1][1]},"windFieldUrl",0,d],3666)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,43322,e=>{e.v(t=>Promise.all(["static/chunks/3qzb9nvvw-b-k.js"].map(t=>e.l(t))).then(()=>t(56101)))},34882,e=>{e.v(t=>Promise.all(["static/chunks/0j11dppxb9l0b.js"].map(t=>e.l(t))).then(()=>t(77021)))},59499,e=>{e.v(t=>Promise.all(["static/chunks/3td9mnhvcj9cq.js"].map(t=>e.l(t))).then(()=>t(85003)))},30150,e=>{e.v(t=>Promise.all(["static/chunks/1d81m3g9jqkob.js"].map(t=>e.l(t))).then(()=>t(84237)))},64390,e=>{e.v(t=>Promise.all(["static/chunks/3zqx8h9yg5-ch.js"].map(t=>e.l(t))).then(()=>t(39554)))},93170,e=>{e.v(t=>Promise.all(["static/chunks/0-c2-u5p6bxzo.js","static/chunks/11awvgcou7v4r.js"].map(t=>e.l(t))).then(()=>t(50226)))},48217,e=>{e.v(t=>Promise.all(["static/chunks/2n86yq1wz1yx7.js"].map(t=>e.l(t))).then(()=>t(14774)))},29882,e=>{e.v(t=>Promise.all(["static/chunks/2w71oj1brox5z.js"].map(t=>e.l(t))).then(()=>t(56665)))},93889,e=>{e.v(t=>Promise.all(["static/chunks/1mtfh1vqpvit2.js"].map(t=>e.l(t))).then(()=>t(58166)))},36258,e=>{e.v(t=>Promise.all(["static/chunks/0b3cus8izqkmg.js","static/chunks/2aivnrnff0avu.js","static/chunks/1arvue9o-atui.js","static/chunks/33u782y6vhw-f.js"].map(t=>e.l(t))).then(()=>t(59465)))},97820,e=>{e.v(t=>Promise.all(["static/chunks/2wayx8t5r5fi9.js","static/chunks/33u782y6vhw-f.js","static/chunks/2aivnrnff0avu.js"].map(t=>e.l(t))).then(()=>t(69675)))},82041,e=>{e.v(t=>Promise.all(["static/chunks/0-jqvc-r0kh0c.js"].map(t=>e.l(t))).then(()=>t(41994)))},73321,e=>{e.v(t=>Promise.all(["static/chunks/1cp1kkarm5gxz.js"].map(t=>e.l(t))).then(()=>t(78938)))},11657,e=>{e.v(t=>Promise.all(["static/chunks/07gn9z0d6clzs.js"].map(t=>e.l(t))).then(()=>t(75058)))},93540,e=>{e.v(t=>Promise.all(["static/chunks/1g8fbzv0hu0i2.js"].map(t=>e.l(t))).then(()=>t(84809)))},71762,e=>{e.v(t=>Promise.all(["static/chunks/1bo0ke8gjc1c2.js"].map(t=>e.l(t))).then(()=>t(91999)))},32598,e=>{e.v(t=>Promise.all(["static/chunks/2fthh9f57zzm2.js"].map(t=>e.l(t))).then(()=>t(79224)))},32673,e=>{e.v(t=>Promise.all(["static/chunks/05do10p9ldt1p.js"].map(t=>e.l(t))).then(()=>t(36540)))},11220,e=>{e.v(t=>Promise.all(["static/chunks/1l-jew0-1-3eq.js","static/chunks/33u782y6vhw-f.js","static/chunks/2aivnrnff0avu.js"].map(t=>e.l(t))).then(()=>t(27404)))},39271,e=>{"use strict";var t=e.i(43476),a=e.i(71645);e.i(85269);var s=e.i(22831),n=e.i(49721),l=e.i(68757),i=e.i(30206);let r=[10,30,60,120],u=()=>(0,a.useSyncExternalStore)(i.subscribeReplay,i.getReplayState,i.getReplayState);e.s(["default",0,()=>{let{t:e}=(0,s.useTranslation)(),a=u();if(!a.active)return null;let c=Math.max(1,a.end-a.start);return(0,t.jsxs)("div",{className:"hud-halo flex items-center gap-3 px-3 py-2 rounded-2xl bg-hud-bg/80 backdrop-blur select-none w-[min(40rem,100%)] flex-wrap",children:[(0,t.jsx)("span",{className:"text-caption font-semibold uppercase tracking-widest text-oBlue shrink-0",children:e("replay.title")}),(0,t.jsx)("button",{type:"button",onClick:i.togglePlay,"aria-label":e(a.playing?"replay.pause":"replay.play"),className:"w-9 h-9 rounded-full bg-hud-elevated text-hud-main flex items-center justify-center shrink-0",children:(0,t.jsx)(n.FontAwesomeIcon,{icon:a.playing?l.faPause:l.faPlay})}),(0,t.jsx)("input",{type:"range",min:a.start,max:a.end,step:1e3,value:a.time,onChange:e=>(0,i.seekReplay)(Number(e.target.value)),"aria-label":e("replay.timeline"),className:"flex-1 min-w-0 accent-oBlue"}),(0,t.jsx)("span",{className:"text-label font-semibold tabular-nums text-hud-main shrink-0",children:new Date(a.time).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}),(0,t.jsxs)("span",{className:"text-caption text-hud-muted tabular-nums shrink-0",children:[Math.round((a.time-a.start)/c*100),"%"]}),(0,t.jsx)("div",{className:"flex gap-1 shrink-0",children:r.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>(0,i.setReplaySpeed)(e),className:`px-2 py-1 rounded-lg text-caption font-semibold ${a.speed===e?"bg-oBlue text-white":"text-hud-muted hover:text-hud-main"}`,children:["×",e]},e))}),(0,t.jsx)("button",{type:"button",onClick:i.stopReplay,"aria-label":e("replay.close"),className:"w-8 h-8 rounded-full text-hud-muted hover:text-hud-main flex items-center justify-center shrink-0",children:(0,t.jsx)(n.FontAwesomeIcon,{icon:l.faXmark})})]})},"useReplay",0,u])},66984,e=>{e.v(t=>Promise.all(["static/chunks/0jpa5m78l0ib0.js"].map(t=>e.l(t))).then(()=>t(79261)))},72466,e=>{"use strict";let t={WARNING_THRESHOLD:50,DANGER_THRESHOLD:20,CHARGING_THRESHOLD:13.2,MIN_VOLTAGE:10.5,MAX_VOLTAGE:14.4};e.s(["BATTERY_CONFIG",0,t,"estimateStateOfCharge",0,e=>{if(!e||"number"!=typeof e)return 0;if(e>=13)return 100;if(e<=t.MIN_VOLTAGE)return 0;let a=[{voltage:12.85,soc:100},{voltage:12.75,soc:90},{voltage:12.65,soc:80},{voltage:12.55,soc:70},{voltage:12.45,soc:60},{voltage:12.35,soc:50},{voltage:12.25,soc:40},{voltage:12.15,soc:30},{voltage:12.05,soc:20},{voltage:11.95,soc:15},{voltage:11.8,soc:10},{voltage:11.6,soc:5},{voltage:10.5,soc:0}];for(let t=0;t<a.length-1;t++)if(e>=a[t+1].voltage){let s=a[t].voltage,n=a[t+1].voltage,l=a[t].soc,i=a[t+1].soc;return Math.round(i+(e-n)/(s-n)*(l-i))}return 0},"isBatteryCharging",0,e=>e>t.CHARGING_THRESHOLD])},58567,e=>{"use strict";var t=e.i(83402);e.s(["RENDER_QUALITIES",0,["auto","high","pi"],"getRenderProfile",0,()=>{let e=t.default.get("renderQuality")||"auto";return"pi"===e||"auto"===e&&(()=>{if("u"<typeof navigator)return!1;if(/aarch64|armv7|armv8|arm64|raspbian|raspberry/i.test(navigator.userAgent))return!0;let e=navigator.hardwareConcurrency||8,t=navigator.deviceMemory||8;return e<=4&&t<=4})()?{id:"pi",fps:30,dpr:1,antialias:!1}:{id:"high",fps:60,dpr:Math.min(window.devicePixelRatio||1,1.5),antialias:!0}}])},52822,(e,t,a)=>{"use strict";var s=e.r(71645),n=e.r(2239),l="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},i=n.useSyncExternalStore,r=s.useRef,u=s.useEffect,c=s.useMemo,o=s.useDebugValue;a.useSyncExternalStoreWithSelector=function(e,t,a,s,n){var h=r(null);if(null===h.current){var m={hasValue:!1,value:null};h.current=m}else m=h.current;var v=i(e,(h=c(function(){function e(e){if(!u){if(u=!0,i=e,e=s(e),void 0!==n&&m.hasValue){var t=m.value;if(n(t,e))return r=t}return r=e}if(t=r,l(i,e))return t;var a=s(e);return void 0!==n&&n(t,a)?(i=e,t):(i=e,r=a)}var i,r,u=!1,c=void 0===a?null:a;return[function(){return e(t())},null===c?void 0:function(){return e(c())}]},[t,a,s,n]))[0],h[1]);return u(function(){m.hasValue=!0,m.value=v},[v]),o(v),v}},30224,(e,t,a)=>{"use strict";e.i(47167),t.exports=e.r(52822)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,26822,e=>{"use strict";var t=e.i(43476),r=e.i(71645);e.i(85269);var n=e.i(22831),i=e.i(83524),a=e.i(85709),o=e.i(66799);let s=["compass","gps","heading","auto"],l=["steering.autopilot.engaged","steering.autopilot.state","steering.autopilot.mode"];e.s(["default",0,()=>{let{t:e}=(0,n.useTranslation)(),u=(0,i.default)(),d=(0,a.useSignalKPaths)(l),[g,c]=(0,r.useState)(!1),[p,m]=(0,r.useState)(null),v=(0,r.useRef)(null);if((0,r.useEffect)(()=>()=>clearTimeout(v.current),[]),!u)return null;let h=d["steering.autopilot.engaged"]??"enabled"===d["steering.autopilot.state"],f=d["steering.autopilot.mode"],b=!0===h&&(!f||s.includes(f))&&null!==u.change,w=Math.round((u.change??0)*180/Math.PI),M=async()=>{if(!g){c(!0),v.current=setTimeout(()=>c(!1),4e3);return}clearTimeout(v.current),c(!1);try{await o.default.adjustAutopilotTarget(w),m({ok:!0,text:e("advice.applied")})}catch(e){m({ok:!1,text:e?.message||String(e)})}setTimeout(()=>m(null),4e3)},T="avoid"===u.kind,N="standOn"===u.kind;return(0,t.jsxs)("div",{className:`tesla-card !p-3 flex items-center gap-3 max-w-[30rem] ${T?"border-oRed/60":""}`,children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:`text-label font-semibold ${T?"text-oRed":N?"text-oGreen":"text-oYellow"}`,children:((e,t)=>{let r=Math.round(180*Math.abs(e.change)/Math.PI);if("standOn"===e.kind)return t("advice.standOn");if("avoid"===e.kind&&e.noSolution)return t("advice.avoidNoSolution");if("avoid"===e.kind)return t("advice.avoid",{deg:r,side:t(e.change>=0?"advice.starboard":"advice.port")});let n=e.change>=0?"+":"−";return t("advice.vmg",{change:`${n}${r}\xb0`,gain:e.gainKn.toFixed(1)})})(u,e)}),(0,t.jsx)("div",{className:"text-caption text-hud-muted truncate",children:p?p.text:u.reason?`${e(`colregs.${u.reason}`,{name:u.targetName||"AIS"})} \xb7 ${e("colregs.rule",{rule:u.lastMoment?"17b":u.rule})}`:T?e("advice.avoidHint",{name:u.targetName||"AIS"}):e("advice.vmgHint")})]}),b&&!N&&(0,t.jsx)("button",{type:"button",onClick:M,className:`shrink-0 px-3 py-2 rounded-lg text-caption font-semibold uppercase tracking-wider border transition-colors ${g?"bg-oYellow text-black border-oYellow":"border-hud text-hud-main tesla-hover"}`,children:g?e("advice.confirm"):e("advice.apply")})]})}],26822)},56101,function(e){e.n(e.i(26822))},77291,24752,e=>{"use strict";var t=e.i(71645),r=e.i(62588),n=e.i(85709),i=e.i(61969),a=e.i(539);let o=Math.PI/180,s={power:1,sail:2,fishing:3,restricted:4},l=e=>{let t=String(e.navState||"").toLowerCase();if(/not under command|restricted|constrained/.test(t))return"restricted";if(/fishing/.test(t))return"fishing";if(/sailing/.test(t))return"sail";if(/motoring|engine/.test(t))return"power";let r=Number(e.shipType);return 36===r?"sail":30===r?"fishing":33===r?"restricted":"power"},u=(e,t,r)=>(0,a.wrapPi)(Math.atan2(t.x-e.x,t.y-e.y)-r),d=(e,t,r)=>{let n={x:0,y:0},i=u(n,t,e.course),l=u(t,n,t.course),d=Math.sign(l)||1,g=e=>Math.abs(e)>112.5*o;if(g(i)&&t.speed>e.speed)return{ownRole:"stand-on",rule:"13",reason:"overtakenByTarget",targetTurn:0};if(g(l)&&e.speed>t.speed)return{ownRole:"give-way",rule:"13",reason:"overtaking",targetTurn:0};let c=s[e.category]??1,p=s[t.category]??1;if(c!==p)return c<p?{ownRole:"give-way",rule:"18",reason:`giveWayTo_${t.category}`,targetTurn:0}:{ownRole:"stand-on",rule:"18",reason:`standOnFrom_${t.category}`,targetTurn:d};if("sail"===e.category&&Number.isFinite(r)){let n=(0,a.wrapPi)(r-e.course)>=0?"starboard":"port";return n!==((0,a.wrapPi)(r-t.course)>=0?"starboard":"port")?"port"===n?{ownRole:"give-way",rule:"12a-i",reason:"portTack",targetTurn:0}:{ownRole:"stand-on",rule:"12a-i",reason:"targetPortTack",targetTurn:d}:t.x*Math.sin(r)+t.y*Math.cos(r)>0?{ownRole:"stand-on",rule:"12a-ii",reason:"targetWindward",targetTurn:d}:{ownRole:"give-way",rule:"12a-ii",reason:"ownWindward",targetTurn:0}}return Math.abs((0,a.wrapPi)(t.course-e.course-Math.PI))<10*o&&Math.abs(i)<6*o?{ownRole:"both",rule:"14",reason:"headOn",targetTurn:1}:i>0?{ownRole:"give-way",rule:"15",reason:"crossingStarboard",targetTurn:0}:{ownRole:"stand-on",rule:"15",reason:"crossingPort",targetTurn:d}};e.s(["rightOfWay",0,d,"targetCategory",0,l],24752);var g=e.i(83402),c=e.i(67561);let p=[],m=["navigation.speedOverGround","navigation.courseOverGroundTrue"];e.s(["default",0,({always:e=!1}={})=>{let a,o,{targets:s}=(0,r.useAIS)({passive:!0}),{states:u}=(0,c.useOcearoContext)(),v=e||u.ais?s:p,{twd:h,heading:f}=(0,i.default)(),b=(0,n.useSignalKPaths)(m),w=(a=(0,n.useSignalKPrefix)("propulsion."),o=g.default.get("ownVesselCategory"),(0,t.useMemo)(()=>"sail"===o||"power"===o?o:Object.entries(a).some(([e,t])=>e.endsWith(".revolutions")&&Number(t)>.5||e.endsWith(".state")&&"started"===t)?"power":"sail",[a,o])),M=g.default.get("aisLengthScalingFactor")||.7;return(0,t.useMemo)(()=>{let e=b["navigation.courseOverGroundTrue"]??f,t=b["navigation.speedOverGround"]??0,r=[];if(Number.isFinite(e))for(let n of v){if("danger"!==n.risk)continue;let i=n.cog??n.cogMagnetic??n.heading;if(!Number.isFinite(i)||null===n.sceneX)continue;let a=d({course:e,speed:t,category:w},{x:n.sceneX/M,y:-n.sceneZ/M,course:i,speed:n.sog??0,category:l(n)},h);r.push({target:{...n},role:a})}r.sort((e,t)=>(e.target.tcpaSeconds??1/0)-(t.target.tcpaSeconds??1/0));let n={};for(let e of v)"close"===e.risk?n[e.mmsi]="close":"danger"===e.risk&&(n[e.mmsi]="giveWay");for(let e of r)n[e.target.mmsi]="stand-on"===e.role.ownRole?"yields":"giveWay";let i=r.filter(e=>"stand-on"!==e.role.ownRole);return{ownCategory:w,encounters:r,statuses:n,giveWay:i.length>0,giveWayTo:i[0]||null,primary:r[0]||null}},[v,h,f,b,w,M])}],77291)},83524,e=>{"use strict";var t=e.i(71645),r=e.i(62588),n=e.i(85709),i=e.i(61969),a=e.i(90669),o=e.i(539),s=e.i(83402),l=e.i(77291);let u=Math.PI/180,d=3*u,g=60*u,c=5*u,p=90*u,m=["navigation.speedOverGround","navigation.courseOverGroundTrue"];e.s(["default",0,()=>{let{targets:e}=(0,r.useAIS)({passive:!0}),u=(0,i.default)(),v=(0,n.useSignalKPaths)(m),h=(0,t.useMemo)(()=>(0,a.getCollisionThresholds)(),[]),f=(0,l.default)(),b=s.default.get("aisLengthScalingFactor")||.7;return(0,t.useMemo)(()=>{let t=v["navigation.speedOverGround"],r=v["navigation.courseOverGroundTrue"]??u.heading,n=f.giveWayTo||f.primary;if(n&&Number.isFinite(t)&&t>.3&&Number.isFinite(r)){let{target:i,role:s}=n,l={targetName:i.name,rule:s.rule,reason:s.reason},u="stand-on"===s.ownRole&&Number.isFinite(i.tcpaSeconds)&&i.tcpaSeconds<180&&Number.isFinite(i.cpaMeters)&&i.cpaMeters<.3*h.cpaMeters;if("stand-on"===s.ownRole&&!u)return{kind:"standOn",change:0,heading:r,...l};let d=Math.sign(Math.sin(Math.atan2(i.sceneX,-i.sceneZ)-r))||1,g=(({targets:e,sog:t,cog:r,scale:n,thresholds:i,preferSide:o=0})=>{let s=e.filter(e=>null!==e.distanceMeters&&null!==e.sceneX&&Number.isFinite(e.sog)&&Number.isFinite(e.cog??e.cogMagnetic)),l=(e,r=i.cpaMeters)=>s.every(o=>{let s=(0,a.closestApproach)({rx:o.sceneX/n,ry:-o.sceneZ/n,ownSog:t,ownCog:e,targetSog:o.sog,targetCog:o.cog??o.cogMagnetic});return!s||s.tcpa<=0||s.tcpa>i.tcpaSeconds||s.cpa>=r}),u=o<0?[-1,1]:[1,-1],d=(e,t)=>{for(let n=c;n<=p+1e-9;n+=c)if(l(r+e*n,t))return e*n;return null};if(0!==o)return d(u[0])??d(u[0],i.cpaMeters/2)??d(u[1]);for(let e=c;e<=p+1e-9;e+=c){if(l(r+e))return e;if(l(r-e))return-e}return null})({targets:e,sog:t,cog:r,scale:b,thresholds:h,preferSide:"both"===s.ownRole||"power"===f.ownCategory||u?1:d});return null!==g?{kind:"avoid",change:g,heading:(0,o.wrapPi)(r+g),lastMoment:u,...l}:{kind:"avoid",change:null,heading:r,lastMoment:u,noSolution:!0,...l}}let i=u.vmc;if(i&&Number.isFinite(i.current)&&Number.isFinite(u.heading)){let e=(0,o.wrapPi)(i.best.heading-u.heading),t=(i.best.vmc-i.current)*1.943844;if(t>=.15&&Math.abs(e)>=d&&Math.abs(e)<=g)return{kind:"vmg",change:e,heading:i.best.heading,gainKn:t}}return null},[e,u,v,b,h,f])}])},61969,e=>{"use strict";var t=e.i(71645),r=e.i(85709),n=e.i(539);let i=180/Math.PI,a=["navigation.speedThroughWater","navigation.speedOverGround","navigation.headingTrue","navigation.courseOverGroundTrue","environment.wind.speedTrue","environment.wind.angleTrueWater","environment.wind.directionTrue","performance.polarSpeed","performance.polarSpeedRatio","navigation.courseGreatCircle.nextPoint.bearingTrue"];e.s(["default",0,()=>{let e=(0,r.useSignalKPaths)(a);return(0,t.useMemo)(()=>{let t=e["navigation.speedThroughWater"]??e["navigation.speedOverGround"]??null,r=e["navigation.headingTrue"]??e["navigation.courseOverGroundTrue"]??null,a=e["environment.wind.speedTrue"]??null,o=e["environment.wind.angleTrueWater"]??null,s=e["environment.wind.directionTrue"]??null;null===s&&Number.isFinite(o)&&Number.isFinite(r)&&(s=(0,n.wrapPi)(r+o));let l=e["performance.polarSpeed"]??(Number.isFinite(a)&&Number.isFinite(o)?(0,n.polarSpeedSi)(a,o):null),u=e["performance.polarSpeedRatio"]??null;null===u&&Number.isFinite(t)&&Number.isFinite(l)&&l>.2&&(u=t/l);let d=Number.isFinite(t)&&Number.isFinite(l)?(t-l)*1.943844:null,g=null,c=null,p=!Number.isFinite(o)||Math.abs(o)<Math.PI/2;if(Number.isFinite(a)){let e=p?(0,n.optimalUpwind)(1.943844*a):(0,n.optimalDownwind)(1.943844*a);e&&(g=e.twa/i,Number.isFinite(s)&&Number.isFinite(o)&&(c=(0,n.wrapPi)(s-Math.sign(o||1)*g)))}let m=e["navigation.courseGreatCircle.nextPoint.bearingTrue"],v=null;if(Number.isFinite(m)&&Number.isFinite(s)&&Number.isFinite(a)){let e=(0,n.bestVmcHeading)({twd:s,tws:a,bearing:m}),t=Number.isFinite(r)?(0,n.vmcForHeading)({twd:s,tws:a,bearing:m,heading:r}):null;v=e?{bearing:m,best:e,current:t}:null}return{ratio:u,polarSpeed:l,boatSpeed:t,deltaKn:d,heading:r,twd:s,tws:a,twa:o,targetTwa:g,targetHeading:c,upwind:p,vmc:v}},[e])}])},74452,(e,t,r)=>{t.exports={vpp:{angles:[52,60,75,90,110,120,135,150],speeds:[6,8,10,12,14,16,20],52:[4.98,5.86,6.31,6.45,6.51,6.52,6.41],60:[5.25,6.11,6.56,6.73,6.79,6.82,6.79],75:[5.45,6.33,6.77,7.01,7.13,7.2,7.24],90:[5.66,6.55,7,7.25,7.38,7.53,7.7],110:[5.49,6.49,7.04,7.4,7.69,7.97,8.38],120:[5.32,6.36,6.97,7.39,7.77,8.1,8.6],135:[4.81,5.92,6.68,7.15,7.55,7.95,8.85],150:[4.09,5.17,6.04,6.61,6.99,7.31,7.93],beat_angle:[43.6,42,41.2,41.2,41.7,42.1,44.2],beat_vmg:[3.26,3.91,4.24,4.34,4.36,4.34,4.16],run_angle:[144.8,147.8,148.5,149.6,171.8,175.4,177.2],run_vmg:[3.54,4.48,5.23,5.73,6.17,6.67,7.36]}}},539,e=>{"use strict";var t=e.i(74452);let r=180/Math.PI,n=t.default.vpp,i=(e,t,r)=>e+(t-e)*r,a=(e,t)=>{if(t<=e[0])return[0,0];let r=e.length-1;if(t>=e[r])return[r-1,1];let n=0;for(;t>e[n+1];)n++;return[n,(t-e[n])/(e[n+1]-e[n])]},o=n.speeds.map((e,t)=>(e=>{let t=n.beat_angle[e],i=n.run_angle[e],a=n.beat_vmg[e]/Math.cos(t/r),o=n.run_vmg[e]/Math.abs(Math.cos(i/r)),s=[[0,0],[.7*t,.55*a],[t,a]];for(let r of n.angles)r>t&&r<i&&s.push([r,n[String(r)][e]]);return s.push([i,o]),i<180&&s.push([180,n.run_vmg[e]]),s})(t)),s=(e,t)=>{let[r,n]=a(e.map(e=>e[0]),t);return i(e[r][1],e[r+1][1],n)},l=(e,t)=>{if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0)return null;let r=Math.min(180,Math.abs((t+540)%360-180)),l=n.speeds;if(e<l[0])return s(o[0],r)*(e/l[0]);let[u,d]=a(l,e);return i(s(o[u],r),s(o[u+1],r),d)},u=(e,t)=>{let[r,o]=a(n.speeds,t);return i(e[r],e[r+1],o)},d=(e,t)=>{let n=l(1.943844*e,t*r);return null===n?null:n/1.943844},g=e=>{let t=(e+Math.PI)%(2*Math.PI);return t<0&&(t+=2*Math.PI),t-Math.PI};e.s(["bestVmcHeading",0,({twd:e,tws:t,bearing:n})=>{if(![e,t,n].every(Number.isFinite)||t<=0)return null;let i=null;for(let a=-100;a<=100;a++){let o=n+a/r,s=d(t,g(e-o));if(null===s)continue;let l=s*Math.cos(o-n);(!i||l>i.vmc)&&(i={heading:g(o),speed:s,vmc:l})}return i},"optimalDownwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let t=u(n.run_angle,e),i=l(e,t);return{twa:t,speed:i,vmg:-i*Math.cos(t/r)}},"optimalUpwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let t=u(n.beat_angle,e),i=l(e,t);return{twa:t,speed:i,vmg:i*Math.cos(t/r)}},"polarSpeed",0,l,"polarSpeedSi",0,d,"vmcForHeading",0,({twd:e,tws:t,bearing:r,heading:n})=>{if(![e,t,r,n].every(Number.isFinite))return null;let i=d(t,g(e-n));return null===i?null:i*Math.cos(n-r)},"wrapPi",0,g])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71311,e=>{"use strict";var n=e.i(43476),t=e.i(71645);e.i(85269);var i=e.i(22831),r=e.i(67561),a=e.i(85709),l=e.i(61969),u=e.i(46991);let o=["navigation.headingTrue","navigation.courseOverGroundTrue","navigation.speedThroughWater","environment.wind.speedTrue","environment.wind.angleTrueWater","environment.wind.speedApparent","environment.wind.angleApparent","environment.depth.belowKeel","environment.depth.belowTransducer","environment.depth.belowSurface","navigation.courseGreatCircle.nextPoint.distance","navigation.courseGreatCircle.nextPoint.timeToGo","performance.velocityMadeGood","performance.polarSpeedRatio","environment.current","navigation.anchor.currentRadius","navigation.anchor.maxRadius"],s=(e,n=1)=>Number.isFinite(e)?e.toFixed(n):"--",d=e=>Number.isFinite(e)?`${String((0,u.toDegrees)(e)).padStart(3,"0")}\xb0`:"--",m=(e,n)=>{if(!Number.isFinite(e))return"--";let t=Math.round(Math.abs((0,u.radToDeg)(e)));return`${t}\xb0${n(e>=0?"hud.starboardShort":"hud.portShort")}`},p=e=>e.anchorWatch?"anchor":e.parkingMode?"harbour":e.racing?"racing":"route";e.s(["default",0,({omitDepth:e=!1,maxItems:c=4})=>{let{t:h}=(0,i.useTranslation)(),{states:v}=(0,r.useOcearoContext)(),b=(0,a.useSignalKPaths)(o),g=(0,l.default)(),w=p(v),f=(0,t.useMemo)(()=>{let e=b["environment.depth.belowKeel"]??b["environment.depth.belowTransducer"]??b["environment.depth.belowSurface"],n={id:"depth",label:h("hud.depth"),value:s((0,u.convertDepthUnit)(e)),unit:(0,u.getDepthUnitLabel)(),warn:Number.isFinite(e)&&e<3},t={label:h("hud.tws"),value:s((0,u.convertSpeedUnit)(b["environment.wind.speedTrue"])),unit:(0,u.getSpeedUnitLabel)()},i=b["navigation.headingTrue"]??b["navigation.courseOverGroundTrue"];switch(w){case"racing":return[{label:h("hud.polar"),value:Number.isFinite(g.ratio)?Math.round(100*g.ratio):"--",unit:"%",sub:Number.isFinite(g.deltaKn)?`${g.deltaKn>=0?"+":"−"}${Math.abs(g.deltaKn).toFixed(1)} kn`:null,warn:Number.isFinite(g.ratio)&&g.ratio<.8},{label:h("hud.vmg"),value:s((0,u.convertSpeedUnit)(b["performance.velocityMadeGood"])),unit:(0,u.getSpeedUnitLabel)()},{label:h("hud.twa"),value:m(b["environment.wind.angleTrueWater"],h)},t];case"harbour":return[n,{label:h("hud.heading"),value:d(i)},{label:h("hud.stw"),value:s((0,u.convertSpeedUnit)(b["navigation.speedThroughWater"])),unit:(0,u.getSpeedUnitLabel)()},{label:h("hud.aws"),value:s((0,u.convertSpeedUnit)(b["environment.wind.speedApparent"])),unit:(0,u.getSpeedUnitLabel)()},{label:h("hud.awa"),value:m(b["environment.wind.angleApparent"],h)}];case"anchor":return[n,t,{label:h("hud.swing"),value:s(b["navigation.anchor.currentRadius"],0),unit:"m"},{label:h("hud.alarmRadius"),value:s(b["navigation.anchor.maxRadius"],0),unit:"m"}];default:{let e=b["navigation.courseGreatCircle.nextPoint.distance"];return[{label:h("hud.heading"),value:d(i)},t,{label:h("hud.awa"),value:m(b["environment.wind.angleApparent"],h)},n,Number.isFinite(e)&&{label:h("hud.waypoint"),value:s((0,u.convertDistanceUnit)(e)),unit:(0,u.getDistanceUnitLabel)(),sub:(e=>{if(!Number.isFinite(e)||e<0)return"--";let n=Math.floor(e/3600),t=Math.round(e%3600/60);return n>0?`${n}h${String(t).padStart(2,"0")}`:`${t} min`})(b["navigation.courseGreatCircle.nextPoint.timeToGo"])}].filter(Boolean)}}},[b,g,w,h]),N=(e?f.filter(e=>"depth"!==e.id):f).slice(0,c);return(0,n.jsx)("div",{className:"ml-3 mt-4 flex flex-col gap-3 select-none",children:N.map(e=>(0,n.jsxs)("div",{className:"leading-none",children:[(0,n.jsx)("div",{className:"text-caption font-semibold uppercase tracking-widest text-hud-muted",children:e.label}),(0,n.jsxs)("div",{className:"flex items-baseline gap-1 mt-1",children:[(0,n.jsx)("span",{className:`text-value font-semibold ${e.warn?"text-oRed":"text-hud-main"}`,children:e.value}),e.unit&&(0,n.jsx)("span",{className:"text-caption font-semibold text-hud-secondary",children:e.unit}),e.sub&&"--"!==e.sub&&(0,n.jsx)("span",{className:"text-caption text-hud-muted ml-1",children:e.sub})]})]},e.label))})},"hudMode",0,p])},85003,function(e){e.n(e.i(71311))},61969,e=>{"use strict";var n=e.i(71645),t=e.i(85709),i=e.i(539);let r=180/Math.PI,a=["navigation.speedThroughWater","navigation.speedOverGround","navigation.headingTrue","navigation.courseOverGroundTrue","environment.wind.speedTrue","environment.wind.angleTrueWater","environment.wind.directionTrue","performance.polarSpeed","performance.polarSpeedRatio","navigation.courseGreatCircle.nextPoint.bearingTrue"];e.s(["default",0,()=>{let e=(0,t.useSignalKPaths)(a);return(0,n.useMemo)(()=>{let n=e["navigation.speedThroughWater"]??e["navigation.speedOverGround"]??null,t=e["navigation.headingTrue"]??e["navigation.courseOverGroundTrue"]??null,a=e["environment.wind.speedTrue"]??null,l=e["environment.wind.angleTrueWater"]??null,u=e["environment.wind.directionTrue"]??null;null===u&&Number.isFinite(l)&&Number.isFinite(t)&&(u=(0,i.wrapPi)(t+l));let o=e["performance.polarSpeed"]??(Number.isFinite(a)&&Number.isFinite(l)?(0,i.polarSpeedSi)(a,l):null),s=e["performance.polarSpeedRatio"]??null;null===s&&Number.isFinite(n)&&Number.isFinite(o)&&o>.2&&(s=n/o);let d=Number.isFinite(n)&&Number.isFinite(o)?(n-o)*1.943844:null,m=null,p=null,c=!Number.isFinite(l)||Math.abs(l)<Math.PI/2;if(Number.isFinite(a)){let e=c?(0,i.optimalUpwind)(1.943844*a):(0,i.optimalDownwind)(1.943844*a);e&&(m=e.twa/r,Number.isFinite(u)&&Number.isFinite(l)&&(p=(0,i.wrapPi)(u-Math.sign(l||1)*m)))}let h=e["navigation.courseGreatCircle.nextPoint.bearingTrue"],v=null;if(Number.isFinite(h)&&Number.isFinite(u)&&Number.isFinite(a)){let e=(0,i.bestVmcHeading)({twd:u,tws:a,bearing:h}),n=Number.isFinite(t)?(0,i.vmcForHeading)({twd:u,tws:a,bearing:h,heading:t}):null;v=e?{bearing:h,best:e,current:n}:null}return{ratio:s,polarSpeed:o,boatSpeed:n,deltaKn:d,heading:t,twd:u,tws:a,twa:l,targetTwa:m,targetHeading:p,upwind:c,vmc:v}},[e])}])},74452,(e,n,t)=>{n.exports={vpp:{angles:[52,60,75,90,110,120,135,150],speeds:[6,8,10,12,14,16,20],52:[4.98,5.86,6.31,6.45,6.51,6.52,6.41],60:[5.25,6.11,6.56,6.73,6.79,6.82,6.79],75:[5.45,6.33,6.77,7.01,7.13,7.2,7.24],90:[5.66,6.55,7,7.25,7.38,7.53,7.7],110:[5.49,6.49,7.04,7.4,7.69,7.97,8.38],120:[5.32,6.36,6.97,7.39,7.77,8.1,8.6],135:[4.81,5.92,6.68,7.15,7.55,7.95,8.85],150:[4.09,5.17,6.04,6.61,6.99,7.31,7.93],beat_angle:[43.6,42,41.2,41.2,41.7,42.1,44.2],beat_vmg:[3.26,3.91,4.24,4.34,4.36,4.34,4.16],run_angle:[144.8,147.8,148.5,149.6,171.8,175.4,177.2],run_vmg:[3.54,4.48,5.23,5.73,6.17,6.67,7.36]}}},539,e=>{"use strict";var n=e.i(74452);let t=180/Math.PI,i=n.default.vpp,r=(e,n,t)=>e+(n-e)*t,a=(e,n)=>{if(n<=e[0])return[0,0];let t=e.length-1;if(n>=e[t])return[t-1,1];let i=0;for(;n>e[i+1];)i++;return[i,(n-e[i])/(e[i+1]-e[i])]},l=i.speeds.map((e,n)=>(e=>{let n=i.beat_angle[e],r=i.run_angle[e],a=i.beat_vmg[e]/Math.cos(n/t),l=i.run_vmg[e]/Math.abs(Math.cos(r/t)),u=[[0,0],[.7*n,.55*a],[n,a]];for(let t of i.angles)t>n&&t<r&&u.push([t,i[String(t)][e]]);return u.push([r,l]),r<180&&u.push([180,i.run_vmg[e]]),u})(n)),u=(e,n)=>{let[t,i]=a(e.map(e=>e[0]),n);return r(e[t][1],e[t+1][1],i)},o=(e,n)=>{if(!Number.isFinite(e)||!Number.isFinite(n)||e<=0)return null;let t=Math.min(180,Math.abs((n+540)%360-180)),o=i.speeds;if(e<o[0])return u(l[0],t)*(e/o[0]);let[s,d]=a(o,e);return r(u(l[s],t),u(l[s+1],t),d)},s=(e,n)=>{let[t,l]=a(i.speeds,n);return r(e[t],e[t+1],l)},d=(e,n)=>{let i=o(1.943844*e,n*t);return null===i?null:i/1.943844},m=e=>{let n=(e+Math.PI)%(2*Math.PI);return n<0&&(n+=2*Math.PI),n-Math.PI};e.s(["bestVmcHeading",0,({twd:e,tws:n,bearing:i})=>{if(![e,n,i].every(Number.isFinite)||n<=0)return null;let r=null;for(let a=-100;a<=100;a++){let l=i+a/t,u=d(n,m(e-l));if(null===u)continue;let o=u*Math.cos(l-i);(!r||o>r.vmc)&&(r={heading:m(l),speed:u,vmc:o})}return r},"optimalDownwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let n=s(i.run_angle,e),r=o(e,n);return{twa:n,speed:r,vmg:-r*Math.cos(n/t)}},"optimalUpwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let n=s(i.beat_angle,e),r=o(e,n);return{twa:n,speed:r,vmg:r*Math.cos(n/t)}},"polarSpeed",0,o,"polarSpeedSi",0,d,"vmcForHeading",0,({twd:e,tws:n,bearing:t,heading:i})=>{if(![e,n,t,i].every(Number.isFinite))return null;let r=d(n,m(e-i));return null===r?null:r*Math.cos(i-t)},"wrapPi",0,m])}]);