Files
gnommoplayer/dist/vendor/glitch/glitch_gallery/assets/index-DnqmHVBx.js
T
2026-04-11 09:21:22 +02:00

2 lines
25 KiB
JavaScript

import{k as Zt,V as g,l as U,T as Y,Q as yt,m as bt,b as E,n as Ht,f as Kt,M as Ft,r as b,o as gt,C as Et,F as wt,P as Xt,W as Vt,p as Wt,q as qt,s as Pt,t as Gt,v as Bt,w as Qt,I as Mt,i as $t,j as w,x as Jt,y as te,z as Dt}from"./index-CEeZxcxj.js";const St={type:"change"},et={type:"start"},Ct={type:"end"},V=new Ht,Tt=new Kt,ee=Math.cos(70*Ft.DEG2RAD),h=new g,f=2*Math.PI,a={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},$=1e-6;class se extends Zt{constructor(t,e=null){super(t,e),this.state=a.NONE,this.target=new g,this.cursor=new g,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:U.ROTATE,MIDDLE:U.DOLLY,RIGHT:U.PAN},this.touches={ONE:Y.ROTATE,TWO:Y.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new g,this._lastQuaternion=new yt,this._lastTargetPosition=new g,this._quat=new yt().setFromUnitVectors(t.up,new g(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new bt,this._sphericalDelta=new bt,this._scale=1,this._panOffset=new g,this._rotateStart=new E,this._rotateEnd=new E,this._rotateDelta=new E,this._panStart=new E,this._panEnd=new E,this._panDelta=new E,this._dollyStart=new E,this._dollyEnd=new E,this._dollyDelta=new E,this._dollyDirection=new g,this._mouse=new E,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=oe.bind(this),this._onPointerDown=ie.bind(this),this._onPointerUp=ae.bind(this),this._onContextMenu=pe.bind(this),this._onMouseWheel=he.bind(this),this._onKeyDown=le.bind(this),this._onTouchStart=ce.bind(this),this._onTouchMove=de.bind(this),this._onMouseDown=ne.bind(this),this._onMouseMove=re.bind(this),this._interceptControlDown=ue.bind(this),this._interceptControlUp=me.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(t){super.connect(t),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(t){t.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=t}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(St),this.update(),this.state=a.NONE}update(t=null){const e=this.object.position;h.copy(e).sub(this.target),h.applyQuaternion(this._quat),this._spherical.setFromVector3(h),this.autoRotate&&this.state===a.NONE&&this._rotateLeft(this._getAutoRotationAngle(t)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,o=this.maxAzimuthAngle;isFinite(i)&&isFinite(o)&&(i<-Math.PI?i+=f:i>Math.PI&&(i-=f),o<-Math.PI?o+=f:o>Math.PI&&(o-=f),i<=o?this._spherical.theta=Math.max(i,Math.min(o,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+o)/2?Math.max(i,this._spherical.theta):Math.min(o,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const r=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=r!=this._spherical.radius}if(h.setFromSpherical(this._spherical),h.applyQuaternion(this._quatInverse),e.copy(this.target).add(h),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let r=null;if(this.object.isPerspectiveCamera){const l=h.length();r=this._clampDistance(l*this._scale);const m=l-r;this.object.position.addScaledVector(this._dollyDirection,m),this.object.updateMatrixWorld(),n=!!m}else if(this.object.isOrthographicCamera){const l=new g(this._mouse.x,this._mouse.y,0);l.unproject(this.object);const m=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=m!==this.object.zoom;const c=new g(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(l),this.object.updateMatrixWorld(),r=h.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;r!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(r).add(this.object.position):(V.origin.copy(this.object.position),V.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(V.direction))<ee?this.object.lookAt(this.target):(Tt.setFromNormalAndCoplanarPoint(this.object.up,this.target),V.intersectPlane(Tt,this.target))))}else if(this.object.isOrthographicCamera){const r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),r!==this.object.zoom&&(this.object.updateProjectionMatrix(),n=!0)}return this._scale=1,this._performCursorZoom=!1,n||this._lastPosition.distanceToSquared(this.object.position)>$||8*(1-this._lastQuaternion.dot(this.object.quaternion))>$||this._lastTargetPosition.distanceToSquared(this.target)>$?(this.dispatchEvent(St),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(t){return t!==null?f/60*this.autoRotateSpeed*t:f/60/60*this.autoRotateSpeed}_getZoomScale(t){const e=Math.abs(t*.01);return Math.pow(.95,this.zoomSpeed*e)}_rotateLeft(t){this._sphericalDelta.theta-=t}_rotateUp(t){this._sphericalDelta.phi-=t}_panLeft(t,e){h.setFromMatrixColumn(e,0),h.multiplyScalar(-t),this._panOffset.add(h)}_panUp(t,e){this.screenSpacePanning===!0?h.setFromMatrixColumn(e,1):(h.setFromMatrixColumn(e,0),h.crossVectors(this.object.up,h)),h.multiplyScalar(t),this._panOffset.add(h)}_pan(t,e){const i=this.domElement;if(this.object.isPerspectiveCamera){const o=this.object.position;h.copy(o).sub(this.target);let n=h.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*t*n/i.clientHeight,this.object.matrix),this._panUp(2*e*n/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(t*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(e*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(t){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=t:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(t,e){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const i=this.domElement.getBoundingClientRect(),o=t-i.left,n=e-i.top,r=i.width,l=i.height;this._mouse.x=o/r*2-1,this._mouse.y=-(n/l)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(t){return Math.max(this.minDistance,Math.min(this.maxDistance,t))}_handleMouseDownRotate(t){this._rotateStart.set(t.clientX,t.clientY)}_handleMouseDownDolly(t){this._updateZoomParameters(t.clientX,t.clientX),this._dollyStart.set(t.clientX,t.clientY)}_handleMouseDownPan(t){this._panStart.set(t.clientX,t.clientY)}_handleMouseMoveRotate(t){this._rotateEnd.set(t.clientX,t.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(t){this._dollyEnd.set(t.clientX,t.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(t){this._panEnd.set(t.clientX,t.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(t){this._updateZoomParameters(t.clientX,t.clientY),t.deltaY<0?this._dollyIn(this._getZoomScale(t.deltaY)):t.deltaY>0&&this._dollyOut(this._getZoomScale(t.deltaY)),this.update()}_handleKeyDown(t){let e=!1;switch(t.code){case this.keys.UP:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),e=!0;break;case this.keys.BOTTOM:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateUp(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),e=!0;break;case this.keys.LEFT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),e=!0;break;case this.keys.RIGHT:t.ctrlKey||t.metaKey||t.shiftKey?this.enableRotate&&this._rotateLeft(-f*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),e=!0;break}e&&(t.preventDefault(),this.update())}_handleTouchStartRotate(t){if(this._pointers.length===1)this._rotateStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._rotateStart.set(i,o)}}_handleTouchStartPan(t){if(this._pointers.length===1)this._panStart.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panStart.set(i,o)}}_handleTouchStartDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enablePan&&this._handleTouchStartPan(t)}_handleTouchStartDollyRotate(t){this.enableZoom&&this._handleTouchStartDolly(t),this.enableRotate&&this._handleTouchStartRotate(t)}_handleTouchMoveRotate(t){if(this._pointers.length==1)this._rotateEnd.set(t.pageX,t.pageY);else{const i=this._getSecondPointerPosition(t),o=.5*(t.pageX+i.x),n=.5*(t.pageY+i.y);this._rotateEnd.set(o,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const e=this.domElement;this._rotateLeft(f*this._rotateDelta.x/e.clientHeight),this._rotateUp(f*this._rotateDelta.y/e.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(t){if(this._pointers.length===1)this._panEnd.set(t.pageX,t.pageY);else{const e=this._getSecondPointerPosition(t),i=.5*(t.pageX+e.x),o=.5*(t.pageY+e.y);this._panEnd.set(i,o)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(t){const e=this._getSecondPointerPosition(t),i=t.pageX-e.x,o=t.pageY-e.y,n=Math.sqrt(i*i+o*o);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const r=(t.pageX+e.x)*.5,l=(t.pageY+e.y)*.5;this._updateZoomParameters(r,l)}_handleTouchMoveDollyPan(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enablePan&&this._handleTouchMovePan(t)}_handleTouchMoveDollyRotate(t){this.enableZoom&&this._handleTouchMoveDolly(t),this.enableRotate&&this._handleTouchMoveRotate(t)}_addPointer(t){this._pointers.push(t.pointerId)}_removePointer(t){delete this._pointerPositions[t.pointerId];for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId){this._pointers.splice(e,1);return}}_isTrackingPointer(t){for(let e=0;e<this._pointers.length;e++)if(this._pointers[e]==t.pointerId)return!0;return!1}_trackPointer(t){let e=this._pointerPositions[t.pointerId];e===void 0&&(e=new E,this._pointerPositions[t.pointerId]=e),e.set(t.pageX,t.pageY)}_getSecondPointerPosition(t){const e=t.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[e]}_customWheelEvent(t){const e=t.deltaMode,i={clientX:t.clientX,clientY:t.clientY,deltaY:t.deltaY};switch(e){case 1:i.deltaY*=16;break;case 2:i.deltaY*=100;break}return t.ctrlKey&&!this._controlActive&&(i.deltaY*=10),i}}function ie(s){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(s.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(s)&&(this._addPointer(s),s.pointerType==="touch"?this._onTouchStart(s):this._onMouseDown(s)))}function oe(s){this.enabled!==!1&&(s.pointerType==="touch"?this._onTouchMove(s):this._onMouseMove(s))}function ae(s){switch(this._removePointer(s),this._pointers.length){case 0:this.domElement.releasePointerCapture(s.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(Ct),this.state=a.NONE;break;case 1:const t=this._pointers[0],e=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:e.x,pageY:e.y});break}}function ne(s){let t;switch(s.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=-1}switch(t){case U.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(s),this.state=a.DOLLY;break;case U.ROTATE:if(s.ctrlKey||s.metaKey||s.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(s),this.state=a.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(s),this.state=a.ROTATE}break;case U.PAN:if(s.ctrlKey||s.metaKey||s.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(s),this.state=a.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(s),this.state=a.PAN}break;default:this.state=a.NONE}this.state!==a.NONE&&this.dispatchEvent(et)}function re(s){switch(this.state){case a.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(s);break;case a.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(s);break;case a.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(s);break}}function he(s){this.enabled===!1||this.enableZoom===!1||this.state!==a.NONE||(s.preventDefault(),this.dispatchEvent(et),this._handleMouseWheel(this._customWheelEvent(s)),this.dispatchEvent(Ct))}function le(s){this.enabled!==!1&&this._handleKeyDown(s)}function ce(s){switch(this._trackPointer(s),this._pointers.length){case 1:switch(this.touches.ONE){case Y.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(s),this.state=a.TOUCH_ROTATE;break;case Y.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(s),this.state=a.TOUCH_PAN;break;default:this.state=a.NONE}break;case 2:switch(this.touches.TWO){case Y.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(s),this.state=a.TOUCH_DOLLY_PAN;break;case Y.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(s),this.state=a.TOUCH_DOLLY_ROTATE;break;default:this.state=a.NONE}break;default:this.state=a.NONE}this.state!==a.NONE&&this.dispatchEvent(et)}function de(s){switch(this._trackPointer(s),this.state){case a.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(s),this.update();break;case a.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(s),this.update();break;case a.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(s),this.update();break;case a.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(s),this.update();break;default:this.state=a.NONE}}function pe(s){this.enabled!==!1&&s.preventDefault()}function ue(s){s.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function me(s){s.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}const _e="_wrapper_1xs2z_1",fe="_canvasShell_1xs2z_28",ye="_canvas_1xs2z_28",be="_viewportLabels_1xs2z_48",ge="_splitLabel_1xs2z_61",Ee="_controlOverlay_1xs2z_73",we="_resolutionCard_1xs2z_83",Pe="_resolutionControl_1xs2z_97",Me="_slider_1xs2z_105",De="_sliderValue_1xs2z_111",P={wrapper:_e,canvasShell:fe,canvas:ye,viewportLabels:be,splitLabel:ge,controlOverlay:Ee,resolutionCard:we,resolutionControl:Pe,slider:Me,sliderValue:De},Se=24,xt=new g(20,20,20),Rt=new g(0,0,0),Te=5e3,J="#f2f0ea",xe=(s,t,e)=>Math.min(e,Math.max(t,s)),tt=(s,t,e,i,o=1)=>{if(typeof s!="number"||Number.isNaN(s))return t;const n=Math.round(s/o)*o;return xe(n,e,i)};function Ot(s){const t=new Jt(16777215,.65);s.add(t);const e=new te(16777215,1.1);e.position.set(20,50,20),e.castShadow=!0,e.shadow.mapSize.width=2048,e.shadow.mapSize.height=2048,s.add(e);const i=new Dt(3900150,1.1,50);i.position.set(-10,10,-10),s.add(i);const o=new Dt(16743001,.9,50);o.position.set(10,-10,10),s.add(o)}function Re(s){if(Array.isArray(s)){s.forEach(t=>t.dispose());return}s.dispose()}function Lt(s){s.traverse(t=>{const e=t;e.geometry&&e.geometry.dispose(),e.material&&Re(e.material)})}function Le({config:s,onComplete:t,onProgress:e,theme:i,className:o}){const n=s.params??{},r=tt(n.gridSize,24,12,80,1),l=tt(n.majorRadius,8,4,10,.5),m=tt(n.minorRadius,3,1,5,.25),[c,st]=b.useState(r),[v,jt]=b.useState({layout:"landscape",width:0,height:0}),it=b.useRef(null),ot=b.useRef(null),W=b.useRef(!1);b.useEffect(()=>{const y=it.current;if(!y)return;const T=()=>{const L=y.clientWidth,_=y.clientHeight;if(!L||!_)return;const d=L>=_?"landscape":"portrait";let p=L,N=_;d==="landscape"?(N=Math.min(_,L*(9/16)),p=N*(16/9)):(p=Math.min(L,_/2),N=p*2),jt({layout:d,width:p,height:N})},M=new ResizeObserver(T);return M.observe(y),T(),()=>{M.disconnect()}},[]),b.useEffect(()=>{st(r),W.current=!1},[s.id,r,l,m]);const at=b.useMemo(()=>Math.max(Se,(l+m+1.5)*2),[l,m]),S=b.useMemo(()=>at/c,[at,c]);b.useEffect(()=>{e?.(c===r?0:100)},[r,e,c]),b.useEffect(()=>{c===r||W.current||(W.current=!0,t({success:!0,score:100,data:{configId:s.id,completedAt:new Date().toISOString(),params:{gridSize:c,majorRadius:l,minorRadius:m}}}))},[s.id,r,l,m,t,c]),b.useEffect(()=>{const y=ot.current;if(!y)return;const T=new gt,M=new gt,L=new Et(J);T.background=L,T.fog=new wt(J,.02),M.background=L,M.fog=new wt(J,.02),Ot(T),Ot(M);const _=new Xt(45,1,.1,1e3);_.position.copy(xt);const d=new Vt({antialias:!0,alpha:!0});d.shadowMap.enabled=!0,d.shadowMap.type=Wt,d.setPixelRatio(Math.min(window.devicePixelRatio,2)),d.setScissorTest(!0),y.appendChild(d.domElement);const p=new se(_,d.domElement);p.enableDamping=!0,p.dampingFactor=.05,p.minDistance=5,p.maxDistance=100,p.target.copy(Rt);const N=new qt(l,m,64,128),Nt=new Pt({color:3900150,roughness:.22,metalness:.1}),Z=new Gt(N,Nt);Z.castShadow=!0,Z.receiveShadow=!0,Z.rotation.x=-Math.PI/2,T.add(Z);const kt=S*.12,q=Math.max(S-kt,S*.2),nt=new Bt(q,q,q),zt=new Pt({color:3900150,roughness:.22,metalness:.1}),It=new Qt({color:0,transparent:!0,opacity:.08,wireframe:!0}),rt=Math.pow(c,3),D=new Mt(nt,zt,rt),k=new Mt(nt,It,rt),G=(c-1)*S/2,K=new $t;D.castShadow=!0,D.receiveShadow=!0,M.add(D),M.add(k);let F=0,B=0;for(let O=0;O<c;O+=1)for(let u=0;u<c;u+=1)for(let C=0;C<c;C+=1){const j=O*S-G,A=u*S-G,I=C*S-G,H=Math.sqrt(j*j+I*I)-l,Yt=H*H+A*A<m*m;if(K.position.set(j,A,I),K.updateMatrix(),Yt){D.setMatrixAt(F,K.matrix);const ft=new Et,Ut=.52+A/Math.max(c,1)*.18;ft.setHSL(Ut,.78,.52),D.setColorAt(F,ft),F+=1;continue}k.setMatrixAt(B,K.matrix),B+=1}D.count=F,k.count=B,D.instanceMatrix.needsUpdate=!0,k.instanceMatrix.needsUpdate=!0,D.instanceColor&&(D.instanceColor.needsUpdate=!0);const ht=xt.clone(),lt=Rt.clone();let X=!1,z=null,x=0,R=0;const ct=()=>{x=y.clientWidth,R=y.clientHeight,!(!x||!R)&&(_.aspect=1,_.updateProjectionMatrix(),d.setSize(x,R,!1))},dt=new ResizeObserver(ct);dt.observe(y),ct();const pt=()=>{X=!1,z!==null&&(window.clearTimeout(z),z=null)},ut=()=>{z=window.setTimeout(()=>{X=!0},Te)};p.addEventListener("start",pt),p.addEventListener("end",ut);let mt=0;const _t=()=>{if(mt=window.requestAnimationFrame(_t),X&&(_.position.lerp(ht,.05),p.target.lerp(lt,.05),_.position.distanceTo(ht)<.1&&p.target.distanceTo(lt)<.1&&(X=!1)),Z.rotation.z+=.002,D.rotation.y+=.002,k.rotation.y+=.002,k.visible=!1,p.update(),!x||!R)return;const O=x>=R,u=O?Math.min(x/2,R):Math.min(x,R/2),C=O?(x-u*2)/2:(x-u)/2,j=O?(R-u)/2:(R-u*2)/2,A=C,I=O?j:j+u,H=O?C+u:C,Q=j;d.setScissor(A,I,u,u),d.setViewport(A,I,u,u),d.render(T,_),d.setScissor(H,Q,u,u),d.setViewport(H,Q,u,u),d.render(M,_)};return _t(),()=>{window.cancelAnimationFrame(mt),z!==null&&window.clearTimeout(z),dt.disconnect(),p.removeEventListener("start",pt),p.removeEventListener("end",ut),p.dispose(),d.dispose(),Lt(T),Lt(M),y.removeChild(d.domElement)}},[l,m,c,S]);const At=b.useMemo(()=>({"--gc-primary":i?.primary??"var(--color-primary, #45c4b0)","--gc-accent":i?.accent??"var(--color-accent, #ff7a59)","--gc-bg":i?.bg??"var(--color-bg, #0d1117)","--gc-bg-secondary":i?.bgSecondary??"var(--color-bg-secondary, #182237)","--gc-text":i?.text??"var(--color-text, #f1f4ef)","--gc-text-muted":i?.textMuted??"var(--color-text-muted, #b6c0d4)","--gc-border":i?.border??"var(--color-border, #34516f)"}),[i]),vt=y=>{st(Number(y.target.value))};return w.jsx("div",{className:[P.wrapper,o].filter(Boolean).join(" "),style:At,ref:it,children:w.jsxs("div",{className:P.canvasShell,"data-layout":v.layout,style:{width:v.width?`${v.width}px`:void 0,height:v.height?`${v.height}px`:void 0},children:[w.jsx("div",{className:P.canvas,ref:ot}),w.jsxs("div",{className:P.viewportLabels,"data-layout":v.layout,children:[w.jsx("div",{className:P.splitLabel,children:"Continuous"}),w.jsx("div",{className:P.splitLabel,children:"Discrete"})]}),w.jsx("div",{className:P.controlOverlay,children:w.jsx("label",{className:P.resolutionCard,children:w.jsxs("span",{className:P.resolutionControl,children:[w.jsx("input",{className:P.slider,type:"range",min:"12",max:"80",step:"1",value:c,onChange:vt}),w.jsxs("span",{className:P.sliderValue,children:[S.toFixed(2),"u"]})]})})})]})})}const Ce={name:"voxel_universe",displayName:"Voxel Universe",version:"1.0.0",paramSchema:{gridSize:{type:"range",label:"Voxel Resolution",description:"How many voxels are used per axis. Higher values make each voxel smaller.",default:24,min:12,max:80,step:1},majorRadius:{type:"range",label:"Major Radius",description:"Overall radius of the torus shape.",default:8,min:4,max:10,step:.5},minorRadius:{type:"range",label:"Minor Radius",description:"Thickness of the torus ring.",default:3,min:1,max:5,step:.25}},defaultParams:{gridSize:24,majorRadius:8,minorRadius:3}};export{Le as default,Ce as metadata};