@gui-chat-plugin/present3d 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./toThreeJS-BE5vXH2S.cjs`);let t=require(`vue`);var n={type:`change`},r={type:`start`},i={type:`end`},a=new e.p,o=new e.d,s=Math.cos(70*e.l.DEG2RAD),c=new e.v,l=2*Math.PI,u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},d=1e-6,f=class extends e.a{constructor(t,n=null){super(t,n),this.state=u.NONE,this.target=new e.v,this.cursor=new e.v,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:e.c.ROTATE,MIDDLE:e.c.DOLLY,RIGHT:e.c.PAN},this.touches={ONE:e.g.ROTATE,TWO:e.g.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new e.v,this._lastQuaternion=new e.f,this._lastTargetPosition=new e.v,this._quat=new e.f().setFromUnitVectors(t.up,new e.v(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new e.h,this._sphericalDelta=new e.h,this._scale=1,this._panOffset=new e.v,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 e.v,this._mouse=new e._,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=m.bind(this),this._onPointerDown=p.bind(this),this._onPointerUp=h.bind(this),this._onContextMenu=S.bind(this),this._onMouseWheel=v.bind(this),this._onKeyDown=y.bind(this),this._onTouchStart=b.bind(this),this._onTouchMove=x.bind(this),this._onMouseDown=g.bind(this),this._onMouseMove=_.bind(this),this._interceptControlDown=C.bind(this),this._interceptControlUp=w.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(e){super.connect(e),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(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}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(n),this.update(),this.state=u.NONE}update(t=null){let r=this.object.position;c.copy(r).sub(this.target),c.applyQuaternion(this._quat),this._spherical.setFromVector3(c),this.autoRotate&&this.state===u.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,f=this.maxAzimuthAngle;isFinite(i)&&isFinite(f)&&(i<-Math.PI?i+=l:i>Math.PI&&(i-=l),f<-Math.PI?f+=l:f>Math.PI&&(f-=l),i<=f?this._spherical.theta=Math.max(i,Math.min(f,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+f)/2?Math.max(i,this._spherical.theta):Math.min(f,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 p=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),p=e!=this._spherical.radius}if(c.setFromSpherical(this._spherical),c.applyQuaternion(this._quatInverse),r.copy(this.target).add(c),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 t=null;if(this.object.isPerspectiveCamera){let e=c.length();t=this._clampDistance(e*this._scale);let n=e-t;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),p=!!n}else if(this.object.isOrthographicCamera){let n=new e.v(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),p=r!==this.object.zoom;let i=new e.v(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),t=c.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;t!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(a.origin.copy(this.object.position),a.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(a.direction))<s?this.object.lookAt(this.target):(o.setFromNormalAndCoplanarPoint(this.object.up,this.target),a.intersectPlane(o,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),p=!0)}return this._scale=1,this._performCursorZoom=!1,p||this._lastPosition.distanceToSquared(this.object.position)>d||8*(1-this._lastQuaternion.dot(this.object.quaternion))>d||this._lastTargetPosition.distanceToSquared(this.target)>d?(this.dispatchEvent(n),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?l/60/60*this.autoRotateSpeed:l/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){c.setFromMatrixColumn(t,0),c.multiplyScalar(-e),this._panOffset.add(c)}_panUp(e,t){this.screenSpacePanning===!0?c.setFromMatrixColumn(t,1):(c.setFromMatrixColumn(t,0),c.crossVectors(this.object.up,c)),c.multiplyScalar(e),this._panOffset.add(c)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;c.copy(r).sub(this.target);let i=c.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(l*this._rotateDelta.x/t.clientHeight),this._rotateUp(l*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.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(e){this._panEnd.set(e.clientX,e.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(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(l*this._rotateDelta.x/t.clientHeight),this._rotateUp(l*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(t){let n=this._pointerPositions[t.pointerId];n===void 0&&(n=new e._,this._pointerPositions[t.pointerId]=n),n.set(t.pageX,t.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function p(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e)))}function m(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function h(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(i),this.state=u.NONE;break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y});break}}function g(t){let n;switch(t.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case e.c.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(t),this.state=u.DOLLY;break;case e.c.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=u.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=u.ROTATE}break;case e.c.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=u.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=u.PAN}break;default:this.state=u.NONE}this.state!==u.NONE&&this.dispatchEvent(r)}function _(e){switch(this.state){case u.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case u.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case u.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e);break}}function v(e){this.enabled===!1||this.enableZoom===!1||this.state!==u.NONE||(e.preventDefault(),this.dispatchEvent(r),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(i))}function y(e){this.enabled!==!1&&this._handleKeyDown(e)}function b(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case e.g.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(t),this.state=u.TOUCH_ROTATE;break;case e.g.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(t),this.state=u.TOUCH_PAN;break;default:this.state=u.NONE}break;case 2:switch(this.touches.TWO){case e.g.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(t),this.state=u.TOUCH_DOLLY_PAN;break;case e.g.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(t),this.state=u.TOUCH_DOLLY_ROTATE;break;default:this.state=u.NONE}break;default:this.state=u.NONE}this.state!==u.NONE&&this.dispatchEvent(r)}function x(e){switch(this._trackPointer(e),this.state){case u.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case u.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case u.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case u.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=u.NONE}}function S(e){this.enabled!==!1&&e.preventDefault()}function C(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function w(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var T={class:`present3d-container`},E={class:`header`},D={class:`controls`},O={class:`material-icons`},k={class:`material-icons`},A={key:0,class:`error`},j={class:`script-source`},M=[`disabled`],N=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(n,{emit:r}){let i=n,a=r,o=(0,t.ref)(i.selectedResult.data?.script??``),s=(0,t.ref)(null),c=(0,t.ref)(null),l=(0,t.ref)(!1),u=(0,t.ref)(!0),d=(0,t.computed)(()=>o.value!==i.selectedResult.data?.script),p,m,h,g,_,v,y=[],b=null,x=null;(0,t.onMounted)(()=>{S(),w(),N(),(0,t.nextTick)(()=>{F()})}),(0,t.onUnmounted)(()=>{V()}),(0,t.watch)(()=>i.selectedResult.data?.script,()=>{w()}),(0,t.watch)(l,()=>{w()}),(0,t.watch)(u,e=>{v&&(v.visible=e)});function S(){if(!s.value)return;p=new e.m,p.background=new e.i(1710618);let t=s.value.clientWidth,n=s.value.clientHeight;m=new e.u(50,t/n,.1,1e3),m.position.set(5,5,10),m.lookAt(0,0,0),h=new e.n({antialias:!0}),h.setSize(t,n),h.setPixelRatio(window.devicePixelRatio),s.value.appendChild(h.domElement),g=new f(m,h.domElement),g.enableDamping=!0,g.dampingFactor=.05,g.addEventListener(`change`,L);let r=new e.r(16777215,.6);p.add(r);let i=new e.o(16777215,.8);i.position.set(10,10,10),p.add(i),v=new e.s(20,20,4473924,2236962),v.visible=u.value,p.add(v),window.addEventListener(`resize`,C),x=new ResizeObserver(()=>{C()}),x.observe(s.value)}function C(){if(!s.value)return;let e=s.value.clientWidth,t=s.value.clientHeight;m.aspect=e/t,m.updateProjectionMatrix(),h.setSize(e,t)}function w(){try{y.forEach(e=>p.remove(e)),y=[];let t=i.selectedResult.data?.script;if(!t)return;let n=e.t(e.y(t),{wireframe:l.value});p.add(n),y.push(n),c.value=null}catch(e){c.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function N(){_=requestAnimationFrame(N),g.update(),h.render(p,m)}function P(){m.position.set(5,5,10),m.lookAt(0,0,0),g.reset()}function F(){if(!m||!g||!i.selectedResult?.viewState?.cameraState)return;let e=i.selectedResult.viewState.cameraState;e.position&&m.position.set(e.position.x,e.position.y,e.position.z),e.target&&g.target.set(e.target.x,e.target.y,e.target.z),m.updateProjectionMatrix(),g.update()}function I(){return{position:{x:m.position.x,y:m.position.y,z:m.position.z},target:{x:g.target.x,y:g.target.y,z:g.target.z}}}function L(){b!==null&&clearTimeout(b),b=window.setTimeout(()=>{R()},500)}function R(){a(`updateResult`,{...i.selectedResult,viewState:{cameraState:I()}})}function z(){l.value=!l.value}function B(){u.value=!u.value}function V(){b!==null&&clearTimeout(b),_&&cancelAnimationFrame(_),h&&h.dispose(),g&&(g.removeEventListener(`change`,L),g.dispose()),x&&x.disconnect(),window.removeEventListener(`resize`,C)}function H(){}function U(){try{e.y(o.value),a(`updateResult`,{...i.selectedResult,data:{script:o.value}})}catch(e){c.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e)}}return(0,t.watch)(()=>i.selectedResult.data?.script,e=>{e&&(o.value=e)}),(0,t.watch)(()=>i.selectedResult,()=>{(0,t.nextTick)(()=>{F()})}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,T,[(0,t.createElementVNode)(`div`,E,[(0,t.createElementVNode)(`h1`,null,(0,t.toDisplayString)(n.selectedResult.title||`3D Visualization`),1),(0,t.createElementVNode)(`div`,D,[(0,t.createElementVNode)(`button`,{onClick:P,class:`control-btn`},[...r[1]||=[(0,t.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,t.createTextVNode)(` Reset Camera `,-1)]]),(0,t.createElementVNode)(`button`,{onClick:z,class:`control-btn`},[(0,t.createElementVNode)(`span`,O,(0,t.toDisplayString)(l.value?`grid_off`:`grid_on`),1),r[2]||=(0,t.createTextVNode)(` Wireframe `,-1)]),(0,t.createElementVNode)(`button`,{onClick:B,class:`control-btn`},[(0,t.createElementVNode)(`span`,k,(0,t.toDisplayString)(u.value?`visibility_off`:`visibility`),1),r[3]||=(0,t.createTextVNode)(` Grid `,-1)])])]),c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,A,[r[4]||=(0,t.createElementVNode)(`strong`,null,`Parse Error:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(c.value),1)])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,{class:`viewport`,ref_key:`viewport`,ref:s},null,512),(0,t.createElementVNode)(`details`,j,[r[5]||=(0,t.createElementVNode)(`summary`,null,`Edit ShapeScript Source`,-1),(0,t.withDirectives)((0,t.createElementVNode)(`textarea`,{"onUpdate:modelValue":r[0]||=e=>o.value=e,onInput:H,class:`script-editor`,spellcheck:`false`},null,544),[[t.vModelText,o.value]]),(0,t.createElementVNode)(`button`,{onClick:U,class:`apply-btn`,disabled:!d.value},` Apply Changes `,8,M)])]))}}),P=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},F=P(N,[[`__scopeId`,`data-v-daa337a0`]]),I={class:`preview-container`},L={class:`preview-title`},R=P((0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(n){let r=n,i=(0,t.computed)(()=>r.result.title||`3D Visualization`),a=(0,t.ref)(null),o,s,c,l,u=null;(0,t.onMounted)(()=>{d()}),(0,t.onUnmounted)(()=>{m()}),(0,t.watch)(()=>r.result.data?.script,()=>{p()});function d(){if(a.value)try{o=new e.m,o.background=new e.i(2763322);let t=a.value.clientWidth||200,n=a.value.clientHeight||150;s=new e.u(50,t/n,.1,1e3),s.position.set(4,4,8),s.lookAt(0,0,0),c=new e.n({antialias:!0,alpha:!1}),c.setSize(t,n),c.setPixelRatio(Math.min(window.devicePixelRatio,2)),a.value.appendChild(c.domElement);let i=new e.r(16777215,.6);o.add(i);let l=new e.o(16777215,.8);if(l.position.set(5,5,5),o.add(l),!r.result.data?.script)return;u=e.t(e.y(r.result.data.script),{wireframe:!1}),o.add(u),f()}catch(e){console.error(`Preview render error:`,e)}}function f(){l=requestAnimationFrame(f);let e=Date.now()*5e-4;s.position.x=Math.cos(e)*8,s.position.z=Math.sin(e)*8,s.lookAt(0,0,0),c.render(o,s)}function p(){if(!(!o||!r.result.data?.script))try{u&&o.remove(u),u=e.t(e.y(r.result.data.script),{wireframe:!1}),o.add(u)}catch(e){console.error(`Preview reload error:`,e)}}function m(){l&&cancelAnimationFrame(l),c&&c.dispose()}return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,I,[(0,t.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:a,class:`preview-viewport`},null,512),(0,t.createElementVNode)(`div`,L,(0,t.toDisplayString)(i.value),1)]))}}),[[`__scopeId`,`data-v-75941188`]]),z=`present3D`,B=`Use the ${z} tool to create interactive 3D visualizations when the user requests:
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./toThreeJS-B7Xmzf6B.cjs`);let t=require(`vue`);var n={type:`change`},r={type:`start`},i={type:`end`},a=new e.p,o=new e.d,s=Math.cos(70*e.l.DEG2RAD),c=new e.v,l=2*Math.PI,u={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},d=1e-6,f=class extends e.a{constructor(t,n=null){super(t,n),this.state=u.NONE,this.target=new e.v,this.cursor=new e.v,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:e.c.ROTATE,MIDDLE:e.c.DOLLY,RIGHT:e.c.PAN},this.touches={ONE:e.g.ROTATE,TWO:e.g.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle=`auto`,this._domElementKeyEvents=null,this._lastPosition=new e.v,this._lastQuaternion=new e.f,this._lastTargetPosition=new e.v,this._quat=new e.f().setFromUnitVectors(t.up,new e.v(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new e.h,this._sphericalDelta=new e.h,this._scale=1,this._panOffset=new e.v,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 e.v,this._mouse=new e._,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=m.bind(this),this._onPointerDown=p.bind(this),this._onPointerUp=h.bind(this),this._onContextMenu=S.bind(this),this._onMouseWheel=v.bind(this),this._onKeyDown=y.bind(this),this._onTouchStart=b.bind(this),this._onTouchMove=x.bind(this),this._onMouseDown=g.bind(this),this._onMouseMove=_.bind(this),this._interceptControlDown=C.bind(this),this._interceptControlUp=w.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e===`grab`?this.domElement.style.cursor=`grab`:this.domElement.style.cursor=`auto`}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),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=``}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}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(n),this.update(),this.state=u.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(t=null){let r=this.object.position;c.copy(r).sub(this.target),c.applyQuaternion(this._quat),this._spherical.setFromVector3(c),this.autoRotate&&this.state===u.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,f=this.maxAzimuthAngle;isFinite(i)&&isFinite(f)&&(i<-Math.PI?i+=l:i>Math.PI&&(i-=l),f<-Math.PI?f+=l:f>Math.PI&&(f-=l),i<=f?this._spherical.theta=Math.max(i,Math.min(f,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+f)/2?Math.max(i,this._spherical.theta):Math.min(f,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 p=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),p=e!=this._spherical.radius}if(c.setFromSpherical(this._spherical),c.applyQuaternion(this._quatInverse),r.copy(this.target).add(c),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 t=null;if(this.object.isPerspectiveCamera){let e=c.length();t=this._clampDistance(e*this._scale);let n=e-t;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),p=!!n}else if(this.object.isOrthographicCamera){let n=new e.v(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),p=r!==this.object.zoom;let i=new e.v(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),t=c.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;t!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(a.origin.copy(this.object.position),a.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(a.direction))<s?this.object.lookAt(this.target):(o.setFromNormalAndCoplanarPoint(this.object.up,this.target),a.intersectPlane(o,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),p=!0)}return this._scale=1,this._performCursorZoom=!1,p||this._lastPosition.distanceToSquared(this.object.position)>d||8*(1-this._lastQuaternion.dot(this.object.quaternion))>d||this._lastTargetPosition.distanceToSquared(this.target)>d?(this.dispatchEvent(n),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?l/60/60*this.autoRotateSpeed:l/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){c.setFromMatrixColumn(t,0),c.multiplyScalar(-e),this._panOffset.add(c)}_panUp(e,t){this.screenSpacePanning===!0?c.setFromMatrixColumn(t,1):(c.setFromMatrixColumn(t,0),c.crossVectors(this.object.up,c)),c.multiplyScalar(e),this._panOffset.add(c)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;c.copy(r).sub(this.target);let i=c.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(l*this._rotateDelta.x/t.clientHeight),this._rotateUp(l*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.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(e){this._panEnd.set(e.clientX,e.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(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-l*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(l*this._rotateDelta.x/t.clientHeight),this._rotateUp(l*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(t){let n=this._pointerPositions[t.pointerId];n===void 0&&(n=new e._,this._pointerPositions[t.pointerId]=n),n.set(t.pageX,t.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function p(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e),this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grabbing`)))}function m(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function h(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(i),this.state=u.NONE,this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grab`);break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y});break}}function g(t){let n;switch(t.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case e.c.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(t),this.state=u.DOLLY;break;case e.c.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=u.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=u.ROTATE}break;case e.c.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=u.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=u.PAN}break;default:this.state=u.NONE}this.state!==u.NONE&&this.dispatchEvent(r)}function _(e){switch(this.state){case u.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case u.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case u.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e);break}}function v(e){this.enabled===!1||this.enableZoom===!1||this.state!==u.NONE||(e.preventDefault(),this.dispatchEvent(r),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(i))}function y(e){this.enabled!==!1&&this._handleKeyDown(e)}function b(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case e.g.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(t),this.state=u.TOUCH_ROTATE;break;case e.g.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(t),this.state=u.TOUCH_PAN;break;default:this.state=u.NONE}break;case 2:switch(this.touches.TWO){case e.g.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(t),this.state=u.TOUCH_DOLLY_PAN;break;case e.g.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(t),this.state=u.TOUCH_DOLLY_ROTATE;break;default:this.state=u.NONE}break;default:this.state=u.NONE}this.state!==u.NONE&&this.dispatchEvent(r)}function x(e){switch(this._trackPointer(e),this.state){case u.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case u.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case u.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case u.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=u.NONE}}function S(e){this.enabled!==!1&&e.preventDefault()}function C(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function w(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var T={class:`present3d-container`},E={class:`header`},D={class:`controls`},O={class:`material-icons`},k={class:`material-icons`},A={key:0,class:`error`},j={class:`script-source`},M=[`disabled`],N=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(n,{emit:r}){let i=n,a=r,o=(0,t.ref)(i.selectedResult.data?.script??``),s=(0,t.ref)(null),c=(0,t.ref)(null),l=(0,t.ref)(!1),u=(0,t.ref)(!0),d=(0,t.computed)(()=>o.value!==i.selectedResult.data?.script),p,m,h,g,_,v,y=[],b=null,x=null;(0,t.onMounted)(()=>{S(),w(),N(),(0,t.nextTick)(()=>{F()})}),(0,t.onUnmounted)(()=>{V()}),(0,t.watch)(()=>i.selectedResult.data?.script,()=>{w()}),(0,t.watch)(l,()=>{w()}),(0,t.watch)(u,e=>{v&&(v.visible=e)});function S(){if(!s.value)return;p=new e.m,p.background=new e.i(1710618);let t=s.value.clientWidth,n=s.value.clientHeight;m=new e.u(50,t/n,.1,1e3),m.position.set(5,5,10),m.lookAt(0,0,0),h=new e.n({antialias:!0}),h.setSize(t,n),h.setPixelRatio(window.devicePixelRatio),s.value.appendChild(h.domElement),g=new f(m,h.domElement),g.enableDamping=!0,g.dampingFactor=.05,g.addEventListener(`change`,L);let r=new e.r(16777215,.6);p.add(r);let i=new e.o(16777215,.8);i.position.set(10,10,10),p.add(i),v=new e.s(20,20,4473924,2236962),v.visible=u.value,p.add(v),window.addEventListener(`resize`,C),x=new ResizeObserver(()=>{C()}),x.observe(s.value)}function C(){if(!s.value)return;let e=s.value.clientWidth,t=s.value.clientHeight;m.aspect=e/t,m.updateProjectionMatrix(),h.setSize(e,t)}function w(){try{y.forEach(e=>p.remove(e)),y=[];let t=i.selectedResult.data?.script;if(!t)return;let n=e.t(e.y(t),{wireframe:l.value});p.add(n),y.push(n),c.value=null}catch(e){c.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function N(){_=requestAnimationFrame(N),g.update(),h.render(p,m)}function P(){m.position.set(5,5,10),m.lookAt(0,0,0),g.reset()}function F(){if(!m||!g||!i.selectedResult?.viewState?.cameraState)return;let e=i.selectedResult.viewState.cameraState;e.position&&m.position.set(e.position.x,e.position.y,e.position.z),e.target&&g.target.set(e.target.x,e.target.y,e.target.z),m.updateProjectionMatrix(),g.update()}function I(){return{position:{x:m.position.x,y:m.position.y,z:m.position.z},target:{x:g.target.x,y:g.target.y,z:g.target.z}}}function L(){b!==null&&clearTimeout(b),b=window.setTimeout(()=>{R()},500)}function R(){a(`updateResult`,{...i.selectedResult,viewState:{cameraState:I()}})}function z(){l.value=!l.value}function B(){u.value=!u.value}function V(){b!==null&&clearTimeout(b),_&&cancelAnimationFrame(_),h&&h.dispose(),g&&(g.removeEventListener(`change`,L),g.dispose()),x&&x.disconnect(),window.removeEventListener(`resize`,C)}function H(){}function U(){try{e.y(o.value),a(`updateResult`,{...i.selectedResult,data:{script:o.value}})}catch(e){c.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e)}}return(0,t.watch)(()=>i.selectedResult.data?.script,e=>{e&&(o.value=e)}),(0,t.watch)(()=>i.selectedResult,()=>{(0,t.nextTick)(()=>{F()})}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,T,[(0,t.createElementVNode)(`div`,E,[(0,t.createElementVNode)(`h1`,null,(0,t.toDisplayString)(n.selectedResult.title||`3D Visualization`),1),(0,t.createElementVNode)(`div`,D,[(0,t.createElementVNode)(`button`,{onClick:P,class:`control-btn`},[...r[1]||=[(0,t.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,t.createTextVNode)(` Reset Camera `,-1)]]),(0,t.createElementVNode)(`button`,{onClick:z,class:`control-btn`},[(0,t.createElementVNode)(`span`,O,(0,t.toDisplayString)(l.value?`grid_off`:`grid_on`),1),r[2]||=(0,t.createTextVNode)(` Wireframe `,-1)]),(0,t.createElementVNode)(`button`,{onClick:B,class:`control-btn`},[(0,t.createElementVNode)(`span`,k,(0,t.toDisplayString)(u.value?`visibility_off`:`visibility`),1),r[3]||=(0,t.createTextVNode)(` Grid `,-1)])])]),c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,A,[r[4]||=(0,t.createElementVNode)(`strong`,null,`Parse Error:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(c.value),1)])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,{class:`viewport`,ref_key:`viewport`,ref:s},null,512),(0,t.createElementVNode)(`details`,j,[r[5]||=(0,t.createElementVNode)(`summary`,null,`Edit ShapeScript Source`,-1),(0,t.withDirectives)((0,t.createElementVNode)(`textarea`,{"onUpdate:modelValue":r[0]||=e=>o.value=e,onInput:H,class:`script-editor`,spellcheck:`false`},null,544),[[t.vModelText,o.value]]),(0,t.createElementVNode)(`button`,{onClick:U,class:`apply-btn`,disabled:!d.value},` Apply Changes `,8,M)])]))}}),P=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},F=P(N,[[`__scopeId`,`data-v-daa337a0`]]),I={class:`preview-container`},L={class:`preview-title`},R=P((0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(n){let r=n,i=(0,t.computed)(()=>r.result.title||`3D Visualization`),a=(0,t.ref)(null),o,s,c,l,u=null;(0,t.onMounted)(()=>{d()}),(0,t.onUnmounted)(()=>{m()}),(0,t.watch)(()=>r.result.data?.script,()=>{p()});function d(){if(a.value)try{o=new e.m,o.background=new e.i(2763322);let t=a.value.clientWidth||200,n=a.value.clientHeight||150;s=new e.u(50,t/n,.1,1e3),s.position.set(4,4,8),s.lookAt(0,0,0),c=new e.n({antialias:!0,alpha:!1}),c.setSize(t,n),c.setPixelRatio(Math.min(window.devicePixelRatio,2)),a.value.appendChild(c.domElement);let i=new e.r(16777215,.6);o.add(i);let l=new e.o(16777215,.8);if(l.position.set(5,5,5),o.add(l),!r.result.data?.script)return;u=e.t(e.y(r.result.data.script),{wireframe:!1}),o.add(u),f()}catch(e){console.error(`Preview render error:`,e)}}function f(){l=requestAnimationFrame(f);let e=Date.now()*5e-4;s.position.x=Math.cos(e)*8,s.position.z=Math.sin(e)*8,s.lookAt(0,0,0),c.render(o,s)}function p(){if(!(!o||!r.result.data?.script))try{u&&o.remove(u),u=e.t(e.y(r.result.data.script),{wireframe:!1}),o.add(u)}catch(e){console.error(`Preview reload error:`,e)}}function m(){l&&cancelAnimationFrame(l),c&&c.dispose()}return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,I,[(0,t.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:a,class:`preview-viewport`},null,512),(0,t.createElementVNode)(`div`,L,(0,t.toDisplayString)(i.value),1)]))}}),[[`__scopeId`,`data-v-75941188`]]),z=`present3D`,B=`Use the ${z} tool to create interactive 3D visualizations when the user requests:
2
2
  - 3D models or shapes
3
3
  - Mathematical visualizations (surfaces, functions, geometric patterns)
4
4
  - Molecular or atomic structures
package/dist/vue.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, s as g, t as _, u as v, v as y, w as b, x, y as S } from "./toThreeJS-smhACxwN.js";
1
+ import { S as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, s as g, t as _, u as v, v as y, w as b, x, y as S } from "./toThreeJS-Ba_VfB_S.js";
2
2
  import { computed as C, createCommentVNode as ee, createElementBlock as w, createElementVNode as T, createTextVNode as E, defineComponent as D, nextTick as O, onMounted as k, onUnmounted as A, openBlock as j, ref as M, toDisplayString as N, vModelText as te, watch as P, withDirectives as ne } from "vue";
3
3
  //#region node_modules/three/examples/jsm/controls/OrbitControls.js
4
4
  var F = { type: "change" }, I = { type: "start" }, L = { type: "end" }, R = new m(), z = new a(), B = Math.cos(70 * u.DEG2RAD), V = new y(), H = 2 * Math.PI, U = {
@@ -24,7 +24,13 @@ var F = { type: "change" }, I = { type: "start" }, L = { type: "end" }, R = new
24
24
  }, this.touches = {
25
25
  ONE: s.ROTATE,
26
26
  TWO: s.DOLLY_PAN
27
- }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new y(), this._lastQuaternion = new o(), this._lastTargetPosition = new y(), this._quat = new o().setFromUnitVectors(e.up, new y(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new c(), this._sphericalDelta = new c(), this._scale = 1, this._panOffset = new y(), this._rotateStart = new t(), this._rotateEnd = new t(), this._rotateDelta = new t(), this._panStart = new t(), this._panEnd = new t(), this._panDelta = new t(), this._dollyStart = new t(), this._dollyEnd = new t(), this._dollyDelta = new t(), this._dollyDirection = new y(), this._mouse = new t(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = K.bind(this), this._onPointerDown = G.bind(this), this._onPointerUp = q.bind(this), this._onContextMenu = oe.bind(this), this._onMouseWheel = X.bind(this), this._onKeyDown = Z.bind(this), this._onTouchStart = ie.bind(this), this._onTouchMove = ae.bind(this), this._onMouseDown = J.bind(this), this._onMouseMove = Y.bind(this), this._interceptControlDown = se.bind(this), this._interceptControlUp = ce.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
27
+ }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._cursorStyle = "auto", this._domElementKeyEvents = null, this._lastPosition = new y(), this._lastQuaternion = new o(), this._lastTargetPosition = new y(), this._quat = new o().setFromUnitVectors(e.up, new y(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new c(), this._sphericalDelta = new c(), this._scale = 1, this._panOffset = new y(), this._rotateStart = new t(), this._rotateEnd = new t(), this._rotateDelta = new t(), this._panStart = new t(), this._panEnd = new t(), this._panDelta = new t(), this._dollyStart = new t(), this._dollyEnd = new t(), this._dollyDelta = new t(), this._dollyDirection = new y(), this._mouse = new t(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = K.bind(this), this._onPointerDown = G.bind(this), this._onPointerUp = q.bind(this), this._onContextMenu = oe.bind(this), this._onMouseWheel = X.bind(this), this._onKeyDown = Z.bind(this), this._onTouchStart = ie.bind(this), this._onTouchMove = ae.bind(this), this._onMouseDown = J.bind(this), this._onMouseMove = Y.bind(this), this._interceptControlDown = se.bind(this), this._interceptControlUp = ce.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
28
+ }
29
+ set cursorStyle(e) {
30
+ this._cursorStyle = e, e === "grab" ? this.domElement.style.cursor = "grab" : this.domElement.style.cursor = "auto";
31
+ }
32
+ get cursorStyle() {
33
+ return this._cursorStyle;
28
34
  }
29
35
  connect(e) {
30
36
  super.connect(e), 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, {
@@ -33,7 +39,7 @@ var F = { type: "change" }, I = { type: "start" }, L = { type: "end" }, R = new
33
39
  }), this.domElement.style.touchAction = "none";
34
40
  }
35
41
  disconnect() {
36
- 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";
42
+ 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 = "";
37
43
  }
38
44
  dispose() {
39
45
  this.disconnect();
@@ -59,6 +65,21 @@ var F = { type: "change" }, I = { type: "start" }, L = { type: "end" }, R = new
59
65
  reset() {
60
66
  this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(F), this.update(), this.state = U.NONE;
61
67
  }
68
+ pan(e, t) {
69
+ this._pan(e, t), this.update();
70
+ }
71
+ dollyIn(e) {
72
+ this._dollyIn(e), this.update();
73
+ }
74
+ dollyOut(e) {
75
+ this._dollyOut(e), this.update();
76
+ }
77
+ rotateLeft(e) {
78
+ this._rotateLeft(e), this.update();
79
+ }
80
+ rotateUp(e) {
81
+ this._rotateUp(e), this.update();
82
+ }
62
83
  update(e = null) {
63
84
  let t = this.object.position;
64
85
  V.copy(t).sub(this.target), V.applyQuaternion(this._quat), this._spherical.setFromVector3(V), this.autoRotate && this.state === U.NONE && this._rotateLeft(this._getAutoRotationAngle(e)), 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);
@@ -270,7 +291,7 @@ var F = { type: "change" }, I = { type: "start" }, L = { type: "end" }, R = new
270
291
  }
271
292
  };
272
293
  function G(e) {
273
- this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(e.pointerId), this.domElement.ownerDocument.addEventListener("pointermove", this._onPointerMove), this.domElement.ownerDocument.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(e) && (this._addPointer(e), e.pointerType === "touch" ? this._onTouchStart(e) : this._onMouseDown(e)));
294
+ this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(e.pointerId), this.domElement.ownerDocument.addEventListener("pointermove", this._onPointerMove), this.domElement.ownerDocument.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(e) && (this._addPointer(e), e.pointerType === "touch" ? this._onTouchStart(e) : this._onMouseDown(e), this._cursorStyle === "grab" && (this.domElement.style.cursor = "grabbing")));
274
295
  }
275
296
  function K(e) {
276
297
  this.enabled !== !1 && (e.pointerType === "touch" ? this._onTouchMove(e) : this._onMouseMove(e));
@@ -278,7 +299,7 @@ function K(e) {
278
299
  function q(e) {
279
300
  switch (this._removePointer(e), this._pointers.length) {
280
301
  case 0:
281
- this.domElement.releasePointerCapture(e.pointerId), this.domElement.ownerDocument.removeEventListener("pointermove", this._onPointerMove), this.domElement.ownerDocument.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(L), this.state = U.NONE;
302
+ this.domElement.releasePointerCapture(e.pointerId), this.domElement.ownerDocument.removeEventListener("pointermove", this._onPointerMove), this.domElement.ownerDocument.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(L), this.state = U.NONE, this._cursorStyle === "grab" && (this.domElement.style.cursor = "grab");
282
303
  break;
283
304
  case 1:
284
305
  let t = this._pointers[0], n = this._pointerPositions[t];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gui-chat-plugin/present3d",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "3D shape presentation plugin using ShapeScript for GUI Chat applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -32,27 +32,27 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "gui-chat-protocol": "^0.3.3",
35
- "three": "^0.182.0",
36
- "three-bvh-csg": "^0.0.17",
37
- "three-mesh-bvh": "0.9.8"
35
+ "three": "^0.184.0",
36
+ "three-bvh-csg": "^0.0.18",
37
+ "three-mesh-bvh": "0.9.10"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@eslint/js": "^10.0.1",
41
- "@tailwindcss/vite": "^4.2.4",
42
- "@types/node": "^25.0.9",
43
- "@types/three": "^0.182.0",
44
- "@typescript-eslint/eslint-plugin": "^8.59.2",
45
- "@typescript-eslint/parser": "^8.59.2",
41
+ "@tailwindcss/vite": "^4.3.0",
42
+ "@types/node": "^25.7.0",
43
+ "@types/three": "^0.184.1",
44
+ "@typescript-eslint/eslint-plugin": "^8.59.3",
45
+ "@typescript-eslint/parser": "^8.59.3",
46
46
  "@vitejs/plugin-vue": "^6.0.5",
47
47
  "eslint": "^10.3.0",
48
48
  "eslint-plugin-vue": "^10.9.1",
49
49
  "globals": "^17.6.0",
50
- "tailwindcss": "^4.2.4",
50
+ "tailwindcss": "^4.3.0",
51
51
  "tsx": "^4.21.0",
52
52
  "typescript": "~6.0.3",
53
- "typescript-eslint": "^8.59.2",
54
- "vite": "^8.0.11",
55
- "vite-plugin-dts": "^4.4.0",
53
+ "typescript-eslint": "^8.59.3",
54
+ "vite": "^8.0.12",
55
+ "vite-plugin-dts": "^5.0.0",
56
56
  "vue": "^3.5.34",
57
57
  "vue-eslint-parser": "^10.4.0",
58
58
  "vue-tsc": "^3.2.8"