"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[624],{6624:(e,t,r)=>{r.r(t),r.d(t,{default:()=>m});var n=r(5155),i=r(1949),o=r(2115),s=r(7431);function l(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let u=["x","y","top","bottom","left","right","width","height"],c=(e,t)=>u.every(r=>e[r]===t[r]);var a=r(6354);function d({ref:e,children:t,fallback:r,resize:u,style:a,gl:d,events:f=i.f,eventSource:h,eventPrefix:v,shadows:w,linear:m,flat:p,legacy:b,orthographic:E,frameloop:g,dpr:y,performance:z,raycaster:x,camera:C,scene:L,onPointerMissed:j,onCreated:H,...O}){o.useMemo(()=>(0,i.e)(s),[]);let R=(0,i.u)(),[S,k]=function({debounce:e,scroll:t,polyfill:r,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){var i,s,u;let a=r||("undefined"==typeof window?class{}:window.ResizeObserver);if(!a)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[d,f]=(0,o.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),h=(0,o.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:d,orientationHandler:null}),v=e?"number"==typeof e?e:e.scroll:null,w=e?"number"==typeof e?e:e.resize:null,m=(0,o.useRef)(!1);(0,o.useEffect)(()=>(m.current=!0,()=>void(m.current=!1)));let[p,b,E]=(0,o.useMemo)(()=>{let e=()=>{if(!h.current.element)return;let{left:e,top:t,width:r,height:i,bottom:o,right:s,x:l,y:u}=h.current.element.getBoundingClientRect(),a={left:e,top:t,width:r,height:i,bottom:o,right:s,x:l,y:u};h.current.element instanceof HTMLElement&&n&&(a.height=h.current.element.offsetHeight,a.width=h.current.element.offsetWidth),Object.freeze(a),m.current&&!c(h.current.lastBounds,a)&&f(h.current.lastBounds=a)};return[e,w?l(e,w):e,v?l(e,v):e]},[f,n,v,w]);function g(){h.current.scrollContainers&&(h.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",E,!0)),h.current.scrollContainers=null),h.current.resizeObserver&&(h.current.resizeObserver.disconnect(),h.current.resizeObserver=null),h.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",h.current.orientationHandler))}function y(){h.current.element&&(h.current.resizeObserver=new a(E),h.current.resizeObserver.observe(h.current.element),t&&h.current.scrollContainers&&h.current.scrollContainers.forEach(e=>e.addEventListener("scroll",E,{capture:!0,passive:!0})),h.current.orientationHandler=()=>{E()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",h.current.orientationHandler))}return i=E,s=!!t,(0,o.useEffect)(()=>{if(s)return window.addEventListener("scroll",i,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",i,!0)},[i,s]),u=b,(0,o.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,o.useEffect)(()=>{g(),y()},[t,E,b]),(0,o.useEffect)(()=>g,[]),[e=>{e&&e!==h.current.element&&(g(),h.current.element=e,h.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:o}=window.getComputedStyle(t);return[n,i,o].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},d,p]}({scroll:!0,debounce:{scroll:50,resize:0},...u}),B=o.useRef(null),T=o.useRef(null);o.useImperativeHandle(e,()=>B.current);let M=(0,i.a)(j),[_,A]=o.useState(!1),[F,K]=o.useState(!1);if(_)throw _;if(F)throw F;let N=o.useRef(null);(0,i.b)(()=>{let e=B.current;k.width>0&&k.height>0&&e&&(N.current||(N.current=(0,i.c)(e)),async function(){await N.current.configure({gl:d,scene:L,events:f,shadows:w,linear:m,flat:p,legacy:b,orthographic:E,frameloop:g,dpr:y,performance:z,raycaster:x,camera:C,size:k,onPointerMissed:(...e)=>null==M.current?void 0:M.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(h?(0,i.i)(h)?h.current:h:T.current),v&&e.setEvents({compute:(e,t)=>{let r=e[v+"X"],n=e[v+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==H||H(e)}}),N.current.render((0,n.jsx)(R,{children:(0,n.jsx)(i.E,{set:K,children:(0,n.jsx)(o.Suspense,{fallback:(0,n.jsx)(i.B,{set:A}),children:null!=t?t:null})})}))}())}),o.useEffect(()=>{let e=B.current;if(e)return()=>(0,i.d)(e)},[]);let X=h?"none":"auto";return(0,n.jsx)("div",{ref:T,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:X,...a},...O,children:(0,n.jsx)("div",{ref:S,style:{width:"100%",height:"100%"},children:(0,n.jsx)("canvas",{ref:B,style:{display:"block"},children:r})})})}function f(e){return(0,n.jsx)(a.Af,{children:(0,n.jsx)(d,{...e})})}r(1933),r(5220),r(4342);var h=r(3264);function v({all:e,scene:t,camera:r}){let n=(0,i.C)(({gl:e})=>e),s=(0,i.C)(({camera:e})=>e),l=(0,i.C)(({scene:e})=>e);return o.useLayoutEffect(()=>{let i=[];e&&(t||l).traverse(e=>{!1===e.visible&&(i.push(e),e.visible=!0)}),n.compile(t||l,r||s);let o=new h.o6l(128);new h.F1T(.01,1e5,o).update(n,t||l),o.dispose(),i.forEach(e=>e.visible=!1)},[]),null}var w=r(7574);function m(e){return(0,n.jsxs)(f,{...e,children:[(0,n.jsx)(w.K.Out,{}),(0,n.jsx)(v,{all:!0})]})}},7574:(e,t,r)=>{r.d(t,{K:()=>n});let n=(0,r(5914).A)()}}]);