ocearo-ui 0.1.21 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/404.html +1 -1
  2. package/README.fr.md +123 -133
  3. package/README.md +120 -134
  4. package/__next.__PAGE__.txt +19 -5
  5. package/__next._full.txt +11 -11
  6. package/__next._tree.txt +2 -2
  7. package/_next/static/chunks/0-c2-u5p6bxzo.js +1 -0
  8. package/_next/static/chunks/01atsfq_4opab.js +1 -0
  9. package/_next/static/chunks/0cx639tthxlz4.js +1 -0
  10. package/_next/static/chunks/0h2qsuyze9ds1.js +1 -0
  11. package/_next/static/chunks/0iqdztntvxh3c.js +119 -0
  12. package/_next/static/chunks/0iztd835j5p1n.js +700 -0
  13. package/_next/static/chunks/{2nxsyowmuwpjy.js → 0jfox92up1jvy.js} +1 -1
  14. package/_next/static/chunks/0jpa5m78l0ib0.js +1 -0
  15. package/_next/static/chunks/0kpstejrka-7k.js +1 -0
  16. package/_next/static/chunks/0n95joti2n2py.js +3 -0
  17. package/_next/static/chunks/0oaqe70syw_b5.js +1 -0
  18. package/_next/static/chunks/0ohleay4roayh.js +353 -0
  19. package/_next/static/chunks/0on1skx9l54-9.js +1 -0
  20. package/_next/static/chunks/0w_skktmh3e48.js +1 -0
  21. package/_next/static/chunks/0y-dctk-kmqss.js +1 -0
  22. package/_next/static/chunks/0yiqocv54ogoq.js +1 -0
  23. package/_next/static/chunks/0zlk2mlkvbtj1.js +1 -0
  24. package/_next/static/chunks/0zwc9m4qgtwle.js +1 -0
  25. package/_next/static/chunks/11awvgcou7v4r.js +1 -0
  26. package/_next/static/chunks/144mjqdrx42lq.js +1 -0
  27. package/_next/static/chunks/1d81m3g9jqkob.js +1 -0
  28. package/_next/static/chunks/1ed7ayfg19cjb.js +1 -0
  29. package/_next/static/chunks/1epya-yh2wvj2.js +1 -0
  30. package/_next/static/chunks/1exvcc71cgr4t.js +446 -0
  31. package/_next/static/chunks/1fzzb4jtgv5gg.js +9 -0
  32. package/_next/static/chunks/1g8fbzv0hu0i2.js +1 -0
  33. package/_next/static/chunks/1gaiqhzy_0d7s.js +1 -0
  34. package/_next/static/chunks/1gq4t2dyr7rq3.js +1 -0
  35. package/_next/static/chunks/1l-jew0-1-3eq.js +30 -0
  36. package/_next/static/chunks/1ptj3mv8b_tzs.js +1 -0
  37. package/_next/static/chunks/1w1xks0hp_tlr.js +346 -0
  38. package/_next/static/chunks/1xekc18cyi4sx.js +1 -0
  39. package/_next/static/chunks/1y35unwvy8p98.js +1 -0
  40. package/_next/static/chunks/2aq8orcir5h03.js +1 -0
  41. package/_next/static/chunks/2fdpvhx4oo81h.js +1 -0
  42. package/_next/static/chunks/2g-xpe7xnropn.js +409 -0
  43. package/_next/static/chunks/2kmptoy43h0mx.js +1 -0
  44. package/_next/static/chunks/2n86yq1wz1yx7.js +1 -0
  45. package/_next/static/chunks/2r_h93rt76vka.js +1 -0
  46. package/_next/static/chunks/2rebcvig176xk.js +564 -0
  47. package/_next/static/chunks/2w71oj1brox5z.js +1 -0
  48. package/_next/static/chunks/2wayx8t5r5fi9.js +1 -0
  49. package/_next/static/chunks/2y3d8zopa8r5r.css +3 -0
  50. package/_next/static/chunks/3--qzv1u6c7_7.js +1 -0
  51. package/_next/static/chunks/31lugryguappr.js +1 -0
  52. package/_next/static/chunks/32j_j396qs7be.js +1 -0
  53. package/_next/static/chunks/32yn_fc-es66m.js +22 -0
  54. package/_next/static/chunks/34_oyzp8_pi_m.js +1 -0
  55. package/_next/static/chunks/34wvn5zw0a69w.js +1 -0
  56. package/_next/static/chunks/37t6vg8fb1-z8.js +1 -0
  57. package/_next/static/chunks/3k5itcabq5oqs.js +9 -0
  58. package/_next/static/chunks/3ktj0iemsr1m-.js +1 -0
  59. package/_next/static/chunks/3nm7o0eq5abhg.js +1 -0
  60. package/_next/static/chunks/3s6nzrbk-8mnv.js +31 -0
  61. package/_next/static/chunks/3td9mnhvcj9cq.js +1 -0
  62. package/_next/static/chunks/3xjnsskh0tayo.js +1 -0
  63. package/_next/static/chunks/3zqx8h9yg5-ch.js +1 -0
  64. package/_next/static/chunks/turbopack-1h111qg8l92rw.js +1 -0
  65. package/_not-found/__next._full.txt +12 -12
  66. package/_not-found/__next._not-found.__PAGE__.txt +19 -2
  67. package/_not-found/__next._tree.txt +2 -2
  68. package/_not-found.html +1 -1
  69. package/_not-found.txt +12 -12
  70. package/boats/boats.json +40 -5
  71. package/index.html +1 -1
  72. package/index.txt +11 -11
  73. package/package.json +14 -14
  74. package/settings/__next._full.txt +14 -14
  75. package/settings/__next._tree.txt +2 -2
  76. package/settings/__next.settings.__PAGE__.txt +22 -5
  77. package/settings.html +1 -1
  78. package/settings.txt +14 -14
  79. package/__next._head.txt +0 -6
  80. package/__next._index.txt +0 -5
  81. package/_next/static/chunks/009rlietvsaq2.js +0 -1
  82. package/_next/static/chunks/070stlm97b9a2.js +0 -1
  83. package/_next/static/chunks/08gn5_gd6amkq.js +0 -1
  84. package/_next/static/chunks/0abo2oxxw3hpi.js +0 -1
  85. package/_next/static/chunks/0jzbiie0nzar2.js +0 -1
  86. package/_next/static/chunks/0l9s4rhr00adq.js +0 -1
  87. package/_next/static/chunks/0ri_um14-5x7u.js +0 -1
  88. package/_next/static/chunks/0utifqhyv2cuc.js +0 -1
  89. package/_next/static/chunks/0uvr7xkt_5uno.js +0 -1
  90. package/_next/static/chunks/0wzr1__so6xme.js +0 -1
  91. package/_next/static/chunks/0zjxnzbxh76mt.js +0 -1
  92. package/_next/static/chunks/11ln9lzzbo35q.js +0 -1
  93. package/_next/static/chunks/1bz0tcmhjmjgh.js +0 -1
  94. package/_next/static/chunks/1d4h-sglyo8ft.js +0 -1
  95. package/_next/static/chunks/1gizigk3w6q7j.js +0 -31
  96. package/_next/static/chunks/1porlo35ga4zu.js +0 -1
  97. package/_next/static/chunks/1ptwltjb3h6jf.js +0 -4
  98. package/_next/static/chunks/1sq_733weprvs.js +0 -1
  99. package/_next/static/chunks/1w1ua0-p5lk1e.js +0 -38
  100. package/_next/static/chunks/1wv5e5qomv-7g.css +0 -3
  101. package/_next/static/chunks/27hn45pv56pv7.js +0 -393
  102. package/_next/static/chunks/28y-j215vt42m.js +0 -1
  103. package/_next/static/chunks/29-ag86gvlc40.js +0 -9
  104. package/_next/static/chunks/2a0yjir_3mk1m.js +0 -1
  105. package/_next/static/chunks/2atijj_pkc4uc.js +0 -2
  106. package/_next/static/chunks/2baz6j1q913qw.js +0 -1
  107. package/_next/static/chunks/2ccpehidlaq88.js +0 -1
  108. package/_next/static/chunks/2lez3uww9j4t0.js +0 -135
  109. package/_next/static/chunks/2lvvt2f1l5sfu.js +0 -1
  110. package/_next/static/chunks/2nd5amcst4lhp.js +0 -1
  111. package/_next/static/chunks/2pwmb4pkqygy_.js +0 -1
  112. package/_next/static/chunks/2rsdqsatgq9ta.js +0 -1
  113. package/_next/static/chunks/2uao1hfsz-oy8.js +0 -1
  114. package/_next/static/chunks/2urimbxg5bqv3.js +0 -1
  115. package/_next/static/chunks/2yghvponatk1x.js +0 -135
  116. package/_next/static/chunks/31i14-jemhnic.js +0 -863
  117. package/_next/static/chunks/32cbrrsp-x35l.js +0 -1
  118. package/_next/static/chunks/36ra6xjie0dsv.js +0 -9
  119. package/_next/static/chunks/3dt63tw_9r0jt.js +0 -38
  120. package/_next/static/chunks/3iuz3f0429awx.js +0 -1
  121. package/_next/static/chunks/3jh1u-s3k0bkk.js +0 -1
  122. package/_next/static/chunks/3jupxlga7r_do.js +0 -1
  123. package/_next/static/chunks/3m57lnggu30tr.js +0 -243
  124. package/_next/static/chunks/3rhgquok36e79.js +0 -1
  125. package/_next/static/chunks/3sgrkzk20mxs6.js +0 -54
  126. package/_next/static/chunks/42dfiu6iby3fq.js +0 -1
  127. package/_next/static/chunks/43ps2cu5ahf8n.js +0 -3
  128. package/_next/static/chunks/turbopack-0pirmko-w-775.js +0 -1
  129. package/_not-found/__next._head.txt +0 -6
  130. package/_not-found/__next._index.txt +0 -5
  131. package/_not-found/__next._not-found.txt +0 -5
  132. package/boats/ais/ais-30.glb +0 -0
  133. package/boats/ais/ais-31.glb +0 -0
  134. package/boats/ais/ais-35.glb +0 -0
  135. package/boats/ais/ais-36.glb +0 -0
  136. package/boats/ais/ais-37.glb +0 -0
  137. package/boats/ais/ais-40.glb +0 -0
  138. package/boats/ais/ais-50.glb +0 -0
  139. package/boats/ais/ais-60.glb +0 -0
  140. package/boats/ais/ais-70.glb +0 -0
  141. package/boats/ais/ais-80.glb +0 -0
  142. package/settings/__next._head.txt +0 -6
  143. package/settings/__next._index.txt +0 -5
  144. package/settings/__next.settings.txt +0 -5
  145. /package/_next/static/{hlKDicTyNGfd7dmHqo5m5 → baa0rBM5TIECz8JV_tLT6}/_buildManifest.js +0 -0
  146. /package/_next/static/{hlKDicTyNGfd7dmHqo5m5 → baa0rBM5TIECz8JV_tLT6}/_clientMiddlewareManifest.js +0 -0
  147. /package/_next/static/{hlKDicTyNGfd7dmHqo5m5 → baa0rBM5TIECz8JV_tLT6}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35637,t=>{"use strict";t.s(["drawAttitudeInstrument",0,(t,e)=>{let{w:a,h:l,roll:i,pitch:o,yaw:s,nightMode:n=!1,showHeading:r=!0,showPitchScale:h=!0,showRollScale:c=!0,showBezel:d=!0,compact:x=!1,colors:f={}}=e,g=a/2,u=l/2,m=Math.min(a,l)/(x?80:200),b=t=>t*m,M=t=>Math.max(.5,t*m),p={sky:n?"#1a0000":f.sky||"#87CEEB",sea:n?"#000000":f.sea||f.oGray2||"#424242",horizon:n?f.oNight||"#ef4444":f.oYellow||"#ffbe00",bezel:n?"#330000":f.bezel||f.oGray2||"#424242",text:n?f.oNight||"#ef4444":f.text||"var(--hud-text-main)",boat:n?f.oNight||"#ef4444":f.boat||f.oYellow||"#ffbe00",rollScale:n?f.oNight||"#ef4444":f.rollScale||f.oRed||"#cc000c",headingMarks:n?f.oNight||"#ef4444":f.headingMarks||"var(--hud-text-main)",pitchMarks:n?"rgba(239, 68, 68, 0.6)":f.pitchMarks||"var(--hud-text-secondary)",...f};t.clearRect(0,0,a,l);let k=Math.min(g,u)-b(x?5:20);if(t.save(),t.beginPath(),t.arc(g,u,k,0,2*Math.PI),t.clip(),t.translate(g,u),t.rotate(i*Math.PI/180),t.translate(0,o/90*k*(x?1:1.5)),t.fillStyle=p.sky,t.fillRect(-a,-(2*l),2*a,2*l),t.fillStyle=p.sea,t.fillRect(-a,0,2*a,2*l),t.beginPath(),t.moveTo(-a,0),t.lineTo(a,0),t.strokeStyle=p.horizon,t.lineWidth=M(x?1.5:3),t.stroke(),h){t.strokeStyle=p.pitchMarks,t.fillStyle=p.pitchMarks,t.font=`${Math.round(b(x?8:12))}px sans-serif`,t.textAlign="center",t.textBaseline="middle";let e=x?60:30,a=x?20:10;for(let l=-e;l<=e;l+=a){if(0===l)continue;let e=-(l/90)*k*(x?1:1.5),a=b(Math.abs(l)%20!=0||x?x?15:30:50);t.beginPath(),t.moveTo(-a/2,e),t.lineTo(a/2,e),t.lineWidth=M(Math.abs(l)%20==0?2:1),t.stroke(),x&&Math.abs(l)%40!=0||(t.fillText(Math.abs(l)+"°",a/2+b(10),e),t.fillText(Math.abs(l)+"°",-a/2-b(10),e))}}if(t.restore(),d&&(t.beginPath(),t.arc(g,u,Math.min(g,u)-b(x?2:8),0,2*Math.PI),t.strokeStyle=p.bezel,t.lineWidth=M(x?2:12),t.stroke(),x||(t.beginPath(),t.arc(g,u,k,0,2*Math.PI),t.strokeStyle=p.bezel,t.lineWidth=M(2),t.stroke())),r){t.save(),t.translate(g,u),t.font=`bold ${Math.round(b(x?7:10))}px sans-serif`,t.textAlign="center";let e=x?15:10;for(let a=0;a<360;a+=e){let e=(a-s-90)*Math.PI/180,l=k+b(2*!!x),i=a%(x?90:30)==0,o=b(i?x?5:20:x?2:10),r=l*Math.cos(e),h=l*Math.sin(e),c=(l-o)*Math.cos(e),d=(l-o)*Math.sin(e);if(t.beginPath(),t.moveTo(r,h),t.lineTo(c,d),t.strokeStyle=i?p.headingMarks:n?"rgba(239, 68, 68, 0.4)":p.pitchMarks,t.lineWidth=M(i?1.5:x?.5:2),t.stroke(),i&&!x){let i=["N","E","S","W"];if(a%90==0){let o=(l-b(35))*Math.cos(e),s=(l-b(35))*Math.sin(e)+b(4);t.fillStyle=p.text,t.fillText(i[a/90],o,s)}}}t.restore()}if(t.save(),t.translate(g,u),x?(t.rotate(s*Math.PI/180),t.beginPath(),t.moveTo(0,-b(10)),t.lineTo(b(5),b(5)),t.lineTo(-b(5),b(5)),t.closePath(),t.fillStyle=p.boat,t.fill(),t.strokeStyle=n?p.boat:f.oGray||"#989898",t.lineWidth=M(1),t.stroke()):(t.beginPath(),t.moveTo(0,-b(25)),t.lineTo(b(12),b(12)),t.lineTo(0,b(8)),t.lineTo(-b(12),b(12)),t.closePath(),t.fillStyle=p.horizon,t.fill(),t.strokeStyle=p.text,t.lineWidth=M(2),t.stroke(),t.beginPath(),t.arc(0,0,b(3),0,2*Math.PI),t.fillStyle=p.text,t.fill()),t.restore(),c&&!x){t.save(),t.translate(g,u),t.rotate(i*Math.PI/180);for(let e=-60;e<=60;e+=30){if(0===e)continue;let a=e*Math.PI/180,l=Math.min(g,u)-b(30),i=l*Math.sin(a),o=-l*Math.cos(a),s=(l-b(15))*Math.sin(a),n=-(l-b(15))*Math.cos(a);t.beginPath(),t.moveTo(i,o),t.lineTo(s,n),t.strokeStyle=p.rollScale,t.lineWidth=M(3),t.stroke()}t.restore()}}])},90741,t=>{"use strict";var e=t.i(43476),a=t.i(71645),l=t.i(67561),i=t.i(46991),o=t.i(85709),s=t.i(35637);t.i(85269);var n=t.i(22831);t.s(["default",0,function(){let{t}=(0,n.useTranslation)(),{nightMode:r}=(0,l.useOcearoContext)(),h=(0,a.useRef)(null),[c,d]=(0,a.useState)("canvas"),x=(0,o.useSignalKPath)("navigation.attitude"),f=(0,a.useMemo)(()=>({roll:(0,i.toDegrees)(x?.roll)||0,pitch:(0,i.toDegrees)(x?.pitch)||0,yaw:(0,i.toDegrees)(x?.yaw)||0}),[x]);return(0,a.useEffect)(()=>{if("canvas"!==c||!h.current)return;let t=h.current.getContext("2d");if(!t)return;let{roll:e,pitch:a,yaw:i}=f;(0,s.drawAttitudeInstrument)(t,{w:80,h:80,roll:e,pitch:a,yaw:i,nightMode:r,compact:!0,colors:{sky:"transparent",sea:l.oGray2,horizon:l.oBlue,boat:l.oBlue,pitchMarks:l.oGray,oBlue:l.oBlue,oRed:l.oRed,oYellow:l.oYellow,oNight:l.oNight}})},[f,c,r]),(0,e.jsx)("div",{className:"mt-6 cursor-pointer select-none group",style:{width:"80px",minHeight:"80px",boxSizing:"content-box"},onClick:()=>{d(t=>"canvas"===t?"text":"canvas")},title:t("indicators.clickToToggle"),children:"canvas"===c?(0,e.jsx)("div",{className:"relative p-1 rounded-xl transition-all duration-300",children:(0,e.jsx)("canvas",{ref:h,width:80,height:80,className:`w-full h-full ${r?"brightness-75 contrast-125":"drop-shadow-lg"}`})}):(0,e.jsxs)("div",{className:`p-3 rounded-xl transition-all duration-300 flex flex-col items-end space-y-2 ${r?"text-oNight":"text-hud-main"}`,children:[(0,e.jsxs)("div",{className:"flex flex-col items-end",children:[(0,e.jsx)("span",{className:`text-xs font-black uppercase tracking-widest leading-none mb-1 ${r?"text-oNight/40":"text-hud-dim"}`,children:t("indicators.roll")}),(0,e.jsxs)("span",{className:`text-xs font-mono font-bold ${r?"text-oNight":"text-oRed"}`,children:[f.roll.toFixed(1),"°"]})]}),(0,e.jsxs)("div",{className:"flex flex-col items-end",children:[(0,e.jsx)("span",{className:`text-xs font-black uppercase tracking-widest leading-none mb-1 ${r?"text-oNight/40":"text-hud-dim"}`,children:t("indicators.pitch")}),(0,e.jsxs)("span",{className:`text-xs font-mono font-bold ${r?"text-oNight":"text-oBlue"}`,children:[f.pitch.toFixed(1),"°"]})]}),(0,e.jsxs)("div",{className:"flex flex-col items-end",children:[(0,e.jsx)("span",{className:`text-xs font-black uppercase tracking-widest leading-none mb-1 ${r?"text-oNight/40":"text-hud-dim"}`,children:t("indicators.yaw")}),(0,e.jsxs)("span",{className:`text-xs font-mono font-bold ${r?"text-oNight":"text-oYellow"}`,children:[f.yaw.toFixed(1),"°"]})]})]})})}])},84237,t=>{t.n(t.i(90741))}]);
