ocearo-ui 0.1.22 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/404.html +1 -1
- package/README.fr.md +141 -157
- package/README.md +137 -157
- package/__next.__PAGE__.txt +19 -5
- package/__next._full.txt +12 -12
- package/__next._tree.txt +2 -2
- package/_next/static/chunks/0-c2-u5p6bxzo.js +1 -0
- package/_next/static/chunks/0h2qsuyze9ds1.js +1 -0
- package/_next/static/chunks/0iqdztntvxh3c.js +119 -0
- package/_next/static/chunks/0iztd835j5p1n.js +700 -0
- package/_next/static/chunks/{2nxsyowmuwpjy.js → 0jfox92up1jvy.js} +1 -1
- package/_next/static/chunks/0jpa5m78l0ib0.js +1 -0
- package/_next/static/chunks/0kpstejrka-7k.js +1 -0
- package/_next/static/chunks/0m7wbuocx-b4_.js +9 -0
- package/_next/static/chunks/0n95joti2n2py.js +3 -0
- package/_next/static/chunks/0ohleay4roayh.js +353 -0
- package/_next/static/chunks/0on1skx9l54-9.js +1 -0
- package/_next/static/chunks/0voiofm58khqd.js +1 -0
- package/_next/static/chunks/0w_skktmh3e48.js +1 -0
- package/_next/static/chunks/0y-dctk-kmqss.js +1 -0
- package/_next/static/chunks/0zwc9m4qgtwle.js +1 -0
- package/_next/static/chunks/11awvgcou7v4r.js +1 -0
- package/_next/static/chunks/144mjqdrx42lq.js +1 -0
- package/_next/static/chunks/15imr2-f_8n-x.js +1 -0
- package/_next/static/chunks/18_i6mf6hb_c7.js +1 -0
- package/_next/static/chunks/1d81m3g9jqkob.js +1 -0
- package/_next/static/chunks/1ed7ayfg19cjb.js +1 -0
- package/_next/static/chunks/1epya-yh2wvj2.js +1 -0
- package/_next/static/chunks/1exvcc71cgr4t.js +446 -0
- package/_next/static/chunks/1g8fbzv0hu0i2.js +1 -0
- package/_next/static/chunks/1gq4t2dyr7rq3.js +1 -0
- package/_next/static/chunks/1gt2hhqk1821k.js +9 -0
- package/_next/static/chunks/1l-jew0-1-3eq.js +30 -0
- package/_next/static/chunks/1pa1cfmfts0i9.js +1 -0
- package/_next/static/chunks/1ptj3mv8b_tzs.js +1 -0
- package/_next/static/chunks/1w1xks0hp_tlr.js +346 -0
- package/_next/static/chunks/1xekc18cyi4sx.js +1 -0
- package/_next/static/chunks/1y35unwvy8p98.js +1 -0
- package/_next/static/chunks/1zm03hw2ylxw8.js +1 -0
- package/_next/static/chunks/2aq8orcir5h03.js +1 -0
- package/_next/static/chunks/2dvwb-mfasp68.js +1 -0
- package/_next/static/chunks/2fdpvhx4oo81h.js +1 -0
- package/_next/static/chunks/2g-xpe7xnropn.js +409 -0
- package/_next/static/chunks/2kmptoy43h0mx.js +1 -0
- package/_next/static/chunks/2kwn4iymxaom3.js +1 -0
- package/_next/static/chunks/2n86yq1wz1yx7.js +1 -0
- package/_next/static/chunks/2rebcvig176xk.js +564 -0
- package/_next/static/chunks/2ryo_bbmt6t74.css +3 -0
- package/_next/static/chunks/2s6w3x5jnc2tg.js +1 -0
- package/_next/static/chunks/2w44atvyp9o_w.js +1 -0
- package/_next/static/chunks/2w71oj1brox5z.js +1 -0
- package/_next/static/chunks/2wayx8t5r5fi9.js +1 -0
- package/_next/static/chunks/3--qzv1u6c7_7.js +1 -0
- package/_next/static/chunks/32yn_fc-es66m.js +22 -0
- package/_next/static/chunks/34wvn5zw0a69w.js +1 -0
- package/_next/static/chunks/37t6vg8fb1-z8.js +1 -0
- package/_next/static/chunks/3nm7o0eq5abhg.js +1 -0
- package/_next/static/chunks/3p9ziqn6r35qf.js +1 -0
- package/_next/static/chunks/3q8o52_juxmdp.js +1 -0
- package/_next/static/chunks/3s6nzrbk-8mnv.js +31 -0
- package/_next/static/chunks/3td9mnhvcj9cq.js +1 -0
- package/_next/static/chunks/3wwn1rti8oc_r.js +1 -0
- package/_next/static/chunks/3zqx8h9yg5-ch.js +1 -0
- package/_next/static/chunks/turbopack-1h111qg8l92rw.js +1 -0
- package/_not-found/__next._full.txt +13 -13
- package/_not-found/__next._not-found.__PAGE__.txt +19 -2
- package/_not-found/__next._tree.txt +2 -2
- package/_not-found.html +1 -1
- package/_not-found.txt +13 -13
- package/apple-touch-icon.png +0 -0
- package/boats/boats.json +40 -5
- package/favicon-96x96.png +0 -0
- package/favicon.ico +0 -0
- package/favicon.svg +1 -3
- package/icons/favicon-16x16.png +0 -0
- package/icons/favicon-32x32.png +0 -0
- package/icons/favicon-48x48.png +0 -0
- package/icons/icon-192x192.png +0 -0
- package/icons/icon-512x512.png +0 -0
- package/icons/ocearo.webp +0 -0
- package/index.html +1 -1
- package/index.txt +12 -12
- package/manifest.json +2 -3
- package/package.json +15 -14
- package/settings/__next._full.txt +15 -15
- package/settings/__next._tree.txt +2 -2
- package/settings/__next.settings.__PAGE__.txt +22 -5
- package/settings.html +1 -1
- package/settings.txt +15 -15
- package/__next._head.txt +0 -6
- package/__next._index.txt +0 -5
- package/_next/static/chunks/0-z15txb4-uhu.js +0 -409
- package/_next/static/chunks/009rlietvsaq2.js +0 -1
- package/_next/static/chunks/070stlm97b9a2.js +0 -1
- package/_next/static/chunks/0abo2oxxw3hpi.js +0 -1
- package/_next/static/chunks/0jzbiie0nzar2.js +0 -1
- package/_next/static/chunks/0kinaai2rvd43.js +0 -9
- package/_next/static/chunks/0l9s4rhr00adq.js +0 -1
- package/_next/static/chunks/0qj7yy4f6sk8y.js +0 -455
- package/_next/static/chunks/0ri_um14-5x7u.js +0 -1
- package/_next/static/chunks/0uvr7xkt_5uno.js +0 -1
- package/_next/static/chunks/0yf1ifg_o1bq6.js +0 -1
- package/_next/static/chunks/0zbzk2ob0li1n.js +0 -1
- package/_next/static/chunks/0zjxnzbxh76mt.js +0 -1
- package/_next/static/chunks/17ma1x64d-211.js +0 -1
- package/_next/static/chunks/19xb2y6sgfnza.js +0 -1
- package/_next/static/chunks/1bz0tcmhjmjgh.js +0 -1
- package/_next/static/chunks/1d4h-sglyo8ft.js +0 -1
- package/_next/static/chunks/1gizigk3w6q7j.js +0 -31
- package/_next/static/chunks/1ptwltjb3h6jf.js +0 -4
- package/_next/static/chunks/1q572rz5m8mb-.js +0 -1
- package/_next/static/chunks/1rkf8qtk5-48h.js +0 -1
- package/_next/static/chunks/1sq_733weprvs.js +0 -1
- package/_next/static/chunks/26e1o1as-77nq.js +0 -172
- package/_next/static/chunks/27hn45pv56pv7.js +0 -393
- package/_next/static/chunks/28y-j215vt42m.js +0 -1
- package/_next/static/chunks/2a0yjir_3mk1m.js +0 -1
- package/_next/static/chunks/2atijj_pkc4uc.js +0 -2
- package/_next/static/chunks/2ccpehidlaq88.js +0 -1
- package/_next/static/chunks/2fy4q1c5l3tpj.js +0 -1
- package/_next/static/chunks/2lvvt2f1l5sfu.js +0 -1
- package/_next/static/chunks/2lw7kypuhij1_.css +0 -3
- package/_next/static/chunks/2nd5amcst4lhp.js +0 -1
- package/_next/static/chunks/2pwmb4pkqygy_.js +0 -1
- package/_next/static/chunks/2q_83f24jeg0e.js +0 -1
- package/_next/static/chunks/2rsdqsatgq9ta.js +0 -1
- package/_next/static/chunks/2udirievybq_j.js +0 -1
- package/_next/static/chunks/2urimbxg5bqv3.js +0 -1
- package/_next/static/chunks/32cbrrsp-x35l.js +0 -1
- package/_next/static/chunks/36ra6xjie0dsv.js +0 -9
- package/_next/static/chunks/3iuz3f0429awx.js +0 -1
- package/_next/static/chunks/3jh1u-s3k0bkk.js +0 -1
- package/_next/static/chunks/3jupxlga7r_do.js +0 -1
- package/_next/static/chunks/3m57lnggu30tr.js +0 -243
- package/_next/static/chunks/3myql5zu0rstt.js +0 -425
- package/_next/static/chunks/3rhgquok36e79.js +0 -1
- package/_next/static/chunks/42dfiu6iby3fq.js +0 -1
- package/_next/static/chunks/43ps2cu5ahf8n.js +0 -3
- package/_next/static/chunks/turbopack-0pirmko-w-775.js +0 -1
- package/_not-found/__next._head.txt +0 -6
- package/_not-found/__next._index.txt +0 -5
- package/_not-found/__next._not-found.txt +0 -5
- package/boats/ais/ais-30.glb +0 -0
- package/boats/ais/ais-31.glb +0 -0
- package/boats/ais/ais-35.glb +0 -0
- package/boats/ais/ais-36.glb +0 -0
- package/boats/ais/ais-37.glb +0 -0
- package/boats/ais/ais-40.glb +0 -0
- package/boats/ais/ais-50.glb +0 -0
- package/boats/ais/ais-60.glb +0 -0
- package/boats/ais/ais-70.glb +0 -0
- package/boats/ais/ais-80.glb +0 -0
- package/settings/__next._head.txt +0 -6
- package/settings/__next._index.txt +0 -5
- package/settings/__next.settings.txt +0 -5
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → 01VWnAYjs9QwBnnMyWbQF}/_buildManifest.js +0 -0
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → 01VWnAYjs9QwBnnMyWbQF}/_clientMiddlewareManifest.js +0 -0
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → 01VWnAYjs9QwBnnMyWbQF}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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 r=[{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<r.length-1;t++)if(e>=r[t+1].voltage){let o=r[t].voltage,u=r[t+1].voltage,n=r[t].soc,l=r[t+1].soc;return Math.round(l+(e-u)/(o-u)*(n-l))}return 0},"isBatteryCharging",0,e=>e>t.CHARGING_THRESHOLD])},52822,(e,t,r)=>{"use strict";var o=e.r(71645),u=e.r(2239),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},l=u.useSyncExternalStore,a=o.useRef,c=o.useEffect,s=o.useMemo,i=o.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,o,u){var v=a(null);if(null===v.current){var f={hasValue:!1,value:null};v.current=f}else f=v.current;var g=l(e,(v=s(function(){function e(e){if(!c){if(c=!0,l=e,e=o(e),void 0!==u&&f.hasValue){var t=f.value;if(u(t,e))return a=t}return a=e}if(t=a,n(l,e))return t;var r=o(e);return void 0!==u&&u(t,r)?(l=e,t):(l=e,a=r)}var l,a,c=!1,s=void 0===r?null:r;return[function(){return e(t())},null===s?void 0:function(){return e(s())}]},[t,r,o,u]))[0],v[1]);return c(function(){f.hasValue=!0,f.value=g},[g]),i(g),g}},30224,(e,t,r)=>{"use strict";e.i(47167),t.exports=e.r(52822)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95163,e=>{"use strict";var r=e.i(43476);e.i(71645),e.i(85269);var t=e.i(22831),n=e.i(49721),i=e.i(68757),a=e.i(83646),o=e.i(77291);e.s(["default",0,()=>{let{t:e}=(0,t.useTranslation)(),{scene:s}=(0,a.default)(),{giveWayTo:l,encounters:u}=(0,o.default)();if(!l)return null;let{target:g,role:d}=l,c=u.filter(e=>"stand-on"!==e.role.ownRole).length-1;return(0,r.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2 rounded-2xl select-none text-white backdrop-blur",style:{background:`color-mix(in srgb, ${s.giveWay} 82%, transparent)`},role:"alert",children:[(0,r.jsx)(n.FontAwesomeIcon,{icon:i.faTriangleExclamation,className:"text-lg"}),(0,r.jsxs)("div",{className:"leading-tight",children:[(0,r.jsx)("div",{className:"text-label font-bold uppercase tracking-widest",children:e("colregs.youGiveWay")}),(0,r.jsxs)("div",{className:"text-caption font-semibold opacity-95",children:[e(`colregs.${d.reason}`,{name:g.name})," · ",e("colregs.rule",{rule:d.rule}),c>0&&` \xb7 +${c}`]})]})]})}])},78938,function(e){e.n(e.i(95163))},77291,e=>{"use strict";var r=e.i(71645),t=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 r=String(e.navState||"").toLowerCase();if(/not under command|restricted|constrained/.test(r))return"restricted";if(/fishing/.test(r))return"fishing";if(/sailing/.test(r))return"sail";if(/motoring|engine/.test(r))return"power";let t=Number(e.shipType);return 36===t?"sail":30===t?"fishing":33===t?"restricted":"power"},u=(e,r,t)=>(0,a.wrapPi)(Math.atan2(r.x-e.x,r.y-e.y)-t),g=(e,r,t)=>{let n={x:0,y:0},i=u(n,r,e.course),l=u(r,n,r.course),g=Math.sign(l)||1,d=e=>Math.abs(e)>112.5*o;if(d(i)&&r.speed>e.speed)return{ownRole:"stand-on",rule:"13",reason:"overtakenByTarget",targetTurn:0};if(d(l)&&e.speed>r.speed)return{ownRole:"give-way",rule:"13",reason:"overtaking",targetTurn:0};let c=s[e.category]??1,p=s[r.category]??1;if(c!==p)return c<p?{ownRole:"give-way",rule:"18",reason:`giveWayTo_${r.category}`,targetTurn:0}:{ownRole:"stand-on",rule:"18",reason:`standOnFrom_${r.category}`,targetTurn:g};if("sail"===e.category&&Number.isFinite(t)){let n=(0,a.wrapPi)(t-e.course)>=0?"starboard":"port";return n!==((0,a.wrapPi)(t-r.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:g}:r.x*Math.sin(t)+r.y*Math.cos(t)>0?{ownRole:"stand-on",rule:"12a-ii",reason:"targetWindward",targetTurn:g}:{ownRole:"give-way",rule:"12a-ii",reason:"ownWindward",targetTurn:0}}return Math.abs((0,a.wrapPi)(r.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:g}};var d=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,t.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=d.default.get("ownVesselCategory"),(0,r.useMemo)(()=>"sail"===o||"power"===o?o:Object.entries(a).some(([e,r])=>e.endsWith(".revolutions")&&Number(r)>.5||e.endsWith(".state")&&"started"===r)?"power":"sail",[a,o])),T=d.default.get("aisLengthScalingFactor")||.7;return(0,r.useMemo)(()=>{let e=b["navigation.courseOverGroundTrue"]??f,r=b["navigation.speedOverGround"]??0,t=[];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=g({course:e,speed:r,category:w},{x:n.sceneX/T,y:-n.sceneZ/T,course:i,speed:n.sog??0,category:l(n)},h);t.push({target:{...n},role:a})}t.sort((e,r)=>(e.target.tcpaSeconds??1/0)-(r.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 t)n[e.target.mmsi]="stand-on"===e.role.ownRole?"yields":"giveWay";let i=t.filter(e=>"stand-on"!==e.role.ownRole);return{ownCategory:w,encounters:t,statuses:n,giveWay:i.length>0,giveWayTo:i[0]||null,primary:t[0]||null}},[v,h,f,b,w,T])}],77291)},61969,e=>{"use strict";var r=e.i(71645),t=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,t.useSignalKPaths)(a);return(0,r.useMemo)(()=>{let r=e["navigation.speedThroughWater"]??e["navigation.speedOverGround"]??null,t=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(t)&&(s=(0,n.wrapPi)(t+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(r)&&Number.isFinite(l)&&l>.2&&(u=r/l);let g=Number.isFinite(r)&&Number.isFinite(l)?(r-l)*1.943844:null,d=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&&(d=e.twa/i,Number.isFinite(s)&&Number.isFinite(o)&&(c=(0,n.wrapPi)(s-Math.sign(o||1)*d)))}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}),r=Number.isFinite(t)?(0,n.vmcForHeading)({twd:s,tws:a,bearing:m,heading:t}):null;v=e?{bearing:m,best:e,current:r}:null}return{ratio:u,polarSpeed:l,boatSpeed:r,deltaKn:g,heading:t,twd:s,tws:a,twa:o,targetTwa:d,targetHeading:c,upwind:p,vmc:v}},[e])}])},83646,e=>{"use strict";var r=e.i(67561);e.s(["default",0,()=>(0,r.useOcearoContext)().tokens])},74452,(e,r,t)=>{r.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 r=e.i(74452);let t=180/Math.PI,n=r.default.vpp,i=(e,r,t)=>e+(r-e)*t,a=(e,r)=>{if(r<=e[0])return[0,0];let t=e.length-1;if(r>=e[t])return[t-1,1];let n=0;for(;r>e[n+1];)n++;return[n,(r-e[n])/(e[n+1]-e[n])]},o=n.speeds.map((e,r)=>(e=>{let r=n.beat_angle[e],i=n.run_angle[e],a=n.beat_vmg[e]/Math.cos(r/t),o=n.run_vmg[e]/Math.abs(Math.cos(i/t)),s=[[0,0],[.7*r,.55*a],[r,a]];for(let t of n.angles)t>r&&t<i&&s.push([t,n[String(t)][e]]);return s.push([i,o]),i<180&&s.push([180,n.run_vmg[e]]),s})(r)),s=(e,r)=>{let[t,n]=a(e.map(e=>e[0]),r);return i(e[t][1],e[t+1][1],n)},l=(e,r)=>{if(!Number.isFinite(e)||!Number.isFinite(r)||e<=0)return null;let t=Math.min(180,Math.abs((r+540)%360-180)),l=n.speeds;if(e<l[0])return s(o[0],t)*(e/l[0]);let[u,g]=a(l,e);return i(s(o[u],t),s(o[u+1],t),g)},u=(e,r)=>{let[t,o]=a(n.speeds,r);return i(e[t],e[t+1],o)},g=(e,r)=>{let n=l(1.943844*e,r*t);return null===n?null:n/1.943844},d=e=>{let r=(e+Math.PI)%(2*Math.PI);return r<0&&(r+=2*Math.PI),r-Math.PI};e.s(["bestVmcHeading",0,({twd:e,tws:r,bearing:n})=>{if(![e,r,n].every(Number.isFinite)||r<=0)return null;let i=null;for(let a=-100;a<=100;a++){let o=n+a/t,s=g(r,d(e-o));if(null===s)continue;let l=s*Math.cos(o-n);(!i||l>i.vmc)&&(i={heading:d(o),speed:s,vmc:l})}return i},"optimalDownwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let r=u(n.run_angle,e),i=l(e,r);return{twa:r,speed:i,vmg:-i*Math.cos(r/t)}},"optimalUpwind",0,e=>{if(!Number.isFinite(e)||e<=0)return null;let r=u(n.beat_angle,e),i=l(e,r);return{twa:r,speed:i,vmg:i*Math.cos(r/t)}},"polarSpeed",0,l,"polarSpeedSi",0,g,"vmcForHeading",0,({twd:e,tws:r,bearing:t,heading:n})=>{if(![e,r,t,n].every(Number.isFinite))return null;let i=g(r,d(e-n));return null===i?null:i*Math.cos(n-t)},"wrapPi",0,d])}]);
|