1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8223],{18223:(e,t,n)=>{n.r(t),n.d(t,{BloomingNetworkHelix:()=>u,default:()=>h});var i=n(95155),o=n(12115),a=n(85339),s=n(53646),l=n(30258);let c={maxNodes:120,cycleDuration:20,springStiffness:26,springDamping:.95,vertexRadius:.04,helixRadius:1.7,helixTurns:5,helixHeight:8,helixRotationSpeed:1.5,cameraRotationSpeed:.15,triangleOpacity:.5,lineColor:"#ffffff",nodeColor:"#ffffff",backgroundColor:"#222222",triangleColor:"#ffffff"},r=new a.Pq0,d=new a.Pq0;function p(e){let{animated:t=!0,maxNodes:n=c.maxNodes,cycleDuration:l=c.cycleDuration,springStiffness:p=c.springStiffness,springDamping:u=c.springDamping,vertexRadius:h=c.vertexRadius,helixRadius:f=c.helixRadius,helixTurns:m=c.helixTurns,helixHeight:x=c.helixHeight,helixRotationSpeed:g=c.helixRotationSpeed,cameraRotationSpeed:y=c.cameraRotationSpeed,triangleOpacity:M=c.triangleOpacity,lineColor:w=c.lineColor,nodeColor:b=c.nodeColor,backgroundColor:v=c.backgroundColor,triangleColor:S=c.triangleColor}=e,C=(0,o.useRef)({nodes:[],springs:[],connections:new Set,triangles:[],spawnT
1imer:0,cycleTime:0,nodeSpawnCount:0,helixRotation:0}),T=(0,o.useMemo)(()=>new a.Gu$(1,8,8),[]),j=(0,o.useMemo)(()=>new a.V9B({color:b}),[b]),R=(0,o.useRef)(null),k=(0,o.useMemo)(()=>new a.B69,[]),I=(0,o.useMemo)(()=>new Float32Array(12e4),[]),z=(0,o.useMemo)(()=>{let e=new a.LoY;return e.setAttribute("position",new a.THS(I,3)),e.setDrawRange(0,0),e},[I]),E=(0,o.useMemo)(()=>new a.mrM({color:w,transparent:!0,opacity:.45}),[w]),O=(0,o.useMemo)(()=>new a.LoY,[]),A=(0,o.useMemo)(()=>new Float32Array(2700),[]),D=(0,o.useMemo)(()=>new Float32Array(900),[]);(0,o.useEffect)(()=>{O.setAttribute("position",new a.THS(A,3)),O.setAttribute("opacity",new a.THS(D,1)),O.setDrawRange(0,0)},[O,A,D]);let F=(0,o.useMemo)(()=>new a.BKk({transparent:!0,depthWrite:!1,side:a.$EB,uniforms:{color:{value:new a.Q1f(S)},maxOpacity:{value:M}},vertexShader:"\n attribute float opacity;\n varying float vOpacity;\n void main() {\n vOpacity = opacity;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform vec3 color;\n uniform float maxOpacity;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(color, vOpacity * maxOpacity);\n }\n "}),[S,M]);(0,o.useEffect)(()=>{var e;(null==F||null==(e=F.uniforms)?void 0:e.maxOpacity)&&(F.uniforms.maxOpacity.value=M)},[F,M]);let H=(0,o.useCallback)((e,t,n,i)=>{let o=t<n?"".concat(t,"-").concat(n):"".concat(n,"-").concat(t),a=n<i?"".concat(n,"-").concat(i):"".concat(i,"-").concat(n),s=i<t?"".concat(i,"-").concat(t):"".concat(t,"-").concat(i);return e.connections.has(o)&&e.connections.has(a)&&e.connections.has(s)},[]),P=(0,o.useCallback)((e,t,n)=>{for(let i=0;i<e.nodes.length;i++)if(i!==t&&i!==n&&H(e,t,n,i)){if(e.triangles.length>=300)return;e.triangles.some(e=>e.nodeIndices.includes(t)&&e.nodeIndices.includes(n)&&e.nodeIndices.includes(i))||e.triangles.push({nodeIndices:[t,n,i],birthTime:e.cycleTime})}},[H]),L=(0,o.useCallback)((e,t,n)=>{if(t===n)return;let i=t<n?"".concat(t,"-").concat(n):"".concat(n,"-").concat(t);if(e.connections.has(i))return;let o=e.nodes[t],a=e.nodes[n];if(!o||!a)return;e.connections.add(i);let s=.75*o.position.distanceTo(a.position);e.springs.push({a:t,b:n,restLength:s}),P(e,t,n)},[P]),N=(0,o.useCallback)(e=>{e.nodes.length=0,e.springs.length=0,e.connections.clear(),e.triangles.length=0,e.spawnTimer=0,e.cycleTime=0,e.nodeSpawnCount=0,e.helixRotation=0;for(let t=0;t<n;t++){let i={position:function(e,t,n,i,o,s){let l=t>1?e/(t-1):0,c=l*Math.PI*2*i,r=n*(.3+1.5*Math.random()),d=Math.cos(c)*r,p=Math.sin(c)*r,u=Math.random()*Math.PI*2,h=.6*Math.random()*1.2;return new a.Pq0(d+Math.cos(u)*h,l*o,p+Math.sin(u)*h)}(t,n,f,m,x,0),velocity:new a.Pq0(a.cj9.randFloatSpread(.3),a.cj9.randFloatSpread(.3),a.cj9.randFloatSpread(.3)),helixAngle:0,spawnTime:0,nodeIndex:t};e.nodes.push(i)}for(let t=0;t<e.nodes.length;
1t++)for(let n=t+1;n<Math.min(t+4,e.nodes.length);n++)L(e,t,n)},[L,n,f,m,x]),_=(0,o.useCallback)(e=>{let t=l/2,i=Math.min(1,(e.cycleTime<t?e.cycleTime:l-e.cycleTime)/t),o=Math.cos(e.helixRotation),a=Math.sin(e.helixRotation),s=R.current;if(s){for(let t=0;t<e.nodes.length&&t<200;t++){let l=e.nodes[t];if(l){if((n>1?l.nodeIndex/(n-1):0)<=i){let e=l.position.x*o-l.position.z*a,t=l.position.x*a+l.position.z*o;k.position.set(e,l.position.y,t),k.scale.setScalar(h)}else k.position.set(0,0,0),k.scale.setScalar(0);k.updateMatrix(),s.setMatrixAt(t,k.matrix)}}s.count=Math.min(e.nodes.length,200),s.instanceMatrix.needsUpdate=!0}let c=0;e.springs.forEach(t=>{let s=e.nodes[t.a],l=e.nodes[t.b];if(!s||!l||c+6>I.length)return;let r=n>1?s.nodeIndex/(n-1):0,d=n>1?l.nodeIndex/(n-1):0;r<=i&&d<=i&&(I[c++]=s.position.x*o-s.position.z*a,I[c++]=s.position.y,I[c++]=s.position.x*a+s.position.z*o,I[c++]=l.position.x*o-l.position.z*a,I[c++]=l.position.y,I[c++]=l.position.x*a+l.position.z*o)});let r=c/3;z.setDrawRange(0,r),z.attributes.position&&(z.attributes.position.needsUpdate=!0);let d=0;for(let t=0;t<e.triangles.length;t++){let s=e.triangles[t];if(!s)continue;let[l,c,r]=s.nodeIndices,p=e.nodes[l],u=e.nodes[c],h=e.nodes[r];if(!p||!u||!h)continue;let f=n>1?p.nodeIndex/(n-1):0,m=Math.max(f,n>1?u.nodeIndex/(n-1):0,n>1?h.nodeIndex/(n-1):0);if(m>i)continue;let x=Math.max(0,1-(i-m)/.25);if(x>.01&&d+9<=A.length){A[d]=p.position.x*o-p.position.z*a,A[d+1]=p.position.y,A[d+2]=p.position.x*a+p.position.z*o,A[d+3]=u.position.x*o-u.position.z*a,A[d+4]=u.position.y,A[d+5]=u.position.x*a+u.position.z*o,A[d+6]=h.position.x*o-h.position.z*a,A[d+7]=h.position.y,A[d+8]=h.position.x*a+h.position.z*o;let e=d/3;D[e]=x,D[e+1]=x,D[e+2]=x,d+=9}}let p=d/3;O.setDrawRange(0,p),O.attributes.position&&(O.attributes.position.needsUpdate=!0),O.attributes.opacity&&(O.attributes.opacity.needsUpdate=!0)},[k,z,I,h,O,A,D,l,n]),B=(0,o.useCallback)((e,t)=>{e.springs.forEach(n=>{let i=e.nodes[n.a],o=e.nodes[n.b];if(!i||!o)return;r.copy(o.position).sub(i.position);let a=r.length()||1e-6,s=(a-n.restLength)*p;d.copy(r).multiplyScalar(s/a*t),i.velocity.add(d),o.velocity.sub(d)})},[p]),q=(0,o.useCallback)((e,t)=>{let n=C.current;if(!t){0===n.nodes.length&&N(n),_(n);return}n.cycleTime+=e;let i=l/2,o=n.cycleTime<i;n.helixRotation+=e*g*(o?1:-1),n.cycleTime>=l&&(n.cycleTime=0),B(n,e),n.nodes.forEach(t=>{t.velocity.multiplyScalar(u),t.position.addScaledVector(t.velocity,e)}),_(n)},[B,l,N,u,_,g]);return(0,s.D)((e,n)=>{if(t&&(q(Math.min(n,.1),!0),y>0)){let t=e.clock.elapsedTime*y*.3;e.camera.position.x=10*Math.sin(t),e.camera.position.y=4,e.camera.position.z=10*Math.cos(t),e.camera.lookAt(0,4,0)}}),(0,o.useEffect)(()=>{t||q(0,!1)},[t,q]),(0,o.useEffect)(()=>{N(C.current),q(0,!1)},[N,q]),(0,o.useEffect)(()=>()=>{T.dispose(),j.dispose(),z.dispose(),E.dispose(),O.dispose(),F.dispose()},[z,E,T,j,O,F]),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("color",{attach:"background",args:[v]}),(0,i.jsx)("ambientLight",{intensity:.8}),(0,i.jsx)("directionalLight",{position:[5,5,5],intensity:.6}),(0,i.jsx)("pointLight",{position:[0,4,0],intensity:1}),(0,i.jsx)("mesh",{geometry:O,children:(0,i.jsx)("primitive",{object:F,attach:"material"})}),(0,i.jsx)("lineSegments",{geometry:z,children:(0,i.jsx)("primitive",{object:E,attach:"material"})}),(0,i.jsx)("instancedMesh",{ref:R,args:[T,j,200],frustumCulled:!1})]})}function u(e){let{className:t,style:n,animated:o=!0,...a}=e;return(0,i.jsx)("div",{className:t,style:{width:"100%",height:"100%",...n},children:(0,i.jsx)(l.Hl,{camera:{position:[6,0,4],fov:60,near:.1,far:50},style:{width:"100%",height:"100%"},frameloop:o?"always":"demand",children:(0,i.jsx)(p,{animated:o,...a})})})}let h=u}}]); 2//# sourceMappingURL=8223.08dd40b34aaf56b7.js.map
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.