ocearo-ui 0.1.3 → 0.1.5

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 CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="preload" href="/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="stylesheet" href="/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js"/><script src="/ocearo-ui/_next/static/chunks/fd9d1056-5fd12b742601fe8c.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/117-ddf36b6a7b427a7b.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/main-app-40bc40db4e2d9561.js" async=""></script><meta name="robots" content="noindex"/><link rel="manifest" href="./manifest.json"/><meta name="theme-color" content="#4bbcd8"/><link rel="icon" type="image/png" href="./favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><title>404: This page could not be found.</title><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><meta name="next-size-adjust"/><script src="/ocearo-ui/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_873ced __variable_6df010 antialiased"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n2:HL[\"/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n3:HL[\"/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[2846,[],\"\"]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\nd:I[1060,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"fXfwoRGkJUXApnOnlJiBM\",\"assetPrefix\":\"/ocearo-ui\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"./manifest.json\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#4bbcd8\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"href\":\"./favicon-96x96.png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/svg+xml\",\"href\":\"./favicon.svg\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_873ced __variable_6df010 antialiased\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="preload" href="/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="stylesheet" href="/ocearo-ui/_next/static/css/f63a99513904ab4c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js"/><script src="/ocearo-ui/_next/static/chunks/fd9d1056-5fd12b742601fe8c.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/117-ddf36b6a7b427a7b.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/main-app-40bc40db4e2d9561.js" async=""></script><meta name="robots" content="noindex"/><link rel="manifest" href="./manifest.json"/><meta name="theme-color" content="#4bbcd8"/><link rel="icon" type="image/png" href="./favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><title>404: This page could not be found.</title><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><meta name="next-size-adjust"/><script src="/ocearo-ui/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_873ced __variable_6df010 antialiased"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n2:HL[\"/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n3:HL[\"/ocearo-ui/_next/static/css/f63a99513904ab4c.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[2846,[],\"\"]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\nd:I[1060,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"n4O7tBfIcB30EmCmrUxrF\",\"assetPrefix\":\"/ocearo-ui\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/css/f63a99513904ab4c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"./manifest.json\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#4bbcd8\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"href\":\"./favicon-96x96.png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/svg+xml\",\"href\":\"./favicon.svg\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_873ced __variable_6df010 antialiased\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
package/README.md CHANGED
@@ -71,6 +71,7 @@ Ocean Robot's roadmap includes advanced features aimed at enhancing safety and e
71
71
  ---
72
72
 
73
73
  Check out the live demo: https://laborima.github.io/ocearo-ui/
74
+
74
75
  Or install it in Signal K using the NPM package: https://www.npmjs.com/package/ocearo-ui
75
76
 
76
77
  ---
@@ -259,3 +260,17 @@ Thanks to OpenPlotter, Signal K, and the MacArthur Hat project for their foundat
259
260
  Thanks to Apparent Wind Sail-Trim Simulator https://github.com/flyinggorilla/simulator.atterwind.info for is work on sail representation
260
261
  Thanks to https://jieter.github.io/orc-data/site/ for Polar data
261
262
  Special thanks to open-source 3D model contributors for enhancing the visual experience.
