1import{a as ee,b as _}from"/site-assets/chunk-5ZL7PVHQ.js";import{b as E}from"/site-assets/chunk-LVWALC3R.js";var l=E(ee(),1),$=E(_(),1);function te({paused:f}){let A=(0,l.useRef)(null),a=(0,l.useRef)(f);return(0,l.useEffect)(()=>{a.current=f},[f]),(0,l.useEffect)(()=>{let i=A.current;if(!i)return;let b=!1,M=()=>{};return Promise.all([import("/site-assets/three.module-ABCQ43HR.js"),import("/site-assets/RoomEnvironment-GB6A5QKK.js")]).then(([e,{RoomEnvironment:T}])=>{if(b)return;let o;try{o=new e.WebGLRenderer({alpha:!0,antialias:!0,powerPreference:"low-power"})}catch{return}o.setPixelRatio(Math.min(window.devicePixelRatio||1,1.6)),o.toneMapping=e.ACESFilmicToneMapping,o.toneMappingExposure=1.25,i.appendChild(o.domElement);let c=new e.Scene,u=new e.PerspectiveCamera(36,1,.1,40);u.position.set(0,.1,9);let G=new e.PMREMGenerator(o),L=new T,I=G.fromScene(L,.04);c.environment=I.texture,L.dispose(),G.dispose();let r=new e.Group;c.add(r);let w=new e.MeshPhysicalMaterial({color:12368110,metalness:.98,roughness:.18,clearcoat:1,clearcoatRoughness:.12,iridescence:.8,iridescenceIOR:1.6,iridescenceThicknessRange:[100,430]}),S=[],B=[],F=[],g=320,m=12;for(let n=0;n<=g;n++){let t=n/g*Math.PI*2,p=1.66+.23*Math.cos(3*t);for(let s=0;s<=m;s++){let P=(s/m-.5)*.72;if(S.push((p+P*Math.cos(1.5*t))*Math.cos(t),(p+P*Math.cos(1.5*t))*Math.sin(t),.4*Math.sin(3*t)+P*Math.sin(1.5*t)),B.push(0,0,1),n<g&&s<m){let h=n*(m+1)+s,R=h+m+1;F.push(h,R,h+1,R,R+1,h+1)}}}let d=new e.BufferGeometry;d.setAttribute("position",new e.Float32BufferAttribute(S,3)),d.setAttribute("normal",new e.Float32BufferAttribute(B,3)),d.setIndex(F),d.computeVertexNormals(),w.side=e.DoubleSide;let v=new e.Mesh(d,w);v.rotation.set(.25,-.3,.3),r.add(v);let C=new e.TorusGeometry(2.13,.009,6,160),z=new e.MeshBasicMaterial({color:7852010,transparent:!0,opacity:.45}),D=new e.Mesh(C,z);D.rotation.set(.65,-.25,0),r.add(D);let O=new e.SphereGeometry(.095,16,12),Y=new e.MeshPhysicalMaterial({color:12362239,metalness:.7,roughness:.12,emissive:5387706,emissiveIntensity:.3}),k=new e.Mesh(O,Y);r.add(k),c.add(new e.AmbientLight(11976447,1));let q=new e.DirectionalLight(14219519,4);q.position.set(2,3,4),c.add(q);let H=new e.PointLight(7887103,35,15);H.position.set(-3,1,2),c.add(H);let N=0,W=0,y=0,x=0,X=!0,j=0,V=!1,J=()=>{let{width:n,height:t}=i.getBoundingClientRect();!n||!t||(o.setSize(n,t),u.aspect=n/t,u.updateProjectionMatrix(),o.render(c,u))},K=new ResizeObserver(J);K.observe(i);let Q=new IntersectionObserver(([n])=>{X=n.isIntersecting});Q.observe(i);let U=n=>{let t=i.getBoundingClientRect();N=(n.clientX-t.left)/t.width-.5,W=(n.clientY-t.top)/t.height-.5};i.addEventListener("pointermove",U);let Z=n=>{x=requestAnimationFrame(Z);let t=Math.min((n-j)/1e3,.05);if(j=n,!X||document.hidden||a.current&&V)return;V=a.current,a.current||(y+=t);let p=a.current?0:Math.min(window.scrollY/Math.max(innerHeight,1),1);v.rotation.z=.3+y*.035+p*.32,r.rotation.y+=((a.current?0:N*.28)-r.rotation.y)*.035,r.rotation.x+=((a.current?0:W*.18)-r.rotation.x)*.035,r.position.y=p*.16;let s=1.4+y*.15;k.position.set(Math.cos(s)*2.13,Math.sin(s)*1.8,Math.sin(s)*1.3),o.render(c,u)};J(),x=requestAnimationFrame(Z),M=()=>{cancelAnimationFrame(x),K.disconnect(),Q.disconnect(),i.removeEventListener("pointermove",U),d.dispose(),w.dispose(),C.dispose(),z.dispose(),O.dispose(),Y.dispose(),I.dispose(),o.dispose(),o.domElement.remove()},b&&M()}).catch(()=>{}),()=>{b=!0,M()}},[]),(0,$.jsx)("div",{className:"vl-sculpture",ref:A,"aria-hidden":"true"})}export{te as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.