ocearo-ui 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"/><link rel="stylesheet" href="/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/3s6nzrbk-8mnv.js"/><script src="/ocearo-ui/_next/static/chunks/0on1skx9l54-9.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/32yn_fc-es66m.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/34wvn5zw0a69w.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0y-dctk-kmqss.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/turbopack-1h111qg8l92rw.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#f7f8f9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#101216" media="(prefers-color-scheme: dark)"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><link rel="manifest" href="./manifest.json"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico" type="image/x-icon"/><link rel="icon" href="./favicon.svg" type="image/svg+xml" sizes="any"/><link rel="icon" href="./favicon-96x96.png" type="image/png" sizes="96x96"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><meta name="next-size-adjust" content=""/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="description" content="Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."/><title>404: This page could not be found.</title><script src="/ocearo-ui/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased"><div hidden=""><!--$--><!--/$--></div><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/3s6nzrbk-8mnv.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\"]\n3:I[37457,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\"]\n4:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\",1]\n:HL[\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"style\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",null,{\"name\":\"description\",\"content\":\"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation.\"}]]}],[\"$\",\"body\",null,{\"className\":\"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"EuchA2ImhjrwCnR5WjCLX\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#f7f8f9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#101216\",\"media\":\"(prefers-color-scheme: dark)\"}]]\nd:I[27201,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"./manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"4\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"7\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"./favicon.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"10\",{\"rel\":\"icon\",\"href\":\"./favicon-96x96.png\",\"type\":\"image/png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",\"11\",{\"rel\":\"apple-touch-icon\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"12\",{}]]\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, maximum-scale=1, user-scalable=no, viewport-fit=cover"/><link rel="stylesheet" href="/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/ocearo-ui/_next/static/chunks/3s6nzrbk-8mnv.js"/><script src="/ocearo-ui/_next/static/chunks/0on1skx9l54-9.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/32yn_fc-es66m.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/34wvn5zw0a69w.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0y-dctk-kmqss.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/turbopack-1h111qg8l92rw.js" async=""></script><script src="/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#f7f8f9" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#101216" media="(prefers-color-scheme: dark)"/><title>Ocearo</title><meta name="description" content="Sailing made smarter"/><link rel="manifest" href="./manifest.json"/><meta name="format-detection" content="telephone=no"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Ocearo"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><link rel="shortcut icon" href="./favicon.ico"/><link rel="icon" href="./favicon.ico" type="image/x-icon"/><link rel="icon" href="./favicon.svg" type="image/svg+xml" sizes="any"/><link rel="icon" href="./favicon-96x96.png" type="image/png" sizes="96x96"/><link rel="apple-touch-icon" href="./apple-touch-icon.png"/><meta name="next-size-adjust" content=""/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="description" content="Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."/><title>404: This page could not be found.</title><script src="/ocearo-ui/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased"><div hidden=""><!--$--><!--/$--></div><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/3s6nzrbk-8mnv.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\"]\n3:I[37457,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\"]\n4:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"default\",1]\n:HL[\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"style\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",null,{\"name\":\"description\",\"content\":\"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation.\"}]]}],[\"$\",\"body\",null,{\"className\":\"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",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.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"QMD1VkISjzTIQCzLSHPpB\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#f7f8f9\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#101216\",\"media\":\"(prefers-color-scheme: dark)\"}]]\nd:I[27201,[\"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Ocearo\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Sailing made smarter\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"./manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"format-detection\",\"content\":\"telephone=no\"}],[\"$\",\"meta\",\"4\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Ocearo\"}],[\"$\",\"meta\",\"6\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"link\",\"7\",{\"rel\":\"shortcut icon\",\"href\":\"./favicon.ico\"}],[\"$\",\"link\",\"8\",{\"rel\":\"icon\",\"href\":\"./favicon.ico\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"9\",{\"rel\":\"icon\",\"href\":\"./favicon.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"10\",{\"rel\":\"icon\",\"href\":\"./favicon-96x96.png\",\"type\":\"image/png\",\"sizes\":\"96x96\"}],[\"$\",\"link\",\"11\",{\"rel\":\"apple-touch-icon\",\"href\":\"./apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"12\",{}]]\n"])</script></body></html>
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[47257,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"ClientPageRoot"]
3
- 3:I[81694,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","/ocearo-ui/_next/static/chunks/1u6o5_s2b39xh.js","/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","/ocearo-ui/_next/static/chunks/2fe99e03gnvg9.js","/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js"],"default"]
3
+ 3:I[81694,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","/ocearo-ui/_next/static/chunks/2mzecccvvbjr1.js","/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","/ocearo-ui/_next/static/chunks/432vtxrssprta.js","/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js"],"default"]
4
4
  6:I[97367,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
6
  b:I[97367,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"ViewportBoundary"]
@@ -10,7 +10,7 @@ f:I[39756,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"default"]
10
10
  10:I[37457,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"default"]
11
11
  :HL["/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","style"]
12
12
  a:X
13
- 0:{"buildId":"EuchA2ImhjrwCnR5WjCLX","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/1u6o5_s2b39xh.js","async":true}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","async":true}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/2fe99e03gnvg9.js","async":true}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","async":true}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"}],["$","meta","2",{"name":"theme-color","content":"#f7f8f9","media":"(prefers-color-scheme: light)"}],["$","meta","3",{"name":"theme-color","content":"#101216","media":"(prefers-color-scheme: dark)"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Ocearo"}],["$","meta","1",{"name":"description","content":"Sailing made smarter"}],["$","link","2",{"rel":"manifest","href":"./manifest.json"}],["$","meta","3",{"name":"format-detection","content":"telephone=no"}],["$","meta","4",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","5",{"name":"apple-mobile-web-app-title","content":"Ocearo"}],["$","meta","6",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","7",{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link","8",{"rel":"icon","href":"./favicon.ico","type":"image/x-icon"}],["$","link","9",{"rel":"icon","href":"./favicon.svg","type":"image/svg+xml","sizes":"any"}],["$","link","10",{"rel":"icon","href":"./favicon-96x96.png","type":"image/png","sizes":"96x96"}],["$","link","11",{"rel":"apple-touch-icon","href":"./apple-touch-icon.png"}],["$","$Ld","12",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next"}],["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","async":true}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","meta",null,{"name":"apple-mobile-web-app-capable","content":"yes"}],["$","meta",null,{"name":"description","content":"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."}]]}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"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."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@12","rootVaryParams":null,"needsRuntimeRequest":"$@13"}
13
+ 0:{"buildId":"QMD1VkISjzTIQCzLSHPpB","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/2mzecccvvbjr1.js","async":true}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","async":true}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/432vtxrssprta.js","async":true}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","async":true}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"}],["$","meta","2",{"name":"theme-color","content":"#f7f8f9","media":"(prefers-color-scheme: light)"}],["$","meta","3",{"name":"theme-color","content":"#101216","media":"(prefers-color-scheme: dark)"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Ocearo"}],["$","meta","1",{"name":"description","content":"Sailing made smarter"}],["$","link","2",{"rel":"manifest","href":"./manifest.json"}],["$","meta","3",{"name":"format-detection","content":"telephone=no"}],["$","meta","4",{"name":"mobile-web-app-capable","content":"yes"}],["$","meta","5",{"name":"apple-mobile-web-app-title","content":"Ocearo"}],["$","meta","6",{"name":"apple-mobile-web-app-status-bar-style","content":"black-translucent"}],["$","link","7",{"rel":"shortcut icon","href":"./favicon.ico"}],["$","link","8",{"rel":"icon","href":"./favicon.ico","type":"image/x-icon"}],["$","link","9",{"rel":"icon","href":"./favicon.svg","type":"image/svg+xml","sizes":"any"}],["$","link","10",{"rel":"icon","href":"./favicon-96x96.png","type":"image/png","sizes":"96x96"}],["$","link","11",{"rel":"apple-touch-icon","href":"./apple-touch-icon.png"}],["$","$Ld","12",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next"}],["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","async":true}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","meta",null,{"name":"apple-mobile-web-app-capable","content":"yes"}],["$","meta",null,{"name":"description","content":"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."}]]}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"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."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@12","rootVaryParams":null,"needsRuntimeRequest":"$@13"}
14
14
  4:{}
15
15
  5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
16
16
  8:null
package/__next._full.txt CHANGED
@@ -2,7 +2,7 @@
2
2
  2:I[39756,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"default"]
3
3
  3:I[37457,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"default"]
4
4
  4:I[47257,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"ClientPageRoot"]