263
+
264
+ ---
265
+
266
+ ⚠ Navigation Disclaimer
267
+
268
+ Use with Caution – Not a Substitute for Official Navigation Systems
269
+
270
+ Ocearo UI is designed to enhance sailing awareness and provide real-time data visualization. However, this software is not a certified navigation or safety system and should not be relied upon as the sole source of navigational information.
271
+
272
+ * Always cross-check data with official marine charts, GPS devices, and other navigation aids.
273
+ * Maintain situational awareness and follow maritime safety regulations.
274
+ * The developers of Ocearo UI are not liable for any incidents, accidents, or navigation errors that may arise from using this software.
275
+
276
+ By using Ocearo UI, you acknowledge and accept the inherent risks of relying on non-certified navigation tools. Always navigate responsibly!
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[676],{5217:function(c,l,n){n.d(l,{BQ9:function(){return r},DBF:function(){return k},DSs:function(){return N},HLz:function(){return C},ItS:function(){return o},IyC:function(){return S},Kb6:function(){return d},L02:function(){return L},RoX:function(){return p},Rpv:function(){return i},S9Y:function(){return b},SJR:function(){return g},TL5:function(){return x},Zkk:function(){return m},d8e:function(){return h},iGi:function(){return M},jOV:function(){return a},lnS:function(){return u},mDh:function(){return z},szN:function(){return t},tLL:function(){return f},uM9:function(){return s},whq:function(){return e}});let s={prefix:"fas",iconName:"cloud",icon:[640,512,[9729],"f0c2","M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"]},e={prefix:"fas",iconName:"temperature-half",icon:[320,512,[127777,"temperature-2","thermometer-2","thermometer-half"],"f2c9","M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z"]},i={prefix:"fas",iconName:"fire",icon:[448,512,[128293],"f06d","M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z"]},f={prefix:"fas",iconName:"map-location-dot",icon:[576,512,["map-marked-alt"],"f5a0","M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"]},a={prefix:"fas",iconName:"snowflake",icon:[448,512,[10052,10054],"f2dc","M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z"]},r={prefix:"fas",iconName:"square-parking",icon:[448,512,[127359,"parking"],"f540","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z"]},o={prefix:"fas",iconName:"headphones",icon:[512,512,[127911],"f025","M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"]},t={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z"]},z={prefix:"fas",iconName:"satellite",icon:[512,512,[128752],"f7bf","M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z"]},L={prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},u={prefix:"fas",iconName:"ship",icon:[576,512,[128674],"f21a","M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},M={prefix:"fas",iconName:"handshake-angle",icon:[640,512,["hands-helping"],"f4c4","M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z"]},m={prefix:"fas",iconName:"droplet",icon:[384,512,[128167,"tint"],"f043","M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z"]},C={prefix:"fas",iconName:"gauge-high",icon:[512,512,[62461,"tachometer-alt","tachometer-alt-fast"],"f625","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},p={prefix:"fas",iconName:"battery-full",icon:[576,512,[128267,"battery","battery-5"],"f240","M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z"]},N={prefix:"fas",iconName:"wind",icon:[512,512,[],"f72e","M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]},x={prefix:"fas",iconName:"expand",icon:[448,512,[],"f065","M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z"]},h={prefix:"fas",iconName:"rotate",icon:[512,512,[128260,"sync-alt"],"f2f1","M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z"]},d={prefix:"fas",iconName:"gears",icon:[640,512,["cogs"],"f085","M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"]},k={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},g={prefix:"fas",iconName:"anchor",icon:[576,512,[9875],"f13d","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z"]},b={prefix:"fas",iconName:"cloud-sun",icon:[640,512,[9925],"f6c4","M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"]},S={prefix:"fas",iconName:"video",icon:[576,512,["video-camera"],"f03d","M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{9927:function(e,t,a){var n={"./default/Scene.jsx":[2967,967],"./optimist/Scene.jsx":[6154,154],"./sailboat/Scene.jsx":[2274,274],"./ship/Scene.jsx":[5221,221],"./windsurf/Scene.jsx":[2975,975]};function i(e){if(!a.o(n,e))return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=n[e],i=t[0];return a.e(t[1]).then(function(){return a(i)})}i.keys=function(){return Object.keys(n)},i.id=9927,e.exports=i},7343:function(e,t,a){Promise.resolve().then(a.bind(a,9898))},9898:function(e,t,a){"use strict";a.r(t),a.d(t,{VIEW_MODES:function(){return tm},default:function(){return tx}});var n=a(7437),i=a(2265),r=a(376),l=a.n(r),o=e=>{let{path:t}=e,[a,r]=(0,i.useState)([]),[l,o]=(0,i.useState)(null),s=(0,i.useRef)(null);return(0,i.useEffect)(()=>{(async()=>{try{let e=await fetch("".concat(t,"/index.json"));if(!e.ok)throw Error("Network response was not ok");let a=await e.json();r(a),a.length>0&&o(a[0])}catch(e){console.error("Error fetching PDF files:",e)}})()},[t]),(0,n.jsxs)("div",{className:"flex flex-col h-full",ref:s,children:[(0,n.jsx)("div",{className:"bg-oGray2 text-white p-4 flex space-x-4",children:a.map((e,t)=>(0,n.jsx)("button",{className:"px-4 py-2 rounded-t ".concat((null==l?void 0:l.file)===e.file?"bg-oGray font-bold":"hover:bg-oGray"),onClick:()=>o(e),children:e.title},t))}),(0,n.jsx)("div",{className:"flex-grow bg-oGray2 text-white p-4 flex items-center justify-center",children:l&&(0,n.jsx)("iframe",{src:"".concat(t,"/").concat(l.file),title:"PDF Viewer",width:"100%",height:"100%",style:{border:"none"}})})]})},s=JSON.parse('{"F":[{"name":"Default","modelPath":"default","capabilities":["navigation","rudder","sail","color"]},{"name":"Optimist","modelPath":"optimist","capabilities":["navigation","ais"]},{"name":"Sailboat","modelPath":"sailboat","capabilities":["navigation","ais"]},{"name":"Ship","modelPath":"ship","capabilities":["navigation","ais"]},{"name":"Windsurf","modelPath":"windsurf","capabilities":["navigation","ais"]}]}');class c{isLocalStorageAvailable(){try{return"undefined"!=typeof localStorage}catch(e){return!1}}loadConfig(){if(this.isLocalStorageAvailable()){let e=localStorage.getItem(this.configKey);if(!e)return this.saveConfig(this.defaultConfig),{...this.defaultConfig};try{return JSON.parse(e)}catch(e){return console.error("Failed to parse stored configuration:",e),{...this.defaultConfig}}}return{...this.inMemoryConfig}}saveConfig(e){this.config={...this.config,...e},this.isLocalStorageAvailable()?localStorage.setItem(this.configKey,JSON.stringify(this.config)):this.inMemoryConfig={...this.config}}get(e){return this.config[e]}set(e,t){this.config[e]=t,this.saveConfig(this.config)}resetConfig(){this.config={...this.defaultConfig},this.isLocalStorageAvailable()?localStorage.setItem(this.configKey,JSON.stringify(this.config)):this.inMemoryConfig={...this.defaultConfig}}getAll(){return{...this.config}}getDefaultConfig(){return{...this.defaultConfig}}getSelectedBoat(){let e=this.config.selectedBoat;return e?this.getBoatsData().find(t=>t.name===e):[]}getBoatsData(){return s.F}getComputedSignalKUrl(){return this.config.debugMode?"https://demo.signalk.org:443":"".concat(window.location.protocol,"//").concat(window.location.hostname).concat(window.location.port?":"+window.location.port:"")}constructor(){this.defaultConfig={signalkUrl:"https://demo.signalk.org:443",username:"",password:"",debugMode:!1,selectedBoat:"Default",primaryColor:null,metallicEffect:!1},this.configKey="ocearoConfig",this.inMemoryConfig={...this.defaultConfig},this.config=this.loadConfig()}}let d=new c;var u=e=>{var t;let{onSave:a}=e,r=d.getAll(),l=d.getComputedSignalKUrl(),o=d.getBoatsData(),[s,c]=(0,i.useState)(r),[u,h]=(0,i.useState)(!!r.username||!!r.password),[m,g]=(0,i.useState)(!1),[x,f]=(0,i.useState)(null),[p,v]=(0,i.useState)(!1),b=(0,i.useCallback)(e=>{v(JSON.stringify(e)!==JSON.stringify(r))},[r]);(0,i.useEffect)(()=>{(async()=>{let e=d.getAll();c(e),e.selectedBoat&&f(o.find(t=>t.name===e.selectedBoat)||null)})()},[o]);let j=e=>{let t={...s,...e};c(t),b(t)},w=()=>{let e={...s};m?u||(e.username="",e.password=""):(e.signalkUrl=l,e.username="",e.password=""),d.saveConfig(e),null==a||a(e),v(!1)};return(0,n.jsxs)("div",{className:"p-4 text-white",children:[p&&(0,n.jsxs)("div",{className:"bg-oBlue text-white px-4 py-2 rounded mb-4 flex justify-between items-center",children:[(0,n.jsx)("span",{children:"You have unsaved changes"}),(0,n.jsx)("button",{onClick:w,className:"bg-white text-black px-3 py-1 rounded text-sm hover:bg-gray-100",children:"Save Now"})]}),(0,n.jsx)("h1",{className:"text-2xl font-bold mb-4",children:"Ocearo Configuration"}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("h2",{className:"text-xl font-semibold",children:"Connection Settings"}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:m,onChange:e=>{g(e.target.checked),b(s)}}),"Set SignalK URL",!m&&(0,n.jsxs)("span",{className:"ml-2",children:["(",l,")"]})]})}),m&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"SignalK Server URL:"}),(0,n.jsx)("input",{type:"text",className:"border p-2 w-full text-black rounded",value:s.signalkUrl||"",onChange:e=>j({signalkUrl:e.target.value})})]}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:u,onChange:e=>{h(e.target.checked),b(s)}}),"Use Authentication"]})}),u&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Username:"}),(0,n.jsx)("input",{type:"text",className:"border p-2 w-full text-black rounded",value:s.username||"",onChange:e=>j({username:e.target.value})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Password:"}),(0,n.jsx)("input",{type:"password",className:"border p-2 w-full text-black rounded",value:s.password||"",onChange:e=>j({password:e.target.value})})]})]})]})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("h2",{className:"text-xl font-semibold",children:"Vessel Settings"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Select Vessel:"}),(0,n.jsxs)("select",{className:"border p-2 w-full text-black rounded",value:s.selectedBoat||"",onChange:e=>{let t=e.target.value;f(o.find(e=>e.name===t)||null),j({selectedBoat:t})},children:[(0,n.jsx)("option",{value:"",children:"-- Select a Vessel --"}),o.map(e=>(0,n.jsx)("option",{value:e.name,children:e.name},e.name))]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Vessel Color:"}),(0,n.jsx)("input",{type:"color",className:"w-full h-10 rounded",value:s.primaryColor||"#000000",onChange:e=>j({primaryColor:e.target.value})})]}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:s.metallicEffect||!1,onChange:e=>j({metallicEffect:e.target.checked})}),"Enable Metallic Effect"]})})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("h2",{className:"text-xl font-semibold",children:"Advanced Settings"}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:s.debugMode||!1,onChange:e=>j({debugMode:e.target.checked,signalkUrl:l})}),"Debug Mode"]})}),x&&s.debugMode&&(0,n.jsxs)("div",{className:"space-y-2 text-sm text-gray-400",children:[(0,n.jsxs)("div",{children:["3D Model: ",x.modelPath]}),(0,n.jsxs)("div",{children:["Features: ",null===(t=x.capabilities)||void 0===t?void 0:t.join(", ")]})]})]}),(0,n.jsxs)("div",{className:"flex space-x-4 pt-4",children:[(0,n.jsx)("button",{onClick:w,className:"bg-oBlue text-white px-4 py-2 rounded hover:bg-blue-600",children:"Save Configuration"}),(0,n.jsx)("button",{onClick:()=>{let e=d.getDefaultConfig();c(e),h(!1),g(!1),d.saveConfig(e),v(!1)},className:"bg-oRed text-white px-4 py-2 rounded hover:bg-red-600",children:"Reset Configuration"})]})]})]})},h=a(4578),m=a(2079);let g=(0,i.createContext)(),x="#09bfff",f="#cc000c",p="#0fcd4f",v=e=>null!=e?Math.round((e-273.15)*10)/10:null,b=e=>null!=e?Math.round(19.4384*e)/10:null,j={WARNING_THRESHOLD:50,DANGER_THRESHOLD:20,CHARGING_THRESHOLD:13},w=e=>e>=12.7?100:e>=12.5?75:e>=12.3?50:e>=12.1?25:0,y={wind:{"environment.wind.angleTrueWater":m.M8C.degToRad(25),"environment.wind.speedTrue":20,"environment.wind.angleApparent":m.M8C.degToRad(23),"environment.wind.speedApparent":25},temperature:{"environment.water.temperature":290.15,"environment.outside.temperature":294.15,"propulsion.main.exhaustTemperature":368.15,"environment.inside.fridge.temperature":277.15},environment:{"environment.outside.pressure":102300,"environment.inside.relativeHumidity":.74,"environment.inside.voc":.03},performance:{"performance.beatAngle":m.M8C.degToRad(45),"performance.gybeAngle":m.M8C.degToRad(135),"performance.beatAngleVelocityMadeGood":6,"performance.gybeAngleVelocityMadeGood":5,"performance.targetAngle":m.M8C.degToRad(45),"performance.polarSpeed":8,"performance.polarSpeedRatio":.95,"performance.velocityMadeGood":5,"performance.polarVelocityMadeGood":6,"performance.polarVelocityMadeGoodRatio":.9},navigation:{"navigation.speedThroughWater":7,"navigation.headingTrue":m.M8C.degToRad(0),"navigation.courseOverGround":m.M8C.degToRad(20),"navigation.courseGreatCircle.nextPoint.bearingTrue":m.M8C.degToRad(30),"navigation.attitude.roll":m.M8C.degToRad(5)},racing:{"navigation.racing.layline":m.M8C.degToRad(10),"navigation.racing.layline.distance":100,"navigation.racing.layline.time":180,"navigation.racing.oppositeLayline":m.M8C.degToRad(45),"navigation.racing.oppositeLayline.distance":80,"navigation.racing.oppositeLayline.time":180,"navigation.racing.startLineStb":{latitude:0,longitude:0,altitude:0},"navigation.racing.startLinePort":{latitude:0,longitude:0,altitude:0},"navigation.racing.distanceStartline":50,"navigation.racing.timeToStart":120,"navigation.racing.timePortDown":60,"navigation.racing.timePortUp":70,"navigation.racing.timeStbdDown":65,"navigation.racing.timeStbdUp":75}},M=e=>{let{children:t}=e,[a,r]=(0,i.useState)({}),[l,o]=(0,i.useState)(!1),[s,c]=(0,i.useState)({autopilot:!0,anchorWatch:!1,parkingMode:!1,mob:!1,showOcean:!1,ais:!1}),u=(0,i.useRef)(null),x=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=async()=>{let e=new Date,t=e.getFullYear(),a=(e.getMonth()+1).toString().padStart(2,"0"),n="tides/larochelle/".concat(a,"_").concat(t,".json"),i=await fetch(n);if(i.ok){let t=await i.json(),a=e.toISOString().split("T")[0];if(t[a]){let e=null,n=null,i=new Date,l=60*i.getHours()+i.getMinutes();if(t[a].forEach(t=>{let[a,i,r,o]=t,[s,c]=i.split(":").map(Number),d=60*s+c;"tide.high"===a&&(!e||Math.abs(l-d)<Math.abs(l-e.timeInMinutes))?e={height:parseFloat(r),time:i,timeInMinutes:d,coef:o}:"tide.low"===a&&(!n||Math.abs(l-d)<Math.abs(l-n.timeInMinutes))&&(n={height:parseFloat(r),time:i,timeInMinutes:d})}),e&&n){let t="".concat(i.getHours().toString().padStart(2,"0"),":").concat(i.getMinutes().toString().padStart(2,"0")),a=T(e.height,n.height,t,e.time,n.time);r(t=>({...t,"environment.tide.heightNow":a,"environment.tide.heightHigh":e.height,"environment.tide.heightLow":n.height,"environment.tide.timeLow":n.time,"environment.tide.timeHigh":e.time,"environment.tide.coeffNow":e.coef}))}else throw Error("Tide data for today is incomplete.")}}else console.warn("No tide data found")};return(async()=>{let e=d.getAll(),{signalkUrl:t,debugMode:a}=e;try{let[a,n]=t.replace(/https?:\/\//,"").split(":"),i=new h.default({hostname:a||"localhost",port:parseInt(n)||3e3,useTLS:t.startsWith("https"),reconnect:!0,autoConnect:!1,notifications:!1,deltaStreamBehaviour:"self",sendMeta:"all",wsKeepaliveInterval:10});u.current=i,await i.connect(),i.on("delta",e=>{e.updates.forEach(e=>{e.values&&e.values.forEach(e=>{r(t=>({...t,[e.path]:e.value}))})})}),e.debugMode&&(x.current=setInterval(()=>{let e=Math.floor(91*Math.random())-45;r(t=>({...t,"steering.rudderAngle":m.M8C.degToRad(e),...y.wind,...y.temperature,...y.environment,...y.performance,...y.navigation,...y.racing}))},5e3))}catch(e){console.error("Failed to connect to SignalK:",e)}})(),e(),()=>{u.current&&u.current.disconnect(),x.current&&clearInterval(x.current)}},[]),(0,n.jsx)(g.Provider,{value:{getSignalKValue:e=>a[e]||null,nightMode:l,setNightMode:o,states:s,toggleState:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;c(a=>({...a,[e]:void 0!==t?t:!a[e]}))}},children:t})},N=()=>(0,i.useContext)(g),T=function(e,t,a,n,i){let r,l,o,s;let c=e=>{let[t,a]=e.split(":").map(Number);return 60*t+a},d=c(n),u=c(i),h=c(a),m=!1;u<=h&&h<=d?(m=!0,r=t,l=e,o=u,s=d):(r=e,l=t,o=d,s=u+(u<d?1440:0));let g=Math.abs(s-o),x=Math.abs(l-r),f=h-o;f<0&&(f+=1440);let p=x/12,v=0;return v=f<=g/6?p*Math.ceil(f/(g/12)):f<=2*g/6?2*p+p*Math.ceil((f-g/6)/(g/12)):f<=3*g/6?5*p:f<=4*g/6?8*p:f<=5*g/6?10*p:x,m?r+v:r-v};var S=()=>{let{nightMode:e}=N(),[t,a]=(0,i.useState)(null),[r,l]=(0,i.useState)(!1),o=e=>{e.external,a(e),l(!1)},s=e=>{window.open(e,"_blank","noopener,noreferrer")};return(0,n.jsxs)("div",{className:"rightPaneBg ".concat(e?"text-oNight bg-oGray2":"text-gray-900 bg-oGray"," flex flex-col h-full p-4"),children:[(0,n.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-6",children:[{name:"Netflix",url:"https://www.netflix.com",icon:"/icons/mediaplayer/netflix.png",external:!0},{name:"YouTube",url:"https://www.youtube.com",icon:"/icons/mediaplayer/youtube.png",external:!0},{name:"Disney+",url:"https://www.disneyplus.com",icon:"/icons/mediaplayer/disneyplus.png",external:!0},{name:"Prime Video",url:"https://www.primevideo.com",icon:"/icons/mediaplayer/amazon.png",external:!0},{name:"Deezer",url:"https://widget.deezer.com/widget/dark/playlist/1479458365",icon:"/icons/mediaplayer/deezer.png"}].map(e=>(0,n.jsx)("button",{onClick:()=>o(e),className:"rounded-lg flex items-center justify-center transition-colors hover:bg-oGray3 relative w-64 h-64",children:(0,n.jsx)("img",{src:e.icon,alt:e.name,className:"w-full h-full object-contain",loading:"lazy"})},e.name))}),t&&(0,n.jsxs)("div",{className:"mt-6 flex-1 flex flex-col relative",children:[(0,n.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold ".concat(e?"text-oNight":"text-gray-900"),children:t.name}),(0,n.jsx)("button",{onClick:()=>{a(null),l(!1)},className:"text-sm ".concat(e?"text-oNight hover:text-oRed":"text-gray-900 hover:text-red-500"),children:"Close"})]}),t.external?(0,n.jsxs)("div",{className:"w-full h-full flex flex-col items-center justify-center bg-oGray3 rounded-lg p-6",children:[(0,n.jsx)("div",{className:"w-32 h-32 mb-4 relative",children:(0,n.jsx)("img",{src:t.icon,alt:t.name,className:"w-full h-full object-contain",loading:"lazy"})}),(0,n.jsxs)("p",{className:"text-lg ".concat(e?"text-oNight":"text-gray-900"),children:[t.name," cannot be embedded directly."]}),(0,n.jsx)("p",{className:"text-sm ".concat(e?"text-oNight":"text-gray-600"," mb-4"),children:"Click below to open in a new tab."}),(0,n.jsxs)("button",{onClick:()=>s(t.url),className:"px-4 py-2 rounded-lg ".concat(e?"bg-oNight text-white hover:bg-oRed":"bg-gray-900 text-white hover:bg-red-500"," transition-colors"),children:["Open ",t.name]})]}):r?(0,n.jsxs)("div",{className:"w-full h-full flex items-center justify-center text-red-500",children:["Unable to embed ",t.name,"."," ",(0,n.jsx)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"underline ml-2 hover:text-red-700",children:"Open in new tab"})]}):(0,n.jsx)("iframe",{src:t.url,title:t.name,className:"w-full h-full rounded-lg border-0",allow:"autoplay; encrypted-media",allowFullScreen:!0,loading:"lazy",onError:()=>{l(!0)}})]})]})},C=()=>{let{nightMode:e,getSignalKValue:t}=N(),a=(0,i.useRef)(performance.now()),r=(0,i.useRef)(performance.now()),l=(0,i.useRef)(0),o=(0,i.useCallback)(()=>{let e=new Date().toLocaleTimeString(),a=t("electrical.batteries.1.voltage")||12,n=t("electrical.batteries.1.capacity.stateOfCharge");return{time:e,voltage:a,current:t("electrical.batteries.1.current")||5,stateOfCharge:null!==n?n:w(a)}},[t]),[s,c]=(0,i.useState)(()=>Array(30).fill(null).map(o)),[d,u]=(0,i.useState)(()=>{let e=new Date().toLocaleTimeString();return Array(30).fill({time:e,fps:60,ms:16.67})}),h=(0,i.useCallback)(e=>{let a=s[s.length-1],n=t("electrical.batteries.1.voltage")||a.voltage,i=t("electrical.batteries.1.current")||a.current,r=t("electrical.batteries.1.capacity.stateOfCharge"),l=null!==r?r:w(n);return{time:e,voltage:n,current:i,stateOfCharge:l}},[t,s]);(0,i.useEffect)(()=>{let e;let t=()=>{let n=new Date().toLocaleTimeString();l.current++;let i=performance.now();if(a.current,i>=r.current+1e3){let e=1e3*l.current/(i-r.current),t=e>0?1e3/e:0;u(a=>[...a.slice(1),{time:n,fps:e,ms:t}]),c(e=>[...e.slice(1),h(n)]),r.current=i,l.current=0}a.current=i,e=requestAnimationFrame(t)};return e=requestAnimationFrame(t),()=>cancelAnimationFrame(e)},[h]);let m=e=>e>j.WARNING_THRESHOLD?"bg-oGreen":e>j.DANGER_THRESHOLD?"bg-oYellow":"bg-oRed";return(0,n.jsx)("div",{className:"p-6 flex flex-col h-full bg-rightPaneBg",children:(0,n.jsxs)("div",{className:"grid gap-6 md:grid-cols-2",children:[(0,n.jsxs)("div",{className:"bg-oGray2 rounded-lg shadow-lg p-4",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold ".concat(e?"text-oNight":"text-white"," mb-4"),children:"Battery Status"}),(0,n.jsxs)("div",{className:"h-64 relative",children:[(0,n.jsx)("div",{className:"absolute inset-0",children:Array.from({length:5},(t,a)=>(0,n.jsx)("div",{className:"absolute w-full border-t border-gray-300 opacity-20",style:{bottom:"".concat(a/4*100,"%")},children:(0,n.jsxs)("span",{className:"absolute -left-10 text-xs ".concat(e?"text-oNight":"text-white"),children:[0+25*a,"%"]})},a))}),(0,n.jsx)("div",{className:"h-full flex items-end space-x-1",children:s.map((t,a)=>(0,n.jsxs)("div",{className:"flex-1 flex flex-col justify-end h-full space-y-1 relative",children:[(0,n.jsx)("div",{className:"w-full bg-blue-500 transition-all duration-300",style:{height:"".concat((t.voltage-11)/4*100,"%")},title:"Voltage: ".concat(t.voltage.toFixed(1),"V")}),(0,n.jsx)("div",{className:"w-full bg-red-500 transition-all duration-300",style:{height:"".concat(t.current/15*100,"%")},title:"Current: ".concat(t.current.toFixed(1),"A")}),(0,n.jsx)("div",{className:"w-full ".concat(m(t.stateOfCharge)," transition-all duration-300"),style:{height:"".concat(t.stateOfCharge,"%")},title:"SoC: ".concat(t.stateOfCharge.toFixed(1),"%")}),a%5==0&&(0,n.jsx)("span",{className:"text-xs ".concat(e?"text-oNight":"text-white"," transform -rotate-45 origin-top-left absolute bottom-0 -mb-6"),children:t.time.split(":")[1]})]},"".concat(t.time,"-").concat(a)))})]}),(0,n.jsxs)("div",{className:"mt-4 flex justify-between text-sm",children:[(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("div",{className:"w-3 h-3 bg-blue-500 rounded mr-2"}),(0,n.jsx)("span",{className:e?"text-oNight":"text-white",children:"Voltage (11-15V)"})]}),(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("div",{className:"w-3 h-3 bg-red-500 rounded mr-2"}),(0,n.jsx)("span",{className:e?"text-oNight":"text-white",children:"Current (0-15A)"})]}),(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("div",{className:"w-3 h-3 bg-oGreen rounded mr-2"}),(0,n.jsx)("span",{className:e?"text-oNight":"text-white",children:"SoC (0-100%)"})]})]})]}),(0,n.jsxs)("div",{className:"bg-oGray2 rounded-lg shadow-lg p-4",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold ".concat(e?"text-oNight":"text-white"," mb-4"),children:"Performance Metrics"}),(0,n.jsxs)("div",{className:"h-64 relative",children:[(0,n.jsx)("div",{className:"absolute inset-0",children:Array.from({length:5},(t,a)=>(0,n.jsx)("div",{className:"absolute w-full border-t border-gray-300 opacity-20",style:{bottom:"".concat(a/4*100,"%")},children:(0,n.jsx)("span",{className:"absolute -left-10 text-xs ".concat(e?"text-oNight":"text-white"),children:0+15*a})},a))}),(0,n.jsx)("div",{className:"h-full flex items-end space-x-1",children:d.map((t,a)=>(0,n.jsxs)("div",{className:"flex-1 flex flex-col justify-end h-full space-y-1 relative",children:[(0,n.jsx)("div",{className:"w-full bg-cyan-500 transition-all duration-300",style:{height:"".concat(t.fps/60*100,"%")},title:"FPS: ".concat(t.fps.toFixed(1))}),(0,n.jsx)("div",{className:"w-full bg-green-500 transition-all duration-300",style:{height:"".concat(t.ms/33.33*100,"%")},title:"MS: ".concat(t.ms.toFixed(1))}),a%5==0&&(0,n.jsx)("span",{className:"text-xs ".concat(e?"text-oNight":"text-white"," transform -rotate-45 origin-top-left absolute bottom-0 -mb-6"),children:t.time.split(":")[1]})]},"".concat(t.time,"-").concat(a)))})]}),(0,n.jsxs)("div",{className:"mt-4 flex justify-between text-sm",children:[(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("div",{className:"w-3 h-3 bg-cyan-500 rounded mr-2"}),(0,n.jsx)("span",{className:e?"text-oNight":"text-white",children:"FPS (0-60)"})]}),(0,n.jsxs)("div",{className:"flex items-center",children:[(0,n.jsx)("div",{className:"w-3 h-3 bg-green-500 rounded mr-2"}),(0,n.jsx)("span",{className:e?"text-oNight":"text-white",children:"Frame Time (0-33ms)"})]})]})]}),(0,n.jsxs)("div",{className:"bg-oGray2 rounded-lg shadow-lg p-4 md:col-span-2",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold ".concat(e?"text-oNight":"text-white"," mb-4"),children:"Current Readings"}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("p",{className:"text-sm font-medium ".concat(e?"text-oNight":"text-white"),children:"Voltage"}),(0,n.jsxs)("p",{className:"text-2xl font-bold ".concat(e?"text-oNight":"text-white"),children:[s[s.length-1].voltage.toFixed(1)," V"]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("p",{className:"text-sm font-medium ".concat(e?"text-oNight":"text-white"),children:"Current"}),(0,n.jsxs)("p",{className:"text-2xl font-bold ".concat(e?"text-oNight":"text-white"),children:[s[s.length-1].current.toFixed(1)," A"]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("p",{className:"text-sm font-medium ".concat(e?"text-oNight":"text-white"),children:"State of Charge"}),(0,n.jsxs)("p",{className:"text-2xl font-bold ".concat(e?"text-oNight":"text-white"),children:[s[s.length-1].stateOfCharge.toFixed(1),"%"]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("p",{className:"text-sm font-medium ".concat(e?"text-oNight":"text-white"),children:"Performance"}),(0,n.jsxs)("p",{className:"text-2xl font-bold ".concat(e?"text-oNight":"text-white"),children:[d[d.length-1].fps.toFixed(1)," FPS",(0,n.jsxs)("span",{className:"text-sm ml-2",children:["(",d[d.length-1].ms.toFixed(1)," ms)"]})]})]})]})]})]})})};let E={latitude:46.1591,longitude:-1.1522},R={navigation:e=>"".concat(e,"/@signalk/freeboard-sk/"),instrument:e=>"".concat(e,"/@mxtommy/kip/"),netflix:()=>"https://www.netflix.com",battery:e=>e.replace(":3000",":3001")+"/grafana",webcam1:()=>"https://pv.viewsurf.com/2080/Chatelaillon-Port?i=NzU4Mjp1bmRlZmluZWQ",webcam2:()=>"https://pv.viewsurf.com/1478/Chatelaillon-Plage&lt?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=".concat(t.latitude,"&lon=").concat(t.longitude,"&message=true")};var P=e=>{let{view:t}=e,{getSignalKValue:a}=N(),[r,l]=(0,i.useState)(null),[s,c]=(0,i.useState)(null),{signalkUrl:h}=d.getAll();(0,i.useEffect)(()=>{let e=()=>{try{let e=a("navigation.position")||E;l(t=>t?Math.abs(t.latitude-e.latitude)>.01||Math.abs(t.longitude-e.longitude)>.01?e:t:e),c(null)}catch(e){c("Error fetching position data"),console.error("Position fetch error:",e)}};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[a]);let m=(0,i.useMemo)(()=>{let e=R[t];if(!e)return null;try{return e(h,r)}catch(e){return console.error("Error generating URL:",e),c("Error generating application URL"),null}},[t,r,h]);return(0,n.jsx)("div",{className:"flex flex-col w-full h-full",children:(()=>{if(s)return(0,n.jsx)("div",{className:"text-red-500 p-4",children:s});switch(t){case"manual":return(0,n.jsx)(o,{path:"boats/default/docs"});case"settings":return(0,n.jsx)(u,{});case"mediaplayer":return(0,n.jsx)(S,{});case"battery":return(0,n.jsx)(C,{});default:return m&&(0,n.jsx)("iframe",{className:"flex-grow border-none",src:m,title:"External Application",onError:()=>c("Failed to load external content")})}})()})},I=a(1268),A=a(5217);let _={waterTemp:{key:"waterTemp",path:"environment.water.temperature",icon:A.L02,label:"Water Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},airTemp:{key:"airTemp",path:"environment.outside.temperature",icon:A.whq,label:"Air Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},exhaustTemp:{key:"exhaustTemp",path:"propulsion.main.exhaustTemperature",icon:A.Rpv,label:"Exhaust Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},fridgeTemp:{key:"fridgeTemp",path:"environment.inside.fridge.temperature",icon:A.jOV,label:"Fridge Temperature",format:e=>"".concat(e,"\xb0C"),transform:v}},k=e=>{let{mode:t,value:a,icon:i,nightMode:r}=e;return a||0===a?(0,n.jsxs)("div",{className:"flex items-center text-2xl ".concat(r?"text-red-500":"text-white"),children:[(0,n.jsx)(I.G,{icon:i,className:"mr-2"}),(0,n.jsx)("span",{children:_[t].format(a)})]}):null};var L=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)([]),[l,o]=(0,i.useState)(null),s=(0,i.useMemo)(()=>Object.entries(_).reduce((e,a)=>{let[n,i]=a,r=t(i.path);return e[n]=null!==r?i.transform(r):null,e},{}),[t]);(0,i.useEffect)(()=>{let e=Object.entries(s).filter(e=>{let[t,a]=e;return null!==a}).map(e=>{let[t]=e;return t});r(e),e.length>0&&!e.includes(l)&&o(e[0])},[s,l]);let c=()=>{if(a.length<=1)return;let e=(a.indexOf(l)+1)%a.length;o(a[e])};return 0===a.length?(0,n.jsx)("div",{className:"text-2xl ".concat(e?"text-red-500":"text-white"),children:(0,n.jsx)("span",{children:"NA"})}):(0,n.jsx)("div",{className:"cursor-pointer flex items-center space-x-2",onClick:c,title:"Toggle Temperature Display (".concat(a.length," sensors available)"),role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&c(),"aria-label":l?_[l].label:"No temperature data available",children:l&&(0,n.jsx)(k,{mode:l,value:s[l],icon:_[l].icon,nightMode:e})})};let O={pressure:{key:"pressure",path:"environment.outside.pressure",icon:A.uM9,format:e=>"".concat(e," hPa"),transform:e=>null!=e?Math.round(e/100*10)/10:null},humidity:{key:"humidity",path:"environment.inside.relativeHumidity",icon:A.Zkk,format:e=>"".concat(e.toFixed(1),"%"),transform:e=>100*e},voc:{key:"voc",path:"environment.inside.voc",icon:A.DSs,format:e=>"".concat(e," ppm"),transform:e=>e}},F=e=>{let{mode:t,value:a,icon:i,nightMode:r}=e;return a||0===a?(0,n.jsxs)("div",{className:"flex items-center text-2xl ".concat(r?"text-red-500":"text-white"),children:[(0,n.jsx)(I.G,{icon:i,className:"mr-2"}),(0,n.jsx)("span",{children:O[t].format(a)})]}):null};var G=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)([]),[l,o]=(0,i.useState)(null),s=(0,i.useMemo)(()=>Object.entries(O).reduce((e,a)=>{let[n,i]=a,r=t(i.path);return e[n]=null!==r?i.transform(r):null,e},{}),[t]);(0,i.useEffect)(()=>{let e=Object.entries(s).filter(e=>{let[t,a]=e;return null!==a}).map(e=>{let[t]=e;return t});r(e),e.length>0&&!e.includes(l)&&o(e[0])},[s,l]);let c=()=>{if(a.length<=1)return;let e=(a.indexOf(l)+1)%a.length;o(a[e])};return 0===a.length?(0,n.jsx)("div",{className:"text-2xl ".concat(e?"text-red-500":"text-white"),children:(0,n.jsx)("span",{children:"NA"})}):(0,n.jsx)("div",{className:"cursor-pointer flex items-center space-x-2",onClick:c,title:"Toggle Environmental Display (".concat(a.length," modes available)"),role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&c(),children:l&&(0,n.jsx)(F,{mode:l,value:s[l],icon:O[l].icon,nightMode:e})})};let D=e=>{let{icon:t,onClick:a,label:i,textColor:r}=e;return(0,n.jsx)("button",{onClick:a,className:"".concat(r," text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200"),"aria-label":i,children:(0,n.jsx)(I.G,{icon:t})})};var B=e=>{let{setRightView:t,toggleSettings:a,toggleAppMenu:i}=e,{nightMode:r}=N(),l=r?"text-oNight":"text-white",o=[{section:"left",items:[{icon:A.lnS,onClick:()=>a(),label:"Settings"}]},{section:"center",items:[{icon:A.tLL,onClick:()=>t("navigation"),label:"Navigation"},{icon:A.S9Y,onClick:()=>t("weather"),label:"Weather"},{icon:A.szN,onClick:i,label:"App Menu"},{icon:A.iGi,onClick:()=>t("manual"),label:"Manual"},{icon:A.HLz,onClick:()=>t("instrument"),label:"Instrument"}]}],s=e=>{let t=o.find(t=>t.section===e);return t?t.items.map((t,a)=>(0,n.jsx)(D,{icon:t.icon,onClick:t.onClick,label:t.label,textColor:l},"".concat(e,"-").concat(a))):null};return(0,n.jsxs)("div",{className:"flex items-center justify-between w-full h-full bg-black px-4",children:[(0,n.jsxs)("div",{className:"flex items-center space-x-10",children:[s("left"),(0,n.jsx)(L,{})]}),(0,n.jsx)("div",{className:"flex items-center justify-center space-x-10",children:s("center")}),(0,n.jsx)("div",{className:"flex items-center space-x-10",children:(0,n.jsx)(G,{})})]})},U=e=>{let{currentViewMode:t,toggleViewMode:a,handleSetRightView:i,toggleFullscreen:r,setShowAppMenu:l}=e,o=e=>{let{icon:t,label:a,onClick:i}=e;return(0,n.jsxs)("button",{onClick:()=>{i(),l(!1)},className:"flex items-center text-white p-2 rounded-md hover:bg-gray-700 transition",children:[(0,n.jsx)(I.G,{icon:t,className:"mr-2"})," ",a]})};return(0,n.jsx)("div",{className:"fixed bottom-20 left-1/2 transform -translate-x-1/2 bg-black p-6 rounded-lg shadow-lg z-50 w-200",children:(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[t!==tm.SPLIT&&(0,n.jsx)(o,{icon:A.TL5,label:"Split View",onClick:()=>a(tm.SPLIT)}),t!==tm.APP&&(0,n.jsx)(o,{icon:A.TL5,label:"Full View",onClick:()=>a(tm.APP)}),t!==tm.BOAT&&(0,n.jsx)(o,{icon:A.lnS,label:"Boat View",onClick:()=>a(tm.BOAT)}),(0,n.jsx)(o,{icon:A.iGi,label:"Manual",onClick:()=>i("manual")}),(0,n.jsx)(o,{icon:A.HLz,label:"Instruments",onClick:()=>i("instrument")}),(0,n.jsx)(o,{icon:A.IyC,label:"Webcam",onClick:()=>i("webcam1")}),(0,n.jsx)(o,{icon:A.tLL,label:"Navigation",onClick:()=>i("navigation")}),(0,n.jsx)(o,{icon:A.Kb6,label:"Settings",onClick:()=>i("settings")}),(0,n.jsx)(o,{icon:A.S9Y,label:"Weather",onClick:()=>i("weather")}),(0,n.jsx)(o,{icon:A.RoX,label:"Battery",onClick:()=>i("battery")}),(0,n.jsx)(o,{icon:A.ItS,label:"Media player",onClick:()=>i("mediaplayer")}),(0,n.jsx)(o,{icon:A.TL5,label:"Toggle Fullscreen",onClick:r}),(0,n.jsx)(o,{icon:A.d8e,label:"Refresh Page",onClick:()=>{window.location.reload()}})]})})},z=a(6496),W=a(8328),H=a(4725),V=a(5903),Y=a(5550),K=a(8124),X=a(1106);function q(e,t,a){return e/1.9438444924574*Math.pow(t/10,a)*1.9438444924574}var Z=a(3359),J=a(1378),Q=a(262),$=new WeakMap,ee=new WeakMap;class et{calcShape(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;(0,Q._)(this,ee,[]);let t=this.chordTackLevel/((0,Z._)(this,$)[(0,Z._)(this,$).length-1].x-(0,Z._)(this,$)[0].x);for(let a of(0,Z._)(this,$)){let n=a.clone().multiplyScalar(t);1!==e&&(n.y*=e),(0,Z._)(this,ee).push(n)}let a=new m.FM8(0,0);for(let e of(0,Z._)(this,ee))e.y>a.y&&(a=e);this.draftDepth=a.y,this.draftPosition=a.x,this.girth=0;let n=null;for(let e of(0,Z._)(this,ee))null!==n&&(this.girth+=e.distanceTo(n)),n=e;this.sag=this.chordTackLevel-this.girth,this.entryAngleRad=(0,Z._)(this,ee)[1].clone().sub((0,Z._)(this,ee)[0]).angle(),this.exitAngleRad=(0,Z._)(this,ee)[(0,Z._)(this,ee).length-1].clone().sub((0,Z._)(this,ee)[(0,Z._)(this,ee).length-2]).angle()-2*Math.PI,this.mastAngleRad=this.calcMastAngle(),this.forceAngleRad=(this.entryAngleRad+this.exitAngleRad)/2,this.draftDepthRatio=this.draftDepth/this.chordTackLevel,this.draftPositionRatio=this.draftPosition/this.chordTackLevel}calcMastAngle(){let e=0,t=null,a=this.mastWidth*this.chordTackLevel/this.chordMastTop;for(let n of(0,Z._)(this,ee)){if(null!==t&&(e+=n.distanceTo(t))>=a)return n.angle();t=n}return NaN}getVerticesAngles(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=(this.girth-t)/(e-1),i=0,r=0,l=[],o=null;for(let s of(0,Z._)(this,ee)){if(null!==o&&(((r+=s.distanceTo(o))>=i*n+t||a&&r>a)&&(i++,l.push(s.angle())),i>=e))break;o=s}return l}pointAtGirthDistance(e){let t=0,a=null;for(let n of(0,Z._)(this,ee))if(null!==a&&(t+=n.distanceTo(a)),a=n,t>=e)return a.clone()}constructor(e,t,a,n=1){(0,J._)(this,$,{writable:!0,value:void 0}),(0,J._)(this,ee,{writable:!0,value:void 0}),(0,Q._)(this,$,[]),(0,Q._)(this,ee,[]),this.chordMastTop=t,this.chordTackLevel=e,this.mastWidth=a;let i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new m.FM8(t*e**2,2*t*e)},r=1.001+.95*(n-1)/10,l=(r-.001)/1e3,o=i(.001),s=i(r).clone().sub(o).angle(),c=new m.FM8(0,0);for(let e=.001;e<=r;e+=l){let t=i(e);t.sub(o),t.rotateAround(c,-s),(0,Z._)(this,$).push(t)}this.calcShape(1-.25*(n-1)/10)}}let ea=Math.floor(20),en=Math.ceil(160),ei={waterlineToMastFootHeight:.45,maxMastRotation:Math.PI/2,maxChordRotationPerSailLevel:Math.PI/3*2};var er=e=>{let{windParams:t={speed:5,hellman:.27},boatParams:a={mastrotation:0,heading:130,speed:5},sailParams:r={mastArea:0,sailArea:0,cunningham:1,angleOfAttack:20}}=e,{getSignalKValue:l}=N(),o=(0,i.useRef)(),s=(0,i.useRef)(null),c=(0,i.useRef)(0),d=(0,i.useRef)(null),u=(0,i.useRef)(null),h=(0,i.useRef)(),g=(0,i.useRef)({}),f=(0,i.useMemo)(()=>{let e=new m.ZAu,t=new m.b_z(.1,.2,12),a=new m.Wid({color:x,opacity:.5,transparent:!0}),n=new m.Kj0(t,a);return n.position.set(0,-.1,0),e.add(n),e},[]);(0,i.useEffect)(()=>{let e=new m.ZAu,t={};for(let a=0;a<8;a+=.5){let n=f.clone();n.position.set(0,a,0),t[2*a]=n,e.add(n)}return e.position.set(0,0,0),h.current&&h.current.add(e),g.current=t,()=>{e.clear()}},[f]);let p=(e,t)=>{let a=g.current;if(!a){console.error("apparentWindField is not initialized.");return}for(let n=0;n<8;n+=.5){let i=q(e,n,t),r=a[2*n];if(!r){console.warn("Apparent wind field cone at height ".concat(n," is not defined."));continue}r.scale.set(.1*i,i,.1*i),r.rotation.set(0,-Math.PI,Math.PI/2)}},{geometry:v,sailClipWidthPerLevel:b}=(0,i.useMemo)(()=>{let e=new m.u9r,t=[],a=[],n=[];for(let e=0;e<=en;e++){let i,r;let l=Math.min(50*e,8e3);l<900?(i=3600,r=3800+-200*l/900):r=i=3600-3210*(l-900)/7100+600*Math.sin((l-900)/7100*Math.PI);let o=0;for(let n=0;n<ea;n++){let s=i/(ea-1),c=s*n-r,d=s;c>.1&&(d=c>s?0:s-c),t.push(0===n?0:(o+d)/1e3,l/1e3,0),o=0===n?0:o+d;let u=Math.floor(en/10);a.push(...e%u==0?[.8,0,.047]:[.596,.596,.596])}n.push(r===i?null:r)}let i=[];for(let e=0;e<en;e++)for(let t=1;t<ea;t++){let a=e*ea+t;i.push(a-1,a,a+ea-1,a,a+ea,a+ea-1)}return e.setAttribute("position",new m.a$l(t,3)),e.setAttribute("color",new m.a$l(a,3)),e.setIndex(i),e.computeVertexNormals(),{geometry:e,sailClipWidthPerLevel:n}},[]),j=(0,i.useMemo)(()=>l("environment.wind.angleApparent")||0,[l]),w=(0,i.useMemo)(()=>l("environment.wind.speedApparent")||0,[l]);return(0,i.useEffect)(()=>{if(!o.current)return;p(w,t.hellman);let e=j>Math.PI&&j<=2*Math.PI,n=o.current.geometry,i=n.attributes.position.array;r.cunningham!==d.current&&(u.current=new et(3600,390,200,r.cunningham),d.current=r.cunningham),s.current||(s.current=n.clone());let l=1e3*ei.waterlineToMastFootHeight,h=e?-1:1,g=m.M8C.degToRad(r.angleOfAttack),x=Math.abs(j),f=u.current.mastAngleRad;x<.01&&(g=0);let v=Math.min(x-g+f,ei.maxMastRotation),y=new m.Pa4(0,1,0),M=null;for(let e=0;e<=en;e++){let a=Math.abs({awa:j,aws:q(w,(50*e+l)/1e3,t.hellman)}.awa)-g;a<0?a=0:a>Math.PI/2&&(a=Math.PI/2);let n=a-v;M&&n-M>ei.maxChordRotationPerSailLevel&&(n=M+ei.maxChordRotationPerSailLevel),M=n;let r=b[e],o=u.current.getVerticesAngles(ea,200,r);for(let t=1;t<ea;t++){let a=(e*ea+t)*3,r=new m.Pa4(s.current.attributes.position.array[a],s.current.attributes.position.array[a+1],s.current.attributes.position.array[a+2]);r.applyAxisAngle(y,-(n+o[t])*h),i[a]=r.x,i[a+1]=r.y,i[a+2]=r.z}}n.attributes.position.needsUpdate=!0;let N={...a,mastrotation:v*h};o.current&&o.current.rotateY(c.current-N.mastrotation),c.current=N.mastrotation},[w,j,t.hellman,r.cunningham,r.angleOfAttack,a,b]),(0,n.jsxs)("mesh",{ref:o,position:[0,2,-1],rotation:[0,-Math.PI/2,0],children:[(0,n.jsx)("bufferGeometry",{...v}),(0,n.jsx)("group",{ref:h}),(0,n.jsx)("meshBasicMaterial",{vertexColors:!0,transparent:!0,opacity:.7,side:m.ehD})]})};let el=a(257).env.ASSET_PREFIX||"./",eo=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return"".concat(el,"/boats/").concat(e,"/assets/scene-transformed.glb")},es={name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]},ec=(0,i.forwardRef)((e,t)=>{let{showSail:a=!1,...r}=e,l=(0,i.useRef)(),o=(0,i.useRef)(),{getSignalKValue:s}=N(),c=d.getAll(),[u,h]=(0,i.useState)(()=>d.getSelectedBoat()||es);(0,i.useEffect)(()=>{h(d.getSelectedBoat()||es)},[c]);let g=(0,i.useMemo)(()=>eo(u.modelPath),[u]),x=(null==u?void 0:u.capabilities)||[],{nodes:f,materials:p}=(0,X.L)(g,"".concat(el,"/draco/")),v=(0,i.useMemo)(()=>({primaryColor:c.primaryColor,metallicEffect:c.metallicEffect||!1}),[c.primaryColor,c.metallicEffect]);(0,i.useEffect)(()=>{(null==p?void 0:p.fiberglass)&&(p.fiberglass.color.set(v.primaryColor),p.fiberglass.metalness=v.metallicEffect?1:0,p.fiberglass.roughness=v.metallicEffect?.2:1,Object.values(p).forEach(e=>{e.map&&(e.map.minFilter=m.wem,e.map.magFilter=m.wem,e.map.anisotropy=1)}))},[p,v]);let b=(0,i.useMemo)(()=>new m.yGw,[]),j=(0,i.useMemo)(()=>new m.Pa4(1,0,0),[]);(0,K.F)(()=>{if(!l.current)return;let e=s("navigation.attitude.roll")||0,t=s("steering.rudderAngle")||0;l.current.rotation.z!==e&&(l.current.rotation.z=e),o.current&&(b.makeRotationFromEuler(new m.USm(-Math.PI/2,Math.PI/2,0)),o.current.setRotationFromMatrix(b),o.current.rotateOnAxis(j,-m.M8C.degToRad(180*t/Math.PI)))});let w=(0,i.useMemo)(()=>{let e={Default:()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("mesh",{geometry:f.baba_metal_0.geometry,material:p.metal,position:[.24,.895,-5.546],rotation:[-Math.PI/2,0,1.968],scale:.027}),(0,n.jsx)("mesh",{geometry:f.camadadirek_fiberglass_0.geometry,material:p.fiberglass,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,n.jsx)("mesh",{geometry:f.camadanyelkeni_bez_0.geometry,material:p.mcaterial,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,n.jsx)("mesh",{geometry:f.camadaonbaglay_metal_0.geometry,material:p.metal,position:[0,.891,-5.958],rotation:[-Math.PI/2,0,0],scale:.02}),(0,n.jsx)("mesh",{geometry:f.capa_metal_0.geometry,material:p.metal,position:[0,.671,-6.173],rotation:[-Math.PI/2,0,0],scale:.348}),(0,n.jsx)("mesh",{geometry:f.direk_fiberglass_0.geometry,material:p.fiberglass,position:[0,4.315,-1.056],rotation:[Math.PI/2,0,Math.PI],scale:[-.113,.113,5.203]}),(0,n.jsx)("mesh",{geometry:f.duman_ahsap_0.geometry,material:p.ahsap,position:[-.011,.854,3.487],rotation:[Math.PI,0,Math.PI/2],scale:[.045,.045,.011]}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_ahsap_0.geometry,material:p.ahsap,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_cam_0.geometry,material:p.material_5,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_fiberglass_0.geometry,material:p.fiberglass,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.govde_fiberglass2_0.geometry,material:p.fiberglass2,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.govde_fiberglass_0.geometry,material:p.fiberglass,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.govde_metal_0.geometry,material:p.metal,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.halattutucu_fiberglass2_0.geometry,material:p.fiberglass2,position:[-1.044,.939,1.809],rotation:[-Math.PI/2,0,0],scale:[.016,.059,.016]}),(0,n.jsx)("mesh",{geometry:f.ip001_metal_0.geometry,material:p.metal,position:[-.231,7.608,-.621],rotation:[-2.322,.222,-1.556],scale:[.007,.007,.011]}),(0,n.jsx)("mesh",{geometry:f.pervan_fiberglass_0.geometry,material:p.fiberglass,position:[0,-1.005,1.561],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.154,.094,.104]}),(0,n.jsx)("mesh",{geometry:f.pervane_metal_0.geometry,material:p.metal,position:[0,-1.122,1.75],scale:.034}),(0,n.jsx)("mesh",{ref:o,geometry:f.rudder_fiberglass_0.geometry,material:p.fiberglass,position:[0,-1.153,3.486],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.573,.262,.262]}),(0,n.jsx)("mesh",{geometry:f.salma_fiberglass_0.geometry,material:p.fiberglass,position:[0,-1.953,-.739],scale:[.149,.108,.756]}),(0,n.jsx)("mesh",{geometry:f.ustcam_cam_0.geometry,material:p.material_5,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,n.jsx)("mesh",{geometry:f.ustcam_fiberglass_0.geometry,material:p.fiberglass,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,n.jsx)("mesh",{geometry:f.ustgovde_fiberglass_0.geometry,material:p.fiberglass,position:[0,.832,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,n.jsx)("mesh",{geometry:f.ustgovdekzak_ahsap_0.geometry,material:p.ahsap,position:[0,.862,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,n.jsx)("mesh",{geometry:f.vinc_metal_0.geometry,material:p.metal,position:[-1.07,.977,2.02],rotation:[-Math.PI/2,0,0],scale:.065}),(0,n.jsx)("mesh",{geometry:f.yancam002_cam_0.geometry,material:p.material_5,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,n.jsx)("mesh",{geometry:f.yancam002_fiberglass_0.geometry,material:p.fiberglass,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0.geometry,material:p.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0001.geometry,material:p.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0002.geometry,material:p.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.zincir_metal_0.geometry,material:p.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,n.jsx)("mesh",{geometry:f.zincir_metal_0001.geometry,material:p.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,n.jsx)("mesh",{geometry:f.zincirdeposu_fiberglass2_0.geometry,material:p.fiberglass2,position:[0,.863,-5.779],rotation:[-Math.PI/2,0,0],scale:[.103,.088,.009]}),(0,n.jsx)("mesh",{geometry:f.zincirmakara_metal_0.geometry,material:p.metal,position:[0,.869,-6.305],rotation:[-2.159,1.564,.59],scale:[.01,.01,.016]}),(0,n.jsx)("mesh",{geometry:f.zincirray_ahsap_0.geometry,material:p.ahsap,position:[0,.864,-6.113],rotation:[-Math.PI/2,0,0],scale:[.017,.181,.003]})]}),Optimist:()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("mesh",{geometry:f.body_body_0.geometry,material:p.body,position:[-.054,.272,-.022],rotation:[-1.571,.01,.01],scale:[1,5.242,1]}),(0,n.jsx)("mesh",{geometry:f.boom_aluminium_0.geometry,material:p.aluminium,position:[-.019,2.771,.964],rotation:[0,.01,-.01],scale:[.15,.15,4.609]}),(0,n.jsx)("mesh",{geometry:f.rubber_joint__0.geometry,material:p.rubber_joint__0,position:[-.008,1.407,3.453],rotation:[1.571,-.01,-.01],scale:[-.037,.056,.079]}),(0,n.jsx)("mesh",{geometry:f.sail_sail_0.geometry,material:p.sail,position:[.038,8.739,.698],rotation:[2.356,1.557,2.356],scale:[-5.728,4.361,4.361]})]}),Ship:()=>(0,n.jsx)("mesh",{geometry:f.Object_10.geometry,material:p.material_0,position:[0,-.55,0],rotation:[-1.558,.002,3.139],scale:.004}),Windsurf:()=>(0,n.jsx)("mesh",{geometry:f["body_Material_#30_0"].geometry,material:p.Material_30,position:[-.007,0,-.071],rotation:[-Math.PI/2,0,0],scale:.002}),Sailboat:()=>(0,n.jsx)("mesh",{geometry:f.sailboat.geometry,material:p.texture,position:[0,-1.5,0],rotation:[-Math.PI,.011,-Math.PI],scale:.219})};return e[u.name]||e.Default},[u.name,f,p]);return(0,n.jsxs)("group",{...r,ref:l,dispose:null,children:[x.includes("sail")&&a&&(0,n.jsx)(er,{}),(0,n.jsx)(w,{})]})});X.L.preload(eo(),"".concat(el,"/draco/")),ec.displayName="SailBoat3D";let ed=(0,a(8345).g)({time:0,speed:1,scale:3,opacity:.5,color:new m.Ilk(7895160),foamColor:new m.Ilk(16777215),waterColor:new m.Ilk(26367),rainbowActive:0},"\n varying vec2 vUv;\n varying float vElevation;\n \n void main() {\n vUv = uv;\n \n // Add subtle vertex displacement for a wavy effect.\n float elevation = sin(position.x * 0.2 + position.y * 0.3) * 0.1;\n vElevation = elevation;\n vec3 newPosition = position + normal * elevation;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);\n }\n ","\n uniform float time;\n uniform float speed;\n uniform float scale;\n uniform float opacity;\n uniform vec3 color;\n uniform vec3 foamColor;\n uniform vec3 waterColor;\n uniform float rainbowActive; // Controls whether the rainbow effect is applied.\n\n varying vec2 vUv;\n varying float vElevation;\n\n // Standard noise functions.\n vec4 permute(vec4 x) {\n return mod(((x * 34.0) + 1.0) * x, 289.0);\n }\n\n vec2 fade(vec2 t) {\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n }\n\n float cnoise(vec2 P) {\n vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0);\n vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0);\n Pi = mod(Pi, 289.0);\n vec4 ix = Pi.xzxz;\n vec4 iy = Pi.yyww;\n vec4 fx = Pf.xzxz;\n vec4 fy = Pf.yyww;\n vec4 i = permute(permute(ix) + iy);\n vec4 gx = 2.0 * fract(i * 0.0243902439) - 1.0;\n vec4 gy = abs(gx) - 0.5;\n vec4 tx = floor(gx + 0.5);\n gx = gx - tx;\n vec2 g00 = vec2(gx.x, gy.x);\n vec2 g10 = vec2(gx.y, gy.y);\n vec2 g01 = vec2(gx.z, gy.z);\n vec2 g11 = vec2(gx.w, gy.w);\n vec4 norm = 1.79284291400159 - 0.85373472095314 *\n vec4(dot(g00, g00), dot(g10, g10), dot(g01, g01), dot(g11, g11));\n g00 *= norm.x;\n g10 *= norm.y;\n g01 *= norm.z;\n g11 *= norm.w;\n float n00 = dot(g00, vec2(fx.x, fy.x));\n float n10 = dot(g10, vec2(fx.y, fy.y));\n float n01 = dot(g01, vec2(fx.z, fy.z));\n float n11 = dot(g11, vec2(fx.w, fy.w));\n vec2 fade_xy = fade(Pf.xy);\n vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x);\n float n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n return 2.3 * n_xy;\n }\n\n // HSL to RGB conversion function.\n vec3 hsl2rgb(vec3 hsl) {\n vec3 rgb = clamp(abs(mod(hsl.x * 6.0 + vec3(0.0, 4.0, 2.0), 6.0) - 3.0) - 1.0,\n 0.0, 1.0);\n rgb = rgb * rgb * (3.0 - 2.0 * rgb);\n return hsl.z + hsl.y * (rgb - 0.5) * (1.0 - abs(2.0 * hsl.z - 1.0));\n }\n\n void main() {\n // Combine multiple layers of noise to build a complex water pattern.\n float baseNoise = cnoise(vUv * scale + vec2(time * speed, 0.0));\n float detailNoise = cnoise(vUv * scale * 2.0 + vec2(time * speed * 1.5, 0.0)) * 0.5;\n float turbulence = cnoise(vUv * scale * 4.0 + vec2(time * speed * 2.0, 0.0)) * 0.25;\n float noise = baseNoise + detailNoise + turbulence;\n \n // Create a wake pattern.\n float wake = smoothstep(0.3, 0.7, 1.0 - abs(vUv.x - 0.5) * 2.0);\n \n // Create a foam effect.\n float foam = smoothstep(0.4, 0.6, noise + wake);\n \n // Mix water and foam colors, then blend in the base color.\n vec3 finalColor = mix(waterColor, foamColor, foam);\n finalColor = mix(finalColor, color, wake * 0.5);\n \n // Adjust dynamic opacity.\n float alpha = opacity * (wake + foam * 0.5) * (1.0 - vUv.y);\n \n // Add wave highlights.\n float highlight = smoothstep(0.2, 0.4, noise + wake) *\n (1.0 - smoothstep(0.4, 0.6, noise + wake));\n finalColor += highlight * foamColor * 0.5;\n \n // --- Rainbow Effect ---\n // When rainbowActive is enabled, overlay a dynamic rainbow gradient.\n if (rainbowActive > 0.5) {\n // Cycle the hue based on the horizontal UV and time.\n float rainbowHue = mod(vUv.x + time * 0.5, 1.0);\n vec3 rainbowColor = hsl2rgb(vec3(rainbowHue, 1.0, 0.5));\n // Blend the rainbow with the original finalColor.\n finalColor = mix(finalColor, rainbowColor, 0.7);\n }\n \n gl_FragColor = vec4(finalColor, alpha);\n }\n ");(0,K.e)({TrailShaderMaterial:ed});let eu=e=>{let{color:t="#787878",waterColor:a="#0066ff",foamColor:r="#ffffff",speed:l=1,scale:o=3,opacity:s=.5}=e,c=(0,i.useRef)(),{getSignalKValue:d}=N();return(0,K.F)((e,t)=>{if(c.current){c.current.uniforms.time.value+=t;let e=d("steering.autopilot.state")||!1;c.current.uniforms.rainbowActive.value=e?1:0}}),(0,n.jsxs)("mesh",{rotation:[-Math.PI/2,0,Math.PI/2],position:[0,0,22.5],children:[(0,n.jsx)("planeGeometry",{args:[40,2.2,128,32]}),(0,n.jsx)("trailShaderMaterial",{ref:c,color:new m.Ilk(t),waterColor:new m.Ilk(a),foamColor:new m.Ilk(r),speed:l,scale:o,opacity:s,transparent:!0,depthWrite:!1,blending:m.WMw})]})};var eh=a(4752);(0,K.e)({Water:eh.B});var em=function(){let e=(0,i.useRef)(),t=(0,K.D)(e=>e.gl),a=(0,K.D)(e=>e.scene),r=(0,K.H)(m.dpR,"assets/waternormals.jpg");(0,i.useMemo)(()=>{r.wrapS=r.wrapT=m.rpg},[r]);let l=(0,i.useMemo)(()=>new m._12(1e4,1e4),[]),o=(0,i.useMemo)(()=>({textureWidth:600,textureHeight:450,waterNormals:r,sunDirection:new m.Pa4(0,1,0),sunColor:16777215,waterColor:30654,distortionScale:5,format:t.encoding,reflectivity:0}),[r,t.encoding]);(0,i.useMemo)(()=>{a.environment=null,a.background=null},[a]);let s=0;return(0,K.F)((t,a)=>{(s+=a)>.05&&(e.current&&(e.current.material.uniforms.time.value+=s),s=0)}),(0,n.jsx)("water",{ref:e,args:[l,o],"rotation-x":-Math.PI/2,position:[0,-.1,0]})};let eg=(0,i.createContext)(),ex=()=>(0,i.useContext)(eg),ef=(e,t,a,n)=>{let i=a.split(".").reduce((e,t)=>null==e?void 0:e[t],n);void 0!==i&&(e[t]=i)},ep=e=>{let{children:t}=e,[a,r]=(0,i.useState)({}),[l,o]=(0,i.useState)([]),s=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=async e=>{console.log("Fetching static vessel information...");try{let t=await e.API().then(e=>e.vessels()),a=Object.entries(t).map(e=>{let[t,a]=e,n={mmsi:t};return ef(n,"name","name",a),ef(n,"latitude","navigation.position.value.latitude",a),ef(n,"longitude","navigation.position.value.longitude",a),ef(n,"cog","navigation.courseOverGroundTrue.value",a),ef(n,"heading","navigation.headingTrue.value",a),ef(n,"length","design.length.value.overall",a),ef(n,"beam","design.beam.value",a),ef(n,"callsign","communication.callsignVhf",a),ef(n,"shipType","design.aisShipType.value.id",a),n});console.log("Fetched ".concat(a.length," vessels.")),o(a)}catch(e){console.error("Error fetching static vessel info:",e)}},t=e=>{if(!(null==e?void 0:e.updates)){console.warn("Delta is missing or does not contain updates:",e);return}let t=e=>({mmsi:e,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,heading:null}),a=e.context.replace("vessels.","");if(!a){console.warn("Update missing MMSI context:",e);return}r(n=>{let i=n[a]||t(a);return e.updates.forEach(e=>{e.values.forEach(e=>{switch(e.path){case"name":i.name=e.value;break;case"navigation.position":i.latitude=e.value.latitude,i.longitude=e.value.longitude;break;case"navigation.speedOverGround":i.sog=e.value;break;case"navigation.courseOverGroundTrue":i.cog=e.value;break;case"navigation.headingTrue":i.heading=e.value}})}),{...n,[a]:i}})};return(async()=>{try{let{signalkUrl:a}=d.getAll();if(console.log("SignalK URL:",a),!a)throw Error("SignalK URL is undefined or invalid.");let[n,i]=a.replace(/https?:\/\//,"").split(":");console.log("Connecting to SignalK at hostname: ".concat(n,", port: ").concat(i));let r=new h.default({hostname:n||"localhost",port:parseInt(i)||3e3,useTLS:a.startsWith("https"),reconnect:!0,autoConnect:!1,notifications:!1,subscriptions:[{context:"vessels.*",subscribe:[{path:"navigation.position"},{path:"navigation.speedOverGround"},{path:"navigation.courseOverGroundTrue"},{path:"navigation.headingTrue"}]}]});s.current=r,await r.connect(),console.log("SignalK client connected."),await e(r),r.on("delta",t)}catch(e){console.error("Error connecting to SignalK:",e)}})(),()=>{var e;console.log("Disconnecting SignalK client..."),null===(e=s.current)||void 0===e||e.disconnect()}},[]),(0,n.jsx)(eg.Provider,{value:{aisData:a,vesselIds:l},children:t})};var ev=a(5476);let eb=async e=>{try{let t=await a(9927)("./".concat(e,"/Scene.jsx"));return t.default?t.default:t.Model}catch(t){throw console.error("Error loading ".concat(e," component:"),t),t}},ej=e=>0===e?"windsurf":30===e?"optimist":36===e?"sailboat":"ship",ew=(0,i.forwardRef)((e,t)=>{let{position:a,visible:r,boatData:l}=e,[o,s]=(0,i.useState)(null),c=ej(l.shipType);if((0,i.useEffect)(()=>{let e=!0;return eb(c).then(t=>{e&&s(()=>t)}).catch(e=>console.error("Failed to load ".concat(c,":"),e)),()=>{e=!1}},[c]),!o)return null;let d=(e,t)=>"".concat(e,": ").concat(t||"N/A","\n"),u=[d("Name",l.name||"Unknown"),d("Length",l.length?"".concat(l.length,"m"):"N/A"),d("Type",l.shipType)].join(""),h=(l.length||10)/10;return(0,n.jsxs)("group",{ref:t,position:a,visible:r,children:[(0,n.jsx)(o,{scale:[h,h,h]}),(0,n.jsx)(ev.x,{position:[3,9,0],fontSize:.5,maxWidth:3,lineHeight:1,textAlign:"left",color:"white",anchorX:"center",anchorY:"top",font:"fonts/Roboto-Bold.ttf",children:u})]})});ew.displayName="AISBoat";let ey=e=>{if(e.material)return e;for(let t of e.children){let e=ey(t);if(e)return e}return null},eM=(e,t,a,n)=>({x:Math.PI/180*(t-n)*6371e3*Math.cos(Math.PI/180*a),y:Math.PI/180*(e-a)*6371e3}),eN=(e,t)=>{if(null!=e.sog&&null!=e.cog){let a=.51444*e.sog;return{deltaX:a*t*Math.sin(e.cog*Math.PI/180)*.7,deltaY:a*t*Math.cos(e.cog*Math.PI/180)*.7}}return{deltaX:0,deltaY:0}},eT=function(e,t,a){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=-(.7*t),r=.7*a;n?(e.position.x+=(i-e.position.x)*.1,e.position.z+=(r-e.position.z)*.1):e.position.set(i,0,r)},eS=function(e,t){let a=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t*Math.PI/180;a?e.children[0].rotation.y+=(n-e.children[0].rotation.y)*.1:e.children[0].rotation.y=n};var eC=()=>{let{aisData:e,vesselIds:t}=ex(),a=(0,i.useRef)({}),{getSignalKValue:r}=N();(0,K.F)(()=>{let n=r("navigation.position"),i=r("navigation.speedOverGround");if(!(null==n?void 0:n.latitude)||!(null==n?void 0:n.longitude)||!Object.keys(a.current).length)return;let l=performance.now(),o=t.length&&!Object.keys(e).length;Object.values(o?t:e).forEach(e=>{if(null==e.latitude||null==e.longitude||!a.current[e.mmsi])return;let t=a.current[e.mmsi],r=e.lastUpdate||l,{x:s,y:c}=eM(e.latitude,e.longitude,n.latitude,n.longitude),d=0,u=0;!o&&null!=i&&i>0&&l-r>1e3&&({deltaX:d,deltaY:u}=eN(e,(l-r)/1e3));let h=s+d,m=c+u,g=Math.sqrt((.7*h)**2+(.7*m)**2);if(g>0&&g<=2100){t.visible=!0,t.currentColor||(t.currentColor=g<350?"red":"white");let a=t.currentColor;"red"===t.currentColor&&g>385?a="white":"white"===t.currentColor&&g<350&&(a="red"),console.log("Boat ".concat(e.mmsi,": Displayed Distance = ").concat(g.toFixed(2),", Target Color = ").concat(a)),eT(t,h,m,!o),null!=e.cog?eS(t,e.cog,!o):null!=e.heading&&eS(t,e.heading,!o);let n=ey(t.children[0]);n?(t.redMaterial||(t.redMaterial=n.material.clone(),t.redMaterial.color.set("red")),t.whiteMaterial||(t.whiteMaterial=n.material.clone(),t.whiteMaterial.color.set("white")),"red"===a&&"red"!==t.currentMaterial?(n.material=t.redMaterial,t.currentMaterial="red",console.log("Swapped material to red for boat ".concat(e.mmsi))):"white"===a&&"white"!==t.currentMaterial&&(n.material=t.whiteMaterial,t.currentMaterial="white",console.log("Swapped material to white for boat ".concat(e.mmsi))),t.currentColor=a):console.warn("Material not found for boat ".concat(e.mmsi))}else t.visible=!1})});let l=(0,i.useMemo)(()=>t.filter(e=>e.mmsi&&!e.mmsi.startsWith("urn:mrn:signalk:uuid:")&&!e.mmsi.startsWith("227925790")&&!e.mmsi.startsWith("urn:mrn:imo:mmsi:230035780")).map(e=>(0,n.jsx)(ew,{ref:t=>a.current[e.mmsi]=t,position:[0,0,0],visible:!1,boatData:e},e.mmsi)),[t]);return(0,n.jsx)(n.Fragment,{children:l})},eE=a(1);let eR=i.memo(e=>{let{radius:t,isOuter:a,markerColorPrimary:r,markerColorGreen:l,markerColorRed:o}=e,s=(0,i.useMemo)(()=>{let e=[];for(let i=0;i<360;i+=10){let s=m.M8C.degToRad(i-90),c=i%30==0,d=a?c?.4:.2:c?.3:.15,u=(t+.5*d+.2)*Math.cos(s),h=(t+.5*d+.2)*Math.sin(s),g=a&&i>0&&i<61,x=a&&i>=300&&i<360,f=g?l:x?o:r;if(!a&&c){let t=0===i?"N":i.toString();e.push((0,n.jsx)(ev.x,{characters:"N0123456789",position:[u,.01,h],color:r,fontSize:.5,rotation:[-Math.PI/2,0,Math.PI/2-s],font:"fonts/Roboto-Bold.ttf",anchorY:"middle",children:t},"text-".concat(i)))}else e.push((0,n.jsx)(eE.aL,{args:[d/2,16,16],position:[u,0,h],children:(0,n.jsx)("meshBasicMaterial",{color:f})},"marker-".concat(a?"outer":"inner","-").concat(i)))}return e},[t,a,r,l,o]);return(0,n.jsx)(n.Fragment,{children:s})});eR.displayName="StaticMarkers";let eP=i.memo(e=>{let{innerRadius:t,outerRadius:a,dialColor:i,opacity:r=1,transparent:l=!1}=e;return(0,n.jsx)(eE.FM,{args:[t,a,64],rotation:[Math.PI/2,0,0],children:(0,n.jsx)("meshBasicMaterial",{color:i,side:m.ehD,transparent:l,opacity:r})})});eP.displayName="StaticRing";let eI=e=>{let{outerRadius:t,innerRadius:a}=e,{nightMode:r,getSignalKValue:l}=N(),o=r?"#ef4444":16777215,s=l("navigation.courseOverGroundTrue")||10,c=(0,i.useMemo)(()=>({innerRadius:a,outerRadius:t,dialColor:o,markerColorPrimary:0,markerColorGreen:p,markerColorRed:f}),[a,t,o,0,p,f]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("group",{rotation:[0,Math.PI-s,0],children:[(0,n.jsx)(eP,{innerRadius:c.innerRadius,outerRadius:c.outerRadius,dialColor:c.dialColor}),(0,n.jsx)(eR,{radius:c.innerRadius,isOuter:!1,markerColorPrimary:c.markerColorPrimary,markerColorGreen:c.markerColorGreen,markerColorRed:c.markerColorRed})]}),(0,n.jsxs)("group",{children:[(0,n.jsx)(eP,{innerRadius:c.innerRadius+1,outerRadius:c.outerRadius+1,dialColor:c.dialColor,transparent:!0,opacity:.5}),(0,n.jsx)(eR,{radius:c.innerRadius+1,isOuter:!0,markerColorPrimary:c.markerColorPrimary,markerColorGreen:c.markerColorGreen,markerColorRed:c.markerColorRed})]})]})};eI.displayName="CompassDial";var eA=a(718),e_=a.n(eA);let ek={TRUE_WIND:1,APP_WIND:1},eL=e=>{let{position:t=[0,0,0],rotation:a=[0,0,0],speed:i,color:r="#ffffff",fontSize:l=.5,textPosition:o=[0,.8,0],arrowSize:s=1}=e;return(0,n.jsxs)("group",{position:t,rotation:a,children:[(0,n.jsx)(ev.x,{characters:".0123456789",color:r,fontSize:l*s,position:o,font:"fonts/Roboto-Bold.ttf",children:i.toFixed(1)}),(0,n.jsxs)("mesh",{children:[(0,n.jsx)("shapeGeometry",{args:[new m.bnF([new m.FM8(0,0),new m.FM8(.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,-.577*s),new m.FM8(-.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,0)])]}),(0,n.jsx)("meshStandardMaterial",{color:r,side:m.ehD})]})]})};eL.propTypes={position:e_().instanceOf(m.Pa4).isRequired,rotation:e_().arrayOf(e_().number).isRequired,speed:e_().number.isRequired,color:e_().string.isRequired,fontSize:e_().number.isRequired,textPosition:e_().arrayOf(e_().number).isRequired};let eO=e=>{let{outerRadius:t}=e,{getSignalKValue:a}=N(),r=Math.PI/2-a("environment.wind.angleTrueGround")||0,l=b(a("environment.wind.speedOverGround"))||0,o=Math.PI/2-a("environment.wind.angleApparent")||0,s=b(a("environment.wind.speedApparent"))||0,c=(0,i.useMemo)(()=>new m.Pa4((t+.7)*Math.cos(r),0,-(t+.7)*Math.sin(r)),[t,r]),d=(0,i.useMemo)(()=>new m.Pa4((t+.7)*Math.cos(o),0,-(t+.7)*Math.sin(o)),[t,o]);return(0,n.jsxs)("group",{children:[l>0&&(0,n.jsx)(eL,{position:c,rotation:[-Math.PI/2,0,-(Math.PI/2-r)],speed:l,color:"blue",fontSize:ek.TRUE_WIND}),s>0&&(0,n.jsx)(eL,{position:d,rotation:[-Math.PI/2,0,-(Math.PI/2-o)],speed:s,color:x,fontSize:ek.APP_WIND})]})};eO.propTypes={outerRadius:e_().number.isRequired};var eF=()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eI,{outerRadius:5.6,innerRadius:5}),(0,n.jsx)(eO,{outerRadius:5.6+1.1})]}),eG=a(8181),eD=JSON.parse('{"N":{"52":[4.98,5.86,6.31,6.45,6.51,6.52,6.41],"60":[5.25,6.11,6.56,6.73,6.79,6.82,6.79],"75":[5.45,6.33,6.77,7.01,7.13,7.2,7.24],"90":[5.66,6.55,7,7.25,7.38,7.53,7.7],"110":[5.49,6.49,7.04,7.4,7.69,7.97,8.38],"120":[5.32,6.36,6.97,7.39,7.77,8.1,8.6],"135":[4.81,5.92,6.68,7.15,7.55,7.95,8.85],"150":[4.09,5.17,6.04,6.61,6.99,7.31,7.93],"angles":[52,60,75,90,110,120,135,150],"speeds":[6,8,10,12,14,16,20],"beat_angle":[43.6,42,41.2,41.2,41.7,42.1,44.2],"beat_vmg":[3.26,3.91,4.24,4.34,4.36,4.34,4.16],"run_angle":[144.8,147.8,148.5,149.6,171.8,175.4,177.2],"run_vmg":[3.54,4.48,5.23,5.73,6.17,6.67,7.36]}}');let eB={DEG2RAD:Math.PI/180,ROTATION_INTERPOLATION_FACTOR:.05,SOG_SMOOTHING_FACTOR:.1,DEFAULT_SOG:3,ANGLE_INCREMENT:10,SPHERE_SIZE:.4,SPHERE_SEGMENTS:32,DEFAULT_LINE_WIDTH:1,PLOTS_COUNT:10,FRAME_TO_MINUTE_RATIO:3600},eU=(e,t)=>26.8224*e*t*.1,ez=(e,t,a)=>{if(!e||!t)return new m.Pa4(0,0,0);let n=e*eB.DEG2RAD,i=eU(t,a);return new m.Pa4(i*Math.sin(n),0,-i*Math.cos(n))},eW=(e,t)=>{if(!(null==e?void 0:e.length))return 0;let a=0,n=e.length-1;for(;a<n;){let i=Math.floor((a+n)/2);e[i]<t?a=i+1:n=i}return a},eH=e=>{let{position:t,color:a}=e;return t?(0,n.jsxs)("mesh",{position:t,children:[(0,n.jsx)("sphereGeometry",{args:[eB.SPHERE_SIZE,eB.SPHERE_SEGMENTS,eB.SPHERE_SEGMENTS]}),(0,n.jsx)("meshStandardMaterial",{color:a})]}):null},eV=e=>{let{points:t,color:a}=e;return(null==t?void 0:t.length)?(0,n.jsx)(eG.x,{points:t,color:a,lineWidth:eB.DEFAULT_LINE_WIDTH}):null},eY=i.memo(e=>{let{timeInMinute:t,windSpeed:a}=e,r=(0,i.useRef)(eD.N),l=(0,i.useCallback)((e,t,a,n)=>(null==e?void 0:e.length)&&(null==t?void 0:t.length)&&!(e.length<=a)&&!(t.length<=a)?ez(e[a],t[a],n):(console.warn("Invalid angle or VMG data"),null),[]),o=(0,i.useCallback)((e,t)=>{let{speeds:a,angles:n,beat_angle:i,beat_vmg:l,run_angle:o,run_vmg:s}=r.current;if(!(null==a?void 0:a.length)||!(null==n?void 0:n.length))return console.warn("Invalid polar data"),null;let c=(e,t,a)=>e+a*(t-e),d=[],u=(e,a,n)=>{for(let i=e;i<=a;i+=eB.ANGLE_INCREMENT)d.push(ez(i,n(i),t))};return u(0,i[e],t=>c(0,l[e],t/i[e])),n.forEach(a=>{if(a>i[e]&&a<o[e]){var n;let i=(null===(n=r.current[Math.floor(a)])||void 0===n?void 0:n[e])||0;d.push(ez(a,i,t))}}),u(o[e],180,()=>s[e]),new m.YT8(d,!0)},[]),s=(0,i.useMemo)(()=>{var e;let n=r.current;if(!(null==n?void 0:null===(e=n.speeds)||void 0===e?void 0:e.length))return console.warn("Invalid polar data structure"),{curve:null,beat:null,run:null};let i=eW(n.speeds,a);return{curve:o(i,t),beat:l(n.beat_angle,n.beat_vmg,i,t),run:l(n.run_angle,n.run_vmg,i,t)}},[t,a,l,o]);return(0,n.jsx)(n.Fragment,{children:[0,-Math.PI].map((e,t)=>(0,n.jsxs)("group",{rotation:[0,0,e],children:[s.curve&&(0,n.jsx)(eV,{points:s.curve.getPoints(100),color:x}),(0,n.jsx)(eH,{position:s.beat,color:p}),(0,n.jsx)(eH,{position:s.run,color:f})]},t))})});eY.displayName="PolarPlot";var eK=function(){let e=(0,i.useRef)([]),[t,a]=(0,i.useState)([]),r=(0,i.useRef)(0),l=(0,i.useRef)([]),o=(0,i.useRef)(eB.DEFAULT_SOG),{getSignalKValue:s}=N(),c=s("environment.wind.angleApparent"),d=b(s("environment.wind.speedOverGround"))||0,u=s("navigation.speedOverGround")||eB.DEFAULT_SOG;return(0,i.useEffect)(()=>{let t=Array.from({length:eB.PLOTS_COUNT},(e,t)=>({id:t,timeInMinute:5*(t+1)}));a(t),e.current=t.map(()=>new m.ZAu),l.current=Array(eB.PLOTS_COUNT).fill(0)},[]),(0,K.F)((a,n)=>{r.current+=1,o.current=m.M8C.lerp(o.current,u,eB.SOG_SMOOTHING_FACTOR),t.forEach((t,a)=>{let n=e.current[a];if(n&&t.timeInMinute-r.current/eB.FRAME_TO_MINUTE_RATIO>0){let e=l.current[a],t=m.M8C.lerp(e,c,eB.ROTATION_INTERPOLATION_FACTOR);n.rotation.set(0,t,0),l.current[a]=t}})}),(0,n.jsx)(n.Fragment,{children:t.map((t,a)=>(0,n.jsx)("group",{ref:t=>{t&&(e.current[a]=t)},children:(0,n.jsx)(eY,{timeInMinute:t.timeInMinute,windSpeed:d})},t.id))})},eX=()=>{let{states:e}=N(),t=(0,i.useRef)();return(0,n.jsxs)(i.Suspense,{fallback:(0,n.jsx)(W.V,{children:"Loading..."}),children:[(0,n.jsx)(H.c,{makeDefault:!0,fov:60,near:1,far:1e3,position:[0,5,20]}),(0,n.jsx)(V.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(Y.qA,{files:"./assets/ocearo_env.hdr",background:!1,intensity:.8}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:2,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001,color:"#ffd1a6"}),(0,n.jsx)("directionalLight",{position:[10,10,-10],intensity:.3}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsxs)("group",{position:[0,-3,0],children:[(0,n.jsx)(ec,{position:[0,0,.7],scale:[.7,.7,.7],ref:t,showSail:!0}),e.showOcean&&(0,n.jsx)(em,{}),(0,n.jsx)(eu,{}),(0,n.jsx)(eK,{}),e.ais&&(0,n.jsx)(ep,{children:(0,n.jsx)(eC,{})}),(0,n.jsx)(eF,{visible:!1})]})]})},eq=()=>{let{nightMode:e,setNightMode:t,states:a,toggleState:i}=N(),r=e?"text-oNight":"text-oGray",l=e=>{let t={autopilot:"autopilot"===e,anchorWatch:"anchorWatch"===e,parkingMode:"parkingMode"===e};Object.keys(t).forEach(e=>{i(e,t[e])})};return(0,n.jsxs)("div",{className:"text-lg",children:[(0,n.jsx)("button",{onClick:()=>l("autopilot"),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.lnS,className:a.autopilot?"text-oBlue":r})}),(0,n.jsx)("button",{onClick:()=>l("anchorWatch"),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.SJR,className:a.anchorWatch?"text-oYellow":r})}),(0,n.jsx)("button",{onClick:()=>l("parkingMode"),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.BQ9,className:a.parkingMode?"text-oGreen":r})}),(0,n.jsx)("button",{onClick:()=>t(!e),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.DBF,className:e?"text-oNight":r})}),(0,n.jsx)("button",{onClick:()=>i("showOcean"),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.L02,className:a.showOcean?"text-oBlue":r})}),(0,n.jsx)("button",{onClick:()=>i("ais"),className:"p-1",children:(0,n.jsx)(I.G,{icon:A.mDh,className:a.ais?"text-oGreen":r})})]})};let eZ={SOG:"navigation.speedOverGround",VMG:"performance.velocityMadeGood",STW:"navigation.speedThroughWater",POL:"performance.polarSpeedRatio"};var eJ=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)("SOG"),l=(0,i.useMemo)(()=>{let e={};for(let[a,n]of Object.entries(eZ)){let i=t(n);null!=i&&(e[a]=b(i))}return e},[t]),o=Object.keys(l),s=void 0!==l[a]?a:o[0],c=l[s],d=(0,i.useCallback)(()=>{if(0===o.length)return;let e=(o.indexOf(s)+1)%o.length;r(o[e])},[o,s]),u=e?"text-oNight":"text-oGray";return 0===o.length?(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsx)("div",{className:"text-6xl font-bold text-gray-400",children:"--"}),(0,n.jsx)("div",{className:"text-lg ".concat(u),children:"NO DATA"})]}):(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsx)("div",{className:"text-6xl font-bold cursor-pointer ".concat(e?"text-oNight":"text-white"),onClick:d,role:"button",tabIndex:0,"aria-label":"Current speed: ".concat(c," ").concat(s,". Click to change speed type."),children:(null==c?void 0:c.toFixed(1))||"--"}),(0,n.jsx)("div",{className:"text-lg ".concat(u),children:s})]})};let eQ={BATTERIES:"batteries",TANKS:"tanks"},e$={FRESH_WATER:{id:"freshWater",label:"Fresh Water",path:"tanks.freshWater.0.currentLevel",icon:"\uD83D\uDCA7",color:"bg-oBlue"},FUEL:{id:"fuel",label:"Fuel",path:"tanks.fuel.0.currentLevel",icon:"⛽",color:"bg-oYellow"},BLACK_WATER:{id:"blackWater",label:"Black Water",path:"tanks.blackWater.0.currentLevel",icon:"\uD83D\uDEB0",color:"bg-oGray"}},e0=e=>{let{level:t,type:a}=e,i=Math.max(0,Math.min(100,t)),{label:r,icon:l,color:o}=e$[a];return(0,n.jsxs)("div",{className:"flex items-center space-x-3 my-2",children:[(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)("span",{className:"text-sm",children:l}),(0,n.jsx)("div",{className:"relative w-20 h-4 bg-oGray rounded-lg overflow-hidden",children:(0,n.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(o," transition-all duration-300"),style:{width:"".concat(i,"%")}})})]}),(0,n.jsxs)("span",{className:"text-sm font-medium",children:[r,": ",i,"%"]})]})},e1=e=>{let{batteryLevel:t,batteryNumber:a,voltage:r}=e,[l,o]=(0,i.useState)(!1),s=Math.max(0,Math.min(100,t)),c=r>j.CHARGING_THRESHOLD,d=(0,i.useMemo)(()=>s>j.WARNING_THRESHOLD?"bg-oGreen":s>j.DANGER_THRESHOLD?"bg-oYellow":"bg-oRed",[s]);return(0,n.jsxs)("div",{className:"flex items-center space-x-3 my-2 relative",onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[(0,n.jsxs)("div",{className:"relative w-8 h-4 bg-oGray rounded-sm border border-oGray flex items-center justify-center",children:[(0,n.jsx)("div",{className:"absolute -right-1 w-1 h-3 bg-oGray rounded-sm"}),(0,n.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(d," transition-all duration-300 rounded-sm"),style:{width:"".concat(s,"%")}}),(0,n.jsx)("span",{className:"relative z-10 text-xs text-black font-bold",children:a})]}),(0,n.jsxs)("span",{className:"text-sm font-medium ".concat(s<=j.DANGER_THRESHOLD?"text-oRed animate-pulse":""),children:[s,"%"]}),c&&(0,n.jsx)("span",{className:"text-oGreen ml-1",children:"⚡"}),l&&(0,n.jsxs)("div",{className:"absolute -left-20 top-10 bg-gray-800 text-white px-2 py-1 rounded text-xs whitespace-nowrap",children:["Voltage: ",null==r?void 0:r.toFixed(1),"V ",c&&"(Charging)"]})]})};var e2=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)(eQ.BATTERIES),l=(0,i.useMemo)(()=>{let e=t("electrical.batteries.1.capacity.stateOfCharge"),a=t("electrical.batteries.1.voltage");return[{level:null===e?w(a):e,number:1,voltage:a}].filter(e=>null!==e.level)},[t]),o=(0,i.useMemo)(()=>({FRESH_WATER:t(e$.FRESH_WATER.path)||40,FUEL:t(e$.FUEL.path)||75,BLACK_WATER:t(e$.BLACK_WATER.path)||20}),[t]),s=()=>{r(e=>e===eQ.BATTERIES?eQ.TANKS:eQ.BATTERIES)};return(0,n.jsx)("div",{className:"".concat(e?"text-oNight":"text-oGray"," rounded-lg transition-all duration-300 hover:bg-gray-800/10 cursor-pointer"),onClick:s,role:"button",tabIndex:0,"aria-label":"Toggle between ".concat(a===eQ.BATTERIES?"tanks":"batteries"," display"),onKeyPress:e=>"Enter"===e.key&&s(),children:a===eQ.BATTERIES?(0,n.jsx)("div",{className:"space-y-2",children:l.map(e=>(0,n.jsx)(e1,{batteryLevel:e.level,batteryNumber:e.number,voltage:e.voltage},e.number))}):(0,n.jsx)("div",{className:"space-y-2",children:Object.entries(e$).map(e=>{let[t,a]=e;return(0,n.jsx)(e0,{type:t,level:o[t]},t)})})})},e5=()=>{let{nightMode:e}=N(),{getSignalKValue:t}=N(),a=180*(t("steering.rudderAngle")||0)/Math.PI;return(0,n.jsx)("div",{style:{width:"480px",paddingBottom:"25px"},className:"mx-auto",children:(0,n.jsxs)("div",{className:"w-full bg-oGray h-1 rounded-full relative mt-2",children:[(()=>{let t=[];for(let a=-60;a<=60;a+=10){let i=a/120*100;t.push((0,n.jsx)("div",{className:"absolute h-2 w-px bg-oGray",style:{left:"".concat(50+i,"%"),transform:"translateX(-20%)"},children:(0,n.jsx)("span",{className:"text-xs ".concat(e?"text-oNight":"text-oGray"),style:{transform:"translateY(-50%)"},children:a})},a))}return t})()," ",(0,n.jsx)("div",{className:"absolute top-0 h-1 rounded-full transition-all duration-300 ease-in-out ".concat(a<0?"bg-oRed":"bg-oGreen"),style:{width:"".concat(Math.abs(a)/120*100,"%"),left:"50%",transform:a<0?"translateX(-100%)":"translateX(0)"}})]})})};let e4={MIN:10,MAX:90},e3={RISING:{BACKGROUND:"bg-oGreen",TEXT:"text-oGreen"},FALLING:{BACKGROUND:"bg-oYellow",TEXT:"text-oYellow"}},e6={NIGHT:"text-oNight",DAY:"text-white"};var e7=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)(240),[l,o]=(0,i.useState)({level:null,high:null,low:null,timeLow:null,timeHigh:null,coefficient:null,isRising:null}),s=(0,i.useCallback)(e=>{if(!e)return null;let[t,a]=e.split(":").map(Number);return 60*t+a},[]),c=(0,i.useCallback)((e,t,a)=>{let n=s(e),i=s(t),r=s(a);return!!n&&!!i&&!!r&&(i<r?n>=i&&n<=r:n>=i||n<=r)},[s]),d=(0,i.useCallback)((e,t,a)=>a<=t||!e?0:Math.min(100,Math.max(0,(e-t)/(a-t)*100)),[]);(0,i.useEffect)(()=>{let e=()=>{let e=window.innerHeight;r(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,i.useEffect)(()=>{let e=new Date().toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1}),a={level:t("environment.tide.heightNow"),high:t("environment.tide.heightHigh"),low:t("environment.tide.heightLow"),timeLow:t("environment.tide.timeLow"),timeHigh:t("environment.tide.timeHigh"),coefficient:t("environment.tide.coeffNow")};Object.values(a).every(e=>null!=e)&&o({...a,isRising:c(e,a.timeLow,a.timeHigh)})},[t,c]);let{level:u,high:h,low:m,timeLow:g,timeHigh:x,coefficient:f,isRising:p}=l,v=e?e6.NIGHT:e6.DAY,b=p?e3.RISING:e3.FALLING,j=(0,i.useMemo)(()=>d(u,m,h),[u,m,h,d]);if(Object.values(l).some(e=>null===e))return null;let w=j>e4.MIN&&j<e4.MAX;return(0,n.jsxs)("div",{className:"flex flex-col items-center",children:[(0,n.jsx)("div",{className:"text-sm ".concat(v),children:"La Rochelle"}),(0,n.jsxs)("div",{className:"text-sm mb-2 ".concat(v," flex items-center gap-1"),children:[x,(0,n.jsx)("span",{className:"inline-block transform ".concat(!p&&"rotate-180"," ").concat(b.TEXT),children:"▲"}),(0,n.jsx)("span",{children:f})]}),(0,n.jsxs)("div",{className:"relative flex flex-col w-8",style:{height:a},children:[(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium"),style:{top:"0%",left:"60%"},children:[h,"m"]}),w&&(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium transition-opacity duration-300"),style:{bottom:"".concat(j,"%"),left:"60%"},children:[u.toFixed(2),"m"]}),(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium"),style:{bottom:"0%",left:"60%"},children:[m,"m"]}),(0,n.jsx)("div",{className:"flex flex-col justify-end bg-oGray rounded-3xl w-2 overflow-hidden",style:{height:a},children:(0,n.jsx)("div",{role:"progressbar",className:"".concat(b.BACKGROUND," w-2 rounded-3xl transition-all duration-500"),"aria-valuenow":j,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Tide level: ".concat(u.toFixed(2)," meters"),style:{height:"".concat(j,"%")}})})]}),(0,n.jsx)("div",{className:"text-sm mt-2 ".concat(v),children:g})]})};let e8={MOBILE_TEMPLATE:{COLOR:"yellow",WIDTH_FACTOR:.8,LENGTH_FACTOR:2.5,MAX_LENGTH_MULTIPLIER:3.5,CURVATURE_SENSITIVITY:{RUDDER:1.5,WIND:.25,CURRENT:.3,LEEWAY:.15,DRIFT:.1}},NEUTRAL_TEMPLATE:{COLOR:"blue",WIDTH_FACTOR:.7,LENGTH_FACTOR:.9},ANTICOLLISION_TEMPLATE:{COLOR:"red",WIDTH_FACTOR:1.5,LENGTH_FACTOR:.8}};var e9=e=>{let{rudderAngle:t=0,sog:a=5,boatWidth:r=2,windSpeed:l=0,windDirection:o=0,currentSpeed:s=0,currentDirection:c=0,leewayAngle:d=0,driftFactor:u=0,maxCurvePoints:h=50}=e,g=(0,i.useRef)(),x=(0,i.useRef)(),f=(0,i.useRef)(),p=(0,i.useCallback)(()=>{let e=e=>m.M8C.degToRad(e),t=e(o),a=e(d),n=Math.cos(t+a)*l*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.WIND,i=Math.sin(t+a)*l*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.WIND,r=e(c),h=Math.cos(r)*s*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.CURRENT,g=Math.sin(r)*s*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.CURRENT;return{x:(n+h)*(1+u*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.DRIFT),z:(i+g)*(1+u*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.DRIFT)}},[l,o,s,c,d,u]),v=(0,i.useCallback)(()=>{let e=r*e8.MOBILE_TEMPLATE.MAX_LENGTH_MULTIPLIER,a=Math.min(2*r*e8.MOBILE_TEMPLATE.LENGTH_FACTOR,e),n=[],i=1.5*p().x;if(.1>Math.abs(t)){let e=.5*i,t=Math.max(r/Math.tan(m.M8C.degToRad(5+Math.abs(e))),.5*r),l=a/t,o=new m.FM8(e>0?t:-t,0),s=e>0?Math.PI:0;for(let a=0;a<=h;a++){let i=s+a/h*(e>0?l:-l),r=o.x+t*Math.cos(i),c=o.y+t*Math.sin(i);n.push(new m.Pa4(r,0,c))}}else{let e=m.M8C.clamp(1.2*Math.abs(t)+i,0,85),l=r/Math.tan(m.M8C.degToRad(e*e8.MOBILE_TEMPLATE.CURVATURE_SENSITIVITY.RUDDER)),o=m.M8C.clamp(a/l,0,1.25*Math.PI);if(t>0){let e=new m.FM8(l,0),t=Math.PI;for(let a=0;a<=h;a++){let i=a/h,r=m.M8C.lerp(t,t+o,i),s=e.x+l*Math.cos(r),c=e.y+l*Math.sin(r);n.push(new m.Pa4(s,0,c))}}else{let e=new m.FM8(-l,0);for(let t=0;t<=h;t++){let a=t/h,i=m.M8C.lerp(0,0-o,a),r=e.x+l*Math.cos(i),s=e.y+l*Math.sin(i);n.push(new m.Pa4(r,0,s))}}}let l=n.map((e,t)=>{let a;(a=0===t?n[1].clone().sub(e):e.clone().sub(n[t-1])).normalize();let i=new m.Pa4(-a.z,0,a.x),l=r/1.8;return{left:e.clone().add(i.multiplyScalar(l)),right:e.clone().sub(i.multiplyScalar(l))}});return[...l.map(e=>e.left),l[l.length-1].right,...l.reverse().map(e=>e.right)]},[r,t,h,p]),b=(0,i.useCallback)(e=>{if("MOBILE_TEMPLATE"===e)return v();let t=e8[e],a=2*r*t.LENGTH_FACTOR,n=r*t.WIDTH_FACTOR,i=[],l=Math.floor(h/4);for(let e=0;e<=l;e++){let t=e/l;i.push(new m.Pa4(-n/2,0,-a*t))}i.push(new m.Pa4(n/2,0,-a));for(let e=l;e>=0;e--){let t=e/l;i.push(new m.Pa4(n/2,0,-a*t))}return i},[r,h,v]);return(0,i.useEffect)(()=>{g.current&&x.current&&f.current&&(g.current.geometry.setFromPoints(b("MOBILE_TEMPLATE")),x.current.geometry.setFromPoints(b("NEUTRAL_TEMPLATE")),f.current.geometry.setFromPoints(b("ANTICOLLISION_TEMPLATE")))},[b]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("line",{ref:g,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:e8.MOBILE_TEMPLATE.COLOR,linewidth:2})]}),(0,n.jsxs)("line",{ref:x,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:e8.NEUTRAL_TEMPLATE.COLOR,linewidth:2})]}),(0,n.jsxs)("line",{ref:f,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:e8.ANTICOLLISION_TEMPLATE.COLOR,linewidth:2})]})]})};let te=e=>{let{position:t,rotation:a,speed:i,color:r="#ffffff",fontSize:l=.5,textPosition:o=[0,.8,0],arrowSize:s=1}=e;return(0,n.jsxs)("group",{position:t,rotation:a,children:[(0,n.jsx)(ev.x,{characters:"0123456789.",color:r,fontSize:l*s,position:o,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",children:i.toFixed(1)}),(0,n.jsxs)("mesh",{children:[(0,n.jsx)("shapeGeometry",{args:[new m.bnF([new m.FM8(0,0),new m.FM8(.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,-.577*s),new m.FM8(-.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,0)])]}),(0,n.jsx)("meshStandardMaterial",{color:r,side:m.ehD})]})]})};te.propTypes={position:e_().arrayOf(e_().number),rotation:e_().arrayOf(e_().number),speed:e_().number.isRequired,color:e_().string,fontSize:e_().number,textPosition:e_().arrayOf(e_().number),arrowSize:e_().number},te.defaultProps={position:[0,0,0],rotation:[0,0,0],color:"#ffffff",fontSize:.5,textPosition:[0,.8,0],arrowSize:1};let tt=e=>{let{outerRadius:t}=e,{getSignalKValue:a}=N(),r=a("environment.current")||{setTrue:0,drift:0},l=(0,i.useMemo)(()=>{let e=r.setTrue||0;return[(t+.7)*Math.cos(e),0,-(t+.7)*Math.sin(e)]},[t,r.setTrue]);return!r.drift||r.drift<=0?null:(0,n.jsx)("group",{children:(0,n.jsx)(te,{position:l,rotation:[-Math.PI/2,0,-(Math.PI/2-(r.setTrue||0))],speed:r.drift,color:p,arrowSize:1.2})})};tt.propTypes={outerRadius:e_().number.isRequired};var ta=()=>{let e=(0,i.useRef)(),{getSignalKValue:t}=N(),a=t("steering.rudderAngle")||0,r=t("navigation.speedOverGround")||0,l=t("environment.wind.angleApparent")||0,o=b(t("environment.wind.speedApparent"))||0,s=t("environment.current")||{setTrue:0,drift:0};return(0,n.jsxs)(i.Suspense,{fallback:(0,n.jsx)(W.V,{center:!0,children:"Loading..."}),children:[(0,n.jsx)(H.c,{makeDefault:!0,fov:60,near:1,far:1e3,position:[0,1,10]}),(0,n.jsx)(V.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(Y.qA,{files:"./assets/ocearo_env.hdr",background:!1,intensity:.8}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:1.8,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001,color:"#ffd1a6"}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsxs)("group",{position:[0,-3,0],children:[(0,n.jsx)(ec,{position:[0,0,.7],scale:[.5,.5,.5],ref:e,showSail:!1}),(0,n.jsx)(eO,{outerRadius:5}),(0,n.jsx)(tt,{outerRadius:5}),(0,n.jsx)("group",{position:[0,0,-5],children:(0,n.jsx)(e9,{rudderAngle:a,sog:r,windSpeed:o,windDirection:l,currentSpeed:s.drift,currentDirection:s.setTrue,boatWidth:2,leewayAngle:Math.min(Math.sin(Math.abs(l*Math.PI/180))*o*.02,10),driftFactor:r<.1?0:Math.min(s.drift/r,1),maxCurvePoints:100})})]})]})};let tn=(e,t,a,n)=>{let i=(a-e)*Math.PI/180,r=(n-t)*Math.PI/180,l=Math.sin(i/2)*Math.sin(i/2)+Math.cos(e*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(r/2)*Math.sin(r/2);return 2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))*6371e3};var ti=()=>{let e=(0,i.useRef)(),[t,a]=(0,i.useState)(null),{getSignalKValue:r}=N();return(0,i.useEffect)(()=>{let e=r("navigation.position");e&&!t&&a({latitude:e.latitude,longitude:e.longitude})},[r,t]),(0,i.useEffect)(()=>{if(e.current){let t=new m.u9r,a=[];for(let e=0;e<=64;e++){let t=e/64*Math.PI*2;a.push(50*Math.cos(t),0,50*Math.sin(t))}t.setAttribute("position",new m.a$l(a,3)),e.current.geometry=t}},[]),(0,K.F)(()=>{if(e.current&&t){let a=r("navigation.position");if(a){let n=tn(t.latitude,t.longitude,t.latitude,a.longitude),i=tn(t.latitude,t.longitude,a.latitude,t.longitude),r=a.longitude>t.longitude?n:-n,l=a.latitude>t.latitude?i:-i;e.current.position.set(r,-6.9,l)}}}),(0,n.jsx)("line",{ref:e,children:(0,n.jsx)("lineBasicMaterial",{attach:"material",color:"green",linewidth:2})})},tr=()=>{let e=(0,i.useRef)(),{size:t}=(0,K.D)(),a=t.width/t.height;return(0,n.jsxs)(i.Suspense,{fallback:(0,n.jsx)(W.V,{children:"Loading..."}),children:[(0,n.jsx)(H.c,{makeDefault:!0,fov:25,aspect:a,near:1,far:1e3,position:[32,10,-32]}),(0,n.jsx)(V.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(Y.qA,{files:"./assets/ocearo_env.hdr",background:!1}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:2,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsx)(ec,{ref:e,scale:[1.3,1.3,1.3],position:[0,-6,0]}),(0,n.jsx)(ti,{}),(0,n.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,-7,0],receiveShadow:!0,children:[(0,n.jsx)("planeGeometry",{args:[100,100]}),(0,n.jsx)("shaderMaterial",{uniforms:{uColor:{value:new m.Ilk("#111111")},uBlurRadius:{value:.1}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform vec3 uColor;\n uniform float uBlurRadius;\n varying vec2 vUv;\n\n void main() {\n float distanceToCenter = length(vUv - vec2(0.5));\n float alpha = smoothstep(0.5 - uBlurRadius, 0.5 + uBlurRadius, distanceToCenter);\n gl_FragColor = vec4(uColor, 1.0 - alpha);\n }\n "})]})]})},tl=()=>{let{nightMode:e,getSignalKValue:t}=N(),a=t("navigation.position"),i=(e,t)=>{if(null==e)return"--";let a=Math.abs(e),n=Math.floor(a),i=((a-n)*60).toFixed(3);return"".concat(n,"\xb0").concat(i,"'").concat(t?e>=0?"N":"S":e>=0?"E":"W")};return(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsxs)("div",{className:"text-3xl font-bold cursor-pointer flex gap-2 ".concat(e?"text-oNight":"text-white"),children:[(0,n.jsx)("span",{children:i(a.latitude,!0)}),(0,n.jsx)("span",{children:i(a.longitude,!1)})]}),(0,n.jsx)("div",{className:"text-lg ".concat(e?"text-oNight":"text-oGray"),children:(()=>{let e=new Date;try{let t=navigator.language||"en-US";return e.toLocaleString(t,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:void 0})}catch(t){return console.warn("Error formatting date with user locale, falling back to en-US",t),e.toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}})()})]})};let to={DANGER:3,WARNING:5,MAX_DEPTH:50},ts={DANGER:"bg-oRed",WARNING:"bg-oYellow",SAFE:"bg-oBlue"},tc={NIGHT:"text-oNight",DAY:"text-white"};var td=()=>{let{nightMode:e,getSignalKValue:t}=N(),[a,r]=(0,i.useState)(null),[l,o]=(0,i.useState)(240);(0,i.useEffect)(()=>{let e=()=>{let e=window.innerHeight;o(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,i.useEffect)(()=>{let e=t("environment.depth.belowTransducer");r(null!=e?Number(e.toFixed(1)):null)},[t]);let s=(0,i.useMemo)(()=>null===a?0:Math.min(a/to.MAX_DEPTH*100,100),[a]),c=(0,i.useMemo)(()=>null===a?ts.SAFE:a<to.DANGER?ts.DANGER:a<to.WARNING?ts.WARNING:ts.SAFE,[a]),d=e?tc.NIGHT:tc.DAY,u=(0,i.useCallback)(e=>null===e?"--":"".concat(e," m"),[]);return(0,n.jsxs)("div",{className:"flex flex-col items-center",children:[(0,n.jsx)("div",{className:"text-sm mb-2 ".concat(d),children:"Depth"}),(0,n.jsx)(()=>(0,n.jsx)("div",{className:"w-2 ".concat(c," rounded-lg overflow-hidden mb-4"),style:{height:l},role:"progressbar","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":to.MAX_DEPTH,"aria-label":"Water depth: ".concat(u(a)),children:(0,n.jsx)("div",{className:"bg-oGray transition-all duration-500 ease-in-out",style:{height:"".concat(100-s,"%")}})}),{}),(0,n.jsx)("div",{className:"text-sm mt-2 ".concat(d," ").concat(a<to.DANGER?"animate-pulse":""),children:u(a)})]})},tu=()=>{let{states:e}=N();return(0,n.jsxs)("div",{className:"w-full h-full relative ",children:[(0,n.jsxs)("div",{className:"absolute top-2 left-2 z-10 space-y-0",children:[(0,n.jsx)(eq,{}),!e.anchorWatch&&(0,n.jsx)(eJ,{}),e.anchorWatch&&(0,n.jsx)(tl,{})]}),(0,n.jsx)("div",{className:"absolute top-2 z-10 right-2",children:(0,n.jsx)(e2,{})}),(0,n.jsx)("div",{className:"absolute left-2 bottom-2 z-20 flex flex-col items-center",children:(0,n.jsx)(td,{})}),(0,n.jsx)("div",{className:"absolute right-2 bottom-2 z-20 flex flex-col items-center",children:(0,n.jsx)(e7,{})}),!e.anchorWatch&&(0,n.jsx)("div",{className:"absolute bottom-2 left-1/2 transform -translate-x-1/2 z-10",children:(0,n.jsx)(e5,{})}),(0,n.jsx)("div",{className:"absolute left-1/2 transform -translate-x-1/2 w-full h-full",children:(0,n.jsx)(z.Xz,{style:{width:"100%",height:"100%"},shadows:!1,dpr:[1,1],gl:{antialias:!0,physicallyCorrectLights:!1,toneMapping:m.EoG,toneMappingExposure:1},children:e.parkingMode?(0,n.jsx)(ta,{}):e.anchorWatch?(0,n.jsx)(tr,{}):(0,n.jsx)(eX,{})})})]})};class th extends i.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){this.setState({error:e,errorInfo:t}),console.error("Error caught in Error Boundary:",e,t)}render(){if(this.state.hasError){let{error:e,errorInfo:t}=this.state;return(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen bg-gray-100 text-gray-900",children:[(0,n.jsx)("h1",{className:"text-3xl font-bold text-red-600 mb-4",children:"Something went wrong."}),(0,n.jsxs)("p",{className:"text-lg mb-2",children:[(0,n.jsx)("strong",{children:"Error:"})," ",e?e.toString():"Unknown error"]}),t&&(0,n.jsxs)("details",{className:"whitespace-pre-wrap bg-gray-200 p-4 rounded-lg mb-4",children:[(0,n.jsx)("summary",{className:"cursor-pointer text-blue-500 underline",children:"Stack Trace"}),(0,n.jsx)("pre",{className:"mt-2",children:t.componentStack})]}),(0,n.jsxs)("div",{className:"flex space-x-4",children:[(0,n.jsx)("button",{onClick:this.handleRefresh,className:"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600",children:"Refresh Page"}),(0,n.jsx)("button",{onClick:this.handleExitFullscreen,className:"px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600",children:"Exit Fullscreen"})]})]})}return this.props.children}constructor(e){super(e),this.handleRefresh=()=>{window.location.reload()},this.handleExitFullscreen=()=>{document.fullscreenElement&&(window.close(),document.exitFullscreen().catch(e=>{console.error("Failed to exit fullscreen:",e)}))},this.state={hasError:!1,error:null,errorInfo:null}}}let tm={BOAT:"boat",APP:"app",SPLIT:"split"},tg=()=>window.innerWidth>=1366;function tx(){let e=(0,i.useRef)(!1),[t,a]=(0,i.useState)(null),[r,o]=(0,i.useState)("navigation"),[s,c]=(0,i.useState)(!1),[d,u]=(0,i.useState)(!1);(0,i.useEffect)(()=>{let t;a(tg()?tm.SPLIT:tm.BOAT),e.current=!0;let n=()=>{clearTimeout(t),t=setTimeout(()=>{a(tg()?tm.SPLIT:tm.BOAT)},250)};return window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n),clearTimeout(t)}},[]);let h=(0,i.useCallback)(()=>{c(e=>!e)},[]),m=(0,i.useCallback)(e=>{a(e)},[]),g=(0,i.useCallback)((e,t)=>{let a=window.innerWidth/5;t.x>a?m(tm.BOAT):t.x<-a?m(tm.APP):m(tm.SPLIT)},[m]),x=(0,i.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(e=>{console.error("Fullscreen error:",e.message)})},[]),f=(0,i.useCallback)(e=>{t===tm.BOAT&&m(tm.APP),o(e)},[t,m]),p=(0,i.useCallback)(()=>{d?(m(tm.BOAT),u(!1)):(f("settings"),u(!0))},[d,m,f]),v=(0,i.useMemo)(()=>null===t?{}:{leftPane:"transition-all duration-300 ".concat(t===tm.BOAT?"w-full":t===tm.APP?"hidden":"w-2/5"," bg-leftPaneBg h-full relative"),rightPane:"transition-all duration-300 ".concat(t===tm.APP?"w-full":t===tm.BOAT?"hidden":"w-3/5"," h-full bg-rightPaneBg p-4")},[t]);return e.current?(0,n.jsx)(th,{children:(0,n.jsx)(M,{children:(0,n.jsxs)("div",{className:"h-screen flex flex-col bg-black relative",children:[(0,n.jsxs)("div",{className:"flex flex-1",children:[(0,n.jsx)("div",{className:v.leftPane,children:(0,n.jsx)(tu,{})}),(0,n.jsx)(l(),{axis:"x",onDrag:g,position:{x:0,y:0},handle:".handle",bounds:"parent",children:(0,n.jsx)("div",{className:"handle w-1 bg-leftPaneBg h-full cursor-col-resize transition-all duration-200 flex items-center justify-center",children:(0,n.jsx)("div",{className:"rounded-full w-3 bg-gray-600 h-40 transition-all duration-200 hover:bg-gray-500"})})}),(0,n.jsx)("div",{className:v.rightPane,children:(0,n.jsx)(P,{view:r})})]}),(0,n.jsx)("div",{className:"w-full h-16 bg-black flex items-center justify-center",children:(0,n.jsx)(B,{setRightView:f,toggleAppMenu:h,toggleSettings:p})}),s&&(0,n.jsx)(U,{currentViewMode:t,toggleViewMode:m,handleSetRightView:f,toggleFullscreen:x,setShowAppMenu:c})]})})}):(0,n.jsx)("div",{className:"h-screen bg-black flex items-center justify-center",children:(0,n.jsx)("div",{className:"animate-pulse text-white",children:"Loading..."})})}}},function(e){e.O(0,[689,870,676,918,875,971,117,744],function(){return e(e.s=7343)}),_N_E=e.O()}]);
@@ -0,0 +1,3 @@
1
+ @font-face{font-family:__geistSans_873ced;src:url(/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff) format("woff");font-display:swap;font-weight:100 900}@font-face{font-family:__geistSans_Fallback_873ced;src:local("Arial");ascent-override:85.83%;descent-override:20.52%;line-gap-override:9.33%;size-adjust:107.19%}.__className_873ced{font-family:__geistSans_873ced,__geistSans_Fallback_873ced}.__variable_873ced{--font-geist-sans:"__geistSans_873ced","__geistSans_Fallback_873ced"}@font-face{font-family:__geistMono_6df010;src:url(/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff) format("woff");font-display:swap;font-weight:100 900}@font-face{font-family:__geistMono_Fallback_6df010;src:local("Arial");ascent-override:69.97%;descent-override:16.73%;line-gap-override:7.61%;size-adjust:131.49%}.__className_6df010{font-family:__geistMono_6df010,__geistMono_Fallback_6df010}.__variable_6df010{--font-geist-mono:"__geistMono_6df010","__geistMono_Fallback_6df010"}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
+ ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-left-10{left:-2.5rem}.-left-20{left:-5rem}.-right-1{right:-.25rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-20{bottom:5rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-2{right:.5rem}.top-0{top:0}.top-10{top:2.5rem}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.-mb-6{margin-bottom:-1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-60{height:15rem}.h-64{height:16rem}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-2{width:.5rem}.w-2\/5{width:40%}.w-20{width:5rem}.w-3{width:.75rem}.w-3\/5{width:60%}.w-32{width:8rem}.w-64{width:16rem}.w-8{width:2rem}.w-full{width:100%}.w-px{width:1px}.flex-1{flex:1 1 0%}.flex-grow{flex-grow:1}.origin-top-left{transform-origin:top left}.-translate-x-1\/2{--tw-translate-x:-50%}.-rotate-45,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-45{--tw-rotate:-45deg}.rotate-180{--tw-rotate:180deg}.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0}.border-t{border-top-width:1px}.border-none{border-style:none}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-oGray{--tw-border-opacity:1;border-color:rgb(152 152 152/var(--tw-border-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-leftPaneBg{--tw-bg-opacity:1;background-color:rgb(14 14 14/var(--tw-bg-opacity,1))}.bg-oBlue{--tw-bg-opacity:1;background-color:rgb(9 191 255/var(--tw-bg-opacity,1))}.bg-oGray{--tw-bg-opacity:1;background-color:rgb(152 152 152/var(--tw-bg-opacity,1))}.bg-oGray2{--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity,1))}.bg-oGreen{--tw-bg-opacity:1;background-color:rgb(15 205 79/var(--tw-bg-opacity,1))}.bg-oNight{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-oRed{--tw-bg-opacity:1;background-color:rgb(204 0 12/var(--tw-bg-opacity,1))}.bg-oYellow{--tw-bg-opacity:1;background-color:rgb(255 190 0/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-rightPaneBg{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-contain{object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-4{padding-top:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-6xl{font-size:3.75rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-oBlue{--tw-text-opacity:1;color:rgb(9 191 255/var(--tw-text-opacity,1))}.text-oGray{--tw-text-opacity:1;color:rgb(152 152 152/var(--tw-text-opacity,1))}.text-oGreen{--tw-text-opacity:1;color:rgb(15 205 79/var(--tw-text-opacity,1))}.text-oNight{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-oRed{--tw-text-opacity:1;color:rgb(204 0 12/var(--tw-text-opacity,1))}.text-oYellow{--tw-text-opacity:1;color:rgb(255 190 0/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-20{opacity:.2}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--background:#fff;--foreground:#171717}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed}}body{color:var(--foreground);background:var(--background);font-family:Arial,Helvetica,sans-serif}:root{--primary-color:#1976d2;--accent-color:#ff4081;--warn-color:#f44336;--background-color:#fff;--foreground-color:#000;--foreground-text:#212121}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-gray-800\/10:hover{background-color:rgba(31,41,55,.1)}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:bg-oGray:hover{--tw-bg-opacity:1;background-color:rgb(152 152 152/var(--tw-bg-opacity,1))}.hover\:bg-oRed:hover{--tw-bg-opacity:1;background-color:rgb(204 0 12/var(--tw-bg-opacity,1))}.hover\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.hover\:text-oRed:hover{--tw-text-opacity:1;color:rgb(204 0 12/var(--tw-text-opacity,1))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
Binary file
Binary file
Binary file
Binary file
Binary file
package/index.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="preload" href="/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="stylesheet" href="/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js"/><script src="/ocearo-ui/_next/static/chunks/fd9d1056-5fd12b742601fe8c.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/117-ddf36b6a7b427a7b.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/main-app-40bc40db4e2d9561.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/b536a0f1-7c94f39427c6b177.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/bd904a5c-cda56ad9f008ceb3.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/870fdd6f-45597a31bc6be30c.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0f8af13e-59794c1587e7a41d.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/875-34a16d45b233a109.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/app/page-c9b5f12f4b181b98.js" async=""></script><link rel="manifest" href="./manifest.json"/><meta name="theme-color" content="#4bbcd8"/><link rel="icon" type="image/png" href="./favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><meta name="next-size-adjust"/><script src="/ocearo-ui/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_873ced __variable_6df010 antialiased"><div class="h-screen flex flex-col bg-black relative"><div class="flex flex-1"><div class="transition-all duration-300 w-full bg-leftPaneBg h-full relative"><div class="w-full h-full relative "><div class="absolute top-2 left-2 z-10 space-y-0"><div class="text-lg"><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="ship" class="svg-inline--fa fa-ship text-oBlue" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="anchor" class="svg-inline--fa fa-anchor text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="square-parking" class="svg-inline--fa fa-square-parking text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="person-falling" class="svg-inline--fa fa-person-falling text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="moon" class="svg-inline--fa fa-moon text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="water" class="svg-inline--fa fa-water text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"></path></svg></button><button class="p-1"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="satellite" class="svg-inline--fa fa-satellite text-oGray" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z"></path></svg></button></div><div class="mt-4"><div class="text-6xl font-bold text-gray-400">--</div><div class="text-lg text-oGray">NO DATA</div></div></div><div class="absolute top-2 z-10 right-2"><div class="text-oGray rounded-lg transition-all duration-300 hover:bg-gray-800/10 cursor-pointer" role="button" tabindex="0" aria-label="Toggle between tanks display"><div class="space-y-2"><div class="flex items-center space-x-3 my-2 relative"><div class="relative w-8 h-4 bg-oGray rounded-sm border border-oGray flex items-center justify-center"><div class="absolute -right-1 w-1 h-3 bg-oGray rounded-sm"></div><div class="absolute left-0 top-0 h-full bg-oRed transition-all duration-300 rounded-sm" style="width:0%"></div><span class="relative z-10 text-xs text-black font-bold">1</span></div><span class="text-sm font-medium text-oRed animate-pulse">0<!-- -->%</span></div></div></div></div><div class="absolute left-2 bottom-2 z-20 flex flex-col items-center"><div class="flex flex-col items-center"><div class="text-sm mb-2 text-white">Depth</div><div class="w-2 bg-oBlue rounded-lg overflow-hidden mb-4" style="height:240px" role="progressbar" aria-valuemin="0" aria-valuemax="50" aria-label="Water depth: --"><div class="bg-oGray transition-all duration-500 ease-in-out" style="height:100%"></div></div><div class="text-sm mt-2 text-white animate-pulse">--</div></div></div><div class="absolute right-2 bottom-2 z-20 flex flex-col items-center"></div><div class="absolute bottom-2 left-1/2 transform -translate-x-1/2 z-10"><div style="width:480px;padding-bottom:25px" class="mx-auto"><div class="w-full bg-oGray h-1 rounded-full relative mt-2"><div class="absolute h-2 w-px bg-oGray" style="left:0%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-60</span></div><div class="absolute h-2 w-px bg-oGray" style="left:8.333333333333329%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-50</span></div><div class="absolute h-2 w-px bg-oGray" style="left:16.66666666666667%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-40</span></div><div class="absolute h-2 w-px bg-oGray" style="left:25%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-30</span></div><div class="absolute h-2 w-px bg-oGray" style="left:33.333333333333336%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-20</span></div><div class="absolute h-2 w-px bg-oGray" style="left:41.66666666666667%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">-10</span></div><div class="absolute h-2 w-px bg-oGray" style="left:50%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">0</span></div><div class="absolute h-2 w-px bg-oGray" style="left:58.33333333333333%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">10</span></div><div class="absolute h-2 w-px bg-oGray" style="left:66.66666666666666%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">20</span></div><div class="absolute h-2 w-px bg-oGray" style="left:75%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">30</span></div><div class="absolute h-2 w-px bg-oGray" style="left:83.33333333333333%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">40</span></div><div class="absolute h-2 w-px bg-oGray" style="left:91.66666666666667%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">50</span></div><div class="absolute h-2 w-px bg-oGray" style="left:100%;transform:translateX(-20%)"><span class="text-xs text-oGray" style="transform:translateY(-50%)">60</span></div> <div class="absolute top-0 h-1 rounded-full transition-all duration-300 ease-in-out bg-oGreen" style="width:0%;left:50%;transform:translateX(0)"></div></div></div></div><div class="absolute left-1/2 transform -translate-x-1/2 w-full h-full"><div style="position:relative;width:100%;height:100%;overflow:hidden;pointer-events:auto"><div style="width:100%;height:100%"><canvas style="display:block"></canvas></div></div></div></div></div><div class="handle w-1 bg-leftPaneBg h-full cursor-col-resize transition-all duration-200 flex items-center justify-center react-draggable" style="transform:translate(0px,0px)"><div class="rounded-full w-3 bg-gray-600 h-40 transition-all duration-200 hover:bg-gray-500"></div></div><div class="transition-all duration-300 hidden h-full bg-rightPaneBg p-4"><div class="flex flex-col w-full h-full"><div class="p-4 text-white"><h1 class="text-2xl font-bold mb-4">Ocearo Configuration</h1><div class="space-y-4"><div class="space-y-4"><h2 class="text-xl font-semibold">Connection Settings</h2><div><label class="flex items-center"><input type="checkbox" class="mr-2"/>Set SignalK URL<span class="ml-2">(<!-- -->https://demo.signalk.org:443<!-- -->)</span></label></div></div><div class="space-y-4"><h2 class="text-xl font-semibold">Vessel Settings</h2><div><label class="block font-medium mb-1">Select Vessel:</label><select class="border p-2 w-full text-black rounded"><option value="">-- Select a Vessel --</option><option value="Default" selected="">Default</option><option value="Optimist">Optimist</option><option value="Sailboat">Sailboat</option><option value="Ship">Ship</option><option value="Windsurf">Windsurf</option></select></div><div><label class="block font-medium mb-1">Vessel Color:</label><input type="color" class="w-full h-10 rounded" value="#000000"/></div><div><label class="flex items-center"><input type="checkbox" class="mr-2"/>Enable Metallic Effect</label></div></div><div class="flex space-x-4 pt-4"><button class="bg-oBlue text-white px-4 py-2 rounded hover:bg-blue-600">Save Configuration</button><button class="bg-oRed text-white px-4 py-2 rounded hover:bg-red-600">Reset Configuration</button></div></div></div></div></div></div><div class="w-full h-16 bg-black flex items-center justify-center"><div class="flex items-center justify-between w-full h-full bg-black px-4"><div class="flex items-center space-x-10"><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="Settings"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="ship" class="svg-inline--fa fa-ship " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"></path></svg></button><div class="text-2xl text-white"><span>NA</span></div></div><div class="flex items-center justify-center space-x-10"><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="Navigation"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="map-location-dot" class="svg-inline--fa fa-map-location-dot " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"></path></svg></button><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="Weather"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="cloud-sun" class="svg-inline--fa fa-cloud-sun " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"></path></svg></button><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="App Menu"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="table-cells" class="svg-inline--fa fa-table-cells " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z"></path></svg></button><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="Manual"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="handshake-angle" class="svg-inline--fa fa-handshake-angle " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z"></path></svg></button><button class="text-white text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200" aria-label="Instrument"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="gauge-high" class="svg-inline--fa fa-gauge-high " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"></path></svg></button></div><div class="flex items-center space-x-10"><div class="text-2xl text-white"><span>NA</span></div></div></div></div></div><script src="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n2:HL[\"/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n3:HL[\"/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[2846,[],\"\"]\n6:I[9107,[],\"ClientPageRoot\"]\n7:I[7196,[\"689\",\"static/chunks/b536a0f1-7c94f39427c6b177.js\",\"870\",\"static/chunks/bd904a5c-cda56ad9f008ceb3.js\",\"676\",\"static/chunks/870fdd6f-45597a31bc6be30c.js\",\"918\",\"static/chunks/0f8af13e-59794c1587e7a41d.js\",\"875\",\"static/chunks/875-34a16d45b233a109.js\",\"931\",\"static/chunks/app/page-c9b5f12f4b181b98.js\"],\"default\",1]\n8:I[4707,[],\"\"]\n9:I[6423,[],\"\"]\nb:I[1060,[],\"\"]\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"fXfwoRGkJUXApnOnlJiBM\",\"assetPrefix\":\"/ocearo-ui\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"$L6\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$7\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"./manifest.json\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#4bbcd8\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"href\":\"./favicon-96x96.png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/svg+xml\",\"href\":\"./favicon.svg\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_873ced __variable_6df010 antialiased\",\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="preload" href="/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff" as="font" crossorigin="" type="font/woff"/><link rel="stylesheet" href="/ocearo-ui/_next/static/css/f63a99513904ab4c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js"/><script src="/ocearo-ui/_next/static/chunks/fd9d1056-5fd12b742601fe8c.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/117-ddf36b6a7b427a7b.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/main-app-40bc40db4e2d9561.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/b536a0f1-7c94f39427c6b177.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/bd904a5c-cda56ad9f008ceb3.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/870fdd6f-b56b0535ce152a0d.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0f8af13e-59794c1587e7a41d.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/875-34a16d45b233a109.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/app/page-c816eb0b00073958.js" async=""></script><link rel="manifest" href="./manifest.json"/><meta name="theme-color" content="#4bbcd8"/><link rel="icon" type="image/png" href="./favicon-96x96.png" sizes="96x96"/><link rel="icon" type="image/svg+xml" href="./favicon.svg"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><meta name="next-size-adjust"/><script src="/ocearo-ui/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_873ced __variable_6df010 antialiased"><div class="h-screen bg-black flex items-center justify-center"><div class="animate-pulse text-white">Loading...</div></div><script src="/ocearo-ui/_next/static/chunks/webpack-6ba3ee57ba412e0f.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n2:HL[\"/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff\"}]\n3:HL[\"/ocearo-ui/_next/static/css/f63a99513904ab4c.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[2846,[],\"\"]\n6:I[9107,[],\"ClientPageRoot\"]\n7:I[9898,[\"689\",\"static/chunks/b536a0f1-7c94f39427c6b177.js\",\"870\",\"static/chunks/bd904a5c-cda56ad9f008ceb3.js\",\"676\",\"static/chunks/870fdd6f-b56b0535ce152a0d.js\",\"918\",\"static/chunks/0f8af13e-59794c1587e7a41d.js\",\"875\",\"static/chunks/875-34a16d45b233a109.js\",\"931\",\"static/chunks/app/page-c816eb0b00073958.js\"],\"default\",1]\n8:I[4707,[],\"\"]\n9:I[6423,[],\"\"]\nb:I[1060,[],\"\"]\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"n4O7tBfIcB30EmCmrUxrF\",\"assetPrefix\":\"/ocearo-ui\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L5\",[\"$\",\"$L6\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$7\"}],null],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/css/f63a99513904ab4c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"./manifest.json\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#4bbcd8\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"href\":\"./favicon-96x96.png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/svg+xml\",\"href\":\"./favicon.svg\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_873ced __variable_6df010 antialiased\",\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n5:null\n"])</script></body></html>
package/index.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  2:I[9107,[],"ClientPageRoot"]
2
- 3:I[7196,["689","static/chunks/b536a0f1-7c94f39427c6b177.js","870","static/chunks/bd904a5c-cda56ad9f008ceb3.js","676","static/chunks/870fdd6f-45597a31bc6be30c.js","918","static/chunks/0f8af13e-59794c1587e7a41d.js","875","static/chunks/875-34a16d45b233a109.js","931","static/chunks/app/page-c9b5f12f4b181b98.js"],"default",1]
2
+ 3:I[9898,["689","static/chunks/b536a0f1-7c94f39427c6b177.js","870","static/chunks/bd904a5c-cda56ad9f008ceb3.js","676","static/chunks/870fdd6f-b56b0535ce152a0d.js","918","static/chunks/0f8af13e-59794c1587e7a41d.js","875","static/chunks/875-34a16d45b233a109.js","931","static/chunks/app/page-c816eb0b00073958.js"],"default",1]
3
3
  4:I[4707,[],""]
4
4
  5:I[6423,[],""]
5
- 0:["fXfwoRGkJUXApnOnlJiBM",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/css/0d5aedd99d85cadd.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"manifest","href":"./manifest.json"}],["$","meta",null,{"name":"theme-color","content":"#4bbcd8"}],["$","link",null,{"rel":"icon","type":"image/png","href":"./favicon-96x96.png","sizes":"96x96"}],["$","link",null,{"rel":"icon","type":"image/svg+xml","href":"./favicon.svg"}],["$","link",null,{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link",null,{"rel":"apple-touch-icon","sizes":"180x180","href":"./apple-touch-icon.png"}],["$","meta",null,{"name":"apple-mobile-web-app-title","content":"Ocearo"}]]}],["$","body",null,{"className":"__variable_873ced __variable_6df010 antialiased","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}]],null],null],["$L6",null]]]]
5
+ 0:["n4O7tBfIcB30EmCmrUxrF",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/css/f63a99513904ab4c.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"manifest","href":"./manifest.json"}],["$","meta",null,{"name":"theme-color","content":"#4bbcd8"}],["$","link",null,{"rel":"icon","type":"image/png","href":"./favicon-96x96.png","sizes":"96x96"}],["$","link",null,{"rel":"icon","type":"image/svg+xml","href":"./favicon.svg"}],["$","link",null,{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link",null,{"rel":"apple-touch-icon","sizes":"180x180","href":"./apple-touch-icon.png"}],["$","meta",null,{"name":"apple-mobile-web-app-title","content":"Ocearo"}]]}],["$","body",null,{"className":"__variable_873ced __variable_6df010 antialiased","children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]]}]],null],null],["$L6",null]]]]
6
6
  6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Ocearo"}],["$","meta","3",{"name":"description","content":"Sailing made smarter"}],["$","meta","4",{"name":"next-size-adjust"}]]
7
7
  1:null
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "ocearo-ui",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "private": false,
5
5
  "description": "Ocean Robot UI: Sailing made smarter",
6
6
  "license": "Apache-2.0",
7
+ "author": "Matthieu Laborie",
7
8
  "repository": {
8
9
  "type": "git",
9
10
  "url": "git+https://github.com/laborima/ocearo-ui.git"
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[676],{5217:function(c,l,n){n.d(l,{BQ9:function(){return r},DBF:function(){return d},DSs:function(){return p},HLz:function(){return m},IyC:function(){return S},Kb6:function(){return h},L02:function(){return z},RoX:function(){return C},Rpv:function(){return i},S9Y:function(){return b},SJR:function(){return k},TL5:function(){return N},Zkk:function(){return M},d8e:function(){return x},i4I:function(){return g},iGi:function(){return u},jOV:function(){return a},lnS:function(){return L},mDh:function(){return t},szN:function(){return o},tLL:function(){return f},uM9:function(){return s},whq:function(){return e}});let s={prefix:"fas",iconName:"cloud",icon:[640,512,[9729],"f0c2","M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"]},e={prefix:"fas",iconName:"temperature-half",icon:[320,512,[127777,"temperature-2","thermometer-2","thermometer-half"],"f2c9","M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z"]},i={prefix:"fas",iconName:"fire",icon:[448,512,[128293],"f06d","M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z"]},f={prefix:"fas",iconName:"map-location-dot",icon:[576,512,["map-marked-alt"],"f5a0","M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"]},a={prefix:"fas",iconName:"snowflake",icon:[448,512,[10052,10054],"f2dc","M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z"]},r={prefix:"fas",iconName:"square-parking",icon:[448,512,[127359,"parking"],"f540","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z"]},o={prefix:"fas",iconName:"table-cells",icon:[512,512,["th"],"f00a","M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z"]},t={prefix:"fas",iconName:"satellite",icon:[512,512,[128752],"f7bf","M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z"]},z={prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},L={prefix:"fas",iconName:"ship",icon:[576,512,[128674],"f21a","M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z"]},u={prefix:"fas",iconName:"handshake-angle",icon:[640,512,["hands-helping"],"f4c4","M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z"]},M={prefix:"fas",iconName:"droplet",icon:[384,512,[128167,"tint"],"f043","M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z"]},m={prefix:"fas",iconName:"gauge-high",icon:[512,512,[62461,"tachometer-alt","tachometer-alt-fast"],"f625","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},C={prefix:"fas",iconName:"battery-full",icon:[576,512,[128267,"battery","battery-5"],"f240","M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z"]},p={prefix:"fas",iconName:"wind",icon:[512,512,[],"f72e","M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]},N={prefix:"fas",iconName:"expand",icon:[448,512,[],"f065","M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z"]},x={prefix:"fas",iconName:"rotate",icon:[512,512,[128260,"sync-alt"],"f2f1","M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z"]},h={prefix:"fas",iconName:"gears",icon:[640,512,["cogs"],"f085","M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"]},d={prefix:"fas",iconName:"moon",icon:[384,512,[127769,9214],"f186","M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z"]},k={prefix:"fas",iconName:"anchor",icon:[576,512,[9875],"f13d","M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z"]},g={prefix:"fas",iconName:"person-falling",icon:[512,512,[],"e546","M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"]},b={prefix:"fas",iconName:"cloud-sun",icon:[640,512,[9925],"f6c4","M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z"]},S={prefix:"fas",iconName:"video",icon:[576,512,["video-camera"],"f03d","M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{9927:function(e,t,a){var n={"./default/Scene.jsx":[2967,967],"./optimist/Scene.jsx":[6154,154],"./sailboat/Scene.jsx":[2274,274],"./ship/Scene.jsx":[5221,221],"./windsurf/Scene.jsx":[2975,975]};function r(e){if(!a.o(n,e))return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=n[e],r=t[0];return a.e(t[1]).then(function(){return a(r)})}r.keys=function(){return Object.keys(n)},r.id=9927,e.exports=r},7343:function(e,t,a){Promise.resolve().then(a.bind(a,7196))},7196:function(e,t,a){"use strict";a.r(t),a.d(t,{VIEW_MODES:function(){return tc},default:function(){return tu}});var n=a(7437),r=a(2265),i=a(376),o=a.n(i),l=e=>{let{path:t}=e,[a,i]=(0,r.useState)([]),[o,l]=(0,r.useState)(null),s=(0,r.useRef)(null);return(0,r.useEffect)(()=>{(async()=>{try{let e=await fetch("".concat(t,"/index.json"));if(!e.ok)throw Error("Network response was not ok");let a=await e.json();i(a),a.length>0&&l(a[0])}catch(e){console.error("Error fetching PDF files:",e)}})()},[t]),(0,n.jsxs)("div",{className:"flex flex-col h-full",ref:s,children:[(0,n.jsx)("div",{className:"bg-oGray2 text-white p-4 flex space-x-4",children:a.map((e,t)=>(0,n.jsx)("button",{className:"px-4 py-2 rounded-t ".concat((null==o?void 0:o.file)===e.file?"bg-oGray font-bold":"hover:bg-oGray"),onClick:()=>l(e),children:e.title},t))}),(0,n.jsx)("div",{className:"flex-grow bg-oGray2 text-white p-4 flex items-center justify-center",children:o&&(0,n.jsx)("iframe",{src:"".concat(t,"/").concat(o.file),title:"PDF Viewer",width:"100%",height:"100%",style:{border:"none"}})})]})},s=JSON.parse('{"F":[{"name":"Default","modelPath":"default","capabilities":["navigation","rudder","sail","color"]},{"name":"Optimist","modelPath":"optimist","capabilities":["navigation","ais"]},{"name":"Sailboat","modelPath":"sailboat","capabilities":["navigation","ais"]},{"name":"Ship","modelPath":"ship","capabilities":["navigation","ais"]},{"name":"Windsurf","modelPath":"windsurf","capabilities":["navigation","ais"]}]}');class c{isLocalStorageAvailable(){try{return"undefined"!=typeof localStorage}catch(e){return!1}}loadConfig(){if(this.isLocalStorageAvailable()){let e=localStorage.getItem(this.configKey);if(!e)return this.saveConfig(this.defaultConfig),{...this.defaultConfig};try{return JSON.parse(e)}catch(e){return console.error("Failed to parse stored configuration:",e),{...this.defaultConfig}}}return{...this.inMemoryConfig}}saveConfig(e){this.config={...this.config,...e},this.isLocalStorageAvailable()?localStorage.setItem(this.configKey,JSON.stringify(this.config)):this.inMemoryConfig={...this.config}}get(e){return this.config[e]}set(e,t){this.config[e]=t,this.saveConfig(this.config)}resetConfig(){this.config={...this.defaultConfig},this.isLocalStorageAvailable()?localStorage.setItem(this.configKey,JSON.stringify(this.config)):this.inMemoryConfig={...this.defaultConfig}}getAll(){return{...this.config}}getDefaultConfig(){return{...this.defaultConfig}}getSelectedBoat(){let e=this.config.selectedBoat;if(!e)return[];let t=this.getBoatsData().find(t=>t.name===e);return t?[t]:[]}getBoatsData(){return s.F}getComputedSignalKUrl(){return this.config.debugMode?"https://demo.signalk.org:443":"".concat(window.location.protocol,"//").concat(window.location.hostname).concat(window.location.port?":"+window.location.port:"")}constructor(){this.defaultConfig={signalkUrl:"https://demo.signalk.org:443",username:"",password:"",debugMode:!1,selectedBoat:"Default",primaryColor:null,metallicEffect:!1},this.configKey="ocearoConfig",this.inMemoryConfig={...this.defaultConfig},this.config=this.loadConfig()}}let u=new c;var d=e=>{let{onSave:t}=e,a=u.getAll(),i=u.getComputedSignalKUrl(),o=u.getBoatsData(),[l,s]=(0,r.useState)(a),[c,d]=(0,r.useState)(!!a.username||!!a.password),[h,m]=(0,r.useState)(!1),[g,f]=(0,r.useState)(null),[x,p]=(0,r.useState)(!1),v=(0,r.useCallback)(e=>{p(JSON.stringify(e)!==JSON.stringify(a))},[a]);(0,r.useEffect)(()=>{(async()=>{let e=u.getAll();s(e),e.selectedBoat&&f(o.find(t=>t.name===e.selectedBoat)||null)})()},[o]);let b=e=>{let t={...l,...e};s(t),v(t)},y=()=>{let e={...l};h?c||(e.username="",e.password=""):(e.signalkUrl=i,e.username="",e.password=""),u.saveConfig(e),null==t||t(e),p(!1)};return(0,n.jsxs)("div",{className:"p-4 text-white",children:[x&&(0,n.jsxs)("div",{className:"bg-oBlue text-white px-4 py-2 rounded mb-4 flex justify-between items-center",children:[(0,n.jsx)("span",{children:"You have unsaved changes"}),(0,n.jsx)("button",{onClick:y,className:"bg-white text-black px-3 py-1 rounded text-sm hover:bg-gray-100",children:"Save Now"})]}),(0,n.jsx)("h1",{className:"text-2xl font-bold mb-4",children:"Ocearo Configuration"}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("h2",{className:"text-xl font-semibold",children:"Connection Settings"}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:h,onChange:e=>{m(e.target.checked),v(l)}}),"Set SignalK URL",!h&&(0,n.jsxs)("span",{className:"ml-2",children:["(",i,")"]})]})}),h&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"SignalK Server URL:"}),(0,n.jsx)("input",{type:"text",className:"border p-2 w-full text-black rounded",value:l.signalkUrl||"",onChange:e=>b({signalkUrl:e.target.value})})]}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:c,onChange:e=>{d(e.target.checked),v(l)}}),"Use Authentication"]})}),c&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Username:"}),(0,n.jsx)("input",{type:"text",className:"border p-2 w-full text-black rounded",value:l.username||"",onChange:e=>b({username:e.target.value})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Password:"}),(0,n.jsx)("input",{type:"password",className:"border p-2 w-full text-black rounded",value:l.password||"",onChange:e=>b({password:e.target.value})})]})]})]})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)("h2",{className:"text-xl font-semibold",children:"Vessel Settings"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Select Vessel:"}),(0,n.jsxs)("select",{className:"border p-2 w-full text-black rounded",value:l.selectedBoat||"",onChange:e=>{let t=e.target.value;f(o.find(e=>e.name===t)||null),b({selectedBoat:t})},children:[(0,n.jsx)("option",{value:"",children:"-- Select a Vessel --"}),o.map(e=>(0,n.jsx)("option",{value:e.name,children:e.name},e.name))]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block font-medium mb-1",children:"Vessel Color:"}),(0,n.jsx)("input",{type:"color",className:"w-full h-10 rounded",value:l.primaryColor||"#000000",onChange:e=>b({primaryColor:e.target.value})})]}),(0,n.jsx)("div",{children:(0,n.jsxs)("label",{className:"flex items-center",children:[(0,n.jsx)("input",{type:"checkbox",className:"mr-2",checked:l.metallicEffect||!1,onChange:e=>b({metallicEffect:e.target.checked})}),"Enable Metallic Effect"]})})]}),(0,n.jsxs)("div",{className:"flex space-x-4 pt-4",children:[(0,n.jsx)("button",{onClick:y,className:"bg-oBlue text-white px-4 py-2 rounded hover:bg-blue-600",children:"Save Configuration"}),(0,n.jsx)("button",{onClick:()=>{let e=u.getDefaultConfig();s(e),d(!1),m(!1),u.saveConfig(e),p(!1)},className:"bg-oRed text-white px-4 py-2 rounded hover:bg-red-600",children:"Reset Configuration"})]})]})]})},h=a(4578),m=a(2079);let g=(0,r.createContext)(),f="#09bfff",x="#cc000c",p="#0fcd4f",v=e=>null!=e?Math.round((e-273.15)*10)/10:null,b=e=>null!=e?Math.round(19.4384*e)/10:null,y={wind:{"environment.wind.angleTrueWater":m.M8C.degToRad(25),"environment.wind.speedTrue":20,"environment.wind.angleApparent":m.M8C.degToRad(23),"environment.wind.speedApparent":25},temperature:{"environment.water.temperature":290.15,"environment.outside.temperature":294.15,"propulsion.main.exhaustTemperature":368.15,"environment.inside.fridge.temperature":277.15},environment:{"environment.outside.pressure":102300,"environment.inside.relativeHumidity":.74,"environment.inside.voc":.03},performance:{"performance.beatAngle":m.M8C.degToRad(45),"performance.gybeAngle":m.M8C.degToRad(135),"performance.beatAngleVelocityMadeGood":6,"performance.gybeAngleVelocityMadeGood":5,"performance.targetAngle":m.M8C.degToRad(45),"performance.polarSpeed":8,"performance.polarSpeedRatio":.95,"performance.velocityMadeGood":5,"performance.polarVelocityMadeGood":6,"performance.polarVelocityMadeGoodRatio":.9},navigation:{"navigation.speedThroughWater":7,"navigation.headingTrue":m.M8C.degToRad(0),"navigation.courseOverGround":m.M8C.degToRad(20),"navigation.courseGreatCircle.nextPoint.bearingTrue":m.M8C.degToRad(30),"navigation.attitude.roll":m.M8C.degToRad(5)},racing:{"navigation.racing.layline":m.M8C.degToRad(10),"navigation.racing.layline.distance":100,"navigation.racing.layline.time":180,"navigation.racing.oppositeLayline":m.M8C.degToRad(45),"navigation.racing.oppositeLayline.distance":80,"navigation.racing.oppositeLayline.time":180,"navigation.racing.startLineStb":{latitude:0,longitude:0,altitude:0},"navigation.racing.startLinePort":{latitude:0,longitude:0,altitude:0},"navigation.racing.distanceStartline":50,"navigation.racing.timeToStart":120,"navigation.racing.timePortDown":60,"navigation.racing.timePortUp":70,"navigation.racing.timeStbdDown":65,"navigation.racing.timeStbdUp":75}},j=e=>{let{children:t}=e,[a,i]=(0,r.useState)({}),[o,l]=(0,r.useState)(!1),[s,c]=(0,r.useState)({autopilot:!0,anchorWatch:!1,parkingMode:!1,mob:!1,showOcean:!1,ais:!1}),d=(0,r.useRef)(null),f=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=async()=>{let e=new Date,t=e.getFullYear(),a=(e.getMonth()+1).toString().padStart(2,"0"),n="tides/larochelle/".concat(a,"_").concat(t,".json"),r=await fetch(n);if(r.ok){let t=await r.json(),a=e.toISOString().split("T")[0];if(t[a]){let e=null,n=null,r=new Date,o=60*r.getHours()+r.getMinutes();if(t[a].forEach(t=>{let[a,r,i,l]=t,[s,c]=r.split(":").map(Number),u=60*s+c;"tide.high"===a&&(!e||Math.abs(o-u)<Math.abs(o-e.timeInMinutes))?e={height:parseFloat(i),time:r,timeInMinutes:u,coef:l}:"tide.low"===a&&(!n||Math.abs(o-u)<Math.abs(o-n.timeInMinutes))&&(n={height:parseFloat(i),time:r,timeInMinutes:u})}),e&&n){let t="".concat(r.getHours().toString().padStart(2,"0"),":").concat(r.getMinutes().toString().padStart(2,"0")),a=M(e.height,n.height,t,e.time,n.time);i(t=>({...t,"environment.tide.heightNow":a,"environment.tide.heightHigh":e.height,"environment.tide.heightLow":n.height,"environment.tide.timeLow":n.time,"environment.tide.timeHigh":e.time,"environment.tide.coeffNow":e.coef}))}else throw Error("Tide data for today is incomplete.")}}else console.warn("No tide data found")};return(async()=>{let e=u.getAll(),{signalkUrl:t,debugMode:a}=e;try{let[a,n]=t.replace(/https?:\/\//,"").split(":"),r=new h.default({hostname:a||"localhost",port:parseInt(n)||3e3,useTLS:t.startsWith("https"),reconnect:!0,autoConnect:!1,notifications:!1,deltaStreamBehaviour:"self",sendMeta:"all",wsKeepaliveInterval:10});d.current=r,await r.connect(),r.on("delta",e=>{e.updates.forEach(e=>{e.values&&e.values.forEach(e=>{i(t=>({...t,[e.path]:e.value}))})})}),e.debugMode&&(f.current=setInterval(()=>{let e=Math.floor(91*Math.random())-45;i(t=>({...t,"steering.rudderAngle":m.M8C.degToRad(e),...y.wind,...y.temperature,...y.environment,...y.performance,...y.navigation,...y.racing}))},5e3))}catch(e){console.error("Failed to connect to SignalK:",e)}})(),e(),()=>{d.current&&d.current.disconnect(),f.current&&clearInterval(f.current)}},[]),(0,n.jsx)(g.Provider,{value:{getSignalKValue:e=>a[e]||null,nightMode:o,setNightMode:l,states:s,toggleState:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;c(a=>({...a,[e]:void 0!==t?t:!a[e]}))}},children:t})},w=()=>(0,r.useContext)(g),M=function(e,t,a,n,r){let i,o,l,s;let c=e=>{let[t,a]=e.split(":").map(Number);return 60*t+a},u=c(n),d=c(r),h=c(a),m=!1;d<=h&&h<=u?(m=!0,i=t,o=e,l=d,s=u):(i=e,o=t,l=u,s=d+(d<u?1440:0));let g=Math.abs(s-l),f=Math.abs(o-i),x=h-l;x<0&&(x+=1440);let p=f/12,v=0;return v=x<=g/6?p*Math.ceil(x/(g/12)):x<=2*g/6?2*p+p*Math.ceil((x-g/6)/(g/12)):x<=3*g/6?5*p:x<=4*g/6?8*p:x<=5*g/6?10*p:f,m?i+v:i-v},N={latitude:46.1591,longitude:-1.1522},S={navigation:e=>"".concat(e,"/@signalk/freeboard-sk/"),instrument:e=>"".concat(e,"/@mxtommy/kip/"),netflix:()=>"https://www.netflix.com",battery:e=>e.replace(":3000",":3001")+"/grafana",webcam1:()=>"https://pv.viewsurf.com/2080/Chatelaillon-Port?i=NzU4Mjp1bmRlZmluZWQ",webcam2:()=>"https://pv.viewsurf.com/1478/Chatelaillon-Plage&lt?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=".concat(t.latitude,"&lon=").concat(t.longitude,"&message=true")};var P=e=>{let{view:t}=e,{getSignalKValue:a}=w(),[i,o]=(0,r.useState)(null),[s,c]=(0,r.useState)(null),{signalkUrl:h}=u.getAll();(0,r.useEffect)(()=>{let e=()=>{try{let e=a("navigation.position")||N;o(t=>t?Math.abs(t.latitude-e.latitude)>.01||Math.abs(t.longitude-e.longitude)>.01?e:t:e),c(null)}catch(e){c("Error fetching position data"),console.error("Position fetch error:",e)}};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[a]);let m=(0,r.useMemo)(()=>{let e=S[t];if(!e)return null;try{return e(h,i)}catch(e){return console.error("Error generating URL:",e),c("Error generating application URL"),null}},[t,i,h]);return(0,n.jsx)("div",{className:"flex flex-col w-full h-full",children:(()=>{if(s)return(0,n.jsx)("div",{className:"text-red-500 p-4",children:s});switch(t){case"manual":return(0,n.jsx)(l,{path:"boats/default/docs"});case"settings":return(0,n.jsx)(d,{});default:return m&&(0,n.jsx)("iframe",{className:"flex-grow border-none",src:m,title:"External Application",onError:()=>c("Failed to load external content")})}})()})},C=a(1268),k=a(5217);let R={waterTemp:{key:"waterTemp",path:"environment.water.temperature",icon:k.L02,label:"Water Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},airTemp:{key:"airTemp",path:"environment.outside.temperature",icon:k.whq,label:"Air Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},exhaustTemp:{key:"exhaustTemp",path:"propulsion.main.exhaustTemperature",icon:k.Rpv,label:"Exhaust Temperature",format:e=>"".concat(e,"\xb0C"),transform:v},fridgeTemp:{key:"fridgeTemp",path:"environment.inside.fridge.temperature",icon:k.jOV,label:"Fridge Temperature",format:e=>"".concat(e,"\xb0C"),transform:v}},I=e=>{let{mode:t,value:a,icon:r,nightMode:i}=e;return a||0===a?(0,n.jsxs)("div",{className:"flex items-center text-2xl ".concat(i?"text-red-500":"text-white"),children:[(0,n.jsx)(C.G,{icon:r,className:"mr-2"}),(0,n.jsx)("span",{children:R[t].format(a)})]}):null};var _=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)([]),[o,l]=(0,r.useState)(null),s=(0,r.useMemo)(()=>Object.entries(R).reduce((e,a)=>{let[n,r]=a,i=t(r.path);return e[n]=null!==i?r.transform(i):null,e},{}),[t]);(0,r.useEffect)(()=>{let e=Object.entries(s).filter(e=>{let[t,a]=e;return null!==a}).map(e=>{let[t]=e;return t});i(e),e.length>0&&!e.includes(o)&&l(e[0])},[s,o]);let c=()=>{if(a.length<=1)return;let e=(a.indexOf(o)+1)%a.length;l(a[e])};return 0===a.length?(0,n.jsx)("div",{className:"text-2xl ".concat(e?"text-red-500":"text-white"),children:(0,n.jsx)("span",{children:"NA"})}):(0,n.jsx)("div",{className:"cursor-pointer flex items-center space-x-2",onClick:c,title:"Toggle Temperature Display (".concat(a.length," sensors available)"),role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&c(),"aria-label":o?R[o].label:"No temperature data available",children:o&&(0,n.jsx)(I,{mode:o,value:s[o],icon:R[o].icon,nightMode:e})})};let T={pressure:{key:"pressure",path:"environment.outside.pressure",icon:k.uM9,format:e=>"".concat(e," hPa"),transform:e=>null!=e?Math.round(e/100*10)/10:null},humidity:{key:"humidity",path:"environment.inside.relativeHumidity",icon:k.Zkk,format:e=>"".concat(e.toFixed(1),"%"),transform:e=>100*e},voc:{key:"voc",path:"environment.inside.voc",icon:k.DSs,format:e=>"".concat(e," ppm"),transform:e=>e}},E=e=>{let{mode:t,value:a,icon:r,nightMode:i}=e;return a||0===a?(0,n.jsxs)("div",{className:"flex items-center text-2xl ".concat(i?"text-red-500":"text-white"),children:[(0,n.jsx)(C.G,{icon:r,className:"mr-2"}),(0,n.jsx)("span",{children:T[t].format(a)})]}):null};var A=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)([]),[o,l]=(0,r.useState)(null),s=(0,r.useMemo)(()=>Object.entries(T).reduce((e,a)=>{let[n,r]=a,i=t(r.path);return e[n]=null!==i?r.transform(i):null,e},{}),[t]);(0,r.useEffect)(()=>{let e=Object.entries(s).filter(e=>{let[t,a]=e;return null!==a}).map(e=>{let[t]=e;return t});i(e),e.length>0&&!e.includes(o)&&l(e[0])},[s,o]);let c=()=>{if(a.length<=1)return;let e=(a.indexOf(o)+1)%a.length;l(a[e])};return 0===a.length?(0,n.jsx)("div",{className:"text-2xl ".concat(e?"text-red-500":"text-white"),children:(0,n.jsx)("span",{children:"NA"})}):(0,n.jsx)("div",{className:"cursor-pointer flex items-center space-x-2",onClick:c,title:"Toggle Environmental Display (".concat(a.length," modes available)"),role:"button",tabIndex:0,onKeyPress:e=>"Enter"===e.key&&c(),children:o&&(0,n.jsx)(E,{mode:o,value:s[o],icon:T[o].icon,nightMode:e})})};let G=e=>{let{icon:t,onClick:a,label:r,textColor:i}=e;return(0,n.jsx)("button",{onClick:a,className:"".concat(i," text-2xl flex items-center justify-center hover:text-gray-300 transition-colors duration-200"),"aria-label":r,children:(0,n.jsx)(C.G,{icon:t})})};var O=e=>{let{setRightView:t,toggleSettings:a,toggleAppMenu:r}=e,{nightMode:i}=w(),o=i?"text-oNight":"text-white",l=[{section:"left",items:[{icon:k.lnS,onClick:()=>a(),label:"Settings"}]},{section:"center",items:[{icon:k.tLL,onClick:()=>t("navigation"),label:"Navigation"},{icon:k.S9Y,onClick:()=>t("weather"),label:"Weather"},{icon:k.szN,onClick:r,label:"App Menu"},{icon:k.iGi,onClick:()=>t("manual"),label:"Manual"},{icon:k.HLz,onClick:()=>t("instrument"),label:"Instrument"}]}],s=e=>{let t=l.find(t=>t.section===e);return t?t.items.map((t,a)=>(0,n.jsx)(G,{icon:t.icon,onClick:t.onClick,label:t.label,textColor:o},"".concat(e,"-").concat(a))):null};return(0,n.jsxs)("div",{className:"flex items-center justify-between w-full h-full bg-black px-4",children:[(0,n.jsxs)("div",{className:"flex items-center space-x-10",children:[s("left"),(0,n.jsx)(_,{})]}),(0,n.jsx)("div",{className:"flex items-center justify-center space-x-10",children:s("center")}),(0,n.jsx)("div",{className:"flex items-center space-x-10",children:(0,n.jsx)(A,{})})]})},L=e=>{let{currentViewMode:t,toggleViewMode:a,handleSetRightView:r,toggleFullscreen:i,setShowAppMenu:o}=e,l=e=>{let{icon:t,label:a,onClick:r}=e;return(0,n.jsxs)("button",{onClick:()=>{r(),o(!1)},className:"flex items-center text-white p-2 rounded-md hover:bg-gray-700 transition",children:[(0,n.jsx)(C.G,{icon:t,className:"mr-2"})," ",a]})};return(0,n.jsx)("div",{className:"fixed bottom-20 left-1/2 transform -translate-x-1/2 bg-black p-6 rounded-lg shadow-lg z-50 w-200",children:(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[t!==tc.SPLIT&&(0,n.jsx)(l,{icon:k.TL5,label:"Split View",onClick:()=>a(tc.SPLIT)}),t!==tc.APP&&(0,n.jsx)(l,{icon:k.TL5,label:"Full View",onClick:()=>a(tc.APP)}),t!==tc.BOAT&&(0,n.jsx)(l,{icon:k.lnS,label:"Boat View",onClick:()=>a(tc.BOAT)}),(0,n.jsx)(l,{icon:k.iGi,label:"Manual",onClick:()=>r("manual")}),(0,n.jsx)(l,{icon:k.HLz,label:"Instruments",onClick:()=>r("instrument")}),(0,n.jsx)(l,{icon:k.IyC,label:"Webcam",onClick:()=>r("webcam1")}),(0,n.jsx)(l,{icon:k.tLL,label:"Navigation",onClick:()=>r("navigation")}),(0,n.jsx)(l,{icon:k.Kb6,label:"Settings",onClick:()=>r("settings")}),(0,n.jsx)(l,{icon:k.S9Y,label:"Weather",onClick:()=>r("weather")}),(0,n.jsx)(l,{icon:k.RoX,label:"Battery",onClick:()=>r("battery")}),(0,n.jsx)(l,{icon:k.TL5,label:"Toggle Fullscreen",onClick:i}),(0,n.jsx)(l,{icon:k.d8e,label:"Refresh Page",onClick:()=>{window.location.reload()}})]})})},F=a(6496),D=a(8328),z=a(4725),B=a(5903),W=a(5550),U=a(8124),H=a(1106);function V(e,t,a){return e/1.9438444924574*Math.pow(t/10,a)*1.9438444924574}var K=a(3359),Y=a(1378),q=a(262),X=new WeakMap,Z=new WeakMap;class J{calcShape(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;(0,q._)(this,Z,[]);let t=this.chordTackLevel/((0,K._)(this,X)[(0,K._)(this,X).length-1].x-(0,K._)(this,X)[0].x);for(let a of(0,K._)(this,X)){let n=a.clone().multiplyScalar(t);1!==e&&(n.y*=e),(0,K._)(this,Z).push(n)}let a=new m.FM8(0,0);for(let e of(0,K._)(this,Z))e.y>a.y&&(a=e);this.draftDepth=a.y,this.draftPosition=a.x,this.girth=0;let n=null;for(let e of(0,K._)(this,Z))null!==n&&(this.girth+=e.distanceTo(n)),n=e;this.sag=this.chordTackLevel-this.girth,this.entryAngleRad=(0,K._)(this,Z)[1].clone().sub((0,K._)(this,Z)[0]).angle(),this.exitAngleRad=(0,K._)(this,Z)[(0,K._)(this,Z).length-1].clone().sub((0,K._)(this,Z)[(0,K._)(this,Z).length-2]).angle()-2*Math.PI,this.mastAngleRad=this.calcMastAngle(),this.forceAngleRad=(this.entryAngleRad+this.exitAngleRad)/2,this.draftDepthRatio=this.draftDepth/this.chordTackLevel,this.draftPositionRatio=this.draftPosition/this.chordTackLevel}calcMastAngle(){let e=0,t=null,a=this.mastWidth*this.chordTackLevel/this.chordMastTop;for(let n of(0,K._)(this,Z)){if(null!==t&&(e+=n.distanceTo(t))>=a)return n.angle();t=n}return NaN}getVerticesAngles(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=(this.girth-t)/(e-1),r=0,i=0,o=[],l=null;for(let s of(0,K._)(this,Z)){if(null!==l&&(((i+=s.distanceTo(l))>=r*n+t||a&&i>a)&&(r++,o.push(s.angle())),r>=e))break;l=s}return o}pointAtGirthDistance(e){let t=0,a=null;for(let n of(0,K._)(this,Z))if(null!==a&&(t+=n.distanceTo(a)),a=n,t>=e)return a.clone()}constructor(e,t,a,n=1){(0,Y._)(this,X,{writable:!0,value:void 0}),(0,Y._)(this,Z,{writable:!0,value:void 0}),(0,q._)(this,X,[]),(0,q._)(this,Z,[]),this.chordMastTop=t,this.chordTackLevel=e,this.mastWidth=a;let r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new m.FM8(t*e**2,2*t*e)},i=1.001+.95*(n-1)/10,o=(i-.001)/1e3,l=r(.001),s=r(i).clone().sub(l).angle(),c=new m.FM8(0,0);for(let e=.001;e<=i;e+=o){let t=r(e);t.sub(l),t.rotateAround(c,-s),(0,K._)(this,X).push(t)}this.calcShape(1-.25*(n-1)/10)}}let Q=Math.floor(20),$=Math.ceil(160),ee={waterlineToMastFootHeight:.45,maxMastRotation:Math.PI/2,maxChordRotationPerSailLevel:Math.PI/3*2};var et=e=>{let{windParams:t={speed:5,hellman:.27},boatParams:a={mastrotation:0,heading:130,speed:5},sailParams:i={mastArea:0,sailArea:0,cunningham:1,angleOfAttack:20}}=e,{getSignalKValue:o}=w(),l=(0,r.useRef)(),s=(0,r.useRef)(null),c=(0,r.useRef)(0),u=(0,r.useRef)(null),d=(0,r.useRef)(null),h=(0,r.useRef)(),g=(0,r.useRef)({}),x=(0,r.useMemo)(()=>{let e=new m.ZAu,t=new m.b_z(.1,.2,12),a=new m.Wid({color:f,opacity:.5,transparent:!0}),n=new m.Kj0(t,a);return n.position.set(0,-.1,0),e.add(n),e},[]);(0,r.useEffect)(()=>{let e=new m.ZAu,t={};for(let a=0;a<8;a+=.5){let n=x.clone();n.position.set(0,a,0),t[2*a]=n,e.add(n)}return e.position.set(0,0,0),h.current&&h.current.add(e),g.current=t,()=>{e.clear()}},[x]);let p=(e,t)=>{let a=g.current;if(!a){console.error("apparentWindField is not initialized.");return}for(let n=0;n<8;n+=.5){let r=V(e,n,t),i=a[2*n];if(!i){console.warn("Apparent wind field cone at height ".concat(n," is not defined."));continue}i.scale.set(.1*r,r,.1*r),i.rotation.set(0,-Math.PI,Math.PI/2)}},{geometry:v,sailClipWidthPerLevel:b}=(0,r.useMemo)(()=>{let e=new m.u9r,t=[],a=[],n=[];for(let e=0;e<=$;e++){let r,i;let o=Math.min(50*e,8e3);o<900?(r=3600,i=3800+-200*o/900):i=r=3600-3210*(o-900)/7100+600*Math.sin((o-900)/7100*Math.PI);let l=0;for(let n=0;n<Q;n++){let s=r/(Q-1),c=s*n-i,u=s;c>.1&&(u=c>s?0:s-c),t.push(0===n?0:(l+u)/1e3,o/1e3,0),l=0===n?0:l+u;let d=Math.floor($/10);a.push(...e%d==0?[.8,0,.047]:[.596,.596,.596])}n.push(i===r?null:i)}let r=[];for(let e=0;e<$;e++)for(let t=1;t<Q;t++){let a=e*Q+t;r.push(a-1,a,a+Q-1,a,a+Q,a+Q-1)}return e.setAttribute("position",new m.a$l(t,3)),e.setAttribute("color",new m.a$l(a,3)),e.setIndex(r),e.computeVertexNormals(),{geometry:e,sailClipWidthPerLevel:n}},[]),y=(0,r.useMemo)(()=>o("environment.wind.angleApparent")||0,[o]),j=(0,r.useMemo)(()=>o("environment.wind.speedApparent")||0,[o]);return(0,r.useEffect)(()=>{if(!l.current)return;p(j,t.hellman);let e=y>Math.PI&&y<=2*Math.PI,n=l.current.geometry,r=n.attributes.position.array;i.cunningham!==u.current&&(d.current=new J(3600,390,200,i.cunningham),u.current=i.cunningham),s.current||(s.current=n.clone());let o=1e3*ee.waterlineToMastFootHeight,h=e?-1:1,g=m.M8C.degToRad(i.angleOfAttack),f=Math.abs(y),x=d.current.mastAngleRad;f<.01&&(g=0);let v=Math.min(f-g+x,ee.maxMastRotation),w=new m.Pa4(0,1,0),M=null;for(let e=0;e<=$;e++){let a=Math.abs({awa:y,aws:V(j,(50*e+o)/1e3,t.hellman)}.awa)-g;a<0?a=0:a>Math.PI/2&&(a=Math.PI/2);let n=a-v;M&&n-M>ee.maxChordRotationPerSailLevel&&(n=M+ee.maxChordRotationPerSailLevel),M=n;let i=b[e],l=d.current.getVerticesAngles(Q,200,i);for(let t=1;t<Q;t++){let a=(e*Q+t)*3,i=new m.Pa4(s.current.attributes.position.array[a],s.current.attributes.position.array[a+1],s.current.attributes.position.array[a+2]);i.applyAxisAngle(w,-(n+l[t])*h),r[a]=i.x,r[a+1]=i.y,r[a+2]=i.z}}n.attributes.position.needsUpdate=!0;let N={...a,mastrotation:v*h};l.current&&l.current.rotateY(c.current-N.mastrotation),c.current=N.mastrotation},[j,y,t.hellman,i.cunningham,i.angleOfAttack,a,b]),(0,n.jsxs)("mesh",{ref:l,position:[0,2,-1],rotation:[0,-Math.PI/2,0],children:[(0,n.jsx)("bufferGeometry",{...v}),(0,n.jsx)("group",{ref:h}),(0,n.jsx)("meshBasicMaterial",{vertexColors:!0,transparent:!0,opacity:.7,side:m.ehD})]})};let ea=a(257).env.ASSET_PREFIX||"./",en=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return"".concat(ea,"/boats/").concat(e,"/assets/scene-transformed.glb")},er=(0,r.forwardRef)((e,t)=>{let{showSail:a=!1,...i}=e,o=(0,r.useRef)(),l=(0,r.useRef)(),{getSignalKValue:s}=w(),c=(0,r.useMemo)(()=>u.getAll(),[]),d=(0,r.useMemo)(()=>{let e=u.getSelectedBoat();return null!=e?e:{name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]}},[]),h=(0,r.useMemo)(()=>en(d.modelPath),[d]),g=(null==d?void 0:d.capabilities)||[],{nodes:f,materials:x}=(0,H.L)(h,"".concat(ea,"/draco/")),p=(0,r.useMemo)(()=>({primaryColor:c.primaryColor,metallicEffect:c.metallicEffect||!1}),[c.primaryColor,c.metallicEffect]);(0,r.useEffect)(()=>{(null==x?void 0:x.fiberglass)&&(x.fiberglass.color.set(p.primaryColor),x.fiberglass.metalness=p.metallicEffect?1:0,x.fiberglass.roughness=p.metallicEffect?.2:1,Object.values(x).forEach(e=>{e.map&&(e.map.minFilter=m.wem,e.map.magFilter=m.wem,e.map.anisotropy=1)}))},[x,p]);let v=(0,r.useMemo)(()=>new m.yGw,[]),b=(0,r.useMemo)(()=>new m.Pa4(1,0,0),[]);(0,U.F)(()=>{if(!o.current)return;let e=s("navigation.attitude.roll")||0,t=s("steering.rudderAngle")||0;o.current.rotation.z!==e&&(o.current.rotation.z=e),l.current&&(v.makeRotationFromEuler(new m.USm(-Math.PI/2,Math.PI/2,0)),l.current.setRotationFromMatrix(v),l.current.rotateOnAxis(b,-m.M8C.degToRad(180*t/Math.PI)))});let y=(0,r.useMemo)(()=>{let e={Default:()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("mesh",{geometry:f.baba_metal_0.geometry,material:x.metal,position:[.24,.895,-5.546],rotation:[-Math.PI/2,0,1.968],scale:.027}),(0,n.jsx)("mesh",{geometry:f.camadadirek_fiberglass_0.geometry,material:x.fiberglass,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,n.jsx)("mesh",{geometry:f.camadanyelkeni_bez_0.geometry,material:x.mcaterial,position:[0,5.267,-3.711],rotation:[2.054,0,Math.PI],scale:[-.042,.042,4.707]}),(0,n.jsx)("mesh",{geometry:f.camadaonbaglay_metal_0.geometry,material:x.metal,position:[0,.891,-5.958],rotation:[-Math.PI/2,0,0],scale:.02}),(0,n.jsx)("mesh",{geometry:f.capa_metal_0.geometry,material:x.metal,position:[0,.671,-6.173],rotation:[-Math.PI/2,0,0],scale:.348}),(0,n.jsx)("mesh",{geometry:f.direk_fiberglass_0.geometry,material:x.fiberglass,position:[0,4.315,-1.056],rotation:[Math.PI/2,0,Math.PI],scale:[-.113,.113,5.203]}),(0,n.jsx)("mesh",{geometry:f.duman_ahsap_0.geometry,material:x.ahsap,position:[-.011,.854,3.487],rotation:[Math.PI,0,Math.PI/2],scale:[.045,.045,.011]}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_ahsap_0.geometry,material:x.ahsap,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_cam_0.geometry,material:x.material_5,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.dumenyuvasi_fiberglass_0.geometry,material:x.fiberglass,position:[-.011,.299,3.441],rotation:[-Math.PI/2,0,1.571],scale:.094}),(0,n.jsx)("mesh",{geometry:f.govde_fiberglass2_0.geometry,material:x.fiberglass2,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.govde_fiberglass_0.geometry,material:x.fiberglass,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.govde_metal_0.geometry,material:x.metal,position:[0,.32,-.897],rotation:[0,Math.PI/2,0],scale:[5.11,.454,1.212]}),(0,n.jsx)("mesh",{geometry:f.halattutucu_fiberglass2_0.geometry,material:x.fiberglass2,position:[-1.044,.939,1.809],rotation:[-Math.PI/2,0,0],scale:[.016,.059,.016]}),(0,n.jsx)("mesh",{geometry:f.ip001_metal_0.geometry,material:x.metal,position:[-.231,7.608,-.621],rotation:[-2.322,.222,-1.556],scale:[.007,.007,.011]}),(0,n.jsx)("mesh",{geometry:f.pervan_fiberglass_0.geometry,material:x.fiberglass,position:[0,-1.005,1.561],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.154,.094,.104]}),(0,n.jsx)("mesh",{geometry:f.pervane_metal_0.geometry,material:x.metal,position:[0,-1.122,1.75],scale:.034}),(0,n.jsx)("mesh",{ref:l,geometry:f.rudder_fiberglass_0.geometry,material:x.fiberglass,position:[0,-1.153,3.486],rotation:[-Math.PI/2,Math.PI/2,0],scale:[.573,.262,.262]}),(0,n.jsx)("mesh",{geometry:f.salma_fiberglass_0.geometry,material:x.fiberglass,position:[0,-1.953,-.739],scale:[.149,.108,.756]}),(0,n.jsx)("mesh",{geometry:f.ustcam_cam_0.geometry,material:x.material_5,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,n.jsx)("mesh",{geometry:f.ustcam_fiberglass_0.geometry,material:x.fiberglass,position:[-.337,.974,-3.127],rotation:[-Math.PI/2,0,0],scale:[-.183,.133,.025]}),(0,n.jsx)("mesh",{geometry:f.ustgovde_fiberglass_0.geometry,material:x.fiberglass,position:[0,.832,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,n.jsx)("mesh",{geometry:f.ustgovdekzak_ahsap_0.geometry,material:x.ahsap,position:[0,.862,-2.741],rotation:[-Math.PI/2,0,0],scale:[.566,.7,1.212]}),(0,n.jsx)("mesh",{geometry:f.vinc_metal_0.geometry,material:x.metal,position:[-1.07,.977,2.02],rotation:[-Math.PI/2,0,0],scale:.065}),(0,n.jsx)("mesh",{geometry:f.yancam002_cam_0.geometry,material:x.material_5,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,n.jsx)("mesh",{geometry:f.yancam002_fiberglass_0.geometry,material:x.fiberglass,position:[-.984,.591,-3.772],rotation:[Math.PI,-1.241,-Math.PI/2],scale:[.095,.28,.014]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0.geometry,material:x.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0001.geometry,material:x.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.yankoruma_metal_0002.geometry,material:x.metal,position:[-1.641,.946,2.868],rotation:[-Math.PI/2,0,0],scale:[.01,.01,.159]}),(0,n.jsx)("mesh",{geometry:f.zincir_metal_0.geometry,material:x.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,n.jsx)("mesh",{geometry:f.zincir_metal_0001.geometry,material:x.metal,position:[-.001,.88,-6.258],rotation:[-1.56,-.031,-.149],scale:.004}),(0,n.jsx)("mesh",{geometry:f.zincirdeposu_fiberglass2_0.geometry,material:x.fiberglass2,position:[0,.863,-5.779],rotation:[-Math.PI/2,0,0],scale:[.103,.088,.009]}),(0,n.jsx)("mesh",{geometry:f.zincirmakara_metal_0.geometry,material:x.metal,position:[0,.869,-6.305],rotation:[-2.159,1.564,.59],scale:[.01,.01,.016]}),(0,n.jsx)("mesh",{geometry:f.zincirray_ahsap_0.geometry,material:x.ahsap,position:[0,.864,-6.113],rotation:[-Math.PI/2,0,0],scale:[.017,.181,.003]})]}),Optimist:()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("mesh",{geometry:f.body_body_0.geometry,material:x.body,position:[-.054,.272,-.022],rotation:[-1.571,.01,.01],scale:[1,5.242,1]}),(0,n.jsx)("mesh",{geometry:f.boom_aluminium_0.geometry,material:x.aluminium,position:[-.019,2.771,.964],rotation:[0,.01,-.01],scale:[.15,.15,4.609]}),(0,n.jsx)("mesh",{geometry:f.rubber_joint__0.geometry,material:x.rubber_joint__0,position:[-.008,1.407,3.453],rotation:[1.571,-.01,-.01],scale:[-.037,.056,.079]}),(0,n.jsx)("mesh",{geometry:f.sail_sail_0.geometry,material:x.sail,position:[.038,8.739,.698],rotation:[2.356,1.557,2.356],scale:[-5.728,4.361,4.361]})]}),Ship:()=>(0,n.jsx)("mesh",{geometry:f.Object_10.geometry,material:x.material_0,position:[0,-.55,0],rotation:[-1.558,.002,3.139],scale:.004}),Windsurf:()=>(0,n.jsx)("mesh",{geometry:f["body_Material_#30_0"].geometry,material:x.Material_30,position:[-.007,0,-.071],rotation:[-Math.PI/2,0,0],scale:.002}),Sailboat:()=>(0,n.jsx)("mesh",{geometry:f.sailboat.geometry,material:x.texture,position:[0,-1.5,0],rotation:[-Math.PI,.011,-Math.PI],scale:.219})};return e[d.name]||e.Default},[d.name,f,x]);return(0,n.jsxs)("group",{...i,ref:o,dispose:null,children:[g.includes("sail")&&a&&(0,n.jsx)(et,{}),(0,n.jsx)(y,{})]})});H.L.preload(en(),"".concat(ea,"/draco/")),er.displayName="SailBoat3D";let ei=(0,a(8345).g)({time:0,speed:1,scale:3,opacity:.5,color:new m.Ilk(7895160),foamColor:new m.Ilk(16777215),waterColor:new m.Ilk(26367)},"\n varying vec2 vUv;\n varying float vElevation;\n \n void main() {\n vUv = uv;\n \n // Add subtle vertex displacement for wave effect\n float elevation = sin(position.x * 0.2 + position.y * 0.3) * 0.1;\n vElevation = elevation;\n vec3 newPosition = position + normal * elevation;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);\n }\n ","\n uniform float time;\n uniform float speed;\n uniform float scale;\n uniform float opacity;\n uniform vec3 color;\n uniform vec3 foamColor;\n uniform vec3 waterColor;\n\n varying vec2 vUv;\n varying float vElevation;\n\n // Improved noise functions\n vec4 permute(vec4 x) {\n return mod(((x*34.0)+1.0)*x, 289.0);\n }\n\n vec2 fade(vec2 t) {\n return t*t*t*(t*(t*6.0-15.0)+10.0);\n }\n\n float cnoise(vec2 P) {\n vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0);\n vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0);\n Pi = mod(Pi, 289.0);\n vec4 ix = Pi.xzxz;\n vec4 iy = Pi.yyww;\n vec4 fx = Pf.xzxz;\n vec4 fy = Pf.yyww;\n vec4 i = permute(permute(ix) + iy);\n vec4 gx = 2.0 * fract(i * 0.0243902439) - 1.0;\n vec4 gy = abs(gx) - 0.5;\n vec4 tx = floor(gx + 0.5);\n gx = gx - tx;\n vec2 g00 = vec2(gx.x,gy.x);\n vec2 g10 = vec2(gx.y,gy.y);\n vec2 g01 = vec2(gx.z,gy.z);\n vec2 g11 = vec2(gx.w,gy.w);\n vec4 norm = 1.79284291400159 - 0.85373472095314 * vec4(dot(g00,g00), dot(g10,g10), dot(g01,g01), dot(g11,g11));\n g00 *= norm.x;\n g10 *= norm.y;\n g01 *= norm.z;\n g11 *= norm.w;\n float n00 = dot(g00, vec2(fx.x, fy.x));\n float n10 = dot(g10, vec2(fx.y, fy.y));\n float n01 = dot(g01, vec2(fx.z, fy.z));\n float n11 = dot(g11, vec2(fx.w, fy.w));\n vec2 fade_xy = fade(Pf.xy);\n vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x);\n float n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n return 2.3 * n_xy;\n }\n\n void main() {\n // Create multiple layers of noise for more complex water pattern\n float baseNoise = cnoise(vUv * scale + vec2(time * speed, 0.0));\n float detailNoise = cnoise(vUv * scale * 2.0 + vec2(time * speed * 1.5, 0.0)) * 0.5;\n float turbulence = cnoise(vUv * scale * 4.0 + vec2(time * speed * 2.0, 0.0)) * 0.25;\n \n // Combine noise layers\n float noise = baseNoise + detailNoise + turbulence;\n \n // Create wake pattern\n float wake = smoothstep(0.3, 0.7, 1.0 - abs(vUv.x - 0.5) * 2.0);\n \n // Create foam effect\n float foam = smoothstep(0.4, 0.6, noise + wake);\n \n // Combine colors for water effect\n vec3 finalColor = mix(waterColor, foamColor, foam);\n finalColor = mix(finalColor, color, wake * 0.5);\n \n // Dynamic opacity with wake and foam\n float alpha = opacity * (wake + foam * 0.5) * (1.0 - vUv.y);\n \n // Add wave highlights\n float highlight = smoothstep(0.2, 0.4, noise + wake) * (1.0 - smoothstep(0.4, 0.6, noise + wake));\n finalColor += highlight * foamColor * 0.5;\n \n gl_FragColor = vec4(finalColor, alpha);\n }\n ");(0,U.e)({TrailShaderMaterial:ei});let eo=e=>{let{color:t="#787878",waterColor:a="#0066ff",foamColor:i="#ffffff",speed:o=1,scale:l=3,opacity:s=.5}=e,c=(0,r.useRef)();return(0,U.F)((e,t)=>{c.current&&(c.current.uniforms.time.value+=t)}),(0,n.jsxs)("mesh",{rotation:[-Math.PI/2,0,Math.PI/2],position:[0,0,22.5],children:[(0,n.jsx)("planeGeometry",{args:[40,2.2,128,32]}),(0,n.jsx)("trailShaderMaterial",{ref:c,color:new m.Ilk(t),waterColor:new m.Ilk(a),foamColor:new m.Ilk(i),speed:o,scale:l,opacity:s,transparent:!0,depthWrite:!1,blending:m.WMw})]})};var el=a(4752);(0,U.e)({Water:el.B});var es=function(){let e=(0,r.useRef)(),t=(0,U.D)(e=>e.gl),a=(0,U.D)(e=>e.scene),i=(0,U.H)(m.dpR,"assets/waternormals.jpg");(0,r.useMemo)(()=>{i.wrapS=i.wrapT=m.rpg},[i]);let o=(0,r.useMemo)(()=>new m._12(1e4,1e4),[]),l=(0,r.useMemo)(()=>({textureWidth:600,textureHeight:450,waterNormals:i,sunDirection:new m.Pa4(0,1,0),sunColor:16777215,waterColor:30654,distortionScale:5,format:t.encoding,reflectivity:0}),[i,t.encoding]);(0,r.useMemo)(()=>{a.environment=null,a.background=null},[a]);let s=0;return(0,U.F)((t,a)=>{(s+=a)>.05&&(e.current&&(e.current.material.uniforms.time.value+=s),s=0)}),(0,n.jsx)("water",{ref:e,args:[o,l],"rotation-x":-Math.PI/2,position:[0,-.1,0]})};let ec=(0,r.createContext)(),eu=()=>(0,r.useContext)(ec),ed=(e,t,a,n)=>{let r=a.split(".").reduce((e,t)=>null==e?void 0:e[t],n);void 0!==r&&(e[t]=r)},eh=e=>{let{children:t}=e,[a,i]=(0,r.useState)({}),[o,l]=(0,r.useState)([]),s=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=async e=>{console.log("Fetching static vessel information...");try{let t=await e.API().then(e=>e.vessels()),a=Object.entries(t).map(e=>{let[t,a]=e,n={mmsi:t};return ed(n,"name","name",a),ed(n,"latitude","navigation.position.value.latitude",a),ed(n,"longitude","navigation.position.value.longitude",a),ed(n,"cog","navigation.courseOverGroundTrue.value",a),ed(n,"heading","navigation.headingTrue.value",a),ed(n,"length","design.length.value.overall",a),ed(n,"beam","design.beam.value",a),ed(n,"callsign","communication.callsignVhf",a),ed(n,"shipType","design.aisShipType.value.id",a),n});console.log("Fetched ".concat(a.length," vessels.")),l(a)}catch(e){console.error("Error fetching static vessel info:",e)}},t=e=>{if(!(null==e?void 0:e.updates)){console.warn("Delta is missing or does not contain updates:",e);return}let t=e=>({mmsi:e,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,heading:null}),a=e.context.replace("vessels.","");if(!a){console.warn("Update missing MMSI context:",e);return}i(n=>{let r=n[a]||t(a);return e.updates.forEach(e=>{e.values.forEach(e=>{switch(e.path){case"name":r.name=e.value;break;case"navigation.position":r.latitude=e.value.latitude,r.longitude=e.value.longitude;break;case"navigation.speedOverGround":r.sog=e.value;break;case"navigation.courseOverGroundTrue":r.cog=e.value;break;case"navigation.headingTrue":r.heading=e.value}})}),{...n,[a]:r}})};return(async()=>{try{let{signalkUrl:a}=u.getAll();if(console.log("SignalK URL:",a),!a)throw Error("SignalK URL is undefined or invalid.");let[n,r]=a.replace(/https?:\/\//,"").split(":");console.log("Connecting to SignalK at hostname: ".concat(n,", port: ").concat(r));let i=new h.default({hostname:n||"localhost",port:parseInt(r)||3e3,useTLS:a.startsWith("https"),reconnect:!0,autoConnect:!1,notifications:!1,subscriptions:[{context:"vessels.*",subscribe:[{path:"navigation.position"},{path:"navigation.speedOverGround"},{path:"navigation.courseOverGroundTrue"},{path:"navigation.headingTrue"}]}]});s.current=i,await i.connect(),console.log("SignalK client connected."),await e(i),i.on("delta",t)}catch(e){console.error("Error connecting to SignalK:",e)}})(),()=>{var e;console.log("Disconnecting SignalK client..."),null===(e=s.current)||void 0===e||e.disconnect()}},[]),(0,n.jsx)(ec.Provider,{value:{aisData:a,vesselIds:o},children:t})};var em=a(5476);let eg=async e=>{try{let t=await a(9927)("./".concat(e,"/Scene.jsx"));return t.default?t.default:t.Model}catch(t){throw console.error("Error loading ".concat(e," component:"),t),t}},ef=e=>0===e?"windsurf":30===e?"optimist":36===e?"sailboat":"ship",ex=(0,r.forwardRef)((e,t)=>{let{position:a,visible:i,boatData:o}=e,[l,s]=(0,r.useState)(null),c=ef(o.shipType);if((0,r.useEffect)(()=>{let e=!0;return eg(c).then(t=>{e&&s(()=>t)}).catch(e=>console.error("Failed to load ".concat(c,":"),e)),()=>{e=!1}},[c]),!l)return null;let u=(e,t)=>"".concat(e,": ").concat(t||"N/A","\n"),d=[u("Name",o.name||"Unknown"),u("Length",o.length?"".concat(o.length,"m"):"N/A"),u("Type",o.shipType)].join(""),h=(o.length||10)/10;return(0,n.jsxs)("group",{ref:t,position:a,visible:i,children:[(0,n.jsx)(l,{scale:[h,h,h]}),(0,n.jsx)(em.x,{position:[3,9,0],fontSize:.5,maxWidth:3,lineHeight:1,textAlign:"left",color:"white",anchorX:"center",anchorY:"top",font:"fonts/Roboto-Bold.ttf",children:d})]})});ex.displayName="AISBoat";let ep=e=>{if(e.material)return e;for(let t of e.children){let e=ep(t);if(e)return e}return null},ev=(e,t,a,n)=>({x:Math.PI/180*(t-n)*6371e3*Math.cos(Math.PI/180*a),y:Math.PI/180*(e-a)*6371e3}),eb=(e,t)=>{if(null!=e.sog&&null!=e.cog){let a=.51444*e.sog;return{deltaX:a*t*Math.sin(e.cog*Math.PI/180)*.2,deltaY:a*t*Math.cos(e.cog*Math.PI/180)*.2}}return{deltaX:0,deltaY:0}},ey=function(e,t,a){let n=!(arguments.length>3)||void 0===arguments[3]||arguments[3],r=-(.2*t),i=.2*a;n?(e.position.x+=(r-e.position.x)*.1,e.position.z+=(i-e.position.z)*.1):e.position.set(r,0,i)},ej=function(e,t){let a=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t*Math.PI/180;a?e.children[0].rotation.y+=(n-e.children[0].rotation.y)*.1:e.children[0].rotation.y=n};var ew=()=>{let{aisData:e,vesselIds:t}=eu(),a=(0,r.useRef)({}),{getSignalKValue:i}=w();(0,U.F)(()=>{let n=i("navigation.position"),r=i("navigation.speedOverGround");if(!(null==n?void 0:n.latitude)||!(null==n?void 0:n.longitude)||!Object.keys(a.current).length)return;let o=performance.now(),l=t.length&&!Object.keys(e).length;Object.values(l?t:e).forEach(e=>{if(null==e.latitude||null==e.longitude||!a.current[e.mmsi])return;let t=a.current[e.mmsi],i=e.lastUpdate||o,{x:s,y:c}=ev(e.latitude,e.longitude,n.latitude,n.longitude),u=0,d=0;!l&&null!=r&&r>0&&o-i>1e3&&({deltaX:u,deltaY:d}=eb(e,(o-i)/1e3));let h=s+u,m=c+d,g=Math.sqrt((.2*h)**2+(.2*m)**2);if(g>0&&g<=600){t.visible=!0,t.currentColor||(t.currentColor=g<100?"red":"white");let a=t.currentColor;"red"===t.currentColor&&g>110?a="white":"white"===t.currentColor&&g<100&&(a="red"),console.log("Boat ".concat(e.mmsi,": Displayed Distance = ").concat(g.toFixed(2),", Target Color = ").concat(a)),ey(t,h,m,!l),null!=e.cog?ej(t,e.cog,!l):null!=e.heading&&ej(t,e.heading,!l);let n=ep(t.children[0]);n?(t.redMaterial||(t.redMaterial=n.material.clone(),t.redMaterial.color.set("red")),t.whiteMaterial||(t.whiteMaterial=n.material.clone(),t.whiteMaterial.color.set("white")),"red"===a&&"red"!==t.currentMaterial?(n.material=t.redMaterial,t.currentMaterial="red",console.log("Swapped material to red for boat ".concat(e.mmsi))):"white"===a&&"white"!==t.currentMaterial&&(n.material=t.whiteMaterial,t.currentMaterial="white",console.log("Swapped material to white for boat ".concat(e.mmsi))),t.currentColor=a):console.warn("Material not found for boat ".concat(e.mmsi))}else t.visible=!1})});let o=(0,r.useMemo)(()=>t.filter(e=>e.mmsi&&!e.mmsi.startsWith("urn:mrn:signalk:uuid:")&&!e.mmsi.startsWith("227925790")&&!e.mmsi.startsWith("urn:mrn:imo:mmsi:230035780")).map(e=>(0,n.jsx)(ex,{ref:t=>a.current[e.mmsi]=t,position:[0,0,0],visible:!1,boatData:e},e.mmsi)),[t]);return(0,n.jsx)(n.Fragment,{children:o})},eM=a(1);let eN=r.memo(e=>{let{radius:t,isOuter:a,markerColorPrimary:i,markerColorGreen:o,markerColorRed:l}=e,s=(0,r.useMemo)(()=>{let e=[];for(let r=0;r<360;r+=10){let s=m.M8C.degToRad(r-90),c=r%30==0,u=a?c?.4:.2:c?.3:.15,d=(t+.5*u+.2)*Math.cos(s),h=(t+.5*u+.2)*Math.sin(s),g=a&&r>0&&r<61,f=a&&r>=300&&r<360,x=g?o:f?l:i;if(!a&&c){let t=0===r?"N":r.toString();e.push((0,n.jsx)(em.x,{characters:"N0123456789",position:[d,.01,h],color:i,fontSize:.5,rotation:[-Math.PI/2,0,Math.PI/2-s],font:"fonts/Roboto-Bold.ttf",anchorY:"middle",children:t},"text-".concat(r)))}else e.push((0,n.jsx)(eM.aL,{args:[u/2,16,16],position:[d,0,h],children:(0,n.jsx)("meshBasicMaterial",{color:x})},"marker-".concat(a?"outer":"inner","-").concat(r)))}return e},[t,a,i,o,l]);return(0,n.jsx)(n.Fragment,{children:s})});eN.displayName="StaticMarkers";let eS=r.memo(e=>{let{innerRadius:t,outerRadius:a,dialColor:r,opacity:i=1,transparent:o=!1}=e;return(0,n.jsx)(eM.FM,{args:[t,a,64],rotation:[Math.PI/2,0,0],children:(0,n.jsx)("meshBasicMaterial",{color:r,side:m.ehD,transparent:o,opacity:i})})});eS.displayName="StaticRing";let eP=e=>{let{outerRadius:t,innerRadius:a}=e,{nightMode:i,getSignalKValue:o}=w(),l=i?"#ef4444":16777215,s=o("navigation.courseOverGroundTrue")||10,c=(0,r.useMemo)(()=>({innerRadius:a,outerRadius:t,dialColor:l,markerColorPrimary:0,markerColorGreen:p,markerColorRed:x}),[a,t,l,0,p,x]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("group",{rotation:[0,Math.PI-s,0],children:[(0,n.jsx)(eS,{innerRadius:c.innerRadius,outerRadius:c.outerRadius,dialColor:c.dialColor}),(0,n.jsx)(eN,{radius:c.innerRadius,isOuter:!1,markerColorPrimary:c.markerColorPrimary,markerColorGreen:c.markerColorGreen,markerColorRed:c.markerColorRed})]}),(0,n.jsxs)("group",{children:[(0,n.jsx)(eS,{innerRadius:c.innerRadius+1,outerRadius:c.outerRadius+1,dialColor:c.dialColor,transparent:!0,opacity:.5}),(0,n.jsx)(eN,{radius:c.innerRadius+1,isOuter:!0,markerColorPrimary:c.markerColorPrimary,markerColorGreen:c.markerColorGreen,markerColorRed:c.markerColorRed})]})]})};eP.displayName="CompassDial";var eC=a(718),ek=a.n(eC);let eR={TRUE_WIND:1,APP_WIND:1},eI=e=>{let{position:t=[0,0,0],rotation:a=[0,0,0],speed:r,color:i="#ffffff",fontSize:o=.5,textPosition:l=[0,.8,0],arrowSize:s=1}=e;return(0,n.jsxs)("group",{position:t,rotation:a,children:[(0,n.jsx)(em.x,{characters:".0123456789",color:i,fontSize:o*s,position:l,font:"fonts/Roboto-Bold.ttf",children:r.toFixed(1)}),(0,n.jsxs)("mesh",{children:[(0,n.jsx)("shapeGeometry",{args:[new m.bnF([new m.FM8(0,0),new m.FM8(.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,-.577*s),new m.FM8(-.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,0)])]}),(0,n.jsx)("meshStandardMaterial",{color:i,side:m.ehD})]})]})};eI.propTypes={position:ek().instanceOf(m.Pa4).isRequired,rotation:ek().arrayOf(ek().number).isRequired,speed:ek().number.isRequired,color:ek().string.isRequired,fontSize:ek().number.isRequired,textPosition:ek().arrayOf(ek().number).isRequired};let e_=e=>{let{outerRadius:t}=e,{getSignalKValue:a}=w(),i=Math.PI/2-a("environment.wind.angleTrueGround")||0,o=b(a("environment.wind.speedOverGround"))||0,l=Math.PI/2-a("environment.wind.angleApparent")||0,s=b(a("environment.wind.speedApparent"))||0,c=(0,r.useMemo)(()=>new m.Pa4((t+.7)*Math.cos(i),0,-(t+.7)*Math.sin(i)),[t,i]),u=(0,r.useMemo)(()=>new m.Pa4((t+.7)*Math.cos(l),0,-(t+.7)*Math.sin(l)),[t,l]);return(0,n.jsxs)("group",{children:[o>0&&(0,n.jsx)(eI,{position:c,rotation:[-Math.PI/2,0,-(Math.PI/2-i)],speed:o,color:"blue",fontSize:eR.TRUE_WIND}),s>0&&(0,n.jsx)(eI,{position:u,rotation:[-Math.PI/2,0,-(Math.PI/2-l)],speed:s,color:f,fontSize:eR.APP_WIND})]})};e_.propTypes={outerRadius:ek().number.isRequired};var eT=()=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eP,{outerRadius:5.6,innerRadius:5}),(0,n.jsx)(e_,{outerRadius:5.6+1.1})]}),eE=a(8181),eA=JSON.parse('{"N":{"52":[4.98,5.86,6.31,6.45,6.51,6.52,6.41],"60":[5.25,6.11,6.56,6.73,6.79,6.82,6.79],"75":[5.45,6.33,6.77,7.01,7.13,7.2,7.24],"90":[5.66,6.55,7,7.25,7.38,7.53,7.7],"110":[5.49,6.49,7.04,7.4,7.69,7.97,8.38],"120":[5.32,6.36,6.97,7.39,7.77,8.1,8.6],"135":[4.81,5.92,6.68,7.15,7.55,7.95,8.85],"150":[4.09,5.17,6.04,6.61,6.99,7.31,7.93],"angles":[52,60,75,90,110,120,135,150],"speeds":[6,8,10,12,14,16,20],"beat_angle":[43.6,42,41.2,41.2,41.7,42.1,44.2],"beat_vmg":[3.26,3.91,4.24,4.34,4.36,4.34,4.16],"run_angle":[144.8,147.8,148.5,149.6,171.8,175.4,177.2],"run_vmg":[3.54,4.48,5.23,5.73,6.17,6.67,7.36]}}');let eG={DEG2RAD:Math.PI/180,ROTATION_INTERPOLATION_FACTOR:.05,SOG_SMOOTHING_FACTOR:.1,DEFAULT_SOG:3,ANGLE_INCREMENT:10,SPHERE_SIZE:.4,SPHERE_SEGMENTS:32,DEFAULT_LINE_WIDTH:1,PLOTS_COUNT:10,FRAME_TO_MINUTE_RATIO:3600},eO=(e,t)=>26.8224*e*t*.1,eL=(e,t,a)=>{if(!e||!t)return new m.Pa4(0,0,0);let n=e*eG.DEG2RAD,r=eO(t,a);return new m.Pa4(r*Math.sin(n),0,-r*Math.cos(n))},eF=(e,t)=>{if(!(null==e?void 0:e.length))return 0;let a=0,n=e.length-1;for(;a<n;){let r=Math.floor((a+n)/2);e[r]<t?a=r+1:n=r}return a},eD=e=>{let{position:t,color:a}=e;return t?(0,n.jsxs)("mesh",{position:t,children:[(0,n.jsx)("sphereGeometry",{args:[eG.SPHERE_SIZE,eG.SPHERE_SEGMENTS,eG.SPHERE_SEGMENTS]}),(0,n.jsx)("meshStandardMaterial",{color:a})]}):null},ez=e=>{let{points:t,color:a}=e;return(null==t?void 0:t.length)?(0,n.jsx)(eE.x,{points:t,color:a,lineWidth:eG.DEFAULT_LINE_WIDTH}):null},eB=r.memo(e=>{let{timeInMinute:t,windSpeed:a}=e,i=(0,r.useRef)(eA.N),o=(0,r.useCallback)((e,t,a,n)=>(null==e?void 0:e.length)&&(null==t?void 0:t.length)&&!(e.length<=a)&&!(t.length<=a)?eL(e[a],t[a],n):(console.warn("Invalid angle or VMG data"),null),[]),l=(0,r.useCallback)((e,t)=>{let{speeds:a,angles:n,beat_angle:r,beat_vmg:o,run_angle:l,run_vmg:s}=i.current;if(!(null==a?void 0:a.length)||!(null==n?void 0:n.length))return console.warn("Invalid polar data"),null;let c=(e,t,a)=>e+a*(t-e),u=[],d=(e,a,n)=>{for(let r=e;r<=a;r+=eG.ANGLE_INCREMENT)u.push(eL(r,n(r),t))};return d(0,r[e],t=>c(0,o[e],t/r[e])),n.forEach(a=>{if(a>r[e]&&a<l[e]){var n;let r=(null===(n=i.current[Math.floor(a)])||void 0===n?void 0:n[e])||0;u.push(eL(a,r,t))}}),d(l[e],180,()=>s[e]),new m.YT8(u,!0)},[]),s=(0,r.useMemo)(()=>{var e;let n=i.current;if(!(null==n?void 0:null===(e=n.speeds)||void 0===e?void 0:e.length))return console.warn("Invalid polar data structure"),{curve:null,beat:null,run:null};let r=eF(n.speeds,a);return{curve:l(r,t),beat:o(n.beat_angle,n.beat_vmg,r,t),run:o(n.run_angle,n.run_vmg,r,t)}},[t,a,o,l]);return(0,n.jsx)(n.Fragment,{children:[0,-Math.PI].map((e,t)=>(0,n.jsxs)("group",{rotation:[0,0,e],children:[s.curve&&(0,n.jsx)(ez,{points:s.curve.getPoints(100),color:f}),(0,n.jsx)(eD,{position:s.beat,color:p}),(0,n.jsx)(eD,{position:s.run,color:x})]},t))})});eB.displayName="PolarPlot";var eW=function(){let e=(0,r.useRef)([]),[t,a]=(0,r.useState)([]),i=(0,r.useRef)(0),o=(0,r.useRef)([]),l=(0,r.useRef)(eG.DEFAULT_SOG),{getSignalKValue:s}=w(),c=s("environment.wind.angleApparent"),u=b(s("environment.wind.speedOverGround"))||0,d=s("navigation.speedOverGround")||eG.DEFAULT_SOG;return(0,r.useEffect)(()=>{let t=Array.from({length:eG.PLOTS_COUNT},(e,t)=>({id:t,timeInMinute:5*(t+1)}));a(t),e.current=t.map(()=>new m.ZAu),o.current=Array(eG.PLOTS_COUNT).fill(0)},[]),(0,U.F)((a,n)=>{i.current+=1,l.current=m.M8C.lerp(l.current,d,eG.SOG_SMOOTHING_FACTOR),t.forEach((t,a)=>{let n=e.current[a];if(n&&t.timeInMinute-i.current/eG.FRAME_TO_MINUTE_RATIO>0){let e=o.current[a],t=m.M8C.lerp(e,c,eG.ROTATION_INTERPOLATION_FACTOR);n.rotation.set(0,t,0),o.current[a]=t}})}),(0,n.jsx)(n.Fragment,{children:t.map((t,a)=>(0,n.jsx)("group",{ref:t=>{t&&(e.current[a]=t)},children:(0,n.jsx)(eB,{timeInMinute:t.timeInMinute,windSpeed:u})},t.id))})},eU=()=>{let{states:e}=w(),t=(0,r.useRef)();return(0,n.jsxs)(r.Suspense,{fallback:(0,n.jsx)(D.V,{children:"Loading..."}),children:[(0,n.jsx)(z.c,{makeDefault:!0,fov:60,near:1,far:1e3,position:[0,5,20]}),(0,n.jsx)(B.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(W.qA,{files:"./assets/ocearo_env.hdr",background:!1,intensity:.8}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:2,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001,color:"#ffd1a6"}),(0,n.jsx)("directionalLight",{position:[10,10,-10],intensity:.3}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsxs)("group",{position:[0,-3,0],children:[(0,n.jsx)(er,{position:[0,0,.7],scale:[.7,.7,.7],ref:t,showSail:!0}),e.showOcean&&(0,n.jsx)(es,{}),(0,n.jsx)(eo,{}),(0,n.jsx)(eW,{}),e.ais&&(0,n.jsx)(eh,{children:(0,n.jsx)(ew,{})}),(0,n.jsx)(eT,{visible:!1})]})]})},eH=()=>{let{nightMode:e,setNightMode:t,states:a,toggleState:r}=w(),i=e?"text-oNight":"text-oGray",o=e=>{let t={autopilot:"autopilot"===e,anchorWatch:"anchorWatch"===e,parkingMode:"parkingMode"===e};Object.keys(t).forEach(e=>{r(e,t[e])})};return(0,n.jsxs)("div",{className:"text-lg",children:[(0,n.jsx)("button",{onClick:()=>o("autopilot"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.lnS,className:a.autopilot?"text-oBlue":i})}),(0,n.jsx)("button",{onClick:()=>o("anchorWatch"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.SJR,className:a.anchorWatch?"text-oYellow":i})}),(0,n.jsx)("button",{onClick:()=>o("parkingMode"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.BQ9,className:a.parkingMode?"text-oGreen":i})}),(0,n.jsx)("button",{onClick:()=>r("mob"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.i4I,className:a.mob?"text-oRed":i})}),(0,n.jsx)("button",{onClick:()=>t(!e),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.DBF,className:e?"text-oNight":i})}),(0,n.jsx)("button",{onClick:()=>r("showOcean"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.L02,className:a.showOcean?"text-oBlue":i})}),(0,n.jsx)("button",{onClick:()=>r("ais"),className:"p-1",children:(0,n.jsx)(C.G,{icon:k.mDh,className:a.ais?"text-oGreen":i})})]})};let eV={SOG:"navigation.speedOverGround",VMG:"performance.velocityMadeGood",STW:"navigation.speedThroughWater",POL:"performance.polarSpeedRatio"};var eK=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)("SOG"),o=(0,r.useMemo)(()=>{let e={};for(let[a,n]of Object.entries(eV)){let r=t(n);null!=r&&(e[a]=b(r))}return e},[t]),l=Object.keys(o),s=void 0!==o[a]?a:l[0],c=o[s],u=(0,r.useCallback)(()=>{if(0===l.length)return;let e=(l.indexOf(s)+1)%l.length;i(l[e])},[l,s]),d=e?"text-oNight":"text-oGray";return 0===l.length?(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsx)("div",{className:"text-6xl font-bold text-gray-400",children:"--"}),(0,n.jsx)("div",{className:"text-lg ".concat(d),children:"NO DATA"})]}):(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsx)("div",{className:"text-6xl font-bold cursor-pointer ".concat(e?"text-oNight":"text-white"),onClick:u,role:"button",tabIndex:0,"aria-label":"Current speed: ".concat(c," ").concat(s,". Click to change speed type."),children:(null==c?void 0:c.toFixed(1))||"--"}),(0,n.jsx)("div",{className:"text-lg ".concat(d),children:s})]})};let eY={BATTERIES:"batteries",TANKS:"tanks"},eq={FRESH_WATER:{id:"freshWater",label:"Fresh Water",path:"tanks.freshWater.0.currentLevel",icon:"\uD83D\uDCA7",color:"bg-oBlue"},FUEL:{id:"fuel",label:"Fuel",path:"tanks.fuel.0.currentLevel",icon:"⛽",color:"bg-oYellow"},BLACK_WATER:{id:"blackWater",label:"Black Water",path:"tanks.blackWater.0.currentLevel",icon:"\uD83D\uDEB0",color:"bg-oGray"}},eX={WARNING_THRESHOLD:50,DANGER_THRESHOLD:20,CHARGING_THRESHOLD:13},eZ=e=>e>=12.7?100:e>=12.5?75:e>=12.3?50:e>=12.1?25:0,eJ=e=>{let{level:t,type:a}=e,r=Math.max(0,Math.min(100,t)),{label:i,icon:o,color:l}=eq[a];return(0,n.jsxs)("div",{className:"flex items-center space-x-3 my-2",children:[(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)("span",{className:"text-sm",children:o}),(0,n.jsx)("div",{className:"relative w-20 h-4 bg-oGray rounded-lg overflow-hidden",children:(0,n.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(l," transition-all duration-300"),style:{width:"".concat(r,"%")}})})]}),(0,n.jsxs)("span",{className:"text-sm font-medium",children:[i,": ",r,"%"]})]})},eQ=e=>{let{batteryLevel:t,batteryNumber:a,voltage:i}=e,[o,l]=(0,r.useState)(!1),s=Math.max(0,Math.min(100,t)),c=i>eX.CHARGING_THRESHOLD,u=(0,r.useMemo)(()=>s>eX.WARNING_THRESHOLD?"bg-oGreen":s>eX.DANGER_THRESHOLD?"bg-oYellow":"bg-oRed",[s]);return(0,n.jsxs)("div",{className:"flex items-center space-x-3 my-2 relative",onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[(0,n.jsxs)("div",{className:"relative w-8 h-4 bg-oGray rounded-sm border border-oGray flex items-center justify-center",children:[(0,n.jsx)("div",{className:"absolute -right-1 w-1 h-3 bg-oGray rounded-sm"}),(0,n.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(u," transition-all duration-300 rounded-sm"),style:{width:"".concat(s,"%")}}),(0,n.jsx)("span",{className:"relative z-10 text-xs text-black font-bold",children:a})]}),(0,n.jsxs)("span",{className:"text-sm font-medium ".concat(s<=eX.DANGER_THRESHOLD?"text-oRed animate-pulse":""),children:[s,"%"]}),c&&(0,n.jsx)("span",{className:"text-oGreen ml-1",children:"⚡"}),o&&(0,n.jsxs)("div",{className:"absolute -left-20 top-10 bg-gray-800 text-white px-2 py-1 rounded text-xs whitespace-nowrap",children:["Voltage: ",null==i?void 0:i.toFixed(1),"V ",c&&"(Charging)"]})]})};var e$=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)(eY.BATTERIES),o=(0,r.useMemo)(()=>{let e=t("electrical.batteries.1.capacity.stateOfCharge"),a=t("electrical.batteries.1.voltage");return[{level:null===e?eZ(a):e,number:1,voltage:a}].filter(e=>null!==e.level)},[t]),l=(0,r.useMemo)(()=>({FRESH_WATER:t(eq.FRESH_WATER.path)||40,FUEL:t(eq.FUEL.path)||75,BLACK_WATER:t(eq.BLACK_WATER.path)||20}),[t]),s=()=>{i(e=>e===eY.BATTERIES?eY.TANKS:eY.BATTERIES)};return(0,n.jsx)("div",{className:"".concat(e?"text-oNight":"text-oGray"," rounded-lg transition-all duration-300 hover:bg-gray-800/10 cursor-pointer"),onClick:s,role:"button",tabIndex:0,"aria-label":"Toggle between ".concat(a===eY.BATTERIES?"tanks":"batteries"," display"),onKeyPress:e=>"Enter"===e.key&&s(),children:a===eY.BATTERIES?(0,n.jsx)("div",{className:"space-y-2",children:o.map(e=>(0,n.jsx)(eQ,{batteryLevel:e.level,batteryNumber:e.number,voltage:e.voltage},e.number))}):(0,n.jsx)("div",{className:"space-y-2",children:Object.entries(eq).map(e=>{let[t,a]=e;return(0,n.jsx)(eJ,{type:t,level:l[t]},t)})})})},e0=()=>{let{nightMode:e}=w(),{getSignalKValue:t}=w(),a=180*(t("steering.rudderAngle")||0)/Math.PI;return(0,n.jsx)("div",{style:{width:"480px",paddingBottom:"25px"},className:"mx-auto",children:(0,n.jsxs)("div",{className:"w-full bg-oGray h-1 rounded-full relative mt-2",children:[(()=>{let t=[];for(let a=-60;a<=60;a+=10){let r=a/120*100;t.push((0,n.jsx)("div",{className:"absolute h-2 w-px bg-oGray",style:{left:"".concat(50+r,"%"),transform:"translateX(-20%)"},children:(0,n.jsx)("span",{className:"text-xs ".concat(e?"text-oNight":"text-oGray"),style:{transform:"translateY(-50%)"},children:a})},a))}return t})()," ",(0,n.jsx)("div",{className:"absolute top-0 h-1 rounded-full transition-all duration-300 ease-in-out ".concat(a<0?"bg-oRed":"bg-oGreen"),style:{width:"".concat(Math.abs(a)/120*100,"%"),left:"50%",transform:a<0?"translateX(-100%)":"translateX(0)"}})]})})};let e1={DANGER:3,WARNING:5,MAX_DEPTH:50},e2={DANGER:"bg-oRed",WARNING:"bg-oYellow",SAFE:"bg-oBlue"},e5={NIGHT:"text-oNight",DAY:"text-white"};var e4=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)(null),[o,l]=(0,r.useState)(240);(0,r.useEffect)(()=>{let e=()=>{let e=window.innerHeight;l(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,r.useEffect)(()=>{let e=t("environment.depth.belowTransducer");i(null!=e?Number(e.toFixed(1)):null)},[t]);let s=(0,r.useMemo)(()=>null===a?0:Math.min(a/e1.MAX_DEPTH*100,100),[a]),c=(0,r.useMemo)(()=>null===a?e2.SAFE:a<e1.DANGER?e2.DANGER:a<e1.WARNING?e2.WARNING:e2.SAFE,[a]),u=e?e5.NIGHT:e5.DAY,d=(0,r.useCallback)(e=>null===e?"--":"".concat(e," m"),[]);return(0,n.jsxs)("div",{className:"flex flex-col items-center",children:[(0,n.jsx)("div",{className:"text-sm mb-2 ".concat(u),children:"Depth"}),(0,n.jsx)(()=>(0,n.jsx)("div",{className:"w-2 ".concat(c," rounded-lg overflow-hidden mb-4"),style:{height:o},role:"progressbar","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":e1.MAX_DEPTH,"aria-label":"Water depth: ".concat(d(a)),children:(0,n.jsx)("div",{className:"bg-oGray transition-all duration-500 ease-in-out",style:{height:"".concat(100-s,"%")}})}),{}),(0,n.jsx)("div",{className:"text-sm mt-2 ".concat(u," ").concat(a<e1.DANGER?"animate-pulse":""),children:d(a)})]})};let e3={MIN:10,MAX:90},e6={RISING:{BACKGROUND:"bg-oGreen",TEXT:"text-oGreen"},FALLING:{BACKGROUND:"bg-oYellow",TEXT:"text-oYellow"}},e7={NIGHT:"text-oNight",DAY:"text-white"};var e8=()=>{let{nightMode:e,getSignalKValue:t}=w(),[a,i]=(0,r.useState)(240),[o,l]=(0,r.useState)({level:null,high:null,low:null,timeLow:null,timeHigh:null,coefficient:null,isRising:null}),s=(0,r.useCallback)(e=>{if(!e)return null;let[t,a]=e.split(":").map(Number);return 60*t+a},[]),c=(0,r.useCallback)((e,t,a)=>{let n=s(e),r=s(t),i=s(a);return!!n&&!!r&&!!i&&(r<i?n>=r&&n<=i:n>=r||n<=i)},[s]),u=(0,r.useCallback)((e,t,a)=>a<=t||!e?0:Math.min(100,Math.max(0,(e-t)/(a-t)*100)),[]);(0,r.useEffect)(()=>{let e=()=>{let e=window.innerHeight;i(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),(0,r.useEffect)(()=>{let e=new Date().toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1}),a={level:t("environment.tide.heightNow"),high:t("environment.tide.heightHigh"),low:t("environment.tide.heightLow"),timeLow:t("environment.tide.timeLow"),timeHigh:t("environment.tide.timeHigh"),coefficient:t("environment.tide.coeffNow")};Object.values(a).every(e=>null!=e)&&l({...a,isRising:c(e,a.timeLow,a.timeHigh)})},[t,c]);let{level:d,high:h,low:m,timeLow:g,timeHigh:f,coefficient:x,isRising:p}=o,v=e?e7.NIGHT:e7.DAY,b=p?e6.RISING:e6.FALLING,y=(0,r.useMemo)(()=>u(d,m,h),[d,m,h,u]);if(Object.values(o).some(e=>null===e))return null;let j=y>e3.MIN&&y<e3.MAX;return(0,n.jsxs)("div",{className:"flex flex-col items-center",children:[(0,n.jsx)("div",{className:"text-sm ".concat(v),children:"La Rochelle"}),(0,n.jsxs)("div",{className:"text-sm mb-2 ".concat(v," flex items-center gap-1"),children:[f,(0,n.jsx)("span",{className:"inline-block transform ".concat(!p&&"rotate-180"," ").concat(b.TEXT),children:"▲"}),(0,n.jsx)("span",{children:x})]}),(0,n.jsxs)("div",{className:"relative flex flex-col w-8",style:{height:a},children:[(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium"),style:{top:"0%",left:"60%"},children:[h,"m"]}),j&&(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium transition-opacity duration-300"),style:{bottom:"".concat(y,"%"),left:"60%"},children:[d.toFixed(2),"m"]}),(0,n.jsxs)("span",{className:"absolute ".concat(v," text-sm font-medium"),style:{bottom:"0%",left:"60%"},children:[m,"m"]}),(0,n.jsx)("div",{className:"flex flex-col justify-end bg-oGray rounded-3xl w-2 overflow-hidden",style:{height:a},children:(0,n.jsx)("div",{role:"progressbar",className:"".concat(b.BACKGROUND," w-2 rounded-3xl transition-all duration-500"),"aria-valuenow":y,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Tide level: ".concat(d.toFixed(2)," meters"),style:{height:"".concat(y,"%")}})})]}),(0,n.jsx)("div",{className:"text-sm mt-2 ".concat(v),children:g})]})},e9=e=>{let{rudderAngle:t,sog:a,windSpeed:i=0,windDirection:o=0,currentSpeed:l=0,currentDirection:s=0,boatWidth:c=2,maxCurvePoints:u=100}=e,d=(0,r.useRef)(),h=(0,r.useRef)(),g=(0,r.useRef)(),f=(0,r.useCallback)(()=>{let e=m.M8C.degToRad(o),t=m.M8C.degToRad(s);return{x:Math.cos(e)*i*.1+Math.cos(t)*l*.2,z:Math.sin(e)*i*.1+Math.sin(t)*l*.2}},[i,o,l,s]),x=(0,r.useCallback)(()=>{let e=f(),t=[];for(let a=0;a<u;a++){let n;let r=a/u*50,i=-r,o=(r/50)**2;n=0+e.x*o*50,i+=e.z*o*50,t.push(new m.Pa4(n,0,i))}return t},[f,u]),p=(0,r.useCallback)(()=>{if(.1>Math.abs(t))return x();let e=m.M8C.degToRad(t),n=Math.min(Math.max(Math.abs(0!==a?a/Math.tan(e||.01):1e3),2*c),500),r=f(),i=[];for(let e=0;e<u;e++){let t=e/u,a=t*Math.PI,o=n*(1-Math.cos(a))*.1,l=n*Math.sin(a)*.1,s=Math.sqrt((o+=r.x*t*t)*o+(l+=r.z*t*t)*l),d=1.5*c;if(s<d){let e=d/s;o*=e,l*=e}i.push(new m.Pa4(o,0,l))}return i},[t,a,c,u,f,x]),v=(0,r.useCallback)((e,t)=>{let a=[];for(let n=0;n<e.length;n++){let r=0===n?0:n-1,i=n===e.length-1?e.length-1:n+1,o=e[r],l=e[i],s=e[n],c=new m.Pa4().subVectors(l,o).normalize(),u=new m.Pa4(-c.z,0,c.x).normalize(),d=new m.Pa4().copy(s).addScaledVector(u,t);a.push(d)}return a},[]);return(0,r.useEffect)(()=>{if(!d.current||!h.current||!g.current)return;let e=p(),t=v(e,-(.5*c)),a=v(e,.5*c);d.current.geometry.setFromPoints(e),h.current.geometry.setFromPoints(t),g.current.geometry.setFromPoints(a)},[p,v,c]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("line",{ref:d,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:"blue",linewidth:3})]}),(0,n.jsxs)("line",{ref:h,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:"red",linewidth:3})]}),(0,n.jsxs)("line",{ref:g,children:[(0,n.jsx)("bufferGeometry",{}),(0,n.jsx)("lineBasicMaterial",{color:"yellow",linewidth:3})]})]})};let te=e=>{let{position:t,rotation:a,speed:r,color:i="#ffffff",fontSize:o=.5,textPosition:l=[0,.8,0],arrowSize:s=1}=e;return(0,n.jsxs)("group",{position:t,rotation:a,children:[(0,n.jsx)(em.x,{characters:"0123456789.",color:i,fontSize:o*s,position:l,font:"/fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",children:r.toFixed(1)}),(0,n.jsxs)("mesh",{children:[(0,n.jsx)("shapeGeometry",{args:[new m.bnF([new m.FM8(0,0),new m.FM8(.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,-.577*s),new m.FM8(-.5*s*Math.cos(5*Math.PI/6),.5*s*Math.sin(5*Math.PI/6)),new m.FM8(0,0)])]}),(0,n.jsx)("meshStandardMaterial",{color:i,side:m.ehD})]})]})};te.propTypes={position:ek().arrayOf(ek().number),rotation:ek().arrayOf(ek().number),speed:ek().number.isRequired,color:ek().string,fontSize:ek().number,textPosition:ek().arrayOf(ek().number),arrowSize:ek().number},te.defaultProps={position:[0,0,0],rotation:[0,0,0],color:"#ffffff",fontSize:.5,textPosition:[0,.8,0],arrowSize:1};let tt=e=>{let{outerRadius:t}=e,{getSignalKValue:a}=w(),i=a("environment.current")||{setTrue:0,drift:0},o=(0,r.useMemo)(()=>{let e=i.setTrue||0;return[(t+.7)*Math.cos(e),0,-(t+.7)*Math.sin(e)]},[t,i.setTrue]);return!i.drift||i.drift<=0?null:(0,n.jsx)("group",{children:(0,n.jsx)(te,{position:o,rotation:[-Math.PI/2,0,-(Math.PI/2-(i.setTrue||0))],speed:i.drift,color:p,arrowSize:1.2})})};tt.propTypes={outerRadius:ek().number.isRequired};var ta=()=>{let e=(0,r.useRef)(),{getSignalKValue:t}=w(),a=t("steering.rudderAngle")||0,i=t("navigation.speedOverGround")||0,o=t("environment.wind.angleApparent")||0,l=b(t("environment.wind.speedApparent"))||0,s=t("environment.current")||{setTrue:0,drift:0};return(0,n.jsxs)(r.Suspense,{fallback:(0,n.jsx)(D.V,{center:!0,children:"Loading..."}),children:[(0,n.jsx)(z.c,{makeDefault:!0,fov:60,near:1,far:1e3,position:[0,5,10]}),(0,n.jsx)(B.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(W.qA,{files:"./assets/ocearo_env.hdr",background:!1,intensity:.8}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:1.8,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":1024,"shadow-mapSize-height":1024,"shadow-camera-near":.5,"shadow-camera-far":50,"shadow-bias":-.0001}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,color:"#ffd1a6",castShadow:!0}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsxs)("group",{position:[0,-3,0],children:[(0,n.jsx)(er,{position:[0,0,.7],scale:[.7,.7,.7],ref:e,showSail:!1}),(0,n.jsx)(e_,{outerRadius:5}),(0,n.jsx)(tt,{outerRadius:5}),(0,n.jsx)("group",{position:[0,0,-5],"rotation-y":Math.PI,children:(0,n.jsx)(e9,{rudderAngle:a,sog:i,windSpeed:l,windDirection:o,currentSpeed:s.drift,currentDirection:s.setTrue,boatWidth:2,color:p,maxCurvePoints:100})})]})]})};let tn=(e,t,a,n)=>{let r=(a-e)*Math.PI/180,i=(n-t)*Math.PI/180,o=Math.sin(r/2)*Math.sin(r/2)+Math.cos(e*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(i/2)*Math.sin(i/2);return 2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))*6371e3};var tr=()=>{let e=(0,r.useRef)(),[t,a]=(0,r.useState)(null),{getSignalKValue:i}=w();return(0,r.useEffect)(()=>{let e=i("navigation.position");e&&!t&&a({latitude:e.latitude,longitude:e.longitude})},[i,t]),(0,r.useEffect)(()=>{if(e.current){let t=new m.u9r,a=[];for(let e=0;e<=64;e++){let t=e/64*Math.PI*2;a.push(50*Math.cos(t),0,50*Math.sin(t))}t.setAttribute("position",new m.a$l(a,3)),e.current.geometry=t}},[]),(0,U.F)(()=>{if(e.current&&t){let a=i("navigation.position");if(a){let n=tn(t.latitude,t.longitude,t.latitude,a.longitude),r=tn(t.latitude,t.longitude,a.latitude,t.longitude),i=a.longitude>t.longitude?n:-n,o=a.latitude>t.latitude?r:-r;e.current.position.set(i,-6.9,o)}}}),(0,n.jsx)("line",{ref:e,children:(0,n.jsx)("lineBasicMaterial",{attach:"material",color:"green",linewidth:2})})},ti=()=>{let e=(0,r.useRef)(),{size:t}=(0,U.D)(),a=t.width/t.height;return(0,n.jsxs)(r.Suspense,{fallback:(0,n.jsx)(D.V,{children:"Loading..."}),children:[(0,n.jsx)(z.c,{makeDefault:!0,fov:25,aspect:a,near:1,far:1e3,position:[32,10,-32]}),(0,n.jsx)(B.z,{enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2,minPolarAngle:Math.PI/4}),(0,n.jsx)(W.qA,{files:"./assets/ocearo_env.hdr",background:!1}),(0,n.jsx)("ambientLight",{intensity:.6}),(0,n.jsx)("spotLight",{position:[15,30,20],intensity:2,angle:Math.PI/6,penumbra:.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,n.jsx)("directionalLight",{position:[-10,20,10],intensity:1.5,castShadow:!0,"shadow-mapSize-width":2048,"shadow-mapSize-height":2048}),(0,n.jsx)("pointLight",{position:[-10,10,-10],intensity:.7}),(0,n.jsx)(er,{ref:e,scale:[1.3,1.3,1.3],position:[0,-6,0]}),(0,n.jsx)(tr,{}),(0,n.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,-7,0],receiveShadow:!0,children:[(0,n.jsx)("planeGeometry",{args:[100,100]}),(0,n.jsx)("shaderMaterial",{uniforms:{uColor:{value:new m.Ilk("#111111")},uBlurRadius:{value:.1}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform vec3 uColor;\n uniform float uBlurRadius;\n varying vec2 vUv;\n\n void main() {\n float distanceToCenter = length(vUv - vec2(0.5));\n float alpha = smoothstep(0.5 - uBlurRadius, 0.5 + uBlurRadius, distanceToCenter);\n gl_FragColor = vec4(uColor, 1.0 - alpha);\n }\n "})]})]})},to=()=>{let{nightMode:e,getSignalKValue:t}=w(),a=t("navigation.position"),r=(e,t)=>{if(null==e)return"--";let a=Math.abs(e),n=Math.floor(a),r=((a-n)*60).toFixed(3);return"".concat(n,"\xb0").concat(r,"'").concat(t?e>=0?"N":"S":e>=0?"E":"W")};return(0,n.jsxs)("div",{className:"mt-4",children:[(0,n.jsxs)("div",{className:"text-3xl font-bold cursor-pointer flex gap-2 ".concat(e?"text-oNight":"text-white"),children:[(0,n.jsx)("span",{children:r(a.latitude,!0)}),(0,n.jsx)("span",{children:r(a.longitude,!1)})]}),(0,n.jsx)("div",{className:"text-lg ".concat(e?"text-oNight":"text-oGray"),children:(()=>{let e=new Date;try{let t=navigator.language||"en-US";return e.toLocaleString(t,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:void 0})}catch(t){return console.warn("Error formatting date with user locale, falling back to en-US",t),e.toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0})}})()})]})},tl=e=>{let{setFullScreen:t}=e,{states:a}=w();return(0,r.useEffect)(()=>{t(a.anchorWatch)},[a.anchorWatch,t]),(0,n.jsxs)("div",{className:"w-full h-full relative ",children:[(0,n.jsxs)("div",{className:"absolute top-2 left-2 z-10 space-y-0",children:[(0,n.jsx)(eH,{}),!a.anchorWatch&&(0,n.jsx)(eK,{}),a.anchorWatch&&(0,n.jsx)(to,{})]}),(0,n.jsx)("div",{className:"absolute top-2 z-10 right-2",children:(0,n.jsx)(e$,{})}),(0,n.jsx)("div",{className:"absolute left-2 bottom-2 z-20 flex flex-col items-center",children:(0,n.jsx)(e4,{})}),(0,n.jsx)("div",{className:"absolute right-2 bottom-2 z-20 flex flex-col items-center",children:(0,n.jsx)(e8,{})}),!a.anchorWatch&&(0,n.jsx)("div",{className:"absolute bottom-2 left-1/2 transform -translate-x-1/2 z-10",children:(0,n.jsx)(e0,{})}),(0,n.jsx)("div",{className:"absolute left-1/2 transform -translate-x-1/2 w-full h-full",children:(0,n.jsx)(F.Xz,{style:{width:"100%",height:"100%"},shadows:!0,dpr:[1,2],gl:{antialias:!0,physicallyCorrectLights:!0,toneMapping:m.LY2,toneMappingExposure:1},children:a.parkingMode?(0,n.jsx)(ta,{}):a.anchorWatch?(0,n.jsx)(ti,{}):(0,n.jsx)(eU,{})})})]})};class ts extends r.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){this.setState({error:e,errorInfo:t}),console.error("Error caught in Error Boundary:",e,t)}render(){if(this.state.hasError){let{error:e,errorInfo:t}=this.state;return(0,n.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen bg-gray-100 text-gray-900",children:[(0,n.jsx)("h1",{className:"text-3xl font-bold text-red-600 mb-4",children:"Something went wrong."}),(0,n.jsxs)("p",{className:"text-lg mb-2",children:[(0,n.jsx)("strong",{children:"Error:"})," ",e?e.toString():"Unknown error"]}),t&&(0,n.jsxs)("details",{className:"whitespace-pre-wrap bg-gray-200 p-4 rounded-lg mb-4",children:[(0,n.jsx)("summary",{className:"cursor-pointer text-blue-500 underline",children:"Stack Trace"}),(0,n.jsx)("pre",{className:"mt-2",children:t.componentStack})]}),(0,n.jsxs)("div",{className:"flex space-x-4",children:[(0,n.jsx)("button",{onClick:this.handleRefresh,className:"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600",children:"Refresh Page"}),(0,n.jsx)("button",{onClick:this.handleExitFullscreen,className:"px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600",children:"Exit Fullscreen"})]})]})}return this.props.children}constructor(e){super(e),this.handleRefresh=()=>{window.location.reload()},this.handleExitFullscreen=()=>{document.fullscreenElement&&(window.close(),document.exitFullscreen().catch(e=>{console.error("Failed to exit fullscreen:",e)}))},this.state={hasError:!1,error:null,errorInfo:null}}}let tc={BOAT:"boat",APP:"app",SPLIT:"split"};function tu(){let[e,t]=(0,r.useState)("settings"),[a,i]=(0,r.useState)(!1),[l,s]=(0,r.useState)(tc.BOAT),[c,u]=(0,r.useState)(!1),d=(0,r.useCallback)(()=>{i(e=>!e)},[]),h=(0,r.useCallback)(e=>{s(e)},[]),m=(0,r.useCallback)((e,t)=>{let a=window.innerWidth/5;t.x>a?h(tc.BOAT):t.x<-a?h(tc.APP):h(tc.SPLIT)},[h]),g=(0,r.useCallback)(()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(e=>{console.error("Fullscreen error:",e.message)})},[]),f=(0,r.useCallback)(e=>{l===tc.BOAT&&h(tc.APP),t(e)},[l,h]),x=(0,r.useCallback)(()=>{c?(h(tc.BOAT),u(!1)):(f("settings"),u(!0))},[c,h,f]),p=(0,r.useMemo)(()=>({leftPane:"transition-all duration-300 ".concat(l===tc.BOAT?"w-full":l===tc.APP?"hidden":"w-2/5"," bg-leftPaneBg h-full relative"),rightPane:"transition-all duration-300 ".concat(l===tc.APP?"w-full":l===tc.BOAT?"hidden":"w-3/5"," h-full bg-rightPaneBg p-4")}),[l]);return(0,n.jsx)(ts,{children:(0,n.jsx)(j,{children:(0,n.jsxs)("div",{className:"h-screen flex flex-col bg-black relative",children:[(0,n.jsxs)("div",{className:"flex flex-1",children:[(0,n.jsx)("div",{className:p.leftPane,children:(0,n.jsx)(tl,{setFullScreen:()=>{}})}),(0,n.jsx)(o(),{axis:"x",onDrag:m,position:{x:0,y:0},handle:".handle",children:(0,n.jsx)("div",{className:"handle w-1 bg-leftPaneBg h-full cursor-col-resize transition-all duration-200 flex items-center justify-center",children:(0,n.jsx)("div",{className:"rounded-full w-3 bg-gray-600 h-40 transition-all duration-200 hover:bg-gray-500"})})}),(0,n.jsx)("div",{className:p.rightPane,children:(0,n.jsx)(P,{view:e})})]}),(0,n.jsx)("div",{className:"w-full h-16 bg-black flex items-center justify-center",children:(0,n.jsx)(O,{setRightView:f,toggleAppMenu:d,toggleSettings:x})}),a&&(0,n.jsx)(L,{currentViewMode:l,toggleViewMode:h,handleSetRightView:f,toggleFullscreen:g,setShowAppMenu:i})]})})})}}},function(e){e.O(0,[689,870,676,918,875,971,117,744],function(){return e(e.s=7343)}),_N_E=e.O()}]);
@@ -1,3 +0,0 @@
1
- @font-face{font-family:__geistSans_873ced;src:url(/ocearo-ui/_next/static/media/4473ecc91f70f139-s.p.woff) format("woff");font-display:swap;font-weight:100 900}@font-face{font-family:__geistSans_Fallback_873ced;src:local("Arial");ascent-override:85.83%;descent-override:20.52%;line-gap-override:9.33%;size-adjust:107.19%}.__className_873ced{font-family:__geistSans_873ced,__geistSans_Fallback_873ced}.__variable_873ced{--font-geist-sans:"__geistSans_873ced","__geistSans_Fallback_873ced"}@font-face{font-family:__geistMono_6df010;src:url(/ocearo-ui/_next/static/media/463dafcda517f24f-s.p.woff) format("woff");font-display:swap;font-weight:100 900}@font-face{font-family:__geistMono_Fallback_6df010;src:local("Arial");ascent-override:69.97%;descent-override:16.73%;line-gap-override:7.61%;size-adjust:131.49%}.__className_6df010{font-family:__geistMono_6df010,__geistMono_Fallback_6df010}.__variable_6df010{--font-geist-mono:"__geistMono_6df010","__geistMono_Fallback_6df010"}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
- ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
3
- */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-left-20{left:-5rem}.-right-1{right:-.25rem}.bottom-2{bottom:.5rem}.bottom-20{bottom:5rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-2{right:.5rem}.top-0{top:0}.top-10{top:2.5rem}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-40{height:10rem}.h-60{height:15rem}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-2{width:.5rem}.w-2\/5{width:40%}.w-20{width:5rem}.w-3{width:.75rem}.w-3\/5{width:60%}.w-8{width:2rem}.w-full{width:100%}.w-px{width:1px}.flex-1{flex:1 1 0%}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-none{border-style:none}.border-oGray{--tw-border-opacity:1;border-color:rgb(152 152 152/var(--tw-border-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-leftPaneBg{--tw-bg-opacity:1;background-color:rgb(14 14 14/var(--tw-bg-opacity,1))}.bg-oBlue{--tw-bg-opacity:1;background-color:rgb(9 191 255/var(--tw-bg-opacity,1))}.bg-oGray{--tw-bg-opacity:1;background-color:rgb(152 152 152/var(--tw-bg-opacity,1))}.bg-oGray2{--tw-bg-opacity:1;background-color:rgb(66 66 66/var(--tw-bg-opacity,1))}.bg-oGreen{--tw-bg-opacity:1;background-color:rgb(15 205 79/var(--tw-bg-opacity,1))}.bg-oRed{--tw-bg-opacity:1;background-color:rgb(204 0 12/var(--tw-bg-opacity,1))}.bg-oYellow{--tw-bg-opacity:1;background-color:rgb(255 190 0/var(--tw-bg-opacity,1))}.bg-rightPaneBg{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-4{padding-top:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-6xl{font-size:3.75rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-oBlue{--tw-text-opacity:1;color:rgb(9 191 255/var(--tw-text-opacity,1))}.text-oGray{--tw-text-opacity:1;color:rgb(152 152 152/var(--tw-text-opacity,1))}.text-oGreen{--tw-text-opacity:1;color:rgb(15 205 79/var(--tw-text-opacity,1))}.text-oNight{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-oRed{--tw-text-opacity:1;color:rgb(204 0 12/var(--tw-text-opacity,1))}.text-oYellow{--tw-text-opacity:1;color:rgb(255 190 0/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--background:#fff;--foreground:#171717}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed}}body{color:var(--foreground);background:var(--background);font-family:Arial,Helvetica,sans-serif}:root{--primary-color:#1976d2;--accent-color:#ff4081;--warn-color:#f44336;--background-color:#fff;--foreground-color:#000;--foreground-text:#212121}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-gray-800\/10:hover{background-color:rgba(31,41,55,.1)}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:bg-oGray:hover{--tw-bg-opacity:1;background-color:rgb(152 152 152/var(--tw-bg-opacity,1))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}