ocearo-ui
Version:
Ocean Robot UI: 3D visualization dashboard for signalk
1 lines • 7.65 kB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,50124,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(49721),l=e.i(68757),s=e.i(67561),r=e.i(46991),i=e.i(85709);e.i(85269);var o=e.i(22831);let c={waterTemp:{key:"waterTemp",path:"environment.water.temperature",icon:l.faWater,labelKey:"temperature.waterTemperature",format:e=>`${e}${(0,r.getTemperatureUnitLabel)()}`,transform:r.convertTemperatureUnit},airTemp:{key:"airTemp",path:"environment.outside.temperature",icon:l.faThermometerHalf,labelKey:"temperature.airTemperature",format:e=>`${e}${(0,r.getTemperatureUnitLabel)()}`,transform:r.convertTemperatureUnit},exhaustTemp:{key:"exhaustTemp",path:"propulsion.main.exhaustTemperature",icon:l.faFire,labelKey:"temperature.exhaustTemperature",format:e=>`${e}${(0,r.getTemperatureUnitLabel)()}`,transform:r.convertTemperatureUnit},fridgeTemp:{key:"fridgeTemp",path:"environment.inside.fridge.temperature",icon:l.faSnowflake,labelKey:"temperature.fridgeTemperature",format:e=>`${e}${(0,r.getTemperatureUnitLabel)()}`,transform:r.convertTemperatureUnit}},m=({mode:e,value:a,icon:l,nightMode:s})=>{let{t:r}=(0,o.useTranslation)();if(!a&&0!==a)return null;let i=r(c[e].labelKey);return(0,t.jsxs)("div",{className:`flex items-center flex-shrink-0 space-x-2 sm:space-x-3 px-2 sm:px-3 py-1.5 transition-all duration-300 ${s?"text-oNight":"text-hud-main"}`,children:[(0,t.jsx)(n.FontAwesomeIcon,{icon:l,className:"text-base sm:text-lg opacity-80"}),(0,t.jsxs)("div",{className:"flex flex-col flex-shrink-0",children:[(0,t.jsx)("span",{className:"ocearo-large-label text-xs font-black uppercase tracking-widest text-hud-muted leading-none mb-1",children:i.split(" ")[0]}),(0,t.jsx)("span",{className:"text-base sm:text-xl font-bold tracking-tight leading-none whitespace-nowrap",children:c[e].format(a)})]})]})},u=()=>{let{t:e}=(0,o.useTranslation)(),{nightMode:n}=(0,s.useOcearoContext)(),[l,r]=(0,a.useState)([]),[u,p]=(0,a.useState)(null),x=(0,a.useMemo)(()=>Object.values(c).map(e=>e.path),[]),d=(0,i.useSignalKPaths)(x),h=(0,a.useMemo)(()=>Object.entries(c).reduce((e,[t,a])=>{let n=d[a.path];return e[t]=null!==n?a.transform(n):null,e},{}),[d]);(0,a.useEffect)(()=>{let e=Object.entries(h).filter(([e,t])=>null!==t).map(([e])=>e);r(e),e.length>0&&!e.includes(u)&&p(e[0])},[h,u]);let f=(0,a.useCallback)(()=>{if(l.length<=1)return;let e=(l.indexOf(u)+1)%l.length;p(l[e])},[l,u]);return 0===l.length?(0,t.jsx)("div",{className:`px-3 py-1.5 ${n?"text-oNight":"text-hud-muted"}`,children:(0,t.jsx)("span",{className:"text-sm font-black uppercase tracking-widest",children:"N/A"})}):(0,t.jsx)("div",{className:"cursor-pointer flex items-center group",onClick:f,title:`Toggle Temperature Display (${l.length} sensors available)`,role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&f(),"aria-label":e(u?c[u].labelKey:"common.na"),children:u&&(0,t.jsx)(m,{mode:u,value:h[u],icon:c[u].icon,nightMode:n})})},p={pressure:{key:"pressure",path:"environment.outside.pressure",icon:l.faCloud,labelKey:"environmental.pressure",format:e=>`${e} hPa`,transform:r.convertPressure},humidity:{key:"humidity",path:"environment.inside.relativeHumidity",icon:l.faDroplet,labelKey:"environmental.humidity",format:e=>`${e.toFixed(1)}%`,transform:e=>100*e},voc:{key:"voc",path:"environment.inside.voc",icon:l.faWind,labelKey:"environmental.voc",format:e=>`${e} ppm`,transform:e=>e}},x=({mode:e,value:a,icon:l,nightMode:s})=>{let{t:r}=(0,o.useTranslation)();return a||0===a?(0,t.jsxs)("div",{className:`flex items-center flex-shrink-0 space-x-2 sm:space-x-3 px-2 sm:px-3 py-1.5 transition-all duration-300 ${s?"text-oNight":"text-hud-main"}`,children:[(0,t.jsx)(n.FontAwesomeIcon,{icon:l,className:"text-base sm:text-lg opacity-80"}),(0,t.jsxs)("div",{className:"flex flex-col flex-shrink-0",children:[(0,t.jsx)("span",{className:"ocearo-large-label text-xs font-black uppercase tracking-widest text-hud-muted leading-none mb-1",children:r(p[e].labelKey)}),(0,t.jsx)("span",{className:"text-base sm:text-xl font-bold tracking-tight leading-none whitespace-nowrap",children:p[e].format(a)})]})]}):null},d=()=>{let{nightMode:e}=(0,s.useOcearoContext)(),[n,l]=(0,a.useState)([]),[r,o]=(0,a.useState)(null),c=(0,a.useMemo)(()=>Object.values(p).map(e=>e.path),[]),m=(0,i.useSignalKPaths)(c),u=(0,a.useMemo)(()=>Object.entries(p).reduce((e,[t,a])=>{let n=m[a.path];return e[t]=null!==n?a.transform(n):null,e},{}),[m]);(0,a.useEffect)(()=>{let e=Object.entries(u).filter(([e,t])=>null!==t).map(([e])=>e);l(e),e.length>0&&!e.includes(r)&&o(e[0])},[u,r]);let d=(0,a.useCallback)(()=>{if(n.length<=1)return;let e=(n.indexOf(r)+1)%n.length;o(n[e])},[n,r]);return 0===n.length?(0,t.jsx)("div",{className:`px-3 py-1.5 ${e?"text-oNight":"text-hud-muted"}`,children:(0,t.jsx)("span",{className:"text-sm font-black uppercase tracking-widest",children:"N/A"})}):(0,t.jsx)("div",{className:"cursor-pointer flex items-center group",onClick:d,title:`Toggle Environmental Display (${n.length} modes available)`,role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&d(),children:r&&(0,t.jsx)(x,{mode:r,value:u[r],icon:p[r].icon,nightMode:e})})};var h=e.i(83402);let f=({icon:e,onClick:a,label:l,textColor:s,badgeColor:r})=>(0,t.jsxs)("button",{onClick:a,className:`${s} flex-shrink-0 flex flex-col items-center justify-center p-1 sm:p-2 rounded-xl tesla-hover transition-all duration-300 group relative`,"aria-label":l,children:[(0,t.jsxs)("div",{className:"w-7 h-7 sm:w-10 sm:h-10 flex items-center justify-center rounded-lg group-hover:bg-hud-elevated transition-colors relative",children:[(0,t.jsx)(n.FontAwesomeIcon,{icon:e,className:"text-base sm:text-xl group-hover:scale-110 transition-transform"}),r&&(0,t.jsx)("span",{className:`absolute top-0 right-0 w-2.5 h-2.5 rounded-full border-2 border-leftPaneBg ${r} animate-pulse`})]}),(0,t.jsx)("span",{className:"ocearo-large-label text-xs font-black uppercase tracking-[0.2em] mt-1 opacity-60 group-hover:opacity-100 transition-opacity",children:l})]});e.s(["default",0,({setRightView:e,toggleSettings:a,toggleAppMenu:n})=>{let{t:r}=(0,o.useTranslation)(),{nightMode:i}=(0,s.useOcearoContext)(),c=i?"text-hud-main/90":"text-hud-main",m=h.default.getAll(),p=m.debugMode?"bg-yellow-400":m.signalKUrlSet?null:"bg-oBlue",x=[{section:"left",items:[{icon:l.faShip,onClick:()=>a(),label:r("nav.system"),badgeColor:p}]},{section:"center",items:[{icon:l.faMapMarkedAlt,onClick:()=>e("navigation"),label:r("nav.nav")},{icon:l.faCloudSun,onClick:()=>e("weather"),label:r("nav.weather")},{icon:l.faTh,onClick:n,label:r("nav.apps")},{icon:l.faTachometerAlt,onClick:()=>e("instrument"),label:r("nav.gauges")},{icon:l.faHandsHelping,onClick:()=>e("manual"),label:r("nav.help")}]}],g=e=>{let a=x.find(t=>t.section===e);return a?a.items.map((a,n)=>(0,t.jsx)(f,{icon:a.icon,onClick:a.onClick,label:a.label,textColor:c,badgeColor:a.badgeColor},`${e}-${n}`)):null};return(0,t.jsxs)("div",{className:"flex items-center justify-between w-full h-full bg-leftPaneBg px-1 sm:px-6 overflow-x-auto overflow-y-hidden scrollbar-hide",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-0.5 sm:space-x-6 flex-shrink-0 sm:flex-1 min-w-0",children:[g("left"),(0,t.jsx)("div",{className:"hidden sm:block h-8 w-[1px] bg-hud-muted opacity-20 mx-1 sm:mx-2"}),(0,t.jsx)(u,{})]}),(0,t.jsx)("div",{className:"flex flex-shrink-0 items-center justify-center space-x-0.5 sm:space-x-8 px-1 sm:px-0",children:g("center")}),(0,t.jsx)("div",{className:"flex items-center justify-end space-x-0.5 sm:space-x-6 flex-shrink-0 sm:flex-1 min-w-0",children:(0,t.jsx)(d,{})})]})}],50124)},61891,e=>{e.n(e.i(50124))}]);