1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9246],{19246:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var n=a(80263),r=a(53239),i=a(46098);let o=(0,a(39812).A)(()=>({snowCanvas:{position:"fixed",top:0,left:0,right:0,bottom:0,width:"100%",height:"100vh",pointerEvents:"none",zIndex:1e4}})),h=e=>{let{duration:t=5e3,enabled:a=!1,numberOfFlakes:h=50,onComplete:d}=e,l=o(),s=(0,r.useRef)(null);return((0,r.useEffect)(()=>{let e,n=window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(!a||n)return;let r=s.current;if(!r)return;let o=r.getContext("2d");if(!o)return;let l=()=>{r.width=window.innerWidth,r.height=window.innerHeight};l(),window.addEventListener(i.f7.Resize,l);let f=[],w=Date.now(),u=()=>{let a=Date.now()-w;if(a>=t){o.clearRect(0,0,r.width,r.height),d?.();return}let n=1-.3*Math.min(a/t,1);for(let e=f.length-1;e>=0;e--){let t=f[e];t.y+=t.speed*n,t.x+=t.wind*n,t.rotation+=t.rotationSpeed,t.y>r.height+10&&f.splice(e,1)}o.clearRect(0,0,r.width,r.height),f.forEach(e=>{o.save(),o.translate(e.x,e.y),o.rotate(e.rotation*Math.PI/180),o.shadowBlur=10,o.shadowColor="rgba(255, 255, 255, 0.8)",o.globalAlpha=e.opacity,o.fillStyle="#ffffff",o.beginPath(),o.arc(0,0,e.radius,0,2*Math.PI),o.fill(),o.restore()}),e=requestAnimationFrame(u)};for(let e=0;e<h;e++)f.push({x:Math.random()*r.width,y:-(.5*(Math.random()*r.height)),radius:4*Math.random()+2,speed:1.5*Math.random()+1,wind:Math.random()-.5,opacity:.6*Math.random()+.4,rotation:360*Math.random(),rotationSpeed:1.5*Math.random()-.75});return u(),()=>{window.removeEventListener(i.f7.Resize,l),e&&cancelAnimationFrame(e)}},[t,a,h]),a)?(0,n.jsx)("canvas",{ref:s,className:l.snowCanvas,style:{background:"transparent"}}):null}}}]);
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.