ocearo-ui 0.1.22 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/404.html +1 -1
- package/README.fr.md +118 -158
- package/README.md +114 -158
- package/__next.__PAGE__.txt +19 -5
- package/__next._full.txt +11 -11
- package/__next._tree.txt +2 -2
- package/_next/static/chunks/0-c2-u5p6bxzo.js +1 -0
- package/_next/static/chunks/01atsfq_4opab.js +1 -0
- package/_next/static/chunks/0cx639tthxlz4.js +1 -0
- package/_next/static/chunks/0h2qsuyze9ds1.js +1 -0
- package/_next/static/chunks/0iqdztntvxh3c.js +119 -0
- package/_next/static/chunks/0iztd835j5p1n.js +700 -0
- package/_next/static/chunks/{2nxsyowmuwpjy.js → 0jfox92up1jvy.js} +1 -1
- package/_next/static/chunks/0jpa5m78l0ib0.js +1 -0
- package/_next/static/chunks/0kpstejrka-7k.js +1 -0
- package/_next/static/chunks/0n95joti2n2py.js +3 -0
- package/_next/static/chunks/0oaqe70syw_b5.js +1 -0
- package/_next/static/chunks/0ohleay4roayh.js +353 -0
- package/_next/static/chunks/0on1skx9l54-9.js +1 -0
- package/_next/static/chunks/0w_skktmh3e48.js +1 -0
- package/_next/static/chunks/0y-dctk-kmqss.js +1 -0
- package/_next/static/chunks/0yiqocv54ogoq.js +1 -0
- package/_next/static/chunks/0zlk2mlkvbtj1.js +1 -0
- package/_next/static/chunks/0zwc9m4qgtwle.js +1 -0
- package/_next/static/chunks/11awvgcou7v4r.js +1 -0
- package/_next/static/chunks/144mjqdrx42lq.js +1 -0
- package/_next/static/chunks/1d81m3g9jqkob.js +1 -0
- package/_next/static/chunks/1ed7ayfg19cjb.js +1 -0
- package/_next/static/chunks/1epya-yh2wvj2.js +1 -0
- package/_next/static/chunks/1exvcc71cgr4t.js +446 -0
- package/_next/static/chunks/1fzzb4jtgv5gg.js +9 -0
- package/_next/static/chunks/1g8fbzv0hu0i2.js +1 -0
- package/_next/static/chunks/1gaiqhzy_0d7s.js +1 -0
- package/_next/static/chunks/1gq4t2dyr7rq3.js +1 -0
- package/_next/static/chunks/1l-jew0-1-3eq.js +30 -0
- package/_next/static/chunks/1ptj3mv8b_tzs.js +1 -0
- package/_next/static/chunks/1w1xks0hp_tlr.js +346 -0
- package/_next/static/chunks/1xekc18cyi4sx.js +1 -0
- package/_next/static/chunks/1y35unwvy8p98.js +1 -0
- package/_next/static/chunks/2aq8orcir5h03.js +1 -0
- package/_next/static/chunks/2fdpvhx4oo81h.js +1 -0
- package/_next/static/chunks/2g-xpe7xnropn.js +409 -0
- package/_next/static/chunks/2kmptoy43h0mx.js +1 -0
- package/_next/static/chunks/2n86yq1wz1yx7.js +1 -0
- package/_next/static/chunks/2r_h93rt76vka.js +1 -0
- package/_next/static/chunks/2rebcvig176xk.js +564 -0
- package/_next/static/chunks/2w71oj1brox5z.js +1 -0
- package/_next/static/chunks/2wayx8t5r5fi9.js +1 -0
- package/_next/static/chunks/2y3d8zopa8r5r.css +3 -0
- package/_next/static/chunks/3--qzv1u6c7_7.js +1 -0
- package/_next/static/chunks/31lugryguappr.js +1 -0
- package/_next/static/chunks/32j_j396qs7be.js +1 -0
- package/_next/static/chunks/32yn_fc-es66m.js +22 -0
- package/_next/static/chunks/34_oyzp8_pi_m.js +1 -0
- package/_next/static/chunks/34wvn5zw0a69w.js +1 -0
- package/_next/static/chunks/37t6vg8fb1-z8.js +1 -0
- package/_next/static/chunks/3k5itcabq5oqs.js +9 -0
- package/_next/static/chunks/3ktj0iemsr1m-.js +1 -0
- package/_next/static/chunks/3nm7o0eq5abhg.js +1 -0
- package/_next/static/chunks/3s6nzrbk-8mnv.js +31 -0
- package/_next/static/chunks/3td9mnhvcj9cq.js +1 -0
- package/_next/static/chunks/3xjnsskh0tayo.js +1 -0
- package/_next/static/chunks/3zqx8h9yg5-ch.js +1 -0
- package/_next/static/chunks/turbopack-1h111qg8l92rw.js +1 -0
- package/_not-found/__next._full.txt +12 -12
- package/_not-found/__next._not-found.__PAGE__.txt +19 -2
- package/_not-found/__next._tree.txt +2 -2
- package/_not-found.html +1 -1
- package/_not-found.txt +12 -12
- package/boats/boats.json +40 -5
- package/index.html +1 -1
- package/index.txt +11 -11
- package/package.json +14 -14
- package/settings/__next._full.txt +14 -14
- package/settings/__next._tree.txt +2 -2
- package/settings/__next.settings.__PAGE__.txt +22 -5
- package/settings.html +1 -1
- package/settings.txt +14 -14
- package/__next._head.txt +0 -6
- package/__next._index.txt +0 -5
- package/_next/static/chunks/0-z15txb4-uhu.js +0 -409
- package/_next/static/chunks/009rlietvsaq2.js +0 -1
- package/_next/static/chunks/070stlm97b9a2.js +0 -1
- package/_next/static/chunks/0abo2oxxw3hpi.js +0 -1
- package/_next/static/chunks/0jzbiie0nzar2.js +0 -1
- package/_next/static/chunks/0kinaai2rvd43.js +0 -9
- package/_next/static/chunks/0l9s4rhr00adq.js +0 -1
- package/_next/static/chunks/0qj7yy4f6sk8y.js +0 -455
- package/_next/static/chunks/0ri_um14-5x7u.js +0 -1
- package/_next/static/chunks/0uvr7xkt_5uno.js +0 -1
- package/_next/static/chunks/0yf1ifg_o1bq6.js +0 -1
- package/_next/static/chunks/0zbzk2ob0li1n.js +0 -1
- package/_next/static/chunks/0zjxnzbxh76mt.js +0 -1
- package/_next/static/chunks/17ma1x64d-211.js +0 -1
- package/_next/static/chunks/19xb2y6sgfnza.js +0 -1
- package/_next/static/chunks/1bz0tcmhjmjgh.js +0 -1
- package/_next/static/chunks/1d4h-sglyo8ft.js +0 -1
- package/_next/static/chunks/1gizigk3w6q7j.js +0 -31
- package/_next/static/chunks/1ptwltjb3h6jf.js +0 -4
- package/_next/static/chunks/1q572rz5m8mb-.js +0 -1
- package/_next/static/chunks/1rkf8qtk5-48h.js +0 -1
- package/_next/static/chunks/1sq_733weprvs.js +0 -1
- package/_next/static/chunks/26e1o1as-77nq.js +0 -172
- package/_next/static/chunks/27hn45pv56pv7.js +0 -393
- package/_next/static/chunks/28y-j215vt42m.js +0 -1
- package/_next/static/chunks/2a0yjir_3mk1m.js +0 -1
- package/_next/static/chunks/2atijj_pkc4uc.js +0 -2
- package/_next/static/chunks/2ccpehidlaq88.js +0 -1
- package/_next/static/chunks/2fy4q1c5l3tpj.js +0 -1
- package/_next/static/chunks/2lvvt2f1l5sfu.js +0 -1
- package/_next/static/chunks/2lw7kypuhij1_.css +0 -3
- package/_next/static/chunks/2nd5amcst4lhp.js +0 -1
- package/_next/static/chunks/2pwmb4pkqygy_.js +0 -1
- package/_next/static/chunks/2q_83f24jeg0e.js +0 -1
- package/_next/static/chunks/2rsdqsatgq9ta.js +0 -1
- package/_next/static/chunks/2udirievybq_j.js +0 -1
- package/_next/static/chunks/2urimbxg5bqv3.js +0 -1
- package/_next/static/chunks/32cbrrsp-x35l.js +0 -1
- package/_next/static/chunks/36ra6xjie0dsv.js +0 -9
- package/_next/static/chunks/3iuz3f0429awx.js +0 -1
- package/_next/static/chunks/3jh1u-s3k0bkk.js +0 -1
- package/_next/static/chunks/3jupxlga7r_do.js +0 -1
- package/_next/static/chunks/3m57lnggu30tr.js +0 -243
- package/_next/static/chunks/3myql5zu0rstt.js +0 -425
- package/_next/static/chunks/3rhgquok36e79.js +0 -1
- package/_next/static/chunks/42dfiu6iby3fq.js +0 -1
- package/_next/static/chunks/43ps2cu5ahf8n.js +0 -3
- package/_next/static/chunks/turbopack-0pirmko-w-775.js +0 -1
- package/_not-found/__next._head.txt +0 -6
- package/_not-found/__next._index.txt +0 -5
- package/_not-found/__next._not-found.txt +0 -5
- package/boats/ais/ais-30.glb +0 -0
- package/boats/ais/ais-31.glb +0 -0
- package/boats/ais/ais-35.glb +0 -0
- package/boats/ais/ais-36.glb +0 -0
- package/boats/ais/ais-37.glb +0 -0
- package/boats/ais/ais-40.glb +0 -0
- package/boats/ais/ais-50.glb +0 -0
- package/boats/ais/ais-60.glb +0 -0
- package/boats/ais/ais-70.glb +0 -0
- package/boats/ais/ais-80.glb +0 -0
- package/settings/__next._head.txt +0 -6
- package/settings/__next._index.txt +0 -5
- package/settings/__next.settings.txt +0 -5
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → baa0rBM5TIECz8JV_tLT6}/_buildManifest.js +0 -0
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → baa0rBM5TIECz8JV_tLT6}/_clientMiddlewareManifest.js +0 -0
- /package/_next/static/{sct9rcMTcCyBLHTxQQ75- → baa0rBM5TIECz8JV_tLT6}/_ssgManifest.js +0 -0
|
@@ -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},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.config.signalkUrl:this.getComputedSignalKUrl()}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])}]);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,84226,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(57384);e.i(67561);var o=e.i(46991),i=e.i(85709),a=e.i(83402),s=e.i(90072),u=e.i(16196),l=e.i(83646);let d=({position:e=[0,0,0],rotation:r=[0,0,0],speed:n,color:o,fontSize:i=.5,textPosition:a=[0,.8,0],arrowSize:d=1})=>{let{scene:p}=(0,l.default)(),c=o||p.wind;return(0,t.jsxs)("group",{position:e,rotation:r,children:[(0,t.jsx)(u.Text,{characters:".0123456789",color:c,fontSize:i*d,position:a,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",children:n.toFixed(1)}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("shapeGeometry",{args:[new s.Shape([new s.Vector2(0,0),new s.Vector2(.5*d*Math.cos(5*Math.PI/6),.5*d*Math.sin(5*Math.PI/6)),new s.Vector2(0,-.577*d),new s.Vector2(0,-.577*d),new s.Vector2(-.5*d*Math.cos(5*Math.PI/6),.5*d*Math.sin(5*Math.PI/6)),new s.Vector2(0,0)])]}),(0,t.jsx)("meshStandardMaterial",{color:c,side:s.DoubleSide})]})]})};d.propTypes={position:n.default.oneOfType([n.default.instanceOf(s.Vector3),n.default.arrayOf(n.default.number)]).isRequired,rotation:n.default.arrayOf(n.default.number).isRequired,speed:n.default.number.isRequired,color:n.default.oneOfType([n.default.string,n.default.number]).isRequired,fontSize:n.default.number,textPosition:n.default.arrayOf(n.default.number),arrowSize:n.default.number};let p=({outerRadius:e})=>{let n=a.default.get("preferredWindSpeedPath")||"speedTrue",u=a.default.get("preferredWindDirectionPath")||"directionTrue",p=a.default.get("preferredHeadingPath")||"courseOverGroundTrue",c=(0,r.useMemo)(()=>["environment.wind.angleTrueGround","environment.wind.speedOverGround","environment.wind.directionTrue","environment.wind.speedTrue","environment.wind.angleApparent","environment.wind.speedApparent","environment.wind.angleTrueWater","navigation.headingTrue","navigation.headingMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic"],[]),h=(0,i.useSignalKPaths)(c),f=(0,r.useMemo)(()=>{if("directionTrue"===u){let e=h[`environment.wind.${u}`]??h["environment.wind.directionTrue"];if(null!=e)return Math.PI/2-(e-(h[`navigation.${p}`]??h["navigation.headingTrue"]??h["navigation.courseOverGroundTrue"]??0));let t=h["environment.wind.angleTrueGround"]??h["environment.wind.angleTrueWater"];if(null!=t)return Math.PI/2-t}else{let e=h[`environment.wind.${u}`]??h["environment.wind.angleTrueGround"]??h["environment.wind.angleTrueWater"];if(null!=e)return Math.PI/2-e;let t=h["environment.wind.directionTrue"];if(null!=t)return Math.PI/2-(t-(h[`navigation.${p}`]??h["navigation.headingTrue"]??h["navigation.courseOverGroundTrue"]??0))}return Math.PI/2},[h,u,p]),m=(0,r.useMemo)(()=>{let e=h[`environment.wind.${n}`]??h["environment.wind.speedOverGround"]??h["environment.wind.speedTrue"];return(0,o.convertSpeedUnit)(e)||0},[h,n]),g=(0,r.useMemo)(()=>Math.PI/2-(h["environment.wind.angleApparent"]||0),[h]),v=(0,r.useMemo)(()=>(0,o.convertSpeedUnit)(h["environment.wind.speedApparent"])||0,[h]),x=(0,r.useMemo)(()=>new s.Vector3((e+.7)*Math.cos(f),0,-(e+.7)*Math.sin(f)),[e,f]),M=(0,r.useMemo)(()=>new s.Vector3((e+.7)*Math.cos(g),0,-(e+.7)*Math.sin(g)),[e,g]),w=(0,l.default)();return(0,t.jsxs)("group",{children:[m>0&&!0!==a.default.get("hideTrueWind")&&(0,t.jsx)(d,{position:x,rotation:[-Math.PI/2,0,-(Math.PI/2-f)],speed:m,color:w.ok,fontSize:1}),v>0&&(0,t.jsx)(d,{position:M,rotation:[-Math.PI/2,0,-(Math.PI/2-g)],speed:v,color:w.accent,fontSize:1})]})};p.propTypes={outerRadius:n.default.number.isRequired},e.s(["default",0,p])},35235,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(30297),o=e.i(82897),i=e.i(60099),a=e.i(66326),s=e.i(73919),u=e.i(20440),l=e.i(85709),d=e.i(83646),p=e.i(84226),c=e.i(57384),h=e.i(16196),f=e.i(90072);let m=.5,g=({position:e,rotation:r,speed:n,color:o,fontSize:i=m,textPosition:a=[0,.8,0],arrowSize:s=1})=>{let{scene:u}=(0,d.default)(),l=o||u.wind;return(0,t.jsxs)("group",{position:e,rotation:r,children:[(0,t.jsx)(h.Text,{characters:"0123456789.",color:l,fontSize:i*s,position:a,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",fillOpacity:.9,children:n.toFixed(1)}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("shapeGeometry",{args:[new f.Shape([new f.Vector2(0,0),new f.Vector2(.4*s,.3*s),new f.Vector2(0,-.6*s),new f.Vector2(-.4*s,.3*s),new f.Vector2(0,0)])]}),(0,t.jsx)("meshBasicMaterial",{color:l,side:f.DoubleSide,transparent:!0,opacity:.8})]})]})};g.propTypes={position:c.default.arrayOf(c.default.number),rotation:c.default.arrayOf(c.default.number),speed:c.default.number.isRequired,color:c.default.string,fontSize:c.default.number,textPosition:c.default.arrayOf(c.default.number),arrowSize:c.default.number},g.defaultProps={position:[0,0,0],rotation:[0,0,0],color:null,fontSize:m,textPosition:[0,.8,0],arrowSize:1};let v=({outerRadius:e})=>{let n=(0,l.useSignalKPath)("environment.current"),o=(0,r.useMemo)(()=>n||{setTrue:0,drift:0},[n]),i=(0,r.useMemo)(()=>{let t=o.setTrue||0;return[(e+.7)*Math.cos(t),0,-(e+.7)*Math.sin(t)]},[e,o.setTrue]),{scene:a}=(0,d.default)();return!o.drift||o.drift<=0?null:(0,t.jsx)("group",{children:(0,t.jsx)(g,{position:i,rotation:[-Math.PI/2,0,-(Math.PI/2-(o.setTrue||0))],speed:o.drift,color:a.current,arrowSize:1.2})})};v.propTypes={outerRadius:c.default.number.isRequired};var x=e.i(95393);let M=`
|
|
2
|
+
attribute float aAlong;
|
|
3
|
+
varying vec2 vUv;
|
|
4
|
+
varying float vAlong;
|
|
5
|
+
void main() {
|
|
6
|
+
vUv = uv;
|
|
7
|
+
vAlong = aAlong;
|
|
8
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
9
|
+
}
|
|
10
|
+
`,w=`
|
|
11
|
+
uniform vec3 uColor;
|
|
12
|
+
uniform vec3 uGlow;
|
|
13
|
+
uniform float uTime;
|
|
14
|
+
uniform float uOpacity;
|
|
15
|
+
varying vec2 vUv;
|
|
16
|
+
varying float vAlong;
|
|
17
|
+
void main() {
|
|
18
|
+
float across = abs(vUv.x - 0.5) * 2.0;
|
|
19
|
+
float edge = 1.0 - smoothstep(0.8, 1.0, across);
|
|
20
|
+
float rim = smoothstep(0.84, 0.92, across) * (1.0 - smoothstep(0.92, 1.0, across));
|
|
21
|
+
float fade = 1.0 - smoothstep(0.65, 1.0, vUv.y);
|
|
22
|
+
// Chevrons pointing along the path, streaming forward
|
|
23
|
+
float c = fract(vAlong * 0.45 + across * 0.9 - uTime * 0.9);
|
|
24
|
+
float chevron = smoothstep(0.55, 0.62, c) * (1.0 - smoothstep(0.78, 0.86, c));
|
|
25
|
+
vec3 color = mix(uColor, uGlow, chevron);
|
|
26
|
+
float alpha = (0.28 * edge + 0.5 * chevron * edge + 0.45 * rim) * fade * uOpacity;
|
|
27
|
+
gl_FragColor = vec4(color, alpha);
|
|
28
|
+
#include <colorspace_fragment>
|
|
29
|
+
}
|
|
30
|
+
`,y=({points:e,width:n=2,color:o,glow:i,y:a=.05,opacity:s=1})=>{let u=(0,r.useMemo)(()=>new f.ShaderMaterial({uniforms:{uColor:{value:new f.Color},uGlow:{value:new f.Color},uTime:{value:0},uOpacity:{value:1}},vertexShader:M,fragmentShader:w,transparent:!0,depthWrite:!1,side:f.DoubleSide}),[]);(0,r.useEffect)(()=>{u.uniforms.uColor.value.set(o),u.uniforms.uGlow.value.set(i||o),u.uniforms.uOpacity.value=s},[u,o,i,s]),(0,r.useEffect)(()=>()=>u.dispose(),[u]),(0,x.useFrame)((e,t)=>{u.uniforms.uTime.value+=t});let l=(0,r.useMemo)(()=>{let t=e.length,r=new Float32Array(2*t*3),o=new Float32Array(2*t*2),i=new Float32Array(2*t),s=0,u=e.reduce((t,r,n)=>n?t+Math.hypot(r[0]-e[n-1][0],r[1]-e[n-1][1]):0,0)||1;for(let l=0;l<t;l++){let d=e[Math.max(0,l-1)],p=e[Math.min(t-1,l+1)],c=p[0]-d[0],h=p[1]-d[1],f=Math.hypot(c,h)||1;c/=f,h/=f,l>0&&(s+=Math.hypot(e[l][0]-e[l-1][0],e[l][1]-e[l-1][1]));let m=-h*n/2,g=c*n/2;r.set([e[l][0]+m,a,e[l][1]+g,e[l][0]-m,a,e[l][1]-g],6*l),o.set([0,s/u,1,s/u],4*l),i.set([s,s],2*l)}let l=[];for(let e=0;e<t-1;e++){let t=2*e;l.push(t,t+1,t+2,t+1,t+3,t+2)}let d=new f.BufferGeometry;return d.setAttribute("position",new f.BufferAttribute(r,3)),d.setAttribute("uv",new f.BufferAttribute(o,2)),d.setAttribute("aAlong",new f.BufferAttribute(i,1)),d.setIndex(l),d},[e,n,a]);return((0,r.useEffect)(()=>()=>l.dispose(),[l]),e.length<2)?null:(0,t.jsx)("mesh",{geometry:l,material:u,renderOrder:2})};var b=e.i(76247),T=e.i(43216);let j=35*Math.PI/180,P=({rudder:e=0,speed:t=0,seconds:r=20,current:n=null,wind:o=null,steps:i=48})=>{let a=Math.tan(Math.max(-j,Math.min(j,e||0)))/4.2,s=0,u=0;if(n&&Number.isFinite(n.set)&&Number.isFinite(n.drift)&&(s+=n.drift*Math.sin(n.set),u-=n.drift*Math.cos(n.set)),o&&Number.isFinite(o.angle)&&Number.isFinite(o.speed)){let e=.035*o.speed;s-=e*Math.sin(o.angle),u+=e*Math.cos(o.angle)}let l=r/i,d=0,p=0,c=0,h=[[0,0]];for(let e=0;e<i;e++)d+=(t*Math.sin(c)+s)*l,p+=(-t*Math.cos(c)+u)*l,c+=t*a*l,h.push([d,p]);return h};var O=e.i(539);let S=["steering.rudderAngle","navigation.speedThroughWater","navigation.speedOverGround","propulsion.0.transmission.gear","propulsion.main.transmission.gear","propulsion.port.transmission.gear","environment.current","environment.wind.speedTrue","environment.wind.angleTrueWater","navigation.headingTrue","navigation.courseOverGroundTrue"];e.s(["default",0,({onUpdateInfoPanel:e})=>{let{scene:c,accent:h}=(0,d.default)(),f=(0,r.useRef)(),m=(0,l.useSignalKPaths)(S),g=m["steering.rudderAngle"]??0,x=Math.abs(m["navigation.speedThroughWater"]??m["navigation.speedOverGround"]??0),M=m["propulsion.0.transmission.gear"]??m["propulsion.main.transmission.gear"]??m["propulsion.port.transmission.gear"],w=-1===M||"string"==typeof M&&M.trim().toLowerCase().startsWith("rev"),j=m["navigation.headingTrue"]??m["navigation.courseOverGroundTrue"],I=m["environment.current"],A=m["environment.wind.speedTrue"],G=m["environment.wind.angleTrueWater"],{path:R,noDrift:W}=(0,r.useMemo)(()=>{let e=w?-x:x,t=I&&Number.isFinite(j)?{set:(0,O.wrapPi)((I.setTrue??0)-j),drift:I.drift??0}:null,r=Number.isFinite(A)&&Number.isFinite(G)?{angle:G,speed:A}:null,n=(w?1:-1)*5.4,o=([e,t])=>[.5*e,(t+n)*.5];return{path:P({rudder:g,speed:e,seconds:20,current:t,wind:r}).map(o),noDrift:P({rudder:g,speed:e,seconds:20}).map(o)}},[g,x,w,j,I,A,G]);return(0,t.jsxs)(r.Suspense,{fallback:(0,t.jsx)(i.Html,{center:!0,children:"Loading..."}),children:[(0,t.jsx)(o.PerspectiveCamera,{makeDefault:!0,fov:50,near:1,far:1e3,position:[0,30,12]}),(0,t.jsx)(n.OrbitControls,{target:[0,-3,-2],enableZoom:!0,enableRotate:!0,maxPolarAngle:Math.PI/2.4,minPolarAngle:0}),(0,t.jsx)(s.default,{fogNear:120,fogFar:400}),(0,t.jsxs)("group",{position:[0,-3,0],children:[(0,t.jsx)(u.default,{}),(0,t.jsx)(b.default,{scale:.5}),(0,t.jsx)(a.default,{position:[0,0,0],scale:[.5,.5,.5],ref:f,showSail:!1,onUpdateInfoPanel:e}),(0,t.jsx)(y,{points:R,width:1.95,color:h,glow:c.routeGlow}),(0,t.jsx)(T.Line,{points:W.map(([e,t])=>[e,.06,t]),color:c.compassDim,lineWidth:1.5,dashed:!0,dashSize:.6,gapSize:.5}),(0,t.jsx)(p.default,{outerRadius:5}),(0,t.jsx)(v,{outerRadius:5})]})]})}],35235)},27404,function(e){e.n(e.i(35235))},76247,37369,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(43216),o=e.i(83646),i=e.i(78461);let a={type:"bow",side:"starboard",pose:null,source:"virtual"},s=new Set,u=()=>a,l=e=>{a={...a,...e},s.forEach(e=>e())},d=e=>(s.add(e),()=>s.delete(e)),p=()=>(0,r.useSyncExternalStore)(d,u,u),c=(e,t,r=a.type,n=22)=>{l({type:r,pose:{x:e.x+Math.sin(t)*n,y:e.y+Math.cos(t)*n,heading:"stern"===r?t+Math.PI:t},source:"virtual"})};e.s(["BERTH_TYPES",0,["bow","stern","side","buoy"],"getBerth",0,u,"placeVirtualBerth",0,c,"setBerth",0,l,"useBerth",0,p],37369);let h={length:10.8,beam:3.9},f=h.length/2,m=h.beam/2,g=({size:e,position:r,color:n,opacity:o=1})=>(0,t.jsxs)("mesh",{position:r,children:[(0,t.jsx)("boxGeometry",{args:e}),(0,t.jsx)("meshLambertMaterial",{color:n,transparent:o<1,opacity:o})]}),v=({position:e,rotation:r=0,color:n,length:o=4})=>(0,t.jsxs)("group",{position:e,rotation:[0,r,0],children:[(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.07,o/2-.6],children:[(0,t.jsx)("planeGeometry",{args:[.7,o-1.2]}),(0,t.jsx)("meshBasicMaterial",{color:n,transparent:!0,opacity:.85,depthWrite:!1})]}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.07,-.6],children:[(0,t.jsx)("circleGeometry",{args:[1.2,3,Math.PI/2]}),(0,t.jsx)("meshBasicMaterial",{color:n,transparent:!0,opacity:.85,depthWrite:!1})]})]}),x=({type:e,side:o,colors:i})=>{let a,s=(0,r.useMemo)(()=>(()=>{let e=-f+3.5,t=[[-m,f],[m,f],[m,e]];for(let r=1;r<=8;r++){let n=r/8;t.push([m*(1-n)**1.6,e-(e+f)*Math.sin(n*Math.PI/2)])}for(let r=7;r>=0;r--){let n=r/8;t.push([-m*(1-n)**1.6,e-(e+f)*Math.sin(n*Math.PI/2)])}return t.push([-m,f]),t.map(([e,t])=>[e,.06,t])})(),[]),u="port"===o?-1:1;return(0,t.jsxs)("group",{children:[(0,t.jsx)(n.Line,{points:s,color:i.target,lineWidth:2.5,dashed:!0,dashSize:.8,gapSize:.5}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.04,.3],children:[(0,t.jsx)("planeGeometry",{args:[.9*h.beam,h.length-1.6]}),(0,t.jsx)("meshBasicMaterial",{color:i.target,transparent:!0,opacity:.12,depthWrite:!1})]}),("bow"===e||"stern"===e)&&(a="bow"===e?-1:1,(0,t.jsxs)("group",{children:[(0,t.jsx)(g,{size:[32,.35,2.2],position:[0,.17,a*(f+.45+1.1)],color:i.pontoon}),(0,t.jsx)(g,{size:[.8,.3,9],position:[m+.45+.4,.15,a*(f-4.5+.45)],color:i.pontoon}),(0,t.jsx)(g,{size:[.95*h.beam,1,.95*h.length],position:[-(h.beam+.9),.5,0],color:i.neighbour,opacity:.45}),(0,t.jsx)(v,{position:[0,0,-a*(f+7)],rotation:"bow"===e?0:Math.PI,color:i.target})]})),"side"===e&&(0,t.jsxs)("group",{children:[(0,t.jsx)(g,{size:[2.4,.35,26],position:[u*(m+.45+1.2),.17,0],color:i.pontoon}),(0,t.jsx)(v,{position:[-(2.5*u),0,f+6],rotation:.25*u,color:i.target})]}),"buoy"===e&&(0,t.jsxs)("group",{children:[(0,t.jsxs)("mesh",{position:[0,.5,-(f+2.5)],children:[(0,t.jsx)("sphereGeometry",{args:[.6,20,14]}),(0,t.jsx)("meshLambertMaterial",{color:i.buoy})]}),(0,t.jsx)(n.Line,{points:[[0,.3,-(f+2.5)],[0,.3,-f]],color:i.pontoon,lineWidth:2}),(0,t.jsx)(v,{position:[0,0,f+6],color:i.target})]})]})};e.s(["BOAT",0,h,"default",0,({scale:e=.5})=>{let{scene:n,accent:a}=(0,o.default)(),{heading:s,offset:l,hasFix:d,hasHeading:h}=(0,i.default)(),f=p();(0,r.useEffect)(()=>{d&&h&&!u().pose&&c(l,s)},[l,s,d,h]);let m=(0,r.useMemo)(()=>({target:a,pontoon:n.rigging,neighbour:n.vessel,buoy:n.target}),[n,a]);if(!f.pose)return null;let{x:g,y:v,heading:M}=f.pose;return(0,t.jsx)("group",{rotation:[0,s,0],children:(0,t.jsx)("group",{position:[(g-l.x)*e,0,-(v-l.y)*e],rotation:[0,-M,0],scale:[e,e,e],children:(0,t.jsx)(x,{type:f.type,side:f.side,colors:m})})})}],76247)},32189,(e,t,r)=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},65156,(e,t,r)=>{"use strict";var n=e.r(32189);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},57384,(e,t,r)=>{e.i(47167),t.exports=e.r(65156)()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,9229,e=>{"use strict";var t=e.i(43476),i=e.i(11426),l=e.i(71645),n=e.i(85709);e.i(85269);var s=e.i(22831),a=e.i(95430);let o={BACKGROUND:"bg-oGreen",TEXT:"text-oGreen"},r={BACKGROUND:"bg-oYellow",TEXT:"text-oYellow"};e.s(["default",0,()=>{let{t:e}=(0,s.useTranslation)(),[u,c]=(0,l.useState)(240),m=(0,l.useMemo)(()=>["environment.tide.heightNow","environment.tide.heightHigh","environment.tide.heightLow","environment.tide.timeLow","environment.tide.timeHigh","environment.tide.coeffNow"],[]),d=(0,n.useSignalKPaths)(m),{tideData:h}=(0,i.useTide)(),g=(0,l.useCallback)(e=>{if(!e)return null;if("string"==typeof e&&(e.includes("T")||e.includes("-"))){let t=new Date(e);return isNaN(t.getTime())?null:t}if("string"==typeof e){let t=e.split(":").map(Number);if(t.length<2)return null;let i=(0,a.vesselNow)();return i.setHours(t[0],t[1],0,0),i}return null},[]),p=(0,l.useCallback)(e=>{if(!e)return null;if("string"==typeof e&&(e.includes("T")||e.includes("-"))){let t=new Date(e);if(!isNaN(t.getTime()))return t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1})}return e},[]),f=(0,l.useCallback)((e,t)=>{let i=g(t),l=g(e);return!!i&&!!l&&i.getTime()<l.getTime()},[g]),x=(0,l.useCallback)((e,t,i)=>i<=t||!e?0:Math.min(100,Math.max(0,(e-t)/(i-t)*100)),[]);(0,l.useEffect)(()=>{let e=()=>{let e=window.innerHeight;c(e<640?Math.min(.25*e,240):Math.min(.35*e,240))};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let{level:v,high:b,low:N,timeLow:w,timeHigh:T,coefficient:y,isRising:j}=(0,l.useMemo)(()=>{let e=d["environment.tide.heightNow"]??h?.level??null,t=d["environment.tide.heightHigh"]??h?.high??null,i=d["environment.tide.heightLow"]??h?.low??null,l=d["environment.tide.timeLow"]??h?.timeLow??null,n=d["environment.tide.timeHigh"]??h?.timeHigh??null,s=d["environment.tide.coeffNow"]??h?.coefficient??null;return[e,t,i,l,n].every(e=>null!=e)?{level:e,high:t,low:i,timeLow:l,timeHigh:n,coefficient:s,isRising:f(l,n)}:{level:null,high:null,low:null,timeLow:null,timeHigh:null,coefficient:null,isRising:null}},[d,h,f]),$="text-hud-main",k=j?o:r,C=(0,l.useMemo)(()=>x(v,N,b),[v,N,b,x]);return null===v||null===b||null===N?null:(0,t.jsxs)("div",{className:"flex flex-col items-center group p-3 transition-all duration-300",children:[(0,t.jsx)("div",{className:`text-caption font-semibold uppercase tracking-[0.2em] mb-1 opacity-40 group-hover:opacity-100 transition-opacity ${$}`,children:e("indicators.tide")}),(0,t.jsxs)("div",{className:`text-caption font-semibold uppercase tracking-widest mb-4 ${$} flex items-center gap-1.5 opacity-60`,children:[(0,t.jsx)("span",{className:"text-oBlue",children:p(T)}),(0,t.jsx)("span",{className:`inline-block transform ${!j&&"rotate-180"} ${k.TEXT} text-caption`,children:"▲"}),null!=y&&(0,t.jsxs)("span",{className:"text-hud-muted",children:["C",y]})]}),(0,t.jsxs)("div",{className:"relative flex flex-col w-12",style:{height:u},children:[(0,t.jsx)("div",{className:"absolute left-0 top-0 w-1.5 h-full bg-hud-elevated rounded-full overflow-hidden",children:(0,t.jsx)("div",{role:"progressbar",className:`${k.BACKGROUND} w-full rounded-full transition-all duration-1000 ease-in-out absolute bottom-0 left-0`,"aria-valuenow":C,"aria-valuemin":"0","aria-valuemax":"100","aria-label":`Tide level: ${v.toFixed(2)} meters`,style:{height:`${C}%`}})}),(0,t.jsxs)("div",{className:"ml-4 h-full relative",children:[(0,t.jsxs)("span",{className:`absolute ${$} text-caption font-semibold uppercase tracking-tighter opacity-30`,style:{top:"0%"},children:[Number(b).toFixed(1),"m"]}),C>10&&C<90&&(0,t.jsxs)("div",{className:"absolute transition-all duration-500 flex items-center space-x-1",style:{bottom:`${C}%`,transform:"translateY(50%)"},children:[(0,t.jsx)("div",{className:`w-2 h-[1px] ${k.BACKGROUND} opacity-50`}),(0,t.jsxs)("span",{className:`${$} text-caption font-semibold tracking-tight`,children:[v.toFixed(2),"m"]})]}),(0,t.jsxs)("span",{className:`absolute ${$} text-caption font-semibold uppercase tracking-tighter opacity-30`,style:{bottom:"0%"},children:[Number(N).toFixed(1),"m"]})]})]}),(0,t.jsx)("div",{className:`text-caption font-semibold uppercase tracking-widest mt-4 opacity-40 ${$}`,children:p(w)})]})}])},58166,function(e){e.n(e.i(9229))}]);
|