5
- 5:I[81694,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","/ocearo-ui/_next/static/chunks/1u6o5_s2b39xh.js","/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","/ocearo-ui/_next/static/chunks/2fe99e03gnvg9.js","/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js"],"default"]
5
+ 5:I[81694,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","/ocearo-ui/_next/static/chunks/2mzecccvvbjr1.js","/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","/ocearo-ui/_next/static/chunks/432vtxrssprta.js","/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js"],"default"]
6
6
  8:I[97367,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"OutletBoundary"]
7
7
  9:"$Sreact.suspense"
8
8
  b:I[97367,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"ViewportBoundary"]
@@ -10,7 +10,7 @@ d:I[97367,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"MetadataBoundary"
10
10
  f:I[68027,["/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js"],"default",1]
11
11
  :HL["/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","style"]
12
12
  :HC["/",""]
13
- 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","meta",null,{"name":"apple-mobile-web-app-capable","content":"yes"}],["$","meta",null,{"name":"description","content":"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."}]]}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/1u6o5_s2b39xh.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/2fe99e03gnvg9.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"EuchA2ImhjrwCnR5WjCLX"}
13
+ 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/0h2qsuyze9ds1.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","meta",null,{"name":"apple-mobile-web-app-capable","content":"yes"}],["$","meta",null,{"name":"description","content":"Sailing made smarter with Ocearo: touchscreen-first sailing dashboard with navigation, weather, and instrumentation."}]]}],["$","body",null,{"className":"geistsans_fce11f57-module__b_bU6G__variable geistmono_ed61a5f9-module__6fgesq__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",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."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],[["$","script","script-0",{"src":"/ocearo-ui/_next/static/chunks/2mzecccvvbjr1.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/ocearo-ui/_next/static/chunks/18_i6mf6hb_c7.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/ocearo-ui/_next/static/chunks/432vtxrssprta.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/ocearo-ui/_next/static/chunks/1hz_mzl8l35j8.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/ocearo-ui/_next/static/chunks/0kpstejrka-7k.js","async":true,"nonce":"$undefined"}]],["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$f",[["$","link","0",{"rel":"stylesheet","href":"/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"QMD1VkISjzTIQCzLSHPpB"}
14
14
  6:{}
15
15
  7:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
16
16
  c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"}],["$","meta","2",{"name":"theme-color","content":"#f7f8f9","media":"(prefers-color-scheme: light)"}],["$","meta","3",{"name":"theme-color","content":"#101216","media":"(prefers-color-scheme: dark)"}]]
package/__next._tree.txt CHANGED
@@ -1,3 +1,3 @@
1
1
  :HL["/ocearo-ui/_next/static/chunks/1_g85m2d7jjpo.css","style"]
2
2
  :HC["/",""]
3
- 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"EuchA2ImhjrwCnR5WjCLX"}
3
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"QMD1VkISjzTIQCzLSHPpB"}
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13181,e=>{e.v(t=>Promise.all(["static/chunks/2v6ebsavxlgyw.js","static/chunks/096zaxs1gf_3q.js","static/chunks/0ohleay4roayh.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(23595)))},62588,90669,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(83402),a=e.i(66799),r=e.i(67561),l=e.i(85709);let s=()=>({cpaMeters:1852*(Number(i.default.get("cpaAlarmNM"))||.5),tcpaSeconds:60*(Number(i.default.get("tcpaAlarmMinutes"))||20)}),o=(e,t)=>({x:e*Math.sin(t),y:e*Math.cos(t)}),u=({rx:e,ry:t,ownSog:n,ownCog:i,targetSog:a,targetCog:r})=>{if(![e,t,n,i,a,r].every(Number.isFinite))return null;let l=o(n,i),s=o(a,r),u=s.x-l.x,c=s.y-l.y,d=u*u+c*c,g=d<1e-9?0:-(e*u+t*c)/d,f=Math.max(0,g);return{cpa:Math.hypot(e+u*f,t+c*f),tcpa:g,own:{x:l.x*f,y:l.y*f},target:{x:e+s.x*f,y:t+s.y*f}}},c=(e,t,n=s())=>{let i=!e||e.tcpa>0;return e&&e.tcpa>0&&e.tcpa<=n.tcpaSeconds&&e.cpa<n.cpaMeters||Number.isFinite(t)&&t<100&&i?"danger":Number.isFinite(t)&&t<Math.max(200,.3*n.cpaMeters)?"close":"none"};e.s(["closestApproach",0,u,"collisionRisk",0,c,"getCollisionThresholds",0,s],90669);let d=(0,n.createContext)(null),g=[],f=[...["navigation.position","navigation.speedOverGround","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"].map(e=>({path:e,policy:"instant"})),...["name","design.aisShipType","design.length","design.beam","communication.callsignVhf","navigation.state"].map(e=>({path:e}))],h=["navigation.position","atonType","name","virtual","offPosition"].map(e=>({path:e})),p=(e,t)=>t.split(".").reduce((e,t)=>e?.[t],e),m=e=>"string"==typeof e?e:"string"==typeof e?.value?e.value:null,v=e=>(e||"").replace(/^vessels\./,""),b=e=>/mmsi:(\d{9})$/.exec(e||"")?.[1]||null,y=e=>{let t=b(e);return!t||!t.startsWith("99")&&!t.startsWith("00")&&!t.startsWith("111")},w=e=>b(e)?.startsWith("99")??!1,S=e=>({id:e,mmsi:b(e),name:"",latitude:null,longitude:null,atonType:null,virtual:!1,offPosition:!1,distanceMeters:null,lastUpdate:0}),M=(e,t,n)=>{switch(t){case"navigation.position":n&&Number.isFinite(n.latitude)&&(e.latitude=n.latitude,e.longitude=n.longitude);break;case"atonType":e.atonType=n?.id??n??null;break;case"name":e.name=m(n)??e.name;break;case"virtual":e.virtual=!0===n;break;case"offPosition":e.offPosition=!0===n;break;case"":n?.name&&(e.name=m(n.name)??e.name)}},P=e=>({mmsi:e,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,cogMagnetic:null,heading:null,headingMagnetic:null,length:null,beam:null,shipType:null,callsign:null,navState:null,distanceMeters:null,sceneX:null,sceneZ:null,cpaMeters:null,tcpaSeconds:null,risk:"none",cpaScene:null,rotationAngleY:0,visible:!1,lastUpdate:0,positionAt:0}),x=(e,t,n)=>{switch(t){case"name":return e.name=m(n)??e.name,!1;case"navigation.position":if(!n)return!1;return e.latitude=n.latitude,e.longitude=n.longitude,e.positionAt=Date.now(),!0;case"navigation.speedOverGround":return e.sog=n,!0;case"navigation.courseOverGroundTrue":return e.cog=n,!0;case"navigation.courseOverGroundMagnetic":return e.cogMagnetic=n,!0;case"navigation.headingTrue":return e.heading=n,!0;case"navigation.headingMagnetic":return e.headingMagnetic=n,!0;case"design.aisShipType":return e.shipType=n?.id??n,!1;case"design.length":return e.length=n?.overall??n,!1;case"design.beam":return e.beam=n,!1;case"communication.callsignVhf":return e.callsign=n,!1;case"navigation.state":return e.navState=n,!1;default:return!1}};e.s(["AISProvider",0,({children:e})=>{let{convertLatLonToXY:o}=(0,r.useOcearoContext)(),b=(0,l.useSignalKPath)("navigation.position"),C=(0,l.useSignalKPath)("navigation.speedOverGround"),T=(0,l.useSignalKPath)("navigation.courseOverGroundTrue"),j=(0,l.useSignalKPath)("navigation.headingTrue"),O=(0,n.useRef)({sog:null,cog:null}),k=(0,n.useRef)({vx:0,vy:0,fixAt:0,scale:.7}),[R]=(0,n.useState)(s),A=(0,n.useRef)({}),F=(0,n.useRef)({}),N=(0,n.useRef)(null),_=(0,n.useRef)(b),D=(0,n.useRef)(!1),U=(0,n.useRef)(""),[I,W]=(0,n.useState)(0),[E,K]=(0,n.useState)({aisData:{},vesselIds:g,targets:g,atons:g}),B=(0,n.useCallback)(()=>(W(e=>e+1),()=>W(e=>e-1)),[]),L=(0,n.useCallback)(e=>{let t=_.current;if(!Number.isFinite(e.latitude)||!Number.isFinite(e.longitude)||!Number.isFinite(t?.latitude)||!Number.isFinite(t?.longitude)){e.visible=!1,e.distanceMeters=null;return}let n=i.default.get("aisLengthScalingFactor")||.7,{x:a,y:r}=o({lat:e.latitude,lon:e.longitude},{lat:t.latitude,lon:t.longitude});e.sceneX=a*n,e.sceneZ=-r*n,e.rotationAngleY=e.heading??e.headingMagnetic??e.cog??e.cogMagnetic??0,e.distanceMeters=Math.hypot(a,r),e.visible=e.distanceMeters>10&&e.distanceMeters<=5e3;let l=O.current,s=u({rx:a,ry:r,ownSog:l.sog,ownCog:l.cog,targetSog:e.sog,targetCog:e.cog??e.cogMagnetic});e.cpaMeters=s?s.cpa:null,e.tcpaSeconds=s?s.tcpa:null,e.risk=c(s,e.distanceMeters,R),e.cpaScene=s&&s.tcpa>0?{targetX:s.target.x*n,targetZ:-s.target.y*n,ownX:s.own.x*n,ownZ:-s.own.y*n}:null},[o,R]),G=(0,n.useCallback)(e=>{let t=_.current;if(!Number.isFinite(e.latitude)||!Number.isFinite(t?.latitude)){e.distanceMeters=null;return}let{x:n,y:i}=o({lat:e.latitude,lon:e.longitude},{lat:t.latitude,lon:t.longitude});e.east=n,e.north=i,e.distanceMeters=Math.hypot(n,i)},[o]);(0,n.useEffect)(()=>{_.current=b,O.current={sog:C,cog:T??j};let e=T??j;k.current={vx:Number.isFinite(C)&&Number.isFinite(e)?C*Math.sin(e):0,vy:Number.isFinite(C)&&Number.isFinite(e)?C*Math.cos(e):0,fixAt:Date.now(),scale:i.default.get("aisLengthScalingFactor")||.7},Object.values(A.current).forEach(L),Object.values(F.current).forEach(G),D.current=!0},[b,C,T,j,L,G]),(0,n.useEffect)(()=>{if(0===I)return;let e=()=>{let e=Date.now(),t=A.current;for(let[n,i]of Object.entries(t))e-i.lastUpdate>6e5&&(delete t[n],D.current=!0);for(let[t,n]of Object.entries(F.current))e-n.lastUpdate>24e5&&(delete F.current[t],D.current=!0);if(!D.current)return;D.current=!1;let n=Object.values(t).filter(e=>null!==e.distanceMeters).sort((e,t)=>e.distanceMeters-t.distanceMeters),i=n.filter(e=>e.visible),a=i.map(e=>`${e.mmsi}|${e.shipType}|${e.length}|${e.beam}`).join(","),r=a!==U.current;U.current=a;let l=Object.values(F.current).filter(e=>null!==e.distanceMeters).sort((e,t)=>e.distanceMeters-t.distanceMeters).map(e=>({...e}));K(e=>({aisData:{...t},targets:n,vesselIds:r?i:e.vesselIds,atons:l}))};e();let t=setInterval(e,250);return()=>clearInterval(t)},[I]),(0,n.useEffect)(()=>{if(0===I)return;let e=!1,t=null,n=e=>"self"===e||N.current&&e===N.current,i=(e,t)=>{let n=F.current[e]||(F.current[e]=S(e));for(let e of(n.lastUpdate=Date.now(),t))for(let{path:t,value:i}of e.values||[])M(n,t,i);G(n),D.current=!0},r=e=>{let t;if(!e?.updates)return;if(t=e.context,/^atons\./.test(t||""))return void i(e.context.replace(/^atons\./,""),e.updates);let a=v(e?.context);if(a&&w(a))return void i(a,e.updates);if(!a||n(a)||!y(a)||!e.updates)return;let r=A.current,l=r[a]||(r[a]=P(a));l.lastUpdate=Date.now();let s=!1;for(let t of e.updates)if(t.values)for(let{path:e,value:n}of t.values)x(l,e,n)&&(s=!0);s&&L(l),D.current=!0},l=async t=>{let n=await t.get("/atons").catch(()=>null);if(e||!n)return;let i=Date.now();for(let[e,t]of Object.entries(n)){let n=F.current[e]||(F.current[e]=S(e)),a=p(t,"navigation.position.value");Number.isFinite(a?.latitude)&&(n.latitude=a.latitude,n.longitude=a.longitude),n.atonType=p(t,"atonType.value.id")??n.atonType,n.name=m(t.name)??n.name,n.virtual=!0===p(t,"virtual.value")||!0===t.virtual,n.offPosition=!0===p(t,"offPosition.value")||!0===t.offPosition,n.lastUpdate=i,G(n)}D.current=!0},s=async()=>{let a=await t.API();l(a);let r=await a.vessels();if(e||!r)return;let s=A.current,o=Date.now();for(let[e,t]of Object.entries(r)){if(n(e))continue;if(w(e)){let n=p(t,"navigation.position.value"),a=[{path:"name",value:t.name}];n&&a.push({path:"navigation.position",value:n}),i(e,[{values:a}]);continue}if(!y(e))continue;let a=s[e]||(s[e]=P(e)),r=(e,n)=>{let i=p(t,n);void 0!==i&&(a[e]=i)},l=m(t.name);l&&(a.name=l),r("latitude","navigation.position.value.latitude"),r("longitude","navigation.position.value.longitude"),r("sog","navigation.speedOverGround.value"),r("cog","navigation.courseOverGroundTrue.value"),r("cogMagnetic","navigation.courseOverGroundMagnetic.value"),r("heading","navigation.headingTrue.value"),r("headingMagnetic","navigation.headingMagnetic.value"),r("length","design.length.value.overall"),r("beam","design.beam.value"),r("callsign","communication.callsignVhf"),r("navState","navigation.state.value"),r("shipType","design.aisShipType.value.id"),a.lastUpdate=o,L(a)}D.current=!0};return(async()=>{try{if((t=a.default.createClient({deltaStreamBehaviour:"none",sendMeta:null,subscriptions:[{context:"vessels.*",subscribe:f},{context:"atons.*",subscribe:h}]})).on("self",e=>{N.current=v(e)}),t.on("delta",r),await t.connect(),e)return;N.current=v(t.self)||N.current,await s()}catch(t){e||console.warn("AIS: SignalK connection failed:",t?.message||t)}})(),()=>{e=!0,t?.removeAllListeners?.("delta"),t?.disconnect()}},[I>0,L,G]);let $=(0,n.useMemo)(()=>({...E,targetsRef:A,motionRef:k,register:B}),[E,B]);return(0,t.jsx)(d.Provider,{value:$,children:e})},"predictScenePosition",0,(e,t,n)=>{let i=e.cog??e.cogMagnetic??e.heading,a=Number.isFinite(e.sog)?e.sog:0,r=Math.min(180,Math.max(0,(n-(e.positionAt||n))/1e3)),l=Math.min(180,Math.max(0,(n-t.fixAt)/1e3)),s=-(t.vx*l),o=-(t.vy*l);return Number.isFinite(i)&&a>.05&&(s+=a*Math.sin(i)*r,o+=a*Math.cos(i)*r),{x:e.sceneX+s*t.scale,z:e.sceneZ-o*t.scale}},"useAIS",0,({passive:e=!1}={})=>{let t=(0,n.useContext)(d),i=e?null:t?.register;return(0,n.useEffect)(()=>i?.(),[i]),t||{aisData:{},vesselIds:g,targets:g,atons:g,targetsRef:{current:{}},motionRef:{current:{vx:0,vy:0,fixAt:0,scale:.7}}}}],62588)},49063,e=>{e.v(t=>Promise.all(["static/chunks/0m7wbuocx-b4_.js","static/chunks/2gr1d26f-ymoh.js","static/chunks/11awvgcou7v4r.js"].map(t=>e.l(t))).then(()=>t(85626)))},10520,e=>{e.v(t=>Promise.all(["static/chunks/41odv061mfm6t.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(61891)))},45344,e=>{e.v(t=>Promise.all(["static/chunks/0zvzu5fnwh4_a.js","static/chunks/11awvgcou7v4r.js"].map(t=>e.l(t))).then(()=>t(42602)))},83934,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(66799),a=e.i(85709),r=e.i(46991);let l=(0,n.createContext)();e.s(["WeatherContextProvider",0,({children:e})=>{let s=(0,a.useSignalKPath)("navigation.position"),o=(0,n.useMemo)(()=>["environment.outside.temperature","environment.outside.relativeHumidity","environment.outside.pressure","environment.wind.speedTrue","environment.wind.directionTrue","environment.wind.gust"],[]),u=(0,a.useSignalKPaths)(o),[c,d]=(0,n.useState)(u),g=(0,n.useRef)(u);g.current=u;let f=(0,n.useRef)(null);(0,n.useEffect)(()=>{f.current||(f.current=setTimeout(()=>{f.current=null,d(g.current)},2e3))},[u]),(0,n.useEffect)(()=>()=>clearTimeout(f.current),[]);let[h,p]=(0,n.useState)([]),[m,v]=(0,n.useState)(!1),[b,y]=(0,n.useState)(null),[w,S]=(0,n.useState)(null),[M,P]=(0,n.useState)(null),x=(0,n.useRef)(null),C=(0,n.useRef)(null),T=(0,n.useRef)(s);T.current=s;let j=(0,n.useRef)(!1),O=Number.isFinite(s?.latitude)&&Number.isFinite(s?.longitude),k=(0,n.useCallback)(async()=>{let e=T.current;if(Number.isFinite(e?.latitude)&&Number.isFinite(e?.longitude)){j.current=!0,v(!0),y(null);try{let t=i.default.isWeatherApiAvailable();if(null===t&&(t=await i.default.checkWeatherApiAvailability()),S(t),!t)return void y("Weather API not available on SignalK server");let n=await i.default.getWeatherForecast(e.latitude,e.longitude),a=i.default.parseWeatherForecast(n);p(a),P(new Date)}catch(e){e.message&&e.message.includes("400")?(console.warn("WeatherContext: Weather forecast not supported by this server"),S(!1)):console.warn("WeatherContext: Failed to fetch forecast:",e.message),y(e.message)}finally{v(!1)}}},[]),R=(0,n.useCallback)(e=>{if(!h||0===h.length)return null;let t=Math.min(Math.floor(e),h.length-1);return h[t]||null},[h]),A=(0,n.useCallback)(()=>{let e=h.length>0?h[0]:null,t=c["environment.outside.temperature"]??(e?.temperature!=null?e.temperature+273.15:null),n=c["environment.outside.relativeHumidity"]??e?.humidity??null,i=c["environment.outside.pressure"]??e?.pressure??null,a=(0,r.finite)(c["environment.wind.speedTrue"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.speed)),l=(0,r.finite)(c["environment.wind.directionTrue"])??(0,r.finite)((0,r.degToRad)(e?.wind?.direction)),s=Object.values(c).some(e=>null!==(0,r.finite)(e)),o=e?.clouds;return{source:null!==t||null!==n||null!==i||null!==a?s?"sensors":"forecast":null,temperature:t,humidity:n,pressure:i,windSpeed:a,windDirection:l,cloudCover:null!=o?o>1?o/100:o:null,rain:e?.rain??null,description:e?.description||null}},[c,h]),F=(0,n.useCallback)(()=>{let e=h.length>0?h[0]:null,t=(0,r.finite)(c["environment.wind.speedTrue"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.speed)),n=(0,r.finite)(c["environment.wind.directionTrue"])??(0,r.finite)((0,r.degToRad)(e?.wind?.direction)),i=(0,r.finite)(c["environment.wind.gust"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.gust)),a=null!==(0,r.finite)(c["environment.wind.speedTrue"])||null!==(0,r.finite)(c["environment.wind.directionTrue"]);return{source:null!==t||null!==n?a?"sensors":"forecast":null,speed:t,direction:n,gust:i}},[c,h]);(0,n.useEffect)(()=>(x.current=setTimeout(()=>{k()},5e3),C.current=setInterval(()=>{k()},18e5),()=>{x.current&&clearTimeout(x.current),C.current&&clearInterval(C.current)}),[k]),(0,n.useEffect)(()=>{O&&!j.current&&k()},[O,k]);let N=(0,n.useMemo)(()=>({forecasts:h,isLoading:m,error:b,weatherApiAvailable:w,lastFetchTime:M,fetchWeatherForecast:k,getForecastForTime:R,getCurrentWeather:A,getWindData:F}),[h,m,b,w,M,k,R,A,F]);return(0,t.jsx)(l.Provider,{value:N,children:e})},"useWeather",0,()=>{let e=(0,n.useContext)(l);if(!e)throw Error("useWeather must be used within a WeatherContextProvider");return e}])},23e3,e=>{e.v(t=>Promise.all(["static/chunks/15imr2-f_8n-x.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(50637)))},30206,e=>{"use strict";let t=new Set,n={active:!1,playing:!1,speed:30,time:0,start:0,end:0,voyage:null},i=[],a=null,r=0,l=null,s=()=>t.forEach(e=>e(n)),o=e=>{n={...n,...e},s()},u=(e,t,n)=>e+(t-e)*n,c=(e,t,n)=>{let i=Math.atan2(Math.sin(t-e),Math.cos(t-e));return e+i*n},d=new Set(["hdg","cog","twa","twd","awa","rud","roll"]),g=e=>{if(!i.length)return null;let t=0,n=i.length-1;if(e<=i[0].t)return i[0];if(e>=i[n].t)return i[n];for(;n-t>1;){let a=t+n>>1;i[a].t<=e?t=a:n=a}let a=i[t],r=i[n],l=(e-a.t)/Math.max(1,r.t-a.t),s={t:e};for(let e of Object.keys(a)){if("t"===e)continue;let t=a[e],n=r[e];if(!Number.isFinite(t)||!Number.isFinite(n)){s[e]=t??n;continue}s[e]=d.has(e)?c(t,n,l):u(t,n,l)}return s},f=e=>{let t={},n=(e,n)=>{null!=n&&("number"!=typeof n||Number.isFinite(n))&&(t[e]=n)};return Number.isFinite(e.lat)&&Number.isFinite(e.lon)&&(t["navigation.position"]={latitude:e.lat,longitude:e.lon}),n("navigation.headingTrue",e.hdg),n("navigation.courseOverGroundTrue",e.cog??e.hdg),n("navigation.speedOverGround",e.sog),n("navigation.speedThroughWater",e.stw??e.sog),n("environment.wind.speedTrue",e.tws),n("environment.wind.angleTrueWater",e.twa),n("environment.wind.directionTrue",e.twd),n("environment.wind.speedApparent",e.aws),n("environment.wind.angleApparent",e.awa),n("steering.rudderAngle",e.rud),n("environment.depth.belowKeel",e.depth),Number.isFinite(e.roll)&&(t["navigation.attitude"]={roll:e.roll,pitch:0,yaw:e.hdg??0}),t},h=()=>{let e=Date.now(),t=e-r;if(r=e,!n.playing)return;let i=n.time+t*n.speed;i>=n.end&&(i=n.end,o({playing:!1})),n={...n,time:i};let a=g(i);a&&l&&l(f(a)),s()},p=()=>{a&&clearInterval(a),a=null,i=[],o({active:!1,playing:!1,voyage:null})};e.s(["getReplayState",0,()=>n,"isReplaying",0,()=>n.active,"seekReplay",0,e=>{if(!n.active)return;let t=Math.max(n.start,Math.min(n.end,e));o({time:t});let i=g(t);i&&l&&l(f(i))},"setReplaySink",0,e=>{l=e},"setReplaySpeed",0,e=>o({speed:e}),"startReplay",0,(e,t)=>{p(),i=t,o({active:!0,playing:!0,time:e.start,start:e.start,end:e.end,voyage:e});let n=g(e.start);n&&l&&l(f(n)),r=Date.now(),a=setInterval(h,100)},"stopReplay",0,p,"subscribeReplay",0,e=>(t.add(e),()=>t.delete(e)),"togglePlay",0,()=>{n.active&&(r=Date.now(),o({playing:!n.playing,time:n.time>=n.end?n.start:n.time}))}])},44485,e=>{"use strict";let t="samples",n=null,i=async(e,i)=>{let a=await ("u"<typeof indexedDB?Promise.reject(Error("IndexedDB unavailable")):(!n&&(n=new Promise((e,i)=>{let a=indexedDB.open("ocearo-voyages",1);a.onupgradeneeded=()=>{let e=a.result;e.objectStoreNames.contains(t)||e.createObjectStore(t,{keyPath:"t"})},a.onsuccess=()=>e(a.result),a.onerror=()=>{n=null,i(a.error)}})),n));return new Promise((n,r)=>{let l,s=a.transaction(t,e);Promise.resolve(i(s.objectStore(t))).then(e=>{l=e}),s.oncomplete=()=>n(l),s.onerror=()=>r(s.error),s.onabort=()=>r(s.error)})},a=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}),r=e=>e*Math.PI/180,l=(e,t)=>6371e3*Math.hypot(r(t.lat-e.lat),r(t.lon-e.lon)*Math.cos(r((e.lat+t.lat)/2))),s=async()=>{let e=await i("readonly",e=>a(e.getAll())),t=[],n=null;for(let i of e)!n||i.t-n.end>18e5?(n={id:i.t,start:i.t,end:i.t,distanceM:0,maxSog:0,samples:0,last:i},t.push(n)):n.distanceM+=l(n.last,i),n.end=i.t,n.samples+=1,n.maxSog=Math.max(n.maxSog,i.sog||0),n.last=i;return t.filter(e=>e.end-e.start>=3e5&&e.distanceM>100).map(({last:e,...t})=>t).reverse()};e.s(["addSample",0,e=>i("readwrite",t=>{t.put(e)}),"getSamples",0,(e,t)=>i("readonly",n=>a(n.getAll(IDBKeyRange.bound(e,t)))),"listVoyages",0,s,"trimSamples",0,()=>i("readwrite",async e=>{let t=await a(e.count());t<=4e5||(await a(e.getAllKeys(null,t-4e5))).forEach(t=>e.delete(t))})])},90317,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={bindSnapshot:function(){return u},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return c}};for(var a in i)Object.defineProperty(n,a,{enumerable:!0,get:i[a]});let r=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class l{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let s="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return s?new s:new l}function u(e){return s?s.bind(e):l.bind(e)}function c(){return s?s.snapshot():function(e,...t){return e(...t)}}},42344,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"workAsyncStorageInstance",{enumerable:!0,get:function(){return i}});let i=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"workAsyncStorage",{enumerable:!0,get:function(){return i.workAsyncStorageInstance}});let i=e.r(42344)},9885,(e,t,n)=>{"use strict";function i(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return i}})},67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return a}});let i=e.r(32061);function a({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new i.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return o}});let i=e.r(43476),a=e.r(74080),r=e.r(63599),l=e.r(9885),s=e.r(43369);function o({moduleIds:e}){if("u">typeof window)return null;let t=r.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let i=t.reactLoadableManifest;for(let t of e){if(!i[t])continue;let e=i[t].files;n.push(...e)}}if(0===n.length)return null;let u=(0,s.getAssetTokenQuery)();return(0,i.jsx)(i.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${u}`;return e.endsWith(".css")?(0,i.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,a.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return u}});let i=e.r(43476),a=e.r(71645),r=e.r(67585),l=e.r(52157);function s(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},u=function(e){let t={...o,...e},n=(0,a.lazy)(()=>t.loader().then(s)),u=t.loading;function c(e){let s=u?(0,i.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,c=o?a.Suspense:a.Fragment,d=t.ssr?(0,i.jsxs)(i.Fragment,{children:["u"<typeof window?(0,i.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,i.jsx)(n,{...e})]}):(0,i.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,i.jsx)(n,{...e})});return(0,i.jsx)(c,{...o?{fallback:s}:{},children:d})}return c.displayName="LoadableComponent",c}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return a}});let i=e.r(55682)._(e.r(69093));function a(e,t){let n={};"function"==typeof e&&(n.loader=e);let a={...n,...t};return(0,i.default)({...a,modules:a.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},79866,(e,t,n)=>{t.exports={boats:[{name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]},{name:"Racer 10.8",modelPath:"racer",capabilities:["navigation","sail","color"]},{name:"Catamaran 14",modelPath:"catamaran",capabilities:["navigation","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"]}]}},83402,e=>{"use strict";var t=e.i(79866);let n=new class{constructor(){this.defaultConfig={signalkUrl:"http://localhost:3000",username:"",password:"",useAuthentication:!1,signalKUrlSet:!1,debugMode:!1,selectedBoat:"Racer 10.8",primaryColor:null,metallicEffect:!1,aisLengthScalingFactor:.7,compassNorthUp:!1,hide3DCompass:!1,hideTrueWind:!1,showCustomUrls:!1,customExternalUrls:{},currentView:"default",theme:"dark",language:"en",distanceUnits:"nm",depthUnits:"m",speedUnits:"kn",temperatureUnits:"C",positionFormat:"DD",preferTrueValues:!0,preferredWindSpeedPath:"speedTrue",preferredWindDirectionPath:"directionTrue",preferredHeadingPath:"courseOverGroundTrue",debugWindOverride:!1,debugWindSpeed:10,debugWindDirection:0,debugShowAxes:!1,showSailTrimSliders:!0,showRigging:!0,showSeamarks3D:!0,seamarksOverpass:!0},this.configKey="ocearoConfig",this.inMemoryConfig={...this.defaultConfig},this.config=this.loadConfig()}isLocalStorageAvailable(){try{return"u">typeof localStorage}catch{return!1}}loadConfig(){if(this.isLocalStorageAvailable()){let e=localStorage.getItem(this.configKey);if(!e)return this.saveConfig(this.defaultConfig),{...this.defaultConfig};try{let t={...this.defaultConfig,...JSON.parse(e)};return(t.boatChosen||"Default"!==t.selectedBoat)&&"RM1080"!==t.selectedBoat||(t.selectedBoat="Racer 10.8"),t}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):null}getBoatsData(){return t.default.boats}getSignalKUrl(){return this.config.signalKUrlSet&&this.config.signalkUrl?this.normalizeSignalKUrl(this.config.signalkUrl):this.getComputedSignalKUrl()}normalizeSignalKUrl(e){let t=String(e).trim().replace(/\/+$/,"");if(!t)return t;t=t.replace(/^wss:\/\//i,"https://").replace(/^ws:\/\//i,"http://");let n="https:"===window.location.protocol;return/^https?:\/\//i.test(t)||(t=`${n?"https":"http"}://${t}`),t=t.replace(/^https?:/i,e=>e.toLowerCase()),n&&t.startsWith("http://")&&(t="https://"+t.slice(7).replace(/:80(?=\/|$)/,"")),t}getComputedSignalKUrl(){return this.config.debugMode?"https://demo.signalk.org:443":`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}`}getCurrentView(){return this.config.currentView||this.defaultConfig.currentView}setCurrentView(e){this.set("currentView",e)}};e.s(["default",0,n])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,13181,e=>{e.v(t=>Promise.all(["static/chunks/2v6ebsavxlgyw.js","static/chunks/096zaxs1gf_3q.js","static/chunks/0ohleay4roayh.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(23595)))},62588,90669,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(83402),a=e.i(66799),r=e.i(67561),l=e.i(85709);let s=()=>({cpaMeters:1852*(Number(i.default.get("cpaAlarmNM"))||.5),tcpaSeconds:60*(Number(i.default.get("tcpaAlarmMinutes"))||20)}),o=(e,t)=>({x:e*Math.sin(t),y:e*Math.cos(t)}),u=({rx:e,ry:t,ownSog:n,ownCog:i,targetSog:a,targetCog:r})=>{if(![e,t,n,i,a,r].every(Number.isFinite))return null;let l=o(n,i),s=o(a,r),u=s.x-l.x,c=s.y-l.y,d=u*u+c*c,g=d<1e-9?0:-(e*u+t*c)/d,f=Math.max(0,g);return{cpa:Math.hypot(e+u*f,t+c*f),tcpa:g,own:{x:l.x*f,y:l.y*f},target:{x:e+s.x*f,y:t+s.y*f}}},c=(e,t,n=s())=>{let i=!e||e.tcpa>0;return e&&e.tcpa>0&&e.tcpa<=n.tcpaSeconds&&e.cpa<n.cpaMeters||Number.isFinite(t)&&t<100&&i?"danger":Number.isFinite(t)&&t<Math.max(200,.3*n.cpaMeters)?"close":"none"};e.s(["closestApproach",0,u,"collisionRisk",0,c,"getCollisionThresholds",0,s],90669);let d=(0,n.createContext)(null),g=[],f=[...["navigation.position","navigation.speedOverGround","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"].map(e=>({path:e,policy:"instant"})),...["name","design.aisShipType","design.length","design.beam","communication.callsignVhf","navigation.state"].map(e=>({path:e}))],h=["navigation.position","atonType","name","virtual","offPosition"].map(e=>({path:e})),p=(e,t)=>t.split(".").reduce((e,t)=>e?.[t],e),m=e=>"string"==typeof e?e:"string"==typeof e?.value?e.value:null,v=e=>(e||"").replace(/^vessels\./,""),b=e=>/mmsi:(\d{9})$/.exec(e||"")?.[1]||null,y=e=>{let t=b(e);return!t||!t.startsWith("99")&&!t.startsWith("00")&&!t.startsWith("111")},w=e=>b(e)?.startsWith("99")??!1,S=e=>({id:e,mmsi:b(e),name:"",latitude:null,longitude:null,atonType:null,virtual:!1,offPosition:!1,distanceMeters:null,lastUpdate:0}),M=(e,t,n)=>{switch(t){case"navigation.position":n&&Number.isFinite(n.latitude)&&(e.latitude=n.latitude,e.longitude=n.longitude);break;case"atonType":e.atonType=n?.id??n??null;break;case"name":e.name=m(n)??e.name;break;case"virtual":e.virtual=!0===n;break;case"offPosition":e.offPosition=!0===n;break;case"":n?.name&&(e.name=m(n.name)??e.name)}},P=e=>({mmsi:e,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,cogMagnetic:null,heading:null,headingMagnetic:null,length:null,beam:null,shipType:null,callsign:null,navState:null,distanceMeters:null,sceneX:null,sceneZ:null,cpaMeters:null,tcpaSeconds:null,risk:"none",cpaScene:null,rotationAngleY:0,visible:!1,lastUpdate:0,positionAt:0}),x=(e,t,n)=>{switch(t){case"name":return e.name=m(n)??e.name,!1;case"navigation.position":if(!n)return!1;return e.latitude=n.latitude,e.longitude=n.longitude,e.positionAt=Date.now(),!0;case"navigation.speedOverGround":return e.sog=n,!0;case"navigation.courseOverGroundTrue":return e.cog=n,!0;case"navigation.courseOverGroundMagnetic":return e.cogMagnetic=n,!0;case"navigation.headingTrue":return e.heading=n,!0;case"navigation.headingMagnetic":return e.headingMagnetic=n,!0;case"design.aisShipType":return e.shipType=n?.id??n,!1;case"design.length":return e.length=n?.overall??n,!1;case"design.beam":return e.beam=n,!1;case"communication.callsignVhf":return e.callsign=n,!1;case"navigation.state":return e.navState=n,!1;default:return!1}};e.s(["AISProvider",0,({children:e})=>{let{convertLatLonToXY:o}=(0,r.useOcearoContext)(),b=(0,l.useSignalKPath)("navigation.position"),C=(0,l.useSignalKPath)("navigation.speedOverGround"),T=(0,l.useSignalKPath)("navigation.courseOverGroundTrue"),j=(0,l.useSignalKPath)("navigation.headingTrue"),O=(0,n.useRef)({sog:null,cog:null}),k=(0,n.useRef)({vx:0,vy:0,fixAt:0,scale:.7}),[R]=(0,n.useState)(s),A=(0,n.useRef)({}),F=(0,n.useRef)({}),N=(0,n.useRef)(null),_=(0,n.useRef)(b),D=(0,n.useRef)(!1),U=(0,n.useRef)(""),[I,W]=(0,n.useState)(0),[E,K]=(0,n.useState)({aisData:{},vesselIds:g,targets:g,atons:g}),B=(0,n.useCallback)(()=>(W(e=>e+1),()=>W(e=>e-1)),[]),L=(0,n.useCallback)(e=>{let t=_.current;if(!Number.isFinite(e.latitude)||!Number.isFinite(e.longitude)||!Number.isFinite(t?.latitude)||!Number.isFinite(t?.longitude)){e.visible=!1,e.distanceMeters=null;return}let n=i.default.get("aisLengthScalingFactor")||.7,{x:a,y:r}=o({lat:e.latitude,lon:e.longitude},{lat:t.latitude,lon:t.longitude});e.sceneX=a*n,e.sceneZ=-r*n,e.rotationAngleY=e.heading??e.headingMagnetic??e.cog??e.cogMagnetic??0,e.distanceMeters=Math.hypot(a,r),e.visible=e.distanceMeters>10&&e.distanceMeters<=5e3;let l=O.current,s=u({rx:a,ry:r,ownSog:l.sog,ownCog:l.cog,targetSog:e.sog,targetCog:e.cog??e.cogMagnetic});e.cpaMeters=s?s.cpa:null,e.tcpaSeconds=s?s.tcpa:null,e.risk=c(s,e.distanceMeters,R),e.cpaScene=s&&s.tcpa>0?{targetX:s.target.x*n,targetZ:-s.target.y*n,ownX:s.own.x*n,ownZ:-s.own.y*n}:null},[o,R]),G=(0,n.useCallback)(e=>{let t=_.current;if(!Number.isFinite(e.latitude)||!Number.isFinite(t?.latitude)){e.distanceMeters=null;return}let{x:n,y:i}=o({lat:e.latitude,lon:e.longitude},{lat:t.latitude,lon:t.longitude});e.east=n,e.north=i,e.distanceMeters=Math.hypot(n,i)},[o]);(0,n.useEffect)(()=>{_.current=b,O.current={sog:C,cog:T??j};let e=T??j;k.current={vx:Number.isFinite(C)&&Number.isFinite(e)?C*Math.sin(e):0,vy:Number.isFinite(C)&&Number.isFinite(e)?C*Math.cos(e):0,fixAt:Date.now(),scale:i.default.get("aisLengthScalingFactor")||.7},Object.values(A.current).forEach(L),Object.values(F.current).forEach(G),D.current=!0},[b,C,T,j,L,G]),(0,n.useEffect)(()=>{if(0===I)return;let e=()=>{let e=Date.now(),t=A.current;for(let[n,i]of Object.entries(t))e-i.lastUpdate>6e5&&(delete t[n],D.current=!0);for(let[t,n]of Object.entries(F.current))e-n.lastUpdate>24e5&&(delete F.current[t],D.current=!0);if(!D.current)return;D.current=!1;let n=Object.values(t).filter(e=>null!==e.distanceMeters).sort((e,t)=>e.distanceMeters-t.distanceMeters),i=n.filter(e=>e.visible),a=i.map(e=>`${e.mmsi}|${e.shipType}|${e.length}|${e.beam}`).join(","),r=a!==U.current;U.current=a;let l=Object.values(F.current).filter(e=>null!==e.distanceMeters).sort((e,t)=>e.distanceMeters-t.distanceMeters).map(e=>({...e}));K(e=>({aisData:{...t},targets:n,vesselIds:r?i:e.vesselIds,atons:l}))};e();let t=setInterval(e,250);return()=>clearInterval(t)},[I]),(0,n.useEffect)(()=>{if(0===I)return;let e=!1,t=null,n=e=>"self"===e||N.current&&e===N.current,i=(e,t)=>{let n=F.current[e]||(F.current[e]=S(e));for(let e of(n.lastUpdate=Date.now(),t))for(let{path:t,value:i}of e.values||[])M(n,t,i);G(n),D.current=!0},r=e=>{let t;if(!e?.updates)return;if(t=e.context,/^atons\./.test(t||""))return void i(e.context.replace(/^atons\./,""),e.updates);let a=v(e?.context);if(a&&w(a))return void i(a,e.updates);if(!a||n(a)||!y(a)||!e.updates)return;let r=A.current,l=r[a]||(r[a]=P(a));l.lastUpdate=Date.now();let s=!1;for(let t of e.updates)if(t.values)for(let{path:e,value:n}of t.values)x(l,e,n)&&(s=!0);s&&L(l),D.current=!0},l=async t=>{let n=await t.get("/atons").catch(()=>null);if(e||!n)return;let i=Date.now();for(let[e,t]of Object.entries(n)){let n=F.current[e]||(F.current[e]=S(e)),a=p(t,"navigation.position.value");Number.isFinite(a?.latitude)&&(n.latitude=a.latitude,n.longitude=a.longitude),n.atonType=p(t,"atonType.value.id")??n.atonType,n.name=m(t.name)??n.name,n.virtual=!0===p(t,"virtual.value")||!0===t.virtual,n.offPosition=!0===p(t,"offPosition.value")||!0===t.offPosition,n.lastUpdate=i,G(n)}D.current=!0},s=async()=>{let a=await t.API();l(a);let r=await a.vessels();if(e||!r)return;let s=A.current,o=Date.now();for(let[e,t]of Object.entries(r)){if(n(e))continue;if(w(e)){let n=p(t,"navigation.position.value"),a=[{path:"name",value:t.name}];n&&a.push({path:"navigation.position",value:n}),i(e,[{values:a}]);continue}if(!y(e))continue;let a=s[e]||(s[e]=P(e)),r=(e,n)=>{let i=p(t,n);void 0!==i&&(a[e]=i)},l=m(t.name);l&&(a.name=l),r("latitude","navigation.position.value.latitude"),r("longitude","navigation.position.value.longitude"),r("sog","navigation.speedOverGround.value"),r("cog","navigation.courseOverGroundTrue.value"),r("cogMagnetic","navigation.courseOverGroundMagnetic.value"),r("heading","navigation.headingTrue.value"),r("headingMagnetic","navigation.headingMagnetic.value"),r("length","design.length.value.overall"),r("beam","design.beam.value"),r("callsign","communication.callsignVhf"),r("navState","navigation.state.value"),r("shipType","design.aisShipType.value.id"),a.lastUpdate=o,L(a)}D.current=!0};return(async()=>{try{if((t=a.default.createClient({deltaStreamBehaviour:"none",sendMeta:null,subscriptions:[{context:"vessels.*",subscribe:f},{context:"atons.*",subscribe:h}]})).on("self",e=>{N.current=v(e)}),t.on("delta",r),await t.connect(),e)return;N.current=v(t.self)||N.current,await s()}catch(t){e||console.warn("AIS: SignalK connection failed:",t?.message||t)}})(),()=>{e=!0,t?.removeAllListeners?.("delta"),t?.disconnect()}},[I>0,L,G]);let $=(0,n.useMemo)(()=>({...E,targetsRef:A,motionRef:k,register:B}),[E,B]);return(0,t.jsx)(d.Provider,{value:$,children:e})},"predictScenePosition",0,(e,t,n)=>{let i=e.cog??e.cogMagnetic??e.heading,a=Number.isFinite(e.sog)?e.sog:0,r=Math.min(180,Math.max(0,(n-(e.positionAt||n))/1e3)),l=Math.min(180,Math.max(0,(n-t.fixAt)/1e3)),s=-(t.vx*l),o=-(t.vy*l);return Number.isFinite(i)&&a>.05&&(s+=a*Math.sin(i)*r,o+=a*Math.cos(i)*r),{x:e.sceneX+s*t.scale,z:e.sceneZ-o*t.scale}},"useAIS",0,({passive:e=!1}={})=>{let t=(0,n.useContext)(d),i=e?null:t?.register;return(0,n.useEffect)(()=>i?.(),[i]),t||{aisData:{},vesselIds:g,targets:g,atons:g,targetsRef:{current:{}},motionRef:{current:{vx:0,vy:0,fixAt:0,scale:.7}}}}],62588)},49063,e=>{e.v(t=>Promise.all(["static/chunks/0m7wbuocx-b4_.js","static/chunks/2gr1d26f-ymoh.js","static/chunks/11awvgcou7v4r.js"].map(t=>e.l(t))).then(()=>t(85626)))},10520,e=>{e.v(t=>Promise.all(["static/chunks/41odv061mfm6t.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(61891)))},45344,e=>{e.v(t=>Promise.all(["static/chunks/0zvzu5fnwh4_a.js","static/chunks/11awvgcou7v4r.js"].map(t=>e.l(t))).then(()=>t(42602)))},83934,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(66799),a=e.i(85709),r=e.i(46991);let l=(0,n.createContext)();e.s(["WeatherContextProvider",0,({children:e})=>{let s=(0,a.useSignalKPath)("navigation.position"),o=(0,n.useMemo)(()=>["environment.outside.temperature","environment.outside.relativeHumidity","environment.outside.pressure","environment.wind.speedTrue","environment.wind.directionTrue","environment.wind.gust"],[]),u=(0,a.useSignalKPaths)(o),[c,d]=(0,n.useState)(u),g=(0,n.useRef)(u);g.current=u;let f=(0,n.useRef)(null);(0,n.useEffect)(()=>{f.current||(f.current=setTimeout(()=>{f.current=null,d(g.current)},2e3))},[u]),(0,n.useEffect)(()=>()=>clearTimeout(f.current),[]);let[h,p]=(0,n.useState)([]),[m,v]=(0,n.useState)(!1),[b,y]=(0,n.useState)(null),[w,S]=(0,n.useState)(null),[M,P]=(0,n.useState)(null),x=(0,n.useRef)(null),C=(0,n.useRef)(null),T=(0,n.useRef)(s);T.current=s;let j=(0,n.useRef)(!1),O=Number.isFinite(s?.latitude)&&Number.isFinite(s?.longitude),k=(0,n.useCallback)(async()=>{let e=T.current;if(Number.isFinite(e?.latitude)&&Number.isFinite(e?.longitude)){j.current=!0,v(!0),y(null);try{let t=i.default.isWeatherApiAvailable();if(null===t&&(t=await i.default.checkWeatherApiAvailability()),S(t),!t)return void y("Weather API not available on SignalK server");let n=await i.default.getWeatherForecast(e.latitude,e.longitude),a=i.default.parseWeatherForecast(n);p(a),P(new Date)}catch(e){e.message&&e.message.includes("400")?(console.warn("WeatherContext: Weather forecast not supported by this server"),S(!1)):console.warn("WeatherContext: Failed to fetch forecast:",e.message),y(e.message)}finally{v(!1)}}},[]),R=(0,n.useCallback)(e=>{if(!h||0===h.length)return null;let t=Math.min(Math.floor(e),h.length-1);return h[t]||null},[h]),A=(0,n.useCallback)(()=>{let e=h.length>0?h[0]:null,t=c["environment.outside.temperature"]??(e?.temperature!=null?e.temperature+273.15:null),n=c["environment.outside.relativeHumidity"]??e?.humidity??null,i=c["environment.outside.pressure"]??e?.pressure??null,a=(0,r.finite)(c["environment.wind.speedTrue"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.speed)),l=(0,r.finite)(c["environment.wind.directionTrue"])??(0,r.finite)((0,r.degToRad)(e?.wind?.direction)),s=Object.values(c).some(e=>null!==(0,r.finite)(e)),o=e?.clouds;return{source:null!==t||null!==n||null!==i||null!==a?s?"sensors":"forecast":null,temperature:t,humidity:n,pressure:i,windSpeed:a,windDirection:l,cloudCover:null!=o?o>1?o/100:o:null,rain:e?.rain??null,description:e?.description||null}},[c,h]),F=(0,n.useCallback)(()=>{let e=h.length>0?h[0]:null,t=(0,r.finite)(c["environment.wind.speedTrue"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.speed)),n=(0,r.finite)(c["environment.wind.directionTrue"])??(0,r.finite)((0,r.degToRad)(e?.wind?.direction)),i=(0,r.finite)(c["environment.wind.gust"])??(0,r.finite)((0,r.knotsToMs)(e?.wind?.gust)),a=null!==(0,r.finite)(c["environment.wind.speedTrue"])||null!==(0,r.finite)(c["environment.wind.directionTrue"]);return{source:null!==t||null!==n?a?"sensors":"forecast":null,speed:t,direction:n,gust:i}},[c,h]);(0,n.useEffect)(()=>(x.current=setTimeout(()=>{k()},5e3),C.current=setInterval(()=>{k()},18e5),()=>{x.current&&clearTimeout(x.current),C.current&&clearInterval(C.current)}),[k]),(0,n.useEffect)(()=>{O&&!j.current&&k()},[O,k]);let N=(0,n.useMemo)(()=>({forecasts:h,isLoading:m,error:b,weatherApiAvailable:w,lastFetchTime:M,fetchWeatherForecast:k,getForecastForTime:R,getCurrentWeather:A,getWindData:F}),[h,m,b,w,M,k,R,A,F]);return(0,t.jsx)(l.Provider,{value:N,children:e})},"useWeather",0,()=>{let e=(0,n.useContext)(l);if(!e)throw Error("useWeather must be used within a WeatherContextProvider");return e}])},23e3,e=>{e.v(t=>Promise.all(["static/chunks/15imr2-f_8n-x.js","static/chunks/2gr1d26f-ymoh.js"].map(t=>e.l(t))).then(()=>t(50637)))},30206,e=>{"use strict";let t=new Set,n={active:!1,playing:!1,speed:30,time:0,start:0,end:0,voyage:null},i=[],a=null,r=0,l=null,s=()=>t.forEach(e=>e(n)),o=e=>{n={...n,...e},s()},u=(e,t,n)=>e+(t-e)*n,c=(e,t,n)=>{let i=Math.atan2(Math.sin(t-e),Math.cos(t-e));return e+i*n},d=new Set(["hdg","cog","twa","twd","awa","rud","roll"]),g=e=>{if(!i.length)return null;let t=0,n=i.length-1;if(e<=i[0].t)return i[0];if(e>=i[n].t)return i[n];for(;n-t>1;){let a=t+n>>1;i[a].t<=e?t=a:n=a}let a=i[t],r=i[n],l=(e-a.t)/Math.max(1,r.t-a.t),s={t:e};for(let e of Object.keys(a)){if("t"===e)continue;let t=a[e],n=r[e];if(!Number.isFinite(t)||!Number.isFinite(n)){s[e]=t??n;continue}s[e]=d.has(e)?c(t,n,l):u(t,n,l)}return s},f=e=>{let t={},n=(e,n)=>{null!=n&&("number"!=typeof n||Number.isFinite(n))&&(t[e]=n)};return Number.isFinite(e.lat)&&Number.isFinite(e.lon)&&(t["navigation.position"]={latitude:e.lat,longitude:e.lon}),n("navigation.headingTrue",e.hdg),n("navigation.courseOverGroundTrue",e.cog??e.hdg),n("navigation.speedOverGround",e.sog),n("navigation.speedThroughWater",e.stw??e.sog),n("environment.wind.speedTrue",e.tws),n("environment.wind.angleTrueWater",e.twa),n("environment.wind.directionTrue",e.twd),n("environment.wind.speedApparent",e.aws),n("environment.wind.angleApparent",e.awa),n("steering.rudderAngle",e.rud),n("environment.depth.belowKeel",e.depth),Number.isFinite(e.roll)&&(t["navigation.attitude"]={roll:e.roll,pitch:0,yaw:e.hdg??0}),t},h=()=>{let e=Date.now(),t=e-r;if(r=e,!n.playing)return;let i=n.time+t*n.speed;i>=n.end&&(i=n.end,o({playing:!1})),n={...n,time:i};let a=g(i);a&&l&&l(f(a)),s()},p=()=>{a&&clearInterval(a),a=null,i=[],o({active:!1,playing:!1,voyage:null})};e.s(["getReplayState",0,()=>n,"isReplaying",0,()=>n.active,"seekReplay",0,e=>{if(!n.active)return;let t=Math.max(n.start,Math.min(n.end,e));o({time:t});let i=g(t);i&&l&&l(f(i))},"setReplaySink",0,e=>{l=e},"setReplaySpeed",0,e=>o({speed:e}),"startReplay",0,(e,t)=>{p(),i=t,o({active:!0,playing:!0,time:e.start,start:e.start,end:e.end,voyage:e});let n=g(e.start);n&&l&&l(f(n)),r=Date.now(),a=setInterval(h,100)},"stopReplay",0,p,"subscribeReplay",0,e=>(t.add(e),()=>t.delete(e)),"togglePlay",0,()=>{n.active&&(r=Date.now(),o({playing:!n.playing,time:n.time>=n.end?n.start:n.time}))}])},44485,e=>{"use strict";let t="samples",n=null,i=async(e,i)=>{let a=await ("u"<typeof indexedDB?Promise.reject(Error("IndexedDB unavailable")):(!n&&(n=new Promise((e,i)=>{let a=indexedDB.open("ocearo-voyages",1);a.onupgradeneeded=()=>{let e=a.result;e.objectStoreNames.contains(t)||e.createObjectStore(t,{keyPath:"t"})},a.onsuccess=()=>e(a.result),a.onerror=()=>{n=null,i(a.error)}})),n));return new Promise((n,r)=>{let l,s=a.transaction(t,e);Promise.resolve(i(s.objectStore(t))).then(e=>{l=e}),s.oncomplete=()=>n(l),s.onerror=()=>r(s.error),s.onabort=()=>r(s.error)})},a=e=>new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)}),r=e=>e*Math.PI/180,l=(e,t)=>6371e3*Math.hypot(r(t.lat-e.lat),r(t.lon-e.lon)*Math.cos(r((e.lat+t.lat)/2))),s=async()=>{let e=await i("readonly",e=>a(e.getAll())),t=[],n=null;for(let i of e)!n||i.t-n.end>18e5?(n={id:i.t,start:i.t,end:i.t,distanceM:0,maxSog:0,samples:0,last:i},t.push(n)):n.distanceM+=l(n.last,i),n.end=i.t,n.samples+=1,n.maxSog=Math.max(n.maxSog,i.sog||0),n.last=i;return t.filter(e=>e.end-e.start>=3e5&&e.distanceM>100).map(({last:e,...t})=>t).reverse()};e.s(["addSample",0,e=>i("readwrite",t=>{t.put(e)}),"getSamples",0,(e,t)=>i("readonly",n=>a(n.getAll(IDBKeyRange.bound(e,t)))),"listVoyages",0,s,"trimSamples",0,()=>i("readwrite",async e=>{let t=await a(e.count());t<=4e5||(await a(e.getAllKeys(null,t-4e5))).forEach(t=>e.delete(t))})])},90317,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={bindSnapshot:function(){return u},createAsyncLocalStorage:function(){return o},createSnapshot:function(){return c}};for(var a in i)Object.defineProperty(n,a,{enumerable:!0,get:i[a]});let r=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class l{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let s="u">typeof globalThis&&globalThis.AsyncLocalStorage;function o(){return s?new s:new l}function u(e){return s?s.bind(e):l.bind(e)}function c(){return s?s.snapshot():function(e,...t){return e(...t)}}},42344,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"workAsyncStorageInstance",{enumerable:!0,get:function(){return i}});let i=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"workAsyncStorage",{enumerable:!0,get:function(){return i.workAsyncStorageInstance}});let i=e.r(42344)},9885,(e,t,n)=>{"use strict";function i(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return i}})},67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return a}});let i=e.r(32061);function a({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new i.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return o}});let i=e.r(43476),a=e.r(74080),r=e.r(63599),l=e.r(9885),s=e.r(43369);function o({moduleIds:e}){if("u">typeof window)return null;let t=r.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let i=t.reactLoadableManifest;for(let t of e){if(!i[t])continue;let e=i[t].files;n.push(...e)}}if(0===n.length)return null;let u=(0,s.getAssetTokenQuery)();return(0,i.jsx)(i.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${u}`;return e.endsWith(".css")?(0,i.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,a.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return u}});let i=e.r(43476),a=e.r(71645),r=e.r(67585),l=e.r(52157);function s(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},u=function(e){let t={...o,...e},n=(0,a.lazy)(()=>t.loader().then(s)),u=t.loading;function c(e){let s=u?(0,i.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,c=o?a.Suspense:a.Fragment,d=t.ssr?(0,i.jsxs)(i.Fragment,{children:["u"<typeof window?(0,i.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,i.jsx)(n,{...e})]}):(0,i.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,i.jsx)(n,{...e})});return(0,i.jsx)(c,{...o?{fallback:s}:{},children:d})}return c.displayName="LoadableComponent",c}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return a}});let i=e.r(55682)._(e.r(69093));function a(e,t){let n={};"function"==typeof e&&(n.loader=e);let a={...n,...t};return(0,i.default)({...a,modules:a.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},79866,(e,t,n)=>{t.exports={boats:[{name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]},{name:"Racer 10.8",modelPath:"racer",capabilities:["navigation","sail","color"]},{name:"Catamaran 14",modelPath:"catamaran",capabilities:["navigation","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"]}]}},83402,e=>{"use strict";var t=e.i(79866);let n=new class{constructor(){this.defaultConfig={signalkUrl:"http://localhost:3000",username:"",password:"",useAuthentication:!1,signalKUrlSet:!1,debugMode:!1,selectedBoat:"Racer 10.8",primaryColor:null,metallicEffect:!1,aisLengthScalingFactor:.7,compassNorthUp:!1,hide3DCompass:!1,hideTrueWind:!1,showCustomUrls:!1,customExternalUrls:{},currentView:"default",theme:"dark",language:"en",distanceUnits:"nm",depthUnits:"m",speedUnits:"kn",temperatureUnits:"C",positionFormat:"DD",preferTrueValues:!0,preferredWindSpeedPath:"speedTrue",preferredWindDirectionPath:"directionTrue",preferredHeadingPath:"courseOverGroundTrue",debugWindOverride:!1,debugWindSpeed:10,debugWindDirection:0,debugShowAxes:!1,showSailTrimSliders:!0,showRigging:!0,showSeamarks3D:!0,seamarksOverpass:!0,staleDataTimeout:30},this.configKey="ocearoConfig",this.inMemoryConfig={...this.defaultConfig},this.config=this.loadConfig()}isLocalStorageAvailable(){try{return"u">typeof localStorage}catch{return!1}}loadConfig(){if(this.isLocalStorageAvailable()){let e=localStorage.getItem(this.configKey);if(!e)return this.saveConfig(this.defaultConfig),{...this.defaultConfig};try{let t={...this.defaultConfig,...JSON.parse(e)};return(t.boatChosen||"Default"!==t.selectedBoat)&&"RM1080"!==t.selectedBoat||(t.selectedBoat="Racer 10.8"),t}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):null}getBoatsData(){return t.default.boats}getSignalKUrl(){return this.config.signalKUrlSet&&this.config.signalkUrl?this.normalizeSignalKUrl(this.config.signalkUrl):this.getComputedSignalKUrl()}normalizeSignalKUrl(e){let t=String(e).trim().replace(/\/+$/,"");if(!t)return t;t=t.replace(/^wss:\/\//i,"https://").replace(/^ws:\/\//i,"http://");let n="https:"===window.location.protocol;return/^https?:\/\//i.test(t)||(t=`${n?"https":"http"}://${t}`),t=t.replace(/^https?:/i,e=>e.toLowerCase()),n&&t.startsWith("http://")&&(t="https://"+t.slice(7).replace(/:80(?=\/|$)/,"")),t}getComputedSignalKUrl(){return this.config.debugMode?"https://demo.signalk.org:443":`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}`}getCurrentView(){return this.config.currentView||this.defaultConfig.currentView}setCurrentView(e){this.set("currentView",e)}};e.s(["default",0,n])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,5445,t=>{"use strict";var e=t.i(71645),i=t.i(18566),a=t.i(83402);t.s(["default",0,function(){let t=(0,i.useRouter)();return(0,e.useEffect)(()=>{a.default.setCurrentView("settings"),t.replace("/")},[t]),null}])},18566,(t,e,i)=>{e.exports=t.r(76562)},79866,(t,e,i)=>{e.exports={boats:[{name:"Default",modelPath:"default",capabilities:["navigation","rudder","sail","color"]},{name:"Racer 10.8",modelPath:"racer",capabilities:["navigation","sail","color"]},{name:"Catamaran 14",modelPath:"catamaran",capabilities:["navigation","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"]}]}},83402,t=>{"use strict";var e=t.i(79866);let i=new class{constructor(){this.defaultConfig={signalkUrl:"http://localhost:3000",username:"",password:"",useAuthentication:!1,signalKUrlSet:!1,debugMode:!1,selectedBoat:"Racer 10.8",primaryColor:null,metallicEffect:!1,aisLengthScalingFactor:.7,compassNorthUp:!1,hide3DCompass:!1,hideTrueWind:!1,showCustomUrls:!1,customExternalUrls:{},currentView:"default",theme:"dark",language:"en",distanceUnits:"nm",depthUnits:"m",speedUnits:"kn",temperatureUnits:"C",positionFormat:"DD",preferTrueValues:!0,preferredWindSpeedPath:"speedTrue",preferredWindDirectionPath:"directionTrue",preferredHeadingPath:"courseOverGroundTrue",debugWindOverride:!1,debugWindSpeed:10,debugWindDirection:0,debugShowAxes:!1,showSailTrimSliders:!0,showRigging:!0,showSeamarks3D:!0,seamarksOverpass:!0,staleDataTimeout:30},this.configKey="ocearoConfig",this.inMemoryConfig={...this.defaultConfig},this.config=this.loadConfig()}isLocalStorageAvailable(){try{return"u">typeof localStorage}catch{return!1}}loadConfig(){if(this.isLocalStorageAvailable()){let t=localStorage.getItem(this.configKey);if(!t)return this.saveConfig(this.defaultConfig),{...this.defaultConfig};try{let e={...this.defaultConfig,...JSON.parse(t)};return(e.boatChosen||"Default"!==e.selectedBoat)&&"RM1080"!==e.selectedBoat||(e.selectedBoat="Racer 10.8"),e}catch(t){return console.error("Failed to parse stored configuration:",t),{...this.defaultConfig}}}return{...this.inMemoryConfig}}saveConfig(t){this.config={...this.config,...t},this.isLocalStorageAvailable()?localStorage.setItem(this.configKey,JSON.stringify(this.config)):this.inMemoryConfig={...this.config}}get(t){return this.config[t]}set(t,e){this.config[t]=e,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 t=this.config.selectedBoat;return t?this.getBoatsData().find(e=>e.name===t):null}getBoatsData(){return e.default.boats}getSignalKUrl(){return this.config.signalKUrlSet&&this.config.signalkUrl?this.normalizeSignalKUrl(this.config.signalkUrl):this.getComputedSignalKUrl()}normalizeSignalKUrl(t){let e=String(t).trim().replace(/\/+$/,"");if(!e)return e;e=e.replace(/^wss:\/\//i,"https://").replace(/^ws:\/\//i,"http://");let i="https:"===window.location.protocol;return/^https?:\/\//i.test(e)||(e=`${i?"https":"http"}://${e}`),e=e.replace(/^https?:/i,t=>t.toLowerCase()),i&&e.startsWith("http://")&&(e="https://"+e.slice(7).replace(/:80(?=\/|$)/,"")),e}getComputedSignalKUrl(){return this.config.debugMode?"https://demo.signalk.org:443":`${window.location.protocol}//${window.location.hostname}${window.location.port?":"+window.location.port:""}`}getCurrentView(){return this.config.currentView||this.defaultConfig.currentView}setCurrentView(t){this.set("currentView",t)}};t.s(["default",0,i])}]);