ocearo-ui 0.1.13 → 0.1.15
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.md +4 -0
- package/_next/static/chunks/0f8af13e.a3c5ee19dacc5d8a.js +158 -0
- package/_next/static/chunks/1268.5bf414e7f9ec61db.js +1 -0
- package/_next/static/chunks/1909.df96cdfa30c5e1a8.js +1 -0
- package/_next/static/chunks/2012.3c05163686cc3992.js +1 -0
- package/_next/static/chunks/2117-56c2fb7501b81a48.js +2 -0
- package/_next/static/chunks/2197.03c63df4706ac55a.js +1 -0
- package/_next/static/chunks/2274.20f7a66d87bbe5ba.js +1 -0
- package/_next/static/chunks/2353.0703bc2167f53e87.js +1 -0
- package/_next/static/chunks/2591.86dc5c0cabce74d9.js +1 -0
- package/_next/static/chunks/2687.03575a688467298f.js +26 -0
- package/_next/static/chunks/2936.32b491d885b0a1fa.js +1 -0
- package/_next/static/chunks/2967.b78077975c0ab30f.js +1 -0
- package/_next/static/chunks/2975.38e51d12034b0e56.js +1 -0
- package/_next/static/chunks/3059.7f8277e00847ad2a.js +1 -0
- package/_next/static/chunks/3145.636d8a0b59460f06.js +1 -0
- package/_next/static/chunks/3746-5b56cb222d7759f3.js +1 -0
- package/_next/static/chunks/4203.53016264f2cd3444.js +114 -0
- package/_next/static/chunks/5221.21b657b6a08aa489.js +1 -0
- package/_next/static/chunks/5322.ea4bebffcd8aa1cc.js +1 -0
- package/_next/static/chunks/5487.0ca3e1f29bec024a.js +1 -0
- package/_next/static/chunks/5751.f0376bcce7ec1e3d.js +1 -0
- package/_next/static/chunks/6108.ed2af8245ea73350.js +1 -0
- package/_next/static/chunks/6154.08319169fda8a96c.js +1 -0
- package/_next/static/chunks/6412.751c9a217112d729.js +1 -0
- package/_next/static/chunks/6496.d879aa3456fbe689.js +1 -0
- package/_next/static/chunks/6728.df40db4a2492c80a.js +1 -0
- package/_next/static/chunks/6949.54ab1a3c1db751ad.js +1 -0
- package/_next/static/chunks/7188.dd19efec20eb1ffd.js +1 -0
- package/_next/static/chunks/7252.9960bb9dcab56410.js +1 -0
- package/_next/static/chunks/767.c121402a31d61693.js +38 -0
- package/_next/static/chunks/{79.c90ea1de476d64c2.js → 8079.cd1d32892d355219.js} +1 -1
- package/_next/static/chunks/8341.a4bbd4563a858c62.js +1 -0
- package/_next/static/chunks/8610.a69a39b4e8210145.js +1 -0
- package/_next/static/chunks/870fdd6f.9cc7f4d7d53d0ee1.js +1 -0
- package/_next/static/chunks/9073.8e46e378467c398c.js +1 -0
- package/_next/static/chunks/9138.615379e543873c20.js +1 -0
- package/_next/static/chunks/{250.b26c37701919cf5c.js → 9250.e4a1a448563bce56.js} +3 -3
- package/_next/static/chunks/9483.c52ef3c126f89d4a.js +1 -0
- package/_next/static/chunks/9677.e29a54e257683481.js +1 -0
- package/_next/static/chunks/app/_not-found/page-02dd9834e02ff180.js +1 -0
- package/_next/static/chunks/app/layout-df29b07cc8d7ff8a.js +1 -0
- package/_next/static/chunks/app/page-8193fd4d93865082.js +1 -0
- package/_next/static/chunks/{b536a0f1.0563944ec53282b3.js → b536a0f1.7481d3b6ed8a124b.js} +1 -1
- package/_next/static/chunks/{bd904a5c-fce155daf9e9ba55.js → bd904a5c-ee5c73978aa69cb5.js} +1 -1
- package/_next/static/chunks/fd9d1056-c7da0d4e0db639a1.js +1 -0
- package/_next/static/chunks/framework-dbde1fe7fb0f4567.js +1 -0
- package/_next/static/chunks/main-app-01921a295932d28c.js +1 -0
- package/_next/static/chunks/main-de6ed997e06652b4.js +1 -0
- package/_next/static/chunks/pages/_app-78ddf957b9a9b996.js +1 -0
- package/_next/static/chunks/pages/_error-af28e299b63bd305.js +1 -0
- package/_next/static/chunks/webpack-fe2d60e504e1ce3b.js +1 -0
- package/_next/static/css/9c269b560e97b443.css +3 -0
- package/_next/static/jLQbcwqenN1fr_0feCPZa/_buildManifest.js +1 -0
- package/boats/boats.json +5 -0
- package/index.html +1 -1
- package/index.txt +4 -4
- package/{ocearo-ui-0.1.13.tgz → ocearo-ui-0.1.15.tgz} +0 -0
- package/package.json +2 -2
- package/_next/static/chunks/0f8af13e.6652bd734d04208b.js +0 -158
- package/_next/static/chunks/117-35a8eb6f9457406b.js +0 -2
- package/_next/static/chunks/12.a4273af9b82657f2.js +0 -1
- package/_next/static/chunks/138.b9389f70773e44e6.js +0 -1
- package/_next/static/chunks/145.9caac3d586b84999.js +0 -1
- package/_next/static/chunks/154.4e0902ce8b0f7ad1.js +0 -1
- package/_next/static/chunks/188.1839b14fedef7718.js +0 -1
- package/_next/static/chunks/197.bcdd8d0debcb7089.js +0 -1
- package/_next/static/chunks/221.a545399d0aaf207f.js +0 -1
- package/_next/static/chunks/226.8e9a3229837caa21.js +0 -151
- package/_next/static/chunks/252.d7cc856ebccc7381.js +0 -1
- package/_next/static/chunks/268.8ed821c518bf7977.js +0 -1
- package/_next/static/chunks/274.f21dd1bea1190823.js +0 -1
- package/_next/static/chunks/353.c2bc481b7d81054f.js +0 -1
- package/_next/static/chunks/412.47bfcc49cfe552a4.js +0 -1
- package/_next/static/chunks/413.69878f8910eb07d8.js +0 -1
- package/_next/static/chunks/487.c2062e37ef29da57.js +0 -1
- package/_next/static/chunks/496.c440e137e5877fb7.js +0 -1
- package/_next/static/chunks/59.c2dfec0c5e965cb5.js +0 -1
- package/_next/static/chunks/610.44fac6b8e6928564.js +0 -1
- package/_next/static/chunks/677.b3c43a3f32b247f4.js +0 -1
- package/_next/static/chunks/687.798c6b33d9165736.js +0 -26
- package/_next/static/chunks/728.3987afab39b00f4e.js +0 -1
- package/_next/static/chunks/73.a6b96572b40c5751.js +0 -1
- package/_next/static/chunks/746-f1a5b23db9004a46.js +0 -1
- package/_next/static/chunks/751.a180d553d77914d3.js +0 -1
- package/_next/static/chunks/870fdd6f.5b9af4fe6d08a9fb.js +0 -1
- package/_next/static/chunks/909.1e4c462123ae73e4.js +0 -1
- package/_next/static/chunks/936.e779b5632883831e.js +0 -1
- package/_next/static/chunks/949.e273523eaad35cc5.js +0 -1
- package/_next/static/chunks/967.83ea5cd9e6c9bb4c.js +0 -1
- package/_next/static/chunks/975.8821fdf115b619c5.js +0 -1
- package/_next/static/chunks/app/_not-found/page-1beaea75cf9b93d1.js +0 -1
- package/_next/static/chunks/app/layout-5065440b6db19cf5.js +0 -1
- package/_next/static/chunks/app/page-32b46c3e73a86694.js +0 -1
- package/_next/static/chunks/fd9d1056-50d0a3499460e502.js +0 -1
- package/_next/static/chunks/framework-cf2d8f6f8d843863.js +0 -1
- package/_next/static/chunks/main-8dbe8bddfa3a978c.js +0 -1
- package/_next/static/chunks/main-app-ed02033afba81a43.js +0 -1
- package/_next/static/chunks/pages/_app-15e2daefa259f0b5.js +0 -1
- package/_next/static/chunks/pages/_error-28b803cb2479b966.js +0 -1
- package/_next/static/chunks/webpack-9a92f476391a516d.js +0 -1
- package/_next/static/css/ac42e9cb9892c616.css +0 -3
- package/_next/static/d0q-Qivu1-sUFcVbdHKxk/_buildManifest.js +0 -1
- /package/_next/static/{d0q-Qivu1-sUFcVbdHKxk → jLQbcwqenN1fr_0feCPZa}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4203],{5550:function(e,t,r){let n;r.d(t,{qA:function(){return eU}});var a=r(1119),i=r(2265),s=r(1276),o=r(2079),l=r(9074);let A=e=>e&&e.isCubeTexture;class u extends o.Kj0{constructor(e,t){var r,n;let a=A(e),i=Math.floor(Math.log2((null!=(n=a?null==(r=e.image[0])?void 0:r.width:e.image.width)?n:1024)/4)),s=Math.pow(2,i),u=`
|
|
2
|
+
varying vec3 vWorldPosition;
|
|
3
|
+
void main()
|
|
4
|
+
{
|
|
5
|
+
vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
|
|
6
|
+
vWorldPosition = worldPosition.xyz;
|
|
7
|
+
|
|
8
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
9
|
+
}
|
|
10
|
+
`,c=[a?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/(3*Math.max(s,112))}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*s)}`,`#define CUBEUV_MAX_MIP ${i}.0`].join("\n")+`
|
|
11
|
+
#define ENVMAP_TYPE_CUBE_UV
|
|
12
|
+
varying vec3 vWorldPosition;
|
|
13
|
+
uniform float radius;
|
|
14
|
+
uniform float height;
|
|
15
|
+
uniform float angle;
|
|
16
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
17
|
+
uniform samplerCube map;
|
|
18
|
+
#else
|
|
19
|
+
uniform sampler2D map;
|
|
20
|
+
#endif
|
|
21
|
+
// From: https://www.shadertoy.com/view/4tsBD7
|
|
22
|
+
float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
|
|
23
|
+
{
|
|
24
|
+
float d = dot ( rd, n );
|
|
25
|
+
|
|
26
|
+
if( d > 0.0 ) { return 1e6; }
|
|
27
|
+
|
|
28
|
+
vec3 o = ro - c;
|
|
29
|
+
float t = - dot( n, o ) / d;
|
|
30
|
+
vec3 q = o + rd * t;
|
|
31
|
+
|
|
32
|
+
return ( dot( q, q ) < r * r ) ? t : 1e6;
|
|
33
|
+
}
|
|
34
|
+
// From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
|
|
35
|
+
float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
|
|
36
|
+
{
|
|
37
|
+
vec3 oc = ro - ce;
|
|
38
|
+
float b = dot( oc, rd );
|
|
39
|
+
float c = dot( oc, oc ) - ra * ra;
|
|
40
|
+
float h = b * b - c;
|
|
41
|
+
|
|
42
|
+
if( h < 0.0 ) { return -1.0; }
|
|
43
|
+
|
|
44
|
+
h = sqrt( h );
|
|
45
|
+
|
|
46
|
+
return - b + h;
|
|
47
|
+
}
|
|
48
|
+
vec3 project()
|
|
49
|
+
{
|
|
50
|
+
vec3 p = normalize( vWorldPosition );
|
|
51
|
+
vec3 camPos = cameraPosition;
|
|
52
|
+
camPos.y -= height;
|
|
53
|
+
float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
|
|
54
|
+
if( intersection > 0.0 ) {
|
|
55
|
+
|
|
56
|
+
vec3 h = vec3( 0.0, - height, 0.0 );
|
|
57
|
+
float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
|
|
58
|
+
p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
|
|
59
|
+
} else {
|
|
60
|
+
p = vec3( 0.0, 1.0, 0.0 );
|
|
61
|
+
}
|
|
62
|
+
return p;
|
|
63
|
+
}
|
|
64
|
+
#include <common>
|
|
65
|
+
#include <cube_uv_reflection_fragment>
|
|
66
|
+
void main()
|
|
67
|
+
{
|
|
68
|
+
vec3 projectedWorldPosition = project();
|
|
69
|
+
|
|
70
|
+
#ifdef ENVMAP_TYPE_CUBE
|
|
71
|
+
vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
|
|
72
|
+
#else
|
|
73
|
+
vec3 direction = normalize( projectedWorldPosition );
|
|
74
|
+
vec2 uv = equirectUv( direction );
|
|
75
|
+
vec3 outcolor = texture2D( map, uv ).rgb;
|
|
76
|
+
#endif
|
|
77
|
+
gl_FragColor = vec4( outcolor, 1.0 );
|
|
78
|
+
#include <tonemapping_fragment>
|
|
79
|
+
#include <${l.i>=154?"colorspace_fragment":"encodings_fragment"}>
|
|
80
|
+
}
|
|
81
|
+
`;super(new o.cJO(1,16),new o.jyz({uniforms:{map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}},fragmentShader:c,vertexShader:u,side:o.ehD}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}class c extends o.yxD{constructor(e){super(e),this.type=o.cLu}parse(e){let t,r,n;let a=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},i=function(e,t,r){t=t||1024;let n=e.pos,a=-1,i=0,s="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));for(;0>(a=o.indexOf("\n"))&&i<t&&n<e.byteLength;)s+=o,i+=o.length,n+=128,o+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));return -1<a&&(!1!==r&&(e.pos+=i+a+1),s+o.slice(0,a))},s=new Uint8Array(e);s.pos=0;let l=function(e){let t,r;let n=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,s=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,o=/^\s*FORMAT=(\S+)\s*$/,l=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,A={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=i(e))||a(1,"no header found"),(r=t.match(/^#\?(\S+)/))||a(3,"bad initial token"),A.valid|=1,A.programtype=r[1],A.string+=t+"\n";!1!==(t=i(e));){if(A.string+=t+"\n","#"===t.charAt(0)){A.comments+=t+"\n";continue}if((r=t.match(n))&&(A.gamma=parseFloat(r[1])),(r=t.match(s))&&(A.exposure=parseFloat(r[1])),(r=t.match(o))&&(A.valid|=2,A.format=r[1]),(r=t.match(l))&&(A.valid|=4,A.height=parseInt(r[1],10),A.width=parseInt(r[2],10)),2&A.valid&&4&A.valid)break}return 2&A.valid||a(3,"missing format specifier"),4&A.valid||a(3,"missing image size specifier"),A}(s),A=l.width,u=l.height,c=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&a(3,"wrong scanline width");let n=new Uint8Array(4*t*r);n.length||a(4,"unable to allocate buffer space");let i=0,s=0,o=4*t,l=new Uint8Array(4),A=new Uint8Array(o),u=r;for(;u>0&&s<e.byteLength;){s+4>e.byteLength&&a(1),l[0]=e[s++],l[1]=e[s++],l[2]=e[s++],l[3]=e[s++],(2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=t)&&a(3,"bad rgbe scanline format");let r=0,c;for(;r<o&&s<e.byteLength;){let t=(c=e[s++])>128;if(t&&(c-=128),(0===c||r+c>o)&&a(3,"bad scanline data"),t){let t=e[s++];for(let e=0;e<c;e++)A[r++]=t}else A.set(e.subarray(s,s+c),r),r+=c,s+=c}for(let e=0;e<t;e++){let r=0;n[i]=A[e+r],r+=t,n[i+1]=A[e+r],r+=t,n[i+2]=A[e+r],r+=t,n[i+3]=A[e+r],i+=4}u--}return n}(s.subarray(s.pos),A,u);switch(this.type){case o.VzW:let B=new Float32Array(4*(n=c.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let a=Math.pow(2,e[t+3]-128)/255;r[n+0]=e[t+0]*a,r[n+1]=e[t+1]*a,r[n+2]=e[t+2]*a,r[n+3]=1}(c,4*e,B,4*e);t=B,r=o.VzW;break;case o.cLu:let d=new Uint16Array(4*(n=c.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let a=Math.pow(2,e[t+3]-128)/255;r[n+0]=o.A5E.toHalfFloat(Math.min(e[t+0]*a,65504)),r[n+1]=o.A5E.toHalfFloat(Math.min(e[t+1]*a,65504)),r[n+2]=o.A5E.toHalfFloat(Math.min(e[t+2]*a,65504)),r[n+3]=o.A5E.toHalfFloat(1)}(c,4*e,d,4*e);t=d,r=o.cLu;break;default:throw Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:A,height:u,data:t,header:l.string,gamma:l.gamma,exposure:l.exposure,type:r}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){switch(e.type){case o.VzW:case o.cLu:"colorSpace"in e?e.colorSpace="srgb-linear":e.encoding=3e3,e.minFilter=o.wem,e.magFilter=o.wem,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,r)},r,n)}}var B={},d=Uint8Array,h=Uint16Array,f=Uint32Array,C=new d([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),p=new d([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),m=new d([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),g=function(e,t){for(var r=new h(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var a=new f(r[30]),n=1;n<30;++n)for(var i=r[n];i<r[n+1];++i)a[i]=i-r[n]<<5|n;return[r,a]},E=g(C,2),M=E[0],F=E[1];M[28]=258,F[258]=28;for(var v=g(p,0),I=v[0],G=v[1],R=new h(32768),D=0;D<32768;++D){var H=(43690&D)>>>1|(21845&D)<<1;H=(61680&(H=(52428&H)>>>2|(13107&H)<<2))>>>4|(3855&H)<<4,R[D]=((65280&H)>>>8|(255&H)<<8)>>>1}for(var y=function(e,t,r){for(var n,a=e.length,i=0,s=new h(t);i<a;++i)++s[e[i]-1];var o=new h(t);for(i=0;i<t;++i)o[i]=o[i-1]+s[i-1]<<1;if(r){n=new h(1<<t);var l=15-t;for(i=0;i<a;++i)if(e[i])for(var A=i<<4|e[i],u=t-e[i],c=o[e[i]-1]++<<u,B=c|(1<<u)-1;c<=B;++c)n[R[c]>>>l]=A}else for(i=0,n=new h(a);i<a;++i)e[i]&&(n[i]=R[o[e[i]-1]++]>>>15-e[i]);return n},T=new d(288),D=0;D<144;++D)T[D]=8;for(var D=144;D<256;++D)T[D]=9;for(var D=256;D<280;++D)T[D]=7;for(var D=280;D<288;++D)T[D]=8;for(var w=new d(32),D=0;D<32;++D)w[D]=5;var b=y(T,9,1),J=y(w,5,1),x=function(e){for(var t=e[0],r=1;r<e.length;++r)e[r]>t&&(t=e[r]);return t},U=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},S=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},L=function(e){return(e/8|0)+(7&e&&1)},O=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var n=new(e instanceof h?h:e instanceof f?f:d)(r-t);return n.set(e.subarray(t,r)),n},P=function(e,t,r){var n=e.length;if(!n||r&&!r.l&&n<5)return t||new d(0);var a=!t||r,i=!r||r.i;r||(r={}),t||(t=new d(3*n));var s=function(e){var r=t.length;if(e>r){var n=new d(Math.max(2*r,e));n.set(t),t=n}},o=r.f||0,l=r.p||0,A=r.b||0,u=r.l,c=r.d,B=r.m,h=r.n,f=8*n;do{if(!u){r.f=o=U(e,l,1);var g=U(e,l+1,3);if(l+=3,g){if(1==g)u=b,c=J,B=9,h=5;else if(2==g){var E=U(e,l,31)+257,F=U(e,l+10,15)+4,v=E+U(e,l+5,31)+1;l+=14;for(var G=new d(v),R=new d(19),D=0;D<F;++D)R[m[D]]=U(e,l+3*D,7);l+=3*F;for(var H=x(R),T=(1<<H)-1,w=y(R,H,1),D=0;D<v;){var P=w[U(e,l,T)];l+=15&P;var _=P>>>4;if(_<16)G[D++]=_;else{var K=0,N=0;for(16==_?(N=3+U(e,l,3),l+=2,K=G[D-1]):17==_?(N=3+U(e,l,7),l+=3):18==_&&(N=11+U(e,l,127),l+=7);N--;)G[D++]=K}}var k=G.subarray(0,E),Q=G.subarray(E);B=x(k),h=x(Q),u=y(k,B,1),c=y(Q,h,1)}else throw"invalid block type"}else{var _=L(l)+4,X=e[_-4]|e[_-3]<<8,j=_+X;if(j>n){if(i)throw"unexpected EOF";break}a&&s(A+X),t.set(e.subarray(_,j),A),r.b=A+=X,r.p=l=8*j;continue}if(l>f){if(i)throw"unexpected EOF";break}}a&&s(A+131072);for(var Y=(1<<B)-1,W=(1<<h)-1,Z=l;;Z=l){var K=u[S(e,l)&Y],V=K>>>4;if((l+=15&K)>f){if(i)throw"unexpected EOF";break}if(!K)throw"invalid length/literal";if(V<256)t[A++]=V;else if(256==V){Z=l,u=null;break}else{var z=V-254;if(V>264){var D=V-257,q=C[D];z=U(e,l,(1<<q)-1)+M[D],l+=q}var $=c[S(e,l)&W],ee=$>>>4;if(!$)throw"invalid distance";l+=15&$;var Q=I[ee];if(ee>3){var q=p[ee];Q+=S(e,l)&(1<<q)-1,l+=q}if(l>f){if(i)throw"unexpected EOF";break}a&&s(A+131072);for(var et=A+z;A<et;A+=4)t[A]=t[A-Q],t[A+1]=t[A+1-Q],t[A+2]=t[A+2-Q],t[A+3]=t[A+3-Q];A=et}}r.l=u,r.p=Z,r.b=A,u&&(o=1,r.m=B,r.d=c,r.n=h)}while(!o);return A==t.length?t:O(t,0,A)},_=function(e,t,r){r<<=7&t;var n=t/8|0;e[n]|=r,e[n+1]|=r>>>8},K=function(e,t,r){r<<=7&t;var n=t/8|0;e[n]|=r,e[n+1]|=r>>>8,e[n+2]|=r>>>16},N=function(e,t){for(var r=[],n=0;n<e.length;++n)e[n]&&r.push({s:n,f:e[n]});var a=r.length,i=r.slice();if(!a)return[Z,0];if(1==a){var s=new d(r[0].s+1);return s[r[0].s]=1,[s,1]}r.sort(function(e,t){return e.f-t.f}),r.push({s:-1,f:25001});var o=r[0],l=r[1],A=0,u=1,c=2;for(r[0]={s:-1,f:o.f+l.f,l:o,r:l};u!=a-1;)o=r[r[A].f<r[c].f?A++:c++],l=r[A!=u&&r[A].f<r[c].f?A++:c++],r[u++]={s:-1,f:o.f+l.f,l:o,r:l};for(var B=i[0].s,n=1;n<a;++n)i[n].s>B&&(B=i[n].s);var f=new h(B+1),C=k(r[u-1],f,0);if(C>t){var n=0,p=0,m=C-t,g=1<<m;for(i.sort(function(e,t){return f[t.s]-f[e.s]||e.f-t.f});n<a;++n){var E=i[n].s;if(f[E]>t)p+=g-(1<<C-f[E]),f[E]=t;else break}for(p>>>=m;p>0;){var M=i[n].s;f[M]<t?p-=1<<t-f[M]++-1:++n}for(;n>=0&&p;--n){var F=i[n].s;f[F]==t&&(--f[F],++p)}C=t}return[new d(f),C]},k=function(e,t,r){return -1==e.s?Math.max(k(e.l,t,r+1),k(e.r,t,r+1)):t[e.s]=r},Q=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new h(++t),n=0,a=e[0],i=1,s=function(e){r[n++]=e},o=1;o<=t;++o)if(e[o]==a&&o!=t)++i;else{if(!a&&i>2){for(;i>138;i-=138)s(32754);i>2&&(s(i>10?i-11<<5|28690:i-3<<5|12305),i=0)}else if(i>3){for(s(a),--i;i>6;i-=6)s(8304);i>2&&(s(i-3<<5|8208),i=0)}for(;i--;)s(a);i=1,a=e[o]}return[r.subarray(0,n),t]},X=function(e,t){for(var r=0,n=0;n<t.length;++n)r+=e[n]*t[n];return r},j=function(e,t,r){var n=r.length,a=L(t+2);e[a]=255&n,e[a+1]=n>>>8,e[a+2]=255^e[a],e[a+3]=255^e[a+1];for(var i=0;i<n;++i)e[a+i+4]=r[i];return(a+4+n)*8},Y=function(e,t,r,n,a,i,s,o,l,A,u){_(t,u++,r),++a[256];for(var c,B,d,f,g=N(a,15),E=g[0],M=g[1],F=N(i,15),v=F[0],I=F[1],G=Q(E),R=G[0],D=G[1],H=Q(v),b=H[0],J=H[1],x=new h(19),U=0;U<R.length;++U)x[31&R[U]]++;for(var U=0;U<b.length;++U)x[31&b[U]]++;for(var S=N(x,7),L=S[0],O=S[1],P=19;P>4&&!L[m[P-1]];--P);var k=A+5<<3,Y=X(a,T)+X(i,w)+s,W=X(a,E)+X(i,v)+s+14+3*P+X(x,L)+(2*x[16]+3*x[17]+7*x[18]);if(k<=Y&&k<=W)return j(t,u,e.subarray(l,l+A));if(_(t,u,1+(W<Y)),u+=2,W<Y){c=y(E,M,0),B=E,d=y(v,I,0),f=v;var Z=y(L,O,0);_(t,u,D-257),_(t,u+5,J-1),_(t,u+10,P-4),u+=14;for(var U=0;U<P;++U)_(t,u+3*U,L[m[U]]);u+=3*P;for(var V=[R,b],z=0;z<2;++z)for(var q=V[z],U=0;U<q.length;++U){var $=31&q[U];_(t,u,Z[$]),u+=L[$],$>15&&(_(t,u,q[U]>>>5&127),u+=q[U]>>>12)}}else c=null,B=T,d=null,f=w;for(var U=0;U<o;++U)if(n[U]>255){var $=n[U]>>>18&31;K(t,u,c[$+257]),u+=B[$+257],$>7&&(_(t,u,n[U]>>>23&31),u+=C[$]);var ee=31&n[U];K(t,u,d[ee]),u+=f[ee],ee>3&&(K(t,u,n[U]>>>5&8191),u+=p[ee])}else K(t,u,c[n[U]]),u+=B[n[U]];return K(t,u,c[256]),u+B[256]},W=new f([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Z=new d(0),V=function(e){if((15&e[0])!=8||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function z(e,t){return P((V(e),e.subarray(2,-4)),t)}var q="undefined"!=typeof TextDecoder&&new TextDecoder;try{q.decode(Z,{stream:!0})}catch(e){}let $=l.i>=152;class ee extends o.yxD{constructor(e){super(e),this.type=o.cLu}parse(e){let t={l:0,c:0,lc:0};function r(e,r,n,a,i){for(;n<e;)r=r<<8|R(a,i),n+=8;n-=e,t.l=r>>n&(1<<e)-1,t.c=r,t.lc=n}let n=Array(59),a={c:0,lc:0};function i(e,t,r,n){e=e<<8|R(r,n),t+=8,a.c=e,a.lc=t}let s={c:0,lc:0};function l(e,t,r,n,o,l,A,u,c,B){if(e==t){n<8&&(i(r,n,o,A),r=a.c,n=a.lc);var d=r>>(n-=8),d=new Uint8Array([d])[0];if(c.value+d>B)return!1;for(var h=u[c.value-1];d-- >0;)u[c.value++]=h}else{if(!(c.value<B))return!1;u[c.value++]=e}s.c=r,s.lc=n}function A(e){var t=65535&e;return t>32767?t-65536:t}let u={a:0,b:0};function c(e,t){var r=A(e),n=A(t),a=r+(1&n)+(n>>1),i=a-n;u.a=a,u.b=i}function B(e,t){var r=65535&t,n=(65535&e)-(r>>1)&65535;u.a=r+n-32768&65535,u.b=n}function d(e,o,A,u,c,B){var d=A.value,h=G(o,A),f=G(o,A);A.value+=4;var C=G(o,A);if(A.value+=4,h<0||h>=65537||f<0||f>=65537)throw"Something wrong with HUF_ENCSIZE";var p=Array(65537),m=Array(16384);!function(e){for(var t=0;t<16384;t++)e[t]={},e[t].len=0,e[t].lit=0,e[t].p=null}(m);var g=u-(A.value-d);if(!function(e,a,i,s,o,l,A){for(var u=0,c=0;o<=l;o++){if(i.value-i.value>s)return!1;r(6,u,c,e,i);var B=t.l;if(u=t.c,c=t.lc,A[o]=B,63==B){if(i.value-i.value>s)throw"Something wrong with hufUnpackEncTable";r(8,u,c,e,i);var d=t.l+6;if(u=t.c,c=t.lc,o+d>l+1)throw"Something wrong with hufUnpackEncTable";for(;d--;)A[o++]=0;o--}else if(B>=59){var d=B-59+2;if(o+d>l+1)throw"Something wrong with hufUnpackEncTable";for(;d--;)A[o++]=0;o--}}!function(e){for(var t=0;t<=58;++t)n[t]=0;for(var t=0;t<65537;++t)n[e[t]]+=1;for(var r=0,t=58;t>0;--t){var a=r+n[t]>>1;n[t]=r,r=a}for(var t=0;t<65537;++t){var i=e[t];i>0&&(e[t]=i|n[i]++<<6)}}(A)}(e,0,A,g,h,f,p),C>8*(u-(A.value-d)))throw"Something wrong with hufUncompress";!function(e,t,r,n){for(;t<=r;t++){var a=e[t]>>6,i=63&e[t];if(a>>i)throw"Invalid table entry";if(i>14){var s=n[a>>i-14];if(s.len)throw"Invalid table entry";if(s.lit++,s.p){var o=s.p;s.p=Array(s.lit);for(var l=0;l<s.lit-1;++l)s.p[l]=o[l]}else s.p=[,];s.p[s.lit-1]=t}else if(i)for(var A=0,l=1<<14-i;l>0;l--){var s=n[(a<<14-i)+A];if(s.len||s.p)throw"Invalid table entry";s.len=i,s.lit=t,A++}}}(p,h,f,m),function(e,t,r,n,o,A,u,c,B,d){for(var h=0,f=0,C=Math.trunc(o.value+(A+7)/8);o.value<C;)for(i(h,f,r,o),h=a.c,f=a.lc;f>=14;){var p=t[h>>f-14&16383];if(p.len)f-=p.len,l(p.lit,u,h,f,r,n,o,B,d,c),h=s.c,f=s.lc;else{if(!p.p)throw"hufDecode issues";for(m=0;m<p.lit;m++){for(var m,g=63&e[p.p[m]];f<g&&o.value<C;)i(h,f,r,o),h=a.c,f=a.lc;if(f>=g&&e[p.p[m]]>>6==(h>>f-g&(1<<g)-1)){f-=g,l(p.p[m],u,h,f,r,n,o,B,d,c),h=s.c,f=s.lc;break}}if(m==p.lit)throw"hufDecode issues"}}var E=8-A&7;for(h>>=E,f-=E;f>0;){var p=t[h<<14-f&16383];if(p.len)f-=p.len,l(p.lit,u,h,f,r,n,o,B,d,c),h=s.c,f=s.lc;else throw"hufDecode issues"}}(p,m,e,o,A,C,f,B,c,{value:0})}function h(e){for(var t=1;t<e.length;t++){var r=e[t-1]+e[t]-128;e[t]=r}}function f(e,t){for(var r=0,n=Math.floor((e.length+1)/2),a=0,i=e.length-1;!(a>i)&&(t[a++]=e[r++],!(a>i));)t[a++]=e[n++]}function C(e){for(var t=e.byteLength,r=[],n=0,a=new DataView(e);t>0;){var i=a.getInt8(n++);if(i<0){var s=-i;t-=s+1;for(var o=0;o<s;o++)r.push(a.getUint8(n++))}else{var s=i;t-=2;for(var l=a.getUint8(n++),o=0;o<s+1;o++)r.push(l)}}return r}function p(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function m(e){var t=new Uint8Array(C(e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size))),r=new Uint8Array(t.length);return h(t),f(t,r),new DataView(r.buffer)}function g(e){var t=z(e.array.slice(e.offset.value,e.offset.value+e.size)),r=new Uint8Array(t.length);return h(t),f(t,r),new DataView(r.buffer)}function E(e){for(var t=e.viewer,r={value:e.offset.value},n=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),a=new Uint8Array(8192),i=0,s=Array(e.channels),o=0;o<e.channels;o++)s[o]={},s[o].start=i,s[o].end=s[o].start,s[o].nx=e.width,s[o].ny=e.lines,s[o].size=e.type,i+=s[o].nx*s[o].ny*s[o].size;var l=b(t,r),A=b(t,r);if(A>=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=A)for(var o=0;o<A-l+1;o++)a[o+l]=D(t,r);var h=new Uint16Array(65536),f=function(e,t){for(var r=0,n=0;n<65536;++n)(0==n||e[n>>3]&1<<(7&n))&&(t[r++]=n);for(var a=r-1;r<65536;)t[r++]=0;return a}(a,h),C=G(t,r);d(e.array,t,r,C,n,i);for(var o=0;o<e.channels;++o)for(var p=s[o],m=0;m<s[o].size;++m)!function(e,t,r,n,a,i,s){for(var o=s<16384,l=r>a?a:r,A=1;A<=l;)A<<=1;for(A>>=1,d=A,A>>=1;A>=1;){for(var d,h,f,C,p,m=0,g=0+i*(a-d),E=i*A,M=i*d,F=n*A,v=n*d;m<=g;m+=M){for(var I=m,G=m+n*(r-d);I<=G;I+=v){var R=I+F,D=I+E,H=D+F;o?(c(e[I+t],e[D+t]),h=u.a,C=u.b,c(e[R+t],e[H+t]),f=u.a,p=u.b,c(h,f),e[I+t]=u.a,e[R+t]=u.b,c(C,p)):(B(e[I+t],e[D+t]),h=u.a,C=u.b,B(e[R+t],e[H+t]),f=u.a,p=u.b,B(h,f),e[I+t]=u.a,e[R+t]=u.b,B(C,p)),e[D+t]=u.a,e[H+t]=u.b}if(r&A){var D=I+E;o?c(e[I+t],e[D+t]):B(e[I+t],e[D+t]),h=u.a,e[D+t]=u.b,e[I+t]=h}}if(a&A)for(var I=m,G=m+n*(r-d);I<=G;I+=v){var R=I+F;o?c(e[I+t],e[R+t]):B(e[I+t],e[R+t]),h=u.a,e[R+t]=u.b,e[I+t]=h}d=A,A>>=1}}(n,p.start+m,p.nx,p.size,p.ny,p.nx*p.size,f);!function(e,t,r){for(var n=0;n<r;++n)t[n]=e[t[n]]}(h,n,i);for(var g=0,E=new Uint8Array(n.buffer.byteLength),M=0;M<e.lines;M++)for(var F=0;F<e.channels;F++){var p=s[F],v=p.nx*p.size,I=new Uint8Array(n.buffer,2*p.end,2*v);E.set(I,g),g+=2*v,p.end+=v}return new DataView(E.buffer)}function M(e){var t=z(e.array.slice(e.offset.value,e.offset.value+e.size));let r=e.lines*e.channels*e.width,n=1==e.type?new Uint16Array(r):new Uint32Array(r),a=0,i=0,s=[,,,,];for(let r=0;r<e.lines;r++)for(let r=0;r<e.channels;r++){let r=0;switch(e.type){case 1:s[0]=a,s[1]=s[0]+e.width,a=s[1]+e.width;for(let a=0;a<e.width;++a)r+=t[s[0]++]<<8|t[s[1]++],n[i]=r,i++;break;case 2:s[0]=a,s[1]=s[0]+e.width,s[2]=s[1]+e.width,a=s[2]+e.width;for(let a=0;a<e.width;++a)r+=t[s[0]++]<<24|t[s[1]++]<<16|t[s[2]++]<<8,n[i]=r,i++}}return new DataView(n.buffer)}function F(e){var t=e.viewer,r={value:e.offset.value},n=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),a={version:H(t,r),unknownUncompressedSize:H(t,r),unknownCompressedSize:H(t,r),acCompressedSize:H(t,r),dcCompressedSize:H(t,r),rleCompressedSize:H(t,r),rleUncompressedSize:H(t,r),rleRawSize:H(t,r),totalAcUncompressedCount:H(t,r),totalDcUncompressedCount:H(t,r),acCompression:H(t,r)};if(a.version<2)throw"EXRLoader.parse: "+L.compression+" version "+a.version+" is unsupported";for(var i=[],s=b(t,r)-2;s>0;){var l=v(t.buffer,r),A=D(t,r),u=A>>2&3,c=new Int8Array([(A>>4)-1])[0],B=D(t,r);i.push({name:l,index:c,type:B,compression:u}),s-=l.length+3}for(var h=L.channels,f=Array(e.channels),p=0;p<e.channels;++p){var m=f[p]={},E=h[p];m.name=E.name,m.compression=0,m.decoded=!1,m.type=E.pixelType,m.pLinear=E.pLinear,m.width=e.width,m.height=e.lines}for(var M={idx:[,,,]},F=0;F<e.channels;++F)for(var m=f[F],p=0;p<i.length;++p){var I=i[p];m.name==I.name&&(m.compression=I.compression,I.index>=0&&(M.idx[I.index]=F),m.offset=F)}if(a.acCompressedSize>0)switch(a.acCompression){case 0:var G=new Uint16Array(a.totalAcUncompressedCount);d(e.array,t,r,a.acCompressedSize,G,a.totalAcUncompressedCount);break;case 1:var R=e.array.slice(r.value,r.value+a.totalAcUncompressedCount),y=z(R),G=new Uint16Array(y.buffer);r.value+=a.totalAcUncompressedCount}if(a.dcCompressedSize>0){var T=new Uint16Array(g({array:e.array,offset:r,size:a.dcCompressedSize}).buffer);r.value+=a.dcCompressedSize}if(a.rleRawSize>0){var R=e.array.slice(r.value,r.value+a.rleCompressedSize),y=z(R),J=C(y.buffer);r.value+=a.rleCompressedSize}for(var x=0,U=Array(f.length),p=0;p<U.length;++p)U[p]=[];for(var S=0;S<e.lines;++S)for(var O=0;O<f.length;++O)U[O].push(x),x+=f[O].width*e.type*2;!function(e,t,r,n,a,i){var s=new DataView(i.buffer),l=r[e.idx[0]].width,A=r[e.idx[0]].height,u=Math.floor(l/8),c=Math.ceil(l/8),B=Math.ceil(A/8),d=l-(c-1)*8,h=A-(B-1)*8,f={value:0},C=[,,,],p=[,,,],m=[,,,],g=[,,,],E=[,,,];for(let r=0;r<3;++r)E[r]=t[e.idx[r]],C[r]=r<1?0:C[r-1]+c*B,p[r]=new Float32Array(64),m[r]=new Uint16Array(64),g[r]=new Uint16Array(64*c);for(let t=0;t<B;++t){var M,F,v=8;t==B-1&&(v=h);var I=8;for(let e=0;e<c;++e){e==c-1&&(I=d);for(let e=0;e<3;++e)m[e].fill(0),m[e][0]=a[C[e]++],function(e,t,r){for(var n,a=1;a<64;)65280==(n=t[e.value])?a=64:n>>8==255?a+=255&n:(r[a]=n,a++),e.value++}(f,n,m[e]),M=m[e],(F=p[e])[0]=w(M[0]),F[1]=w(M[1]),F[2]=w(M[5]),F[3]=w(M[6]),F[4]=w(M[14]),F[5]=w(M[15]),F[6]=w(M[27]),F[7]=w(M[28]),F[8]=w(M[2]),F[9]=w(M[4]),F[10]=w(M[7]),F[11]=w(M[13]),F[12]=w(M[16]),F[13]=w(M[26]),F[14]=w(M[29]),F[15]=w(M[42]),F[16]=w(M[3]),F[17]=w(M[8]),F[18]=w(M[12]),F[19]=w(M[17]),F[20]=w(M[25]),F[21]=w(M[30]),F[22]=w(M[41]),F[23]=w(M[43]),F[24]=w(M[9]),F[25]=w(M[11]),F[26]=w(M[18]),F[27]=w(M[24]),F[28]=w(M[31]),F[29]=w(M[40]),F[30]=w(M[44]),F[31]=w(M[53]),F[32]=w(M[10]),F[33]=w(M[19]),F[34]=w(M[23]),F[35]=w(M[32]),F[36]=w(M[39]),F[37]=w(M[45]),F[38]=w(M[52]),F[39]=w(M[54]),F[40]=w(M[20]),F[41]=w(M[22]),F[42]=w(M[33]),F[43]=w(M[38]),F[44]=w(M[46]),F[45]=w(M[51]),F[46]=w(M[55]),F[47]=w(M[60]),F[48]=w(M[21]),F[49]=w(M[34]),F[50]=w(M[37]),F[51]=w(M[47]),F[52]=w(M[50]),F[53]=w(M[56]),F[54]=w(M[59]),F[55]=w(M[61]),F[56]=w(M[35]),F[57]=w(M[36]),F[58]=w(M[48]),F[59]=w(M[49]),F[60]=w(M[57]),F[61]=w(M[58]),F[62]=w(M[62]),F[63]=w(M[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),n=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(3*3.14159/8);for(var i=[,,,,],s=[,,,,],o=[,,,,],l=[,,,,],A=0;A<8;++A){var u=8*A;i[0]=r*e[u+2],i[1]=a*e[u+2],i[2]=r*e[u+6],i[3]=a*e[u+6],s[0]=t*e[u+1]+n*e[u+3]+.2777854612564676*e[u+5]+.09754573032714427*e[u+7],s[1]=n*e[u+1]-.09754573032714427*e[u+3]-t*e[u+5]-.2777854612564676*e[u+7],s[2]=.2777854612564676*e[u+1]-t*e[u+3]+.09754573032714427*e[u+5]+n*e[u+7],s[3]=.09754573032714427*e[u+1]-.2777854612564676*e[u+3]+n*e[u+5]-t*e[u+7],o[0]=.35355362513961314*(e[u+0]+e[u+4]),o[3]=.35355362513961314*(e[u+0]-e[u+4]),o[1]=i[0]+i[3],o[2]=i[1]-i[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[u+0]=l[0]+s[0],e[u+1]=l[1]+s[1],e[u+2]=l[2]+s[2],e[u+3]=l[3]+s[3],e[u+4]=l[3]-s[3],e[u+5]=l[2]-s[2],e[u+6]=l[1]-s[1],e[u+7]=l[0]-s[0]}for(var c=0;c<8;++c)i[0]=r*e[16+c],i[1]=a*e[16+c],i[2]=r*e[48+c],i[3]=a*e[48+c],s[0]=t*e[8+c]+n*e[24+c]+.2777854612564676*e[40+c]+.09754573032714427*e[56+c],s[1]=n*e[8+c]-.09754573032714427*e[24+c]-t*e[40+c]-.2777854612564676*e[56+c],s[2]=.2777854612564676*e[8+c]-t*e[24+c]+.09754573032714427*e[40+c]+n*e[56+c],s[3]=.09754573032714427*e[8+c]-.2777854612564676*e[24+c]+n*e[40+c]-t*e[56+c],o[0]=.35355362513961314*(e[c]+e[32+c]),o[3]=.35355362513961314*(e[c]-e[32+c]),o[1]=i[0]+i[3],o[2]=i[1]-i[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[0+c]=l[0]+s[0],e[8+c]=l[1]+s[1],e[16+c]=l[2]+s[2],e[24+c]=l[3]+s[3],e[32+c]=l[3]-s[3],e[40+c]=l[2]-s[2],e[48+c]=l[1]-s[1],e[56+c]=l[0]-s[0]}(p[e]);!function(e){for(var t=0;t<64;++t){var r=e[0][t],n=e[1][t],a=e[2][t];e[0][t]=r+1.5747*a,e[1][t]=r-.1873*n-.4682*a,e[2][t]=r+1.8556*n}}(p);for(let t=0;t<3;++t)!function(e,t,r){for(var n,a=0;a<64;++a)t[r+a]=o.A5E.toHalfFloat((n=e[a])<=1?Math.sign(n)*Math.pow(Math.abs(n),2.2):Math.sign(n)*Math.pow(9.025013291561939,Math.abs(n)-1))}(p[t],g[t],64*e)}let i=0;for(let n=0;n<3;++n){let a=r[e.idx[n]].type;for(let e=8*t;e<8*t+v;++e){i=E[n][e];for(let t=0;t<u;++t){let r=64*t+(7&e)*8;s.setUint16(i+0*a,g[n][r+0],!0),s.setUint16(i+2*a,g[n][r+1],!0),s.setUint16(i+4*a,g[n][r+2],!0),s.setUint16(i+6*a,g[n][r+3],!0),s.setUint16(i+8*a,g[n][r+4],!0),s.setUint16(i+10*a,g[n][r+5],!0),s.setUint16(i+12*a,g[n][r+6],!0),s.setUint16(i+14*a,g[n][r+7],!0),i+=16*a}}if(u!=c)for(let e=8*t;e<8*t+v;++e){let t=E[n][e]+8*u*2*a,r=64*u+(7&e)*8;for(let e=0;e<I;++e)s.setUint16(t+2*e*a,g[n][r+e],!0)}}}for(var G=new Uint16Array(l),s=new DataView(i.buffer),R=0;R<3;++R){r[e.idx[R]].decoded=!0;var D=r[e.idx[R]].type;if(2==r[R].type)for(var H=0;H<A;++H){let e=E[R][H];for(var y=0;y<l;++y)G[y]=s.getUint16(e+2*y*D,!0);for(var y=0;y<l;++y)s.setFloat32(e+2*y*D,w(G[y]),!0)}}}(M,U,f,G,T,n);for(var p=0;p<f.length;++p){var m=f[p];if(!m.decoded){if(2===m.compression)for(var P=0,_=0,S=0;S<e.lines;++S){for(var K=U[p][P],N=0;N<m.width;++N){for(var k=0;k<2*m.type;++k)n[K++]=J[_+k*m.width*m.height];_++}P++}else throw"EXRLoader.parse: unsupported channel compression"}}return new DataView(n.buffer)}function v(e,t){for(var r=new Uint8Array(e),n=0;0!=r[t.value+n];)n+=1;var a=new TextDecoder().decode(r.slice(t.value,t.value+n));return t.value=t.value+n+1,a}function I(e,t){var r=e.getInt32(t.value,!0);return t.value=t.value+4,r}function G(e,t){var r=e.getUint32(t.value,!0);return t.value=t.value+4,r}function R(e,t){var r=e[t.value];return t.value=t.value+1,r}function D(e,t){var r=e.getUint8(t.value);return t.value=t.value+1,r}let H=function(e,t){let r;return"getBigInt64"in DataView.prototype?r=Number(e.getBigInt64(t.value,!0)):r=e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,r};function y(e,t){var r=e.getFloat32(t.value,!0);return t.value+=4,r}function T(e,t){return o.A5E.toHalfFloat(y(e,t))}function w(e){var t=(31744&e)>>10,r=1023&e;return(e>>15?-1:1)*(t?31===t?r?NaN:1/0:Math.pow(2,t-15)*(1+r/1024):r/1024*6103515625e-14)}function b(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function J(e,t){return w(b(e,t))}let x=new DataView(e),U=new Uint8Array(e),S={value:0},L=function(e,t,r){let n={};if(20000630!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";n.version=e.getUint8(4);let a=e.getUint8(5);n.spec={singleTile:!!(2&a),longName:!!(4&a),deepFormat:!!(8&a),multiPart:!!(16&a)},r.value=8;for(var i=!0;i;){var s=v(t,r);if(0==s)i=!1;else{var o=v(t,r),l=G(e,r),A=function(e,t,r,n,a){var i,s,o,l,A;if("string"===n||"stringvector"===n||"iccProfile"===n)return i=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+a)),r.value=r.value+a,i;if("chlist"===n)return function(e,t,r,n){for(var a=r.value,i=[];r.value<a+n-1;){var s=v(t,r),o=I(e,r),l=D(e,r);r.value+=3;var A=I(e,r),u=I(e,r);i.push({name:s,pixelType:o,pLinear:l,xSampling:A,ySampling:u})}return r.value+=1,i}(e,t,r,a);if("chromaticities"===n)return s=y(e,r),o=y(e,r),l=y(e,r),A=y(e,r),{redX:s,redY:o,greenX:l,greenY:A,blueX:y(e,r),blueY:y(e,r),whiteX:y(e,r),whiteY:y(e,r)};if("compression"===n)return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][D(e,r)];if("box2i"===n)return{xMin:G(e,r),yMin:G(e,r),xMax:G(e,r),yMax:G(e,r)};if("lineOrder"===n)return["INCREASING_Y"][D(e,r)];if("float"===n)return y(e,r);else if("v2f"===n)return[y(e,r),y(e,r)];else if("v3f"===n)return[y(e,r),y(e,r),y(e,r)];else if("int"===n)return I(e,r);else if("rational"===n)return[I(e,r),G(e,r)];else if("timecode"===n)return[G(e,r),G(e,r)];else return"preview"===n?(r.value+=a,"skipped"):void(r.value+=a)}(e,t,r,o,l);void 0===A?console.warn(`EXRLoader.parse: skipped unknown header attribute type '${o}'.`):n[s]=A}}if((-5&a)!=0)throw console.error("EXRHeader:",n),"THREE.EXRLoader: provided file is currently unsupported.";return n}(x,e,S),O=function(e,t,r,n,a){let i={size:0,viewer:t,array:r,offset:n,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,bytesPerLine:null,lines:null,inputSize:null,type:e.channels[0].pixelType,uncompress:null,getter:null,format:null,[$?"colorSpace":"encoding"]:null};switch(e.compression){case"NO_COMPRESSION":i.lines=1,i.uncompress=p;break;case"RLE_COMPRESSION":i.lines=1,i.uncompress=m;break;case"ZIPS_COMPRESSION":i.lines=1,i.uncompress=g;break;case"ZIP_COMPRESSION":i.lines=16,i.uncompress=g;break;case"PIZ_COMPRESSION":i.lines=32,i.uncompress=E;break;case"PXR24_COMPRESSION":i.lines=16,i.uncompress=M;break;case"DWAA_COMPRESSION":i.lines=32,i.uncompress=F;break;case"DWAB_COMPRESSION":i.lines=256,i.uncompress=F;break;default:throw"EXRLoader.parse: "+e.compression+" is unsupported"}if(i.scanlineBlockSize=i.lines,1==i.type)switch(a){case o.VzW:i.getter=J,i.inputSize=2;break;case o.cLu:i.getter=b,i.inputSize=2}else if(2==i.type)switch(a){case o.VzW:i.getter=y,i.inputSize=4;break;case o.cLu:i.getter=T,i.inputSize=4}else throw"EXRLoader.parse: unsupported pixelType "+i.type+" for "+e.compression+".";i.blockCount=(e.dataWindow.yMax+1)/i.scanlineBlockSize;for(var s=0;s<i.blockCount;s++)H(t,n);i.outputChannels=3==i.channels?4:i.channels;let l=i.width*i.height*i.outputChannels;switch(a){case o.VzW:i.byteArray=new Float32Array(l),i.channels<i.outputChannels&&i.byteArray.fill(1,0,l);break;case o.cLu:i.byteArray=new Uint16Array(l),i.channels<i.outputChannels&&i.byteArray.fill(15360,0,l);break;default:console.error("THREE.EXRLoader: unsupported type: ",a)}return i.bytesPerLine=i.width*i.inputSize*i.channels,4==i.outputChannels?i.format=o.wk1:i.format=o.hEm,$?i.colorSpace="srgb-linear":i.encoding=3e3,i}(L,x,U,S,this.type),P={value:0},_={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<O.height/O.scanlineBlockSize;e++){let t=G(x,S);O.size=G(x,S),O.lines=t+O.scanlineBlockSize>O.height?O.height-t:O.scanlineBlockSize;let r=O.size<O.lines*O.bytesPerLine?O.uncompress(O):p(O);S.value+=O.size;for(let t=0;t<O.scanlineBlockSize;t++){let n=t+e*O.scanlineBlockSize;if(n>=O.height)break;for(let e=0;e<O.channels;e++){let a=_[L.channels[e].name];for(let i=0;i<O.width;i++){P.value=(O.channels*O.width*t+e*O.width+i)*O.inputSize;let s=(O.height-1-n)*(O.width*O.outputChannels)+i*O.outputChannels+a;O.byteArray[s]=O.getter(r,P)}}}}return{header:L,width:O.width,height:O.height,data:O.byteArray,format:O.format,[$?"colorSpace":"encoding"]:O[$?"colorSpace":"encoding"],type:this.type}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){$?e.colorSpace=r.colorSpace:e.encoding=r.encoding,e.minFilter=o.wem,e.magFilter=o.wem,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,r)},r,n)}}var et=r(1448);let er=(e,t,r)=>{let n;switch(e){case o.ywz:n=new Uint8ClampedArray(t*r*4);break;case o.cLu:n=new Uint16Array(t*r*4);break;case o.JQ4:n=new Uint32Array(t*r*4);break;case o.T95:n=new Int8Array(t*r*4);break;case o.iAb:n=new Int16Array(t*r*4);break;case o.Kz5:n=new Int32Array(t*r*4);break;case o.VzW:n=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return n},en=(e,t,r,a)=>{if(void 0!==n)return n;let i=new o.dd2(1,1,a);t.setRenderTarget(i);let s=new o.Kj0(new o._12,new o.vBJ({color:16777215}));t.render(s,r),t.setRenderTarget(null);let l=er(e,i.width,i.height);return t.readRenderTargetPixels(i,0,0,i.width,i.height,l),i.dispose(),s.geometry.dispose(),s.material.dispose(),n=0!==l[0]};class ea{constructor(e){var t,r,n,a,i,s,l,A,u,c,B,d,h,f,C,p;this._rendererIsDisposable=!1,this._supportsReadPixels=!0,this.render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)},this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;let m={format:o.wk1,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:(null===(t=e.renderTargetOptions)||void 0===t?void 0:t.anisotropy)!==void 0?null===(r=e.renderTargetOptions)||void 0===r?void 0:r.anisotropy:1,generateMipmaps:(null===(n=e.renderTargetOptions)||void 0===n?void 0:n.generateMipmaps)!==void 0&&(null===(a=e.renderTargetOptions)||void 0===a?void 0:a.generateMipmaps),magFilter:(null===(i=e.renderTargetOptions)||void 0===i?void 0:i.magFilter)!==void 0?null===(s=e.renderTargetOptions)||void 0===s?void 0:s.magFilter:o.wem,minFilter:(null===(l=e.renderTargetOptions)||void 0===l?void 0:l.minFilter)!==void 0?null===(A=e.renderTargetOptions)||void 0===A?void 0:A.minFilter:o.wem,samples:(null===(u=e.renderTargetOptions)||void 0===u?void 0:u.samples)!==void 0?null===(c=e.renderTargetOptions)||void 0===c?void 0:c.samples:void 0,wrapS:(null===(B=e.renderTargetOptions)||void 0===B?void 0:B.wrapS)!==void 0?null===(d=e.renderTargetOptions)||void 0===d?void 0:d.wrapS:o.uWy,wrapT:(null===(h=e.renderTargetOptions)||void 0===h?void 0:h.wrapT)!==void 0?null===(f=e.renderTargetOptions)||void 0===f?void 0:f.wrapT:o.uWy};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=ea.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new o.xsS,this._camera=new o.iKG,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!en(this._type,this._renderer,this._camera,m)){let e;this._type===o.cLu&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?o.VzW:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${o.VzW}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new o.Kj0(new o._12,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new o.dd2(this.width,this.height,m),this._renderTarget.texture.mapping=(null===(C=e.renderTargetOptions)||void 0===C?void 0:C.mapping)!==void 0?null===(p=e.renderTargetOptions)||void 0===p?void 0:p.mapping:o.xfE}static instantiateRenderer(){let e=new et.WebGLRenderer;return e.setSize(128,128),e}toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=er(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new o.IEO(this.toArray(),this.width,this.height,o.wk1,this._type,(null==e?void 0:e.mapping)||o.xfE,(null==e?void 0:e.wrapS)||o.uWy,(null==e?void 0:e.wrapT)||o.uWy,(null==e?void 0:e.magFilter)||o.wem,(null==e?void 0:e.minFilter)||o.wem,(null==e?void 0:e.anisotropy)||1,o.GUF);return t.generateMipmaps=(null==e?void 0:e.generateMipmaps)!==void 0&&(null==e?void 0:e.generateMipmaps),t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof o.jyz&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof o.xEZ&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof o.xEZ&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}let ei=`
|
|
82
|
+
varying vec2 vUv;
|
|
83
|
+
|
|
84
|
+
void main() {
|
|
85
|
+
vUv = uv;
|
|
86
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
87
|
+
}
|
|
88
|
+
`,es=`
|
|
89
|
+
// min half float value
|
|
90
|
+
#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )
|
|
91
|
+
// max half float value
|
|
92
|
+
#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )
|
|
93
|
+
|
|
94
|
+
uniform sampler2D sdr;
|
|
95
|
+
uniform sampler2D gainMap;
|
|
96
|
+
uniform vec3 gamma;
|
|
97
|
+
uniform vec3 offsetHdr;
|
|
98
|
+
uniform vec3 offsetSdr;
|
|
99
|
+
uniform vec3 gainMapMin;
|
|
100
|
+
uniform vec3 gainMapMax;
|
|
101
|
+
uniform float weightFactor;
|
|
102
|
+
|
|
103
|
+
varying vec2 vUv;
|
|
104
|
+
|
|
105
|
+
void main() {
|
|
106
|
+
vec3 rgb = texture2D( sdr, vUv ).rgb;
|
|
107
|
+
vec3 recovery = texture2D( gainMap, vUv ).rgb;
|
|
108
|
+
vec3 logRecovery = pow( recovery, gamma );
|
|
109
|
+
vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;
|
|
110
|
+
vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;
|
|
111
|
+
vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));
|
|
112
|
+
gl_FragColor = vec4( clampedHdrColor , 1.0 );
|
|
113
|
+
}
|
|
114
|
+
`;class eo extends o.jyz{constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:n,gainMapMax:a,maxDisplayBoost:i,hdrCapacityMin:s,hdrCapacityMax:l,sdr:A,gainMap:u}){super({name:"GainMapDecoderMaterial",vertexShader:ei,fragmentShader:es,uniforms:{sdr:{value:A},gainMap:{value:u},gamma:{value:new o.Pa4(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new o.Pa4().fromArray(t)},offsetSdr:{value:new o.Pa4().fromArray(r)},gainMapMin:{value:new o.Pa4().fromArray(n)},gainMapMax:{value:new o.Pa4().fromArray(a)},weightFactor:{value:(Math.log2(i)-s)/(l-s)}},blending:o.jFi,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=i,this._hdrCapacityMin=s,this._hdrCapacityMax=l,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}get sdr(){return this.uniforms.sdr.value}set sdr(e){this.uniforms.sdr.value=e}get gainMap(){return this.uniforms.gainMap.value}set gainMap(e){this.uniforms.gainMap.value=e}get offsetHdr(){return this.uniforms.offsetHdr.value.toArray()}set offsetHdr(e){this.uniforms.offsetHdr.value.fromArray(e)}get offsetSdr(){return this.uniforms.offsetSdr.value.toArray()}set offsetSdr(e){this.uniforms.offsetSdr.value.fromArray(e)}get gainMapMin(){return this.uniforms.gainMapMin.value.toArray()}set gainMapMin(e){this.uniforms.gainMapMin.value.fromArray(e)}get gainMapMax(){return this.uniforms.gainMapMax.value.toArray()}set gainMapMax(e){this.uniforms.gainMapMax.value.fromArray(e)}get gamma(){let e=this.uniforms.gamma.value;return[1/e.x,1/e.y,1/e.z]}set gamma(e){let t=this.uniforms.gamma.value;t.x=1/e[0],t.y=1/e[1],t.z=1/e[2]}get hdrCapacityMin(){return this._hdrCapacityMin}set hdrCapacityMin(e){this._hdrCapacityMin=e,this.calculateWeight()}get hdrCapacityMax(){return this._hdrCapacityMax}set hdrCapacityMax(e){this._hdrCapacityMax=e,this.calculateWeight()}get maxDisplayBoost(){return this._maxDisplayBoost}set maxDisplayBoost(e){this._maxDisplayBoost=Math.max(1,Math.min(65504,e)),this.calculateWeight()}calculateWeight(){let e=(Math.log2(this._maxDisplayBoost)-this._hdrCapacityMin)/(this._hdrCapacityMax-this._hdrCapacityMin);this.uniforms.weightFactor.value=Math.max(0,Math.min(1,e))}}class el extends Error{}class eA extends Error{}let eu=(e,t,r)=>{let n=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(n)return n[1];let a=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(a){let e=a[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):a[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)},ec=e=>{let t;"undefined"!=typeof TextDecoder?t=new TextDecoder().decode(e):t=e.toString();let r=t.indexOf("<x:xmpmeta");for(;-1!==r;){let e=t.indexOf("x:xmpmeta>",r),n=t.slice(r,e+10);try{let e=eu(n,"hdrgm:GainMapMin","0"),t=eu(n,"hdrgm:GainMapMax"),r=eu(n,"hdrgm:Gamma","1"),a=eu(n,"hdrgm:OffsetSDR","0.015625"),i=eu(n,"hdrgm:OffsetHDR","0.015625"),s=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(n),o=s?s[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(n);if(!l)throw Error("Incomplete gainmap metadata");let A=l[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetSdr:Array.isArray(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],offsetHdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],hdrCapacityMin:parseFloat(o),hdrCapacityMax:parseFloat(A)}}catch(e){}r=t.indexOf("<x:xmpmeta",e)}};class eB{constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,r)=>{let n;let a=this.options.debug,i=new DataView(e.buffer);if(65496!==i.getUint16(0)){r(Error("Not a valid jpeg"));return}let s=i.byteLength,o=2,l=0;for(;o<s;){if(++l>250){r(Error(`Found no marker after ${l} loops 😵`));return}if(255!==i.getUint8(o)){r(Error(`Not a valid marker at offset 0x${o.toString(16)}, found: 0x${i.getUint8(o).toString(16)}`));return}if(n=i.getUint8(o+1),a&&console.log(`Marker: ${n.toString(16)}`),226===n){a&&console.log("Found APP2 marker (0xffe2)");let e=o+4;if(1297106432===i.getUint32(e)){let n;let a=e+4;if(18761===i.getUint16(a))n=!1;else if(19789===i.getUint16(a))n=!0;else{r(Error("No valid endianness marker found in TIFF header"));return}if(42!==i.getUint16(a+2,!n)){r(Error("Not valid TIFF data! (no 0x002A marker)"));return}let s=i.getUint32(a+4,!n);if(s<8){r(Error("Not valid TIFF data! (First offset less than 8)"));return}let o=a+s,l=i.getUint16(o,!n),A=o+2,u=0;for(let e=A;e<A+12*l;e+=12)45057===i.getUint16(e,!n)&&(u=i.getUint32(e+8,!n));let c=o+2+12*l+4,B=[];for(let e=c;e<c+16*u;e+=16){let t={MPType:i.getUint32(e,!n),size:i.getUint32(e+4,!n),dataOffset:i.getUint32(e+8,!n),dependantImages:i.getUint32(e+12,!n),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=a+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,B.push(t)}if(this.options.extractNonFII&&B.length){let e=new Blob([i]),r=[];for(let t of B){if(t.isFII&&!this.options.extractFII)continue;let n=e.slice(t.start,t.end+1,"image/jpeg");r.push(n)}t(r)}}}o+=2+i.getUint16(o+2)}})}}let ed=async e=>{let t=ec(e);if(!t)throw new eA("Gain map XMP metadata not found");let r=new eB({extractFII:!0,extractNonFII:!0}),n=await r.extract(e);if(2!==n.length)throw new el("Gain map recovery image not found");return{sdr:new Uint8Array(await n[0].arrayBuffer()),gainMap:new Uint8Array(await n[1].arrayBuffer()),metadata:t}},eh=e=>new Promise((t,r)=>{let n=document.createElement("img");n.onload=()=>{t(n)},n.onerror=e=>{r(e)},n.src=URL.createObjectURL(e)});class ef extends o.aNw{constructor(e,t){super(t),e&&(this._renderer=e),this._internalLoadingManager=new o.lLk}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: An existing WebGL Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=new eo({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new o.xEZ,sdr:new o.xEZ});return new ea({width:16,height:16,type:o.cLu,colorSpace:o.GUF,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async render(e,t,r,n){let a,i;let s=n?new Blob([n],{type:"image/jpeg"}):void 0,l=new Blob([r],{type:"image/jpeg"}),A=!1;if("undefined"==typeof createImageBitmap){let e=await Promise.all([s?eh(s):Promise.resolve(void 0),eh(l)]);i=e[0],a=e[1],A=!0}else{let e=await Promise.all([s?createImageBitmap(s,{imageOrientation:"flipY"}):Promise.resolve(void 0),createImageBitmap(l,{imageOrientation:"flipY"})]);i=e[0],a=e[1]}let u=new o.xEZ(i||new ImageData(2,2),o.xfE,o.uWy,o.uWy,o.wem,o.FDw,o.wk1,o.ywz,1,o.GUF);u.flipY=A,u.needsUpdate=!0;let c=new o.xEZ(a,o.xfE,o.uWy,o.uWy,o.wem,o.FDw,o.wk1,o.ywz,1,o.KI_);c.flipY=A,c.needsUpdate=!0,e.width=a.width,e.height=a.height,e.material.gainMap=u,e.material.sdr=c,e.material.gainMapMin=t.gainMapMin,e.material.gainMapMax=t.gainMapMax,e.material.offsetHdr=t.offsetHdr,e.material.offsetSdr=t.offsetSdr,e.material.gamma=t.gamma,e.material.hdrCapacityMin=t.hdrCapacityMin,e.material.hdrCapacityMax=t.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,t.hdrCapacityMax),e.material.needsUpdate=!0,e.render()}}class eC extends ef{load([e,t,r],n,a,i){let s,l,A;let u=this.prepareQuadRenderer(),c=async()=>{if(s&&l&&A){try{await this.render(u,A,s,l)}catch(n){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof i&&i(n),u.disposeOnDemandRenderer();return}"function"==typeof n&&n(u),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),u.disposeOnDemandRenderer()}},B=!0,d=0,h=0,f=!0,C=0,p=0,m=!0,g=0,E=0,M=()=>{"function"==typeof a&&a(new ProgressEvent("progress",{lengthComputable:B&&f&&m,loaded:h+p+E,total:d+C+g}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let F=new o.hH6(this._internalLoadingManager);F.setResponseType("arraybuffer"),F.setRequestHeader(this.requestHeader),F.setPath(this.path),F.setWithCredentials(this.withCredentials),F.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");s=e,await c()},e=>{B=e.lengthComputable,h=e.loaded,d=e.total,M()},t=>{this.manager.itemError(e),"function"==typeof i&&i(t)});let v=new o.hH6(this._internalLoadingManager);v.setResponseType("arraybuffer"),v.setRequestHeader(this.requestHeader),v.setPath(this.path),v.setWithCredentials(this.withCredentials),v.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");l=e,await c()},e=>{f=e.lengthComputable,p=e.loaded,C=e.total,M()},e=>{this.manager.itemError(t),"function"==typeof i&&i(e)});let I=new o.hH6(this._internalLoadingManager);return I.setRequestHeader(this.requestHeader),I.setPath(this.path),I.setWithCredentials(this.withCredentials),I.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");A=JSON.parse(e),await c()},e=>{m=e.lengthComputable,E=e.loaded,g=e.total,M()},e=>{this.manager.itemError(r),"function"==typeof i&&i(e)}),u}}class ep extends ef{load(e,t,r,n){let a=this.prepareQuadRenderer(),i=new o.hH6(this._internalLoadingManager);return i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setPath(this.path),i.setWithCredentials(this.withCredentials),this.manager.itemStart(e),i.load(e,async r=>{let i,s,o;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await ed(l);i=e.sdr,s=e.gainMap,o=e.metadata}catch(t){if(t instanceof eA||t instanceof el)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),o={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},i=l;else throw t}try{await this.render(a,o,i,s)}catch(t){this.manager.itemError(e),"function"==typeof n&&n(t),a.disposeOnDemandRenderer();return}"function"==typeof t&&t(a),this.manager.itemEnd(e),a.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof n&&n(t)}),a}}let em={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"},eg="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",eE=e=>Array.isArray(e),eM=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function eF({files:e=eM,path:t="",preset:r,encoding:n,extensions:a}={}){let l=null,A=!1;r&&(eG(r),e=em[r],t=eg),A=eE(e);let{extension:u,isCubemap:c}=eR(e);if(!(l=eD(u)))throw Error("useEnvironment: Unrecognized file extension: "+e);let B=(0,s.D)(e=>e.gl);(0,i.useLayoutEffect)(()=>{("webp"===u||"jpg"===u||"jpeg"===u)&&B.domElement.addEventListener("webglcontextlost",function(){s.H.clear(l,A?[e]:e)},{once:!0})},[e,B.domElement]);let d=(0,s.H)(l,A?[e]:e,e=>{("webp"===u||"jpg"===u||"jpeg"===u)&&e.setRenderer(B),null==e.setPath||e.setPath(t),a&&a(e)}),h=A?d[0]:d;if("jpg"===u||"jpeg"===u||"webp"===u){var f;h=null==(f=h.renderTarget)?void 0:f.texture}return h.mapping=c?o.fY$:o.dSO,"colorSpace"in h?h.colorSpace=(null!=n?n:c)?"srgb":"srgb-linear":h.encoding=(null!=n?n:c)?3001:3e3,h}let ev={files:eM,path:"",preset:void 0,extensions:void 0};eF.preload=e=>{let t={...ev,...e},{files:r,path:n=""}=t,{preset:a,extensions:i}=t;a&&(eG(a),r=em[a],n=eg);let{extension:o}=eR(r);if("webp"===o||"jpg"===o||"jpeg"===o)throw Error("useEnvironment: Preloading gainmaps is not supported");let l=eD(o);if(!l)throw Error("useEnvironment: Unrecognized file extension: "+r);s.H.preload(l,eE(r)?[r]:r,e=>{null==e.setPath||e.setPath(n),i&&i(e)})};let eI={files:eM,preset:void 0};function eG(e){if(!(e in em))throw Error("Preset must be one of: "+Object.keys(em).join(", "))}function eR(e){var t;let r=eE(e)&&6===e.length,n=eE(e)&&3===e.length&&e.some(e=>e.endsWith("json")),a=eE(e)?e[0]:e;return{extension:r?"cube":n?"webp":a.startsWith("data:application/exr")?"exr":a.startsWith("data:application/hdr")?"hdr":a.startsWith("data:image/jpeg")?"jpg":null==(t=a.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:n}}function eD(e){return"cube"===e?o.cBK:"hdr"===e?c:"exr"===e?ee:"jpg"===e||"jpeg"===e?ep:"webp"===e?eC:null}eF.clear=e=>{let t={...eI,...e},{files:r}=t,{preset:n}=t;n&&(eG(n),r=em[n]);let{extension:a}=eR(r),i=eD(a);if(!i)throw Error("useEnvironment: Unrecognized file extension: "+r);s.H.clear(i,eE(r)?[r]:r)};let eH=e=>e.current&&e.current.isScene,ey=e=>eH(e)?e.current:e;function eT(e,t,r,n,a={}){var i,o,l,A;a={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...a};let u=ey(t||r),c=u.background,B=u.environment,d={backgroundBlurriness:u.backgroundBlurriness,backgroundIntensity:u.backgroundIntensity,backgroundRotation:null!==(i=null==(o=u.backgroundRotation)||null==o.clone?void 0:o.clone())&&void 0!==i?i:[0,0,0],environmentIntensity:u.environmentIntensity,environmentRotation:null!==(l=null==(A=u.environmentRotation)||null==A.clone?void 0:A.clone())&&void 0!==l?l:[0,0,0]};return"only"!==e&&(u.environment=n),e&&(u.background=n),(0,s.k)(u,a),()=>{"only"!==e&&(u.environment=B),e&&(u.background=c),(0,s.k)(u,d)}}function ew({scene:e,background:t=!1,map:r,...n}){let a=(0,s.D)(e=>e.scene);return i.useLayoutEffect(()=>{if(r)return eT(t,e,a,r,n)}),null}function eb({background:e=!1,scene:t,blur:r,backgroundBlurriness:n,backgroundIntensity:a,backgroundRotation:o,environmentIntensity:l,environmentRotation:A,...u}){let c=eF(u),B=(0,s.D)(e=>e.scene);return i.useLayoutEffect(()=>eT(e,t,B,c,{backgroundBlurriness:null!=r?r:n,backgroundIntensity:a,backgroundRotation:o,environmentIntensity:l,environmentRotation:A})),i.useEffect(()=>()=>{c.dispose()},[c]),null}function eJ({children:e,near:t=.1,far:r=1e3,resolution:n=256,frames:a=1,map:l,background:A=!1,blur:u,backgroundBlurriness:c,backgroundIntensity:B,backgroundRotation:d,environmentIntensity:h,environmentRotation:f,scene:C,files:p,path:m,preset:g,extensions:E}){let M=(0,s.D)(e=>e.gl),F=(0,s.D)(e=>e.scene),v=i.useRef(null),[I]=i.useState(()=>new o.xsS),G=i.useMemo(()=>{let e=new o.oAp(n);return e.texture.type=o.cLu,e},[n]);i.useEffect(()=>()=>{G.dispose()},[G]),i.useLayoutEffect(()=>{if(1===a){let e=M.autoClear;M.autoClear=!0,v.current.update(M,I),M.autoClear=e}return eT(A,C,F,G.texture,{backgroundBlurriness:null!=u?u:c,backgroundIntensity:B,backgroundRotation:d,environmentIntensity:h,environmentRotation:f})},[e,I,G.texture,C,F,A,a,M]);let R=1;return(0,s.F)(()=>{if(a===1/0||R<a){let e=M.autoClear;M.autoClear=!0,v.current.update(M,I),M.autoClear=e,R++}}),i.createElement(i.Fragment,null,(0,s.h)(i.createElement(i.Fragment,null,e,i.createElement("cubeCamera",{ref:v,args:[t,r,G]}),p||g?i.createElement(eb,{background:!0,files:p,preset:g,path:m,extensions:E}):l?i.createElement(ew,{background:!0,map:l,extensions:E}):null),I))}function ex(e){var t,r,n,o;let l=eF(e),A=e.map||l;i.useMemo(()=>(0,s.e)({GroundProjectedEnvImpl:u}),[]),i.useEffect(()=>()=>{l.dispose()},[l]);let c=i.useMemo(()=>[A],[A]),B=null==(t=e.ground)?void 0:t.height,d=null==(r=e.ground)?void 0:r.radius,h=null!==(n=null==(o=e.ground)?void 0:o.scale)&&void 0!==n?n:1e3;return i.createElement(i.Fragment,null,i.createElement(ew,(0,a.Z)({},e,{map:A})),i.createElement("groundProjectedEnvImpl",{args:c,scale:h,height:B,radius:d}))}function eU(e){return e.ground?i.createElement(ex,e):e.map?i.createElement(ew,e):e.children?i.createElement(eJ,e):i.createElement(eb,e)}},1106:function(e,t,r){let n;r.d(t,{L:function(){return eu}}),r(2265);var a=r(2079);let i=new WeakMap;class s extends a.aNw{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let i=new a.hH6(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let a={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,a).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(i.has(e)){let t=i.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let a=this.workerNextTaskID++,s=e.byteLength,o=this._getWorker(a,s).then(n=>(r=n,new Promise((n,i)=>{r._callbacks[a]={resolve:n,reject:i},r.postMessage({type:"decode",id:a,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&a&&this._releaseTask(r,a)}),i.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new a.u9r;e.index&&t.setIndex(new a.TlE(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],i=n.name,s=n.array,o=n.itemSize;t.setAttribute(i,new a.TlE(s,o))}return t}_loadLibrary(e,t){let r=new a.hH6(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,n)=>{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=o.toString(),a=["/* draco decoder */",r,"","/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([a]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function o(){let e,t;onmessage=function(r){let n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let a=n.buffer,i=n.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(a),a.byteLength);try{let e=function(e,t,r,n){let a,i;let s=n.attributeIDs,o=n.attributeTypes,l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)a=new e.Mesh,i=t.DecodeBufferToMesh(r,a);else if(l===e.POINT_CLOUD)a=new e.PointCloud,i=t.DecodeBufferToPointCloud(r,a);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!i.ok()||0===a.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+i.error_msg());let A={index:null,attributes:[]};for(let r in s){let i,l;let u=self[o[r]];if(n.useUniqueIDs)l=s[r],i=t.GetAttributeByUniqueId(a,l);else{if(-1===(l=t.GetAttributeId(a,e[s[r]])))continue;i=t.GetAttribute(a,l)}A.attributes.push(function(e,t,r,n,a,i){let s=i.num_components(),o=r.num_points()*s,l=o*a.BYTES_PER_ELEMENT,A=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,a),u=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,i,A,l,u);let c=new a(e.HEAPF32.buffer,u,o).slice();return e._free(u),{name:n,array:c,itemSize:s}}(e,t,a,r,u,i))}return l===e.TRIANGULAR_MESH&&(A.index=function(e,t,r){let n=3*r.num_faces(),a=4*n,i=e._malloc(a);t.GetTrianglesUInt32Array(r,a,i);let s=new Uint32Array(e.HEAPF32.buffer,i,n).slice();return e._free(i),{array:s,itemSize:1}}(e,t,a)),e.destroy(a),A}(t,r,s,i),a=e.attributes.map(e=>e.array.buffer);e.index&&a.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},a)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}})}}}let l=()=>{let e;if(n)return n;let t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let a="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";WebAssembly.validate(t)&&(a="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");let i=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let n=e.charCodeAt(r);t[r]=n>96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let n=0;for(let a=0;a<e.length;++a)t[n++]=t[a]<60?r[t[a]]:(t[a]-60)*64+t[++a];return t.buffer.slice(0,n)}(a),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function s(t,r,n,a,i,s){let o=e.exports.sbrk,l=n+3&-4,A=o(l*a),u=o(i.length),c=new Uint8Array(e.exports.memory.buffer);c.set(i,u);let B=t(A,n,a,u,i.length);if(0===B&&s&&s(A,l,a),r.set(c.subarray(A,A+n*a)),o(A-o(0)),0!==B)throw Error(`Malformed buffer data: ${B}`)}let o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return n={ready:i,supported:!0,decodeVertexBuffer(t,r,n,a,i){s(e.exports.meshopt_decodeVertexBuffer,t,r,n,a,e.exports[o[i]])},decodeIndexBuffer(t,r,n,a){s(e.exports.meshopt_decodeIndexBuffer,t,r,n,a)},decodeIndexSequence(t,r,n,a){s(e.exports.meshopt_decodeIndexSequence,t,r,n,a)},decodeGltfBuffer(t,r,n,a,i,A){s(e.exports[l[i]],t,r,n,a,e.exports[o[A]])}}};function A(e,t){if(t===a.WwZ)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==a.z$h&&t!==a.UlW)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),r=e.getIndex()}let n=r.count-2,i=[];if(r){if(t===a.z$h)for(let e=1;e<=n;e++)i.push(r.getX(0)),i.push(r.getX(e)),i.push(r.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(r.getX(e)),i.push(r.getX(e+1)),i.push(r.getX(e+2))):(i.push(r.getX(e+2)),i.push(r.getX(e+1)),i.push(r.getX(e)))}i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let s=e.clone();return s.setIndex(i),s.clearGroups(),s}}var u=r(9074);function c(e){if("undefined"!=typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r<n;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let B="srgb",d="srgb-linear";class h extends a.aNw{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new E(e)}),this.register(function(e){return new M(e)}),this.register(function(e){return new T(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new b(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new I(e)}),this.register(function(e){return new G(e)}),this.register(function(e){return new R(e)}),this.register(function(e){return new g(e)}),this.register(function(e){return new D(e)}),this.register(function(e){return new F(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new H(e)}),this.register(function(e){return new p(e)}),this.register(function(e){return new J(e)}),this.register(function(e){return new x(e)})}load(e,t,r,n){let i;let s=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=a.Zp0.extractUrlBase(e);i=a.Zp0.resolveURL(t,this.path)}else i=a.Zp0.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){n?n(t):console.error(t),s.manager.itemError(e),s.manager.itemEnd(e)},l=new a.hH6(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(r){try{s.parse(r,i,function(r){t(r),s.manager.itemEnd(e)},o)}catch(e){o(e)}},r,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,n){let a;let i={},s={};if("string"==typeof e)a=JSON.parse(e);else if(e instanceof ArrayBuffer){if(c(new Uint8Array(e.slice(0,4)))===U){try{i[C.KHR_BINARY_GLTF]=new L(e)}catch(e){n&&n(e);return}a=JSON.parse(i[C.KHR_BINARY_GLTF].content)}else a=JSON.parse(c(new Uint8Array(e)))}else a=e;if(void 0===a.asset||a.asset.version[0]<2){n&&n(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let o=new ea(a,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](o);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,i[t.name]=!0}if(a.extensionsUsed)for(let e=0;e<a.extensionsUsed.length;++e){let t=a.extensionsUsed[e],r=a.extensionsRequired||[];switch(t){case C.KHR_MATERIALS_UNLIT:i[t]=new m;break;case C.KHR_DRACO_MESH_COMPRESSION:i[t]=new O(a,this.dracoLoader);break;case C.KHR_TEXTURE_TRANSFORM:i[t]=new P;break;case C.KHR_MESH_QUANTIZATION:i[t]=new _;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}o.setExtensions(i),o.setPlugins(s),o.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,a){r.parse(e,t,n,a)})}}function f(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let C={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class p{constructor(e){this.parser=e,this.name=C.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){let t;let r=this.parser,n="light:"+e,i=r.cache.get(n);if(i)return i;let s=r.json,o=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e],l=new a.Ilk(16777215);void 0!==o.color&&l.setRGB(o.color[0],o.color[1],o.color[2],d);let A=void 0!==o.range?o.range:0;switch(o.type){case"directional":(t=new a.Ox3(l)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new a.cek(l)).distance=A;break;case"spot":(t=new a.PMe(l)).distance=A,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,t.angle=o.spot.outerConeAngle,t.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return t.position.set(0,0,0),t.decay=2,ee(t,o),void 0!==o.intensity&&(t.intensity=o.intensity),t.name=r.createUniqueName(o.name||"light_"+e),i=Promise.resolve(t),r.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,n=r.json.nodes[e],a=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===a?null:this._loadLight(a).then(function(e){return r._getNodeRef(t.cache,a,e)})}}class m{constructor(){this.name=C.KHR_MATERIALS_UNLIT}getMaterialType(){return a.vBJ}extendParams(e,t,r){let n=[];e.color=new a.Ilk(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],d),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(r.assignTexture(e,"map",i.baseColorTexture,B))}return Promise.all(n)}}class g{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class E{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],s=n.extensions[this.name];if(void 0!==s.clearcoatFactor&&(t.clearcoat=s.clearcoatFactor),void 0!==s.clearcoatTexture&&i.push(r.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),void 0!==s.clearcoatRoughnessFactor&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),void 0!==s.clearcoatRoughnessTexture&&i.push(r.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),void 0!==s.clearcoatNormalTexture&&(i.push(r.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),void 0!==s.clearcoatNormalTexture.scale)){let e=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new a.FM8(e,e)}return Promise.all(i)}}class M{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}}class F{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],i=n.extensions[this.name];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&a.push(r.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&a.push(r.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(a)}}class v{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new a.Ilk(0,0,0),t.sheenRoughness=0,t.sheen=1;let s=n.extensions[this.name];if(void 0!==s.sheenColorFactor){let e=s.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],d)}return void 0!==s.sheenRoughnessFactor&&(t.sheenRoughness=s.sheenRoughnessFactor),void 0!==s.sheenColorTexture&&i.push(r.assignTexture(t,"sheenColorMap",s.sheenColorTexture,B)),void 0!==s.sheenRoughnessTexture&&i.push(r.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(i)}}class I{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],i=n.extensions[this.name];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&a.push(r.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(a)}}class G{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],s=n.extensions[this.name];t.thickness=void 0!==s.thicknessFactor?s.thicknessFactor:0,void 0!==s.thicknessTexture&&i.push(r.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;let o=s.attenuationColor||[1,1,1];return t.attenuationColor=new a.Ilk().setRGB(o[0],o[1],o[2],d),Promise.all(i)}}class R{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class D{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],s=n.extensions[this.name];t.specularIntensity=void 0!==s.specularFactor?s.specularFactor:1,void 0!==s.specularTexture&&i.push(r.assignTexture(t,"specularIntensityMap",s.specularTexture));let o=s.specularColorFactor||[1,1,1];return t.specularColor=new a.Ilk().setRGB(o[0],o[1],o[2],d),void 0!==s.specularColorTexture&&i.push(r.assignTexture(t,"specularColorMap",s.specularColorTexture,B)),Promise.all(i)}}class H{constructor(e){this.parser=e,this.name=C.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],i=n.extensions[this.name];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&a.push(r.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(a)}}class y{constructor(e){this.parser=e,this.name=C.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?a.EJi:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],i=n.extensions[this.name];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&a.push(r.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(a)}}class T{constructor(e){this.parser=e,this.name=C.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,r=t.json,n=r.textures[e];if(!n.extensions||!n.extensions[this.name])return null;let a=n.extensions[this.name],i=t.options.ktx2Loader;if(!i){if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures")}return t.loadTextureImage(e,a.source,i)}}class w{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,a=n.textures[e];if(!a.extensions||!a.extensions[t])return null;let i=a.extensions[t],s=n.images[i.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(a){if(a)return r.loadTextureImage(e,i.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class b{constructor(e){this.parser=e,this.name=C.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,a=n.textures[e];if(!a.extensions||!a.extensions[t])return null;let i=a.extensions[t],s=n.images[i.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(a){if(a)return r.loadTextureImage(e,i.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class J{constructor(e){this.name=C.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files")}return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,i=e.count,s=e.byteStride,o=new Uint8Array(t,r,n);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(i,s,o,e.mode,e.filter).then(function(e){return e.buffer}):a.ready.then(function(){let t=new ArrayBuffer(i*s);return a.decodeGltfBuffer(new Uint8Array(t),i,s,o,e.mode,e.filter),t})})}}}class x{constructor(e){this.name=C.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],s={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(s[e]=t,s[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new a.yGw,r=new a.Pa4,o=new a._fP,l=new a.Pa4(1,1,1),A=new a.SPe(e.geometry,e.material,n);for(let e=0;e<n;e++)s.TRANSLATION&&r.fromBufferAttribute(s.TRANSLATION,e),s.ROTATION&&o.fromBufferAttribute(s.ROTATION,e),s.SCALE&&l.fromBufferAttribute(s.SCALE,e),A.setMatrixAt(e,t.compose(r,o,l));for(let t in s)if("_COLOR_0"===t){let e=s[t];A.instanceColor=new a.lb7(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,s[t]);a.Tme.prototype.copy.call(A,e),this.parser.assignFinalMaterial(A),i.push(A)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}}let U="glTF",S={JSON:1313821514,BIN:5130562};class L{constructor(e){this.name=C.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12);if(this.header={magic:c(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==U)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");let r=this.header.length-12,n=new DataView(e,12),a=0;for(;a<r;){let t=n.getUint32(a,!0);a+=4;let r=n.getUint32(a,!0);if(a+=4,r===S.JSON){let r=new Uint8Array(e,12+a,t);this.content=c(r)}else if(r===S.BIN){let r=12+a;this.body=e.slice(r,r+t)}a+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class O{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=C.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let r=this.json,n=this.dracoLoader,a=e.extensions[this.name].bufferView,i=e.extensions[this.name].attributes,s={},o={},l={};for(let e in i)s[Z[e]||e.toLowerCase()]=i[e];for(let t in e.attributes){let n=Z[t]||t.toLowerCase();if(void 0!==i[t]){let a=r.accessors[e.attributes[t]],i=X[a.componentType];l[n]=i.name,o[n]=!0===a.normalized}}return t.getDependency("bufferView",a).then(function(e){return new Promise(function(t,r){n.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],n=o[t];void 0!==n&&(r.normalized=n)}t(e)},s,l,d,r)})})}}class P{constructor(){this.name=C.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class _{constructor(){this.name=C.KHR_MESH_QUANTIZATION}}class K extends a._C8{constructor(e,t,r,n){super(e,t,r,n)}copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,n=this.valueSize,a=e*n*3+n;for(let e=0;e!==n;e++)t[e]=r[a+e];return t}interpolate_(e,t,r,n){let a=this.resultBuffer,i=this.sampleValues,s=this.valueSize,o=2*s,l=3*s,A=n-t,u=(r-t)/A,c=u*u,B=c*u,d=e*l,h=d-l,f=-2*B+3*c,C=B-c,p=1-f,m=C-c+u;for(let e=0;e!==s;e++){let t=i[h+e+s],r=i[h+e+o]*A,n=i[d+e+s],l=i[d+e]*A;a[e]=p*t+m*r+f*n+C*l}return a}}let N=new a._fP;class k extends K{interpolate_(e,t,r,n){let a=super.interpolate_(e,t,r,n);return N.fromArray(a).normalize().toArray(a),a}}let Q={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},X={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},j={9728:a.TyD,9729:a.wem,9984:a.YLQ,9985:a.qyh,9986:a.aH4,9987:a.D1R},Y={33071:a.uWy,33648:a.OoA,10497:a.rpg},W={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Z={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...u.i>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},V={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:a.NMF,STEP:a.Syv},q={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function $(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ee(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function et(e){let t="",r=Object.keys(e).sort();for(let n=0,a=r.length;n<a;n++)t+=r[n]+":"+e[r[n]]+";";return t}function er(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let en=new a.yGw;class ea{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new f,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,n=!1,i=-1;"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||r||n&&i<98?this.textureLoader=new a.dpR(this.options.manager):this.textureLoader=new a.QRU(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new a.hH6(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,a=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let i={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return $(a,i,n),ee(i,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(i)})).then(function(){for(let e of i.scenes)e.updateMatrixWorld();e(i)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r].joints;for(let t=0,r=n.length;t<r;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){let n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(r[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let n=r.clone(),a=(e,t)=>{let r=this.associations.get(e);for(let[n,i]of(null!=r&&this.associations.set(t,r),e.children.entries()))a(i,t.children[n])};return a(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let n=e(t[r]);if(n)return n}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let n=0;n<t.length;n++){let a=e(t[n]);a&&r.push(a)}return r}getDependency(e,t){let r=e+":"+t,n=this.cache.get(r);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(!(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,n){return r.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],r=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[C.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){r.load(a.Zp0.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+r)})}loadAccessor(e){let t=this,r=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=W[n.type],t=X[n.componentType],r=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new a.TlE(i,e,r))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,s;let o=e[0],l=W[n.type],A=X[n.componentType],u=A.BYTES_PER_ELEMENT,c=u*l,B=n.byteOffset||0,d=void 0!==n.bufferView?r.bufferViews[n.bufferView].byteStride:void 0,h=!0===n.normalized;if(d&&d!==c){let e=Math.floor(B/d),r="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,c=t.cache.get(r);c||(i=new A(o,e*d,n.count*d/u),c=new a.vpT(i,d/u),t.cache.add(r,c)),s=new a.kB5(c,l,B%d/u,h)}else i=null===o?new A(n.count*l):new A(o,B,n.count*l),s=new a.TlE(i,l,h);if(void 0!==n.sparse){let t=W.SCALAR,r=X[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,u=n.sparse.values.byteOffset||0,c=new r(e[1],i,n.sparse.count*t),B=new A(e[2],u,n.sparse.count*l);null!==o&&(s=new a.TlE(s.array.slice(),s.itemSize,s.normalized));for(let e=0,t=c.length;e<t;e++){let t=c[e];if(s.setX(t,B[e*l]),l>=2&&s.setY(t,B[e*l+1]),l>=3&&s.setZ(t,B[e*l+2]),l>=4&&s.setW(t,B[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return s})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,a=t.images[n],i=this.textureLoader;if(a.uri){let e=r.manager.getHandler(a.uri);null!==e&&(i=e)}return this.loadTextureImage(e,n,i)}loadTextureImage(e,t,r){let n=this,i=this.json,s=i.textures[e],o=i.images[t],l=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[l])return this.textureCache[l];let A=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=s.name||o.name||"",""===t.name&&"string"==typeof o.uri&&!1===o.uri.startsWith("data:image/")&&(t.name=o.uri);let r=(i.samplers||{})[s.sampler]||{};return t.magFilter=j[r.magFilter]||a.wem,t.minFilter=j[r.minFilter]||a.D1R,t.wrapS=Y[r.wrapS]||a.rpg,t.wrapT=Y[r.wrapT]||a.rpg,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=A,A}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],s=self.URL||self.webkitURL,o=i.uri||"",l=!1;if(void 0!==i.bufferView)o=this.getDependency("bufferView",i.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:i.mimeType});return o=s.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let A=Promise.resolve(o).then(function(e){return new Promise(function(r,i){let s=r;!0===t.isImageBitmapLoader&&(s=function(e){let t=new a.xEZ(e);t.needsUpdate=!0,r(t)}),t.load(a.Zp0.resolveURL(e,n.path),s,void 0,i)})}).then(function(e){var t;return!0===l&&s.revokeObjectURL(o),ee(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e});return this.sourceCache[e]=A,A}assignTexture(e,t,r,n){let a=this;return this.getDependency("texture",r.index).then(function(i){if(!i)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((i=i.clone()).channel=r.texCoord),a.extensions[C.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[C.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=a.associations.get(i);i=a.extensions[C.KHR_TEXTURE_TRANSFORM].extendTexture(i,e),a.associations.set(i,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?B:d),"colorSpace"in i?i.colorSpace=n:i.encoding=n===B?3001:3e3),e[t]=i,i})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new a.UY4,a.F5T.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new a.nls,a.F5T.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||s){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),s&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return a.Wid}loadMaterial(e){let t;let r=this,n=this.json,i=this.extensions,s=n.materials[e],o={},l=s.extensions||{},A=[];if(l[C.KHR_MATERIALS_UNLIT]){let e=i[C.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),A.push(e.extendParams(o,s,r))}else{let n=s.pbrMetallicRoughness||{};if(o.color=new a.Ilk(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],d),o.opacity=e[3]}void 0!==n.baseColorTexture&&A.push(r.assignTexture(o,"map",n.baseColorTexture,B)),o.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,o.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(A.push(r.assignTexture(o,"metalnessMap",n.metallicRoughnessTexture)),A.push(r.assignTexture(o,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),A.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}!0===s.doubleSided&&(o.side=a.ehD);let u=s.alphaMode||q.OPAQUE;if(u===q.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===q.MASK&&(o.alphaTest=void 0!==s.alphaCutoff?s.alphaCutoff:.5)),void 0!==s.normalTexture&&t!==a.vBJ&&(A.push(r.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new a.FM8(1,1),void 0!==s.normalTexture.scale)){let e=s.normalTexture.scale;o.normalScale.set(e,e)}if(void 0!==s.occlusionTexture&&t!==a.vBJ&&(A.push(r.assignTexture(o,"aoMap",s.occlusionTexture)),void 0!==s.occlusionTexture.strength&&(o.aoMapIntensity=s.occlusionTexture.strength)),void 0!==s.emissiveFactor&&t!==a.vBJ){let e=s.emissiveFactor;o.emissive=new a.Ilk().setRGB(e[0],e[1],e[2],d)}return void 0!==s.emissiveTexture&&t!==a.vBJ&&A.push(r.assignTexture(o,"emissiveMap",s.emissiveTexture,B)),Promise.all(A).then(function(){let n=new t(o);return s.name&&(n.name=s.name),ee(n,s),r.associations.set(n,{materials:e}),s.extensions&&$(i,n,s),n})}createUniqueName(e){let t=a.iUV.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let s=0,o=e.length;s<o;s++){let o=e[s],l=function(e){let t;let r=e.extensions&&e.extensions[C.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+et(r.attributes):e.indices+":"+et(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+et(e.targets[r]);return t}(o),A=n[l];if(A)i.push(A.promise);else{let e;e=o.extensions&&o.extensions[C.KHR_DRACO_MESH_COMPRESSION]?function(e){return r[C.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return ei(r,e,t)})}(o):ei(new a.u9r,o,t),n[l]={primitive:o,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,r=this.json,n=this.extensions,i=r.meshes[e],s=i.primitives,o=[];for(let e=0,t=s.length;e<t;e++){var l;let t=void 0===s[e].material?(void 0===(l=this.cache).DefaultMaterial&&(l.DefaultMaterial=new a.Wid({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:a.Wl3})),l.DefaultMaterial):this.getDependency("material",s[e].material);o.push(t)}return o.push(t.loadGeometries(s)),Promise.all(o).then(function(r){let o=r.slice(0,r.length-1),l=r[r.length-1],u=[];for(let r=0,c=l.length;r<c;r++){let c;let B=l[r],d=s[r],h=o[r];if(d.mode===Q.TRIANGLES||d.mode===Q.TRIANGLE_STRIP||d.mode===Q.TRIANGLE_FAN||void 0===d.mode)!0===(c=!0===i.isSkinnedMesh?new a.TUv(B,h):new a.Kj0(B,h)).isSkinnedMesh&&c.normalizeSkinWeights(),d.mode===Q.TRIANGLE_STRIP?c.geometry=A(c.geometry,a.UlW):d.mode===Q.TRIANGLE_FAN&&(c.geometry=A(c.geometry,a.z$h));else if(d.mode===Q.LINES)c=new a.ejS(B,h);else if(d.mode===Q.LINE_STRIP)c=new a.x12(B,h);else if(d.mode===Q.LINE_LOOP)c=new a.blk(B,h);else if(d.mode===Q.POINTS)c=new a.woe(B,h);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(c.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r<n;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,n=r.length;t<n;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(c,i),c.name=t.createUniqueName(i.name||"mesh_"+e),ee(c,i),d.extensions&&$(n,c,d),t.assignFinalMaterial(c),u.push(c)}for(let r=0,n=u.length;r<n;r++)t.associations.set(u[r],{meshes:e,primitives:r});if(1===u.length)return i.extensions&&$(n,u[0],i),u[0];let c=new a.ZAu;i.extensions&&$(n,c,i),t.associations.set(c,{meshes:e});for(let e=0,t=u.length;e<t;e++)c.add(u[e]);return c})}loadCamera(e){let t;let r=this.json.cameras[e],n=r[r.type];if(!n){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return"perspective"===r.type?t=new a.cPb(a.M8C.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===r.type&&(t=new a.iKG(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),r.name&&(t.name=this.createUniqueName(r.name)),ee(t,r),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],r=[];for(let e=0,n=t.joints.length;e<n;e++)r.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?r.push(this.getDependency("accessor",t.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(e){let r=e.pop(),n=[],i=[];for(let s=0,o=e.length;s<o;s++){let o=e[s];if(o){n.push(o);let e=new a.yGw;null!==r&&e.fromArray(r.array,16*s),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[s])}return new a.OdW(n,i)})}loadAnimation(e){let t=this.json,r=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,s=[],o=[],l=[],A=[],u=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],a=t.target,i=a.node,c=void 0!==n.parameters?n.parameters[r.input]:r.input,B=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==a.node&&(s.push(this.getDependency("node",i)),o.push(this.getDependency("accessor",c)),l.push(this.getDependency("accessor",B)),A.push(r),u.push(a))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(A),Promise.all(u)]).then(function(e){let t=e[0],n=e[1],s=e[2],o=e[3],l=e[4],A=[];for(let e=0,a=t.length;e<a;e++){let a=t[e],i=n[e],u=s[e],c=o[e],B=l[e];if(void 0===a)continue;a.updateMatrix&&a.updateMatrix();let d=r._createAnimationTracks(a,i,u,c,B);if(d)for(let e=0;e<d.length;e++)A.push(d[e])}return new a.m7l(i,void 0,A)})}createNodeMesh(e){let t=this.json,r=this,n=t.nodes[e];return void 0===n.mesh?null:r.getDependency("mesh",n.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=n.weights.length;t<r;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),n=[],a=t.children||[];for(let e=0,t=a.length;e<t;e++)n.push(this.getDependency("node",a[e]));let i=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(n),i]).then(function(e){let t=e[0],r=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,en)});for(let e=0,n=r.length;e<n;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,r=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],s=i.name?n.createUniqueName(i.name):"",o=[],l=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&o.push(l),void 0!==i.camera&&o.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if((o=!0===i.isBone?new a.N$j:t.length>1?new a.ZAu:1===t.length?t[0]:new a.Tme)!==t[0])for(let e=0,r=t.length;e<r;e++)o.add(t[e]);if(i.name&&(o.userData.name=i.name,o.name=s),ee(o,i),i.extensions&&$(r,o,i),void 0!==i.matrix){let e=new a.yGw;e.fromArray(i.matrix),o.applyMatrix4(e)}else void 0!==i.translation&&o.position.fromArray(i.translation),void 0!==i.rotation&&o.quaternion.fromArray(i.rotation),void 0!==i.scale&&o.scale.fromArray(i.scale);return n.associations.has(o)||n.associations.set(o,{}),n.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,r=this.json.scenes[e],n=this,i=new a.ZAu;r.name&&(i.name=n.createUniqueName(r.name)),ee(i,r),r.extensions&&$(t,i,r);let s=r.nodes||[],o=[];for(let e=0,t=s.length;e<t;e++)o.push(n.getDependency("node",s[e]));return Promise.all(o).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,r]of n.associations)(e instanceof a.F5T||e instanceof a.xEZ)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let s;let o=[],l=e.name?e.name:e.uuid,A=[];switch(V[i.path]===V.weights?e.traverse(function(e){e.morphTargetInfluences&&A.push(e.name?e.name:e.uuid)}):A.push(l),V[i.path]){case V.weights:s=a.dUE;break;case V.rotation:s=a.iLg;break;case V.position:case V.scale:s=a.yC1;break;default:s=1===r.itemSize?a.dUE:a.yC1}let u=void 0!==n.interpolation?z[n.interpolation]:a.NMF,c=this._getArrayFromAccessor(r);for(let e=0,r=A.length;e<r;e++){let r=new s(A[e]+"."+V[i.path],t.array,c,u);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),o.push(r)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=er(t.constructor),r=new Float32Array(t.length);for(let n=0,a=t.length;n<a;n++)r[n]=t[n]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof a.iLg?k:K)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ei(e,t,r){let n=t.attributes,i=[];for(let t in n){let a=Z[t]||t.toLowerCase();a in e.attributes||i.push(function(t,n){return r.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}(n[t],a))}if(void 0!==t.indices&&!e.index){let n=r.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(n)}return ee(e,t),!function(e,t,r){let n=t.attributes,i=new a.ZzF;if(void 0===n.POSITION)return;{let e=r.json.accessors[n.POSITION],t=e.min,s=e.max;if(void 0!==t&&void 0!==s){if(i.set(new a.Pa4(t[0],t[1],t[2]),new a.Pa4(s[0],s[1],s[2])),e.normalized){let t=er(X[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}let s=t.targets;if(void 0!==s){let e=new a.Pa4,t=new a.Pa4;for(let n=0,a=s.length;n<a;n++){let a=s[n];if(void 0!==a.POSITION){let n=r.json.accessors[a.POSITION],i=n.min,s=n.max;if(void 0!==i&&void 0!==s){if(t.setX(Math.max(Math.abs(i[0]),Math.abs(s[0]))),t.setY(Math.max(Math.abs(i[1]),Math.abs(s[1]))),t.setZ(Math.max(Math.abs(i[2]),Math.abs(s[2]))),n.normalized){let e=er(X[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let o=new a.aLr;i.getCenter(o.center),o.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=o}(e,t,r),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let n=!1,a=!1,i=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(n=!0),void 0!==r.NORMAL&&(a=!0),void 0!==r.COLOR_0&&(i=!0),n&&a&&i)break}if(!n&&!a&&!i)return Promise.resolve(e);let s=[],o=[],l=[];for(let A=0,u=t.length;A<u;A++){let u=t[A];if(n){let t=void 0!==u.POSITION?r.getDependency("accessor",u.POSITION):e.attributes.position;s.push(t)}if(a){let t=void 0!==u.NORMAL?r.getDependency("accessor",u.NORMAL):e.attributes.normal;o.push(t)}if(i){let t=void 0!==u.COLOR_0?r.getDependency("accessor",u.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(l)]).then(function(t){let r=t[0],s=t[1],o=t[2];return n&&(e.morphAttributes.position=r),a&&(e.morphAttributes.normal=s),i&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,r):e})}var es=r(1276);let eo=null,el="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function eA(e=!0,t=!0,r){return n=>{r&&r(n),e&&(eo||(eo=new s),eo.setDecoderPath("string"==typeof e?e:el),n.setDRACOLoader(eo)),t&&n.setMeshoptDecoder("function"==typeof l?l():l)}}let eu=(e,t,r,n)=>(0,es.H)(h,e,eA(t,r,n));eu.preload=(e,t,r,n)=>es.H.preload(h,e,eA(t,r,n)),eu.clear=e=>es.H.clear(h,e),eu.setDecoderPath=e=>{el=e}},1119:function(e,t,r){r.d(t,{Z:function(){return n}});function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}},6123:function(e,t,r){r.d(t,{J:function(){return n}});function n(e,t,r){if(!t.has(e))throw TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}},3359:function(e,t,r){r.d(t,{_:function(){return a}});var n=r(6123);function a(e,t){var r=(0,n.J)(e,t,"get");return r.get?r.get.call(e):r.value}},1378:function(e,t,r){r.d(t,{_:function(){return n}});function n(e,t,r){!function(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,r)}},262:function(e,t,r){r.d(t,{_:function(){return a}});var n=r(6123);function a(e,t,r){var a=(0,n.J)(e,t,"set");return!function(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw TypeError("attempted to set read only private field");t.value=r}}(e,a,r),r}},9074:function(e,t,r){r.d(t,{i:function(){return n}});let n=parseInt(r(2079).UZH.replace(/\D+/g,""))}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5221],{5221:function(e,t,n){n.r(t),n.d(t,{Model:function(){return c}});var s=n(7437);n(2265);var r=n(1106);let o=n(257).env.ASSET_PREFIX||"./",a="".concat(o,"/boats/ship/assets/scene-transformed.glb");function c(e){let{nodes:t,materials:n}=(0,r.L)(a,"".concat(o,"/draco/"));return(0,s.jsx)("group",{...e,dispose:null,children:(0,s.jsx)("mesh",{geometry:t.Object_10.geometry,material:n.material_0,position:[0,-.55,0],rotation:[-1.558,.002,3.139],scale:.004})})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5322],{4907:function(e,t,n){n.d(t,{Z:function(){return v}});var a=n(7437),r=n(2265),i=n(5476),o=n(1),l=n(2079),s=n(3082),u=n(3321);let c=r.memo(e=>{let{radius:t,isOuter:n,markerColorPrimary:s,markerColorGreen:u,markerColorRed:c}=e,d=(0,r.useMemo)(()=>{let e=[];for(let r=0;r<360;r+=10){let d=l.M8C.degToRad(r-90),g=r%30==0,h=n?g?.4:.2:g?.3:.15,v=(t+.5*h+.2)*Math.cos(d),p=(t+.5*h+.2)*Math.sin(d),m=n&&r>0&&r<61,f=n&&r>=300&&r<360,M=m?u:f?c:s;if(!n&&g){let t;t=0===r?"N":90===r?"E":180===r?"S":270===r?"W":r.toString(),e.push((0,a.jsx)(i.x,{characters:"NESW0123456789",position:[v,.01,p],color:s,fontSize:.5,rotation:[-Math.PI/2,0,Math.PI/2-d],font:"fonts/Roboto-Bold.ttf",anchorY:"middle",children:t},"text-".concat(r)))}else e.push((0,a.jsx)(o.aL,{args:[h/2,16,16],position:[v,0,p],children:(0,a.jsx)("meshBasicMaterial",{color:M})},"marker-".concat(n?"outer":"inner","-").concat(r)))}return e},[t,n,s,u,c]);return(0,a.jsx)(a.Fragment,{children:d})});c.displayName="StaticMarkers";let d=r.memo(e=>{let{innerRadius:t,outerRadius:n,dialColor:r,opacity:i=1,transparent:s=!1}=e;return(0,a.jsx)(o.FM,{args:[t,n,64],rotation:[Math.PI/2,0,0],children:(0,a.jsx)("meshBasicMaterial",{color:r,side:l.ehD,transparent:s,opacity:i})})});d.displayName="StaticRing";let g=e=>{let{outerRadius:t,innerRadius:n}=e,i=s.FV,o=s.HH,{nightMode:l,getSignalKValue:g,getBoatRotationAngle:h}=(0,s.yC)(),v=l?s.eF:16777215,p=h(),m=u.Z.get("compassNorthUp"),f=(0,r.useMemo)(()=>({innerRadius:n,outerRadius:t,dialColor:v,markerColorPrimary:0,markerColorGreen:i,markerColorRed:o}),[n,t,v,0,i,o]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("group",{rotation:[0,p+(m?0:Math.PI),0],children:[(0,a.jsx)(d,{innerRadius:f.innerRadius,outerRadius:f.outerRadius,dialColor:f.dialColor}),(0,a.jsx)(c,{radius:f.innerRadius,isOuter:!1,markerColorPrimary:f.markerColorPrimary,markerColorGreen:f.markerColorGreen,markerColorRed:f.markerColorRed})]}),(0,a.jsxs)("group",{children:[(0,a.jsx)(d,{innerRadius:f.innerRadius+1,outerRadius:f.outerRadius+1,dialColor:f.dialColor,transparent:!0,opacity:.5}),(0,a.jsx)(c,{radius:f.innerRadius+1,isOuter:!0,markerColorPrimary:f.markerColorPrimary,markerColorGreen:f.markerColorGreen,markerColorRed:f.markerColorRed})]})]})};g.displayName="CompassDial";var h=n(5723),v=()=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(g,{outerRadius:5.6,innerRadius:5}),(0,a.jsx)(h.Z,{outerRadius:5.6+1.1})]})},4602:function(e,t,n){n.d(t,{M:function(){return u},a:function(){return h}});var a=n(7437),r=n(2265),i=n(4578),o=n(3321),l=n(3082);let s=(0,r.createContext)(),u=()=>(0,r.useContext)(s),c=(e,t,n,a)=>{let r=n.split(".").reduce((e,t)=>null==e?void 0:e[t],a);void 0!==r&&(e[t]=r)},d=e=>{if(!e)return 0;let t=e.heading||e.headingMagnetic;return e.cog||e.cogMagnetic||t||0},g=(e,t)=>{if(e.length!==t.length)return!0;let n=new Set(e.map(e=>e.mmsi)),a=new Set(t.map(e=>e.mmsi));if(n.size!==a.size)return!0;for(let e of n)if(!a.has(e))return!0;return!1},h=e=>{let{children:t}=e,[n,u]=(0,r.useState)({}),[h,v]=(0,r.useState)([]),p=(0,r.useRef)(null),m=(0,r.useRef)({}),f=(0,r.useRef)(null),{getSignalKValue:M,convertLatLonToXY:b}=(0,l.yC)(),x=(0,r.useRef)(),R=(0,r.useRef)(),y=(0,r.useCallback)(e=>{let t=M("navigation.position");if(e.latitude&&e.longitude&&t&&t.latitude&&t.longitude&&e.latitude!=t.latitude&&e.longitude!=t.longitude){let n=o.Z.get("aisLengthScalingFactor")||.7,{x:a,y:r}=b({lat:e.latitude,lon:e.longitude},{lat:t.latitude,lon:t.longitude});e.sceneX=a*n,e.sceneZ=-r*n,e.rotationAngleY=d(e),e.distanceMeters=Math.sqrt(a**2+r**2);let i=e.visible;return e.visible=e.distanceMeters>10&&e.distanceMeters<=5e3,i!==e.visible}return!1},[M,b]),j=(0,r.useCallback)(()=>{f.current&&(clearTimeout(f.current),f.current=null);let e=Object.values(n).filter(e=>e.visible);g(h,e)&&(console.log("Updating visible vessels: ".concat(e.length," vessels")),v(e))},[n,h]),k=(0,r.useCallback)(()=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{j(),f.current=null},100)},[j]);return(0,r.useEffect)(()=>{x.current=y,R.current=k},[y,k]),(0,r.useEffect)(()=>{let e=setInterval(()=>{let e=Date.now();u(t=>{let n=!1,a={...t};return(Object.entries(a).forEach(t=>{let[r,i]=t;e-i.lastUpdate>6e5&&(delete a[r],n=!0)}),n)?(k(),a):t})},6e4);return()=>clearInterval(e)},[k]),(0,r.useEffect)(()=>{let e=async e=>{console.log("Fetching static vessel info...");try{let t=await e.API().then(e=>e.vessels()),n=Object.entries(t).map(e=>{let[t,n]=e,a={mmsi:t};return c(a,"name","name",n),c(a,"latitude","navigation.position.value.latitude",n),c(a,"longitude","navigation.position.value.longitude",n),c(a,"sog","navigation.speedOverGround.value",n),c(a,"cog","navigation.courseOverGroundTrue.value",n),c(a,"cogMagnetic","navigation.courseOverGroundMagnetic.value",n),c(a,"heading","navigation.headingTrue.value",n),c(a,"headingMagnetic","navigation.headingMagnetic.value",n),c(a,"length","design.length.value.overall",n),c(a,"beam","design.beam.value",n),c(a,"callsign","communication.callsignVhf",n),c(a,"shipType","design.aisShipType.value.id",n),a.lastUpdate=Date.now(),a.distanceMeters=null,a.sceneX=null,a.sceneZ=null,a.rotationAngleY=null,a.visible=!1,a}),a={};if(n.forEach(e=>{e.mmsi&&"self"!=e.mmsi&&(null!==e.latitude||null!==e.longitude)&&(x.current(e),a[e.mmsi]=e)}),console.log("Fetched ".concat(n.length," vessels.")),Object.keys(a).length>0){console.log("Initializing AIS data with ".concat(Object.keys(a).length," vessels")),u(a);let e=Object.values(a).filter(e=>e.visible);v(e),console.log("".concat(e.length," vessels initially visible"))}}catch(e){console.error("Error fetching static info:",e)}},t=e=>{if(!(null==e?void 0:e.updates)){console.warn("Missing delta or no updates:",e);return}let t=e=>({mmsi:e,name:"unknown",latitude:null,longitude:null,sog:null,cog:null,cogMagnetic:null,heading:null,headingMagnetic:null,distanceMeters:null,sceneX:null,sceneZ:null,rotationAngleY:null,visible:!1,length:null,beam:null,shipType:null}),n=e.context.replace("vessels.","");if(!n){console.warn("Update without MMSI context:",e);return}m.current[n]=Date.now(),u(a=>{let r=a[n]||t(n);r.lastUpdate=m.current[n];let i=!1,o=!1;return e.updates.forEach(e=>{e.values.forEach(e=>{switch(e.path){case"name":r.name=e.value;break;case"navigation.position":r.latitude=e.value.latitude,r.longitude=e.value.longitude,i=!0;break;case"navigation.speedOverGround":r.sog=e.value;break;case"navigation.courseOverGroundTrue":r.cog=e.value,o=!0;break;case"navigation.courseOverGroundMagnetic":r.cogMagnetic=e.value,o=!0;break;case"navigation.headingTrue":r.heading=e.value,o=!0;break;case"navigation.headingMagnetic":r.headingMagnetic=e.value,o=!0}})}),(x.current(r)||i||o)&&R.current(),{...a,[n]:r}})};return(async()=>{try{let{signalkUrl:n}=o.Z.getAll();if(console.log("SignalK URL:",n),!n)throw Error("SignalK URL is undefined or invalid.");let[a,r]=n.replace(/https?:\/\//,"").split(":");console.log("Connecting to SignalK at: ".concat(a,", port: ").concat(r));let l=new i.default({hostname:a||"localhost",port:parseInt(r)||3e3,useTLS:n.startsWith("https"),reconnect:!0,autoConnect:!1,notifications:!1,subscriptions:[{context:"vessels.*",subscribe:[{path:"navigation.position"},{path:"navigation.speedOverGround"},{path:"navigation.courseOverGroundTrue"},{path:"navigation.courseOverGroundMagnetic"},{path:"navigation.headingTrue"},{path:"navigation.headingMagnetic"}]}]});p.current=l,await l.connect(),console.log("SignalK client connected."),await e(l),l.on("delta",t)}catch(e){console.error("Error connecting to SignalK:",e)}})(),()=>{var e;console.log("Disconnecting SignalK client..."),f.current&&clearTimeout(f.current),null===(e=p.current)||void 0===e||e.disconnect()}},[]),(0,a.jsx)(s.Provider,{value:{aisData:n,vesselIds:h},children:t})}},5723:function(e,t,n){var a=n(7437),r=n(2265),i=n(718),o=n.n(i),l=n(3082),s=n(2079),u=n(5476);let c={TRUE_WIND:1,APP_WIND:1},d=e=>{let{position:t=[0,0,0],rotation:n=[0,0,0],speed:r,color:i="#ffffff",fontSize:o=.5,textPosition:l=[0,.8,0],arrowSize:c=1}=e;return(0,a.jsxs)("group",{position:t,rotation:n,children:[(0,a.jsx)(u.x,{characters:".0123456789",color:i,fontSize:o*c,position:l,font:"fonts/Roboto-Bold.ttf",anchorX:"center",anchorY:"middle",children:r.toFixed(1)}),(0,a.jsxs)("mesh",{children:[(0,a.jsx)("shapeGeometry",{args:[new s.bnF([new s.FM8(0,0),new s.FM8(.5*c*Math.cos(5*Math.PI/6),.5*c*Math.sin(5*Math.PI/6)),new s.FM8(0,-.577*c),new s.FM8(-.5*c*Math.cos(5*Math.PI/6),.5*c*Math.sin(5*Math.PI/6)),new s.FM8(0,0)])]}),(0,a.jsx)("meshStandardMaterial",{color:i,side:s.ehD})]})]})};d.propTypes={position:o().oneOfType([o().instanceOf(s.Pa4),o().arrayOf(o().number)]).isRequired,rotation:o().arrayOf(o().number).isRequired,speed:o().number.isRequired,color:o().oneOfType([o().string,o().number]).isRequired,fontSize:o().number,textPosition:o().arrayOf(o().number),arrowSize:o().number};let g=e=>{let{outerRadius:t}=e,{getSignalKValue:n}=(0,l.yC)(),i=Math.PI/2-n("environment.wind.angleTrueGround")||0,o=(0,l.HQ)(n("environment.wind.speedOverGround"))||0,u=Math.PI/2-n("environment.wind.angleApparent")||0,g=(0,l.HQ)(n("environment.wind.speedApparent"))||0,h=(0,r.useMemo)(()=>new s.Pa4((t+.7)*Math.cos(i),0,-(t+.7)*Math.sin(i)),[t,i]),v=(0,r.useMemo)(()=>new s.Pa4((t+.7)*Math.cos(u),0,-(t+.7)*Math.sin(u)),[t,u]);return(0,a.jsxs)("group",{children:[o>0&&(0,a.jsx)(d,{position:h,rotation:[-Math.PI/2,0,-(Math.PI/2-i)],speed:o,color:"#0000FF",fontSize:c.TRUE_WIND}),g>0&&(0,a.jsx)(d,{position:v,rotation:[-Math.PI/2,0,-(Math.PI/2-u)],speed:g,color:l.gK,fontSize:c.APP_WIND})]})};g.propTypes={outerRadius:o().number.isRequired},t.Z=g}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5487],{5487:function(t,e,i){i.r(e),i.d(e,{default:function(){return s}});var l=i(7437),n=i(2265),a=i(3082);function s(){let t=(0,n.useRef)(null),{nightMode:e,getSignalKValue:i}=(0,a.yC)(),[s,o]=(0,n.useState)("canvas"),[r,c]=(0,n.useState)(0),[h,d]=(0,n.useState)(0),[u,v]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let e;let l=t.current,n=null;if(!l||"canvas"!==s||(n=l.getContext("2d")))return function t(){let l=i("navigation.attitude")||{},o=(0,a.Ux)(null==l?void 0:l.roll)||0,r=(0,a.Ux)(null==l?void 0:l.pitch)||0,h=(0,a.Ux)(null==l?void 0:l.yaw)||0;c(o),d(r),v(h),"canvas"===s&&function(t,e,i){if(!n)return;n.clearRect(0,0,80,80),n.lineWidth=1,n.strokeStyle=a.n5,n.lineWidth=2,n.beginPath(),n.arc(40,40,38,0,2*Math.PI),n.stroke(),n.save(),n.translate(40,40),n.strokeStyle="#FFFFFF",n.lineWidth=1;for(let t=0;t<360;t+=15){let e=t*Math.PI/180,i=t%90==0,l=35-(i?5:2),a=35*Math.cos(e),s=35*Math.sin(e),o=l*Math.cos(e),r=l*Math.sin(e);n.beginPath(),n.moveTo(a,s),n.lineTo(o,r),n.lineWidth=i?1.5:.75,n.stroke()}n.restore(),n.save(),n.beginPath(),n.arc(40,40,32,0,2*Math.PI),n.clip(),n.translate(40,40),n.rotate(t*Math.PI/180);let l=.35555555555555557;n.translate(0,e*l),n.fillStyle=a.n5,n.fillRect(-48,0,96,64),n.beginPath(),n.moveTo(-48,0),n.lineTo(48,0),n.strokeStyle=a.gK,n.lineWidth=1.5,n.stroke(),n.strokeStyle=a.vd,n.lineWidth=.75;for(let t=-60;t<=60;t+=20){if(0===t)continue;let e=-t*l;n.beginPath(),n.moveTo(-7.5,e),n.lineTo(7.5,e),n.stroke()}n.restore(),n.save(),n.translate(40,40),n.rotate(i*Math.PI/180),n.lineWidth=1,n.beginPath(),n.moveTo(0,-10),n.lineTo(5,5),n.lineTo(-5,5),n.closePath(),n.fillStyle=a.gK,n.fill(),n.strokeStyle=a.vd,n.stroke(),n.restore()}(o,r,h),e=requestAnimationFrame(t)}(),()=>{cancelAnimationFrame(e)}},[i,s]),(0,l.jsx)("div",{className:"mt-4 cursor-pointer",style:{width:"".concat(80,"px"),height:"".concat(80,"px"),boxSizing:"content-box"},onClick:()=>{o(t=>"canvas"===t?"text":"canvas")},title:"Click to toggle view",children:"canvas"===s?(0,l.jsx)("canvas",{ref:t,width:80,height:80}):(0,l.jsxs)("div",{className:"text-sm font-bold cursor-pointer flex flex-col items-end w-full ".concat(e?"text-oNight":"text-white"),children:[(0,l.jsxs)("div",{className:"text-right",children:["Roll: ",r.toFixed(1),"\xb0"]}),(0,l.jsxs)("div",{className:"text-right",children:["Pitch: ",h.toFixed(1),"\xb0"]}),(0,l.jsxs)("div",{className:"text-right",children:["Yaw: ",u.toFixed(1),"\xb0"]})]})})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5751],{5751:function(e,t,l){l.r(t);var a=l(7437),n=l(3082),c=l(2265);let o={SOG:"navigation.speedOverGround",VMG:"performance.velocityMadeGood",STW:"navigation.speedThroughWater",POL:"performance.polarSpeedRatio"};t.default=()=>{let{nightMode:e,getSignalKValue:t}=(0,n.yC)(),[l,r]=(0,c.useState)("SOG"),s=(0,c.useMemo)(()=>{let e={};for(let[l,a]of Object.entries(o)){let c=t(a);null!=c&&(e[l]=(0,n.$)(c))}return e},[t]),i=Object.keys(s),d=void 0!==s[l]?l:i[0],x=s[d],u=(0,c.useCallback)(()=>{if(0===i.length)return;let e=(i.indexOf(d)+1)%i.length;r(i[e])},[i,d]),h=e?"text-oNight":"text-oGray";return 0===i.length?(0,a.jsxs)("div",{className:"mt-4",children:[(0,a.jsx)("div",{className:"text-6xl font-bold text-gray-400",children:"--"}),(0,a.jsx)("div",{className:"text-lg ".concat(h),children:"NO DATA"})]}):(0,a.jsxs)("div",{className:"mt-4",children:[(0,a.jsx)("div",{className:"text-6xl font-bold cursor-pointer ".concat(e?"text-oNight":"text-white"),onClick:u,role:"button",tabIndex:0,"aria-label":"Current speed: ".concat(x," ").concat(d,". Click to change speed type."),children:(null==x?void 0:x.toFixed(1))||"--"}),(0,a.jsx)("div",{className:"text-lg ".concat(h),children:d})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6108],{1912:function(e,l,s){s.d(l,{V9:function(){return n},_9:function(){return r},xf:function(){return i},xm:function(){return o}});var t=s(7437);s(2265);var a=s(1268);let r=e=>{let{label:l,value:s,unit:r,min:i=0,max:n=100,icon:o,warningThreshold:c,criticalThreshold:d,size:x=120,showValue:u=!0}=e,m=null==s||isNaN(s)?"N/A":s,h="N/A"!==m,g=h?Math.min(100,Math.max(0,(s-i)/(n-i)*100)):0;return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center bg-oGray2 rounded-lg p-4",children:[(0,t.jsxs)("div",{className:"relative",style:{width:x,height:x},children:[(0,t.jsxs)("svg",{style:{width:x,height:x},className:"transform -rotate-90",viewBox:"0 0 100 100",children:[(0,t.jsx)("circle",{cx:"50",cy:"50",r:"40",fill:"none",stroke:"#424242",strokeWidth:"8"}),(0,t.jsx)("circle",{cx:"50",cy:"50",r:"40",fill:"none",stroke:h?void 0!==d&&s>=d?"#cc000c":void 0!==c&&s>=c?"#ffbe00":"#0fcd4f":"#989898",strokeWidth:"8",strokeLinecap:"round",strokeDasharray:"".concat(2*Math.PI*40),strokeDashoffset:"".concat(h?2*Math.PI*40*(1-g/100):2*Math.PI*40),className:"transition-all duration-500"})]}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[o&&(0,t.jsx)(a.G,{icon:o,className:"text-oGray text-lg mb-1"}),u&&(0,t.jsx)("div",{className:"text-2xl font-bold ".concat(h?"text-white":"text-oGray"),children:m}),u&&h&&r&&(0,t.jsx)("div",{className:"text-xs text-oGray",children:r})]})]}),(0,t.jsx)("div",{className:"text-oGray text-sm mt-2 text-center",children:l})]})},i=e=>{let{label:l,value:s,unit:r,min:i=0,max:n=100,icon:o,warningThreshold:c,criticalThreshold:d,showMinMax:x=!1}=e,u=null==s||isNaN(s)?"N/A":"".concat(s).concat(r?" ".concat(r):""),m="N/A"!==u,h=m?Math.min(100,Math.max(0,(s-i)/(n-i)*100)):0;return(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsxs)("div",{className:"flex items-center text-oGray text-sm",children:[o&&(0,t.jsx)(a.G,{icon:o,className:"mr-2 fa-fw"}),l]}),(0,t.jsx)("div",{className:"font-bold text-lg ".concat(m?"text-white":"text-oGray"),children:u})]}),(0,t.jsx)("div",{className:"relative w-full bg-oGray rounded-full h-4",children:(0,t.jsx)("div",{className:"h-4 rounded-full transition-all duration-500 ".concat(m?void 0!==d&&s>=d?"bg-oRed":void 0!==c&&s>=c?"bg-oYellow":"bg-oGreen":"bg-oGray2"),style:{width:"".concat(h,"%")}})}),x&&(0,t.jsxs)("div",{className:"flex justify-between text-xs text-oGray mt-1",children:[(0,t.jsx)("span",{children:i}),(0,t.jsx)("span",{children:n})]})]})},n=e=>{let{label:l,value:s,unit:r,icon:i,warningThreshold:n,criticalThreshold:o,reversed:c=!1}=e,d=null==s||isNaN(s)?"N/A":s,x="N/A"!==d;return(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-3 flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center text-oGray text-sm",children:[i&&(0,t.jsx)(a.G,{icon:i,className:"mr-2 fa-fw"}),l]}),(0,t.jsx)("div",{className:"font-bold text-xl ".concat((()=>{if(!x)return"text-oGray";if(c){if(void 0!==o&&s<=o)return"text-oRed";if(void 0!==n&&s<=n)return"text-oYellow"}else{if(void 0!==o&&s>=o)return"text-oRed";if(void 0!==n&&s>=n)return"text-oYellow"}return"text-oGreen"})()),children:"N/A"!==d?"".concat(d).concat(r?" ".concat(r):""):"N/A"})]})},o=e=>{let{label:l,value:s,unit:r,icon:i,max:n=100,warningThreshold:o,criticalThreshold:c}=e,d=null==s||isNaN(s)?"N/A":Math.round(s),x="N/A"!==d,u=x?Math.min(100,s/n*100):0;return(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-6 text-center",children:[i&&(0,t.jsx)(a.G,{icon:i,className:"text-3xl text-oGray mb-3"}),(0,t.jsx)("div",{className:"text-6xl font-bold mb-2 ".concat(x?void 0!==c&&s>=c?"text-oRed":void 0!==o&&s>=o?"text-oYellow":"text-oGreen":"text-oGray"),children:d}),x&&r&&(0,t.jsx)("div",{className:"text-oGray text-xl mb-4",children:r}),(0,t.jsx)("div",{className:"text-oGray text-lg mb-3",children:l}),(0,t.jsx)("div",{className:"w-full bg-oGray rounded-full h-2",children:(0,t.jsx)("div",{className:"h-2 rounded-full transition-all duration-500 ".concat(x?c&&s>=c?"bg-oRed":o&&s>=o?"bg-oYellow":"bg-oGreen":"bg-oGray2"),style:{width:"".concat(u,"%")}})})]})}},6108:function(e,l,s){s.r(l),s.d(l,{default:function(){return p}});var t=s(7437),a=s(2265),r=s(3082),i=s(3321),n=s(1268),o=s(5217);let c=e=>null==e?null:60*e,d=e=>{if(null==e)return null;let l=(e/3600).toFixed(1);return"".concat(l," h")},x=e=>null==e?null:Math.round(36e5*e),u=e=>null==e?null:(e/1e5).toFixed(1),m=e=>null==e?null:Math.round(100*e),h=e=>null==e?null:Math.round((e-273.15)*10)/10,g=e=>null==e?null:Math.round(180*e/Math.PI*10)/10;var v=s(1912),p=()=>{var e,l,s,p,j,N,b,f,y,w,T,G,M,P,k,C,A,S,L,R,E,V,B,O,_;let{getSignalKValue:F}=(0,r.yC)(),Z=i.Z.get("debugMode"),[z,D]=(0,a.useState)("0"),[I,q]=(0,a.useState)("engine"),[H,Y]=(0,a.useState)([]),[$,W]=(0,a.useState)(!1),K=(0,a.useCallback)(()=>{let e=[];for(let t=0;t<=3;t++){let a=F("propulsion.".concat(t,".revolutions")),r=F("propulsion.".concat(t,".runTime"));if(0===t&&null===a&&null===r){var l,s;a=null!==(l=F("propulsion.port.revolutions"))&&void 0!==l?l:F("propulsion.main.revolutions"),r=null!==(s=F("propulsion.port.runTime"))&&void 0!==s?s:F("propulsion.main.runTime")}else 1===t&&null===a&&null===r&&(a=F("propulsion.starboard.revolutions"),r=F("propulsion.starboard.runTime"));(null!==a||null!==r||Z)&&e.push({id:t.toString(),name:0===t?"Port/Main Engine":1===t?"Starboard Engine":"Engine ".concat(t),hasData:!0})}return e.length>0?e:[{id:"0",name:"Main Engine",hasData:!1}]},[F,Z]);(0,a.useEffect)(()=>{Y(K())},[K]);let U=(0,a.useCallback)(e=>{let l=F("propulsion.".concat(z,".").concat(e));return null===l&&"0"===z?null===(l=F("propulsion.port.".concat(e)))&&(l=F("propulsion.main.".concat(e))):null===l&&"1"===z&&(l=F("propulsion.starboard.".concat(e))),l},[z,F]),X=(0,a.useCallback)(()=>{var e,l;let s=U("coolantTemperature"),t=U("temperature"),a=F("propulsion.port.temperature"),r=s;null==r&&(r=t),null==r&&(r=a);let i=U("exhaustTemperature"),n=F("propulsion.main.exhaustTemperature");return{rpm:c(U("revolutions")),runTime:d(U("runTime")),coolantTemp:h(r),coolantPressure:u(U("coolantPressure")),boostPressure:u(U("boostPressure")),oilPressure:u(U("oilPressure")),oilTemp:h(U("oilTemperature")),fuelRate:x(U("fuel.rate")),fuelPressure:u(U("fuel.pressure")),load:m(U("load")),torque:m(U("torque")),exhaustTemp:h(null!=i?i:n),intakeTemp:h(U("intakeManifoldTemperature")),tilt:g(U("tilt")),state:U("state"),gear:U("transmission.gear"),transOilPressure:u(U("transmission.oilPressure")),transOilTemp:h(U("transmission.oilTemperature")),batteryVoltage:F("electrical.batteries.0.voltage"),batteryCurrent:F("electrical.batteries.0.current"),alternatorVoltage:null!==(e=F("electrical.alternators.".concat(z,".voltage")))&&void 0!==e?e:F("propulsion.port.alternatorVoltage"),alternatorCurrent:null!==(l=F("electrical.alternators.".concat(z,".current")))&&void 0!==l?l:F("propulsion.port.alternatorCurrent"),fuelLevel:m(F("tanks.fuel.0.currentLevel")),fuelCapacity:F("tanks.fuel.0.capacity")}},[z,F,U])(),J=F("electrical.batteries.1.current");return(0,t.jsxs)("div",{className:"flex flex-col h-full rightPaneBg overflow-auto",children:[(0,t.jsx)("div",{className:"flex border-b border-oGray2",children:[{id:"engine",label:"Engine",icon:o.yn$},{id:"transmission",label:"Transmission",icon:o.Kb6},{id:"electrical",label:"Electrical",icon:o.BDt},{id:"fuel",label:"Fuel System",icon:o.q16},{id:"warnings",label:"Warnings",icon:o.eHv}].map(e=>(0,t.jsxs)("button",{onClick:()=>q(e.id),className:"flex-1 py-3 px-4 text-sm font-medium flex items-center justify-center transition-all ".concat(I===e.id?"text-oGreen border-b-2 border-oGreen":"text-oGray hover:text-oBlue"),children:[(0,t.jsx)(n.G,{icon:e.icon,className:"mr-2"}),e.label]},e.id))}),(0,t.jsxs)("div",{className:"flex-1 p-4 overflow-auto",children:["engine"===I&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsxs)("h2",{className:"text-xl font-bold text-white flex items-center",children:[(0,t.jsx)(n.G,{icon:o.yn$,className:"mr-2 text-oBlue"}),"Engine Systems"]}),(0,t.jsx)("select",{value:z,onChange:e=>D(e.target.value),className:"bg-oGray2 px-3 py-2 rounded text-white border border-oGray focus:outline-none focus:ring-1 focus:ring-oBlue",children:H.map(e=>(0,t.jsx)("option",{value:e.id,children:e.name},e.id))})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[(0,t.jsx)(v.xm,{label:"Engine RPM",value:X.rpm,unit:"RPM",icon:o.HLz,max:4e3,warningThreshold:3e3,criticalThreshold:3500}),(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-6 text-center",children:[(0,t.jsx)(n.G,{icon:o.SZw,className:"text-3xl text-gray-400 mb-3"}),(0,t.jsx)("div",{className:"text-6xl font-bold text-white mb-2",children:X.runTime||"N/A"}),(0,t.jsx)("div",{className:"text-gray-400 text-lg",children:"Engine Hours"})]}),(0,t.jsx)(v._9,{label:"Engine Load",value:X.load,unit:"%",min:0,max:100,icon:o.Stf,warningThreshold:70,criticalThreshold:85,size:180}),(0,t.jsx)(v._9,{label:"Torque",value:X.torque,unit:"%",min:0,max:100,icon:o.go9,warningThreshold:75,criticalThreshold:90,size:180})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.ccn,className:"mr-2 text-orange-500"}),"Temperature Monitoring"]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,t.jsx)(v._9,{label:"Coolant",value:X.coolantTemp,unit:"\xb0C",min:0,max:120,icon:o.jOV,warningThreshold:85,criticalThreshold:95,size:160}),(0,t.jsx)(v._9,{label:"Oil",value:X.oilTemp,unit:"\xb0C",min:0,max:150,icon:o.b0x,warningThreshold:110,criticalThreshold:130,size:160}),(0,t.jsx)(v._9,{label:"Exhaust",value:X.exhaustTemp,unit:"\xb0C",min:0,max:600,icon:o.Rpv,warningThreshold:450,criticalThreshold:550,size:160}),(0,t.jsx)(v._9,{label:"Intake",value:X.intakeTemp,unit:"\xb0C",min:0,max:100,icon:o.r5q,warningThreshold:60,criticalThreshold:80,size:160})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.ESn,className:"mr-2 text-oBlue"}),"Pressure Systems"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(v.xf,{label:"Oil Pressure",value:X.oilPressure,unit:"bar",min:0,max:6,icon:o.b0x,warningThreshold:2.5,criticalThreshold:2,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Coolant Pressure",value:X.coolantPressure,unit:"bar",min:0,max:3,icon:o.L02,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Boost Pressure",value:X.boostPressure,unit:"bar",min:0,max:2.5,icon:o.FPD,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Fuel Pressure",value:X.fuelPressure,unit:"bar",min:0,max:5,icon:o.q16,warningThreshold:2.5,criticalThreshold:2,showMinMax:!0})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsx)(v.V9,{label:"Engine State",value:X.state||"Unknown",icon:o.yn$}),(0,t.jsx)(v.V9,{label:"Tilt Angle",value:X.tilt,unit:"\xb0",icon:o.KxN}),(0,t.jsx)(v.V9,{label:"Intake Manifold",value:X.intakeTemp,unit:"\xb0C",icon:o.r5q})]})]}),"transmission"===I&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-6 text-center",children:[(0,t.jsx)(n.G,{icon:o.Kb6,className:"text-5xl text-blue-400 mb-4"}),(0,t.jsx)("div",{className:"text-oGray text-lg mb-2",children:"Current Gear"}),(0,t.jsx)("div",{className:"text-4xl font-bold text-white",children:-1===X.gear?"Reverse":0===X.gear?"Neutral":X.gear?"Forward ".concat(X.gear):"N/A"})]}),(0,t.jsx)(v._9,{label:"Oil Pressure",value:X.transOilPressure,unit:"bar",min:0,max:6,icon:o.b0x,warningThreshold:2.5,criticalThreshold:2,size:180}),(0,t.jsx)(v._9,{label:"Oil Temperature",value:X.transOilTemp,unit:"\xb0C",min:0,max:120,icon:o.ccn,warningThreshold:85,criticalThreshold:95,size:180})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(v.xf,{label:"Transmission Oil Pressure",value:X.transOilPressure,unit:"bar",min:0,max:6,icon:o.b0x,warningThreshold:2.5,criticalThreshold:2,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Transmission Oil Temperature",value:X.transOilTemp,unit:"\xb0C",min:0,max:120,icon:o.ccn,warningThreshold:85,criticalThreshold:95,showMinMax:!0})]})]}),"electrical"===I&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.RoX,className:"mr-2 text-blue-500"}),"Battery Systems"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h4",{className:"text-lg text-oGray",children:"Starter Battery"}),(0,t.jsx)(v.xf,{label:"Voltage",value:X.batteryVoltage,unit:"V",min:10,max:15,icon:o.RoX,warningThreshold:11.8,criticalThreshold:11.5,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Current",value:X.batteryCurrent,unit:"A",min:-50,max:50,icon:o.BDt,showMinMax:!0})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h4",{className:"text-lg text-oGray",children:"House Battery"}),(0,t.jsx)(v.xf,{label:"Voltage",value:F("electrical.batteries.1.voltage"),unit:"V",min:10,max:15,icon:o.RoX,warningThreshold:11.8,criticalThreshold:11.5,showMinMax:!0}),(0,t.jsx)(v.xf,{label:"Current",value:"number"==typeof J?Math.round(10*J)/10:J,unit:"A",min:-50,max:50,icon:o.BDt,showMinMax:!0})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.BDt,className:"mr-2 text-oYellow"}),"Alternator System"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(v._9,{label:"Alternator Voltage",value:X.alternatorVoltage,unit:"V",min:10,max:16,icon:o.BDt,warningThreshold:15,criticalThreshold:15.5,size:180}),(0,t.jsx)(v._9,{label:"Alternator Current",value:X.alternatorCurrent,unit:"A",min:0,max:100,icon:o.BDt,size:180})]})]})]}),"fuel"===I&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.q16,className:"mr-2 text-oYellow"}),"Fuel System"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsx)(v._9,{label:"Fuel Rate",value:X.fuelRate,unit:"L/h",min:0,max:50,icon:o.q16,size:180}),(0,t.jsx)(v._9,{label:"Fuel Pressure",value:X.fuelPressure,unit:"bar",min:0,max:5,icon:o.ESn,warningThreshold:2.5,criticalThreshold:2,size:180}),(0,t.jsx)(v._9,{label:"Tank Level",value:X.fuelLevel,unit:"%",min:0,max:100,icon:o.jZZ,warningThreshold:30,criticalThreshold:15,size:180})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.jZZ,className:"mr-2 text-oBlue"}),"Fuel Tank Details"]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(v.xf,{label:"Fuel Level",value:X.fuelLevel,unit:"%",min:0,max:100,icon:o.jZZ,warningThreshold:30,criticalThreshold:15,showMinMax:!0}),(0,t.jsx)(v.V9,{label:"Tank Capacity",value:null===(e=X.fuelCapacity)||void 0===e?void 0:e.toFixed(0),unit:"L",icon:o.jZZ})]}),null!==X.fuelLevel&&null!==X.fuelCapacity&&(0,t.jsxs)("div",{className:"mt-4 grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,t.jsx)(v.V9,{label:"Current Volume",value:(X.fuelLevel/100*X.fuelCapacity).toFixed(0),unit:"L",icon:o.jZZ}),(0,t.jsx)(v.V9,{label:"Remaining Range (est.)",value:X.fuelRate>0&&null!==X.fuelLevel&&null!==X.fuelCapacity?(X.fuelLevel/100*X.fuelCapacity/X.fuelRate).toFixed(1):"N/A",unit:X.fuelRate>0?"h":"",icon:o.SZw})]})]})]}),"warnings"===I&&(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-4",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white flex items-center",children:[(0,t.jsx)(n.G,{icon:o.eHv,className:"mr-2 text-oRed"}),"System Status & Warnings"]}),(0,t.jsx)("button",{onClick:()=>W(!$),className:"px-3 py-1 text-sm bg-oGray3 text-white rounded hover:bg-oBlue transition-colors",children:$?"Show Active Only":"Show All"})]}),(()=>{let e=[];["chargeIndicator","checkEngine","commError","eGRSystem","emergencyStopMode","highBoostPressure","lowCoolantLevel","lowFuelPressure","lowOilLevel","lowOilPressure","lowSystemVoltage","maintenanceNeeded","neutralStartProtect","overTemperature","powerReduction","preheatIndicator","revLimitExceeded","shuttingDown","subOrSecondaryThrottle","throttlePositionSensor","warningLevel1","warningLevel2","waterFlow","waterInFuel"].forEach(l=>{let s=F("notifications.propulsion.".concat(z,".").concat(l));if(s||"0"!==z)s||"1"!==z||(s=F("notifications.propulsion.starboard.".concat(l)));else{var t;s=null!==(t=F("notifications.propulsion.port.".concat(l)))&&void 0!==t?t:F("notifications.propulsion.main.".concat(l))}s&&"object"==typeof s&&e.push({type:l,...s})});let l=e.some(e=>"alert"===e.state||"warn"===e.state),s=e.some(e=>"alarm"===e.state||"emergency"===e.state);return 0===e.filter(e=>"normal"!==e.state).length?(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"text-center text-gray-400 py-8",children:[(0,t.jsx)(n.G,{icon:o.f8k,size:"3x",className:"mb-4 text-oGreen"}),(0,t.jsx)("h4",{className:"text-xl text-white mb-2",children:"All Systems Normal"}),(0,t.jsx)("p",{children:"No active warnings or alarms detected."}),(0,t.jsxs)("p",{className:"text-sm mt-2",children:["Monitoring ",e.length," notification paths"]})]}),$&&e.length>0&&(0,t.jsxs)("div",{className:"bg-green-900/20 border-l-4 border-green-500 p-4",children:[(0,t.jsxs)("div",{className:"flex items-center mb-2",children:[(0,t.jsx)(n.G,{icon:o.f8k,className:"text-green-500 mr-2"}),(0,t.jsxs)("h4",{className:"text-lg font-bold text-green-500",children:["ALL NORMAL STATUS (",e.length,")"]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 text-sm",children:e.map((e,l)=>(0,t.jsxs)("div",{className:"text-gray-300 bg-oGray3/30 p-2 rounded flex items-center",children:[(0,t.jsx)(n.G,{icon:o.f8k,className:"text-green-500 mr-2 text-xs"}),(0,t.jsx)("span",{className:"truncate",title:e.message,children:e.type.replace(/([A-Z])/g," $1").trim()})]},l))})]}),(0,t.jsxs)("div",{className:"text-sm text-gray-400 text-center",children:["Monitoring: notifications.propulsion.","0"===z?"0/port/main":"1"===z?"1/starboard":z,".*"]})]}):(0,t.jsxs)("div",{className:"space-y-4",children:[s&&(0,t.jsxs)("div",{className:"bg-red-900/30 border-l-4 border-red-500 p-4",children:[(0,t.jsxs)("div",{className:"flex items-center mb-2",children:[(0,t.jsx)(n.G,{icon:o.eHv,className:"text-red-500 mr-2"}),(0,t.jsx)("h4",{className:"text-lg font-bold text-red-500",children:"CRITICAL ALARMS"})]}),(0,t.jsx)("div",{className:"space-y-2",children:e.filter(e=>"alarm"===e.state||"emergency"===e.state).map((e,l)=>(0,t.jsxs)("div",{className:"text-white bg-oGray3/50 p-2 rounded",children:[(0,t.jsx)("div",{className:"font-semibold",children:e.type.replace(/([A-Z])/g," $1").trim()}),(0,t.jsx)("div",{className:"text-sm text-gray-300",children:e.message})]},l))})]}),l&&(0,t.jsxs)("div",{className:"bg-yellow-900/30 border-l-4 border-yellow-500 p-4",children:[(0,t.jsxs)("div",{className:"flex items-center mb-2",children:[(0,t.jsx)(n.G,{icon:o.eHv,className:"text-yellow-500 mr-2"}),(0,t.jsx)("h4",{className:"text-lg font-bold text-yellow-500",children:"WARNINGS"})]}),(0,t.jsx)("div",{className:"space-y-2",children:e.filter(e=>"alert"===e.state||"warn"===e.state).map((e,l)=>(0,t.jsxs)("div",{className:"text-white bg-oGray3/50 p-2 rounded",children:[(0,t.jsx)("div",{className:"font-semibold",children:e.type.replace(/([A-Z])/g," $1").trim()}),(0,t.jsx)("div",{className:"text-sm text-gray-300",children:e.message})]},l))})]}),$&&(0,t.jsxs)("div",{className:"bg-green-900/20 border-l-4 border-green-500 p-4",children:[(0,t.jsxs)("div",{className:"flex items-center mb-2",children:[(0,t.jsx)(n.G,{icon:o.f8k,className:"text-green-500 mr-2"}),(0,t.jsxs)("h4",{className:"text-lg font-bold text-green-500",children:["NORMAL STATUS (",e.filter(e=>"normal"===e.state).length,")"]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-2 text-sm",children:e.filter(e=>"normal"===e.state).map((e,l)=>(0,t.jsxs)("div",{className:"text-gray-300 bg-oGray3/30 p-2 rounded flex items-center",children:[(0,t.jsx)(n.G,{icon:o.f8k,className:"text-green-500 mr-2 text-xs"}),(0,t.jsx)("span",{className:"truncate",title:e.message,children:e.type.replace(/([A-Z])/g," $1").trim()})]},l))})]}),(0,t.jsxs)("div",{className:"text-sm text-gray-400",children:["Monitoring: notifications.propulsion.","0"===z?"0/port/main":"1"===z?"1/starboard":z,".*"]})]})})()]}),Z&&(0,t.jsxs)("div",{className:"bg-oGray2 rounded-lg p-4",children:[(0,t.jsxs)("h3",{className:"text-xl font-bold text-white mb-4 flex items-center",children:[(0,t.jsx)(n.G,{icon:o.klh,className:"mr-2 text-oBlue"}),"Debug Information - All Paths"]}),(0,t.jsx)("div",{className:"space-y-2 text-sm font-mono",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:[(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".revolutions:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(l=F("propulsion.".concat(z,".revolutions")))&&void 0!==l?l:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".runTime:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(s=F("propulsion.".concat(z,".runTime")))&&void 0!==s?s:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".coolantTemperature:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(p=F("propulsion.".concat(z,".coolantTemperature")))&&void 0!==p?p:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".coolantPressure:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(j=F("propulsion.".concat(z,".coolantPressure")))&&void 0!==j?j:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".oilPressure:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(N=F("propulsion.".concat(z,".oilPressure")))&&void 0!==N?N:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".oilTemperature:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(b=F("propulsion.".concat(z,".oilTemperature")))&&void 0!==b?b:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".exhaustTemperature:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(f=F("propulsion.".concat(z,".exhaustTemperature")))&&void 0!==f?f:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".intakeManifoldTemperature:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(y=F("propulsion.".concat(z,".intakeManifoldTemperature")))&&void 0!==y?y:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".boostPressure:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(w=F("propulsion.".concat(z,".boostPressure")))&&void 0!==w?w:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".load:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(T=F("propulsion.".concat(z,".load")))&&void 0!==T?T:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".torque:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(G=F("propulsion.".concat(z,".torque")))&&void 0!==G?G:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".state:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(M=F("propulsion.".concat(z,".state")))&&void 0!==M?M:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".fuel.rate:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(P=F("propulsion.".concat(z,".fuel.rate")))&&void 0!==P?P:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".fuel.pressure:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(k=F("propulsion.".concat(z,".fuel.pressure")))&&void 0!==k?k:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".transmission.gear:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(C=F("propulsion.".concat(z,".transmission.gear")))&&void 0!==C?C:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".transmission.oilPressure:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(A=F("propulsion.".concat(z,".transmission.oilPressure")))&&void 0!==A?A:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".transmission.oilTemperature:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(S=F("propulsion.".concat(z,".transmission.oilTemperature")))&&void 0!==S?S:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["propulsion.",z,".tilt:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(L=F("propulsion.".concat(z,".tilt")))&&void 0!==L?L:"null"}),(0,t.jsx)("div",{className:"text-gray-400",children:"electrical.batteries.0.voltage:"}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(R=F("electrical.batteries.0.voltage"))&&void 0!==R?R:"null"}),(0,t.jsx)("div",{className:"text-gray-400",children:"electrical.batteries.0.current:"}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(E=F("electrical.batteries.0.current"))&&void 0!==E?E:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["electrical.alternators.",z,".voltage:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(V=F("electrical.alternators.".concat(z,".voltage")))&&void 0!==V?V:"null"}),(0,t.jsxs)("div",{className:"text-gray-400",children:["electrical.alternators.",z,".current:"]}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(B=F("electrical.alternators.".concat(z,".current")))&&void 0!==B?B:"null"}),(0,t.jsx)("div",{className:"text-gray-400",children:"tanks.fuel.0.currentLevel:"}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(O=F("tanks.fuel.0.currentLevel"))&&void 0!==O?O:"null"}),(0,t.jsx)("div",{className:"text-gray-400",children:"tanks.fuel.0.capacity:"}),(0,t.jsx)("div",{className:"text-green-400",children:null!==(_=F("tanks.fuel.0.capacity"))&&void 0!==_?_:"null"})]})})]})]})]})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6154],{6154:function(e,o,t){t.r(o),t.d(o,{Model:function(){return n}});var s=t(7437);t(2265);var i=t(1106);let r=t(257).env.ASSET_PREFIX||"./",a="".concat(r,"/boats/optimist/assets/scene-transformed.glb");function n(e){let{nodes:o,materials:t}=(0,i.L)(a,"".concat(r,"/draco/"));return(0,s.jsxs)("group",{...e,dispose:null,children:[(0,s.jsx)("mesh",{geometry:o.body_body_0.geometry,material:t.body,position:[-.054,.272,-.022],rotation:[-1.571,.01,.01],scale:[1,5.242,1]}),(0,s.jsx)("mesh",{geometry:o.boom_aluminium_0.geometry,material:t.aluminium,position:[-.019,2.771,.964],rotation:[0,.01,-.01],scale:[.15,.15,4.609]}),(0,s.jsx)("mesh",{geometry:o.rubber_joint__0.geometry,material:t.rubber_joint__0,position:[-.008,1.407,3.453],rotation:[1.571,-.01,-.01],scale:[-.037,.056,.079]}),(0,s.jsx)("mesh",{geometry:o.sail_sail_0.geometry,material:t.sail,position:[.038,8.739,.698],rotation:[2.356,1.557,2.356],scale:[-5.728,4.361,4.361]})]})}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6412],{6412:function(e,t,a){a.r(t),a.d(t,{default:function(){return A}});var l=a(7437),o=a(1276),s=a(6496),n=a(166),r=a(3082),c=a(2079),i=a(2265),d=a(1268),u=a(5217),h=()=>{let{nightMode:e,setNightMode:t,states:a,toggleState:o}=(0,r.yC)(),s=(0,i.useRef)(a.autopilot),n=e?"text-oNight":"text-oGray",c=e=>{let t={autopilot:"autopilot"===e,anchorWatch:"anchorWatch"===e,parkingMode:"parkingMode"===e};Object.keys(t).forEach(e=>{o(e,t[e])})};return(0,i.useEffect)(()=>{a.autopilot&&!s.current&&o("showPolar",!0),s.current=a.autopilot},[a.autopilot,o]),(0,l.jsxs)("div",{className:"text-lg",children:[(0,l.jsx)("button",{onClick:()=>c("autopilot"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.lnS,className:a.autopilot?"text-oBlue":n})}),(0,l.jsx)("button",{onClick:()=>c("anchorWatch"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.SJR,className:a.anchorWatch?"text-oYellow":n})}),(0,l.jsx)("button",{onClick:()=>c("parkingMode"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.BQ9,className:a.parkingMode?"text-oGreen":n})}),(0,l.jsx)("button",{onClick:()=>t(!e),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.DBF,className:e?"text-oNight":n})}),(0,l.jsx)("button",{onClick:()=>o("showOcean"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.L02,className:a.showOcean?"text-oBlue":n})}),a.autopilot&&!a.showOcean&&(0,l.jsx)("button",{onClick:()=>o("showPolar"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.GTN,className:a.showPolar?"text-oBlue":n})}),a.autopilot&&(0,l.jsx)("button",{onClick:()=>o("ais"),className:"p-1",children:(0,l.jsx)(d.G,{icon:u.mDh,className:a.ais?"text-oGreen":n})})]})},x=a(5008);let b={BATTERIES:"batteries",TANKS:"tanks"},m={FRESH_WATER:{id:"freshWater",label:"Fresh Water",path:"tanks.freshWater.0.currentLevel",icon:u.Zkk,color:"bg-oBlue"},FUEL:{id:"fuel",label:"Fuel",path:"tanks.fuel.0.currentLevel",icon:u.q16,color:"bg-oYellow"},BLACK_WATER:{id:"blackWater",label:"Black Water",path:"tanks.blackWater.0.currentLevel",icon:u.NId,color:"bg-oGray"}},p=e=>{let{level:t,type:a,styles:o}=e,[s,n]=(0,i.useState)(!1),r=Math.max(0,Math.min(100,t)),{label:c,icon:u,color:h}=m[a];return(0,l.jsxs)("div",{className:"flex items-center space-x-3 relative",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsx)("span",{className:"text-sm ".concat(o.icon),children:(0,l.jsx)(d.G,{icon:u})}),(0,l.jsxs)("div",{className:"relative w-8 h-4 rounded-sm flex items-center justify-center ".concat(o.indicatorShell),children:[(0,l.jsx)("div",{className:"absolute -right-1 w-1 h-3 rounded-sm ".concat(o.indicatorTerminal)}),(0,l.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(h," transition-all duration-300 rounded-sm"),style:{width:"".concat(r,"%")}}),(0,l.jsxs)("span",{className:"relative z-10 text-xs font-bold ".concat(o.indicatorValue," ").concat(r<=20?"text-oRed animate-pulse":""),children:[r,"%"]})]})]}),s&&(0,l.jsxs)("div",{className:"absolute -left-20 top-6 px-2 py-1 rounded text-xs whitespace-nowrap z-20 ".concat(o.tooltip),children:[c,": ",r,"%"]})]})},f=e=>{let{batteryLevel:t,batteryNumber:a,voltage:o,styles:s}=e,[n,r]=(0,i.useState)(!1),c=Math.max(0,Math.min(100,t)),h=(0,x.d3)(o),b=(0,i.useMemo)(()=>(0,x.z)(c),[c]);return(0,l.jsx)("div",{className:"flex items-center space-x-3 relative",onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children:(0,l.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,l.jsx)("span",{className:"text-sm ".concat(s.icon),children:(0,l.jsx)(d.G,{icon:u.BDt})}),(0,l.jsxs)("div",{className:"relative w-8 h-4 rounded-sm border flex items-center justify-center ".concat(s.indicatorShell),children:[(0,l.jsx)("div",{className:"absolute -right-1 w-1 h-3 rounded-sm ".concat(s.indicatorTerminal)}),(0,l.jsx)("div",{className:"absolute left-0 top-0 h-full ".concat(b," transition-all duration-300 rounded-sm"),style:{width:"".concat(c,"%")}}),h?(0,l.jsx)("span",{className:"relative z-10 text-xs font-bold ".concat(s.indicatorValue),children:"⚡︎"}):(0,l.jsxs)("span",{className:"relative z-10 text-xs font-bold ".concat(s.indicatorValue," ").concat(c<=x.vp.DANGER_THRESHOLD?"text-oRed animate-pulse":""),children:[c,"%"]})]}),n&&(0,l.jsxs)("div",{className:"absolute -left-20 top-6 px-2 py-1 rounded text-xs whitespace-nowrap z-20 ".concat(s.tooltip),children:["Voltage: ",null==o?void 0:o.toFixed(1),"V ",h&&"(Charging)"]})]})})};var v=()=>{let{nightMode:e,getSignalKValue:t,getTankData:a}=(0,r.yC)(),[o,s]=(0,i.useState)(b.BATTERIES),n=(0,i.useMemo)(()=>{let e=t("electrical.batteries.1.capacity.stateOfCharge"),a=t("electrical.batteries.1.voltage");return[{level:null===e?(0,x.Si)(a):e,number:1,voltage:a}].filter(e=>null!==e.level)},[t]),c=(0,i.useMemo)(()=>{let e=a("freshWater",0),t=a("fuel",0),l=a("blackWater",0);return{FRESH_WATER:null!==e.currentLevel?100*e.currentLevel:40,FUEL:null!==t.currentLevel?100*t.currentLevel:75,BLACK_WATER:null!==l.currentLevel?100*l.currentLevel:20}},[a]),d=()=>{s(e=>e===b.BATTERIES?b.TANKS:b.BATTERIES)},u=(0,i.useMemo)(()=>({container:e?"text-oNight bg-white/5 hover:bg-white/10":"text-oGray hover:bg-gray-800/10",icon:e?"text-oNight":"text-oGray",indicatorShell:e?"bg-white/90 border border-oNight/30":"bg-oGray border border-oGray",indicatorTerminal:e?"bg-white/70":"bg-oGray",indicatorValue:e?"text-oNight":"text-white",tooltip:e?"bg-white text-oNight border border-oNight/30 shadow-lg shadow-oNight/10":"bg-gray-800 text-white"}),[e]),h=o===b.BATTERIES;return(0,l.jsx)("div",{className:"".concat(u.container," rounded-lg transition-all duration-300 cursor-pointer"),onClick:d,role:"button",tabIndex:0,"aria-label":"Toggle between ".concat(h?"tanks":"batteries"," display"),onKeyDown:e=>"Enter"===e.key&&d(),children:h?(0,l.jsx)("div",{className:"space-y-2",children:n.map(e=>(0,l.jsx)(f,{batteryLevel:e.level,batteryNumber:e.number,voltage:e.voltage,styles:u},e.number))}):(0,l.jsx)("div",{className:"space-y-2",children:Object.keys(m).map(e=>(0,l.jsx)(p,{type:e,level:c[e],styles:u},e))})})};let N=(0,n.default)(()=>Promise.all([a.e(9918),a.e(4203),a.e(2687),a.e(767),a.e(9250),a.e(1909),a.e(5322),a.e(2591)]).then(a.bind(a,2591)),{loadableGenerated:{webpack:()=>[2591]},ssr:!1}),g=(0,n.default)(()=>Promise.all([a.e(9918),a.e(4203),a.e(2687),a.e(767),a.e(1909),a.e(7188)]).then(a.bind(a,7188)),{loadableGenerated:{webpack:()=>[7188]},ssr:!1}),j=(0,n.default)(()=>Promise.all([a.e(4203),a.e(767),a.e(1909),a.e(2197)]).then(a.bind(a,2197)),{loadableGenerated:{webpack:()=>[2197]},ssr:!1}),w=(0,n.default)(()=>a.e(5751).then(a.bind(a,5751)),{loadableGenerated:{webpack:()=>[5751]}}),E=(0,n.default)(()=>a.e(2353).then(a.bind(a,2353)),{loadableGenerated:{webpack:()=>[2353]}}),R=(0,n.default)(()=>a.e(8610).then(a.bind(a,8610)),{loadableGenerated:{webpack:()=>[8610]}}),G=(0,n.default)(()=>a.e(3059).then(a.bind(a,3059)),{loadableGenerated:{webpack:()=>[3059]}}),k=(0,n.default)(()=>a.e(6728).then(a.bind(a,6728)),{loadableGenerated:{webpack:()=>[6728]}}),y=(0,n.default)(()=>a.e(5487).then(a.bind(a,5487)),{loadableGenerated:{webpack:()=>[5487]}}),T=(0,n.default)(()=>a.e(6949).then(a.bind(a,6949)),{loadableGenerated:{webpack:()=>[6949]}}),_=()=>{let{gl:e,scene:t}=(0,o.D)();return(0,i.useEffect)(()=>{if(window&&e){window.__OCEARO_RENDERER=e;let t=setInterval(()=>{e&&e.info&&(window.__OCEARO_RENDER_INFO=e.info)},1e3);return()=>{delete window.__OCEARO_RENDERER,delete window.__OCEARO_RENDER_INFO,clearInterval(t)}}},[e,t]),null};var A=()=>{let{states:e,nightMode:t}=(0,r.yC)(),[o,n]=(0,i.useState)(null),[d,u]=(0,i.useState)(!0);return(0,i.useEffect)(()=>{u(!1!==a(3321).Z.getAll().showAttitudeIndicator)},[]),(0,l.jsxs)("div",{className:"w-full h-full relative ",children:[(0,l.jsxs)("div",{className:"absolute top-2 left-2 z-10 space-y-0",children:[(0,l.jsx)(h,{}),!e.anchorWatch&&(0,l.jsx)(w,{}),e.anchorWatch&&(0,l.jsx)(G,{})]}),(0,l.jsxs)("div",{className:"absolute top-2 right-2 z-20 flex flex-col items-end",children:[(0,l.jsx)("div",{className:"mb-2",children:(0,l.jsx)(T,{content:o})}),(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)("span",{className:"".concat(t?"text-oNight":"text-white"," align-top"),children:new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}),(0,l.jsx)(v,{})]}),d&&(0,l.jsx)(y,{})]}),(0,l.jsx)("div",{className:"absolute left-2 bottom-2 z-20 flex flex-col items-center",children:(0,l.jsx)(k,{})}),(0,l.jsx)("div",{className:"absolute right-2 bottom-2 z-20 flex flex-col items-center",children:(0,l.jsx)(R,{})}),!e.anchorWatch&&(0,l.jsx)("div",{className:"absolute bottom-2 left-1/2 transform -translate-x-1/2 z-10",children:(0,l.jsx)(E,{})}),(0,l.jsx)("div",{className:"absolute left-1/2 transform -translate-x-1/2 w-full h-full",children:(0,l.jsxs)(s.Xz,{style:{width:"100%",height:"100%"},shadows:!1,dpr:Math.min(window.devicePixelRatio,1.5),performance:{min:.5},gl:{antialias:!0,powerPreference:"low-power",physicallyCorrectLights:!1,toneMapping:c.uL9,toneMappingExposure:1,shadowMap:{enabled:!1},precision:"lowp"},children:[(0,l.jsx)(_,{}),e.parkingMode?(0,l.jsx)(g,{onUpdateInfoPanel:n}):e.anchorWatch?(0,l.jsx)(j,{onUpdateInfoPanel:n}):(0,l.jsx)(N,{onUpdateInfoPanel:n})]})})]})}},5008:function(e,t,a){a.d(t,{Si:function(){return o},d3:function(){return s},vp:function(){return l},z:function(){return n}});let l={WARNING_THRESHOLD:50,DANGER_THRESHOLD:20,CHARGING_THRESHOLD:13.2,MIN_VOLTAGE:10.5,MAX_VOLTAGE:14.4},o=e=>{if(!e||"number"!=typeof e)return 0;if(e>=13)return 100;if(e<=l.MIN_VOLTAGE)return 0;let t=[{voltage:12.85,soc:100},{voltage:12.75,soc:90},{voltage:12.65,soc:80},{voltage:12.55,soc:70},{voltage:12.45,soc:60},{voltage:12.35,soc:50},{voltage:12.25,soc:40},{voltage:12.15,soc:30},{voltage:12.05,soc:20},{voltage:11.95,soc:15},{voltage:11.8,soc:10},{voltage:11.6,soc:5},{voltage:10.5,soc:0}];for(let a=0;a<t.length-1;a++)if(e>=t[a+1].voltage){let l=t[a].voltage,o=t[a+1].voltage,s=t[a].soc,n=t[a+1].soc;return Math.round(n+(e-o)/(l-o)*(s-n))}return 0},s=e=>e>l.CHARGING_THRESHOLD,n=e=>e>l.WARNING_THRESHOLD?"bg-oGreen":e>l.DANGER_THRESHOLD?"bg-oYellow":"bg-oRed"}}]);
|