PageSourceSearch

https://gbk-hub-app.vercel.app/_next/static/immutable/chunks/3oqaggzx09r_-.js

js gbk-hub-app.vercel.app collected 2026-10-03 06:59:44 UTC 55,231 bytes, 38 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,23802,e=>{"use strict";let t,r,n,i,o;var a=e.i(41599),s=e.i(30859),l=e.i(33553);let u=(0,s.createContext)(null);function c({iterations:e=10,ms:t=250,threshold:r=.75,step:n=.1,factor:i=.5,flipflops:o=1/0,bounds:a=e=>e>100?[60,100]:[40,60],onIncline:d,onDecline:m,onChange:f,onFallback:p,children:h}){let[g,y]=(0,s.useState)(()=>({fps:0,index:0,factor:i,flipped:0,refreshrate:0,fallback:!1,frames:[],averages:[],subscriptions:new Map,subscribe:e=>{let t=Symbol();return g.subscriptions.set(t,e.current),()=>void g.subscriptions.delete(t)}})),x=0;return(0,l.useFrame)(()=>{let{frames:i,averages:s}=g;if(!g.fallback&&s.length<e){i.push(performance.now());let l=i[i.length-1]-i[0];if(l>=t){if(g.fps=Math.round(i.length/l*1e3)/1,g.refreshrate=Math.max(g.refreshrate,g.fps),s[g.index++%e]=g.fps,s.length===e){let[t,i]=a(g.refreshrate),l=s.filter(e=>e>=i),u=s.filter(e=>e<t);l.length>e*r&&(g.factor=Math.min(1,g.factor+n),g.flipped++,d&&d(g),g.subscriptions.forEach(e=>e.onIncline&&e.onIncline(g))),u.length>e*r&&(g.factor=Math.max(0,g.factor-n),g.flipped++,m&&m(g),g.subscriptions.forEach(e=>e.onDecline&&e.onDecline(g))),x!==g.factor&&(x=g.factor,f&&f(g),g.subscriptions.forEach(e=>e.onChange&&e.onChange(g))),g.flipped>o&&!g.fallback&&(g.fallback=!0,p&&p(g),g.subscriptions.forEach(e=>e.onFallback&&e.onFallback(g))),g.averages=[]}g.frames=[]}}}),s.createElement(u.Provider,{value:g},h)}var d=e.i(3569);e.i(11711);var m=e.i(64765),f=e.i(8359),p=e.i(97396),h=e.i(56904),g=e.i(57574);let y=function(...e){let t=e.length>=2?e[1]:e[0],r=function(e){let t={};for(let[r,n]of Object.entries(e))"object"==typeof n&&null!==n&&"value"in n?t[r]=n.value:t[r]=n;return t}("function"==typeof t?t():t);return"function"==typeof t?[r,()=>{}]:r};var x=e.i(4421),v=e.i(23200),w=e.i(68953),b=e.i(97878),M=e.i(2701),S=e.i(53412),T=e.i(95095),z=e.i(93886),_=e.i(10076),P=e.i(42090),R=e.i(87381),E=e.i(94079),A=e.i(58798);let B={crane:0,snap:!1,hasBase:!1,basePosition:new f.Vector3,baseTarget:new f.Vector3,focus:new f.Vector3},C=new f.Vector3,j=new f.Spherical,V={neubau:{sweep:.45,dolly:.8},revitalisierung:{sweep:-.45,dolly:.8},services:{sweep:.15,dolly:.65}},F=new f.Vector3(0,1,0),L="/models/spark_cam.glb";function k({scrollProgress:e,animationPath:t=L}){let{controls:r}=(0,M.useThree)(),n=(0,T.useReducedMotion)(),i=(0,s.useRef)(null),o=(0,x.default)(e=>e.currentChapter),u=(0,h.usePathname)().slice(1),c=(0,A.isProductCategory)(u)?V[u]:{sweep:0,dolly:1},d=(0,s.useRef)(null),{animations:m}=(0,R.useGLTF)(t);(0,v.renameTrackTarget)(m,"camIntro_11","Camera"),(0,v.renameTrackTarget)(m,"camIntro_12","Camera");let{actions:p}=function(e,t){let r=s.useRef(null),[n]=s.useState(()=>t?t instanceof f.Object3D?{current:t}:t:r),[i]=s.useState(()=>new f.AnimationMixer(void 0));s.useLayoutEffect(()=>{t&&(n.current=t instanceof f.Object3D?t:t.current),i._root=n.current});let o=s.useRef({}),a=s.useMemo(()=>{let t={};return e.forEach(e=>Object.defineProperty(t,e.name,{enumerable:!0,get(){if(n.current)return o.current[e.name]||(o.current[e.name]=i.clipAction(e,n.current))},configurable:!0})),{ref:n,clips:e,actions:t,names:e.map(e=>e.name),mixer:i}},[e]);return(0,l.useFrame)((e,t)=>i.update(t)),s.useEffect(()=>{let e=n.current;return()=>{o.current={},i.stopAllAction(),Object.values(a.actions).forEach(t=>{e&&i.uncacheAction(t,e)})}},[e]),a}(m,i),g={type1:"camIntro_1.1",type2:"camIntro_1.2"}[o?.scrollytellingAnimation||"type1"]||"camIntro_1.1";(0,s.useEffect)(()=>{for(let e of Object.values(p))e?.stop();let e=p[g];e&&(e.reset(),e.setLoop(f.LoopOnce,0),e.clampWhenFinished=!0,e.play(),e.paused=!0)},[p,g]);let y=new f.Vector3,w=new f.Quaternion,b=new f.Vector3;return(0,l.useFrame)((t,o)=>{var a,s,l;let u,m,h,x=p[g];if(!x||!i.current)return;let v=x.getClip().duration;x.time=(n?0:e.current)*v,x.getMixer().update(0),y.set(0,0,0),w.set(0,0,0,1),i.current.getWorldPosition(y),i.current.getWorldQuaternion(w),b.set(0,0,-1).applyQuaternion(w);let M=y.clone().add(b.multiplyScalar(10));if(B.basePosition.copy(y),B.baseTarget.copy(M),B.hasBase=!0,E.introClock.canvasReady)if(!d.current||n)d.current={...c};else{let e=Math.min(o,1/30);
1d.current.sweep=f.MathUtils.damp(d.current.sweep,c.sweep,3.5,e),d.current.dolly=f.MathUtils.damp(d.current.dolly,c.dolly,3.5,e)}else d.current=null;d.current&&(a=d.current.sweep,s=d.current.dolly,u=B.focus,y.sub(u).applyAxisAngle(F,a).multiplyScalar(s).add(u),M.sub(u).applyAxisAngle(F,a).add(u)),B.crane>0&&(l=B.crane,m=B.focus,j.setFromVector3(C.subVectors(y,m)),h=Math.PI/2-j.phi,j.phi=Math.PI/2-f.MathUtils.lerp(h,Math.max(h,1.1),l),j.radius*=f.MathUtils.lerp(1,1.35,l),j.theta+=.35*l,y.setFromSpherical(j).add(m),M.lerp(m,l)),r.setLookAt(y.x,y.y,y.z,M.x,M.y,M.z,!B.snap),B.snap=!1}),(0,a.jsx)("group",{name:"Camera",ref:i,visible:!1})}R.useGLTF.preload([L]);var I=e.i(38019),N=e.i(26312);let G=new f.Vector3(.538,6.001,10.177),W=new f.Vector3(.9091801345348358,7.136513590812683,-2.3049573451280594),O=new f.Vector3(G.x-10,G.y,G.z),H=Math.sqrt((G.x-W.x)**2+(G.z-W.z)**2),U=Math.atan2(G.z-W.z,G.x-W.x);function D(e,t=G,r=!0){e.setLookAt(t.x,t.y,t.z,W.x,W.y,W.z,r)}function $(e){let t,r,n,i,o,a,u,c,d,m,f,p=(0,I.c)(33),{isReturning:g}=e,y=(0,M.useThree)(Q),v=(0,M.useThree)(J),{chapterSlug:w}=(0,N.useParams)(),b=(0,N.useSelectedLayoutSegment)("overlay"),S=(0,h.usePathname)();p[0]!==b||p[1]!==S?(t=null!==b&&S.startsWith("/detail/"),p[0]=b,p[1]=S,p[2]=t):t=p[2];let z=t,P=(0,s.useRef)(z),R=!(0,_.useBreakpoint)("sm"),E=(0,T.useReducedMotion)(),A=R?.9:1.7,B=(0,s.useRef)(void 0),C=(0,s.useRef)(null),j=(0,s.useRef)(null);p[3]===Symbol.for("react.memo_cache_sentinel")?(r=G.clone(),p[3]=r):r=p[3];let V=(0,s.useRef)(r),F=(0,s.useRef)(H),L=(0,s.useRef)(U),k=(0,s.useRef)(!1),$=(0,x.default)(Y),X=(0,x.default)(K),Z=(0,x.default)(q);return p[4]!==y||p[5]!==v||p[6]!==X||p[7]!==Z?(n=()=>{if(X)return;let e=()=>{Z(!0)},t=t=>{(0!==Math.abs(t.deltaX)||0!==Math.abs(t.deltaY))&&e()};return y.addEventListener("controlstart",e),v.domElement.addEventListener("wheel",t,{passive:!0}),()=>{y.removeEventListener("controlstart",e),v.domElement.removeEventListener("wheel",t)}},i=[y,v,X,Z],p[4]=y,p[5]=v,p[6]=X,p[7]=Z,p[8]=n,p[9]=i):(n=p[8],i=p[9]),(0,s.useEffect)(n,i),p[10]!==A||p[11]!==w||p[12]!==y||p[13]!==g||p[14]!==$||p[15]!==E?(o=()=>{if(!y||!w)return;let e=void 0===B.current,t=!e&&B.current!==w;if(t&&E)D(y,G,!1),y.zoomTo(A,!1),$(!1);else if(t){let e=y.camera;V.current.set(e.position.x,e.position.y,e.position.z),F.current=Math.sqrt((e.position.x-W.x)**2+(e.position.z-W.z)**2),L.current=Math.atan2(e.position.z-W.z,e.position.x-W.x),j.current=0,$(!0),y.zoomTo(A,!0)}else e&&g.current&&E?(D(y,G,!1),y.zoomTo(A,!1)):e&&g.current?(D(y,O),y.zoomTo(A,!0),C.current=setTimeout(()=>{D(y)},800)):e?(D(y,G,!1),y.zoomTo(A,!1)):C.current||(D(y,G,!E),y.zoomTo(A,!E));return B.current=w,()=>{C.current&&B.current!==w&&(clearTimeout(C.current),C.current=null)}},a=[y,w,$,A,g,E],p[10]=A,p[11]=w,p[12]=y,p[13]=g,p[14]=$,p[15]=E,p[16]=o,p[17]=a):(o=p[16],a=p[17]),(0,s.useEffect)(o,a),p[18]!==y||p[19]!==$?(u=(e,t)=>{var r;if(null===j.current)return;if(j.current=j.current+t/2.2,!k.current&&j.current>=.4&&(k.current=!0,$(!1)),j.current>=1){j.current=null,k.current=!1,D(y,G,!1);return}let n=(r=j.current)<.5?4*r*r*r:1-(-2*r+2)**5/2,i=L.current,o=i+n*(U+2*Math.PI-i),a=F.current+n*(H-F.current),s=V.current.y+n*(G.y-V.current.y),l=W.x+a*Math.cos(o),u=W.z+a*Math.sin(o);y.setLookAt(l,s,u,W.x,W.y,W.z,!1)},p[18]=y,p[19]=$,p[20]=u):u=p[20],(0,l.useFrame)(u),p[21]!==A||p[22]!==w||p[23]!==y||p[24]!==E?(c=()=>{if(y&&w){let e=!E;y.setTarget(W.x,W.y,W.z,e),y.zoomTo(A,e)}},d=[y,w,A,E],p[21]=A,p[22]=w,p[23]=y,p[24]=E,p[25]=c,p[26]=d):(c=p[25],d=p[26]),(0,s.useEffect)(c,d),p[27]!==A||p[28]!==y||p[29]!==z||p[30]!==E?(m=()=>{if(!y)return;let e=P.current;if(P.current=z,!e||z)return;let t=!E;y.setTarget(W.x,W.y,W.z,t),y.zoomTo(A,t)},f=[y,z,A,E],p[27]=A,p[28]=y,p[29]=z,p[30]=E,p[31]=m,p[32]=f):(m=p[31],f=p[32]),(0,s.useEffect)(m,f),null}function q(e){return e.setHasCompletedHotspotTutorial}function K(e){return e.hasCompletedHotspotTutorial}function Y(e){return e.setIsHotspotTransitioning}function J(e){return e.gl}function Q(e){return e.controls}var X=e.i(70131);let Z={center:(0,X.uniform)(new f.Vector3),floor:(0,X.uniform)(1e4),rise:(0,X.uniform)(1e4),jitter:(0,X.uniform)(3),riseSlope:(0,X.uniform)(.22),riseJitter:(0,X.uniform)(1.2),ink:(0,X.uniform)(5),riseInk:(0,X.uniform)(1.5),color:(0,X.uniform)(new f.Color(4111084))},ee=Array.from({length:3},()=>({center:(0,X.uniform)(new f.Vector3),age:(0,X.uniform)(-1)})),et={speed:(0,X.uniform)(26),width:(0,X.uniform)(8),life:(0,X.uniform)(2.2),strength:(0,X.uniform)(.85),color:(0,X.uniform)(new f.Color(4111084))},er={density:(0,X.uniform)(.01),speed:(0,X.uniform)(3),size:(0,X.uniform)(3),trail:(0,X.uniform)(2.8),minLength:(0,X.uniform)(4),glow:(0,X.uniform)(5.1),trailGlow:(0,X.uniform)(1.4),waveGlow:(0,X.uniform)(.2),color:(0,X.uniform)(new f.Color(4111084))},en=(0,X.property)("float","GridEmissive"),ei="glow",eo=(0,X.vec4)(er.color.mul(en),1);var ea=f;let es=new ea.Box3,el=new ea.Vector3;class eu extends ea.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry",this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute("position",new ea.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute("uv",new ea.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(e){let t=this.attributes.instanceStart,r=this.attributes.instanceEnd;
1return void 0!==t&&(t.applyMatrix4(e),r.applyMatrix4(e),t.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));let r=new ea.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceStart",new ea.InterleavedBufferAttribute(r,3,0)),this.setAttribute("instanceEnd",new ea.InterleavedBufferAttribute(r,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));let r=new ea.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceColorStart",new ea.InterleavedBufferAttribute(r,3,0)),this.setAttribute("instanceColorEnd",new ea.InterleavedBufferAttribute(r,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new ea.WireframeGeometry(e.geometry)),this}fromLineSegments(e){let t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new ea.Box3);let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;void 0!==e&&void 0!==t&&(this.boundingBox.setFromBufferAttribute(e),es.setFromBufferAttribute(t),this.boundingBox.union(es))}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new ea.Sphere),null===this.boundingBox&&this.computeBoundingBox();let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(void 0!==e&&void 0!==t){let r=this.boundingSphere.center;this.boundingBox.getCenter(r);let n=0;for(let i=0,o=e.count;i<o;i++)el.fromBufferAttribute(e,i),n=Math.max(n,r.distanceToSquared(el)),el.fromBufferAttribute(t,i),n=Math.max(n,r.distanceToSquared(el));this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}}class ec extends eu{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){let t=e.length-3,r=new Float32Array(2*t);for(let n=0;n<t;n+=3)r[2*n]=e[n],r[2*n+1]=e[n+1],r[2*n+2]=e[n+2],r[2*n+3]=e[n+3],r[2*n+4]=e[n+4],r[2*n+5]=e[n+5];return super.setPositions(r),this}setColors(e){let t=e.length-3,r=new Float32Array(2*t);for(let n=0;n<t;n+=3)r[2*n]=e[n],r[2*n+1]=e[n+1],r[2*n+2]=e[n+2],r[2*n+3]=e[n+3],r[2*n+4]=e[n+4],r[2*n+5]=e[n+5];return super.setColors(r),this}setFromPoints(e){let t=e.length-1,r=new Float32Array(6*t);for(let n=0;n<t;n++)r[6*n]=e[n].x,r[6*n+1]=e[n].y,r[6*n+2]=e[n].z||0,r[6*n+3]=e[n+1].x,r[6*n+4]=e[n+1].y,r[6*n+5]=e[n+1].z||0;return super.setPositions(r),this}fromLine(e){let t=e.geometry;return this.setPositions(t.attributes.position.array),this}}var ed=f;let em=new ed.Vector3,ef=new ed.Vector3,ep=new ed.Vector4,eh=new ed.Vector4,eg=new ed.Vector4,ey=new ed.Vector3,ex=new ed.Matrix4,ev=new ed.Line3,ew=new ed.Vector3,eb=new ed.Box3,eM=new ed.Sphere,eS=new ed.Vector4,eT=new ed.Vector4;function ez(e,t,n){return eS.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),eS.multiplyScalar(1/eS.w),eS.x=r/n.width,eS.y=r/n.height,eS.applyMatrix4(e.projectionMatrixInverse),eS.multiplyScalar(1/eS.w),Math.abs(Math.max(eS.x,eS.y))}class e_ extends ed.Mesh{constructor(e=new eu,t=new p.Line2NodeMaterial({color:0xffffff*Math.random()})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2",this._resolution=new ed.Vector2}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,r=e.attributes.instanceEnd,n=new Float32Array(2*t.count);for(let e=0,i=0,o=t.count;e<o;e++,i+=2)em.fromBufferAttribute(t,e),ef.fromBufferAttribute(r,e),n[i]=0===i?0:n[i-1],n[i+1]=n[i]+em.distanceTo(ef);let i=new ed.InstancedInterleavedBuffer(n,2,1);return e.setAttribute("instanceDistanceStart",new ed.InterleavedBufferAttribute(i,1,0)),e.setAttribute("instanceDistanceEnd",new ed.InterleavedBufferAttribute(i,1,1)),this}onBeforeRender(e){e.getViewport(eT),this._resolution.set(eT.z,eT.w)}raycast(e,n){let i,o,a=this.material.worldUnits,s=e.camera;if(null!==s||a||console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'),
1!1===a&&(0===this._resolution.x||0===this._resolution.y))return;let l=void 0!==e.params.Line2&&e.params.Line2.threshold||0;t=e.ray;let u=this.matrixWorld,c=this.geometry;if(r=this.material.linewidth+l,null===c.boundingSphere&&c.computeBoundingSphere(),eM.copy(c.boundingSphere).applyMatrix4(u),a)i=.5*r;else{let e=Math.max(s.near,eM.distanceToPoint(t.origin));i=ez(s,e,this._resolution)}if(eM.radius+=i,!1!==t.intersectsSphere(eM)){if(null===c.boundingBox&&c.computeBoundingBox(),eb.copy(c.boundingBox).applyMatrix4(u),a)o=.5*r;else{let e=Math.max(s.near,eb.distanceToPoint(t.origin));o=ez(s,e,this._resolution)}eb.expandByScalar(o),!1!==t.intersectsBox(eb)&&(a?function(e,n){let i=e.matrixWorld,o=e.geometry,a=o.attributes.instanceStart,s=o.attributes.instanceEnd,l=Math.min(o.instanceCount,a.count);for(let o=0;o<l;o++){ev.start.fromBufferAttribute(a,o),ev.end.fromBufferAttribute(s,o),ev.applyMatrix4(i);let l=new ed.Vector3,u=new ed.Vector3;t.distanceSqToSegment(ev.start,ev.end,u,l),u.distanceTo(l)<.5*r&&n.push({point:u,pointOnLine:l,distance:t.origin.distanceTo(u),object:e,face:null,faceIndex:o,uv:null,uv1:null})}}(this,n):function(e,n,i){let o=n.projectionMatrix,a=e.matrixWorld,s=e._resolution,l=e.geometry,u=l.attributes.instanceStart,c=l.attributes.instanceEnd,d=Math.min(l.instanceCount,u.count),m=-n.near;
1t.at(1,eg),eg.w=1,eg.applyMatrix4(n.matrixWorldInverse),eg.applyMatrix4(o),eg.multiplyScalar(1/eg.w),eg.x*=s.x/2,eg.y*=s.y/2,eg.z=0,ey.copy(eg),ex.multiplyMatrices(n.matrixWorldInverse,a);for(let n=0;n<d;n++){if(ep.fromBufferAttribute(u,n),eh.fromBufferAttribute(c,n),ep.w=1,eh.w=1,ep.applyMatrix4(ex),eh.applyMatrix4(ex),ep.z>m&&eh.z>m)continue;if(ep.z>m){let e=ep.z-eh.z,t=(ep.z-m)/e;ep.lerp(eh,t)}else if(eh.z>m){let e=eh.z-ep.z,t=(eh.z-m)/e;eh.lerp(ep,t)}ep.applyMatrix4(o),eh.applyMatrix4(o),ep.multiplyScalar(1/ep.w),eh.multiplyScalar(1/eh.w),ep.x*=s.x/2,ep.y*=s.y/2,eh.x*=s.x/2,eh.y*=s.y/2,ev.start.copy(ep),ev.start.z=0,ev.end.copy(eh),ev.end.z=0;let l=ev.closestPointToPointParameter(ey,!0);ev.at(l,ew);let d=ed.MathUtils.lerp(ep.z,eh.z,l),f=d>=-1&&d<=1,p=ey.distanceTo(ew)<.5*r;if(f&&p){ev.start.fromBufferAttribute(u,n),ev.end.fromBufferAttribute(c,n),ev.start.applyMatrix4(a),ev.end.applyMatrix4(a);let r=new ed.Vector3,o=new ed.Vector3;t.distanceSqToSegment(ev.start,ev.end,o,r),i.push({point:o,pointOnLine:r,distance:t.origin.distanceTo(o),object:e,face:null,faceIndex:n,uv:null,uv1:null})}}}(this,s,n))}}}class eP extends e_{constructor(e=new ec,t=new p.Line2NodeMaterial({color:0xffffff*Math.random()})){super(e,t),this.isLine2=!0,this.type="Line2"}}var eR=p;let eE=new f.LineBasicMaterial,eA=X.positionGeometry.y.lessThan(.5),eB=(0,X.attribute)("instanceStart","vec3"),eC=(0,X.attribute)("instanceEnd","vec3"),ej=(0,X.varyingProperty)("vec3","worldStart"),eV=(0,X.varyingProperty)("vec3","worldEnd"),eF=X.materialLineWidth.max(er.size).add(2),eL=(0,X.varyingProperty)("float","segmentPx"),ek=(0,X.varyingProperty)("float","segmentLength"),eI=X.cameraProjectionMatrix.mul((0,X.vec4)(0,0,1,0)),eN=X.cameraProjectionMatrix.mul((0,X.vec4)(0,0,0,1)),eG=(0,X.Fn)(([e,t])=>{let r=eI.z,n=eN.z.mul(-.5).div(r).sub(e.z).div(t.z.sub(e.z));return(0,X.vec4)((0,X.mix)(e.xyz,t.xyz,n),t.w)}),eW=(0,X.Fn)(()=>{let e=X.modelViewMatrix.mul((0,X.vec4)(eB,1)).toVar(),t=X.modelViewMatrix.mul((0,X.vec4)(eC,1)).toVar();ej.assign(X.modelWorldMatrix.mul((0,X.vec4)(eB,1)).xyz),eV.assign(X.modelWorldMatrix.mul((0,X.vec4)(eC,1)).xyz),ek.assign(eC.sub(eB).length());let r=eI.w.equal(-1);(0,X.If)(r,()=>{(0,X.If)(e.z.lessThan(0).and(t.z.greaterThan(0)),()=>{t.assign(eG(e,t))}).ElseIf(t.z.lessThan(0).and(e.z.greaterThanEqual(0)),()=>{e.assign(eG(t,e))})});let n=X.cameraProjectionMatrix.mul(e),i=X.cameraProjectionMatrix.mul(t),o=n.xyz.div(n.w),a=i.xyz.div(i.w);eL.assign(a.xy.sub(o.xy).mul(X.viewport.zw).mul(.5).length());let s=X.viewport.z.div(X.viewport.w),l=a.xy.sub(o.xy).toVar();l.x.assign(l.x.mul(s)),l.assign(l.normalize());let u=(0,X.vec2)(l.y,l.x.negate()).toVar();l.x.assign(l.x.div(s)),u.x.assign(u.x.div(s)),u.assign(X.positionGeometry.x.lessThan(0).select(u.negate(),u)),(0,X.If)(X.positionGeometry.y.lessThan(0),()=>{u.subAssign(l)}).ElseIf(X.positionGeometry.y.greaterThan(1),()=>{u.addAssign(l)}),u.mulAssign(eF),u.divAssign(X.viewport.w.div(X.screenDPR));let c=eA.select(n,i).toVar();return u.mulAssign(c.w),c.add((0,X.vec4)(u,0,0))});class eO extends eR.NodeMaterial{static get type(){return"LineMaterial"}constructor(){super(),this.setDefaultValues(eE),this.vertexNode=eW(),this.positionNode=eA.select(eB,eC),this.depthWrite=!1}setupOutput(e,t){var r,n;let i,o,a,s,l,u=(0,X.uv)(),c=eF.mul(X.screenDPR).mul(.5),d=u.x.abs().mul(c),m=u.y.abs().sub(1).max(0).mul(c),p=(0,X.vec2)(d,m).length(),h=X.materialLineWidth.mul(X.screenDPR).mul(.5),g=(0,X.smoothstep)(h.add(.5),h.sub(.5),p),y=u.y.clamp(-1,1).mul(.5).add(.5),x=X.instanceIndex.toFloat(),v=(i=X.time.mul(er.speed).div(ek).add((0,X.hash)(x)),o=(0,X.floor)(i),a=e=>(0,X.hash)(x.add(e.mul(131))).lessThan(er.density).toFloat().mul((0,X.step)(er.minLength,ek)),{t:(0,X.fract)(i),active:a(o).mul((0,X.step)(1,i)),activePrevious:a(o.sub(1)).mul((0,X.step)(2,i))}),w=(r=y.sub(v.t).abs().mul(eL),n=v.active,s=er.size.mul(X.screenDPR).mul(.5),(0,X.smoothstep)(s.add(.5),s.sub(.5),(0,X.max)(r,d)).mul(n)),b=(l=(e,t)=>(0,X.exp)(e.div(er.trail).negate()).mul((0,X.step)(0,e)).mul(t),(0,X.max)(l(v.t.sub(y).mul(ek),v.active),l(v.t.add(1).sub(y).mul(ek),v.activePrevious))).mul(g);return((e,t,r,n,i,o=(0,X.float)(0),a=(0,X.float)(0))=>{let s=t.rgb,l=(0,X.float)(1),u=e.scene?.fog;
1r&&u instanceof f.Fog&&(l=(0,X.rangeFogFactor)((0,X.reference)("near","float",u),(0,X.reference)("far","float",u)).oneMinus());let c=(0,X.vec2)(n.x.sub(Z.center.x),n.z.sub(Z.center.z)).length().add((0,X.hash)(i).mul(Z.jitter)),d=Z.floor.sub(c),m=Z.rise.sub(n.y.add(c.mul(Z.riseSlope)).add((0,X.hash)(i.add(7.31)).mul(Z.riseJitter))),p=(0,X.smoothstep)((0,X.float)(0),(0,X.float)(.4),d).mul((0,X.smoothstep)((0,X.float)(0),(0,X.float)(.15),m)),h=(0,X.step)(n.y,(0,X.float)(.35)),g=(0,X.smoothstep)(Z.ink,(0,X.float)(0),d).mul((0,X.step)((0,X.float)(0),d)).mul(h),y=(0,X.smoothstep)(Z.riseInk,(0,X.float)(0),m).mul((0,X.step)((0,X.float)(0),m)).mul(h.oneMinus()),x=(0,X.max)(g,y).mul(p).mul(l),v=(0,X.float)(0);for(let{center:e,age:t}of ee){let r=(0,X.vec2)(n.x.sub(e.x),n.z.sub(e.z)).length().add(n.y.max(0)),i=t.mul(et.speed).sub(r),o=(0,X.smoothstep)(et.width,(0,X.float)(0),i).mul((0,X.step)((0,X.float)(0),i)),a=t.div(et.life).oneMinus().clamp(0,1).mul((0,X.step)(0,t));v=(0,X.max)(v,o.mul(a))}let w=v.mul(et.strength).mul(l),b=o.mul(p).mul(l),M=a.mul(p).mul(l);en.assign(b.mul(er.glow).add(M.mul(er.trailGlow)).add(w.mul(er.waveGlow)));let S=(0,X.mix)((0,X.mix)((0,X.mix)(s,Z.color,x),et.color,w),er.color,(0,X.max)(b,M)),T=t.a.mul(l).mul(p).mul(w.mul(2).add(1)).max(b).max(M.mul(t.a)).min(1);return(0,X.vec4)(S,T)})(e,(0,X.vec4)(t.rgb,t.a.mul(g)),this.fog,(0,X.mix)(ej,eV,y),x,w,b)}}function eH(e){let t,r,n,i,o,l,u,c,d,m,f,p,h,g,y,x,v,w,b,M=(0,I.c)(38);M[0]!==e?({ref:i,points:r,color:o,lineWidth:l,opacity:t,transparent:u,fog:c,segments:d,...n}=e,M[0]=e,M[1]=t,M[2]=r,M[3]=n,M[4]=i,M[5]=o,M[6]=l,M[7]=u,M[8]=c,M[9]=d):(t=M[1],r=M[2],n=M[3],i=M[4],o=M[5],l=M[6],u=M[7],c=M[8],d=M[9]);let S=void 0===o?0xffffff:o,T=void 0===l?1:l,z=void 0===u||u,_=void 0===c||c,P=void 0!==d&&d;M[10]!==P?(m=P?new e_:new eP,M[10]=P,M[11]=m):m=M[11];let R=m,[E]=(0,s.useState)(eD);M[12]!==r||M[13]!==P?((f=P?new eu:new ec).setPositions(r.flatMap(eU)),M[12]=r,M[13]=P,M[14]=f):f=M[14];let A=f;return M[15]!==A?(p=()=>()=>A.dispose(),h=[A],M[15]=A,M[16]=p,M[17]=h):(p=M[16],h=M[17]),(0,s.useEffect)(p,h),M[18]!==E?(y=()=>()=>E.dispose(),g=[E],M[18]=E,M[19]=g,M[20]=y):(g=M[19],y=M[20]),(0,s.useEffect)(y,g),M[21]!==A?(x=(0,a.jsx)("primitive",{object:A,attach:"geometry"}),M[21]=A,M[22]=x):x=M[22],M[23]!==t?(v=void 0!==t&&{opacity:t},M[23]=t,M[24]=v):v=M[24],M[25]!==S||M[26]!==_||M[27]!==T||M[28]!==E||M[29]!==v||M[30]!==z?(w=(0,a.jsx)("primitive",{object:E,attach:"material",color:S,linewidth:T,transparent:z,fog:_,...v}),M[25]=S,M[26]=_,M[27]=T,M[28]=E,M[29]=v,M[30]=z,M[31]=w):w=M[31],M[32]!==R||M[33]!==n||M[34]!==i||M[35]!==x||M[36]!==w?(b=(0,a.jsxs)("primitive",{object:R,ref:i,...n,children:[x,w]}),M[32]=R,M[33]=n,M[34]=i,M[35]=x,M[36]=w,M[37]=b):b=M[37],b}function eU(e){return[e.x,e.y,e.z]}function eD(){return new eO}var e$=e.i(71611),eq=e.i(82206);let eK=new f.Vector3,eY=new f.Vector3,eJ=new f.Vector3,eQ=new f.Vector2;function eX(e,t,r){let n=eK.setFromMatrixPosition(e.matrixWorld);n.project(t);let i=r.width/2,o=r.height/2;return[n.x*i+i,-(n.y*o)+o]}let eZ=e=>1e-10>Math.abs(e)?0:e;function e0(e,t,r=""){let n="matrix3d(";for(let r=0;16!==r;r++)n+=eZ(t[r]*e.elements[r])+(15!==r?",":")");return r+n}let e1=(i=[1,-1,1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1],e=>e0(e,i)),e2=(o=e=>[1/e,1/e,1/e,1,-1/e,-1/e,-1/e,-1,1/e,1/e,1/e,1,1,1,1,1],(e,t)=>e0(e,o(t),"translate(-50%,-50%)")),e3=s.forwardRef(({children:e,eps:t=.001,style:r,className:n,prepend:i,center:o,fullscreen:a,portal:u,distanceFactor:c,sprite:d=!1,transform:m=!1,occlude:p,onOcclude:h,castShadow:g,receiveShadow:y,material:x,geometry:v,zIndexRange:w=[0x1000037,0],calculatePosition:b=eX,as:S="div",wrapperClass:T,pointerEvents:z="auto",..._},P)=>{let{gl:R,camera:E,scene:A,size:B,raycaster:C,events:j,viewport:V}=(0,M.useThree)(),[F]=s.useState(()=>document.createElement(S)),L=s.useRef(null),k=s.useRef(null),I=s.useRef(0),N=s.useRef([0,0]),G=s.useRef(null),W=s.useRef(null),O=(null==u?void 0:u.current)||j.connected||R.domElement.parentNode,H=s.useRef(null),U=s.useRef(!1),D=s.useMemo(()=>{var e;return p&&"blending"!==p||Array.isArray(p)&&p.length&&(e=p[0])&&"object"==typeof e&&"current"in e},[p]);s.useLayoutEffect(()=>{let e=R.domElement;p&&"blending"===p?(e.style.zIndex=`${Math.floor(w[0]/2)}`,e.style.position="absolute",e.style.pointerEvents="none"):(e.style.zIndex=null,e.style.position=null,e.style.pointerEvents=null)},[p]),s.useLayoutEffect(()=>{if(k.current){let e=L.current=eq.createRoot(F);if(A.updateMatrixWorld(),m)F.style.cssText="position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;";else{let e=b(k.current,E,B);F.style.cssText=`position:absolute;top:0;left:0;transform:translate3d(${e[0]}px,${e[1]}px,0);transform-origin:0 0;`}return O&&(i?O.prepend(F):O.appendChild(F)),()=>{O&&O.removeChild(F),e.unmount()}}},[O,m]),s.useLayoutEffect(()=>{T&&(F.className=T)},[T]);let $=s.useMemo(()=>m?{position:"absolute",top:0,left:0,width:B.width,height:B.height,transformStyle:"preserve-3d",pointerEvents:"none"}
1:{position:"absolute",transform:o?"translate3d(-50%,-50%,0)":"none",...a&&{top:-B.height/2,left:-B.width/2,width:B.width,height:B.height},...r},[r,o,a,B,m]),q=s.useMemo(()=>({position:"absolute",pointerEvents:z}),[z]);s.useLayoutEffect(()=>{var t,i;U.current=!1,m?null==(t=L.current)||t.render(s.createElement("div",{ref:G,style:$},s.createElement("div",{ref:W,style:q},s.createElement("div",{ref:P,className:n,style:r,children:e})))):null==(i=L.current)||i.render(s.createElement("div",{ref:P,style:$,className:n,children:e}))});let K=s.useRef(!0);(0,l.useFrame)(e=>{if(k.current){E.updateMatrixWorld(),k.current.updateWorldMatrix(!0,!1);let e=m?N.current:b(k.current,E,B);if(m||Math.abs(I.current-E.zoom)>t||Math.abs(N.current[0]-e[0])>t||Math.abs(N.current[1]-e[1])>t){var r;let t,n,i,o,a=(r=k.current,t=eK.setFromMatrixPosition(r.matrixWorld),n=eY.setFromMatrixPosition(E.matrixWorld),i=t.sub(n),o=E.getWorldDirection(eJ),i.angleTo(o)>Math.PI/2),s=!1;D&&(Array.isArray(p)?s=p.map(e=>e.current):"blending"!==p&&(s=[A]));let l=K.current;s?K.current=function(e,t,r,n){let i=eK.setFromMatrixPosition(e.matrixWorld),o=i.clone();o.project(t),eQ.set(o.x,o.y),r.setFromCamera(eQ,t);let a=r.intersectObjects(n,!0);if(a.length){let e=a[0].distance;return i.distanceTo(r.ray.origin)<e}return!0}(k.current,E,C,s)&&!a:K.current=!a,l!==K.current&&(h?h(!K.current):F.style.display=K.current?"block":"none");let u=Math.floor(w[0]/2),g=p?D?[w[0],u]:[u-1,0]:w;if(F.style.zIndex=`${function(e,t,r){if(t instanceof f.PerspectiveCamera||t instanceof f.OrthographicCamera){let n=eK.setFromMatrixPosition(e.matrixWorld),i=eY.setFromMatrixPosition(t.matrixWorld),o=n.distanceTo(i),a=(r[1]-r[0])/(t.far-t.near),s=r[1]-a*t.far;return Math.round(a*o+s)}}(k.current,E,g)}`,m){let[e,t]=[B.width/2,B.height/2],r=E.projectionMatrix.elements[5]*t,{isOrthographicCamera:n,top:i,left:o,bottom:a,right:s}=E,l=e1(E.matrixWorldInverse),u=n?`scale(${r})translate(${eZ(-(s+o)/2)}px,${eZ((i+a)/2)}px)`:`translateZ(${r}px)`,m=k.current.matrixWorld;d&&((m=E.matrixWorldInverse.clone().transpose().copyPosition(m).scale(k.current.scale)).elements[3]=m.elements[7]=m.elements[11]=0,m.elements[15]=1),F.style.width=B.width+"px",F.style.height=B.height+"px",F.style.perspective=n?"":`${r}px`,G.current&&W.current&&(G.current.style.transform=`${u}${l}translate(${e}px,${t}px)`,W.current.style.transform=e2(m,1/((c||10)/400)))}else{let t=void 0===c?1:function(e,t){if(t instanceof f.OrthographicCamera)return t.zoom;if(!(t instanceof f.PerspectiveCamera))return 1;{let r=eK.setFromMatrixPosition(e.matrixWorld),n=eY.setFromMatrixPosition(t.matrixWorld);return 1/(2*Math.tan(t.fov*Math.PI/180/2)*r.distanceTo(n))}}(k.current,E)*c;F.style.transform=`translate3d(${e[0]}px,${e[1]}px,0) scale(${t})`}N.current=e,I.current=E.zoom}}if(!D&&H.current&&!U.current)if(m){if(G.current){let e=G.current.children[0];if(null!=e&&e.clientWidth&&null!=e&&e.clientHeight){let{isOrthographicCamera:t}=E;if(t||v)_.scale&&(Array.isArray(_.scale)?_.scale instanceof f.Vector3?H.current.scale.copy(_.scale.clone().divideScalar(1)):H.current.scale.set(1/_.scale[0],1/_.scale[1],1/_.scale[2]):H.current.scale.setScalar(1/_.scale));else{let t=(c||10)/400,r=e.clientWidth*t,n=e.clientHeight*t;H.current.scale.set(r,n,1)}U.current=!0}}}else{let t=F.children[0];if(null!=t&&t.clientWidth&&null!=t&&t.clientHeight){let e=1/V.factor,r=t.clientWidth*e,n=t.clientHeight*e;H.current.scale.set(r,n,1),U.current=!0}H.current.lookAt(e.camera.position)}});let Y=s.useMemo(()=>({vertexShader:m?void 0:`
2          /*
3            This shader is from the THREE's SpriteMaterial.
4            We need to turn the backing plane into a Sprite
5            (make it always face the camera) if "transfrom"
6            is false.
7          */
8          #include <common>
9
10          void main() {
11            vec2 center = vec2(0., 1.);
12            float rotation = 0.0;
13
14            // This is somewhat arbitrary, but it seems to work well
15            // Need to figure out how to derive this dynamically if it even matters
16            float size = 0.03;
17
18            vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
19            vec2 scale;
20            scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
21            scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
22
23            bool isPerspective = isPerspectiveMatrix( projectionMatrix );
24            if ( isPerspective ) scale *= - mvPosition.z;
25
26            vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;
27            vec2 rotatedPosition;
28            rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
29            rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
30            mvPosition.xy += rotatedPosition;
31
32            gl_Position = projectionMatrix * mvPosition;
33          }
34      `,fragmentShader:`
35        void main() {
36          gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
37        }
38      `}),[m]);return s.createElement("group",(0,e$.default)({},_,{ref:k}),p&&!D&&s.createElement("mesh",{castShadow:g,receiveShadow:y,ref:H},v||s.createElement("planeGeometry",null),x||s.createElement("shaderMaterial",{side:f.DoubleSide,vertexShader:Y.vertexShader,fragmentShader:Y.fragmentShader})))});var e5=e.i(32048),e4=e.i(80545),e6=e.i(22703),e8=e.i(1114);let e7=new f.Vector3;function e9(e){let t,r,n,i,o,u,c,d,m,f=(0,I.c)(34),{i:p,position:g,hotspotDetails:y,isVisible:v}=e,w=void 0===v||v,b=(0,s.useRef)(!0),S=(0,e4.useMotionValue)(1),T=(0,s.useRef)(null),z=(0,h.useRouter)(),_=(0,N.useRouter)(),{controls:P}=(0,M.useThree)();f[0]!==y?(t=e=>({markHotspotVisited:e.markHotspotVisited,registerHotspotClickHandler:e.registerHotspotClickHandler,unregisterHotspotClickHandler:e.unregisterHotspotClickHandler,isVisited:!!y&&e.visitedHotspotIds.includes(y.id)}),f[0]=y,f[1]=t):t=f[1];let{markHotspotVisited:R,registerHotspotClickHandler:E,unregisterHotspotClickHandler:A,isVisited:B}=(0,x.default)(t);f[2]!==w||f[3]!==S?(r=e=>{let{camera:t}=e;if(!T.current)return;T.current.getWorldPosition(e7);let r=e7.distanceTo(t.position),n=w&&r<=12.5;n!==b.current&&(b.current=n,S.set(+!!n))},f[2]=w,f[3]=S,f[4]=r):r=f[4],(0,l.useFrame)(r),f[5]!==P||f[6]!==y||f[7]!==R||f[8]!==_||f[9]!==z?(n=()=>
38{if(!P||!y||!T.current)return;let{variant:e,link:t,detail:r}=y;if("detail"===e&&r?.slug)T.current.getWorldPosition(e7),P.normalizeRotations(),P.setTarget(e7.x,e7.y,e7.z,!0),P.zoomTo(3,!0),z.push({pathname:"/detail/[detailSlug]",params:{detailSlug:r.slug}});else if("link"===e&&t?.path){R(y.id);let e=(0,e8.createInternalPath)(t.path),r=`${e}${t.anchor?`#${t.anchor}`:""}`;_.push(r);return}else"link"===e&&t&&t.isExternalUrl&&t.href&&(R(y.id),window.open(t.href,"_blank","noopener,noreferrer"))},f[5]=P,f[6]=y,f[7]=R,f[8]=_,f[9]=z,f[10]=n):n=f[10];let C=n,j=(0,s.useRef)(!1);f[11]!==y||f[12]!==_||f[13]!==z?(i=()=>{if(j.current||!y)return;j.current=!0;let{variant:e,link:t,detail:r}=y;"detail"===e&&r?.slug?z.prefetch({pathname:"/detail/[detailSlug]",params:{detailSlug:r.slug}}):"link"===e&&t?.path&&_.prefetch((0,e8.createInternalPath)(t.path))},f[11]=y,f[12]=_,f[13]=z,f[14]=i):i=f[14];let V=i;return(f[15]!==C||f[16]!==y||f[17]!==E||f[18]!==A?(o=()=>{if(!y)return;let e=y.id;return E(e,C),()=>A(e)},u=[y,C,E,A],f[15]=C,f[16]=y,f[17]=E,f[18]=A,f[19]=o,f[20]=u):(o=f[19],u=f[20]),(0,s.useEffect)(o,u),y)?(f[21]!==C||f[22]!==V||f[23]!==y||f[24]!==p||f[25]!==w||f[26]!==B||f[27]!==S?(c=w&&(0,a.jsx)(e6.default,{id:y.id,titel:y.titel,visibleMotion:S,index:p,isVisited:B,onClick:C,onHover:V,className:"scale-40 md:scale-60"}),f[21]=C,f[22]=V,f[23]=y,f[24]=p,f[25]=w,f[26]=B,f[27]=S,f[28]=c):c=f[28],f[29]!==c?(d=(0,a.jsx)(e3,{center:!0,children:(0,a.jsx)(e5.AnimatePresence,{children:c})}),f[29]=c,f[30]=d):d=f[30],f[31]!==g||f[32]!==d?(m=(0,a.jsx)("group",{ref:T,position:g,children:d}),f[31]=g,f[32]=d,f[33]=m):m=f[33],m):null}function te(e){let t,r,n,i,o,u,c,d,m,p=(0,I.c)(26);p[0]!==e?({geometry:t,points:r,position:n,isVisible:o,...i}=e,p[0]=e,p[1]=t,p[2]=r,p[3]=n,p[4]=i,p[5]=o):(t=p[1],r=p[2],n=p[3],i=p[4],o=p[5]);let h=void 0===o||o,{currentChapter:g,isHotspotTransitioning:v}=(0,x.default)(tt),w=(0,s.useRef)(null),b=(0,s.useRef)(null),M=(0,s.useRef)(0),S=(0,s.useRef)(h),T=t.attributes.position.array,z=t.index?.array;p[6]===Symbol.for("react.memo_cache_sentinel")?(u={thickness:{min:0,max:6,step:.1,value:1.35},opacity:{min:0,max:1,step:.01,value:.8},color:"rgb(54, 204, 255)"},c={collapsed:!0},p[6]=u,p[7]=c):(u=p[6],c=p[7]);let{thickness:_,opacity:P,color:R}=y("MotherShape",u,c);if(p[8]!==h||p[9]!==P?(d=(e,t)=>{if(h!==S.current&&(S.current=h,M.current=0),!w.current)return;if(h&&M.current<1){M.current=M.current+t;return}let r=h?P:0,n=1-Math.exp(-4*t);w.current.material.opacity=f.MathUtils.lerp(w.current.material.opacity,r,n)},p[8]=h,p[9]=P,p[10]=d):d=p[10],(0,l.useFrame)(d),p[11]!==R||p[12]!==g||p[13]!==z||p[14]!==v||p[15]!==h||p[16]!==r||p[17]!==n||p[18]!==T||p[19]!==i||p[20]!==_){let e,t=(({positions:e,indices:t,hotspotCount:r})=>{if(0===r)return[];let n=t=>new f.Vector3(e[3*t],e[3*t+1],e[3*t+2]),i=e=>`${e.x},${e.y},${e.z}`,o=[],a=new Set;for(let e=0;e<2*r&&e<t.length;e+=2){let r=n(t[e]),s=n(t[e+1]),l=a.has(i(r))?a.has(i(s))?null:s:r;l&&(o.push(l),a.add(i(l)))}return o})({positions:T,indices:z||[],hotspotCount:g?.hotspotDetails.length||0});p[22]!==R||p[23]!==r||p[24]!==_?(e=(0,a.jsx)(eH,{ref:w,renderOrder:3,fog:!0,segments:!0,points:r,transparent:!0,color:R,lineWidth:_}),p[22]=R,p[23]=r,p[24]=_,p[25]=e):e=p[25],m=(0,a.jsxs)("group",{ref:b,...i,dispose:null,position:n,children:[e,g?.pageType==="hotspot"&&t.map((e,t)=>(0,a.jsx)(e9,{i:t,position:e,hotspotDetails:g.hotspotDetails[t],isVisible:h&&!v},`hotspot-mothershape-${e.x}-${e.y}-${e.z}`))]}),p[11]=R,p[12]=g,p[13]=z,p[14]=v,p[15]=h,p[16]=r,p[17]=n,p[18]=T,p[19]=i,p[20]=_,p[21]=m}else m=p[21];return m}function tt(e){return{currentChapter:e.currentChapter,isHotspotTransitioning:e.isHotspotTransitioning}}function tr(e){let t=e.attributes.position.array,r=e.index?.array,n=[];if(r)for(let e=0;e<r.length;e++){let i=3*r[e];n.push(new f.Vector3(t[i],t[i+1],t[i+2]))}else for(let e=0;e<t.length;e+=3)n.push(new f.Vector3(t[e],t[e+1],t[e+2]));return n}let tn=new f.Vector3,ti=new f.Vector3;function to(e){let t=new Map;for(let r=0;r<e.length;r+=2){let n=e[r],i=e[r+1];tn.subVectors(i,n).normalize(),(Math.abs(tn.x)>1e-6?tn.x:Math.abs(tn.y)>1e-6?tn.y:tn.z)<0&&tn.negate();let o=n.dot(tn);ti.copy(tn).multiplyScalar(-o).add(n);let a=[...tn.toArray().map(e=>e.toFixed(4)),...ti.toArray().map(e=>e.toFixed(3))].join(),s=t.get(a);s||(s={direction:tn.clone(),foot:ti.clone(),spans:[]},t.set(a,s));let l=i.dot(tn);s.spans.push([Math.min(o,l),Math.max(o,l)])}let r=[];for(let e of t.values()){e.spans.sort((e,t)=>
38e[0]-t[0]);let[t,n]=e.spans[0],i=()=>r.push(e.foot.clone().addScaledVector(e.direction,t),e.foot.clone().addScaledVector(e.direction,n));for(let[r,o]of e.spans.slice(1))r>n+.001&&(i(),t=r),n=Math.max(n,o);i()}return r}function ta(e){let t,r,n,i,o,u,c,d,m,p,h,g,v,w,b,M,S,T,z,_,P,E,A,B,C,j,V=(0,I.c)(67);V[0]!==e?({...t}=e,V[0]=e,V[1]=t):t=V[1];let{nodes:F}=(0,R.useGLTF)("/models/grid.glb"),L=(0,s.useRef)(null),k=(0,s.useRef)(null),{currentChapter:N}=(0,x.default)(ts),G=N?.pageType==="hotspot",W=N?.pageType==="vertical",O=W&&N?.scrollytellingAnimation==="type1",H=W&&N?.scrollytellingAnimation==="type2";V[2]!==F.motherShape.geometry?(r=tr(F.motherShape.geometry),V[2]=F.motherShape.geometry,V[3]=r):r=V[3];let U=r;V[4]!==F.floor.geometry?(n=to(tr(F.floor.geometry)),V[4]=F.floor.geometry,V[5]=n):n=V[5];let D=n;V[6]!==F.main_grid.geometry?(i=to(tr(F.main_grid.geometry)),V[6]=F.main_grid.geometry,V[7]=i):i=V[7];let $=i;V[8]!==F.floorplan_11.geometry?(o=to(tr(F.floorplan_11.geometry)),V[8]=F.floorplan_11.geometry,V[9]=o):o=V[9];let q=o;V[10]!==F.floorplan_12.geometry?(u=to(tr(F.floorplan_12.geometry)),V[10]=F.floorplan_12.geometry,V[11]=u):u=V[11];let K=u;V[12]===Symbol.for("react.memo_cache_sentinel")?(c={thickness:{min:0,max:6,step:.1,value:1.3},opacity:{min:0,max:1,step:.01,value:.1},color:"#9ACBC7"},d={collapsed:!0},V[12]=c,V[13]=d):(c=V[12],d=V[13]);let{thickness:Y,opacity:J,color:Q}=y("grid",c,d);V[14]===Symbol.for("react.memo_cache_sentinel")?(m={color:"#bcd1cf",opacity:{min:0,max:1,step:.01,value:.2},thickness:{min:0,max:10,step:.1,value:1}},p={collapsed:!0},V[14]=m,V[15]=p):(m=V[14],p=V[15]);let{color:X,opacity:Z,thickness:ee}=y("gridFloor",m,p);V[16]===Symbol.for("react.memo_cache_sentinel")?(h={color:"#36CCFF",opacity:{min:0,max:1,step:.01,value:.9},thickness:{min:0,max:10,step:.1,value:1.2}},g={collapsed:!0},V[16]=h,V[17]=g):(h=V[16],g=V[17]);let{color:et,opacity:en,thickness:ei}=y("gridFloorPlan",h,g);V[18]===Symbol.for("react.memo_cache_sentinel")?(v={density:{value:.01,min:0,max:.2,step:.002},speed:{value:3,min:0,max:20,step:.5},size:{value:3,min:1,max:16,step:.5},trail:{value:2.8,min:.1,max:20,step:.1},minLength:{value:4,min:0,max:30,step:.5},glow:{value:5.1,min:0,max:8,step:.1},trailGlow:{value:1.4,min:0,max:4,step:.05},waveGlow:{value:.2,min:0,max:2,step:.05},color:"#3ebaec"},w={collapsed:!0},V[18]=v,V[19]=w):(v=V[18],w=V[19]);let eo=y("gridPulses",v,w);return V[20]!==eo.color||V[21]!==eo.density||V[22]!==eo.glow||V[23]!==eo.minLength||V[24]!==eo.size||V[25]!==eo.speed||V[26]!==eo.trail||V[27]!==eo.trailGlow||V[28]!==eo.waveGlow?(b=()=>{er.density.value=eo.density,er.speed.value=eo.speed,er.size.value=eo.size,er.trail.value=eo.trail,er.minLength.value=eo.minLength,er.glow.value=eo.glow,er.trailGlow.value=eo.trailGlow,er.waveGlow.value=eo.waveGlow,er.color.value.setStyle(eo.color)},M=[eo.density,eo.speed,eo.size,eo.trail,eo.minLength,eo.glow,eo.trailGlow,eo.waveGlow,eo.color],V[20]=eo.color,V[21]=eo.density,V[22]=eo.glow,V[23]=eo.minLength,V[24]=eo.size,V[25]=eo.speed,V[26]=eo.trail,V[27]=eo.trailGlow,V[28]=eo.waveGlow,V[29]=b,V[30]=M):(b=V[29],M=V[30]),(0,s.useEffect)(b,M),V[31]!==O||V[32]!==H||V[33]!==en?(S=(e,t)=>{let r=1-Math.exp(-4*t);if(L.current){let e=O?en:0;L.current.material.opacity=f.MathUtils.lerp(L.current.material.opacity,e,r)}if(k.current){let e=H?en:0;k.current.material.opacity=f.MathUtils.lerp(k.current.material.opacity,e,r)}},V[31]=O,V[32]=H,V[33]=en,V[34]=S):S=V[34],(0,l.useFrame)(S),V[35]===Symbol.for("react.memo_cache_sentinel")?(T=[.584,6.811,-2.326],V[35]=T):T=V[35],V[36]!==G||V[37]!==U||V[38]!==F.motherShape.geometry?(z=(0,a.jsx)(te,{geometry:F.motherShape.geometry,points:U,position:T,isVisible:G}),V[36]=G,V[37]=U,V[38]=F.motherShape.geometry,V[39]=z):z=V[39],V[40]===Symbol.for("react.memo_cache_sentinel")?(_=[-10,0,0],V[40]=_):_=V[40],V[41]!==X||V[42]!==D||V[43]!==Z||V[44]!==ee?(P=(0,a.jsx)(eH,{name:"floor",renderOrder:5,fog:!0,segments:!0,points:D,position:_,transparent:!0,opacity:Z,color:X,lineWidth:ee}),V[41]=X,V[42]=D,V[43]=Z,V[44]=ee,V[45]=P):P=V[45],V[46]===Symbol.for("react.memo_cache_sentinel")?(E=[0,0,12.605],V[46]=E):E=V[46],V[47]!==Q||V[48]!==$||V[49]!==J||V[50]!==Y?(A=(0,a.jsx)(eH,{name:"main_grid",renderOrder:3,fog:!0,segments:!0,points:$,position:E,transparent:!0,opacity:J,color:Q,lineWidth:Y}),V[47]=Q,V[48]=$,V[49]=J,V[50]=Y,V[51]=A):A=V[51],V[52]!==et||V[53]!==q||V[54]!==ei?(B=(0,a.jsx)(eH,{ref:L,name:"floorplan_11",renderOrder:4,fog:!0,segments:!0,points:q,transparent:!0,color:et,lineWidth:ei}),V[52]=et,V[53]=q,V[54]=ei,V[55]=B):B=V[55],V[56]!==et||V[57]!==K||V[58]!==ei?(C=(0,a.jsx)(eH,{ref:k,name:"floorplan_12",renderOrder:4,fog:!0,segments:!0,points:K,transparent:!0,color:et,lineWidth:ei}),V[56]=et,V[57]=K,V[58]=ei,V[59]=C):C=V[59],V[60]!==t||V[61]!==z||V[62]!==P||V[63]!==A||V[64]!==B||V[65]!==C?(j=(0,a.jsxs)("group",{renderOrder:3,...t,dispose:null,children:[z,P,A,B,C]}),V[60]=t,V[61]=z,V[62]=P,V[63]=A,V[64]=B,V[65]=C,V[66]=j):j=V[66],j}function ts(e){return{currentChapter:e.currentChapter}}R.useGLTF.preload(["/models/grid.glb"]);let{ACTION:tl}=b.CameraControlsImpl,tu={enabled:!0,minPolarAngle:Math.PI/4,maxPolarAngle:Math.PI/1.5,dollySpeed:0,truckSpeed:0,smoothTime:.4,draggingSmoothTime:.4,mouseButtons:{left:tl.ROTATE,middle:tl.DOLLY,right:tl.TRUCK,wheel:tl.ROTATE}},tc={enabled:!1,smoothTime:.5},td={vertical:{near:2.2,far:33},hotspot:{near:3,far:30}};function tm(){let{currentChapter:e,separatorRef:t,setRotateView:r}=(0,x.default)(e=>({currentChapter:e.currentChapter,separatorRef:e.separatorRef,setRotateView:e.setRotateView}
38)),n=!(0,_.useBreakpoint)("sm"),i=(0,T.useReducedMotion)(),o=(0,g.useFinePointer)(),u=(0,P.useKioskMode)(),c=(0,s.useRef)(null),[d,m]=(0,s.useState)(!1),f=(0,s.useCallback)(e=>{c.current=e,e&&m(!0)},[]),p=(0,s.useRef)(0),h=(0,s.useRef)({x:0,y:0}),v=(0,s.useRef)(!1);(0,s.useEffect)(()=>{d&&(v.current=!0)},[d]);let b=e?.pageType.toLowerCase();(0,s.useEffect)(()=>{if("hotspot"===b&&d)return r((e,t)=>{c.current?.rotate(e,t,!0)}),()=>r(null)},[b,d,r]);let R=(0,s.useRef)(null),E=(0,M.useThree)(e=>e.camera),A=td["vertical"===b?"vertical":"hotspot"],B=(0,s.useCallback)(e=>{R.current&&(R.current.far=e),E.far=e,E.updateProjectionMatrix()},[E]);y("Fog",()=>({color:{value:"#edf0f2",onChange:e=>R.current?.color.set(e),transient:!0},near:{value:A.near,min:0,max:20,step:.1,onChange:e=>{R.current&&(R.current.near=e)},transient:!0},far:{value:A.far,min:0,max:100,step:.5,onChange:B,transient:!0}}),{collapsed:!0}),(0,s.useEffect)(()=>{R.current&&(R.current.near=A.near),B(A.far)},[A,B]);let C=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=()=>{t?.current&&(C.current=t.current.getBoundingClientRect().top+window.scrollY)};return e(),window.addEventListener("resize",e,{passive:!0}),()=>window.removeEventListener("resize",e)},[t]);let{scrollY:j}=(0,z.useScroll)();return(0,S.useMotionValueEvent)(j,"change",e=>{if(!t?.current||null===C.current){let t=document.documentElement.scrollHeight-window.innerHeight;p.current=t>0?e/t:0;return}let r=C.current;p.current=r>0?Math.min(1,e/r):0}),(0,s.useEffect)(()=>{if(!o){h.current.x=0,h.current.y=0;return}let e=e=>{h.current.x=e.clientX/window.innerWidth-1,h.current.y=e.clientY/window.innerHeight-1};return window.addEventListener("mousemove",e,{passive:!0}),()=>window.removeEventListener("mousemove",e)},[o]),(0,l.useFrame)(()=>{if(!c.current)return;let e="hotspot"!==b||n?0:-1,t="hotspot"!==b||n?0:.6,r=i?0:.3*h.current.x,o=i?0:.1*h.current.y;c.current.setFocalOffset(r+e,o+t,0,!i)}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("fog",{ref:R,attach:"fog",args:["#edf0f2",td.hotspot.near,td.hotspot.far]}),(0,a.jsx)(w.CameraControls,{ref:f,makeDefault:!0,..."hotspot"===b?tu:tc,..."hotspot"===b&&u&&{draggingSmoothTime:.08}}),(0,a.jsx)(ta,{}),"hotspot"!==b&&d&&(0,a.jsx)(k,{scrollProgress:p}),"hotspot"===b&&d&&(0,a.jsx)($,{isReturning:v})]})}let tf=new f.Plane(new f.Vector3(0,1,0),0),tp=new f.Raycaster,th=new f.Vector2;function tg(){let e,t,r,n,i=(0,I.c)(6),o=(0,M.useThree)(ty),a=(0,T.useReducedMotion)();i[0]===Symbol.for("react.memo_cache_sentinel")?(e=[,,,].fill(-1),i[0]=e):e=i[0];let u=(0,s.useRef)(e),c=(0,s.useRef)(0);return i[1]!==o||i[2]!==a?(t=()=>{if(a)return;let e=e=>{if(!e.isPrimary||!document.querySelector("[data-landing]"))return;th.set(e.clientX/window.innerWidth*2-1,-(2*(e.clientY/window.innerHeight))+1),tp.setFromCamera(th,o);let t=c.current;tp.ray.intersectPlane(tf,ee[t].center.value)&&(u.current[t]=performance.now(),c.current=(t+1)%3)};return window.addEventListener("pointerdown",e),()=>window.removeEventListener("pointerdown",e)},r=[o,a],i[1]=o,i[2]=a,i[3]=t,i[4]=r):(t=i[3],r=i[4]),(0,s.useEffect)(t,r),i[5]===Symbol.for("react.memo_cache_sentinel")?(n=()=>{let e=performance.now(),t=et.life.value;for(let r=0;r<3;r++){let n=u.current[r],i=n<0?-1:(e-n)/1e3;ee[r].age.value=i>t?-1:i,i>t&&(u.current[r]=-1)}},i[5]=n):n=i[5],(0,l.useFrame)(n),null}function ty(e){return e.camera}var tx=e.i(32117),tv=p;let tw=new tv.QuadMesh;class tb extends tv.TempNode{static get type(){return"GaussianBlurNode"}constructor(e,t=null,r=4,n={}){super("vec4"),this.textureNode=e,this.directionNode=t,this.sigma=r,this._invSize=(0,X.uniform)(new f.Vector2),this._horizontalRT=new f.RenderTarget(1,1,{depthBuffer:!1}),this._horizontalRT.texture.name="GaussianBlurNode.horizontal",this._verticalRT=new f.RenderTarget(1,1,{depthBuffer:!1}),this._verticalRT.texture.name="GaussianBlurNode.vertical",this._textureNode=(0,X.passTexture)(this,this._verticalRT.texture),this._textureNode.uvNode=e.uvNode,this._hMaterial=null,this._vMaterial=null,this.updateBeforeType=tv.NodeUpdateType.FRAME,this.resolutionScale=n.resolutionScale||1,this.premultipliedAlpha=n.premultipliedAlpha||!1,this.isGau
38ssianBlurNode=!0}setSize(e,t){e=Math.max(Math.round(e*this.resolutionScale),1),t=Math.max(Math.round(t*this.resolutionScale),1),this._invSize.value.set(1/e,1/t),this._horizontalRT.setSize(e,t),this._verticalRT.setSize(e,t)}updateBefore(e){let{renderer:t}=e;n=tv.RendererUtils.resetRendererState(t,n);let r=this.textureNode.value;tw.material=this._hMaterial,this.setSize(r.image.width,r.image.height);let i=r.type;this._horizontalRT.texture.type=i,this._verticalRT.texture.type=i,t.setRenderTarget(this._horizontalRT),tw.name="Gaussian Blur [ Horizontal Pass ]",tw.render(t),tw.material=this._vMaterial,t.setRenderTarget(this._verticalRT),tw.name="Gaussian Blur [ Vertical Pass ]",tw.render(t),tv.RendererUtils.restoreRendererState(t,n)}getTextureNode(){return this._textureNode}setup(e){let t=(0,X.uv)(),r=(0,X.vec2)(this.directionNode||1),n=(0,X.Fn)(([e,n])=>{let i,o;this.premultipliedAlpha?(i=t=>(0,X.premultiplyAlpha)(e.sample(t)),o=e=>(0,X.unpremultiplyAlpha)(e)):(i=t=>e.sample(t),o=e=>e);let a=3+2*this.sigma,s=this._getCoefficients(a),l=this._invSize,u=r.mul(n),c=(0,X.vec4)(i(t).mul(s[0])).toVar();for(let e=1;e<a;e++){let r=(0,X.float)(e),n=(0,X.float)(s[e]),o=(0,X.vec2)(u.mul(l.mul(r))).toVar(),a=i(t.add(o)),d=i(t.sub(o));c.addAssign(a.add(d).mul(n))}return o(c)}),i=this.textureNode;this._hMaterial=this._hMaterial||new tv.NodeMaterial,this._hMaterial.contextNode=(0,X.context)(e.getSharedContext()),this._hMaterial.fragmentNode=n(i,(0,X.vec2)(1,0)),this._hMaterial.name="Gaussian_blur_horizontal",this._hMaterial.needsUpdate=!0;let o=(0,X.texture)(this._horizontalRT.texture,(0,X.uv)());this._vMaterial=this._vMaterial||new tv.NodeMaterial,this._vMaterial.fragmentNode=n(o,(0,X.vec2)(0,1)),this._vMaterial.name="Gaussian_blur_vertical",this._vMaterial.needsUpdate=!0;let a=e.getNodeProperties(this);return a.hTextureNode=i,a.vTextureNode=o,this._textureNode}dispose(){this._horizontalRT.dispose(),this._verticalRT.dispose(),null!==this._hMaterial&&(this._hMaterial.dispose(),this._vMaterial.dispose(),this._hMaterial=null,this._vMaterial=null),super.dispose()}_getCoefficients(e){let t=[],r=e/3,n=1;t.push(1);for(let i=1;i<e;i++){let e=Math.exp(-.5*i*i/(r*r));t.push(e),n+=2*e}return t.map(e=>e/n)}get resolution(){return(0,f.warnOnce)('THREE.GaussianBlurNode: The "resolution" property has been renamed to "resolutionScale" and is now of type `number`.'),new f.Vector2(this.resolutionScale,this.resolutionScale)}set resolution(e){(0,f.warnOnce)('THREE.GaussianBlurNode: The "resolution" property has been renamed to "resolutionScale" and is now of type `number`.'),this.resolutionScale=e.x}}let tM={pass:null,compiling:!1}
38,tS={strength:(0,X.uniform)(1.95),radius:(0,X.uniform)(1)};function tT(){let{gl:e,scene:t,camera:r}=(0,M.useThree)(),{pipeline:n,scenePass:i,blur:o}=(0,s.useMemo)(()=>{let n=(0,X.pass)(t,r,{type:f.HalfFloatType});n.setMRT((0,X.mrt)({output:X.output,[ei]:eo}).setBlendMode(ei,new p.BlendMode(f.AdditiveBlending)).setClearColor(ei,0,0)),n.getTexture(ei).type=f.HalfFloatType;let i=n.getTextureNode(),o=((e,t,r={})=>new tb((0,X.convertToTexture)(e),t,4,r))(n.getTextureNode(ei),(0,X.vec2)(tS.radius),{resolutionScale:.5}),a=o.rgb.mul(tS.strength),s=(0,X.vec4)(i.rgb.add(a),(0,X.max)(i.a,(0,X.luminance)(a).min(1))),l=new p.RenderPipeline(e,(0,X.renderOutput)(s,f.NeutralToneMapping,f.SRGBColorSpace));return l.outputColorTransform=!1,{pipeline:l,scenePass:n,blur:o}},[e,t,r]);(0,s.useEffect)(()=>(tM.pass=i,()=>{tM.pass=null,n.dispose(),o.dispose(),i.dispose()}),[n,o,i]);let{strength:a,radius:u}=y("gridBloom",{strength:{value:1.95,min:0,max:4,step:.05},radius:{value:1,min:0,max:4,step:.05}},{collapsed:!0});return(0,s.useEffect)(()=>{tS.strength.value=a,tS.radius.value=u},[a,u]),(0,l.useFrame)(e=>{tM.compiling||(i.camera=e.camera,n.render())},1),null}let tz=E.INTRO_REVEAL.duration,t_=[0,.5],tP=[.25,1],tR=[.2,1],tE=E.INTRO_REVEAL.uiAt,tA=(0,tx.cubicBezier)(.33,1,.68,1),tB=(0,tx.cubicBezier)(.65,0,.35,1),tC=1/30,tj=new f.Plane(new f.Vector3(0,1,0),0),tV=new f.Ray,tF=new f.Box3,tL=new f.Box3,tk=(e,[t,r],n)=>n(f.MathUtils.clamp((e-t)/(r-t),0,1));function tI(){let e,t,r=(0,I.c)(2),n=(0,s.useRef)(0);r[0]===Symbol.for("react.memo_cache_sentinel")?(e={floor:0,top:0},r[0]=e):e=r[0];let i=(0,s.useRef)(e),o=(0,s.useRef)(!1);return r[1]===Symbol.for("react.memo_cache_sentinel")?(t=(e,t)=>{let{camera:r,gl:a,scene:s}=e,l=void 0===document.documentElement.dataset.intro&&null===E.introClock.landAt,u=s.getObjectByName("floor");if(!u||!B.hasBase){Z.floor.value=l?1e4:-1;return}if(!E.introClock.canvasReady&&!o.current){o.current=!0,tF.setFromObject(u);let e=s.getObjectByName("main_grid");e&&tF.union(tL.setFromObject(e));let t=Z.center.value;tV.origin.copy(B.basePosition),tV.direction.subVectors(B.baseTarget,B.basePosition),tV.direction.normalize(),tV.intersectPlane(tj,t)||t.set(B.basePosition.x,0,B.basePosition.z),t.x=f.MathUtils.clamp(t.x,tF.min.x,tF.max.x),t.z=f.MathUtils.clamp(t.z,tF.min.z,tF.max.z),B.focus.copy(t);let n=0;for(let e of[tF.min.x,tF.max.x])for(let r of[tF.min.z,tF.max.z])n=Math.max(n,Math.hypot(e-t.x,r-t.z));let c=Math.min(n,33)+Z.jitter.value;i.current={floor:c,top:tF.max.y+c*Z.riseSlope.value+Z.riseJitter.value+Z.riseInk.value},l||(B.crane=1,B.snap=!0);let d=tM.pass?tM.pass.compileAsync(a):a.compileAsync(s,r);tM.compiling=!0,d.finally(tN)}if(!E.introClock.canvasReady&&!l){Z.floor.value=-1;return}if(l||n.current>=tz+E.INTRO_UI_FADE){Z.floor.value=1e4,Z.rise.value=1e4,B.crane=0,l||delete document.documentElement.dataset.intro;return}if(null===E.introClock.landAt){Z.floor.value=-1,Z.rise.value=.55;return}n.current=n.current+Math.min(t,tC);let c=Math.min(n.current/tz,1),d=document.documentElement;c>=tE&&"play"===d.dataset.intro&&(d.dataset.intro="reveal"),n.current>=tE*tz+E.INTRO_UI_FADE&&delete d.dataset.intro;let{floor:m,top:p}=i.current;Z.floor.value=tk(c,t_,tA)*m,Z.rise.value=f.MathUtils.lerp(.55,p,tk(c,tP,tB)),B.crane=1-tk(c,tR,tB)},r[1]=t):t=r[1],(0,l.useFrame)(t),null}function tN(){tM.compiling=!1,E.introClock.canvasReady=!0}let tG=()=>
38null,tW=Math.PI/30;function tO(){let e=Math.sqrt(4665600/(window.innerWidth*window.innerHeight));return[Math.min(1,e),Math.min(1.5,e)]}let tH="gbk-bloom-off",tU=async({canvas:e})=>{let t=new p.WebGPURenderer({canvas:e,antialias:!0,alpha:!0});return await t.init(),t};e.s(["default",0,function(){let e=(0,m.useTranslations)("hotspot"),t=(0,h.usePathname)(),r=(0,g.useFinePointer)(),[n,i]=(0,s.useState)(()=>(()=>{try{return"1"!==sessionStorage.getItem(tH)}catch{return!0}})()),o=(0,s.useCallback)(()=>{if(void 0===document.documentElement.dataset.intro){i(!1);try{sessionStorage.setItem(tH,"1")}catch{}}},[]),{enabled:l}=y("gridBloom",{enabled:!0},{collapsed:!0}),{isHotspot:u,rotateView:p}=(0,x.default)(e=>({isHotspot:e.currentChapter?.pageType==="hotspot",rotateView:e.rotateView})),w=t.includes("/detail/")||t.includes("/bookmarks"),[b,M]=(0,s.useState)(tO);(0,s.useEffect)(()=>{let e=()=>{let[e,t]=tO();M(r=>r[0]===e&&r[1]===t?r:[e,t])};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let[S,T]=(0,s.useState)(()=>"u"<typeof PerformanceObserver||"u">typeof document&&"play"===document.documentElement.dataset.intro),z=(0,s.useCallback)(e=>{if(p){switch(e.key){case"ArrowLeft":p(-tW,0);break;case"ArrowRight":p(tW,0);break;case"ArrowUp":p(0,-tW);break;case"ArrowDown":p(0,tW);break;default:return}e.preventDefault()}},[p]);return(0,s.useEffect)(()=>{if(S)return;let e=new PerformanceObserver(t=>{t.getEntries().length>0&&(T(!0),e.disconnect())});e.observe({type:"largest-contentful-paint",buffered:!0});let t=setTimeout(()=>{T(!0),e.disconnect()},3e3);return()=>{clearTimeout(t),e.disconnect()}},[]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(tG,{collapsed:!0}),u&&(0,a.jsx)("div",{role:"application","aria-label":e("exploreView"),tabIndex:0,onKeyDown:z,className:"fixed inset-0 z-0 pointer-events-none outline-none focus-visible:ring focus-visible:ring-inset focus-visible:ring-secondary",children:(0,a.jsx)("span",{className:"sr-only",children:e("exploreInstructions")})}),(0,a.jsxs)(d.Canvas,{id:"canvas",frameloop:w||!S?"never":"always",style:{userSelect:"none",position:"fixed",top:0,left:0,bottom:0,right:0,zIndex:-10},camera:{position:[0,0,5],fov:50},dpr:b,gl:tU,shadows:{enabled:!1,type:f.PCFShadowMap},onCreated:({gl:e})=>{e.toneMapping=f.NeutralToneMapping},className:(0,v.cn)({"cursor-grab active:cursor-grabbing":u}),children:[(0,a.jsx)(tm,{}),(0,a.jsx)(tI,{}),(0,a.jsx)(tg,{}),r&&l&&n&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c,{ms:500,iterations:10,threshold:.8,bounds:()=>[40,1/0],onDecline:o}),(0,a.jsx)(tT,{})]})]})]})}],23802)},70843,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}});let n=e.r(41599),i=e.r(30859),o=e.r(70853),a=e.r(73101);function s(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},u=function(e){let t={...l,...e},r=(0,i.lazy)(()=>t.loader().then(s)),u=t.loading;function c(e){let s=u?(0,n.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,c=l?i.Suspense:i.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:["u"<typeof window?(0,n.jsx)(a.PreloadChunks,{moduleIds:t.modules}):null,(0,n.jsx)(r,{...e})]}):(0,n.jsx)(o.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(r,{...e})});return(0,n.jsx)(c,{...l?{fallback:s}:{},children:d})}return c.displayName="LoadableComponent",c}},11711,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i}});let n=e.r(36437)._(e.r(70843));function i(e,t){let r={};"function"==typeof e&&(r.loader=e);let i={...r,...t};return(0,n.default)({...i,modules:i.loadableGenerated?.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.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.