Files
fad_oa/ruoyi-ui/public/file-viewer/assets/ModelViewer-D9x3ivqk.js

2 lines
30 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GLTFLoader-BNUIXeRP.js","./three.module-BFsVh7r1.js","./OBJLoader-DW4Mv-mq.js","./STLLoader-Bt7FMgMu.js","./PLYLoader-DwTzA-Dg.js","./FBXLoader-Bj34Z_uf.js","./fflate.module-BIQmJeC9.js","./ColladaLoader-DTiuvWJL.js","./TDSLoader-D__OhSS9.js","./3MFLoader--yjh7udp.js","./AMFLoader-C0y7NIAO.js","./USDLoader-BovI5HgZ.js","./KMZLoader-DTmXWzX_.js","./PCDLoader-CHA1g8rk.js","./VRMLLoader-_VxVXPvX.js","./XYZLoader-DbQZs-aZ.js","./VTKLoader-BfnzBXsa.js"])))=>i.map(i=>d[i]);
import{h as e,r as t}from"./package-Bop5TfAT.js";import{C as n,D as r,J as i,X as a,_ as o,f as s,g as ee,h as te,i as c,o as ne,s as l,y as u}from"./runtime-core.esm-bundler-DO-WTVbd.js";import{Bt as d,D as re,It as f,Nt as p,T as ie,Tt as ae,Y as m,Z as h,_t as oe,a as se,at as ce,et as g,g as _,gt as le,i as v,jt as y,mt as b,p as ue,pt as de,s as x,t as fe,wt as pe,x as S,xt as C,yt as w,zt as T}from"./three.module-BFsVh7r1.js";var E={type:`change`},D={type:`start`},O={type:`end`},k=new C,A=new b,j=Math.cos(70*h.DEG2RAD),M=new d,N=2*Math.PI,P={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},F=1e-6,me=class extends _{constructor(e,t=null){super(e,t),this.state=P.NONE,this.target=new d,this.cursor=new d,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:m.ROTATE,MIDDLE:m.DOLLY,RIGHT:m.PAN},this.touches={ONE:p.ROTATE,TWO:p.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 d,this._lastQuaternion=new w,this._lastTargetPosition=new d,this._quat=new w().setFromUnitVectors(e.up,new d(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new y,this._sphericalDelta=new y,this._scale=1,this._panOffset=new d,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 d,this._mouse=new T,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=L.bind(this),this._onPointerDown=I.bind(this),this._onPointerUp=R.bind(this),this._onContextMenu=G.bind(this),this._onMouseWheel=V.bind(this),this._onKeyDown=H.bind(this),this._onTouchStart=U.bind(this),this._onTouchMove=W.bind(this),this._onMouseDown=z.bind(this),this._onMouseMove=B.bind(this),this._interceptControlDown=K.bind(this),this._interceptControlUp=q.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(E),this.update(),this.state=P.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(e=null){let t=this.object.position;M.copy(t).sub(this.target),M.applyQuaternion(this._quat),this._spherical.setFromVector3(M),this.autoRotate&&this.state===P.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);let n=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(n)&&isFinite(r)&&(n<-Math.PI?n+=N:n>Math.PI&&(n-=N),r<-Math.PI?r+=N:r>Math.PI&&(r-=N),n<=r?this._spherical.theta=Math.max(n,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+r)/2?Math.max(n,this._spherical.theta):Math.min(r,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 i=!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),i=e!=this._spherical.radius}if(M.setFromSpherical(this._spherical),M.applyQuaternion(this._quatInverse),t.copy(this.target).add(M),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 e=null;if(this.object.isPerspectiveCamera){let t=M.length();e=this._clampDistance(t*this._scale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),i=!!n}else if(this.object.isOrthographicCamera){let t=new d(this._mouse.x,this._mouse.y,0);t.unproject(this.object);let n=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),i=n!==this.object.zoom;let r=new d(this._mouse.x,this._mouse.y,0);r.unproject(this.object),this.object.position.sub(r).add(t),this.object.updateMatrixWorld(),e=M.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(k.origin.copy(this.object.position),k.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(k.direction))<j?this.object.lookAt(this.target):(A.setFromNormalAndCoplanarPoint(this.object.up,this.target),k.intersectPlane(A,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(),i=!0)}return this._scale=1,this._performCursorZoom=!1,i||this._lastPosition.distanceToSquared(this.object.position)>F||8*(1-this._lastQuaternion.dot(this.object.quaternion))>F||this._lastTargetPosition.distanceToSquared(this.target)>F?(this.dispatchEvent(E),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?N/60/60*this.autoRotateSpeed:N/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){M.setFromMatrixColumn(t,0),M.multiplyScalar(-e),this._panOffset.add(M)}_panUp(e,t){this.screenSpacePanning===!0?M.setFromMatrixColumn(t,1):(M.setFromMatrixColumn(t,0),M.crossVectors(this.object.up,M)),M.multiplyScalar(e),this._panOffset.add(M)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;M.copy(r).sub(this.target);let i=M.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(N*this._rotateDelta.x/t.clientHeight),this._rotateUp(N*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(N*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(-N*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(N*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(-N*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(N*this._rotateDelta.x/t.clientHeight),this._rotateUp(N*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(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new T,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.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 I(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 L(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function R(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(O),this.state=P.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 z(e){let t;switch(e.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 m.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(e),this.state=P.DOLLY;break;case m.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=P.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=P.ROTATE}break;case m.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=P.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=P.PAN}break;default:this.state=P.NONE}this.state!==P.NONE&&this.dispatchEvent(D)}function B(e){switch(this.state){case P.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case P.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case P.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e);break}}function V(e){this.enabled===!1||this.enableZoom===!1||this.state!==P.NONE||(e.preventDefault(),this.dispatchEvent(D),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(O))}function H(e){this.enabled!==!1&&this._handleKeyDown(e)}function U(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case p.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(e),this.state=P.TOUCH_ROTATE;break;case p.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(e),this.state=P.TOUCH_PAN;break;default:this.state=P.NONE}break;case 2:switch(this.touches.TWO){case p.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(e),this.state=P.TOUCH_DOLLY_PAN;break;case p.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(e),this.state=P.TOUCH_DOLLY_ROTATE;break;default:this.state=P.NONE}break;default:this.state=P.NONE}this.state!==P.NONE&&this.dispatchEvent(D)}function W(e){switch(this._trackPointer(e),this.state){case P.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case P.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case P.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case P.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=P.NONE}}function G(e){this.enabled!==!1&&e.preventDefault()}function K(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function q(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var he={class:`model-viewer`},ge={class:`model-toolbar`},_e={class:`model-actions`},ve={class:`model-meta`},ye={class:`model-stage`},be={key:0,class:`model-state`},xe={key:1,class:`model-state error`},J=e(s({__name:`ModelViewer`,props:{data:{},type:{},sourceUrl:{}},setup(e){let s=e,p=r(null),m=r(`loading`),_=r(``),y=r(`正在加载模型`),b=r(!1),C=r(!1),w=r(!0),T=r(!0),E=null,D=null,O=null,k=null,A=null,j=null,M=null,N=null,P=0,F=0,I=null,L=new f,R=new TextDecoder(`utf-8`);class z extends Error{}let B=()=>s.type.toLowerCase(),V=()=>{if(!s.sourceUrl)return``;try{return new URL(`.`,s.sourceUrl).href}catch{let e=s.sourceUrl.split(/[?#]/)[0]||s.sourceUrl,t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):``}},H=e=>e instanceof Error?e.message:typeof e==`string`?e:JSON.stringify(e),U=()=>{let e=p.value;if(!e)return!1;if(E||(E=new fe({antialias:!0,alpha:!1,canvas:e,powerPreference:`high-performance`}),E.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),E.outputColorSpace=pe,E.setClearColor(16317180,1)),!D){D=new ae,D.background=new ue(16317180);let e=new re(16777215,14147304,2.4);D.add(e);let t=new S(16777215,2.2);t.position.set(8,10,8),D.add(t);let n=new S(16777215,.9);n.position.set(-7,5,-4),D.add(n),j=new ie(10,10,13358561,14870768),D.add(j),M=new se(3),D.add(M)}return O||(O=new de(45,1,.01,1e5),O.position.set(5,4,6)),!k&&O&&E&&(k=new me(O,E.domElement),k.enableDamping=!0,k.dampingFactor=.08,k.screenSpacePanning=!0,k.autoRotateSpeed=1.2),$(),Ue(),!0},W=e=>{(Array.isArray(e)?e:[e]).forEach(e=>e.dispose())},G=e=>{e.traverse(e=>{let t=e,n=e;t.geometry&&t.geometry.dispose(),t.material&&W(t.material),n.material&&W(n.material)})},K=()=>{A&&D&&(D.remove(A),G(A)),A=null,I=null},q=()=>R.decode(s.data),J=async()=>{let{GLTFLoader:e}=await t(async()=>{let{GLTFLoader:e}=await import(`./GLTFLoader-BNUIXeRP.js`);return{GLTFLoader:e}},__vite__mapDeps([0,1]),import.meta.url),n=new e,r=V(),i=B()===`gltf`?q():s.data;return new Promise((e,t)=>{n.parse(i,r,t=>{t.animations?.length&&(I=new v(t.scene),t.animations.forEach(e=>I?.clipAction(e).play())),e(t.scene)},t)})},Se=async()=>{let{OBJLoader:e}=await t(async()=>{let{OBJLoader:e}=await import(`./OBJLoader-DW4Mv-mq.js`);return{OBJLoader:e}},__vite__mapDeps([2,1]),import.meta.url);return new e().parse(q())},Ce=async()=>{let{STLLoader:e}=await t(async()=>{let{STLLoader:e}=await import(`./STLLoader-Bt7FMgMu.js`);return{STLLoader:e}},__vite__mapDeps([3,1]),import.meta.url),n=new e().parse(s.data);return n.computeVertexNormals(),new g(n,Y())},we=async()=>{let{PLYLoader:e}=await t(async()=>{let{PLYLoader:e}=await import(`./PLYLoader-DwTzA-Dg.js`);return{PLYLoader:e}},__vite__mapDeps([4,1]),import.meta.url),n=new e().parse(s.data);return n.computeVertexNormals(),new g(n,Y())},Te=async()=>{let{FBXLoader:e}=await t(async()=>{let{FBXLoader:e}=await import(`./FBXLoader-Bj34Z_uf.js`);return{FBXLoader:e}},__vite__mapDeps([5,1,6]),import.meta.url),n=new e().parse(s.data,V());return n.animations?.length&&(I=new v(n),n.animations.forEach(e=>I?.clipAction(e).play())),n},Ee=async()=>{let{ColladaLoader:e}=await t(async()=>{let{ColladaLoader:e}=await import(`./ColladaLoader-DTiuvWJL.js`);return{ColladaLoader:e}},__vite__mapDeps([7,1]),import.meta.url);return new e().parse(q(),V()).scene},De=async()=>{let{TDSLoader:e}=await t(async()=>{let{TDSLoader:e}=await import(`./TDSLoader-D__OhSS9.js`);return{TDSLoader:e}},__vite__mapDeps([8,1]),import.meta.url);return new e().parse(s.data,V())},Oe=async()=>{let{ThreeMFLoader:e}=await t(async()=>{let{ThreeMFLoader:e}=await import(`./3MFLoader--yjh7udp.js`);return{ThreeMFLoader:e}},__vite__mapDeps([9,1,6]),import.meta.url);return new e().parse(s.data)},ke=async()=>{let{AMFLoader:e}=await t(async()=>{let{AMFLoader:e}=await import(`./AMFLoader-C0y7NIAO.js`);return{AMFLoader:e}},__vite__mapDeps([10,1,6]),import.meta.url);return new e().parse(s.data)},Ae=async()=>{let{USDLoader:e}=await t(async()=>{let{USDLoader:e}=await import(`./USDLoader-BovI5HgZ.js`);return{USDLoader:e}},__vite__mapDeps([11,1,6]),import.meta.url);return new e().parse(s.data)},je=async()=>{let{KMZLoader:e}=await t(async()=>{let{KMZLoader:e}=await import(`./KMZLoader-DTmXWzX_.js`);return{KMZLoader:e}},__vite__mapDeps([12,1,6,7]),import.meta.url);return new e().parse(s.data).scene},Me=e=>{let t=e.toUpperCase();throw e===`ifc`?new z(`IFC 是 BIM 模型格式,浏览器端完整解析通常依赖 web-ifc 这类 WebAssembly BIM 内核。当前 Apache-2.0 前端包不默认打入这类重型运行时,建议在私有服务端转换为 GLB/GLTF 后预览。`):e===`3dm`?new z(`3DM 是 Rhino/OpenNURBS 模型格式,浏览器端解析需要 rhino3dm WebAssembly 运行时。当前前端包未内置该运行时,建议在私有转换链路输出 GLB/GLTF 后预览。`):new z(`${t} 属于 CAD B-Rep / 工程交换格式,浏览器端完整解析通常需要 OpenCascade 等 WebAssembly 几何内核。当前前端包不默认打入这类重型运行时,建议在私有服务端转换为 GLB/GLTF 或轻量网格格式后预览。`)},Ne=async()=>{let{PCDLoader:e}=await t(async()=>{let{PCDLoader:e}=await import(`./PCDLoader-CHA1g8rk.js`);return{PCDLoader:e}},__vite__mapDeps([13,1]),import.meta.url);return new e().parse(s.data,s.sourceUrl||`model.pcd`)},Pe=async()=>{let{VRMLLoader:e}=await t(async()=>{let{VRMLLoader:e}=await import(`./VRMLLoader-_VxVXPvX.js`);return{VRMLLoader:e}},__vite__mapDeps([14,1]),import.meta.url);return new e().parse(q(),V())},Fe=async()=>{let{XYZLoader:e}=await t(async()=>{let{XYZLoader:e}=await import(`./XYZLoader-DbQZs-aZ.js`);return{XYZLoader:e}},__vite__mapDeps([15,1]),import.meta.url),n=new e().parse(q());return n.computeBoundingSphere(),new le(n,Le())},Ie=async()=>{let{VTKLoader:e}=await t(async()=>{let{VTKLoader:e}=await import(`./VTKLoader-BfnzBXsa.js`);return{VTKLoader:e}},__vite__mapDeps([16,1,6]),import.meta.url),n=new e().parse(s.data);return n.computeVertexNormals(),new g(n,Y())},Y=()=>new ce({color:5214138,metalness:.08,roughness:.78,side:2,wireframe:C.value}),Le=()=>new oe({color:2062988,size:.035,sizeAttenuation:!0}),X=e=>{e.traverse(e=>{let t=e;t.isMesh&&!t.material&&(t.material=Y()),t.isMesh&&t.material&&(Array.isArray(t.material)?t.material:[t.material]).forEach(e=>{`wireframe`in e&&(e.wireframe=C.value),e.needsUpdate=!0})})},Re=e=>{let t=0,n=0;return e.traverse(e=>{e.isMesh&&(t+=1),e.isPoints&&(n+=1)}),{meshes:t,points:n}},ze=e=>{let{meshes:t,points:n}=Re(e),r=[];t&&r.push(`${t} 个网格`),n&&r.push(`${n} 个点云`),y.value=r.length?r.join(``):`模型已加载`},Be=e=>{let t=new x().setFromObject(e);if(t.isEmpty())return{center:new d,size:new d(4,4,4)};let n=t.getCenter(new d),r=t.getSize(new d);return e.position.sub(n),{center:new d,size:r}},Z=()=>{if(!A||!O||!k)return;let e=new x().setFromObject(A),t=e.getSize(new d),n=e.getCenter(new d),r=Math.max(t.x,t.y,t.z,1)/(2*Math.tan(h.degToRad(O.fov/2)))*1.65;O.near=Math.max(r/1e3,.01),O.far=Math.max(r*1e3,1e3),O.position.copy(n).add(new d(r,r*.62,r)),O.updateProjectionMatrix(),k.target.copy(n),k.update()},Ve=async e=>{if(!D)return;K(),X(e);let{size:t}=Be(e);A=e,D.add(e),Z(),ze(e);let n=Math.max(t.x,t.y,t.z,1);j&&j.scale.setScalar(Math.max(n/10,1))},Q=async()=>{let e=++F;if(m.value=`loading`,_.value=``,y.value=`正在加载模型`,U())try{let t=await He(B());if(e!==F){G(t);return}await te(),await Ve(t),m.value=`ready`}catch(t){if(e!==F)return;t instanceof z||console.error(t),m.value=`error`,_.value=H(t)||`${s.type.toUpperCase()} 模型解析失败`}},He=e=>{switch(e){case`glb`:case`gltf`:return J();case`obj`:return Se();case`stl`:return Ce();case`ply`:return we();case`fbx`:return Te();case`dae`:return Ee();case`3ds`:return De();case`3mf`:return Oe();case`amf`:return ke();case`usd`:case`usda`:case`usdc`:case`usdz`:return Ae();case`kmz`:return je();case`step`:case`stp`:case`iges`:case`igs`:case`ifc`:case`3dm`:return Me(e);case`pcd`:return Ne();case`wrl`:case`vrml`:return Pe();case`xyz`:return Fe();case`vtk`:case`vtp`:return Ie();default:throw Error(`暂不支持 .${e} 模型格式`)}},Ue=()=>{let e=p.value;if(!e||!E||!O)return;let t=e.getBoundingClientRect(),n=Math.max(1,Math.floor(t.width)),r=Math.max(1,Math.floor(t.height));E.setSize(n,r,!1),O.aspect=n/r,O.updateProjectionMatrix()},We=e=>{if(!E||!D||!O||!k)return;k.autoRotate=b.value,k.update(),L.update(e);let t=L.getDelta();I?.update(t),E.render(D,O),P=requestAnimationFrame(We)},Ge=()=>{A&&X(A)},$=()=>{j&&(j.visible=w.value),M&&(M.visible=T.value)},Ke=()=>{C.value=!C.value,Ge()},qe=()=>{w.value=!w.value,$()},Je=()=>{T.value=!T.value,$()};return o(()=>{U()&&(L.connect(document),N=new ResizeObserver(Ue),p.value&&N.observe(p.value),We(),Q())}),ee(()=>{F+=1,cancelAnimationFrame(P),N?.disconnect(),N=null,K(),k?.dispose(),k=null,E?.dispose(),E=null,L.dispose(),L=new f,D=null,O=null,j=null,M=null}),n(()=>[s.data,s.type,s.sourceUrl],()=>{Q()}),(t,n)=>(u(),l(`div`,he,[c(`div`,ge,[c(`div`,_e,[c(`button`,{type:`button`,onClick:Z},`适配`),c(`button`,{type:`button`,class:i({active:b.value}),onClick:n[0]||=e=>b.value=!b.value},`旋转`,2),c(`button`,{type:`button`,class:i({active:C.value}),onClick:Ke},`线框`,2),c(`button`,{type:`button`,class:i({active:w.value}),onClick:qe},`网格`,2),c(`button`,{type:`button`,class:i({active:T.value}),onClick:Je},`坐标`,2)]),c(`div`,ve,[c(`strong`,null,a(e.type.toUpperCase()),1),c(`span`,null,a(y.value),1)])]),c(`div`,ye,[c(`canvas`,{ref_key:`canvas`,ref:p},null,512),m.value===`loading`?(u(),l(`div`,be,`正在解析 3D 模型...`)):m.value===`error`?(u(),l(`div`,xe,[n[1]||=c(`strong`,null,`模型解析失败`,-1),c(`span`,null,a(_.value),1)])):ne(``,!0)])]))}}),[[`__scopeId`,`data-v-9d2e23df`]]);export{J as default};