@@ -1,9 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,88653,e=>{"use strict";e.i(47167);var t=e.i(43476),n=e.i(71645),o=e.i(31178),i=e.i(47414),r=e.i(74008),l=e.i(21476),s=e.i(72846),a=n,u=e.i(37806);function c(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class d extends a.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,s.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,n=(0,s.isHTMLElement)(e)&&e.offsetWidth||0,o=(0,s.isHTMLElement)(e)&&e.offsetHeight||0,i=getComputedStyle(t),r=this.props.sizeRef.current;r.height=parseFloat(i.height),r.width=parseFloat(i.width),r.top=t.offsetTop,r.left=t.offsetLeft,r.right=n-r.width-r.left,r.bottom=o-r.height-r.top,r.direction=i.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function m({children:e,isPresent:o,anchorX:i,anchorY:r,root:l,pop:s}){let f=(0,a.useId)(),p=(0,a.useRef)(null),h=(0,a.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:x}=(0,a.useContext)(u.MotionConfigContext),b=function(...e){return n.useCallback(function(...e){return t=>{let n=!1,o=e.map(e=>{let o=c(e,t);return n||"function"!=typeof o||(n=!0),o});if(n)return()=>{for(let t=0;t<o.length;t++){let n=o[t];"function"==typeof n?n():c(e[t],null)}}}}(...e),e)}(p,e.props?.ref??e?.ref);return(0,a.useInsertionEffect)(()=>{let{width:e,height:t,top:n,left:a,right:u,bottom:c,direction:d}=h.current;if(o||!1===s||!p.current||!e||!t)return;let m="rtl"===d,b="left"===i?m?`right: ${u}`:`left: ${a}`:m?`left: ${a}`:`right: ${u}`,g="bottom"===r?`bottom: ${c}`:`top: ${n}`;p.current.dataset.motionPopId=f;let C=document.createElement("style");x&&(C.nonce=x);let j=l??document.head;return j.appendChild(C),C.sheet&&C.sheet.insertRule(`
2
- [data-motion-pop-id="${f}"] {
3
- position: absolute !important;
4
- width: ${e}px !important;
5
- height: ${t}px !important;
6
- ${b}px !important;
7
- ${g}px !important;
8
- }
9
- `),()=>{p.current?.removeAttribute("data-motion-pop-id"),j.contains(C)&&j.removeChild(C)}},[o]),(0,t.jsx)(d,{isPresent:o,childRef:p,sizeRef:h,pop:s,children:!1===s?e:a.cloneElement(e,{ref:b})})}let f=({children:e,initial:o,isPresent:s,onExitComplete:a,custom:u,presenceAffectsLayout:c,mode:d,anchorX:f,anchorY:h,root:x})=>{let b=(0,i.useConstant)(p),g=(0,n.useId)(),C=(0,n.useRef)(s),j=(0,n.useRef)(a);(0,r.useIsomorphicLayoutEffect)(()=>{C.current=s,j.current=a});let E=!0,k=(0,n.useMemo)(()=>(E=!1,{id:g,initial:o,isPresent:s,custom:u,onExitComplete:e=>{for(let t of(b.set(e,!0),b.values()))if(!t)return;a&&a()},register:e=>(b.set(e,!1),()=>{b.delete(e),C.current||b.size||j.current?.()})}),[s,b,a]);return c&&E&&(k={...k}),(0,n.useMemo)(()=>{b.forEach((e,t)=>b.set(t,!1))},[s]),n.useEffect(()=>{s||b.size||!a||a()},[s]),e=(0,t.jsx)(m,{pop:"popLayout"===d,isPresent:s,anchorX:f,anchorY:h,root:x,children:e}),(0,t.jsx)(l.PresenceContext.Provider,{value:k,children:e})};function p(){return new Map}var h=e.i(64978);let x=e=>e.key||"";function b(e){let t=[];return n.Children.forEach(e,e=>{(0,n.isValidElement)(e)&&t.push(e)}),t}e.s(["AnimatePresence",0,({children:e,custom:l,initial:s=!0,onExitComplete:a,presenceAffectsLayout:u=!0,mode:c="sync",propagate:d=!1,anchorX:m="left",anchorY:p="top",root:g})=>{let[C,j]=(0,h.usePresence)(d),E=(0,n.useMemo)(()=>b(e),[e]),k=d&&!C?[]:E.map(x),w=(0,n.useRef)(!0),y=(0,n.useRef)(E),v=(0,i.useConstant)(()=>new Map),P=(0,n.useRef)(new Set),[M,S]=(0,n.useState)(E),[I,T]=(0,n.useState)(E);(0,r.useIsomorphicLayoutEffect)(()=>{w.current=!1,y.current=E;for(let e=0;e<I.length;e++){let t=x(I[e]);k.includes(t)?(v.delete(t),P.current.delete(t)):!0!==v.get(t)&&v.set(t,!1)}},[I,k.length,k.join("-")]);let A=[];if(E!==M){let e=[...E];for(let t=0;t<I.length;t++){let n=I[t],o=x(n);k.includes(o)||(e.splice(t,0,n),A.push(n))}return"wait"===c&&A.length&&(e=A),T(b(e)),S(E),null}let{forceRender:R}=(0,n.useContext)(o.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:I.map(e=>{let n=x(e),o=(!d||!!C)&&(E===I||k.includes(n));return(0,t.jsx)(f,{isPresent:o,initial:(!w.current||!!s)&&void 0,custom:l,presenceAffectsLayout:u,mode:c,root:g,onExitComplete:o?void 0:()=>{if(P.current.has(n)||!v.has(n))return;P.current.add(n),v.set(n,!0);let e=!0;v.forEach(t=>{t||(e=!1)}),e&&(R?.(),T(y.current),d&&j?.(),a&&a())},anchorX:m,anchorY:p,children:e},n)})})}],88653)},2936,e=>{"use strict";var t=e.i(43476);e.i(71645);var n=e.i(46932),o=e.i(88653),i=e.i(49721),r=e.i(68757),l=e.i(83402),s=e.i(81694),a=e.i(48390);e.i(85269);var u=e.i(22831);e.s(["default",0,({currentViewMode:e,toggleViewMode:c,handleSetRightView:d,toggleSettings:m,toggleFullscreen:f,setShowAppMenu:p})=>{let{t:h}=(0,u.useTranslation)(),x=(0,a.isOcearoCoreEnabled)(),b=l.default.get("debugMode"),g=({icon:e,label:n,onClick:o})=>(0,t.jsxs)("button",{onClick:()=>{o(),p(!1)},className:"flex items-center text-hud-main px-2 py-2 sm:px-4 sm:py-3 rounded-xl tesla-hover transition-all duration-200 group bg-hud-bg shadow-soft border border-hud",children:[(0,t.jsx)("div",{className:"w-7 h-7 sm:w-8 sm:h-8 flex items-center justify-center bg-hud-elevated rounded-lg mr-2 sm:mr-3 group-hover:scale-110 transition-transform shrink-0",children:(0,t.jsx)(i.FontAwesomeIcon,{icon:e,className:"text-sm sm:text-base text-hud-muted group-hover:text-hud-main transition-colors"})}),(0,t.jsx)("span",{className:"hidden sm:block text-xs sm:text-sm font-bold uppercase tracking-widest truncate",children:n})]});return(0,t.jsx)(o.AnimatePresence,{children:(0,t.jsx)(n.motion.div,{initial:{y:20,x:"-50%",opacity:0,scale:.95},animate:{y:0,x:"-50%",opacity:1,scale:1},exit:{y:20,x:"-50%",opacity:0,scale:.95},transition:{duration:.3,ease:[.16,1,.3,1]},className:"fixed bottom-20 left-1/2 bg-hud-bg backdrop-blur-xl p-3 sm:p-6 rounded-3xl shadow-2xl z-50 w-[95vw] sm:w-full max-w-lg border border-hud ocearo-appmenu-scroll",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-2 sm:gap-4",children:[e!==s.VIEW_MODES.SPLIT&&(0,t.jsx)(g,{icon:r.faExpand,label:h("menu.splitView"),onClick:()=>c(s.VIEW_MODES.SPLIT)}),e!==s.VIEW_MODES.APP&&(0,t.jsx)(g,{icon:r.faExpand,label:h("menu.fullView"),onClick:()=>c(s.VIEW_MODES.APP)}),(0,t.jsx)(g,{icon:r.faChartLine,label:h("menu.dashboard"),onClick:()=>d("dashboard")}),x&&(0,t.jsx)(g,{icon:r.faBook,label:h("menu.logbook"),onClick:()=>d("logbook")}),(0,t.jsx)(g,{icon:r.faCompass,label:h("menu.autopilot"),onClick:()=>d("autopilot")}),e!==s.VIEW_MODES.BOAT&&(0,t.jsx)(g,{icon:r.faShip,label:h("menu.boatView"),onClick:()=>c(s.VIEW_MODES.BOAT)}),(0,t.jsx)(g,{icon:r.faHandsHelping,label:h("menu.manual"),onClick:()=>d("manual")}),(0,t.jsx)(g,{icon:r.faTachometerAlt,label:h("menu.instruments"),onClick:()=>d("instrument")}),(0,t.jsx)(g,{icon:r.faVideo,label:h("menu.webcam"),onClick:()=>d("webcam1")}),(0,t.jsx)(g,{icon:r.faMapMarkedAlt,label:h("menu.navigation"),onClick:()=>d("navigation")}),(0,t.jsx)(g,{icon:r.faCogs,label:h("menu.settings"),onClick:m}),(0,t.jsx)(g,{icon:r.faCloudSun,label:h("menu.weather"),onClick:()=>d("weather")}),(0,t.jsx)(g,{icon:r.faBatteryFull,label:h("menu.battery"),onClick:()=>d("battery")}),(0,t.jsx)(g,{icon:r.faExclamationTriangle,label:h("menu.engine"),onClick:()=>d("motor")}),(0,t.jsx)(g,{icon:r.faHeadphones,label:h("menu.mediaPlayer"),onClick:()=>d("mediaplayer")}),(0,t.jsx)(g,{icon:r.faExpand,label:h("menu.toggleFullscreen"),onClick:f}),b&&(0,t.jsx)(g,{icon:r.faBug,label:h("menu.debug"),onClick:()=>d("debug")}),(0,t.jsx)(g,{icon:r.faSyncAlt,label:h("menu.refresh"),onClick:()=>{window.location.reload()}})]})})})}])},85626,e=>{e.n(e.i(2936))}]);
@@ -1,38 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,82897,60099,e=>{"use strict";let t,r;var n=e.i(31067),a=e.i(71645),i=e.i(28600),l=e.i(25234),o=e.i(90072);let s=a.forwardRef(({envMap:e,resolution:t=256,frames:r=1/0,makeDefault:s,children:u,...c},d)=>{let g=(0,i.useThree)(({set:e})=>e),h=(0,i.useThree)(({camera:e})=>e),m=(0,i.useThree)(({size:e})=>e),f=a.useRef(null);a.useImperativeHandle(d,()=>f.current,[]);let v=a.useRef(null),p=function(e){let t=(0,i.useThree)(e=>e.size),r=(0,i.useThree)(e=>e.viewport),n="number"==typeof e?e:t.width*r.dpr,l=t.height*r.dpr,s=("number"==typeof e?void 0:e)||{},{samples:u=0,depth:c,...d}=s,g=null!=c?c:s.depthBuffer,h=a.useMemo(()=>{let e=new o.WebGLRenderTarget(n,l,{minFilter:o.LinearFilter,magFilter:o.LinearFilter,type:o.HalfFloatType,...d});return g&&(e.depthTexture=new o.DepthTexture(n,l,o.FloatType)),e.samples=u,e},[]);return a.useLayoutEffect(()=>{h.setSize(n,l),u&&(h.samples=u)},[u,h,n,l]),a.useEffect(()=>()=>h.dispose(),[]),h}(t);a.useLayoutEffect(()=>{c.manual||(f.current.aspect=m.width/m.height)},[m,c]),a.useLayoutEffect(()=>{f.current.updateProjectionMatrix()});let x=0,y=null,M="function"==typeof u;return(0,l.useFrame)(t=>{M&&(r===1/0||x<r)&&(v.current.visible=!1,t.gl.setRenderTarget(p),y=t.scene.background,e&&(t.scene.background=e),t.gl.render(t.scene,f.current),t.scene.background=y,t.gl.setRenderTarget(null),v.current.visible=!0,x++)}),a.useLayoutEffect(()=>{if(s)return g(()=>({camera:f.current})),()=>g(()=>({camera:h}))},[f,s,g]),a.createElement(a.Fragment,null,a.createElement("perspectiveCamera",(0,n.default)({ref:f},c),!M&&u),a.createElement("group",{ref:v},M&&u(p.texture)))});e.s(["PerspectiveCamera",0,s],82897);var u=e.i(88014);let c=new o.Vector3,d=new o.Vector3,g=new o.Vector3,h=new o.Vector2;function m(e,t,r){let n=c.setFromMatrixPosition(e.matrixWorld);n.project(t);let a=r.width/2,i=r.height/2;return[n.x*a+a,-(n.y*i)+i]}let f=e=>1e-10>Math.abs(e)?0:e;function v(e,t,r=""){let n="matrix3d(";for(let r=0;16!==r;r++)n+=f(t[r]*e.elements[r])+(15!==r?",":")");return r+n}let p=(t=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>v(e,t)),x=(r=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>v(e,r(t),"translate(-50%,-50%)")),y=a.forwardRef(({children:e,eps:t=.001,style:r,className:s,prepend:v,center:y,fullscreen:M,portal:b,distanceFactor:R,sprite:T=!1,transform:P=!1,occlude:w,onOcclude:S,castShadow:E,receiveShadow:C,material:k,geometry:j,zIndexRange:O=[0x1000037,0],calculatePosition:$=m,as:F="div",wrapperClass:W,pointerEvents:G="auto",...I},z)=>{let{gl:A,camera:L,scene:N,size:U,raycaster:D,events:H,viewport:K}=(0,i.useThree)(),[V]=a.useState(()=>document.createElement(F)),B=a.useRef(null),Y=a.useRef(null),Z=a.useRef(0),X=a.useRef([0,0]),_=a.useRef(null),q=a.useRef(null),J=(null==b?void 0:b.current)||H.connected||A.domElement.parentNode,Q=a.useRef(null),ee=a.useRef(!1),et=a.useMemo(()=>{var e;return w&&"blending"!==w||Array.isArray(w)&&w.length&&(e=w[0])&&"object"==typeof e&&"current"in e},[w]);a.useLayoutEffect(()=>{let e=A.domElement;w&&"blending"===w?(e.style.zIndex=`${Math.floor(O[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[w]),a.useLayoutEffect(()=>{if(Y.current){let e=B.current=u.createRoot(V);if(N.updateMatrixWorld(),P)V.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=$(Y.current,L,U);V.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return J&&(v?J.prepend(V):J.appendChild(V)),()=>{J&&J.removeChild(V),e.unmount()}}},[J,P]),a.useLayoutEffect(()=>{W&&(V.className=W)},[W]);let er=a.useMemo(()=>P?{position:"absolute",top:0,left:0,width:U.width,height:U.height,transformStyle:"preserve-3d",pointerEvents:"none"}:{position:"absolute",transform:y?"translate3d(-50%,-50%,0)":"none",...M&&{top:-U.height/2,left:-U.width/2,width:U.width,height:U.height},...r},[r,y,M,U,P]),en=a.useMemo(()=>({position:"absolute",pointerEvents:G}),[G]);a.useLayoutEffect(()=>{var t,n;ee.current=!1,P?null==(t=B.current)||t.render(a.createElement("div",{ref:_,style:er},a.createElement("div",{ref:q,style:en},a.createElement("div",{ref:z,className:s,style:r,children:e})))):null==(n=B.current)||n.render(a.createElement("div",{ref:z,style:er,className:s,children:e}))});let ea=a.useRef(!0);(0,l.useFrame)(e=>{if(Y.current){L.updateMatrixWorld(),Y.current.updateWorldMatrix(!0,!1);let e=P?X.current:$(Y.current,L,U);if(P||Math.abs(Z.current-L.zoom)>t||Math.abs(X.current[0]-e[0])>t||Math.abs(X.current[1]-e[1])>t){var r;let t,n,a,i,l=(r=Y.current,t=c.setFromMatrixPosition(r.matrixWorld),n=d.setFromMatrixPosition(L.matrixWorld),a=t.sub(n),i=L.getWorldDirection(g),a.angleTo(i)>Math.PI/2),s=!1;et&&(Array.isArray(w)?s=w.map(e=>e.current):"blending"!==w&&(s=[N]));let u=ea.current;s?ea.current=function(e,t,r,n){let a=c.setFromMatrixPosition(e.matrixWorld),i=a.clone();i.project(t),h.set(i.x,i.y),r.setFromCamera(h,t);let l=r.intersectObjects(n,!0);if(l.length){let e=l[0].distance;return a.distanceTo(r.ray.origin)<e}return!0}(Y.current,L,D,s)&&!l:ea.current=!l,u!==ea.current&&(S?S(!ea.current):V.style.display=ea.current?"block":"none");let m=Math.floor(O[0]/2),v=w?et?[O[0],m]:[m-1,0]:O;if(V.style.zIndex=`${function(e,t,r){if(t instanceof o.PerspectiveCamera||t instanceof o.OrthographicCamera){let n=c.setFromMatrixPosition(e.matrixWorld),a=d.setFromMatrixPosition(t.matrixWorld),i=n.distanceTo(a),l=(r[1]-r[0])/(t.far-t.near),o=r[1]-l*t.far;return Math.round(l*i+o)}}(Y.current,L,v)}`,P){let[e,t]=[U.width/2,U.height/2],r=L.projectionMatrix.elements[5]*t,{isOrthographicCamera:n,top:a,left:i,bottom:l,right:o}=L,s=p(L.matrixWorldInverse),u=n?`scale(${r})translate(${f(-(o+i)/2)}px,${f((a+l)/2)}px)`:`translateZ(${r}px)`,c=Y.current.matrixWorld;T&&((c=L.matrixWorldInverse.clone().transpose().copyPosition(c).scale(Y.current.scale)).elements[3]=c.elements[7]=c.elements[11]=0,c.elements[15]=1),V.style.width=U.width+"px",V.style.height=U.height+"px",V.style.perspective=n?"":`${r}px`,_.current&&q.current&&(_.current.style.transform=`${u}${s}translate(${e}px,${t}px)`,q.current.style.transform=x(c,1/((R||10)/400)))}else{let t=void 0===R?1:function(e,t){if(t instanceof o.OrthographicCamera)return t.zoom;if(!(t instanceof o.PerspectiveCamera))return 1;{let r=c.setFromMatrixPosition(e.matrixWorld),n=d.setFromMatrixPosition(t.matrixWorld);return 1/(2*Math.tan(t.fov*Math.PI/180/2)*r.distanceTo(n))}}(Y.current,L)*R;V.style.transform=`translate3d(${e[0]}px,${e[1]}px,0) scale(${t})`}X.current=e,Z.current=L.zoom}}if(!et&&Q.current&&!ee.current)if(P){if(_.current){let e=_.current.children[0];if(null!=e&&e.clientWidth&&null!=e&&e.clientHeight){let{isOrthographicCamera:t}=L;if(t||j)I.scale&&(Array.isArray(I.scale)?I.scale instanceof o.Vector3?Q.current.scale.copy(I.scale.clone().divideScalar(1)):Q.current.scale.set(1/I.scale[0],1/I.scale[1],1/I.scale[2]):Q.current.scale.setScalar(1/I.scale));else{let t=(R||10)/400,r=e.clientWidth*t,n=e.clientHeight*t;Q.current.scale.set(r,n,1)}ee.current=!0}}}else{let t=V.children[0];if(null!=t&&t.clientWidth&&null!=t&&t.clientHeight){let e=1/K.factor,r=t.clientWidth*e,n=t.clientHeight*e;Q.current.scale.set(r,n,1),ee.current=!0}Q.current.lookAt(e.camera.position)}});let ei=a.useMemo(()=>({vertexShader:P?void 0:`
2
- /*
3
- This shader is from the THREE's SpriteMaterial.
4
- We need to turn the backing plane into a Sprite
5
- (make it always face the camera) if "transfrom"
6
- is false.
7
- */
8
- #include <common>
9
-
10
- void main() {
11
- vec2 center = vec2(0., 1.);
12
- float rotation = 0.0;
13
-
14
- // This is somewhat arbitrary, but it seems to work well
15
- // Need to figure out how to derive this dynamically if it even matters
16
- float size = 0.03;
17
-
18
- vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
19
- vec2 scale;
20
- scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
21
- scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
22
-
23
- bool isPerspective = isPerspectiveMatrix( projectionMatrix );
24
- if ( isPerspective ) scale *= - mvPosition.z;
25
-
26
- vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;
27
- vec2 rotatedPosition;
28
- rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
29
- rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
30
- mvPosition.xy += rotatedPosition;
31
-
32
- gl_Position = projectionMatrix * mvPosition;
33
- }
34
- `,fragmentShader:`
35
- void main() {
36
- gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
37
- }
38
- `}),[P]);return a.createElement("group",(0,n.default)({},I,{ref:Y}),w&&!et&&a.createElement("mesh",{castShadow:E,receiveShadow:C,ref:Q},j||a.createElement("planeGeometry",null),k||a.createElement("shaderMaterial",{side:o.DoubleSide,vertexShader:ei.vertexShader,fragmentShader:ei.fragmentShader})))});e.s(["Html",0,y],60099)},62588,e=>{"use strict";var t=e.i(43476),r=e.i(71645);e.i(49018);var n=e.i(83402),a=e.i(66799),i=e.i(67561),l=e.i(85709);let o=(0,r.createContext)(),s=(e,t,r,n)=>{let a=r.split(".").reduce((e,t)=>e?.[t],n);void 0!==a&&(e[t]=a)};e.s(["AISProvider",0,({children:e})=>{let[u,c]=(0,r.useState)({}),[d,g]=(0,r.useState)([]),h=(0,r.useRef)(null),m=(0,r.useRef)({}),f=(0,r.useRef)(null),{convertLatLonToXY:v}=(0,i.useOcearoContext)(),p=(0,l.useSignalKPath)("navigation.position"),x=(0,r.useRef)(),y=(0,r.useRef)(),M=(0,r.useCallback)(e=>{if(e.latitude&&e.longitude&&p&&p.latitude&&p.longitude&&e.latitude!=p.latitude&&e.longitude!=p.longitude){let t=n.default.get("aisLengthScalingFactor")||.7,{x:r,y:a}=v({lat:e.latitude,lon:e.longitude},{lat:p.latitude,lon:p.longitude});e.sceneX=r*t,e.sceneZ=-a*t,e.rotationAngleY=(e=>{if(!e)return 0;let t=e.heading||e.headingMagnetic;return e.cog||e.cogMagnetic||t||0})(e),e.distanceMeters=Math.sqrt(r**2+a**2);let i=e.visible;return e.visible=e.distanceMeters>10&&e.distanceMeters<=5e3,i!==e.visible}return!1},[p,v]),b=(0,r.useCallback)(()=>{f.current&&(clearTimeout(f.current),f.current=null);let e=Object.values(u).filter(e=>e.visible);((e,t)=>{if(e.length!==t.length)return!0;let r=new Set(e.map(e=>e.mmsi)),n=new Set(t.map(e=>e.mmsi));if(r.size!==n.size)return!0;for(let e of r)if(!n.has(e))return!0;return!1})(d,e)&&(console.log(`Updating visible vessels: ${e.length} vessels`),g(e))},[u,d]),R=(0,r.useCallback)(()=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{b(),f.current=null},100)},[b]);return(0,r.useEffect)(()=>{x.current=M,y.current=R},[M,R]),(0,r.useEffect)(()=>{let e=setInterval(()=>{let e=Date.now();c(t=>{let r=!1,n={...t};return(Object.entries(n).forEach(([t,a])=>{e-a.lastUpdate>6e5&&(delete n[t],r=!0)}),r)?(R(),n):t})},6e4);return()=>clearInterval(e)},[R]),(0,r.useEffect)(()=>{let e=async e=>{console.log("Fetching static vessel info...");try{let t=await e.API().then(e=>e.vessels()),r=Object.entries(t).map(([e,t])=>{let r={mmsi:e};return s(r,"name","name",t),s(r,"latitude","navigation.position.value.latitude",t),s(r,"longitude","navigation.position.value.longitude",t),s(r,"sog","navigation.speedOverGround.value",t),s(r,"cog","navigation.courseOverGroundTrue.value",t),s(r,"cogMagnetic","navigation.courseOverGroundMagnetic.value",t),s(r,"heading","navigation.headingTrue.value",t),s(r,"headingMagnetic","navigation.headingMagnetic.value",t),s(r,"length","design.length.value.overall",t),s(r,"beam","design.beam.value",t),s(r,"callsign","communication.callsignVhf",t),s(r,"shipType","design.aisShipType.value.id",t),r.lastUpdate=Date.now(),r.distanceMeters=null,r.sceneX=null,r.sceneZ=null,r.rotationAngleY=null,r.visible=!1,r}),n={};if(r.forEach(e=>{e.mmsi&&"self"!=e.mmsi&&(null!==e.latitude||null!==e.longitude)&&(x.current(e),n[e.mmsi]=e)}),console.log(`Fetched ${r.length} vessels.`),Object.keys(n).length>0){console.log(`Initializing AIS data with ${Object.keys(n).length} vessels`),c(n);let e=Object.values(n).filter(e=>e.visible);g(e),console.log(`${e.length} vessels initially visible`)}}catch(e){console.error("Error fetching static info:",e)}},t=e=>{if(!e?.updates)return void console.warn("Missing delta or no updates:",e);let t=e.context.replace("vessels.","");t?(m.current[t]=Date.now(),c(r=>{let n=r[t]||{mmsi:t,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,cogMagnetic:null,heading:null,headingMagnetic:null,distanceMeters:null,sceneX:null,sceneZ:null,rotationAngleY:null,visible:!1,length:null,beam:null,shipType:null};n.lastUpdate=m.current[t];let a=!1,i=!1;return e.updates.forEach(e=>{e.values&&e.values.forEach(e=>{switch(e.path){case"name":n.name=e.value;break;case"navigation.position":n.latitude=e.value.latitude,n.longitude=e.value.longitude,a=!0;break;case"navigation.speedOverGround":n.sog=e.value;break;case"navigation.courseOverGroundTrue":n.cog=e.value,i=!0;break;case"navigation.courseOverGroundMagnetic":n.cogMagnetic=e.value,i=!0;break;case"navigation.headingTrue":n.heading=e.value,i=!0;break;case"navigation.headingMagnetic":n.headingMagnetic=e.value,i=!0;break;case"design.aisShipType":n.shipType=e.value?.id??e.value;break;case"design.length":n.length=e.value?.overall??e.value;break;case"design.beam":n.beam=e.value;break;case"communication.callsignVhf":n.callsign=e.value}})}),(x.current(n)||a||i)&&y.current(),{...r,[t]:n}})):console.warn("Update without MMSI context:",e)};return(async()=>{try{let{signalkUrl:r}=n.default.getAll();if(console.log("SignalK URL:",r),!r)throw Error("SignalK URL is undefined or invalid.");console.log(`Connecting to SignalK at: ${r}`);let i=a.default.createClient({subscriptions:[{context:"vessels.*",subscribe:[{path:"navigation.position"},{path:"navigation.speedOverGround"},{path:"navigation.courseOverGroundTrue"},{path:"navigation.courseOverGroundMagnetic"},{path:"navigation.headingTrue"},{path:"navigation.headingMagnetic"},{path:"name"},{path:"design.aisShipType"},{path:"design.length"},{path:"design.beam"},{path:"communication.callsignVhf"}]}]});h.current=i,await i.connect(),console.log("SignalK client connected."),await e(i),i.on("delta",t)}catch(e){console.warn("Error connecting to SignalK:",e)}})(),()=>{console.log("Disconnecting SignalK client..."),f.current&&clearTimeout(f.current),h.current?.disconnect()}},[]),(0,t.jsx)(o.Provider,{value:{aisData:u,vesselIds:d},children:e})},"useAIS",0,()=>(0,r.useContext)(o)])},32615,13035,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(31067),a=e.i(90072);function i(e,t){let a=e+"Geometry";return r.forwardRef(({args:e,children:i,...l},o)=>{let s=r.useRef(null);return r.useImperativeHandle(o,()=>s.current),r.useLayoutEffect(()=>void(null==t||t(s.current))),r.createElement("mesh",(0,n.default)({ref:s},l),r.createElement(a,{attach:"geometry",args:e}),i)})}let l=i("sphere"),o=i("ring");e.s(["Ring",0,o,"Sphere",0,l],13035);var s=e.i(16196),u=e.i(67561),c=e.i(85709),d=e.i(83402);let g=r.default.memo(({radius:e,isOuter:n,markerColorPrimary:i,markerColorGreen:o,markerColorRed:u})=>{let c=(0,r.useMemo)(()=>{let r=[];for(let c=0;c<360;c+=10){let d=a.MathUtils.degToRad(c-90),g=c%30==0,h=n?g?.35:.15:g?.25:.1,m=(e+.5*h+.2)*Math.cos(d),f=(e+.5*h+.2)*Math.sin(d),v=n&&c>0&&c<61,p=n&&c>=300&&c<360,x=v?o:p?u:i;if(!n&&g){let e;e=0===c?"N":90===c?"E":180===c?"S":270===c?"W":c.toString(),r.push((0,t.jsx)(s.Text,{characters:"NESW0123456789",position:[m,.02,f],color:i,fontSize:.6,rotation:[-Math.PI/2,0,Math.PI/2-d],font:"fonts/Roboto-Bold.ttf",anchorY:"middle",fillOpacity:.9,children:e},`text-${c}`))}else r.push((0,t.jsx)(l,{args:[h/2,16,16],position:[m,0,f],children:(0,t.jsx)("meshBasicMaterial",{color:x,transparent:!0,opacity:g?.8:.4})},`marker-${n?"outer":"inner"}-${c}`))}return r},[e,n,i,o,u]);return(0,t.jsx)(t.Fragment,{children:c})});g.displayName="StaticMarkers";let h=r.default.memo(({innerRadius:e,outerRadius:r,dialColor:n,opacity:i=1,transparent:l=!1})=>(0,t.jsx)(o,{args:[e,r,64],rotation:[Math.PI/2,0,0],children:(0,t.jsx)("meshBasicMaterial",{color:n,side:a.DoubleSide,transparent:l,opacity:i,depthWrite:!1})}));h.displayName="StaticRing";let m=({outerRadius:e,innerRadius:n})=>{let{nightMode:a}=(0,u.useOcearoContext)(),i=a?u.oNight:"#ffffff",l=u.oGreen,o=u.oRed,s=(0,r.useMemo)(()=>["navigation.headingTrue","navigation.headingMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic"],[]),m=(0,c.useSignalKPaths)(s),f=(0,r.useMemo)(()=>{let e=d.default.get("preferredHeadingPath")||"courseOverGroundTrue",t=m[`navigation.${e}`];if(null!=t)return t;let r=m["navigation.headingTrue"]||m["navigation.headingMagnetic"];return m["navigation.courseOverGroundTrue"]||m["navigation.courseOverGroundMagnetic"]||r||0},[m]),v=a?"#000000":"#0a0a0a",p=d.default.get("compassNorthUp"),x=(0,r.useMemo)(()=>({innerRadius:n,outerRadius:e,dialColor:v,markerColorPrimary:i,markerColorGreen:l,markerColorRed:o}),[n,e,v,i,l,o]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("group",{rotation:[0,f+(p?0:Math.PI),0],children:[(0,t.jsx)(h,{innerRadius:x.innerRadius,outerRadius:x.outerRadius,dialColor:x.dialColor,transparent:!0,opacity:.1}),(0,t.jsx)(g,{radius:x.innerRadius,isOuter:!1,markerColorPrimary:x.markerColorPrimary,markerColorGreen:x.markerColorGreen,markerColorRed:x.markerColorRed})]}),(0,t.jsxs)("group",{children:[(0,t.jsx)(h,{innerRadius:x.innerRadius+.8,outerRadius:x.outerRadius+.8,dialColor:x.dialColor,transparent:!0,opacity:.15}),(0,t.jsx)(g,{radius:x.innerRadius+.8,isOuter:!0,markerColorPrimary:x.markerColorPrimary,markerColorGreen:x.markerColorGreen,markerColorRed:x.markerColorRed})]})]})};m.displayName="CompassDial";var f=e.i(84226);e.s(["default",0,({visible:e=!0,position:r,scale:n})=>!e||d.default.get("hide3DCompass")?null:(0,t.jsxs)("group",{position:r,scale:n,children:[(0,t.jsx)(m,{outerRadius:5.6,innerRadius:5}),(0,t.jsx)(f.default,{outerRadius:5.6+1.1})]})],32615)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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";t.exports=e.r(52822)},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])}]);