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,9 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68192,e=>{"use strict";var t=e.i(43476),s=e.i(71645),o=e.i(70703),n=e.i(46932),l=e.i(88653);e.i(85269);var r=e.i(22831),a=e.i(85709),i=e.i(83402);let u=({messageKey:e})=>{let{t:s}=(0,r.useTranslation)();return(0,t.jsx)("div",{className:"w-full h-full flex items-center justify-center text-hud-main",children:s(e)})},c=(0,o.default)(()=>e.A(56489),{loadableGenerated:{modules:[92094]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingDocuments"})}),d=(0,o.default)(()=>e.A(22155),{loadableGenerated:{modules:[34900]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingSettings"})}),m=(0,o.default)(()=>e.A(30455),{loadableGenerated:{modules:[13268]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingMediaPlayer"})}),f=(0,o.default)(()=>e.A(71074),{loadableGenerated:{modules:[65862]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingBatteryMonitor"})}),h=(0,o.default)(()=>e.A(3523),{loadableGenerated:{modules:[8161]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingEngineMonitor"})}),p=(0,o.default)(()=>e.A(88913),{loadableGenerated:{modules:[25294]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingDashboard"})}),g=(0,o.default)(()=>e.A(26371),{loadableGenerated:{modules:[70127]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingLogbook"})}),x=(0,o.default)(()=>e.A(58293),{loadableGenerated:{modules:[33946]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loadingAutopilot"})}),j=(0,o.default)(()=>e.A(47853),{loadableGenerated:{modules:[58652]},loading:()=>(0,t.jsx)(u,{messageKey:"common.loading"})}),y={latitude:46.1591,longitude:-1.1522},v={navigation:e=>!e||e.includes("localhost:3000")?null:`${e}/@signalk/freeboard-sk/`,instrument:e=>`${e}/@mxtommy/kip/`,dashboard:e=>e.replace(":3000",":3001")+"/grafana",webcam1:()=>"https://pv.viewsurf.com/2080/Chatelaillon-Port?i=NzU4Mjp1bmRlZmluZWQ",webcam2:()=>"https://pv.viewsurf.com/1478/Chatelaillon-Plage?i=NTkyMDp1bmRlZmluZWQ",weather:(e,t)=>t&&`https://embed.windy.com/embed.html?type=map&location=coordinates&metricRain=mm&metricTemp=\xb0C&metricWind=kt&zoom=10&overlay=wind&product=ecmwf&level=surface&lat=${t.latitude}&lon=${t.longitude}&message=true`};e.s(["default",0,({view:e})=>{let{t:o}=(0,r.useTranslation)(),[u,b]=(0,s.useState)(y),[k,w]=(0,s.useState)(null);i.default.getAll();let P=i.default.getSignalKUrl(),E=(0,a.useSignalKPath)("navigation.position");(0,s.useEffect)(()=>{w(null)},[e]),(0,s.useEffect)(()=>{E&&b(e=>e?Math.abs(e.latitude-E.latitude)>.01||Math.abs(e.longitude-E.longitude)>.01?E:e:E)},[E]);let C=(0,s.useMemo)(()=>{let t=i.default.getAll(),s=t.customExternalUrls||{};if(t.showCustomUrls&&s[e])try{if("string"==typeof s[e]&&s[e].includes("${signalkUrl}"))return s[e].replace("${signalkUrl}",P).replace("${latitude}",u?.latitude||y.latitude).replace("${longitude}",u?.longitude||y.longitude);return s[e]}catch(e){console.error("Error using custom URL:",e)}let o=v[e];if(!o)return null;try{return o(P,u)}catch(e){return console.error("Error generating URL:",e),null}},[e,u,P]),$=["motor","logbook","autopilot","battery","dashboard","debug"].includes(e);return(0,t.jsx)("div",{className:"flex flex-col w-full h-full overflow-hidden bg-hud-bg backdrop-blur-sm relative z-0",children:(0,t.jsx)(l.AnimatePresence,{mode:"wait",children:(0,t.jsx)(n.motion.div,{initial:{opacity:0,x:10,scale:.99},animate:{opacity:1,x:0,scale:1},exit:{opacity:0,x:-10,scale:.99},transition:{duration:.4,ease:[.16,1,.3,1]},style:{flex:"1 1 0%",minHeight:0},className:`flex flex-col w-full absolute inset-0 ${$?"overflow-hidden":"overflow-auto"}`,children:(()=>{if(k)return(0,t.jsx)("div",{className:"text-oRed p-4 font-semibold uppercase text-caption",children:k});switch(e){case"manual":return(0,t.jsx)(c,{path:"./docs"});case"settings":return(0,t.jsx)(d,{});case"mediaplayer":return(0,t.jsx)(m,{});case"battery":return(0,t.jsx)(f,{});case"motor":return(0,t.jsx)(h,{});case"dashboard":return(0,t.jsx)(p,{});case"logbook":return(0,t.jsx)(g,{});case"autopilot":return(0,t.jsx)(x,{});case"debug":return(0,t.jsx)(j,{});default:if(!C)return(0,t.jsx)("div",{className:"text-hud-muted p-4 text-label",children:o("errors.failedToLoadExternal")});return(0,t.jsx)("iframe",{className:"flex-grow border-none",src:C,title:"External Application",onError:()=>w(o("errors.failedToLoadExternal"))})}})()},e)})})}])},42602,function(e){e.n(e.i(68192))},58293,e=>{e.v(t=>Promise.all(["static/chunks/2dvwb-mfasp68.js","static/chunks/0jfox92up1jvy.js"].map(t=>e.l(t))).then(()=>t(33946)))},71074,e=>{e.v(t=>Promise.all(["static/chunks/1xekc18cyi4sx.js","static/chunks/0jfox92up1jvy.js","static/chunks/2s6w3x5jnc2tg.js"].map(t=>e.l(t))).then(()=>t(65862)))},88913,e=>{e.v(t=>Promise.all(["static/chunks/2aq8orcir5h03.js","static/chunks/0jfox92up1jvy.js","static/chunks/2kwn4iymxaom3.js"].map(t=>e.l(t))).then(()=>t(25294)))},47853,e=>{e.v(t=>Promise.all(["static/chunks/2fdpvhx4oo81h.js"].map(t=>e.l(t))).then(()=>t(58652)))},56489,e=>{e.v(t=>Promise.all(["static/chunks/37t6vg8fb1-z8.js","static/chunks/0jfox92up1jvy.js"].map(t=>e.l(t))).then(()=>t(92094)))},3523,e=>{e.v(t=>Promise.all(["static/chunks/1pa1cfmfts0i9.js","static/chunks/0jfox92up1jvy.js"].map(t=>e.l(t))).then(()=>t(8161)))},26371,e=>{e.v(t=>Promise.all(["static/chunks/3wwn1rti8oc_r.js","static/chunks/0jfox92up1jvy.js"].map(t=>e.l(t))).then(()=>t(70127)))},30455,e=>{e.v(t=>Promise.all(["static/chunks/0n95joti2n2py.js","static/chunks/0jfox92up1jvy.js"].map(t=>e.l(t))).then(()=>t(13268)))},22155,e=>{e.v(t=>Promise.all(["static/chunks/0zwc9m4qgtwle.js","static/chunks/2rebcvig176xk.js","static/chunks/0jfox92up1jvy.js","static/chunks/0ohleay4roayh.js"].map(t=>e.l(t))).then(()=>t(34900)))},88653,e=>{"use strict";var t=e.i(43476),s=e.i(71645),o=e.i(31178),n=e.i(47414),l=e.i(74008),r=e.i(21476),a=e.i(72846),i=s,u=e.i(37806);function c(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}class d extends i.Component{getSnapshotBeforeUpdate(e){let t=this.props.childRef.current;if((0,a.isHTMLElement)(t)&&e.isPresent&&!this.props.isPresent&&!1!==this.props.pop){let e=t.offsetParent,s=(0,a.isHTMLElement)(e)&&e.offsetWidth||0,o=(0,a.isHTMLElement)(e)&&e.offsetHeight||0,n=getComputedStyle(t),l=this.props.sizeRef.current;l.height=parseFloat(n.height),l.width=parseFloat(n.width),l.top=t.offsetTop,l.left=t.offsetLeft,l.right=s-l.width-l.left,l.bottom=o-l.height-l.top,l.direction=n.direction}return null}componentDidUpdate(){}render(){return this.props.children}}function m({children:e,isPresent:o,anchorX:n,anchorY:l,root:r,pop:a}){let f=(0,i.useId)(),h=(0,i.useRef)(null),p=(0,i.useRef)({width:0,height:0,top:0,left:0,right:0,bottom:0,direction:"ltr"}),{nonce:g}=(0,i.useContext)(u.MotionConfigContext),x=function(...e){return s.useCallback(function(...e){return t=>{let s=!1,o=e.map(e=>{let o=c(e,t);return s||"function"!=typeof o||(s=!0),o});if(s)return()=>{for(let t=0;t<o.length;t++){let s=o[t];"function"==typeof s?s():c(e[t],null)}}}}(...e),e)}(h,!1!==a?e.props?.ref??e?.ref:void 0);return(0,i.useInsertionEffect)(()=>{let{width:e,height:t,top:s,left:i,right:u,bottom:c,direction:d}=p.current;if(o||!1===a||!h.current||!e||!t)return;let m="rtl"===d,x="left"===n?m?`right: ${u}`:`left: ${i}`:m?`left: ${i}`:`right: ${u}`,j="bottom"===l?`bottom: ${c}`:`top: ${s}`;h.current.dataset.motionPopId=f;let y=document.createElement("style");g&&(y.nonce=g);let v=r??document.head;return v.appendChild(y),y.sheet&&y.sheet.insertRule(`
|
|
2
|
+
[data-motion-pop-id="${f}"] {
|
|
3
|
+
position: absolute !important;
|
|
4
|
+
width: ${e}px !important;
|
|
5
|
+
height: ${t}px !important;
|
|
6
|
+
${x}px !important;
|
|
7
|
+
${j}px !important;
|
|
8
|
+
}
|
|
9
|
+
`),()=>{h.current?.removeAttribute("data-motion-pop-id"),v.contains(y)&&v.removeChild(y)}},[o]),(0,t.jsx)(d,{isPresent:o,childRef:h,sizeRef:p,pop:a,children:!1===a?e:i.cloneElement(e,{ref:x})})}let f=({children:e,initial:o,isPresent:a,onExitComplete:i,custom:u,presenceAffectsLayout:c,mode:d,anchorX:f,anchorY:p,root:g})=>{let x=(0,n.useConstant)(h),j=(0,s.useId)(),y=(0,s.useRef)(a),v=(0,s.useRef)(i);(0,l.useIsomorphicLayoutEffect)(()=>{y.current=a,v.current=i});let b=!0,k=(0,s.useMemo)(()=>(b=!1,{id:j,initial:o,isPresent:a,custom:u,onExitComplete:e=>{for(let t of(x.set(e,!0),x.values()))if(!t)return;i&&i()},register:e=>(x.set(e,!1),()=>{x.delete(e),y.current||x.size||v.current?.()})}),[a,x,i]);return c&&b&&(k={...k}),(0,s.useMemo)(()=>{x.forEach((e,t)=>x.set(t,!1))},[a]),s.useEffect(()=>{a||x.size||!i||i()},[a]),e=(0,t.jsx)(m,{pop:"popLayout"===d,isPresent:a,anchorX:f,anchorY:p,root:g,children:e}),(0,t.jsx)(r.PresenceContext.Provider,{value:k,children:e})};function h(){return new Map}var p=e.i(64978);let g=e=>e.key||"";function x(e){let t=[];return s.Children.forEach(e,e=>{(0,s.isValidElement)(e)&&t.push(e)}),t}e.s(["AnimatePresence",0,({children:e,custom:r,initial:a=!0,onExitComplete:i,presenceAffectsLayout:u=!0,mode:c="sync",propagate:d=!1,anchorX:m="left",anchorY:h="top",root:j})=>{let[y,v]=(0,p.usePresence)(d),b=(0,s.useMemo)(()=>x(e),[e]),k=d&&!y?[]:b.map(g),w=(0,s.useRef)(!0),P=(0,n.useConstant)(()=>new Map),E=(0,s.useRef)(new Set),[C,$]=(0,s.useState)(b),[A,R]=(0,s.useState)(b);(0,l.useIsomorphicLayoutEffect)(()=>{!d||y||A.length||v?.()},[y,d,A.length,v]),(0,l.useIsomorphicLayoutEffect)(()=>{w.current=!1;for(let e=0;e<A.length;e++){let t=g(A[e]);k.includes(t)?(P.delete(t),E.current.delete(t)):!0!==P.get(t)&&P.set(t,!1)}},[A,k.length,k.join("-")]);let M=[];if(b!==C){let e=[...b],t=0;for(let s of A){let o=k.indexOf(g(s));-1===o?(e.splice(t++,0,s),M.push(s)):t=o+M.length+1}return M.every(e=>P.get(g(e)))?e=b:"wait"===c&&(e=M),R(x(e)),$(b),null}let{forceRender:L}=(0,s.useContext)(o.LayoutGroupContext);return(0,t.jsx)(t.Fragment,{children:A.map(e=>{let s=g(e),o=(!d||!!y)&&(b===A||k.includes(s));return(0,t.jsx)(f,{isPresent:o,initial:(!w.current||!!a)&&void 0,custom:r,presenceAffectsLayout:u,mode:c,root:j,onExitComplete:o?void 0:()=>{if(E.current.has(s)||!P.has(s))return;E.current.add(s),P.set(s,!0);let e=!0;P.forEach(t=>{t||(e=!1)}),e&&(L?.(),$([]),d&&v?.(),i&&i())},anchorX:m,anchorY:h,children:e},s)})})}],88653)}]);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,84226,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(57384);e.i(67561);var o=e.i(46991),i=e.i(85709),a=e.i(83402),s=e.i(90072),u=e.i(16196),l=e.i(83646);let d=({position:e=[0,0,0],rotation:r=[0,0,0],speed:n,color:o,fontSize:i=.5,textPosition:a=[0,.8,0],arrowSize:d=1})=>{let{scene:p}=(0,l.default)(),c=o||p.wind;return(0,t.jsxs)("group",{position:e,rotation:r,children:[(0,t.jsx)(u.Text,{characters:".0123456789",color:c,fontSize:i*d,position:a,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",children:n.toFixed(1)}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("shapeGeometry",{args:[new s.Shape([new s.Vector2(0,0),new s.Vector2(.5*d*Math.cos(5*Math.PI/6),.5*d*Math.sin(5*Math.PI/6)),new s.Vector2(0,-.577*d),new s.Vector2(0,-.577*d),new s.Vector2(-.5*d*Math.cos(5*Math.PI/6),.5*d*Math.sin(5*Math.PI/6)),new s.Vector2(0,0)])]}),(0,t.jsx)("meshStandardMaterial",{color:c,side:s.DoubleSide})]})]})};d.propTypes={position:n.default.oneOfType([n.default.instanceOf(s.Vector3),n.default.arrayOf(n.default.number)]).isRequired,rotation:n.default.arrayOf(n.default.number).isRequired,speed:n.default.number.isRequired,color:n.default.oneOfType([n.default.string,n.default.number]).isRequired,fontSize:n.default.number,textPosition:n.default.arrayOf(n.default.number),arrowSize:n.default.number};let p=({outerRadius:e})=>{let n=a.default.get("preferredWindSpeedPath")||"speedTrue",u=a.default.get("preferredWindDirectionPath")||"directionTrue",p=a.default.get("preferredHeadingPath")||"courseOverGroundTrue",c=(0,r.useMemo)(()=>["environment.wind.angleTrueGround","environment.wind.speedOverGround","environment.wind.directionTrue","environment.wind.speedTrue","environment.wind.angleApparent","environment.wind.speedApparent","environment.wind.angleTrueWater","navigation.headingTrue","navigation.headingMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic"],[]),h=(0,i.useSignalKPaths)(c),f=(0,r.useMemo)(()=>{if("directionTrue"===u){let e=h[`environment.wind.${u}`]??h["environment.wind.directionTrue"];if(null!=e)return Math.PI/2-(e-(h[`navigation.${p}`]??h["navigation.headingTrue"]??h["navigation.courseOverGroundTrue"]??0));let t=h["environment.wind.angleTrueGround"]??h["environment.wind.angleTrueWater"];if(null!=t)return Math.PI/2-t}else{let e=h[`environment.wind.${u}`]??h["environment.wind.angleTrueGround"]??h["environment.wind.angleTrueWater"];if(null!=e)return Math.PI/2-e;let t=h["environment.wind.directionTrue"];if(null!=t)return Math.PI/2-(t-(h[`navigation.${p}`]??h["navigation.headingTrue"]??h["navigation.courseOverGroundTrue"]??0))}return Math.PI/2},[h,u,p]),m=(0,r.useMemo)(()=>{let e=h[`environment.wind.${n}`]??h["environment.wind.speedOverGround"]??h["environment.wind.speedTrue"];return(0,o.convertSpeedUnit)(e)||0},[h,n]),g=(0,r.useMemo)(()=>Math.PI/2-(h["environment.wind.angleApparent"]||0),[h]),v=(0,r.useMemo)(()=>(0,o.convertSpeedUnit)(h["environment.wind.speedApparent"])||0,[h]),x=(0,r.useMemo)(()=>new s.Vector3((e+.7)*Math.cos(f),0,-(e+.7)*Math.sin(f)),[e,f]),M=(0,r.useMemo)(()=>new s.Vector3((e+.7)*Math.cos(g),0,-(e+.7)*Math.sin(g)),[e,g]),w=(0,l.default)();return(0,t.jsxs)("group",{children:[m>0&&!0!==a.default.get("hideTrueWind")&&(0,t.jsx)(d,{position:x,rotation:[-Math.PI/2,0,-(Math.PI/2-f)],speed:m,color:w.ok,fontSize:1}),v>0&&(0,t.jsx)(d,{position:M,rotation:[-Math.PI/2,0,-(Math.PI/2-g)],speed:v,color:w.accent,fontSize:1})]})};p.propTypes={outerRadius:n.default.number.isRequired},e.s(["default",0,p])},35235,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(30297),o=e.i(82897),i=e.i(60099),a=e.i(66326),s=e.i(73919),u=e.i(20440),l=e.i(85709),d=e.i(83646),p=e.i(84226),c=e.i(57384),h=e.i(16196),f=e.i(90072);let m=.5,g=({position:e,rotation:r,speed:n,color:o,fontSize:i=m,textPosition:a=[0,.8,0],arrowSize:s=1})=>{let{scene:u}=(0,d.default)(),l=o||u.wind;return(0,t.jsxs)("group",{position:e,rotation:r,children:[(0,t.jsx)(h.Text,{characters:"0123456789.",color:l,fontSize:i*s,position:a,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",fillOpacity:.9,children:n.toFixed(1)}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("shapeGeometry",{args:[new f.Shape([new f.Vector2(0,0),new f.Vector2(.4*s,.3*s),new f.Vector2(0,-.6*s),new f.Vector2(-.4*s,.3*s),new f.Vector2(0,0)])]}),(0,t.jsx)("meshBasicMaterial",{color:l,side:f.DoubleSide,transparent:!0,opacity:.8})]})]})};g.propTypes={position:c.default.arrayOf(c.default.number),rotation:c.default.arrayOf(c.default.number),speed:c.default.number.isRequired,color:c.default.string,fontSize:c.default.number,textPosition:c.default.arrayOf(c.default.number),arrowSize:c.default.number},g.defaultProps={position:[0,0,0],rotation:[0,0,0],color:null,fontSize:m,textPosition:[0,.8,0],arrowSize:1};let v=({outerRadius:e})=>{let n=(0,l.useSignalKPath)("environment.current"),o=(0,r.useMemo)(()=>n||{setTrue:0,drift:0},[n]),i=(0,r.useMemo)(()=>{let t=o.setTrue||0;return[(e+.7)*Math.cos(t),0,-(e+.7)*Math.sin(t)]},[e,o.setTrue]),{scene:a}=(0,d.default)();return!o.drift||o.drift<=0?null:(0,t.jsx)("group",{children:(0,t.jsx)(g,{position:i,rotation:[-Math.PI/2,0,-(Math.PI/2-(o.setTrue||0))],speed:o.drift,color:a.current,arrowSize:1.2})})};v.propTypes={outerRadius:c.default.number.isRequired};var x=e.i(95393);let M=`
|
|
2
|
+
attribute float aAlong;
|
|
3
|
+
varying vec2 vUv;
|
|
4
|
+
varying float vAlong;
|
|
5
|
+
void main() {
|
|
6
|
+
vUv = uv;
|
|
7
|
+
vAlong = aAlong;
|
|
8
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
9
|
+
}
|
|
10
|
+
`,w=`
|
|
11
|
+
uniform vec3 uColor;
|
|
12
|
+
uniform vec3 uGlow;
|
|
13
|
+
uniform float uTime;
|
|
14
|
+
uniform float uOpacity;
|
|
15
|
+
varying vec2 vUv;
|
|
16
|
+
varying float vAlong;
|
|
17
|
+
void main() {
|
|
18
|
+
float across = abs(vUv.x - 0.5) * 2.0;
|
|
19
|
+
float edge = 1.0 - smoothstep(0.8, 1.0, across);
|
|
20
|
+
float rim = smoothstep(0.84, 0.92, across) * (1.0 - smoothstep(0.92, 1.0, across));
|
|
21
|
+
float fade = 1.0 - smoothstep(0.65, 1.0, vUv.y);
|
|
22
|
+
// Chevrons pointing along the path, streaming forward
|
|
23
|
+
float c = fract(vAlong * 0.45 + across * 0.9 - uTime * 0.9);
|
|
24
|
+
float chevron = smoothstep(0.55, 0.62, c) * (1.0 - smoothstep(0.78, 0.86, c));
|
|
25
|
+
vec3 color = mix(uColor, uGlow, chevron);
|
|
26
|
+
float alpha = (0.28 * edge + 0.5 * chevron * edge + 0.45 * rim) * fade * uOpacity;
|
|
27
|
+
gl_FragColor = vec4(color, alpha);
|
|
28
|
+
#include <colorspace_fragment>
|
|
29
|
+
}
|
|
30
|
+
`,y=({points:e,width:n=2,color:o,glow:i,y:a=.05,opacity:s=1})=>{let u=(0,r.useMemo)(()=>new f.ShaderMaterial({uniforms:{uColor:{value:new f.Color},uGlow:{value:new f.Color},uTime:{value:0},uOpacity:{value:1}},vertexShader:M,fragmentShader:w,transparent:!0,depthWrite:!1,side:f.DoubleSide}),[]);(0,r.useEffect)(()=>{u.uniforms.uColor.value.set(o),u.uniforms.uGlow.value.set(i||o),u.uniforms.uOpacity.value=s},[u,o,i,s]),(0,r.useEffect)(()=>()=>u.dispose(),[u]),(0,x.useFrame)((e,t)=>{u.uniforms.uTime.value+=t});let l=(0,r.useMemo)(()=>{let t=e.length,r=new Float32Array(2*t*3),o=new Float32Array(2*t*2),i=new Float32Array(2*t),s=0,u=e.reduce((t,r,n)=>n?t+Math.hypot(r[0]-e[n-1][0],r[1]-e[n-1][1]):0,0)||1;for(let l=0;l<t;l++){let d=e[Math.max(0,l-1)],p=e[Math.min(t-1,l+1)],c=p[0]-d[0],h=p[1]-d[1],f=Math.hypot(c,h)||1;c/=f,h/=f,l>0&&(s+=Math.hypot(e[l][0]-e[l-1][0],e[l][1]-e[l-1][1]));let m=-h*n/2,g=c*n/2;r.set([e[l][0]+m,a,e[l][1]+g,e[l][0]-m,a,e[l][1]-g],6*l),o.set([0,s/u,1,s/u],4*l),i.set([s,s],2*l)}let l=[];for(let e=0;e<t-1;e++){let t=2*e;l.push(t,t+1,t+2,t+1,t+3,t+2)}let d=new f.BufferGeometry;return d.setAttribute("position",new f.BufferAttribute(r,3)),d.setAttribute("uv",new f.BufferAttribute(o,2)),d.setAttribute("aAlong",new f.BufferAttribute(i,1)),d.setIndex(l),d},[e,n,a]);return((0,r.useEffect)(()=>()=>l.dispose(),[l]),e.length<2)?null:(0,t.jsx)("mesh",{geometry:l,material:u,renderOrder:2})};var b=e.i(76247),T=e.i(43216);let j=35*Math.PI/180,P=({rudder:e=0,speed:t=0,seconds:r=20,current:n=null,wind:o=null,steps:i=48})=>{let a=Math.tan(Math.max(-j,Math.min(j,e||0)))/4.2,s=0,u=0;if(n&&Number.isFinite(n.set)&&Number.isFinite(n.drift)&&(s+=n.drift*Math.sin(n.set),u-=n.drift*Math.cos(n.set)),o&&Number.isFinite(o.angle)&&Number.isFinite(o.speed)){let e=.035*o.speed;s-=e*Math.sin(o.angle),u+=e*Math.cos(o.angle)}let l=r/i,d=0,p=0,c=0,h=[[0,0]];for(let e=0;e<i;e++)d+=(t*Math.sin(c)+s)*l,p+=(-t*Math.cos(c)+u)*l,c+=t*a*l,h.push([d,p]);return h};var O=e.i(539);let S=["steering.rudderAngle","navigation.speedThroughWater","navigation.speedOverGround","propulsion.0.transmission.gear","propulsion.main.transmission.gear","propulsion.port.transmission.gear","environment.current","environment.wind.speedTrue","environment.wind.angleTrueWater","navigation.headingTrue","navigation.courseOverGroundTrue"];e.s(["default",0,({onUpdateInfoPanel:e})=>{let{scene:c,accent:h}=(0,d.default)(),f=(0,r.useRef)(),m=(0,l.useSignalKPaths)(S),g=m["steering.rudderAngle"]??0,x=Math.abs(m["navigation.speedThroughWater"]??m["navigation.speedOverGround"]??0),M=m["propulsion.0.transmission.gear"]??m["propulsion.main.transmission.gear"]??m["propulsion.port.transmission.gear"],w=-1===M||"string"==typeof M&&M.trim().toLowerCase().startsWith("rev"),j=m["navigation.headingTrue"]??m["navigation.courseOverGroundTrue"],I=m["environment.current"],A=m["environment.wind.speedTrue"],G=m["environment.wind.angleTrueWater"],{path:R,noDrift:W}=(0,r.useMemo)(()=>{let e=w?-x:x,t=I&&Number.isFinite(j)?{set:(0,O.wrapPi)((I.setTrue??0)-j),drift:I.drift??0}:null,r=Number.isFinite(A)&&Number.isFinite(G)?{angle:G,speed:A}:null,n=(w?1:-1)*5.4,o=([e,t])=>[.5*e,(t+n)*.5];return{path:P({rudder:g,speed:e,seconds:20,current:t,wind:r}).map(o),noDrift:P({rudder:g,speed:e,seconds:20}).map(o)}},[g,x,w,j,I,A,G]);return(0,t.jsxs)(r.Suspense,{fallback:(0,t.jsx)(i.Html,{center:!0,children:"Loading..."}),children:[(0,t.jsx)(o.PerspectiveCamera,{makeDefault:!0,fov:50,near:1,far:1e3,position:[0,30,12]}),(0,t.jsx)(n.OrbitControls,{target:[0,-3,-2],enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2.4,minPolarAngle:0}),(0,t.jsx)(s.default,{fogNear:120,fogFar:400}),(0,t.jsxs)("group",{position:[0,-3,0],children:[(0,t.jsx)(u.default,{}),(0,t.jsx)(b.default,{scale:.5}),(0,t.jsx)(a.default,{position:[0,0,0],scale:[.5,.5,.5],ref:f,showSail:!1,onUpdateInfoPanel:e}),(0,t.jsx)(y,{points:R,width:1.95,color:h,glow:c.routeGlow}),(0,t.jsx)(T.Line,{points:W.map(([e,t])=>[e,.06,t]),color:c.compassDim,lineWidth:1.5,dashed:!0,dashSize:.6,gapSize:.5}),(0,t.jsx)(p.default,{outerRadius:5}),(0,t.jsx)(v,{outerRadius:5})]})]})}],35235)},27404,function(e){e.n(e.i(35235))},76247,37369,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(43216),o=e.i(83646),i=e.i(78461);let a={type:"bow",side:"starboard",pose:null,source:"virtual"},s=new Set,u=()=>a,l=e=>{a={...a,...e},s.forEach(e=>e())},d=e=>(s.add(e),()=>s.delete(e)),p=()=>(0,r.useSyncExternalStore)(d,u,u),c=(e,t,r=a.type,n=22)=>{l({type:r,pose:{x:e.x+Math.sin(t)*n,y:e.y+Math.cos(t)*n,heading:"stern"===r?t+Math.PI:t},source:"virtual"})};e.s(["BERTH_TYPES",0,["bow","stern","side","buoy"],"getBerth",0,u,"placeVirtualBerth",0,c,"setBerth",0,l,"useBerth",0,p],37369);let h={length:10.8,beam:3.9},f=h.length/2,m=h.beam/2,g=({size:e,position:r,color:n,opacity:o=1})=>(0,t.jsxs)("mesh",{position:r,children:[(0,t.jsx)("boxGeometry",{args:e}),(0,t.jsx)("meshLambertMaterial",{color:n,transparent:o<1,opacity:o})]}),v=({position:e,rotation:r=0,color:n,length:o=4})=>(0,t.jsxs)("group",{position:e,rotation:[0,r,0],children:[(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.07,o/2-.6],children:[(0,t.jsx)("planeGeometry",{args:[.7,o-1.2]}),(0,t.jsx)("meshBasicMaterial",{color:n,transparent:!0,opacity:.85,depthWrite:!1})]}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.07,-.6],children:[(0,t.jsx)("circleGeometry",{args:[1.2,3,Math.PI/2]}),(0,t.jsx)("meshBasicMaterial",{color:n,transparent:!0,opacity:.85,depthWrite:!1})]})]}),x=({type:e,side:o,colors:i})=>{let a,s=(0,r.useMemo)(()=>(()=>{let e=-f+3.5,t=[[-m,f],[m,f],[m,e]];for(let r=1;r<=8;r++){let n=r/8;t.push([m*(1-n)**1.6,e-(e+f)*Math.sin(n*Math.PI/2)])}for(let r=7;r>=0;r--){let n=r/8;t.push([-m*(1-n)**1.6,e-(e+f)*Math.sin(n*Math.PI/2)])}return t.push([-m,f]),t.map(([e,t])=>[e,.06,t])})(),[]),u="port"===o?-1:1;return(0,t.jsxs)("group",{children:[(0,t.jsx)(n.Line,{points:s,color:i.target,lineWidth:2.5,dashed:!0,dashSize:.8,gapSize:.5}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.04,.3],children:[(0,t.jsx)("planeGeometry",{args:[.9*h.beam,h.length-1.6]}),(0,t.jsx)("meshBasicMaterial",{color:i.target,transparent:!0,opacity:.12,depthWrite:!1})]}),("bow"===e||"stern"===e)&&(a="bow"===e?-1:1,(0,t.jsxs)("group",{children:[(0,t.jsx)(g,{size:[32,.35,2.2],position:[0,.17,a*(f+.45+1.1)],color:i.pontoon}),(0,t.jsx)(g,{size:[.8,.3,9],position:[m+.45+.4,.15,a*(f-4.5+.45)],color:i.pontoon}),(0,t.jsx)(g,{size:[.95*h.beam,1,.95*h.length],position:[-(h.beam+.9),.5,0],color:i.neighbour,opacity:.45}),(0,t.jsx)(v,{position:[0,0,-a*(f+7)],rotation:"bow"===e?0:Math.PI,color:i.target})]})),"side"===e&&(0,t.jsxs)("group",{children:[(0,t.jsx)(g,{size:[2.4,.35,26],position:[u*(m+.45+1.2),.17,0],color:i.pontoon}),(0,t.jsx)(v,{position:[-(2.5*u),0,f+6],rotation:.25*u,color:i.target})]}),"buoy"===e&&(0,t.jsxs)("group",{children:[(0,t.jsxs)("mesh",{position:[0,.5,-(f+2.5)],children:[(0,t.jsx)("sphereGeometry",{args:[.6,20,14]}),(0,t.jsx)("meshLambertMaterial",{color:i.buoy})]}),(0,t.jsx)(n.Line,{points:[[0,.3,-(f+2.5)],[0,.3,-f]],color:i.pontoon,lineWidth:2}),(0,t.jsx)(v,{position:[0,0,f+6],color:i.target})]})]})};e.s(["BOAT",0,h,"default",0,({scale:e=.5})=>{let{scene:n,accent:a}=(0,o.default)(),{heading:s,offset:l,hasFix:d,hasHeading:h}=(0,i.default)(),f=p();(0,r.useEffect)(()=>{d&&h&&!u().pose&&c(l,s)},[l,s,d,h]);let m=(0,r.useMemo)(()=>({target:a,pontoon:n.rigging,neighbour:n.vessel,buoy:n.target}),[n,a]);if(!f.pose)return null;let{x:g,y:v,heading:M}=f.pose;return(0,t.jsx)("group",{rotation:[0,s,0],children:(0,t.jsx)("group",{position:[(g-l.x)*e,0,-(v-l.y)*e],rotation:[0,-M,0],scale:[e,e,e],children:(0,t.jsx)(x,{type:f.type,side:f.side,colors:m})})})}],76247)},32189,(e,t,r)=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},65156,(e,t,r)=>{"use strict";var n=e.r(32189);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},57384,(e,t,r)=>{e.i(47167),t.exports=e.r(65156)()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,73064,e=>{"use strict";var t=e.i(43476),l=e.i(71645),a=e.i(88653),s=e.i(46932),n=e.i(85709),i=e.i(83402),r=e.i(49721),o=e.i(68757);let d=e=>null==e?null:(e/1e5).toFixed(1),c=e=>null==e?null:Math.round(100*e);var u=e.i(46991);let m=({label:e,value:l,unit:a,min:s=0,max:n=100,icon:i,warningThreshold:o,criticalThreshold:d,size:c=120,showValue:u=!0,reversed:m=!1})=>{let h=null==l||isNaN(l)?"N/A":l,x="N/A"!==h,p=x?Math.min(100,Math.max(0,(l-s)/(n-s)*100)):0,f=x&&void 0!==d&&(m?l<=d:l>=d),g=x&&void 0!==o&&(m?l<=o:l>=o);return(0,t.jsxs)("div",{className:"tesla-card tesla-hover flex flex-col items-center justify-center",children:[(0,t.jsxs)("div",{className:"relative",style:{width:c,height:c},children:[(0,t.jsxs)("svg",{style:{width:c,height:c},className:"transform -rotate-90",viewBox:"0 0 100 100",children:[(0,t.jsx)("circle",{cx:"50",cy:"50",r:"40",fill:"none",stroke:"var(--hud-border)",strokeWidth:"6"}),(0,t.jsx)("circle",{cx:"50",cy:"50",r:"40",fill:"none",stroke:x?f?"var(--color-oRed)":g?"var(--color-oYellow)":"var(--color-oGreen)":"var(--color-oGray)",strokeWidth:"6",strokeLinecap:"round",strokeDasharray:`${2*Math.PI*40}`,strokeDashoffset:`${x?2*Math.PI*40*(1-p/100):2*Math.PI*40}`,className:"transition-all duration-1000"})]}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[i&&(0,t.jsx)(r.FontAwesomeIcon,{icon:i,className:"text-hud-muted text-sm mb-1"}),u&&(0,t.jsx)("div",{className:`text-value font-semibold tracking-tight gliding-value ${x?"text-hud-main":"text-hud-muted"} ${f||!m&&p>=90?"animate-soft-pulse":""}`,children:h}),u&&x&&a&&(0,t.jsx)("div",{className:"text-caption font-semibold text-hud-secondary uppercase tracking-widest",children:a})]})]}),(0,t.jsx)("div",{className:"text-hud-muted text-caption font-semibold mt-1 text-center uppercase tracking-widest",children:e})]})},h=({label:e,value:l,unit:a,min:s=0,max:n=100,icon:i,warningThreshold:o,criticalThreshold:d,showMinMax:c=!1,reversed:u=!1})=>{let m=null==l||isNaN(l)?"N/A":`${l}${a?` ${a}`:""}`,h="N/A"!==m,x=h?Math.min(100,Math.max(0,(l-s)/(n-s)*100)):0,p=h&&void 0!==d&&(u?l<=d:l>=d),f=h&&void 0!==o&&(u?l<=o:l>=o);return(0,t.jsxs)("div",{className:"tesla-card tesla-hover",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center text-hud-muted text-caption font-semibold uppercase tracking-widest",children:[i&&(0,t.jsx)(r.FontAwesomeIcon,{icon:i,className:"mr-2 fa-fw opacity-50"}),e]}),(0,t.jsx)("div",{className:`font-semibold text-value gliding-value ${h?"text-hud-main":"text-hud-dim"} ${p||!u&&x>=90?"animate-soft-pulse":""}`,children:m})]}),(0,t.jsx)("div",{className:"relative w-full bg-hud-elevated rounded-full h-1.5 overflow-hidden",children:(0,t.jsx)("div",{className:`h-full rounded-full transition-all duration-1000 ${!h?"bg-hud-elevated":p?"bg-oRed":f?"bg-oYellow":"bg-oGreen"}`,style:{width:`${x}%`}})}),c&&(0,t.jsxs)("div",{className:"flex justify-between text-caption font-semibold text-hud-dim mt-2 uppercase tracking-tighter",children:[(0,t.jsx)("span",{children:s}),(0,t.jsx)("span",{children:n})]})]})},x=({label:e,value:l,unit:a,icon:s,warningThreshold:n,criticalThreshold:i,reversed:o=!1})=>{let d=null==l||"number"==typeof l&&Number.isNaN(l)?"N/A":l,c="N/A"!==d;return(0,t.jsxs)("div",{className:"tesla-card tesla-hover flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{className:"flex items-center min-w-0 text-hud-muted text-caption font-semibold uppercase tracking-widest leading-snug",children:[s&&(0,t.jsx)(r.FontAwesomeIcon,{icon:s,className:"mr-2 fa-fw opacity-50 shrink-0"}),(0,t.jsx)("span",{className:"min-w-0",children:e})]}),(0,t.jsx)("div",{className:`shrink-0 whitespace-nowrap font-semibold text-value gliding-value ${(()=>{if(!c)return"text-hud-dim";if(o){if(void 0!==i&&l<=i)return"text-oRed";if(void 0!==n&&l<=n)return"text-oYellow"}else{if(void 0!==i&&l>=i)return"text-oRed";if(void 0!==n&&l>=n)return"text-oYellow"}return"text-oGreen"})()} ${i&&(o?l<=i:l>=i)?"animate-soft-pulse":""}`,children:"N/A"!==d?`${d}${a?` ${a}`:""}`:"N/A"})]})},p=({label:e,value:l,unit:a,icon:s,max:n=100,warningThreshold:i,criticalThreshold:o,reversed:d=!1})=>{let c=null==l||isNaN(l)?"N/A":Math.round(l),u="N/A"!==c,m=u&&void 0!==o&&(d?l<=o:l>=o),h=u&&void 0!==i&&(d?l<=i:l>=i),x=u?Math.min(100,l/n*100):0;return(0,t.jsxs)("div",{className:"tesla-card text-center tesla-hover",children:[s&&(0,t.jsx)(r.FontAwesomeIcon,{icon:s,className:"text-lg text-hud-muted mb-2 opacity-50"}),(0,t.jsx)("div",{className:`text-hero font-medium mb-1 tracking-tight gliding-value ${!u?"text-hud-muted":m?"text-oRed":h?"text-oYellow":"text-oGreen"} ${m||!d&&x>=90?"animate-soft-pulse":""}`,children:c}),u&&a&&(0,t.jsx)("div",{className:"text-hud-secondary text-caption font-semibold uppercase tracking-widest mb-2",children:a}),(0,t.jsx)("div",{className:"text-hud-muted text-caption font-semibold uppercase tracking-widest mb-3",children:e}),(0,t.jsx)("div",{className:"w-full bg-hud-elevated rounded-full h-1 overflow-hidden shadow-inner",children:(0,t.jsx)("div",{className:`h-full rounded-full transition-all duration-1000 ${u?m?"bg-oRed":h?"bg-oYellow":"bg-oGreen":"bg-hud-elevated"}`,style:{width:`${x}%`}})})]})};e.i(85269);var f=e.i(22831);let g=({isOpen:e,onClose:a,onSave:s,currentEngineHours:n=null,lastRefillEngineHours:i=null,loading:d=!1})=>{let{t:c}=(0,f.useTranslation)(),[u,m]=(0,l.useState)({liters:"",cost:"",additive:!1,engineHours:"",hoursSinceLastRefill:""}),[h,x]=(0,l.useState)({});(0,l.useEffect)(()=>{if(e){let e=null!==n?Math.round(10*n)/10:"",t="";null!==n&&null!==i&&(t=Math.round((n-i)*10)/10),m({liters:"",cost:"",additive:!1,engineHours:e,hoursSinceLastRefill:t}),x({})}},[e,n,i]);let p=(e,t)=>{m(l=>({...l,[e]:t})),h[e]&&x(t=>({...t,[e]:null}))};return e?(0,t.jsx)("div",{className:"fixed inset-0 bg-hud-bg/60 backdrop-blur-sm flex items-center justify-center z-50",onClick:a,children:(0,t.jsxs)("div",{className:"bg-hud-bg backdrop-blur-xl rounded-3xl p-6 sm:p-8 max-w-md w-full mx-4 shadow-2xl border border-hud max-h-[90vh] overflow-y-auto",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-8",children:[(0,t.jsxs)("h3",{className:"text-value font-semibold text-hud-main flex items-center tracking-tight",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faGasPump,className:"mr-3 text-oYellow"}),c("fuelLog.logFuelRefill")]}),(0,t.jsx)("button",{onClick:a,className:"w-10 h-10 rounded-full flex items-center justify-center text-hud-secondary hover:text-hud-main hover:bg-hud-elevated transition-all duration-300",disabled:d,children:(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faTimes,size:"lg"})})]}),(0,t.jsxs)("form",{onSubmit:e=>{let t;if(e.preventDefault(),t={},(!u.liters||0>=parseFloat(u.liters))&&(t.liters=c("fuelLog.errorLiters")),""!==u.cost&&0>parseFloat(u.cost)&&(t.cost=c("fuelLog.errorCost")),(!u.engineHours||0>parseFloat(u.engineHours))&&(t.engineHours=c("fuelLog.errorEngineHours")),x(t),0!==Object.keys(t).length)return;let l=""!==u.cost?parseFloat(u.cost):null;s({liters:parseFloat(u.liters),cost:l,additive:u.additive,engineHours:parseFloat(u.engineHours),hoursSinceLastRefill:u.hoursSinceLastRefill?parseFloat(u.hoursSinceLastRefill):null,previousEngineHours:i})},className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption font-semibold uppercase tracking-widest text-hud-secondary mb-2 flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faGasPump,className:"mr-2 text-oBlue"}),c("fuelLog.litersAdded")]}),(0,t.jsx)("input",{type:"number",step:"0.1",min:"0",value:u.liters,onChange:e=>p("liters",e.target.value),className:`w-full bg-hud-elevated text-hud-main px-4 py-3 rounded-xl border ${h.liters?"border-oRed":"border-hud"} focus:border-oBlue focus:outline-none transition-all duration-300`,placeholder:"Ex: 50",disabled:d}),h.liters&&(0,t.jsx)("p",{className:"text-oRed text-caption mt-2 font-medium",children:h.liters})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption font-semibold uppercase tracking-widest text-hud-secondary mb-2 flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faEuroSign,className:"mr-2 text-oGreen"}),c("fuelLog.cost")," ",(0,t.jsxs)("span",{className:"text-hud-dim font-normal normal-case ml-1",children:["(",c("fuelLog.optional"),")"]})]}),(0,t.jsx)("input",{type:"number",step:"0.01",min:"0",value:u.cost,onChange:e=>p("cost",e.target.value),className:`w-full bg-hud-elevated text-hud-main px-4 py-3 rounded-xl border ${h.cost?"border-oRed":"border-hud"} focus:border-oBlue focus:outline-none transition-all duration-300`,placeholder:"Ex: 85.50",disabled:d}),h.cost&&(0,t.jsx)("p",{className:"text-oRed text-caption mt-2 font-medium",children:h.cost})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption font-semibold uppercase tracking-widest text-hud-secondary mb-2 flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faClock,className:"mr-2 text-oYellow"}),c("fuelLog.currentEngineHours")]}),(0,t.jsx)("input",{type:"number",step:"0.1",min:"0",value:u.engineHours,onChange:e=>(e=>{let t=parseFloat(e),l=u.hoursSinceLastRefill;if(!isNaN(t)&&null!==i){let e=Math.round((t-i)*10)/10;e>=0&&(l=e)}m(t=>({...t,engineHours:e,hoursSinceLastRefill:l})),h.engineHours&&x(e=>({...e,engineHours:null}))})(e.target.value),className:`w-full bg-hud-elevated text-hud-main px-4 py-3 rounded-xl border ${h.engineHours?"border-oRed":"border-hud"} focus:border-oBlue focus:outline-none transition-all duration-300`,placeholder:"Ex: 245.5",disabled:d}),h.engineHours&&(0,t.jsx)("p",{className:"text-oRed text-caption mt-2 font-medium",children:h.engineHours}),null!==n&&(0,t.jsxs)("p",{className:"text-hud-dim text-caption mt-2 font-medium",children:[c("fuelLog.signalkValue")," ",Math.round(10*n)/10," h"]}),null===n&&(0,t.jsx)("p",{className:"text-hud-dim text-caption mt-2 font-medium",children:c("fuelLog.noSignalkHours")})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption font-semibold uppercase tracking-widest text-hud-secondary mb-2 flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faClock,className:"mr-2 text-hud-dim"}),c("fuelLog.hoursSinceLastRefill")]}),(0,t.jsx)("input",{type:"number",step:"0.1",min:"0",value:u.hoursSinceLastRefill,onChange:e=>p("hoursSinceLastRefill",e.target.value),className:"w-full bg-hud-elevated text-hud-main px-4 py-3 rounded-xl border border-hud focus:border-oBlue focus:outline-none transition-all duration-300 disabled:opacity-60",placeholder:"Ex: 25.5",disabled:d||null!==i&&""!==u.hoursSinceLastRefill}),null!==i&&(0,t.jsxs)("p",{className:"text-hud-dim text-caption mt-2 font-medium",children:[c("fuelLog.lastRefillAt")," ",Math.round(10*i)/10," h"]})]}),(0,t.jsxs)("div",{className:"flex items-center p-1",children:[(0,t.jsx)("input",{type:"checkbox",id:"additive",checked:u.additive,onChange:e=>p("additive",e.target.checked),className:"w-5 h-5 rounded border-hud bg-hud-elevated text-oBlue focus:ring-oBlue transition-all duration-300",disabled:d}),(0,t.jsxs)("label",{htmlFor:"additive",className:"ml-3 text-label font-bold text-hud-secondary flex items-center cursor-pointer hover:text-hud-main transition-colors duration-300",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faFlask,className:"mr-2 text-oBlue opacity-70"}),c("fuelLog.additiveAdded")]})]}),(0,t.jsxs)("div",{className:"flex justify-end space-x-4 pt-6 border-t border-hud",children:[(0,t.jsx)("button",{type:"button",onClick:a,className:"px-6 py-3 bg-hud-elevated hover:bg-hud-bg text-hud-main font-bold rounded-xl transition-all duration-300",disabled:d,children:c("fuelLog.cancel")}),(0,t.jsx)("button",{type:"submit",className:"px-8 py-3 bg-oBlue hover:bg-oBlue/80 text-hud-main font-bold rounded-xl transition-all duration-300 flex items-center disabled:opacity-50 shadow-lg shadow-oBlue/20",disabled:d,children:d?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"animate-spin mr-3 font-normal",children:"⏳"}),c("fuelLog.saving")]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faSave,className:"mr-2"}),c("fuelLog.save")]})})]})]})]})}):null};var v=e.i(95430);let b=[{id:"oilChange",intervalHours:200,intervalMonths:12},{id:"oilFilter",intervalHours:200,intervalMonths:12},{id:"fuelFilter",intervalHours:400,intervalMonths:12},{id:"fuelPreFilter",intervalHours:400,intervalMonths:12},{id:"impeller",intervalHours:400,intervalMonths:12},{id:"driveBelt",intervalHours:500,intervalMonths:12},{id:"airFilter",intervalHours:500,intervalMonths:24},{id:"valveClearance",intervalHours:500,intervalMonths:null},{id:"coolant",intervalHours:1e3,intervalMonths:24},{id:"anodes",intervalHours:null,intervalMonths:12},{id:"saildriveOil",intervalHours:200,intervalMonths:12},{id:"saildriveDiaphragm",intervalHours:null,intervalMonths:84},{id:"engineMounts",intervalHours:null,intervalMonths:12}],j=[{id:"oilChange",intervalHours:100,intervalMonths:12},{id:"oilFilter",intervalHours:200,intervalMonths:12},{id:"fuelFilter",intervalHours:200,intervalMonths:12},{id:"fuelPreFilter",intervalHours:200,intervalMonths:12},{id:"impeller",intervalHours:500,intervalMonths:12},{id:"driveBelt",intervalHours:250,intervalMonths:12},{id:"airFilter",intervalHours:500,intervalMonths:24},{id:"valveClearance",intervalHours:500,intervalMonths:null},{id:"coolant",intervalHours:1e3,intervalMonths:24},{id:"anodes",intervalHours:null,intervalMonths:12},{id:"saildriveOil",intervalHours:250,intervalMonths:12},{id:"engineMounts",intervalHours:null,intervalMonths:12}],N={"volvo-d1-20":{name:"Volvo Penta D1-20",items:b},"volvo-d1-30":{name:"Volvo Penta D1-13/30",items:b},"volvo-d2-40":{name:"Volvo Penta D2-40/50",items:b},"yanmar-2ym15":{name:"Yanmar 2YM15",items:j},"yanmar-3ym30":{name:"Yanmar 3YM20/30",items:j},"generic-diesel":{name:"Generic diesel",items:[{id:"oilChange",intervalHours:150,intervalMonths:12},{id:"oilFilter",intervalHours:150,intervalMonths:12},{id:"fuelFilter",intervalHours:300,intervalMonths:12},{id:"fuelPreFilter",intervalHours:300,intervalMonths:12},{id:"impeller",intervalHours:400,intervalMonths:12},{id:"driveBelt",intervalHours:400,intervalMonths:12},{id:"coolant",intervalHours:1e3,intervalMonths:24},{id:"anodes",intervalHours:null,intervalMonths:12},{id:"engineMounts",intervalHours:null,intervalMonths:12}]}},w="volvo-d1-20",y="ocearo_maintenance",k={hours:525,date:"2026-06-15"},T={engineModel:w,lastDone:{...Object.fromEntries(["oilChange","oilFilter","fuelFilter","fuelPreFilter","impeller","driveBelt","airFilter","anodes","saildriveOil","engineMounts"].map(e=>[e,{...k}])),saildriveDiaphragm:{hours:null,date:"2023-07-03"}}},M={overdue:{dot:"bg-oRed",text:"text-oRed"},due:{dot:"bg-oYellow",text:"text-oYellow"},ok:{dot:"bg-oGreen",text:"text-oGreen"},unknown:{dot:"bg-hud-muted",text:"text-hud-muted"}},R=()=>new Date().toISOString().slice(0,10),F=({currentEngineHours:e})=>{let{t:a}=(0,f.useTranslation)(),[s,n]=(0,l.useState)(()=>(()=>{try{let e=localStorage.getItem(y);if(e)return JSON.parse(e)}catch(e){}return T})()),[i,d]=(0,l.useState)(null),[c,u]=(0,l.useState)(""),[m,h]=(0,l.useState)(R()),x=N[s.engineModel]||N[w],p=(0,l.useCallback)(e=>{n(t=>{let l=e(t);try{localStorage.setItem(y,JSON.stringify(l))}catch(e){}return l})},[]),g=()=>{let e=parseFloat(c);p(t=>({...t,lastDone:{...t.lastDone,[i]:{hours:Number.isFinite(e)?e:null,date:m||R()}}})),d(null)},b=(0,l.useMemo)(()=>x.items.map(t=>({item:t,lastDone:s.lastDone[t.id]||null,...((e,t,l)=>{if(!t||null==t.hours&&!t.date)return{status:"unknown",hoursLeft:null,daysLeft:null,dueHours:null,dueDate:null};let a=null,s=null;null!=e.intervalHours&&null!=t.hours&&null!=l&&(a=Math.round(((s=t.hours+e.intervalHours)-l)*10)/10);let n=null,i=null;if(null!=e.intervalMonths&&t.date){let l=new Date(t.date);l.setMonth(l.getMonth()+e.intervalMonths),i=l,n=Math.floor((l.getTime()-(0,v.vesselNow)().getTime())/864e5)}let r="ok";return null!=a&&a<0||null!=n&&n<0?r="overdue":(null!=a&&a<=25||null!=n&&n<=30)&&(r="due"),{status:r,hoursLeft:a,daysLeft:n,dueHours:s,dueDate:i}})(t,s.lastDone[t.id],e)})),[x,s.lastDone,e]),j=b.filter(e=>"overdue"===e.status).length,k=b.filter(e=>"due"===e.status).length;return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsxs)("h3",{className:"text-label font-semibold text-hud-main uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-oBlue mr-3 animate-soft-pulse"}),a("maintenance.title")]}),(0,t.jsx)("select",{value:s.engineModel,onChange:e=>{p(t=>({...t,engineModel:e.target.value}))},className:"bg-hud-elevated px-4 py-1.5 rounded-sm text-hud-main text-caption font-semibold uppercase border border-hud focus:outline-none tesla-hover transition-all duration-500 shadow-soft",children:Object.entries(N).map(([e,l])=>(0,t.jsx)("option",{value:e,className:"bg-leftPaneBg text-hud-main",children:l.name},e))})]}),(0,t.jsxs)("div",{className:"grid grid-cols-3 gap-3",children:[(0,t.jsxs)("div",{className:"tesla-card text-center ",children:[(0,t.jsx)("div",{className:"text-value font-semibold text-hud-main gliding-value",children:null!=e?e.toFixed(1):a("common.na")}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption font-semibold uppercase tracking-widest mt-1",children:a("motor.currentEngineHours")})]}),(0,t.jsxs)("div",{className:`tesla-card text-center ${j>0?"bg-oRed/10 border-oRed/30":" "}`,children:[(0,t.jsx)("div",{className:`text-value font-semibold gliding-value ${j>0?"text-oRed":"text-hud-main"}`,children:j}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption font-semibold uppercase tracking-widest mt-1",children:a("maintenance.overdue")})]}),(0,t.jsxs)("div",{className:`tesla-card text-center ${k>0?"bg-oYellow/10 border-oYellow/30":" "}`,children:[(0,t.jsx)("div",{className:`text-value font-semibold gliding-value ${k>0?"text-oYellow":"text-hud-main"}`,children:k}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption font-semibold uppercase tracking-widest mt-1",children:a("maintenance.dueSoon")})]})]}),(0,t.jsx)("div",{className:"space-y-2",children:b.map(({item:l,lastDone:n,status:x,hoursLeft:p,daysLeft:f,dueHours:v,dueDate:b})=>{let j=M[x],N=i===l.id;return(0,t.jsxs)("div",{className:"tesla-card tesla-hover",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center min-w-0",children:[(0,t.jsx)("span",{className:`w-2 h-2 rounded-full mr-3 flex-shrink-0 ${j.dot} ${"overdue"===x?"animate-soft-pulse":""}`}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-caption font-semibold text-hud-main uppercase tracking-widest truncate",children:a(`maintenance.items.${l.id}`)}),(0,t.jsx)("div",{className:"text-caption text-hud-muted font-semibold uppercase tracking-tight mt-0.5",children:[null!=l.intervalHours?`${l.intervalHours} h`:null,null!=l.intervalMonths?a("maintenance.everyMonths",{count:l.intervalMonths}):null].filter(Boolean).join(" / ")})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4 flex-shrink-0",children:[(0,t.jsx)("div",{className:"text-right",children:"unknown"===x?(0,t.jsx)("div",{className:"text-caption font-semibold text-hud-muted uppercase tracking-widest",children:a("maintenance.neverDone")}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:`text-caption font-semibold uppercase tracking-widest ${j.text}`,children:"overdue"===x?a("maintenance.overdueLabel"):[null!=p?`${p.toFixed(0)} h`:null,null!=f?a("maintenance.inDays",{count:f}):null].filter(Boolean).join(" · ")}),(0,t.jsx)("div",{className:"text-caption text-hud-muted font-semibold tracking-tight mt-0.5",children:[null!=v?`→ ${v.toFixed(0)} h`:null,b?`→ ${b.toLocaleDateString("fr-FR")}`:null].filter(Boolean).join(" · ")})]})}),(0,t.jsx)("button",{onClick:()=>{let t;return N?d(null):(t=s.lastDone[l.id],void(d(l.id),u(t?.hours!=null?String(t.hours):null!=e?e.toFixed(1):""),h(t?.date||R())))},className:"px-3 py-1.5 text-caption bg-hud-elevated text-hud-secondary rounded-sm font-semibold uppercase tracking-widest tesla-hover border border-hud transition-all duration-500",children:(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faWrench,className:"text-xs"})})]})]}),N&&(0,t.jsxs)("div",{className:"mt-3 pt-3 border-t border-hud flex flex-wrap items-end gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption text-hud-muted font-semibold uppercase tracking-widest mb-1",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faClock,className:"mr-1 text-xs"}),a("maintenance.doneAtHours")]}),(0,t.jsx)("input",{type:"number",step:"0.1",value:c,onChange:e=>u(e.target.value),className:"bg-hud-elevated px-3 py-1.5 rounded-sm text-hud-main text-caption font-semibold border border-hud focus:outline-none w-28"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("label",{className:"block text-caption text-hud-muted font-semibold uppercase tracking-widest mb-1",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faCalendarDays,className:"mr-1 text-xs"}),a("maintenance.doneOnDate")]}),(0,t.jsx)("input",{type:"date",value:m,onChange:e=>h(e.target.value),className:"bg-hud-elevated px-3 py-1.5 rounded-sm text-hud-main text-caption font-semibold border border-hud focus:outline-none"})]}),(0,t.jsxs)("button",{onClick:g,className:"bg-oGreen/80 hover:bg-oGreen text-black px-4 py-1.5 rounded-sm text-caption font-semibold uppercase tracking-widest transition-all duration-500",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faCheckCircle,className:"mr-2 text-xs"}),a("maintenance.markDone")]}),n&&(0,t.jsxs)("div",{className:"text-caption text-hud-muted font-semibold uppercase tracking-tight ml-auto",children:[a("maintenance.lastDone"),": ",null!=n.hours?`${n.hours} h`:"—"," · ",n.date?new Date(n.date).toLocaleDateString("fr-FR"):"—"]})]})]},l.id)})}),(0,t.jsxs)("div",{className:"text-caption text-hud-muted font-semibold uppercase tracking-tight flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faExclamationTriangle,className:"mr-2 text-xs opacity-50"}),a("maintenance.disclaimer")]})]})};var C=e.i(66799),L=e.i(48390);let H=["chargeIndicator","checkEngine","commError","eGRSystem","emergencyStopMode","highBoostPressure","lowCoolantLevel","lowFuelPressure","lowOilLevel","lowOilPressure","lowSystemVoltage","maintenanceNeeded","neutralStartProtect","overTemperature","powerReduction","preheatIndicator","revLimitExceeded","shuttingDown","subOrSecondaryThrottle","throttlePositionSensor","warningLevel1","warningLevel2","waterFlow","waterInFuel","transmission.overTemperature","transmission.lowOilPressure","temperature","exhaustTemperature"],S=["notifications.environment.inside.engineRoom.temperature"],$=["alarm","emergency"],A=({notification:e})=>{let{t:a}=(0,f.useTranslation)(),[s,n]=(0,l.useState)(null),i=e.status;if(!e.id||!i)return null;let r=async t=>{n(t);try{await C.default.notificationAction(e.id,t)}catch(e){console.warn(`Notification ${t} failed:`,e?.message||e)}finally{n(null)}},o="px-3 py-1.5 rounded-sm border border-hud bg-hud-elevated text-hud-main tesla-hover disabled:opacity-40 transition-all";return(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-3 normal-case tracking-normal",children:[i.silenced?(0,t.jsx)("span",{className:"text-hud-muted",children:a("motor.alarmSilenced")}):i.canSilence&&(0,t.jsx)("button",{type:"button",className:o,disabled:null!==s,onClick:()=>r("silence"),children:a("motor.silenceAlarm")}),i.acknowledged?(0,t.jsx)("span",{className:"text-hud-muted",children:a("motor.alarmAcknowledged")}):i.canAcknowledge&&(0,t.jsx)("button",{type:"button",className:o,disabled:null!==s,onClick:()=>r("acknowledge"),children:a("motor.acknowledgeAlarm")})]})},P=["alert","warn","warning","caution"];e.s(["default",0,()=>{let{t:e}=(0,f.useTranslation)(),v=i.default.get("debugMode"),[b,j]=(0,l.useState)("0"),[N,w]=(0,l.useState)("engine"),[y,k]=(0,l.useState)([]),[T,M]=(0,l.useState)(!1),R=(0,l.useMemo)(()=>{let e=[],t=["revolutions","runTime","coolantTemperature","temperature","exhaustTemperature","coolantPressure","boostPressure","oilPressure","oilTemperature","fuel.rate","fuel.pressure","load","torque","intakeManifoldTemperature","tilt","state","transmission.gear","transmission.oilPressure","transmission.oilTemperature"];return["0","1","port","main","starboard"].forEach(l=>{t.forEach(t=>{e.push(`propulsion.${l}.${t}`)}),H.forEach(t=>{e.push(`notifications.propulsion.${l}.${t}`)})}),e.push("environment.inside.engineRoom.temperature",...S),e.push("electrical.batteries.0.voltage","electrical.batteries.0.current","electrical.batteries.1.voltage","electrical.batteries.1.current","electrical.alternators.0.voltage","electrical.alternators.1.voltage","electrical.alternators.0.current","electrical.alternators.1.current","tanks.fuel.0.currentLevel","tanks.fuel.0.capacity"),e},[]),C=(0,n.useSignalKPaths)(R),E=(0,n.useSignalKPath)("navigation.position"),B=(0,l.useCallback)(e=>C[e]??null,[C]),I=(0,l.useCallback)(()=>{let t=[];for(let l=0;l<=1;l++){let a=B(`propulsion.${l}.revolutions`),s=B(`propulsion.${l}.runTime`);0===l&&null===a&&null===s?(a=B("propulsion.port.revolutions")??B("propulsion.main.revolutions"),s=B("propulsion.port.runTime")??B("propulsion.main.runTime")):1===l&&null===a&&null===s&&(a=B("propulsion.starboard.revolutions"),s=B("propulsion.starboard.runTime")),(null!==a||null!==s||v)&&t.push({id:l.toString(),name:0===l?e("motor.portMainEngine"):e("motor.starboardEngine"),hasData:null!==a||null!==s})}return t.length>0?t:[{id:"0",name:e("motor.mainEngine"),hasData:!1}]},[B,v,e]);(0,l.useEffect)(()=>{k(I())},[I]);let D=(0,l.useCallback)(e=>{let t=B(`propulsion.${b}.${e}`);return null===t&&"0"===b?t=B(`propulsion.port.${e}`)??B(`propulsion.main.${e}`):null===t&&"1"===b&&(t=B(`propulsion.starboard.${e}`)),t},[b,B]),G=(0,l.useMemo)(()=>{var e,t;let l=D("coolantTemperature")??D("temperature")??B("propulsion.port.temperature"),a=D("exhaustTemperature")??B("propulsion.main.exhaustTemperature");return{rpm:null==(e=D("revolutions"))?null:60*e,runTime:(e=>{if(null==e)return null;let t=(e/3600).toFixed(1);return`${t} h`})(D("runTime")),coolantTemp:u.kelvinToCelsius(l),coolantPressure:d(D("coolantPressure")),boostPressure:d(D("boostPressure")),oilPressure:d(D("oilPressure")),oilTemp:u.kelvinToCelsius(D("oilTemperature")),fuelRate:null==(t=D("fuel.rate"))?null:Math.round(1e3*t*3600),fuelPressure:d(D("fuel.pressure")),load:c(D("load")),torque:c(D("torque")),exhaustTemp:u.kelvinToCelsius(a),engineRoomTemp:u.kelvinToCelsius(B("environment.inside.engineRoom.temperature")),intakeTemp:u.kelvinToCelsius(D("intakeManifoldTemperature")),tilt:u.radiansToDegrees(D("tilt")),state:D("state"),gear:D("transmission.gear"),transOilPressure:d(D("transmission.oilPressure")),transOilTemp:u.kelvinToCelsius(D("transmission.oilTemperature")),batteryVoltage:B("electrical.batteries.0.voltage"),batteryCurrent:B("electrical.batteries.0.current"),alternatorVoltage:B(`electrical.alternators.${b}.voltage`)??B("propulsion.port.alternatorVoltage"),alternatorCurrent:B(`electrical.alternators.${b}.current`)??B("propulsion.port.alternatorCurrent"),fuelLevel:c(B("tanks.fuel.0.currentLevel")),fuelCapacity:Number.isFinite(B("tanks.fuel.0.capacity"))?1e3*B("tanks.fuel.0.capacity"):null}},[b,D,B]),O=(0,l.useMemo)(()=>{let e=[];return H.forEach(t=>{let l=B(`notifications.propulsion.${b}.${t}`);l||"0"!==b?l||"1"!==b||(l=B(`notifications.propulsion.starboard.${t}`)):l=B(`notifications.propulsion.port.${t}`)??B(`notifications.propulsion.main.${t}`),l&&"object"==typeof l&&e.push({type:t,...l})}),S.forEach(t=>{let l=B(t);l&&"object"==typeof l&&e.push({type:"engineRoomTemperature",...l})}),e},[b,B]),Y=(0,l.useMemo)(()=>O.filter(e=>e.state&&"normal"!==e.state&&"nominal"!==e.state),[O]),V=Y.some(e=>$.includes(e.state)),W=Y.some(e=>P.includes(e.state)),z=B("electrical.batteries.1.current"),U="number"==typeof z?Math.round(10*z)/10:z,_=D("runTime"),q=null!==_?_/3600:null;(0,l.useEffect)(()=>{if(null!==q)try{localStorage.setItem("ocearo_lastEngineHours",String(q))}catch(e){}},[q]);let[K,Z]=(0,l.useState)(!1),[J,Q]=(0,l.useState)([]),[X,ee]=(0,l.useState)(null),[et,el]=(0,l.useState)(!1),[ea,es]=(0,l.useState)(null),en=(0,l.useMemo)(()=>{if(null!==q)return q;try{let e=parseFloat(localStorage.getItem("ocearo_lastEngineHours"));if(Number.isFinite(e))return e}catch(e){}return X?.lastRefill?.engineHours??null},[q,X]),ei=(0,l.useCallback)(async()=>{el(!0),es(null);try{let e=await (0,L.fetchFuelLogEntries)();Q(e);let t=(0,L.calculateFuelStats)(e,G.fuelCapacity);ee(t)}catch(e){es((0,L.handleOcearoCoreError)(e,"Fuel log fetch")),Q([]),ee(null)}finally{el(!1)}},[G.fuelCapacity]);(0,l.useEffect)(()=>{"fuel"===N&&ei()},[N,ei]);let er=(0,l.useCallback)(async e=>{el(!0),es(null);try{await (0,L.addFuelLogEntry)(e,E),Z(!1),await ei()}catch(e){es((0,L.handleOcearoCoreError)(e,"Fuel log save"))}finally{el(!1)}},[E,ei]),eo=X?.lastRefill?.engineHours||null,ed=(0,l.useMemo)(()=>(0,L.estimateTankLevel)(J,en,G.fuelCapacity,null!==G.fuelLevel?G.fuelLevel/100:null),[J,en,G.fuelCapacity,G.fuelLevel]);return(0,t.jsxs)("div",{className:"flex flex-col h-full bg-rightPaneBg overflow-hidden",children:[(0,t.jsx)("div",{className:"flex border-b border-hud bg-hud-bg overflow-x-auto scrollbar-hide",children:[{id:"engine",label:e("motor.engine"),icon:o.faCar},{id:"maintenance",label:e("motor.maintenance"),icon:o.faWrench},{id:"electrical",label:e("motor.electrical"),icon:o.faBolt},{id:"fuel",label:e("motor.fuel"),icon:o.faGasPump},{id:"warnings",label:e("motor.warnings"),icon:o.faExclamationTriangle}].map(e=>(0,t.jsxs)("button",{onClick:()=>w(e.id),className:`flex-1 py-3 px-3 whitespace-nowrap text-caption font-semibold uppercase flex items-center justify-center transition-all duration-500 ${N===e.id?"text-oGreen border-b-2 border-oGreen bg-hud-bg":"text-hud-secondary hover:text-hud-main tesla-hover"}`,children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:e.icon,className:"mr-2"}),e.label,"warnings"===e.id&&(V||W)&&(0,t.jsx)("span",{className:`ml-2 w-2 h-2 rounded-full animate-soft-pulse ${V?"bg-oRed":"bg-oYellow"}`})]},e.id))}),Y.length>0&&"warnings"!==N&&(0,t.jsxs)("button",{onClick:()=>w("warnings"),className:`w-full text-left px-4 py-2 text-caption font-semibold uppercase tracking-widest flex items-center border-b ${V?"bg-oRed/15 border-oRed/30 text-oRed animate-soft-pulse":"bg-oYellow/15 border-oYellow/30 text-oYellow"}`,children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faExclamationTriangle,className:"mr-3"}),(0,t.jsx)("span",{className:"truncate",children:Y.map(e=>e.message||e.type.replace(/([A-Z])/g," $1").trim()).join(" — ")})]}),(0,t.jsx)("div",{className:"flex-1 min-h-0 overflow-auto scrollbar-hide",children:(0,t.jsx)(a.AnimatePresence,{mode:"wait",children:(0,t.jsxs)(s.motion.div,{initial:{opacity:0,x:10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:{duration:.4,ease:"easeOut"},className:"p-3",children:["engine"===N&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsxs)("h2",{className:"text-label font-semibold text-hud-main uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-oBlue mr-3 animate-soft-pulse"}),e("motor.propulsionSystems")]}),(0,t.jsx)("select",{value:b,onChange:e=>j(e.target.value),className:"bg-hud-elevated px-4 py-1.5 rounded-sm text-hud-main text-caption font-semibold uppercase border border-hud focus:outline-none tesla-hover transition-all duration-500 shadow-soft",children:y.map(e=>(0,t.jsx)("option",{value:e.id,className:"bg-leftPaneBg text-hud-main",children:e.name},e.id))})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3",children:[(0,t.jsx)(p,{label:e("motor.propulsionSpeed"),value:G.rpm,unit:"RPM",icon:o.faTachometerAlt,max:4e3,warningThreshold:3200,criticalThreshold:3600}),(0,t.jsxs)("div",{className:"tesla-card text-center tesla-hover flex flex-col justify-center ",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faClock,className:"text-lg text-hud-dim mb-2 opacity-50"}),(0,t.jsx)("div",{className:"text-value font-semibold text-hud-main leading-none gliding-value tracking-tight",children:G.runTime||e("common.na")}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption font-semibold uppercase mt-2 tracking-[0.2em]",children:e("motor.serviceHours")})]}),(0,t.jsx)(m,{label:e("motor.load"),value:G.load,unit:"%",min:0,max:100,icon:o.faChartLine,warningThreshold:70,criticalThreshold:85,size:100}),(0,t.jsx)(m,{label:e("motor.torque"),value:G.torque,unit:"%",min:0,max:100,icon:o.faRotate,warningThreshold:75,criticalThreshold:90,size:100})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-1 uppercase tracking-widest flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faTemperatureHalf,className:"mr-2 text-oYellow text-xs"}),e("motor.temperatureSection")]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,t.jsx)(m,{label:e("motor.coolant"),value:G.coolantTemp,unit:"°C",min:0,max:120,icon:o.faSnowflake,warningThreshold:95,criticalThreshold:100,size:90}),(0,t.jsx)(m,{label:e("motor.oil"),value:G.oilTemp,unit:"°C",min:0,max:150,icon:o.faOilCan,warningThreshold:110,criticalThreshold:130,size:90}),(0,t.jsx)(m,{label:e("motor.engineRoom"),value:G.engineRoomTemp,unit:"°C",min:0,max:120,icon:o.faFire,warningThreshold:55,criticalThreshold:70,size:90}),(0,t.jsx)(m,{label:e("motor.intake"),value:G.intakeTemp,unit:"°C",min:0,max:100,icon:o.faArrowDown,warningThreshold:60,criticalThreshold:80,size:90})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-1 uppercase tracking-widest flex items-center",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faGaugeHigh,className:"mr-2 text-oBlue text-xs"}),e("motor.pressures")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(h,{label:e("motor.oil"),value:G.oilPressure,unit:"bar",min:0,max:6,icon:o.faOilCan,warningThreshold:1.5,criticalThreshold:1,reversed:!0,showMinMax:!0}),(0,t.jsx)(h,{label:e("motor.coolant"),value:G.coolantPressure,unit:"bar",min:0,max:3,icon:o.faWater,showMinMax:!0}),(0,t.jsx)(h,{label:e("motor.boost"),value:G.boostPressure,unit:"bar",min:0,max:2.5,icon:o.faArrowUp,showMinMax:!0}),(0,t.jsx)(h,{label:e("motor.fuel"),value:G.fuelPressure,unit:"bar",min:0,max:5,icon:o.faGasPump,warningThreshold:2.5,criticalThreshold:2,reversed:!0,showMinMax:!0})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[(0,t.jsx)(x,{label:e("motor.state"),value:G.state||e("motor.unknown"),icon:o.faCar}),(0,t.jsx)(x,{label:e("motor.alternatorOutput"),value:G.alternatorVoltage?.toFixed?.(1)??G.alternatorVoltage,unit:"V",icon:o.faBolt}),(0,t.jsx)(x,{label:e("motor.tilt"),value:G.tilt,unit:"°",icon:o.faRuler}),(0,t.jsx)(x,{label:e("motor.fuelRate"),value:G.fuelRate,unit:"L/h",icon:o.faGasPump}),(0,t.jsx)(x,{label:e("motor.transmissionGear"),value:((e,t)=>{if(null==e)return null;if("string"==typeof e){let l=e.trim().toLowerCase();return l.startsWith("forw")?t("motor.forward"):l.startsWith("neut")?t("motor.neutral"):l.startsWith("rev")?t("motor.reverse"):e}return -1===e?t("motor.reverse"):0===e?t("motor.neutral"):e>1?`${t("motor.forward")} ${e}`:t("motor.forward")})(G.gear,e),icon:o.faCogs}),(0,t.jsx)(x,{label:e("motor.transOilPressure"),value:G.transOilPressure,unit:"bar",icon:o.faOilCan}),(0,t.jsx)(x,{label:e("motor.transOilTemp"),value:G.transOilTemp,unit:"°C",icon:o.faTemperatureHalf})]})]}),"maintenance"===N&&(0,t.jsx)(F,{currentEngineHours:en}),"electrical"===N&&(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-2 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oBlue mr-3"}),e("motor.energyDistribution")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h4",{className:"text-caption font-semibold text-hud-muted uppercase tracking-widest px-1",children:e("motor.ignitionBank")}),(0,t.jsx)(h,{label:e("motor.voltageNode"),value:G.batteryVoltage,unit:"V",min:10,max:15,icon:o.faBatteryFull,warningThreshold:11.8,criticalThreshold:11.5,reversed:!0,showMinMax:!0}),(0,t.jsx)(h,{label:e("motor.amperageLoad"),value:G.batteryCurrent,unit:"A",min:-50,max:50,icon:o.faBolt,showMinMax:!0})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h4",{className:"text-caption font-semibold text-hud-muted uppercase tracking-widest px-1",children:e("motor.serviceBank")}),(0,t.jsx)(h,{label:e("motor.voltageNode"),value:B("electrical.batteries.1.voltage"),unit:"V",min:10,max:15,icon:o.faBatteryFull,warningThreshold:11.8,criticalThreshold:11.5,reversed:!0,showMinMax:!0}),(0,t.jsx)(h,{label:e("motor.amperageLoad"),value:U,unit:"A",min:-50,max:50,icon:o.faBolt,showMinMax:!0})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-2 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oYellow mr-3"}),e("motor.chargingSystems")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(m,{label:e("motor.alternatorOutput"),value:G.alternatorVoltage,unit:"V",min:10,max:16,icon:o.faBolt,warningThreshold:15,criticalThreshold:15.5,size:120}),(0,t.jsx)(m,{label:e("motor.chargeIntensity"),value:G.alternatorCurrent,unit:"A",min:0,max:100,icon:o.faBolt,size:120})]})]})]}),"fuel"===N&&(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsxs)("h3",{className:"text-label font-semibold text-hud-main uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-oYellow mr-3 animate-soft-pulse"}),e("motor.resourceManagement")]}),(0,t.jsxs)("button",{onClick:()=>Z(!0),className:"bg-oBlue hover:bg-oBlue/80 text-hud-main px-4 py-1.5 rounded-sm text-caption font-semibold uppercase tracking-widest transition-all duration-500 flex items-center shadow-lg shadow-oBlue/20",disabled:et,children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faPlus,className:"mr-2 text-xs"}),e("motor.registerRefill")]})]}),ea&&(0,t.jsxs)("div",{className:"tesla-card bg-oRed/10 border-oRed/20 text-oRed text-caption font-semibold uppercase tracking-widest animate-soft-pulse",children:[e("motor.nodeError")," ",ea]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[(0,t.jsx)(m,{label:e("motor.consumptionRate"),value:G.fuelRate,unit:"L/h",min:0,max:50,icon:o.faGasPump,size:100}),(0,t.jsx)(m,{label:e("motor.injectionPressure"),value:G.fuelPressure,unit:"bar",min:0,max:5,icon:o.faGaugeHigh,warningThreshold:2.5,criticalThreshold:2,reversed:!0,size:100}),(0,t.jsx)(m,{label:e("motor.primaryReservoir"),value:G.fuelLevel,unit:"%",min:0,max:100,icon:o.faFlask,warningThreshold:30,criticalThreshold:15,reversed:!0,size:100})]}),(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-1 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oBlue mr-3"}),e("motor.telemetryDetails")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(h,{label:e("motor.levelPercentage"),value:G.fuelLevel,unit:"%",min:0,max:100,icon:o.faFlask,warningThreshold:30,criticalThreshold:15,reversed:!0,showMinMax:!0}),(0,t.jsx)(x,{label:e("motor.totalCapacity"),value:G.fuelCapacity?.toFixed(0),unit:"L",icon:o.faFlask}),(0,t.jsx)(x,{label:e("motor.currentEngineHours"),value:en?.toFixed(1),unit:"h",icon:o.faClock})]}),null!==G.fuelLevel&&null!==G.fuelCapacity&&(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,t.jsx)(x,{label:e("motor.currentVolume"),value:(G.fuelLevel/100*G.fuelCapacity).toFixed(0),unit:"L",icon:o.faFlask}),(0,t.jsx)(x,{label:e("motor.enduranceEst"),value:G.fuelRate>0&&null!==G.fuelLevel&&null!==G.fuelCapacity?(G.fuelLevel/100*G.fuelCapacity/G.fuelRate).toFixed(1):"N/A",unit:G.fuelRate>0?"h":"",icon:o.faClock})]})]}),ed&&(0,t.jsxs)("div",{className:"tesla-card ",children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-3 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oGreen mr-3"}),e("motor.predictiveAnalysis")]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[null!==ed.estimatedLiters&&(0,t.jsx)(x,{label:e("motor.estimatedVolume"),value:null!==ed.estimatedLitersWorst&&ed.estimatedLitersWorst!==ed.estimatedLiters?`${ed.estimatedLitersWorst.toFixed(0)}–${ed.estimatedLiters.toFixed(0)}`:ed.estimatedLiters,unit:"L",icon:o.faGasPump}),null!==ed.estimatedPercent&&(0,t.jsx)(h,{label:e("motor.computedLevel"),value:ed.estimatedPercentWorst??ed.estimatedPercent,unit:"%",min:0,max:100,icon:o.faFlask,warningThreshold:30,criticalThreshold:15,reversed:!0}),null!==ed.hoursRemaining&&(0,t.jsx)(x,{label:e("motor.timeToExhaustion"),value:null!==ed.hoursRemainingWorst&&ed.hoursRemainingWorst!==ed.hoursRemaining?`${ed.hoursRemainingWorst.toFixed(0)}–${ed.hoursRemaining.toFixed(0)}`:ed.hoursRemaining,unit:"h",icon:o.faClock,warningThreshold:10,criticalThreshold:5,reversed:!0})]})]}),J.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-hud-main mb-1 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-hud-muted mr-3"}),e("motor.logHistory")]}),(0,t.jsx)("div",{className:"tesla-card overflow-x-auto transition-all duration-500 ",children:(0,t.jsxs)("table",{className:"w-full text-caption font-semibold uppercase tracking-widest",children:[(0,t.jsx)("thead",{className:"bg-hud-elevated",children:(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.meridianDate")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.liters")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.refillCost")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.hmr")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.avgConsumption")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-left font-black",children:e("motor.hoursSinceRefill")}),(0,t.jsx)("th",{className:"text-hud-muted p-4 text-center font-black",children:e("motor.additive")})]})}),(0,t.jsx)("tbody",{className:"divide-y divide-hud",children:[...J].reverse().map((e,l)=>{let a=e.fuel||{},s=a.liters&&a.hoursSinceLastRefill&&a.hoursSinceLastRefill>0?Math.round(a.liters/a.hoursSinceLastRefill*10)/10:null,n=a.hoursSinceLastRefill&&a.hoursSinceLastRefill>0?Math.round(10*a.hoursSinceLastRefill)/10:null;return(0,t.jsxs)("tr",{className:"text-hud-main tesla-hover group",children:[(0,t.jsx)("td",{className:"p-4 opacity-60 group-hover:opacity-100 transition-opacity",children:new Date(e.datetime).toLocaleDateString("fr-FR",{day:"2-digit",month:"2-digit",year:"numeric"})}),(0,t.jsxs)("td",{className:"p-4 gliding-value text-oBlue",children:[a.liters," L"]}),(0,t.jsx)("td",{className:"p-4 gliding-value",children:null!=a.cost?`${a.cost} €`:"—"}),(0,t.jsxs)("td",{className:"p-4 gliding-value opacity-60",children:[a.engineHoursAtRefill," h"]}),(0,t.jsx)("td",{className:"p-4 gliding-value text-oYellow",children:null!=s?`${s} L/h`:"—"}),(0,t.jsx)("td",{className:"p-4 gliding-value text-oGreen",children:null!=n?`${n} h`:"—"}),(0,t.jsx)("td",{className:"p-4 text-center",children:a.additive?(0,t.jsx)("span",{className:"text-oBlue animate-soft-pulse",children:(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faFlask,className:"text-xs"})}):(0,t.jsx)("span",{className:"text-hud-dim font-black",children:"—"})})]},e.datetime||l)})})]})})]})]}),"warnings"===N&&(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"tesla-card ",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,t.jsxs)("h3",{className:"text-label font-semibold text-hud-main uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-oRed mr-3 animate-soft-pulse"}),e("motor.warningsSummary")]}),(0,t.jsx)("button",{onClick:()=>M(!T),className:"px-4 py-1.5 text-caption bg-hud-elevated text-hud-secondary rounded-sm font-semibold uppercase tracking-widest tesla-hover border border-hud transition-all duration-500 shadow-soft",children:T?e("motor.showLess"):e("motor.showAll")})]}),0===Y.length?(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"text-center text-hud-secondary py-8 tesla-card ",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faCheckCircle,className:"text-4xl mb-4 text-oGreen/40 animate-soft-pulse"}),(0,t.jsx)("h4",{className:"text-label font-semibold text-hud-main uppercase tracking-[0.2em]",children:e("motor.allSystemsNominal")}),(0,t.jsx)("p",{className:"text-caption font-semibold mt-2 uppercase text-hud-muted tracking-widest opacity-60",children:e("motor.noActiveWarnings")})]}),T&&O.length>0&&(0,t.jsxs)("div",{className:"tesla-card bg-oGreen/5 border-oGreen/10 ",children:[(0,t.jsxs)("h4",{className:"text-caption font-semibold text-oGreen mb-3 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oGreen mr-3"}),e("motor.healthyTelemetryNodes")," (",O.length,")"]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3 text-caption font-semibold uppercase tracking-tight",children:O.map((e,l)=>(0,t.jsxs)("div",{className:"text-hud-secondary flex items-center bg-hud-elevated p-3 rounded-sm tesla-hover border border-hud",children:[(0,t.jsx)(r.FontAwesomeIcon,{icon:o.faCheckCircle,className:"text-oGreen mr-3 text-xs opacity-40"}),(0,t.jsx)("span",{className:"truncate opacity-60",children:e.type.replace(/([A-Z])/g," $1").trim()})]},l))})]})]}):(0,t.jsxs)("div",{className:"space-y-8",children:[V&&(0,t.jsxs)("div",{className:"bg-oRed/5 border border-oRed/20 p-6 rounded-sm shadow-soft animate-soft-pulse",children:[(0,t.jsxs)("h4",{className:"text-caption font-semibold text-oRed mb-6 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oRed mr-3"}),e("motor.criticalNodeAlarms")]}),(0,t.jsx)("div",{className:"space-y-4",children:O.filter(e=>$.includes(e.state)).map((l,a)=>(0,t.jsxs)("div",{className:"text-hud-main text-caption font-semibold uppercase tracking-widest bg-oRed/10 p-4 rounded-sm tesla-hover border border-oRed/20",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center",children:[(0,t.jsx)("span",{className:"text-caption",children:l.type.replace(/([A-Z])/g," $1").trim()}),(0,t.jsx)("span",{className:"text-oRed text-caption font-semibold tracking-tighter",children:e("motor.alertLevel3")})]}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption mt-3 normal-case font-semibold tracking-normal opacity-80",children:l.message}),(0,t.jsx)(A,{notification:l})]},a))})]}),W&&(0,t.jsxs)("div",{className:"bg-oYellow/5 border border-oYellow/20 p-6 rounded-sm shadow-soft",children:[(0,t.jsxs)("h4",{className:"text-caption font-semibold text-oYellow mb-6 uppercase tracking-[0.2em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oYellow mr-3"}),e("motor.systemAnomalies")]}),(0,t.jsx)("div",{className:"space-y-4",children:O.filter(e=>P.includes(e.state)).map((l,a)=>(0,t.jsxs)("div",{className:"text-hud-main text-caption font-semibold uppercase tracking-widest bg-oYellow/10 p-4 rounded-sm tesla-hover border border-oYellow/20",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center",children:[(0,t.jsx)("span",{className:"text-caption",children:l.type.replace(/([A-Z])/g," $1").trim()}),(0,t.jsx)("span",{className:"text-oYellow text-caption font-semibold tracking-tighter",children:e("motor.warnLevel2")})]}),(0,t.jsx)("div",{className:"text-hud-secondary text-caption mt-3 normal-case font-semibold tracking-normal opacity-80",children:l.message}),(0,t.jsx)(A,{notification:l})]},a))})]})]})]}),v&&(0,t.jsxs)("div",{className:"tesla-card ",children:[(0,t.jsxs)("h3",{className:"text-caption font-semibold text-oBlue mb-6 uppercase tracking-[0.3em] flex items-center",children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bg-oBlue mr-3"}),e("motor.internalDebugTelemetry")]}),(0,t.jsx)("div",{className:"space-y-4 text-caption font-semibold font-mono text-hud-secondary uppercase tracking-widest",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-x-8 gap-y-2",children:[(0,t.jsx)("span",{className:"text-hud-muted",children:"PATH.REVOLUTIONS:"}),(0,t.jsxs)("span",{className:"text-oGreen opacity-80",children:["propulsion.",b,".revs"]}),(0,t.jsx)("span",{className:"text-hud-muted",children:"VALUE.REVOLUTIONS:"}),(0,t.jsx)("span",{className:"text-hud-main gliding-value",children:B(`propulsion.${b}.revolutions`)??"NULL"}),(0,t.jsx)("div",{className:"col-span-2 my-4 border-t border-hud"}),(0,t.jsx)("span",{className:"text-hud-muted",children:"PATH.TEMPERATURE:"}),(0,t.jsxs)("span",{className:"text-oGreen opacity-80",children:["propulsion.",b,".temp"]}),(0,t.jsx)("span",{className:"text-hud-muted",children:"VALUE.TEMPERATURE:"}),(0,t.jsx)("span",{className:"text-hud-main gliding-value",children:B(`propulsion.${b}.coolantTemperature`)??"NULL"})]})})]})]})]},N)})}),(0,t.jsx)(g,{isOpen:K,onClose:()=>Z(!1),onSave:er,currentEngineHours:en,lastRefillEngineHours:eo,loading:et})]})}],73064)},8161,function(e){e.n(e.i(73064))}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,9229,e=>{"use strict";var t=e.i(43476),i=e.i(11426),l=e.i(71645),n=e.i(85709);e.i(85269);var s=e.i(22831),a=e.i(95430);let o={BACKGROUND:"bg-oGreen",TEXT:"text-oGreen"},r={BACKGROUND:"bg-oYellow",TEXT:"text-oYellow"};e.s(["default",0,()=>{let{t:e}=(0,s.useTranslation)(),[u,c]=(0,l.useState)(240),m=(0,l.useMemo)(()=>["environment.tide.heightNow","environment.tide.heightHigh","environment.tide.heightLow","environment.tide.timeLow","environment.tide.timeHigh","environment.tide.coeffNow"],[]),d=(0,n.useSignalKPaths)(m),{tideData:h}=(0,i.useTide)(),g=(0,l.useCallback)(e=>{if(!e)return null;if("string"==typeof e&&(e.includes("T")||e.includes("-"))){let t=new Date(e);return isNaN(t.getTime())?null:t}if("string"==typeof e){let t=e.split(":").map(Number);if(t.length<2)return null;let i=(0,a.vesselNow)();return i.setHours(t[0],t[1],0,0),i}return null},[]),p=(0,l.useCallback)(e=>{if(!e)return null;if("string"==typeof e&&(e.includes("T")||e.includes("-"))){let t=new Date(e);if(!isNaN(t.getTime()))return t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1})}return e},[]),f=(0,l.useCallback)((e,t)=>{let i=g(t),l=g(e);return!!i&&!!l&&i.getTime()<l.getTime()},[g]),x=(0,l.useCallback)((e,t,i)=>i<=t||!e?0:Math.min(100,Math.max(0,(e-t)/(i-t)*100)),[]);(0,l.useEffect)(()=>{let e=()=>{let e=window.innerHeight;c(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let{level:v,high:b,low:N,timeLow:w,timeHigh:T,coefficient:y,isRising:j}=(0,l.useMemo)(()=>{let e=d["environment.tide.heightNow"]??h?.level??null,t=d["environment.tide.heightHigh"]??h?.high??null,i=d["environment.tide.heightLow"]??h?.low??null,l=d["environment.tide.timeLow"]??h?.timeLow??null,n=d["environment.tide.timeHigh"]??h?.timeHigh??null,s=d["environment.tide.coeffNow"]??h?.coefficient??null;return[e,t,i,l,n].every(e=>null!=e)?{level:e,high:t,low:i,timeLow:l,timeHigh:n,coefficient:s,isRising:f(l,n)}:{level:null,high:null,low:null,timeLow:null,timeHigh:null,coefficient:null,isRising:null}},[d,h,f]),$="text-hud-main",k=j?o:r,C=(0,l.useMemo)(()=>x(v,N,b),[v,N,b,x]);return null===v||null===b||null===N?null:(0,t.jsxs)("div",{className:"flex flex-col items-center group p-3 transition-all duration-300",children:[(0,t.jsx)("div",{className:`text-caption font-semibold uppercase tracking-[0.2em] mb-1 opacity-40 group-hover:opacity-100 transition-opacity ${$}`,children:e("indicators.tide")}),(0,t.jsxs)("div",{className:`text-caption font-semibold uppercase tracking-widest mb-4 ${$} flex items-center gap-1.5 opacity-60`,children:[(0,t.jsx)("span",{className:"text-oBlue",children:p(T)}),(0,t.jsx)("span",{className:`inline-block transform ${!j&&"rotate-180"} ${k.TEXT} text-caption`,children:"▲"}),null!=y&&(0,t.jsxs)("span",{className:"text-hud-muted",children:["C",y]})]}),(0,t.jsxs)("div",{className:"relative flex flex-col w-12",style:{height:u},children:[(0,t.jsx)("div",{className:"absolute left-0 top-0 w-1.5 h-full bg-hud-elevated rounded-full overflow-hidden",children:(0,t.jsx)("div",{role:"progressbar",className:`${k.BACKGROUND} w-full rounded-full transition-all duration-1000 ease-in-out absolute bottom-0 left-0`,"aria-valuenow":C,"aria-valuemin":"0","aria-valuemax":"100","aria-label":`Tide level: ${v.toFixed(2)} meters`,style:{height:`${C}%`}})}),(0,t.jsxs)("div",{className:"ml-4 h-full relative",children:[(0,t.jsxs)("span",{className:`absolute ${$} text-caption font-semibold uppercase tracking-tighter opacity-30`,style:{top:"0%"},children:[Number(b).toFixed(1),"m"]}),C>10&&C<90&&(0,t.jsxs)("div",{className:"absolute transition-all duration-500 flex items-center space-x-1",style:{bottom:`${C}%`,transform:"translateY(50%)"},children:[(0,t.jsx)("div",{className:`w-2 h-[1px] ${k.BACKGROUND} opacity-50`}),(0,t.jsxs)("span",{className:`${$} text-caption font-semibold tracking-tight`,children:[v.toFixed(2),"m"]})]}),(0,t.jsxs)("span",{className:`absolute ${$} text-caption font-semibold uppercase tracking-tighter opacity-30`,style:{bottom:"0%"},children:[Number(N).toFixed(1),"m"]})]})]}),(0,t.jsx)("div",{className:`text-caption font-semibold uppercase tracking-widest mt-4 opacity-40 ${$}`,children:p(w)})]})}])},58166,function(e){e.n(e.i(9229))}]);
|